glow/
gl46.rs

1#![allow(unused)]
2#![no_std]
3#![allow(bad_style)]
4#![deny(missing_docs)]
5#![deny(missing_debug_implementations)]
6
7//! Bindings to Gl 4.6
8//!
9//! Generated by [phosphorus](https://docs.rs/phosphorus/0.0.22/phosphorus/).
10//!
11//! Included Extensions (activate via cargo feature):
12//! * `GL_APPLE_vertex_array_object`
13//! * `GL_ARB_base_instance`
14//! * `GL_ARB_buffer_storage`
15//! * `GL_ARB_compute_shader`
16//! * `GL_ARB_copy_buffer`
17//! * `GL_ARB_debug_output`
18//! * `GL_ARB_draw_elements_base_vertex`
19//! * `GL_ARB_draw_instanced`
20//! * `GL_ARB_framebuffer_object`
21//! * `GL_ARB_framebuffer_sRGB`
22//! * `GL_ARB_instanced_arrays`
23//! * `GL_ARB_parallel_shader_compile`
24//! * `GL_ARB_program_interface_query`
25//! * `GL_ARB_sampler_objects`
26//! * `GL_ARB_sync`
27//! * `GL_ARB_tessellation_shader`
28//! * `GL_ARB_texture_filter_anisotropic`
29//! * `GL_ARB_texture_storage`
30//! * `GL_ARB_uniform_buffer_object`
31//! * `GL_ARB_vertex_array_object`
32//! * `GL_EXT_buffer_storage`
33//! * `GL_EXT_disjoint_timer_query`
34//! * `GL_EXT_draw_buffers2`
35//! * `GL_EXT_texture_filter_anisotropic`
36//! * `GL_KHR_debug`
37//! * `GL_KHR_parallel_shader_compile`
38//! * `GL_NV_copy_buffer`
39//! * `GL_OES_vertex_array_object`
40//!
41//! Supported Features:
42//! * `global_loader`: Include all mechanisms necessary for calling GL using
43//!   global functions.
44//! * `struct_loader`: Include all mechanisms necessary for calling GL as
45//!   methods on a struct.
46//! * `debug_trace_calls`: if cfg!(debug_assertions), any call to a GL function
47//!   will `trace!` what was called and with what args.
48//! * `debug_automatic_glGetError`: If cfg!(debug_assertions), this will
49//!   automatically call `glGetError` after every call to any *other* GL
50//!   function. If an error code occurs it's shown via `error!` along with the
51//!   name of the function that had the error.
52//! * `log`: imports `trace!` and `error!` macros from the `log` crate.
53//!   Otherwise they just call `println!` and `eprintln!` respectively.
54//! * `chlorine`: gets all C types from the `chlorine` crate (which is `no_std`
55//!   friendly). Otherwise they will be imported from `std::os::raw`.
56//! * `bytemuck`: Adds support for the `bytemuck` crate, mostly in the form of
57//!   `bytemuck::Zeroable` on `GlFns`.
58//! * `inline`: Tags all GL calls as `#[inline]`.
59//! * `inline_always`: Tags all GL calls as `#[inline(always)]`. This will
60//!   effectively override the `inline` feature.
61//!
62//! The crate is `no_std` friendly by default, but features above can end up
63//! requiring `std` to be available.
64//!
65//! # GL Loaders
66//! The docs for this crate hosted on docs.rs generate **both** the
67//! `global_loader` and `struct_loader` documentation for sake of completeness.
68//!
69//! However, you are generally expected to use **only one** loader style in any
70//! particular project.
71//!
72//! Each loader style has its own small advantages:
73//! * The `global_loader` stores the GL function pointers in static `AtomicPtr`
74//!   values.
75//!   * Call [`load_global_gl_with`] to initialize the pointers.
76//!   * Each GL function is available as a global function under its standard
77//!     name, eg `glGetError()`.
78//!   * This lets you call GL functions from anywhere at all, and it's how you
79//!     might expect to use GL if you have a C background.
80//!   * Being able to call GL from anywhere makes it easy to write Drop impls,
81//!     among other things.
82//! * The `struct_loader` stores all the function pointers in the fields of a
83//!   [`GlFns`] struct.
84//!   * Call [`GlFns::load_with`] to make a `GlFns` value.
85//!   * Each GL function is available as a method on the struct with the `gl`
86//!     prefix removed. It's presumed that you'll call the struct itself `gl`,
87//!     so calls will look something like `gl.GetError()`.
88//!   * This is closer to how WebGL works on WASM targets, and so this is how
89//!     the [`glow`](https://docs.rs/glow) crate works to maintain consistency
90//!     across desktop and web.
91//!   * Also, if you want to do any sort of "live code reloading" you'll have to
92//!     use the struct loader. DLLs don't share their static values with the
93//!     main program, so if the DLL uses the global loader functions the
94//!     pointers won't be loaded and calling any GL function from the DLL will
95//!     panic. Instead, if you just pass a `&GlFns` to your DLL it can call the
96//!     GL methods just fine.
97//!
98//! In both styles, if you call a function that isn't loaded you will get a
99//! panic. This generally only happens if the context doesn't fully support
100//! the GL version. You can check if a GL command is loaded or not before
101//! actually calling it by adding `_is_loaded` to the name of the command. In
102//! other words, `glGetError_is_loaded` to check if `glGetError` is globally
103//! loaded, and `gl.GetError_is_loaded` to check if it's loaded in a `GlFns`.
104//! All of the "`_is_loaded`" functions are hidden in the generated docs just
105//! to keep things tidy, but they're there.
106//!
107//! # Safety
108//! In general, there's many ways that GL can go wrong.
109//!
110//! For the purposes of this library, it's important to focus on the fact that:
111//! * Initially all functions are null pointers. If a function is called when it's in a null state then you'll get a panic (reminder: a panic is safe).
112//! * You can load pointers from the current GL context (described above).
113//!   * These pointers are technically context specific, though in practice different contexts for the same graphics driver often all share the same function pointers.
114//!   * The loader has no way to verify that pointers it gets are actually pointers to the correct functions, it just trusts what you tell it.
115//! * Since loading a function pointer transitions the world from "it will definitely (safely) panic to call that GL command" to "it might be UB to call that GL command (even with the correct arguments)", the act of simply loading a function pointer is itself considered to be `unsafe`.
116//! * Individual GL commands are generally safe to use once they've been properly loaded for the current context, but this crate doesn't attempt to sort out what is safe and what's not. All GL commands are blanket marked as being `unsafe`.
117//! It's up to you to try and manage this unsafety! Sorry, but this crate just does what you tell it to.
118
119#[cfg(any(
120    all(
121        not(feature = "log"),
122        any(feature = "debug_trace_calls", feature = "debug_automatic_glGetError")
123    ),
124    not(feature = "chlorine"),
125))]
126extern crate std;
127
128use std::os::raw::*;
129
130#[cfg(feature = "log")]
131#[allow(unused)]
132use log::{error, trace};
133#[cfg(all(not(feature = "log"), feature = "debug_trace_calls"))]
134macro_rules! trace { ($($arg:tt)*) => { std::println!($($arg)*) } }
135#[cfg(all(not(feature = "log"), feature = "debug_automatic_glGetError"))]
136macro_rules! error { ($($arg:tt)*) => { std::eprintln!($($arg)*) } }
137
138use core::{
139    mem::transmute,
140    ptr::null_mut,
141    sync::atomic::{AtomicPtr, Ordering},
142};
143#[allow(dead_code)]
144const RELAX: Ordering = Ordering::Relaxed;
145#[allow(dead_code)]
146type APcv = AtomicPtr<c_void>;
147const fn ap_null() -> APcv {
148    AtomicPtr::new(null_mut())
149}
150
151pub use types::*;
152#[allow(missing_docs)]
153pub mod types {
154    //! Contains all the GL types.
155    use super::*;
156    pub type GLenum = c_uint;
157    pub type GLboolean = c_uchar;
158    pub type GLbitfield = c_uint;
159    pub type GLvoid = c_void;
160    pub type GLbyte = i8;
161    pub type GLubyte = u8;
162    pub type GLshort = i16;
163    pub type GLushort = u16;
164    pub type GLint = c_int;
165    pub type GLuint = c_uint;
166    pub type GLclampx = i32;
167    pub type GLsizei = c_int;
168    pub type GLfloat = c_float;
169    pub type GLclampf = c_float;
170    pub type GLdouble = c_double;
171    pub type GLclampd = c_double;
172    pub type GLeglClientBufferEXT = *mut c_void;
173    pub type GLeglImageOES = *mut c_void;
174    pub type GLchar = c_char;
175    pub type GLcharARB = c_char;
176    #[cfg(any(target_os = "macos", target_os = "ios"))]
177    pub type GLhandleARB = *mut c_void;
178    #[cfg(not(any(target_os = "macos", target_os = "ios")))]
179    pub type GLhandleARB = c_uint;
180    pub type GLhalf = u16;
181    pub type GLhalfARB = u16;
182    pub type GLfixed = i32;
183    pub type GLintptr = isize;
184    pub type GLintptrARB = isize;
185    pub type GLsizeiptr = isize;
186    pub type GLsizeiptrARB = isize;
187    pub type GLint64 = i64;
188    pub type GLint64EXT = i64;
189    pub type GLuint64 = u64;
190    pub type GLuint64EXT = u64;
191    #[doc(hidden)]
192    pub struct __GLsync {
193        _priv: u8,
194    }
195    impl core::fmt::Debug for __GLsync {
196        fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
197            write!(f, "__GLsync")
198        }
199    }
200    pub type GLsync = *mut __GLsync;
201    pub struct _cl_context {
202        _priv: u8,
203    }
204    impl core::fmt::Debug for _cl_context {
205        fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
206            write!(f, "_cl_context")
207        }
208    }
209    pub struct _cl_event {
210        _priv: u8,
211    }
212    impl core::fmt::Debug for _cl_event {
213        fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
214            write!(f, "_cl_event")
215        }
216    }
217    pub type GLDEBUGPROC = Option<
218        unsafe extern "system" fn(
219            source: GLenum,
220            gltype: GLenum,
221            id: GLuint,
222            severity: GLenum,
223            length: GLsizei,
224            message: *const GLchar,
225            userParam: *mut c_void,
226        ),
227    >;
228    pub type GLDEBUGPROCARB = Option<
229        extern "system" fn(
230            source: GLenum,
231            gltype: GLenum,
232            id: GLuint,
233            severity: GLenum,
234            length: GLsizei,
235            message: *const GLchar,
236            userParam: *mut c_void,
237        ),
238    >;
239    pub type GLDEBUGPROCKHR = Option<
240        extern "system" fn(
241            source: GLenum,
242            gltype: GLenum,
243            id: GLuint,
244            severity: GLenum,
245            length: GLsizei,
246            message: *const GLchar,
247            userParam: *mut c_void,
248        ),
249    >;
250    pub type GLDEBUGPROCAMD = Option<
251        extern "system" fn(
252            id: GLuint,
253            category: GLenum,
254            severity: GLenum,
255            length: GLsizei,
256            message: *const GLchar,
257            userParam: *mut c_void,
258        ),
259    >;
260    pub type GLhalfNV = c_ushort;
261    pub type GLvdpauSurfaceNV = GLintptr;
262    pub type GLVULKANPROCNV = Option<extern "system" fn()>;
263}
264
265pub use enums::*;
266pub mod enums {
267    //! Contains all the GL enumerated values.
268    //!
269    //! In C these are called 'enums', but in Rust we call them a 'const'. Whatever.
270    use super::*;
271    #[doc = "`GL_ACTIVE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D9`"]
272    #[doc = "* **Group:** ProgramPropertyARB"]
273    pub const GL_ACTIVE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D9;
274    #[doc = "`GL_ACTIVE_ATTRIBUTES: GLenum = 0x8B89`"]
275    #[doc = "* **Group:** ProgramPropertyARB"]
276    pub const GL_ACTIVE_ATTRIBUTES: GLenum = 0x8B89;
277    #[doc = "`GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: GLenum = 0x8B8A`"]
278    #[doc = "* **Group:** ProgramPropertyARB"]
279    pub const GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: GLenum = 0x8B8A;
280    #[doc = "`GL_ACTIVE_PROGRAM: GLenum = 0x8259`"]
281    #[doc = "* **Group:** PipelineParameterName"]
282    pub const GL_ACTIVE_PROGRAM: GLenum = 0x8259;
283    #[doc = "`GL_ACTIVE_RESOURCES: GLenum = 0x92F5`"]
284    #[doc = "* **Group:** ProgramInterfacePName"]
285    pub const GL_ACTIVE_RESOURCES: GLenum = 0x92F5;
286    #[doc = "`GL_ACTIVE_SUBROUTINES: GLenum = 0x8DE5`"]
287    #[doc = "* **Group:** ProgramStagePName"]
288    pub const GL_ACTIVE_SUBROUTINES: GLenum = 0x8DE5;
289    #[doc = "`GL_ACTIVE_SUBROUTINE_MAX_LENGTH: GLenum = 0x8E48`"]
290    #[doc = "* **Group:** ProgramStagePName"]
291    pub const GL_ACTIVE_SUBROUTINE_MAX_LENGTH: GLenum = 0x8E48;
292    #[doc = "`GL_ACTIVE_SUBROUTINE_UNIFORMS: GLenum = 0x8DE6`"]
293    #[doc = "* **Group:** ProgramStagePName"]
294    pub const GL_ACTIVE_SUBROUTINE_UNIFORMS: GLenum = 0x8DE6;
295    #[doc = "`GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8E47`"]
296    #[doc = "* **Group:** ProgramStagePName"]
297    pub const GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8E47;
298    #[doc = "`GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH: GLenum = 0x8E49`"]
299    #[doc = "* **Group:** ProgramStagePName"]
300    pub const GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH: GLenum = 0x8E49;
301    #[doc = "`GL_ACTIVE_TEXTURE: GLenum = 0x84E0`"]
302    #[doc = "* **Group:** GetPName"]
303    pub const GL_ACTIVE_TEXTURE: GLenum = 0x84E0;
304    #[doc = "`GL_ACTIVE_UNIFORMS: GLenum = 0x8B86`"]
305    #[doc = "* **Group:** ProgramPropertyARB"]
306    pub const GL_ACTIVE_UNIFORMS: GLenum = 0x8B86;
307    #[doc = "`GL_ACTIVE_UNIFORM_BLOCKS: GLenum = 0x8A36`"]
308    #[doc = "* **Group:** ProgramPropertyARB"]
309    pub const GL_ACTIVE_UNIFORM_BLOCKS: GLenum = 0x8A36;
310    #[doc = "`GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: GLenum = 0x8A35`"]
311    #[doc = "* **Group:** ProgramPropertyARB"]
312    pub const GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: GLenum = 0x8A35;
313    #[doc = "`GL_ACTIVE_UNIFORM_MAX_LENGTH: GLenum = 0x8B87`"]
314    #[doc = "* **Group:** ProgramPropertyARB"]
315    pub const GL_ACTIVE_UNIFORM_MAX_LENGTH: GLenum = 0x8B87;
316    #[doc = "`GL_ACTIVE_VARIABLES: GLenum = 0x9305`"]
317    #[doc = "* **Group:** ProgramResourceProperty"]
318    pub const GL_ACTIVE_VARIABLES: GLenum = 0x9305;
319    #[doc = "`GL_ALIASED_LINE_WIDTH_RANGE: GLenum = 0x846E`"]
320    #[doc = "* **Group:** GetPName"]
321    pub const GL_ALIASED_LINE_WIDTH_RANGE: GLenum = 0x846E;
322    #[doc = "`GL_ALIASED_POINT_SIZE_RANGE: GLenum = 0x846D`"]
323    #[doc = "* **Group:** GetPName"]
324    pub const GL_ALIASED_POINT_SIZE_RANGE: GLenum = 0x846D;
325    #[doc = "`GL_ALL_BARRIER_BITS: GLbitfield = 0xFFFFFFFF`"]
326    #[doc = "* **Group:** MemoryBarrierMask"]
327    pub const GL_ALL_BARRIER_BITS: GLbitfield = 0xFFFFFFFF;
328    #[doc = "`GL_ALL_SHADER_BITS: GLbitfield = 0xFFFFFFFF`"]
329    #[doc = "* **Group:** UseProgramStageMask"]
330    pub const GL_ALL_SHADER_BITS: GLbitfield = 0xFFFFFFFF;
331    #[doc = "`GL_ALPHA: GLenum = 0x1906`"]
332    #[doc = "* **Groups:** TextureSwizzle, CombinerPortionNV, PathColorFormat, CombinerComponentUsageNV, PixelFormat"]
333    pub const GL_ALPHA: GLenum = 0x1906;
334    #[doc = "`GL_ALPHA_BITS: GLenum = 0x0D55`"]
335    #[doc = "* **Group:** GetPName"]
336    pub const GL_ALPHA_BITS: GLenum = 0x0D55;
337    #[doc = "`GL_ALREADY_SIGNALED: GLenum = 0x911A`"]
338    #[doc = "* **Group:** SyncStatus"]
339    pub const GL_ALREADY_SIGNALED: GLenum = 0x911A;
340    #[doc = "`GL_ALWAYS: GLenum = 0x0207`"]
341    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
342    pub const GL_ALWAYS: GLenum = 0x0207;
343    #[doc = "`GL_AND: GLenum = 0x1501`"]
344    #[doc = "* **Group:** LogicOp"]
345    pub const GL_AND: GLenum = 0x1501;
346    #[doc = "`GL_AND_INVERTED: GLenum = 0x1504`"]
347    #[doc = "* **Group:** LogicOp"]
348    pub const GL_AND_INVERTED: GLenum = 0x1504;
349    #[doc = "`GL_AND_REVERSE: GLenum = 0x1502`"]
350    #[doc = "* **Group:** LogicOp"]
351    pub const GL_AND_REVERSE: GLenum = 0x1502;
352    #[doc = "`GL_ANY_SAMPLES_PASSED: GLenum = 0x8C2F`"]
353    #[doc = "* **Group:** QueryTarget"]
354    pub const GL_ANY_SAMPLES_PASSED: GLenum = 0x8C2F;
355    #[doc = "`GL_ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum = 0x8D6A`"]
356    #[doc = "* **Group:** QueryTarget"]
357    pub const GL_ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum = 0x8D6A;
358    #[doc = "`GL_ARRAY_BUFFER: GLenum = 0x8892`"]
359    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
360    pub const GL_ARRAY_BUFFER: GLenum = 0x8892;
361    #[doc = "`GL_ARRAY_BUFFER_BINDING: GLenum = 0x8894`"]
362    #[doc = "* **Group:** GetPName"]
363    pub const GL_ARRAY_BUFFER_BINDING: GLenum = 0x8894;
364    #[doc = "`GL_ARRAY_SIZE: GLenum = 0x92FB`"]
365    #[doc = "* **Group:** ProgramResourceProperty"]
366    pub const GL_ARRAY_SIZE: GLenum = 0x92FB;
367    #[doc = "`GL_ARRAY_STRIDE: GLenum = 0x92FE`"]
368    #[doc = "* **Group:** ProgramResourceProperty"]
369    pub const GL_ARRAY_STRIDE: GLenum = 0x92FE;
370    #[doc = "`GL_ATOMIC_COUNTER_BARRIER_BIT: GLbitfield = 0x00001000`"]
371    #[doc = "* **Group:** MemoryBarrierMask"]
372    pub const GL_ATOMIC_COUNTER_BARRIER_BIT: GLbitfield = 0x00001000;
373    #[doc = "`GL_ATOMIC_COUNTER_BUFFER: GLenum = 0x92C0`"]
374    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
375    pub const GL_ATOMIC_COUNTER_BUFFER: GLenum = 0x92C0;
376    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS: GLenum = 0x92C5`"]
377    #[doc = "* **Group:** AtomicCounterBufferPName"]
378    pub const GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS: GLenum = 0x92C5;
379    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES: GLenum = 0x92C6`"]
380    #[doc = "* **Group:** AtomicCounterBufferPName"]
381    pub const GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES: GLenum = 0x92C6;
382    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_BINDING: GLenum = 0x92C1`"]
383    #[doc = "* **Group:** AtomicCounterBufferPName"]
384    pub const GL_ATOMIC_COUNTER_BUFFER_BINDING: GLenum = 0x92C1;
385    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE: GLenum = 0x92C4`"]
386    #[doc = "* **Group:** AtomicCounterBufferPName"]
387    pub const GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE: GLenum = 0x92C4;
388    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x9301`"]
389    #[doc = "* **Group:** ProgramResourceProperty"]
390    pub const GL_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x9301;
391    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90ED`"]
392    #[doc = "* **Group:** AtomicCounterBufferPName"]
393    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90ED;
394    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x92CB`"]
395    #[doc = "* **Group:** AtomicCounterBufferPName"]
396    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x92CB;
397    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x92CA`"]
398    #[doc = "* **Group:** AtomicCounterBufferPName"]
399    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x92CA;
400    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x92C8`"]
401    #[doc = "* **Group:** AtomicCounterBufferPName"]
402    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x92C8;
403    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x92C9`"]
404    #[doc = "* **Group:** AtomicCounterBufferPName"]
405    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x92C9;
406    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x92C7`"]
407    #[doc = "* **Group:** AtomicCounterBufferPName"]
408    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x92C7;
409    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92C3`"]
410    pub const GL_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92C3;
411    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_START: GLenum = 0x92C2`"]
412    pub const GL_ATOMIC_COUNTER_BUFFER_START: GLenum = 0x92C2;
413    #[doc = "`GL_ATTACHED_SHADERS: GLenum = 0x8B85`"]
414    #[doc = "* **Group:** ProgramPropertyARB"]
415    pub const GL_ATTACHED_SHADERS: GLenum = 0x8B85;
416    #[doc = "`GL_AUTO_GENERATE_MIPMAP: GLenum = 0x8295`"]
417    #[doc = "* **Group:** InternalFormatPName"]
418    pub const GL_AUTO_GENERATE_MIPMAP: GLenum = 0x8295;
419    #[doc = "`GL_BACK: GLenum = 0x0405`"]
420    #[doc = "* **Groups:** ColorBuffer, ColorMaterialFace, CullFaceMode, DrawBufferMode, ReadBufferMode, StencilFaceDirection, MaterialFace"]
421    pub const GL_BACK: GLenum = 0x0405;
422    #[doc = "`GL_BACK_LEFT: GLenum = 0x0402`"]
423    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
424    pub const GL_BACK_LEFT: GLenum = 0x0402;
425    #[doc = "`GL_BACK_RIGHT: GLenum = 0x0403`"]
426    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
427    pub const GL_BACK_RIGHT: GLenum = 0x0403;
428    #[doc = "`GL_BGR: GLenum = 0x80E0`"]
429    #[doc = "* **Group:** PixelFormat"]
430    pub const GL_BGR: GLenum = 0x80E0;
431    #[doc = "`GL_BGRA: GLenum = 0x80E1`"]
432    #[doc = "* **Group:** PixelFormat"]
433    pub const GL_BGRA: GLenum = 0x80E1;
434    #[doc = "`GL_BGRA_INTEGER: GLenum = 0x8D9B`"]
435    #[doc = "* **Group:** PixelFormat"]
436    pub const GL_BGRA_INTEGER: GLenum = 0x8D9B;
437    #[doc = "`GL_BGR_INTEGER: GLenum = 0x8D9A`"]
438    #[doc = "* **Group:** PixelFormat"]
439    pub const GL_BGR_INTEGER: GLenum = 0x8D9A;
440    #[doc = "`GL_BLEND: GLenum = 0x0BE2`"]
441    #[doc = "* **Groups:** TextureEnvMode, EnableCap, GetPName"]
442    pub const GL_BLEND: GLenum = 0x0BE2;
443    #[doc = "`GL_BLEND_COLOR: GLenum = 0x8005`"]
444    #[doc = "* **Group:** GetPName"]
445    pub const GL_BLEND_COLOR: GLenum = 0x8005;
446    #[doc = "`GL_BLEND_DST: GLenum = 0x0BE0`"]
447    #[doc = "* **Group:** GetPName"]
448    pub const GL_BLEND_DST: GLenum = 0x0BE0;
449    #[doc = "`GL_BLEND_DST_ALPHA: GLenum = 0x80CA`"]
450    #[doc = "* **Group:** GetPName"]
451    pub const GL_BLEND_DST_ALPHA: GLenum = 0x80CA;
452    #[doc = "`GL_BLEND_DST_RGB: GLenum = 0x80C8`"]
453    #[doc = "* **Group:** GetPName"]
454    pub const GL_BLEND_DST_RGB: GLenum = 0x80C8;
455    #[doc = "`GL_BLEND_EQUATION: GLenum = 0x8009`"]
456    pub const GL_BLEND_EQUATION: GLenum = 0x8009;
457    #[doc = "`GL_BLEND_EQUATION_ALPHA: GLenum = 0x883D`"]
458    #[doc = "* **Group:** GetPName"]
459    pub const GL_BLEND_EQUATION_ALPHA: GLenum = 0x883D;
460    #[doc = "`GL_BLEND_EQUATION_RGB: GLenum = 0x8009`"]
461    #[doc = "* **Group:** GetPName"]
462    pub const GL_BLEND_EQUATION_RGB: GLenum = 0x8009;
463    #[doc = "`GL_BLEND_SRC: GLenum = 0x0BE1`"]
464    #[doc = "* **Group:** GetPName"]
465    pub const GL_BLEND_SRC: GLenum = 0x0BE1;
466    #[doc = "`GL_BLEND_SRC_ALPHA: GLenum = 0x80CB`"]
467    #[doc = "* **Group:** GetPName"]
468    pub const GL_BLEND_SRC_ALPHA: GLenum = 0x80CB;
469    #[doc = "`GL_BLEND_SRC_RGB: GLenum = 0x80C9`"]
470    #[doc = "* **Group:** GetPName"]
471    pub const GL_BLEND_SRC_RGB: GLenum = 0x80C9;
472    #[doc = "`GL_BLOCK_INDEX: GLenum = 0x92FD`"]
473    #[doc = "* **Group:** ProgramResourceProperty"]
474    pub const GL_BLOCK_INDEX: GLenum = 0x92FD;
475    #[doc = "`GL_BLUE: GLenum = 0x1905`"]
476    #[doc = "* **Groups:** TextureSwizzle, CombinerComponentUsageNV, PixelFormat"]
477    pub const GL_BLUE: GLenum = 0x1905;
478    #[doc = "`GL_BLUE_BITS: GLenum = 0x0D54`"]
479    #[doc = "* **Group:** GetPName"]
480    pub const GL_BLUE_BITS: GLenum = 0x0D54;
481    #[doc = "`GL_BLUE_INTEGER: GLenum = 0x8D96`"]
482    #[doc = "* **Group:** PixelFormat"]
483    pub const GL_BLUE_INTEGER: GLenum = 0x8D96;
484    #[doc = "`GL_BOOL: GLenum = 0x8B56`"]
485    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
486    pub const GL_BOOL: GLenum = 0x8B56;
487    #[doc = "`GL_BOOL_VEC2: GLenum = 0x8B57`"]
488    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
489    pub const GL_BOOL_VEC2: GLenum = 0x8B57;
490    #[doc = "`GL_BOOL_VEC3: GLenum = 0x8B58`"]
491    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
492    pub const GL_BOOL_VEC3: GLenum = 0x8B58;
493    #[doc = "`GL_BOOL_VEC4: GLenum = 0x8B59`"]
494    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
495    pub const GL_BOOL_VEC4: GLenum = 0x8B59;
496    #[doc = "`GL_BUFFER: GLenum = 0x82E0`"]
497    #[doc = "* **Group:** ObjectIdentifier"]
498    pub const GL_BUFFER: GLenum = 0x82E0;
499    #[doc = "`GL_BUFFER_ACCESS: GLenum = 0x88BB`"]
500    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
501    pub const GL_BUFFER_ACCESS: GLenum = 0x88BB;
502    #[doc = "`GL_BUFFER_ACCESS_FLAGS: GLenum = 0x911F`"]
503    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
504    pub const GL_BUFFER_ACCESS_FLAGS: GLenum = 0x911F;
505    #[doc = "`GL_BUFFER_BINDING: GLenum = 0x9302`"]
506    #[doc = "* **Group:** ProgramResourceProperty"]
507    pub const GL_BUFFER_BINDING: GLenum = 0x9302;
508    #[doc = "`GL_BUFFER_DATA_SIZE: GLenum = 0x9303`"]
509    #[doc = "* **Group:** ProgramResourceProperty"]
510    pub const GL_BUFFER_DATA_SIZE: GLenum = 0x9303;
511    #[doc = "`GL_BUFFER_IMMUTABLE_STORAGE: GLenum = 0x821F`"]
512    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
513    pub const GL_BUFFER_IMMUTABLE_STORAGE: GLenum = 0x821F;
514    #[doc = "`GL_BUFFER_IMMUTABLE_STORAGE_EXT: GLenum = 0x821F`"]
515    pub const GL_BUFFER_IMMUTABLE_STORAGE_EXT: GLenum = 0x821F;
516    #[doc = "`GL_BUFFER_KHR: GLenum = 0x82E0`"]
517    pub const GL_BUFFER_KHR: GLenum = 0x82E0;
518    #[doc = "`GL_BUFFER_MAPPED: GLenum = 0x88BC`"]
519    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
520    pub const GL_BUFFER_MAPPED: GLenum = 0x88BC;
521    #[doc = "`GL_BUFFER_MAP_LENGTH: GLenum = 0x9120`"]
522    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
523    pub const GL_BUFFER_MAP_LENGTH: GLenum = 0x9120;
524    #[doc = "`GL_BUFFER_MAP_OFFSET: GLenum = 0x9121`"]
525    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
526    pub const GL_BUFFER_MAP_OFFSET: GLenum = 0x9121;
527    #[doc = "`GL_BUFFER_MAP_POINTER: GLenum = 0x88BD`"]
528    #[doc = "* **Group:** BufferPointerNameARB"]
529    pub const GL_BUFFER_MAP_POINTER: GLenum = 0x88BD;
530    #[doc = "`GL_BUFFER_SIZE: GLenum = 0x8764`"]
531    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
532    pub const GL_BUFFER_SIZE: GLenum = 0x8764;
533    #[doc = "`GL_BUFFER_STORAGE_FLAGS: GLenum = 0x8220`"]
534    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
535    pub const GL_BUFFER_STORAGE_FLAGS: GLenum = 0x8220;
536    #[doc = "`GL_BUFFER_STORAGE_FLAGS_EXT: GLenum = 0x8220`"]
537    pub const GL_BUFFER_STORAGE_FLAGS_EXT: GLenum = 0x8220;
538    #[doc = "`GL_BUFFER_UPDATE_BARRIER_BIT: GLbitfield = 0x00000200`"]
539    #[doc = "* **Group:** MemoryBarrierMask"]
540    pub const GL_BUFFER_UPDATE_BARRIER_BIT: GLbitfield = 0x00000200;
541    #[doc = "`GL_BUFFER_USAGE: GLenum = 0x8765`"]
542    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
543    pub const GL_BUFFER_USAGE: GLenum = 0x8765;
544    #[doc = "`GL_BUFFER_VARIABLE: GLenum = 0x92E5`"]
545    #[doc = "* **Group:** ProgramInterface"]
546    pub const GL_BUFFER_VARIABLE: GLenum = 0x92E5;
547    #[doc = "`GL_BYTE: GLenum = 0x1400`"]
548    #[doc = "* **Groups:** VertexAttribIType, WeightPointerTypeARB, TangentPointerTypeEXT, BinormalPointerTypeEXT, ColorPointerType, ListNameType, NormalPointerType, PixelType, VertexAttribType, VertexAttribPointerType"]
549    pub const GL_BYTE: GLenum = 0x1400;
550    #[doc = "`GL_CAVEAT_SUPPORT: GLenum = 0x82B8`"]
551    pub const GL_CAVEAT_SUPPORT: GLenum = 0x82B8;
552    #[doc = "`GL_CCW: GLenum = 0x0901`"]
553    #[doc = "* **Group:** FrontFaceDirection"]
554    pub const GL_CCW: GLenum = 0x0901;
555    #[doc = "`GL_CLAMP_READ_COLOR: GLenum = 0x891C`"]
556    #[doc = "* **Group:** ClampColorTargetARB"]
557    pub const GL_CLAMP_READ_COLOR: GLenum = 0x891C;
558    #[doc = "`GL_CLAMP_TO_BORDER: GLenum = 0x812D`"]
559    #[doc = "* **Group:** TextureWrapMode"]
560    pub const GL_CLAMP_TO_BORDER: GLenum = 0x812D;
561    #[doc = "`GL_CLAMP_TO_EDGE: GLenum = 0x812F`"]
562    #[doc = "* **Group:** TextureWrapMode"]
563    pub const GL_CLAMP_TO_EDGE: GLenum = 0x812F;
564    #[doc = "`GL_CLEAR: GLenum = 0x1500`"]
565    #[doc = "* **Group:** LogicOp"]
566    pub const GL_CLEAR: GLenum = 0x1500;
567    #[doc = "`GL_CLEAR_BUFFER: GLenum = 0x82B4`"]
568    #[doc = "* **Group:** InternalFormatPName"]
569    pub const GL_CLEAR_BUFFER: GLenum = 0x82B4;
570    #[doc = "`GL_CLEAR_TEXTURE: GLenum = 0x9365`"]
571    #[doc = "* **Group:** InternalFormatPName"]
572    pub const GL_CLEAR_TEXTURE: GLenum = 0x9365;
573    #[doc = "`GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT: GLbitfield = 0x00004000`"]
574    #[doc = "* **Group:** MemoryBarrierMask"]
575    pub const GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT: GLbitfield = 0x00004000;
576    #[doc = "`GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT: GLbitfield = 0x00004000`"]
577    #[doc = "* **Group:** MemoryBarrierMask"]
578    pub const GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT: GLbitfield = 0x00004000;
579    #[doc = "`GL_CLIENT_STORAGE_BIT: GLbitfield = 0x0200`"]
580    #[doc = "* **Group:** BufferStorageMask"]
581    pub const GL_CLIENT_STORAGE_BIT: GLbitfield = 0x0200;
582    #[doc = "`GL_CLIENT_STORAGE_BIT_EXT: GLbitfield = 0x0200`"]
583    #[doc = "* **Group:** BufferStorageMask"]
584    pub const GL_CLIENT_STORAGE_BIT_EXT: GLbitfield = 0x0200;
585    #[doc = "`GL_CLIPPING_INPUT_PRIMITIVES: GLenum = 0x82F6`"]
586    pub const GL_CLIPPING_INPUT_PRIMITIVES: GLenum = 0x82F6;
587    #[doc = "`GL_CLIPPING_OUTPUT_PRIMITIVES: GLenum = 0x82F7`"]
588    pub const GL_CLIPPING_OUTPUT_PRIMITIVES: GLenum = 0x82F7;
589    #[doc = "`GL_CLIP_DEPTH_MODE: GLenum = 0x935D`"]
590    pub const GL_CLIP_DEPTH_MODE: GLenum = 0x935D;
591    #[doc = "`GL_CLIP_DISTANCE0: GLenum = 0x3000`"]
592    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
593    #[doc = "* **Alias Of:** `GL_CLIP_PLANE0`"]
594    pub const GL_CLIP_DISTANCE0: GLenum = 0x3000;
595    #[doc = "`GL_CLIP_DISTANCE1: GLenum = 0x3001`"]
596    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
597    #[doc = "* **Alias Of:** `GL_CLIP_PLANE1`"]
598    pub const GL_CLIP_DISTANCE1: GLenum = 0x3001;
599    #[doc = "`GL_CLIP_DISTANCE2: GLenum = 0x3002`"]
600    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
601    #[doc = "* **Alias Of:** `GL_CLIP_PLANE2`"]
602    pub const GL_CLIP_DISTANCE2: GLenum = 0x3002;
603    #[doc = "`GL_CLIP_DISTANCE3: GLenum = 0x3003`"]
604    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
605    #[doc = "* **Alias Of:** `GL_CLIP_PLANE3`"]
606    pub const GL_CLIP_DISTANCE3: GLenum = 0x3003;
607    #[doc = "`GL_CLIP_DISTANCE4: GLenum = 0x3004`"]
608    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
609    #[doc = "* **Alias Of:** `GL_CLIP_PLANE4`"]
610    pub const GL_CLIP_DISTANCE4: GLenum = 0x3004;
611    #[doc = "`GL_CLIP_DISTANCE5: GLenum = 0x3005`"]
612    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
613    #[doc = "* **Alias Of:** `GL_CLIP_PLANE5`"]
614    pub const GL_CLIP_DISTANCE5: GLenum = 0x3005;
615    #[doc = "`GL_CLIP_DISTANCE6: GLenum = 0x3006`"]
616    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
617    pub const GL_CLIP_DISTANCE6: GLenum = 0x3006;
618    #[doc = "`GL_CLIP_DISTANCE7: GLenum = 0x3007`"]
619    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
620    pub const GL_CLIP_DISTANCE7: GLenum = 0x3007;
621    #[doc = "`GL_CLIP_ORIGIN: GLenum = 0x935C`"]
622    pub const GL_CLIP_ORIGIN: GLenum = 0x935C;
623    #[doc = "`GL_COLOR: GLenum = 0x1800`"]
624    #[doc = "* **Groups:** Buffer, PixelCopyType, InvalidateFramebufferAttachment"]
625    pub const GL_COLOR: GLenum = 0x1800;
626    #[doc = "`GL_COLORBURN: GLenum = 0x929A`"]
627    pub const GL_COLORBURN: GLenum = 0x929A;
628    #[doc = "`GL_COLORDODGE: GLenum = 0x9299`"]
629    pub const GL_COLORDODGE: GLenum = 0x9299;
630    #[doc = "`GL_COLOR_ATTACHMENT0: GLenum = 0x8CE0`"]
631    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
632    pub const GL_COLOR_ATTACHMENT0: GLenum = 0x8CE0;
633    #[doc = "`GL_COLOR_ATTACHMENT1: GLenum = 0x8CE1`"]
634    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
635    pub const GL_COLOR_ATTACHMENT1: GLenum = 0x8CE1;
636    #[doc = "`GL_COLOR_ATTACHMENT10: GLenum = 0x8CEA`"]
637    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
638    pub const GL_COLOR_ATTACHMENT10: GLenum = 0x8CEA;
639    #[doc = "`GL_COLOR_ATTACHMENT11: GLenum = 0x8CEB`"]
640    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
641    pub const GL_COLOR_ATTACHMENT11: GLenum = 0x8CEB;
642    #[doc = "`GL_COLOR_ATTACHMENT12: GLenum = 0x8CEC`"]
643    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
644    pub const GL_COLOR_ATTACHMENT12: GLenum = 0x8CEC;
645    #[doc = "`GL_COLOR_ATTACHMENT13: GLenum = 0x8CED`"]
646    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
647    pub const GL_COLOR_ATTACHMENT13: GLenum = 0x8CED;
648    #[doc = "`GL_COLOR_ATTACHMENT14: GLenum = 0x8CEE`"]
649    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
650    pub const GL_COLOR_ATTACHMENT14: GLenum = 0x8CEE;
651    #[doc = "`GL_COLOR_ATTACHMENT15: GLenum = 0x8CEF`"]
652    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
653    pub const GL_COLOR_ATTACHMENT15: GLenum = 0x8CEF;
654    #[doc = "`GL_COLOR_ATTACHMENT16: GLenum = 0x8CF0`"]
655    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
656    pub const GL_COLOR_ATTACHMENT16: GLenum = 0x8CF0;
657    #[doc = "`GL_COLOR_ATTACHMENT17: GLenum = 0x8CF1`"]
658    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
659    pub const GL_COLOR_ATTACHMENT17: GLenum = 0x8CF1;
660    #[doc = "`GL_COLOR_ATTACHMENT18: GLenum = 0x8CF2`"]
661    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
662    pub const GL_COLOR_ATTACHMENT18: GLenum = 0x8CF2;
663    #[doc = "`GL_COLOR_ATTACHMENT19: GLenum = 0x8CF3`"]
664    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
665    pub const GL_COLOR_ATTACHMENT19: GLenum = 0x8CF3;
666    #[doc = "`GL_COLOR_ATTACHMENT2: GLenum = 0x8CE2`"]
667    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
668    pub const GL_COLOR_ATTACHMENT2: GLenum = 0x8CE2;
669    #[doc = "`GL_COLOR_ATTACHMENT20: GLenum = 0x8CF4`"]
670    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
671    pub const GL_COLOR_ATTACHMENT20: GLenum = 0x8CF4;
672    #[doc = "`GL_COLOR_ATTACHMENT21: GLenum = 0x8CF5`"]
673    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
674    pub const GL_COLOR_ATTACHMENT21: GLenum = 0x8CF5;
675    #[doc = "`GL_COLOR_ATTACHMENT22: GLenum = 0x8CF6`"]
676    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
677    pub const GL_COLOR_ATTACHMENT22: GLenum = 0x8CF6;
678    #[doc = "`GL_COLOR_ATTACHMENT23: GLenum = 0x8CF7`"]
679    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
680    pub const GL_COLOR_ATTACHMENT23: GLenum = 0x8CF7;
681    #[doc = "`GL_COLOR_ATTACHMENT24: GLenum = 0x8CF8`"]
682    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
683    pub const GL_COLOR_ATTACHMENT24: GLenum = 0x8CF8;
684    #[doc = "`GL_COLOR_ATTACHMENT25: GLenum = 0x8CF9`"]
685    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
686    pub const GL_COLOR_ATTACHMENT25: GLenum = 0x8CF9;
687    #[doc = "`GL_COLOR_ATTACHMENT26: GLenum = 0x8CFA`"]
688    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
689    pub const GL_COLOR_ATTACHMENT26: GLenum = 0x8CFA;
690    #[doc = "`GL_COLOR_ATTACHMENT27: GLenum = 0x8CFB`"]
691    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
692    pub const GL_COLOR_ATTACHMENT27: GLenum = 0x8CFB;
693    #[doc = "`GL_COLOR_ATTACHMENT28: GLenum = 0x8CFC`"]
694    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
695    pub const GL_COLOR_ATTACHMENT28: GLenum = 0x8CFC;
696    #[doc = "`GL_COLOR_ATTACHMENT29: GLenum = 0x8CFD`"]
697    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
698    pub const GL_COLOR_ATTACHMENT29: GLenum = 0x8CFD;
699    #[doc = "`GL_COLOR_ATTACHMENT3: GLenum = 0x8CE3`"]
700    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
701    pub const GL_COLOR_ATTACHMENT3: GLenum = 0x8CE3;
702    #[doc = "`GL_COLOR_ATTACHMENT30: GLenum = 0x8CFE`"]
703    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
704    pub const GL_COLOR_ATTACHMENT30: GLenum = 0x8CFE;
705    #[doc = "`GL_COLOR_ATTACHMENT31: GLenum = 0x8CFF`"]
706    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
707    pub const GL_COLOR_ATTACHMENT31: GLenum = 0x8CFF;
708    #[doc = "`GL_COLOR_ATTACHMENT4: GLenum = 0x8CE4`"]
709    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
710    pub const GL_COLOR_ATTACHMENT4: GLenum = 0x8CE4;
711    #[doc = "`GL_COLOR_ATTACHMENT5: GLenum = 0x8CE5`"]
712    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
713    pub const GL_COLOR_ATTACHMENT5: GLenum = 0x8CE5;
714    #[doc = "`GL_COLOR_ATTACHMENT6: GLenum = 0x8CE6`"]
715    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
716    pub const GL_COLOR_ATTACHMENT6: GLenum = 0x8CE6;
717    #[doc = "`GL_COLOR_ATTACHMENT7: GLenum = 0x8CE7`"]
718    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
719    pub const GL_COLOR_ATTACHMENT7: GLenum = 0x8CE7;
720    #[doc = "`GL_COLOR_ATTACHMENT8: GLenum = 0x8CE8`"]
721    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
722    pub const GL_COLOR_ATTACHMENT8: GLenum = 0x8CE8;
723    #[doc = "`GL_COLOR_ATTACHMENT9: GLenum = 0x8CE9`"]
724    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
725    pub const GL_COLOR_ATTACHMENT9: GLenum = 0x8CE9;
726    #[doc = "`GL_COLOR_BUFFER_BIT: GLbitfield = 0x00004000`"]
727    #[doc = "* **Groups:** ClearBufferMask, AttribMask"]
728    pub const GL_COLOR_BUFFER_BIT: GLbitfield = 0x00004000;
729    #[doc = "`GL_COLOR_CLEAR_VALUE: GLenum = 0x0C22`"]
730    #[doc = "* **Group:** GetPName"]
731    pub const GL_COLOR_CLEAR_VALUE: GLenum = 0x0C22;
732    #[doc = "`GL_COLOR_COMPONENTS: GLenum = 0x8283`"]
733    #[doc = "* **Group:** InternalFormatPName"]
734    pub const GL_COLOR_COMPONENTS: GLenum = 0x8283;
735    #[doc = "`GL_COLOR_ENCODING: GLenum = 0x8296`"]
736    #[doc = "* **Group:** InternalFormatPName"]
737    pub const GL_COLOR_ENCODING: GLenum = 0x8296;
738    #[doc = "`GL_COLOR_LOGIC_OP: GLenum = 0x0BF2`"]
739    #[doc = "* **Groups:** GetPName, EnableCap"]
740    pub const GL_COLOR_LOGIC_OP: GLenum = 0x0BF2;
741    #[doc = "`GL_COLOR_RENDERABLE: GLenum = 0x8286`"]
742    #[doc = "* **Group:** InternalFormatPName"]
743    pub const GL_COLOR_RENDERABLE: GLenum = 0x8286;
744    #[doc = "`GL_COLOR_WRITEMASK: GLenum = 0x0C23`"]
745    #[doc = "* **Group:** GetPName"]
746    pub const GL_COLOR_WRITEMASK: GLenum = 0x0C23;
747    #[doc = "`GL_COMMAND_BARRIER_BIT: GLbitfield = 0x00000040`"]
748    #[doc = "* **Group:** MemoryBarrierMask"]
749    pub const GL_COMMAND_BARRIER_BIT: GLbitfield = 0x00000040;
750    #[doc = "`GL_COMPARE_REF_TO_TEXTURE: GLenum = 0x884E`"]
751    #[doc = "* **Group:** TextureCompareMode"]
752    #[doc = "* **Alias Of:** `GL_COMPARE_R_TO_TEXTURE`"]
753    pub const GL_COMPARE_REF_TO_TEXTURE: GLenum = 0x884E;
754    #[doc = "`GL_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4B`"]
755    #[doc = "* **Groups:** ProgramResourceProperty, SubroutineParameterName"]
756    pub const GL_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4B;
757    #[doc = "`GL_COMPILE_STATUS: GLenum = 0x8B81`"]
758    #[doc = "* **Group:** ShaderParameterName"]
759    pub const GL_COMPILE_STATUS: GLenum = 0x8B81;
760    #[doc = "`GL_COMPLETION_STATUS_ARB: GLenum = 0x91B1`"]
761    #[doc = "* **Alias Of:** `GL_COMPLETION_STATUS_KHR`"]
762    pub const GL_COMPLETION_STATUS_ARB: GLenum = 0x91B1;
763    #[doc = "`GL_COMPLETION_STATUS_KHR: GLenum = 0x91B1`"]
764    pub const GL_COMPLETION_STATUS_KHR: GLenum = 0x91B1;
765    #[doc = "`GL_COMPRESSED_R11_EAC: GLenum = 0x9270`"]
766    #[doc = "* **Group:** InternalFormat"]
767    pub const GL_COMPRESSED_R11_EAC: GLenum = 0x9270;
768    #[doc = "`GL_COMPRESSED_RED: GLenum = 0x8225`"]
769    #[doc = "* **Group:** InternalFormat"]
770    pub const GL_COMPRESSED_RED: GLenum = 0x8225;
771    #[doc = "`GL_COMPRESSED_RED_RGTC1: GLenum = 0x8DBB`"]
772    #[doc = "* **Group:** InternalFormat"]
773    pub const GL_COMPRESSED_RED_RGTC1: GLenum = 0x8DBB;
774    #[doc = "`GL_COMPRESSED_RG: GLenum = 0x8226`"]
775    #[doc = "* **Group:** InternalFormat"]
776    pub const GL_COMPRESSED_RG: GLenum = 0x8226;
777    #[doc = "`GL_COMPRESSED_RG11_EAC: GLenum = 0x9272`"]
778    #[doc = "* **Group:** InternalFormat"]
779    pub const GL_COMPRESSED_RG11_EAC: GLenum = 0x9272;
780    #[doc = "`GL_COMPRESSED_RGB: GLenum = 0x84ED`"]
781    #[doc = "* **Group:** InternalFormat"]
782    pub const GL_COMPRESSED_RGB: GLenum = 0x84ED;
783    #[doc = "`GL_COMPRESSED_RGB8_ETC2: GLenum = 0x9274`"]
784    #[doc = "* **Group:** InternalFormat"]
785    pub const GL_COMPRESSED_RGB8_ETC2: GLenum = 0x9274;
786    #[doc = "`GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9276`"]
787    #[doc = "* **Group:** InternalFormat"]
788    pub const GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9276;
789    #[doc = "`GL_COMPRESSED_RGBA: GLenum = 0x84EE`"]
790    #[doc = "* **Group:** InternalFormat"]
791    pub const GL_COMPRESSED_RGBA: GLenum = 0x84EE;
792    #[doc = "`GL_COMPRESSED_RGBA8_ETC2_EAC: GLenum = 0x9278`"]
793    #[doc = "* **Group:** InternalFormat"]
794    pub const GL_COMPRESSED_RGBA8_ETC2_EAC: GLenum = 0x9278;
795    #[doc = "`GL_COMPRESSED_RGBA_ASTC_10x10: GLenum = 0x93BB`"]
796    #[doc = "* **Group:** InternalFormat"]
797    pub const GL_COMPRESSED_RGBA_ASTC_10x10: GLenum = 0x93BB;
798    #[doc = "`GL_COMPRESSED_RGBA_ASTC_10x5: GLenum = 0x93B8`"]
799    #[doc = "* **Group:** InternalFormat"]
800    pub const GL_COMPRESSED_RGBA_ASTC_10x5: GLenum = 0x93B8;
801    #[doc = "`GL_COMPRESSED_RGBA_ASTC_10x6: GLenum = 0x93B9`"]
802    #[doc = "* **Group:** InternalFormat"]
803    pub const GL_COMPRESSED_RGBA_ASTC_10x6: GLenum = 0x93B9;
804    #[doc = "`GL_COMPRESSED_RGBA_ASTC_10x8: GLenum = 0x93BA`"]
805    #[doc = "* **Group:** InternalFormat"]
806    pub const GL_COMPRESSED_RGBA_ASTC_10x8: GLenum = 0x93BA;
807    #[doc = "`GL_COMPRESSED_RGBA_ASTC_12x10: GLenum = 0x93BC`"]
808    #[doc = "* **Group:** InternalFormat"]
809    pub const GL_COMPRESSED_RGBA_ASTC_12x10: GLenum = 0x93BC;
810    #[doc = "`GL_COMPRESSED_RGBA_ASTC_12x12: GLenum = 0x93BD`"]
811    #[doc = "* **Group:** InternalFormat"]
812    pub const GL_COMPRESSED_RGBA_ASTC_12x12: GLenum = 0x93BD;
813    #[doc = "`GL_COMPRESSED_RGBA_ASTC_4x4: GLenum = 0x93B0`"]
814    #[doc = "* **Group:** InternalFormat"]
815    pub const GL_COMPRESSED_RGBA_ASTC_4x4: GLenum = 0x93B0;
816    #[doc = "`GL_COMPRESSED_RGBA_ASTC_5x4: GLenum = 0x93B1`"]
817    #[doc = "* **Group:** InternalFormat"]
818    pub const GL_COMPRESSED_RGBA_ASTC_5x4: GLenum = 0x93B1;
819    #[doc = "`GL_COMPRESSED_RGBA_ASTC_5x5: GLenum = 0x93B2`"]
820    #[doc = "* **Group:** InternalFormat"]
821    pub const GL_COMPRESSED_RGBA_ASTC_5x5: GLenum = 0x93B2;
822    #[doc = "`GL_COMPRESSED_RGBA_ASTC_6x5: GLenum = 0x93B3`"]
823    #[doc = "* **Group:** InternalFormat"]
824    pub const GL_COMPRESSED_RGBA_ASTC_6x5: GLenum = 0x93B3;
825    #[doc = "`GL_COMPRESSED_RGBA_ASTC_6x6: GLenum = 0x93B4`"]
826    #[doc = "* **Group:** InternalFormat"]
827    pub const GL_COMPRESSED_RGBA_ASTC_6x6: GLenum = 0x93B4;
828    #[doc = "`GL_COMPRESSED_RGBA_ASTC_8x5: GLenum = 0x93B5`"]
829    #[doc = "* **Group:** InternalFormat"]
830    pub const GL_COMPRESSED_RGBA_ASTC_8x5: GLenum = 0x93B5;
831    #[doc = "`GL_COMPRESSED_RGBA_ASTC_8x6: GLenum = 0x93B6`"]
832    #[doc = "* **Group:** InternalFormat"]
833    pub const GL_COMPRESSED_RGBA_ASTC_8x6: GLenum = 0x93B6;
834    #[doc = "`GL_COMPRESSED_RGBA_ASTC_8x8: GLenum = 0x93B7`"]
835    #[doc = "* **Group:** InternalFormat"]
836    pub const GL_COMPRESSED_RGBA_ASTC_8x8: GLenum = 0x93B7;
837    #[doc = "`GL_COMPRESSED_RGBA_BPTC_UNORM: GLenum = 0x8E8C`"]
838    #[doc = "* **Group:** InternalFormat"]
839    pub const GL_COMPRESSED_RGBA_BPTC_UNORM: GLenum = 0x8E8C;
840    #[doc = "`GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: GLenum = 0x8E8E`"]
841    #[doc = "* **Group:** InternalFormat"]
842    pub const GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: GLenum = 0x8E8E;
843    #[doc = "`GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: GLenum = 0x8E8F`"]
844    #[doc = "* **Group:** InternalFormat"]
845    pub const GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: GLenum = 0x8E8F;
846    #[doc = "`GL_COMPRESSED_RG_RGTC2: GLenum = 0x8DBD`"]
847    #[doc = "* **Group:** InternalFormat"]
848    pub const GL_COMPRESSED_RG_RGTC2: GLenum = 0x8DBD;
849    #[doc = "`GL_COMPRESSED_SIGNED_R11_EAC: GLenum = 0x9271`"]
850    #[doc = "* **Group:** InternalFormat"]
851    pub const GL_COMPRESSED_SIGNED_R11_EAC: GLenum = 0x9271;
852    #[doc = "`GL_COMPRESSED_SIGNED_RED_RGTC1: GLenum = 0x8DBC`"]
853    #[doc = "* **Group:** InternalFormat"]
854    pub const GL_COMPRESSED_SIGNED_RED_RGTC1: GLenum = 0x8DBC;
855    #[doc = "`GL_COMPRESSED_SIGNED_RG11_EAC: GLenum = 0x9273`"]
856    #[doc = "* **Group:** InternalFormat"]
857    pub const GL_COMPRESSED_SIGNED_RG11_EAC: GLenum = 0x9273;
858    #[doc = "`GL_COMPRESSED_SIGNED_RG_RGTC2: GLenum = 0x8DBE`"]
859    #[doc = "* **Group:** InternalFormat"]
860    pub const GL_COMPRESSED_SIGNED_RG_RGTC2: GLenum = 0x8DBE;
861    #[doc = "`GL_COMPRESSED_SRGB: GLenum = 0x8C48`"]
862    #[doc = "* **Group:** InternalFormat"]
863    pub const GL_COMPRESSED_SRGB: GLenum = 0x8C48;
864    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: GLenum = 0x93DB`"]
865    #[doc = "* **Group:** InternalFormat"]
866    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: GLenum = 0x93DB;
867    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: GLenum = 0x93D8`"]
868    #[doc = "* **Group:** InternalFormat"]
869    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: GLenum = 0x93D8;
870    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: GLenum = 0x93D9`"]
871    #[doc = "* **Group:** InternalFormat"]
872    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: GLenum = 0x93D9;
873    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: GLenum = 0x93DA`"]
874    #[doc = "* **Group:** InternalFormat"]
875    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: GLenum = 0x93DA;
876    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: GLenum = 0x93DC`"]
877    #[doc = "* **Group:** InternalFormat"]
878    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: GLenum = 0x93DC;
879    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: GLenum = 0x93DD`"]
880    #[doc = "* **Group:** InternalFormat"]
881    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: GLenum = 0x93DD;
882    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: GLenum = 0x93D0`"]
883    #[doc = "* **Group:** InternalFormat"]
884    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: GLenum = 0x93D0;
885    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: GLenum = 0x93D1`"]
886    #[doc = "* **Group:** InternalFormat"]
887    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: GLenum = 0x93D1;
888    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: GLenum = 0x93D2`"]
889    #[doc = "* **Group:** InternalFormat"]
890    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: GLenum = 0x93D2;
891    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: GLenum = 0x93D3`"]
892    #[doc = "* **Group:** InternalFormat"]
893    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: GLenum = 0x93D3;
894    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: GLenum = 0x93D4`"]
895    #[doc = "* **Group:** InternalFormat"]
896    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: GLenum = 0x93D4;
897    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: GLenum = 0x93D5`"]
898    #[doc = "* **Group:** InternalFormat"]
899    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: GLenum = 0x93D5;
900    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: GLenum = 0x93D6`"]
901    #[doc = "* **Group:** InternalFormat"]
902    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: GLenum = 0x93D6;
903    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: GLenum = 0x93D7`"]
904    #[doc = "* **Group:** InternalFormat"]
905    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: GLenum = 0x93D7;
906    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: GLenum = 0x9279`"]
907    #[doc = "* **Group:** InternalFormat"]
908    pub const GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: GLenum = 0x9279;
909    #[doc = "`GL_COMPRESSED_SRGB8_ETC2: GLenum = 0x9275`"]
910    #[doc = "* **Group:** InternalFormat"]
911    pub const GL_COMPRESSED_SRGB8_ETC2: GLenum = 0x9275;
912    #[doc = "`GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9277`"]
913    #[doc = "* **Group:** InternalFormat"]
914    pub const GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9277;
915    #[doc = "`GL_COMPRESSED_SRGB_ALPHA: GLenum = 0x8C49`"]
916    #[doc = "* **Group:** InternalFormat"]
917    pub const GL_COMPRESSED_SRGB_ALPHA: GLenum = 0x8C49;
918    #[doc = "`GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: GLenum = 0x8E8D`"]
919    #[doc = "* **Group:** InternalFormat"]
920    pub const GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: GLenum = 0x8E8D;
921    #[doc = "`GL_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A3`"]
922    #[doc = "* **Group:** GetPName"]
923    pub const GL_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A3;
924    #[doc = "`GL_COMPUTE_SHADER: GLenum = 0x91B9`"]
925    #[doc = "* **Group:** ShaderType"]
926    pub const GL_COMPUTE_SHADER: GLenum = 0x91B9;
927    #[doc = "`GL_COMPUTE_SHADER_BIT: GLbitfield = 0x00000020`"]
928    #[doc = "* **Group:** UseProgramStageMask"]
929    pub const GL_COMPUTE_SHADER_BIT: GLbitfield = 0x00000020;
930    #[doc = "`GL_COMPUTE_SHADER_INVOCATIONS: GLenum = 0x82F5`"]
931    pub const GL_COMPUTE_SHADER_INVOCATIONS: GLenum = 0x82F5;
932    #[doc = "`GL_COMPUTE_SUBROUTINE: GLenum = 0x92ED`"]
933    #[doc = "* **Group:** ProgramInterface"]
934    pub const GL_COMPUTE_SUBROUTINE: GLenum = 0x92ED;
935    #[doc = "`GL_COMPUTE_SUBROUTINE_UNIFORM: GLenum = 0x92F3`"]
936    #[doc = "* **Group:** ProgramInterface"]
937    pub const GL_COMPUTE_SUBROUTINE_UNIFORM: GLenum = 0x92F3;
938    #[doc = "`GL_COMPUTE_TEXTURE: GLenum = 0x82A0`"]
939    #[doc = "* **Group:** InternalFormatPName"]
940    pub const GL_COMPUTE_TEXTURE: GLenum = 0x82A0;
941    #[doc = "`GL_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x8267`"]
942    #[doc = "* **Group:** ProgramPropertyARB"]
943    pub const GL_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x8267;
944    #[doc = "`GL_CONDITION_SATISFIED: GLenum = 0x911C`"]
945    #[doc = "* **Group:** SyncStatus"]
946    pub const GL_CONDITION_SATISFIED: GLenum = 0x911C;
947    #[doc = "`GL_CONSTANT_ALPHA: GLenum = 0x8003`"]
948    #[doc = "* **Group:** BlendingFactor"]
949    pub const GL_CONSTANT_ALPHA: GLenum = 0x8003;
950    #[doc = "`GL_CONSTANT_COLOR: GLenum = 0x8001`"]
951    #[doc = "* **Group:** BlendingFactor"]
952    pub const GL_CONSTANT_COLOR: GLenum = 0x8001;
953    #[doc = "`GL_CONTEXT_COMPATIBILITY_PROFILE_BIT: GLbitfield = 0x00000002`"]
954    #[doc = "* **Group:** ContextProfileMask"]
955    pub const GL_CONTEXT_COMPATIBILITY_PROFILE_BIT: GLbitfield = 0x00000002;
956    #[doc = "`GL_CONTEXT_CORE_PROFILE_BIT: GLbitfield = 0x00000001`"]
957    #[doc = "* **Group:** ContextProfileMask"]
958    pub const GL_CONTEXT_CORE_PROFILE_BIT: GLbitfield = 0x00000001;
959    #[doc = "`GL_CONTEXT_FLAGS: GLenum = 0x821E`"]
960    #[doc = "* **Group:** GetPName"]
961    pub const GL_CONTEXT_FLAGS: GLenum = 0x821E;
962    #[doc = "`GL_CONTEXT_FLAG_DEBUG_BIT: GLbitfield = 0x00000002`"]
963    #[doc = "* **Group:** ContextFlagMask"]
964    pub const GL_CONTEXT_FLAG_DEBUG_BIT: GLbitfield = 0x00000002;
965    #[doc = "`GL_CONTEXT_FLAG_DEBUG_BIT_KHR: GLbitfield = 0x00000002`"]
966    #[doc = "* **Group:** ContextFlagMask"]
967    pub const GL_CONTEXT_FLAG_DEBUG_BIT_KHR: GLbitfield = 0x00000002;
968    #[doc = "`GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT: GLbitfield = 0x00000001`"]
969    #[doc = "* **Group:** ContextFlagMask"]
970    pub const GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT: GLbitfield = 0x00000001;
971    #[doc = "`GL_CONTEXT_FLAG_NO_ERROR_BIT: GLbitfield = 0x00000008`"]
972    #[doc = "* **Group:** ContextFlagMask"]
973    pub const GL_CONTEXT_FLAG_NO_ERROR_BIT: GLbitfield = 0x00000008;
974    #[doc = "`GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT: GLbitfield = 0x00000004`"]
975    #[doc = "* **Group:** ContextFlagMask"]
976    pub const GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT: GLbitfield = 0x00000004;
977    #[doc = "`GL_CONTEXT_LOST: GLenum = 0x0507`"]
978    pub const GL_CONTEXT_LOST: GLenum = 0x0507;
979    #[doc = "`GL_CONTEXT_PROFILE_MASK: GLenum = 0x9126`"]
980    #[doc = "* **Group:** GetPName"]
981    pub const GL_CONTEXT_PROFILE_MASK: GLenum = 0x9126;
982    #[doc = "`GL_CONTEXT_RELEASE_BEHAVIOR: GLenum = 0x82FB`"]
983    pub const GL_CONTEXT_RELEASE_BEHAVIOR: GLenum = 0x82FB;
984    #[doc = "`GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH: GLenum = 0x82FC`"]
985    pub const GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH: GLenum = 0x82FC;
986    #[doc = "`GL_COPY: GLenum = 0x1503`"]
987    #[doc = "* **Group:** LogicOp"]
988    pub const GL_COPY: GLenum = 0x1503;
989    #[doc = "`GL_COPY_INVERTED: GLenum = 0x150C`"]
990    #[doc = "* **Group:** LogicOp"]
991    pub const GL_COPY_INVERTED: GLenum = 0x150C;
992    #[doc = "`GL_COPY_READ_BUFFER: GLenum = 0x8F36`"]
993    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
994    pub const GL_COPY_READ_BUFFER: GLenum = 0x8F36;
995    #[doc = "`GL_COPY_READ_BUFFER_BINDING: GLenum = 0x8F36`"]
996    #[doc = "* **Alias Of:** `GL_COPY_READ_BUFFER`"]
997    pub const GL_COPY_READ_BUFFER_BINDING: GLenum = 0x8F36;
998    #[doc = "`GL_COPY_READ_BUFFER_NV: GLenum = 0x8F36`"]
999    pub const GL_COPY_READ_BUFFER_NV: GLenum = 0x8F36;
1000    #[doc = "`GL_COPY_WRITE_BUFFER: GLenum = 0x8F37`"]
1001    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
1002    pub const GL_COPY_WRITE_BUFFER: GLenum = 0x8F37;
1003    #[doc = "`GL_COPY_WRITE_BUFFER_BINDING: GLenum = 0x8F37`"]
1004    #[doc = "* **Alias Of:** `GL_COPY_WRITE_BUFFER`"]
1005    pub const GL_COPY_WRITE_BUFFER_BINDING: GLenum = 0x8F37;
1006    #[doc = "`GL_COPY_WRITE_BUFFER_NV: GLenum = 0x8F37`"]
1007    pub const GL_COPY_WRITE_BUFFER_NV: GLenum = 0x8F37;
1008    #[doc = "`GL_CULL_FACE: GLenum = 0x0B44`"]
1009    #[doc = "* **Groups:** GetPName, EnableCap"]
1010    pub const GL_CULL_FACE: GLenum = 0x0B44;
1011    #[doc = "`GL_CULL_FACE_MODE: GLenum = 0x0B45`"]
1012    #[doc = "* **Group:** GetPName"]
1013    pub const GL_CULL_FACE_MODE: GLenum = 0x0B45;
1014    #[doc = "`GL_CURRENT_PROGRAM: GLenum = 0x8B8D`"]
1015    #[doc = "* **Group:** GetPName"]
1016    pub const GL_CURRENT_PROGRAM: GLenum = 0x8B8D;
1017    #[doc = "`GL_CURRENT_QUERY: GLenum = 0x8865`"]
1018    #[doc = "* **Group:** QueryParameterName"]
1019    pub const GL_CURRENT_QUERY: GLenum = 0x8865;
1020    #[doc = "`GL_CURRENT_QUERY_EXT: GLenum = 0x8865`"]
1021    pub const GL_CURRENT_QUERY_EXT: GLenum = 0x8865;
1022    #[doc = "`GL_CURRENT_VERTEX_ATTRIB: GLenum = 0x8626`"]
1023    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB"]
1024    pub const GL_CURRENT_VERTEX_ATTRIB: GLenum = 0x8626;
1025    #[doc = "`GL_CW: GLenum = 0x0900`"]
1026    #[doc = "* **Group:** FrontFaceDirection"]
1027    pub const GL_CW: GLenum = 0x0900;
1028    #[doc = "`GL_DARKEN: GLenum = 0x9297`"]
1029    pub const GL_DARKEN: GLenum = 0x9297;
1030    #[doc = "`GL_DEBUG_CALLBACK_FUNCTION: GLenum = 0x8244`"]
1031    #[doc = "* **Group:** GetPointervPName"]
1032    pub const GL_DEBUG_CALLBACK_FUNCTION: GLenum = 0x8244;
1033    #[doc = "`GL_DEBUG_CALLBACK_FUNCTION_ARB: GLenum = 0x8244`"]
1034    pub const GL_DEBUG_CALLBACK_FUNCTION_ARB: GLenum = 0x8244;
1035    #[doc = "`GL_DEBUG_CALLBACK_FUNCTION_KHR: GLenum = 0x8244`"]
1036    pub const GL_DEBUG_CALLBACK_FUNCTION_KHR: GLenum = 0x8244;
1037    #[doc = "`GL_DEBUG_CALLBACK_USER_PARAM: GLenum = 0x8245`"]
1038    #[doc = "* **Group:** GetPointervPName"]
1039    pub const GL_DEBUG_CALLBACK_USER_PARAM: GLenum = 0x8245;
1040    #[doc = "`GL_DEBUG_CALLBACK_USER_PARAM_ARB: GLenum = 0x8245`"]
1041    pub const GL_DEBUG_CALLBACK_USER_PARAM_ARB: GLenum = 0x8245;
1042    #[doc = "`GL_DEBUG_CALLBACK_USER_PARAM_KHR: GLenum = 0x8245`"]
1043    pub const GL_DEBUG_CALLBACK_USER_PARAM_KHR: GLenum = 0x8245;
1044    #[doc = "`GL_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826D`"]
1045    #[doc = "* **Group:** GetPName"]
1046    pub const GL_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826D;
1047    #[doc = "`GL_DEBUG_GROUP_STACK_DEPTH_KHR: GLenum = 0x826D`"]
1048    pub const GL_DEBUG_GROUP_STACK_DEPTH_KHR: GLenum = 0x826D;
1049    #[doc = "`GL_DEBUG_LOGGED_MESSAGES: GLenum = 0x9145`"]
1050    pub const GL_DEBUG_LOGGED_MESSAGES: GLenum = 0x9145;
1051    #[doc = "`GL_DEBUG_LOGGED_MESSAGES_ARB: GLenum = 0x9145`"]
1052    pub const GL_DEBUG_LOGGED_MESSAGES_ARB: GLenum = 0x9145;
1053    #[doc = "`GL_DEBUG_LOGGED_MESSAGES_KHR: GLenum = 0x9145`"]
1054    pub const GL_DEBUG_LOGGED_MESSAGES_KHR: GLenum = 0x9145;
1055    #[doc = "`GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: GLenum = 0x8243`"]
1056    pub const GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: GLenum = 0x8243;
1057    #[doc = "`GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB: GLenum = 0x8243`"]
1058    pub const GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB: GLenum = 0x8243;
1059    #[doc = "`GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR: GLenum = 0x8243`"]
1060    pub const GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR: GLenum = 0x8243;
1061    #[doc = "`GL_DEBUG_OUTPUT: GLenum = 0x92E0`"]
1062    #[doc = "* **Group:** EnableCap"]
1063    pub const GL_DEBUG_OUTPUT: GLenum = 0x92E0;
1064    #[doc = "`GL_DEBUG_OUTPUT_KHR: GLenum = 0x92E0`"]
1065    pub const GL_DEBUG_OUTPUT_KHR: GLenum = 0x92E0;
1066    #[doc = "`GL_DEBUG_OUTPUT_SYNCHRONOUS: GLenum = 0x8242`"]
1067    #[doc = "* **Group:** EnableCap"]
1068    pub const GL_DEBUG_OUTPUT_SYNCHRONOUS: GLenum = 0x8242;
1069    #[doc = "`GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB: GLenum = 0x8242`"]
1070    pub const GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB: GLenum = 0x8242;
1071    #[doc = "`GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR: GLenum = 0x8242`"]
1072    pub const GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR: GLenum = 0x8242;
1073    #[doc = "`GL_DEBUG_SEVERITY_HIGH: GLenum = 0x9146`"]
1074    #[doc = "* **Group:** DebugSeverity"]
1075    pub const GL_DEBUG_SEVERITY_HIGH: GLenum = 0x9146;
1076    #[doc = "`GL_DEBUG_SEVERITY_HIGH_ARB: GLenum = 0x9146`"]
1077    pub const GL_DEBUG_SEVERITY_HIGH_ARB: GLenum = 0x9146;
1078    #[doc = "`GL_DEBUG_SEVERITY_HIGH_KHR: GLenum = 0x9146`"]
1079    pub const GL_DEBUG_SEVERITY_HIGH_KHR: GLenum = 0x9146;
1080    #[doc = "`GL_DEBUG_SEVERITY_LOW: GLenum = 0x9148`"]
1081    #[doc = "* **Group:** DebugSeverity"]
1082    pub const GL_DEBUG_SEVERITY_LOW: GLenum = 0x9148;
1083    #[doc = "`GL_DEBUG_SEVERITY_LOW_ARB: GLenum = 0x9148`"]
1084    pub const GL_DEBUG_SEVERITY_LOW_ARB: GLenum = 0x9148;
1085    #[doc = "`GL_DEBUG_SEVERITY_LOW_KHR: GLenum = 0x9148`"]
1086    pub const GL_DEBUG_SEVERITY_LOW_KHR: GLenum = 0x9148;
1087    #[doc = "`GL_DEBUG_SEVERITY_MEDIUM: GLenum = 0x9147`"]
1088    #[doc = "* **Group:** DebugSeverity"]
1089    pub const GL_DEBUG_SEVERITY_MEDIUM: GLenum = 0x9147;
1090    #[doc = "`GL_DEBUG_SEVERITY_MEDIUM_ARB: GLenum = 0x9147`"]
1091    pub const GL_DEBUG_SEVERITY_MEDIUM_ARB: GLenum = 0x9147;
1092    #[doc = "`GL_DEBUG_SEVERITY_MEDIUM_KHR: GLenum = 0x9147`"]
1093    pub const GL_DEBUG_SEVERITY_MEDIUM_KHR: GLenum = 0x9147;
1094    #[doc = "`GL_DEBUG_SEVERITY_NOTIFICATION: GLenum = 0x826B`"]
1095    #[doc = "* **Group:** DebugSeverity"]
1096    pub const GL_DEBUG_SEVERITY_NOTIFICATION: GLenum = 0x826B;
1097    #[doc = "`GL_DEBUG_SEVERITY_NOTIFICATION_KHR: GLenum = 0x826B`"]
1098    pub const GL_DEBUG_SEVERITY_NOTIFICATION_KHR: GLenum = 0x826B;
1099    #[doc = "`GL_DEBUG_SOURCE_API: GLenum = 0x8246`"]
1100    #[doc = "* **Group:** DebugSource"]
1101    pub const GL_DEBUG_SOURCE_API: GLenum = 0x8246;
1102    #[doc = "`GL_DEBUG_SOURCE_API_ARB: GLenum = 0x8246`"]
1103    pub const GL_DEBUG_SOURCE_API_ARB: GLenum = 0x8246;
1104    #[doc = "`GL_DEBUG_SOURCE_API_KHR: GLenum = 0x8246`"]
1105    pub const GL_DEBUG_SOURCE_API_KHR: GLenum = 0x8246;
1106    #[doc = "`GL_DEBUG_SOURCE_APPLICATION: GLenum = 0x824A`"]
1107    #[doc = "* **Group:** DebugSource"]
1108    pub const GL_DEBUG_SOURCE_APPLICATION: GLenum = 0x824A;
1109    #[doc = "`GL_DEBUG_SOURCE_APPLICATION_ARB: GLenum = 0x824A`"]
1110    pub const GL_DEBUG_SOURCE_APPLICATION_ARB: GLenum = 0x824A;
1111    #[doc = "`GL_DEBUG_SOURCE_APPLICATION_KHR: GLenum = 0x824A`"]
1112    pub const GL_DEBUG_SOURCE_APPLICATION_KHR: GLenum = 0x824A;
1113    #[doc = "`GL_DEBUG_SOURCE_OTHER: GLenum = 0x824B`"]
1114    #[doc = "* **Group:** DebugSource"]
1115    pub const GL_DEBUG_SOURCE_OTHER: GLenum = 0x824B;
1116    #[doc = "`GL_DEBUG_SOURCE_OTHER_ARB: GLenum = 0x824B`"]
1117    pub const GL_DEBUG_SOURCE_OTHER_ARB: GLenum = 0x824B;
1118    #[doc = "`GL_DEBUG_SOURCE_OTHER_KHR: GLenum = 0x824B`"]
1119    pub const GL_DEBUG_SOURCE_OTHER_KHR: GLenum = 0x824B;
1120    #[doc = "`GL_DEBUG_SOURCE_SHADER_COMPILER: GLenum = 0x8248`"]
1121    #[doc = "* **Group:** DebugSource"]
1122    pub const GL_DEBUG_SOURCE_SHADER_COMPILER: GLenum = 0x8248;
1123    #[doc = "`GL_DEBUG_SOURCE_SHADER_COMPILER_ARB: GLenum = 0x8248`"]
1124    pub const GL_DEBUG_SOURCE_SHADER_COMPILER_ARB: GLenum = 0x8248;
1125    #[doc = "`GL_DEBUG_SOURCE_SHADER_COMPILER_KHR: GLenum = 0x8248`"]
1126    pub const GL_DEBUG_SOURCE_SHADER_COMPILER_KHR: GLenum = 0x8248;
1127    #[doc = "`GL_DEBUG_SOURCE_THIRD_PARTY: GLenum = 0x8249`"]
1128    #[doc = "* **Group:** DebugSource"]
1129    pub const GL_DEBUG_SOURCE_THIRD_PARTY: GLenum = 0x8249;
1130    #[doc = "`GL_DEBUG_SOURCE_THIRD_PARTY_ARB: GLenum = 0x8249`"]
1131    pub const GL_DEBUG_SOURCE_THIRD_PARTY_ARB: GLenum = 0x8249;
1132    #[doc = "`GL_DEBUG_SOURCE_THIRD_PARTY_KHR: GLenum = 0x8249`"]
1133    pub const GL_DEBUG_SOURCE_THIRD_PARTY_KHR: GLenum = 0x8249;
1134    #[doc = "`GL_DEBUG_SOURCE_WINDOW_SYSTEM: GLenum = 0x8247`"]
1135    #[doc = "* **Group:** DebugSource"]
1136    pub const GL_DEBUG_SOURCE_WINDOW_SYSTEM: GLenum = 0x8247;
1137    #[doc = "`GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB: GLenum = 0x8247`"]
1138    pub const GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB: GLenum = 0x8247;
1139    #[doc = "`GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR: GLenum = 0x8247`"]
1140    pub const GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR: GLenum = 0x8247;
1141    #[doc = "`GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: GLenum = 0x824D`"]
1142    #[doc = "* **Group:** DebugType"]
1143    pub const GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: GLenum = 0x824D;
1144    #[doc = "`GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB: GLenum = 0x824D`"]
1145    pub const GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB: GLenum = 0x824D;
1146    #[doc = "`GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR: GLenum = 0x824D`"]
1147    pub const GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR: GLenum = 0x824D;
1148    #[doc = "`GL_DEBUG_TYPE_ERROR: GLenum = 0x824C`"]
1149    #[doc = "* **Group:** DebugType"]
1150    pub const GL_DEBUG_TYPE_ERROR: GLenum = 0x824C;
1151    #[doc = "`GL_DEBUG_TYPE_ERROR_ARB: GLenum = 0x824C`"]
1152    pub const GL_DEBUG_TYPE_ERROR_ARB: GLenum = 0x824C;
1153    #[doc = "`GL_DEBUG_TYPE_ERROR_KHR: GLenum = 0x824C`"]
1154    pub const GL_DEBUG_TYPE_ERROR_KHR: GLenum = 0x824C;
1155    #[doc = "`GL_DEBUG_TYPE_MARKER: GLenum = 0x8268`"]
1156    #[doc = "* **Group:** DebugType"]
1157    pub const GL_DEBUG_TYPE_MARKER: GLenum = 0x8268;
1158    #[doc = "`GL_DEBUG_TYPE_MARKER_KHR: GLenum = 0x8268`"]
1159    pub const GL_DEBUG_TYPE_MARKER_KHR: GLenum = 0x8268;
1160    #[doc = "`GL_DEBUG_TYPE_OTHER: GLenum = 0x8251`"]
1161    #[doc = "* **Group:** DebugType"]
1162    pub const GL_DEBUG_TYPE_OTHER: GLenum = 0x8251;
1163    #[doc = "`GL_DEBUG_TYPE_OTHER_ARB: GLenum = 0x8251`"]
1164    pub const GL_DEBUG_TYPE_OTHER_ARB: GLenum = 0x8251;
1165    #[doc = "`GL_DEBUG_TYPE_OTHER_KHR: GLenum = 0x8251`"]
1166    pub const GL_DEBUG_TYPE_OTHER_KHR: GLenum = 0x8251;
1167    #[doc = "`GL_DEBUG_TYPE_PERFORMANCE: GLenum = 0x8250`"]
1168    #[doc = "* **Group:** DebugType"]
1169    pub const GL_DEBUG_TYPE_PERFORMANCE: GLenum = 0x8250;
1170    #[doc = "`GL_DEBUG_TYPE_PERFORMANCE_ARB: GLenum = 0x8250`"]
1171    pub const GL_DEBUG_TYPE_PERFORMANCE_ARB: GLenum = 0x8250;
1172    #[doc = "`GL_DEBUG_TYPE_PERFORMANCE_KHR: GLenum = 0x8250`"]
1173    pub const GL_DEBUG_TYPE_PERFORMANCE_KHR: GLenum = 0x8250;
1174    #[doc = "`GL_DEBUG_TYPE_POP_GROUP: GLenum = 0x826A`"]
1175    #[doc = "* **Group:** DebugType"]
1176    pub const GL_DEBUG_TYPE_POP_GROUP: GLenum = 0x826A;
1177    #[doc = "`GL_DEBUG_TYPE_POP_GROUP_KHR: GLenum = 0x826A`"]
1178    pub const GL_DEBUG_TYPE_POP_GROUP_KHR: GLenum = 0x826A;
1179    #[doc = "`GL_DEBUG_TYPE_PORTABILITY: GLenum = 0x824F`"]
1180    #[doc = "* **Group:** DebugType"]
1181    pub const GL_DEBUG_TYPE_PORTABILITY: GLenum = 0x824F;
1182    #[doc = "`GL_DEBUG_TYPE_PORTABILITY_ARB: GLenum = 0x824F`"]
1183    pub const GL_DEBUG_TYPE_PORTABILITY_ARB: GLenum = 0x824F;
1184    #[doc = "`GL_DEBUG_TYPE_PORTABILITY_KHR: GLenum = 0x824F`"]
1185    pub const GL_DEBUG_TYPE_PORTABILITY_KHR: GLenum = 0x824F;
1186    #[doc = "`GL_DEBUG_TYPE_PUSH_GROUP: GLenum = 0x8269`"]
1187    #[doc = "* **Group:** DebugType"]
1188    pub const GL_DEBUG_TYPE_PUSH_GROUP: GLenum = 0x8269;
1189    #[doc = "`GL_DEBUG_TYPE_PUSH_GROUP_KHR: GLenum = 0x8269`"]
1190    pub const GL_DEBUG_TYPE_PUSH_GROUP_KHR: GLenum = 0x8269;
1191    #[doc = "`GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: GLenum = 0x824E`"]
1192    #[doc = "* **Group:** DebugType"]
1193    pub const GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: GLenum = 0x824E;
1194    #[doc = "`GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB: GLenum = 0x824E`"]
1195    pub const GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB: GLenum = 0x824E;
1196    #[doc = "`GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR: GLenum = 0x824E`"]
1197    pub const GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR: GLenum = 0x824E;
1198    #[doc = "`GL_DECR: GLenum = 0x1E03`"]
1199    #[doc = "* **Group:** StencilOp"]
1200    pub const GL_DECR: GLenum = 0x1E03;
1201    #[doc = "`GL_DECR_WRAP: GLenum = 0x8508`"]
1202    #[doc = "* **Group:** StencilOp"]
1203    pub const GL_DECR_WRAP: GLenum = 0x8508;
1204    #[doc = "`GL_DELETE_STATUS: GLenum = 0x8B80`"]
1205    #[doc = "* **Groups:** ProgramPropertyARB, ShaderParameterName"]
1206    pub const GL_DELETE_STATUS: GLenum = 0x8B80;
1207    #[doc = "`GL_DEPTH: GLenum = 0x1801`"]
1208    #[doc = "* **Groups:** Buffer, PixelCopyType, InvalidateFramebufferAttachment"]
1209    pub const GL_DEPTH: GLenum = 0x1801;
1210    #[doc = "`GL_DEPTH24_STENCIL8: GLenum = 0x88F0`"]
1211    #[doc = "* **Group:** InternalFormat"]
1212    pub const GL_DEPTH24_STENCIL8: GLenum = 0x88F0;
1213    #[doc = "`GL_DEPTH32F_STENCIL8: GLenum = 0x8CAD`"]
1214    #[doc = "* **Group:** InternalFormat"]
1215    pub const GL_DEPTH32F_STENCIL8: GLenum = 0x8CAD;
1216    #[doc = "`GL_DEPTH_ATTACHMENT: GLenum = 0x8D00`"]
1217    #[doc = "* **Groups:** InvalidateFramebufferAttachment, FramebufferAttachment"]
1218    pub const GL_DEPTH_ATTACHMENT: GLenum = 0x8D00;
1219    #[doc = "`GL_DEPTH_BITS: GLenum = 0x0D56`"]
1220    #[doc = "* **Group:** GetPName"]
1221    pub const GL_DEPTH_BITS: GLenum = 0x0D56;
1222    #[doc = "`GL_DEPTH_BUFFER_BIT: GLbitfield = 0x00000100`"]
1223    #[doc = "* **Groups:** ClearBufferMask, AttribMask"]
1224    pub const GL_DEPTH_BUFFER_BIT: GLbitfield = 0x00000100;
1225    #[doc = "`GL_DEPTH_CLAMP: GLenum = 0x864F`"]
1226    #[doc = "* **Group:** EnableCap"]
1227    pub const GL_DEPTH_CLAMP: GLenum = 0x864F;
1228    #[doc = "`GL_DEPTH_CLEAR_VALUE: GLenum = 0x0B73`"]
1229    #[doc = "* **Group:** GetPName"]
1230    pub const GL_DEPTH_CLEAR_VALUE: GLenum = 0x0B73;
1231    #[doc = "`GL_DEPTH_COMPONENT: GLenum = 0x1902`"]
1232    #[doc = "* **Groups:** InternalFormat, PixelFormat"]
1233    pub const GL_DEPTH_COMPONENT: GLenum = 0x1902;
1234    #[doc = "`GL_DEPTH_COMPONENT16: GLenum = 0x81A5`"]
1235    #[doc = "* **Group:** InternalFormat"]
1236    pub const GL_DEPTH_COMPONENT16: GLenum = 0x81A5;
1237    #[doc = "`GL_DEPTH_COMPONENT24: GLenum = 0x81A6`"]
1238    pub const GL_DEPTH_COMPONENT24: GLenum = 0x81A6;
1239    #[doc = "`GL_DEPTH_COMPONENT32: GLenum = 0x81A7`"]
1240    pub const GL_DEPTH_COMPONENT32: GLenum = 0x81A7;
1241    #[doc = "`GL_DEPTH_COMPONENT32F: GLenum = 0x8CAC`"]
1242    #[doc = "* **Group:** InternalFormat"]
1243    pub const GL_DEPTH_COMPONENT32F: GLenum = 0x8CAC;
1244    #[doc = "`GL_DEPTH_COMPONENTS: GLenum = 0x8284`"]
1245    pub const GL_DEPTH_COMPONENTS: GLenum = 0x8284;
1246    #[doc = "`GL_DEPTH_FUNC: GLenum = 0x0B74`"]
1247    #[doc = "* **Group:** GetPName"]
1248    pub const GL_DEPTH_FUNC: GLenum = 0x0B74;
1249    #[doc = "`GL_DEPTH_RANGE: GLenum = 0x0B70`"]
1250    #[doc = "* **Group:** GetPName"]
1251    pub const GL_DEPTH_RANGE: GLenum = 0x0B70;
1252    #[doc = "`GL_DEPTH_RENDERABLE: GLenum = 0x8287`"]
1253    #[doc = "* **Group:** InternalFormatPName"]
1254    pub const GL_DEPTH_RENDERABLE: GLenum = 0x8287;
1255    #[doc = "`GL_DEPTH_STENCIL: GLenum = 0x84F9`"]
1256    #[doc = "* **Groups:** InternalFormat, PixelFormat"]
1257    pub const GL_DEPTH_STENCIL: GLenum = 0x84F9;
1258    #[doc = "`GL_DEPTH_STENCIL_ATTACHMENT: GLenum = 0x821A`"]
1259    #[doc = "* **Group:** InvalidateFramebufferAttachment"]
1260    pub const GL_DEPTH_STENCIL_ATTACHMENT: GLenum = 0x821A;
1261    #[doc = "`GL_DEPTH_STENCIL_TEXTURE_MODE: GLenum = 0x90EA`"]
1262    #[doc = "* **Group:** TextureParameterName"]
1263    pub const GL_DEPTH_STENCIL_TEXTURE_MODE: GLenum = 0x90EA;
1264    #[doc = "`GL_DEPTH_TEST: GLenum = 0x0B71`"]
1265    #[doc = "* **Groups:** GetPName, EnableCap"]
1266    pub const GL_DEPTH_TEST: GLenum = 0x0B71;
1267    #[doc = "`GL_DEPTH_WRITEMASK: GLenum = 0x0B72`"]
1268    #[doc = "* **Group:** GetPName"]
1269    pub const GL_DEPTH_WRITEMASK: GLenum = 0x0B72;
1270    #[doc = "`GL_DIFFERENCE: GLenum = 0x929E`"]
1271    pub const GL_DIFFERENCE: GLenum = 0x929E;
1272    #[doc = "`GL_DISPATCH_INDIRECT_BUFFER: GLenum = 0x90EE`"]
1273    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
1274    pub const GL_DISPATCH_INDIRECT_BUFFER: GLenum = 0x90EE;
1275    #[doc = "`GL_DISPATCH_INDIRECT_BUFFER_BINDING: GLenum = 0x90EF`"]
1276    #[doc = "* **Group:** GetPName"]
1277    pub const GL_DISPATCH_INDIRECT_BUFFER_BINDING: GLenum = 0x90EF;
1278    #[doc = "`GL_DITHER: GLenum = 0x0BD0`"]
1279    #[doc = "* **Groups:** GetPName, EnableCap"]
1280    pub const GL_DITHER: GLenum = 0x0BD0;
1281    #[doc = "`GL_DONT_CARE: GLenum = 0x1100`"]
1282    #[doc = "* **Groups:** DebugSeverity, HintMode, DebugSource, DebugType"]
1283    pub const GL_DONT_CARE: GLenum = 0x1100;
1284    #[doc = "`GL_DOUBLE: GLenum = 0x140A`"]
1285    #[doc = "* **Groups:** VertexAttribLType, MapTypeNV, SecondaryColorPointerTypeIBM, WeightPointerTypeARB, TangentPointerTypeEXT, BinormalPointerTypeEXT, FogCoordinatePointerType, FogPointerTypeEXT, FogPointerTypeIBM, IndexPointerType, NormalPointerType, TexCoordPointerType, VertexPointerType, VertexAttribType, AttributeType, UniformType, VertexAttribPointerType, GlslTypeToken"]
1286    pub const GL_DOUBLE: GLenum = 0x140A;
1287    #[doc = "`GL_DOUBLEBUFFER: GLenum = 0x0C32`"]
1288    #[doc = "* **Groups:** GetFramebufferParameter, GetPName"]
1289    pub const GL_DOUBLEBUFFER: GLenum = 0x0C32;
1290    #[doc = "`GL_DOUBLE_MAT2: GLenum = 0x8F46`"]
1291    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1292    pub const GL_DOUBLE_MAT2: GLenum = 0x8F46;
1293    #[doc = "`GL_DOUBLE_MAT2x3: GLenum = 0x8F49`"]
1294    #[doc = "* **Groups:** UniformType, AttributeType"]
1295    pub const GL_DOUBLE_MAT2x3: GLenum = 0x8F49;
1296    #[doc = "`GL_DOUBLE_MAT2x4: GLenum = 0x8F4A`"]
1297    #[doc = "* **Groups:** UniformType, AttributeType"]
1298    pub const GL_DOUBLE_MAT2x4: GLenum = 0x8F4A;
1299    #[doc = "`GL_DOUBLE_MAT3: GLenum = 0x8F47`"]
1300    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1301    pub const GL_DOUBLE_MAT3: GLenum = 0x8F47;
1302    #[doc = "`GL_DOUBLE_MAT3x2: GLenum = 0x8F4B`"]
1303    #[doc = "* **Groups:** UniformType, AttributeType"]
1304    pub const GL_DOUBLE_MAT3x2: GLenum = 0x8F4B;
1305    #[doc = "`GL_DOUBLE_MAT3x4: GLenum = 0x8F4C`"]
1306    #[doc = "* **Groups:** UniformType, AttributeType"]
1307    pub const GL_DOUBLE_MAT3x4: GLenum = 0x8F4C;
1308    #[doc = "`GL_DOUBLE_MAT4: GLenum = 0x8F48`"]
1309    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1310    pub const GL_DOUBLE_MAT4: GLenum = 0x8F48;
1311    #[doc = "`GL_DOUBLE_MAT4x2: GLenum = 0x8F4D`"]
1312    #[doc = "* **Groups:** UniformType, AttributeType"]
1313    pub const GL_DOUBLE_MAT4x2: GLenum = 0x8F4D;
1314    #[doc = "`GL_DOUBLE_MAT4x3: GLenum = 0x8F4E`"]
1315    #[doc = "* **Groups:** UniformType, AttributeType"]
1316    pub const GL_DOUBLE_MAT4x3: GLenum = 0x8F4E;
1317    #[doc = "`GL_DOUBLE_VEC2: GLenum = 0x8FFC`"]
1318    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1319    pub const GL_DOUBLE_VEC2: GLenum = 0x8FFC;
1320    #[doc = "`GL_DOUBLE_VEC3: GLenum = 0x8FFD`"]
1321    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1322    pub const GL_DOUBLE_VEC3: GLenum = 0x8FFD;
1323    #[doc = "`GL_DOUBLE_VEC4: GLenum = 0x8FFE`"]
1324    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1325    pub const GL_DOUBLE_VEC4: GLenum = 0x8FFE;
1326    #[doc = "`GL_DRAW_BUFFER: GLenum = 0x0C01`"]
1327    #[doc = "* **Group:** GetPName"]
1328    pub const GL_DRAW_BUFFER: GLenum = 0x0C01;
1329    #[doc = "`GL_DRAW_BUFFER0: GLenum = 0x8825`"]
1330    pub const GL_DRAW_BUFFER0: GLenum = 0x8825;
1331    #[doc = "`GL_DRAW_BUFFER1: GLenum = 0x8826`"]
1332    pub const GL_DRAW_BUFFER1: GLenum = 0x8826;
1333    #[doc = "`GL_DRAW_BUFFER10: GLenum = 0x882F`"]
1334    pub const GL_DRAW_BUFFER10: GLenum = 0x882F;
1335    #[doc = "`GL_DRAW_BUFFER11: GLenum = 0x8830`"]
1336    pub const GL_DRAW_BUFFER11: GLenum = 0x8830;
1337    #[doc = "`GL_DRAW_BUFFER12: GLenum = 0x8831`"]
1338    pub const GL_DRAW_BUFFER12: GLenum = 0x8831;
1339    #[doc = "`GL_DRAW_BUFFER13: GLenum = 0x8832`"]
1340    pub const GL_DRAW_BUFFER13: GLenum = 0x8832;
1341    #[doc = "`GL_DRAW_BUFFER14: GLenum = 0x8833`"]
1342    pub const GL_DRAW_BUFFER14: GLenum = 0x8833;
1343    #[doc = "`GL_DRAW_BUFFER15: GLenum = 0x8834`"]
1344    pub const GL_DRAW_BUFFER15: GLenum = 0x8834;
1345    #[doc = "`GL_DRAW_BUFFER2: GLenum = 0x8827`"]
1346    pub const GL_DRAW_BUFFER2: GLenum = 0x8827;
1347    #[doc = "`GL_DRAW_BUFFER3: GLenum = 0x8828`"]
1348    pub const GL_DRAW_BUFFER3: GLenum = 0x8828;
1349    #[doc = "`GL_DRAW_BUFFER4: GLenum = 0x8829`"]
1350    pub const GL_DRAW_BUFFER4: GLenum = 0x8829;
1351    #[doc = "`GL_DRAW_BUFFER5: GLenum = 0x882A`"]
1352    pub const GL_DRAW_BUFFER5: GLenum = 0x882A;
1353    #[doc = "`GL_DRAW_BUFFER6: GLenum = 0x882B`"]
1354    pub const GL_DRAW_BUFFER6: GLenum = 0x882B;
1355    #[doc = "`GL_DRAW_BUFFER7: GLenum = 0x882C`"]
1356    pub const GL_DRAW_BUFFER7: GLenum = 0x882C;
1357    #[doc = "`GL_DRAW_BUFFER8: GLenum = 0x882D`"]
1358    pub const GL_DRAW_BUFFER8: GLenum = 0x882D;
1359    #[doc = "`GL_DRAW_BUFFER9: GLenum = 0x882E`"]
1360    pub const GL_DRAW_BUFFER9: GLenum = 0x882E;
1361    #[doc = "`GL_DRAW_FRAMEBUFFER: GLenum = 0x8CA9`"]
1362    #[doc = "* **Groups:** CheckFramebufferStatusTarget, FramebufferTarget"]
1363    pub const GL_DRAW_FRAMEBUFFER: GLenum = 0x8CA9;
1364    #[doc = "`GL_DRAW_FRAMEBUFFER_BINDING: GLenum = 0x8CA6`"]
1365    #[doc = "* **Group:** GetPName"]
1366    pub const GL_DRAW_FRAMEBUFFER_BINDING: GLenum = 0x8CA6;
1367    #[doc = "`GL_DRAW_INDIRECT_BUFFER: GLenum = 0x8F3F`"]
1368    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
1369    pub const GL_DRAW_INDIRECT_BUFFER: GLenum = 0x8F3F;
1370    #[doc = "`GL_DRAW_INDIRECT_BUFFER_BINDING: GLenum = 0x8F43`"]
1371    pub const GL_DRAW_INDIRECT_BUFFER_BINDING: GLenum = 0x8F43;
1372    #[doc = "`GL_DST_ALPHA: GLenum = 0x0304`"]
1373    #[doc = "* **Group:** BlendingFactor"]
1374    pub const GL_DST_ALPHA: GLenum = 0x0304;
1375    #[doc = "`GL_DST_COLOR: GLenum = 0x0306`"]
1376    #[doc = "* **Group:** BlendingFactor"]
1377    pub const GL_DST_COLOR: GLenum = 0x0306;
1378    #[doc = "`GL_DYNAMIC_COPY: GLenum = 0x88EA`"]
1379    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
1380    pub const GL_DYNAMIC_COPY: GLenum = 0x88EA;
1381    #[doc = "`GL_DYNAMIC_DRAW: GLenum = 0x88E8`"]
1382    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
1383    pub const GL_DYNAMIC_DRAW: GLenum = 0x88E8;
1384    #[doc = "`GL_DYNAMIC_READ: GLenum = 0x88E9`"]
1385    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
1386    pub const GL_DYNAMIC_READ: GLenum = 0x88E9;
1387    #[doc = "`GL_DYNAMIC_STORAGE_BIT: GLbitfield = 0x0100`"]
1388    #[doc = "* **Group:** BufferStorageMask"]
1389    pub const GL_DYNAMIC_STORAGE_BIT: GLbitfield = 0x0100;
1390    #[doc = "`GL_DYNAMIC_STORAGE_BIT_EXT: GLbitfield = 0x0100`"]
1391    #[doc = "* **Group:** BufferStorageMask"]
1392    pub const GL_DYNAMIC_STORAGE_BIT_EXT: GLbitfield = 0x0100;
1393    #[doc = "`GL_ELEMENT_ARRAY_BARRIER_BIT: GLbitfield = 0x00000002`"]
1394    #[doc = "* **Group:** MemoryBarrierMask"]
1395    pub const GL_ELEMENT_ARRAY_BARRIER_BIT: GLbitfield = 0x00000002;
1396    #[doc = "`GL_ELEMENT_ARRAY_BUFFER: GLenum = 0x8893`"]
1397    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
1398    pub const GL_ELEMENT_ARRAY_BUFFER: GLenum = 0x8893;
1399    #[doc = "`GL_ELEMENT_ARRAY_BUFFER_BINDING: GLenum = 0x8895`"]
1400    #[doc = "* **Group:** GetPName"]
1401    pub const GL_ELEMENT_ARRAY_BUFFER_BINDING: GLenum = 0x8895;
1402    #[doc = "`GL_EQUAL: GLenum = 0x0202`"]
1403    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
1404    pub const GL_EQUAL: GLenum = 0x0202;
1405    #[doc = "`GL_EQUIV: GLenum = 0x1509`"]
1406    #[doc = "* **Group:** LogicOp"]
1407    pub const GL_EQUIV: GLenum = 0x1509;
1408    #[doc = "`GL_EXCLUSION: GLenum = 0x92A0`"]
1409    pub const GL_EXCLUSION: GLenum = 0x92A0;
1410    #[doc = "`GL_EXTENSIONS: GLenum = 0x1F03`"]
1411    #[doc = "* **Group:** StringName"]
1412    pub const GL_EXTENSIONS: GLenum = 0x1F03;
1413    #[doc = "`GL_FALSE: GLenum = 0`"]
1414    #[doc = "* **Groups:** Boolean, VertexShaderWriteMaskEXT, ClampColorModeARB"]
1415    pub const GL_FALSE: GLenum = 0;
1416    #[doc = "`GL_FASTEST: GLenum = 0x1101`"]
1417    #[doc = "* **Group:** HintMode"]
1418    pub const GL_FASTEST: GLenum = 0x1101;
1419    #[doc = "`GL_FILL: GLenum = 0x1B02`"]
1420    #[doc = "* **Groups:** PolygonMode, MeshMode2"]
1421    pub const GL_FILL: GLenum = 0x1B02;
1422    #[doc = "`GL_FILTER: GLenum = 0x829A`"]
1423    #[doc = "* **Group:** InternalFormatPName"]
1424    pub const GL_FILTER: GLenum = 0x829A;
1425    #[doc = "`GL_FIRST_VERTEX_CONVENTION: GLenum = 0x8E4D`"]
1426    #[doc = "* **Group:** VertexProvokingMode"]
1427    pub const GL_FIRST_VERTEX_CONVENTION: GLenum = 0x8E4D;
1428    #[doc = "`GL_FIXED: GLenum = 0x140C`"]
1429    #[doc = "* **Groups:** VertexAttribPointerType, VertexAttribType"]
1430    pub const GL_FIXED: GLenum = 0x140C;
1431    #[doc = "`GL_FIXED_ONLY: GLenum = 0x891D`"]
1432    #[doc = "* **Group:** ClampColorModeARB"]
1433    pub const GL_FIXED_ONLY: GLenum = 0x891D;
1434    #[doc = "`GL_FLOAT: GLenum = 0x1406`"]
1435    #[doc = "* **Groups:** GlslTypeToken, MapTypeNV, SecondaryColorPointerTypeIBM, WeightPointerTypeARB, VertexWeightPointerTypeEXT, TangentPointerTypeEXT, BinormalPointerTypeEXT, FogCoordinatePointerType, FogPointerTypeEXT, FogPointerTypeIBM, IndexPointerType, ListNameType, NormalPointerType, PixelType, TexCoordPointerType, VertexPointerType, VertexAttribType, AttributeType, UniformType, VertexAttribPointerType"]
1436    pub const GL_FLOAT: GLenum = 0x1406;
1437    #[doc = "`GL_FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum = 0x8DAD`"]
1438    pub const GL_FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum = 0x8DAD;
1439    #[doc = "`GL_FLOAT_MAT2: GLenum = 0x8B5A`"]
1440    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1441    pub const GL_FLOAT_MAT2: GLenum = 0x8B5A;
1442    #[doc = "`GL_FLOAT_MAT2x3: GLenum = 0x8B65`"]
1443    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1444    pub const GL_FLOAT_MAT2x3: GLenum = 0x8B65;
1445    #[doc = "`GL_FLOAT_MAT2x4: GLenum = 0x8B66`"]
1446    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1447    pub const GL_FLOAT_MAT2x4: GLenum = 0x8B66;
1448    #[doc = "`GL_FLOAT_MAT3: GLenum = 0x8B5B`"]
1449    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1450    pub const GL_FLOAT_MAT3: GLenum = 0x8B5B;
1451    #[doc = "`GL_FLOAT_MAT3x2: GLenum = 0x8B67`"]
1452    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1453    pub const GL_FLOAT_MAT3x2: GLenum = 0x8B67;
1454    #[doc = "`GL_FLOAT_MAT3x4: GLenum = 0x8B68`"]
1455    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1456    pub const GL_FLOAT_MAT3x4: GLenum = 0x8B68;
1457    #[doc = "`GL_FLOAT_MAT4: GLenum = 0x8B5C`"]
1458    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1459    pub const GL_FLOAT_MAT4: GLenum = 0x8B5C;
1460    #[doc = "`GL_FLOAT_MAT4x2: GLenum = 0x8B69`"]
1461    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1462    pub const GL_FLOAT_MAT4x2: GLenum = 0x8B69;
1463    #[doc = "`GL_FLOAT_MAT4x3: GLenum = 0x8B6A`"]
1464    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1465    pub const GL_FLOAT_MAT4x3: GLenum = 0x8B6A;
1466    #[doc = "`GL_FLOAT_VEC2: GLenum = 0x8B50`"]
1467    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1468    pub const GL_FLOAT_VEC2: GLenum = 0x8B50;
1469    #[doc = "`GL_FLOAT_VEC3: GLenum = 0x8B51`"]
1470    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1471    pub const GL_FLOAT_VEC3: GLenum = 0x8B51;
1472    #[doc = "`GL_FLOAT_VEC4: GLenum = 0x8B52`"]
1473    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1474    pub const GL_FLOAT_VEC4: GLenum = 0x8B52;
1475    #[doc = "`GL_FRACTIONAL_EVEN: GLenum = 0x8E7C`"]
1476    pub const GL_FRACTIONAL_EVEN: GLenum = 0x8E7C;
1477    #[doc = "`GL_FRACTIONAL_ODD: GLenum = 0x8E7B`"]
1478    pub const GL_FRACTIONAL_ODD: GLenum = 0x8E7B;
1479    #[doc = "`GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: GLenum = 0x8E5D`"]
1480    pub const GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: GLenum = 0x8E5D;
1481    #[doc = "`GL_FRAGMENT_SHADER: GLenum = 0x8B30`"]
1482    #[doc = "* **Groups:** PipelineParameterName, ShaderType"]
1483    pub const GL_FRAGMENT_SHADER: GLenum = 0x8B30;
1484    #[doc = "`GL_FRAGMENT_SHADER_BIT: GLbitfield = 0x00000002`"]
1485    #[doc = "* **Group:** UseProgramStageMask"]
1486    pub const GL_FRAGMENT_SHADER_BIT: GLbitfield = 0x00000002;
1487    #[doc = "`GL_FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum = 0x8B8B`"]
1488    #[doc = "* **Groups:** HintTarget, GetPName"]
1489    pub const GL_FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum = 0x8B8B;
1490    #[doc = "`GL_FRAGMENT_SHADER_INVOCATIONS: GLenum = 0x82F4`"]
1491    pub const GL_FRAGMENT_SHADER_INVOCATIONS: GLenum = 0x82F4;
1492    #[doc = "`GL_FRAGMENT_SUBROUTINE: GLenum = 0x92EC`"]
1493    #[doc = "* **Group:** ProgramInterface"]
1494    pub const GL_FRAGMENT_SUBROUTINE: GLenum = 0x92EC;
1495    #[doc = "`GL_FRAGMENT_SUBROUTINE_UNIFORM: GLenum = 0x92F2`"]
1496    #[doc = "* **Group:** ProgramInterface"]
1497    pub const GL_FRAGMENT_SUBROUTINE_UNIFORM: GLenum = 0x92F2;
1498    #[doc = "`GL_FRAGMENT_TEXTURE: GLenum = 0x829F`"]
1499    #[doc = "* **Group:** InternalFormatPName"]
1500    pub const GL_FRAGMENT_TEXTURE: GLenum = 0x829F;
1501    #[doc = "`GL_FRAMEBUFFER: GLenum = 0x8D40`"]
1502    #[doc = "* **Groups:** ObjectIdentifier, FramebufferTarget, CheckFramebufferStatusTarget"]
1503    pub const GL_FRAMEBUFFER: GLenum = 0x8D40;
1504    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum = 0x8215`"]
1505    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1506    pub const GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum = 0x8215;
1507    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum = 0x8214`"]
1508    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1509    pub const GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum = 0x8214;
1510    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum = 0x8210`"]
1511    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1512    pub const GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum = 0x8210;
1513    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum = 0x8211`"]
1514    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1515    pub const GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum = 0x8211;
1516    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum = 0x8216`"]
1517    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1518    pub const GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum = 0x8216;
1519    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum = 0x8213`"]
1520    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1521    pub const GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum = 0x8213;
1522    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_LAYERED: GLenum = 0x8DA7`"]
1523    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1524    pub const GL_FRAMEBUFFER_ATTACHMENT_LAYERED: GLenum = 0x8DA7;
1525    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum = 0x8CD1`"]
1526    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1527    pub const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum = 0x8CD1;
1528    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum = 0x8CD0`"]
1529    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1530    pub const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum = 0x8CD0;
1531    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum = 0x8212`"]
1532    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1533    pub const GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum = 0x8212;
1534    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum = 0x8217`"]
1535    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1536    pub const GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum = 0x8217;
1537    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum = 0x8CD3`"]
1538    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1539    pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum = 0x8CD3;
1540    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum = 0x8CD4`"]
1541    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1542    pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum = 0x8CD4;
1543    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum = 0x8CD2`"]
1544    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1545    pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum = 0x8CD2;
1546    #[doc = "`GL_FRAMEBUFFER_BARRIER_BIT: GLbitfield = 0x00000400`"]
1547    #[doc = "* **Group:** MemoryBarrierMask"]
1548    pub const GL_FRAMEBUFFER_BARRIER_BIT: GLbitfield = 0x00000400;
1549    #[doc = "`GL_FRAMEBUFFER_BINDING: GLenum = 0x8CA6`"]
1550    pub const GL_FRAMEBUFFER_BINDING: GLenum = 0x8CA6;
1551    #[doc = "`GL_FRAMEBUFFER_BLEND: GLenum = 0x828B`"]
1552    #[doc = "* **Group:** InternalFormatPName"]
1553    pub const GL_FRAMEBUFFER_BLEND: GLenum = 0x828B;
1554    #[doc = "`GL_FRAMEBUFFER_COMPLETE: GLenum = 0x8CD5`"]
1555    #[doc = "* **Group:** FramebufferStatus"]
1556    pub const GL_FRAMEBUFFER_COMPLETE: GLenum = 0x8CD5;
1557    #[doc = "`GL_FRAMEBUFFER_DEFAULT: GLenum = 0x8218`"]
1558    pub const GL_FRAMEBUFFER_DEFAULT: GLenum = 0x8218;
1559    #[doc = "`GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9314`"]
1560    #[doc = "* **Groups:** GetFramebufferParameter, FramebufferParameterName"]
1561    pub const GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9314;
1562    #[doc = "`GL_FRAMEBUFFER_DEFAULT_HEIGHT: GLenum = 0x9311`"]
1563    #[doc = "* **Groups:** GetFramebufferParameter, FramebufferParameterName"]
1564    pub const GL_FRAMEBUFFER_DEFAULT_HEIGHT: GLenum = 0x9311;
1565    #[doc = "`GL_FRAMEBUFFER_DEFAULT_LAYERS: GLenum = 0x9312`"]
1566    #[doc = "* **Groups:** GetFramebufferParameter, FramebufferParameterName"]
1567    pub const GL_FRAMEBUFFER_DEFAULT_LAYERS: GLenum = 0x9312;
1568    #[doc = "`GL_FRAMEBUFFER_DEFAULT_SAMPLES: GLenum = 0x9313`"]
1569    #[doc = "* **Groups:** GetFramebufferParameter, FramebufferParameterName"]
1570    pub const GL_FRAMEBUFFER_DEFAULT_SAMPLES: GLenum = 0x9313;
1571    #[doc = "`GL_FRAMEBUFFER_DEFAULT_WIDTH: GLenum = 0x9310`"]
1572    #[doc = "* **Groups:** GetFramebufferParameter, FramebufferParameterName"]
1573    pub const GL_FRAMEBUFFER_DEFAULT_WIDTH: GLenum = 0x9310;
1574    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum = 0x8CD6`"]
1575    #[doc = "* **Group:** FramebufferStatus"]
1576    pub const GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum = 0x8CD6;
1577    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum = 0x8CD9`"]
1578    pub const GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum = 0x8CD9;
1579    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: GLenum = 0x8CDB`"]
1580    #[doc = "* **Group:** FramebufferStatus"]
1581    pub const GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: GLenum = 0x8CDB;
1582    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: GLenum = 0x8DA8`"]
1583    #[doc = "* **Group:** FramebufferStatus"]
1584    pub const GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: GLenum = 0x8DA8;
1585    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum = 0x8CD7`"]
1586    #[doc = "* **Group:** FramebufferStatus"]
1587    pub const GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum = 0x8CD7;
1588    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum = 0x8D56`"]
1589    #[doc = "* **Group:** FramebufferStatus"]
1590    pub const GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum = 0x8D56;
1591    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: GLenum = 0x8CDC`"]
1592    #[doc = "* **Group:** FramebufferStatus"]
1593    pub const GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: GLenum = 0x8CDC;
1594    #[doc = "`GL_FRAMEBUFFER_RENDERABLE: GLenum = 0x8289`"]
1595    #[doc = "* **Group:** InternalFormatPName"]
1596    pub const GL_FRAMEBUFFER_RENDERABLE: GLenum = 0x8289;
1597    #[doc = "`GL_FRAMEBUFFER_RENDERABLE_LAYERED: GLenum = 0x828A`"]
1598    #[doc = "* **Group:** InternalFormatPName"]
1599    pub const GL_FRAMEBUFFER_RENDERABLE_LAYERED: GLenum = 0x828A;
1600    #[doc = "`GL_FRAMEBUFFER_SRGB: GLenum = 0x8DB9`"]
1601    #[doc = "* **Group:** EnableCap"]
1602    pub const GL_FRAMEBUFFER_SRGB: GLenum = 0x8DB9;
1603    #[doc = "`GL_FRAMEBUFFER_UNDEFINED: GLenum = 0x8219`"]
1604    #[doc = "* **Group:** FramebufferStatus"]
1605    pub const GL_FRAMEBUFFER_UNDEFINED: GLenum = 0x8219;
1606    #[doc = "`GL_FRAMEBUFFER_UNSUPPORTED: GLenum = 0x8CDD`"]
1607    #[doc = "* **Group:** FramebufferStatus"]
1608    pub const GL_FRAMEBUFFER_UNSUPPORTED: GLenum = 0x8CDD;
1609    #[doc = "`GL_FRONT: GLenum = 0x0404`"]
1610    #[doc = "* **Groups:** ColorBuffer, ColorMaterialFace, CullFaceMode, DrawBufferMode, ReadBufferMode, StencilFaceDirection, MaterialFace"]
1611    pub const GL_FRONT: GLenum = 0x0404;
1612    #[doc = "`GL_FRONT_AND_BACK: GLenum = 0x0408`"]
1613    #[doc = "* **Groups:** ColorBuffer, ColorMaterialFace, CullFaceMode, DrawBufferMode, StencilFaceDirection, MaterialFace"]
1614    pub const GL_FRONT_AND_BACK: GLenum = 0x0408;
1615    #[doc = "`GL_FRONT_FACE: GLenum = 0x0B46`"]
1616    #[doc = "* **Group:** GetPName"]
1617    pub const GL_FRONT_FACE: GLenum = 0x0B46;
1618    #[doc = "`GL_FRONT_LEFT: GLenum = 0x0400`"]
1619    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
1620    pub const GL_FRONT_LEFT: GLenum = 0x0400;
1621    #[doc = "`GL_FRONT_RIGHT: GLenum = 0x0401`"]
1622    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
1623    pub const GL_FRONT_RIGHT: GLenum = 0x0401;
1624    #[doc = "`GL_FULL_SUPPORT: GLenum = 0x82B7`"]
1625    pub const GL_FULL_SUPPORT: GLenum = 0x82B7;
1626    #[doc = "`GL_FUNC_ADD: GLenum = 0x8006`"]
1627    #[doc = "* **Group:** BlendEquationModeEXT"]
1628    pub const GL_FUNC_ADD: GLenum = 0x8006;
1629    #[doc = "`GL_FUNC_REVERSE_SUBTRACT: GLenum = 0x800B`"]
1630    #[doc = "* **Group:** BlendEquationModeEXT"]
1631    pub const GL_FUNC_REVERSE_SUBTRACT: GLenum = 0x800B;
1632    #[doc = "`GL_FUNC_SUBTRACT: GLenum = 0x800A`"]
1633    #[doc = "* **Group:** BlendEquationModeEXT"]
1634    pub const GL_FUNC_SUBTRACT: GLenum = 0x800A;
1635    #[doc = "`GL_GENERATE_MIPMAP_HINT: GLenum = 0x8192`"]
1636    #[doc = "* **Group:** HintTarget"]
1637    pub const GL_GENERATE_MIPMAP_HINT: GLenum = 0x8192;
1638    #[doc = "`GL_GEOMETRY_INPUT_TYPE: GLenum = 0x8917`"]
1639    #[doc = "* **Group:** ProgramPropertyARB"]
1640    pub const GL_GEOMETRY_INPUT_TYPE: GLenum = 0x8917;
1641    #[doc = "`GL_GEOMETRY_OUTPUT_TYPE: GLenum = 0x8918`"]
1642    #[doc = "* **Group:** ProgramPropertyARB"]
1643    pub const GL_GEOMETRY_OUTPUT_TYPE: GLenum = 0x8918;
1644    #[doc = "`GL_GEOMETRY_SHADER: GLenum = 0x8DD9`"]
1645    #[doc = "* **Groups:** PipelineParameterName, ShaderType"]
1646    pub const GL_GEOMETRY_SHADER: GLenum = 0x8DD9;
1647    #[doc = "`GL_GEOMETRY_SHADER_BIT: GLbitfield = 0x00000004`"]
1648    #[doc = "* **Group:** UseProgramStageMask"]
1649    pub const GL_GEOMETRY_SHADER_BIT: GLbitfield = 0x00000004;
1650    #[doc = "`GL_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x887F`"]
1651    pub const GL_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x887F;
1652    #[doc = "`GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED: GLenum = 0x82F3`"]
1653    pub const GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED: GLenum = 0x82F3;
1654    #[doc = "`GL_GEOMETRY_SUBROUTINE: GLenum = 0x92EB`"]
1655    #[doc = "* **Group:** ProgramInterface"]
1656    pub const GL_GEOMETRY_SUBROUTINE: GLenum = 0x92EB;
1657    #[doc = "`GL_GEOMETRY_SUBROUTINE_UNIFORM: GLenum = 0x92F1`"]
1658    #[doc = "* **Group:** ProgramInterface"]
1659    pub const GL_GEOMETRY_SUBROUTINE_UNIFORM: GLenum = 0x92F1;
1660    #[doc = "`GL_GEOMETRY_TEXTURE: GLenum = 0x829E`"]
1661    #[doc = "* **Group:** InternalFormatPName"]
1662    pub const GL_GEOMETRY_TEXTURE: GLenum = 0x829E;
1663    #[doc = "`GL_GEOMETRY_VERTICES_OUT: GLenum = 0x8916`"]
1664    #[doc = "* **Group:** ProgramPropertyARB"]
1665    pub const GL_GEOMETRY_VERTICES_OUT: GLenum = 0x8916;
1666    #[doc = "`GL_GEQUAL: GLenum = 0x0206`"]
1667    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
1668    pub const GL_GEQUAL: GLenum = 0x0206;
1669    #[doc = "`GL_GET_TEXTURE_IMAGE_FORMAT: GLenum = 0x8291`"]
1670    #[doc = "* **Group:** InternalFormatPName"]
1671    pub const GL_GET_TEXTURE_IMAGE_FORMAT: GLenum = 0x8291;
1672    #[doc = "`GL_GET_TEXTURE_IMAGE_TYPE: GLenum = 0x8292`"]
1673    #[doc = "* **Group:** InternalFormatPName"]
1674    pub const GL_GET_TEXTURE_IMAGE_TYPE: GLenum = 0x8292;
1675    #[doc = "`GL_GPU_DISJOINT_EXT: GLenum = 0x8FBB`"]
1676    pub const GL_GPU_DISJOINT_EXT: GLenum = 0x8FBB;
1677    #[doc = "`GL_GREATER: GLenum = 0x0204`"]
1678    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
1679    pub const GL_GREATER: GLenum = 0x0204;
1680    #[doc = "`GL_GREEN: GLenum = 0x1904`"]
1681    #[doc = "* **Groups:** TextureSwizzle, PixelFormat"]
1682    pub const GL_GREEN: GLenum = 0x1904;
1683    #[doc = "`GL_GREEN_BITS: GLenum = 0x0D53`"]
1684    #[doc = "* **Group:** GetPName"]
1685    pub const GL_GREEN_BITS: GLenum = 0x0D53;
1686    #[doc = "`GL_GREEN_INTEGER: GLenum = 0x8D95`"]
1687    #[doc = "* **Group:** PixelFormat"]
1688    pub const GL_GREEN_INTEGER: GLenum = 0x8D95;
1689    #[doc = "`GL_GUILTY_CONTEXT_RESET: GLenum = 0x8253`"]
1690    #[doc = "* **Group:** GraphicsResetStatus"]
1691    pub const GL_GUILTY_CONTEXT_RESET: GLenum = 0x8253;
1692    #[doc = "`GL_HALF_FLOAT: GLenum = 0x140B`"]
1693    #[doc = "* **Groups:** VertexAttribPointerType, VertexAttribType"]
1694    pub const GL_HALF_FLOAT: GLenum = 0x140B;
1695    #[doc = "`GL_HARDLIGHT: GLenum = 0x929B`"]
1696    pub const GL_HARDLIGHT: GLenum = 0x929B;
1697    #[doc = "`GL_HIGH_FLOAT: GLenum = 0x8DF2`"]
1698    #[doc = "* **Group:** PrecisionType"]
1699    pub const GL_HIGH_FLOAT: GLenum = 0x8DF2;
1700    #[doc = "`GL_HIGH_INT: GLenum = 0x8DF5`"]
1701    #[doc = "* **Group:** PrecisionType"]
1702    pub const GL_HIGH_INT: GLenum = 0x8DF5;
1703    #[doc = "`GL_HSL_COLOR: GLenum = 0x92AF`"]
1704    pub const GL_HSL_COLOR: GLenum = 0x92AF;
1705    #[doc = "`GL_HSL_HUE: GLenum = 0x92AD`"]
1706    pub const GL_HSL_HUE: GLenum = 0x92AD;
1707    #[doc = "`GL_HSL_LUMINOSITY: GLenum = 0x92B0`"]
1708    pub const GL_HSL_LUMINOSITY: GLenum = 0x92B0;
1709    #[doc = "`GL_HSL_SATURATION: GLenum = 0x92AE`"]
1710    pub const GL_HSL_SATURATION: GLenum = 0x92AE;
1711    #[doc = "`GL_IMAGE_1D: GLenum = 0x904C`"]
1712    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1713    pub const GL_IMAGE_1D: GLenum = 0x904C;
1714    #[doc = "`GL_IMAGE_1D_ARRAY: GLenum = 0x9052`"]
1715    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1716    pub const GL_IMAGE_1D_ARRAY: GLenum = 0x9052;
1717    #[doc = "`GL_IMAGE_2D: GLenum = 0x904D`"]
1718    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1719    pub const GL_IMAGE_2D: GLenum = 0x904D;
1720    #[doc = "`GL_IMAGE_2D_ARRAY: GLenum = 0x9053`"]
1721    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1722    pub const GL_IMAGE_2D_ARRAY: GLenum = 0x9053;
1723    #[doc = "`GL_IMAGE_2D_MULTISAMPLE: GLenum = 0x9055`"]
1724    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1725    pub const GL_IMAGE_2D_MULTISAMPLE: GLenum = 0x9055;
1726    #[doc = "`GL_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9056`"]
1727    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1728    pub const GL_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9056;
1729    #[doc = "`GL_IMAGE_2D_RECT: GLenum = 0x904F`"]
1730    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1731    pub const GL_IMAGE_2D_RECT: GLenum = 0x904F;
1732    #[doc = "`GL_IMAGE_3D: GLenum = 0x904E`"]
1733    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1734    pub const GL_IMAGE_3D: GLenum = 0x904E;
1735    #[doc = "`GL_IMAGE_BINDING_ACCESS: GLenum = 0x8F3E`"]
1736    pub const GL_IMAGE_BINDING_ACCESS: GLenum = 0x8F3E;
1737    #[doc = "`GL_IMAGE_BINDING_FORMAT: GLenum = 0x906E`"]
1738    pub const GL_IMAGE_BINDING_FORMAT: GLenum = 0x906E;
1739    #[doc = "`GL_IMAGE_BINDING_LAYER: GLenum = 0x8F3D`"]
1740    pub const GL_IMAGE_BINDING_LAYER: GLenum = 0x8F3D;
1741    #[doc = "`GL_IMAGE_BINDING_LAYERED: GLenum = 0x8F3C`"]
1742    pub const GL_IMAGE_BINDING_LAYERED: GLenum = 0x8F3C;
1743    #[doc = "`GL_IMAGE_BINDING_LEVEL: GLenum = 0x8F3B`"]
1744    pub const GL_IMAGE_BINDING_LEVEL: GLenum = 0x8F3B;
1745    #[doc = "`GL_IMAGE_BINDING_NAME: GLenum = 0x8F3A`"]
1746    pub const GL_IMAGE_BINDING_NAME: GLenum = 0x8F3A;
1747    #[doc = "`GL_IMAGE_BUFFER: GLenum = 0x9051`"]
1748    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1749    pub const GL_IMAGE_BUFFER: GLenum = 0x9051;
1750    #[doc = "`GL_IMAGE_CLASS_10_10_10_2: GLenum = 0x82C3`"]
1751    pub const GL_IMAGE_CLASS_10_10_10_2: GLenum = 0x82C3;
1752    #[doc = "`GL_IMAGE_CLASS_11_11_10: GLenum = 0x82C2`"]
1753    pub const GL_IMAGE_CLASS_11_11_10: GLenum = 0x82C2;
1754    #[doc = "`GL_IMAGE_CLASS_1_X_16: GLenum = 0x82BE`"]
1755    pub const GL_IMAGE_CLASS_1_X_16: GLenum = 0x82BE;
1756    #[doc = "`GL_IMAGE_CLASS_1_X_32: GLenum = 0x82BB`"]
1757    pub const GL_IMAGE_CLASS_1_X_32: GLenum = 0x82BB;
1758    #[doc = "`GL_IMAGE_CLASS_1_X_8: GLenum = 0x82C1`"]
1759    pub const GL_IMAGE_CLASS_1_X_8: GLenum = 0x82C1;
1760    #[doc = "`GL_IMAGE_CLASS_2_X_16: GLenum = 0x82BD`"]
1761    pub const GL_IMAGE_CLASS_2_X_16: GLenum = 0x82BD;
1762    #[doc = "`GL_IMAGE_CLASS_2_X_32: GLenum = 0x82BA`"]
1763    pub const GL_IMAGE_CLASS_2_X_32: GLenum = 0x82BA;
1764    #[doc = "`GL_IMAGE_CLASS_2_X_8: GLenum = 0x82C0`"]
1765    pub const GL_IMAGE_CLASS_2_X_8: GLenum = 0x82C0;
1766    #[doc = "`GL_IMAGE_CLASS_4_X_16: GLenum = 0x82BC`"]
1767    pub const GL_IMAGE_CLASS_4_X_16: GLenum = 0x82BC;
1768    #[doc = "`GL_IMAGE_CLASS_4_X_32: GLenum = 0x82B9`"]
1769    pub const GL_IMAGE_CLASS_4_X_32: GLenum = 0x82B9;
1770    #[doc = "`GL_IMAGE_CLASS_4_X_8: GLenum = 0x82BF`"]
1771    pub const GL_IMAGE_CLASS_4_X_8: GLenum = 0x82BF;
1772    #[doc = "`GL_IMAGE_COMPATIBILITY_CLASS: GLenum = 0x82A8`"]
1773    #[doc = "* **Group:** InternalFormatPName"]
1774    pub const GL_IMAGE_COMPATIBILITY_CLASS: GLenum = 0x82A8;
1775    #[doc = "`GL_IMAGE_CUBE: GLenum = 0x9050`"]
1776    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1777    pub const GL_IMAGE_CUBE: GLenum = 0x9050;
1778    #[doc = "`GL_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x9054`"]
1779    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1780    pub const GL_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x9054;
1781    #[doc = "`GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS: GLenum = 0x90C9`"]
1782    pub const GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS: GLenum = 0x90C9;
1783    #[doc = "`GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE: GLenum = 0x90C8`"]
1784    pub const GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE: GLenum = 0x90C8;
1785    #[doc = "`GL_IMAGE_FORMAT_COMPATIBILITY_TYPE: GLenum = 0x90C7`"]
1786    #[doc = "* **Group:** InternalFormatPName"]
1787    pub const GL_IMAGE_FORMAT_COMPATIBILITY_TYPE: GLenum = 0x90C7;
1788    #[doc = "`GL_IMAGE_PIXEL_FORMAT: GLenum = 0x82A9`"]
1789    #[doc = "* **Group:** InternalFormatPName"]
1790    pub const GL_IMAGE_PIXEL_FORMAT: GLenum = 0x82A9;
1791    #[doc = "`GL_IMAGE_PIXEL_TYPE: GLenum = 0x82AA`"]
1792    #[doc = "* **Group:** InternalFormatPName"]
1793    pub const GL_IMAGE_PIXEL_TYPE: GLenum = 0x82AA;
1794    #[doc = "`GL_IMAGE_TEXEL_SIZE: GLenum = 0x82A7`"]
1795    #[doc = "* **Group:** InternalFormatPName"]
1796    pub const GL_IMAGE_TEXEL_SIZE: GLenum = 0x82A7;
1797    #[doc = "`GL_IMPLEMENTATION_COLOR_READ_FORMAT: GLenum = 0x8B9B`"]
1798    #[doc = "* **Groups:** GetFramebufferParameter, GetPName"]
1799    pub const GL_IMPLEMENTATION_COLOR_READ_FORMAT: GLenum = 0x8B9B;
1800    #[doc = "`GL_IMPLEMENTATION_COLOR_READ_TYPE: GLenum = 0x8B9A`"]
1801    #[doc = "* **Groups:** GetFramebufferParameter, GetPName"]
1802    pub const GL_IMPLEMENTATION_COLOR_READ_TYPE: GLenum = 0x8B9A;
1803    #[doc = "`GL_INCR: GLenum = 0x1E02`"]
1804    #[doc = "* **Group:** StencilOp"]
1805    pub const GL_INCR: GLenum = 0x1E02;
1806    #[doc = "`GL_INCR_WRAP: GLenum = 0x8507`"]
1807    #[doc = "* **Group:** StencilOp"]
1808    pub const GL_INCR_WRAP: GLenum = 0x8507;
1809    #[doc = "`GL_INFO_LOG_LENGTH: GLenum = 0x8B84`"]
1810    #[doc = "* **Groups:** ProgramPropertyARB, ShaderParameterName, PipelineParameterName"]
1811    pub const GL_INFO_LOG_LENGTH: GLenum = 0x8B84;
1812    #[doc = "`GL_INNOCENT_CONTEXT_RESET: GLenum = 0x8254`"]
1813    #[doc = "* **Group:** GraphicsResetStatus"]
1814    pub const GL_INNOCENT_CONTEXT_RESET: GLenum = 0x8254;
1815    #[doc = "`GL_INT: GLenum = 0x1404`"]
1816    #[doc = "* **Groups:** VertexAttribIType, SecondaryColorPointerTypeIBM, WeightPointerTypeARB, TangentPointerTypeEXT, BinormalPointerTypeEXT, IndexPointerType, ListNameType, NormalPointerType, PixelType, TexCoordPointerType, VertexPointerType, VertexAttribType, AttributeType, UniformType, VertexAttribPointerType, GlslTypeToken"]
1817    pub const GL_INT: GLenum = 0x1404;
1818    #[doc = "`GL_INTERLEAVED_ATTRIBS: GLenum = 0x8C8C`"]
1819    #[doc = "* **Group:** TransformFeedbackBufferMode"]
1820    pub const GL_INTERLEAVED_ATTRIBS: GLenum = 0x8C8C;
1821    #[doc = "`GL_INTERNALFORMAT_ALPHA_SIZE: GLenum = 0x8274`"]
1822    #[doc = "* **Group:** InternalFormatPName"]
1823    pub const GL_INTERNALFORMAT_ALPHA_SIZE: GLenum = 0x8274;
1824    #[doc = "`GL_INTERNALFORMAT_ALPHA_TYPE: GLenum = 0x827B`"]
1825    #[doc = "* **Group:** InternalFormatPName"]
1826    pub const GL_INTERNALFORMAT_ALPHA_TYPE: GLenum = 0x827B;
1827    #[doc = "`GL_INTERNALFORMAT_BLUE_SIZE: GLenum = 0x8273`"]
1828    #[doc = "* **Group:** InternalFormatPName"]
1829    pub const GL_INTERNALFORMAT_BLUE_SIZE: GLenum = 0x8273;
1830    #[doc = "`GL_INTERNALFORMAT_BLUE_TYPE: GLenum = 0x827A`"]
1831    #[doc = "* **Group:** InternalFormatPName"]
1832    pub const GL_INTERNALFORMAT_BLUE_TYPE: GLenum = 0x827A;
1833    #[doc = "`GL_INTERNALFORMAT_DEPTH_SIZE: GLenum = 0x8275`"]
1834    #[doc = "* **Group:** InternalFormatPName"]
1835    pub const GL_INTERNALFORMAT_DEPTH_SIZE: GLenum = 0x8275;
1836    #[doc = "`GL_INTERNALFORMAT_DEPTH_TYPE: GLenum = 0x827C`"]
1837    #[doc = "* **Group:** InternalFormatPName"]
1838    pub const GL_INTERNALFORMAT_DEPTH_TYPE: GLenum = 0x827C;
1839    #[doc = "`GL_INTERNALFORMAT_GREEN_SIZE: GLenum = 0x8272`"]
1840    #[doc = "* **Group:** InternalFormatPName"]
1841    pub const GL_INTERNALFORMAT_GREEN_SIZE: GLenum = 0x8272;
1842    #[doc = "`GL_INTERNALFORMAT_GREEN_TYPE: GLenum = 0x8279`"]
1843    #[doc = "* **Group:** InternalFormatPName"]
1844    pub const GL_INTERNALFORMAT_GREEN_TYPE: GLenum = 0x8279;
1845    #[doc = "`GL_INTERNALFORMAT_PREFERRED: GLenum = 0x8270`"]
1846    #[doc = "* **Group:** InternalFormatPName"]
1847    pub const GL_INTERNALFORMAT_PREFERRED: GLenum = 0x8270;
1848    #[doc = "`GL_INTERNALFORMAT_RED_SIZE: GLenum = 0x8271`"]
1849    #[doc = "* **Group:** InternalFormatPName"]
1850    pub const GL_INTERNALFORMAT_RED_SIZE: GLenum = 0x8271;
1851    #[doc = "`GL_INTERNALFORMAT_RED_TYPE: GLenum = 0x8278`"]
1852    #[doc = "* **Group:** InternalFormatPName"]
1853    pub const GL_INTERNALFORMAT_RED_TYPE: GLenum = 0x8278;
1854    #[doc = "`GL_INTERNALFORMAT_SHARED_SIZE: GLenum = 0x8277`"]
1855    #[doc = "* **Group:** InternalFormatPName"]
1856    pub const GL_INTERNALFORMAT_SHARED_SIZE: GLenum = 0x8277;
1857    #[doc = "`GL_INTERNALFORMAT_STENCIL_SIZE: GLenum = 0x8276`"]
1858    #[doc = "* **Group:** InternalFormatPName"]
1859    pub const GL_INTERNALFORMAT_STENCIL_SIZE: GLenum = 0x8276;
1860    #[doc = "`GL_INTERNALFORMAT_STENCIL_TYPE: GLenum = 0x827D`"]
1861    #[doc = "* **Group:** InternalFormatPName"]
1862    pub const GL_INTERNALFORMAT_STENCIL_TYPE: GLenum = 0x827D;
1863    #[doc = "`GL_INTERNALFORMAT_SUPPORTED: GLenum = 0x826F`"]
1864    #[doc = "* **Group:** InternalFormatPName"]
1865    pub const GL_INTERNALFORMAT_SUPPORTED: GLenum = 0x826F;
1866    #[doc = "`GL_INT_2_10_10_10_REV: GLenum = 0x8D9F`"]
1867    #[doc = "* **Groups:** VertexAttribPointerType, VertexAttribType"]
1868    pub const GL_INT_2_10_10_10_REV: GLenum = 0x8D9F;
1869    #[doc = "`GL_INT_IMAGE_1D: GLenum = 0x9057`"]
1870    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1871    pub const GL_INT_IMAGE_1D: GLenum = 0x9057;
1872    #[doc = "`GL_INT_IMAGE_1D_ARRAY: GLenum = 0x905D`"]
1873    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1874    pub const GL_INT_IMAGE_1D_ARRAY: GLenum = 0x905D;
1875    #[doc = "`GL_INT_IMAGE_2D: GLenum = 0x9058`"]
1876    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1877    pub const GL_INT_IMAGE_2D: GLenum = 0x9058;
1878    #[doc = "`GL_INT_IMAGE_2D_ARRAY: GLenum = 0x905E`"]
1879    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1880    pub const GL_INT_IMAGE_2D_ARRAY: GLenum = 0x905E;
1881    #[doc = "`GL_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x9060`"]
1882    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1883    pub const GL_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x9060;
1884    #[doc = "`GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9061`"]
1885    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1886    pub const GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9061;
1887    #[doc = "`GL_INT_IMAGE_2D_RECT: GLenum = 0x905A`"]
1888    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1889    pub const GL_INT_IMAGE_2D_RECT: GLenum = 0x905A;
1890    #[doc = "`GL_INT_IMAGE_3D: GLenum = 0x9059`"]
1891    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1892    pub const GL_INT_IMAGE_3D: GLenum = 0x9059;
1893    #[doc = "`GL_INT_IMAGE_BUFFER: GLenum = 0x905C`"]
1894    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1895    pub const GL_INT_IMAGE_BUFFER: GLenum = 0x905C;
1896    #[doc = "`GL_INT_IMAGE_CUBE: GLenum = 0x905B`"]
1897    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1898    pub const GL_INT_IMAGE_CUBE: GLenum = 0x905B;
1899    #[doc = "`GL_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x905F`"]
1900    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1901    pub const GL_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x905F;
1902    #[doc = "`GL_INT_SAMPLER_1D: GLenum = 0x8DC9`"]
1903    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1904    pub const GL_INT_SAMPLER_1D: GLenum = 0x8DC9;
1905    #[doc = "`GL_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DCE`"]
1906    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1907    pub const GL_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DCE;
1908    #[doc = "`GL_INT_SAMPLER_2D: GLenum = 0x8DCA`"]
1909    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1910    pub const GL_INT_SAMPLER_2D: GLenum = 0x8DCA;
1911    #[doc = "`GL_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DCF`"]
1912    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1913    pub const GL_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DCF;
1914    #[doc = "`GL_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9109`"]
1915    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1916    pub const GL_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9109;
1917    #[doc = "`GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910C`"]
1918    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1919    pub const GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910C;
1920    #[doc = "`GL_INT_SAMPLER_2D_RECT: GLenum = 0x8DCD`"]
1921    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1922    pub const GL_INT_SAMPLER_2D_RECT: GLenum = 0x8DCD;
1923    #[doc = "`GL_INT_SAMPLER_3D: GLenum = 0x8DCB`"]
1924    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1925    pub const GL_INT_SAMPLER_3D: GLenum = 0x8DCB;
1926    #[doc = "`GL_INT_SAMPLER_BUFFER: GLenum = 0x8DD0`"]
1927    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1928    pub const GL_INT_SAMPLER_BUFFER: GLenum = 0x8DD0;
1929    #[doc = "`GL_INT_SAMPLER_CUBE: GLenum = 0x8DCC`"]
1930    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1931    pub const GL_INT_SAMPLER_CUBE: GLenum = 0x8DCC;
1932    #[doc = "`GL_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900E`"]
1933    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1934    pub const GL_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900E;
1935    #[doc = "`GL_INT_VEC2: GLenum = 0x8B53`"]
1936    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1937    pub const GL_INT_VEC2: GLenum = 0x8B53;
1938    #[doc = "`GL_INT_VEC3: GLenum = 0x8B54`"]
1939    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1940    pub const GL_INT_VEC3: GLenum = 0x8B54;
1941    #[doc = "`GL_INT_VEC4: GLenum = 0x8B55`"]
1942    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1943    pub const GL_INT_VEC4: GLenum = 0x8B55;
1944    #[doc = "`GL_INVALID_ENUM: GLenum = 0x0500`"]
1945    #[doc = "* **Group:** ErrorCode"]
1946    pub const GL_INVALID_ENUM: GLenum = 0x0500;
1947    #[doc = "`GL_INVALID_FRAMEBUFFER_OPERATION: GLenum = 0x0506`"]
1948    #[doc = "* **Group:** ErrorCode"]
1949    pub const GL_INVALID_FRAMEBUFFER_OPERATION: GLenum = 0x0506;
1950    #[doc = "`GL_INVALID_INDEX: GLenum = 0xFFFFFFFF`"]
1951    pub const GL_INVALID_INDEX: GLenum = 0xFFFFFFFF;
1952    #[doc = "`GL_INVALID_OPERATION: GLenum = 0x0502`"]
1953    #[doc = "* **Group:** ErrorCode"]
1954    pub const GL_INVALID_OPERATION: GLenum = 0x0502;
1955    #[doc = "`GL_INVALID_VALUE: GLenum = 0x0501`"]
1956    #[doc = "* **Group:** ErrorCode"]
1957    pub const GL_INVALID_VALUE: GLenum = 0x0501;
1958    #[doc = "`GL_INVERT: GLenum = 0x150A`"]
1959    #[doc = "* **Groups:** PathFillMode, LogicOp, StencilOp"]
1960    pub const GL_INVERT: GLenum = 0x150A;
1961    #[doc = "`GL_ISOLINES: GLenum = 0x8E7A`"]
1962    pub const GL_ISOLINES: GLenum = 0x8E7A;
1963    #[doc = "`GL_IS_PER_PATCH: GLenum = 0x92E7`"]
1964    #[doc = "* **Group:** ProgramResourceProperty"]
1965    pub const GL_IS_PER_PATCH: GLenum = 0x92E7;
1966    #[doc = "`GL_IS_ROW_MAJOR: GLenum = 0x9300`"]
1967    #[doc = "* **Group:** ProgramResourceProperty"]
1968    pub const GL_IS_ROW_MAJOR: GLenum = 0x9300;
1969    #[doc = "`GL_KEEP: GLenum = 0x1E00`"]
1970    #[doc = "* **Group:** StencilOp"]
1971    pub const GL_KEEP: GLenum = 0x1E00;
1972    #[doc = "`GL_LAST_VERTEX_CONVENTION: GLenum = 0x8E4E`"]
1973    #[doc = "* **Group:** VertexProvokingMode"]
1974    pub const GL_LAST_VERTEX_CONVENTION: GLenum = 0x8E4E;
1975    #[doc = "`GL_LAYER_PROVOKING_VERTEX: GLenum = 0x825E`"]
1976    #[doc = "* **Group:** GetPName"]
1977    pub const GL_LAYER_PROVOKING_VERTEX: GLenum = 0x825E;
1978    #[doc = "`GL_LEFT: GLenum = 0x0406`"]
1979    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
1980    pub const GL_LEFT: GLenum = 0x0406;
1981    #[doc = "`GL_LEQUAL: GLenum = 0x0203`"]
1982    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
1983    pub const GL_LEQUAL: GLenum = 0x0203;
1984    #[doc = "`GL_LESS: GLenum = 0x0201`"]
1985    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
1986    pub const GL_LESS: GLenum = 0x0201;
1987    #[doc = "`GL_LIGHTEN: GLenum = 0x9298`"]
1988    pub const GL_LIGHTEN: GLenum = 0x9298;
1989    #[doc = "`GL_LINE: GLenum = 0x1B01`"]
1990    #[doc = "* **Groups:** PolygonMode, MeshMode1, MeshMode2"]
1991    pub const GL_LINE: GLenum = 0x1B01;
1992    #[doc = "`GL_LINEAR: GLenum = 0x2601`"]
1993    #[doc = "* **Groups:** BlitFramebufferFilter, FogMode, TextureMagFilter, TextureMinFilter"]
1994    pub const GL_LINEAR: GLenum = 0x2601;
1995    #[doc = "`GL_LINEAR_MIPMAP_LINEAR: GLenum = 0x2703`"]
1996    #[doc = "* **Groups:** TextureWrapMode, TextureMinFilter"]
1997    pub const GL_LINEAR_MIPMAP_LINEAR: GLenum = 0x2703;
1998    #[doc = "`GL_LINEAR_MIPMAP_NEAREST: GLenum = 0x2701`"]
1999    #[doc = "* **Group:** TextureMinFilter"]
2000    pub const GL_LINEAR_MIPMAP_NEAREST: GLenum = 0x2701;
2001    #[doc = "`GL_LINES: GLenum = 0x0001`"]
2002    #[doc = "* **Group:** PrimitiveType"]
2003    pub const GL_LINES: GLenum = 0x0001;
2004    #[doc = "`GL_LINES_ADJACENCY: GLenum = 0x000A`"]
2005    #[doc = "* **Group:** PrimitiveType"]
2006    pub const GL_LINES_ADJACENCY: GLenum = 0x000A;
2007    #[doc = "`GL_LINE_LOOP: GLenum = 0x0002`"]
2008    #[doc = "* **Group:** PrimitiveType"]
2009    pub const GL_LINE_LOOP: GLenum = 0x0002;
2010    #[doc = "`GL_LINE_SMOOTH: GLenum = 0x0B20`"]
2011    #[doc = "* **Groups:** GetPName, EnableCap"]
2012    pub const GL_LINE_SMOOTH: GLenum = 0x0B20;
2013    #[doc = "`GL_LINE_SMOOTH_HINT: GLenum = 0x0C52`"]
2014    #[doc = "* **Groups:** HintTarget, GetPName"]
2015    pub const GL_LINE_SMOOTH_HINT: GLenum = 0x0C52;
2016    #[doc = "`GL_LINE_STRIP: GLenum = 0x0003`"]
2017    #[doc = "* **Group:** PrimitiveType"]
2018    pub const GL_LINE_STRIP: GLenum = 0x0003;
2019    #[doc = "`GL_LINE_STRIP_ADJACENCY: GLenum = 0x000B`"]
2020    #[doc = "* **Group:** PrimitiveType"]
2021    pub const GL_LINE_STRIP_ADJACENCY: GLenum = 0x000B;
2022    #[doc = "`GL_LINE_WIDTH: GLenum = 0x0B21`"]
2023    #[doc = "* **Group:** GetPName"]
2024    pub const GL_LINE_WIDTH: GLenum = 0x0B21;
2025    #[doc = "`GL_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23`"]
2026    #[doc = "* **Group:** GetPName"]
2027    pub const GL_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23;
2028    #[doc = "`GL_LINE_WIDTH_RANGE: GLenum = 0x0B22`"]
2029    #[doc = "* **Group:** GetPName"]
2030    pub const GL_LINE_WIDTH_RANGE: GLenum = 0x0B22;
2031    #[doc = "`GL_LINK_STATUS: GLenum = 0x8B82`"]
2032    #[doc = "* **Group:** ProgramPropertyARB"]
2033    pub const GL_LINK_STATUS: GLenum = 0x8B82;
2034    #[doc = "`GL_LOCATION: GLenum = 0x930E`"]
2035    #[doc = "* **Group:** ProgramResourceProperty"]
2036    pub const GL_LOCATION: GLenum = 0x930E;
2037    #[doc = "`GL_LOCATION_COMPONENT: GLenum = 0x934A`"]
2038    #[doc = "* **Group:** ProgramResourceProperty"]
2039    pub const GL_LOCATION_COMPONENT: GLenum = 0x934A;
2040    #[doc = "`GL_LOCATION_INDEX: GLenum = 0x930F`"]
2041    #[doc = "* **Group:** ProgramResourceProperty"]
2042    pub const GL_LOCATION_INDEX: GLenum = 0x930F;
2043    #[doc = "`GL_LOGIC_OP_MODE: GLenum = 0x0BF0`"]
2044    #[doc = "* **Group:** GetPName"]
2045    pub const GL_LOGIC_OP_MODE: GLenum = 0x0BF0;
2046    #[doc = "`GL_LOSE_CONTEXT_ON_RESET: GLenum = 0x8252`"]
2047    pub const GL_LOSE_CONTEXT_ON_RESET: GLenum = 0x8252;
2048    #[doc = "`GL_LOWER_LEFT: GLenum = 0x8CA1`"]
2049    #[doc = "* **Group:** ClipControlOrigin"]
2050    pub const GL_LOWER_LEFT: GLenum = 0x8CA1;
2051    #[doc = "`GL_LOW_FLOAT: GLenum = 0x8DF0`"]
2052    #[doc = "* **Group:** PrecisionType"]
2053    pub const GL_LOW_FLOAT: GLenum = 0x8DF0;
2054    #[doc = "`GL_LOW_INT: GLenum = 0x8DF3`"]
2055    #[doc = "* **Group:** PrecisionType"]
2056    pub const GL_LOW_INT: GLenum = 0x8DF3;
2057    #[doc = "`GL_LUMINANCE: GLenum = 0x1909`"]
2058    #[doc = "* **Groups:** PixelTexGenMode, PathColorFormat, PixelFormat"]
2059    pub const GL_LUMINANCE: GLenum = 0x1909;
2060    #[doc = "`GL_LUMINANCE_ALPHA: GLenum = 0x190A`"]
2061    #[doc = "* **Groups:** PixelTexGenMode, PathColorFormat, PixelFormat"]
2062    pub const GL_LUMINANCE_ALPHA: GLenum = 0x190A;
2063    #[doc = "`GL_MAJOR_VERSION: GLenum = 0x821B`"]
2064    #[doc = "* **Group:** GetPName"]
2065    pub const GL_MAJOR_VERSION: GLenum = 0x821B;
2066    #[doc = "`GL_MANUAL_GENERATE_MIPMAP: GLenum = 0x8294`"]
2067    pub const GL_MANUAL_GENERATE_MIPMAP: GLenum = 0x8294;
2068    #[doc = "`GL_MAP_COHERENT_BIT: GLbitfield = 0x0080`"]
2069    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2070    pub const GL_MAP_COHERENT_BIT: GLbitfield = 0x0080;
2071    #[doc = "`GL_MAP_COHERENT_BIT_EXT: GLbitfield = 0x0080`"]
2072    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2073    pub const GL_MAP_COHERENT_BIT_EXT: GLbitfield = 0x0080;
2074    #[doc = "`GL_MAP_FLUSH_EXPLICIT_BIT: GLbitfield = 0x0010`"]
2075    #[doc = "* **Group:** MapBufferAccessMask"]
2076    pub const GL_MAP_FLUSH_EXPLICIT_BIT: GLbitfield = 0x0010;
2077    #[doc = "`GL_MAP_INVALIDATE_BUFFER_BIT: GLbitfield = 0x0008`"]
2078    #[doc = "* **Group:** MapBufferAccessMask"]
2079    pub const GL_MAP_INVALIDATE_BUFFER_BIT: GLbitfield = 0x0008;
2080    #[doc = "`GL_MAP_INVALIDATE_RANGE_BIT: GLbitfield = 0x0004`"]
2081    #[doc = "* **Group:** MapBufferAccessMask"]
2082    pub const GL_MAP_INVALIDATE_RANGE_BIT: GLbitfield = 0x0004;
2083    #[doc = "`GL_MAP_PERSISTENT_BIT: GLbitfield = 0x0040`"]
2084    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2085    pub const GL_MAP_PERSISTENT_BIT: GLbitfield = 0x0040;
2086    #[doc = "`GL_MAP_PERSISTENT_BIT_EXT: GLbitfield = 0x0040`"]
2087    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2088    pub const GL_MAP_PERSISTENT_BIT_EXT: GLbitfield = 0x0040;
2089    #[doc = "`GL_MAP_READ_BIT: GLbitfield = 0x0001`"]
2090    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2091    pub const GL_MAP_READ_BIT: GLbitfield = 0x0001;
2092    #[doc = "`GL_MAP_UNSYNCHRONIZED_BIT: GLbitfield = 0x0020`"]
2093    #[doc = "* **Group:** MapBufferAccessMask"]
2094    pub const GL_MAP_UNSYNCHRONIZED_BIT: GLbitfield = 0x0020;
2095    #[doc = "`GL_MAP_WRITE_BIT: GLbitfield = 0x0002`"]
2096    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2097    pub const GL_MAP_WRITE_BIT: GLbitfield = 0x0002;
2098    #[doc = "`GL_MATRIX_STRIDE: GLenum = 0x92FF`"]
2099    #[doc = "* **Group:** ProgramResourceProperty"]
2100    pub const GL_MATRIX_STRIDE: GLenum = 0x92FF;
2101    #[doc = "`GL_MAX: GLenum = 0x8008`"]
2102    #[doc = "* **Group:** BlendEquationModeEXT"]
2103    pub const GL_MAX: GLenum = 0x8008;
2104    #[doc = "`GL_MAX_3D_TEXTURE_SIZE: GLenum = 0x8073`"]
2105    #[doc = "* **Group:** GetPName"]
2106    pub const GL_MAX_3D_TEXTURE_SIZE: GLenum = 0x8073;
2107    #[doc = "`GL_MAX_ARRAY_TEXTURE_LAYERS: GLenum = 0x88FF`"]
2108    #[doc = "* **Group:** GetPName"]
2109    pub const GL_MAX_ARRAY_TEXTURE_LAYERS: GLenum = 0x88FF;
2110    #[doc = "`GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: GLenum = 0x92DC`"]
2111    pub const GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: GLenum = 0x92DC;
2112    #[doc = "`GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92D8`"]
2113    pub const GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92D8;
2114    #[doc = "`GL_MAX_CLIP_DISTANCES: GLenum = 0x0D32`"]
2115    #[doc = "* **Group:** GetPName"]
2116    #[doc = "* **Alias Of:** `GL_MAX_CLIP_PLANES`"]
2117    pub const GL_MAX_CLIP_DISTANCES: GLenum = 0x0D32;
2118    #[doc = "`GL_MAX_COLOR_ATTACHMENTS: GLenum = 0x8CDF`"]
2119    pub const GL_MAX_COLOR_ATTACHMENTS: GLenum = 0x8CDF;
2120    #[doc = "`GL_MAX_COLOR_TEXTURE_SAMPLES: GLenum = 0x910E`"]
2121    #[doc = "* **Group:** GetPName"]
2122    pub const GL_MAX_COLOR_TEXTURE_SAMPLES: GLenum = 0x910E;
2123    #[doc = "`GL_MAX_COMBINED_ATOMIC_COUNTERS: GLenum = 0x92D7`"]
2124    #[doc = "* **Group:** GetPName"]
2125    pub const GL_MAX_COMBINED_ATOMIC_COUNTERS: GLenum = 0x92D7;
2126    #[doc = "`GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D1`"]
2127    pub const GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D1;
2128    #[doc = "`GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES: GLenum = 0x82FA`"]
2129    pub const GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES: GLenum = 0x82FA;
2130    #[doc = "`GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8266`"]
2131    #[doc = "* **Group:** GetPName"]
2132    pub const GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8266;
2133    #[doc = "`GL_MAX_COMBINED_DIMENSIONS: GLenum = 0x8282`"]
2134    pub const GL_MAX_COMBINED_DIMENSIONS: GLenum = 0x8282;
2135    #[doc = "`GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8A33`"]
2136    #[doc = "* **Group:** GetPName"]
2137    pub const GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8A33;
2138    #[doc = "`GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8A32`"]
2139    #[doc = "* **Group:** GetPName"]
2140    pub const GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8A32;
2141    #[doc = "`GL_MAX_COMBINED_IMAGE_UNIFORMS: GLenum = 0x90CF`"]
2142    pub const GL_MAX_COMBINED_IMAGE_UNIFORMS: GLenum = 0x90CF;
2143    #[doc = "`GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS: GLenum = 0x8F39`"]
2144    pub const GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS: GLenum = 0x8F39;
2145    #[doc = "`GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: GLenum = 0x8F39`"]
2146    #[doc = "* **Alias Of:** `GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS`"]
2147    pub const GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: GLenum = 0x8F39;
2148    #[doc = "`GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: GLenum = 0x90DC`"]
2149    #[doc = "* **Group:** GetPName"]
2150    pub const GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: GLenum = 0x90DC;
2151    #[doc = "`GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E1E`"]
2152    pub const GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E1E;
2153    #[doc = "`GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E1F`"]
2154    pub const GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E1F;
2155    #[doc = "`GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4D`"]
2156    #[doc = "* **Group:** GetPName"]
2157    pub const GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4D;
2158    #[doc = "`GL_MAX_COMBINED_UNIFORM_BLOCKS: GLenum = 0x8A2E`"]
2159    #[doc = "* **Group:** GetPName"]
2160    pub const GL_MAX_COMBINED_UNIFORM_BLOCKS: GLenum = 0x8A2E;
2161    #[doc = "`GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8A31`"]
2162    #[doc = "* **Group:** GetPName"]
2163    pub const GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8A31;
2164    #[doc = "`GL_MAX_COMPUTE_ATOMIC_COUNTERS: GLenum = 0x8265`"]
2165    #[doc = "* **Group:** GetPName"]
2166    pub const GL_MAX_COMPUTE_ATOMIC_COUNTERS: GLenum = 0x8265;
2167    #[doc = "`GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x8264`"]
2168    #[doc = "* **Group:** GetPName"]
2169    pub const GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x8264;
2170    #[doc = "`GL_MAX_COMPUTE_IMAGE_UNIFORMS: GLenum = 0x91BD`"]
2171    pub const GL_MAX_COMPUTE_IMAGE_UNIFORMS: GLenum = 0x91BD;
2172    #[doc = "`GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: GLenum = 0x90DB`"]
2173    #[doc = "* **Group:** GetPName"]
2174    pub const GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: GLenum = 0x90DB;
2175    #[doc = "`GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: GLenum = 0x8262`"]
2176    pub const GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: GLenum = 0x8262;
2177    #[doc = "`GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: GLenum = 0x91BC`"]
2178    #[doc = "* **Group:** GetPName"]
2179    pub const GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: GLenum = 0x91BC;
2180    #[doc = "`GL_MAX_COMPUTE_UNIFORM_BLOCKS: GLenum = 0x91BB`"]
2181    #[doc = "* **Group:** GetPName"]
2182    pub const GL_MAX_COMPUTE_UNIFORM_BLOCKS: GLenum = 0x91BB;
2183    #[doc = "`GL_MAX_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8263`"]
2184    #[doc = "* **Group:** GetPName"]
2185    pub const GL_MAX_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8263;
2186    #[doc = "`GL_MAX_COMPUTE_WORK_GROUP_COUNT: GLenum = 0x91BE`"]
2187    #[doc = "* **Group:** GetPName"]
2188    pub const GL_MAX_COMPUTE_WORK_GROUP_COUNT: GLenum = 0x91BE;
2189    #[doc = "`GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: GLenum = 0x90EB`"]
2190    #[doc = "* **Group:** GetPName"]
2191    pub const GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: GLenum = 0x90EB;
2192    #[doc = "`GL_MAX_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x91BF`"]
2193    #[doc = "* **Group:** GetPName"]
2194    pub const GL_MAX_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x91BF;
2195    #[doc = "`GL_MAX_CUBE_MAP_TEXTURE_SIZE: GLenum = 0x851C`"]
2196    #[doc = "* **Group:** GetPName"]
2197    pub const GL_MAX_CUBE_MAP_TEXTURE_SIZE: GLenum = 0x851C;
2198    #[doc = "`GL_MAX_CULL_DISTANCES: GLenum = 0x82F9`"]
2199    pub const GL_MAX_CULL_DISTANCES: GLenum = 0x82F9;
2200    #[doc = "`GL_MAX_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826C`"]
2201    #[doc = "* **Group:** GetPName"]
2202    pub const GL_MAX_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826C;
2203    #[doc = "`GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR: GLenum = 0x826C`"]
2204    pub const GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR: GLenum = 0x826C;
2205    #[doc = "`GL_MAX_DEBUG_LOGGED_MESSAGES: GLenum = 0x9144`"]
2206    pub const GL_MAX_DEBUG_LOGGED_MESSAGES: GLenum = 0x9144;
2207    #[doc = "`GL_MAX_DEBUG_LOGGED_MESSAGES_ARB: GLenum = 0x9144`"]
2208    pub const GL_MAX_DEBUG_LOGGED_MESSAGES_ARB: GLenum = 0x9144;
2209    #[doc = "`GL_MAX_DEBUG_LOGGED_MESSAGES_KHR: GLenum = 0x9144`"]
2210    pub const GL_MAX_DEBUG_LOGGED_MESSAGES_KHR: GLenum = 0x9144;
2211    #[doc = "`GL_MAX_DEBUG_MESSAGE_LENGTH: GLenum = 0x9143`"]
2212    pub const GL_MAX_DEBUG_MESSAGE_LENGTH: GLenum = 0x9143;
2213    #[doc = "`GL_MAX_DEBUG_MESSAGE_LENGTH_ARB: GLenum = 0x9143`"]
2214    pub const GL_MAX_DEBUG_MESSAGE_LENGTH_ARB: GLenum = 0x9143;
2215    #[doc = "`GL_MAX_DEBUG_MESSAGE_LENGTH_KHR: GLenum = 0x9143`"]
2216    pub const GL_MAX_DEBUG_MESSAGE_LENGTH_KHR: GLenum = 0x9143;
2217    #[doc = "`GL_MAX_DEPTH: GLenum = 0x8280`"]
2218    #[doc = "* **Group:** InternalFormatPName"]
2219    pub const GL_MAX_DEPTH: GLenum = 0x8280;
2220    #[doc = "`GL_MAX_DEPTH_TEXTURE_SAMPLES: GLenum = 0x910F`"]
2221    #[doc = "* **Group:** GetPName"]
2222    pub const GL_MAX_DEPTH_TEXTURE_SAMPLES: GLenum = 0x910F;
2223    #[doc = "`GL_MAX_DRAW_BUFFERS: GLenum = 0x8824`"]
2224    #[doc = "* **Group:** GetPName"]
2225    pub const GL_MAX_DRAW_BUFFERS: GLenum = 0x8824;
2226    #[doc = "`GL_MAX_DUAL_SOURCE_DRAW_BUFFERS: GLenum = 0x88FC`"]
2227    #[doc = "* **Group:** GetPName"]
2228    pub const GL_MAX_DUAL_SOURCE_DRAW_BUFFERS: GLenum = 0x88FC;
2229    #[doc = "`GL_MAX_ELEMENTS_INDICES: GLenum = 0x80E9`"]
2230    #[doc = "* **Group:** GetPName"]
2231    pub const GL_MAX_ELEMENTS_INDICES: GLenum = 0x80E9;
2232    #[doc = "`GL_MAX_ELEMENTS_VERTICES: GLenum = 0x80E8`"]
2233    #[doc = "* **Group:** GetPName"]
2234    pub const GL_MAX_ELEMENTS_VERTICES: GLenum = 0x80E8;
2235    #[doc = "`GL_MAX_ELEMENT_INDEX: GLenum = 0x8D6B`"]
2236    #[doc = "* **Group:** GetPName"]
2237    pub const GL_MAX_ELEMENT_INDEX: GLenum = 0x8D6B;
2238    #[doc = "`GL_MAX_FRAGMENT_ATOMIC_COUNTERS: GLenum = 0x92D6`"]
2239    #[doc = "* **Group:** GetPName"]
2240    pub const GL_MAX_FRAGMENT_ATOMIC_COUNTERS: GLenum = 0x92D6;
2241    #[doc = "`GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D0`"]
2242    pub const GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D0;
2243    #[doc = "`GL_MAX_FRAGMENT_IMAGE_UNIFORMS: GLenum = 0x90CE`"]
2244    pub const GL_MAX_FRAGMENT_IMAGE_UNIFORMS: GLenum = 0x90CE;
2245    #[doc = "`GL_MAX_FRAGMENT_INPUT_COMPONENTS: GLenum = 0x9125`"]
2246    #[doc = "* **Group:** GetPName"]
2247    pub const GL_MAX_FRAGMENT_INPUT_COMPONENTS: GLenum = 0x9125;
2248    #[doc = "`GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5C`"]
2249    pub const GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5C;
2250    #[doc = "`GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: GLenum = 0x90DA`"]
2251    #[doc = "* **Group:** GetPName"]
2252    pub const GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: GLenum = 0x90DA;
2253    #[doc = "`GL_MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum = 0x8A2D`"]
2254    #[doc = "* **Group:** GetPName"]
2255    pub const GL_MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum = 0x8A2D;
2256    #[doc = "`GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8B49`"]
2257    #[doc = "* **Group:** GetPName"]
2258    pub const GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8B49;
2259    #[doc = "`GL_MAX_FRAGMENT_UNIFORM_VECTORS: GLenum = 0x8DFD`"]
2260    #[doc = "* **Group:** GetPName"]
2261    pub const GL_MAX_FRAGMENT_UNIFORM_VECTORS: GLenum = 0x8DFD;
2262    #[doc = "`GL_MAX_FRAMEBUFFER_HEIGHT: GLenum = 0x9316`"]
2263    #[doc = "* **Group:** GetPName"]
2264    pub const GL_MAX_FRAMEBUFFER_HEIGHT: GLenum = 0x9316;
2265    #[doc = "`GL_MAX_FRAMEBUFFER_LAYERS: GLenum = 0x9317`"]
2266    #[doc = "* **Group:** GetPName"]
2267    pub const GL_MAX_FRAMEBUFFER_LAYERS: GLenum = 0x9317;
2268    #[doc = "`GL_MAX_FRAMEBUFFER_SAMPLES: GLenum = 0x9318`"]
2269    #[doc = "* **Group:** GetPName"]
2270    pub const GL_MAX_FRAMEBUFFER_SAMPLES: GLenum = 0x9318;
2271    #[doc = "`GL_MAX_FRAMEBUFFER_WIDTH: GLenum = 0x9315`"]
2272    #[doc = "* **Group:** GetPName"]
2273    pub const GL_MAX_FRAMEBUFFER_WIDTH: GLenum = 0x9315;
2274    #[doc = "`GL_MAX_GEOMETRY_ATOMIC_COUNTERS: GLenum = 0x92D5`"]
2275    #[doc = "* **Group:** GetPName"]
2276    pub const GL_MAX_GEOMETRY_ATOMIC_COUNTERS: GLenum = 0x92D5;
2277    #[doc = "`GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CF`"]
2278    pub const GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CF;
2279    #[doc = "`GL_MAX_GEOMETRY_IMAGE_UNIFORMS: GLenum = 0x90CD`"]
2280    pub const GL_MAX_GEOMETRY_IMAGE_UNIFORMS: GLenum = 0x90CD;
2281    #[doc = "`GL_MAX_GEOMETRY_INPUT_COMPONENTS: GLenum = 0x9123`"]
2282    #[doc = "* **Group:** GetPName"]
2283    pub const GL_MAX_GEOMETRY_INPUT_COMPONENTS: GLenum = 0x9123;
2284    #[doc = "`GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: GLenum = 0x9124`"]
2285    #[doc = "* **Group:** GetPName"]
2286    pub const GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: GLenum = 0x9124;
2287    #[doc = "`GL_MAX_GEOMETRY_OUTPUT_VERTICES: GLenum = 0x8DE0`"]
2288    pub const GL_MAX_GEOMETRY_OUTPUT_VERTICES: GLenum = 0x8DE0;
2289    #[doc = "`GL_MAX_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x8E5A`"]
2290    pub const GL_MAX_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x8E5A;
2291    #[doc = "`GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS: GLenum = 0x90D7`"]
2292    #[doc = "* **Group:** GetPName"]
2293    pub const GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS: GLenum = 0x90D7;
2294    #[doc = "`GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: GLenum = 0x8C29`"]
2295    #[doc = "* **Group:** GetPName"]
2296    pub const GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: GLenum = 0x8C29;
2297    #[doc = "`GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8DE1`"]
2298    pub const GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8DE1;
2299    #[doc = "`GL_MAX_GEOMETRY_UNIFORM_BLOCKS: GLenum = 0x8A2C`"]
2300    #[doc = "* **Group:** GetPName"]
2301    pub const GL_MAX_GEOMETRY_UNIFORM_BLOCKS: GLenum = 0x8A2C;
2302    #[doc = "`GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8DDF`"]
2303    #[doc = "* **Group:** GetPName"]
2304    pub const GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8DDF;
2305    #[doc = "`GL_MAX_HEIGHT: GLenum = 0x827F`"]
2306    #[doc = "* **Group:** InternalFormatPName"]
2307    pub const GL_MAX_HEIGHT: GLenum = 0x827F;
2308    #[doc = "`GL_MAX_IMAGE_SAMPLES: GLenum = 0x906D`"]
2309    pub const GL_MAX_IMAGE_SAMPLES: GLenum = 0x906D;
2310    #[doc = "`GL_MAX_IMAGE_UNITS: GLenum = 0x8F38`"]
2311    pub const GL_MAX_IMAGE_UNITS: GLenum = 0x8F38;
2312    #[doc = "`GL_MAX_INTEGER_SAMPLES: GLenum = 0x9110`"]
2313    #[doc = "* **Group:** GetPName"]
2314    pub const GL_MAX_INTEGER_SAMPLES: GLenum = 0x9110;
2315    #[doc = "`GL_MAX_LABEL_LENGTH: GLenum = 0x82E8`"]
2316    #[doc = "* **Group:** GetPName"]
2317    pub const GL_MAX_LABEL_LENGTH: GLenum = 0x82E8;
2318    #[doc = "`GL_MAX_LABEL_LENGTH_KHR: GLenum = 0x82E8`"]
2319    pub const GL_MAX_LABEL_LENGTH_KHR: GLenum = 0x82E8;
2320    #[doc = "`GL_MAX_LAYERS: GLenum = 0x8281`"]
2321    #[doc = "* **Group:** InternalFormatPName"]
2322    pub const GL_MAX_LAYERS: GLenum = 0x8281;
2323    #[doc = "`GL_MAX_NAME_LENGTH: GLenum = 0x92F6`"]
2324    #[doc = "* **Group:** ProgramInterfacePName"]
2325    pub const GL_MAX_NAME_LENGTH: GLenum = 0x92F6;
2326    #[doc = "`GL_MAX_NUM_ACTIVE_VARIABLES: GLenum = 0x92F7`"]
2327    #[doc = "* **Group:** ProgramInterfacePName"]
2328    pub const GL_MAX_NUM_ACTIVE_VARIABLES: GLenum = 0x92F7;
2329    #[doc = "`GL_MAX_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x92F8`"]
2330    #[doc = "* **Group:** ProgramInterfacePName"]
2331    pub const GL_MAX_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x92F8;
2332    #[doc = "`GL_MAX_PATCH_VERTICES: GLenum = 0x8E7D`"]
2333    pub const GL_MAX_PATCH_VERTICES: GLenum = 0x8E7D;
2334    #[doc = "`GL_MAX_PROGRAM_TEXEL_OFFSET: GLenum = 0x8905`"]
2335    #[doc = "* **Group:** GetPName"]
2336    pub const GL_MAX_PROGRAM_TEXEL_OFFSET: GLenum = 0x8905;
2337    #[doc = "`GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5F`"]
2338    pub const GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5F;
2339    #[doc = "`GL_MAX_RECTANGLE_TEXTURE_SIZE: GLenum = 0x84F8`"]
2340    #[doc = "* **Group:** GetPName"]
2341    pub const GL_MAX_RECTANGLE_TEXTURE_SIZE: GLenum = 0x84F8;
2342    #[doc = "`GL_MAX_RENDERBUFFER_SIZE: GLenum = 0x84E8`"]
2343    #[doc = "* **Group:** GetPName"]
2344    pub const GL_MAX_RENDERBUFFER_SIZE: GLenum = 0x84E8;
2345    #[doc = "`GL_MAX_SAMPLES: GLenum = 0x8D57`"]
2346    pub const GL_MAX_SAMPLES: GLenum = 0x8D57;
2347    #[doc = "`GL_MAX_SAMPLE_MASK_WORDS: GLenum = 0x8E59`"]
2348    #[doc = "* **Group:** GetPName"]
2349    pub const GL_MAX_SAMPLE_MASK_WORDS: GLenum = 0x8E59;
2350    #[doc = "`GL_MAX_SERVER_WAIT_TIMEOUT: GLenum = 0x9111`"]
2351    #[doc = "* **Group:** GetPName"]
2352    pub const GL_MAX_SERVER_WAIT_TIMEOUT: GLenum = 0x9111;
2353    #[doc = "`GL_MAX_SHADER_COMPILER_THREADS_ARB: GLenum = 0x91B0`"]
2354    #[doc = "* **Alias Of:** `GL_MAX_SHADER_COMPILER_THREADS_KHR`"]
2355    pub const GL_MAX_SHADER_COMPILER_THREADS_ARB: GLenum = 0x91B0;
2356    #[doc = "`GL_MAX_SHADER_COMPILER_THREADS_KHR: GLenum = 0x91B0`"]
2357    pub const GL_MAX_SHADER_COMPILER_THREADS_KHR: GLenum = 0x91B0;
2358    #[doc = "`GL_MAX_SHADER_STORAGE_BLOCK_SIZE: GLenum = 0x90DE`"]
2359    pub const GL_MAX_SHADER_STORAGE_BLOCK_SIZE: GLenum = 0x90DE;
2360    #[doc = "`GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: GLenum = 0x90DD`"]
2361    #[doc = "* **Group:** GetPName"]
2362    pub const GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: GLenum = 0x90DD;
2363    #[doc = "`GL_MAX_SUBROUTINES: GLenum = 0x8DE7`"]
2364    pub const GL_MAX_SUBROUTINES: GLenum = 0x8DE7;
2365    #[doc = "`GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8DE8`"]
2366    pub const GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8DE8;
2367    #[doc = "`GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS: GLenum = 0x92D3`"]
2368    #[doc = "* **Group:** GetPName"]
2369    pub const GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS: GLenum = 0x92D3;
2370    #[doc = "`GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CD`"]
2371    pub const GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CD;
2372    #[doc = "`GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS: GLenum = 0x90CB`"]
2373    pub const GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS: GLenum = 0x90CB;
2374    #[doc = "`GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: GLenum = 0x886C`"]
2375    pub const GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: GLenum = 0x886C;
2376    #[doc = "`GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: GLenum = 0x8E83`"]
2377    pub const GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: GLenum = 0x8E83;
2378    #[doc = "`GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS: GLenum = 0x90D8`"]
2379    #[doc = "* **Group:** GetPName"]
2380    pub const GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS: GLenum = 0x90D8;
2381    #[doc = "`GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: GLenum = 0x8E81`"]
2382    pub const GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: GLenum = 0x8E81;
2383    #[doc = "`GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8E85`"]
2384    pub const GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8E85;
2385    #[doc = "`GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: GLenum = 0x8E89`"]
2386    #[doc = "* **Group:** GetPName"]
2387    pub const GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: GLenum = 0x8E89;
2388    #[doc = "`GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E7F`"]
2389    pub const GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E7F;
2390    #[doc = "`GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS: GLenum = 0x92D4`"]
2391    #[doc = "* **Group:** GetPName"]
2392    pub const GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS: GLenum = 0x92D4;
2393    #[doc = "`GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CE`"]
2394    pub const GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CE;
2395    #[doc = "`GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS: GLenum = 0x90CC`"]
2396    pub const GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS: GLenum = 0x90CC;
2397    #[doc = "`GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: GLenum = 0x886D`"]
2398    pub const GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: GLenum = 0x886D;
2399    #[doc = "`GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: GLenum = 0x8E86`"]
2400    pub const GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: GLenum = 0x8E86;
2401    #[doc = "`GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS: GLenum = 0x90D9`"]
2402    #[doc = "* **Group:** GetPName"]
2403    pub const GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS: GLenum = 0x90D9;
2404    #[doc = "`GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: GLenum = 0x8E82`"]
2405    pub const GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: GLenum = 0x8E82;
2406    #[doc = "`GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: GLenum = 0x8E8A`"]
2407    #[doc = "* **Group:** GetPName"]
2408    pub const GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: GLenum = 0x8E8A;
2409    #[doc = "`GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E80`"]
2410    pub const GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E80;
2411    #[doc = "`GL_MAX_TESS_GEN_LEVEL: GLenum = 0x8E7E`"]
2412    pub const GL_MAX_TESS_GEN_LEVEL: GLenum = 0x8E7E;
2413    #[doc = "`GL_MAX_TESS_PATCH_COMPONENTS: GLenum = 0x8E84`"]
2414    pub const GL_MAX_TESS_PATCH_COMPONENTS: GLenum = 0x8E84;
2415    #[doc = "`GL_MAX_TEXTURE_BUFFER_SIZE: GLenum = 0x8C2B`"]
2416    #[doc = "* **Group:** GetPName"]
2417    pub const GL_MAX_TEXTURE_BUFFER_SIZE: GLenum = 0x8C2B;
2418    #[doc = "`GL_MAX_TEXTURE_IMAGE_UNITS: GLenum = 0x8872`"]
2419    #[doc = "* **Group:** GetPName"]
2420    pub const GL_MAX_TEXTURE_IMAGE_UNITS: GLenum = 0x8872;
2421    #[doc = "`GL_MAX_TEXTURE_LOD_BIAS: GLenum = 0x84FD`"]
2422    #[doc = "* **Group:** GetPName"]
2423    pub const GL_MAX_TEXTURE_LOD_BIAS: GLenum = 0x84FD;
2424    #[doc = "`GL_MAX_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FF`"]
2425    pub const GL_MAX_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FF;
2426    #[doc = "`GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum = 0x84FF`"]
2427    #[doc = "* **Alias Of:** `GL_MAX_TEXTURE_MAX_ANISOTROPY`"]
2428    pub const GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum = 0x84FF;
2429    #[doc = "`GL_MAX_TEXTURE_SIZE: GLenum = 0x0D33`"]
2430    #[doc = "* **Group:** GetPName"]
2431    pub const GL_MAX_TEXTURE_SIZE: GLenum = 0x0D33;
2432    #[doc = "`GL_MAX_TRANSFORM_FEEDBACK_BUFFERS: GLenum = 0x8E70`"]
2433    pub const GL_MAX_TRANSFORM_FEEDBACK_BUFFERS: GLenum = 0x8E70;
2434    #[doc = "`GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum = 0x8C8A`"]
2435    pub const GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum = 0x8C8A;
2436    #[doc = "`GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum = 0x8C8B`"]
2437    pub const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum = 0x8C8B;
2438    #[doc = "`GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum = 0x8C80`"]
2439    pub const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum = 0x8C80;
2440    #[doc = "`GL_MAX_UNIFORM_BLOCK_SIZE: GLenum = 0x8A30`"]
2441    #[doc = "* **Group:** GetPName"]
2442    pub const GL_MAX_UNIFORM_BLOCK_SIZE: GLenum = 0x8A30;
2443    #[doc = "`GL_MAX_UNIFORM_BUFFER_BINDINGS: GLenum = 0x8A2F`"]
2444    #[doc = "* **Group:** GetPName"]
2445    pub const GL_MAX_UNIFORM_BUFFER_BINDINGS: GLenum = 0x8A2F;
2446    #[doc = "`GL_MAX_UNIFORM_LOCATIONS: GLenum = 0x826E`"]
2447    #[doc = "* **Group:** GetPName"]
2448    pub const GL_MAX_UNIFORM_LOCATIONS: GLenum = 0x826E;
2449    #[doc = "`GL_MAX_VARYING_COMPONENTS: GLenum = 0x8B4B`"]
2450    #[doc = "* **Group:** GetPName"]
2451    #[doc = "* **Alias Of:** `MAX_VARYING_FLOATS`"]
2452    pub const GL_MAX_VARYING_COMPONENTS: GLenum = 0x8B4B;
2453    #[doc = "`GL_MAX_VARYING_FLOATS: GLenum = 0x8B4B`"]
2454    #[doc = "* **Group:** GetPName"]
2455    pub const GL_MAX_VARYING_FLOATS: GLenum = 0x8B4B;
2456    #[doc = "`GL_MAX_VARYING_VECTORS: GLenum = 0x8DFC`"]
2457    #[doc = "* **Group:** GetPName"]
2458    pub const GL_MAX_VARYING_VECTORS: GLenum = 0x8DFC;
2459    #[doc = "`GL_MAX_VERTEX_ATOMIC_COUNTERS: GLenum = 0x92D2`"]
2460    #[doc = "* **Group:** GetPName"]
2461    pub const GL_MAX_VERTEX_ATOMIC_COUNTERS: GLenum = 0x92D2;
2462    #[doc = "`GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CC`"]
2463    pub const GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CC;
2464    #[doc = "`GL_MAX_VERTEX_ATTRIBS: GLenum = 0x8869`"]
2465    #[doc = "* **Group:** GetPName"]
2466    pub const GL_MAX_VERTEX_ATTRIBS: GLenum = 0x8869;
2467    #[doc = "`GL_MAX_VERTEX_ATTRIB_BINDINGS: GLenum = 0x82DA`"]
2468    #[doc = "* **Group:** GetPName"]
2469    pub const GL_MAX_VERTEX_ATTRIB_BINDINGS: GLenum = 0x82DA;
2470    #[doc = "`GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D9`"]
2471    #[doc = "* **Group:** GetPName"]
2472    pub const GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D9;
2473    #[doc = "`GL_MAX_VERTEX_ATTRIB_STRIDE: GLenum = 0x82E5`"]
2474    pub const GL_MAX_VERTEX_ATTRIB_STRIDE: GLenum = 0x82E5;
2475    #[doc = "`GL_MAX_VERTEX_IMAGE_UNIFORMS: GLenum = 0x90CA`"]
2476    pub const GL_MAX_VERTEX_IMAGE_UNIFORMS: GLenum = 0x90CA;
2477    #[doc = "`GL_MAX_VERTEX_OUTPUT_COMPONENTS: GLenum = 0x9122`"]
2478    #[doc = "* **Group:** GetPName"]
2479    pub const GL_MAX_VERTEX_OUTPUT_COMPONENTS: GLenum = 0x9122;
2480    #[doc = "`GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: GLenum = 0x90D6`"]
2481    #[doc = "* **Group:** GetPName"]
2482    pub const GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: GLenum = 0x90D6;
2483    #[doc = "`GL_MAX_VERTEX_STREAMS: GLenum = 0x8E71`"]
2484    pub const GL_MAX_VERTEX_STREAMS: GLenum = 0x8E71;
2485    #[doc = "`GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4C`"]
2486    #[doc = "* **Group:** GetPName"]
2487    pub const GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4C;
2488    #[doc = "`GL_MAX_VERTEX_UNIFORM_BLOCKS: GLenum = 0x8A2B`"]
2489    #[doc = "* **Group:** GetPName"]
2490    pub const GL_MAX_VERTEX_UNIFORM_BLOCKS: GLenum = 0x8A2B;
2491    #[doc = "`GL_MAX_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8B4A`"]
2492    #[doc = "* **Group:** GetPName"]
2493    pub const GL_MAX_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8B4A;
2494    #[doc = "`GL_MAX_VERTEX_UNIFORM_VECTORS: GLenum = 0x8DFB`"]
2495    #[doc = "* **Group:** GetPName"]
2496    pub const GL_MAX_VERTEX_UNIFORM_VECTORS: GLenum = 0x8DFB;
2497    #[doc = "`GL_MAX_VIEWPORTS: GLenum = 0x825B`"]
2498    #[doc = "* **Group:** GetPName"]
2499    pub const GL_MAX_VIEWPORTS: GLenum = 0x825B;
2500    #[doc = "`GL_MAX_VIEWPORT_DIMS: GLenum = 0x0D3A`"]
2501    #[doc = "* **Group:** GetPName"]
2502    pub const GL_MAX_VIEWPORT_DIMS: GLenum = 0x0D3A;
2503    #[doc = "`GL_MAX_WIDTH: GLenum = 0x827E`"]
2504    #[doc = "* **Group:** InternalFormatPName"]
2505    pub const GL_MAX_WIDTH: GLenum = 0x827E;
2506    #[doc = "`GL_MEDIUM_FLOAT: GLenum = 0x8DF1`"]
2507    #[doc = "* **Group:** PrecisionType"]
2508    pub const GL_MEDIUM_FLOAT: GLenum = 0x8DF1;
2509    #[doc = "`GL_MEDIUM_INT: GLenum = 0x8DF4`"]
2510    #[doc = "* **Group:** PrecisionType"]
2511    pub const GL_MEDIUM_INT: GLenum = 0x8DF4;
2512    #[doc = "`GL_MIN: GLenum = 0x8007`"]
2513    #[doc = "* **Group:** BlendEquationModeEXT"]
2514    pub const GL_MIN: GLenum = 0x8007;
2515    #[doc = "`GL_MINOR_VERSION: GLenum = 0x821C`"]
2516    #[doc = "* **Group:** GetPName"]
2517    pub const GL_MINOR_VERSION: GLenum = 0x821C;
2518    #[doc = "`GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5B`"]
2519    pub const GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5B;
2520    #[doc = "`GL_MIN_MAP_BUFFER_ALIGNMENT: GLenum = 0x90BC`"]
2521    #[doc = "* **Group:** GetPName"]
2522    pub const GL_MIN_MAP_BUFFER_ALIGNMENT: GLenum = 0x90BC;
2523    #[doc = "`GL_MIN_PROGRAM_TEXEL_OFFSET: GLenum = 0x8904`"]
2524    #[doc = "* **Group:** GetPName"]
2525    pub const GL_MIN_PROGRAM_TEXEL_OFFSET: GLenum = 0x8904;
2526    #[doc = "`GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5E`"]
2527    pub const GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5E;
2528    #[doc = "`GL_MIN_SAMPLE_SHADING_VALUE: GLenum = 0x8C37`"]
2529    pub const GL_MIN_SAMPLE_SHADING_VALUE: GLenum = 0x8C37;
2530    #[doc = "`GL_MIPMAP: GLenum = 0x8293`"]
2531    #[doc = "* **Group:** InternalFormatPName"]
2532    pub const GL_MIPMAP: GLenum = 0x8293;
2533    #[doc = "`GL_MIRRORED_REPEAT: GLenum = 0x8370`"]
2534    #[doc = "* **Group:** TextureWrapMode"]
2535    pub const GL_MIRRORED_REPEAT: GLenum = 0x8370;
2536    #[doc = "`GL_MIRROR_CLAMP_TO_EDGE: GLenum = 0x8743`"]
2537    pub const GL_MIRROR_CLAMP_TO_EDGE: GLenum = 0x8743;
2538    #[doc = "`GL_MULTIPLY: GLenum = 0x9294`"]
2539    pub const GL_MULTIPLY: GLenum = 0x9294;
2540    #[doc = "`GL_MULTISAMPLE: GLenum = 0x809D`"]
2541    #[doc = "* **Group:** EnableCap"]
2542    pub const GL_MULTISAMPLE: GLenum = 0x809D;
2543    #[doc = "`GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY: GLenum = 0x9382`"]
2544    pub const GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY: GLenum = 0x9382;
2545    #[doc = "`GL_MULTISAMPLE_LINE_WIDTH_RANGE: GLenum = 0x9381`"]
2546    pub const GL_MULTISAMPLE_LINE_WIDTH_RANGE: GLenum = 0x9381;
2547    #[doc = "`GL_NAME_LENGTH: GLenum = 0x92F9`"]
2548    #[doc = "* **Group:** ProgramResourceProperty"]
2549    pub const GL_NAME_LENGTH: GLenum = 0x92F9;
2550    #[doc = "`GL_NAND: GLenum = 0x150E`"]
2551    #[doc = "* **Group:** LogicOp"]
2552    pub const GL_NAND: GLenum = 0x150E;
2553    #[doc = "`GL_NEAREST: GLenum = 0x2600`"]
2554    #[doc = "* **Groups:** BlitFramebufferFilter, TextureMagFilter, TextureMinFilter"]
2555    pub const GL_NEAREST: GLenum = 0x2600;
2556    #[doc = "`GL_NEAREST_MIPMAP_LINEAR: GLenum = 0x2702`"]
2557    #[doc = "* **Group:** TextureMinFilter"]
2558    pub const GL_NEAREST_MIPMAP_LINEAR: GLenum = 0x2702;
2559    #[doc = "`GL_NEAREST_MIPMAP_NEAREST: GLenum = 0x2700`"]
2560    #[doc = "* **Group:** TextureMinFilter"]
2561    pub const GL_NEAREST_MIPMAP_NEAREST: GLenum = 0x2700;
2562    #[doc = "`GL_NEGATIVE_ONE_TO_ONE: GLenum = 0x935E`"]
2563    #[doc = "* **Group:** ClipControlDepth"]
2564    pub const GL_NEGATIVE_ONE_TO_ONE: GLenum = 0x935E;
2565    #[doc = "`GL_NEVER: GLenum = 0x0200`"]
2566    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
2567    pub const GL_NEVER: GLenum = 0x0200;
2568    #[doc = "`GL_NICEST: GLenum = 0x1102`"]
2569    #[doc = "* **Group:** HintMode"]
2570    pub const GL_NICEST: GLenum = 0x1102;
2571    #[doc = "`GL_NONE: GLenum = 0`"]
2572    #[doc = "* **Groups:** SyncBehaviorFlags, TextureCompareMode, PathColorFormat, CombinerBiasNV, CombinerScaleNV, DrawBufferMode, PixelTexGenMode, ReadBufferMode, ColorBuffer, PathGenMode, PathTransformType, PathFontStyle"]
2573    pub const GL_NONE: GLenum = 0;
2574    #[doc = "`GL_NOOP: GLenum = 0x1505`"]
2575    #[doc = "* **Group:** LogicOp"]
2576    pub const GL_NOOP: GLenum = 0x1505;
2577    #[doc = "`GL_NOR: GLenum = 0x1508`"]
2578    #[doc = "* **Group:** LogicOp"]
2579    pub const GL_NOR: GLenum = 0x1508;
2580    #[doc = "`GL_NOTEQUAL: GLenum = 0x0205`"]
2581    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
2582    pub const GL_NOTEQUAL: GLenum = 0x0205;
2583    #[doc = "`GL_NO_ERROR: GLenum = 0`"]
2584    #[doc = "* **Groups:** GraphicsResetStatus, ErrorCode"]
2585    pub const GL_NO_ERROR: GLenum = 0;
2586    #[doc = "`GL_NO_RESET_NOTIFICATION: GLenum = 0x8261`"]
2587    pub const GL_NO_RESET_NOTIFICATION: GLenum = 0x8261;
2588    #[doc = "`GL_NUM_ACTIVE_VARIABLES: GLenum = 0x9304`"]
2589    #[doc = "* **Group:** ProgramResourceProperty"]
2590    pub const GL_NUM_ACTIVE_VARIABLES: GLenum = 0x9304;
2591    #[doc = "`GL_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4A`"]
2592    #[doc = "* **Groups:** ProgramResourceProperty, SubroutineParameterName"]
2593    pub const GL_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4A;
2594    #[doc = "`GL_NUM_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A2`"]
2595    #[doc = "* **Group:** GetPName"]
2596    pub const GL_NUM_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A2;
2597    #[doc = "`GL_NUM_EXTENSIONS: GLenum = 0x821D`"]
2598    #[doc = "* **Group:** GetPName"]
2599    pub const GL_NUM_EXTENSIONS: GLenum = 0x821D;
2600    #[doc = "`GL_NUM_PROGRAM_BINARY_FORMATS: GLenum = 0x87FE`"]
2601    #[doc = "* **Group:** GetPName"]
2602    pub const GL_NUM_PROGRAM_BINARY_FORMATS: GLenum = 0x87FE;
2603    #[doc = "`GL_NUM_SAMPLE_COUNTS: GLenum = 0x9380`"]
2604    #[doc = "* **Group:** InternalFormatPName"]
2605    pub const GL_NUM_SAMPLE_COUNTS: GLenum = 0x9380;
2606    #[doc = "`GL_NUM_SHADER_BINARY_FORMATS: GLenum = 0x8DF9`"]
2607    #[doc = "* **Group:** GetPName"]
2608    pub const GL_NUM_SHADER_BINARY_FORMATS: GLenum = 0x8DF9;
2609    #[doc = "`GL_NUM_SHADING_LANGUAGE_VERSIONS: GLenum = 0x82E9`"]
2610    pub const GL_NUM_SHADING_LANGUAGE_VERSIONS: GLenum = 0x82E9;
2611    #[doc = "`GL_NUM_SPIR_V_EXTENSIONS: GLenum = 0x9554`"]
2612    pub const GL_NUM_SPIR_V_EXTENSIONS: GLenum = 0x9554;
2613    #[doc = "`GL_OBJECT_TYPE: GLenum = 0x9112`"]
2614    #[doc = "* **Group:** SyncParameterName"]
2615    pub const GL_OBJECT_TYPE: GLenum = 0x9112;
2616    #[doc = "`GL_OFFSET: GLenum = 0x92FC`"]
2617    #[doc = "* **Group:** ProgramResourceProperty"]
2618    pub const GL_OFFSET: GLenum = 0x92FC;
2619    #[doc = "`GL_ONE: GLenum = 1`"]
2620    #[doc = "* **Groups:** TextureSwizzle, BlendingFactor"]
2621    pub const GL_ONE: GLenum = 1;
2622    #[doc = "`GL_ONE_MINUS_CONSTANT_ALPHA: GLenum = 0x8004`"]
2623    #[doc = "* **Group:** BlendingFactor"]
2624    pub const GL_ONE_MINUS_CONSTANT_ALPHA: GLenum = 0x8004;
2625    #[doc = "`GL_ONE_MINUS_CONSTANT_COLOR: GLenum = 0x8002`"]
2626    #[doc = "* **Group:** BlendingFactor"]
2627    pub const GL_ONE_MINUS_CONSTANT_COLOR: GLenum = 0x8002;
2628    #[doc = "`GL_ONE_MINUS_DST_ALPHA: GLenum = 0x0305`"]
2629    #[doc = "* **Group:** BlendingFactor"]
2630    pub const GL_ONE_MINUS_DST_ALPHA: GLenum = 0x0305;
2631    #[doc = "`GL_ONE_MINUS_DST_COLOR: GLenum = 0x0307`"]
2632    #[doc = "* **Group:** BlendingFactor"]
2633    pub const GL_ONE_MINUS_DST_COLOR: GLenum = 0x0307;
2634    #[doc = "`GL_ONE_MINUS_SRC1_ALPHA: GLenum = 0x88FB`"]
2635    #[doc = "* **Group:** BlendingFactor"]
2636    pub const GL_ONE_MINUS_SRC1_ALPHA: GLenum = 0x88FB;
2637    #[doc = "`GL_ONE_MINUS_SRC1_COLOR: GLenum = 0x88FA`"]
2638    #[doc = "* **Group:** BlendingFactor"]
2639    pub const GL_ONE_MINUS_SRC1_COLOR: GLenum = 0x88FA;
2640    #[doc = "`GL_ONE_MINUS_SRC_ALPHA: GLenum = 0x0303`"]
2641    #[doc = "* **Group:** BlendingFactor"]
2642    pub const GL_ONE_MINUS_SRC_ALPHA: GLenum = 0x0303;
2643    #[doc = "`GL_ONE_MINUS_SRC_COLOR: GLenum = 0x0301`"]
2644    #[doc = "* **Group:** BlendingFactor"]
2645    pub const GL_ONE_MINUS_SRC_COLOR: GLenum = 0x0301;
2646    #[doc = "`GL_OR: GLenum = 0x1507`"]
2647    #[doc = "* **Group:** LogicOp"]
2648    pub const GL_OR: GLenum = 0x1507;
2649    #[doc = "`GL_OR_INVERTED: GLenum = 0x150D`"]
2650    #[doc = "* **Group:** LogicOp"]
2651    pub const GL_OR_INVERTED: GLenum = 0x150D;
2652    #[doc = "`GL_OR_REVERSE: GLenum = 0x150B`"]
2653    #[doc = "* **Group:** LogicOp"]
2654    pub const GL_OR_REVERSE: GLenum = 0x150B;
2655    #[doc = "`GL_OUT_OF_MEMORY: GLenum = 0x0505`"]
2656    #[doc = "* **Group:** ErrorCode"]
2657    pub const GL_OUT_OF_MEMORY: GLenum = 0x0505;
2658    #[doc = "`GL_OVERLAY: GLenum = 0x9296`"]
2659    pub const GL_OVERLAY: GLenum = 0x9296;
2660    #[doc = "`GL_PACK_ALIGNMENT: GLenum = 0x0D05`"]
2661    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2662    pub const GL_PACK_ALIGNMENT: GLenum = 0x0D05;
2663    #[doc = "`GL_PACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x912D`"]
2664    pub const GL_PACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x912D;
2665    #[doc = "`GL_PACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x912C`"]
2666    pub const GL_PACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x912C;
2667    #[doc = "`GL_PACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912E`"]
2668    pub const GL_PACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912E;
2669    #[doc = "`GL_PACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x912B`"]
2670    pub const GL_PACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x912B;
2671    #[doc = "`GL_PACK_IMAGE_HEIGHT: GLenum = 0x806C`"]
2672    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2673    pub const GL_PACK_IMAGE_HEIGHT: GLenum = 0x806C;
2674    #[doc = "`GL_PACK_LSB_FIRST: GLenum = 0x0D01`"]
2675    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2676    pub const GL_PACK_LSB_FIRST: GLenum = 0x0D01;
2677    #[doc = "`GL_PACK_ROW_LENGTH: GLenum = 0x0D02`"]
2678    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2679    pub const GL_PACK_ROW_LENGTH: GLenum = 0x0D02;
2680    #[doc = "`GL_PACK_SKIP_IMAGES: GLenum = 0x806B`"]
2681    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2682    pub const GL_PACK_SKIP_IMAGES: GLenum = 0x806B;
2683    #[doc = "`GL_PACK_SKIP_PIXELS: GLenum = 0x0D04`"]
2684    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2685    pub const GL_PACK_SKIP_PIXELS: GLenum = 0x0D04;
2686    #[doc = "`GL_PACK_SKIP_ROWS: GLenum = 0x0D03`"]
2687    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2688    pub const GL_PACK_SKIP_ROWS: GLenum = 0x0D03;
2689    #[doc = "`GL_PACK_SWAP_BYTES: GLenum = 0x0D00`"]
2690    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2691    pub const GL_PACK_SWAP_BYTES: GLenum = 0x0D00;
2692    #[doc = "`GL_PARAMETER_BUFFER: GLenum = 0x80EE`"]
2693    #[doc = "* **Group:** BufferTargetARB"]
2694    pub const GL_PARAMETER_BUFFER: GLenum = 0x80EE;
2695    #[doc = "`GL_PARAMETER_BUFFER_BINDING: GLenum = 0x80EF`"]
2696    pub const GL_PARAMETER_BUFFER_BINDING: GLenum = 0x80EF;
2697    #[doc = "`GL_PATCHES: GLenum = 0x000E`"]
2698    #[doc = "* **Group:** PrimitiveType"]
2699    pub const GL_PATCHES: GLenum = 0x000E;
2700    #[doc = "`GL_PATCH_DEFAULT_INNER_LEVEL: GLenum = 0x8E73`"]
2701    #[doc = "* **Group:** PatchParameterName"]
2702    pub const GL_PATCH_DEFAULT_INNER_LEVEL: GLenum = 0x8E73;
2703    #[doc = "`GL_PATCH_DEFAULT_OUTER_LEVEL: GLenum = 0x8E74`"]
2704    #[doc = "* **Group:** PatchParameterName"]
2705    pub const GL_PATCH_DEFAULT_OUTER_LEVEL: GLenum = 0x8E74;
2706    #[doc = "`GL_PATCH_VERTICES: GLenum = 0x8E72`"]
2707    #[doc = "* **Group:** PatchParameterName"]
2708    pub const GL_PATCH_VERTICES: GLenum = 0x8E72;
2709    #[doc = "`GL_PIXEL_BUFFER_BARRIER_BIT: GLbitfield = 0x00000080`"]
2710    #[doc = "* **Group:** MemoryBarrierMask"]
2711    pub const GL_PIXEL_BUFFER_BARRIER_BIT: GLbitfield = 0x00000080;
2712    #[doc = "`GL_PIXEL_PACK_BUFFER: GLenum = 0x88EB`"]
2713    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
2714    pub const GL_PIXEL_PACK_BUFFER: GLenum = 0x88EB;
2715    #[doc = "`GL_PIXEL_PACK_BUFFER_BINDING: GLenum = 0x88ED`"]
2716    #[doc = "* **Group:** GetPName"]
2717    pub const GL_PIXEL_PACK_BUFFER_BINDING: GLenum = 0x88ED;
2718    #[doc = "`GL_PIXEL_UNPACK_BUFFER: GLenum = 0x88EC`"]
2719    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
2720    pub const GL_PIXEL_UNPACK_BUFFER: GLenum = 0x88EC;
2721    #[doc = "`GL_PIXEL_UNPACK_BUFFER_BINDING: GLenum = 0x88EF`"]
2722    #[doc = "* **Group:** GetPName"]
2723    pub const GL_PIXEL_UNPACK_BUFFER_BINDING: GLenum = 0x88EF;
2724    #[doc = "`GL_POINT: GLenum = 0x1B00`"]
2725    #[doc = "* **Groups:** PolygonMode, MeshMode1, MeshMode2"]
2726    pub const GL_POINT: GLenum = 0x1B00;
2727    #[doc = "`GL_POINTS: GLenum = 0x0000`"]
2728    #[doc = "* **Group:** PrimitiveType"]
2729    pub const GL_POINTS: GLenum = 0x0000;
2730    #[doc = "`GL_POINT_FADE_THRESHOLD_SIZE: GLenum = 0x8128`"]
2731    #[doc = "* **Groups:** PointParameterNameSGIS, PointParameterNameARB, GetPName"]
2732    pub const GL_POINT_FADE_THRESHOLD_SIZE: GLenum = 0x8128;
2733    #[doc = "`GL_POINT_SIZE: GLenum = 0x0B11`"]
2734    #[doc = "* **Group:** GetPName"]
2735    pub const GL_POINT_SIZE: GLenum = 0x0B11;
2736    #[doc = "`GL_POINT_SIZE_GRANULARITY: GLenum = 0x0B13`"]
2737    #[doc = "* **Group:** GetPName"]
2738    pub const GL_POINT_SIZE_GRANULARITY: GLenum = 0x0B13;
2739    #[doc = "`GL_POINT_SIZE_RANGE: GLenum = 0x0B12`"]
2740    #[doc = "* **Group:** GetPName"]
2741    pub const GL_POINT_SIZE_RANGE: GLenum = 0x0B12;
2742    #[doc = "`GL_POINT_SPRITE_COORD_ORIGIN: GLenum = 0x8CA0`"]
2743    pub const GL_POINT_SPRITE_COORD_ORIGIN: GLenum = 0x8CA0;
2744    #[doc = "`GL_POLYGON_MODE: GLenum = 0x0B40`"]
2745    #[doc = "* **Group:** GetPName"]
2746    pub const GL_POLYGON_MODE: GLenum = 0x0B40;
2747    #[doc = "`GL_POLYGON_OFFSET_CLAMP: GLenum = 0x8E1B`"]
2748    pub const GL_POLYGON_OFFSET_CLAMP: GLenum = 0x8E1B;
2749    #[doc = "`GL_POLYGON_OFFSET_FACTOR: GLenum = 0x8038`"]
2750    #[doc = "* **Group:** GetPName"]
2751    pub const GL_POLYGON_OFFSET_FACTOR: GLenum = 0x8038;
2752    #[doc = "`GL_POLYGON_OFFSET_FILL: GLenum = 0x8037`"]
2753    #[doc = "* **Groups:** GetPName, EnableCap"]
2754    pub const GL_POLYGON_OFFSET_FILL: GLenum = 0x8037;
2755    #[doc = "`GL_POLYGON_OFFSET_LINE: GLenum = 0x2A02`"]
2756    #[doc = "* **Groups:** GetPName, EnableCap"]
2757    pub const GL_POLYGON_OFFSET_LINE: GLenum = 0x2A02;
2758    #[doc = "`GL_POLYGON_OFFSET_POINT: GLenum = 0x2A01`"]
2759    #[doc = "* **Groups:** GetPName, EnableCap"]
2760    pub const GL_POLYGON_OFFSET_POINT: GLenum = 0x2A01;
2761    #[doc = "`GL_POLYGON_OFFSET_UNITS: GLenum = 0x2A00`"]
2762    #[doc = "* **Group:** GetPName"]
2763    pub const GL_POLYGON_OFFSET_UNITS: GLenum = 0x2A00;
2764    #[doc = "`GL_POLYGON_SMOOTH: GLenum = 0x0B41`"]
2765    #[doc = "* **Groups:** GetPName, EnableCap"]
2766    pub const GL_POLYGON_SMOOTH: GLenum = 0x0B41;
2767    #[doc = "`GL_POLYGON_SMOOTH_HINT: GLenum = 0x0C53`"]
2768    #[doc = "* **Groups:** HintTarget, GetPName"]
2769    pub const GL_POLYGON_SMOOTH_HINT: GLenum = 0x0C53;
2770    #[doc = "`GL_PRIMITIVES_GENERATED: GLenum = 0x8C87`"]
2771    #[doc = "* **Group:** QueryTarget"]
2772    pub const GL_PRIMITIVES_GENERATED: GLenum = 0x8C87;
2773    #[doc = "`GL_PRIMITIVES_SUBMITTED: GLenum = 0x82EF`"]
2774    #[doc = "* **Group:** QueryTarget"]
2775    pub const GL_PRIMITIVES_SUBMITTED: GLenum = 0x82EF;
2776    #[doc = "`GL_PRIMITIVE_BOUNDING_BOX: GLenum = 0x92BE`"]
2777    pub const GL_PRIMITIVE_BOUNDING_BOX: GLenum = 0x92BE;
2778    #[doc = "`GL_PRIMITIVE_RESTART: GLenum = 0x8F9D`"]
2779    #[doc = "* **Group:** EnableCap"]
2780    pub const GL_PRIMITIVE_RESTART: GLenum = 0x8F9D;
2781    #[doc = "`GL_PRIMITIVE_RESTART_FIXED_INDEX: GLenum = 0x8D69`"]
2782    #[doc = "* **Group:** EnableCap"]
2783    pub const GL_PRIMITIVE_RESTART_FIXED_INDEX: GLenum = 0x8D69;
2784    #[doc = "`GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED: GLenum = 0x8221`"]
2785    pub const GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED: GLenum = 0x8221;
2786    #[doc = "`GL_PRIMITIVE_RESTART_INDEX: GLenum = 0x8F9E`"]
2787    #[doc = "* **Group:** GetPName"]
2788    pub const GL_PRIMITIVE_RESTART_INDEX: GLenum = 0x8F9E;
2789    #[doc = "`GL_PROGRAM: GLenum = 0x82E2`"]
2790    #[doc = "* **Group:** ObjectIdentifier"]
2791    pub const GL_PROGRAM: GLenum = 0x82E2;
2792    #[doc = "`GL_PROGRAM_BINARY_FORMATS: GLenum = 0x87FF`"]
2793    #[doc = "* **Group:** GetPName"]
2794    pub const GL_PROGRAM_BINARY_FORMATS: GLenum = 0x87FF;
2795    #[doc = "`GL_PROGRAM_BINARY_LENGTH: GLenum = 0x8741`"]
2796    #[doc = "* **Group:** ProgramPropertyARB"]
2797    pub const GL_PROGRAM_BINARY_LENGTH: GLenum = 0x8741;
2798    #[doc = "`GL_PROGRAM_BINARY_RETRIEVABLE_HINT: GLenum = 0x8257`"]
2799    #[doc = "* **Groups:** ProgramParameterPName, HintTarget"]
2800    pub const GL_PROGRAM_BINARY_RETRIEVABLE_HINT: GLenum = 0x8257;
2801    #[doc = "`GL_PROGRAM_INPUT: GLenum = 0x92E3`"]
2802    #[doc = "* **Group:** ProgramInterface"]
2803    pub const GL_PROGRAM_INPUT: GLenum = 0x92E3;
2804    #[doc = "`GL_PROGRAM_KHR: GLenum = 0x82E2`"]
2805    pub const GL_PROGRAM_KHR: GLenum = 0x82E2;
2806    #[doc = "`GL_PROGRAM_OUTPUT: GLenum = 0x92E4`"]
2807    #[doc = "* **Group:** ProgramInterface"]
2808    pub const GL_PROGRAM_OUTPUT: GLenum = 0x92E4;
2809    #[doc = "`GL_PROGRAM_PIPELINE: GLenum = 0x82E4`"]
2810    #[doc = "* **Group:** ObjectIdentifier"]
2811    pub const GL_PROGRAM_PIPELINE: GLenum = 0x82E4;
2812    #[doc = "`GL_PROGRAM_PIPELINE_BINDING: GLenum = 0x825A`"]
2813    #[doc = "* **Group:** GetPName"]
2814    pub const GL_PROGRAM_PIPELINE_BINDING: GLenum = 0x825A;
2815    #[doc = "`GL_PROGRAM_PIPELINE_KHR: GLenum = 0x82E4`"]
2816    pub const GL_PROGRAM_PIPELINE_KHR: GLenum = 0x82E4;
2817    #[doc = "`GL_PROGRAM_POINT_SIZE: GLenum = 0x8642`"]
2818    #[doc = "* **Groups:** GetPName, EnableCap"]
2819    #[doc = "* **Alias Of:** `GL_VERTEX_PROGRAM_POINT_SIZE`"]
2820    pub const GL_PROGRAM_POINT_SIZE: GLenum = 0x8642;
2821    #[doc = "`GL_PROGRAM_SEPARABLE: GLenum = 0x8258`"]
2822    #[doc = "* **Group:** ProgramParameterPName"]
2823    pub const GL_PROGRAM_SEPARABLE: GLenum = 0x8258;
2824    #[doc = "`GL_PROVOKING_VERTEX: GLenum = 0x8E4F`"]
2825    #[doc = "* **Group:** GetPName"]
2826    pub const GL_PROVOKING_VERTEX: GLenum = 0x8E4F;
2827    #[doc = "`GL_PROXY_TEXTURE_1D: GLenum = 0x8063`"]
2828    #[doc = "* **Group:** TextureTarget"]
2829    pub const GL_PROXY_TEXTURE_1D: GLenum = 0x8063;
2830    #[doc = "`GL_PROXY_TEXTURE_1D_ARRAY: GLenum = 0x8C19`"]
2831    #[doc = "* **Group:** TextureTarget"]
2832    pub const GL_PROXY_TEXTURE_1D_ARRAY: GLenum = 0x8C19;
2833    #[doc = "`GL_PROXY_TEXTURE_2D: GLenum = 0x8064`"]
2834    #[doc = "* **Group:** TextureTarget"]
2835    pub const GL_PROXY_TEXTURE_2D: GLenum = 0x8064;
2836    #[doc = "`GL_PROXY_TEXTURE_2D_ARRAY: GLenum = 0x8C1B`"]
2837    #[doc = "* **Group:** TextureTarget"]
2838    pub const GL_PROXY_TEXTURE_2D_ARRAY: GLenum = 0x8C1B;
2839    #[doc = "`GL_PROXY_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9101`"]
2840    #[doc = "* **Group:** TextureTarget"]
2841    pub const GL_PROXY_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9101;
2842    #[doc = "`GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9103`"]
2843    #[doc = "* **Group:** TextureTarget"]
2844    pub const GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9103;
2845    #[doc = "`GL_PROXY_TEXTURE_3D: GLenum = 0x8070`"]
2846    #[doc = "* **Group:** TextureTarget"]
2847    pub const GL_PROXY_TEXTURE_3D: GLenum = 0x8070;
2848    #[doc = "`GL_PROXY_TEXTURE_CUBE_MAP: GLenum = 0x851B`"]
2849    #[doc = "* **Group:** TextureTarget"]
2850    pub const GL_PROXY_TEXTURE_CUBE_MAP: GLenum = 0x851B;
2851    #[doc = "`GL_PROXY_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x900B`"]
2852    #[doc = "* **Group:** TextureTarget"]
2853    pub const GL_PROXY_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x900B;
2854    #[doc = "`GL_PROXY_TEXTURE_RECTANGLE: GLenum = 0x84F7`"]
2855    #[doc = "* **Group:** TextureTarget"]
2856    pub const GL_PROXY_TEXTURE_RECTANGLE: GLenum = 0x84F7;
2857    #[doc = "`GL_QUADS: GLenum = 0x0007`"]
2858    #[doc = "* **Group:** PrimitiveType"]
2859    pub const GL_QUADS: GLenum = 0x0007;
2860    #[doc = "`GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: GLenum = 0x8E4C`"]
2861    pub const GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: GLenum = 0x8E4C;
2862    #[doc = "`GL_QUERY: GLenum = 0x82E3`"]
2863    #[doc = "* **Group:** ObjectIdentifier"]
2864    pub const GL_QUERY: GLenum = 0x82E3;
2865    #[doc = "`GL_QUERY_BUFFER: GLenum = 0x9192`"]
2866    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
2867    pub const GL_QUERY_BUFFER: GLenum = 0x9192;
2868    #[doc = "`GL_QUERY_BUFFER_BARRIER_BIT: GLbitfield = 0x00008000`"]
2869    #[doc = "* **Group:** MemoryBarrierMask"]
2870    pub const GL_QUERY_BUFFER_BARRIER_BIT: GLbitfield = 0x00008000;
2871    #[doc = "`GL_QUERY_BUFFER_BINDING: GLenum = 0x9193`"]
2872    pub const GL_QUERY_BUFFER_BINDING: GLenum = 0x9193;
2873    #[doc = "`GL_QUERY_BY_REGION_NO_WAIT: GLenum = 0x8E16`"]
2874    #[doc = "* **Group:** ConditionalRenderMode"]
2875    pub const GL_QUERY_BY_REGION_NO_WAIT: GLenum = 0x8E16;
2876    #[doc = "`GL_QUERY_BY_REGION_NO_WAIT_INVERTED: GLenum = 0x8E1A`"]
2877    #[doc = "* **Group:** ConditionalRenderMode"]
2878    pub const GL_QUERY_BY_REGION_NO_WAIT_INVERTED: GLenum = 0x8E1A;
2879    #[doc = "`GL_QUERY_BY_REGION_WAIT: GLenum = 0x8E15`"]
2880    #[doc = "* **Group:** ConditionalRenderMode"]
2881    pub const GL_QUERY_BY_REGION_WAIT: GLenum = 0x8E15;
2882    #[doc = "`GL_QUERY_BY_REGION_WAIT_INVERTED: GLenum = 0x8E19`"]
2883    #[doc = "* **Group:** ConditionalRenderMode"]
2884    pub const GL_QUERY_BY_REGION_WAIT_INVERTED: GLenum = 0x8E19;
2885    #[doc = "`GL_QUERY_COUNTER_BITS: GLenum = 0x8864`"]
2886    #[doc = "* **Group:** QueryParameterName"]
2887    pub const GL_QUERY_COUNTER_BITS: GLenum = 0x8864;
2888    #[doc = "`GL_QUERY_COUNTER_BITS_EXT: GLenum = 0x8864`"]
2889    pub const GL_QUERY_COUNTER_BITS_EXT: GLenum = 0x8864;
2890    #[doc = "`GL_QUERY_KHR: GLenum = 0x82E3`"]
2891    pub const GL_QUERY_KHR: GLenum = 0x82E3;
2892    #[doc = "`GL_QUERY_NO_WAIT: GLenum = 0x8E14`"]
2893    #[doc = "* **Group:** ConditionalRenderMode"]
2894    pub const GL_QUERY_NO_WAIT: GLenum = 0x8E14;
2895    #[doc = "`GL_QUERY_NO_WAIT_INVERTED: GLenum = 0x8E18`"]
2896    #[doc = "* **Group:** ConditionalRenderMode"]
2897    pub const GL_QUERY_NO_WAIT_INVERTED: GLenum = 0x8E18;
2898    #[doc = "`GL_QUERY_RESULT: GLenum = 0x8866`"]
2899    #[doc = "* **Group:** QueryObjectParameterName"]
2900    pub const GL_QUERY_RESULT: GLenum = 0x8866;
2901    #[doc = "`GL_QUERY_RESULT_AVAILABLE: GLenum = 0x8867`"]
2902    #[doc = "* **Group:** QueryObjectParameterName"]
2903    pub const GL_QUERY_RESULT_AVAILABLE: GLenum = 0x8867;
2904    #[doc = "`GL_QUERY_RESULT_AVAILABLE_EXT: GLenum = 0x8867`"]
2905    pub const GL_QUERY_RESULT_AVAILABLE_EXT: GLenum = 0x8867;
2906    #[doc = "`GL_QUERY_RESULT_EXT: GLenum = 0x8866`"]
2907    pub const GL_QUERY_RESULT_EXT: GLenum = 0x8866;
2908    #[doc = "`GL_QUERY_RESULT_NO_WAIT: GLenum = 0x9194`"]
2909    #[doc = "* **Group:** QueryObjectParameterName"]
2910    pub const GL_QUERY_RESULT_NO_WAIT: GLenum = 0x9194;
2911    #[doc = "`GL_QUERY_TARGET: GLenum = 0x82EA`"]
2912    #[doc = "* **Group:** QueryObjectParameterName"]
2913    pub const GL_QUERY_TARGET: GLenum = 0x82EA;
2914    #[doc = "`GL_QUERY_WAIT: GLenum = 0x8E13`"]
2915    #[doc = "* **Group:** ConditionalRenderMode"]
2916    pub const GL_QUERY_WAIT: GLenum = 0x8E13;
2917    #[doc = "`GL_QUERY_WAIT_INVERTED: GLenum = 0x8E17`"]
2918    #[doc = "* **Group:** ConditionalRenderMode"]
2919    pub const GL_QUERY_WAIT_INVERTED: GLenum = 0x8E17;
2920    #[doc = "`GL_R11F_G11F_B10F: GLenum = 0x8C3A`"]
2921    #[doc = "* **Group:** InternalFormat"]
2922    pub const GL_R11F_G11F_B10F: GLenum = 0x8C3A;
2923    #[doc = "`GL_R16: GLenum = 0x822A`"]
2924    #[doc = "* **Group:** InternalFormat"]
2925    pub const GL_R16: GLenum = 0x822A;
2926    #[doc = "`GL_R16F: GLenum = 0x822D`"]
2927    #[doc = "* **Group:** InternalFormat"]
2928    pub const GL_R16F: GLenum = 0x822D;
2929    #[doc = "`GL_R16I: GLenum = 0x8233`"]
2930    #[doc = "* **Group:** InternalFormat"]
2931    pub const GL_R16I: GLenum = 0x8233;
2932    #[doc = "`GL_R16UI: GLenum = 0x8234`"]
2933    #[doc = "* **Group:** InternalFormat"]
2934    pub const GL_R16UI: GLenum = 0x8234;
2935    #[doc = "`GL_R16_SNORM: GLenum = 0x8F98`"]
2936    #[doc = "* **Group:** InternalFormat"]
2937    pub const GL_R16_SNORM: GLenum = 0x8F98;
2938    #[doc = "`GL_R32F: GLenum = 0x822E`"]
2939    #[doc = "* **Group:** InternalFormat"]
2940    pub const GL_R32F: GLenum = 0x822E;
2941    #[doc = "`GL_R32I: GLenum = 0x8235`"]
2942    #[doc = "* **Group:** InternalFormat"]
2943    pub const GL_R32I: GLenum = 0x8235;
2944    #[doc = "`GL_R32UI: GLenum = 0x8236`"]
2945    #[doc = "* **Group:** InternalFormat"]
2946    pub const GL_R32UI: GLenum = 0x8236;
2947    #[doc = "`GL_R3_G3_B2: GLenum = 0x2A10`"]
2948    #[doc = "* **Group:** InternalFormat"]
2949    pub const GL_R3_G3_B2: GLenum = 0x2A10;
2950    #[doc = "`GL_R8: GLenum = 0x8229`"]
2951    #[doc = "* **Group:** InternalFormat"]
2952    pub const GL_R8: GLenum = 0x8229;
2953    #[doc = "`GL_R8I: GLenum = 0x8231`"]
2954    #[doc = "* **Group:** InternalFormat"]
2955    pub const GL_R8I: GLenum = 0x8231;
2956    #[doc = "`GL_R8UI: GLenum = 0x8232`"]
2957    #[doc = "* **Group:** InternalFormat"]
2958    pub const GL_R8UI: GLenum = 0x8232;
2959    #[doc = "`GL_R8_SNORM: GLenum = 0x8F94`"]
2960    #[doc = "* **Group:** InternalFormat"]
2961    pub const GL_R8_SNORM: GLenum = 0x8F94;
2962    #[doc = "`GL_RASTERIZER_DISCARD: GLenum = 0x8C89`"]
2963    #[doc = "* **Group:** EnableCap"]
2964    pub const GL_RASTERIZER_DISCARD: GLenum = 0x8C89;
2965    #[doc = "`GL_READ_BUFFER: GLenum = 0x0C02`"]
2966    #[doc = "* **Group:** GetPName"]
2967    pub const GL_READ_BUFFER: GLenum = 0x0C02;
2968    #[doc = "`GL_READ_FRAMEBUFFER: GLenum = 0x8CA8`"]
2969    #[doc = "* **Groups:** CheckFramebufferStatusTarget, FramebufferTarget"]
2970    pub const GL_READ_FRAMEBUFFER: GLenum = 0x8CA8;
2971    #[doc = "`GL_READ_FRAMEBUFFER_BINDING: GLenum = 0x8CAA`"]
2972    #[doc = "* **Group:** GetPName"]
2973    pub const GL_READ_FRAMEBUFFER_BINDING: GLenum = 0x8CAA;
2974    #[doc = "`GL_READ_ONLY: GLenum = 0x88B8`"]
2975    #[doc = "* **Group:** BufferAccessARB"]
2976    pub const GL_READ_ONLY: GLenum = 0x88B8;
2977    #[doc = "`GL_READ_PIXELS: GLenum = 0x828C`"]
2978    #[doc = "* **Group:** InternalFormatPName"]
2979    pub const GL_READ_PIXELS: GLenum = 0x828C;
2980    #[doc = "`GL_READ_PIXELS_FORMAT: GLenum = 0x828D`"]
2981    #[doc = "* **Group:** InternalFormatPName"]
2982    pub const GL_READ_PIXELS_FORMAT: GLenum = 0x828D;
2983    #[doc = "`GL_READ_PIXELS_TYPE: GLenum = 0x828E`"]
2984    #[doc = "* **Group:** InternalFormatPName"]
2985    pub const GL_READ_PIXELS_TYPE: GLenum = 0x828E;
2986    #[doc = "`GL_READ_WRITE: GLenum = 0x88BA`"]
2987    #[doc = "* **Group:** BufferAccessARB"]
2988    pub const GL_READ_WRITE: GLenum = 0x88BA;
2989    #[doc = "`GL_RED: GLenum = 0x1903`"]
2990    #[doc = "* **Groups:** TextureSwizzle, PixelFormat, InternalFormat"]
2991    pub const GL_RED: GLenum = 0x1903;
2992    #[doc = "`GL_RED_BITS: GLenum = 0x0D52`"]
2993    #[doc = "* **Group:** GetPName"]
2994    pub const GL_RED_BITS: GLenum = 0x0D52;
2995    #[doc = "`GL_RED_INTEGER: GLenum = 0x8D94`"]
2996    #[doc = "* **Group:** PixelFormat"]
2997    pub const GL_RED_INTEGER: GLenum = 0x8D94;
2998    #[doc = "`GL_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x930B`"]
2999    #[doc = "* **Group:** ProgramResourceProperty"]
3000    pub const GL_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x930B;
3001    #[doc = "`GL_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x930A`"]
3002    #[doc = "* **Group:** ProgramResourceProperty"]
3003    pub const GL_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x930A;
3004    #[doc = "`GL_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x9309`"]
3005    #[doc = "* **Group:** ProgramResourceProperty"]
3006    pub const GL_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x9309;
3007    #[doc = "`GL_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x9307`"]
3008    #[doc = "* **Group:** ProgramResourceProperty"]
3009    pub const GL_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x9307;
3010    #[doc = "`GL_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x9308`"]
3011    #[doc = "* **Group:** ProgramResourceProperty"]
3012    pub const GL_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x9308;
3013    #[doc = "`GL_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x9306`"]
3014    #[doc = "* **Group:** ProgramResourceProperty"]
3015    pub const GL_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x9306;
3016    #[doc = "`GL_RENDERBUFFER: GLenum = 0x8D41`"]
3017    #[doc = "* **Groups:** ObjectIdentifier, RenderbufferTarget, CopyImageSubDataTarget"]
3018    pub const GL_RENDERBUFFER: GLenum = 0x8D41;
3019    #[doc = "`GL_RENDERBUFFER_ALPHA_SIZE: GLenum = 0x8D53`"]
3020    #[doc = "* **Group:** RenderbufferParameterName"]
3021    pub const GL_RENDERBUFFER_ALPHA_SIZE: GLenum = 0x8D53;
3022    #[doc = "`GL_RENDERBUFFER_BINDING: GLenum = 0x8CA7`"]
3023    #[doc = "* **Group:** GetPName"]
3024    pub const GL_RENDERBUFFER_BINDING: GLenum = 0x8CA7;
3025    #[doc = "`GL_RENDERBUFFER_BLUE_SIZE: GLenum = 0x8D52`"]
3026    #[doc = "* **Group:** RenderbufferParameterName"]
3027    pub const GL_RENDERBUFFER_BLUE_SIZE: GLenum = 0x8D52;
3028    #[doc = "`GL_RENDERBUFFER_DEPTH_SIZE: GLenum = 0x8D54`"]
3029    #[doc = "* **Group:** RenderbufferParameterName"]
3030    pub const GL_RENDERBUFFER_DEPTH_SIZE: GLenum = 0x8D54;
3031    #[doc = "`GL_RENDERBUFFER_GREEN_SIZE: GLenum = 0x8D51`"]
3032    #[doc = "* **Group:** RenderbufferParameterName"]
3033    pub const GL_RENDERBUFFER_GREEN_SIZE: GLenum = 0x8D51;
3034    #[doc = "`GL_RENDERBUFFER_HEIGHT: GLenum = 0x8D43`"]
3035    #[doc = "* **Group:** RenderbufferParameterName"]
3036    pub const GL_RENDERBUFFER_HEIGHT: GLenum = 0x8D43;
3037    #[doc = "`GL_RENDERBUFFER_INTERNAL_FORMAT: GLenum = 0x8D44`"]
3038    #[doc = "* **Group:** RenderbufferParameterName"]
3039    pub const GL_RENDERBUFFER_INTERNAL_FORMAT: GLenum = 0x8D44;
3040    #[doc = "`GL_RENDERBUFFER_RED_SIZE: GLenum = 0x8D50`"]
3041    #[doc = "* **Group:** RenderbufferParameterName"]
3042    pub const GL_RENDERBUFFER_RED_SIZE: GLenum = 0x8D50;
3043    #[doc = "`GL_RENDERBUFFER_SAMPLES: GLenum = 0x8CAB`"]
3044    #[doc = "* **Group:** RenderbufferParameterName"]
3045    pub const GL_RENDERBUFFER_SAMPLES: GLenum = 0x8CAB;
3046    #[doc = "`GL_RENDERBUFFER_STENCIL_SIZE: GLenum = 0x8D55`"]
3047    #[doc = "* **Group:** RenderbufferParameterName"]
3048    pub const GL_RENDERBUFFER_STENCIL_SIZE: GLenum = 0x8D55;
3049    #[doc = "`GL_RENDERBUFFER_WIDTH: GLenum = 0x8D42`"]
3050    #[doc = "* **Group:** RenderbufferParameterName"]
3051    pub const GL_RENDERBUFFER_WIDTH: GLenum = 0x8D42;
3052    #[doc = "`GL_RENDERER: GLenum = 0x1F01`"]
3053    #[doc = "* **Group:** StringName"]
3054    pub const GL_RENDERER: GLenum = 0x1F01;
3055    #[doc = "`GL_REPEAT: GLenum = 0x2901`"]
3056    #[doc = "* **Group:** TextureWrapMode"]
3057    pub const GL_REPEAT: GLenum = 0x2901;
3058    #[doc = "`GL_REPLACE: GLenum = 0x1E01`"]
3059    #[doc = "* **Groups:** StencilOp, LightEnvModeSGIX"]
3060    pub const GL_REPLACE: GLenum = 0x1E01;
3061    #[doc = "`GL_RESET_NOTIFICATION_STRATEGY: GLenum = 0x8256`"]
3062    pub const GL_RESET_NOTIFICATION_STRATEGY: GLenum = 0x8256;
3063    #[doc = "`GL_RG: GLenum = 0x8227`"]
3064    #[doc = "* **Groups:** InternalFormat, PixelFormat"]
3065    pub const GL_RG: GLenum = 0x8227;
3066    #[doc = "`GL_RG16: GLenum = 0x822C`"]
3067    #[doc = "* **Group:** InternalFormat"]
3068    pub const GL_RG16: GLenum = 0x822C;
3069    #[doc = "`GL_RG16F: GLenum = 0x822F`"]
3070    #[doc = "* **Group:** InternalFormat"]
3071    pub const GL_RG16F: GLenum = 0x822F;
3072    #[doc = "`GL_RG16I: GLenum = 0x8239`"]
3073    #[doc = "* **Group:** InternalFormat"]
3074    pub const GL_RG16I: GLenum = 0x8239;
3075    #[doc = "`GL_RG16UI: GLenum = 0x823A`"]
3076    #[doc = "* **Group:** InternalFormat"]
3077    pub const GL_RG16UI: GLenum = 0x823A;
3078    #[doc = "`GL_RG16_SNORM: GLenum = 0x8F99`"]
3079    #[doc = "* **Group:** InternalFormat"]
3080    pub const GL_RG16_SNORM: GLenum = 0x8F99;
3081    #[doc = "`GL_RG32F: GLenum = 0x8230`"]
3082    #[doc = "* **Group:** InternalFormat"]
3083    pub const GL_RG32F: GLenum = 0x8230;
3084    #[doc = "`GL_RG32I: GLenum = 0x823B`"]
3085    #[doc = "* **Group:** InternalFormat"]
3086    pub const GL_RG32I: GLenum = 0x823B;
3087    #[doc = "`GL_RG32UI: GLenum = 0x823C`"]
3088    #[doc = "* **Group:** InternalFormat"]
3089    pub const GL_RG32UI: GLenum = 0x823C;
3090    #[doc = "`GL_RG8: GLenum = 0x822B`"]
3091    #[doc = "* **Group:** InternalFormat"]
3092    pub const GL_RG8: GLenum = 0x822B;
3093    #[doc = "`GL_RG8I: GLenum = 0x8237`"]
3094    #[doc = "* **Group:** InternalFormat"]
3095    pub const GL_RG8I: GLenum = 0x8237;
3096    #[doc = "`GL_RG8UI: GLenum = 0x8238`"]
3097    #[doc = "* **Group:** InternalFormat"]
3098    pub const GL_RG8UI: GLenum = 0x8238;
3099    #[doc = "`GL_RG8_SNORM: GLenum = 0x8F95`"]
3100    #[doc = "* **Group:** InternalFormat"]
3101    pub const GL_RG8_SNORM: GLenum = 0x8F95;
3102    #[doc = "`GL_RGB: GLenum = 0x1907`"]
3103    #[doc = "* **Groups:** PixelTexGenMode, CombinerPortionNV, PathColorFormat, CombinerComponentUsageNV, PixelFormat, InternalFormat"]
3104    pub const GL_RGB: GLenum = 0x1907;
3105    #[doc = "`GL_RGB10: GLenum = 0x8052`"]
3106    #[doc = "* **Group:** InternalFormat"]
3107    pub const GL_RGB10: GLenum = 0x8052;
3108    #[doc = "`GL_RGB10_A2: GLenum = 0x8059`"]
3109    #[doc = "* **Group:** InternalFormat"]
3110    pub const GL_RGB10_A2: GLenum = 0x8059;
3111    #[doc = "`GL_RGB10_A2UI: GLenum = 0x906F`"]
3112    #[doc = "* **Group:** InternalFormat"]
3113    pub const GL_RGB10_A2UI: GLenum = 0x906F;
3114    #[doc = "`GL_RGB12: GLenum = 0x8053`"]
3115    #[doc = "* **Group:** InternalFormat"]
3116    pub const GL_RGB12: GLenum = 0x8053;
3117    #[doc = "`GL_RGB16: GLenum = 0x8054`"]
3118    #[doc = "* **Group:** InternalFormat"]
3119    pub const GL_RGB16: GLenum = 0x8054;
3120    #[doc = "`GL_RGB16F: GLenum = 0x881B`"]
3121    #[doc = "* **Group:** InternalFormat"]
3122    pub const GL_RGB16F: GLenum = 0x881B;
3123    #[doc = "`GL_RGB16I: GLenum = 0x8D89`"]
3124    #[doc = "* **Group:** InternalFormat"]
3125    pub const GL_RGB16I: GLenum = 0x8D89;
3126    #[doc = "`GL_RGB16UI: GLenum = 0x8D77`"]
3127    #[doc = "* **Group:** InternalFormat"]
3128    pub const GL_RGB16UI: GLenum = 0x8D77;
3129    #[doc = "`GL_RGB16_SNORM: GLenum = 0x8F9A`"]
3130    #[doc = "* **Group:** InternalFormat"]
3131    pub const GL_RGB16_SNORM: GLenum = 0x8F9A;
3132    #[doc = "`GL_RGB32F: GLenum = 0x8815`"]
3133    #[doc = "* **Group:** InternalFormat"]
3134    pub const GL_RGB32F: GLenum = 0x8815;
3135    #[doc = "`GL_RGB32I: GLenum = 0x8D83`"]
3136    #[doc = "* **Group:** InternalFormat"]
3137    pub const GL_RGB32I: GLenum = 0x8D83;
3138    #[doc = "`GL_RGB32UI: GLenum = 0x8D71`"]
3139    #[doc = "* **Group:** InternalFormat"]
3140    pub const GL_RGB32UI: GLenum = 0x8D71;
3141    #[doc = "`GL_RGB4: GLenum = 0x804F`"]
3142    #[doc = "* **Group:** InternalFormat"]
3143    pub const GL_RGB4: GLenum = 0x804F;
3144    #[doc = "`GL_RGB5: GLenum = 0x8050`"]
3145    #[doc = "* **Group:** InternalFormat"]
3146    pub const GL_RGB5: GLenum = 0x8050;
3147    #[doc = "`GL_RGB565: GLenum = 0x8D62`"]
3148    pub const GL_RGB565: GLenum = 0x8D62;
3149    #[doc = "`GL_RGB5_A1: GLenum = 0x8057`"]
3150    #[doc = "* **Group:** InternalFormat"]
3151    pub const GL_RGB5_A1: GLenum = 0x8057;
3152    #[doc = "`GL_RGB8: GLenum = 0x8051`"]
3153    #[doc = "* **Group:** InternalFormat"]
3154    pub const GL_RGB8: GLenum = 0x8051;
3155    #[doc = "`GL_RGB8I: GLenum = 0x8D8F`"]
3156    #[doc = "* **Group:** InternalFormat"]
3157    pub const GL_RGB8I: GLenum = 0x8D8F;
3158    #[doc = "`GL_RGB8UI: GLenum = 0x8D7D`"]
3159    #[doc = "* **Group:** InternalFormat"]
3160    pub const GL_RGB8UI: GLenum = 0x8D7D;
3161    #[doc = "`GL_RGB8_SNORM: GLenum = 0x8F96`"]
3162    #[doc = "* **Group:** InternalFormat"]
3163    pub const GL_RGB8_SNORM: GLenum = 0x8F96;
3164    #[doc = "`GL_RGB9_E5: GLenum = 0x8C3D`"]
3165    #[doc = "* **Group:** InternalFormat"]
3166    pub const GL_RGB9_E5: GLenum = 0x8C3D;
3167    #[doc = "`GL_RGBA: GLenum = 0x1908`"]
3168    #[doc = "* **Groups:** PixelTexGenMode, PathColorFormat, PixelFormat, InternalFormat"]
3169    pub const GL_RGBA: GLenum = 0x1908;
3170    #[doc = "`GL_RGBA12: GLenum = 0x805A`"]
3171    #[doc = "* **Group:** InternalFormat"]
3172    pub const GL_RGBA12: GLenum = 0x805A;
3173    #[doc = "`GL_RGBA16: GLenum = 0x805B`"]
3174    #[doc = "* **Group:** InternalFormat"]
3175    pub const GL_RGBA16: GLenum = 0x805B;
3176    #[doc = "`GL_RGBA16F: GLenum = 0x881A`"]
3177    #[doc = "* **Group:** InternalFormat"]
3178    pub const GL_RGBA16F: GLenum = 0x881A;
3179    #[doc = "`GL_RGBA16I: GLenum = 0x8D88`"]
3180    #[doc = "* **Group:** InternalFormat"]
3181    pub const GL_RGBA16I: GLenum = 0x8D88;
3182    #[doc = "`GL_RGBA16UI: GLenum = 0x8D76`"]
3183    #[doc = "* **Group:** InternalFormat"]
3184    pub const GL_RGBA16UI: GLenum = 0x8D76;
3185    #[doc = "`GL_RGBA16_SNORM: GLenum = 0x8F9B`"]
3186    pub const GL_RGBA16_SNORM: GLenum = 0x8F9B;
3187    #[doc = "`GL_RGBA2: GLenum = 0x8055`"]
3188    pub const GL_RGBA2: GLenum = 0x8055;
3189    #[doc = "`GL_RGBA32F: GLenum = 0x8814`"]
3190    #[doc = "* **Group:** InternalFormat"]
3191    pub const GL_RGBA32F: GLenum = 0x8814;
3192    #[doc = "`GL_RGBA32I: GLenum = 0x8D82`"]
3193    #[doc = "* **Group:** InternalFormat"]
3194    pub const GL_RGBA32I: GLenum = 0x8D82;
3195    #[doc = "`GL_RGBA32UI: GLenum = 0x8D70`"]
3196    #[doc = "* **Group:** InternalFormat"]
3197    pub const GL_RGBA32UI: GLenum = 0x8D70;
3198    #[doc = "`GL_RGBA4: GLenum = 0x8056`"]
3199    #[doc = "* **Group:** InternalFormat"]
3200    pub const GL_RGBA4: GLenum = 0x8056;
3201    #[doc = "`GL_RGBA8: GLenum = 0x8058`"]
3202    #[doc = "* **Group:** InternalFormat"]
3203    pub const GL_RGBA8: GLenum = 0x8058;
3204    #[doc = "`GL_RGBA8I: GLenum = 0x8D8E`"]
3205    #[doc = "* **Group:** InternalFormat"]
3206    pub const GL_RGBA8I: GLenum = 0x8D8E;
3207    #[doc = "`GL_RGBA8UI: GLenum = 0x8D7C`"]
3208    #[doc = "* **Group:** InternalFormat"]
3209    pub const GL_RGBA8UI: GLenum = 0x8D7C;
3210    #[doc = "`GL_RGBA8_SNORM: GLenum = 0x8F97`"]
3211    #[doc = "* **Group:** InternalFormat"]
3212    pub const GL_RGBA8_SNORM: GLenum = 0x8F97;
3213    #[doc = "`GL_RGBA_INTEGER: GLenum = 0x8D99`"]
3214    #[doc = "* **Group:** PixelFormat"]
3215    pub const GL_RGBA_INTEGER: GLenum = 0x8D99;
3216    #[doc = "`GL_RGB_INTEGER: GLenum = 0x8D98`"]
3217    #[doc = "* **Group:** PixelFormat"]
3218    pub const GL_RGB_INTEGER: GLenum = 0x8D98;
3219    #[doc = "`GL_RG_INTEGER: GLenum = 0x8228`"]
3220    #[doc = "* **Group:** PixelFormat"]
3221    pub const GL_RG_INTEGER: GLenum = 0x8228;
3222    #[doc = "`GL_RIGHT: GLenum = 0x0407`"]
3223    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
3224    pub const GL_RIGHT: GLenum = 0x0407;
3225    #[doc = "`GL_SAMPLER: GLenum = 0x82E6`"]
3226    #[doc = "* **Group:** ObjectIdentifier"]
3227    pub const GL_SAMPLER: GLenum = 0x82E6;
3228    #[doc = "`GL_SAMPLER_1D: GLenum = 0x8B5D`"]
3229    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3230    pub const GL_SAMPLER_1D: GLenum = 0x8B5D;
3231    #[doc = "`GL_SAMPLER_1D_ARRAY: GLenum = 0x8DC0`"]
3232    #[doc = "* **Groups:** GlslTypeToken, UniformType"]
3233    pub const GL_SAMPLER_1D_ARRAY: GLenum = 0x8DC0;
3234    #[doc = "`GL_SAMPLER_1D_ARRAY_SHADOW: GLenum = 0x8DC3`"]
3235    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3236    pub const GL_SAMPLER_1D_ARRAY_SHADOW: GLenum = 0x8DC3;
3237    #[doc = "`GL_SAMPLER_1D_SHADOW: GLenum = 0x8B61`"]
3238    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3239    pub const GL_SAMPLER_1D_SHADOW: GLenum = 0x8B61;
3240    #[doc = "`GL_SAMPLER_2D: GLenum = 0x8B5E`"]
3241    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3242    pub const GL_SAMPLER_2D: GLenum = 0x8B5E;
3243    #[doc = "`GL_SAMPLER_2D_ARRAY: GLenum = 0x8DC1`"]
3244    #[doc = "* **Groups:** GlslTypeToken, UniformType"]
3245    pub const GL_SAMPLER_2D_ARRAY: GLenum = 0x8DC1;
3246    #[doc = "`GL_SAMPLER_2D_ARRAY_SHADOW: GLenum = 0x8DC4`"]
3247    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3248    pub const GL_SAMPLER_2D_ARRAY_SHADOW: GLenum = 0x8DC4;
3249    #[doc = "`GL_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9108`"]
3250    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3251    pub const GL_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9108;
3252    #[doc = "`GL_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910B`"]
3253    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3254    pub const GL_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910B;
3255    #[doc = "`GL_SAMPLER_2D_RECT: GLenum = 0x8B63`"]
3256    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3257    pub const GL_SAMPLER_2D_RECT: GLenum = 0x8B63;
3258    #[doc = "`GL_SAMPLER_2D_RECT_SHADOW: GLenum = 0x8B64`"]
3259    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3260    pub const GL_SAMPLER_2D_RECT_SHADOW: GLenum = 0x8B64;
3261    #[doc = "`GL_SAMPLER_2D_SHADOW: GLenum = 0x8B62`"]
3262    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3263    pub const GL_SAMPLER_2D_SHADOW: GLenum = 0x8B62;
3264    #[doc = "`GL_SAMPLER_3D: GLenum = 0x8B5F`"]
3265    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3266    pub const GL_SAMPLER_3D: GLenum = 0x8B5F;
3267    #[doc = "`GL_SAMPLER_BINDING: GLenum = 0x8919`"]
3268    #[doc = "* **Group:** GetPName"]
3269    pub const GL_SAMPLER_BINDING: GLenum = 0x8919;
3270    #[doc = "`GL_SAMPLER_BUFFER: GLenum = 0x8DC2`"]
3271    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3272    pub const GL_SAMPLER_BUFFER: GLenum = 0x8DC2;
3273    #[doc = "`GL_SAMPLER_CUBE: GLenum = 0x8B60`"]
3274    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3275    pub const GL_SAMPLER_CUBE: GLenum = 0x8B60;
3276    #[doc = "`GL_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900C`"]
3277    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3278    pub const GL_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900C;
3279    #[doc = "`GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW: GLenum = 0x900D`"]
3280    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3281    pub const GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW: GLenum = 0x900D;
3282    #[doc = "`GL_SAMPLER_CUBE_SHADOW: GLenum = 0x8DC5`"]
3283    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3284    pub const GL_SAMPLER_CUBE_SHADOW: GLenum = 0x8DC5;
3285    #[doc = "`GL_SAMPLER_KHR: GLenum = 0x82E6`"]
3286    pub const GL_SAMPLER_KHR: GLenum = 0x82E6;
3287    #[doc = "`GL_SAMPLES: GLenum = 0x80A9`"]
3288    #[doc = "* **Groups:** GetFramebufferParameter, GetPName, InternalFormatPName"]
3289    pub const GL_SAMPLES: GLenum = 0x80A9;
3290    #[doc = "`GL_SAMPLES_PASSED: GLenum = 0x8914`"]
3291    #[doc = "* **Group:** QueryTarget"]
3292    pub const GL_SAMPLES_PASSED: GLenum = 0x8914;
3293    #[doc = "`GL_SAMPLE_ALPHA_TO_COVERAGE: GLenum = 0x809E`"]
3294    #[doc = "* **Group:** EnableCap"]
3295    pub const GL_SAMPLE_ALPHA_TO_COVERAGE: GLenum = 0x809E;
3296    #[doc = "`GL_SAMPLE_ALPHA_TO_ONE: GLenum = 0x809F`"]
3297    #[doc = "* **Group:** EnableCap"]
3298    pub const GL_SAMPLE_ALPHA_TO_ONE: GLenum = 0x809F;
3299    #[doc = "`GL_SAMPLE_BUFFERS: GLenum = 0x80A8`"]
3300    #[doc = "* **Groups:** GetFramebufferParameter, GetPName"]
3301    pub const GL_SAMPLE_BUFFERS: GLenum = 0x80A8;
3302    #[doc = "`GL_SAMPLE_COVERAGE: GLenum = 0x80A0`"]
3303    #[doc = "* **Group:** EnableCap"]
3304    pub const GL_SAMPLE_COVERAGE: GLenum = 0x80A0;
3305    #[doc = "`GL_SAMPLE_COVERAGE_INVERT: GLenum = 0x80AB`"]
3306    #[doc = "* **Group:** GetPName"]
3307    pub const GL_SAMPLE_COVERAGE_INVERT: GLenum = 0x80AB;
3308    #[doc = "`GL_SAMPLE_COVERAGE_VALUE: GLenum = 0x80AA`"]
3309    #[doc = "* **Group:** GetPName"]
3310    pub const GL_SAMPLE_COVERAGE_VALUE: GLenum = 0x80AA;
3311    #[doc = "`GL_SAMPLE_MASK: GLenum = 0x8E51`"]
3312    #[doc = "* **Group:** EnableCap"]
3313    pub const GL_SAMPLE_MASK: GLenum = 0x8E51;
3314    #[doc = "`GL_SAMPLE_MASK_VALUE: GLenum = 0x8E52`"]
3315    pub const GL_SAMPLE_MASK_VALUE: GLenum = 0x8E52;
3316    #[doc = "`GL_SAMPLE_POSITION: GLenum = 0x8E50`"]
3317    #[doc = "* **Group:** GetMultisamplePNameNV"]
3318    pub const GL_SAMPLE_POSITION: GLenum = 0x8E50;
3319    #[doc = "`GL_SAMPLE_SHADING: GLenum = 0x8C36`"]
3320    #[doc = "* **Group:** EnableCap"]
3321    pub const GL_SAMPLE_SHADING: GLenum = 0x8C36;
3322    #[doc = "`GL_SCISSOR_BOX: GLenum = 0x0C10`"]
3323    #[doc = "* **Group:** GetPName"]
3324    pub const GL_SCISSOR_BOX: GLenum = 0x0C10;
3325    #[doc = "`GL_SCISSOR_TEST: GLenum = 0x0C11`"]
3326    #[doc = "* **Groups:** GetPName, EnableCap"]
3327    pub const GL_SCISSOR_TEST: GLenum = 0x0C11;
3328    #[doc = "`GL_SCREEN: GLenum = 0x9295`"]
3329    pub const GL_SCREEN: GLenum = 0x9295;
3330    #[doc = "`GL_SEPARATE_ATTRIBS: GLenum = 0x8C8D`"]
3331    #[doc = "* **Group:** TransformFeedbackBufferMode"]
3332    pub const GL_SEPARATE_ATTRIBS: GLenum = 0x8C8D;
3333    #[doc = "`GL_SET: GLenum = 0x150F`"]
3334    #[doc = "* **Group:** LogicOp"]
3335    pub const GL_SET: GLenum = 0x150F;
3336    #[doc = "`GL_SHADER: GLenum = 0x82E1`"]
3337    #[doc = "* **Group:** ObjectIdentifier"]
3338    pub const GL_SHADER: GLenum = 0x82E1;
3339    #[doc = "`GL_SHADER_BINARY_FORMATS: GLenum = 0x8DF8`"]
3340    pub const GL_SHADER_BINARY_FORMATS: GLenum = 0x8DF8;
3341    #[doc = "`GL_SHADER_BINARY_FORMAT_SPIR_V: GLenum = 0x9551`"]
3342    #[doc = "* **Group:** ShaderBinaryFormat"]
3343    pub const GL_SHADER_BINARY_FORMAT_SPIR_V: GLenum = 0x9551;
3344    #[doc = "`GL_SHADER_COMPILER: GLenum = 0x8DFA`"]
3345    #[doc = "* **Group:** GetPName"]
3346    pub const GL_SHADER_COMPILER: GLenum = 0x8DFA;
3347    #[doc = "`GL_SHADER_IMAGE_ACCESS_BARRIER_BIT: GLbitfield = 0x00000020`"]
3348    #[doc = "* **Group:** MemoryBarrierMask"]
3349    pub const GL_SHADER_IMAGE_ACCESS_BARRIER_BIT: GLbitfield = 0x00000020;
3350    #[doc = "`GL_SHADER_IMAGE_ATOMIC: GLenum = 0x82A6`"]
3351    #[doc = "* **Group:** InternalFormatPName"]
3352    pub const GL_SHADER_IMAGE_ATOMIC: GLenum = 0x82A6;
3353    #[doc = "`GL_SHADER_IMAGE_LOAD: GLenum = 0x82A4`"]
3354    #[doc = "* **Group:** InternalFormatPName"]
3355    pub const GL_SHADER_IMAGE_LOAD: GLenum = 0x82A4;
3356    #[doc = "`GL_SHADER_IMAGE_STORE: GLenum = 0x82A5`"]
3357    #[doc = "* **Group:** InternalFormatPName"]
3358    pub const GL_SHADER_IMAGE_STORE: GLenum = 0x82A5;
3359    #[doc = "`GL_SHADER_KHR: GLenum = 0x82E1`"]
3360    pub const GL_SHADER_KHR: GLenum = 0x82E1;
3361    #[doc = "`GL_SHADER_SOURCE_LENGTH: GLenum = 0x8B88`"]
3362    #[doc = "* **Group:** ShaderParameterName"]
3363    pub const GL_SHADER_SOURCE_LENGTH: GLenum = 0x8B88;
3364    #[doc = "`GL_SHADER_STORAGE_BARRIER_BIT: GLbitfield = 0x00002000`"]
3365    #[doc = "* **Group:** MemoryBarrierMask"]
3366    pub const GL_SHADER_STORAGE_BARRIER_BIT: GLbitfield = 0x00002000;
3367    #[doc = "`GL_SHADER_STORAGE_BLOCK: GLenum = 0x92E6`"]
3368    #[doc = "* **Group:** ProgramInterface"]
3369    pub const GL_SHADER_STORAGE_BLOCK: GLenum = 0x92E6;
3370    #[doc = "`GL_SHADER_STORAGE_BUFFER: GLenum = 0x90D2`"]
3371    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
3372    pub const GL_SHADER_STORAGE_BUFFER: GLenum = 0x90D2;
3373    #[doc = "`GL_SHADER_STORAGE_BUFFER_BINDING: GLenum = 0x90D3`"]
3374    #[doc = "* **Group:** GetPName"]
3375    pub const GL_SHADER_STORAGE_BUFFER_BINDING: GLenum = 0x90D3;
3376    #[doc = "`GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x90DF`"]
3377    #[doc = "* **Group:** GetPName"]
3378    pub const GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x90DF;
3379    #[doc = "`GL_SHADER_STORAGE_BUFFER_SIZE: GLenum = 0x90D5`"]
3380    #[doc = "* **Group:** GetPName"]
3381    pub const GL_SHADER_STORAGE_BUFFER_SIZE: GLenum = 0x90D5;
3382    #[doc = "`GL_SHADER_STORAGE_BUFFER_START: GLenum = 0x90D4`"]
3383    #[doc = "* **Group:** GetPName"]
3384    pub const GL_SHADER_STORAGE_BUFFER_START: GLenum = 0x90D4;
3385    #[doc = "`GL_SHADER_TYPE: GLenum = 0x8B4F`"]
3386    #[doc = "* **Group:** ShaderParameterName"]
3387    pub const GL_SHADER_TYPE: GLenum = 0x8B4F;
3388    #[doc = "`GL_SHADING_LANGUAGE_VERSION: GLenum = 0x8B8C`"]
3389    #[doc = "* **Group:** StringName"]
3390    pub const GL_SHADING_LANGUAGE_VERSION: GLenum = 0x8B8C;
3391    #[doc = "`GL_SHORT: GLenum = 0x1402`"]
3392    #[doc = "* **Groups:** VertexAttribIType, SecondaryColorPointerTypeIBM, WeightPointerTypeARB, TangentPointerTypeEXT, BinormalPointerTypeEXT, IndexPointerType, ListNameType, NormalPointerType, PixelType, TexCoordPointerType, VertexPointerType, VertexAttribType, VertexAttribPointerType"]
3393    pub const GL_SHORT: GLenum = 0x1402;
3394    #[doc = "`GL_SIGNALED: GLenum = 0x9119`"]
3395    pub const GL_SIGNALED: GLenum = 0x9119;
3396    #[doc = "`GL_SIGNED_NORMALIZED: GLenum = 0x8F9C`"]
3397    pub const GL_SIGNED_NORMALIZED: GLenum = 0x8F9C;
3398    #[doc = "`GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST: GLenum = 0x82AC`"]
3399    #[doc = "* **Group:** InternalFormatPName"]
3400    pub const GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST: GLenum = 0x82AC;
3401    #[doc = "`GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE: GLenum = 0x82AE`"]
3402    #[doc = "* **Group:** InternalFormatPName"]
3403    pub const GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE: GLenum = 0x82AE;
3404    #[doc = "`GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST: GLenum = 0x82AD`"]
3405    #[doc = "* **Group:** InternalFormatPName"]
3406    pub const GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST: GLenum = 0x82AD;
3407    #[doc = "`GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE: GLenum = 0x82AF`"]
3408    #[doc = "* **Group:** InternalFormatPName"]
3409    pub const GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE: GLenum = 0x82AF;
3410    #[doc = "`GL_SMOOTH_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23`"]
3411    #[doc = "* **Group:** GetPName"]
3412    #[doc = "* **Alias Of:** `GL_LINE_WIDTH_GRANULARITY`"]
3413    pub const GL_SMOOTH_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23;
3414    #[doc = "`GL_SMOOTH_LINE_WIDTH_RANGE: GLenum = 0x0B22`"]
3415    #[doc = "* **Group:** GetPName"]
3416    #[doc = "* **Alias Of:** `GL_LINE_WIDTH_RANGE`"]
3417    pub const GL_SMOOTH_LINE_WIDTH_RANGE: GLenum = 0x0B22;
3418    #[doc = "`GL_SMOOTH_POINT_SIZE_GRANULARITY: GLenum = 0x0B13`"]
3419    #[doc = "* **Group:** GetPName"]
3420    #[doc = "* **Alias Of:** `GL_POINT_SIZE_GRANULARITY`"]
3421    pub const GL_SMOOTH_POINT_SIZE_GRANULARITY: GLenum = 0x0B13;
3422    #[doc = "`GL_SMOOTH_POINT_SIZE_RANGE: GLenum = 0x0B12`"]
3423    #[doc = "* **Group:** GetPName"]
3424    #[doc = "* **Alias Of:** `GL_POINT_SIZE_RANGE`"]
3425    pub const GL_SMOOTH_POINT_SIZE_RANGE: GLenum = 0x0B12;
3426    #[doc = "`GL_SOFTLIGHT: GLenum = 0x929C`"]
3427    pub const GL_SOFTLIGHT: GLenum = 0x929C;
3428    #[doc = "`GL_SPIR_V_BINARY: GLenum = 0x9552`"]
3429    pub const GL_SPIR_V_BINARY: GLenum = 0x9552;
3430    #[doc = "`GL_SPIR_V_EXTENSIONS: GLenum = 0x9553`"]
3431    pub const GL_SPIR_V_EXTENSIONS: GLenum = 0x9553;
3432    #[doc = "`GL_SRC1_ALPHA: GLenum = 0x8589`"]
3433    #[doc = "* **Group:** BlendingFactor"]
3434    #[doc = "* **Alias Of:** `GL_SOURCE1_ALPHA`"]
3435    pub const GL_SRC1_ALPHA: GLenum = 0x8589;
3436    #[doc = "`GL_SRC1_COLOR: GLenum = 0x88F9`"]
3437    #[doc = "* **Group:** BlendingFactor"]
3438    pub const GL_SRC1_COLOR: GLenum = 0x88F9;
3439    #[doc = "`GL_SRC_ALPHA: GLenum = 0x0302`"]
3440    #[doc = "* **Group:** BlendingFactor"]
3441    pub const GL_SRC_ALPHA: GLenum = 0x0302;
3442    #[doc = "`GL_SRC_ALPHA_SATURATE: GLenum = 0x0308`"]
3443    #[doc = "* **Group:** BlendingFactor"]
3444    pub const GL_SRC_ALPHA_SATURATE: GLenum = 0x0308;
3445    #[doc = "`GL_SRC_COLOR: GLenum = 0x0300`"]
3446    #[doc = "* **Group:** BlendingFactor"]
3447    pub const GL_SRC_COLOR: GLenum = 0x0300;
3448    #[doc = "`GL_SRGB: GLenum = 0x8C40`"]
3449    #[doc = "* **Group:** InternalFormat"]
3450    pub const GL_SRGB: GLenum = 0x8C40;
3451    #[doc = "`GL_SRGB8: GLenum = 0x8C41`"]
3452    #[doc = "* **Group:** InternalFormat"]
3453    pub const GL_SRGB8: GLenum = 0x8C41;
3454    #[doc = "`GL_SRGB8_ALPHA8: GLenum = 0x8C43`"]
3455    #[doc = "* **Group:** InternalFormat"]
3456    pub const GL_SRGB8_ALPHA8: GLenum = 0x8C43;
3457    #[doc = "`GL_SRGB_ALPHA: GLenum = 0x8C42`"]
3458    #[doc = "* **Group:** InternalFormat"]
3459    pub const GL_SRGB_ALPHA: GLenum = 0x8C42;
3460    #[doc = "`GL_SRGB_READ: GLenum = 0x8297`"]
3461    #[doc = "* **Group:** InternalFormatPName"]
3462    pub const GL_SRGB_READ: GLenum = 0x8297;
3463    #[doc = "`GL_SRGB_WRITE: GLenum = 0x8298`"]
3464    #[doc = "* **Group:** InternalFormatPName"]
3465    pub const GL_SRGB_WRITE: GLenum = 0x8298;
3466    #[doc = "`GL_STACK_OVERFLOW: GLenum = 0x0503`"]
3467    #[doc = "* **Group:** ErrorCode"]
3468    pub const GL_STACK_OVERFLOW: GLenum = 0x0503;
3469    #[doc = "`GL_STACK_OVERFLOW_KHR: GLenum = 0x0503`"]
3470    pub const GL_STACK_OVERFLOW_KHR: GLenum = 0x0503;
3471    #[doc = "`GL_STACK_UNDERFLOW: GLenum = 0x0504`"]
3472    #[doc = "* **Group:** ErrorCode"]
3473    pub const GL_STACK_UNDERFLOW: GLenum = 0x0504;
3474    #[doc = "`GL_STACK_UNDERFLOW_KHR: GLenum = 0x0504`"]
3475    pub const GL_STACK_UNDERFLOW_KHR: GLenum = 0x0504;
3476    #[doc = "`GL_STATIC_COPY: GLenum = 0x88E6`"]
3477    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3478    pub const GL_STATIC_COPY: GLenum = 0x88E6;
3479    #[doc = "`GL_STATIC_DRAW: GLenum = 0x88E4`"]
3480    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3481    pub const GL_STATIC_DRAW: GLenum = 0x88E4;
3482    #[doc = "`GL_STATIC_READ: GLenum = 0x88E5`"]
3483    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3484    pub const GL_STATIC_READ: GLenum = 0x88E5;
3485    #[doc = "`GL_STENCIL: GLenum = 0x1802`"]
3486    #[doc = "* **Groups:** Buffer, PixelCopyType, InvalidateFramebufferAttachment"]
3487    pub const GL_STENCIL: GLenum = 0x1802;
3488    #[doc = "`GL_STENCIL_ATTACHMENT: GLenum = 0x8D20`"]
3489    #[doc = "* **Group:** FramebufferAttachment"]
3490    pub const GL_STENCIL_ATTACHMENT: GLenum = 0x8D20;
3491    #[doc = "`GL_STENCIL_BACK_FAIL: GLenum = 0x8801`"]
3492    #[doc = "* **Group:** GetPName"]
3493    pub const GL_STENCIL_BACK_FAIL: GLenum = 0x8801;
3494    #[doc = "`GL_STENCIL_BACK_FUNC: GLenum = 0x8800`"]
3495    #[doc = "* **Group:** GetPName"]
3496    pub const GL_STENCIL_BACK_FUNC: GLenum = 0x8800;
3497    #[doc = "`GL_STENCIL_BACK_PASS_DEPTH_FAIL: GLenum = 0x8802`"]
3498    #[doc = "* **Group:** GetPName"]
3499    pub const GL_STENCIL_BACK_PASS_DEPTH_FAIL: GLenum = 0x8802;
3500    #[doc = "`GL_STENCIL_BACK_PASS_DEPTH_PASS: GLenum = 0x8803`"]
3501    #[doc = "* **Group:** GetPName"]
3502    pub const GL_STENCIL_BACK_PASS_DEPTH_PASS: GLenum = 0x8803;
3503    #[doc = "`GL_STENCIL_BACK_REF: GLenum = 0x8CA3`"]
3504    #[doc = "* **Group:** GetPName"]
3505    pub const GL_STENCIL_BACK_REF: GLenum = 0x8CA3;
3506    #[doc = "`GL_STENCIL_BACK_VALUE_MASK: GLenum = 0x8CA4`"]
3507    #[doc = "* **Group:** GetPName"]
3508    pub const GL_STENCIL_BACK_VALUE_MASK: GLenum = 0x8CA4;
3509    #[doc = "`GL_STENCIL_BACK_WRITEMASK: GLenum = 0x8CA5`"]
3510    #[doc = "* **Group:** GetPName"]
3511    pub const GL_STENCIL_BACK_WRITEMASK: GLenum = 0x8CA5;
3512    #[doc = "`GL_STENCIL_BITS: GLenum = 0x0D57`"]
3513    #[doc = "* **Group:** GetPName"]
3514    pub const GL_STENCIL_BITS: GLenum = 0x0D57;
3515    #[doc = "`GL_STENCIL_BUFFER_BIT: GLbitfield = 0x00000400`"]
3516    #[doc = "* **Groups:** ClearBufferMask, AttribMask"]
3517    pub const GL_STENCIL_BUFFER_BIT: GLbitfield = 0x00000400;
3518    #[doc = "`GL_STENCIL_CLEAR_VALUE: GLenum = 0x0B91`"]
3519    #[doc = "* **Group:** GetPName"]
3520    pub const GL_STENCIL_CLEAR_VALUE: GLenum = 0x0B91;
3521    #[doc = "`GL_STENCIL_COMPONENTS: GLenum = 0x8285`"]
3522    pub const GL_STENCIL_COMPONENTS: GLenum = 0x8285;
3523    #[doc = "`GL_STENCIL_FAIL: GLenum = 0x0B94`"]
3524    #[doc = "* **Group:** GetPName"]
3525    pub const GL_STENCIL_FAIL: GLenum = 0x0B94;
3526    #[doc = "`GL_STENCIL_FUNC: GLenum = 0x0B92`"]
3527    #[doc = "* **Group:** GetPName"]
3528    pub const GL_STENCIL_FUNC: GLenum = 0x0B92;
3529    #[doc = "`GL_STENCIL_INDEX: GLenum = 0x1901`"]
3530    #[doc = "* **Groups:** InternalFormat, PixelFormat"]
3531    pub const GL_STENCIL_INDEX: GLenum = 0x1901;
3532    #[doc = "`GL_STENCIL_INDEX1: GLenum = 0x8D46`"]
3533    #[doc = "* **Group:** InternalFormat"]
3534    pub const GL_STENCIL_INDEX1: GLenum = 0x8D46;
3535    #[doc = "`GL_STENCIL_INDEX16: GLenum = 0x8D49`"]
3536    #[doc = "* **Group:** InternalFormat"]
3537    pub const GL_STENCIL_INDEX16: GLenum = 0x8D49;
3538    #[doc = "`GL_STENCIL_INDEX4: GLenum = 0x8D47`"]
3539    #[doc = "* **Group:** InternalFormat"]
3540    pub const GL_STENCIL_INDEX4: GLenum = 0x8D47;
3541    #[doc = "`GL_STENCIL_INDEX8: GLenum = 0x8D48`"]
3542    #[doc = "* **Group:** InternalFormat"]
3543    pub const GL_STENCIL_INDEX8: GLenum = 0x8D48;
3544    #[doc = "`GL_STENCIL_PASS_DEPTH_FAIL: GLenum = 0x0B95`"]
3545    #[doc = "* **Group:** GetPName"]
3546    pub const GL_STENCIL_PASS_DEPTH_FAIL: GLenum = 0x0B95;
3547    #[doc = "`GL_STENCIL_PASS_DEPTH_PASS: GLenum = 0x0B96`"]
3548    #[doc = "* **Group:** GetPName"]
3549    pub const GL_STENCIL_PASS_DEPTH_PASS: GLenum = 0x0B96;
3550    #[doc = "`GL_STENCIL_REF: GLenum = 0x0B97`"]
3551    #[doc = "* **Group:** GetPName"]
3552    pub const GL_STENCIL_REF: GLenum = 0x0B97;
3553    #[doc = "`GL_STENCIL_RENDERABLE: GLenum = 0x8288`"]
3554    #[doc = "* **Group:** InternalFormatPName"]
3555    pub const GL_STENCIL_RENDERABLE: GLenum = 0x8288;
3556    #[doc = "`GL_STENCIL_TEST: GLenum = 0x0B90`"]
3557    #[doc = "* **Groups:** GetPName, EnableCap"]
3558    pub const GL_STENCIL_TEST: GLenum = 0x0B90;
3559    #[doc = "`GL_STENCIL_VALUE_MASK: GLenum = 0x0B93`"]
3560    #[doc = "* **Group:** GetPName"]
3561    pub const GL_STENCIL_VALUE_MASK: GLenum = 0x0B93;
3562    #[doc = "`GL_STENCIL_WRITEMASK: GLenum = 0x0B98`"]
3563    #[doc = "* **Group:** GetPName"]
3564    pub const GL_STENCIL_WRITEMASK: GLenum = 0x0B98;
3565    #[doc = "`GL_STEREO: GLenum = 0x0C33`"]
3566    #[doc = "* **Groups:** GetFramebufferParameter, GetPName"]
3567    pub const GL_STEREO: GLenum = 0x0C33;
3568    #[doc = "`GL_STREAM_COPY: GLenum = 0x88E2`"]
3569    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3570    pub const GL_STREAM_COPY: GLenum = 0x88E2;
3571    #[doc = "`GL_STREAM_DRAW: GLenum = 0x88E0`"]
3572    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3573    pub const GL_STREAM_DRAW: GLenum = 0x88E0;
3574    #[doc = "`GL_STREAM_READ: GLenum = 0x88E1`"]
3575    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3576    pub const GL_STREAM_READ: GLenum = 0x88E1;
3577    #[doc = "`GL_SUBPIXEL_BITS: GLenum = 0x0D50`"]
3578    #[doc = "* **Group:** GetPName"]
3579    pub const GL_SUBPIXEL_BITS: GLenum = 0x0D50;
3580    #[doc = "`GL_SYNC_CONDITION: GLenum = 0x9113`"]
3581    #[doc = "* **Group:** SyncParameterName"]
3582    pub const GL_SYNC_CONDITION: GLenum = 0x9113;
3583    #[doc = "`GL_SYNC_FENCE: GLenum = 0x9116`"]
3584    pub const GL_SYNC_FENCE: GLenum = 0x9116;
3585    #[doc = "`GL_SYNC_FLAGS: GLenum = 0x9115`"]
3586    #[doc = "* **Group:** SyncParameterName"]
3587    pub const GL_SYNC_FLAGS: GLenum = 0x9115;
3588    #[doc = "`GL_SYNC_FLUSH_COMMANDS_BIT: GLbitfield = 0x00000001`"]
3589    #[doc = "* **Group:** SyncObjectMask"]
3590    pub const GL_SYNC_FLUSH_COMMANDS_BIT: GLbitfield = 0x00000001;
3591    #[doc = "`GL_SYNC_GPU_COMMANDS_COMPLETE: GLenum = 0x9117`"]
3592    #[doc = "* **Group:** SyncCondition"]
3593    pub const GL_SYNC_GPU_COMMANDS_COMPLETE: GLenum = 0x9117;
3594    #[doc = "`GL_SYNC_STATUS: GLenum = 0x9114`"]
3595    #[doc = "* **Group:** SyncParameterName"]
3596    pub const GL_SYNC_STATUS: GLenum = 0x9114;
3597    #[doc = "`GL_TESS_CONTROL_OUTPUT_VERTICES: GLenum = 0x8E75`"]
3598    pub const GL_TESS_CONTROL_OUTPUT_VERTICES: GLenum = 0x8E75;
3599    #[doc = "`GL_TESS_CONTROL_SHADER: GLenum = 0x8E88`"]
3600    #[doc = "* **Groups:** PipelineParameterName, ShaderType"]
3601    pub const GL_TESS_CONTROL_SHADER: GLenum = 0x8E88;
3602    #[doc = "`GL_TESS_CONTROL_SHADER_BIT: GLbitfield = 0x00000008`"]
3603    #[doc = "* **Group:** UseProgramStageMask"]
3604    pub const GL_TESS_CONTROL_SHADER_BIT: GLbitfield = 0x00000008;
3605    #[doc = "`GL_TESS_CONTROL_SHADER_PATCHES: GLenum = 0x82F1`"]
3606    pub const GL_TESS_CONTROL_SHADER_PATCHES: GLenum = 0x82F1;
3607    #[doc = "`GL_TESS_CONTROL_SUBROUTINE: GLenum = 0x92E9`"]
3608    #[doc = "* **Group:** ProgramInterface"]
3609    pub const GL_TESS_CONTROL_SUBROUTINE: GLenum = 0x92E9;
3610    #[doc = "`GL_TESS_CONTROL_SUBROUTINE_UNIFORM: GLenum = 0x92EF`"]
3611    #[doc = "* **Group:** ProgramInterface"]
3612    pub const GL_TESS_CONTROL_SUBROUTINE_UNIFORM: GLenum = 0x92EF;
3613    #[doc = "`GL_TESS_CONTROL_TEXTURE: GLenum = 0x829C`"]
3614    #[doc = "* **Group:** InternalFormatPName"]
3615    pub const GL_TESS_CONTROL_TEXTURE: GLenum = 0x829C;
3616    #[doc = "`GL_TESS_EVALUATION_SHADER: GLenum = 0x8E87`"]
3617    #[doc = "* **Groups:** PipelineParameterName, ShaderType"]
3618    pub const GL_TESS_EVALUATION_SHADER: GLenum = 0x8E87;
3619    #[doc = "`GL_TESS_EVALUATION_SHADER_BIT: GLbitfield = 0x00000010`"]
3620    #[doc = "* **Group:** UseProgramStageMask"]
3621    pub const GL_TESS_EVALUATION_SHADER_BIT: GLbitfield = 0x00000010;
3622    #[doc = "`GL_TESS_EVALUATION_SHADER_INVOCATIONS: GLenum = 0x82F2`"]
3623    pub const GL_TESS_EVALUATION_SHADER_INVOCATIONS: GLenum = 0x82F2;
3624    #[doc = "`GL_TESS_EVALUATION_SUBROUTINE: GLenum = 0x92EA`"]
3625    #[doc = "* **Group:** ProgramInterface"]
3626    pub const GL_TESS_EVALUATION_SUBROUTINE: GLenum = 0x92EA;
3627    #[doc = "`GL_TESS_EVALUATION_SUBROUTINE_UNIFORM: GLenum = 0x92F0`"]
3628    #[doc = "* **Group:** ProgramInterface"]
3629    pub const GL_TESS_EVALUATION_SUBROUTINE_UNIFORM: GLenum = 0x92F0;
3630    #[doc = "`GL_TESS_EVALUATION_TEXTURE: GLenum = 0x829D`"]
3631    #[doc = "* **Group:** InternalFormatPName"]
3632    pub const GL_TESS_EVALUATION_TEXTURE: GLenum = 0x829D;
3633    #[doc = "`GL_TESS_GEN_MODE: GLenum = 0x8E76`"]
3634    pub const GL_TESS_GEN_MODE: GLenum = 0x8E76;
3635    #[doc = "`GL_TESS_GEN_POINT_MODE: GLenum = 0x8E79`"]
3636    pub const GL_TESS_GEN_POINT_MODE: GLenum = 0x8E79;
3637    #[doc = "`GL_TESS_GEN_SPACING: GLenum = 0x8E77`"]
3638    pub const GL_TESS_GEN_SPACING: GLenum = 0x8E77;
3639    #[doc = "`GL_TESS_GEN_VERTEX_ORDER: GLenum = 0x8E78`"]
3640    pub const GL_TESS_GEN_VERTEX_ORDER: GLenum = 0x8E78;
3641    #[doc = "`GL_TEXTURE: GLenum = 0x1702`"]
3642    #[doc = "* **Groups:** ObjectIdentifier, MatrixMode"]
3643    pub const GL_TEXTURE: GLenum = 0x1702;
3644    #[doc = "`GL_TEXTURE0: GLenum = 0x84C0`"]
3645    #[doc = "* **Group:** TextureUnit"]
3646    pub const GL_TEXTURE0: GLenum = 0x84C0;
3647    #[doc = "`GL_TEXTURE1: GLenum = 0x84C1`"]
3648    #[doc = "* **Group:** TextureUnit"]
3649    pub const GL_TEXTURE1: GLenum = 0x84C1;
3650    #[doc = "`GL_TEXTURE10: GLenum = 0x84CA`"]
3651    #[doc = "* **Group:** TextureUnit"]
3652    pub const GL_TEXTURE10: GLenum = 0x84CA;
3653    #[doc = "`GL_TEXTURE11: GLenum = 0x84CB`"]
3654    #[doc = "* **Group:** TextureUnit"]
3655    pub const GL_TEXTURE11: GLenum = 0x84CB;
3656    #[doc = "`GL_TEXTURE12: GLenum = 0x84CC`"]
3657    #[doc = "* **Group:** TextureUnit"]
3658    pub const GL_TEXTURE12: GLenum = 0x84CC;
3659    #[doc = "`GL_TEXTURE13: GLenum = 0x84CD`"]
3660    #[doc = "* **Group:** TextureUnit"]
3661    pub const GL_TEXTURE13: GLenum = 0x84CD;
3662    #[doc = "`GL_TEXTURE14: GLenum = 0x84CE`"]
3663    #[doc = "* **Group:** TextureUnit"]
3664    pub const GL_TEXTURE14: GLenum = 0x84CE;
3665    #[doc = "`GL_TEXTURE15: GLenum = 0x84CF`"]
3666    #[doc = "* **Group:** TextureUnit"]
3667    pub const GL_TEXTURE15: GLenum = 0x84CF;
3668    #[doc = "`GL_TEXTURE16: GLenum = 0x84D0`"]
3669    #[doc = "* **Group:** TextureUnit"]
3670    pub const GL_TEXTURE16: GLenum = 0x84D0;
3671    #[doc = "`GL_TEXTURE17: GLenum = 0x84D1`"]
3672    #[doc = "* **Group:** TextureUnit"]
3673    pub const GL_TEXTURE17: GLenum = 0x84D1;
3674    #[doc = "`GL_TEXTURE18: GLenum = 0x84D2`"]
3675    #[doc = "* **Group:** TextureUnit"]
3676    pub const GL_TEXTURE18: GLenum = 0x84D2;
3677    #[doc = "`GL_TEXTURE19: GLenum = 0x84D3`"]
3678    #[doc = "* **Group:** TextureUnit"]
3679    pub const GL_TEXTURE19: GLenum = 0x84D3;
3680    #[doc = "`GL_TEXTURE2: GLenum = 0x84C2`"]
3681    #[doc = "* **Group:** TextureUnit"]
3682    pub const GL_TEXTURE2: GLenum = 0x84C2;
3683    #[doc = "`GL_TEXTURE20: GLenum = 0x84D4`"]
3684    #[doc = "* **Group:** TextureUnit"]
3685    pub const GL_TEXTURE20: GLenum = 0x84D4;
3686    #[doc = "`GL_TEXTURE21: GLenum = 0x84D5`"]
3687    #[doc = "* **Group:** TextureUnit"]
3688    pub const GL_TEXTURE21: GLenum = 0x84D5;
3689    #[doc = "`GL_TEXTURE22: GLenum = 0x84D6`"]
3690    #[doc = "* **Group:** TextureUnit"]
3691    pub const GL_TEXTURE22: GLenum = 0x84D6;
3692    #[doc = "`GL_TEXTURE23: GLenum = 0x84D7`"]
3693    #[doc = "* **Group:** TextureUnit"]
3694    pub const GL_TEXTURE23: GLenum = 0x84D7;
3695    #[doc = "`GL_TEXTURE24: GLenum = 0x84D8`"]
3696    #[doc = "* **Group:** TextureUnit"]
3697    pub const GL_TEXTURE24: GLenum = 0x84D8;
3698    #[doc = "`GL_TEXTURE25: GLenum = 0x84D9`"]
3699    #[doc = "* **Group:** TextureUnit"]
3700    pub const GL_TEXTURE25: GLenum = 0x84D9;
3701    #[doc = "`GL_TEXTURE26: GLenum = 0x84DA`"]
3702    #[doc = "* **Group:** TextureUnit"]
3703    pub const GL_TEXTURE26: GLenum = 0x84DA;
3704    #[doc = "`GL_TEXTURE27: GLenum = 0x84DB`"]
3705    #[doc = "* **Group:** TextureUnit"]
3706    pub const GL_TEXTURE27: GLenum = 0x84DB;
3707    #[doc = "`GL_TEXTURE28: GLenum = 0x84DC`"]
3708    #[doc = "* **Group:** TextureUnit"]
3709    pub const GL_TEXTURE28: GLenum = 0x84DC;
3710    #[doc = "`GL_TEXTURE29: GLenum = 0x84DD`"]
3711    #[doc = "* **Group:** TextureUnit"]
3712    pub const GL_TEXTURE29: GLenum = 0x84DD;
3713    #[doc = "`GL_TEXTURE3: GLenum = 0x84C3`"]
3714    #[doc = "* **Group:** TextureUnit"]
3715    pub const GL_TEXTURE3: GLenum = 0x84C3;
3716    #[doc = "`GL_TEXTURE30: GLenum = 0x84DE`"]
3717    #[doc = "* **Group:** TextureUnit"]
3718    pub const GL_TEXTURE30: GLenum = 0x84DE;
3719    #[doc = "`GL_TEXTURE31: GLenum = 0x84DF`"]
3720    #[doc = "* **Group:** TextureUnit"]
3721    pub const GL_TEXTURE31: GLenum = 0x84DF;
3722    #[doc = "`GL_TEXTURE4: GLenum = 0x84C4`"]
3723    #[doc = "* **Group:** TextureUnit"]
3724    pub const GL_TEXTURE4: GLenum = 0x84C4;
3725    #[doc = "`GL_TEXTURE5: GLenum = 0x84C5`"]
3726    #[doc = "* **Group:** TextureUnit"]
3727    pub const GL_TEXTURE5: GLenum = 0x84C5;
3728    #[doc = "`GL_TEXTURE6: GLenum = 0x84C6`"]
3729    #[doc = "* **Group:** TextureUnit"]
3730    pub const GL_TEXTURE6: GLenum = 0x84C6;
3731    #[doc = "`GL_TEXTURE7: GLenum = 0x84C7`"]
3732    #[doc = "* **Group:** TextureUnit"]
3733    pub const GL_TEXTURE7: GLenum = 0x84C7;
3734    #[doc = "`GL_TEXTURE8: GLenum = 0x84C8`"]
3735    #[doc = "* **Group:** TextureUnit"]
3736    pub const GL_TEXTURE8: GLenum = 0x84C8;
3737    #[doc = "`GL_TEXTURE9: GLenum = 0x84C9`"]
3738    #[doc = "* **Group:** TextureUnit"]
3739    pub const GL_TEXTURE9: GLenum = 0x84C9;
3740    #[doc = "`GL_TEXTURE_1D: GLenum = 0x0DE0`"]
3741    #[doc = "* **Groups:** CopyImageSubDataTarget, EnableCap, GetPName, TextureTarget"]
3742    pub const GL_TEXTURE_1D: GLenum = 0x0DE0;
3743    #[doc = "`GL_TEXTURE_1D_ARRAY: GLenum = 0x8C18`"]
3744    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3745    pub const GL_TEXTURE_1D_ARRAY: GLenum = 0x8C18;
3746    #[doc = "`GL_TEXTURE_2D: GLenum = 0x0DE1`"]
3747    #[doc = "* **Groups:** CopyImageSubDataTarget, EnableCap, GetPName, TextureTarget"]
3748    pub const GL_TEXTURE_2D: GLenum = 0x0DE1;
3749    #[doc = "`GL_TEXTURE_2D_ARRAY: GLenum = 0x8C1A`"]
3750    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3751    pub const GL_TEXTURE_2D_ARRAY: GLenum = 0x8C1A;
3752    #[doc = "`GL_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9100`"]
3753    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3754    pub const GL_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9100;
3755    #[doc = "`GL_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9102`"]
3756    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3757    pub const GL_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9102;
3758    #[doc = "`GL_TEXTURE_3D: GLenum = 0x806F`"]
3759    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3760    pub const GL_TEXTURE_3D: GLenum = 0x806F;
3761    #[doc = "`GL_TEXTURE_ALPHA_SIZE: GLenum = 0x805F`"]
3762    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3763    pub const GL_TEXTURE_ALPHA_SIZE: GLenum = 0x805F;
3764    #[doc = "`GL_TEXTURE_ALPHA_TYPE: GLenum = 0x8C13`"]
3765    pub const GL_TEXTURE_ALPHA_TYPE: GLenum = 0x8C13;
3766    #[doc = "`GL_TEXTURE_BASE_LEVEL: GLenum = 0x813C`"]
3767    #[doc = "* **Group:** TextureParameterName"]
3768    pub const GL_TEXTURE_BASE_LEVEL: GLenum = 0x813C;
3769    #[doc = "`GL_TEXTURE_BINDING_1D: GLenum = 0x8068`"]
3770    #[doc = "* **Group:** GetPName"]
3771    pub const GL_TEXTURE_BINDING_1D: GLenum = 0x8068;
3772    #[doc = "`GL_TEXTURE_BINDING_1D_ARRAY: GLenum = 0x8C1C`"]
3773    #[doc = "* **Group:** GetPName"]
3774    pub const GL_TEXTURE_BINDING_1D_ARRAY: GLenum = 0x8C1C;
3775    #[doc = "`GL_TEXTURE_BINDING_2D: GLenum = 0x8069`"]
3776    #[doc = "* **Group:** GetPName"]
3777    pub const GL_TEXTURE_BINDING_2D: GLenum = 0x8069;
3778    #[doc = "`GL_TEXTURE_BINDING_2D_ARRAY: GLenum = 0x8C1D`"]
3779    #[doc = "* **Group:** GetPName"]
3780    pub const GL_TEXTURE_BINDING_2D_ARRAY: GLenum = 0x8C1D;
3781    #[doc = "`GL_TEXTURE_BINDING_2D_MULTISAMPLE: GLenum = 0x9104`"]
3782    #[doc = "* **Group:** GetPName"]
3783    pub const GL_TEXTURE_BINDING_2D_MULTISAMPLE: GLenum = 0x9104;
3784    #[doc = "`GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: GLenum = 0x9105`"]
3785    #[doc = "* **Group:** GetPName"]
3786    pub const GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: GLenum = 0x9105;
3787    #[doc = "`GL_TEXTURE_BINDING_3D: GLenum = 0x806A`"]
3788    #[doc = "* **Group:** GetPName"]
3789    pub const GL_TEXTURE_BINDING_3D: GLenum = 0x806A;
3790    #[doc = "`GL_TEXTURE_BINDING_BUFFER: GLenum = 0x8C2C`"]
3791    #[doc = "* **Group:** GetPName"]
3792    pub const GL_TEXTURE_BINDING_BUFFER: GLenum = 0x8C2C;
3793    #[doc = "`GL_TEXTURE_BINDING_CUBE_MAP: GLenum = 0x8514`"]
3794    #[doc = "* **Group:** GetPName"]
3795    pub const GL_TEXTURE_BINDING_CUBE_MAP: GLenum = 0x8514;
3796    #[doc = "`GL_TEXTURE_BINDING_CUBE_MAP_ARRAY: GLenum = 0x900A`"]
3797    pub const GL_TEXTURE_BINDING_CUBE_MAP_ARRAY: GLenum = 0x900A;
3798    #[doc = "`GL_TEXTURE_BINDING_RECTANGLE: GLenum = 0x84F6`"]
3799    #[doc = "* **Group:** GetPName"]
3800    pub const GL_TEXTURE_BINDING_RECTANGLE: GLenum = 0x84F6;
3801    #[doc = "`GL_TEXTURE_BLUE_SIZE: GLenum = 0x805E`"]
3802    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3803    pub const GL_TEXTURE_BLUE_SIZE: GLenum = 0x805E;
3804    #[doc = "`GL_TEXTURE_BLUE_TYPE: GLenum = 0x8C12`"]
3805    pub const GL_TEXTURE_BLUE_TYPE: GLenum = 0x8C12;
3806    #[doc = "`GL_TEXTURE_BORDER_COLOR: GLenum = 0x1004`"]
3807    #[doc = "* **Groups:** SamplerParameterF, GetTextureParameter, TextureParameterName"]
3808    pub const GL_TEXTURE_BORDER_COLOR: GLenum = 0x1004;
3809    #[doc = "`GL_TEXTURE_BUFFER: GLenum = 0x8C2A`"]
3810    #[doc = "* **Groups:** TextureTarget, CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
3811    pub const GL_TEXTURE_BUFFER: GLenum = 0x8C2A;
3812    #[doc = "`GL_TEXTURE_BUFFER_BINDING: GLenum = 0x8C2A`"]
3813    pub const GL_TEXTURE_BUFFER_BINDING: GLenum = 0x8C2A;
3814    #[doc = "`GL_TEXTURE_BUFFER_DATA_STORE_BINDING: GLenum = 0x8C2D`"]
3815    pub const GL_TEXTURE_BUFFER_DATA_STORE_BINDING: GLenum = 0x8C2D;
3816    #[doc = "`GL_TEXTURE_BUFFER_OFFSET: GLenum = 0x919D`"]
3817    pub const GL_TEXTURE_BUFFER_OFFSET: GLenum = 0x919D;
3818    #[doc = "`GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x919F`"]
3819    #[doc = "* **Group:** GetPName"]
3820    pub const GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x919F;
3821    #[doc = "`GL_TEXTURE_BUFFER_SIZE: GLenum = 0x919E`"]
3822    pub const GL_TEXTURE_BUFFER_SIZE: GLenum = 0x919E;
3823    #[doc = "`GL_TEXTURE_COMPARE_FUNC: GLenum = 0x884D`"]
3824    #[doc = "* **Groups:** SamplerParameterI, TextureParameterName"]
3825    pub const GL_TEXTURE_COMPARE_FUNC: GLenum = 0x884D;
3826    #[doc = "`GL_TEXTURE_COMPARE_MODE: GLenum = 0x884C`"]
3827    #[doc = "* **Groups:** SamplerParameterI, TextureParameterName"]
3828    pub const GL_TEXTURE_COMPARE_MODE: GLenum = 0x884C;
3829    #[doc = "`GL_TEXTURE_COMPRESSED: GLenum = 0x86A1`"]
3830    #[doc = "* **Group:** InternalFormatPName"]
3831    pub const GL_TEXTURE_COMPRESSED: GLenum = 0x86A1;
3832    #[doc = "`GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x82B2`"]
3833    #[doc = "* **Group:** InternalFormatPName"]
3834    pub const GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x82B2;
3835    #[doc = "`GL_TEXTURE_COMPRESSED_BLOCK_SIZE: GLenum = 0x82B3`"]
3836    #[doc = "* **Group:** InternalFormatPName"]
3837    pub const GL_TEXTURE_COMPRESSED_BLOCK_SIZE: GLenum = 0x82B3;
3838    #[doc = "`GL_TEXTURE_COMPRESSED_BLOCK_WIDTH: GLenum = 0x82B1`"]
3839    #[doc = "* **Group:** InternalFormatPName"]
3840    pub const GL_TEXTURE_COMPRESSED_BLOCK_WIDTH: GLenum = 0x82B1;
3841    #[doc = "`GL_TEXTURE_COMPRESSED_IMAGE_SIZE: GLenum = 0x86A0`"]
3842    pub const GL_TEXTURE_COMPRESSED_IMAGE_SIZE: GLenum = 0x86A0;
3843    #[doc = "`GL_TEXTURE_COMPRESSION_HINT: GLenum = 0x84EF`"]
3844    #[doc = "* **Groups:** HintTarget, GetPName"]
3845    pub const GL_TEXTURE_COMPRESSION_HINT: GLenum = 0x84EF;
3846    #[doc = "`GL_TEXTURE_CUBE_MAP: GLenum = 0x8513`"]
3847    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3848    pub const GL_TEXTURE_CUBE_MAP: GLenum = 0x8513;
3849    #[doc = "`GL_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x9009`"]
3850    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3851    pub const GL_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x9009;
3852    #[doc = "`GL_TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum = 0x8516`"]
3853    #[doc = "* **Group:** TextureTarget"]
3854    pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum = 0x8516;
3855    #[doc = "`GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum = 0x8518`"]
3856    #[doc = "* **Group:** TextureTarget"]
3857    pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum = 0x8518;
3858    #[doc = "`GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum = 0x851A`"]
3859    #[doc = "* **Group:** TextureTarget"]
3860    pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum = 0x851A;
3861    #[doc = "`GL_TEXTURE_CUBE_MAP_POSITIVE_X: GLenum = 0x8515`"]
3862    #[doc = "* **Group:** TextureTarget"]
3863    pub const GL_TEXTURE_CUBE_MAP_POSITIVE_X: GLenum = 0x8515;
3864    #[doc = "`GL_TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum = 0x8517`"]
3865    #[doc = "* **Group:** TextureTarget"]
3866    pub const GL_TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum = 0x8517;
3867    #[doc = "`GL_TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum = 0x8519`"]
3868    #[doc = "* **Group:** TextureTarget"]
3869    pub const GL_TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum = 0x8519;
3870    #[doc = "`GL_TEXTURE_CUBE_MAP_SEAMLESS: GLenum = 0x884F`"]
3871    #[doc = "* **Group:** EnableCap"]
3872    pub const GL_TEXTURE_CUBE_MAP_SEAMLESS: GLenum = 0x884F;
3873    #[doc = "`GL_TEXTURE_DEPTH: GLenum = 0x8071`"]
3874    pub const GL_TEXTURE_DEPTH: GLenum = 0x8071;
3875    #[doc = "`GL_TEXTURE_DEPTH_SIZE: GLenum = 0x884A`"]
3876    pub const GL_TEXTURE_DEPTH_SIZE: GLenum = 0x884A;
3877    #[doc = "`GL_TEXTURE_DEPTH_TYPE: GLenum = 0x8C16`"]
3878    pub const GL_TEXTURE_DEPTH_TYPE: GLenum = 0x8C16;
3879    #[doc = "`GL_TEXTURE_FETCH_BARRIER_BIT: GLbitfield = 0x00000008`"]
3880    #[doc = "* **Group:** MemoryBarrierMask"]
3881    pub const GL_TEXTURE_FETCH_BARRIER_BIT: GLbitfield = 0x00000008;
3882    #[doc = "`GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9107`"]
3883    pub const GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9107;
3884    #[doc = "`GL_TEXTURE_GATHER: GLenum = 0x82A2`"]
3885    #[doc = "* **Group:** InternalFormatPName"]
3886    pub const GL_TEXTURE_GATHER: GLenum = 0x82A2;
3887    #[doc = "`GL_TEXTURE_GATHER_SHADOW: GLenum = 0x82A3`"]
3888    #[doc = "* **Group:** InternalFormatPName"]
3889    pub const GL_TEXTURE_GATHER_SHADOW: GLenum = 0x82A3;
3890    #[doc = "`GL_TEXTURE_GREEN_SIZE: GLenum = 0x805D`"]
3891    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3892    pub const GL_TEXTURE_GREEN_SIZE: GLenum = 0x805D;
3893    #[doc = "`GL_TEXTURE_GREEN_TYPE: GLenum = 0x8C11`"]
3894    pub const GL_TEXTURE_GREEN_TYPE: GLenum = 0x8C11;
3895    #[doc = "`GL_TEXTURE_HEIGHT: GLenum = 0x1001`"]
3896    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3897    pub const GL_TEXTURE_HEIGHT: GLenum = 0x1001;
3898    #[doc = "`GL_TEXTURE_IMAGE_FORMAT: GLenum = 0x828F`"]
3899    #[doc = "* **Group:** InternalFormatPName"]
3900    pub const GL_TEXTURE_IMAGE_FORMAT: GLenum = 0x828F;
3901    #[doc = "`GL_TEXTURE_IMAGE_TYPE: GLenum = 0x8290`"]
3902    #[doc = "* **Group:** InternalFormatPName"]
3903    pub const GL_TEXTURE_IMAGE_TYPE: GLenum = 0x8290;
3904    #[doc = "`GL_TEXTURE_IMMUTABLE_FORMAT: GLenum = 0x912F`"]
3905    pub const GL_TEXTURE_IMMUTABLE_FORMAT: GLenum = 0x912F;
3906    #[doc = "`GL_TEXTURE_IMMUTABLE_LEVELS: GLenum = 0x82DF`"]
3907    pub const GL_TEXTURE_IMMUTABLE_LEVELS: GLenum = 0x82DF;
3908    #[doc = "`GL_TEXTURE_INTERNAL_FORMAT: GLenum = 0x1003`"]
3909    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3910    pub const GL_TEXTURE_INTERNAL_FORMAT: GLenum = 0x1003;
3911    #[doc = "`GL_TEXTURE_LOD_BIAS: GLenum = 0x8501`"]
3912    #[doc = "* **Groups:** TextureParameterName, SamplerParameterF"]
3913    pub const GL_TEXTURE_LOD_BIAS: GLenum = 0x8501;
3914    #[doc = "`GL_TEXTURE_MAG_FILTER: GLenum = 0x2800`"]
3915    #[doc = "* **Groups:** SamplerParameterI, GetTextureParameter, TextureParameterName"]
3916    pub const GL_TEXTURE_MAG_FILTER: GLenum = 0x2800;
3917    #[doc = "`GL_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FE`"]
3918    #[doc = "* **Group:** SamplerParameterF"]
3919    pub const GL_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FE;
3920    #[doc = "`GL_TEXTURE_MAX_ANISOTROPY_EXT: GLenum = 0x84FE`"]
3921    #[doc = "* **Alias Of:** `GL_TEXTURE_MAX_ANISOTROPY`"]
3922    pub const GL_TEXTURE_MAX_ANISOTROPY_EXT: GLenum = 0x84FE;
3923    #[doc = "`GL_TEXTURE_MAX_LEVEL: GLenum = 0x813D`"]
3924    #[doc = "* **Group:** TextureParameterName"]
3925    pub const GL_TEXTURE_MAX_LEVEL: GLenum = 0x813D;
3926    #[doc = "`GL_TEXTURE_MAX_LOD: GLenum = 0x813B`"]
3927    #[doc = "* **Groups:** SamplerParameterF, TextureParameterName"]
3928    pub const GL_TEXTURE_MAX_LOD: GLenum = 0x813B;
3929    #[doc = "`GL_TEXTURE_MIN_FILTER: GLenum = 0x2801`"]
3930    #[doc = "* **Groups:** SamplerParameterI, GetTextureParameter, TextureParameterName"]
3931    pub const GL_TEXTURE_MIN_FILTER: GLenum = 0x2801;
3932    #[doc = "`GL_TEXTURE_MIN_LOD: GLenum = 0x813A`"]
3933    #[doc = "* **Groups:** SamplerParameterF, TextureParameterName"]
3934    pub const GL_TEXTURE_MIN_LOD: GLenum = 0x813A;
3935    #[doc = "`GL_TEXTURE_RECTANGLE: GLenum = 0x84F5`"]
3936    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3937    pub const GL_TEXTURE_RECTANGLE: GLenum = 0x84F5;
3938    #[doc = "`GL_TEXTURE_RED_SIZE: GLenum = 0x805C`"]
3939    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3940    pub const GL_TEXTURE_RED_SIZE: GLenum = 0x805C;
3941    #[doc = "`GL_TEXTURE_RED_TYPE: GLenum = 0x8C10`"]
3942    pub const GL_TEXTURE_RED_TYPE: GLenum = 0x8C10;
3943    #[doc = "`GL_TEXTURE_SAMPLES: GLenum = 0x9106`"]
3944    pub const GL_TEXTURE_SAMPLES: GLenum = 0x9106;
3945    #[doc = "`GL_TEXTURE_SHADOW: GLenum = 0x82A1`"]
3946    #[doc = "* **Group:** InternalFormatPName"]
3947    pub const GL_TEXTURE_SHADOW: GLenum = 0x82A1;
3948    #[doc = "`GL_TEXTURE_SHARED_SIZE: GLenum = 0x8C3F`"]
3949    pub const GL_TEXTURE_SHARED_SIZE: GLenum = 0x8C3F;
3950    #[doc = "`GL_TEXTURE_STENCIL_SIZE: GLenum = 0x88F1`"]
3951    pub const GL_TEXTURE_STENCIL_SIZE: GLenum = 0x88F1;
3952    #[doc = "`GL_TEXTURE_SWIZZLE_A: GLenum = 0x8E45`"]
3953    #[doc = "* **Group:** TextureParameterName"]
3954    pub const GL_TEXTURE_SWIZZLE_A: GLenum = 0x8E45;
3955    #[doc = "`GL_TEXTURE_SWIZZLE_B: GLenum = 0x8E44`"]
3956    #[doc = "* **Group:** TextureParameterName"]
3957    pub const GL_TEXTURE_SWIZZLE_B: GLenum = 0x8E44;
3958    #[doc = "`GL_TEXTURE_SWIZZLE_G: GLenum = 0x8E43`"]
3959    #[doc = "* **Group:** TextureParameterName"]
3960    pub const GL_TEXTURE_SWIZZLE_G: GLenum = 0x8E43;
3961    #[doc = "`GL_TEXTURE_SWIZZLE_R: GLenum = 0x8E42`"]
3962    #[doc = "* **Group:** TextureParameterName"]
3963    pub const GL_TEXTURE_SWIZZLE_R: GLenum = 0x8E42;
3964    #[doc = "`GL_TEXTURE_SWIZZLE_RGBA: GLenum = 0x8E46`"]
3965    #[doc = "* **Group:** TextureParameterName"]
3966    pub const GL_TEXTURE_SWIZZLE_RGBA: GLenum = 0x8E46;
3967    #[doc = "`GL_TEXTURE_TARGET: GLenum = 0x1006`"]
3968    pub const GL_TEXTURE_TARGET: GLenum = 0x1006;
3969    #[doc = "`GL_TEXTURE_UPDATE_BARRIER_BIT: GLbitfield = 0x00000100`"]
3970    #[doc = "* **Group:** MemoryBarrierMask"]
3971    pub const GL_TEXTURE_UPDATE_BARRIER_BIT: GLbitfield = 0x00000100;
3972    #[doc = "`GL_TEXTURE_VIEW: GLenum = 0x82B5`"]
3973    #[doc = "* **Group:** InternalFormatPName"]
3974    pub const GL_TEXTURE_VIEW: GLenum = 0x82B5;
3975    #[doc = "`GL_TEXTURE_VIEW_MIN_LAYER: GLenum = 0x82DD`"]
3976    pub const GL_TEXTURE_VIEW_MIN_LAYER: GLenum = 0x82DD;
3977    #[doc = "`GL_TEXTURE_VIEW_MIN_LEVEL: GLenum = 0x82DB`"]
3978    pub const GL_TEXTURE_VIEW_MIN_LEVEL: GLenum = 0x82DB;
3979    #[doc = "`GL_TEXTURE_VIEW_NUM_LAYERS: GLenum = 0x82DE`"]
3980    pub const GL_TEXTURE_VIEW_NUM_LAYERS: GLenum = 0x82DE;
3981    #[doc = "`GL_TEXTURE_VIEW_NUM_LEVELS: GLenum = 0x82DC`"]
3982    pub const GL_TEXTURE_VIEW_NUM_LEVELS: GLenum = 0x82DC;
3983    #[doc = "`GL_TEXTURE_WIDTH: GLenum = 0x1000`"]
3984    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3985    pub const GL_TEXTURE_WIDTH: GLenum = 0x1000;
3986    #[doc = "`GL_TEXTURE_WRAP_R: GLenum = 0x8072`"]
3987    #[doc = "* **Groups:** SamplerParameterI, TextureParameterName"]
3988    pub const GL_TEXTURE_WRAP_R: GLenum = 0x8072;
3989    #[doc = "`GL_TEXTURE_WRAP_S: GLenum = 0x2802`"]
3990    #[doc = "* **Groups:** SamplerParameterI, GetTextureParameter, TextureParameterName"]
3991    pub const GL_TEXTURE_WRAP_S: GLenum = 0x2802;
3992    #[doc = "`GL_TEXTURE_WRAP_T: GLenum = 0x2803`"]
3993    #[doc = "* **Groups:** SamplerParameterI, GetTextureParameter, TextureParameterName"]
3994    pub const GL_TEXTURE_WRAP_T: GLenum = 0x2803;
3995    #[doc = "`GL_TIMEOUT_EXPIRED: GLenum = 0x911B`"]
3996    #[doc = "* **Group:** SyncStatus"]
3997    pub const GL_TIMEOUT_EXPIRED: GLenum = 0x911B;
3998    #[doc = "`GL_TIMEOUT_IGNORED: u64 = 0xFFFFFFFFFFFFFFFF`"]
3999    pub const GL_TIMEOUT_IGNORED: u64 = 0xFFFFFFFFFFFFFFFF;
4000    #[doc = "`GL_TIMESTAMP: GLenum = 0x8E28`"]
4001    #[doc = "* **Groups:** QueryCounterTarget, GetPName"]
4002    pub const GL_TIMESTAMP: GLenum = 0x8E28;
4003    #[doc = "`GL_TIMESTAMP_EXT: GLenum = 0x8E28`"]
4004    pub const GL_TIMESTAMP_EXT: GLenum = 0x8E28;
4005    #[doc = "`GL_TIME_ELAPSED: GLenum = 0x88BF`"]
4006    #[doc = "* **Group:** QueryTarget"]
4007    pub const GL_TIME_ELAPSED: GLenum = 0x88BF;
4008    #[doc = "`GL_TIME_ELAPSED_EXT: GLenum = 0x88BF`"]
4009    pub const GL_TIME_ELAPSED_EXT: GLenum = 0x88BF;
4010    #[doc = "`GL_TOP_LEVEL_ARRAY_SIZE: GLenum = 0x930C`"]
4011    #[doc = "* **Group:** ProgramResourceProperty"]
4012    pub const GL_TOP_LEVEL_ARRAY_SIZE: GLenum = 0x930C;
4013    #[doc = "`GL_TOP_LEVEL_ARRAY_STRIDE: GLenum = 0x930D`"]
4014    #[doc = "* **Group:** ProgramResourceProperty"]
4015    pub const GL_TOP_LEVEL_ARRAY_STRIDE: GLenum = 0x930D;
4016    #[doc = "`GL_TRANSFORM_FEEDBACK: GLenum = 0x8E22`"]
4017    #[doc = "* **Groups:** ObjectIdentifier, BindTransformFeedbackTarget"]
4018    pub const GL_TRANSFORM_FEEDBACK: GLenum = 0x8E22;
4019    #[doc = "`GL_TRANSFORM_FEEDBACK_ACTIVE: GLenum = 0x8E24`"]
4020    #[doc = "* **Group:** TransformFeedbackPName"]
4021    #[doc = "* **Alias Of:** `GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE`"]
4022    pub const GL_TRANSFORM_FEEDBACK_ACTIVE: GLenum = 0x8E24;
4023    #[doc = "`GL_TRANSFORM_FEEDBACK_BARRIER_BIT: GLbitfield = 0x00000800`"]
4024    #[doc = "* **Group:** MemoryBarrierMask"]
4025    pub const GL_TRANSFORM_FEEDBACK_BARRIER_BIT: GLbitfield = 0x00000800;
4026    #[doc = "`GL_TRANSFORM_FEEDBACK_BINDING: GLenum = 0x8E25`"]
4027    pub const GL_TRANSFORM_FEEDBACK_BINDING: GLenum = 0x8E25;
4028    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER: GLenum = 0x8C8E`"]
4029    #[doc = "* **Groups:** ProgramInterface, BufferTargetARB, BufferStorageTarget, CopyBufferSubDataTarget"]
4030    pub const GL_TRANSFORM_FEEDBACK_BUFFER: GLenum = 0x8C8E;
4031    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE: GLenum = 0x8E24`"]
4032    pub const GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE: GLenum = 0x8E24;
4033    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum = 0x8C8F`"]
4034    #[doc = "* **Groups:** TransformFeedbackPName, GetPName"]
4035    pub const GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum = 0x8C8F;
4036    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_INDEX: GLenum = 0x934B`"]
4037    #[doc = "* **Group:** ProgramResourceProperty"]
4038    pub const GL_TRANSFORM_FEEDBACK_BUFFER_INDEX: GLenum = 0x934B;
4039    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum = 0x8C7F`"]
4040    #[doc = "* **Group:** ProgramPropertyARB"]
4041    pub const GL_TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum = 0x8C7F;
4042    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED: GLenum = 0x8E23`"]
4043    pub const GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED: GLenum = 0x8E23;
4044    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum = 0x8C85`"]
4045    #[doc = "* **Groups:** TransformFeedbackPName, GetPName"]
4046    pub const GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum = 0x8C85;
4047    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_START: GLenum = 0x8C84`"]
4048    #[doc = "* **Groups:** TransformFeedbackPName, GetPName"]
4049    pub const GL_TRANSFORM_FEEDBACK_BUFFER_START: GLenum = 0x8C84;
4050    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE: GLenum = 0x934C`"]
4051    #[doc = "* **Group:** ProgramResourceProperty"]
4052    pub const GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE: GLenum = 0x934C;
4053    #[doc = "`GL_TRANSFORM_FEEDBACK_OVERFLOW: GLenum = 0x82EC`"]
4054    #[doc = "* **Group:** QueryTarget"]
4055    pub const GL_TRANSFORM_FEEDBACK_OVERFLOW: GLenum = 0x82EC;
4056    #[doc = "`GL_TRANSFORM_FEEDBACK_PAUSED: GLenum = 0x8E23`"]
4057    #[doc = "* **Group:** TransformFeedbackPName"]
4058    #[doc = "* **Alias Of:** `GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED`"]
4059    pub const GL_TRANSFORM_FEEDBACK_PAUSED: GLenum = 0x8E23;
4060    #[doc = "`GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum = 0x8C88`"]
4061    #[doc = "* **Group:** QueryTarget"]
4062    pub const GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum = 0x8C88;
4063    #[doc = "`GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW: GLenum = 0x82ED`"]
4064    pub const GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW: GLenum = 0x82ED;
4065    #[doc = "`GL_TRANSFORM_FEEDBACK_VARYING: GLenum = 0x92F4`"]
4066    #[doc = "* **Group:** ProgramInterface"]
4067    pub const GL_TRANSFORM_FEEDBACK_VARYING: GLenum = 0x92F4;
4068    #[doc = "`GL_TRANSFORM_FEEDBACK_VARYINGS: GLenum = 0x8C83`"]
4069    #[doc = "* **Group:** ProgramPropertyARB"]
4070    pub const GL_TRANSFORM_FEEDBACK_VARYINGS: GLenum = 0x8C83;
4071    #[doc = "`GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: GLenum = 0x8C76`"]
4072    #[doc = "* **Group:** ProgramPropertyARB"]
4073    pub const GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: GLenum = 0x8C76;
4074    #[doc = "`GL_TRIANGLES: GLenum = 0x0004`"]
4075    #[doc = "* **Group:** PrimitiveType"]
4076    pub const GL_TRIANGLES: GLenum = 0x0004;
4077    #[doc = "`GL_TRIANGLES_ADJACENCY: GLenum = 0x000C`"]
4078    #[doc = "* **Group:** PrimitiveType"]
4079    pub const GL_TRIANGLES_ADJACENCY: GLenum = 0x000C;
4080    #[doc = "`GL_TRIANGLE_FAN: GLenum = 0x0006`"]
4081    #[doc = "* **Group:** PrimitiveType"]
4082    pub const GL_TRIANGLE_FAN: GLenum = 0x0006;
4083    #[doc = "`GL_TRIANGLE_STRIP: GLenum = 0x0005`"]
4084    #[doc = "* **Group:** PrimitiveType"]
4085    pub const GL_TRIANGLE_STRIP: GLenum = 0x0005;
4086    #[doc = "`GL_TRIANGLE_STRIP_ADJACENCY: GLenum = 0x000D`"]
4087    #[doc = "* **Group:** PrimitiveType"]
4088    pub const GL_TRIANGLE_STRIP_ADJACENCY: GLenum = 0x000D;
4089    #[doc = "`GL_TRUE: GLenum = 1`"]
4090    #[doc = "* **Groups:** Boolean, VertexShaderWriteMaskEXT, ClampColorModeARB"]
4091    pub const GL_TRUE: GLenum = 1;
4092    #[doc = "`GL_TYPE: GLenum = 0x92FA`"]
4093    #[doc = "* **Group:** ProgramResourceProperty"]
4094    pub const GL_TYPE: GLenum = 0x92FA;
4095    #[doc = "`GL_UNDEFINED_VERTEX: GLenum = 0x8260`"]
4096    pub const GL_UNDEFINED_VERTEX: GLenum = 0x8260;
4097    #[doc = "`GL_UNIFORM: GLenum = 0x92E1`"]
4098    #[doc = "* **Groups:** ProgramResourceProperty, ProgramInterface"]
4099    pub const GL_UNIFORM: GLenum = 0x92E1;
4100    #[doc = "`GL_UNIFORM_ARRAY_STRIDE: GLenum = 0x8A3C`"]
4101    #[doc = "* **Group:** UniformPName"]
4102    pub const GL_UNIFORM_ARRAY_STRIDE: GLenum = 0x8A3C;
4103    #[doc = "`GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x92DA`"]
4104    #[doc = "* **Group:** UniformPName"]
4105    pub const GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x92DA;
4106    #[doc = "`GL_UNIFORM_BARRIER_BIT: GLbitfield = 0x00000004`"]
4107    #[doc = "* **Group:** MemoryBarrierMask"]
4108    pub const GL_UNIFORM_BARRIER_BIT: GLbitfield = 0x00000004;
4109    #[doc = "`GL_UNIFORM_BLOCK: GLenum = 0x92E2`"]
4110    #[doc = "* **Group:** ProgramInterface"]
4111    pub const GL_UNIFORM_BLOCK: GLenum = 0x92E2;
4112    #[doc = "`GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum = 0x8A42`"]
4113    #[doc = "* **Group:** UniformBlockPName"]
4114    pub const GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum = 0x8A42;
4115    #[doc = "`GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum = 0x8A43`"]
4116    #[doc = "* **Group:** UniformBlockPName"]
4117    pub const GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum = 0x8A43;
4118    #[doc = "`GL_UNIFORM_BLOCK_BINDING: GLenum = 0x8A3F`"]
4119    #[doc = "* **Group:** UniformBlockPName"]
4120    pub const GL_UNIFORM_BLOCK_BINDING: GLenum = 0x8A3F;
4121    #[doc = "`GL_UNIFORM_BLOCK_DATA_SIZE: GLenum = 0x8A40`"]
4122    #[doc = "* **Group:** UniformBlockPName"]
4123    pub const GL_UNIFORM_BLOCK_DATA_SIZE: GLenum = 0x8A40;
4124    #[doc = "`GL_UNIFORM_BLOCK_INDEX: GLenum = 0x8A3A`"]
4125    #[doc = "* **Group:** UniformPName"]
4126    pub const GL_UNIFORM_BLOCK_INDEX: GLenum = 0x8A3A;
4127    #[doc = "`GL_UNIFORM_BLOCK_NAME_LENGTH: GLenum = 0x8A41`"]
4128    #[doc = "* **Group:** UniformBlockPName"]
4129    pub const GL_UNIFORM_BLOCK_NAME_LENGTH: GLenum = 0x8A41;
4130    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90EC`"]
4131    #[doc = "* **Group:** UniformBlockPName"]
4132    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90EC;
4133    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x8A46`"]
4134    #[doc = "* **Group:** UniformBlockPName"]
4135    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x8A46;
4136    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x8A45`"]
4137    #[doc = "* **Group:** UniformBlockPName"]
4138    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x8A45;
4139    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x84F0`"]
4140    #[doc = "* **Group:** UniformBlockPName"]
4141    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x84F0;
4142    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x84F1`"]
4143    #[doc = "* **Group:** UniformBlockPName"]
4144    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x84F1;
4145    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x8A44`"]
4146    #[doc = "* **Group:** UniformBlockPName"]
4147    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x8A44;
4148    #[doc = "`GL_UNIFORM_BUFFER: GLenum = 0x8A11`"]
4149    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
4150    pub const GL_UNIFORM_BUFFER: GLenum = 0x8A11;
4151    #[doc = "`GL_UNIFORM_BUFFER_BINDING: GLenum = 0x8A28`"]
4152    #[doc = "* **Group:** GetPName"]
4153    pub const GL_UNIFORM_BUFFER_BINDING: GLenum = 0x8A28;
4154    #[doc = "`GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x8A34`"]
4155    #[doc = "* **Group:** GetPName"]
4156    pub const GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x8A34;
4157    #[doc = "`GL_UNIFORM_BUFFER_SIZE: GLenum = 0x8A2A`"]
4158    #[doc = "* **Group:** GetPName"]
4159    pub const GL_UNIFORM_BUFFER_SIZE: GLenum = 0x8A2A;
4160    #[doc = "`GL_UNIFORM_BUFFER_START: GLenum = 0x8A29`"]
4161    #[doc = "* **Group:** GetPName"]
4162    pub const GL_UNIFORM_BUFFER_START: GLenum = 0x8A29;
4163    #[doc = "`GL_UNIFORM_IS_ROW_MAJOR: GLenum = 0x8A3E`"]
4164    #[doc = "* **Group:** UniformPName"]
4165    pub const GL_UNIFORM_IS_ROW_MAJOR: GLenum = 0x8A3E;
4166    #[doc = "`GL_UNIFORM_MATRIX_STRIDE: GLenum = 0x8A3D`"]
4167    #[doc = "* **Group:** UniformPName"]
4168    pub const GL_UNIFORM_MATRIX_STRIDE: GLenum = 0x8A3D;
4169    #[doc = "`GL_UNIFORM_NAME_LENGTH: GLenum = 0x8A39`"]
4170    #[doc = "* **Groups:** SubroutineParameterName, UniformPName"]
4171    pub const GL_UNIFORM_NAME_LENGTH: GLenum = 0x8A39;
4172    #[doc = "`GL_UNIFORM_OFFSET: GLenum = 0x8A3B`"]
4173    #[doc = "* **Group:** UniformPName"]
4174    pub const GL_UNIFORM_OFFSET: GLenum = 0x8A3B;
4175    #[doc = "`GL_UNIFORM_SIZE: GLenum = 0x8A38`"]
4176    #[doc = "* **Groups:** SubroutineParameterName, UniformPName"]
4177    pub const GL_UNIFORM_SIZE: GLenum = 0x8A38;
4178    #[doc = "`GL_UNIFORM_TYPE: GLenum = 0x8A37`"]
4179    #[doc = "* **Group:** UniformPName"]
4180    pub const GL_UNIFORM_TYPE: GLenum = 0x8A37;
4181    #[doc = "`GL_UNKNOWN_CONTEXT_RESET: GLenum = 0x8255`"]
4182    #[doc = "* **Group:** GraphicsResetStatus"]
4183    pub const GL_UNKNOWN_CONTEXT_RESET: GLenum = 0x8255;
4184    #[doc = "`GL_UNPACK_ALIGNMENT: GLenum = 0x0CF5`"]
4185    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4186    pub const GL_UNPACK_ALIGNMENT: GLenum = 0x0CF5;
4187    #[doc = "`GL_UNPACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x9129`"]
4188    pub const GL_UNPACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x9129;
4189    #[doc = "`GL_UNPACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x9128`"]
4190    pub const GL_UNPACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x9128;
4191    #[doc = "`GL_UNPACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912A`"]
4192    pub const GL_UNPACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912A;
4193    #[doc = "`GL_UNPACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x9127`"]
4194    pub const GL_UNPACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x9127;
4195    #[doc = "`GL_UNPACK_IMAGE_HEIGHT: GLenum = 0x806E`"]
4196    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4197    pub const GL_UNPACK_IMAGE_HEIGHT: GLenum = 0x806E;
4198    #[doc = "`GL_UNPACK_LSB_FIRST: GLenum = 0x0CF1`"]
4199    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4200    pub const GL_UNPACK_LSB_FIRST: GLenum = 0x0CF1;
4201    #[doc = "`GL_UNPACK_ROW_LENGTH: GLenum = 0x0CF2`"]
4202    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4203    pub const GL_UNPACK_ROW_LENGTH: GLenum = 0x0CF2;
4204    #[doc = "`GL_UNPACK_SKIP_IMAGES: GLenum = 0x806D`"]
4205    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4206    pub const GL_UNPACK_SKIP_IMAGES: GLenum = 0x806D;
4207    #[doc = "`GL_UNPACK_SKIP_PIXELS: GLenum = 0x0CF4`"]
4208    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4209    pub const GL_UNPACK_SKIP_PIXELS: GLenum = 0x0CF4;
4210    #[doc = "`GL_UNPACK_SKIP_ROWS: GLenum = 0x0CF3`"]
4211    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4212    pub const GL_UNPACK_SKIP_ROWS: GLenum = 0x0CF3;
4213    #[doc = "`GL_UNPACK_SWAP_BYTES: GLenum = 0x0CF0`"]
4214    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4215    pub const GL_UNPACK_SWAP_BYTES: GLenum = 0x0CF0;
4216    #[doc = "`GL_UNSIGNALED: GLenum = 0x9118`"]
4217    pub const GL_UNSIGNALED: GLenum = 0x9118;
4218    #[doc = "`GL_UNSIGNED_BYTE: GLenum = 0x1401`"]
4219    #[doc = "* **Groups:** VertexAttribIType, ScalarType, ReplacementCodeTypeSUN, ElementPointerTypeATI, MatrixIndexPointerTypeARB, WeightPointerTypeARB, ColorPointerType, DrawElementsType, ListNameType, PixelType, VertexAttribType, VertexAttribPointerType"]
4220    pub const GL_UNSIGNED_BYTE: GLenum = 0x1401;
4221    #[doc = "`GL_UNSIGNED_BYTE_2_3_3_REV: GLenum = 0x8362`"]
4222    pub const GL_UNSIGNED_BYTE_2_3_3_REV: GLenum = 0x8362;
4223    #[doc = "`GL_UNSIGNED_BYTE_3_3_2: GLenum = 0x8032`"]
4224    #[doc = "* **Group:** PixelType"]
4225    pub const GL_UNSIGNED_BYTE_3_3_2: GLenum = 0x8032;
4226    #[doc = "`GL_UNSIGNED_INT: GLenum = 0x1405`"]
4227    #[doc = "* **Groups:** VertexAttribIType, ScalarType, ReplacementCodeTypeSUN, ElementPointerTypeATI, MatrixIndexPointerTypeARB, WeightPointerTypeARB, ColorPointerType, DrawElementsType, ListNameType, PixelFormat, PixelType, VertexAttribType, AttributeType, UniformType, VertexAttribPointerType, GlslTypeToken"]
4228    pub const GL_UNSIGNED_INT: GLenum = 0x1405;
4229    #[doc = "`GL_UNSIGNED_INT_10F_11F_11F_REV: GLenum = 0x8C3B`"]
4230    #[doc = "* **Groups:** VertexAttribPointerType, VertexAttribType"]
4231    pub const GL_UNSIGNED_INT_10F_11F_11F_REV: GLenum = 0x8C3B;
4232    #[doc = "`GL_UNSIGNED_INT_10_10_10_2: GLenum = 0x8036`"]
4233    #[doc = "* **Group:** PixelType"]
4234    pub const GL_UNSIGNED_INT_10_10_10_2: GLenum = 0x8036;
4235    #[doc = "`GL_UNSIGNED_INT_24_8: GLenum = 0x84FA`"]
4236    pub const GL_UNSIGNED_INT_24_8: GLenum = 0x84FA;
4237    #[doc = "`GL_UNSIGNED_INT_2_10_10_10_REV: GLenum = 0x8368`"]
4238    #[doc = "* **Groups:** VertexAttribPointerType, VertexAttribType"]
4239    pub const GL_UNSIGNED_INT_2_10_10_10_REV: GLenum = 0x8368;
4240    #[doc = "`GL_UNSIGNED_INT_5_9_9_9_REV: GLenum = 0x8C3E`"]
4241    pub const GL_UNSIGNED_INT_5_9_9_9_REV: GLenum = 0x8C3E;
4242    #[doc = "`GL_UNSIGNED_INT_8_8_8_8: GLenum = 0x8035`"]
4243    #[doc = "* **Group:** PixelType"]
4244    pub const GL_UNSIGNED_INT_8_8_8_8: GLenum = 0x8035;
4245    #[doc = "`GL_UNSIGNED_INT_8_8_8_8_REV: GLenum = 0x8367`"]
4246    pub const GL_UNSIGNED_INT_8_8_8_8_REV: GLenum = 0x8367;
4247    #[doc = "`GL_UNSIGNED_INT_ATOMIC_COUNTER: GLenum = 0x92DB`"]
4248    #[doc = "* **Group:** GlslTypeToken"]
4249    pub const GL_UNSIGNED_INT_ATOMIC_COUNTER: GLenum = 0x92DB;
4250    #[doc = "`GL_UNSIGNED_INT_IMAGE_1D: GLenum = 0x9062`"]
4251    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4252    pub const GL_UNSIGNED_INT_IMAGE_1D: GLenum = 0x9062;
4253    #[doc = "`GL_UNSIGNED_INT_IMAGE_1D_ARRAY: GLenum = 0x9068`"]
4254    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4255    pub const GL_UNSIGNED_INT_IMAGE_1D_ARRAY: GLenum = 0x9068;
4256    #[doc = "`GL_UNSIGNED_INT_IMAGE_2D: GLenum = 0x9063`"]
4257    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4258    pub const GL_UNSIGNED_INT_IMAGE_2D: GLenum = 0x9063;
4259    #[doc = "`GL_UNSIGNED_INT_IMAGE_2D_ARRAY: GLenum = 0x9069`"]
4260    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4261    pub const GL_UNSIGNED_INT_IMAGE_2D_ARRAY: GLenum = 0x9069;
4262    #[doc = "`GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x906B`"]
4263    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4264    pub const GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x906B;
4265    #[doc = "`GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x906C`"]
4266    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4267    pub const GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x906C;
4268    #[doc = "`GL_UNSIGNED_INT_IMAGE_2D_RECT: GLenum = 0x9065`"]
4269    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4270    pub const GL_UNSIGNED_INT_IMAGE_2D_RECT: GLenum = 0x9065;
4271    #[doc = "`GL_UNSIGNED_INT_IMAGE_3D: GLenum = 0x9064`"]
4272    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4273    pub const GL_UNSIGNED_INT_IMAGE_3D: GLenum = 0x9064;
4274    #[doc = "`GL_UNSIGNED_INT_IMAGE_BUFFER: GLenum = 0x9067`"]
4275    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4276    pub const GL_UNSIGNED_INT_IMAGE_BUFFER: GLenum = 0x9067;
4277    #[doc = "`GL_UNSIGNED_INT_IMAGE_CUBE: GLenum = 0x9066`"]
4278    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4279    pub const GL_UNSIGNED_INT_IMAGE_CUBE: GLenum = 0x9066;
4280    #[doc = "`GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x906A`"]
4281    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4282    pub const GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x906A;
4283    #[doc = "`GL_UNSIGNED_INT_SAMPLER_1D: GLenum = 0x8DD1`"]
4284    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4285    pub const GL_UNSIGNED_INT_SAMPLER_1D: GLenum = 0x8DD1;
4286    #[doc = "`GL_UNSIGNED_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DD6`"]
4287    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4288    pub const GL_UNSIGNED_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DD6;
4289    #[doc = "`GL_UNSIGNED_INT_SAMPLER_2D: GLenum = 0x8DD2`"]
4290    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4291    pub const GL_UNSIGNED_INT_SAMPLER_2D: GLenum = 0x8DD2;
4292    #[doc = "`GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DD7`"]
4293    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4294    pub const GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DD7;
4295    #[doc = "`GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x910A`"]
4296    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4297    pub const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x910A;
4298    #[doc = "`GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910D`"]
4299    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4300    pub const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910D;
4301    #[doc = "`GL_UNSIGNED_INT_SAMPLER_2D_RECT: GLenum = 0x8DD5`"]
4302    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4303    pub const GL_UNSIGNED_INT_SAMPLER_2D_RECT: GLenum = 0x8DD5;
4304    #[doc = "`GL_UNSIGNED_INT_SAMPLER_3D: GLenum = 0x8DD3`"]
4305    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4306    pub const GL_UNSIGNED_INT_SAMPLER_3D: GLenum = 0x8DD3;
4307    #[doc = "`GL_UNSIGNED_INT_SAMPLER_BUFFER: GLenum = 0x8DD8`"]
4308    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4309    pub const GL_UNSIGNED_INT_SAMPLER_BUFFER: GLenum = 0x8DD8;
4310    #[doc = "`GL_UNSIGNED_INT_SAMPLER_CUBE: GLenum = 0x8DD4`"]
4311    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4312    pub const GL_UNSIGNED_INT_SAMPLER_CUBE: GLenum = 0x8DD4;
4313    #[doc = "`GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900F`"]
4314    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4315    pub const GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900F;
4316    #[doc = "`GL_UNSIGNED_INT_VEC2: GLenum = 0x8DC6`"]
4317    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4318    pub const GL_UNSIGNED_INT_VEC2: GLenum = 0x8DC6;
4319    #[doc = "`GL_UNSIGNED_INT_VEC3: GLenum = 0x8DC7`"]
4320    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4321    pub const GL_UNSIGNED_INT_VEC3: GLenum = 0x8DC7;
4322    #[doc = "`GL_UNSIGNED_INT_VEC4: GLenum = 0x8DC8`"]
4323    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4324    pub const GL_UNSIGNED_INT_VEC4: GLenum = 0x8DC8;
4325    #[doc = "`GL_UNSIGNED_NORMALIZED: GLenum = 0x8C17`"]
4326    pub const GL_UNSIGNED_NORMALIZED: GLenum = 0x8C17;
4327    #[doc = "`GL_UNSIGNED_SHORT: GLenum = 0x1403`"]
4328    #[doc = "* **Groups:** VertexAttribIType, ScalarType, ReplacementCodeTypeSUN, ElementPointerTypeATI, MatrixIndexPointerTypeARB, WeightPointerTypeARB, ColorPointerType, DrawElementsType, ListNameType, PixelFormat, PixelType, VertexAttribType, VertexAttribPointerType"]
4329    pub const GL_UNSIGNED_SHORT: GLenum = 0x1403;
4330    #[doc = "`GL_UNSIGNED_SHORT_1_5_5_5_REV: GLenum = 0x8366`"]
4331    pub const GL_UNSIGNED_SHORT_1_5_5_5_REV: GLenum = 0x8366;
4332    #[doc = "`GL_UNSIGNED_SHORT_4_4_4_4: GLenum = 0x8033`"]
4333    #[doc = "* **Group:** PixelType"]
4334    pub const GL_UNSIGNED_SHORT_4_4_4_4: GLenum = 0x8033;
4335    #[doc = "`GL_UNSIGNED_SHORT_4_4_4_4_REV: GLenum = 0x8365`"]
4336    pub const GL_UNSIGNED_SHORT_4_4_4_4_REV: GLenum = 0x8365;
4337    #[doc = "`GL_UNSIGNED_SHORT_5_5_5_1: GLenum = 0x8034`"]
4338    #[doc = "* **Group:** PixelType"]
4339    pub const GL_UNSIGNED_SHORT_5_5_5_1: GLenum = 0x8034;
4340    #[doc = "`GL_UNSIGNED_SHORT_5_6_5: GLenum = 0x8363`"]
4341    pub const GL_UNSIGNED_SHORT_5_6_5: GLenum = 0x8363;
4342    #[doc = "`GL_UNSIGNED_SHORT_5_6_5_REV: GLenum = 0x8364`"]
4343    pub const GL_UNSIGNED_SHORT_5_6_5_REV: GLenum = 0x8364;
4344    #[doc = "`GL_UPPER_LEFT: GLenum = 0x8CA2`"]
4345    #[doc = "* **Group:** ClipControlOrigin"]
4346    pub const GL_UPPER_LEFT: GLenum = 0x8CA2;
4347    #[doc = "`GL_VALIDATE_STATUS: GLenum = 0x8B83`"]
4348    #[doc = "* **Group:** ProgramPropertyARB"]
4349    pub const GL_VALIDATE_STATUS: GLenum = 0x8B83;
4350    #[doc = "`GL_VENDOR: GLenum = 0x1F00`"]
4351    #[doc = "* **Group:** StringName"]
4352    pub const GL_VENDOR: GLenum = 0x1F00;
4353    #[doc = "`GL_VERSION: GLenum = 0x1F02`"]
4354    #[doc = "* **Group:** StringName"]
4355    pub const GL_VERSION: GLenum = 0x1F02;
4356    #[doc = "`GL_VERTEX_ARRAY: GLenum = 0x8074`"]
4357    #[doc = "* **Groups:** ObjectIdentifier, EnableCap, GetPName"]
4358    pub const GL_VERTEX_ARRAY: GLenum = 0x8074;
4359    #[doc = "`GL_VERTEX_ARRAY_BINDING: GLenum = 0x85B5`"]
4360    #[doc = "* **Group:** GetPName"]
4361    pub const GL_VERTEX_ARRAY_BINDING: GLenum = 0x85B5;
4362    #[doc = "`GL_VERTEX_ARRAY_BINDING_APPLE: GLenum = 0x85B5`"]
4363    pub const GL_VERTEX_ARRAY_BINDING_APPLE: GLenum = 0x85B5;
4364    #[doc = "`GL_VERTEX_ARRAY_BINDING_OES: GLenum = 0x85B5`"]
4365    pub const GL_VERTEX_ARRAY_BINDING_OES: GLenum = 0x85B5;
4366    #[doc = "`GL_VERTEX_ARRAY_KHR: GLenum = 0x8074`"]
4367    pub const GL_VERTEX_ARRAY_KHR: GLenum = 0x8074;
4368    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT: GLbitfield = 0x00000001`"]
4369    #[doc = "* **Group:** MemoryBarrierMask"]
4370    pub const GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT: GLbitfield = 0x00000001;
4371    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum = 0x889F`"]
4372    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB"]
4373    pub const GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum = 0x889F;
4374    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum = 0x88FE`"]
4375    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4376    pub const GL_VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum = 0x88FE;
4377    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB: GLenum = 0x88FE`"]
4378    pub const GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB: GLenum = 0x88FE;
4379    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_ENABLED: GLenum = 0x8622`"]
4380    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4381    pub const GL_VERTEX_ATTRIB_ARRAY_ENABLED: GLenum = 0x8622;
4382    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_INTEGER: GLenum = 0x88FD`"]
4383    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4384    pub const GL_VERTEX_ATTRIB_ARRAY_INTEGER: GLenum = 0x88FD;
4385    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_LONG: GLenum = 0x874E`"]
4386    #[doc = "* **Groups:** VertexArrayPName, VertexAttribPropertyARB"]
4387    pub const GL_VERTEX_ATTRIB_ARRAY_LONG: GLenum = 0x874E;
4388    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum = 0x886A`"]
4389    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4390    pub const GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum = 0x886A;
4391    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_POINTER: GLenum = 0x8645`"]
4392    #[doc = "* **Group:** VertexAttribPointerPropertyARB"]
4393    pub const GL_VERTEX_ATTRIB_ARRAY_POINTER: GLenum = 0x8645;
4394    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_SIZE: GLenum = 0x8623`"]
4395    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4396    pub const GL_VERTEX_ATTRIB_ARRAY_SIZE: GLenum = 0x8623;
4397    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_STRIDE: GLenum = 0x8624`"]
4398    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4399    pub const GL_VERTEX_ATTRIB_ARRAY_STRIDE: GLenum = 0x8624;
4400    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_TYPE: GLenum = 0x8625`"]
4401    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4402    pub const GL_VERTEX_ATTRIB_ARRAY_TYPE: GLenum = 0x8625;
4403    #[doc = "`GL_VERTEX_ATTRIB_BINDING: GLenum = 0x82D4`"]
4404    #[doc = "* **Group:** VertexAttribPropertyARB"]
4405    pub const GL_VERTEX_ATTRIB_BINDING: GLenum = 0x82D4;
4406    #[doc = "`GL_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D5`"]
4407    #[doc = "* **Groups:** VertexArrayPName, VertexAttribPropertyARB"]
4408    pub const GL_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D5;
4409    #[doc = "`GL_VERTEX_BINDING_BUFFER: GLenum = 0x8F4F`"]
4410    pub const GL_VERTEX_BINDING_BUFFER: GLenum = 0x8F4F;
4411    #[doc = "`GL_VERTEX_BINDING_DIVISOR: GLenum = 0x82D6`"]
4412    #[doc = "* **Group:** GetPName"]
4413    pub const GL_VERTEX_BINDING_DIVISOR: GLenum = 0x82D6;
4414    #[doc = "`GL_VERTEX_BINDING_OFFSET: GLenum = 0x82D7`"]
4415    #[doc = "* **Group:** GetPName"]
4416    pub const GL_VERTEX_BINDING_OFFSET: GLenum = 0x82D7;
4417    #[doc = "`GL_VERTEX_BINDING_STRIDE: GLenum = 0x82D8`"]
4418    #[doc = "* **Group:** GetPName"]
4419    pub const GL_VERTEX_BINDING_STRIDE: GLenum = 0x82D8;
4420    #[doc = "`GL_VERTEX_PROGRAM_POINT_SIZE: GLenum = 0x8642`"]
4421    pub const GL_VERTEX_PROGRAM_POINT_SIZE: GLenum = 0x8642;
4422    #[doc = "`GL_VERTEX_SHADER: GLenum = 0x8B31`"]
4423    #[doc = "* **Groups:** PipelineParameterName, ShaderType"]
4424    pub const GL_VERTEX_SHADER: GLenum = 0x8B31;
4425    #[doc = "`GL_VERTEX_SHADER_BIT: GLbitfield = 0x00000001`"]
4426    #[doc = "* **Group:** UseProgramStageMask"]
4427    pub const GL_VERTEX_SHADER_BIT: GLbitfield = 0x00000001;
4428    #[doc = "`GL_VERTEX_SHADER_INVOCATIONS: GLenum = 0x82F0`"]
4429    #[doc = "* **Group:** QueryTarget"]
4430    pub const GL_VERTEX_SHADER_INVOCATIONS: GLenum = 0x82F0;
4431    #[doc = "`GL_VERTEX_SUBROUTINE: GLenum = 0x92E8`"]
4432    #[doc = "* **Group:** ProgramInterface"]
4433    pub const GL_VERTEX_SUBROUTINE: GLenum = 0x92E8;
4434    #[doc = "`GL_VERTEX_SUBROUTINE_UNIFORM: GLenum = 0x92EE`"]
4435    #[doc = "* **Group:** ProgramInterface"]
4436    pub const GL_VERTEX_SUBROUTINE_UNIFORM: GLenum = 0x92EE;
4437    #[doc = "`GL_VERTEX_TEXTURE: GLenum = 0x829B`"]
4438    #[doc = "* **Group:** InternalFormatPName"]
4439    pub const GL_VERTEX_TEXTURE: GLenum = 0x829B;
4440    #[doc = "`GL_VERTICES_SUBMITTED: GLenum = 0x82EE`"]
4441    #[doc = "* **Group:** QueryTarget"]
4442    pub const GL_VERTICES_SUBMITTED: GLenum = 0x82EE;
4443    #[doc = "`GL_VIEWPORT: GLenum = 0x0BA2`"]
4444    #[doc = "* **Group:** GetPName"]
4445    pub const GL_VIEWPORT: GLenum = 0x0BA2;
4446    #[doc = "`GL_VIEWPORT_BOUNDS_RANGE: GLenum = 0x825D`"]
4447    #[doc = "* **Group:** GetPName"]
4448    pub const GL_VIEWPORT_BOUNDS_RANGE: GLenum = 0x825D;
4449    #[doc = "`GL_VIEWPORT_INDEX_PROVOKING_VERTEX: GLenum = 0x825F`"]
4450    #[doc = "* **Group:** GetPName"]
4451    pub const GL_VIEWPORT_INDEX_PROVOKING_VERTEX: GLenum = 0x825F;
4452    #[doc = "`GL_VIEWPORT_SUBPIXEL_BITS: GLenum = 0x825C`"]
4453    #[doc = "* **Group:** GetPName"]
4454    pub const GL_VIEWPORT_SUBPIXEL_BITS: GLenum = 0x825C;
4455    #[doc = "`GL_VIEW_CLASS_128_BITS: GLenum = 0x82C4`"]
4456    pub const GL_VIEW_CLASS_128_BITS: GLenum = 0x82C4;
4457    #[doc = "`GL_VIEW_CLASS_16_BITS: GLenum = 0x82CA`"]
4458    pub const GL_VIEW_CLASS_16_BITS: GLenum = 0x82CA;
4459    #[doc = "`GL_VIEW_CLASS_24_BITS: GLenum = 0x82C9`"]
4460    pub const GL_VIEW_CLASS_24_BITS: GLenum = 0x82C9;
4461    #[doc = "`GL_VIEW_CLASS_32_BITS: GLenum = 0x82C8`"]
4462    pub const GL_VIEW_CLASS_32_BITS: GLenum = 0x82C8;
4463    #[doc = "`GL_VIEW_CLASS_48_BITS: GLenum = 0x82C7`"]
4464    pub const GL_VIEW_CLASS_48_BITS: GLenum = 0x82C7;
4465    #[doc = "`GL_VIEW_CLASS_64_BITS: GLenum = 0x82C6`"]
4466    pub const GL_VIEW_CLASS_64_BITS: GLenum = 0x82C6;
4467    #[doc = "`GL_VIEW_CLASS_8_BITS: GLenum = 0x82CB`"]
4468    pub const GL_VIEW_CLASS_8_BITS: GLenum = 0x82CB;
4469    #[doc = "`GL_VIEW_CLASS_96_BITS: GLenum = 0x82C5`"]
4470    pub const GL_VIEW_CLASS_96_BITS: GLenum = 0x82C5;
4471    #[doc = "`GL_VIEW_CLASS_BPTC_FLOAT: GLenum = 0x82D3`"]
4472    pub const GL_VIEW_CLASS_BPTC_FLOAT: GLenum = 0x82D3;
4473    #[doc = "`GL_VIEW_CLASS_BPTC_UNORM: GLenum = 0x82D2`"]
4474    pub const GL_VIEW_CLASS_BPTC_UNORM: GLenum = 0x82D2;
4475    #[doc = "`GL_VIEW_CLASS_RGTC1_RED: GLenum = 0x82D0`"]
4476    pub const GL_VIEW_CLASS_RGTC1_RED: GLenum = 0x82D0;
4477    #[doc = "`GL_VIEW_CLASS_RGTC2_RG: GLenum = 0x82D1`"]
4478    pub const GL_VIEW_CLASS_RGTC2_RG: GLenum = 0x82D1;
4479    #[doc = "`GL_VIEW_CLASS_S3TC_DXT1_RGB: GLenum = 0x82CC`"]
4480    pub const GL_VIEW_CLASS_S3TC_DXT1_RGB: GLenum = 0x82CC;
4481    #[doc = "`GL_VIEW_CLASS_S3TC_DXT1_RGBA: GLenum = 0x82CD`"]
4482    pub const GL_VIEW_CLASS_S3TC_DXT1_RGBA: GLenum = 0x82CD;
4483    #[doc = "`GL_VIEW_CLASS_S3TC_DXT3_RGBA: GLenum = 0x82CE`"]
4484    pub const GL_VIEW_CLASS_S3TC_DXT3_RGBA: GLenum = 0x82CE;
4485    #[doc = "`GL_VIEW_CLASS_S3TC_DXT5_RGBA: GLenum = 0x82CF`"]
4486    pub const GL_VIEW_CLASS_S3TC_DXT5_RGBA: GLenum = 0x82CF;
4487    #[doc = "`GL_VIEW_COMPATIBILITY_CLASS: GLenum = 0x82B6`"]
4488    #[doc = "* **Group:** InternalFormatPName"]
4489    pub const GL_VIEW_COMPATIBILITY_CLASS: GLenum = 0x82B6;
4490    #[doc = "`GL_WAIT_FAILED: GLenum = 0x911D`"]
4491    #[doc = "* **Group:** SyncStatus"]
4492    pub const GL_WAIT_FAILED: GLenum = 0x911D;
4493    #[doc = "`GL_WRITE_ONLY: GLenum = 0x88B9`"]
4494    #[doc = "* **Group:** BufferAccessARB"]
4495    pub const GL_WRITE_ONLY: GLenum = 0x88B9;
4496    #[doc = "`GL_XOR: GLenum = 0x1506`"]
4497    #[doc = "* **Group:** LogicOp"]
4498    pub const GL_XOR: GLenum = 0x1506;
4499    #[doc = "`GL_ZERO: GLenum = 0`"]
4500    #[doc = "* **Groups:** TextureSwizzle, StencilOp, BlendingFactor"]
4501    pub const GL_ZERO: GLenum = 0;
4502    #[doc = "`GL_ZERO_TO_ONE: GLenum = 0x935F`"]
4503    #[doc = "* **Group:** ClipControlDepth"]
4504    pub const GL_ZERO_TO_ONE: GLenum = 0x935F;
4505}
4506
4507/// This is called to panic when a not-loaded function is attempted.
4508///
4509/// Placing the panic mechanism in this cold function generally helps code generation for the hot path.
4510/// Or so the sages say, at least.
4511#[cold]
4512#[inline(never)]
4513#[allow(dead_code)]
4514fn go_panic_because_fn_not_loaded(name: &str) -> ! {
4515    panic!("called {name} but it was not loaded.", name = name)
4516}
4517
4518/// Loads a function pointer.
4519/// Rejects suggested pointer addresses which are likely to be lies.
4520/// This function is used by both the global loader and struct loader.
4521/// We mark it as `inline(never)` to favor a small binary over initialization speed.
4522/// Returns if there's now a non-null value in the atomic pointer.
4523#[inline(never)]
4524#[allow(dead_code)]
4525fn load_dyn_name_atomic_ptr(
4526    get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
4527    fn_name: &[u8],
4528    ptr: &APcv,
4529) -> bool {
4530    // if this fails the code generator itself royally screwed up somehow,
4531    // and so it's only a debug assert.
4532    debug_assert_eq!(*fn_name.last().unwrap(), 0);
4533    let p: *mut c_void = get_proc_address(fn_name.as_ptr() as *const c_char);
4534    let p_usize = p as usize;
4535    // You *should* get null for failed lookups, but some systems have been
4536    // reported to give "error code" values such as -1 or small non-null values.
4537    // To help guard against this silliness, we consider these values to also
4538    // just be a result of null.
4539    if p_usize == core::usize::MAX || p_usize < 8 {
4540        ptr.store(null_mut(), RELAX);
4541        false
4542    } else {
4543        ptr.store(p, RELAX);
4544        true
4545    }
4546}
4547
4548/// Returns if an error was printed.
4549#[cfg(feature = "debug_automatic_glGetError")]
4550#[inline(never)]
4551fn report_error_code_from(name: &str, err: GLenum) {
4552    match err {
4553        GL_NO_ERROR => return,
4554        GL_INVALID_ENUM => error!("Invalid Enum to {name}.", name = name),
4555        GL_INVALID_VALUE => error!("Invalid Value to {name}.", name = name),
4556        GL_INVALID_OPERATION => error!("Invalid Operation to {name}.", name = name),
4557        GL_INVALID_FRAMEBUFFER_OPERATION => {
4558            error!("Invalid Framebuffer Operation to {name}.", name = name)
4559        }
4560        GL_OUT_OF_MEMORY => error!("Out of Memory in {name}.", name = name),
4561        GL_STACK_UNDERFLOW => error!("Stack Underflow in {name}.", name = name),
4562        GL_STACK_OVERFLOW => error!("Stack Overflow in {name}.", name = name),
4563        unknown => error!(
4564            "Unknown error code {unknown} to {name}.",
4565            name = name,
4566            unknown = unknown
4567        ),
4568    }
4569}
4570
4571#[inline(always)]
4572#[allow(dead_code)]
4573unsafe fn call_atomic_ptr_0arg<Ret>(name: &str, ptr: &APcv) -> Ret {
4574    let p = ptr.load(RELAX);
4575    match transmute::<*mut c_void, Option<extern "system" fn() -> Ret>>(p) {
4576        Some(fn_p) => fn_p(),
4577        None => go_panic_because_fn_not_loaded(name),
4578    }
4579}
4580
4581#[inline(always)]
4582#[allow(dead_code)]
4583unsafe fn call_atomic_ptr_1arg<Ret, A>(name: &str, ptr: &APcv, a: A) -> Ret {
4584    let p = ptr.load(RELAX);
4585    match transmute::<*mut c_void, Option<extern "system" fn(A) -> Ret>>(p) {
4586        Some(fn_p) => fn_p(a),
4587        None => go_panic_because_fn_not_loaded(name),
4588    }
4589}
4590
4591#[inline(always)]
4592#[allow(dead_code)]
4593unsafe fn call_atomic_ptr_2arg<Ret, A, B>(name: &str, ptr: &APcv, a: A, b: B) -> Ret {
4594    let p = ptr.load(RELAX);
4595    match transmute::<*mut c_void, Option<extern "system" fn(A, B) -> Ret>>(p) {
4596        Some(fn_p) => fn_p(a, b),
4597        None => go_panic_because_fn_not_loaded(name),
4598    }
4599}
4600
4601#[inline(always)]
4602#[allow(dead_code)]
4603unsafe fn call_atomic_ptr_3arg<Ret, A, B, C>(name: &str, ptr: &APcv, a: A, b: B, c: C) -> Ret {
4604    let p = ptr.load(RELAX);
4605    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C) -> Ret>>(p) {
4606        Some(fn_p) => fn_p(a, b, c),
4607        None => go_panic_because_fn_not_loaded(name),
4608    }
4609}
4610
4611#[inline(always)]
4612#[allow(dead_code)]
4613unsafe fn call_atomic_ptr_4arg<Ret, A, B, C, D>(
4614    name: &str,
4615    ptr: &APcv,
4616    a: A,
4617    b: B,
4618    c: C,
4619    d: D,
4620) -> Ret {
4621    let p = ptr.load(RELAX);
4622    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D) -> Ret>>(p) {
4623        Some(fn_p) => fn_p(a, b, c, d),
4624        None => go_panic_because_fn_not_loaded(name),
4625    }
4626}
4627
4628#[inline(always)]
4629#[allow(dead_code)]
4630unsafe fn call_atomic_ptr_5arg<Ret, A, B, C, D, E>(
4631    name: &str,
4632    ptr: &APcv,
4633    a: A,
4634    b: B,
4635    c: C,
4636    d: D,
4637    e: E,
4638) -> Ret {
4639    let p = ptr.load(RELAX);
4640    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E) -> Ret>>(p) {
4641        Some(fn_p) => fn_p(a, b, c, d, e),
4642        None => go_panic_because_fn_not_loaded(name),
4643    }
4644}
4645
4646#[inline(always)]
4647#[allow(dead_code)]
4648unsafe fn call_atomic_ptr_6arg<Ret, A, B, C, D, E, F>(
4649    name: &str,
4650    ptr: &APcv,
4651    a: A,
4652    b: B,
4653    c: C,
4654    d: D,
4655    e: E,
4656    f: F,
4657) -> Ret {
4658    let p = ptr.load(RELAX);
4659    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F) -> Ret>>(p) {
4660        Some(fn_p) => fn_p(a, b, c, d, e, f),
4661        None => go_panic_because_fn_not_loaded(name),
4662    }
4663}
4664
4665#[inline(always)]
4666#[allow(dead_code)]
4667unsafe fn call_atomic_ptr_7arg<Ret, A, B, C, D, E, F, G>(
4668    name: &str,
4669    ptr: &APcv,
4670    a: A,
4671    b: B,
4672    c: C,
4673    d: D,
4674    e: E,
4675    f: F,
4676    g: G,
4677) -> Ret {
4678    let p = ptr.load(RELAX);
4679    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F, G) -> Ret>>(p) {
4680        Some(fn_p) => fn_p(a, b, c, d, e, f, g),
4681        None => go_panic_because_fn_not_loaded(name),
4682    }
4683}
4684
4685#[inline(always)]
4686#[allow(dead_code)]
4687unsafe fn call_atomic_ptr_8arg<Ret, A, B, C, D, E, F, G, H>(
4688    name: &str,
4689    ptr: &APcv,
4690    a: A,
4691    b: B,
4692    c: C,
4693    d: D,
4694    e: E,
4695    f: F,
4696    g: G,
4697    h: H,
4698) -> Ret {
4699    let p = ptr.load(RELAX);
4700    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F, G, H) -> Ret>>(p) {
4701        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h),
4702        None => go_panic_because_fn_not_loaded(name),
4703    }
4704}
4705
4706#[inline(always)]
4707#[allow(dead_code)]
4708unsafe fn call_atomic_ptr_9arg<Ret, A, B, C, D, E, F, G, H, I>(
4709    name: &str,
4710    ptr: &APcv,
4711    a: A,
4712    b: B,
4713    c: C,
4714    d: D,
4715    e: E,
4716    f: F,
4717    g: G,
4718    h: H,
4719    i: I,
4720) -> Ret {
4721    let p = ptr.load(RELAX);
4722    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F, G, H, I) -> Ret>>(p)
4723    {
4724        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h, i),
4725        None => go_panic_because_fn_not_loaded(name),
4726    }
4727}
4728
4729#[inline(always)]
4730#[allow(dead_code)]
4731unsafe fn call_atomic_ptr_10arg<Ret, A, B, C, D, E, F, G, H, I, J>(
4732    name: &str,
4733    ptr: &APcv,
4734    a: A,
4735    b: B,
4736    c: C,
4737    d: D,
4738    e: E,
4739    f: F,
4740    g: G,
4741    h: H,
4742    i: I,
4743    j: J,
4744) -> Ret {
4745    let p = ptr.load(RELAX);
4746    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F, G, H, I, J) -> Ret>>(
4747        p,
4748    ) {
4749        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h, i, j),
4750        None => go_panic_because_fn_not_loaded(name),
4751    }
4752}
4753
4754#[inline(always)]
4755#[allow(dead_code)]
4756unsafe fn call_atomic_ptr_11arg<Ret, A, B, C, D, E, F, G, H, I, J, K>(
4757    name: &str,
4758    ptr: &APcv,
4759    a: A,
4760    b: B,
4761    c: C,
4762    d: D,
4763    e: E,
4764    f: F,
4765    g: G,
4766    h: H,
4767    i: I,
4768    j: J,
4769    k: K,
4770) -> Ret {
4771    let p = ptr.load(RELAX);
4772    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret>>(
4773        p,
4774    ) {
4775        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h, i, j, k),
4776        None => go_panic_because_fn_not_loaded(name),
4777    }
4778}
4779
4780#[inline(always)]
4781#[allow(dead_code)]
4782unsafe fn call_atomic_ptr_12arg<Ret, A, B, C, D, E, F, G, H, I, J, K, L>(
4783    name: &str,
4784    ptr: &APcv,
4785    a: A,
4786    b: B,
4787    c: C,
4788    d: D,
4789    e: E,
4790    f: F,
4791    g: G,
4792    h: H,
4793    i: I,
4794    j: J,
4795    k: K,
4796    l: L,
4797) -> Ret {
4798    let p = ptr.load(RELAX);
4799    match transmute::<
4800        *mut c_void,
4801        Option<extern "system" fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret>,
4802    >(p)
4803    {
4804        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h, i, j, k, l),
4805        None => go_panic_because_fn_not_loaded(name),
4806    }
4807}
4808
4809#[inline(always)]
4810#[allow(dead_code)]
4811unsafe fn call_atomic_ptr_15arg<Ret, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(
4812    name: &str,
4813    ptr: &APcv,
4814    a: A,
4815    b: B,
4816    c: C,
4817    d: D,
4818    e: E,
4819    f: F,
4820    g: G,
4821    h: H,
4822    i: I,
4823    j: J,
4824    k: K,
4825    l: L,
4826    m: M,
4827    n: N,
4828    o: O,
4829) -> Ret {
4830    let p = ptr.load(RELAX);
4831    match transmute::<
4832        *mut c_void,
4833        Option<extern "system" fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) -> Ret>,
4834    >(p)
4835    {
4836        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o),
4837        None => go_panic_because_fn_not_loaded(name),
4838    }
4839}
4840
4841pub use struct_commands::*;
4842pub mod struct_commands {
4843    //! Contains the [`GlFns`] type for using the struct GL loader.
4844    use super::*;
4845    impl GlFns {
4846        /// Constructs a new struct with all pointers loaded by the `get_proc_address` given.
4847        pub unsafe fn load_with<F>(mut get_proc_address: F) -> Self
4848        where
4849            F: FnMut(*const c_char) -> *mut c_void,
4850        {
4851            // Safety: The `GlFns` struct is nothing but `AtomicPtr` fields,
4852            // which can be safely constructed with `zeroed`.
4853            let out: Self = core::mem::zeroed();
4854            out.load_all_with_dyn(&mut get_proc_address);
4855            out
4856        }
4857
4858        #[cfg(feature = "debug_automatic_glGetError")]
4859        #[inline(never)]
4860        unsafe fn automatic_glGetError(&self, name: &str) {
4861            let mut err = self.GetError();
4862            while err != GL_NO_ERROR {
4863                report_error_code_from(name, err);
4864                err = self.GetError();
4865            }
4866        }
4867
4868        /// Loads all pointers using the `get_proc_address` given.
4869        #[doc(hidden)]
4870        #[inline(never)]
4871        pub unsafe fn load_all_with_dyn(
4872            &self,
4873            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
4874        ) {
4875            self.ActiveShaderProgram_load_with_dyn(get_proc_address);
4876            self.ActiveTexture_load_with_dyn(get_proc_address);
4877            self.AttachShader_load_with_dyn(get_proc_address);
4878            self.BeginConditionalRender_load_with_dyn(get_proc_address);
4879            self.BeginQuery_load_with_dyn(get_proc_address);
4880            {
4881                self.BeginQueryEXT_load_with_dyn(get_proc_address);
4882            }
4883            self.BeginQueryIndexed_load_with_dyn(get_proc_address);
4884            self.BeginTransformFeedback_load_with_dyn(get_proc_address);
4885            self.BindAttribLocation_load_with_dyn(get_proc_address);
4886            self.BindBuffer_load_with_dyn(get_proc_address);
4887            self.BindBufferBase_load_with_dyn(get_proc_address);
4888            self.BindBufferRange_load_with_dyn(get_proc_address);
4889            self.BindBuffersBase_load_with_dyn(get_proc_address);
4890            self.BindBuffersRange_load_with_dyn(get_proc_address);
4891            self.BindFragDataLocation_load_with_dyn(get_proc_address);
4892            self.BindFragDataLocationIndexed_load_with_dyn(get_proc_address);
4893            self.BindFramebuffer_load_with_dyn(get_proc_address);
4894            self.BindImageTexture_load_with_dyn(get_proc_address);
4895            self.BindImageTextures_load_with_dyn(get_proc_address);
4896            self.BindProgramPipeline_load_with_dyn(get_proc_address);
4897            self.BindRenderbuffer_load_with_dyn(get_proc_address);
4898            self.BindSampler_load_with_dyn(get_proc_address);
4899            self.BindSamplers_load_with_dyn(get_proc_address);
4900            self.BindTexture_load_with_dyn(get_proc_address);
4901            self.BindTextureUnit_load_with_dyn(get_proc_address);
4902            self.BindTextures_load_with_dyn(get_proc_address);
4903            self.BindTransformFeedback_load_with_dyn(get_proc_address);
4904            self.BindVertexArray_load_with_dyn(get_proc_address);
4905            {
4906                self.BindVertexArrayAPPLE_load_with_dyn(get_proc_address);
4907            }
4908            {
4909                self.BindVertexArrayOES_load_with_dyn(get_proc_address);
4910            }
4911            self.BindVertexBuffer_load_with_dyn(get_proc_address);
4912            self.BindVertexBuffers_load_with_dyn(get_proc_address);
4913            self.BlendBarrier_load_with_dyn(get_proc_address);
4914            self.BlendColor_load_with_dyn(get_proc_address);
4915            self.BlendEquation_load_with_dyn(get_proc_address);
4916            self.BlendEquationSeparate_load_with_dyn(get_proc_address);
4917            self.BlendEquationSeparatei_load_with_dyn(get_proc_address);
4918            self.BlendEquationi_load_with_dyn(get_proc_address);
4919            self.BlendFunc_load_with_dyn(get_proc_address);
4920            self.BlendFuncSeparate_load_with_dyn(get_proc_address);
4921            self.BlendFuncSeparatei_load_with_dyn(get_proc_address);
4922            self.BlendFunci_load_with_dyn(get_proc_address);
4923            self.BlitFramebuffer_load_with_dyn(get_proc_address);
4924            self.BlitNamedFramebuffer_load_with_dyn(get_proc_address);
4925            self.BufferData_load_with_dyn(get_proc_address);
4926            self.BufferStorage_load_with_dyn(get_proc_address);
4927            {
4928                self.BufferStorageEXT_load_with_dyn(get_proc_address);
4929            }
4930            self.BufferSubData_load_with_dyn(get_proc_address);
4931            self.CheckFramebufferStatus_load_with_dyn(get_proc_address);
4932            self.CheckNamedFramebufferStatus_load_with_dyn(get_proc_address);
4933            self.ClampColor_load_with_dyn(get_proc_address);
4934            self.Clear_load_with_dyn(get_proc_address);
4935            self.ClearBufferData_load_with_dyn(get_proc_address);
4936            self.ClearBufferSubData_load_with_dyn(get_proc_address);
4937            self.ClearBufferfi_load_with_dyn(get_proc_address);
4938            self.ClearBufferfv_load_with_dyn(get_proc_address);
4939            self.ClearBufferiv_load_with_dyn(get_proc_address);
4940            self.ClearBufferuiv_load_with_dyn(get_proc_address);
4941            self.ClearColor_load_with_dyn(get_proc_address);
4942            self.ClearDepth_load_with_dyn(get_proc_address);
4943            self.ClearDepthf_load_with_dyn(get_proc_address);
4944            self.ClearNamedBufferData_load_with_dyn(get_proc_address);
4945            self.ClearNamedBufferSubData_load_with_dyn(get_proc_address);
4946            self.ClearNamedFramebufferfi_load_with_dyn(get_proc_address);
4947            self.ClearNamedFramebufferfv_load_with_dyn(get_proc_address);
4948            self.ClearNamedFramebufferiv_load_with_dyn(get_proc_address);
4949            self.ClearNamedFramebufferuiv_load_with_dyn(get_proc_address);
4950            self.ClearStencil_load_with_dyn(get_proc_address);
4951            self.ClearTexImage_load_with_dyn(get_proc_address);
4952            self.ClearTexSubImage_load_with_dyn(get_proc_address);
4953            self.ClientWaitSync_load_with_dyn(get_proc_address);
4954            self.ClipControl_load_with_dyn(get_proc_address);
4955            self.ColorMask_load_with_dyn(get_proc_address);
4956            {
4957                self.ColorMaskIndexedEXT_load_with_dyn(get_proc_address);
4958            }
4959            self.ColorMaski_load_with_dyn(get_proc_address);
4960            self.CompileShader_load_with_dyn(get_proc_address);
4961            self.CompressedTexImage1D_load_with_dyn(get_proc_address);
4962            self.CompressedTexImage2D_load_with_dyn(get_proc_address);
4963            self.CompressedTexImage3D_load_with_dyn(get_proc_address);
4964            self.CompressedTexSubImage1D_load_with_dyn(get_proc_address);
4965            self.CompressedTexSubImage2D_load_with_dyn(get_proc_address);
4966            self.CompressedTexSubImage3D_load_with_dyn(get_proc_address);
4967            self.CompressedTextureSubImage1D_load_with_dyn(get_proc_address);
4968            self.CompressedTextureSubImage2D_load_with_dyn(get_proc_address);
4969            self.CompressedTextureSubImage3D_load_with_dyn(get_proc_address);
4970            self.CopyBufferSubData_load_with_dyn(get_proc_address);
4971            {
4972                self.CopyBufferSubDataNV_load_with_dyn(get_proc_address);
4973            }
4974            self.CopyImageSubData_load_with_dyn(get_proc_address);
4975            self.CopyNamedBufferSubData_load_with_dyn(get_proc_address);
4976            self.CopyTexImage1D_load_with_dyn(get_proc_address);
4977            self.CopyTexImage2D_load_with_dyn(get_proc_address);
4978            self.CopyTexSubImage1D_load_with_dyn(get_proc_address);
4979            self.CopyTexSubImage2D_load_with_dyn(get_proc_address);
4980            self.CopyTexSubImage3D_load_with_dyn(get_proc_address);
4981            self.CopyTextureSubImage1D_load_with_dyn(get_proc_address);
4982            self.CopyTextureSubImage2D_load_with_dyn(get_proc_address);
4983            self.CopyTextureSubImage3D_load_with_dyn(get_proc_address);
4984            self.CreateBuffers_load_with_dyn(get_proc_address);
4985            self.CreateFramebuffers_load_with_dyn(get_proc_address);
4986            self.CreateProgram_load_with_dyn(get_proc_address);
4987            self.CreateProgramPipelines_load_with_dyn(get_proc_address);
4988            self.CreateQueries_load_with_dyn(get_proc_address);
4989            self.CreateRenderbuffers_load_with_dyn(get_proc_address);
4990            self.CreateSamplers_load_with_dyn(get_proc_address);
4991            self.CreateShader_load_with_dyn(get_proc_address);
4992            self.CreateShaderProgramv_load_with_dyn(get_proc_address);
4993            self.CreateTextures_load_with_dyn(get_proc_address);
4994            self.CreateTransformFeedbacks_load_with_dyn(get_proc_address);
4995            self.CreateVertexArrays_load_with_dyn(get_proc_address);
4996            self.CullFace_load_with_dyn(get_proc_address);
4997            self.DebugMessageCallback_load_with_dyn(get_proc_address);
4998            {
4999                self.DebugMessageCallbackARB_load_with_dyn(get_proc_address);
5000            }
5001            {
5002                self.DebugMessageCallbackKHR_load_with_dyn(get_proc_address);
5003            }
5004            self.DebugMessageControl_load_with_dyn(get_proc_address);
5005            {
5006                self.DebugMessageControlARB_load_with_dyn(get_proc_address);
5007            }
5008            {
5009                self.DebugMessageControlKHR_load_with_dyn(get_proc_address);
5010            }
5011            self.DebugMessageInsert_load_with_dyn(get_proc_address);
5012            {
5013                self.DebugMessageInsertARB_load_with_dyn(get_proc_address);
5014            }
5015            {
5016                self.DebugMessageInsertKHR_load_with_dyn(get_proc_address);
5017            }
5018            self.DeleteBuffers_load_with_dyn(get_proc_address);
5019            self.DeleteFramebuffers_load_with_dyn(get_proc_address);
5020            self.DeleteProgram_load_with_dyn(get_proc_address);
5021            self.DeleteProgramPipelines_load_with_dyn(get_proc_address);
5022            self.DeleteQueries_load_with_dyn(get_proc_address);
5023            {
5024                self.DeleteQueriesEXT_load_with_dyn(get_proc_address);
5025            }
5026            self.DeleteRenderbuffers_load_with_dyn(get_proc_address);
5027            self.DeleteSamplers_load_with_dyn(get_proc_address);
5028            self.DeleteShader_load_with_dyn(get_proc_address);
5029            self.DeleteSync_load_with_dyn(get_proc_address);
5030            self.DeleteTextures_load_with_dyn(get_proc_address);
5031            self.DeleteTransformFeedbacks_load_with_dyn(get_proc_address);
5032            self.DeleteVertexArrays_load_with_dyn(get_proc_address);
5033            {
5034                self.DeleteVertexArraysAPPLE_load_with_dyn(get_proc_address);
5035            }
5036            {
5037                self.DeleteVertexArraysOES_load_with_dyn(get_proc_address);
5038            }
5039            self.DepthFunc_load_with_dyn(get_proc_address);
5040            self.DepthMask_load_with_dyn(get_proc_address);
5041            self.DepthRange_load_with_dyn(get_proc_address);
5042            self.DepthRangeArrayv_load_with_dyn(get_proc_address);
5043            self.DepthRangeIndexed_load_with_dyn(get_proc_address);
5044            self.DepthRangef_load_with_dyn(get_proc_address);
5045            self.DetachShader_load_with_dyn(get_proc_address);
5046            self.Disable_load_with_dyn(get_proc_address);
5047            {
5048                self.DisableIndexedEXT_load_with_dyn(get_proc_address);
5049            }
5050            self.DisableVertexArrayAttrib_load_with_dyn(get_proc_address);
5051            self.DisableVertexAttribArray_load_with_dyn(get_proc_address);
5052            self.Disablei_load_with_dyn(get_proc_address);
5053            self.DispatchCompute_load_with_dyn(get_proc_address);
5054            self.DispatchComputeIndirect_load_with_dyn(get_proc_address);
5055            self.DrawArrays_load_with_dyn(get_proc_address);
5056            self.DrawArraysIndirect_load_with_dyn(get_proc_address);
5057            self.DrawArraysInstanced_load_with_dyn(get_proc_address);
5058            {
5059                self.DrawArraysInstancedARB_load_with_dyn(get_proc_address);
5060            }
5061            self.DrawArraysInstancedBaseInstance_load_with_dyn(get_proc_address);
5062            self.DrawBuffer_load_with_dyn(get_proc_address);
5063            self.DrawBuffers_load_with_dyn(get_proc_address);
5064            self.DrawElements_load_with_dyn(get_proc_address);
5065            self.DrawElementsBaseVertex_load_with_dyn(get_proc_address);
5066            self.DrawElementsIndirect_load_with_dyn(get_proc_address);
5067            self.DrawElementsInstanced_load_with_dyn(get_proc_address);
5068            {
5069                self.DrawElementsInstancedARB_load_with_dyn(get_proc_address);
5070            }
5071            self.DrawElementsInstancedBaseInstance_load_with_dyn(get_proc_address);
5072            self.DrawElementsInstancedBaseVertex_load_with_dyn(get_proc_address);
5073            self.DrawElementsInstancedBaseVertexBaseInstance_load_with_dyn(get_proc_address);
5074            self.DrawRangeElements_load_with_dyn(get_proc_address);
5075            self.DrawRangeElementsBaseVertex_load_with_dyn(get_proc_address);
5076            self.DrawTransformFeedback_load_with_dyn(get_proc_address);
5077            self.DrawTransformFeedbackInstanced_load_with_dyn(get_proc_address);
5078            self.DrawTransformFeedbackStream_load_with_dyn(get_proc_address);
5079            self.DrawTransformFeedbackStreamInstanced_load_with_dyn(get_proc_address);
5080            self.Enable_load_with_dyn(get_proc_address);
5081            {
5082                self.EnableIndexedEXT_load_with_dyn(get_proc_address);
5083            }
5084            self.EnableVertexArrayAttrib_load_with_dyn(get_proc_address);
5085            self.EnableVertexAttribArray_load_with_dyn(get_proc_address);
5086            self.Enablei_load_with_dyn(get_proc_address);
5087            self.EndConditionalRender_load_with_dyn(get_proc_address);
5088            self.EndQuery_load_with_dyn(get_proc_address);
5089            {
5090                self.EndQueryEXT_load_with_dyn(get_proc_address);
5091            }
5092            self.EndQueryIndexed_load_with_dyn(get_proc_address);
5093            self.EndTransformFeedback_load_with_dyn(get_proc_address);
5094            self.FenceSync_load_with_dyn(get_proc_address);
5095            self.Finish_load_with_dyn(get_proc_address);
5096            self.Flush_load_with_dyn(get_proc_address);
5097            self.FlushMappedBufferRange_load_with_dyn(get_proc_address);
5098            self.FlushMappedNamedBufferRange_load_with_dyn(get_proc_address);
5099            self.FramebufferParameteri_load_with_dyn(get_proc_address);
5100            self.FramebufferRenderbuffer_load_with_dyn(get_proc_address);
5101            self.FramebufferTexture_load_with_dyn(get_proc_address);
5102            self.FramebufferTexture1D_load_with_dyn(get_proc_address);
5103            self.FramebufferTexture2D_load_with_dyn(get_proc_address);
5104            self.FramebufferTexture3D_load_with_dyn(get_proc_address);
5105            self.FramebufferTextureLayer_load_with_dyn(get_proc_address);
5106            self.FrontFace_load_with_dyn(get_proc_address);
5107            self.GenBuffers_load_with_dyn(get_proc_address);
5108            self.GenFramebuffers_load_with_dyn(get_proc_address);
5109            self.GenProgramPipelines_load_with_dyn(get_proc_address);
5110            self.GenQueries_load_with_dyn(get_proc_address);
5111            {
5112                self.GenQueriesEXT_load_with_dyn(get_proc_address);
5113            }
5114            self.GenRenderbuffers_load_with_dyn(get_proc_address);
5115            self.GenSamplers_load_with_dyn(get_proc_address);
5116            self.GenTextures_load_with_dyn(get_proc_address);
5117            self.GenTransformFeedbacks_load_with_dyn(get_proc_address);
5118            self.GenVertexArrays_load_with_dyn(get_proc_address);
5119            {
5120                self.GenVertexArraysAPPLE_load_with_dyn(get_proc_address);
5121            }
5122            {
5123                self.GenVertexArraysOES_load_with_dyn(get_proc_address);
5124            }
5125            self.GenerateMipmap_load_with_dyn(get_proc_address);
5126            self.GenerateTextureMipmap_load_with_dyn(get_proc_address);
5127            self.GetActiveAtomicCounterBufferiv_load_with_dyn(get_proc_address);
5128            self.GetActiveAttrib_load_with_dyn(get_proc_address);
5129            self.GetActiveSubroutineName_load_with_dyn(get_proc_address);
5130            self.GetActiveSubroutineUniformName_load_with_dyn(get_proc_address);
5131            self.GetActiveSubroutineUniformiv_load_with_dyn(get_proc_address);
5132            self.GetActiveUniform_load_with_dyn(get_proc_address);
5133            self.GetActiveUniformBlockName_load_with_dyn(get_proc_address);
5134            self.GetActiveUniformBlockiv_load_with_dyn(get_proc_address);
5135            self.GetActiveUniformName_load_with_dyn(get_proc_address);
5136            self.GetActiveUniformsiv_load_with_dyn(get_proc_address);
5137            self.GetAttachedShaders_load_with_dyn(get_proc_address);
5138            self.GetAttribLocation_load_with_dyn(get_proc_address);
5139            {
5140                self.GetBooleanIndexedvEXT_load_with_dyn(get_proc_address);
5141            }
5142            self.GetBooleani_v_load_with_dyn(get_proc_address);
5143            self.GetBooleanv_load_with_dyn(get_proc_address);
5144            self.GetBufferParameteri64v_load_with_dyn(get_proc_address);
5145            self.GetBufferParameteriv_load_with_dyn(get_proc_address);
5146            self.GetBufferPointerv_load_with_dyn(get_proc_address);
5147            self.GetBufferSubData_load_with_dyn(get_proc_address);
5148            self.GetCompressedTexImage_load_with_dyn(get_proc_address);
5149            self.GetCompressedTextureImage_load_with_dyn(get_proc_address);
5150            self.GetCompressedTextureSubImage_load_with_dyn(get_proc_address);
5151            self.GetDebugMessageLog_load_with_dyn(get_proc_address);
5152            {
5153                self.GetDebugMessageLogARB_load_with_dyn(get_proc_address);
5154            }
5155            {
5156                self.GetDebugMessageLogKHR_load_with_dyn(get_proc_address);
5157            }
5158            self.GetDoublei_v_load_with_dyn(get_proc_address);
5159            self.GetDoublev_load_with_dyn(get_proc_address);
5160            self.GetError_load_with_dyn(get_proc_address);
5161            self.GetFloati_v_load_with_dyn(get_proc_address);
5162            self.GetFloatv_load_with_dyn(get_proc_address);
5163            self.GetFragDataIndex_load_with_dyn(get_proc_address);
5164            self.GetFragDataLocation_load_with_dyn(get_proc_address);
5165            self.GetFramebufferAttachmentParameteriv_load_with_dyn(get_proc_address);
5166            self.GetFramebufferParameteriv_load_with_dyn(get_proc_address);
5167            self.GetGraphicsResetStatus_load_with_dyn(get_proc_address);
5168            self.GetInteger64i_v_load_with_dyn(get_proc_address);
5169            self.GetInteger64v_load_with_dyn(get_proc_address);
5170            {
5171                self.GetInteger64vEXT_load_with_dyn(get_proc_address);
5172            }
5173            {
5174                self.GetIntegerIndexedvEXT_load_with_dyn(get_proc_address);
5175            }
5176            self.GetIntegeri_v_load_with_dyn(get_proc_address);
5177            self.GetIntegerv_load_with_dyn(get_proc_address);
5178            self.GetInternalformati64v_load_with_dyn(get_proc_address);
5179            self.GetInternalformativ_load_with_dyn(get_proc_address);
5180            self.GetMultisamplefv_load_with_dyn(get_proc_address);
5181            self.GetNamedBufferParameteri64v_load_with_dyn(get_proc_address);
5182            self.GetNamedBufferParameteriv_load_with_dyn(get_proc_address);
5183            self.GetNamedBufferPointerv_load_with_dyn(get_proc_address);
5184            self.GetNamedBufferSubData_load_with_dyn(get_proc_address);
5185            self.GetNamedFramebufferAttachmentParameteriv_load_with_dyn(get_proc_address);
5186            self.GetNamedFramebufferParameteriv_load_with_dyn(get_proc_address);
5187            self.GetNamedRenderbufferParameteriv_load_with_dyn(get_proc_address);
5188            self.GetObjectLabel_load_with_dyn(get_proc_address);
5189            {
5190                self.GetObjectLabelKHR_load_with_dyn(get_proc_address);
5191            }
5192            self.GetObjectPtrLabel_load_with_dyn(get_proc_address);
5193            {
5194                self.GetObjectPtrLabelKHR_load_with_dyn(get_proc_address);
5195            }
5196            self.GetPointerv_load_with_dyn(get_proc_address);
5197            {
5198                self.GetPointervKHR_load_with_dyn(get_proc_address);
5199            }
5200            self.GetProgramBinary_load_with_dyn(get_proc_address);
5201            self.GetProgramInfoLog_load_with_dyn(get_proc_address);
5202            self.GetProgramInterfaceiv_load_with_dyn(get_proc_address);
5203            self.GetProgramPipelineInfoLog_load_with_dyn(get_proc_address);
5204            self.GetProgramPipelineiv_load_with_dyn(get_proc_address);
5205            self.GetProgramResourceIndex_load_with_dyn(get_proc_address);
5206            self.GetProgramResourceLocation_load_with_dyn(get_proc_address);
5207            self.GetProgramResourceLocationIndex_load_with_dyn(get_proc_address);
5208            self.GetProgramResourceName_load_with_dyn(get_proc_address);
5209            self.GetProgramResourceiv_load_with_dyn(get_proc_address);
5210            self.GetProgramStageiv_load_with_dyn(get_proc_address);
5211            self.GetProgramiv_load_with_dyn(get_proc_address);
5212            self.GetQueryBufferObjecti64v_load_with_dyn(get_proc_address);
5213            self.GetQueryBufferObjectiv_load_with_dyn(get_proc_address);
5214            self.GetQueryBufferObjectui64v_load_with_dyn(get_proc_address);
5215            self.GetQueryBufferObjectuiv_load_with_dyn(get_proc_address);
5216            self.GetQueryIndexediv_load_with_dyn(get_proc_address);
5217            self.GetQueryObjecti64v_load_with_dyn(get_proc_address);
5218            {
5219                self.GetQueryObjecti64vEXT_load_with_dyn(get_proc_address);
5220            }
5221            self.GetQueryObjectiv_load_with_dyn(get_proc_address);
5222            {
5223                self.GetQueryObjectivEXT_load_with_dyn(get_proc_address);
5224            }
5225            self.GetQueryObjectui64v_load_with_dyn(get_proc_address);
5226            {
5227                self.GetQueryObjectui64vEXT_load_with_dyn(get_proc_address);
5228            }
5229            self.GetQueryObjectuiv_load_with_dyn(get_proc_address);
5230            {
5231                self.GetQueryObjectuivEXT_load_with_dyn(get_proc_address);
5232            }
5233            self.GetQueryiv_load_with_dyn(get_proc_address);
5234            {
5235                self.GetQueryivEXT_load_with_dyn(get_proc_address);
5236            }
5237            self.GetRenderbufferParameteriv_load_with_dyn(get_proc_address);
5238            self.GetSamplerParameterIiv_load_with_dyn(get_proc_address);
5239            self.GetSamplerParameterIuiv_load_with_dyn(get_proc_address);
5240            self.GetSamplerParameterfv_load_with_dyn(get_proc_address);
5241            self.GetSamplerParameteriv_load_with_dyn(get_proc_address);
5242            self.GetShaderInfoLog_load_with_dyn(get_proc_address);
5243            self.GetShaderPrecisionFormat_load_with_dyn(get_proc_address);
5244            self.GetShaderSource_load_with_dyn(get_proc_address);
5245            self.GetShaderiv_load_with_dyn(get_proc_address);
5246            self.GetString_load_with_dyn(get_proc_address);
5247            self.GetStringi_load_with_dyn(get_proc_address);
5248            self.GetSubroutineIndex_load_with_dyn(get_proc_address);
5249            self.GetSubroutineUniformLocation_load_with_dyn(get_proc_address);
5250            self.GetSynciv_load_with_dyn(get_proc_address);
5251            self.GetTexImage_load_with_dyn(get_proc_address);
5252            self.GetTexLevelParameterfv_load_with_dyn(get_proc_address);
5253            self.GetTexLevelParameteriv_load_with_dyn(get_proc_address);
5254            self.GetTexParameterIiv_load_with_dyn(get_proc_address);
5255            self.GetTexParameterIuiv_load_with_dyn(get_proc_address);
5256            self.GetTexParameterfv_load_with_dyn(get_proc_address);
5257            self.GetTexParameteriv_load_with_dyn(get_proc_address);
5258            self.GetTextureImage_load_with_dyn(get_proc_address);
5259            self.GetTextureLevelParameterfv_load_with_dyn(get_proc_address);
5260            self.GetTextureLevelParameteriv_load_with_dyn(get_proc_address);
5261            self.GetTextureParameterIiv_load_with_dyn(get_proc_address);
5262            self.GetTextureParameterIuiv_load_with_dyn(get_proc_address);
5263            self.GetTextureParameterfv_load_with_dyn(get_proc_address);
5264            self.GetTextureParameteriv_load_with_dyn(get_proc_address);
5265            self.GetTextureSubImage_load_with_dyn(get_proc_address);
5266            self.GetTransformFeedbackVarying_load_with_dyn(get_proc_address);
5267            self.GetTransformFeedbacki64_v_load_with_dyn(get_proc_address);
5268            self.GetTransformFeedbacki_v_load_with_dyn(get_proc_address);
5269            self.GetTransformFeedbackiv_load_with_dyn(get_proc_address);
5270            self.GetUniformBlockIndex_load_with_dyn(get_proc_address);
5271            self.GetUniformIndices_load_with_dyn(get_proc_address);
5272            self.GetUniformLocation_load_with_dyn(get_proc_address);
5273            self.GetUniformSubroutineuiv_load_with_dyn(get_proc_address);
5274            self.GetUniformdv_load_with_dyn(get_proc_address);
5275            self.GetUniformfv_load_with_dyn(get_proc_address);
5276            self.GetUniformiv_load_with_dyn(get_proc_address);
5277            self.GetUniformuiv_load_with_dyn(get_proc_address);
5278            self.GetVertexArrayIndexed64iv_load_with_dyn(get_proc_address);
5279            self.GetVertexArrayIndexediv_load_with_dyn(get_proc_address);
5280            self.GetVertexArrayiv_load_with_dyn(get_proc_address);
5281            self.GetVertexAttribIiv_load_with_dyn(get_proc_address);
5282            self.GetVertexAttribIuiv_load_with_dyn(get_proc_address);
5283            self.GetVertexAttribLdv_load_with_dyn(get_proc_address);
5284            self.GetVertexAttribPointerv_load_with_dyn(get_proc_address);
5285            self.GetVertexAttribdv_load_with_dyn(get_proc_address);
5286            self.GetVertexAttribfv_load_with_dyn(get_proc_address);
5287            self.GetVertexAttribiv_load_with_dyn(get_proc_address);
5288            self.GetnCompressedTexImage_load_with_dyn(get_proc_address);
5289            self.GetnTexImage_load_with_dyn(get_proc_address);
5290            self.GetnUniformdv_load_with_dyn(get_proc_address);
5291            self.GetnUniformfv_load_with_dyn(get_proc_address);
5292            self.GetnUniformiv_load_with_dyn(get_proc_address);
5293            self.GetnUniformuiv_load_with_dyn(get_proc_address);
5294            self.Hint_load_with_dyn(get_proc_address);
5295            self.InvalidateBufferData_load_with_dyn(get_proc_address);
5296            self.InvalidateBufferSubData_load_with_dyn(get_proc_address);
5297            self.InvalidateFramebuffer_load_with_dyn(get_proc_address);
5298            self.InvalidateNamedFramebufferData_load_with_dyn(get_proc_address);
5299            self.InvalidateNamedFramebufferSubData_load_with_dyn(get_proc_address);
5300            self.InvalidateSubFramebuffer_load_with_dyn(get_proc_address);
5301            self.InvalidateTexImage_load_with_dyn(get_proc_address);
5302            self.InvalidateTexSubImage_load_with_dyn(get_proc_address);
5303            self.IsBuffer_load_with_dyn(get_proc_address);
5304            self.IsEnabled_load_with_dyn(get_proc_address);
5305            {
5306                self.IsEnabledIndexedEXT_load_with_dyn(get_proc_address);
5307            }
5308            self.IsEnabledi_load_with_dyn(get_proc_address);
5309            self.IsFramebuffer_load_with_dyn(get_proc_address);
5310            self.IsProgram_load_with_dyn(get_proc_address);
5311            self.IsProgramPipeline_load_with_dyn(get_proc_address);
5312            self.IsQuery_load_with_dyn(get_proc_address);
5313            {
5314                self.IsQueryEXT_load_with_dyn(get_proc_address);
5315            }
5316            self.IsRenderbuffer_load_with_dyn(get_proc_address);
5317            self.IsSampler_load_with_dyn(get_proc_address);
5318            self.IsShader_load_with_dyn(get_proc_address);
5319            self.IsSync_load_with_dyn(get_proc_address);
5320            self.IsTexture_load_with_dyn(get_proc_address);
5321            self.IsTransformFeedback_load_with_dyn(get_proc_address);
5322            self.IsVertexArray_load_with_dyn(get_proc_address);
5323            {
5324                self.IsVertexArrayAPPLE_load_with_dyn(get_proc_address);
5325            }
5326            {
5327                self.IsVertexArrayOES_load_with_dyn(get_proc_address);
5328            }
5329            self.LineWidth_load_with_dyn(get_proc_address);
5330            self.LinkProgram_load_with_dyn(get_proc_address);
5331            self.LogicOp_load_with_dyn(get_proc_address);
5332            self.MapBuffer_load_with_dyn(get_proc_address);
5333            self.MapBufferRange_load_with_dyn(get_proc_address);
5334            self.MapNamedBuffer_load_with_dyn(get_proc_address);
5335            self.MapNamedBufferRange_load_with_dyn(get_proc_address);
5336            {
5337                self.MaxShaderCompilerThreadsARB_load_with_dyn(get_proc_address);
5338            }
5339            {
5340                self.MaxShaderCompilerThreadsKHR_load_with_dyn(get_proc_address);
5341            }
5342            self.MemoryBarrier_load_with_dyn(get_proc_address);
5343            self.MemoryBarrierByRegion_load_with_dyn(get_proc_address);
5344            self.MinSampleShading_load_with_dyn(get_proc_address);
5345            self.MultiDrawArrays_load_with_dyn(get_proc_address);
5346            self.MultiDrawArraysIndirect_load_with_dyn(get_proc_address);
5347            self.MultiDrawArraysIndirectCount_load_with_dyn(get_proc_address);
5348            self.MultiDrawElements_load_with_dyn(get_proc_address);
5349            self.MultiDrawElementsBaseVertex_load_with_dyn(get_proc_address);
5350            self.MultiDrawElementsIndirect_load_with_dyn(get_proc_address);
5351            self.MultiDrawElementsIndirectCount_load_with_dyn(get_proc_address);
5352            self.NamedBufferData_load_with_dyn(get_proc_address);
5353            self.NamedBufferStorage_load_with_dyn(get_proc_address);
5354            self.NamedBufferSubData_load_with_dyn(get_proc_address);
5355            self.NamedFramebufferDrawBuffer_load_with_dyn(get_proc_address);
5356            self.NamedFramebufferDrawBuffers_load_with_dyn(get_proc_address);
5357            self.NamedFramebufferParameteri_load_with_dyn(get_proc_address);
5358            self.NamedFramebufferReadBuffer_load_with_dyn(get_proc_address);
5359            self.NamedFramebufferRenderbuffer_load_with_dyn(get_proc_address);
5360            self.NamedFramebufferTexture_load_with_dyn(get_proc_address);
5361            self.NamedFramebufferTextureLayer_load_with_dyn(get_proc_address);
5362            self.NamedRenderbufferStorage_load_with_dyn(get_proc_address);
5363            self.NamedRenderbufferStorageMultisample_load_with_dyn(get_proc_address);
5364            self.ObjectLabel_load_with_dyn(get_proc_address);
5365            {
5366                self.ObjectLabelKHR_load_with_dyn(get_proc_address);
5367            }
5368            self.ObjectPtrLabel_load_with_dyn(get_proc_address);
5369            {
5370                self.ObjectPtrLabelKHR_load_with_dyn(get_proc_address);
5371            }
5372            self.PatchParameterfv_load_with_dyn(get_proc_address);
5373            self.PatchParameteri_load_with_dyn(get_proc_address);
5374            self.PauseTransformFeedback_load_with_dyn(get_proc_address);
5375            self.PixelStoref_load_with_dyn(get_proc_address);
5376            self.PixelStorei_load_with_dyn(get_proc_address);
5377            self.PointParameterf_load_with_dyn(get_proc_address);
5378            self.PointParameterfv_load_with_dyn(get_proc_address);
5379            self.PointParameteri_load_with_dyn(get_proc_address);
5380            self.PointParameteriv_load_with_dyn(get_proc_address);
5381            self.PointSize_load_with_dyn(get_proc_address);
5382            self.PolygonMode_load_with_dyn(get_proc_address);
5383            self.PolygonOffset_load_with_dyn(get_proc_address);
5384            self.PolygonOffsetClamp_load_with_dyn(get_proc_address);
5385            self.PopDebugGroup_load_with_dyn(get_proc_address);
5386            {
5387                self.PopDebugGroupKHR_load_with_dyn(get_proc_address);
5388            }
5389            self.PrimitiveBoundingBox_load_with_dyn(get_proc_address);
5390            self.PrimitiveRestartIndex_load_with_dyn(get_proc_address);
5391            self.ProgramBinary_load_with_dyn(get_proc_address);
5392            self.ProgramParameteri_load_with_dyn(get_proc_address);
5393            self.ProgramUniform1d_load_with_dyn(get_proc_address);
5394            self.ProgramUniform1dv_load_with_dyn(get_proc_address);
5395            self.ProgramUniform1f_load_with_dyn(get_proc_address);
5396            self.ProgramUniform1fv_load_with_dyn(get_proc_address);
5397            self.ProgramUniform1i_load_with_dyn(get_proc_address);
5398            self.ProgramUniform1iv_load_with_dyn(get_proc_address);
5399            self.ProgramUniform1ui_load_with_dyn(get_proc_address);
5400            self.ProgramUniform1uiv_load_with_dyn(get_proc_address);
5401            self.ProgramUniform2d_load_with_dyn(get_proc_address);
5402            self.ProgramUniform2dv_load_with_dyn(get_proc_address);
5403            self.ProgramUniform2f_load_with_dyn(get_proc_address);
5404            self.ProgramUniform2fv_load_with_dyn(get_proc_address);
5405            self.ProgramUniform2i_load_with_dyn(get_proc_address);
5406            self.ProgramUniform2iv_load_with_dyn(get_proc_address);
5407            self.ProgramUniform2ui_load_with_dyn(get_proc_address);
5408            self.ProgramUniform2uiv_load_with_dyn(get_proc_address);
5409            self.ProgramUniform3d_load_with_dyn(get_proc_address);
5410            self.ProgramUniform3dv_load_with_dyn(get_proc_address);
5411            self.ProgramUniform3f_load_with_dyn(get_proc_address);
5412            self.ProgramUniform3fv_load_with_dyn(get_proc_address);
5413            self.ProgramUniform3i_load_with_dyn(get_proc_address);
5414            self.ProgramUniform3iv_load_with_dyn(get_proc_address);
5415            self.ProgramUniform3ui_load_with_dyn(get_proc_address);
5416            self.ProgramUniform3uiv_load_with_dyn(get_proc_address);
5417            self.ProgramUniform4d_load_with_dyn(get_proc_address);
5418            self.ProgramUniform4dv_load_with_dyn(get_proc_address);
5419            self.ProgramUniform4f_load_with_dyn(get_proc_address);
5420            self.ProgramUniform4fv_load_with_dyn(get_proc_address);
5421            self.ProgramUniform4i_load_with_dyn(get_proc_address);
5422            self.ProgramUniform4iv_load_with_dyn(get_proc_address);
5423            self.ProgramUniform4ui_load_with_dyn(get_proc_address);
5424            self.ProgramUniform4uiv_load_with_dyn(get_proc_address);
5425            self.ProgramUniformMatrix2dv_load_with_dyn(get_proc_address);
5426            self.ProgramUniformMatrix2fv_load_with_dyn(get_proc_address);
5427            self.ProgramUniformMatrix2x3dv_load_with_dyn(get_proc_address);
5428            self.ProgramUniformMatrix2x3fv_load_with_dyn(get_proc_address);
5429            self.ProgramUniformMatrix2x4dv_load_with_dyn(get_proc_address);
5430            self.ProgramUniformMatrix2x4fv_load_with_dyn(get_proc_address);
5431            self.ProgramUniformMatrix3dv_load_with_dyn(get_proc_address);
5432            self.ProgramUniformMatrix3fv_load_with_dyn(get_proc_address);
5433            self.ProgramUniformMatrix3x2dv_load_with_dyn(get_proc_address);
5434            self.ProgramUniformMatrix3x2fv_load_with_dyn(get_proc_address);
5435            self.ProgramUniformMatrix3x4dv_load_with_dyn(get_proc_address);
5436            self.ProgramUniformMatrix3x4fv_load_with_dyn(get_proc_address);
5437            self.ProgramUniformMatrix4dv_load_with_dyn(get_proc_address);
5438            self.ProgramUniformMatrix4fv_load_with_dyn(get_proc_address);
5439            self.ProgramUniformMatrix4x2dv_load_with_dyn(get_proc_address);
5440            self.ProgramUniformMatrix4x2fv_load_with_dyn(get_proc_address);
5441            self.ProgramUniformMatrix4x3dv_load_with_dyn(get_proc_address);
5442            self.ProgramUniformMatrix4x3fv_load_with_dyn(get_proc_address);
5443            self.ProvokingVertex_load_with_dyn(get_proc_address);
5444            self.PushDebugGroup_load_with_dyn(get_proc_address);
5445            {
5446                self.PushDebugGroupKHR_load_with_dyn(get_proc_address);
5447            }
5448            self.QueryCounter_load_with_dyn(get_proc_address);
5449            {
5450                self.QueryCounterEXT_load_with_dyn(get_proc_address);
5451            }
5452            self.ReadBuffer_load_with_dyn(get_proc_address);
5453            self.ReadPixels_load_with_dyn(get_proc_address);
5454            self.ReadnPixels_load_with_dyn(get_proc_address);
5455            self.ReleaseShaderCompiler_load_with_dyn(get_proc_address);
5456            self.RenderbufferStorage_load_with_dyn(get_proc_address);
5457            self.RenderbufferStorageMultisample_load_with_dyn(get_proc_address);
5458            self.ResumeTransformFeedback_load_with_dyn(get_proc_address);
5459            self.SampleCoverage_load_with_dyn(get_proc_address);
5460            self.SampleMaski_load_with_dyn(get_proc_address);
5461            self.SamplerParameterIiv_load_with_dyn(get_proc_address);
5462            self.SamplerParameterIuiv_load_with_dyn(get_proc_address);
5463            self.SamplerParameterf_load_with_dyn(get_proc_address);
5464            self.SamplerParameterfv_load_with_dyn(get_proc_address);
5465            self.SamplerParameteri_load_with_dyn(get_proc_address);
5466            self.SamplerParameteriv_load_with_dyn(get_proc_address);
5467            self.Scissor_load_with_dyn(get_proc_address);
5468            self.ScissorArrayv_load_with_dyn(get_proc_address);
5469            self.ScissorIndexed_load_with_dyn(get_proc_address);
5470            self.ScissorIndexedv_load_with_dyn(get_proc_address);
5471            self.ShaderBinary_load_with_dyn(get_proc_address);
5472            self.ShaderSource_load_with_dyn(get_proc_address);
5473            self.ShaderStorageBlockBinding_load_with_dyn(get_proc_address);
5474            self.SpecializeShader_load_with_dyn(get_proc_address);
5475            self.StencilFunc_load_with_dyn(get_proc_address);
5476            self.StencilFuncSeparate_load_with_dyn(get_proc_address);
5477            self.StencilMask_load_with_dyn(get_proc_address);
5478            self.StencilMaskSeparate_load_with_dyn(get_proc_address);
5479            self.StencilOp_load_with_dyn(get_proc_address);
5480            self.StencilOpSeparate_load_with_dyn(get_proc_address);
5481            self.TexBuffer_load_with_dyn(get_proc_address);
5482            self.TexBufferRange_load_with_dyn(get_proc_address);
5483            self.TexImage1D_load_with_dyn(get_proc_address);
5484            self.TexImage2D_load_with_dyn(get_proc_address);
5485            self.TexImage2DMultisample_load_with_dyn(get_proc_address);
5486            self.TexImage3D_load_with_dyn(get_proc_address);
5487            self.TexImage3DMultisample_load_with_dyn(get_proc_address);
5488            self.TexParameterIiv_load_with_dyn(get_proc_address);
5489            self.TexParameterIuiv_load_with_dyn(get_proc_address);
5490            self.TexParameterf_load_with_dyn(get_proc_address);
5491            self.TexParameterfv_load_with_dyn(get_proc_address);
5492            self.TexParameteri_load_with_dyn(get_proc_address);
5493            self.TexParameteriv_load_with_dyn(get_proc_address);
5494            self.TexStorage1D_load_with_dyn(get_proc_address);
5495            self.TexStorage2D_load_with_dyn(get_proc_address);
5496            self.TexStorage2DMultisample_load_with_dyn(get_proc_address);
5497            self.TexStorage3D_load_with_dyn(get_proc_address);
5498            self.TexStorage3DMultisample_load_with_dyn(get_proc_address);
5499            self.TexSubImage1D_load_with_dyn(get_proc_address);
5500            self.TexSubImage2D_load_with_dyn(get_proc_address);
5501            self.TexSubImage3D_load_with_dyn(get_proc_address);
5502            self.TextureBarrier_load_with_dyn(get_proc_address);
5503            self.TextureBuffer_load_with_dyn(get_proc_address);
5504            self.TextureBufferRange_load_with_dyn(get_proc_address);
5505            self.TextureParameterIiv_load_with_dyn(get_proc_address);
5506            self.TextureParameterIuiv_load_with_dyn(get_proc_address);
5507            self.TextureParameterf_load_with_dyn(get_proc_address);
5508            self.TextureParameterfv_load_with_dyn(get_proc_address);
5509            self.TextureParameteri_load_with_dyn(get_proc_address);
5510            self.TextureParameteriv_load_with_dyn(get_proc_address);
5511            self.TextureStorage1D_load_with_dyn(get_proc_address);
5512            self.TextureStorage2D_load_with_dyn(get_proc_address);
5513            self.TextureStorage2DMultisample_load_with_dyn(get_proc_address);
5514            self.TextureStorage3D_load_with_dyn(get_proc_address);
5515            self.TextureStorage3DMultisample_load_with_dyn(get_proc_address);
5516            self.TextureSubImage1D_load_with_dyn(get_proc_address);
5517            self.TextureSubImage2D_load_with_dyn(get_proc_address);
5518            self.TextureSubImage3D_load_with_dyn(get_proc_address);
5519            self.TextureView_load_with_dyn(get_proc_address);
5520            self.TransformFeedbackBufferBase_load_with_dyn(get_proc_address);
5521            self.TransformFeedbackBufferRange_load_with_dyn(get_proc_address);
5522            self.TransformFeedbackVaryings_load_with_dyn(get_proc_address);
5523            self.Uniform1d_load_with_dyn(get_proc_address);
5524            self.Uniform1dv_load_with_dyn(get_proc_address);
5525            self.Uniform1f_load_with_dyn(get_proc_address);
5526            self.Uniform1fv_load_with_dyn(get_proc_address);
5527            self.Uniform1i_load_with_dyn(get_proc_address);
5528            self.Uniform1iv_load_with_dyn(get_proc_address);
5529            self.Uniform1ui_load_with_dyn(get_proc_address);
5530            self.Uniform1uiv_load_with_dyn(get_proc_address);
5531            self.Uniform2d_load_with_dyn(get_proc_address);
5532            self.Uniform2dv_load_with_dyn(get_proc_address);
5533            self.Uniform2f_load_with_dyn(get_proc_address);
5534            self.Uniform2fv_load_with_dyn(get_proc_address);
5535            self.Uniform2i_load_with_dyn(get_proc_address);
5536            self.Uniform2iv_load_with_dyn(get_proc_address);
5537            self.Uniform2ui_load_with_dyn(get_proc_address);
5538            self.Uniform2uiv_load_with_dyn(get_proc_address);
5539            self.Uniform3d_load_with_dyn(get_proc_address);
5540            self.Uniform3dv_load_with_dyn(get_proc_address);
5541            self.Uniform3f_load_with_dyn(get_proc_address);
5542            self.Uniform3fv_load_with_dyn(get_proc_address);
5543            self.Uniform3i_load_with_dyn(get_proc_address);
5544            self.Uniform3iv_load_with_dyn(get_proc_address);
5545            self.Uniform3ui_load_with_dyn(get_proc_address);
5546            self.Uniform3uiv_load_with_dyn(get_proc_address);
5547            self.Uniform4d_load_with_dyn(get_proc_address);
5548            self.Uniform4dv_load_with_dyn(get_proc_address);
5549            self.Uniform4f_load_with_dyn(get_proc_address);
5550            self.Uniform4fv_load_with_dyn(get_proc_address);
5551            self.Uniform4i_load_with_dyn(get_proc_address);
5552            self.Uniform4iv_load_with_dyn(get_proc_address);
5553            self.Uniform4ui_load_with_dyn(get_proc_address);
5554            self.Uniform4uiv_load_with_dyn(get_proc_address);
5555            self.UniformBlockBinding_load_with_dyn(get_proc_address);
5556            self.UniformMatrix2dv_load_with_dyn(get_proc_address);
5557            self.UniformMatrix2fv_load_with_dyn(get_proc_address);
5558            self.UniformMatrix2x3dv_load_with_dyn(get_proc_address);
5559            self.UniformMatrix2x3fv_load_with_dyn(get_proc_address);
5560            self.UniformMatrix2x4dv_load_with_dyn(get_proc_address);
5561            self.UniformMatrix2x4fv_load_with_dyn(get_proc_address);
5562            self.UniformMatrix3dv_load_with_dyn(get_proc_address);
5563            self.UniformMatrix3fv_load_with_dyn(get_proc_address);
5564            self.UniformMatrix3x2dv_load_with_dyn(get_proc_address);
5565            self.UniformMatrix3x2fv_load_with_dyn(get_proc_address);
5566            self.UniformMatrix3x4dv_load_with_dyn(get_proc_address);
5567            self.UniformMatrix3x4fv_load_with_dyn(get_proc_address);
5568            self.UniformMatrix4dv_load_with_dyn(get_proc_address);
5569            self.UniformMatrix4fv_load_with_dyn(get_proc_address);
5570            self.UniformMatrix4x2dv_load_with_dyn(get_proc_address);
5571            self.UniformMatrix4x2fv_load_with_dyn(get_proc_address);
5572            self.UniformMatrix4x3dv_load_with_dyn(get_proc_address);
5573            self.UniformMatrix4x3fv_load_with_dyn(get_proc_address);
5574            self.UniformSubroutinesuiv_load_with_dyn(get_proc_address);
5575            self.UnmapBuffer_load_with_dyn(get_proc_address);
5576            self.UnmapNamedBuffer_load_with_dyn(get_proc_address);
5577            self.UseProgram_load_with_dyn(get_proc_address);
5578            self.UseProgramStages_load_with_dyn(get_proc_address);
5579            self.ValidateProgram_load_with_dyn(get_proc_address);
5580            self.ValidateProgramPipeline_load_with_dyn(get_proc_address);
5581            self.VertexArrayAttribBinding_load_with_dyn(get_proc_address);
5582            self.VertexArrayAttribFormat_load_with_dyn(get_proc_address);
5583            self.VertexArrayAttribIFormat_load_with_dyn(get_proc_address);
5584            self.VertexArrayAttribLFormat_load_with_dyn(get_proc_address);
5585            self.VertexArrayBindingDivisor_load_with_dyn(get_proc_address);
5586            self.VertexArrayElementBuffer_load_with_dyn(get_proc_address);
5587            self.VertexArrayVertexBuffer_load_with_dyn(get_proc_address);
5588            self.VertexArrayVertexBuffers_load_with_dyn(get_proc_address);
5589            self.VertexAttrib1d_load_with_dyn(get_proc_address);
5590            self.VertexAttrib1dv_load_with_dyn(get_proc_address);
5591            self.VertexAttrib1f_load_with_dyn(get_proc_address);
5592            self.VertexAttrib1fv_load_with_dyn(get_proc_address);
5593            self.VertexAttrib1s_load_with_dyn(get_proc_address);
5594            self.VertexAttrib1sv_load_with_dyn(get_proc_address);
5595            self.VertexAttrib2d_load_with_dyn(get_proc_address);
5596            self.VertexAttrib2dv_load_with_dyn(get_proc_address);
5597            self.VertexAttrib2f_load_with_dyn(get_proc_address);
5598            self.VertexAttrib2fv_load_with_dyn(get_proc_address);
5599            self.VertexAttrib2s_load_with_dyn(get_proc_address);
5600            self.VertexAttrib2sv_load_with_dyn(get_proc_address);
5601            self.VertexAttrib3d_load_with_dyn(get_proc_address);
5602            self.VertexAttrib3dv_load_with_dyn(get_proc_address);
5603            self.VertexAttrib3f_load_with_dyn(get_proc_address);
5604            self.VertexAttrib3fv_load_with_dyn(get_proc_address);
5605            self.VertexAttrib3s_load_with_dyn(get_proc_address);
5606            self.VertexAttrib3sv_load_with_dyn(get_proc_address);
5607            self.VertexAttrib4Nbv_load_with_dyn(get_proc_address);
5608            self.VertexAttrib4Niv_load_with_dyn(get_proc_address);
5609            self.VertexAttrib4Nsv_load_with_dyn(get_proc_address);
5610            self.VertexAttrib4Nub_load_with_dyn(get_proc_address);
5611            self.VertexAttrib4Nubv_load_with_dyn(get_proc_address);
5612            self.VertexAttrib4Nuiv_load_with_dyn(get_proc_address);
5613            self.VertexAttrib4Nusv_load_with_dyn(get_proc_address);
5614            self.VertexAttrib4bv_load_with_dyn(get_proc_address);
5615            self.VertexAttrib4d_load_with_dyn(get_proc_address);
5616            self.VertexAttrib4dv_load_with_dyn(get_proc_address);
5617            self.VertexAttrib4f_load_with_dyn(get_proc_address);
5618            self.VertexAttrib4fv_load_with_dyn(get_proc_address);
5619            self.VertexAttrib4iv_load_with_dyn(get_proc_address);
5620            self.VertexAttrib4s_load_with_dyn(get_proc_address);
5621            self.VertexAttrib4sv_load_with_dyn(get_proc_address);
5622            self.VertexAttrib4ubv_load_with_dyn(get_proc_address);
5623            self.VertexAttrib4uiv_load_with_dyn(get_proc_address);
5624            self.VertexAttrib4usv_load_with_dyn(get_proc_address);
5625            self.VertexAttribBinding_load_with_dyn(get_proc_address);
5626            self.VertexAttribDivisor_load_with_dyn(get_proc_address);
5627            {
5628                self.VertexAttribDivisorARB_load_with_dyn(get_proc_address);
5629            }
5630            self.VertexAttribFormat_load_with_dyn(get_proc_address);
5631            self.VertexAttribI1i_load_with_dyn(get_proc_address);
5632            self.VertexAttribI1iv_load_with_dyn(get_proc_address);
5633            self.VertexAttribI1ui_load_with_dyn(get_proc_address);
5634            self.VertexAttribI1uiv_load_with_dyn(get_proc_address);
5635            self.VertexAttribI2i_load_with_dyn(get_proc_address);
5636            self.VertexAttribI2iv_load_with_dyn(get_proc_address);
5637            self.VertexAttribI2ui_load_with_dyn(get_proc_address);
5638            self.VertexAttribI2uiv_load_with_dyn(get_proc_address);
5639            self.VertexAttribI3i_load_with_dyn(get_proc_address);
5640            self.VertexAttribI3iv_load_with_dyn(get_proc_address);
5641            self.VertexAttribI3ui_load_with_dyn(get_proc_address);
5642            self.VertexAttribI3uiv_load_with_dyn(get_proc_address);
5643            self.VertexAttribI4bv_load_with_dyn(get_proc_address);
5644            self.VertexAttribI4i_load_with_dyn(get_proc_address);
5645            self.VertexAttribI4iv_load_with_dyn(get_proc_address);
5646            self.VertexAttribI4sv_load_with_dyn(get_proc_address);
5647            self.VertexAttribI4ubv_load_with_dyn(get_proc_address);
5648            self.VertexAttribI4ui_load_with_dyn(get_proc_address);
5649            self.VertexAttribI4uiv_load_with_dyn(get_proc_address);
5650            self.VertexAttribI4usv_load_with_dyn(get_proc_address);
5651            self.VertexAttribIFormat_load_with_dyn(get_proc_address);
5652            self.VertexAttribIPointer_load_with_dyn(get_proc_address);
5653            self.VertexAttribL1d_load_with_dyn(get_proc_address);
5654            self.VertexAttribL1dv_load_with_dyn(get_proc_address);
5655            self.VertexAttribL2d_load_with_dyn(get_proc_address);
5656            self.VertexAttribL2dv_load_with_dyn(get_proc_address);
5657            self.VertexAttribL3d_load_with_dyn(get_proc_address);
5658            self.VertexAttribL3dv_load_with_dyn(get_proc_address);
5659            self.VertexAttribL4d_load_with_dyn(get_proc_address);
5660            self.VertexAttribL4dv_load_with_dyn(get_proc_address);
5661            self.VertexAttribLFormat_load_with_dyn(get_proc_address);
5662            self.VertexAttribLPointer_load_with_dyn(get_proc_address);
5663            self.VertexAttribP1ui_load_with_dyn(get_proc_address);
5664            self.VertexAttribP1uiv_load_with_dyn(get_proc_address);
5665            self.VertexAttribP2ui_load_with_dyn(get_proc_address);
5666            self.VertexAttribP2uiv_load_with_dyn(get_proc_address);
5667            self.VertexAttribP3ui_load_with_dyn(get_proc_address);
5668            self.VertexAttribP3uiv_load_with_dyn(get_proc_address);
5669            self.VertexAttribP4ui_load_with_dyn(get_proc_address);
5670            self.VertexAttribP4uiv_load_with_dyn(get_proc_address);
5671            self.VertexAttribPointer_load_with_dyn(get_proc_address);
5672            self.VertexBindingDivisor_load_with_dyn(get_proc_address);
5673            self.Viewport_load_with_dyn(get_proc_address);
5674            self.ViewportArrayv_load_with_dyn(get_proc_address);
5675            self.ViewportIndexedf_load_with_dyn(get_proc_address);
5676            self.ViewportIndexedfv_load_with_dyn(get_proc_address);
5677            self.WaitSync_load_with_dyn(get_proc_address);
5678        }
5679        /// [glActiveShaderProgram](http://docs.gl/gl4/glActiveShaderProgram)(pipeline, program)
5680        #[cfg_attr(feature = "inline", inline)]
5681        #[cfg_attr(feature = "inline_always", inline(always))]
5682        pub unsafe fn ActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) {
5683            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5684            {
5685                trace!(
5686                    "calling gl.ActiveShaderProgram({:?}, {:?});",
5687                    pipeline,
5688                    program
5689                );
5690            }
5691            let out = call_atomic_ptr_2arg(
5692                "glActiveShaderProgram",
5693                &self.glActiveShaderProgram_p,
5694                pipeline,
5695                program,
5696            );
5697            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5698            {
5699                self.automatic_glGetError("glActiveShaderProgram");
5700            }
5701            out
5702        }
5703        #[doc(hidden)]
5704        pub unsafe fn ActiveShaderProgram_load_with_dyn(
5705            &self,
5706            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5707        ) -> bool {
5708            load_dyn_name_atomic_ptr(
5709                get_proc_address,
5710                b"glActiveShaderProgram\0",
5711                &self.glActiveShaderProgram_p,
5712            )
5713        }
5714        #[inline]
5715        #[doc(hidden)]
5716        pub fn ActiveShaderProgram_is_loaded(&self) -> bool {
5717            !self.glActiveShaderProgram_p.load(RELAX).is_null()
5718        }
5719        /// [glActiveTexture](http://docs.gl/gl4/glActiveTexture)(texture)
5720        /// * `texture` group: TextureUnit
5721        #[cfg_attr(feature = "inline", inline)]
5722        #[cfg_attr(feature = "inline_always", inline(always))]
5723        pub unsafe fn ActiveTexture(&self, texture: GLenum) {
5724            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5725            {
5726                trace!("calling gl.ActiveTexture({:#X});", texture);
5727            }
5728            let out = call_atomic_ptr_1arg("glActiveTexture", &self.glActiveTexture_p, texture);
5729            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5730            {
5731                self.automatic_glGetError("glActiveTexture");
5732            }
5733            out
5734        }
5735        #[doc(hidden)]
5736        pub unsafe fn ActiveTexture_load_with_dyn(
5737            &self,
5738            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5739        ) -> bool {
5740            load_dyn_name_atomic_ptr(
5741                get_proc_address,
5742                b"glActiveTexture\0",
5743                &self.glActiveTexture_p,
5744            )
5745        }
5746        #[inline]
5747        #[doc(hidden)]
5748        pub fn ActiveTexture_is_loaded(&self) -> bool {
5749            !self.glActiveTexture_p.load(RELAX).is_null()
5750        }
5751        /// [glAttachShader](http://docs.gl/gl4/glAttachShader)(program, shader)
5752        #[cfg_attr(feature = "inline", inline)]
5753        #[cfg_attr(feature = "inline_always", inline(always))]
5754        pub unsafe fn AttachShader(&self, program: GLuint, shader: GLuint) {
5755            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5756            {
5757                trace!("calling gl.AttachShader({:?}, {:?});", program, shader);
5758            }
5759            let out =
5760                call_atomic_ptr_2arg("glAttachShader", &self.glAttachShader_p, program, shader);
5761            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5762            {
5763                self.automatic_glGetError("glAttachShader");
5764            }
5765            out
5766        }
5767        #[doc(hidden)]
5768        pub unsafe fn AttachShader_load_with_dyn(
5769            &self,
5770            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5771        ) -> bool {
5772            load_dyn_name_atomic_ptr(
5773                get_proc_address,
5774                b"glAttachShader\0",
5775                &self.glAttachShader_p,
5776            )
5777        }
5778        #[inline]
5779        #[doc(hidden)]
5780        pub fn AttachShader_is_loaded(&self) -> bool {
5781            !self.glAttachShader_p.load(RELAX).is_null()
5782        }
5783        /// [glBeginConditionalRender](http://docs.gl/gl4/glBeginConditionalRender)(id, mode)
5784        /// * `mode` group: ConditionalRenderMode
5785        #[cfg_attr(feature = "inline", inline)]
5786        #[cfg_attr(feature = "inline_always", inline(always))]
5787        pub unsafe fn BeginConditionalRender(&self, id: GLuint, mode: GLenum) {
5788            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5789            {
5790                trace!("calling gl.BeginConditionalRender({:?}, {:#X});", id, mode);
5791            }
5792            let out = call_atomic_ptr_2arg(
5793                "glBeginConditionalRender",
5794                &self.glBeginConditionalRender_p,
5795                id,
5796                mode,
5797            );
5798            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5799            {
5800                self.automatic_glGetError("glBeginConditionalRender");
5801            }
5802            out
5803        }
5804        #[doc(hidden)]
5805        pub unsafe fn BeginConditionalRender_load_with_dyn(
5806            &self,
5807            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5808        ) -> bool {
5809            load_dyn_name_atomic_ptr(
5810                get_proc_address,
5811                b"glBeginConditionalRender\0",
5812                &self.glBeginConditionalRender_p,
5813            )
5814        }
5815        #[inline]
5816        #[doc(hidden)]
5817        pub fn BeginConditionalRender_is_loaded(&self) -> bool {
5818            !self.glBeginConditionalRender_p.load(RELAX).is_null()
5819        }
5820        /// [glBeginQuery](http://docs.gl/gl4/glBeginQuery)(target, id)
5821        /// * `target` group: QueryTarget
5822        #[cfg_attr(feature = "inline", inline)]
5823        #[cfg_attr(feature = "inline_always", inline(always))]
5824        pub unsafe fn BeginQuery(&self, target: GLenum, id: GLuint) {
5825            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5826            {
5827                trace!("calling gl.BeginQuery({:#X}, {:?});", target, id);
5828            }
5829            let out = call_atomic_ptr_2arg("glBeginQuery", &self.glBeginQuery_p, target, id);
5830            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5831            {
5832                self.automatic_glGetError("glBeginQuery");
5833            }
5834            out
5835        }
5836        #[doc(hidden)]
5837        pub unsafe fn BeginQuery_load_with_dyn(
5838            &self,
5839            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5840        ) -> bool {
5841            load_dyn_name_atomic_ptr(get_proc_address, b"glBeginQuery\0", &self.glBeginQuery_p)
5842        }
5843        #[inline]
5844        #[doc(hidden)]
5845        pub fn BeginQuery_is_loaded(&self) -> bool {
5846            !self.glBeginQuery_p.load(RELAX).is_null()
5847        }
5848        /// [glBeginQueryEXT](http://docs.gl/gl4/glBeginQueryEXT)(target, id)
5849        /// * `target` group: QueryTarget
5850        #[cfg_attr(feature = "inline", inline)]
5851        #[cfg_attr(feature = "inline_always", inline(always))]
5852        pub unsafe fn BeginQueryEXT(&self, target: GLenum, id: GLuint) {
5853            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5854            {
5855                trace!("calling gl.BeginQueryEXT({:#X}, {:?});", target, id);
5856            }
5857            let out = call_atomic_ptr_2arg("glBeginQueryEXT", &self.glBeginQueryEXT_p, target, id);
5858            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5859            {
5860                self.automatic_glGetError("glBeginQueryEXT");
5861            }
5862            out
5863        }
5864        #[doc(hidden)]
5865        pub unsafe fn BeginQueryEXT_load_with_dyn(
5866            &self,
5867            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5868        ) -> bool {
5869            load_dyn_name_atomic_ptr(
5870                get_proc_address,
5871                b"glBeginQueryEXT\0",
5872                &self.glBeginQueryEXT_p,
5873            )
5874        }
5875        #[inline]
5876        #[doc(hidden)]
5877        pub fn BeginQueryEXT_is_loaded(&self) -> bool {
5878            !self.glBeginQueryEXT_p.load(RELAX).is_null()
5879        }
5880        /// [glBeginQueryIndexed](http://docs.gl/gl4/glBeginQueryIndexed)(target, index, id)
5881        /// * `target` group: QueryTarget
5882        #[cfg_attr(feature = "inline", inline)]
5883        #[cfg_attr(feature = "inline_always", inline(always))]
5884        pub unsafe fn BeginQueryIndexed(&self, target: GLenum, index: GLuint, id: GLuint) {
5885            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5886            {
5887                trace!(
5888                    "calling gl.BeginQueryIndexed({:#X}, {:?}, {:?});",
5889                    target,
5890                    index,
5891                    id
5892                );
5893            }
5894            let out = call_atomic_ptr_3arg(
5895                "glBeginQueryIndexed",
5896                &self.glBeginQueryIndexed_p,
5897                target,
5898                index,
5899                id,
5900            );
5901            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5902            {
5903                self.automatic_glGetError("glBeginQueryIndexed");
5904            }
5905            out
5906        }
5907        #[doc(hidden)]
5908        pub unsafe fn BeginQueryIndexed_load_with_dyn(
5909            &self,
5910            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5911        ) -> bool {
5912            load_dyn_name_atomic_ptr(
5913                get_proc_address,
5914                b"glBeginQueryIndexed\0",
5915                &self.glBeginQueryIndexed_p,
5916            )
5917        }
5918        #[inline]
5919        #[doc(hidden)]
5920        pub fn BeginQueryIndexed_is_loaded(&self) -> bool {
5921            !self.glBeginQueryIndexed_p.load(RELAX).is_null()
5922        }
5923        /// [glBeginTransformFeedback](http://docs.gl/gl4/glBeginTransformFeedback)(primitiveMode)
5924        /// * `primitiveMode` group: PrimitiveType
5925        #[cfg_attr(feature = "inline", inline)]
5926        #[cfg_attr(feature = "inline_always", inline(always))]
5927        pub unsafe fn BeginTransformFeedback(&self, primitiveMode: GLenum) {
5928            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5929            {
5930                trace!("calling gl.BeginTransformFeedback({:#X});", primitiveMode);
5931            }
5932            let out = call_atomic_ptr_1arg(
5933                "glBeginTransformFeedback",
5934                &self.glBeginTransformFeedback_p,
5935                primitiveMode,
5936            );
5937            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5938            {
5939                self.automatic_glGetError("glBeginTransformFeedback");
5940            }
5941            out
5942        }
5943        #[doc(hidden)]
5944        pub unsafe fn BeginTransformFeedback_load_with_dyn(
5945            &self,
5946            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5947        ) -> bool {
5948            load_dyn_name_atomic_ptr(
5949                get_proc_address,
5950                b"glBeginTransformFeedback\0",
5951                &self.glBeginTransformFeedback_p,
5952            )
5953        }
5954        #[inline]
5955        #[doc(hidden)]
5956        pub fn BeginTransformFeedback_is_loaded(&self) -> bool {
5957            !self.glBeginTransformFeedback_p.load(RELAX).is_null()
5958        }
5959        /// [glBindAttribLocation](http://docs.gl/gl4/glBindAttribLocation)(program, index, name)
5960        #[cfg_attr(feature = "inline", inline)]
5961        #[cfg_attr(feature = "inline_always", inline(always))]
5962        pub unsafe fn BindAttribLocation(
5963            &self,
5964            program: GLuint,
5965            index: GLuint,
5966            name: *const GLchar,
5967        ) {
5968            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5969            {
5970                trace!(
5971                    "calling gl.BindAttribLocation({:?}, {:?}, {:p});",
5972                    program,
5973                    index,
5974                    name
5975                );
5976            }
5977            let out = call_atomic_ptr_3arg(
5978                "glBindAttribLocation",
5979                &self.glBindAttribLocation_p,
5980                program,
5981                index,
5982                name,
5983            );
5984            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5985            {
5986                self.automatic_glGetError("glBindAttribLocation");
5987            }
5988            out
5989        }
5990        #[doc(hidden)]
5991        pub unsafe fn BindAttribLocation_load_with_dyn(
5992            &self,
5993            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5994        ) -> bool {
5995            load_dyn_name_atomic_ptr(
5996                get_proc_address,
5997                b"glBindAttribLocation\0",
5998                &self.glBindAttribLocation_p,
5999            )
6000        }
6001        #[inline]
6002        #[doc(hidden)]
6003        pub fn BindAttribLocation_is_loaded(&self) -> bool {
6004            !self.glBindAttribLocation_p.load(RELAX).is_null()
6005        }
6006        /// [glBindBuffer](http://docs.gl/gl4/glBindBuffer)(target, buffer)
6007        /// * `target` group: BufferTargetARB
6008        #[cfg_attr(feature = "inline", inline)]
6009        #[cfg_attr(feature = "inline_always", inline(always))]
6010        pub unsafe fn BindBuffer(&self, target: GLenum, buffer: GLuint) {
6011            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6012            {
6013                trace!("calling gl.BindBuffer({:#X}, {:?});", target, buffer);
6014            }
6015            let out = call_atomic_ptr_2arg("glBindBuffer", &self.glBindBuffer_p, target, buffer);
6016            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6017            {
6018                self.automatic_glGetError("glBindBuffer");
6019            }
6020            out
6021        }
6022        #[doc(hidden)]
6023        pub unsafe fn BindBuffer_load_with_dyn(
6024            &self,
6025            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6026        ) -> bool {
6027            load_dyn_name_atomic_ptr(get_proc_address, b"glBindBuffer\0", &self.glBindBuffer_p)
6028        }
6029        #[inline]
6030        #[doc(hidden)]
6031        pub fn BindBuffer_is_loaded(&self) -> bool {
6032            !self.glBindBuffer_p.load(RELAX).is_null()
6033        }
6034        /// [glBindBufferBase](http://docs.gl/gl4/glBindBufferBase)(target, index, buffer)
6035        /// * `target` group: BufferTargetARB
6036        #[cfg_attr(feature = "inline", inline)]
6037        #[cfg_attr(feature = "inline_always", inline(always))]
6038        pub unsafe fn BindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) {
6039            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6040            {
6041                trace!(
6042                    "calling gl.BindBufferBase({:#X}, {:?}, {:?});",
6043                    target,
6044                    index,
6045                    buffer
6046                );
6047            }
6048            let out = call_atomic_ptr_3arg(
6049                "glBindBufferBase",
6050                &self.glBindBufferBase_p,
6051                target,
6052                index,
6053                buffer,
6054            );
6055            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6056            {
6057                self.automatic_glGetError("glBindBufferBase");
6058            }
6059            out
6060        }
6061        #[doc(hidden)]
6062        pub unsafe fn BindBufferBase_load_with_dyn(
6063            &self,
6064            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6065        ) -> bool {
6066            load_dyn_name_atomic_ptr(
6067                get_proc_address,
6068                b"glBindBufferBase\0",
6069                &self.glBindBufferBase_p,
6070            )
6071        }
6072        #[inline]
6073        #[doc(hidden)]
6074        pub fn BindBufferBase_is_loaded(&self) -> bool {
6075            !self.glBindBufferBase_p.load(RELAX).is_null()
6076        }
6077        /// [glBindBufferRange](http://docs.gl/gl4/glBindBufferRange)(target, index, buffer, offset, size)
6078        /// * `target` group: BufferTargetARB
6079        /// * `offset` group: BufferOffset
6080        /// * `size` group: BufferSize
6081        #[cfg_attr(feature = "inline", inline)]
6082        #[cfg_attr(feature = "inline_always", inline(always))]
6083        pub unsafe fn BindBufferRange(
6084            &self,
6085            target: GLenum,
6086            index: GLuint,
6087            buffer: GLuint,
6088            offset: GLintptr,
6089            size: GLsizeiptr,
6090        ) {
6091            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6092            {
6093                trace!(
6094                    "calling gl.BindBufferRange({:#X}, {:?}, {:?}, {:?}, {:?});",
6095                    target,
6096                    index,
6097                    buffer,
6098                    offset,
6099                    size
6100                );
6101            }
6102            let out = call_atomic_ptr_5arg(
6103                "glBindBufferRange",
6104                &self.glBindBufferRange_p,
6105                target,
6106                index,
6107                buffer,
6108                offset,
6109                size,
6110            );
6111            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6112            {
6113                self.automatic_glGetError("glBindBufferRange");
6114            }
6115            out
6116        }
6117        #[doc(hidden)]
6118        pub unsafe fn BindBufferRange_load_with_dyn(
6119            &self,
6120            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6121        ) -> bool {
6122            load_dyn_name_atomic_ptr(
6123                get_proc_address,
6124                b"glBindBufferRange\0",
6125                &self.glBindBufferRange_p,
6126            )
6127        }
6128        #[inline]
6129        #[doc(hidden)]
6130        pub fn BindBufferRange_is_loaded(&self) -> bool {
6131            !self.glBindBufferRange_p.load(RELAX).is_null()
6132        }
6133        /// [glBindBuffersBase](http://docs.gl/gl4/glBindBuffersBase)(target, first, count, buffers)
6134        /// * `target` group: BufferTargetARB
6135        /// * `buffers` len: count
6136        #[cfg_attr(feature = "inline", inline)]
6137        #[cfg_attr(feature = "inline_always", inline(always))]
6138        pub unsafe fn BindBuffersBase(
6139            &self,
6140            target: GLenum,
6141            first: GLuint,
6142            count: GLsizei,
6143            buffers: *const GLuint,
6144        ) {
6145            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6146            {
6147                trace!(
6148                    "calling gl.BindBuffersBase({:#X}, {:?}, {:?}, {:p});",
6149                    target,
6150                    first,
6151                    count,
6152                    buffers
6153                );
6154            }
6155            let out = call_atomic_ptr_4arg(
6156                "glBindBuffersBase",
6157                &self.glBindBuffersBase_p,
6158                target,
6159                first,
6160                count,
6161                buffers,
6162            );
6163            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6164            {
6165                self.automatic_glGetError("glBindBuffersBase");
6166            }
6167            out
6168        }
6169        #[doc(hidden)]
6170        pub unsafe fn BindBuffersBase_load_with_dyn(
6171            &self,
6172            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6173        ) -> bool {
6174            load_dyn_name_atomic_ptr(
6175                get_proc_address,
6176                b"glBindBuffersBase\0",
6177                &self.glBindBuffersBase_p,
6178            )
6179        }
6180        #[inline]
6181        #[doc(hidden)]
6182        pub fn BindBuffersBase_is_loaded(&self) -> bool {
6183            !self.glBindBuffersBase_p.load(RELAX).is_null()
6184        }
6185        /// [glBindBuffersRange](http://docs.gl/gl4/glBindBuffersRange)(target, first, count, buffers, offsets, sizes)
6186        /// * `target` group: BufferTargetARB
6187        /// * `buffers` len: count
6188        /// * `offsets` len: count
6189        /// * `sizes` len: count
6190        #[cfg_attr(feature = "inline", inline)]
6191        #[cfg_attr(feature = "inline_always", inline(always))]
6192        pub unsafe fn BindBuffersRange(
6193            &self,
6194            target: GLenum,
6195            first: GLuint,
6196            count: GLsizei,
6197            buffers: *const GLuint,
6198            offsets: *const GLintptr,
6199            sizes: *const GLsizeiptr,
6200        ) {
6201            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6202            {
6203                trace!(
6204                    "calling gl.BindBuffersRange({:#X}, {:?}, {:?}, {:p}, {:p}, {:p});",
6205                    target,
6206                    first,
6207                    count,
6208                    buffers,
6209                    offsets,
6210                    sizes
6211                );
6212            }
6213            let out = call_atomic_ptr_6arg(
6214                "glBindBuffersRange",
6215                &self.glBindBuffersRange_p,
6216                target,
6217                first,
6218                count,
6219                buffers,
6220                offsets,
6221                sizes,
6222            );
6223            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6224            {
6225                self.automatic_glGetError("glBindBuffersRange");
6226            }
6227            out
6228        }
6229        #[doc(hidden)]
6230        pub unsafe fn BindBuffersRange_load_with_dyn(
6231            &self,
6232            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6233        ) -> bool {
6234            load_dyn_name_atomic_ptr(
6235                get_proc_address,
6236                b"glBindBuffersRange\0",
6237                &self.glBindBuffersRange_p,
6238            )
6239        }
6240        #[inline]
6241        #[doc(hidden)]
6242        pub fn BindBuffersRange_is_loaded(&self) -> bool {
6243            !self.glBindBuffersRange_p.load(RELAX).is_null()
6244        }
6245        /// [glBindFragDataLocation](http://docs.gl/gl4/glBindFragDataLocation)(program, color, name)
6246        /// * `name` len: COMPSIZE(name)
6247        #[cfg_attr(feature = "inline", inline)]
6248        #[cfg_attr(feature = "inline_always", inline(always))]
6249        pub unsafe fn BindFragDataLocation(
6250            &self,
6251            program: GLuint,
6252            color: GLuint,
6253            name: *const GLchar,
6254        ) {
6255            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6256            {
6257                trace!(
6258                    "calling gl.BindFragDataLocation({:?}, {:?}, {:p});",
6259                    program,
6260                    color,
6261                    name
6262                );
6263            }
6264            let out = call_atomic_ptr_3arg(
6265                "glBindFragDataLocation",
6266                &self.glBindFragDataLocation_p,
6267                program,
6268                color,
6269                name,
6270            );
6271            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6272            {
6273                self.automatic_glGetError("glBindFragDataLocation");
6274            }
6275            out
6276        }
6277        #[doc(hidden)]
6278        pub unsafe fn BindFragDataLocation_load_with_dyn(
6279            &self,
6280            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6281        ) -> bool {
6282            load_dyn_name_atomic_ptr(
6283                get_proc_address,
6284                b"glBindFragDataLocation\0",
6285                &self.glBindFragDataLocation_p,
6286            )
6287        }
6288        #[inline]
6289        #[doc(hidden)]
6290        pub fn BindFragDataLocation_is_loaded(&self) -> bool {
6291            !self.glBindFragDataLocation_p.load(RELAX).is_null()
6292        }
6293        /// [glBindFragDataLocationIndexed](http://docs.gl/gl4/glBindFragDataLocationIndexed)(program, colorNumber, index, name)
6294        #[cfg_attr(feature = "inline", inline)]
6295        #[cfg_attr(feature = "inline_always", inline(always))]
6296        pub unsafe fn BindFragDataLocationIndexed(
6297            &self,
6298            program: GLuint,
6299            colorNumber: GLuint,
6300            index: GLuint,
6301            name: *const GLchar,
6302        ) {
6303            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6304            {
6305                trace!(
6306                    "calling gl.BindFragDataLocationIndexed({:?}, {:?}, {:?}, {:p});",
6307                    program,
6308                    colorNumber,
6309                    index,
6310                    name
6311                );
6312            }
6313            let out = call_atomic_ptr_4arg(
6314                "glBindFragDataLocationIndexed",
6315                &self.glBindFragDataLocationIndexed_p,
6316                program,
6317                colorNumber,
6318                index,
6319                name,
6320            );
6321            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6322            {
6323                self.automatic_glGetError("glBindFragDataLocationIndexed");
6324            }
6325            out
6326        }
6327        #[doc(hidden)]
6328        pub unsafe fn BindFragDataLocationIndexed_load_with_dyn(
6329            &self,
6330            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6331        ) -> bool {
6332            load_dyn_name_atomic_ptr(
6333                get_proc_address,
6334                b"glBindFragDataLocationIndexed\0",
6335                &self.glBindFragDataLocationIndexed_p,
6336            )
6337        }
6338        #[inline]
6339        #[doc(hidden)]
6340        pub fn BindFragDataLocationIndexed_is_loaded(&self) -> bool {
6341            !self.glBindFragDataLocationIndexed_p.load(RELAX).is_null()
6342        }
6343        /// [glBindFramebuffer](http://docs.gl/gl4/glBindFramebuffer)(target, framebuffer)
6344        /// * `target` group: FramebufferTarget
6345        #[cfg_attr(feature = "inline", inline)]
6346        #[cfg_attr(feature = "inline_always", inline(always))]
6347        pub unsafe fn BindFramebuffer(&self, target: GLenum, framebuffer: GLuint) {
6348            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6349            {
6350                trace!(
6351                    "calling gl.BindFramebuffer({:#X}, {:?});",
6352                    target,
6353                    framebuffer
6354                );
6355            }
6356            let out = call_atomic_ptr_2arg(
6357                "glBindFramebuffer",
6358                &self.glBindFramebuffer_p,
6359                target,
6360                framebuffer,
6361            );
6362            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6363            {
6364                self.automatic_glGetError("glBindFramebuffer");
6365            }
6366            out
6367        }
6368        #[doc(hidden)]
6369        pub unsafe fn BindFramebuffer_load_with_dyn(
6370            &self,
6371            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6372        ) -> bool {
6373            load_dyn_name_atomic_ptr(
6374                get_proc_address,
6375                b"glBindFramebuffer\0",
6376                &self.glBindFramebuffer_p,
6377            )
6378        }
6379        #[inline]
6380        #[doc(hidden)]
6381        pub fn BindFramebuffer_is_loaded(&self) -> bool {
6382            !self.glBindFramebuffer_p.load(RELAX).is_null()
6383        }
6384        /// [glBindImageTexture](http://docs.gl/gl4/glBindImageTexture)(unit, texture, level, layered, layer, access, format)
6385        /// * `access` group: BufferAccessARB
6386        /// * `format` group: InternalFormat
6387        #[cfg_attr(feature = "inline", inline)]
6388        #[cfg_attr(feature = "inline_always", inline(always))]
6389        pub unsafe fn BindImageTexture(
6390            &self,
6391            unit: GLuint,
6392            texture: GLuint,
6393            level: GLint,
6394            layered: GLboolean,
6395            layer: GLint,
6396            access: GLenum,
6397            format: GLenum,
6398        ) {
6399            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6400            {
6401                trace!(
6402                    "calling gl.BindImageTexture({:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X});",
6403                    unit,
6404                    texture,
6405                    level,
6406                    layered,
6407                    layer,
6408                    access,
6409                    format
6410                );
6411            }
6412            let out = call_atomic_ptr_7arg(
6413                "glBindImageTexture",
6414                &self.glBindImageTexture_p,
6415                unit,
6416                texture,
6417                level,
6418                layered,
6419                layer,
6420                access,
6421                format,
6422            );
6423            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6424            {
6425                self.automatic_glGetError("glBindImageTexture");
6426            }
6427            out
6428        }
6429        #[doc(hidden)]
6430        pub unsafe fn BindImageTexture_load_with_dyn(
6431            &self,
6432            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6433        ) -> bool {
6434            load_dyn_name_atomic_ptr(
6435                get_proc_address,
6436                b"glBindImageTexture\0",
6437                &self.glBindImageTexture_p,
6438            )
6439        }
6440        #[inline]
6441        #[doc(hidden)]
6442        pub fn BindImageTexture_is_loaded(&self) -> bool {
6443            !self.glBindImageTexture_p.load(RELAX).is_null()
6444        }
6445        /// [glBindImageTextures](http://docs.gl/gl4/glBindImageTextures)(first, count, textures)
6446        /// * `textures` len: count
6447        #[cfg_attr(feature = "inline", inline)]
6448        #[cfg_attr(feature = "inline_always", inline(always))]
6449        pub unsafe fn BindImageTextures(
6450            &self,
6451            first: GLuint,
6452            count: GLsizei,
6453            textures: *const GLuint,
6454        ) {
6455            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6456            {
6457                trace!(
6458                    "calling gl.BindImageTextures({:?}, {:?}, {:p});",
6459                    first,
6460                    count,
6461                    textures
6462                );
6463            }
6464            let out = call_atomic_ptr_3arg(
6465                "glBindImageTextures",
6466                &self.glBindImageTextures_p,
6467                first,
6468                count,
6469                textures,
6470            );
6471            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6472            {
6473                self.automatic_glGetError("glBindImageTextures");
6474            }
6475            out
6476        }
6477        #[doc(hidden)]
6478        pub unsafe fn BindImageTextures_load_with_dyn(
6479            &self,
6480            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6481        ) -> bool {
6482            load_dyn_name_atomic_ptr(
6483                get_proc_address,
6484                b"glBindImageTextures\0",
6485                &self.glBindImageTextures_p,
6486            )
6487        }
6488        #[inline]
6489        #[doc(hidden)]
6490        pub fn BindImageTextures_is_loaded(&self) -> bool {
6491            !self.glBindImageTextures_p.load(RELAX).is_null()
6492        }
6493        /// [glBindProgramPipeline](http://docs.gl/gl4/glBindProgramPipeline)(pipeline)
6494        #[cfg_attr(feature = "inline", inline)]
6495        #[cfg_attr(feature = "inline_always", inline(always))]
6496        pub unsafe fn BindProgramPipeline(&self, pipeline: GLuint) {
6497            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6498            {
6499                trace!("calling gl.BindProgramPipeline({:?});", pipeline);
6500            }
6501            let out = call_atomic_ptr_1arg(
6502                "glBindProgramPipeline",
6503                &self.glBindProgramPipeline_p,
6504                pipeline,
6505            );
6506            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6507            {
6508                self.automatic_glGetError("glBindProgramPipeline");
6509            }
6510            out
6511        }
6512        #[doc(hidden)]
6513        pub unsafe fn BindProgramPipeline_load_with_dyn(
6514            &self,
6515            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6516        ) -> bool {
6517            load_dyn_name_atomic_ptr(
6518                get_proc_address,
6519                b"glBindProgramPipeline\0",
6520                &self.glBindProgramPipeline_p,
6521            )
6522        }
6523        #[inline]
6524        #[doc(hidden)]
6525        pub fn BindProgramPipeline_is_loaded(&self) -> bool {
6526            !self.glBindProgramPipeline_p.load(RELAX).is_null()
6527        }
6528        /// [glBindRenderbuffer](http://docs.gl/gl4/glBindRenderbuffer)(target, renderbuffer)
6529        /// * `target` group: RenderbufferTarget
6530        #[cfg_attr(feature = "inline", inline)]
6531        #[cfg_attr(feature = "inline_always", inline(always))]
6532        pub unsafe fn BindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) {
6533            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6534            {
6535                trace!(
6536                    "calling gl.BindRenderbuffer({:#X}, {:?});",
6537                    target,
6538                    renderbuffer
6539                );
6540            }
6541            let out = call_atomic_ptr_2arg(
6542                "glBindRenderbuffer",
6543                &self.glBindRenderbuffer_p,
6544                target,
6545                renderbuffer,
6546            );
6547            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6548            {
6549                self.automatic_glGetError("glBindRenderbuffer");
6550            }
6551            out
6552        }
6553        #[doc(hidden)]
6554        pub unsafe fn BindRenderbuffer_load_with_dyn(
6555            &self,
6556            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6557        ) -> bool {
6558            load_dyn_name_atomic_ptr(
6559                get_proc_address,
6560                b"glBindRenderbuffer\0",
6561                &self.glBindRenderbuffer_p,
6562            )
6563        }
6564        #[inline]
6565        #[doc(hidden)]
6566        pub fn BindRenderbuffer_is_loaded(&self) -> bool {
6567            !self.glBindRenderbuffer_p.load(RELAX).is_null()
6568        }
6569        /// [glBindSampler](http://docs.gl/gl4/glBindSampler)(unit, sampler)
6570        #[cfg_attr(feature = "inline", inline)]
6571        #[cfg_attr(feature = "inline_always", inline(always))]
6572        pub unsafe fn BindSampler(&self, unit: GLuint, sampler: GLuint) {
6573            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6574            {
6575                trace!("calling gl.BindSampler({:?}, {:?});", unit, sampler);
6576            }
6577            let out = call_atomic_ptr_2arg("glBindSampler", &self.glBindSampler_p, unit, sampler);
6578            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6579            {
6580                self.automatic_glGetError("glBindSampler");
6581            }
6582            out
6583        }
6584        #[doc(hidden)]
6585        pub unsafe fn BindSampler_load_with_dyn(
6586            &self,
6587            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6588        ) -> bool {
6589            load_dyn_name_atomic_ptr(get_proc_address, b"glBindSampler\0", &self.glBindSampler_p)
6590        }
6591        #[inline]
6592        #[doc(hidden)]
6593        pub fn BindSampler_is_loaded(&self) -> bool {
6594            !self.glBindSampler_p.load(RELAX).is_null()
6595        }
6596        /// [glBindSamplers](http://docs.gl/gl4/glBindSamplers)(first, count, samplers)
6597        /// * `samplers` len: count
6598        #[cfg_attr(feature = "inline", inline)]
6599        #[cfg_attr(feature = "inline_always", inline(always))]
6600        pub unsafe fn BindSamplers(&self, first: GLuint, count: GLsizei, samplers: *const GLuint) {
6601            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6602            {
6603                trace!(
6604                    "calling gl.BindSamplers({:?}, {:?}, {:p});",
6605                    first,
6606                    count,
6607                    samplers
6608                );
6609            }
6610            let out = call_atomic_ptr_3arg(
6611                "glBindSamplers",
6612                &self.glBindSamplers_p,
6613                first,
6614                count,
6615                samplers,
6616            );
6617            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6618            {
6619                self.automatic_glGetError("glBindSamplers");
6620            }
6621            out
6622        }
6623        #[doc(hidden)]
6624        pub unsafe fn BindSamplers_load_with_dyn(
6625            &self,
6626            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6627        ) -> bool {
6628            load_dyn_name_atomic_ptr(
6629                get_proc_address,
6630                b"glBindSamplers\0",
6631                &self.glBindSamplers_p,
6632            )
6633        }
6634        #[inline]
6635        #[doc(hidden)]
6636        pub fn BindSamplers_is_loaded(&self) -> bool {
6637            !self.glBindSamplers_p.load(RELAX).is_null()
6638        }
6639        /// [glBindTexture](http://docs.gl/gl4/glBindTexture)(target, texture)
6640        /// * `target` group: TextureTarget
6641        /// * `texture` group: Texture
6642        #[cfg_attr(feature = "inline", inline)]
6643        #[cfg_attr(feature = "inline_always", inline(always))]
6644        pub unsafe fn BindTexture(&self, target: GLenum, texture: GLuint) {
6645            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6646            {
6647                trace!("calling gl.BindTexture({:#X}, {:?});", target, texture);
6648            }
6649            let out = call_atomic_ptr_2arg("glBindTexture", &self.glBindTexture_p, target, texture);
6650            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6651            {
6652                self.automatic_glGetError("glBindTexture");
6653            }
6654            out
6655        }
6656        #[doc(hidden)]
6657        pub unsafe fn BindTexture_load_with_dyn(
6658            &self,
6659            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6660        ) -> bool {
6661            load_dyn_name_atomic_ptr(get_proc_address, b"glBindTexture\0", &self.glBindTexture_p)
6662        }
6663        #[inline]
6664        #[doc(hidden)]
6665        pub fn BindTexture_is_loaded(&self) -> bool {
6666            !self.glBindTexture_p.load(RELAX).is_null()
6667        }
6668        /// [glBindTextureUnit](http://docs.gl/gl4/glBindTextureUnit)(unit, texture)
6669        #[cfg_attr(feature = "inline", inline)]
6670        #[cfg_attr(feature = "inline_always", inline(always))]
6671        pub unsafe fn BindTextureUnit(&self, unit: GLuint, texture: GLuint) {
6672            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6673            {
6674                trace!("calling gl.BindTextureUnit({:?}, {:?});", unit, texture);
6675            }
6676            let out = call_atomic_ptr_2arg(
6677                "glBindTextureUnit",
6678                &self.glBindTextureUnit_p,
6679                unit,
6680                texture,
6681            );
6682            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6683            {
6684                self.automatic_glGetError("glBindTextureUnit");
6685            }
6686            out
6687        }
6688        #[doc(hidden)]
6689        pub unsafe fn BindTextureUnit_load_with_dyn(
6690            &self,
6691            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6692        ) -> bool {
6693            load_dyn_name_atomic_ptr(
6694                get_proc_address,
6695                b"glBindTextureUnit\0",
6696                &self.glBindTextureUnit_p,
6697            )
6698        }
6699        #[inline]
6700        #[doc(hidden)]
6701        pub fn BindTextureUnit_is_loaded(&self) -> bool {
6702            !self.glBindTextureUnit_p.load(RELAX).is_null()
6703        }
6704        /// [glBindTextures](http://docs.gl/gl4/glBindTextures)(first, count, textures)
6705        /// * `textures` len: count
6706        #[cfg_attr(feature = "inline", inline)]
6707        #[cfg_attr(feature = "inline_always", inline(always))]
6708        pub unsafe fn BindTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) {
6709            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6710            {
6711                trace!(
6712                    "calling gl.BindTextures({:?}, {:?}, {:p});",
6713                    first,
6714                    count,
6715                    textures
6716                );
6717            }
6718            let out = call_atomic_ptr_3arg(
6719                "glBindTextures",
6720                &self.glBindTextures_p,
6721                first,
6722                count,
6723                textures,
6724            );
6725            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6726            {
6727                self.automatic_glGetError("glBindTextures");
6728            }
6729            out
6730        }
6731        #[doc(hidden)]
6732        pub unsafe fn BindTextures_load_with_dyn(
6733            &self,
6734            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6735        ) -> bool {
6736            load_dyn_name_atomic_ptr(
6737                get_proc_address,
6738                b"glBindTextures\0",
6739                &self.glBindTextures_p,
6740            )
6741        }
6742        #[inline]
6743        #[doc(hidden)]
6744        pub fn BindTextures_is_loaded(&self) -> bool {
6745            !self.glBindTextures_p.load(RELAX).is_null()
6746        }
6747        /// [glBindTransformFeedback](http://docs.gl/gl4/glBindTransformFeedback)(target, id)
6748        /// * `target` group: BindTransformFeedbackTarget
6749        #[cfg_attr(feature = "inline", inline)]
6750        #[cfg_attr(feature = "inline_always", inline(always))]
6751        pub unsafe fn BindTransformFeedback(&self, target: GLenum, id: GLuint) {
6752            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6753            {
6754                trace!("calling gl.BindTransformFeedback({:#X}, {:?});", target, id);
6755            }
6756            let out = call_atomic_ptr_2arg(
6757                "glBindTransformFeedback",
6758                &self.glBindTransformFeedback_p,
6759                target,
6760                id,
6761            );
6762            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6763            {
6764                self.automatic_glGetError("glBindTransformFeedback");
6765            }
6766            out
6767        }
6768        #[doc(hidden)]
6769        pub unsafe fn BindTransformFeedback_load_with_dyn(
6770            &self,
6771            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6772        ) -> bool {
6773            load_dyn_name_atomic_ptr(
6774                get_proc_address,
6775                b"glBindTransformFeedback\0",
6776                &self.glBindTransformFeedback_p,
6777            )
6778        }
6779        #[inline]
6780        #[doc(hidden)]
6781        pub fn BindTransformFeedback_is_loaded(&self) -> bool {
6782            !self.glBindTransformFeedback_p.load(RELAX).is_null()
6783        }
6784        /// [glBindVertexArray](http://docs.gl/gl4/glBindVertexArray)(array)
6785        #[cfg_attr(feature = "inline", inline)]
6786        #[cfg_attr(feature = "inline_always", inline(always))]
6787        pub unsafe fn BindVertexArray(&self, array: GLuint) {
6788            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6789            {
6790                trace!("calling gl.BindVertexArray({:?});", array);
6791            }
6792            let out = call_atomic_ptr_1arg("glBindVertexArray", &self.glBindVertexArray_p, array);
6793            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6794            {
6795                self.automatic_glGetError("glBindVertexArray");
6796            }
6797            out
6798        }
6799        #[doc(hidden)]
6800        pub unsafe fn BindVertexArray_load_with_dyn(
6801            &self,
6802            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6803        ) -> bool {
6804            load_dyn_name_atomic_ptr(
6805                get_proc_address,
6806                b"glBindVertexArray\0",
6807                &self.glBindVertexArray_p,
6808            )
6809        }
6810        #[inline]
6811        #[doc(hidden)]
6812        pub fn BindVertexArray_is_loaded(&self) -> bool {
6813            !self.glBindVertexArray_p.load(RELAX).is_null()
6814        }
6815        /// [glBindVertexArrayAPPLE](http://docs.gl/gl4/glBindVertexArrayAPPLE)(array)
6816        #[cfg_attr(feature = "inline", inline)]
6817        #[cfg_attr(feature = "inline_always", inline(always))]
6818        pub unsafe fn BindVertexArrayAPPLE(&self, array: GLuint) {
6819            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6820            {
6821                trace!("calling gl.BindVertexArrayAPPLE({:?});", array);
6822            }
6823            let out = call_atomic_ptr_1arg(
6824                "glBindVertexArrayAPPLE",
6825                &self.glBindVertexArrayAPPLE_p,
6826                array,
6827            );
6828            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6829            {
6830                self.automatic_glGetError("glBindVertexArrayAPPLE");
6831            }
6832            out
6833        }
6834        #[doc(hidden)]
6835        pub unsafe fn BindVertexArrayAPPLE_load_with_dyn(
6836            &self,
6837            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6838        ) -> bool {
6839            load_dyn_name_atomic_ptr(
6840                get_proc_address,
6841                b"glBindVertexArrayAPPLE\0",
6842                &self.glBindVertexArrayAPPLE_p,
6843            )
6844        }
6845        #[inline]
6846        #[doc(hidden)]
6847        pub fn BindVertexArrayAPPLE_is_loaded(&self) -> bool {
6848            !self.glBindVertexArrayAPPLE_p.load(RELAX).is_null()
6849        }
6850        /// [glBindVertexArrayOES](http://docs.gl/gl4/glBindVertexArrayOES)(array)
6851        /// * alias of: [`glBindVertexArray`]
6852        #[cfg_attr(feature = "inline", inline)]
6853        #[cfg_attr(feature = "inline_always", inline(always))]
6854        pub unsafe fn BindVertexArrayOES(&self, array: GLuint) {
6855            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6856            {
6857                trace!("calling gl.BindVertexArrayOES({:?});", array);
6858            }
6859            let out =
6860                call_atomic_ptr_1arg("glBindVertexArrayOES", &self.glBindVertexArrayOES_p, array);
6861            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6862            {
6863                self.automatic_glGetError("glBindVertexArrayOES");
6864            }
6865            out
6866        }
6867        #[doc(hidden)]
6868        pub unsafe fn BindVertexArrayOES_load_with_dyn(
6869            &self,
6870            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6871        ) -> bool {
6872            load_dyn_name_atomic_ptr(
6873                get_proc_address,
6874                b"glBindVertexArrayOES\0",
6875                &self.glBindVertexArrayOES_p,
6876            )
6877        }
6878        #[inline]
6879        #[doc(hidden)]
6880        pub fn BindVertexArrayOES_is_loaded(&self) -> bool {
6881            !self.glBindVertexArrayOES_p.load(RELAX).is_null()
6882        }
6883        /// [glBindVertexBuffer](http://docs.gl/gl4/glBindVertexBuffer)(bindingindex, buffer, offset, stride)
6884        /// * `offset` group: BufferOffset
6885        #[cfg_attr(feature = "inline", inline)]
6886        #[cfg_attr(feature = "inline_always", inline(always))]
6887        pub unsafe fn BindVertexBuffer(
6888            &self,
6889            bindingindex: GLuint,
6890            buffer: GLuint,
6891            offset: GLintptr,
6892            stride: GLsizei,
6893        ) {
6894            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6895            {
6896                trace!(
6897                    "calling gl.BindVertexBuffer({:?}, {:?}, {:?}, {:?});",
6898                    bindingindex,
6899                    buffer,
6900                    offset,
6901                    stride
6902                );
6903            }
6904            let out = call_atomic_ptr_4arg(
6905                "glBindVertexBuffer",
6906                &self.glBindVertexBuffer_p,
6907                bindingindex,
6908                buffer,
6909                offset,
6910                stride,
6911            );
6912            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6913            {
6914                self.automatic_glGetError("glBindVertexBuffer");
6915            }
6916            out
6917        }
6918        #[doc(hidden)]
6919        pub unsafe fn BindVertexBuffer_load_with_dyn(
6920            &self,
6921            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6922        ) -> bool {
6923            load_dyn_name_atomic_ptr(
6924                get_proc_address,
6925                b"glBindVertexBuffer\0",
6926                &self.glBindVertexBuffer_p,
6927            )
6928        }
6929        #[inline]
6930        #[doc(hidden)]
6931        pub fn BindVertexBuffer_is_loaded(&self) -> bool {
6932            !self.glBindVertexBuffer_p.load(RELAX).is_null()
6933        }
6934        /// [glBindVertexBuffers](http://docs.gl/gl4/glBindVertexBuffers)(first, count, buffers, offsets, strides)
6935        /// * `buffers` len: count
6936        /// * `offsets` len: count
6937        /// * `strides` len: count
6938        #[cfg_attr(feature = "inline", inline)]
6939        #[cfg_attr(feature = "inline_always", inline(always))]
6940        pub unsafe fn BindVertexBuffers(
6941            &self,
6942            first: GLuint,
6943            count: GLsizei,
6944            buffers: *const GLuint,
6945            offsets: *const GLintptr,
6946            strides: *const GLsizei,
6947        ) {
6948            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6949            {
6950                trace!(
6951                    "calling gl.BindVertexBuffers({:?}, {:?}, {:p}, {:p}, {:p});",
6952                    first,
6953                    count,
6954                    buffers,
6955                    offsets,
6956                    strides
6957                );
6958            }
6959            let out = call_atomic_ptr_5arg(
6960                "glBindVertexBuffers",
6961                &self.glBindVertexBuffers_p,
6962                first,
6963                count,
6964                buffers,
6965                offsets,
6966                strides,
6967            );
6968            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6969            {
6970                self.automatic_glGetError("glBindVertexBuffers");
6971            }
6972            out
6973        }
6974        #[doc(hidden)]
6975        pub unsafe fn BindVertexBuffers_load_with_dyn(
6976            &self,
6977            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6978        ) -> bool {
6979            load_dyn_name_atomic_ptr(
6980                get_proc_address,
6981                b"glBindVertexBuffers\0",
6982                &self.glBindVertexBuffers_p,
6983            )
6984        }
6985        #[inline]
6986        #[doc(hidden)]
6987        pub fn BindVertexBuffers_is_loaded(&self) -> bool {
6988            !self.glBindVertexBuffers_p.load(RELAX).is_null()
6989        }
6990        /// [glBlendBarrier](http://docs.gl/gl4/glBlendBarrier)()
6991        #[cfg_attr(feature = "inline", inline)]
6992        #[cfg_attr(feature = "inline_always", inline(always))]
6993        pub unsafe fn BlendBarrier(&self) {
6994            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6995            {
6996                trace!("calling gl.BlendBarrier();",);
6997            }
6998            let out = call_atomic_ptr_0arg("glBlendBarrier", &self.glBlendBarrier_p);
6999            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7000            {
7001                self.automatic_glGetError("glBlendBarrier");
7002            }
7003            out
7004        }
7005        #[doc(hidden)]
7006        pub unsafe fn BlendBarrier_load_with_dyn(
7007            &self,
7008            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7009        ) -> bool {
7010            load_dyn_name_atomic_ptr(
7011                get_proc_address,
7012                b"glBlendBarrier\0",
7013                &self.glBlendBarrier_p,
7014            )
7015        }
7016        #[inline]
7017        #[doc(hidden)]
7018        pub fn BlendBarrier_is_loaded(&self) -> bool {
7019            !self.glBlendBarrier_p.load(RELAX).is_null()
7020        }
7021        /// [glBlendColor](http://docs.gl/gl4/glBlendColor)(red, green, blue, alpha)
7022        /// * `red` group: ColorF
7023        /// * `green` group: ColorF
7024        /// * `blue` group: ColorF
7025        /// * `alpha` group: ColorF
7026        #[cfg_attr(feature = "inline", inline)]
7027        #[cfg_attr(feature = "inline_always", inline(always))]
7028        pub unsafe fn BlendColor(
7029            &self,
7030            red: GLfloat,
7031            green: GLfloat,
7032            blue: GLfloat,
7033            alpha: GLfloat,
7034        ) {
7035            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7036            {
7037                trace!(
7038                    "calling gl.BlendColor({:?}, {:?}, {:?}, {:?});",
7039                    red,
7040                    green,
7041                    blue,
7042                    alpha
7043                );
7044            }
7045            let out = call_atomic_ptr_4arg(
7046                "glBlendColor",
7047                &self.glBlendColor_p,
7048                red,
7049                green,
7050                blue,
7051                alpha,
7052            );
7053            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7054            {
7055                self.automatic_glGetError("glBlendColor");
7056            }
7057            out
7058        }
7059        #[doc(hidden)]
7060        pub unsafe fn BlendColor_load_with_dyn(
7061            &self,
7062            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7063        ) -> bool {
7064            load_dyn_name_atomic_ptr(get_proc_address, b"glBlendColor\0", &self.glBlendColor_p)
7065        }
7066        #[inline]
7067        #[doc(hidden)]
7068        pub fn BlendColor_is_loaded(&self) -> bool {
7069            !self.glBlendColor_p.load(RELAX).is_null()
7070        }
7071        /// [glBlendEquation](http://docs.gl/gl4/glBlendEquation)(mode)
7072        /// * `mode` group: BlendEquationModeEXT
7073        #[cfg_attr(feature = "inline", inline)]
7074        #[cfg_attr(feature = "inline_always", inline(always))]
7075        pub unsafe fn BlendEquation(&self, mode: GLenum) {
7076            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7077            {
7078                trace!("calling gl.BlendEquation({:#X});", mode);
7079            }
7080            let out = call_atomic_ptr_1arg("glBlendEquation", &self.glBlendEquation_p, mode);
7081            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7082            {
7083                self.automatic_glGetError("glBlendEquation");
7084            }
7085            out
7086        }
7087        #[doc(hidden)]
7088        pub unsafe fn BlendEquation_load_with_dyn(
7089            &self,
7090            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7091        ) -> bool {
7092            load_dyn_name_atomic_ptr(
7093                get_proc_address,
7094                b"glBlendEquation\0",
7095                &self.glBlendEquation_p,
7096            )
7097        }
7098        #[inline]
7099        #[doc(hidden)]
7100        pub fn BlendEquation_is_loaded(&self) -> bool {
7101            !self.glBlendEquation_p.load(RELAX).is_null()
7102        }
7103        /// [glBlendEquationSeparate](http://docs.gl/gl4/glBlendEquationSeparate)(modeRGB, modeAlpha)
7104        /// * `modeRGB` group: BlendEquationModeEXT
7105        /// * `modeAlpha` group: BlendEquationModeEXT
7106        #[cfg_attr(feature = "inline", inline)]
7107        #[cfg_attr(feature = "inline_always", inline(always))]
7108        pub unsafe fn BlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) {
7109            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7110            {
7111                trace!(
7112                    "calling gl.BlendEquationSeparate({:#X}, {:#X});",
7113                    modeRGB,
7114                    modeAlpha
7115                );
7116            }
7117            let out = call_atomic_ptr_2arg(
7118                "glBlendEquationSeparate",
7119                &self.glBlendEquationSeparate_p,
7120                modeRGB,
7121                modeAlpha,
7122            );
7123            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7124            {
7125                self.automatic_glGetError("glBlendEquationSeparate");
7126            }
7127            out
7128        }
7129        #[doc(hidden)]
7130        pub unsafe fn BlendEquationSeparate_load_with_dyn(
7131            &self,
7132            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7133        ) -> bool {
7134            load_dyn_name_atomic_ptr(
7135                get_proc_address,
7136                b"glBlendEquationSeparate\0",
7137                &self.glBlendEquationSeparate_p,
7138            )
7139        }
7140        #[inline]
7141        #[doc(hidden)]
7142        pub fn BlendEquationSeparate_is_loaded(&self) -> bool {
7143            !self.glBlendEquationSeparate_p.load(RELAX).is_null()
7144        }
7145        /// [glBlendEquationSeparatei](http://docs.gl/gl4/glBlendEquationSeparate)(buf, modeRGB, modeAlpha)
7146        /// * `modeRGB` group: BlendEquationModeEXT
7147        /// * `modeAlpha` group: BlendEquationModeEXT
7148        #[cfg_attr(feature = "inline", inline)]
7149        #[cfg_attr(feature = "inline_always", inline(always))]
7150        pub unsafe fn BlendEquationSeparatei(
7151            &self,
7152            buf: GLuint,
7153            modeRGB: GLenum,
7154            modeAlpha: GLenum,
7155        ) {
7156            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7157            {
7158                trace!(
7159                    "calling gl.BlendEquationSeparatei({:?}, {:#X}, {:#X});",
7160                    buf,
7161                    modeRGB,
7162                    modeAlpha
7163                );
7164            }
7165            let out = call_atomic_ptr_3arg(
7166                "glBlendEquationSeparatei",
7167                &self.glBlendEquationSeparatei_p,
7168                buf,
7169                modeRGB,
7170                modeAlpha,
7171            );
7172            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7173            {
7174                self.automatic_glGetError("glBlendEquationSeparatei");
7175            }
7176            out
7177        }
7178        #[doc(hidden)]
7179        pub unsafe fn BlendEquationSeparatei_load_with_dyn(
7180            &self,
7181            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7182        ) -> bool {
7183            load_dyn_name_atomic_ptr(
7184                get_proc_address,
7185                b"glBlendEquationSeparatei\0",
7186                &self.glBlendEquationSeparatei_p,
7187            )
7188        }
7189        #[inline]
7190        #[doc(hidden)]
7191        pub fn BlendEquationSeparatei_is_loaded(&self) -> bool {
7192            !self.glBlendEquationSeparatei_p.load(RELAX).is_null()
7193        }
7194        /// [glBlendEquationi](http://docs.gl/gl4/glBlendEquation)(buf, mode)
7195        /// * `mode` group: BlendEquationModeEXT
7196        #[cfg_attr(feature = "inline", inline)]
7197        #[cfg_attr(feature = "inline_always", inline(always))]
7198        pub unsafe fn BlendEquationi(&self, buf: GLuint, mode: GLenum) {
7199            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7200            {
7201                trace!("calling gl.BlendEquationi({:?}, {:#X});", buf, mode);
7202            }
7203            let out = call_atomic_ptr_2arg("glBlendEquationi", &self.glBlendEquationi_p, buf, mode);
7204            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7205            {
7206                self.automatic_glGetError("glBlendEquationi");
7207            }
7208            out
7209        }
7210        #[doc(hidden)]
7211        pub unsafe fn BlendEquationi_load_with_dyn(
7212            &self,
7213            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7214        ) -> bool {
7215            load_dyn_name_atomic_ptr(
7216                get_proc_address,
7217                b"glBlendEquationi\0",
7218                &self.glBlendEquationi_p,
7219            )
7220        }
7221        #[inline]
7222        #[doc(hidden)]
7223        pub fn BlendEquationi_is_loaded(&self) -> bool {
7224            !self.glBlendEquationi_p.load(RELAX).is_null()
7225        }
7226        /// [glBlendFunc](http://docs.gl/gl4/glBlendFunc)(sfactor, dfactor)
7227        /// * `sfactor` group: BlendingFactor
7228        /// * `dfactor` group: BlendingFactor
7229        #[cfg_attr(feature = "inline", inline)]
7230        #[cfg_attr(feature = "inline_always", inline(always))]
7231        pub unsafe fn BlendFunc(&self, sfactor: GLenum, dfactor: GLenum) {
7232            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7233            {
7234                trace!("calling gl.BlendFunc({:#X}, {:#X});", sfactor, dfactor);
7235            }
7236            let out = call_atomic_ptr_2arg("glBlendFunc", &self.glBlendFunc_p, sfactor, dfactor);
7237            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7238            {
7239                self.automatic_glGetError("glBlendFunc");
7240            }
7241            out
7242        }
7243        #[doc(hidden)]
7244        pub unsafe fn BlendFunc_load_with_dyn(
7245            &self,
7246            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7247        ) -> bool {
7248            load_dyn_name_atomic_ptr(get_proc_address, b"glBlendFunc\0", &self.glBlendFunc_p)
7249        }
7250        #[inline]
7251        #[doc(hidden)]
7252        pub fn BlendFunc_is_loaded(&self) -> bool {
7253            !self.glBlendFunc_p.load(RELAX).is_null()
7254        }
7255        /// [glBlendFuncSeparate](http://docs.gl/gl4/glBlendFuncSeparate)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)
7256        /// * `sfactorRGB` group: BlendingFactor
7257        /// * `dfactorRGB` group: BlendingFactor
7258        /// * `sfactorAlpha` group: BlendingFactor
7259        /// * `dfactorAlpha` group: BlendingFactor
7260        #[cfg_attr(feature = "inline", inline)]
7261        #[cfg_attr(feature = "inline_always", inline(always))]
7262        pub unsafe fn BlendFuncSeparate(
7263            &self,
7264            sfactorRGB: GLenum,
7265            dfactorRGB: GLenum,
7266            sfactorAlpha: GLenum,
7267            dfactorAlpha: GLenum,
7268        ) {
7269            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7270            {
7271                trace!(
7272                    "calling gl.BlendFuncSeparate({:#X}, {:#X}, {:#X}, {:#X});",
7273                    sfactorRGB,
7274                    dfactorRGB,
7275                    sfactorAlpha,
7276                    dfactorAlpha
7277                );
7278            }
7279            let out = call_atomic_ptr_4arg(
7280                "glBlendFuncSeparate",
7281                &self.glBlendFuncSeparate_p,
7282                sfactorRGB,
7283                dfactorRGB,
7284                sfactorAlpha,
7285                dfactorAlpha,
7286            );
7287            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7288            {
7289                self.automatic_glGetError("glBlendFuncSeparate");
7290            }
7291            out
7292        }
7293        #[doc(hidden)]
7294        pub unsafe fn BlendFuncSeparate_load_with_dyn(
7295            &self,
7296            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7297        ) -> bool {
7298            load_dyn_name_atomic_ptr(
7299                get_proc_address,
7300                b"glBlendFuncSeparate\0",
7301                &self.glBlendFuncSeparate_p,
7302            )
7303        }
7304        #[inline]
7305        #[doc(hidden)]
7306        pub fn BlendFuncSeparate_is_loaded(&self) -> bool {
7307            !self.glBlendFuncSeparate_p.load(RELAX).is_null()
7308        }
7309        /// [glBlendFuncSeparatei](http://docs.gl/gl4/glBlendFuncSeparate)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)
7310        /// * `srcRGB` group: BlendingFactor
7311        /// * `dstRGB` group: BlendingFactor
7312        /// * `srcAlpha` group: BlendingFactor
7313        /// * `dstAlpha` group: BlendingFactor
7314        #[cfg_attr(feature = "inline", inline)]
7315        #[cfg_attr(feature = "inline_always", inline(always))]
7316        pub unsafe fn BlendFuncSeparatei(
7317            &self,
7318            buf: GLuint,
7319            srcRGB: GLenum,
7320            dstRGB: GLenum,
7321            srcAlpha: GLenum,
7322            dstAlpha: GLenum,
7323        ) {
7324            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7325            {
7326                trace!(
7327                    "calling gl.BlendFuncSeparatei({:?}, {:#X}, {:#X}, {:#X}, {:#X});",
7328                    buf,
7329                    srcRGB,
7330                    dstRGB,
7331                    srcAlpha,
7332                    dstAlpha
7333                );
7334            }
7335            let out = call_atomic_ptr_5arg(
7336                "glBlendFuncSeparatei",
7337                &self.glBlendFuncSeparatei_p,
7338                buf,
7339                srcRGB,
7340                dstRGB,
7341                srcAlpha,
7342                dstAlpha,
7343            );
7344            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7345            {
7346                self.automatic_glGetError("glBlendFuncSeparatei");
7347            }
7348            out
7349        }
7350        #[doc(hidden)]
7351        pub unsafe fn BlendFuncSeparatei_load_with_dyn(
7352            &self,
7353            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7354        ) -> bool {
7355            load_dyn_name_atomic_ptr(
7356                get_proc_address,
7357                b"glBlendFuncSeparatei\0",
7358                &self.glBlendFuncSeparatei_p,
7359            )
7360        }
7361        #[inline]
7362        #[doc(hidden)]
7363        pub fn BlendFuncSeparatei_is_loaded(&self) -> bool {
7364            !self.glBlendFuncSeparatei_p.load(RELAX).is_null()
7365        }
7366        /// [glBlendFunci](http://docs.gl/gl4/glBlendFunc)(buf, src, dst)
7367        /// * `src` group: BlendingFactor
7368        /// * `dst` group: BlendingFactor
7369        #[cfg_attr(feature = "inline", inline)]
7370        #[cfg_attr(feature = "inline_always", inline(always))]
7371        pub unsafe fn BlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) {
7372            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7373            {
7374                trace!("calling gl.BlendFunci({:?}, {:#X}, {:#X});", buf, src, dst);
7375            }
7376            let out = call_atomic_ptr_3arg("glBlendFunci", &self.glBlendFunci_p, buf, src, dst);
7377            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7378            {
7379                self.automatic_glGetError("glBlendFunci");
7380            }
7381            out
7382        }
7383        #[doc(hidden)]
7384        pub unsafe fn BlendFunci_load_with_dyn(
7385            &self,
7386            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7387        ) -> bool {
7388            load_dyn_name_atomic_ptr(get_proc_address, b"glBlendFunci\0", &self.glBlendFunci_p)
7389        }
7390        #[inline]
7391        #[doc(hidden)]
7392        pub fn BlendFunci_is_loaded(&self) -> bool {
7393            !self.glBlendFunci_p.load(RELAX).is_null()
7394        }
7395        /// [glBlitFramebuffer](http://docs.gl/gl4/glBlitFramebuffer)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)
7396        /// * `mask` group: ClearBufferMask
7397        /// * `filter` group: BlitFramebufferFilter
7398        #[cfg_attr(feature = "inline", inline)]
7399        #[cfg_attr(feature = "inline_always", inline(always))]
7400        pub unsafe fn BlitFramebuffer(
7401            &self,
7402            srcX0: GLint,
7403            srcY0: GLint,
7404            srcX1: GLint,
7405            srcY1: GLint,
7406            dstX0: GLint,
7407            dstY0: GLint,
7408            dstX1: GLint,
7409            dstY1: GLint,
7410            mask: GLbitfield,
7411            filter: GLenum,
7412        ) {
7413            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7414            {
7415                trace!("calling gl.BlitFramebuffer({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X});", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
7416            }
7417            let out = call_atomic_ptr_10arg(
7418                "glBlitFramebuffer",
7419                &self.glBlitFramebuffer_p,
7420                srcX0,
7421                srcY0,
7422                srcX1,
7423                srcY1,
7424                dstX0,
7425                dstY0,
7426                dstX1,
7427                dstY1,
7428                mask,
7429                filter,
7430            );
7431            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7432            {
7433                self.automatic_glGetError("glBlitFramebuffer");
7434            }
7435            out
7436        }
7437        #[doc(hidden)]
7438        pub unsafe fn BlitFramebuffer_load_with_dyn(
7439            &self,
7440            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7441        ) -> bool {
7442            load_dyn_name_atomic_ptr(
7443                get_proc_address,
7444                b"glBlitFramebuffer\0",
7445                &self.glBlitFramebuffer_p,
7446            )
7447        }
7448        #[inline]
7449        #[doc(hidden)]
7450        pub fn BlitFramebuffer_is_loaded(&self) -> bool {
7451            !self.glBlitFramebuffer_p.load(RELAX).is_null()
7452        }
7453        /// [glBlitNamedFramebuffer](http://docs.gl/gl4/glBlitNamedFramebuffer)(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)
7454        /// * `mask` group: ClearBufferMask
7455        /// * `filter` group: BlitFramebufferFilter
7456        #[cfg_attr(feature = "inline", inline)]
7457        #[cfg_attr(feature = "inline_always", inline(always))]
7458        pub unsafe fn BlitNamedFramebuffer(
7459            &self,
7460            readFramebuffer: GLuint,
7461            drawFramebuffer: GLuint,
7462            srcX0: GLint,
7463            srcY0: GLint,
7464            srcX1: GLint,
7465            srcY1: GLint,
7466            dstX0: GLint,
7467            dstY0: GLint,
7468            dstX1: GLint,
7469            dstY1: GLint,
7470            mask: GLbitfield,
7471            filter: GLenum,
7472        ) {
7473            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7474            {
7475                trace!("calling gl.BlitNamedFramebuffer({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X});", readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
7476            }
7477            let out = call_atomic_ptr_12arg(
7478                "glBlitNamedFramebuffer",
7479                &self.glBlitNamedFramebuffer_p,
7480                readFramebuffer,
7481                drawFramebuffer,
7482                srcX0,
7483                srcY0,
7484                srcX1,
7485                srcY1,
7486                dstX0,
7487                dstY0,
7488                dstX1,
7489                dstY1,
7490                mask,
7491                filter,
7492            );
7493            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7494            {
7495                self.automatic_glGetError("glBlitNamedFramebuffer");
7496            }
7497            out
7498        }
7499        #[doc(hidden)]
7500        pub unsafe fn BlitNamedFramebuffer_load_with_dyn(
7501            &self,
7502            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7503        ) -> bool {
7504            load_dyn_name_atomic_ptr(
7505                get_proc_address,
7506                b"glBlitNamedFramebuffer\0",
7507                &self.glBlitNamedFramebuffer_p,
7508            )
7509        }
7510        #[inline]
7511        #[doc(hidden)]
7512        pub fn BlitNamedFramebuffer_is_loaded(&self) -> bool {
7513            !self.glBlitNamedFramebuffer_p.load(RELAX).is_null()
7514        }
7515        /// [glBufferData](http://docs.gl/gl4/glBufferData)(target, size, data, usage)
7516        /// * `target` group: BufferTargetARB
7517        /// * `size` group: BufferSize
7518        /// * `data` len: size
7519        /// * `usage` group: BufferUsageARB
7520        #[cfg_attr(feature = "inline", inline)]
7521        #[cfg_attr(feature = "inline_always", inline(always))]
7522        pub unsafe fn BufferData(
7523            &self,
7524            target: GLenum,
7525            size: GLsizeiptr,
7526            data: *const c_void,
7527            usage: GLenum,
7528        ) {
7529            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7530            {
7531                trace!(
7532                    "calling gl.BufferData({:#X}, {:?}, {:p}, {:#X});",
7533                    target,
7534                    size,
7535                    data,
7536                    usage
7537                );
7538            }
7539            let out = call_atomic_ptr_4arg(
7540                "glBufferData",
7541                &self.glBufferData_p,
7542                target,
7543                size,
7544                data,
7545                usage,
7546            );
7547            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7548            {
7549                self.automatic_glGetError("glBufferData");
7550            }
7551            out
7552        }
7553        #[doc(hidden)]
7554        pub unsafe fn BufferData_load_with_dyn(
7555            &self,
7556            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7557        ) -> bool {
7558            load_dyn_name_atomic_ptr(get_proc_address, b"glBufferData\0", &self.glBufferData_p)
7559        }
7560        #[inline]
7561        #[doc(hidden)]
7562        pub fn BufferData_is_loaded(&self) -> bool {
7563            !self.glBufferData_p.load(RELAX).is_null()
7564        }
7565        /// [glBufferStorage](http://docs.gl/gl4/glBufferStorage)(target, size, data, flags)
7566        /// * `target` group: BufferStorageTarget
7567        /// * `data` len: size
7568        /// * `flags` group: BufferStorageMask
7569        #[cfg_attr(feature = "inline", inline)]
7570        #[cfg_attr(feature = "inline_always", inline(always))]
7571        pub unsafe fn BufferStorage(
7572            &self,
7573            target: GLenum,
7574            size: GLsizeiptr,
7575            data: *const c_void,
7576            flags: GLbitfield,
7577        ) {
7578            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7579            {
7580                trace!(
7581                    "calling gl.BufferStorage({:#X}, {:?}, {:p}, {:?});",
7582                    target,
7583                    size,
7584                    data,
7585                    flags
7586                );
7587            }
7588            let out = call_atomic_ptr_4arg(
7589                "glBufferStorage",
7590                &self.glBufferStorage_p,
7591                target,
7592                size,
7593                data,
7594                flags,
7595            );
7596            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7597            {
7598                self.automatic_glGetError("glBufferStorage");
7599            }
7600            out
7601        }
7602        #[doc(hidden)]
7603        pub unsafe fn BufferStorage_load_with_dyn(
7604            &self,
7605            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7606        ) -> bool {
7607            load_dyn_name_atomic_ptr(
7608                get_proc_address,
7609                b"glBufferStorage\0",
7610                &self.glBufferStorage_p,
7611            )
7612        }
7613        #[inline]
7614        #[doc(hidden)]
7615        pub fn BufferStorage_is_loaded(&self) -> bool {
7616            !self.glBufferStorage_p.load(RELAX).is_null()
7617        }
7618        /// [glBufferStorageEXT](http://docs.gl/gl4/glBufferStorageEXT)(target, size, data, flags)
7619        /// * `target` group: BufferStorageTarget
7620        /// * `data` len: size
7621        /// * `flags` group: BufferStorageMask
7622        /// * alias of: [`glBufferStorage`]
7623        #[cfg_attr(feature = "inline", inline)]
7624        #[cfg_attr(feature = "inline_always", inline(always))]
7625        pub unsafe fn BufferStorageEXT(
7626            &self,
7627            target: GLenum,
7628            size: GLsizeiptr,
7629            data: *const c_void,
7630            flags: GLbitfield,
7631        ) {
7632            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7633            {
7634                trace!(
7635                    "calling gl.BufferStorageEXT({:#X}, {:?}, {:p}, {:?});",
7636                    target,
7637                    size,
7638                    data,
7639                    flags
7640                );
7641            }
7642            let out = call_atomic_ptr_4arg(
7643                "glBufferStorageEXT",
7644                &self.glBufferStorageEXT_p,
7645                target,
7646                size,
7647                data,
7648                flags,
7649            );
7650            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7651            {
7652                self.automatic_glGetError("glBufferStorageEXT");
7653            }
7654            out
7655        }
7656        #[doc(hidden)]
7657        pub unsafe fn BufferStorageEXT_load_with_dyn(
7658            &self,
7659            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7660        ) -> bool {
7661            load_dyn_name_atomic_ptr(
7662                get_proc_address,
7663                b"glBufferStorageEXT\0",
7664                &self.glBufferStorageEXT_p,
7665            )
7666        }
7667        #[inline]
7668        #[doc(hidden)]
7669        pub fn BufferStorageEXT_is_loaded(&self) -> bool {
7670            !self.glBufferStorageEXT_p.load(RELAX).is_null()
7671        }
7672        /// [glBufferSubData](http://docs.gl/gl4/glBufferSubData)(target, offset, size, data)
7673        /// * `target` group: BufferTargetARB
7674        /// * `offset` group: BufferOffset
7675        /// * `size` group: BufferSize
7676        /// * `data` len: size
7677        #[cfg_attr(feature = "inline", inline)]
7678        #[cfg_attr(feature = "inline_always", inline(always))]
7679        pub unsafe fn BufferSubData(
7680            &self,
7681            target: GLenum,
7682            offset: GLintptr,
7683            size: GLsizeiptr,
7684            data: *const c_void,
7685        ) {
7686            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7687            {
7688                trace!(
7689                    "calling gl.BufferSubData({:#X}, {:?}, {:?}, {:p});",
7690                    target,
7691                    offset,
7692                    size,
7693                    data
7694                );
7695            }
7696            let out = call_atomic_ptr_4arg(
7697                "glBufferSubData",
7698                &self.glBufferSubData_p,
7699                target,
7700                offset,
7701                size,
7702                data,
7703            );
7704            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7705            {
7706                self.automatic_glGetError("glBufferSubData");
7707            }
7708            out
7709        }
7710        #[doc(hidden)]
7711        pub unsafe fn BufferSubData_load_with_dyn(
7712            &self,
7713            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7714        ) -> bool {
7715            load_dyn_name_atomic_ptr(
7716                get_proc_address,
7717                b"glBufferSubData\0",
7718                &self.glBufferSubData_p,
7719            )
7720        }
7721        #[inline]
7722        #[doc(hidden)]
7723        pub fn BufferSubData_is_loaded(&self) -> bool {
7724            !self.glBufferSubData_p.load(RELAX).is_null()
7725        }
7726        /// [glCheckFramebufferStatus](http://docs.gl/gl4/glCheckFramebufferStatus)(target)
7727        /// * `target` group: FramebufferTarget
7728        /// * return value group: FramebufferStatus
7729        #[cfg_attr(feature = "inline", inline)]
7730        #[cfg_attr(feature = "inline_always", inline(always))]
7731        pub unsafe fn CheckFramebufferStatus(&self, target: GLenum) -> GLenum {
7732            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7733            {
7734                trace!("calling gl.CheckFramebufferStatus({:#X});", target);
7735            }
7736            let out = call_atomic_ptr_1arg(
7737                "glCheckFramebufferStatus",
7738                &self.glCheckFramebufferStatus_p,
7739                target,
7740            );
7741            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7742            {
7743                self.automatic_glGetError("glCheckFramebufferStatus");
7744            }
7745            out
7746        }
7747        #[doc(hidden)]
7748        pub unsafe fn CheckFramebufferStatus_load_with_dyn(
7749            &self,
7750            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7751        ) -> bool {
7752            load_dyn_name_atomic_ptr(
7753                get_proc_address,
7754                b"glCheckFramebufferStatus\0",
7755                &self.glCheckFramebufferStatus_p,
7756            )
7757        }
7758        #[inline]
7759        #[doc(hidden)]
7760        pub fn CheckFramebufferStatus_is_loaded(&self) -> bool {
7761            !self.glCheckFramebufferStatus_p.load(RELAX).is_null()
7762        }
7763        /// [glCheckNamedFramebufferStatus](http://docs.gl/gl4/glCheckNamedFramebufferStatus)(framebuffer, target)
7764        /// * `target` group: FramebufferTarget
7765        /// * return value group: FramebufferStatus
7766        #[cfg_attr(feature = "inline", inline)]
7767        #[cfg_attr(feature = "inline_always", inline(always))]
7768        pub unsafe fn CheckNamedFramebufferStatus(
7769            &self,
7770            framebuffer: GLuint,
7771            target: GLenum,
7772        ) -> GLenum {
7773            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7774            {
7775                trace!(
7776                    "calling gl.CheckNamedFramebufferStatus({:?}, {:#X});",
7777                    framebuffer,
7778                    target
7779                );
7780            }
7781            let out = call_atomic_ptr_2arg(
7782                "glCheckNamedFramebufferStatus",
7783                &self.glCheckNamedFramebufferStatus_p,
7784                framebuffer,
7785                target,
7786            );
7787            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7788            {
7789                self.automatic_glGetError("glCheckNamedFramebufferStatus");
7790            }
7791            out
7792        }
7793        #[doc(hidden)]
7794        pub unsafe fn CheckNamedFramebufferStatus_load_with_dyn(
7795            &self,
7796            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7797        ) -> bool {
7798            load_dyn_name_atomic_ptr(
7799                get_proc_address,
7800                b"glCheckNamedFramebufferStatus\0",
7801                &self.glCheckNamedFramebufferStatus_p,
7802            )
7803        }
7804        #[inline]
7805        #[doc(hidden)]
7806        pub fn CheckNamedFramebufferStatus_is_loaded(&self) -> bool {
7807            !self.glCheckNamedFramebufferStatus_p.load(RELAX).is_null()
7808        }
7809        /// [glClampColor](http://docs.gl/gl4/glClampColor)(target, clamp)
7810        /// * `target` group: ClampColorTargetARB
7811        /// * `clamp` group: ClampColorModeARB
7812        #[cfg_attr(feature = "inline", inline)]
7813        #[cfg_attr(feature = "inline_always", inline(always))]
7814        pub unsafe fn ClampColor(&self, target: GLenum, clamp: GLenum) {
7815            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7816            {
7817                trace!("calling gl.ClampColor({:#X}, {:#X});", target, clamp);
7818            }
7819            let out = call_atomic_ptr_2arg("glClampColor", &self.glClampColor_p, target, clamp);
7820            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7821            {
7822                self.automatic_glGetError("glClampColor");
7823            }
7824            out
7825        }
7826        #[doc(hidden)]
7827        pub unsafe fn ClampColor_load_with_dyn(
7828            &self,
7829            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7830        ) -> bool {
7831            load_dyn_name_atomic_ptr(get_proc_address, b"glClampColor\0", &self.glClampColor_p)
7832        }
7833        #[inline]
7834        #[doc(hidden)]
7835        pub fn ClampColor_is_loaded(&self) -> bool {
7836            !self.glClampColor_p.load(RELAX).is_null()
7837        }
7838        /// [glClear](http://docs.gl/gl4/glClear)(mask)
7839        /// * `mask` group: ClearBufferMask
7840        #[cfg_attr(feature = "inline", inline)]
7841        #[cfg_attr(feature = "inline_always", inline(always))]
7842        pub unsafe fn Clear(&self, mask: GLbitfield) {
7843            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7844            {
7845                trace!("calling gl.Clear({:?});", mask);
7846            }
7847            let out = call_atomic_ptr_1arg("glClear", &self.glClear_p, mask);
7848            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7849            {
7850                self.automatic_glGetError("glClear");
7851            }
7852            out
7853        }
7854        #[doc(hidden)]
7855        pub unsafe fn Clear_load_with_dyn(
7856            &self,
7857            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7858        ) -> bool {
7859            load_dyn_name_atomic_ptr(get_proc_address, b"glClear\0", &self.glClear_p)
7860        }
7861        #[inline]
7862        #[doc(hidden)]
7863        pub fn Clear_is_loaded(&self) -> bool {
7864            !self.glClear_p.load(RELAX).is_null()
7865        }
7866        /// [glClearBufferData](http://docs.gl/gl4/glClearBufferData)(target, internalformat, format, type_, data)
7867        /// * `target` group: BufferStorageTarget
7868        /// * `internalformat` group: InternalFormat
7869        /// * `format` group: PixelFormat
7870        /// * `type_` group: PixelType
7871        /// * `data` len: COMPSIZE(format,type)
7872        #[cfg_attr(feature = "inline", inline)]
7873        #[cfg_attr(feature = "inline_always", inline(always))]
7874        pub unsafe fn ClearBufferData(
7875            &self,
7876            target: GLenum,
7877            internalformat: GLenum,
7878            format: GLenum,
7879            type_: GLenum,
7880            data: *const c_void,
7881        ) {
7882            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7883            {
7884                trace!(
7885                    "calling gl.ClearBufferData({:#X}, {:#X}, {:#X}, {:#X}, {:p});",
7886                    target,
7887                    internalformat,
7888                    format,
7889                    type_,
7890                    data
7891                );
7892            }
7893            let out = call_atomic_ptr_5arg(
7894                "glClearBufferData",
7895                &self.glClearBufferData_p,
7896                target,
7897                internalformat,
7898                format,
7899                type_,
7900                data,
7901            );
7902            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7903            {
7904                self.automatic_glGetError("glClearBufferData");
7905            }
7906            out
7907        }
7908        #[doc(hidden)]
7909        pub unsafe fn ClearBufferData_load_with_dyn(
7910            &self,
7911            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7912        ) -> bool {
7913            load_dyn_name_atomic_ptr(
7914                get_proc_address,
7915                b"glClearBufferData\0",
7916                &self.glClearBufferData_p,
7917            )
7918        }
7919        #[inline]
7920        #[doc(hidden)]
7921        pub fn ClearBufferData_is_loaded(&self) -> bool {
7922            !self.glClearBufferData_p.load(RELAX).is_null()
7923        }
7924        /// [glClearBufferSubData](http://docs.gl/gl4/glClearBufferSubData)(target, internalformat, offset, size, format, type_, data)
7925        /// * `target` group: BufferTargetARB
7926        /// * `internalformat` group: InternalFormat
7927        /// * `offset` group: BufferOffset
7928        /// * `size` group: BufferSize
7929        /// * `format` group: PixelFormat
7930        /// * `type_` group: PixelType
7931        /// * `data` len: COMPSIZE(format,type)
7932        #[cfg_attr(feature = "inline", inline)]
7933        #[cfg_attr(feature = "inline_always", inline(always))]
7934        pub unsafe fn ClearBufferSubData(
7935            &self,
7936            target: GLenum,
7937            internalformat: GLenum,
7938            offset: GLintptr,
7939            size: GLsizeiptr,
7940            format: GLenum,
7941            type_: GLenum,
7942            data: *const c_void,
7943        ) {
7944            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7945            {
7946                trace!(
7947                    "calling gl.ClearBufferSubData({:#X}, {:#X}, {:?}, {:?}, {:#X}, {:#X}, {:p});",
7948                    target,
7949                    internalformat,
7950                    offset,
7951                    size,
7952                    format,
7953                    type_,
7954                    data
7955                );
7956            }
7957            let out = call_atomic_ptr_7arg(
7958                "glClearBufferSubData",
7959                &self.glClearBufferSubData_p,
7960                target,
7961                internalformat,
7962                offset,
7963                size,
7964                format,
7965                type_,
7966                data,
7967            );
7968            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7969            {
7970                self.automatic_glGetError("glClearBufferSubData");
7971            }
7972            out
7973        }
7974        #[doc(hidden)]
7975        pub unsafe fn ClearBufferSubData_load_with_dyn(
7976            &self,
7977            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7978        ) -> bool {
7979            load_dyn_name_atomic_ptr(
7980                get_proc_address,
7981                b"glClearBufferSubData\0",
7982                &self.glClearBufferSubData_p,
7983            )
7984        }
7985        #[inline]
7986        #[doc(hidden)]
7987        pub fn ClearBufferSubData_is_loaded(&self) -> bool {
7988            !self.glClearBufferSubData_p.load(RELAX).is_null()
7989        }
7990        /// [glClearBufferfi](http://docs.gl/gl4/glClearBuffer)(buffer, drawbuffer, depth, stencil)
7991        /// * `buffer` group: Buffer
7992        /// * `drawbuffer` group: DrawBufferName
7993        #[cfg_attr(feature = "inline", inline)]
7994        #[cfg_attr(feature = "inline_always", inline(always))]
7995        pub unsafe fn ClearBufferfi(
7996            &self,
7997            buffer: GLenum,
7998            drawbuffer: GLint,
7999            depth: GLfloat,
8000            stencil: GLint,
8001        ) {
8002            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8003            {
8004                trace!(
8005                    "calling gl.ClearBufferfi({:#X}, {:?}, {:?}, {:?});",
8006                    buffer,
8007                    drawbuffer,
8008                    depth,
8009                    stencil
8010                );
8011            }
8012            let out = call_atomic_ptr_4arg(
8013                "glClearBufferfi",
8014                &self.glClearBufferfi_p,
8015                buffer,
8016                drawbuffer,
8017                depth,
8018                stencil,
8019            );
8020            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8021            {
8022                self.automatic_glGetError("glClearBufferfi");
8023            }
8024            out
8025        }
8026        #[doc(hidden)]
8027        pub unsafe fn ClearBufferfi_load_with_dyn(
8028            &self,
8029            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8030        ) -> bool {
8031            load_dyn_name_atomic_ptr(
8032                get_proc_address,
8033                b"glClearBufferfi\0",
8034                &self.glClearBufferfi_p,
8035            )
8036        }
8037        #[inline]
8038        #[doc(hidden)]
8039        pub fn ClearBufferfi_is_loaded(&self) -> bool {
8040            !self.glClearBufferfi_p.load(RELAX).is_null()
8041        }
8042        /// [glClearBufferfv](http://docs.gl/gl4/glClearBuffer)(buffer, drawbuffer, value)
8043        /// * `buffer` group: Buffer
8044        /// * `drawbuffer` group: DrawBufferName
8045        /// * `value` len: COMPSIZE(buffer)
8046        #[cfg_attr(feature = "inline", inline)]
8047        #[cfg_attr(feature = "inline_always", inline(always))]
8048        pub unsafe fn ClearBufferfv(
8049            &self,
8050            buffer: GLenum,
8051            drawbuffer: GLint,
8052            value: *const GLfloat,
8053        ) {
8054            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8055            {
8056                trace!(
8057                    "calling gl.ClearBufferfv({:#X}, {:?}, {:p});",
8058                    buffer,
8059                    drawbuffer,
8060                    value
8061                );
8062            }
8063            let out = call_atomic_ptr_3arg(
8064                "glClearBufferfv",
8065                &self.glClearBufferfv_p,
8066                buffer,
8067                drawbuffer,
8068                value,
8069            );
8070            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8071            {
8072                self.automatic_glGetError("glClearBufferfv");
8073            }
8074            out
8075        }
8076        #[doc(hidden)]
8077        pub unsafe fn ClearBufferfv_load_with_dyn(
8078            &self,
8079            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8080        ) -> bool {
8081            load_dyn_name_atomic_ptr(
8082                get_proc_address,
8083                b"glClearBufferfv\0",
8084                &self.glClearBufferfv_p,
8085            )
8086        }
8087        #[inline]
8088        #[doc(hidden)]
8089        pub fn ClearBufferfv_is_loaded(&self) -> bool {
8090            !self.glClearBufferfv_p.load(RELAX).is_null()
8091        }
8092        /// [glClearBufferiv](http://docs.gl/gl4/glClearBuffer)(buffer, drawbuffer, value)
8093        /// * `buffer` group: Buffer
8094        /// * `drawbuffer` group: DrawBufferName
8095        /// * `value` len: COMPSIZE(buffer)
8096        #[cfg_attr(feature = "inline", inline)]
8097        #[cfg_attr(feature = "inline_always", inline(always))]
8098        pub unsafe fn ClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) {
8099            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8100            {
8101                trace!(
8102                    "calling gl.ClearBufferiv({:#X}, {:?}, {:p});",
8103                    buffer,
8104                    drawbuffer,
8105                    value
8106                );
8107            }
8108            let out = call_atomic_ptr_3arg(
8109                "glClearBufferiv",
8110                &self.glClearBufferiv_p,
8111                buffer,
8112                drawbuffer,
8113                value,
8114            );
8115            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8116            {
8117                self.automatic_glGetError("glClearBufferiv");
8118            }
8119            out
8120        }
8121        #[doc(hidden)]
8122        pub unsafe fn ClearBufferiv_load_with_dyn(
8123            &self,
8124            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8125        ) -> bool {
8126            load_dyn_name_atomic_ptr(
8127                get_proc_address,
8128                b"glClearBufferiv\0",
8129                &self.glClearBufferiv_p,
8130            )
8131        }
8132        #[inline]
8133        #[doc(hidden)]
8134        pub fn ClearBufferiv_is_loaded(&self) -> bool {
8135            !self.glClearBufferiv_p.load(RELAX).is_null()
8136        }
8137        /// [glClearBufferuiv](http://docs.gl/gl4/glClearBuffer)(buffer, drawbuffer, value)
8138        /// * `buffer` group: Buffer
8139        /// * `drawbuffer` group: DrawBufferName
8140        /// * `value` len: COMPSIZE(buffer)
8141        #[cfg_attr(feature = "inline", inline)]
8142        #[cfg_attr(feature = "inline_always", inline(always))]
8143        pub unsafe fn ClearBufferuiv(
8144            &self,
8145            buffer: GLenum,
8146            drawbuffer: GLint,
8147            value: *const GLuint,
8148        ) {
8149            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8150            {
8151                trace!(
8152                    "calling gl.ClearBufferuiv({:#X}, {:?}, {:p});",
8153                    buffer,
8154                    drawbuffer,
8155                    value
8156                );
8157            }
8158            let out = call_atomic_ptr_3arg(
8159                "glClearBufferuiv",
8160                &self.glClearBufferuiv_p,
8161                buffer,
8162                drawbuffer,
8163                value,
8164            );
8165            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8166            {
8167                self.automatic_glGetError("glClearBufferuiv");
8168            }
8169            out
8170        }
8171        #[doc(hidden)]
8172        pub unsafe fn ClearBufferuiv_load_with_dyn(
8173            &self,
8174            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8175        ) -> bool {
8176            load_dyn_name_atomic_ptr(
8177                get_proc_address,
8178                b"glClearBufferuiv\0",
8179                &self.glClearBufferuiv_p,
8180            )
8181        }
8182        #[inline]
8183        #[doc(hidden)]
8184        pub fn ClearBufferuiv_is_loaded(&self) -> bool {
8185            !self.glClearBufferuiv_p.load(RELAX).is_null()
8186        }
8187        /// [glClearColor](http://docs.gl/gl4/glClearColor)(red, green, blue, alpha)
8188        /// * `red` group: ColorF
8189        /// * `green` group: ColorF
8190        /// * `blue` group: ColorF
8191        /// * `alpha` group: ColorF
8192        #[cfg_attr(feature = "inline", inline)]
8193        #[cfg_attr(feature = "inline_always", inline(always))]
8194        pub unsafe fn ClearColor(
8195            &self,
8196            red: GLfloat,
8197            green: GLfloat,
8198            blue: GLfloat,
8199            alpha: GLfloat,
8200        ) {
8201            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8202            {
8203                trace!(
8204                    "calling gl.ClearColor({:?}, {:?}, {:?}, {:?});",
8205                    red,
8206                    green,
8207                    blue,
8208                    alpha
8209                );
8210            }
8211            let out = call_atomic_ptr_4arg(
8212                "glClearColor",
8213                &self.glClearColor_p,
8214                red,
8215                green,
8216                blue,
8217                alpha,
8218            );
8219            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8220            {
8221                self.automatic_glGetError("glClearColor");
8222            }
8223            out
8224        }
8225        #[doc(hidden)]
8226        pub unsafe fn ClearColor_load_with_dyn(
8227            &self,
8228            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8229        ) -> bool {
8230            load_dyn_name_atomic_ptr(get_proc_address, b"glClearColor\0", &self.glClearColor_p)
8231        }
8232        #[inline]
8233        #[doc(hidden)]
8234        pub fn ClearColor_is_loaded(&self) -> bool {
8235            !self.glClearColor_p.load(RELAX).is_null()
8236        }
8237        /// [glClearDepth](http://docs.gl/gl4/glClearDepth)(depth)
8238        #[cfg_attr(feature = "inline", inline)]
8239        #[cfg_attr(feature = "inline_always", inline(always))]
8240        pub unsafe fn ClearDepth(&self, depth: GLdouble) {
8241            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8242            {
8243                trace!("calling gl.ClearDepth({:?});", depth);
8244            }
8245            let out = call_atomic_ptr_1arg("glClearDepth", &self.glClearDepth_p, depth);
8246            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8247            {
8248                self.automatic_glGetError("glClearDepth");
8249            }
8250            out
8251        }
8252        #[doc(hidden)]
8253        pub unsafe fn ClearDepth_load_with_dyn(
8254            &self,
8255            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8256        ) -> bool {
8257            load_dyn_name_atomic_ptr(get_proc_address, b"glClearDepth\0", &self.glClearDepth_p)
8258        }
8259        #[inline]
8260        #[doc(hidden)]
8261        pub fn ClearDepth_is_loaded(&self) -> bool {
8262            !self.glClearDepth_p.load(RELAX).is_null()
8263        }
8264        /// [glClearDepthf](http://docs.gl/gl4/glClearDepth)(d)
8265        #[cfg_attr(feature = "inline", inline)]
8266        #[cfg_attr(feature = "inline_always", inline(always))]
8267        pub unsafe fn ClearDepthf(&self, d: GLfloat) {
8268            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8269            {
8270                trace!("calling gl.ClearDepthf({:?});", d);
8271            }
8272            let out = call_atomic_ptr_1arg("glClearDepthf", &self.glClearDepthf_p, d);
8273            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8274            {
8275                self.automatic_glGetError("glClearDepthf");
8276            }
8277            out
8278        }
8279        #[doc(hidden)]
8280        pub unsafe fn ClearDepthf_load_with_dyn(
8281            &self,
8282            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8283        ) -> bool {
8284            load_dyn_name_atomic_ptr(get_proc_address, b"glClearDepthf\0", &self.glClearDepthf_p)
8285        }
8286        #[inline]
8287        #[doc(hidden)]
8288        pub fn ClearDepthf_is_loaded(&self) -> bool {
8289            !self.glClearDepthf_p.load(RELAX).is_null()
8290        }
8291        /// [glClearNamedBufferData](http://docs.gl/gl4/glClearNamedBufferData)(buffer, internalformat, format, type_, data)
8292        /// * `internalformat` group: InternalFormat
8293        /// * `format` group: PixelFormat
8294        /// * `type_` group: PixelType
8295        #[cfg_attr(feature = "inline", inline)]
8296        #[cfg_attr(feature = "inline_always", inline(always))]
8297        pub unsafe fn ClearNamedBufferData(
8298            &self,
8299            buffer: GLuint,
8300            internalformat: GLenum,
8301            format: GLenum,
8302            type_: GLenum,
8303            data: *const c_void,
8304        ) {
8305            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8306            {
8307                trace!(
8308                    "calling gl.ClearNamedBufferData({:?}, {:#X}, {:#X}, {:#X}, {:p});",
8309                    buffer,
8310                    internalformat,
8311                    format,
8312                    type_,
8313                    data
8314                );
8315            }
8316            let out = call_atomic_ptr_5arg(
8317                "glClearNamedBufferData",
8318                &self.glClearNamedBufferData_p,
8319                buffer,
8320                internalformat,
8321                format,
8322                type_,
8323                data,
8324            );
8325            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8326            {
8327                self.automatic_glGetError("glClearNamedBufferData");
8328            }
8329            out
8330        }
8331        #[doc(hidden)]
8332        pub unsafe fn ClearNamedBufferData_load_with_dyn(
8333            &self,
8334            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8335        ) -> bool {
8336            load_dyn_name_atomic_ptr(
8337                get_proc_address,
8338                b"glClearNamedBufferData\0",
8339                &self.glClearNamedBufferData_p,
8340            )
8341        }
8342        #[inline]
8343        #[doc(hidden)]
8344        pub fn ClearNamedBufferData_is_loaded(&self) -> bool {
8345            !self.glClearNamedBufferData_p.load(RELAX).is_null()
8346        }
8347        /// [glClearNamedBufferSubData](http://docs.gl/gl4/glClearNamedBufferSubData)(buffer, internalformat, offset, size, format, type_, data)
8348        /// * `internalformat` group: InternalFormat
8349        /// * `size` group: BufferSize
8350        /// * `format` group: PixelFormat
8351        /// * `type_` group: PixelType
8352        #[cfg_attr(feature = "inline", inline)]
8353        #[cfg_attr(feature = "inline_always", inline(always))]
8354        pub unsafe fn ClearNamedBufferSubData(
8355            &self,
8356            buffer: GLuint,
8357            internalformat: GLenum,
8358            offset: GLintptr,
8359            size: GLsizeiptr,
8360            format: GLenum,
8361            type_: GLenum,
8362            data: *const c_void,
8363        ) {
8364            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8365            {
8366                trace!("calling gl.ClearNamedBufferSubData({:?}, {:#X}, {:?}, {:?}, {:#X}, {:#X}, {:p});", buffer, internalformat, offset, size, format, type_, data);
8367            }
8368            let out = call_atomic_ptr_7arg(
8369                "glClearNamedBufferSubData",
8370                &self.glClearNamedBufferSubData_p,
8371                buffer,
8372                internalformat,
8373                offset,
8374                size,
8375                format,
8376                type_,
8377                data,
8378            );
8379            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8380            {
8381                self.automatic_glGetError("glClearNamedBufferSubData");
8382            }
8383            out
8384        }
8385        #[doc(hidden)]
8386        pub unsafe fn ClearNamedBufferSubData_load_with_dyn(
8387            &self,
8388            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8389        ) -> bool {
8390            load_dyn_name_atomic_ptr(
8391                get_proc_address,
8392                b"glClearNamedBufferSubData\0",
8393                &self.glClearNamedBufferSubData_p,
8394            )
8395        }
8396        #[inline]
8397        #[doc(hidden)]
8398        pub fn ClearNamedBufferSubData_is_loaded(&self) -> bool {
8399            !self.glClearNamedBufferSubData_p.load(RELAX).is_null()
8400        }
8401        /// [glClearNamedFramebufferfi](http://docs.gl/gl4/glClearNamedFramebuffer)(framebuffer, buffer, drawbuffer, depth, stencil)
8402        /// * `buffer` group: Buffer
8403        #[cfg_attr(feature = "inline", inline)]
8404        #[cfg_attr(feature = "inline_always", inline(always))]
8405        pub unsafe fn ClearNamedFramebufferfi(
8406            &self,
8407            framebuffer: GLuint,
8408            buffer: GLenum,
8409            drawbuffer: GLint,
8410            depth: GLfloat,
8411            stencil: GLint,
8412        ) {
8413            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8414            {
8415                trace!(
8416                    "calling gl.ClearNamedFramebufferfi({:?}, {:#X}, {:?}, {:?}, {:?});",
8417                    framebuffer,
8418                    buffer,
8419                    drawbuffer,
8420                    depth,
8421                    stencil
8422                );
8423            }
8424            let out = call_atomic_ptr_5arg(
8425                "glClearNamedFramebufferfi",
8426                &self.glClearNamedFramebufferfi_p,
8427                framebuffer,
8428                buffer,
8429                drawbuffer,
8430                depth,
8431                stencil,
8432            );
8433            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8434            {
8435                self.automatic_glGetError("glClearNamedFramebufferfi");
8436            }
8437            out
8438        }
8439        #[doc(hidden)]
8440        pub unsafe fn ClearNamedFramebufferfi_load_with_dyn(
8441            &self,
8442            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8443        ) -> bool {
8444            load_dyn_name_atomic_ptr(
8445                get_proc_address,
8446                b"glClearNamedFramebufferfi\0",
8447                &self.glClearNamedFramebufferfi_p,
8448            )
8449        }
8450        #[inline]
8451        #[doc(hidden)]
8452        pub fn ClearNamedFramebufferfi_is_loaded(&self) -> bool {
8453            !self.glClearNamedFramebufferfi_p.load(RELAX).is_null()
8454        }
8455        /// [glClearNamedFramebufferfv](http://docs.gl/gl4/glClearNamedFramebuffer)(framebuffer, buffer, drawbuffer, value)
8456        /// * `buffer` group: Buffer
8457        #[cfg_attr(feature = "inline", inline)]
8458        #[cfg_attr(feature = "inline_always", inline(always))]
8459        pub unsafe fn ClearNamedFramebufferfv(
8460            &self,
8461            framebuffer: GLuint,
8462            buffer: GLenum,
8463            drawbuffer: GLint,
8464            value: *const GLfloat,
8465        ) {
8466            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8467            {
8468                trace!(
8469                    "calling gl.ClearNamedFramebufferfv({:?}, {:#X}, {:?}, {:p});",
8470                    framebuffer,
8471                    buffer,
8472                    drawbuffer,
8473                    value
8474                );
8475            }
8476            let out = call_atomic_ptr_4arg(
8477                "glClearNamedFramebufferfv",
8478                &self.glClearNamedFramebufferfv_p,
8479                framebuffer,
8480                buffer,
8481                drawbuffer,
8482                value,
8483            );
8484            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8485            {
8486                self.automatic_glGetError("glClearNamedFramebufferfv");
8487            }
8488            out
8489        }
8490        #[doc(hidden)]
8491        pub unsafe fn ClearNamedFramebufferfv_load_with_dyn(
8492            &self,
8493            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8494        ) -> bool {
8495            load_dyn_name_atomic_ptr(
8496                get_proc_address,
8497                b"glClearNamedFramebufferfv\0",
8498                &self.glClearNamedFramebufferfv_p,
8499            )
8500        }
8501        #[inline]
8502        #[doc(hidden)]
8503        pub fn ClearNamedFramebufferfv_is_loaded(&self) -> bool {
8504            !self.glClearNamedFramebufferfv_p.load(RELAX).is_null()
8505        }
8506        /// [glClearNamedFramebufferiv](http://docs.gl/gl4/glClearNamedFramebuffer)(framebuffer, buffer, drawbuffer, value)
8507        /// * `buffer` group: Buffer
8508        #[cfg_attr(feature = "inline", inline)]
8509        #[cfg_attr(feature = "inline_always", inline(always))]
8510        pub unsafe fn ClearNamedFramebufferiv(
8511            &self,
8512            framebuffer: GLuint,
8513            buffer: GLenum,
8514            drawbuffer: GLint,
8515            value: *const GLint,
8516        ) {
8517            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8518            {
8519                trace!(
8520                    "calling gl.ClearNamedFramebufferiv({:?}, {:#X}, {:?}, {:p});",
8521                    framebuffer,
8522                    buffer,
8523                    drawbuffer,
8524                    value
8525                );
8526            }
8527            let out = call_atomic_ptr_4arg(
8528                "glClearNamedFramebufferiv",
8529                &self.glClearNamedFramebufferiv_p,
8530                framebuffer,
8531                buffer,
8532                drawbuffer,
8533                value,
8534            );
8535            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8536            {
8537                self.automatic_glGetError("glClearNamedFramebufferiv");
8538            }
8539            out
8540        }
8541        #[doc(hidden)]
8542        pub unsafe fn ClearNamedFramebufferiv_load_with_dyn(
8543            &self,
8544            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8545        ) -> bool {
8546            load_dyn_name_atomic_ptr(
8547                get_proc_address,
8548                b"glClearNamedFramebufferiv\0",
8549                &self.glClearNamedFramebufferiv_p,
8550            )
8551        }
8552        #[inline]
8553        #[doc(hidden)]
8554        pub fn ClearNamedFramebufferiv_is_loaded(&self) -> bool {
8555            !self.glClearNamedFramebufferiv_p.load(RELAX).is_null()
8556        }
8557        /// [glClearNamedFramebufferuiv](http://docs.gl/gl4/glClearNamedFramebuffer)(framebuffer, buffer, drawbuffer, value)
8558        /// * `buffer` group: Buffer
8559        #[cfg_attr(feature = "inline", inline)]
8560        #[cfg_attr(feature = "inline_always", inline(always))]
8561        pub unsafe fn ClearNamedFramebufferuiv(
8562            &self,
8563            framebuffer: GLuint,
8564            buffer: GLenum,
8565            drawbuffer: GLint,
8566            value: *const GLuint,
8567        ) {
8568            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8569            {
8570                trace!(
8571                    "calling gl.ClearNamedFramebufferuiv({:?}, {:#X}, {:?}, {:p});",
8572                    framebuffer,
8573                    buffer,
8574                    drawbuffer,
8575                    value
8576                );
8577            }
8578            let out = call_atomic_ptr_4arg(
8579                "glClearNamedFramebufferuiv",
8580                &self.glClearNamedFramebufferuiv_p,
8581                framebuffer,
8582                buffer,
8583                drawbuffer,
8584                value,
8585            );
8586            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8587            {
8588                self.automatic_glGetError("glClearNamedFramebufferuiv");
8589            }
8590            out
8591        }
8592        #[doc(hidden)]
8593        pub unsafe fn ClearNamedFramebufferuiv_load_with_dyn(
8594            &self,
8595            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8596        ) -> bool {
8597            load_dyn_name_atomic_ptr(
8598                get_proc_address,
8599                b"glClearNamedFramebufferuiv\0",
8600                &self.glClearNamedFramebufferuiv_p,
8601            )
8602        }
8603        #[inline]
8604        #[doc(hidden)]
8605        pub fn ClearNamedFramebufferuiv_is_loaded(&self) -> bool {
8606            !self.glClearNamedFramebufferuiv_p.load(RELAX).is_null()
8607        }
8608        /// [glClearStencil](http://docs.gl/gl4/glClearStencil)(s)
8609        /// * `s` group: StencilValue
8610        #[cfg_attr(feature = "inline", inline)]
8611        #[cfg_attr(feature = "inline_always", inline(always))]
8612        pub unsafe fn ClearStencil(&self, s: GLint) {
8613            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8614            {
8615                trace!("calling gl.ClearStencil({:?});", s);
8616            }
8617            let out = call_atomic_ptr_1arg("glClearStencil", &self.glClearStencil_p, s);
8618            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8619            {
8620                self.automatic_glGetError("glClearStencil");
8621            }
8622            out
8623        }
8624        #[doc(hidden)]
8625        pub unsafe fn ClearStencil_load_with_dyn(
8626            &self,
8627            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8628        ) -> bool {
8629            load_dyn_name_atomic_ptr(
8630                get_proc_address,
8631                b"glClearStencil\0",
8632                &self.glClearStencil_p,
8633            )
8634        }
8635        #[inline]
8636        #[doc(hidden)]
8637        pub fn ClearStencil_is_loaded(&self) -> bool {
8638            !self.glClearStencil_p.load(RELAX).is_null()
8639        }
8640        /// [glClearTexImage](http://docs.gl/gl4/glClearTexImage)(texture, level, format, type_, data)
8641        /// * `format` group: PixelFormat
8642        /// * `type_` group: PixelType
8643        /// * `data` len: COMPSIZE(format,type)
8644        #[cfg_attr(feature = "inline", inline)]
8645        #[cfg_attr(feature = "inline_always", inline(always))]
8646        pub unsafe fn ClearTexImage(
8647            &self,
8648            texture: GLuint,
8649            level: GLint,
8650            format: GLenum,
8651            type_: GLenum,
8652            data: *const c_void,
8653        ) {
8654            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8655            {
8656                trace!(
8657                    "calling gl.ClearTexImage({:?}, {:?}, {:#X}, {:#X}, {:p});",
8658                    texture,
8659                    level,
8660                    format,
8661                    type_,
8662                    data
8663                );
8664            }
8665            let out = call_atomic_ptr_5arg(
8666                "glClearTexImage",
8667                &self.glClearTexImage_p,
8668                texture,
8669                level,
8670                format,
8671                type_,
8672                data,
8673            );
8674            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8675            {
8676                self.automatic_glGetError("glClearTexImage");
8677            }
8678            out
8679        }
8680        #[doc(hidden)]
8681        pub unsafe fn ClearTexImage_load_with_dyn(
8682            &self,
8683            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8684        ) -> bool {
8685            load_dyn_name_atomic_ptr(
8686                get_proc_address,
8687                b"glClearTexImage\0",
8688                &self.glClearTexImage_p,
8689            )
8690        }
8691        #[inline]
8692        #[doc(hidden)]
8693        pub fn ClearTexImage_is_loaded(&self) -> bool {
8694            !self.glClearTexImage_p.load(RELAX).is_null()
8695        }
8696        /// [glClearTexSubImage](http://docs.gl/gl4/glClearTexSubImage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, data)
8697        /// * `format` group: PixelFormat
8698        /// * `type_` group: PixelType
8699        /// * `data` len: COMPSIZE(format,type)
8700        #[cfg_attr(feature = "inline", inline)]
8701        #[cfg_attr(feature = "inline_always", inline(always))]
8702        pub unsafe fn ClearTexSubImage(
8703            &self,
8704            texture: GLuint,
8705            level: GLint,
8706            xoffset: GLint,
8707            yoffset: GLint,
8708            zoffset: GLint,
8709            width: GLsizei,
8710            height: GLsizei,
8711            depth: GLsizei,
8712            format: GLenum,
8713            type_: GLenum,
8714            data: *const c_void,
8715        ) {
8716            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8717            {
8718                trace!("calling gl.ClearTexSubImage({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, data);
8719            }
8720            let out = call_atomic_ptr_11arg(
8721                "glClearTexSubImage",
8722                &self.glClearTexSubImage_p,
8723                texture,
8724                level,
8725                xoffset,
8726                yoffset,
8727                zoffset,
8728                width,
8729                height,
8730                depth,
8731                format,
8732                type_,
8733                data,
8734            );
8735            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8736            {
8737                self.automatic_glGetError("glClearTexSubImage");
8738            }
8739            out
8740        }
8741        #[doc(hidden)]
8742        pub unsafe fn ClearTexSubImage_load_with_dyn(
8743            &self,
8744            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8745        ) -> bool {
8746            load_dyn_name_atomic_ptr(
8747                get_proc_address,
8748                b"glClearTexSubImage\0",
8749                &self.glClearTexSubImage_p,
8750            )
8751        }
8752        #[inline]
8753        #[doc(hidden)]
8754        pub fn ClearTexSubImage_is_loaded(&self) -> bool {
8755            !self.glClearTexSubImage_p.load(RELAX).is_null()
8756        }
8757        /// [glClientWaitSync](http://docs.gl/gl4/glClientWaitSync)(sync, flags, timeout)
8758        /// * `sync` group: sync
8759        /// * `flags` group: SyncObjectMask
8760        /// * return value group: SyncStatus
8761        #[cfg_attr(feature = "inline", inline)]
8762        #[cfg_attr(feature = "inline_always", inline(always))]
8763        pub unsafe fn ClientWaitSync(
8764            &self,
8765            sync: GLsync,
8766            flags: GLbitfield,
8767            timeout: GLuint64,
8768        ) -> GLenum {
8769            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8770            {
8771                trace!(
8772                    "calling gl.ClientWaitSync({:p}, {:?}, {:?});",
8773                    sync,
8774                    flags,
8775                    timeout
8776                );
8777            }
8778            let out = call_atomic_ptr_3arg(
8779                "glClientWaitSync",
8780                &self.glClientWaitSync_p,
8781                sync,
8782                flags,
8783                timeout,
8784            );
8785            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8786            {
8787                self.automatic_glGetError("glClientWaitSync");
8788            }
8789            out
8790        }
8791        #[doc(hidden)]
8792        pub unsafe fn ClientWaitSync_load_with_dyn(
8793            &self,
8794            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8795        ) -> bool {
8796            load_dyn_name_atomic_ptr(
8797                get_proc_address,
8798                b"glClientWaitSync\0",
8799                &self.glClientWaitSync_p,
8800            )
8801        }
8802        #[inline]
8803        #[doc(hidden)]
8804        pub fn ClientWaitSync_is_loaded(&self) -> bool {
8805            !self.glClientWaitSync_p.load(RELAX).is_null()
8806        }
8807        /// [glClipControl](http://docs.gl/gl4/glClipControl)(origin, depth)
8808        /// * `origin` group: ClipControlOrigin
8809        /// * `depth` group: ClipControlDepth
8810        #[cfg_attr(feature = "inline", inline)]
8811        #[cfg_attr(feature = "inline_always", inline(always))]
8812        pub unsafe fn ClipControl(&self, origin: GLenum, depth: GLenum) {
8813            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8814            {
8815                trace!("calling gl.ClipControl({:#X}, {:#X});", origin, depth);
8816            }
8817            let out = call_atomic_ptr_2arg("glClipControl", &self.glClipControl_p, origin, depth);
8818            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8819            {
8820                self.automatic_glGetError("glClipControl");
8821            }
8822            out
8823        }
8824        #[doc(hidden)]
8825        pub unsafe fn ClipControl_load_with_dyn(
8826            &self,
8827            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8828        ) -> bool {
8829            load_dyn_name_atomic_ptr(get_proc_address, b"glClipControl\0", &self.glClipControl_p)
8830        }
8831        #[inline]
8832        #[doc(hidden)]
8833        pub fn ClipControl_is_loaded(&self) -> bool {
8834            !self.glClipControl_p.load(RELAX).is_null()
8835        }
8836        /// [glColorMask](http://docs.gl/gl4/glColorMask)(red, green, blue, alpha)
8837        #[cfg_attr(feature = "inline", inline)]
8838        #[cfg_attr(feature = "inline_always", inline(always))]
8839        pub unsafe fn ColorMask(
8840            &self,
8841            red: GLboolean,
8842            green: GLboolean,
8843            blue: GLboolean,
8844            alpha: GLboolean,
8845        ) {
8846            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8847            {
8848                trace!(
8849                    "calling gl.ColorMask({:?}, {:?}, {:?}, {:?});",
8850                    red,
8851                    green,
8852                    blue,
8853                    alpha
8854                );
8855            }
8856            let out =
8857                call_atomic_ptr_4arg("glColorMask", &self.glColorMask_p, red, green, blue, alpha);
8858            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8859            {
8860                self.automatic_glGetError("glColorMask");
8861            }
8862            out
8863        }
8864        #[doc(hidden)]
8865        pub unsafe fn ColorMask_load_with_dyn(
8866            &self,
8867            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8868        ) -> bool {
8869            load_dyn_name_atomic_ptr(get_proc_address, b"glColorMask\0", &self.glColorMask_p)
8870        }
8871        #[inline]
8872        #[doc(hidden)]
8873        pub fn ColorMask_is_loaded(&self) -> bool {
8874            !self.glColorMask_p.load(RELAX).is_null()
8875        }
8876        /// [glColorMaskIndexedEXT](http://docs.gl/gl4/glColorMaskIndexedEXT)(index, r, g, b, a)
8877        /// * alias of: [`glColorMaski`]
8878        #[cfg_attr(feature = "inline", inline)]
8879        #[cfg_attr(feature = "inline_always", inline(always))]
8880        pub unsafe fn ColorMaskIndexedEXT(
8881            &self,
8882            index: GLuint,
8883            r: GLboolean,
8884            g: GLboolean,
8885            b: GLboolean,
8886            a: GLboolean,
8887        ) {
8888            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8889            {
8890                trace!(
8891                    "calling gl.ColorMaskIndexedEXT({:?}, {:?}, {:?}, {:?}, {:?});",
8892                    index,
8893                    r,
8894                    g,
8895                    b,
8896                    a
8897                );
8898            }
8899            let out = call_atomic_ptr_5arg(
8900                "glColorMaskIndexedEXT",
8901                &self.glColorMaskIndexedEXT_p,
8902                index,
8903                r,
8904                g,
8905                b,
8906                a,
8907            );
8908            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8909            {
8910                self.automatic_glGetError("glColorMaskIndexedEXT");
8911            }
8912            out
8913        }
8914        #[doc(hidden)]
8915        pub unsafe fn ColorMaskIndexedEXT_load_with_dyn(
8916            &self,
8917            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8918        ) -> bool {
8919            load_dyn_name_atomic_ptr(
8920                get_proc_address,
8921                b"glColorMaskIndexedEXT\0",
8922                &self.glColorMaskIndexedEXT_p,
8923            )
8924        }
8925        #[inline]
8926        #[doc(hidden)]
8927        pub fn ColorMaskIndexedEXT_is_loaded(&self) -> bool {
8928            !self.glColorMaskIndexedEXT_p.load(RELAX).is_null()
8929        }
8930        /// [glColorMaski](http://docs.gl/gl4/glColorMask)(index, r, g, b, a)
8931        #[cfg_attr(feature = "inline", inline)]
8932        #[cfg_attr(feature = "inline_always", inline(always))]
8933        pub unsafe fn ColorMaski(
8934            &self,
8935            index: GLuint,
8936            r: GLboolean,
8937            g: GLboolean,
8938            b: GLboolean,
8939            a: GLboolean,
8940        ) {
8941            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8942            {
8943                trace!(
8944                    "calling gl.ColorMaski({:?}, {:?}, {:?}, {:?}, {:?});",
8945                    index,
8946                    r,
8947                    g,
8948                    b,
8949                    a
8950                );
8951            }
8952            let out = call_atomic_ptr_5arg("glColorMaski", &self.glColorMaski_p, index, r, g, b, a);
8953            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8954            {
8955                self.automatic_glGetError("glColorMaski");
8956            }
8957            out
8958        }
8959        #[doc(hidden)]
8960        pub unsafe fn ColorMaski_load_with_dyn(
8961            &self,
8962            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8963        ) -> bool {
8964            load_dyn_name_atomic_ptr(get_proc_address, b"glColorMaski\0", &self.glColorMaski_p)
8965        }
8966        #[inline]
8967        #[doc(hidden)]
8968        pub fn ColorMaski_is_loaded(&self) -> bool {
8969            !self.glColorMaski_p.load(RELAX).is_null()
8970        }
8971        /// [glCompileShader](http://docs.gl/gl4/glCompileShader)(shader)
8972        #[cfg_attr(feature = "inline", inline)]
8973        #[cfg_attr(feature = "inline_always", inline(always))]
8974        pub unsafe fn CompileShader(&self, shader: GLuint) {
8975            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8976            {
8977                trace!("calling gl.CompileShader({:?});", shader);
8978            }
8979            let out = call_atomic_ptr_1arg("glCompileShader", &self.glCompileShader_p, shader);
8980            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8981            {
8982                self.automatic_glGetError("glCompileShader");
8983            }
8984            out
8985        }
8986        #[doc(hidden)]
8987        pub unsafe fn CompileShader_load_with_dyn(
8988            &self,
8989            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8990        ) -> bool {
8991            load_dyn_name_atomic_ptr(
8992                get_proc_address,
8993                b"glCompileShader\0",
8994                &self.glCompileShader_p,
8995            )
8996        }
8997        #[inline]
8998        #[doc(hidden)]
8999        pub fn CompileShader_is_loaded(&self) -> bool {
9000            !self.glCompileShader_p.load(RELAX).is_null()
9001        }
9002        /// [glCompressedTexImage1D](http://docs.gl/gl4/glCompressedTexImage1D)(target, level, internalformat, width, border, imageSize, data)
9003        /// * `target` group: TextureTarget
9004        /// * `level` group: CheckedInt32
9005        /// * `internalformat` group: InternalFormat
9006        /// * `border` group: CheckedInt32
9007        /// * `data` group: CompressedTextureARB
9008        /// * `data` len: imageSize
9009        #[cfg_attr(feature = "inline", inline)]
9010        #[cfg_attr(feature = "inline_always", inline(always))]
9011        pub unsafe fn CompressedTexImage1D(
9012            &self,
9013            target: GLenum,
9014            level: GLint,
9015            internalformat: GLenum,
9016            width: GLsizei,
9017            border: GLint,
9018            imageSize: GLsizei,
9019            data: *const c_void,
9020        ) {
9021            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9022            {
9023                trace!(
9024                    "calling gl.CompressedTexImage1D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:p});",
9025                    target,
9026                    level,
9027                    internalformat,
9028                    width,
9029                    border,
9030                    imageSize,
9031                    data
9032                );
9033            }
9034            let out = call_atomic_ptr_7arg(
9035                "glCompressedTexImage1D",
9036                &self.glCompressedTexImage1D_p,
9037                target,
9038                level,
9039                internalformat,
9040                width,
9041                border,
9042                imageSize,
9043                data,
9044            );
9045            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9046            {
9047                self.automatic_glGetError("glCompressedTexImage1D");
9048            }
9049            out
9050        }
9051        #[doc(hidden)]
9052        pub unsafe fn CompressedTexImage1D_load_with_dyn(
9053            &self,
9054            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9055        ) -> bool {
9056            load_dyn_name_atomic_ptr(
9057                get_proc_address,
9058                b"glCompressedTexImage1D\0",
9059                &self.glCompressedTexImage1D_p,
9060            )
9061        }
9062        #[inline]
9063        #[doc(hidden)]
9064        pub fn CompressedTexImage1D_is_loaded(&self) -> bool {
9065            !self.glCompressedTexImage1D_p.load(RELAX).is_null()
9066        }
9067        /// [glCompressedTexImage2D](http://docs.gl/gl4/glCompressedTexImage2D)(target, level, internalformat, width, height, border, imageSize, data)
9068        /// * `target` group: TextureTarget
9069        /// * `level` group: CheckedInt32
9070        /// * `internalformat` group: InternalFormat
9071        /// * `border` group: CheckedInt32
9072        /// * `data` group: CompressedTextureARB
9073        /// * `data` len: imageSize
9074        #[cfg_attr(feature = "inline", inline)]
9075        #[cfg_attr(feature = "inline_always", inline(always))]
9076        pub unsafe fn CompressedTexImage2D(
9077            &self,
9078            target: GLenum,
9079            level: GLint,
9080            internalformat: GLenum,
9081            width: GLsizei,
9082            height: GLsizei,
9083            border: GLint,
9084            imageSize: GLsizei,
9085            data: *const c_void,
9086        ) {
9087            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9088            {
9089                trace!("calling gl.CompressedTexImage2D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?}, {:p});", target, level, internalformat, width, height, border, imageSize, data);
9090            }
9091            let out = call_atomic_ptr_8arg(
9092                "glCompressedTexImage2D",
9093                &self.glCompressedTexImage2D_p,
9094                target,
9095                level,
9096                internalformat,
9097                width,
9098                height,
9099                border,
9100                imageSize,
9101                data,
9102            );
9103            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9104            {
9105                self.automatic_glGetError("glCompressedTexImage2D");
9106            }
9107            out
9108        }
9109        #[doc(hidden)]
9110        pub unsafe fn CompressedTexImage2D_load_with_dyn(
9111            &self,
9112            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9113        ) -> bool {
9114            load_dyn_name_atomic_ptr(
9115                get_proc_address,
9116                b"glCompressedTexImage2D\0",
9117                &self.glCompressedTexImage2D_p,
9118            )
9119        }
9120        #[inline]
9121        #[doc(hidden)]
9122        pub fn CompressedTexImage2D_is_loaded(&self) -> bool {
9123            !self.glCompressedTexImage2D_p.load(RELAX).is_null()
9124        }
9125        /// [glCompressedTexImage3D](http://docs.gl/gl4/glCompressedTexImage3D)(target, level, internalformat, width, height, depth, border, imageSize, data)
9126        /// * `target` group: TextureTarget
9127        /// * `level` group: CheckedInt32
9128        /// * `internalformat` group: InternalFormat
9129        /// * `border` group: CheckedInt32
9130        /// * `data` group: CompressedTextureARB
9131        /// * `data` len: imageSize
9132        #[cfg_attr(feature = "inline", inline)]
9133        #[cfg_attr(feature = "inline_always", inline(always))]
9134        pub unsafe fn CompressedTexImage3D(
9135            &self,
9136            target: GLenum,
9137            level: GLint,
9138            internalformat: GLenum,
9139            width: GLsizei,
9140            height: GLsizei,
9141            depth: GLsizei,
9142            border: GLint,
9143            imageSize: GLsizei,
9144            data: *const c_void,
9145        ) {
9146            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9147            {
9148                trace!("calling gl.CompressedTexImage3D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:p});", target, level, internalformat, width, height, depth, border, imageSize, data);
9149            }
9150            let out = call_atomic_ptr_9arg(
9151                "glCompressedTexImage3D",
9152                &self.glCompressedTexImage3D_p,
9153                target,
9154                level,
9155                internalformat,
9156                width,
9157                height,
9158                depth,
9159                border,
9160                imageSize,
9161                data,
9162            );
9163            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9164            {
9165                self.automatic_glGetError("glCompressedTexImage3D");
9166            }
9167            out
9168        }
9169        #[doc(hidden)]
9170        pub unsafe fn CompressedTexImage3D_load_with_dyn(
9171            &self,
9172            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9173        ) -> bool {
9174            load_dyn_name_atomic_ptr(
9175                get_proc_address,
9176                b"glCompressedTexImage3D\0",
9177                &self.glCompressedTexImage3D_p,
9178            )
9179        }
9180        #[inline]
9181        #[doc(hidden)]
9182        pub fn CompressedTexImage3D_is_loaded(&self) -> bool {
9183            !self.glCompressedTexImage3D_p.load(RELAX).is_null()
9184        }
9185        /// [glCompressedTexSubImage1D](http://docs.gl/gl4/glCompressedTexSubImage1D)(target, level, xoffset, width, format, imageSize, data)
9186        /// * `target` group: TextureTarget
9187        /// * `level` group: CheckedInt32
9188        /// * `xoffset` group: CheckedInt32
9189        /// * `format` group: PixelFormat
9190        /// * `data` group: CompressedTextureARB
9191        /// * `data` len: imageSize
9192        #[cfg_attr(feature = "inline", inline)]
9193        #[cfg_attr(feature = "inline_always", inline(always))]
9194        pub unsafe fn CompressedTexSubImage1D(
9195            &self,
9196            target: GLenum,
9197            level: GLint,
9198            xoffset: GLint,
9199            width: GLsizei,
9200            format: GLenum,
9201            imageSize: GLsizei,
9202            data: *const c_void,
9203        ) {
9204            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9205            {
9206                trace!("calling gl.CompressedTexSubImage1D({:#X}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", target, level, xoffset, width, format, imageSize, data);
9207            }
9208            let out = call_atomic_ptr_7arg(
9209                "glCompressedTexSubImage1D",
9210                &self.glCompressedTexSubImage1D_p,
9211                target,
9212                level,
9213                xoffset,
9214                width,
9215                format,
9216                imageSize,
9217                data,
9218            );
9219            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9220            {
9221                self.automatic_glGetError("glCompressedTexSubImage1D");
9222            }
9223            out
9224        }
9225        #[doc(hidden)]
9226        pub unsafe fn CompressedTexSubImage1D_load_with_dyn(
9227            &self,
9228            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9229        ) -> bool {
9230            load_dyn_name_atomic_ptr(
9231                get_proc_address,
9232                b"glCompressedTexSubImage1D\0",
9233                &self.glCompressedTexSubImage1D_p,
9234            )
9235        }
9236        #[inline]
9237        #[doc(hidden)]
9238        pub fn CompressedTexSubImage1D_is_loaded(&self) -> bool {
9239            !self.glCompressedTexSubImage1D_p.load(RELAX).is_null()
9240        }
9241        /// [glCompressedTexSubImage2D](http://docs.gl/gl4/glCompressedTexSubImage2D)(target, level, xoffset, yoffset, width, height, format, imageSize, data)
9242        /// * `target` group: TextureTarget
9243        /// * `level` group: CheckedInt32
9244        /// * `xoffset` group: CheckedInt32
9245        /// * `yoffset` group: CheckedInt32
9246        /// * `format` group: PixelFormat
9247        /// * `data` group: CompressedTextureARB
9248        /// * `data` len: imageSize
9249        #[cfg_attr(feature = "inline", inline)]
9250        #[cfg_attr(feature = "inline_always", inline(always))]
9251        pub unsafe fn CompressedTexSubImage2D(
9252            &self,
9253            target: GLenum,
9254            level: GLint,
9255            xoffset: GLint,
9256            yoffset: GLint,
9257            width: GLsizei,
9258            height: GLsizei,
9259            format: GLenum,
9260            imageSize: GLsizei,
9261            data: *const c_void,
9262        ) {
9263            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9264            {
9265                trace!("calling gl.CompressedTexSubImage2D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", target, level, xoffset, yoffset, width, height, format, imageSize, data);
9266            }
9267            let out = call_atomic_ptr_9arg(
9268                "glCompressedTexSubImage2D",
9269                &self.glCompressedTexSubImage2D_p,
9270                target,
9271                level,
9272                xoffset,
9273                yoffset,
9274                width,
9275                height,
9276                format,
9277                imageSize,
9278                data,
9279            );
9280            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9281            {
9282                self.automatic_glGetError("glCompressedTexSubImage2D");
9283            }
9284            out
9285        }
9286        #[doc(hidden)]
9287        pub unsafe fn CompressedTexSubImage2D_load_with_dyn(
9288            &self,
9289            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9290        ) -> bool {
9291            load_dyn_name_atomic_ptr(
9292                get_proc_address,
9293                b"glCompressedTexSubImage2D\0",
9294                &self.glCompressedTexSubImage2D_p,
9295            )
9296        }
9297        #[inline]
9298        #[doc(hidden)]
9299        pub fn CompressedTexSubImage2D_is_loaded(&self) -> bool {
9300            !self.glCompressedTexSubImage2D_p.load(RELAX).is_null()
9301        }
9302        /// [glCompressedTexSubImage3D](http://docs.gl/gl4/glCompressedTexSubImage3D)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)
9303        /// * `target` group: TextureTarget
9304        /// * `level` group: CheckedInt32
9305        /// * `xoffset` group: CheckedInt32
9306        /// * `yoffset` group: CheckedInt32
9307        /// * `zoffset` group: CheckedInt32
9308        /// * `format` group: PixelFormat
9309        /// * `data` group: CompressedTextureARB
9310        /// * `data` len: imageSize
9311        #[cfg_attr(feature = "inline", inline)]
9312        #[cfg_attr(feature = "inline_always", inline(always))]
9313        pub unsafe fn CompressedTexSubImage3D(
9314            &self,
9315            target: GLenum,
9316            level: GLint,
9317            xoffset: GLint,
9318            yoffset: GLint,
9319            zoffset: GLint,
9320            width: GLsizei,
9321            height: GLsizei,
9322            depth: GLsizei,
9323            format: GLenum,
9324            imageSize: GLsizei,
9325            data: *const c_void,
9326        ) {
9327            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9328            {
9329                trace!("calling gl.CompressedTexSubImage3D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
9330            }
9331            let out = call_atomic_ptr_11arg(
9332                "glCompressedTexSubImage3D",
9333                &self.glCompressedTexSubImage3D_p,
9334                target,
9335                level,
9336                xoffset,
9337                yoffset,
9338                zoffset,
9339                width,
9340                height,
9341                depth,
9342                format,
9343                imageSize,
9344                data,
9345            );
9346            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9347            {
9348                self.automatic_glGetError("glCompressedTexSubImage3D");
9349            }
9350            out
9351        }
9352        #[doc(hidden)]
9353        pub unsafe fn CompressedTexSubImage3D_load_with_dyn(
9354            &self,
9355            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9356        ) -> bool {
9357            load_dyn_name_atomic_ptr(
9358                get_proc_address,
9359                b"glCompressedTexSubImage3D\0",
9360                &self.glCompressedTexSubImage3D_p,
9361            )
9362        }
9363        #[inline]
9364        #[doc(hidden)]
9365        pub fn CompressedTexSubImage3D_is_loaded(&self) -> bool {
9366            !self.glCompressedTexSubImage3D_p.load(RELAX).is_null()
9367        }
9368        /// [glCompressedTextureSubImage1D](http://docs.gl/gl4/glCompressedTextureSubImage1D)(texture, level, xoffset, width, format, imageSize, data)
9369        /// * `format` group: PixelFormat
9370        #[cfg_attr(feature = "inline", inline)]
9371        #[cfg_attr(feature = "inline_always", inline(always))]
9372        pub unsafe fn CompressedTextureSubImage1D(
9373            &self,
9374            texture: GLuint,
9375            level: GLint,
9376            xoffset: GLint,
9377            width: GLsizei,
9378            format: GLenum,
9379            imageSize: GLsizei,
9380            data: *const c_void,
9381        ) {
9382            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9383            {
9384                trace!("calling gl.CompressedTextureSubImage1D({:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", texture, level, xoffset, width, format, imageSize, data);
9385            }
9386            let out = call_atomic_ptr_7arg(
9387                "glCompressedTextureSubImage1D",
9388                &self.glCompressedTextureSubImage1D_p,
9389                texture,
9390                level,
9391                xoffset,
9392                width,
9393                format,
9394                imageSize,
9395                data,
9396            );
9397            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9398            {
9399                self.automatic_glGetError("glCompressedTextureSubImage1D");
9400            }
9401            out
9402        }
9403        #[doc(hidden)]
9404        pub unsafe fn CompressedTextureSubImage1D_load_with_dyn(
9405            &self,
9406            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9407        ) -> bool {
9408            load_dyn_name_atomic_ptr(
9409                get_proc_address,
9410                b"glCompressedTextureSubImage1D\0",
9411                &self.glCompressedTextureSubImage1D_p,
9412            )
9413        }
9414        #[inline]
9415        #[doc(hidden)]
9416        pub fn CompressedTextureSubImage1D_is_loaded(&self) -> bool {
9417            !self.glCompressedTextureSubImage1D_p.load(RELAX).is_null()
9418        }
9419        /// [glCompressedTextureSubImage2D](http://docs.gl/gl4/glCompressedTextureSubImage2D)(texture, level, xoffset, yoffset, width, height, format, imageSize, data)
9420        /// * `format` group: PixelFormat
9421        #[cfg_attr(feature = "inline", inline)]
9422        #[cfg_attr(feature = "inline_always", inline(always))]
9423        pub unsafe fn CompressedTextureSubImage2D(
9424            &self,
9425            texture: GLuint,
9426            level: GLint,
9427            xoffset: GLint,
9428            yoffset: GLint,
9429            width: GLsizei,
9430            height: GLsizei,
9431            format: GLenum,
9432            imageSize: GLsizei,
9433            data: *const c_void,
9434        ) {
9435            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9436            {
9437                trace!("calling gl.CompressedTextureSubImage2D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", texture, level, xoffset, yoffset, width, height, format, imageSize, data);
9438            }
9439            let out = call_atomic_ptr_9arg(
9440                "glCompressedTextureSubImage2D",
9441                &self.glCompressedTextureSubImage2D_p,
9442                texture,
9443                level,
9444                xoffset,
9445                yoffset,
9446                width,
9447                height,
9448                format,
9449                imageSize,
9450                data,
9451            );
9452            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9453            {
9454                self.automatic_glGetError("glCompressedTextureSubImage2D");
9455            }
9456            out
9457        }
9458        #[doc(hidden)]
9459        pub unsafe fn CompressedTextureSubImage2D_load_with_dyn(
9460            &self,
9461            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9462        ) -> bool {
9463            load_dyn_name_atomic_ptr(
9464                get_proc_address,
9465                b"glCompressedTextureSubImage2D\0",
9466                &self.glCompressedTextureSubImage2D_p,
9467            )
9468        }
9469        #[inline]
9470        #[doc(hidden)]
9471        pub fn CompressedTextureSubImage2D_is_loaded(&self) -> bool {
9472            !self.glCompressedTextureSubImage2D_p.load(RELAX).is_null()
9473        }
9474        /// [glCompressedTextureSubImage3D](http://docs.gl/gl4/glCompressedTextureSubImage3D)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)
9475        /// * `format` group: PixelFormat
9476        #[cfg_attr(feature = "inline", inline)]
9477        #[cfg_attr(feature = "inline_always", inline(always))]
9478        pub unsafe fn CompressedTextureSubImage3D(
9479            &self,
9480            texture: GLuint,
9481            level: GLint,
9482            xoffset: GLint,
9483            yoffset: GLint,
9484            zoffset: GLint,
9485            width: GLsizei,
9486            height: GLsizei,
9487            depth: GLsizei,
9488            format: GLenum,
9489            imageSize: GLsizei,
9490            data: *const c_void,
9491        ) {
9492            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9493            {
9494                trace!("calling gl.CompressedTextureSubImage3D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
9495            }
9496            let out = call_atomic_ptr_11arg(
9497                "glCompressedTextureSubImage3D",
9498                &self.glCompressedTextureSubImage3D_p,
9499                texture,
9500                level,
9501                xoffset,
9502                yoffset,
9503                zoffset,
9504                width,
9505                height,
9506                depth,
9507                format,
9508                imageSize,
9509                data,
9510            );
9511            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9512            {
9513                self.automatic_glGetError("glCompressedTextureSubImage3D");
9514            }
9515            out
9516        }
9517        #[doc(hidden)]
9518        pub unsafe fn CompressedTextureSubImage3D_load_with_dyn(
9519            &self,
9520            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9521        ) -> bool {
9522            load_dyn_name_atomic_ptr(
9523                get_proc_address,
9524                b"glCompressedTextureSubImage3D\0",
9525                &self.glCompressedTextureSubImage3D_p,
9526            )
9527        }
9528        #[inline]
9529        #[doc(hidden)]
9530        pub fn CompressedTextureSubImage3D_is_loaded(&self) -> bool {
9531            !self.glCompressedTextureSubImage3D_p.load(RELAX).is_null()
9532        }
9533        /// [glCopyBufferSubData](http://docs.gl/gl4/glCopyBufferSubData)(readTarget, writeTarget, readOffset, writeOffset, size)
9534        /// * `readTarget` group: CopyBufferSubDataTarget
9535        /// * `writeTarget` group: CopyBufferSubDataTarget
9536        /// * `readOffset` group: BufferOffset
9537        /// * `writeOffset` group: BufferOffset
9538        /// * `size` group: BufferSize
9539        #[cfg_attr(feature = "inline", inline)]
9540        #[cfg_attr(feature = "inline_always", inline(always))]
9541        pub unsafe fn CopyBufferSubData(
9542            &self,
9543            readTarget: GLenum,
9544            writeTarget: GLenum,
9545            readOffset: GLintptr,
9546            writeOffset: GLintptr,
9547            size: GLsizeiptr,
9548        ) {
9549            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9550            {
9551                trace!(
9552                    "calling gl.CopyBufferSubData({:#X}, {:#X}, {:?}, {:?}, {:?});",
9553                    readTarget,
9554                    writeTarget,
9555                    readOffset,
9556                    writeOffset,
9557                    size
9558                );
9559            }
9560            let out = call_atomic_ptr_5arg(
9561                "glCopyBufferSubData",
9562                &self.glCopyBufferSubData_p,
9563                readTarget,
9564                writeTarget,
9565                readOffset,
9566                writeOffset,
9567                size,
9568            );
9569            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9570            {
9571                self.automatic_glGetError("glCopyBufferSubData");
9572            }
9573            out
9574        }
9575        #[doc(hidden)]
9576        pub unsafe fn CopyBufferSubData_load_with_dyn(
9577            &self,
9578            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9579        ) -> bool {
9580            load_dyn_name_atomic_ptr(
9581                get_proc_address,
9582                b"glCopyBufferSubData\0",
9583                &self.glCopyBufferSubData_p,
9584            )
9585        }
9586        #[inline]
9587        #[doc(hidden)]
9588        pub fn CopyBufferSubData_is_loaded(&self) -> bool {
9589            !self.glCopyBufferSubData_p.load(RELAX).is_null()
9590        }
9591        /// [glCopyBufferSubDataNV](http://docs.gl/gl4/glCopyBufferSubDataNV)(readTarget, writeTarget, readOffset, writeOffset, size)
9592        /// * `readTarget` group: CopyBufferSubDataTarget
9593        /// * `writeTarget` group: CopyBufferSubDataTarget
9594        /// * `readOffset` group: BufferOffset
9595        /// * `writeOffset` group: BufferOffset
9596        /// * `size` group: BufferSize
9597        /// * alias of: [`glCopyBufferSubData`]
9598        #[cfg_attr(feature = "inline", inline)]
9599        #[cfg_attr(feature = "inline_always", inline(always))]
9600        pub unsafe fn CopyBufferSubDataNV(
9601            &self,
9602            readTarget: GLenum,
9603            writeTarget: GLenum,
9604            readOffset: GLintptr,
9605            writeOffset: GLintptr,
9606            size: GLsizeiptr,
9607        ) {
9608            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9609            {
9610                trace!(
9611                    "calling gl.CopyBufferSubDataNV({:#X}, {:#X}, {:?}, {:?}, {:?});",
9612                    readTarget,
9613                    writeTarget,
9614                    readOffset,
9615                    writeOffset,
9616                    size
9617                );
9618            }
9619            let out = call_atomic_ptr_5arg(
9620                "glCopyBufferSubDataNV",
9621                &self.glCopyBufferSubDataNV_p,
9622                readTarget,
9623                writeTarget,
9624                readOffset,
9625                writeOffset,
9626                size,
9627            );
9628            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9629            {
9630                self.automatic_glGetError("glCopyBufferSubDataNV");
9631            }
9632            out
9633        }
9634        #[doc(hidden)]
9635        pub unsafe fn CopyBufferSubDataNV_load_with_dyn(
9636            &self,
9637            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9638        ) -> bool {
9639            load_dyn_name_atomic_ptr(
9640                get_proc_address,
9641                b"glCopyBufferSubDataNV\0",
9642                &self.glCopyBufferSubDataNV_p,
9643            )
9644        }
9645        #[inline]
9646        #[doc(hidden)]
9647        pub fn CopyBufferSubDataNV_is_loaded(&self) -> bool {
9648            !self.glCopyBufferSubDataNV_p.load(RELAX).is_null()
9649        }
9650        /// [glCopyImageSubData](http://docs.gl/gl4/glCopyImageSubData)(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth)
9651        /// * `srcTarget` group: CopyImageSubDataTarget
9652        /// * `dstTarget` group: CopyImageSubDataTarget
9653        #[cfg_attr(feature = "inline", inline)]
9654        #[cfg_attr(feature = "inline_always", inline(always))]
9655        pub unsafe fn CopyImageSubData(
9656            &self,
9657            srcName: GLuint,
9658            srcTarget: GLenum,
9659            srcLevel: GLint,
9660            srcX: GLint,
9661            srcY: GLint,
9662            srcZ: GLint,
9663            dstName: GLuint,
9664            dstTarget: GLenum,
9665            dstLevel: GLint,
9666            dstX: GLint,
9667            dstY: GLint,
9668            dstZ: GLint,
9669            srcWidth: GLsizei,
9670            srcHeight: GLsizei,
9671            srcDepth: GLsizei,
9672        ) {
9673            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9674            {
9675                trace!("calling gl.CopyImageSubData({:?}, {:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
9676            }
9677            let out = call_atomic_ptr_15arg(
9678                "glCopyImageSubData",
9679                &self.glCopyImageSubData_p,
9680                srcName,
9681                srcTarget,
9682                srcLevel,
9683                srcX,
9684                srcY,
9685                srcZ,
9686                dstName,
9687                dstTarget,
9688                dstLevel,
9689                dstX,
9690                dstY,
9691                dstZ,
9692                srcWidth,
9693                srcHeight,
9694                srcDepth,
9695            );
9696            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9697            {
9698                self.automatic_glGetError("glCopyImageSubData");
9699            }
9700            out
9701        }
9702        #[doc(hidden)]
9703        pub unsafe fn CopyImageSubData_load_with_dyn(
9704            &self,
9705            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9706        ) -> bool {
9707            load_dyn_name_atomic_ptr(
9708                get_proc_address,
9709                b"glCopyImageSubData\0",
9710                &self.glCopyImageSubData_p,
9711            )
9712        }
9713        #[inline]
9714        #[doc(hidden)]
9715        pub fn CopyImageSubData_is_loaded(&self) -> bool {
9716            !self.glCopyImageSubData_p.load(RELAX).is_null()
9717        }
9718        /// [glCopyNamedBufferSubData](http://docs.gl/gl4/glCopyNamedBufferSubData)(readBuffer, writeBuffer, readOffset, writeOffset, size)
9719        /// * `size` group: BufferSize
9720        #[cfg_attr(feature = "inline", inline)]
9721        #[cfg_attr(feature = "inline_always", inline(always))]
9722        pub unsafe fn CopyNamedBufferSubData(
9723            &self,
9724            readBuffer: GLuint,
9725            writeBuffer: GLuint,
9726            readOffset: GLintptr,
9727            writeOffset: GLintptr,
9728            size: GLsizeiptr,
9729        ) {
9730            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9731            {
9732                trace!(
9733                    "calling gl.CopyNamedBufferSubData({:?}, {:?}, {:?}, {:?}, {:?});",
9734                    readBuffer,
9735                    writeBuffer,
9736                    readOffset,
9737                    writeOffset,
9738                    size
9739                );
9740            }
9741            let out = call_atomic_ptr_5arg(
9742                "glCopyNamedBufferSubData",
9743                &self.glCopyNamedBufferSubData_p,
9744                readBuffer,
9745                writeBuffer,
9746                readOffset,
9747                writeOffset,
9748                size,
9749            );
9750            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9751            {
9752                self.automatic_glGetError("glCopyNamedBufferSubData");
9753            }
9754            out
9755        }
9756        #[doc(hidden)]
9757        pub unsafe fn CopyNamedBufferSubData_load_with_dyn(
9758            &self,
9759            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9760        ) -> bool {
9761            load_dyn_name_atomic_ptr(
9762                get_proc_address,
9763                b"glCopyNamedBufferSubData\0",
9764                &self.glCopyNamedBufferSubData_p,
9765            )
9766        }
9767        #[inline]
9768        #[doc(hidden)]
9769        pub fn CopyNamedBufferSubData_is_loaded(&self) -> bool {
9770            !self.glCopyNamedBufferSubData_p.load(RELAX).is_null()
9771        }
9772        /// [glCopyTexImage1D](http://docs.gl/gl4/glCopyTexImage1D)(target, level, internalformat, x, y, width, border)
9773        /// * `target` group: TextureTarget
9774        /// * `level` group: CheckedInt32
9775        /// * `internalformat` group: InternalFormat
9776        /// * `x` group: WinCoord
9777        /// * `y` group: WinCoord
9778        /// * `border` group: CheckedInt32
9779        #[cfg_attr(feature = "inline", inline)]
9780        #[cfg_attr(feature = "inline_always", inline(always))]
9781        pub unsafe fn CopyTexImage1D(
9782            &self,
9783            target: GLenum,
9784            level: GLint,
9785            internalformat: GLenum,
9786            x: GLint,
9787            y: GLint,
9788            width: GLsizei,
9789            border: GLint,
9790        ) {
9791            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9792            {
9793                trace!(
9794                    "calling gl.CopyTexImage1D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?});",
9795                    target,
9796                    level,
9797                    internalformat,
9798                    x,
9799                    y,
9800                    width,
9801                    border
9802                );
9803            }
9804            let out = call_atomic_ptr_7arg(
9805                "glCopyTexImage1D",
9806                &self.glCopyTexImage1D_p,
9807                target,
9808                level,
9809                internalformat,
9810                x,
9811                y,
9812                width,
9813                border,
9814            );
9815            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9816            {
9817                self.automatic_glGetError("glCopyTexImage1D");
9818            }
9819            out
9820        }
9821        #[doc(hidden)]
9822        pub unsafe fn CopyTexImage1D_load_with_dyn(
9823            &self,
9824            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9825        ) -> bool {
9826            load_dyn_name_atomic_ptr(
9827                get_proc_address,
9828                b"glCopyTexImage1D\0",
9829                &self.glCopyTexImage1D_p,
9830            )
9831        }
9832        #[inline]
9833        #[doc(hidden)]
9834        pub fn CopyTexImage1D_is_loaded(&self) -> bool {
9835            !self.glCopyTexImage1D_p.load(RELAX).is_null()
9836        }
9837        /// [glCopyTexImage2D](http://docs.gl/gl4/glCopyTexImage2D)(target, level, internalformat, x, y, width, height, border)
9838        /// * `target` group: TextureTarget
9839        /// * `level` group: CheckedInt32
9840        /// * `internalformat` group: InternalFormat
9841        /// * `x` group: WinCoord
9842        /// * `y` group: WinCoord
9843        /// * `border` group: CheckedInt32
9844        #[cfg_attr(feature = "inline", inline)]
9845        #[cfg_attr(feature = "inline_always", inline(always))]
9846        pub unsafe fn CopyTexImage2D(
9847            &self,
9848            target: GLenum,
9849            level: GLint,
9850            internalformat: GLenum,
9851            x: GLint,
9852            y: GLint,
9853            width: GLsizei,
9854            height: GLsizei,
9855            border: GLint,
9856        ) {
9857            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9858            {
9859                trace!(
9860                    "calling gl.CopyTexImage2D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?}, {:?});",
9861                    target,
9862                    level,
9863                    internalformat,
9864                    x,
9865                    y,
9866                    width,
9867                    height,
9868                    border
9869                );
9870            }
9871            let out = call_atomic_ptr_8arg(
9872                "glCopyTexImage2D",
9873                &self.glCopyTexImage2D_p,
9874                target,
9875                level,
9876                internalformat,
9877                x,
9878                y,
9879                width,
9880                height,
9881                border,
9882            );
9883            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9884            {
9885                self.automatic_glGetError("glCopyTexImage2D");
9886            }
9887            out
9888        }
9889        #[doc(hidden)]
9890        pub unsafe fn CopyTexImage2D_load_with_dyn(
9891            &self,
9892            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9893        ) -> bool {
9894            load_dyn_name_atomic_ptr(
9895                get_proc_address,
9896                b"glCopyTexImage2D\0",
9897                &self.glCopyTexImage2D_p,
9898            )
9899        }
9900        #[inline]
9901        #[doc(hidden)]
9902        pub fn CopyTexImage2D_is_loaded(&self) -> bool {
9903            !self.glCopyTexImage2D_p.load(RELAX).is_null()
9904        }
9905        /// [glCopyTexSubImage1D](http://docs.gl/gl4/glCopyTexSubImage1D)(target, level, xoffset, x, y, width)
9906        /// * `target` group: TextureTarget
9907        /// * `level` group: CheckedInt32
9908        /// * `xoffset` group: CheckedInt32
9909        /// * `x` group: WinCoord
9910        /// * `y` group: WinCoord
9911        #[cfg_attr(feature = "inline", inline)]
9912        #[cfg_attr(feature = "inline_always", inline(always))]
9913        pub unsafe fn CopyTexSubImage1D(
9914            &self,
9915            target: GLenum,
9916            level: GLint,
9917            xoffset: GLint,
9918            x: GLint,
9919            y: GLint,
9920            width: GLsizei,
9921        ) {
9922            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9923            {
9924                trace!(
9925                    "calling gl.CopyTexSubImage1D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?});",
9926                    target,
9927                    level,
9928                    xoffset,
9929                    x,
9930                    y,
9931                    width
9932                );
9933            }
9934            let out = call_atomic_ptr_6arg(
9935                "glCopyTexSubImage1D",
9936                &self.glCopyTexSubImage1D_p,
9937                target,
9938                level,
9939                xoffset,
9940                x,
9941                y,
9942                width,
9943            );
9944            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9945            {
9946                self.automatic_glGetError("glCopyTexSubImage1D");
9947            }
9948            out
9949        }
9950        #[doc(hidden)]
9951        pub unsafe fn CopyTexSubImage1D_load_with_dyn(
9952            &self,
9953            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9954        ) -> bool {
9955            load_dyn_name_atomic_ptr(
9956                get_proc_address,
9957                b"glCopyTexSubImage1D\0",
9958                &self.glCopyTexSubImage1D_p,
9959            )
9960        }
9961        #[inline]
9962        #[doc(hidden)]
9963        pub fn CopyTexSubImage1D_is_loaded(&self) -> bool {
9964            !self.glCopyTexSubImage1D_p.load(RELAX).is_null()
9965        }
9966        /// [glCopyTexSubImage2D](http://docs.gl/gl4/glCopyTexSubImage2D)(target, level, xoffset, yoffset, x, y, width, height)
9967        /// * `target` group: TextureTarget
9968        /// * `level` group: CheckedInt32
9969        /// * `xoffset` group: CheckedInt32
9970        /// * `yoffset` group: CheckedInt32
9971        /// * `x` group: WinCoord
9972        /// * `y` group: WinCoord
9973        #[cfg_attr(feature = "inline", inline)]
9974        #[cfg_attr(feature = "inline_always", inline(always))]
9975        pub unsafe fn CopyTexSubImage2D(
9976            &self,
9977            target: GLenum,
9978            level: GLint,
9979            xoffset: GLint,
9980            yoffset: GLint,
9981            x: GLint,
9982            y: GLint,
9983            width: GLsizei,
9984            height: GLsizei,
9985        ) {
9986            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9987            {
9988                trace!("calling gl.CopyTexSubImage2D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", target, level, xoffset, yoffset, x, y, width, height);
9989            }
9990            let out = call_atomic_ptr_8arg(
9991                "glCopyTexSubImage2D",
9992                &self.glCopyTexSubImage2D_p,
9993                target,
9994                level,
9995                xoffset,
9996                yoffset,
9997                x,
9998                y,
9999                width,
10000                height,
10001            );
10002            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10003            {
10004                self.automatic_glGetError("glCopyTexSubImage2D");
10005            }
10006            out
10007        }
10008        #[doc(hidden)]
10009        pub unsafe fn CopyTexSubImage2D_load_with_dyn(
10010            &self,
10011            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10012        ) -> bool {
10013            load_dyn_name_atomic_ptr(
10014                get_proc_address,
10015                b"glCopyTexSubImage2D\0",
10016                &self.glCopyTexSubImage2D_p,
10017            )
10018        }
10019        #[inline]
10020        #[doc(hidden)]
10021        pub fn CopyTexSubImage2D_is_loaded(&self) -> bool {
10022            !self.glCopyTexSubImage2D_p.load(RELAX).is_null()
10023        }
10024        /// [glCopyTexSubImage3D](http://docs.gl/gl4/glCopyTexSubImage3D)(target, level, xoffset, yoffset, zoffset, x, y, width, height)
10025        /// * `target` group: TextureTarget
10026        /// * `level` group: CheckedInt32
10027        /// * `xoffset` group: CheckedInt32
10028        /// * `yoffset` group: CheckedInt32
10029        /// * `zoffset` group: CheckedInt32
10030        /// * `x` group: WinCoord
10031        /// * `y` group: WinCoord
10032        #[cfg_attr(feature = "inline", inline)]
10033        #[cfg_attr(feature = "inline_always", inline(always))]
10034        pub unsafe fn CopyTexSubImage3D(
10035            &self,
10036            target: GLenum,
10037            level: GLint,
10038            xoffset: GLint,
10039            yoffset: GLint,
10040            zoffset: GLint,
10041            x: GLint,
10042            y: GLint,
10043            width: GLsizei,
10044            height: GLsizei,
10045        ) {
10046            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10047            {
10048                trace!("calling gl.CopyTexSubImage3D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", target, level, xoffset, yoffset, zoffset, x, y, width, height);
10049            }
10050            let out = call_atomic_ptr_9arg(
10051                "glCopyTexSubImage3D",
10052                &self.glCopyTexSubImage3D_p,
10053                target,
10054                level,
10055                xoffset,
10056                yoffset,
10057                zoffset,
10058                x,
10059                y,
10060                width,
10061                height,
10062            );
10063            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10064            {
10065                self.automatic_glGetError("glCopyTexSubImage3D");
10066            }
10067            out
10068        }
10069        #[doc(hidden)]
10070        pub unsafe fn CopyTexSubImage3D_load_with_dyn(
10071            &self,
10072            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10073        ) -> bool {
10074            load_dyn_name_atomic_ptr(
10075                get_proc_address,
10076                b"glCopyTexSubImage3D\0",
10077                &self.glCopyTexSubImage3D_p,
10078            )
10079        }
10080        #[inline]
10081        #[doc(hidden)]
10082        pub fn CopyTexSubImage3D_is_loaded(&self) -> bool {
10083            !self.glCopyTexSubImage3D_p.load(RELAX).is_null()
10084        }
10085        /// [glCopyTextureSubImage1D](http://docs.gl/gl4/glCopyTextureSubImage1D)(texture, level, xoffset, x, y, width)
10086        #[cfg_attr(feature = "inline", inline)]
10087        #[cfg_attr(feature = "inline_always", inline(always))]
10088        pub unsafe fn CopyTextureSubImage1D(
10089            &self,
10090            texture: GLuint,
10091            level: GLint,
10092            xoffset: GLint,
10093            x: GLint,
10094            y: GLint,
10095            width: GLsizei,
10096        ) {
10097            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10098            {
10099                trace!(
10100                    "calling gl.CopyTextureSubImage1D({:?}, {:?}, {:?}, {:?}, {:?}, {:?});",
10101                    texture,
10102                    level,
10103                    xoffset,
10104                    x,
10105                    y,
10106                    width
10107                );
10108            }
10109            let out = call_atomic_ptr_6arg(
10110                "glCopyTextureSubImage1D",
10111                &self.glCopyTextureSubImage1D_p,
10112                texture,
10113                level,
10114                xoffset,
10115                x,
10116                y,
10117                width,
10118            );
10119            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10120            {
10121                self.automatic_glGetError("glCopyTextureSubImage1D");
10122            }
10123            out
10124        }
10125        #[doc(hidden)]
10126        pub unsafe fn CopyTextureSubImage1D_load_with_dyn(
10127            &self,
10128            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10129        ) -> bool {
10130            load_dyn_name_atomic_ptr(
10131                get_proc_address,
10132                b"glCopyTextureSubImage1D\0",
10133                &self.glCopyTextureSubImage1D_p,
10134            )
10135        }
10136        #[inline]
10137        #[doc(hidden)]
10138        pub fn CopyTextureSubImage1D_is_loaded(&self) -> bool {
10139            !self.glCopyTextureSubImage1D_p.load(RELAX).is_null()
10140        }
10141        /// [glCopyTextureSubImage2D](http://docs.gl/gl4/glCopyTextureSubImage2D)(texture, level, xoffset, yoffset, x, y, width, height)
10142        #[cfg_attr(feature = "inline", inline)]
10143        #[cfg_attr(feature = "inline_always", inline(always))]
10144        pub unsafe fn CopyTextureSubImage2D(
10145            &self,
10146            texture: GLuint,
10147            level: GLint,
10148            xoffset: GLint,
10149            yoffset: GLint,
10150            x: GLint,
10151            y: GLint,
10152            width: GLsizei,
10153            height: GLsizei,
10154        ) {
10155            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10156            {
10157                trace!("calling gl.CopyTextureSubImage2D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", texture, level, xoffset, yoffset, x, y, width, height);
10158            }
10159            let out = call_atomic_ptr_8arg(
10160                "glCopyTextureSubImage2D",
10161                &self.glCopyTextureSubImage2D_p,
10162                texture,
10163                level,
10164                xoffset,
10165                yoffset,
10166                x,
10167                y,
10168                width,
10169                height,
10170            );
10171            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10172            {
10173                self.automatic_glGetError("glCopyTextureSubImage2D");
10174            }
10175            out
10176        }
10177        #[doc(hidden)]
10178        pub unsafe fn CopyTextureSubImage2D_load_with_dyn(
10179            &self,
10180            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10181        ) -> bool {
10182            load_dyn_name_atomic_ptr(
10183                get_proc_address,
10184                b"glCopyTextureSubImage2D\0",
10185                &self.glCopyTextureSubImage2D_p,
10186            )
10187        }
10188        #[inline]
10189        #[doc(hidden)]
10190        pub fn CopyTextureSubImage2D_is_loaded(&self) -> bool {
10191            !self.glCopyTextureSubImage2D_p.load(RELAX).is_null()
10192        }
10193        /// [glCopyTextureSubImage3D](http://docs.gl/gl4/glCopyTextureSubImage3D)(texture, level, xoffset, yoffset, zoffset, x, y, width, height)
10194        #[cfg_attr(feature = "inline", inline)]
10195        #[cfg_attr(feature = "inline_always", inline(always))]
10196        pub unsafe fn CopyTextureSubImage3D(
10197            &self,
10198            texture: GLuint,
10199            level: GLint,
10200            xoffset: GLint,
10201            yoffset: GLint,
10202            zoffset: GLint,
10203            x: GLint,
10204            y: GLint,
10205            width: GLsizei,
10206            height: GLsizei,
10207        ) {
10208            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10209            {
10210                trace!("calling gl.CopyTextureSubImage3D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", texture, level, xoffset, yoffset, zoffset, x, y, width, height);
10211            }
10212            let out = call_atomic_ptr_9arg(
10213                "glCopyTextureSubImage3D",
10214                &self.glCopyTextureSubImage3D_p,
10215                texture,
10216                level,
10217                xoffset,
10218                yoffset,
10219                zoffset,
10220                x,
10221                y,
10222                width,
10223                height,
10224            );
10225            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10226            {
10227                self.automatic_glGetError("glCopyTextureSubImage3D");
10228            }
10229            out
10230        }
10231        #[doc(hidden)]
10232        pub unsafe fn CopyTextureSubImage3D_load_with_dyn(
10233            &self,
10234            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10235        ) -> bool {
10236            load_dyn_name_atomic_ptr(
10237                get_proc_address,
10238                b"glCopyTextureSubImage3D\0",
10239                &self.glCopyTextureSubImage3D_p,
10240            )
10241        }
10242        #[inline]
10243        #[doc(hidden)]
10244        pub fn CopyTextureSubImage3D_is_loaded(&self) -> bool {
10245            !self.glCopyTextureSubImage3D_p.load(RELAX).is_null()
10246        }
10247        /// [glCreateBuffers](http://docs.gl/gl4/glCreateBuffers)(n, buffers)
10248        /// * `buffers` len: n
10249        #[cfg_attr(feature = "inline", inline)]
10250        #[cfg_attr(feature = "inline_always", inline(always))]
10251        pub unsafe fn CreateBuffers(&self, n: GLsizei, buffers: *mut GLuint) {
10252            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10253            {
10254                trace!("calling gl.CreateBuffers({:?}, {:p});", n, buffers);
10255            }
10256            let out = call_atomic_ptr_2arg("glCreateBuffers", &self.glCreateBuffers_p, n, buffers);
10257            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10258            {
10259                self.automatic_glGetError("glCreateBuffers");
10260            }
10261            out
10262        }
10263        #[doc(hidden)]
10264        pub unsafe fn CreateBuffers_load_with_dyn(
10265            &self,
10266            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10267        ) -> bool {
10268            load_dyn_name_atomic_ptr(
10269                get_proc_address,
10270                b"glCreateBuffers\0",
10271                &self.glCreateBuffers_p,
10272            )
10273        }
10274        #[inline]
10275        #[doc(hidden)]
10276        pub fn CreateBuffers_is_loaded(&self) -> bool {
10277            !self.glCreateBuffers_p.load(RELAX).is_null()
10278        }
10279        /// [glCreateFramebuffers](http://docs.gl/gl4/glCreateFramebuffers)(n, framebuffers)
10280        /// * `framebuffers` len: n
10281        #[cfg_attr(feature = "inline", inline)]
10282        #[cfg_attr(feature = "inline_always", inline(always))]
10283        pub unsafe fn CreateFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) {
10284            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10285            {
10286                trace!(
10287                    "calling gl.CreateFramebuffers({:?}, {:p});",
10288                    n,
10289                    framebuffers
10290                );
10291            }
10292            let out = call_atomic_ptr_2arg(
10293                "glCreateFramebuffers",
10294                &self.glCreateFramebuffers_p,
10295                n,
10296                framebuffers,
10297            );
10298            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10299            {
10300                self.automatic_glGetError("glCreateFramebuffers");
10301            }
10302            out
10303        }
10304        #[doc(hidden)]
10305        pub unsafe fn CreateFramebuffers_load_with_dyn(
10306            &self,
10307            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10308        ) -> bool {
10309            load_dyn_name_atomic_ptr(
10310                get_proc_address,
10311                b"glCreateFramebuffers\0",
10312                &self.glCreateFramebuffers_p,
10313            )
10314        }
10315        #[inline]
10316        #[doc(hidden)]
10317        pub fn CreateFramebuffers_is_loaded(&self) -> bool {
10318            !self.glCreateFramebuffers_p.load(RELAX).is_null()
10319        }
10320        /// [glCreateProgram](http://docs.gl/gl4/glCreateProgram)()
10321        #[cfg_attr(feature = "inline", inline)]
10322        #[cfg_attr(feature = "inline_always", inline(always))]
10323        pub unsafe fn CreateProgram(&self) -> GLuint {
10324            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10325            {
10326                trace!("calling gl.CreateProgram();",);
10327            }
10328            let out = call_atomic_ptr_0arg("glCreateProgram", &self.glCreateProgram_p);
10329            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10330            {
10331                self.automatic_glGetError("glCreateProgram");
10332            }
10333            out
10334        }
10335        #[doc(hidden)]
10336        pub unsafe fn CreateProgram_load_with_dyn(
10337            &self,
10338            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10339        ) -> bool {
10340            load_dyn_name_atomic_ptr(
10341                get_proc_address,
10342                b"glCreateProgram\0",
10343                &self.glCreateProgram_p,
10344            )
10345        }
10346        #[inline]
10347        #[doc(hidden)]
10348        pub fn CreateProgram_is_loaded(&self) -> bool {
10349            !self.glCreateProgram_p.load(RELAX).is_null()
10350        }
10351        /// [glCreateProgramPipelines](http://docs.gl/gl4/glCreateProgramPipelines)(n, pipelines)
10352        /// * `pipelines` len: n
10353        #[cfg_attr(feature = "inline", inline)]
10354        #[cfg_attr(feature = "inline_always", inline(always))]
10355        pub unsafe fn CreateProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) {
10356            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10357            {
10358                trace!(
10359                    "calling gl.CreateProgramPipelines({:?}, {:p});",
10360                    n,
10361                    pipelines
10362                );
10363            }
10364            let out = call_atomic_ptr_2arg(
10365                "glCreateProgramPipelines",
10366                &self.glCreateProgramPipelines_p,
10367                n,
10368                pipelines,
10369            );
10370            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10371            {
10372                self.automatic_glGetError("glCreateProgramPipelines");
10373            }
10374            out
10375        }
10376        #[doc(hidden)]
10377        pub unsafe fn CreateProgramPipelines_load_with_dyn(
10378            &self,
10379            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10380        ) -> bool {
10381            load_dyn_name_atomic_ptr(
10382                get_proc_address,
10383                b"glCreateProgramPipelines\0",
10384                &self.glCreateProgramPipelines_p,
10385            )
10386        }
10387        #[inline]
10388        #[doc(hidden)]
10389        pub fn CreateProgramPipelines_is_loaded(&self) -> bool {
10390            !self.glCreateProgramPipelines_p.load(RELAX).is_null()
10391        }
10392        /// [glCreateQueries](http://docs.gl/gl4/glCreateQueries)(target, n, ids)
10393        /// * `target` group: QueryTarget
10394        /// * `ids` len: n
10395        #[cfg_attr(feature = "inline", inline)]
10396        #[cfg_attr(feature = "inline_always", inline(always))]
10397        pub unsafe fn CreateQueries(&self, target: GLenum, n: GLsizei, ids: *mut GLuint) {
10398            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10399            {
10400                trace!(
10401                    "calling gl.CreateQueries({:#X}, {:?}, {:p});",
10402                    target,
10403                    n,
10404                    ids
10405                );
10406            }
10407            let out =
10408                call_atomic_ptr_3arg("glCreateQueries", &self.glCreateQueries_p, target, n, ids);
10409            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10410            {
10411                self.automatic_glGetError("glCreateQueries");
10412            }
10413            out
10414        }
10415        #[doc(hidden)]
10416        pub unsafe fn CreateQueries_load_with_dyn(
10417            &self,
10418            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10419        ) -> bool {
10420            load_dyn_name_atomic_ptr(
10421                get_proc_address,
10422                b"glCreateQueries\0",
10423                &self.glCreateQueries_p,
10424            )
10425        }
10426        #[inline]
10427        #[doc(hidden)]
10428        pub fn CreateQueries_is_loaded(&self) -> bool {
10429            !self.glCreateQueries_p.load(RELAX).is_null()
10430        }
10431        /// [glCreateRenderbuffers](http://docs.gl/gl4/glCreateRenderbuffers)(n, renderbuffers)
10432        /// * `renderbuffers` len: n
10433        #[cfg_attr(feature = "inline", inline)]
10434        #[cfg_attr(feature = "inline_always", inline(always))]
10435        pub unsafe fn CreateRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) {
10436            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10437            {
10438                trace!(
10439                    "calling gl.CreateRenderbuffers({:?}, {:p});",
10440                    n,
10441                    renderbuffers
10442                );
10443            }
10444            let out = call_atomic_ptr_2arg(
10445                "glCreateRenderbuffers",
10446                &self.glCreateRenderbuffers_p,
10447                n,
10448                renderbuffers,
10449            );
10450            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10451            {
10452                self.automatic_glGetError("glCreateRenderbuffers");
10453            }
10454            out
10455        }
10456        #[doc(hidden)]
10457        pub unsafe fn CreateRenderbuffers_load_with_dyn(
10458            &self,
10459            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10460        ) -> bool {
10461            load_dyn_name_atomic_ptr(
10462                get_proc_address,
10463                b"glCreateRenderbuffers\0",
10464                &self.glCreateRenderbuffers_p,
10465            )
10466        }
10467        #[inline]
10468        #[doc(hidden)]
10469        pub fn CreateRenderbuffers_is_loaded(&self) -> bool {
10470            !self.glCreateRenderbuffers_p.load(RELAX).is_null()
10471        }
10472        /// [glCreateSamplers](http://docs.gl/gl4/glCreateSamplers)(n, samplers)
10473        /// * `samplers` len: n
10474        #[cfg_attr(feature = "inline", inline)]
10475        #[cfg_attr(feature = "inline_always", inline(always))]
10476        pub unsafe fn CreateSamplers(&self, n: GLsizei, samplers: *mut GLuint) {
10477            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10478            {
10479                trace!("calling gl.CreateSamplers({:?}, {:p});", n, samplers);
10480            }
10481            let out =
10482                call_atomic_ptr_2arg("glCreateSamplers", &self.glCreateSamplers_p, n, samplers);
10483            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10484            {
10485                self.automatic_glGetError("glCreateSamplers");
10486            }
10487            out
10488        }
10489        #[doc(hidden)]
10490        pub unsafe fn CreateSamplers_load_with_dyn(
10491            &self,
10492            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10493        ) -> bool {
10494            load_dyn_name_atomic_ptr(
10495                get_proc_address,
10496                b"glCreateSamplers\0",
10497                &self.glCreateSamplers_p,
10498            )
10499        }
10500        #[inline]
10501        #[doc(hidden)]
10502        pub fn CreateSamplers_is_loaded(&self) -> bool {
10503            !self.glCreateSamplers_p.load(RELAX).is_null()
10504        }
10505        /// [glCreateShader](http://docs.gl/gl4/glCreateShader)(type_)
10506        /// * `type_` group: ShaderType
10507        #[cfg_attr(feature = "inline", inline)]
10508        #[cfg_attr(feature = "inline_always", inline(always))]
10509        pub unsafe fn CreateShader(&self, type_: GLenum) -> GLuint {
10510            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10511            {
10512                trace!("calling gl.CreateShader({:#X});", type_);
10513            }
10514            let out = call_atomic_ptr_1arg("glCreateShader", &self.glCreateShader_p, type_);
10515            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10516            {
10517                self.automatic_glGetError("glCreateShader");
10518            }
10519            out
10520        }
10521        #[doc(hidden)]
10522        pub unsafe fn CreateShader_load_with_dyn(
10523            &self,
10524            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10525        ) -> bool {
10526            load_dyn_name_atomic_ptr(
10527                get_proc_address,
10528                b"glCreateShader\0",
10529                &self.glCreateShader_p,
10530            )
10531        }
10532        #[inline]
10533        #[doc(hidden)]
10534        pub fn CreateShader_is_loaded(&self) -> bool {
10535            !self.glCreateShader_p.load(RELAX).is_null()
10536        }
10537        /// [glCreateShaderProgramv](http://docs.gl/gl4/glCreateShaderProgramv)(type_, count, strings)
10538        /// * `type_` group: ShaderType
10539        /// * `strings` len: count
10540        #[cfg_attr(feature = "inline", inline)]
10541        #[cfg_attr(feature = "inline_always", inline(always))]
10542        pub unsafe fn CreateShaderProgramv(
10543            &self,
10544            type_: GLenum,
10545            count: GLsizei,
10546            strings: *const *const GLchar,
10547        ) -> GLuint {
10548            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10549            {
10550                trace!(
10551                    "calling gl.CreateShaderProgramv({:#X}, {:?}, {:p});",
10552                    type_,
10553                    count,
10554                    strings
10555                );
10556            }
10557            let out = call_atomic_ptr_3arg(
10558                "glCreateShaderProgramv",
10559                &self.glCreateShaderProgramv_p,
10560                type_,
10561                count,
10562                strings,
10563            );
10564            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10565            {
10566                self.automatic_glGetError("glCreateShaderProgramv");
10567            }
10568            out
10569        }
10570        #[doc(hidden)]
10571        pub unsafe fn CreateShaderProgramv_load_with_dyn(
10572            &self,
10573            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10574        ) -> bool {
10575            load_dyn_name_atomic_ptr(
10576                get_proc_address,
10577                b"glCreateShaderProgramv\0",
10578                &self.glCreateShaderProgramv_p,
10579            )
10580        }
10581        #[inline]
10582        #[doc(hidden)]
10583        pub fn CreateShaderProgramv_is_loaded(&self) -> bool {
10584            !self.glCreateShaderProgramv_p.load(RELAX).is_null()
10585        }
10586        /// [glCreateTextures](http://docs.gl/gl4/glCreateTextures)(target, n, textures)
10587        /// * `target` group: TextureTarget
10588        /// * `textures` len: n
10589        #[cfg_attr(feature = "inline", inline)]
10590        #[cfg_attr(feature = "inline_always", inline(always))]
10591        pub unsafe fn CreateTextures(&self, target: GLenum, n: GLsizei, textures: *mut GLuint) {
10592            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10593            {
10594                trace!(
10595                    "calling gl.CreateTextures({:#X}, {:?}, {:p});",
10596                    target,
10597                    n,
10598                    textures
10599                );
10600            }
10601            let out = call_atomic_ptr_3arg(
10602                "glCreateTextures",
10603                &self.glCreateTextures_p,
10604                target,
10605                n,
10606                textures,
10607            );
10608            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10609            {
10610                self.automatic_glGetError("glCreateTextures");
10611            }
10612            out
10613        }
10614        #[doc(hidden)]
10615        pub unsafe fn CreateTextures_load_with_dyn(
10616            &self,
10617            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10618        ) -> bool {
10619            load_dyn_name_atomic_ptr(
10620                get_proc_address,
10621                b"glCreateTextures\0",
10622                &self.glCreateTextures_p,
10623            )
10624        }
10625        #[inline]
10626        #[doc(hidden)]
10627        pub fn CreateTextures_is_loaded(&self) -> bool {
10628            !self.glCreateTextures_p.load(RELAX).is_null()
10629        }
10630        /// [glCreateTransformFeedbacks](http://docs.gl/gl4/glCreateTransformFeedbacks)(n, ids)
10631        /// * `ids` len: n
10632        #[cfg_attr(feature = "inline", inline)]
10633        #[cfg_attr(feature = "inline_always", inline(always))]
10634        pub unsafe fn CreateTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) {
10635            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10636            {
10637                trace!("calling gl.CreateTransformFeedbacks({:?}, {:p});", n, ids);
10638            }
10639            let out = call_atomic_ptr_2arg(
10640                "glCreateTransformFeedbacks",
10641                &self.glCreateTransformFeedbacks_p,
10642                n,
10643                ids,
10644            );
10645            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10646            {
10647                self.automatic_glGetError("glCreateTransformFeedbacks");
10648            }
10649            out
10650        }
10651        #[doc(hidden)]
10652        pub unsafe fn CreateTransformFeedbacks_load_with_dyn(
10653            &self,
10654            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10655        ) -> bool {
10656            load_dyn_name_atomic_ptr(
10657                get_proc_address,
10658                b"glCreateTransformFeedbacks\0",
10659                &self.glCreateTransformFeedbacks_p,
10660            )
10661        }
10662        #[inline]
10663        #[doc(hidden)]
10664        pub fn CreateTransformFeedbacks_is_loaded(&self) -> bool {
10665            !self.glCreateTransformFeedbacks_p.load(RELAX).is_null()
10666        }
10667        /// [glCreateVertexArrays](http://docs.gl/gl4/glCreateVertexArrays)(n, arrays)
10668        /// * `arrays` len: n
10669        #[cfg_attr(feature = "inline", inline)]
10670        #[cfg_attr(feature = "inline_always", inline(always))]
10671        pub unsafe fn CreateVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) {
10672            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10673            {
10674                trace!("calling gl.CreateVertexArrays({:?}, {:p});", n, arrays);
10675            }
10676            let out = call_atomic_ptr_2arg(
10677                "glCreateVertexArrays",
10678                &self.glCreateVertexArrays_p,
10679                n,
10680                arrays,
10681            );
10682            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10683            {
10684                self.automatic_glGetError("glCreateVertexArrays");
10685            }
10686            out
10687        }
10688        #[doc(hidden)]
10689        pub unsafe fn CreateVertexArrays_load_with_dyn(
10690            &self,
10691            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10692        ) -> bool {
10693            load_dyn_name_atomic_ptr(
10694                get_proc_address,
10695                b"glCreateVertexArrays\0",
10696                &self.glCreateVertexArrays_p,
10697            )
10698        }
10699        #[inline]
10700        #[doc(hidden)]
10701        pub fn CreateVertexArrays_is_loaded(&self) -> bool {
10702            !self.glCreateVertexArrays_p.load(RELAX).is_null()
10703        }
10704        /// [glCullFace](http://docs.gl/gl4/glCullFace)(mode)
10705        /// * `mode` group: CullFaceMode
10706        #[cfg_attr(feature = "inline", inline)]
10707        #[cfg_attr(feature = "inline_always", inline(always))]
10708        pub unsafe fn CullFace(&self, mode: GLenum) {
10709            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10710            {
10711                trace!("calling gl.CullFace({:#X});", mode);
10712            }
10713            let out = call_atomic_ptr_1arg("glCullFace", &self.glCullFace_p, mode);
10714            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10715            {
10716                self.automatic_glGetError("glCullFace");
10717            }
10718            out
10719        }
10720        #[doc(hidden)]
10721        pub unsafe fn CullFace_load_with_dyn(
10722            &self,
10723            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10724        ) -> bool {
10725            load_dyn_name_atomic_ptr(get_proc_address, b"glCullFace\0", &self.glCullFace_p)
10726        }
10727        #[inline]
10728        #[doc(hidden)]
10729        pub fn CullFace_is_loaded(&self) -> bool {
10730            !self.glCullFace_p.load(RELAX).is_null()
10731        }
10732        /// [glDebugMessageCallback](http://docs.gl/gl4/glDebugMessageCallback)(callback, userParam)
10733        #[cfg_attr(feature = "inline", inline)]
10734        #[cfg_attr(feature = "inline_always", inline(always))]
10735        pub unsafe fn DebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) {
10736            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10737            {
10738                trace!(
10739                    "calling gl.DebugMessageCallback({:?}, {:p});",
10740                    transmute::<_, Option<fn()>>(callback),
10741                    userParam
10742                );
10743            }
10744            let out = call_atomic_ptr_2arg(
10745                "glDebugMessageCallback",
10746                &self.glDebugMessageCallback_p,
10747                callback,
10748                userParam,
10749            );
10750            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10751            {
10752                self.automatic_glGetError("glDebugMessageCallback");
10753            }
10754            out
10755        }
10756        #[doc(hidden)]
10757        pub unsafe fn DebugMessageCallback_load_with_dyn(
10758            &self,
10759            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10760        ) -> bool {
10761            load_dyn_name_atomic_ptr(
10762                get_proc_address,
10763                b"glDebugMessageCallback\0",
10764                &self.glDebugMessageCallback_p,
10765            )
10766        }
10767        #[inline]
10768        #[doc(hidden)]
10769        pub fn DebugMessageCallback_is_loaded(&self) -> bool {
10770            !self.glDebugMessageCallback_p.load(RELAX).is_null()
10771        }
10772        /// [glDebugMessageCallbackARB](http://docs.gl/gl4/glDebugMessageCallbackARB)(callback, userParam)
10773        /// * `userParam` len: COMPSIZE(callback)
10774        /// * alias of: [`glDebugMessageCallback`]
10775        #[cfg_attr(feature = "inline", inline)]
10776        #[cfg_attr(feature = "inline_always", inline(always))]
10777        pub unsafe fn DebugMessageCallbackARB(
10778            &self,
10779            callback: GLDEBUGPROCARB,
10780            userParam: *const c_void,
10781        ) {
10782            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10783            {
10784                trace!(
10785                    "calling gl.DebugMessageCallbackARB({:?}, {:p});",
10786                    transmute::<_, Option<fn()>>(callback),
10787                    userParam
10788                );
10789            }
10790            let out = call_atomic_ptr_2arg(
10791                "glDebugMessageCallbackARB",
10792                &self.glDebugMessageCallbackARB_p,
10793                callback,
10794                userParam,
10795            );
10796            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10797            {
10798                self.automatic_glGetError("glDebugMessageCallbackARB");
10799            }
10800            out
10801        }
10802        #[doc(hidden)]
10803        pub unsafe fn DebugMessageCallbackARB_load_with_dyn(
10804            &self,
10805            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10806        ) -> bool {
10807            load_dyn_name_atomic_ptr(
10808                get_proc_address,
10809                b"glDebugMessageCallbackARB\0",
10810                &self.glDebugMessageCallbackARB_p,
10811            )
10812        }
10813        #[inline]
10814        #[doc(hidden)]
10815        pub fn DebugMessageCallbackARB_is_loaded(&self) -> bool {
10816            !self.glDebugMessageCallbackARB_p.load(RELAX).is_null()
10817        }
10818        /// [glDebugMessageCallbackKHR](http://docs.gl/gl4/glDebugMessageCallbackKHR)(callback, userParam)
10819        /// * alias of: [`glDebugMessageCallback`]
10820        #[cfg_attr(feature = "inline", inline)]
10821        #[cfg_attr(feature = "inline_always", inline(always))]
10822        pub unsafe fn DebugMessageCallbackKHR(
10823            &self,
10824            callback: GLDEBUGPROCKHR,
10825            userParam: *const c_void,
10826        ) {
10827            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10828            {
10829                trace!(
10830                    "calling gl.DebugMessageCallbackKHR({:?}, {:p});",
10831                    transmute::<_, Option<fn()>>(callback),
10832                    userParam
10833                );
10834            }
10835            let out = call_atomic_ptr_2arg(
10836                "glDebugMessageCallbackKHR",
10837                &self.glDebugMessageCallbackKHR_p,
10838                callback,
10839                userParam,
10840            );
10841            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10842            {
10843                self.automatic_glGetError("glDebugMessageCallbackKHR");
10844            }
10845            out
10846        }
10847        #[doc(hidden)]
10848        pub unsafe fn DebugMessageCallbackKHR_load_with_dyn(
10849            &self,
10850            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10851        ) -> bool {
10852            load_dyn_name_atomic_ptr(
10853                get_proc_address,
10854                b"glDebugMessageCallbackKHR\0",
10855                &self.glDebugMessageCallbackKHR_p,
10856            )
10857        }
10858        #[inline]
10859        #[doc(hidden)]
10860        pub fn DebugMessageCallbackKHR_is_loaded(&self) -> bool {
10861            !self.glDebugMessageCallbackKHR_p.load(RELAX).is_null()
10862        }
10863        /// [glDebugMessageControl](http://docs.gl/gl4/glDebugMessageControl)(source, type_, severity, count, ids, enabled)
10864        /// * `source` group: DebugSource
10865        /// * `type_` group: DebugType
10866        /// * `severity` group: DebugSeverity
10867        /// * `ids` len: count
10868        #[cfg_attr(feature = "inline", inline)]
10869        #[cfg_attr(feature = "inline_always", inline(always))]
10870        pub unsafe fn DebugMessageControl(
10871            &self,
10872            source: GLenum,
10873            type_: GLenum,
10874            severity: GLenum,
10875            count: GLsizei,
10876            ids: *const GLuint,
10877            enabled: GLboolean,
10878        ) {
10879            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10880            {
10881                trace!(
10882                    "calling gl.DebugMessageControl({:#X}, {:#X}, {:#X}, {:?}, {:p}, {:?});",
10883                    source,
10884                    type_,
10885                    severity,
10886                    count,
10887                    ids,
10888                    enabled
10889                );
10890            }
10891            let out = call_atomic_ptr_6arg(
10892                "glDebugMessageControl",
10893                &self.glDebugMessageControl_p,
10894                source,
10895                type_,
10896                severity,
10897                count,
10898                ids,
10899                enabled,
10900            );
10901            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10902            {
10903                self.automatic_glGetError("glDebugMessageControl");
10904            }
10905            out
10906        }
10907        #[doc(hidden)]
10908        pub unsafe fn DebugMessageControl_load_with_dyn(
10909            &self,
10910            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10911        ) -> bool {
10912            load_dyn_name_atomic_ptr(
10913                get_proc_address,
10914                b"glDebugMessageControl\0",
10915                &self.glDebugMessageControl_p,
10916            )
10917        }
10918        #[inline]
10919        #[doc(hidden)]
10920        pub fn DebugMessageControl_is_loaded(&self) -> bool {
10921            !self.glDebugMessageControl_p.load(RELAX).is_null()
10922        }
10923        /// [glDebugMessageControlARB](http://docs.gl/gl4/glDebugMessageControlARB)(source, type_, severity, count, ids, enabled)
10924        /// * `source` group: DebugSource
10925        /// * `type_` group: DebugType
10926        /// * `severity` group: DebugSeverity
10927        /// * `ids` len: count
10928        /// * alias of: [`glDebugMessageControl`]
10929        #[cfg_attr(feature = "inline", inline)]
10930        #[cfg_attr(feature = "inline_always", inline(always))]
10931        pub unsafe fn DebugMessageControlARB(
10932            &self,
10933            source: GLenum,
10934            type_: GLenum,
10935            severity: GLenum,
10936            count: GLsizei,
10937            ids: *const GLuint,
10938            enabled: GLboolean,
10939        ) {
10940            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10941            {
10942                trace!(
10943                    "calling gl.DebugMessageControlARB({:#X}, {:#X}, {:#X}, {:?}, {:p}, {:?});",
10944                    source,
10945                    type_,
10946                    severity,
10947                    count,
10948                    ids,
10949                    enabled
10950                );
10951            }
10952            let out = call_atomic_ptr_6arg(
10953                "glDebugMessageControlARB",
10954                &self.glDebugMessageControlARB_p,
10955                source,
10956                type_,
10957                severity,
10958                count,
10959                ids,
10960                enabled,
10961            );
10962            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10963            {
10964                self.automatic_glGetError("glDebugMessageControlARB");
10965            }
10966            out
10967        }
10968        #[doc(hidden)]
10969        pub unsafe fn DebugMessageControlARB_load_with_dyn(
10970            &self,
10971            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10972        ) -> bool {
10973            load_dyn_name_atomic_ptr(
10974                get_proc_address,
10975                b"glDebugMessageControlARB\0",
10976                &self.glDebugMessageControlARB_p,
10977            )
10978        }
10979        #[inline]
10980        #[doc(hidden)]
10981        pub fn DebugMessageControlARB_is_loaded(&self) -> bool {
10982            !self.glDebugMessageControlARB_p.load(RELAX).is_null()
10983        }
10984        /// [glDebugMessageControlKHR](http://docs.gl/gl4/glDebugMessageControlKHR)(source, type_, severity, count, ids, enabled)
10985        /// * `source` group: DebugSource
10986        /// * `type_` group: DebugType
10987        /// * `severity` group: DebugSeverity
10988        /// * alias of: [`glDebugMessageControl`]
10989        #[cfg_attr(feature = "inline", inline)]
10990        #[cfg_attr(feature = "inline_always", inline(always))]
10991        pub unsafe fn DebugMessageControlKHR(
10992            &self,
10993            source: GLenum,
10994            type_: GLenum,
10995            severity: GLenum,
10996            count: GLsizei,
10997            ids: *const GLuint,
10998            enabled: GLboolean,
10999        ) {
11000            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11001            {
11002                trace!(
11003                    "calling gl.DebugMessageControlKHR({:#X}, {:#X}, {:#X}, {:?}, {:p}, {:?});",
11004                    source,
11005                    type_,
11006                    severity,
11007                    count,
11008                    ids,
11009                    enabled
11010                );
11011            }
11012            let out = call_atomic_ptr_6arg(
11013                "glDebugMessageControlKHR",
11014                &self.glDebugMessageControlKHR_p,
11015                source,
11016                type_,
11017                severity,
11018                count,
11019                ids,
11020                enabled,
11021            );
11022            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11023            {
11024                self.automatic_glGetError("glDebugMessageControlKHR");
11025            }
11026            out
11027        }
11028        #[doc(hidden)]
11029        pub unsafe fn DebugMessageControlKHR_load_with_dyn(
11030            &self,
11031            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11032        ) -> bool {
11033            load_dyn_name_atomic_ptr(
11034                get_proc_address,
11035                b"glDebugMessageControlKHR\0",
11036                &self.glDebugMessageControlKHR_p,
11037            )
11038        }
11039        #[inline]
11040        #[doc(hidden)]
11041        pub fn DebugMessageControlKHR_is_loaded(&self) -> bool {
11042            !self.glDebugMessageControlKHR_p.load(RELAX).is_null()
11043        }
11044        /// [glDebugMessageInsert](http://docs.gl/gl4/glDebugMessageInsert)(source, type_, id, severity, length, buf)
11045        /// * `source` group: DebugSource
11046        /// * `type_` group: DebugType
11047        /// * `severity` group: DebugSeverity
11048        /// * `buf` len: COMPSIZE(buf,length)
11049        #[cfg_attr(feature = "inline", inline)]
11050        #[cfg_attr(feature = "inline_always", inline(always))]
11051        pub unsafe fn DebugMessageInsert(
11052            &self,
11053            source: GLenum,
11054            type_: GLenum,
11055            id: GLuint,
11056            severity: GLenum,
11057            length: GLsizei,
11058            buf: *const GLchar,
11059        ) {
11060            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11061            {
11062                trace!(
11063                    "calling gl.DebugMessageInsert({:#X}, {:#X}, {:?}, {:#X}, {:?}, {:p});",
11064                    source,
11065                    type_,
11066                    id,
11067                    severity,
11068                    length,
11069                    buf
11070                );
11071            }
11072            let out = call_atomic_ptr_6arg(
11073                "glDebugMessageInsert",
11074                &self.glDebugMessageInsert_p,
11075                source,
11076                type_,
11077                id,
11078                severity,
11079                length,
11080                buf,
11081            );
11082            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11083            {
11084                self.automatic_glGetError("glDebugMessageInsert");
11085            }
11086            out
11087        }
11088        #[doc(hidden)]
11089        pub unsafe fn DebugMessageInsert_load_with_dyn(
11090            &self,
11091            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11092        ) -> bool {
11093            load_dyn_name_atomic_ptr(
11094                get_proc_address,
11095                b"glDebugMessageInsert\0",
11096                &self.glDebugMessageInsert_p,
11097            )
11098        }
11099        #[inline]
11100        #[doc(hidden)]
11101        pub fn DebugMessageInsert_is_loaded(&self) -> bool {
11102            !self.glDebugMessageInsert_p.load(RELAX).is_null()
11103        }
11104        /// [glDebugMessageInsertARB](http://docs.gl/gl4/glDebugMessageInsertARB)(source, type_, id, severity, length, buf)
11105        /// * `source` group: DebugSource
11106        /// * `type_` group: DebugType
11107        /// * `severity` group: DebugSeverity
11108        /// * `buf` len: length
11109        /// * alias of: [`glDebugMessageInsert`]
11110        #[cfg_attr(feature = "inline", inline)]
11111        #[cfg_attr(feature = "inline_always", inline(always))]
11112        pub unsafe fn DebugMessageInsertARB(
11113            &self,
11114            source: GLenum,
11115            type_: GLenum,
11116            id: GLuint,
11117            severity: GLenum,
11118            length: GLsizei,
11119            buf: *const GLchar,
11120        ) {
11121            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11122            {
11123                trace!(
11124                    "calling gl.DebugMessageInsertARB({:#X}, {:#X}, {:?}, {:#X}, {:?}, {:p});",
11125                    source,
11126                    type_,
11127                    id,
11128                    severity,
11129                    length,
11130                    buf
11131                );
11132            }
11133            let out = call_atomic_ptr_6arg(
11134                "glDebugMessageInsertARB",
11135                &self.glDebugMessageInsertARB_p,
11136                source,
11137                type_,
11138                id,
11139                severity,
11140                length,
11141                buf,
11142            );
11143            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11144            {
11145                self.automatic_glGetError("glDebugMessageInsertARB");
11146            }
11147            out
11148        }
11149        #[doc(hidden)]
11150        pub unsafe fn DebugMessageInsertARB_load_with_dyn(
11151            &self,
11152            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11153        ) -> bool {
11154            load_dyn_name_atomic_ptr(
11155                get_proc_address,
11156                b"glDebugMessageInsertARB\0",
11157                &self.glDebugMessageInsertARB_p,
11158            )
11159        }
11160        #[inline]
11161        #[doc(hidden)]
11162        pub fn DebugMessageInsertARB_is_loaded(&self) -> bool {
11163            !self.glDebugMessageInsertARB_p.load(RELAX).is_null()
11164        }
11165        /// [glDebugMessageInsertKHR](http://docs.gl/gl4/glDebugMessageInsertKHR)(source, type_, id, severity, length, buf)
11166        /// * `source` group: DebugSource
11167        /// * `type_` group: DebugType
11168        /// * `severity` group: DebugSeverity
11169        /// * alias of: [`glDebugMessageInsert`]
11170        #[cfg_attr(feature = "inline", inline)]
11171        #[cfg_attr(feature = "inline_always", inline(always))]
11172        pub unsafe fn DebugMessageInsertKHR(
11173            &self,
11174            source: GLenum,
11175            type_: GLenum,
11176            id: GLuint,
11177            severity: GLenum,
11178            length: GLsizei,
11179            buf: *const GLchar,
11180        ) {
11181            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11182            {
11183                trace!(
11184                    "calling gl.DebugMessageInsertKHR({:#X}, {:#X}, {:?}, {:#X}, {:?}, {:p});",
11185                    source,
11186                    type_,
11187                    id,
11188                    severity,
11189                    length,
11190                    buf
11191                );
11192            }
11193            let out = call_atomic_ptr_6arg(
11194                "glDebugMessageInsertKHR",
11195                &self.glDebugMessageInsertKHR_p,
11196                source,
11197                type_,
11198                id,
11199                severity,
11200                length,
11201                buf,
11202            );
11203            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11204            {
11205                self.automatic_glGetError("glDebugMessageInsertKHR");
11206            }
11207            out
11208        }
11209        #[doc(hidden)]
11210        pub unsafe fn DebugMessageInsertKHR_load_with_dyn(
11211            &self,
11212            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11213        ) -> bool {
11214            load_dyn_name_atomic_ptr(
11215                get_proc_address,
11216                b"glDebugMessageInsertKHR\0",
11217                &self.glDebugMessageInsertKHR_p,
11218            )
11219        }
11220        #[inline]
11221        #[doc(hidden)]
11222        pub fn DebugMessageInsertKHR_is_loaded(&self) -> bool {
11223            !self.glDebugMessageInsertKHR_p.load(RELAX).is_null()
11224        }
11225        /// [glDeleteBuffers](http://docs.gl/gl4/glDeleteBuffers)(n, buffers)
11226        /// * `buffers` len: n
11227        #[cfg_attr(feature = "inline", inline)]
11228        #[cfg_attr(feature = "inline_always", inline(always))]
11229        pub unsafe fn DeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) {
11230            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11231            {
11232                trace!("calling gl.DeleteBuffers({:?}, {:p});", n, buffers);
11233            }
11234            let out = call_atomic_ptr_2arg("glDeleteBuffers", &self.glDeleteBuffers_p, n, buffers);
11235            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11236            {
11237                self.automatic_glGetError("glDeleteBuffers");
11238            }
11239            out
11240        }
11241        #[doc(hidden)]
11242        pub unsafe fn DeleteBuffers_load_with_dyn(
11243            &self,
11244            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11245        ) -> bool {
11246            load_dyn_name_atomic_ptr(
11247                get_proc_address,
11248                b"glDeleteBuffers\0",
11249                &self.glDeleteBuffers_p,
11250            )
11251        }
11252        #[inline]
11253        #[doc(hidden)]
11254        pub fn DeleteBuffers_is_loaded(&self) -> bool {
11255            !self.glDeleteBuffers_p.load(RELAX).is_null()
11256        }
11257        /// [glDeleteFramebuffers](http://docs.gl/gl4/glDeleteFramebuffers)(n, framebuffers)
11258        /// * `framebuffers` len: n
11259        #[cfg_attr(feature = "inline", inline)]
11260        #[cfg_attr(feature = "inline_always", inline(always))]
11261        pub unsafe fn DeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) {
11262            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11263            {
11264                trace!(
11265                    "calling gl.DeleteFramebuffers({:?}, {:p});",
11266                    n,
11267                    framebuffers
11268                );
11269            }
11270            let out = call_atomic_ptr_2arg(
11271                "glDeleteFramebuffers",
11272                &self.glDeleteFramebuffers_p,
11273                n,
11274                framebuffers,
11275            );
11276            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11277            {
11278                self.automatic_glGetError("glDeleteFramebuffers");
11279            }
11280            out
11281        }
11282        #[doc(hidden)]
11283        pub unsafe fn DeleteFramebuffers_load_with_dyn(
11284            &self,
11285            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11286        ) -> bool {
11287            load_dyn_name_atomic_ptr(
11288                get_proc_address,
11289                b"glDeleteFramebuffers\0",
11290                &self.glDeleteFramebuffers_p,
11291            )
11292        }
11293        #[inline]
11294        #[doc(hidden)]
11295        pub fn DeleteFramebuffers_is_loaded(&self) -> bool {
11296            !self.glDeleteFramebuffers_p.load(RELAX).is_null()
11297        }
11298        /// [glDeleteProgram](http://docs.gl/gl4/glDeleteProgram)(program)
11299        #[cfg_attr(feature = "inline", inline)]
11300        #[cfg_attr(feature = "inline_always", inline(always))]
11301        pub unsafe fn DeleteProgram(&self, program: GLuint) {
11302            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11303            {
11304                trace!("calling gl.DeleteProgram({:?});", program);
11305            }
11306            let out = call_atomic_ptr_1arg("glDeleteProgram", &self.glDeleteProgram_p, program);
11307            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11308            {
11309                self.automatic_glGetError("glDeleteProgram");
11310            }
11311            out
11312        }
11313        #[doc(hidden)]
11314        pub unsafe fn DeleteProgram_load_with_dyn(
11315            &self,
11316            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11317        ) -> bool {
11318            load_dyn_name_atomic_ptr(
11319                get_proc_address,
11320                b"glDeleteProgram\0",
11321                &self.glDeleteProgram_p,
11322            )
11323        }
11324        #[inline]
11325        #[doc(hidden)]
11326        pub fn DeleteProgram_is_loaded(&self) -> bool {
11327            !self.glDeleteProgram_p.load(RELAX).is_null()
11328        }
11329        /// [glDeleteProgramPipelines](http://docs.gl/gl4/glDeleteProgramPipelines)(n, pipelines)
11330        /// * `pipelines` len: n
11331        #[cfg_attr(feature = "inline", inline)]
11332        #[cfg_attr(feature = "inline_always", inline(always))]
11333        pub unsafe fn DeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) {
11334            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11335            {
11336                trace!(
11337                    "calling gl.DeleteProgramPipelines({:?}, {:p});",
11338                    n,
11339                    pipelines
11340                );
11341            }
11342            let out = call_atomic_ptr_2arg(
11343                "glDeleteProgramPipelines",
11344                &self.glDeleteProgramPipelines_p,
11345                n,
11346                pipelines,
11347            );
11348            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11349            {
11350                self.automatic_glGetError("glDeleteProgramPipelines");
11351            }
11352            out
11353        }
11354        #[doc(hidden)]
11355        pub unsafe fn DeleteProgramPipelines_load_with_dyn(
11356            &self,
11357            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11358        ) -> bool {
11359            load_dyn_name_atomic_ptr(
11360                get_proc_address,
11361                b"glDeleteProgramPipelines\0",
11362                &self.glDeleteProgramPipelines_p,
11363            )
11364        }
11365        #[inline]
11366        #[doc(hidden)]
11367        pub fn DeleteProgramPipelines_is_loaded(&self) -> bool {
11368            !self.glDeleteProgramPipelines_p.load(RELAX).is_null()
11369        }
11370        /// [glDeleteQueries](http://docs.gl/gl4/glDeleteQueries)(n, ids)
11371        /// * `ids` len: n
11372        #[cfg_attr(feature = "inline", inline)]
11373        #[cfg_attr(feature = "inline_always", inline(always))]
11374        pub unsafe fn DeleteQueries(&self, n: GLsizei, ids: *const GLuint) {
11375            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11376            {
11377                trace!("calling gl.DeleteQueries({:?}, {:p});", n, ids);
11378            }
11379            let out = call_atomic_ptr_2arg("glDeleteQueries", &self.glDeleteQueries_p, n, ids);
11380            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11381            {
11382                self.automatic_glGetError("glDeleteQueries");
11383            }
11384            out
11385        }
11386        #[doc(hidden)]
11387        pub unsafe fn DeleteQueries_load_with_dyn(
11388            &self,
11389            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11390        ) -> bool {
11391            load_dyn_name_atomic_ptr(
11392                get_proc_address,
11393                b"glDeleteQueries\0",
11394                &self.glDeleteQueries_p,
11395            )
11396        }
11397        #[inline]
11398        #[doc(hidden)]
11399        pub fn DeleteQueries_is_loaded(&self) -> bool {
11400            !self.glDeleteQueries_p.load(RELAX).is_null()
11401        }
11402        /// [glDeleteQueriesEXT](http://docs.gl/gl4/glDeleteQueriesEXT)(n, ids)
11403        /// * `ids` len: n
11404        #[cfg_attr(feature = "inline", inline)]
11405        #[cfg_attr(feature = "inline_always", inline(always))]
11406        pub unsafe fn DeleteQueriesEXT(&self, n: GLsizei, ids: *const GLuint) {
11407            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11408            {
11409                trace!("calling gl.DeleteQueriesEXT({:?}, {:p});", n, ids);
11410            }
11411            let out =
11412                call_atomic_ptr_2arg("glDeleteQueriesEXT", &self.glDeleteQueriesEXT_p, n, ids);
11413            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11414            {
11415                self.automatic_glGetError("glDeleteQueriesEXT");
11416            }
11417            out
11418        }
11419        #[doc(hidden)]
11420        pub unsafe fn DeleteQueriesEXT_load_with_dyn(
11421            &self,
11422            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11423        ) -> bool {
11424            load_dyn_name_atomic_ptr(
11425                get_proc_address,
11426                b"glDeleteQueriesEXT\0",
11427                &self.glDeleteQueriesEXT_p,
11428            )
11429        }
11430        #[inline]
11431        #[doc(hidden)]
11432        pub fn DeleteQueriesEXT_is_loaded(&self) -> bool {
11433            !self.glDeleteQueriesEXT_p.load(RELAX).is_null()
11434        }
11435        /// [glDeleteRenderbuffers](http://docs.gl/gl4/glDeleteRenderbuffers)(n, renderbuffers)
11436        /// * `renderbuffers` len: n
11437        #[cfg_attr(feature = "inline", inline)]
11438        #[cfg_attr(feature = "inline_always", inline(always))]
11439        pub unsafe fn DeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) {
11440            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11441            {
11442                trace!(
11443                    "calling gl.DeleteRenderbuffers({:?}, {:p});",
11444                    n,
11445                    renderbuffers
11446                );
11447            }
11448            let out = call_atomic_ptr_2arg(
11449                "glDeleteRenderbuffers",
11450                &self.glDeleteRenderbuffers_p,
11451                n,
11452                renderbuffers,
11453            );
11454            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11455            {
11456                self.automatic_glGetError("glDeleteRenderbuffers");
11457            }
11458            out
11459        }
11460        #[doc(hidden)]
11461        pub unsafe fn DeleteRenderbuffers_load_with_dyn(
11462            &self,
11463            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11464        ) -> bool {
11465            load_dyn_name_atomic_ptr(
11466                get_proc_address,
11467                b"glDeleteRenderbuffers\0",
11468                &self.glDeleteRenderbuffers_p,
11469            )
11470        }
11471        #[inline]
11472        #[doc(hidden)]
11473        pub fn DeleteRenderbuffers_is_loaded(&self) -> bool {
11474            !self.glDeleteRenderbuffers_p.load(RELAX).is_null()
11475        }
11476        /// [glDeleteSamplers](http://docs.gl/gl4/glDeleteSamplers)(count, samplers)
11477        /// * `samplers` len: count
11478        #[cfg_attr(feature = "inline", inline)]
11479        #[cfg_attr(feature = "inline_always", inline(always))]
11480        pub unsafe fn DeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) {
11481            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11482            {
11483                trace!("calling gl.DeleteSamplers({:?}, {:p});", count, samplers);
11484            }
11485            let out = call_atomic_ptr_2arg(
11486                "glDeleteSamplers",
11487                &self.glDeleteSamplers_p,
11488                count,
11489                samplers,
11490            );
11491            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11492            {
11493                self.automatic_glGetError("glDeleteSamplers");
11494            }
11495            out
11496        }
11497        #[doc(hidden)]
11498        pub unsafe fn DeleteSamplers_load_with_dyn(
11499            &self,
11500            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11501        ) -> bool {
11502            load_dyn_name_atomic_ptr(
11503                get_proc_address,
11504                b"glDeleteSamplers\0",
11505                &self.glDeleteSamplers_p,
11506            )
11507        }
11508        #[inline]
11509        #[doc(hidden)]
11510        pub fn DeleteSamplers_is_loaded(&self) -> bool {
11511            !self.glDeleteSamplers_p.load(RELAX).is_null()
11512        }
11513        /// [glDeleteShader](http://docs.gl/gl4/glDeleteShader)(shader)
11514        #[cfg_attr(feature = "inline", inline)]
11515        #[cfg_attr(feature = "inline_always", inline(always))]
11516        pub unsafe fn DeleteShader(&self, shader: GLuint) {
11517            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11518            {
11519                trace!("calling gl.DeleteShader({:?});", shader);
11520            }
11521            let out = call_atomic_ptr_1arg("glDeleteShader", &self.glDeleteShader_p, shader);
11522            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11523            {
11524                self.automatic_glGetError("glDeleteShader");
11525            }
11526            out
11527        }
11528        #[doc(hidden)]
11529        pub unsafe fn DeleteShader_load_with_dyn(
11530            &self,
11531            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11532        ) -> bool {
11533            load_dyn_name_atomic_ptr(
11534                get_proc_address,
11535                b"glDeleteShader\0",
11536                &self.glDeleteShader_p,
11537            )
11538        }
11539        #[inline]
11540        #[doc(hidden)]
11541        pub fn DeleteShader_is_loaded(&self) -> bool {
11542            !self.glDeleteShader_p.load(RELAX).is_null()
11543        }
11544        /// [glDeleteSync](http://docs.gl/gl4/glDeleteSync)(sync)
11545        /// * `sync` group: sync
11546        #[cfg_attr(feature = "inline", inline)]
11547        #[cfg_attr(feature = "inline_always", inline(always))]
11548        pub unsafe fn DeleteSync(&self, sync: GLsync) {
11549            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11550            {
11551                trace!("calling gl.DeleteSync({:p});", sync);
11552            }
11553            let out = call_atomic_ptr_1arg("glDeleteSync", &self.glDeleteSync_p, sync);
11554            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11555            {
11556                self.automatic_glGetError("glDeleteSync");
11557            }
11558            out
11559        }
11560        #[doc(hidden)]
11561        pub unsafe fn DeleteSync_load_with_dyn(
11562            &self,
11563            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11564        ) -> bool {
11565            load_dyn_name_atomic_ptr(get_proc_address, b"glDeleteSync\0", &self.glDeleteSync_p)
11566        }
11567        #[inline]
11568        #[doc(hidden)]
11569        pub fn DeleteSync_is_loaded(&self) -> bool {
11570            !self.glDeleteSync_p.load(RELAX).is_null()
11571        }
11572        /// [glDeleteTextures](http://docs.gl/gl4/glDeleteTextures)(n, textures)
11573        /// * `textures` group: Texture
11574        /// * `textures` len: n
11575        #[cfg_attr(feature = "inline", inline)]
11576        #[cfg_attr(feature = "inline_always", inline(always))]
11577        pub unsafe fn DeleteTextures(&self, n: GLsizei, textures: *const GLuint) {
11578            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11579            {
11580                trace!("calling gl.DeleteTextures({:?}, {:p});", n, textures);
11581            }
11582            let out =
11583                call_atomic_ptr_2arg("glDeleteTextures", &self.glDeleteTextures_p, n, textures);
11584            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11585            {
11586                self.automatic_glGetError("glDeleteTextures");
11587            }
11588            out
11589        }
11590        #[doc(hidden)]
11591        pub unsafe fn DeleteTextures_load_with_dyn(
11592            &self,
11593            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11594        ) -> bool {
11595            load_dyn_name_atomic_ptr(
11596                get_proc_address,
11597                b"glDeleteTextures\0",
11598                &self.glDeleteTextures_p,
11599            )
11600        }
11601        #[inline]
11602        #[doc(hidden)]
11603        pub fn DeleteTextures_is_loaded(&self) -> bool {
11604            !self.glDeleteTextures_p.load(RELAX).is_null()
11605        }
11606        /// [glDeleteTransformFeedbacks](http://docs.gl/gl4/glDeleteTransformFeedbacks)(n, ids)
11607        /// * `ids` len: n
11608        #[cfg_attr(feature = "inline", inline)]
11609        #[cfg_attr(feature = "inline_always", inline(always))]
11610        pub unsafe fn DeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) {
11611            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11612            {
11613                trace!("calling gl.DeleteTransformFeedbacks({:?}, {:p});", n, ids);
11614            }
11615            let out = call_atomic_ptr_2arg(
11616                "glDeleteTransformFeedbacks",
11617                &self.glDeleteTransformFeedbacks_p,
11618                n,
11619                ids,
11620            );
11621            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11622            {
11623                self.automatic_glGetError("glDeleteTransformFeedbacks");
11624            }
11625            out
11626        }
11627        #[doc(hidden)]
11628        pub unsafe fn DeleteTransformFeedbacks_load_with_dyn(
11629            &self,
11630            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11631        ) -> bool {
11632            load_dyn_name_atomic_ptr(
11633                get_proc_address,
11634                b"glDeleteTransformFeedbacks\0",
11635                &self.glDeleteTransformFeedbacks_p,
11636            )
11637        }
11638        #[inline]
11639        #[doc(hidden)]
11640        pub fn DeleteTransformFeedbacks_is_loaded(&self) -> bool {
11641            !self.glDeleteTransformFeedbacks_p.load(RELAX).is_null()
11642        }
11643        /// [glDeleteVertexArrays](http://docs.gl/gl4/glDeleteVertexArrays)(n, arrays)
11644        /// * `arrays` len: n
11645        #[cfg_attr(feature = "inline", inline)]
11646        #[cfg_attr(feature = "inline_always", inline(always))]
11647        pub unsafe fn DeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) {
11648            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11649            {
11650                trace!("calling gl.DeleteVertexArrays({:?}, {:p});", n, arrays);
11651            }
11652            let out = call_atomic_ptr_2arg(
11653                "glDeleteVertexArrays",
11654                &self.glDeleteVertexArrays_p,
11655                n,
11656                arrays,
11657            );
11658            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11659            {
11660                self.automatic_glGetError("glDeleteVertexArrays");
11661            }
11662            out
11663        }
11664        #[doc(hidden)]
11665        pub unsafe fn DeleteVertexArrays_load_with_dyn(
11666            &self,
11667            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11668        ) -> bool {
11669            load_dyn_name_atomic_ptr(
11670                get_proc_address,
11671                b"glDeleteVertexArrays\0",
11672                &self.glDeleteVertexArrays_p,
11673            )
11674        }
11675        #[inline]
11676        #[doc(hidden)]
11677        pub fn DeleteVertexArrays_is_loaded(&self) -> bool {
11678            !self.glDeleteVertexArrays_p.load(RELAX).is_null()
11679        }
11680        /// [glDeleteVertexArraysAPPLE](http://docs.gl/gl4/glDeleteVertexArraysAPPLE)(n, arrays)
11681        /// * `arrays` len: n
11682        /// * alias of: [`glDeleteVertexArrays`]
11683        #[cfg_attr(feature = "inline", inline)]
11684        #[cfg_attr(feature = "inline_always", inline(always))]
11685        pub unsafe fn DeleteVertexArraysAPPLE(&self, n: GLsizei, arrays: *const GLuint) {
11686            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11687            {
11688                trace!("calling gl.DeleteVertexArraysAPPLE({:?}, {:p});", n, arrays);
11689            }
11690            let out = call_atomic_ptr_2arg(
11691                "glDeleteVertexArraysAPPLE",
11692                &self.glDeleteVertexArraysAPPLE_p,
11693                n,
11694                arrays,
11695            );
11696            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11697            {
11698                self.automatic_glGetError("glDeleteVertexArraysAPPLE");
11699            }
11700            out
11701        }
11702        #[doc(hidden)]
11703        pub unsafe fn DeleteVertexArraysAPPLE_load_with_dyn(
11704            &self,
11705            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11706        ) -> bool {
11707            load_dyn_name_atomic_ptr(
11708                get_proc_address,
11709                b"glDeleteVertexArraysAPPLE\0",
11710                &self.glDeleteVertexArraysAPPLE_p,
11711            )
11712        }
11713        #[inline]
11714        #[doc(hidden)]
11715        pub fn DeleteVertexArraysAPPLE_is_loaded(&self) -> bool {
11716            !self.glDeleteVertexArraysAPPLE_p.load(RELAX).is_null()
11717        }
11718        /// [glDeleteVertexArraysOES](http://docs.gl/gl4/glDeleteVertexArraysOES)(n, arrays)
11719        /// * `arrays` len: n
11720        /// * alias of: [`glDeleteVertexArrays`]
11721        #[cfg_attr(feature = "inline", inline)]
11722        #[cfg_attr(feature = "inline_always", inline(always))]
11723        pub unsafe fn DeleteVertexArraysOES(&self, n: GLsizei, arrays: *const GLuint) {
11724            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11725            {
11726                trace!("calling gl.DeleteVertexArraysOES({:?}, {:p});", n, arrays);
11727            }
11728            let out = call_atomic_ptr_2arg(
11729                "glDeleteVertexArraysOES",
11730                &self.glDeleteVertexArraysOES_p,
11731                n,
11732                arrays,
11733            );
11734            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11735            {
11736                self.automatic_glGetError("glDeleteVertexArraysOES");
11737            }
11738            out
11739        }
11740        #[doc(hidden)]
11741        pub unsafe fn DeleteVertexArraysOES_load_with_dyn(
11742            &self,
11743            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11744        ) -> bool {
11745            load_dyn_name_atomic_ptr(
11746                get_proc_address,
11747                b"glDeleteVertexArraysOES\0",
11748                &self.glDeleteVertexArraysOES_p,
11749            )
11750        }
11751        #[inline]
11752        #[doc(hidden)]
11753        pub fn DeleteVertexArraysOES_is_loaded(&self) -> bool {
11754            !self.glDeleteVertexArraysOES_p.load(RELAX).is_null()
11755        }
11756        /// [glDepthFunc](http://docs.gl/gl4/glDepthFunc)(func)
11757        /// * `func` group: DepthFunction
11758        #[cfg_attr(feature = "inline", inline)]
11759        #[cfg_attr(feature = "inline_always", inline(always))]
11760        pub unsafe fn DepthFunc(&self, func: GLenum) {
11761            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11762            {
11763                trace!("calling gl.DepthFunc({:#X});", func);
11764            }
11765            let out = call_atomic_ptr_1arg("glDepthFunc", &self.glDepthFunc_p, func);
11766            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11767            {
11768                self.automatic_glGetError("glDepthFunc");
11769            }
11770            out
11771        }
11772        #[doc(hidden)]
11773        pub unsafe fn DepthFunc_load_with_dyn(
11774            &self,
11775            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11776        ) -> bool {
11777            load_dyn_name_atomic_ptr(get_proc_address, b"glDepthFunc\0", &self.glDepthFunc_p)
11778        }
11779        #[inline]
11780        #[doc(hidden)]
11781        pub fn DepthFunc_is_loaded(&self) -> bool {
11782            !self.glDepthFunc_p.load(RELAX).is_null()
11783        }
11784        /// [glDepthMask](http://docs.gl/gl4/glDepthMask)(flag)
11785        #[cfg_attr(feature = "inline", inline)]
11786        #[cfg_attr(feature = "inline_always", inline(always))]
11787        pub unsafe fn DepthMask(&self, flag: GLboolean) {
11788            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11789            {
11790                trace!("calling gl.DepthMask({:?});", flag);
11791            }
11792            let out = call_atomic_ptr_1arg("glDepthMask", &self.glDepthMask_p, flag);
11793            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11794            {
11795                self.automatic_glGetError("glDepthMask");
11796            }
11797            out
11798        }
11799        #[doc(hidden)]
11800        pub unsafe fn DepthMask_load_with_dyn(
11801            &self,
11802            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11803        ) -> bool {
11804            load_dyn_name_atomic_ptr(get_proc_address, b"glDepthMask\0", &self.glDepthMask_p)
11805        }
11806        #[inline]
11807        #[doc(hidden)]
11808        pub fn DepthMask_is_loaded(&self) -> bool {
11809            !self.glDepthMask_p.load(RELAX).is_null()
11810        }
11811        /// [glDepthRange](http://docs.gl/gl4/glDepthRange)(n, f)
11812        #[cfg_attr(feature = "inline", inline)]
11813        #[cfg_attr(feature = "inline_always", inline(always))]
11814        pub unsafe fn DepthRange(&self, n: GLdouble, f: GLdouble) {
11815            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11816            {
11817                trace!("calling gl.DepthRange({:?}, {:?});", n, f);
11818            }
11819            let out = call_atomic_ptr_2arg("glDepthRange", &self.glDepthRange_p, n, f);
11820            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11821            {
11822                self.automatic_glGetError("glDepthRange");
11823            }
11824            out
11825        }
11826        #[doc(hidden)]
11827        pub unsafe fn DepthRange_load_with_dyn(
11828            &self,
11829            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11830        ) -> bool {
11831            load_dyn_name_atomic_ptr(get_proc_address, b"glDepthRange\0", &self.glDepthRange_p)
11832        }
11833        #[inline]
11834        #[doc(hidden)]
11835        pub fn DepthRange_is_loaded(&self) -> bool {
11836            !self.glDepthRange_p.load(RELAX).is_null()
11837        }
11838        /// [glDepthRangeArrayv](http://docs.gl/gl4/glDepthRangeArrayv)(first, count, v)
11839        /// * `v` len: COMPSIZE(count)
11840        #[cfg_attr(feature = "inline", inline)]
11841        #[cfg_attr(feature = "inline_always", inline(always))]
11842        pub unsafe fn DepthRangeArrayv(&self, first: GLuint, count: GLsizei, v: *const GLdouble) {
11843            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11844            {
11845                trace!(
11846                    "calling gl.DepthRangeArrayv({:?}, {:?}, {:p});",
11847                    first,
11848                    count,
11849                    v
11850                );
11851            }
11852            let out = call_atomic_ptr_3arg(
11853                "glDepthRangeArrayv",
11854                &self.glDepthRangeArrayv_p,
11855                first,
11856                count,
11857                v,
11858            );
11859            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11860            {
11861                self.automatic_glGetError("glDepthRangeArrayv");
11862            }
11863            out
11864        }
11865        #[doc(hidden)]
11866        pub unsafe fn DepthRangeArrayv_load_with_dyn(
11867            &self,
11868            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11869        ) -> bool {
11870            load_dyn_name_atomic_ptr(
11871                get_proc_address,
11872                b"glDepthRangeArrayv\0",
11873                &self.glDepthRangeArrayv_p,
11874            )
11875        }
11876        #[inline]
11877        #[doc(hidden)]
11878        pub fn DepthRangeArrayv_is_loaded(&self) -> bool {
11879            !self.glDepthRangeArrayv_p.load(RELAX).is_null()
11880        }
11881        /// [glDepthRangeIndexed](http://docs.gl/gl4/glDepthRangeIndexed)(index, n, f)
11882        #[cfg_attr(feature = "inline", inline)]
11883        #[cfg_attr(feature = "inline_always", inline(always))]
11884        pub unsafe fn DepthRangeIndexed(&self, index: GLuint, n: GLdouble, f: GLdouble) {
11885            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11886            {
11887                trace!(
11888                    "calling gl.DepthRangeIndexed({:?}, {:?}, {:?});",
11889                    index,
11890                    n,
11891                    f
11892                );
11893            }
11894            let out = call_atomic_ptr_3arg(
11895                "glDepthRangeIndexed",
11896                &self.glDepthRangeIndexed_p,
11897                index,
11898                n,
11899                f,
11900            );
11901            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11902            {
11903                self.automatic_glGetError("glDepthRangeIndexed");
11904            }
11905            out
11906        }
11907        #[doc(hidden)]
11908        pub unsafe fn DepthRangeIndexed_load_with_dyn(
11909            &self,
11910            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11911        ) -> bool {
11912            load_dyn_name_atomic_ptr(
11913                get_proc_address,
11914                b"glDepthRangeIndexed\0",
11915                &self.glDepthRangeIndexed_p,
11916            )
11917        }
11918        #[inline]
11919        #[doc(hidden)]
11920        pub fn DepthRangeIndexed_is_loaded(&self) -> bool {
11921            !self.glDepthRangeIndexed_p.load(RELAX).is_null()
11922        }
11923        /// [glDepthRangef](http://docs.gl/gl4/glDepthRange)(n, f)
11924        #[cfg_attr(feature = "inline", inline)]
11925        #[cfg_attr(feature = "inline_always", inline(always))]
11926        pub unsafe fn DepthRangef(&self, n: GLfloat, f: GLfloat) {
11927            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11928            {
11929                trace!("calling gl.DepthRangef({:?}, {:?});", n, f);
11930            }
11931            let out = call_atomic_ptr_2arg("glDepthRangef", &self.glDepthRangef_p, n, f);
11932            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11933            {
11934                self.automatic_glGetError("glDepthRangef");
11935            }
11936            out
11937        }
11938        #[doc(hidden)]
11939        pub unsafe fn DepthRangef_load_with_dyn(
11940            &self,
11941            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11942        ) -> bool {
11943            load_dyn_name_atomic_ptr(get_proc_address, b"glDepthRangef\0", &self.glDepthRangef_p)
11944        }
11945        #[inline]
11946        #[doc(hidden)]
11947        pub fn DepthRangef_is_loaded(&self) -> bool {
11948            !self.glDepthRangef_p.load(RELAX).is_null()
11949        }
11950        /// [glDetachShader](http://docs.gl/gl4/glDetachShader)(program, shader)
11951        #[cfg_attr(feature = "inline", inline)]
11952        #[cfg_attr(feature = "inline_always", inline(always))]
11953        pub unsafe fn DetachShader(&self, program: GLuint, shader: GLuint) {
11954            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11955            {
11956                trace!("calling gl.DetachShader({:?}, {:?});", program, shader);
11957            }
11958            let out =
11959                call_atomic_ptr_2arg("glDetachShader", &self.glDetachShader_p, program, shader);
11960            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11961            {
11962                self.automatic_glGetError("glDetachShader");
11963            }
11964            out
11965        }
11966        #[doc(hidden)]
11967        pub unsafe fn DetachShader_load_with_dyn(
11968            &self,
11969            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11970        ) -> bool {
11971            load_dyn_name_atomic_ptr(
11972                get_proc_address,
11973                b"glDetachShader\0",
11974                &self.glDetachShader_p,
11975            )
11976        }
11977        #[inline]
11978        #[doc(hidden)]
11979        pub fn DetachShader_is_loaded(&self) -> bool {
11980            !self.glDetachShader_p.load(RELAX).is_null()
11981        }
11982        /// [glDisable](http://docs.gl/gl4/glDisable)(cap)
11983        /// * `cap` group: EnableCap
11984        #[cfg_attr(feature = "inline", inline)]
11985        #[cfg_attr(feature = "inline_always", inline(always))]
11986        pub unsafe fn Disable(&self, cap: GLenum) {
11987            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11988            {
11989                trace!("calling gl.Disable({:#X});", cap);
11990            }
11991            let out = call_atomic_ptr_1arg("glDisable", &self.glDisable_p, cap);
11992            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11993            {
11994                self.automatic_glGetError("glDisable");
11995            }
11996            out
11997        }
11998        #[doc(hidden)]
11999        pub unsafe fn Disable_load_with_dyn(
12000            &self,
12001            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12002        ) -> bool {
12003            load_dyn_name_atomic_ptr(get_proc_address, b"glDisable\0", &self.glDisable_p)
12004        }
12005        #[inline]
12006        #[doc(hidden)]
12007        pub fn Disable_is_loaded(&self) -> bool {
12008            !self.glDisable_p.load(RELAX).is_null()
12009        }
12010        /// [glDisableIndexedEXT](http://docs.gl/gl4/glDisableIndexedEXT)(target, index)
12011        /// * `target` group: EnableCap
12012        /// * alias of: [`glDisablei`]
12013        #[cfg_attr(feature = "inline", inline)]
12014        #[cfg_attr(feature = "inline_always", inline(always))]
12015        pub unsafe fn DisableIndexedEXT(&self, target: GLenum, index: GLuint) {
12016            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12017            {
12018                trace!("calling gl.DisableIndexedEXT({:#X}, {:?});", target, index);
12019            }
12020            let out = call_atomic_ptr_2arg(
12021                "glDisableIndexedEXT",
12022                &self.glDisableIndexedEXT_p,
12023                target,
12024                index,
12025            );
12026            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12027            {
12028                self.automatic_glGetError("glDisableIndexedEXT");
12029            }
12030            out
12031        }
12032        #[doc(hidden)]
12033        pub unsafe fn DisableIndexedEXT_load_with_dyn(
12034            &self,
12035            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12036        ) -> bool {
12037            load_dyn_name_atomic_ptr(
12038                get_proc_address,
12039                b"glDisableIndexedEXT\0",
12040                &self.glDisableIndexedEXT_p,
12041            )
12042        }
12043        #[inline]
12044        #[doc(hidden)]
12045        pub fn DisableIndexedEXT_is_loaded(&self) -> bool {
12046            !self.glDisableIndexedEXT_p.load(RELAX).is_null()
12047        }
12048        /// [glDisableVertexArrayAttrib](http://docs.gl/gl4/glDisableVertexArrayAttrib)(vaobj, index)
12049        #[cfg_attr(feature = "inline", inline)]
12050        #[cfg_attr(feature = "inline_always", inline(always))]
12051        pub unsafe fn DisableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) {
12052            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12053            {
12054                trace!(
12055                    "calling gl.DisableVertexArrayAttrib({:?}, {:?});",
12056                    vaobj,
12057                    index
12058                );
12059            }
12060            let out = call_atomic_ptr_2arg(
12061                "glDisableVertexArrayAttrib",
12062                &self.glDisableVertexArrayAttrib_p,
12063                vaobj,
12064                index,
12065            );
12066            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12067            {
12068                self.automatic_glGetError("glDisableVertexArrayAttrib");
12069            }
12070            out
12071        }
12072        #[doc(hidden)]
12073        pub unsafe fn DisableVertexArrayAttrib_load_with_dyn(
12074            &self,
12075            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12076        ) -> bool {
12077            load_dyn_name_atomic_ptr(
12078                get_proc_address,
12079                b"glDisableVertexArrayAttrib\0",
12080                &self.glDisableVertexArrayAttrib_p,
12081            )
12082        }
12083        #[inline]
12084        #[doc(hidden)]
12085        pub fn DisableVertexArrayAttrib_is_loaded(&self) -> bool {
12086            !self.glDisableVertexArrayAttrib_p.load(RELAX).is_null()
12087        }
12088        /// [glDisableVertexAttribArray](http://docs.gl/gl4/glDisableVertexAttribArray)(index)
12089        #[cfg_attr(feature = "inline", inline)]
12090        #[cfg_attr(feature = "inline_always", inline(always))]
12091        pub unsafe fn DisableVertexAttribArray(&self, index: GLuint) {
12092            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12093            {
12094                trace!("calling gl.DisableVertexAttribArray({:?});", index);
12095            }
12096            let out = call_atomic_ptr_1arg(
12097                "glDisableVertexAttribArray",
12098                &self.glDisableVertexAttribArray_p,
12099                index,
12100            );
12101            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12102            {
12103                self.automatic_glGetError("glDisableVertexAttribArray");
12104            }
12105            out
12106        }
12107        #[doc(hidden)]
12108        pub unsafe fn DisableVertexAttribArray_load_with_dyn(
12109            &self,
12110            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12111        ) -> bool {
12112            load_dyn_name_atomic_ptr(
12113                get_proc_address,
12114                b"glDisableVertexAttribArray\0",
12115                &self.glDisableVertexAttribArray_p,
12116            )
12117        }
12118        #[inline]
12119        #[doc(hidden)]
12120        pub fn DisableVertexAttribArray_is_loaded(&self) -> bool {
12121            !self.glDisableVertexAttribArray_p.load(RELAX).is_null()
12122        }
12123        /// [glDisablei](http://docs.gl/gl4/glDisable)(target, index)
12124        /// * `target` group: EnableCap
12125        #[cfg_attr(feature = "inline", inline)]
12126        #[cfg_attr(feature = "inline_always", inline(always))]
12127        pub unsafe fn Disablei(&self, target: GLenum, index: GLuint) {
12128            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12129            {
12130                trace!("calling gl.Disablei({:#X}, {:?});", target, index);
12131            }
12132            let out = call_atomic_ptr_2arg("glDisablei", &self.glDisablei_p, target, index);
12133            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12134            {
12135                self.automatic_glGetError("glDisablei");
12136            }
12137            out
12138        }
12139        #[doc(hidden)]
12140        pub unsafe fn Disablei_load_with_dyn(
12141            &self,
12142            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12143        ) -> bool {
12144            load_dyn_name_atomic_ptr(get_proc_address, b"glDisablei\0", &self.glDisablei_p)
12145        }
12146        #[inline]
12147        #[doc(hidden)]
12148        pub fn Disablei_is_loaded(&self) -> bool {
12149            !self.glDisablei_p.load(RELAX).is_null()
12150        }
12151        /// [glDispatchCompute](http://docs.gl/gl4/glDispatchCompute)(num_groups_x, num_groups_y, num_groups_z)
12152        #[cfg_attr(feature = "inline", inline)]
12153        #[cfg_attr(feature = "inline_always", inline(always))]
12154        pub unsafe fn DispatchCompute(
12155            &self,
12156            num_groups_x: GLuint,
12157            num_groups_y: GLuint,
12158            num_groups_z: GLuint,
12159        ) {
12160            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12161            {
12162                trace!(
12163                    "calling gl.DispatchCompute({:?}, {:?}, {:?});",
12164                    num_groups_x,
12165                    num_groups_y,
12166                    num_groups_z
12167                );
12168            }
12169            let out = call_atomic_ptr_3arg(
12170                "glDispatchCompute",
12171                &self.glDispatchCompute_p,
12172                num_groups_x,
12173                num_groups_y,
12174                num_groups_z,
12175            );
12176            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12177            {
12178                self.automatic_glGetError("glDispatchCompute");
12179            }
12180            out
12181        }
12182        #[doc(hidden)]
12183        pub unsafe fn DispatchCompute_load_with_dyn(
12184            &self,
12185            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12186        ) -> bool {
12187            load_dyn_name_atomic_ptr(
12188                get_proc_address,
12189                b"glDispatchCompute\0",
12190                &self.glDispatchCompute_p,
12191            )
12192        }
12193        #[inline]
12194        #[doc(hidden)]
12195        pub fn DispatchCompute_is_loaded(&self) -> bool {
12196            !self.glDispatchCompute_p.load(RELAX).is_null()
12197        }
12198        /// [glDispatchComputeIndirect](http://docs.gl/gl4/glDispatchComputeIndirect)(indirect)
12199        /// * `indirect` group: BufferOffset
12200        #[cfg_attr(feature = "inline", inline)]
12201        #[cfg_attr(feature = "inline_always", inline(always))]
12202        pub unsafe fn DispatchComputeIndirect(&self, indirect: GLintptr) {
12203            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12204            {
12205                trace!("calling gl.DispatchComputeIndirect({:?});", indirect);
12206            }
12207            let out = call_atomic_ptr_1arg(
12208                "glDispatchComputeIndirect",
12209                &self.glDispatchComputeIndirect_p,
12210                indirect,
12211            );
12212            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12213            {
12214                self.automatic_glGetError("glDispatchComputeIndirect");
12215            }
12216            out
12217        }
12218        #[doc(hidden)]
12219        pub unsafe fn DispatchComputeIndirect_load_with_dyn(
12220            &self,
12221            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12222        ) -> bool {
12223            load_dyn_name_atomic_ptr(
12224                get_proc_address,
12225                b"glDispatchComputeIndirect\0",
12226                &self.glDispatchComputeIndirect_p,
12227            )
12228        }
12229        #[inline]
12230        #[doc(hidden)]
12231        pub fn DispatchComputeIndirect_is_loaded(&self) -> bool {
12232            !self.glDispatchComputeIndirect_p.load(RELAX).is_null()
12233        }
12234        /// [glDrawArrays](http://docs.gl/gl4/glDrawArrays)(mode, first, count)
12235        /// * `mode` group: PrimitiveType
12236        #[cfg_attr(feature = "inline", inline)]
12237        #[cfg_attr(feature = "inline_always", inline(always))]
12238        pub unsafe fn DrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) {
12239            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12240            {
12241                trace!(
12242                    "calling gl.DrawArrays({:#X}, {:?}, {:?});",
12243                    mode,
12244                    first,
12245                    count
12246                );
12247            }
12248            let out =
12249                call_atomic_ptr_3arg("glDrawArrays", &self.glDrawArrays_p, mode, first, count);
12250            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12251            {
12252                self.automatic_glGetError("glDrawArrays");
12253            }
12254            out
12255        }
12256        #[doc(hidden)]
12257        pub unsafe fn DrawArrays_load_with_dyn(
12258            &self,
12259            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12260        ) -> bool {
12261            load_dyn_name_atomic_ptr(get_proc_address, b"glDrawArrays\0", &self.glDrawArrays_p)
12262        }
12263        #[inline]
12264        #[doc(hidden)]
12265        pub fn DrawArrays_is_loaded(&self) -> bool {
12266            !self.glDrawArrays_p.load(RELAX).is_null()
12267        }
12268        /// [glDrawArraysIndirect](http://docs.gl/gl4/glDrawArraysIndirect)(mode, indirect)
12269        /// * `mode` group: PrimitiveType
12270        #[cfg_attr(feature = "inline", inline)]
12271        #[cfg_attr(feature = "inline_always", inline(always))]
12272        pub unsafe fn DrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) {
12273            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12274            {
12275                trace!(
12276                    "calling gl.DrawArraysIndirect({:#X}, {:p});",
12277                    mode,
12278                    indirect
12279                );
12280            }
12281            let out = call_atomic_ptr_2arg(
12282                "glDrawArraysIndirect",
12283                &self.glDrawArraysIndirect_p,
12284                mode,
12285                indirect,
12286            );
12287            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12288            {
12289                self.automatic_glGetError("glDrawArraysIndirect");
12290            }
12291            out
12292        }
12293        #[doc(hidden)]
12294        pub unsafe fn DrawArraysIndirect_load_with_dyn(
12295            &self,
12296            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12297        ) -> bool {
12298            load_dyn_name_atomic_ptr(
12299                get_proc_address,
12300                b"glDrawArraysIndirect\0",
12301                &self.glDrawArraysIndirect_p,
12302            )
12303        }
12304        #[inline]
12305        #[doc(hidden)]
12306        pub fn DrawArraysIndirect_is_loaded(&self) -> bool {
12307            !self.glDrawArraysIndirect_p.load(RELAX).is_null()
12308        }
12309        /// [glDrawArraysInstanced](http://docs.gl/gl4/glDrawArraysInstanced)(mode, first, count, instancecount)
12310        /// * `mode` group: PrimitiveType
12311        #[cfg_attr(feature = "inline", inline)]
12312        #[cfg_attr(feature = "inline_always", inline(always))]
12313        pub unsafe fn DrawArraysInstanced(
12314            &self,
12315            mode: GLenum,
12316            first: GLint,
12317            count: GLsizei,
12318            instancecount: GLsizei,
12319        ) {
12320            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12321            {
12322                trace!(
12323                    "calling gl.DrawArraysInstanced({:#X}, {:?}, {:?}, {:?});",
12324                    mode,
12325                    first,
12326                    count,
12327                    instancecount
12328                );
12329            }
12330            let out = call_atomic_ptr_4arg(
12331                "glDrawArraysInstanced",
12332                &self.glDrawArraysInstanced_p,
12333                mode,
12334                first,
12335                count,
12336                instancecount,
12337            );
12338            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12339            {
12340                self.automatic_glGetError("glDrawArraysInstanced");
12341            }
12342            out
12343        }
12344        #[doc(hidden)]
12345        pub unsafe fn DrawArraysInstanced_load_with_dyn(
12346            &self,
12347            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12348        ) -> bool {
12349            load_dyn_name_atomic_ptr(
12350                get_proc_address,
12351                b"glDrawArraysInstanced\0",
12352                &self.glDrawArraysInstanced_p,
12353            )
12354        }
12355        #[inline]
12356        #[doc(hidden)]
12357        pub fn DrawArraysInstanced_is_loaded(&self) -> bool {
12358            !self.glDrawArraysInstanced_p.load(RELAX).is_null()
12359        }
12360        /// [glDrawArraysInstancedARB](http://docs.gl/gl4/glDrawArraysInstancedARB)(mode, first, count, primcount)
12361        /// * `mode` group: PrimitiveType
12362        /// * alias of: [`glDrawArraysInstanced`]
12363        #[cfg_attr(feature = "inline", inline)]
12364        #[cfg_attr(feature = "inline_always", inline(always))]
12365        pub unsafe fn DrawArraysInstancedARB(
12366            &self,
12367            mode: GLenum,
12368            first: GLint,
12369            count: GLsizei,
12370            primcount: GLsizei,
12371        ) {
12372            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12373            {
12374                trace!(
12375                    "calling gl.DrawArraysInstancedARB({:#X}, {:?}, {:?}, {:?});",
12376                    mode,
12377                    first,
12378                    count,
12379                    primcount
12380                );
12381            }
12382            let out = call_atomic_ptr_4arg(
12383                "glDrawArraysInstancedARB",
12384                &self.glDrawArraysInstancedARB_p,
12385                mode,
12386                first,
12387                count,
12388                primcount,
12389            );
12390            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12391            {
12392                self.automatic_glGetError("glDrawArraysInstancedARB");
12393            }
12394            out
12395        }
12396        #[doc(hidden)]
12397        pub unsafe fn DrawArraysInstancedARB_load_with_dyn(
12398            &self,
12399            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12400        ) -> bool {
12401            load_dyn_name_atomic_ptr(
12402                get_proc_address,
12403                b"glDrawArraysInstancedARB\0",
12404                &self.glDrawArraysInstancedARB_p,
12405            )
12406        }
12407        #[inline]
12408        #[doc(hidden)]
12409        pub fn DrawArraysInstancedARB_is_loaded(&self) -> bool {
12410            !self.glDrawArraysInstancedARB_p.load(RELAX).is_null()
12411        }
12412        /// [glDrawArraysInstancedBaseInstance](http://docs.gl/gl4/glDrawArraysInstancedBaseInstance)(mode, first, count, instancecount, baseinstance)
12413        /// * `mode` group: PrimitiveType
12414        #[cfg_attr(feature = "inline", inline)]
12415        #[cfg_attr(feature = "inline_always", inline(always))]
12416        pub unsafe fn DrawArraysInstancedBaseInstance(
12417            &self,
12418            mode: GLenum,
12419            first: GLint,
12420            count: GLsizei,
12421            instancecount: GLsizei,
12422            baseinstance: GLuint,
12423        ) {
12424            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12425            {
12426                trace!(
12427                    "calling gl.DrawArraysInstancedBaseInstance({:#X}, {:?}, {:?}, {:?}, {:?});",
12428                    mode,
12429                    first,
12430                    count,
12431                    instancecount,
12432                    baseinstance
12433                );
12434            }
12435            let out = call_atomic_ptr_5arg(
12436                "glDrawArraysInstancedBaseInstance",
12437                &self.glDrawArraysInstancedBaseInstance_p,
12438                mode,
12439                first,
12440                count,
12441                instancecount,
12442                baseinstance,
12443            );
12444            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12445            {
12446                self.automatic_glGetError("glDrawArraysInstancedBaseInstance");
12447            }
12448            out
12449        }
12450        #[doc(hidden)]
12451        pub unsafe fn DrawArraysInstancedBaseInstance_load_with_dyn(
12452            &self,
12453            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12454        ) -> bool {
12455            load_dyn_name_atomic_ptr(
12456                get_proc_address,
12457                b"glDrawArraysInstancedBaseInstance\0",
12458                &self.glDrawArraysInstancedBaseInstance_p,
12459            )
12460        }
12461        #[inline]
12462        #[doc(hidden)]
12463        pub fn DrawArraysInstancedBaseInstance_is_loaded(&self) -> bool {
12464            !self
12465                .glDrawArraysInstancedBaseInstance_p
12466                .load(RELAX)
12467                .is_null()
12468        }
12469        /// [glDrawBuffer](http://docs.gl/gl4/glDrawBuffer)(buf)
12470        /// * `buf` group: DrawBufferMode
12471        #[cfg_attr(feature = "inline", inline)]
12472        #[cfg_attr(feature = "inline_always", inline(always))]
12473        pub unsafe fn DrawBuffer(&self, buf: GLenum) {
12474            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12475            {
12476                trace!("calling gl.DrawBuffer({:#X});", buf);
12477            }
12478            let out = call_atomic_ptr_1arg("glDrawBuffer", &self.glDrawBuffer_p, buf);
12479            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12480            {
12481                self.automatic_glGetError("glDrawBuffer");
12482            }
12483            out
12484        }
12485        #[doc(hidden)]
12486        pub unsafe fn DrawBuffer_load_with_dyn(
12487            &self,
12488            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12489        ) -> bool {
12490            load_dyn_name_atomic_ptr(get_proc_address, b"glDrawBuffer\0", &self.glDrawBuffer_p)
12491        }
12492        #[inline]
12493        #[doc(hidden)]
12494        pub fn DrawBuffer_is_loaded(&self) -> bool {
12495            !self.glDrawBuffer_p.load(RELAX).is_null()
12496        }
12497        /// [glDrawBuffers](http://docs.gl/gl4/glDrawBuffers)(n, bufs)
12498        /// * `bufs` group: DrawBufferMode
12499        /// * `bufs` len: n
12500        #[cfg_attr(feature = "inline", inline)]
12501        #[cfg_attr(feature = "inline_always", inline(always))]
12502        pub unsafe fn DrawBuffers(&self, n: GLsizei, bufs: *const GLenum) {
12503            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12504            {
12505                trace!("calling gl.DrawBuffers({:?}, {:p});", n, bufs);
12506            }
12507            let out = call_atomic_ptr_2arg("glDrawBuffers", &self.glDrawBuffers_p, n, bufs);
12508            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12509            {
12510                self.automatic_glGetError("glDrawBuffers");
12511            }
12512            out
12513        }
12514        #[doc(hidden)]
12515        pub unsafe fn DrawBuffers_load_with_dyn(
12516            &self,
12517            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12518        ) -> bool {
12519            load_dyn_name_atomic_ptr(get_proc_address, b"glDrawBuffers\0", &self.glDrawBuffers_p)
12520        }
12521        #[inline]
12522        #[doc(hidden)]
12523        pub fn DrawBuffers_is_loaded(&self) -> bool {
12524            !self.glDrawBuffers_p.load(RELAX).is_null()
12525        }
12526        /// [glDrawElements](http://docs.gl/gl4/glDrawElements)(mode, count, type_, indices)
12527        /// * `mode` group: PrimitiveType
12528        /// * `type_` group: DrawElementsType
12529        /// * `indices` len: COMPSIZE(count,type)
12530        #[cfg_attr(feature = "inline", inline)]
12531        #[cfg_attr(feature = "inline_always", inline(always))]
12532        pub unsafe fn DrawElements(
12533            &self,
12534            mode: GLenum,
12535            count: GLsizei,
12536            type_: GLenum,
12537            indices: *const c_void,
12538        ) {
12539            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12540            {
12541                trace!(
12542                    "calling gl.DrawElements({:#X}, {:?}, {:#X}, {:p});",
12543                    mode,
12544                    count,
12545                    type_,
12546                    indices
12547                );
12548            }
12549            let out = call_atomic_ptr_4arg(
12550                "glDrawElements",
12551                &self.glDrawElements_p,
12552                mode,
12553                count,
12554                type_,
12555                indices,
12556            );
12557            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12558            {
12559                self.automatic_glGetError("glDrawElements");
12560            }
12561            out
12562        }
12563        #[doc(hidden)]
12564        pub unsafe fn DrawElements_load_with_dyn(
12565            &self,
12566            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12567        ) -> bool {
12568            load_dyn_name_atomic_ptr(
12569                get_proc_address,
12570                b"glDrawElements\0",
12571                &self.glDrawElements_p,
12572            )
12573        }
12574        #[inline]
12575        #[doc(hidden)]
12576        pub fn DrawElements_is_loaded(&self) -> bool {
12577            !self.glDrawElements_p.load(RELAX).is_null()
12578        }
12579        /// [glDrawElementsBaseVertex](http://docs.gl/gl4/glDrawElementsBaseVertex)(mode, count, type_, indices, basevertex)
12580        /// * `mode` group: PrimitiveType
12581        /// * `type_` group: DrawElementsType
12582        /// * `indices` len: COMPSIZE(count,type)
12583        #[cfg_attr(feature = "inline", inline)]
12584        #[cfg_attr(feature = "inline_always", inline(always))]
12585        pub unsafe fn DrawElementsBaseVertex(
12586            &self,
12587            mode: GLenum,
12588            count: GLsizei,
12589            type_: GLenum,
12590            indices: *const c_void,
12591            basevertex: GLint,
12592        ) {
12593            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12594            {
12595                trace!(
12596                    "calling gl.DrawElementsBaseVertex({:#X}, {:?}, {:#X}, {:p}, {:?});",
12597                    mode,
12598                    count,
12599                    type_,
12600                    indices,
12601                    basevertex
12602                );
12603            }
12604            let out = call_atomic_ptr_5arg(
12605                "glDrawElementsBaseVertex",
12606                &self.glDrawElementsBaseVertex_p,
12607                mode,
12608                count,
12609                type_,
12610                indices,
12611                basevertex,
12612            );
12613            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12614            {
12615                self.automatic_glGetError("glDrawElementsBaseVertex");
12616            }
12617            out
12618        }
12619        #[doc(hidden)]
12620        pub unsafe fn DrawElementsBaseVertex_load_with_dyn(
12621            &self,
12622            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12623        ) -> bool {
12624            load_dyn_name_atomic_ptr(
12625                get_proc_address,
12626                b"glDrawElementsBaseVertex\0",
12627                &self.glDrawElementsBaseVertex_p,
12628            )
12629        }
12630        #[inline]
12631        #[doc(hidden)]
12632        pub fn DrawElementsBaseVertex_is_loaded(&self) -> bool {
12633            !self.glDrawElementsBaseVertex_p.load(RELAX).is_null()
12634        }
12635        /// [glDrawElementsIndirect](http://docs.gl/gl4/glDrawElementsIndirect)(mode, type_, indirect)
12636        /// * `mode` group: PrimitiveType
12637        /// * `type_` group: DrawElementsType
12638        #[cfg_attr(feature = "inline", inline)]
12639        #[cfg_attr(feature = "inline_always", inline(always))]
12640        pub unsafe fn DrawElementsIndirect(
12641            &self,
12642            mode: GLenum,
12643            type_: GLenum,
12644            indirect: *const c_void,
12645        ) {
12646            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12647            {
12648                trace!(
12649                    "calling gl.DrawElementsIndirect({:#X}, {:#X}, {:p});",
12650                    mode,
12651                    type_,
12652                    indirect
12653                );
12654            }
12655            let out = call_atomic_ptr_3arg(
12656                "glDrawElementsIndirect",
12657                &self.glDrawElementsIndirect_p,
12658                mode,
12659                type_,
12660                indirect,
12661            );
12662            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12663            {
12664                self.automatic_glGetError("glDrawElementsIndirect");
12665            }
12666            out
12667        }
12668        #[doc(hidden)]
12669        pub unsafe fn DrawElementsIndirect_load_with_dyn(
12670            &self,
12671            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12672        ) -> bool {
12673            load_dyn_name_atomic_ptr(
12674                get_proc_address,
12675                b"glDrawElementsIndirect\0",
12676                &self.glDrawElementsIndirect_p,
12677            )
12678        }
12679        #[inline]
12680        #[doc(hidden)]
12681        pub fn DrawElementsIndirect_is_loaded(&self) -> bool {
12682            !self.glDrawElementsIndirect_p.load(RELAX).is_null()
12683        }
12684        /// [glDrawElementsInstanced](http://docs.gl/gl4/glDrawElementsInstanced)(mode, count, type_, indices, instancecount)
12685        /// * `mode` group: PrimitiveType
12686        /// * `type_` group: DrawElementsType
12687        /// * `indices` len: COMPSIZE(count,type)
12688        #[cfg_attr(feature = "inline", inline)]
12689        #[cfg_attr(feature = "inline_always", inline(always))]
12690        pub unsafe fn DrawElementsInstanced(
12691            &self,
12692            mode: GLenum,
12693            count: GLsizei,
12694            type_: GLenum,
12695            indices: *const c_void,
12696            instancecount: GLsizei,
12697        ) {
12698            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12699            {
12700                trace!(
12701                    "calling gl.DrawElementsInstanced({:#X}, {:?}, {:#X}, {:p}, {:?});",
12702                    mode,
12703                    count,
12704                    type_,
12705                    indices,
12706                    instancecount
12707                );
12708            }
12709            let out = call_atomic_ptr_5arg(
12710                "glDrawElementsInstanced",
12711                &self.glDrawElementsInstanced_p,
12712                mode,
12713                count,
12714                type_,
12715                indices,
12716                instancecount,
12717            );
12718            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12719            {
12720                self.automatic_glGetError("glDrawElementsInstanced");
12721            }
12722            out
12723        }
12724        #[doc(hidden)]
12725        pub unsafe fn DrawElementsInstanced_load_with_dyn(
12726            &self,
12727            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12728        ) -> bool {
12729            load_dyn_name_atomic_ptr(
12730                get_proc_address,
12731                b"glDrawElementsInstanced\0",
12732                &self.glDrawElementsInstanced_p,
12733            )
12734        }
12735        #[inline]
12736        #[doc(hidden)]
12737        pub fn DrawElementsInstanced_is_loaded(&self) -> bool {
12738            !self.glDrawElementsInstanced_p.load(RELAX).is_null()
12739        }
12740        /// [glDrawElementsInstancedARB](http://docs.gl/gl4/glDrawElementsInstancedARB)(mode, count, type_, indices, primcount)
12741        /// * `mode` group: PrimitiveType
12742        /// * `type_` group: DrawElementsType
12743        /// * `indices` len: COMPSIZE(count,type)
12744        /// * alias of: [`glDrawElementsInstanced`]
12745        #[cfg_attr(feature = "inline", inline)]
12746        #[cfg_attr(feature = "inline_always", inline(always))]
12747        pub unsafe fn DrawElementsInstancedARB(
12748            &self,
12749            mode: GLenum,
12750            count: GLsizei,
12751            type_: GLenum,
12752            indices: *const c_void,
12753            primcount: GLsizei,
12754        ) {
12755            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12756            {
12757                trace!(
12758                    "calling gl.DrawElementsInstancedARB({:#X}, {:?}, {:#X}, {:p}, {:?});",
12759                    mode,
12760                    count,
12761                    type_,
12762                    indices,
12763                    primcount
12764                );
12765            }
12766            let out = call_atomic_ptr_5arg(
12767                "glDrawElementsInstancedARB",
12768                &self.glDrawElementsInstancedARB_p,
12769                mode,
12770                count,
12771                type_,
12772                indices,
12773                primcount,
12774            );
12775            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12776            {
12777                self.automatic_glGetError("glDrawElementsInstancedARB");
12778            }
12779            out
12780        }
12781        #[doc(hidden)]
12782        pub unsafe fn DrawElementsInstancedARB_load_with_dyn(
12783            &self,
12784            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12785        ) -> bool {
12786            load_dyn_name_atomic_ptr(
12787                get_proc_address,
12788                b"glDrawElementsInstancedARB\0",
12789                &self.glDrawElementsInstancedARB_p,
12790            )
12791        }
12792        #[inline]
12793        #[doc(hidden)]
12794        pub fn DrawElementsInstancedARB_is_loaded(&self) -> bool {
12795            !self.glDrawElementsInstancedARB_p.load(RELAX).is_null()
12796        }
12797        /// [glDrawElementsInstancedBaseInstance](http://docs.gl/gl4/glDrawElementsInstancedBaseInstance)(mode, count, type_, indices, instancecount, baseinstance)
12798        /// * `mode` group: PrimitiveType
12799        /// * `type_` group: PrimitiveType
12800        /// * `indices` len: count
12801        #[cfg_attr(feature = "inline", inline)]
12802        #[cfg_attr(feature = "inline_always", inline(always))]
12803        pub unsafe fn DrawElementsInstancedBaseInstance(
12804            &self,
12805            mode: GLenum,
12806            count: GLsizei,
12807            type_: GLenum,
12808            indices: *const c_void,
12809            instancecount: GLsizei,
12810            baseinstance: GLuint,
12811        ) {
12812            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12813            {
12814                trace!("calling gl.DrawElementsInstancedBaseInstance({:#X}, {:?}, {:#X}, {:p}, {:?}, {:?});", mode, count, type_, indices, instancecount, baseinstance);
12815            }
12816            let out = call_atomic_ptr_6arg(
12817                "glDrawElementsInstancedBaseInstance",
12818                &self.glDrawElementsInstancedBaseInstance_p,
12819                mode,
12820                count,
12821                type_,
12822                indices,
12823                instancecount,
12824                baseinstance,
12825            );
12826            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12827            {
12828                self.automatic_glGetError("glDrawElementsInstancedBaseInstance");
12829            }
12830            out
12831        }
12832        #[doc(hidden)]
12833        pub unsafe fn DrawElementsInstancedBaseInstance_load_with_dyn(
12834            &self,
12835            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12836        ) -> bool {
12837            load_dyn_name_atomic_ptr(
12838                get_proc_address,
12839                b"glDrawElementsInstancedBaseInstance\0",
12840                &self.glDrawElementsInstancedBaseInstance_p,
12841            )
12842        }
12843        #[inline]
12844        #[doc(hidden)]
12845        pub fn DrawElementsInstancedBaseInstance_is_loaded(&self) -> bool {
12846            !self
12847                .glDrawElementsInstancedBaseInstance_p
12848                .load(RELAX)
12849                .is_null()
12850        }
12851        /// [glDrawElementsInstancedBaseVertex](http://docs.gl/gl4/glDrawElementsInstancedBaseVertex)(mode, count, type_, indices, instancecount, basevertex)
12852        /// * `mode` group: PrimitiveType
12853        /// * `type_` group: DrawElementsType
12854        /// * `indices` len: COMPSIZE(count,type)
12855        #[cfg_attr(feature = "inline", inline)]
12856        #[cfg_attr(feature = "inline_always", inline(always))]
12857        pub unsafe fn DrawElementsInstancedBaseVertex(
12858            &self,
12859            mode: GLenum,
12860            count: GLsizei,
12861            type_: GLenum,
12862            indices: *const c_void,
12863            instancecount: GLsizei,
12864            basevertex: GLint,
12865        ) {
12866            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12867            {
12868                trace!("calling gl.DrawElementsInstancedBaseVertex({:#X}, {:?}, {:#X}, {:p}, {:?}, {:?});", mode, count, type_, indices, instancecount, basevertex);
12869            }
12870            let out = call_atomic_ptr_6arg(
12871                "glDrawElementsInstancedBaseVertex",
12872                &self.glDrawElementsInstancedBaseVertex_p,
12873                mode,
12874                count,
12875                type_,
12876                indices,
12877                instancecount,
12878                basevertex,
12879            );
12880            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12881            {
12882                self.automatic_glGetError("glDrawElementsInstancedBaseVertex");
12883            }
12884            out
12885        }
12886        #[doc(hidden)]
12887        pub unsafe fn DrawElementsInstancedBaseVertex_load_with_dyn(
12888            &self,
12889            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12890        ) -> bool {
12891            load_dyn_name_atomic_ptr(
12892                get_proc_address,
12893                b"glDrawElementsInstancedBaseVertex\0",
12894                &self.glDrawElementsInstancedBaseVertex_p,
12895            )
12896        }
12897        #[inline]
12898        #[doc(hidden)]
12899        pub fn DrawElementsInstancedBaseVertex_is_loaded(&self) -> bool {
12900            !self
12901                .glDrawElementsInstancedBaseVertex_p
12902                .load(RELAX)
12903                .is_null()
12904        }
12905        /// [glDrawElementsInstancedBaseVertexBaseInstance](http://docs.gl/gl4/glDrawElementsInstancedBaseVertexBaseInstance)(mode, count, type_, indices, instancecount, basevertex, baseinstance)
12906        /// * `mode` group: PrimitiveType
12907        /// * `type_` group: DrawElementsType
12908        /// * `indices` len: count
12909        #[cfg_attr(feature = "inline", inline)]
12910        #[cfg_attr(feature = "inline_always", inline(always))]
12911        pub unsafe fn DrawElementsInstancedBaseVertexBaseInstance(
12912            &self,
12913            mode: GLenum,
12914            count: GLsizei,
12915            type_: GLenum,
12916            indices: *const c_void,
12917            instancecount: GLsizei,
12918            basevertex: GLint,
12919            baseinstance: GLuint,
12920        ) {
12921            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12922            {
12923                trace!("calling gl.DrawElementsInstancedBaseVertexBaseInstance({:#X}, {:?}, {:#X}, {:p}, {:?}, {:?}, {:?});", mode, count, type_, indices, instancecount, basevertex, baseinstance);
12924            }
12925            let out = call_atomic_ptr_7arg(
12926                "glDrawElementsInstancedBaseVertexBaseInstance",
12927                &self.glDrawElementsInstancedBaseVertexBaseInstance_p,
12928                mode,
12929                count,
12930                type_,
12931                indices,
12932                instancecount,
12933                basevertex,
12934                baseinstance,
12935            );
12936            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12937            {
12938                self.automatic_glGetError("glDrawElementsInstancedBaseVertexBaseInstance");
12939            }
12940            out
12941        }
12942        #[doc(hidden)]
12943        pub unsafe fn DrawElementsInstancedBaseVertexBaseInstance_load_with_dyn(
12944            &self,
12945            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12946        ) -> bool {
12947            load_dyn_name_atomic_ptr(
12948                get_proc_address,
12949                b"glDrawElementsInstancedBaseVertexBaseInstance\0",
12950                &self.glDrawElementsInstancedBaseVertexBaseInstance_p,
12951            )
12952        }
12953        #[inline]
12954        #[doc(hidden)]
12955        pub fn DrawElementsInstancedBaseVertexBaseInstance_is_loaded(&self) -> bool {
12956            !self
12957                .glDrawElementsInstancedBaseVertexBaseInstance_p
12958                .load(RELAX)
12959                .is_null()
12960        }
12961        /// [glDrawRangeElements](http://docs.gl/gl4/glDrawRangeElements)(mode, start, end, count, type_, indices)
12962        /// * `mode` group: PrimitiveType
12963        /// * `type_` group: DrawElementsType
12964        /// * `indices` len: COMPSIZE(count,type)
12965        #[cfg_attr(feature = "inline", inline)]
12966        #[cfg_attr(feature = "inline_always", inline(always))]
12967        pub unsafe fn DrawRangeElements(
12968            &self,
12969            mode: GLenum,
12970            start: GLuint,
12971            end: GLuint,
12972            count: GLsizei,
12973            type_: GLenum,
12974            indices: *const c_void,
12975        ) {
12976            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12977            {
12978                trace!(
12979                    "calling gl.DrawRangeElements({:#X}, {:?}, {:?}, {:?}, {:#X}, {:p});",
12980                    mode,
12981                    start,
12982                    end,
12983                    count,
12984                    type_,
12985                    indices
12986                );
12987            }
12988            let out = call_atomic_ptr_6arg(
12989                "glDrawRangeElements",
12990                &self.glDrawRangeElements_p,
12991                mode,
12992                start,
12993                end,
12994                count,
12995                type_,
12996                indices,
12997            );
12998            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12999            {
13000                self.automatic_glGetError("glDrawRangeElements");
13001            }
13002            out
13003        }
13004        #[doc(hidden)]
13005        pub unsafe fn DrawRangeElements_load_with_dyn(
13006            &self,
13007            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13008        ) -> bool {
13009            load_dyn_name_atomic_ptr(
13010                get_proc_address,
13011                b"glDrawRangeElements\0",
13012                &self.glDrawRangeElements_p,
13013            )
13014        }
13015        #[inline]
13016        #[doc(hidden)]
13017        pub fn DrawRangeElements_is_loaded(&self) -> bool {
13018            !self.glDrawRangeElements_p.load(RELAX).is_null()
13019        }
13020        /// [glDrawRangeElementsBaseVertex](http://docs.gl/gl4/glDrawRangeElementsBaseVertex)(mode, start, end, count, type_, indices, basevertex)
13021        /// * `mode` group: PrimitiveType
13022        /// * `type_` group: DrawElementsType
13023        /// * `indices` len: COMPSIZE(count,type)
13024        #[cfg_attr(feature = "inline", inline)]
13025        #[cfg_attr(feature = "inline_always", inline(always))]
13026        pub unsafe fn DrawRangeElementsBaseVertex(
13027            &self,
13028            mode: GLenum,
13029            start: GLuint,
13030            end: GLuint,
13031            count: GLsizei,
13032            type_: GLenum,
13033            indices: *const c_void,
13034            basevertex: GLint,
13035        ) {
13036            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13037            {
13038                trace!("calling gl.DrawRangeElementsBaseVertex({:#X}, {:?}, {:?}, {:?}, {:#X}, {:p}, {:?});", mode, start, end, count, type_, indices, basevertex);
13039            }
13040            let out = call_atomic_ptr_7arg(
13041                "glDrawRangeElementsBaseVertex",
13042                &self.glDrawRangeElementsBaseVertex_p,
13043                mode,
13044                start,
13045                end,
13046                count,
13047                type_,
13048                indices,
13049                basevertex,
13050            );
13051            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13052            {
13053                self.automatic_glGetError("glDrawRangeElementsBaseVertex");
13054            }
13055            out
13056        }
13057        #[doc(hidden)]
13058        pub unsafe fn DrawRangeElementsBaseVertex_load_with_dyn(
13059            &self,
13060            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13061        ) -> bool {
13062            load_dyn_name_atomic_ptr(
13063                get_proc_address,
13064                b"glDrawRangeElementsBaseVertex\0",
13065                &self.glDrawRangeElementsBaseVertex_p,
13066            )
13067        }
13068        #[inline]
13069        #[doc(hidden)]
13070        pub fn DrawRangeElementsBaseVertex_is_loaded(&self) -> bool {
13071            !self.glDrawRangeElementsBaseVertex_p.load(RELAX).is_null()
13072        }
13073        /// [glDrawTransformFeedback](http://docs.gl/gl4/glDrawTransformFeedback)(mode, id)
13074        /// * `mode` group: PrimitiveType
13075        #[cfg_attr(feature = "inline", inline)]
13076        #[cfg_attr(feature = "inline_always", inline(always))]
13077        pub unsafe fn DrawTransformFeedback(&self, mode: GLenum, id: GLuint) {
13078            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13079            {
13080                trace!("calling gl.DrawTransformFeedback({:#X}, {:?});", mode, id);
13081            }
13082            let out = call_atomic_ptr_2arg(
13083                "glDrawTransformFeedback",
13084                &self.glDrawTransformFeedback_p,
13085                mode,
13086                id,
13087            );
13088            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13089            {
13090                self.automatic_glGetError("glDrawTransformFeedback");
13091            }
13092            out
13093        }
13094        #[doc(hidden)]
13095        pub unsafe fn DrawTransformFeedback_load_with_dyn(
13096            &self,
13097            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13098        ) -> bool {
13099            load_dyn_name_atomic_ptr(
13100                get_proc_address,
13101                b"glDrawTransformFeedback\0",
13102                &self.glDrawTransformFeedback_p,
13103            )
13104        }
13105        #[inline]
13106        #[doc(hidden)]
13107        pub fn DrawTransformFeedback_is_loaded(&self) -> bool {
13108            !self.glDrawTransformFeedback_p.load(RELAX).is_null()
13109        }
13110        /// [glDrawTransformFeedbackInstanced](http://docs.gl/gl4/glDrawTransformFeedbackInstanced)(mode, id, instancecount)
13111        /// * `mode` group: PrimitiveType
13112        #[cfg_attr(feature = "inline", inline)]
13113        #[cfg_attr(feature = "inline_always", inline(always))]
13114        pub unsafe fn DrawTransformFeedbackInstanced(
13115            &self,
13116            mode: GLenum,
13117            id: GLuint,
13118            instancecount: GLsizei,
13119        ) {
13120            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13121            {
13122                trace!(
13123                    "calling gl.DrawTransformFeedbackInstanced({:#X}, {:?}, {:?});",
13124                    mode,
13125                    id,
13126                    instancecount
13127                );
13128            }
13129            let out = call_atomic_ptr_3arg(
13130                "glDrawTransformFeedbackInstanced",
13131                &self.glDrawTransformFeedbackInstanced_p,
13132                mode,
13133                id,
13134                instancecount,
13135            );
13136            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13137            {
13138                self.automatic_glGetError("glDrawTransformFeedbackInstanced");
13139            }
13140            out
13141        }
13142        #[doc(hidden)]
13143        pub unsafe fn DrawTransformFeedbackInstanced_load_with_dyn(
13144            &self,
13145            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13146        ) -> bool {
13147            load_dyn_name_atomic_ptr(
13148                get_proc_address,
13149                b"glDrawTransformFeedbackInstanced\0",
13150                &self.glDrawTransformFeedbackInstanced_p,
13151            )
13152        }
13153        #[inline]
13154        #[doc(hidden)]
13155        pub fn DrawTransformFeedbackInstanced_is_loaded(&self) -> bool {
13156            !self
13157                .glDrawTransformFeedbackInstanced_p
13158                .load(RELAX)
13159                .is_null()
13160        }
13161        /// [glDrawTransformFeedbackStream](http://docs.gl/gl4/glDrawTransformFeedbackStream)(mode, id, stream)
13162        /// * `mode` group: PrimitiveType
13163        #[cfg_attr(feature = "inline", inline)]
13164        #[cfg_attr(feature = "inline_always", inline(always))]
13165        pub unsafe fn DrawTransformFeedbackStream(&self, mode: GLenum, id: GLuint, stream: GLuint) {
13166            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13167            {
13168                trace!(
13169                    "calling gl.DrawTransformFeedbackStream({:#X}, {:?}, {:?});",
13170                    mode,
13171                    id,
13172                    stream
13173                );
13174            }
13175            let out = call_atomic_ptr_3arg(
13176                "glDrawTransformFeedbackStream",
13177                &self.glDrawTransformFeedbackStream_p,
13178                mode,
13179                id,
13180                stream,
13181            );
13182            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13183            {
13184                self.automatic_glGetError("glDrawTransformFeedbackStream");
13185            }
13186            out
13187        }
13188        #[doc(hidden)]
13189        pub unsafe fn DrawTransformFeedbackStream_load_with_dyn(
13190            &self,
13191            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13192        ) -> bool {
13193            load_dyn_name_atomic_ptr(
13194                get_proc_address,
13195                b"glDrawTransformFeedbackStream\0",
13196                &self.glDrawTransformFeedbackStream_p,
13197            )
13198        }
13199        #[inline]
13200        #[doc(hidden)]
13201        pub fn DrawTransformFeedbackStream_is_loaded(&self) -> bool {
13202            !self.glDrawTransformFeedbackStream_p.load(RELAX).is_null()
13203        }
13204        /// [glDrawTransformFeedbackStreamInstanced](http://docs.gl/gl4/glDrawTransformFeedbackStreamInstanced)(mode, id, stream, instancecount)
13205        /// * `mode` group: PrimitiveType
13206        #[cfg_attr(feature = "inline", inline)]
13207        #[cfg_attr(feature = "inline_always", inline(always))]
13208        pub unsafe fn DrawTransformFeedbackStreamInstanced(
13209            &self,
13210            mode: GLenum,
13211            id: GLuint,
13212            stream: GLuint,
13213            instancecount: GLsizei,
13214        ) {
13215            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13216            {
13217                trace!(
13218                    "calling gl.DrawTransformFeedbackStreamInstanced({:#X}, {:?}, {:?}, {:?});",
13219                    mode,
13220                    id,
13221                    stream,
13222                    instancecount
13223                );
13224            }
13225            let out = call_atomic_ptr_4arg(
13226                "glDrawTransformFeedbackStreamInstanced",
13227                &self.glDrawTransformFeedbackStreamInstanced_p,
13228                mode,
13229                id,
13230                stream,
13231                instancecount,
13232            );
13233            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13234            {
13235                self.automatic_glGetError("glDrawTransformFeedbackStreamInstanced");
13236            }
13237            out
13238        }
13239        #[doc(hidden)]
13240        pub unsafe fn DrawTransformFeedbackStreamInstanced_load_with_dyn(
13241            &self,
13242            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13243        ) -> bool {
13244            load_dyn_name_atomic_ptr(
13245                get_proc_address,
13246                b"glDrawTransformFeedbackStreamInstanced\0",
13247                &self.glDrawTransformFeedbackStreamInstanced_p,
13248            )
13249        }
13250        #[inline]
13251        #[doc(hidden)]
13252        pub fn DrawTransformFeedbackStreamInstanced_is_loaded(&self) -> bool {
13253            !self
13254                .glDrawTransformFeedbackStreamInstanced_p
13255                .load(RELAX)
13256                .is_null()
13257        }
13258        /// [glEnable](http://docs.gl/gl4/glEnable)(cap)
13259        /// * `cap` group: EnableCap
13260        #[cfg_attr(feature = "inline", inline)]
13261        #[cfg_attr(feature = "inline_always", inline(always))]
13262        pub unsafe fn Enable(&self, cap: GLenum) {
13263            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13264            {
13265                trace!("calling gl.Enable({:#X});", cap);
13266            }
13267            let out = call_atomic_ptr_1arg("glEnable", &self.glEnable_p, cap);
13268            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13269            {
13270                self.automatic_glGetError("glEnable");
13271            }
13272            out
13273        }
13274        #[doc(hidden)]
13275        pub unsafe fn Enable_load_with_dyn(
13276            &self,
13277            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13278        ) -> bool {
13279            load_dyn_name_atomic_ptr(get_proc_address, b"glEnable\0", &self.glEnable_p)
13280        }
13281        #[inline]
13282        #[doc(hidden)]
13283        pub fn Enable_is_loaded(&self) -> bool {
13284            !self.glEnable_p.load(RELAX).is_null()
13285        }
13286        /// [glEnableIndexedEXT](http://docs.gl/gl4/glEnableIndexedEXT)(target, index)
13287        /// * `target` group: EnableCap
13288        /// * alias of: [`glEnablei`]
13289        #[cfg_attr(feature = "inline", inline)]
13290        #[cfg_attr(feature = "inline_always", inline(always))]
13291        pub unsafe fn EnableIndexedEXT(&self, target: GLenum, index: GLuint) {
13292            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13293            {
13294                trace!("calling gl.EnableIndexedEXT({:#X}, {:?});", target, index);
13295            }
13296            let out = call_atomic_ptr_2arg(
13297                "glEnableIndexedEXT",
13298                &self.glEnableIndexedEXT_p,
13299                target,
13300                index,
13301            );
13302            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13303            {
13304                self.automatic_glGetError("glEnableIndexedEXT");
13305            }
13306            out
13307        }
13308        #[doc(hidden)]
13309        pub unsafe fn EnableIndexedEXT_load_with_dyn(
13310            &self,
13311            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13312        ) -> bool {
13313            load_dyn_name_atomic_ptr(
13314                get_proc_address,
13315                b"glEnableIndexedEXT\0",
13316                &self.glEnableIndexedEXT_p,
13317            )
13318        }
13319        #[inline]
13320        #[doc(hidden)]
13321        pub fn EnableIndexedEXT_is_loaded(&self) -> bool {
13322            !self.glEnableIndexedEXT_p.load(RELAX).is_null()
13323        }
13324        /// [glEnableVertexArrayAttrib](http://docs.gl/gl4/glEnableVertexArrayAttrib)(vaobj, index)
13325        #[cfg_attr(feature = "inline", inline)]
13326        #[cfg_attr(feature = "inline_always", inline(always))]
13327        pub unsafe fn EnableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) {
13328            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13329            {
13330                trace!(
13331                    "calling gl.EnableVertexArrayAttrib({:?}, {:?});",
13332                    vaobj,
13333                    index
13334                );
13335            }
13336            let out = call_atomic_ptr_2arg(
13337                "glEnableVertexArrayAttrib",
13338                &self.glEnableVertexArrayAttrib_p,
13339                vaobj,
13340                index,
13341            );
13342            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13343            {
13344                self.automatic_glGetError("glEnableVertexArrayAttrib");
13345            }
13346            out
13347        }
13348        #[doc(hidden)]
13349        pub unsafe fn EnableVertexArrayAttrib_load_with_dyn(
13350            &self,
13351            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13352        ) -> bool {
13353            load_dyn_name_atomic_ptr(
13354                get_proc_address,
13355                b"glEnableVertexArrayAttrib\0",
13356                &self.glEnableVertexArrayAttrib_p,
13357            )
13358        }
13359        #[inline]
13360        #[doc(hidden)]
13361        pub fn EnableVertexArrayAttrib_is_loaded(&self) -> bool {
13362            !self.glEnableVertexArrayAttrib_p.load(RELAX).is_null()
13363        }
13364        /// [glEnableVertexAttribArray](http://docs.gl/gl4/glEnableVertexAttribArray)(index)
13365        #[cfg_attr(feature = "inline", inline)]
13366        #[cfg_attr(feature = "inline_always", inline(always))]
13367        pub unsafe fn EnableVertexAttribArray(&self, index: GLuint) {
13368            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13369            {
13370                trace!("calling gl.EnableVertexAttribArray({:?});", index);
13371            }
13372            let out = call_atomic_ptr_1arg(
13373                "glEnableVertexAttribArray",
13374                &self.glEnableVertexAttribArray_p,
13375                index,
13376            );
13377            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13378            {
13379                self.automatic_glGetError("glEnableVertexAttribArray");
13380            }
13381            out
13382        }
13383        #[doc(hidden)]
13384        pub unsafe fn EnableVertexAttribArray_load_with_dyn(
13385            &self,
13386            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13387        ) -> bool {
13388            load_dyn_name_atomic_ptr(
13389                get_proc_address,
13390                b"glEnableVertexAttribArray\0",
13391                &self.glEnableVertexAttribArray_p,
13392            )
13393        }
13394        #[inline]
13395        #[doc(hidden)]
13396        pub fn EnableVertexAttribArray_is_loaded(&self) -> bool {
13397            !self.glEnableVertexAttribArray_p.load(RELAX).is_null()
13398        }
13399        /// [glEnablei](http://docs.gl/gl4/glEnable)(target, index)
13400        /// * `target` group: EnableCap
13401        #[cfg_attr(feature = "inline", inline)]
13402        #[cfg_attr(feature = "inline_always", inline(always))]
13403        pub unsafe fn Enablei(&self, target: GLenum, index: GLuint) {
13404            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13405            {
13406                trace!("calling gl.Enablei({:#X}, {:?});", target, index);
13407            }
13408            let out = call_atomic_ptr_2arg("glEnablei", &self.glEnablei_p, target, index);
13409            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13410            {
13411                self.automatic_glGetError("glEnablei");
13412            }
13413            out
13414        }
13415        #[doc(hidden)]
13416        pub unsafe fn Enablei_load_with_dyn(
13417            &self,
13418            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13419        ) -> bool {
13420            load_dyn_name_atomic_ptr(get_proc_address, b"glEnablei\0", &self.glEnablei_p)
13421        }
13422        #[inline]
13423        #[doc(hidden)]
13424        pub fn Enablei_is_loaded(&self) -> bool {
13425            !self.glEnablei_p.load(RELAX).is_null()
13426        }
13427        /// [glEndConditionalRender](http://docs.gl/gl4/glEndConditionalRender)()
13428        #[cfg_attr(feature = "inline", inline)]
13429        #[cfg_attr(feature = "inline_always", inline(always))]
13430        pub unsafe fn EndConditionalRender(&self) {
13431            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13432            {
13433                trace!("calling gl.EndConditionalRender();",);
13434            }
13435            let out =
13436                call_atomic_ptr_0arg("glEndConditionalRender", &self.glEndConditionalRender_p);
13437            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13438            {
13439                self.automatic_glGetError("glEndConditionalRender");
13440            }
13441            out
13442        }
13443        #[doc(hidden)]
13444        pub unsafe fn EndConditionalRender_load_with_dyn(
13445            &self,
13446            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13447        ) -> bool {
13448            load_dyn_name_atomic_ptr(
13449                get_proc_address,
13450                b"glEndConditionalRender\0",
13451                &self.glEndConditionalRender_p,
13452            )
13453        }
13454        #[inline]
13455        #[doc(hidden)]
13456        pub fn EndConditionalRender_is_loaded(&self) -> bool {
13457            !self.glEndConditionalRender_p.load(RELAX).is_null()
13458        }
13459        /// [glEndQuery](http://docs.gl/gl4/glEndQuery)(target)
13460        /// * `target` group: QueryTarget
13461        #[cfg_attr(feature = "inline", inline)]
13462        #[cfg_attr(feature = "inline_always", inline(always))]
13463        pub unsafe fn EndQuery(&self, target: GLenum) {
13464            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13465            {
13466                trace!("calling gl.EndQuery({:#X});", target);
13467            }
13468            let out = call_atomic_ptr_1arg("glEndQuery", &self.glEndQuery_p, target);
13469            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13470            {
13471                self.automatic_glGetError("glEndQuery");
13472            }
13473            out
13474        }
13475        #[doc(hidden)]
13476        pub unsafe fn EndQuery_load_with_dyn(
13477            &self,
13478            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13479        ) -> bool {
13480            load_dyn_name_atomic_ptr(get_proc_address, b"glEndQuery\0", &self.glEndQuery_p)
13481        }
13482        #[inline]
13483        #[doc(hidden)]
13484        pub fn EndQuery_is_loaded(&self) -> bool {
13485            !self.glEndQuery_p.load(RELAX).is_null()
13486        }
13487        /// [glEndQueryEXT](http://docs.gl/gl4/glEndQueryEXT)(target)
13488        /// * `target` group: QueryTarget
13489        #[cfg_attr(feature = "inline", inline)]
13490        #[cfg_attr(feature = "inline_always", inline(always))]
13491        pub unsafe fn EndQueryEXT(&self, target: GLenum) {
13492            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13493            {
13494                trace!("calling gl.EndQueryEXT({:#X});", target);
13495            }
13496            let out = call_atomic_ptr_1arg("glEndQueryEXT", &self.glEndQueryEXT_p, target);
13497            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13498            {
13499                self.automatic_glGetError("glEndQueryEXT");
13500            }
13501            out
13502        }
13503        #[doc(hidden)]
13504        pub unsafe fn EndQueryEXT_load_with_dyn(
13505            &self,
13506            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13507        ) -> bool {
13508            load_dyn_name_atomic_ptr(get_proc_address, b"glEndQueryEXT\0", &self.glEndQueryEXT_p)
13509        }
13510        #[inline]
13511        #[doc(hidden)]
13512        pub fn EndQueryEXT_is_loaded(&self) -> bool {
13513            !self.glEndQueryEXT_p.load(RELAX).is_null()
13514        }
13515        /// [glEndQueryIndexed](http://docs.gl/gl4/glEndQueryIndexed)(target, index)
13516        /// * `target` group: QueryTarget
13517        #[cfg_attr(feature = "inline", inline)]
13518        #[cfg_attr(feature = "inline_always", inline(always))]
13519        pub unsafe fn EndQueryIndexed(&self, target: GLenum, index: GLuint) {
13520            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13521            {
13522                trace!("calling gl.EndQueryIndexed({:#X}, {:?});", target, index);
13523            }
13524            let out = call_atomic_ptr_2arg(
13525                "glEndQueryIndexed",
13526                &self.glEndQueryIndexed_p,
13527                target,
13528                index,
13529            );
13530            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13531            {
13532                self.automatic_glGetError("glEndQueryIndexed");
13533            }
13534            out
13535        }
13536        #[doc(hidden)]
13537        pub unsafe fn EndQueryIndexed_load_with_dyn(
13538            &self,
13539            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13540        ) -> bool {
13541            load_dyn_name_atomic_ptr(
13542                get_proc_address,
13543                b"glEndQueryIndexed\0",
13544                &self.glEndQueryIndexed_p,
13545            )
13546        }
13547        #[inline]
13548        #[doc(hidden)]
13549        pub fn EndQueryIndexed_is_loaded(&self) -> bool {
13550            !self.glEndQueryIndexed_p.load(RELAX).is_null()
13551        }
13552        /// [glEndTransformFeedback](http://docs.gl/gl4/glEndTransformFeedback)()
13553        #[cfg_attr(feature = "inline", inline)]
13554        #[cfg_attr(feature = "inline_always", inline(always))]
13555        pub unsafe fn EndTransformFeedback(&self) {
13556            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13557            {
13558                trace!("calling gl.EndTransformFeedback();",);
13559            }
13560            let out =
13561                call_atomic_ptr_0arg("glEndTransformFeedback", &self.glEndTransformFeedback_p);
13562            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13563            {
13564                self.automatic_glGetError("glEndTransformFeedback");
13565            }
13566            out
13567        }
13568        #[doc(hidden)]
13569        pub unsafe fn EndTransformFeedback_load_with_dyn(
13570            &self,
13571            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13572        ) -> bool {
13573            load_dyn_name_atomic_ptr(
13574                get_proc_address,
13575                b"glEndTransformFeedback\0",
13576                &self.glEndTransformFeedback_p,
13577            )
13578        }
13579        #[inline]
13580        #[doc(hidden)]
13581        pub fn EndTransformFeedback_is_loaded(&self) -> bool {
13582            !self.glEndTransformFeedback_p.load(RELAX).is_null()
13583        }
13584        /// [glFenceSync](http://docs.gl/gl4/glFenceSync)(condition, flags)
13585        /// * `condition` group: SyncCondition
13586        /// * `flags` group: SyncBehaviorFlags
13587        /// * return value group: sync
13588        #[cfg_attr(feature = "inline", inline)]
13589        #[cfg_attr(feature = "inline_always", inline(always))]
13590        pub unsafe fn FenceSync(&self, condition: GLenum, flags: GLbitfield) -> GLsync {
13591            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13592            {
13593                trace!("calling gl.FenceSync({:#X}, {:?});", condition, flags);
13594            }
13595            let out = call_atomic_ptr_2arg("glFenceSync", &self.glFenceSync_p, condition, flags);
13596            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13597            {
13598                self.automatic_glGetError("glFenceSync");
13599            }
13600            out
13601        }
13602        #[doc(hidden)]
13603        pub unsafe fn FenceSync_load_with_dyn(
13604            &self,
13605            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13606        ) -> bool {
13607            load_dyn_name_atomic_ptr(get_proc_address, b"glFenceSync\0", &self.glFenceSync_p)
13608        }
13609        #[inline]
13610        #[doc(hidden)]
13611        pub fn FenceSync_is_loaded(&self) -> bool {
13612            !self.glFenceSync_p.load(RELAX).is_null()
13613        }
13614        /// [glFinish](http://docs.gl/gl4/glFinish)()
13615        #[cfg_attr(feature = "inline", inline)]
13616        #[cfg_attr(feature = "inline_always", inline(always))]
13617        pub unsafe fn Finish(&self) {
13618            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13619            {
13620                trace!("calling gl.Finish();",);
13621            }
13622            let out = call_atomic_ptr_0arg("glFinish", &self.glFinish_p);
13623            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13624            {
13625                self.automatic_glGetError("glFinish");
13626            }
13627            out
13628        }
13629        #[doc(hidden)]
13630        pub unsafe fn Finish_load_with_dyn(
13631            &self,
13632            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13633        ) -> bool {
13634            load_dyn_name_atomic_ptr(get_proc_address, b"glFinish\0", &self.glFinish_p)
13635        }
13636        #[inline]
13637        #[doc(hidden)]
13638        pub fn Finish_is_loaded(&self) -> bool {
13639            !self.glFinish_p.load(RELAX).is_null()
13640        }
13641        /// [glFlush](http://docs.gl/gl4/glFlush)()
13642        #[cfg_attr(feature = "inline", inline)]
13643        #[cfg_attr(feature = "inline_always", inline(always))]
13644        pub unsafe fn Flush(&self) {
13645            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13646            {
13647                trace!("calling gl.Flush();",);
13648            }
13649            let out = call_atomic_ptr_0arg("glFlush", &self.glFlush_p);
13650            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13651            {
13652                self.automatic_glGetError("glFlush");
13653            }
13654            out
13655        }
13656        #[doc(hidden)]
13657        pub unsafe fn Flush_load_with_dyn(
13658            &self,
13659            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13660        ) -> bool {
13661            load_dyn_name_atomic_ptr(get_proc_address, b"glFlush\0", &self.glFlush_p)
13662        }
13663        #[inline]
13664        #[doc(hidden)]
13665        pub fn Flush_is_loaded(&self) -> bool {
13666            !self.glFlush_p.load(RELAX).is_null()
13667        }
13668        /// [glFlushMappedBufferRange](http://docs.gl/gl4/glFlushMappedBufferRange)(target, offset, length)
13669        /// * `target` group: BufferTargetARB
13670        /// * `offset` group: BufferOffset
13671        /// * `length` group: BufferSize
13672        #[cfg_attr(feature = "inline", inline)]
13673        #[cfg_attr(feature = "inline_always", inline(always))]
13674        pub unsafe fn FlushMappedBufferRange(
13675            &self,
13676            target: GLenum,
13677            offset: GLintptr,
13678            length: GLsizeiptr,
13679        ) {
13680            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13681            {
13682                trace!(
13683                    "calling gl.FlushMappedBufferRange({:#X}, {:?}, {:?});",
13684                    target,
13685                    offset,
13686                    length
13687                );
13688            }
13689            let out = call_atomic_ptr_3arg(
13690                "glFlushMappedBufferRange",
13691                &self.glFlushMappedBufferRange_p,
13692                target,
13693                offset,
13694                length,
13695            );
13696            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13697            {
13698                self.automatic_glGetError("glFlushMappedBufferRange");
13699            }
13700            out
13701        }
13702        #[doc(hidden)]
13703        pub unsafe fn FlushMappedBufferRange_load_with_dyn(
13704            &self,
13705            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13706        ) -> bool {
13707            load_dyn_name_atomic_ptr(
13708                get_proc_address,
13709                b"glFlushMappedBufferRange\0",
13710                &self.glFlushMappedBufferRange_p,
13711            )
13712        }
13713        #[inline]
13714        #[doc(hidden)]
13715        pub fn FlushMappedBufferRange_is_loaded(&self) -> bool {
13716            !self.glFlushMappedBufferRange_p.load(RELAX).is_null()
13717        }
13718        /// [glFlushMappedNamedBufferRange](http://docs.gl/gl4/glFlushMappedNamedBufferRange)(buffer, offset, length)
13719        /// * `length` group: BufferSize
13720        #[cfg_attr(feature = "inline", inline)]
13721        #[cfg_attr(feature = "inline_always", inline(always))]
13722        pub unsafe fn FlushMappedNamedBufferRange(
13723            &self,
13724            buffer: GLuint,
13725            offset: GLintptr,
13726            length: GLsizeiptr,
13727        ) {
13728            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13729            {
13730                trace!(
13731                    "calling gl.FlushMappedNamedBufferRange({:?}, {:?}, {:?});",
13732                    buffer,
13733                    offset,
13734                    length
13735                );
13736            }
13737            let out = call_atomic_ptr_3arg(
13738                "glFlushMappedNamedBufferRange",
13739                &self.glFlushMappedNamedBufferRange_p,
13740                buffer,
13741                offset,
13742                length,
13743            );
13744            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13745            {
13746                self.automatic_glGetError("glFlushMappedNamedBufferRange");
13747            }
13748            out
13749        }
13750        #[doc(hidden)]
13751        pub unsafe fn FlushMappedNamedBufferRange_load_with_dyn(
13752            &self,
13753            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13754        ) -> bool {
13755            load_dyn_name_atomic_ptr(
13756                get_proc_address,
13757                b"glFlushMappedNamedBufferRange\0",
13758                &self.glFlushMappedNamedBufferRange_p,
13759            )
13760        }
13761        #[inline]
13762        #[doc(hidden)]
13763        pub fn FlushMappedNamedBufferRange_is_loaded(&self) -> bool {
13764            !self.glFlushMappedNamedBufferRange_p.load(RELAX).is_null()
13765        }
13766        /// [glFramebufferParameteri](http://docs.gl/gl4/glFramebufferParameter)(target, pname, param)
13767        /// * `target` group: FramebufferTarget
13768        /// * `pname` group: FramebufferParameterName
13769        #[cfg_attr(feature = "inline", inline)]
13770        #[cfg_attr(feature = "inline_always", inline(always))]
13771        pub unsafe fn FramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) {
13772            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13773            {
13774                trace!(
13775                    "calling gl.FramebufferParameteri({:#X}, {:#X}, {:?});",
13776                    target,
13777                    pname,
13778                    param
13779                );
13780            }
13781            let out = call_atomic_ptr_3arg(
13782                "glFramebufferParameteri",
13783                &self.glFramebufferParameteri_p,
13784                target,
13785                pname,
13786                param,
13787            );
13788            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13789            {
13790                self.automatic_glGetError("glFramebufferParameteri");
13791            }
13792            out
13793        }
13794        #[doc(hidden)]
13795        pub unsafe fn FramebufferParameteri_load_with_dyn(
13796            &self,
13797            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13798        ) -> bool {
13799            load_dyn_name_atomic_ptr(
13800                get_proc_address,
13801                b"glFramebufferParameteri\0",
13802                &self.glFramebufferParameteri_p,
13803            )
13804        }
13805        #[inline]
13806        #[doc(hidden)]
13807        pub fn FramebufferParameteri_is_loaded(&self) -> bool {
13808            !self.glFramebufferParameteri_p.load(RELAX).is_null()
13809        }
13810        /// [glFramebufferRenderbuffer](http://docs.gl/gl4/glFramebufferRenderbuffer)(target, attachment, renderbuffertarget, renderbuffer)
13811        /// * `target` group: FramebufferTarget
13812        /// * `attachment` group: FramebufferAttachment
13813        /// * `renderbuffertarget` group: RenderbufferTarget
13814        #[cfg_attr(feature = "inline", inline)]
13815        #[cfg_attr(feature = "inline_always", inline(always))]
13816        pub unsafe fn FramebufferRenderbuffer(
13817            &self,
13818            target: GLenum,
13819            attachment: GLenum,
13820            renderbuffertarget: GLenum,
13821            renderbuffer: GLuint,
13822        ) {
13823            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13824            {
13825                trace!(
13826                    "calling gl.FramebufferRenderbuffer({:#X}, {:#X}, {:#X}, {:?});",
13827                    target,
13828                    attachment,
13829                    renderbuffertarget,
13830                    renderbuffer
13831                );
13832            }
13833            let out = call_atomic_ptr_4arg(
13834                "glFramebufferRenderbuffer",
13835                &self.glFramebufferRenderbuffer_p,
13836                target,
13837                attachment,
13838                renderbuffertarget,
13839                renderbuffer,
13840            );
13841            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13842            {
13843                self.automatic_glGetError("glFramebufferRenderbuffer");
13844            }
13845            out
13846        }
13847        #[doc(hidden)]
13848        pub unsafe fn FramebufferRenderbuffer_load_with_dyn(
13849            &self,
13850            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13851        ) -> bool {
13852            load_dyn_name_atomic_ptr(
13853                get_proc_address,
13854                b"glFramebufferRenderbuffer\0",
13855                &self.glFramebufferRenderbuffer_p,
13856            )
13857        }
13858        #[inline]
13859        #[doc(hidden)]
13860        pub fn FramebufferRenderbuffer_is_loaded(&self) -> bool {
13861            !self.glFramebufferRenderbuffer_p.load(RELAX).is_null()
13862        }
13863        /// [glFramebufferTexture](http://docs.gl/gl4/glFramebufferTexture)(target, attachment, texture, level)
13864        /// * `target` group: FramebufferTarget
13865        /// * `attachment` group: FramebufferAttachment
13866        #[cfg_attr(feature = "inline", inline)]
13867        #[cfg_attr(feature = "inline_always", inline(always))]
13868        pub unsafe fn FramebufferTexture(
13869            &self,
13870            target: GLenum,
13871            attachment: GLenum,
13872            texture: GLuint,
13873            level: GLint,
13874        ) {
13875            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13876            {
13877                trace!(
13878                    "calling gl.FramebufferTexture({:#X}, {:#X}, {:?}, {:?});",
13879                    target,
13880                    attachment,
13881                    texture,
13882                    level
13883                );
13884            }
13885            let out = call_atomic_ptr_4arg(
13886                "glFramebufferTexture",
13887                &self.glFramebufferTexture_p,
13888                target,
13889                attachment,
13890                texture,
13891                level,
13892            );
13893            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13894            {
13895                self.automatic_glGetError("glFramebufferTexture");
13896            }
13897            out
13898        }
13899        #[doc(hidden)]
13900        pub unsafe fn FramebufferTexture_load_with_dyn(
13901            &self,
13902            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13903        ) -> bool {
13904            load_dyn_name_atomic_ptr(
13905                get_proc_address,
13906                b"glFramebufferTexture\0",
13907                &self.glFramebufferTexture_p,
13908            )
13909        }
13910        #[inline]
13911        #[doc(hidden)]
13912        pub fn FramebufferTexture_is_loaded(&self) -> bool {
13913            !self.glFramebufferTexture_p.load(RELAX).is_null()
13914        }
13915        /// [glFramebufferTexture1D](http://docs.gl/gl4/glFramebufferTexture1D)(target, attachment, textarget, texture, level)
13916        /// * `target` group: FramebufferTarget
13917        /// * `attachment` group: FramebufferAttachment
13918        /// * `textarget` group: TextureTarget
13919        #[cfg_attr(feature = "inline", inline)]
13920        #[cfg_attr(feature = "inline_always", inline(always))]
13921        pub unsafe fn FramebufferTexture1D(
13922            &self,
13923            target: GLenum,
13924            attachment: GLenum,
13925            textarget: GLenum,
13926            texture: GLuint,
13927            level: GLint,
13928        ) {
13929            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13930            {
13931                trace!(
13932                    "calling gl.FramebufferTexture1D({:#X}, {:#X}, {:#X}, {:?}, {:?});",
13933                    target,
13934                    attachment,
13935                    textarget,
13936                    texture,
13937                    level
13938                );
13939            }
13940            let out = call_atomic_ptr_5arg(
13941                "glFramebufferTexture1D",
13942                &self.glFramebufferTexture1D_p,
13943                target,
13944                attachment,
13945                textarget,
13946                texture,
13947                level,
13948            );
13949            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13950            {
13951                self.automatic_glGetError("glFramebufferTexture1D");
13952            }
13953            out
13954        }
13955        #[doc(hidden)]
13956        pub unsafe fn FramebufferTexture1D_load_with_dyn(
13957            &self,
13958            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13959        ) -> bool {
13960            load_dyn_name_atomic_ptr(
13961                get_proc_address,
13962                b"glFramebufferTexture1D\0",
13963                &self.glFramebufferTexture1D_p,
13964            )
13965        }
13966        #[inline]
13967        #[doc(hidden)]
13968        pub fn FramebufferTexture1D_is_loaded(&self) -> bool {
13969            !self.glFramebufferTexture1D_p.load(RELAX).is_null()
13970        }
13971        /// [glFramebufferTexture2D](http://docs.gl/gl4/glFramebufferTexture2D)(target, attachment, textarget, texture, level)
13972        /// * `target` group: FramebufferTarget
13973        /// * `attachment` group: FramebufferAttachment
13974        /// * `textarget` group: TextureTarget
13975        #[cfg_attr(feature = "inline", inline)]
13976        #[cfg_attr(feature = "inline_always", inline(always))]
13977        pub unsafe fn FramebufferTexture2D(
13978            &self,
13979            target: GLenum,
13980            attachment: GLenum,
13981            textarget: GLenum,
13982            texture: GLuint,
13983            level: GLint,
13984        ) {
13985            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13986            {
13987                trace!(
13988                    "calling gl.FramebufferTexture2D({:#X}, {:#X}, {:#X}, {:?}, {:?});",
13989                    target,
13990                    attachment,
13991                    textarget,
13992                    texture,
13993                    level
13994                );
13995            }
13996            let out = call_atomic_ptr_5arg(
13997                "glFramebufferTexture2D",
13998                &self.glFramebufferTexture2D_p,
13999                target,
14000                attachment,
14001                textarget,
14002                texture,
14003                level,
14004            );
14005            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14006            {
14007                self.automatic_glGetError("glFramebufferTexture2D");
14008            }
14009            out
14010        }
14011        #[doc(hidden)]
14012        pub unsafe fn FramebufferTexture2D_load_with_dyn(
14013            &self,
14014            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14015        ) -> bool {
14016            load_dyn_name_atomic_ptr(
14017                get_proc_address,
14018                b"glFramebufferTexture2D\0",
14019                &self.glFramebufferTexture2D_p,
14020            )
14021        }
14022        #[inline]
14023        #[doc(hidden)]
14024        pub fn FramebufferTexture2D_is_loaded(&self) -> bool {
14025            !self.glFramebufferTexture2D_p.load(RELAX).is_null()
14026        }
14027        /// [glFramebufferTexture3D](http://docs.gl/gl4/glFramebufferTexture3D)(target, attachment, textarget, texture, level, zoffset)
14028        /// * `target` group: FramebufferTarget
14029        /// * `attachment` group: FramebufferAttachment
14030        /// * `textarget` group: TextureTarget
14031        #[cfg_attr(feature = "inline", inline)]
14032        #[cfg_attr(feature = "inline_always", inline(always))]
14033        pub unsafe fn FramebufferTexture3D(
14034            &self,
14035            target: GLenum,
14036            attachment: GLenum,
14037            textarget: GLenum,
14038            texture: GLuint,
14039            level: GLint,
14040            zoffset: GLint,
14041        ) {
14042            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14043            {
14044                trace!(
14045                    "calling gl.FramebufferTexture3D({:#X}, {:#X}, {:#X}, {:?}, {:?}, {:?});",
14046                    target,
14047                    attachment,
14048                    textarget,
14049                    texture,
14050                    level,
14051                    zoffset
14052                );
14053            }
14054            let out = call_atomic_ptr_6arg(
14055                "glFramebufferTexture3D",
14056                &self.glFramebufferTexture3D_p,
14057                target,
14058                attachment,
14059                textarget,
14060                texture,
14061                level,
14062                zoffset,
14063            );
14064            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14065            {
14066                self.automatic_glGetError("glFramebufferTexture3D");
14067            }
14068            out
14069        }
14070        #[doc(hidden)]
14071        pub unsafe fn FramebufferTexture3D_load_with_dyn(
14072            &self,
14073            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14074        ) -> bool {
14075            load_dyn_name_atomic_ptr(
14076                get_proc_address,
14077                b"glFramebufferTexture3D\0",
14078                &self.glFramebufferTexture3D_p,
14079            )
14080        }
14081        #[inline]
14082        #[doc(hidden)]
14083        pub fn FramebufferTexture3D_is_loaded(&self) -> bool {
14084            !self.glFramebufferTexture3D_p.load(RELAX).is_null()
14085        }
14086        /// [glFramebufferTextureLayer](http://docs.gl/gl4/glFramebufferTextureLayer)(target, attachment, texture, level, layer)
14087        /// * `target` group: FramebufferTarget
14088        /// * `attachment` group: FramebufferAttachment
14089        /// * `texture` group: Texture
14090        /// * `level` group: CheckedInt32
14091        /// * `layer` group: CheckedInt32
14092        #[cfg_attr(feature = "inline", inline)]
14093        #[cfg_attr(feature = "inline_always", inline(always))]
14094        pub unsafe fn FramebufferTextureLayer(
14095            &self,
14096            target: GLenum,
14097            attachment: GLenum,
14098            texture: GLuint,
14099            level: GLint,
14100            layer: GLint,
14101        ) {
14102            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14103            {
14104                trace!(
14105                    "calling gl.FramebufferTextureLayer({:#X}, {:#X}, {:?}, {:?}, {:?});",
14106                    target,
14107                    attachment,
14108                    texture,
14109                    level,
14110                    layer
14111                );
14112            }
14113            let out = call_atomic_ptr_5arg(
14114                "glFramebufferTextureLayer",
14115                &self.glFramebufferTextureLayer_p,
14116                target,
14117                attachment,
14118                texture,
14119                level,
14120                layer,
14121            );
14122            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14123            {
14124                self.automatic_glGetError("glFramebufferTextureLayer");
14125            }
14126            out
14127        }
14128        #[doc(hidden)]
14129        pub unsafe fn FramebufferTextureLayer_load_with_dyn(
14130            &self,
14131            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14132        ) -> bool {
14133            load_dyn_name_atomic_ptr(
14134                get_proc_address,
14135                b"glFramebufferTextureLayer\0",
14136                &self.glFramebufferTextureLayer_p,
14137            )
14138        }
14139        #[inline]
14140        #[doc(hidden)]
14141        pub fn FramebufferTextureLayer_is_loaded(&self) -> bool {
14142            !self.glFramebufferTextureLayer_p.load(RELAX).is_null()
14143        }
14144        /// [glFrontFace](http://docs.gl/gl4/glFrontFace)(mode)
14145        /// * `mode` group: FrontFaceDirection
14146        #[cfg_attr(feature = "inline", inline)]
14147        #[cfg_attr(feature = "inline_always", inline(always))]
14148        pub unsafe fn FrontFace(&self, mode: GLenum) {
14149            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14150            {
14151                trace!("calling gl.FrontFace({:#X});", mode);
14152            }
14153            let out = call_atomic_ptr_1arg("glFrontFace", &self.glFrontFace_p, mode);
14154            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14155            {
14156                self.automatic_glGetError("glFrontFace");
14157            }
14158            out
14159        }
14160        #[doc(hidden)]
14161        pub unsafe fn FrontFace_load_with_dyn(
14162            &self,
14163            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14164        ) -> bool {
14165            load_dyn_name_atomic_ptr(get_proc_address, b"glFrontFace\0", &self.glFrontFace_p)
14166        }
14167        #[inline]
14168        #[doc(hidden)]
14169        pub fn FrontFace_is_loaded(&self) -> bool {
14170            !self.glFrontFace_p.load(RELAX).is_null()
14171        }
14172        /// [glGenBuffers](http://docs.gl/gl4/glGenBuffers)(n, buffers)
14173        /// * `buffers` len: n
14174        #[cfg_attr(feature = "inline", inline)]
14175        #[cfg_attr(feature = "inline_always", inline(always))]
14176        pub unsafe fn GenBuffers(&self, n: GLsizei, buffers: *mut GLuint) {
14177            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14178            {
14179                trace!("calling gl.GenBuffers({:?}, {:p});", n, buffers);
14180            }
14181            let out = call_atomic_ptr_2arg("glGenBuffers", &self.glGenBuffers_p, n, buffers);
14182            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14183            {
14184                self.automatic_glGetError("glGenBuffers");
14185            }
14186            out
14187        }
14188        #[doc(hidden)]
14189        pub unsafe fn GenBuffers_load_with_dyn(
14190            &self,
14191            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14192        ) -> bool {
14193            load_dyn_name_atomic_ptr(get_proc_address, b"glGenBuffers\0", &self.glGenBuffers_p)
14194        }
14195        #[inline]
14196        #[doc(hidden)]
14197        pub fn GenBuffers_is_loaded(&self) -> bool {
14198            !self.glGenBuffers_p.load(RELAX).is_null()
14199        }
14200        /// [glGenFramebuffers](http://docs.gl/gl4/glGenFramebuffers)(n, framebuffers)
14201        /// * `framebuffers` len: n
14202        #[cfg_attr(feature = "inline", inline)]
14203        #[cfg_attr(feature = "inline_always", inline(always))]
14204        pub unsafe fn GenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) {
14205            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14206            {
14207                trace!("calling gl.GenFramebuffers({:?}, {:p});", n, framebuffers);
14208            }
14209            let out = call_atomic_ptr_2arg(
14210                "glGenFramebuffers",
14211                &self.glGenFramebuffers_p,
14212                n,
14213                framebuffers,
14214            );
14215            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14216            {
14217                self.automatic_glGetError("glGenFramebuffers");
14218            }
14219            out
14220        }
14221        #[doc(hidden)]
14222        pub unsafe fn GenFramebuffers_load_with_dyn(
14223            &self,
14224            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14225        ) -> bool {
14226            load_dyn_name_atomic_ptr(
14227                get_proc_address,
14228                b"glGenFramebuffers\0",
14229                &self.glGenFramebuffers_p,
14230            )
14231        }
14232        #[inline]
14233        #[doc(hidden)]
14234        pub fn GenFramebuffers_is_loaded(&self) -> bool {
14235            !self.glGenFramebuffers_p.load(RELAX).is_null()
14236        }
14237        /// [glGenProgramPipelines](http://docs.gl/gl4/glGenProgramPipelines)(n, pipelines)
14238        /// * `pipelines` len: n
14239        #[cfg_attr(feature = "inline", inline)]
14240        #[cfg_attr(feature = "inline_always", inline(always))]
14241        pub unsafe fn GenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) {
14242            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14243            {
14244                trace!("calling gl.GenProgramPipelines({:?}, {:p});", n, pipelines);
14245            }
14246            let out = call_atomic_ptr_2arg(
14247                "glGenProgramPipelines",
14248                &self.glGenProgramPipelines_p,
14249                n,
14250                pipelines,
14251            );
14252            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14253            {
14254                self.automatic_glGetError("glGenProgramPipelines");
14255            }
14256            out
14257        }
14258        #[doc(hidden)]
14259        pub unsafe fn GenProgramPipelines_load_with_dyn(
14260            &self,
14261            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14262        ) -> bool {
14263            load_dyn_name_atomic_ptr(
14264                get_proc_address,
14265                b"glGenProgramPipelines\0",
14266                &self.glGenProgramPipelines_p,
14267            )
14268        }
14269        #[inline]
14270        #[doc(hidden)]
14271        pub fn GenProgramPipelines_is_loaded(&self) -> bool {
14272            !self.glGenProgramPipelines_p.load(RELAX).is_null()
14273        }
14274        /// [glGenQueries](http://docs.gl/gl4/glGenQueries)(n, ids)
14275        /// * `ids` len: n
14276        #[cfg_attr(feature = "inline", inline)]
14277        #[cfg_attr(feature = "inline_always", inline(always))]
14278        pub unsafe fn GenQueries(&self, n: GLsizei, ids: *mut GLuint) {
14279            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14280            {
14281                trace!("calling gl.GenQueries({:?}, {:p});", n, ids);
14282            }
14283            let out = call_atomic_ptr_2arg("glGenQueries", &self.glGenQueries_p, n, ids);
14284            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14285            {
14286                self.automatic_glGetError("glGenQueries");
14287            }
14288            out
14289        }
14290        #[doc(hidden)]
14291        pub unsafe fn GenQueries_load_with_dyn(
14292            &self,
14293            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14294        ) -> bool {
14295            load_dyn_name_atomic_ptr(get_proc_address, b"glGenQueries\0", &self.glGenQueries_p)
14296        }
14297        #[inline]
14298        #[doc(hidden)]
14299        pub fn GenQueries_is_loaded(&self) -> bool {
14300            !self.glGenQueries_p.load(RELAX).is_null()
14301        }
14302        /// [glGenQueriesEXT](http://docs.gl/gl4/glGenQueriesEXT)(n, ids)
14303        /// * `ids` len: n
14304        #[cfg_attr(feature = "inline", inline)]
14305        #[cfg_attr(feature = "inline_always", inline(always))]
14306        pub unsafe fn GenQueriesEXT(&self, n: GLsizei, ids: *mut GLuint) {
14307            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14308            {
14309                trace!("calling gl.GenQueriesEXT({:?}, {:p});", n, ids);
14310            }
14311            let out = call_atomic_ptr_2arg("glGenQueriesEXT", &self.glGenQueriesEXT_p, n, ids);
14312            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14313            {
14314                self.automatic_glGetError("glGenQueriesEXT");
14315            }
14316            out
14317        }
14318        #[doc(hidden)]
14319        pub unsafe fn GenQueriesEXT_load_with_dyn(
14320            &self,
14321            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14322        ) -> bool {
14323            load_dyn_name_atomic_ptr(
14324                get_proc_address,
14325                b"glGenQueriesEXT\0",
14326                &self.glGenQueriesEXT_p,
14327            )
14328        }
14329        #[inline]
14330        #[doc(hidden)]
14331        pub fn GenQueriesEXT_is_loaded(&self) -> bool {
14332            !self.glGenQueriesEXT_p.load(RELAX).is_null()
14333        }
14334        /// [glGenRenderbuffers](http://docs.gl/gl4/glGenRenderbuffers)(n, renderbuffers)
14335        /// * `renderbuffers` len: n
14336        #[cfg_attr(feature = "inline", inline)]
14337        #[cfg_attr(feature = "inline_always", inline(always))]
14338        pub unsafe fn GenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) {
14339            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14340            {
14341                trace!("calling gl.GenRenderbuffers({:?}, {:p});", n, renderbuffers);
14342            }
14343            let out = call_atomic_ptr_2arg(
14344                "glGenRenderbuffers",
14345                &self.glGenRenderbuffers_p,
14346                n,
14347                renderbuffers,
14348            );
14349            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14350            {
14351                self.automatic_glGetError("glGenRenderbuffers");
14352            }
14353            out
14354        }
14355        #[doc(hidden)]
14356        pub unsafe fn GenRenderbuffers_load_with_dyn(
14357            &self,
14358            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14359        ) -> bool {
14360            load_dyn_name_atomic_ptr(
14361                get_proc_address,
14362                b"glGenRenderbuffers\0",
14363                &self.glGenRenderbuffers_p,
14364            )
14365        }
14366        #[inline]
14367        #[doc(hidden)]
14368        pub fn GenRenderbuffers_is_loaded(&self) -> bool {
14369            !self.glGenRenderbuffers_p.load(RELAX).is_null()
14370        }
14371        /// [glGenSamplers](http://docs.gl/gl4/glGenSamplers)(count, samplers)
14372        /// * `samplers` len: count
14373        #[cfg_attr(feature = "inline", inline)]
14374        #[cfg_attr(feature = "inline_always", inline(always))]
14375        pub unsafe fn GenSamplers(&self, count: GLsizei, samplers: *mut GLuint) {
14376            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14377            {
14378                trace!("calling gl.GenSamplers({:?}, {:p});", count, samplers);
14379            }
14380            let out = call_atomic_ptr_2arg("glGenSamplers", &self.glGenSamplers_p, count, samplers);
14381            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14382            {
14383                self.automatic_glGetError("glGenSamplers");
14384            }
14385            out
14386        }
14387        #[doc(hidden)]
14388        pub unsafe fn GenSamplers_load_with_dyn(
14389            &self,
14390            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14391        ) -> bool {
14392            load_dyn_name_atomic_ptr(get_proc_address, b"glGenSamplers\0", &self.glGenSamplers_p)
14393        }
14394        #[inline]
14395        #[doc(hidden)]
14396        pub fn GenSamplers_is_loaded(&self) -> bool {
14397            !self.glGenSamplers_p.load(RELAX).is_null()
14398        }
14399        /// [glGenTextures](http://docs.gl/gl4/glGenTextures)(n, textures)
14400        /// * `textures` group: Texture
14401        /// * `textures` len: n
14402        #[cfg_attr(feature = "inline", inline)]
14403        #[cfg_attr(feature = "inline_always", inline(always))]
14404        pub unsafe fn GenTextures(&self, n: GLsizei, textures: *mut GLuint) {
14405            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14406            {
14407                trace!("calling gl.GenTextures({:?}, {:p});", n, textures);
14408            }
14409            let out = call_atomic_ptr_2arg("glGenTextures", &self.glGenTextures_p, n, textures);
14410            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14411            {
14412                self.automatic_glGetError("glGenTextures");
14413            }
14414            out
14415        }
14416        #[doc(hidden)]
14417        pub unsafe fn GenTextures_load_with_dyn(
14418            &self,
14419            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14420        ) -> bool {
14421            load_dyn_name_atomic_ptr(get_proc_address, b"glGenTextures\0", &self.glGenTextures_p)
14422        }
14423        #[inline]
14424        #[doc(hidden)]
14425        pub fn GenTextures_is_loaded(&self) -> bool {
14426            !self.glGenTextures_p.load(RELAX).is_null()
14427        }
14428        /// [glGenTransformFeedbacks](http://docs.gl/gl4/glGenTransformFeedbacks)(n, ids)
14429        /// * `ids` len: n
14430        #[cfg_attr(feature = "inline", inline)]
14431        #[cfg_attr(feature = "inline_always", inline(always))]
14432        pub unsafe fn GenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) {
14433            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14434            {
14435                trace!("calling gl.GenTransformFeedbacks({:?}, {:p});", n, ids);
14436            }
14437            let out = call_atomic_ptr_2arg(
14438                "glGenTransformFeedbacks",
14439                &self.glGenTransformFeedbacks_p,
14440                n,
14441                ids,
14442            );
14443            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14444            {
14445                self.automatic_glGetError("glGenTransformFeedbacks");
14446            }
14447            out
14448        }
14449        #[doc(hidden)]
14450        pub unsafe fn GenTransformFeedbacks_load_with_dyn(
14451            &self,
14452            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14453        ) -> bool {
14454            load_dyn_name_atomic_ptr(
14455                get_proc_address,
14456                b"glGenTransformFeedbacks\0",
14457                &self.glGenTransformFeedbacks_p,
14458            )
14459        }
14460        #[inline]
14461        #[doc(hidden)]
14462        pub fn GenTransformFeedbacks_is_loaded(&self) -> bool {
14463            !self.glGenTransformFeedbacks_p.load(RELAX).is_null()
14464        }
14465        /// [glGenVertexArrays](http://docs.gl/gl4/glGenVertexArrays)(n, arrays)
14466        /// * `arrays` len: n
14467        #[cfg_attr(feature = "inline", inline)]
14468        #[cfg_attr(feature = "inline_always", inline(always))]
14469        pub unsafe fn GenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) {
14470            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14471            {
14472                trace!("calling gl.GenVertexArrays({:?}, {:p});", n, arrays);
14473            }
14474            let out =
14475                call_atomic_ptr_2arg("glGenVertexArrays", &self.glGenVertexArrays_p, n, arrays);
14476            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14477            {
14478                self.automatic_glGetError("glGenVertexArrays");
14479            }
14480            out
14481        }
14482        #[doc(hidden)]
14483        pub unsafe fn GenVertexArrays_load_with_dyn(
14484            &self,
14485            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14486        ) -> bool {
14487            load_dyn_name_atomic_ptr(
14488                get_proc_address,
14489                b"glGenVertexArrays\0",
14490                &self.glGenVertexArrays_p,
14491            )
14492        }
14493        #[inline]
14494        #[doc(hidden)]
14495        pub fn GenVertexArrays_is_loaded(&self) -> bool {
14496            !self.glGenVertexArrays_p.load(RELAX).is_null()
14497        }
14498        /// [glGenVertexArraysAPPLE](http://docs.gl/gl4/glGenVertexArraysAPPLE)(n, arrays)
14499        /// * `arrays` len: n
14500        /// * alias of: [`glGenVertexArrays`]
14501        #[cfg_attr(feature = "inline", inline)]
14502        #[cfg_attr(feature = "inline_always", inline(always))]
14503        pub unsafe fn GenVertexArraysAPPLE(&self, n: GLsizei, arrays: *mut GLuint) {
14504            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14505            {
14506                trace!("calling gl.GenVertexArraysAPPLE({:?}, {:p});", n, arrays);
14507            }
14508            let out = call_atomic_ptr_2arg(
14509                "glGenVertexArraysAPPLE",
14510                &self.glGenVertexArraysAPPLE_p,
14511                n,
14512                arrays,
14513            );
14514            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14515            {
14516                self.automatic_glGetError("glGenVertexArraysAPPLE");
14517            }
14518            out
14519        }
14520        #[doc(hidden)]
14521        pub unsafe fn GenVertexArraysAPPLE_load_with_dyn(
14522            &self,
14523            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14524        ) -> bool {
14525            load_dyn_name_atomic_ptr(
14526                get_proc_address,
14527                b"glGenVertexArraysAPPLE\0",
14528                &self.glGenVertexArraysAPPLE_p,
14529            )
14530        }
14531        #[inline]
14532        #[doc(hidden)]
14533        pub fn GenVertexArraysAPPLE_is_loaded(&self) -> bool {
14534            !self.glGenVertexArraysAPPLE_p.load(RELAX).is_null()
14535        }
14536        /// [glGenVertexArraysOES](http://docs.gl/gl4/glGenVertexArraysOES)(n, arrays)
14537        /// * `arrays` len: n
14538        /// * alias of: [`glGenVertexArrays`]
14539        #[cfg_attr(feature = "inline", inline)]
14540        #[cfg_attr(feature = "inline_always", inline(always))]
14541        pub unsafe fn GenVertexArraysOES(&self, n: GLsizei, arrays: *mut GLuint) {
14542            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14543            {
14544                trace!("calling gl.GenVertexArraysOES({:?}, {:p});", n, arrays);
14545            }
14546            let out = call_atomic_ptr_2arg(
14547                "glGenVertexArraysOES",
14548                &self.glGenVertexArraysOES_p,
14549                n,
14550                arrays,
14551            );
14552            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14553            {
14554                self.automatic_glGetError("glGenVertexArraysOES");
14555            }
14556            out
14557        }
14558        #[doc(hidden)]
14559        pub unsafe fn GenVertexArraysOES_load_with_dyn(
14560            &self,
14561            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14562        ) -> bool {
14563            load_dyn_name_atomic_ptr(
14564                get_proc_address,
14565                b"glGenVertexArraysOES\0",
14566                &self.glGenVertexArraysOES_p,
14567            )
14568        }
14569        #[inline]
14570        #[doc(hidden)]
14571        pub fn GenVertexArraysOES_is_loaded(&self) -> bool {
14572            !self.glGenVertexArraysOES_p.load(RELAX).is_null()
14573        }
14574        /// [glGenerateMipmap](http://docs.gl/gl4/glGenerateMipmap)(target)
14575        /// * `target` group: TextureTarget
14576        #[cfg_attr(feature = "inline", inline)]
14577        #[cfg_attr(feature = "inline_always", inline(always))]
14578        pub unsafe fn GenerateMipmap(&self, target: GLenum) {
14579            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14580            {
14581                trace!("calling gl.GenerateMipmap({:#X});", target);
14582            }
14583            let out = call_atomic_ptr_1arg("glGenerateMipmap", &self.glGenerateMipmap_p, target);
14584            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14585            {
14586                self.automatic_glGetError("glGenerateMipmap");
14587            }
14588            out
14589        }
14590        #[doc(hidden)]
14591        pub unsafe fn GenerateMipmap_load_with_dyn(
14592            &self,
14593            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14594        ) -> bool {
14595            load_dyn_name_atomic_ptr(
14596                get_proc_address,
14597                b"glGenerateMipmap\0",
14598                &self.glGenerateMipmap_p,
14599            )
14600        }
14601        #[inline]
14602        #[doc(hidden)]
14603        pub fn GenerateMipmap_is_loaded(&self) -> bool {
14604            !self.glGenerateMipmap_p.load(RELAX).is_null()
14605        }
14606        /// [glGenerateTextureMipmap](http://docs.gl/gl4/glGenerateTextureMipmap)(texture)
14607        #[cfg_attr(feature = "inline", inline)]
14608        #[cfg_attr(feature = "inline_always", inline(always))]
14609        pub unsafe fn GenerateTextureMipmap(&self, texture: GLuint) {
14610            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14611            {
14612                trace!("calling gl.GenerateTextureMipmap({:?});", texture);
14613            }
14614            let out = call_atomic_ptr_1arg(
14615                "glGenerateTextureMipmap",
14616                &self.glGenerateTextureMipmap_p,
14617                texture,
14618            );
14619            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14620            {
14621                self.automatic_glGetError("glGenerateTextureMipmap");
14622            }
14623            out
14624        }
14625        #[doc(hidden)]
14626        pub unsafe fn GenerateTextureMipmap_load_with_dyn(
14627            &self,
14628            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14629        ) -> bool {
14630            load_dyn_name_atomic_ptr(
14631                get_proc_address,
14632                b"glGenerateTextureMipmap\0",
14633                &self.glGenerateTextureMipmap_p,
14634            )
14635        }
14636        #[inline]
14637        #[doc(hidden)]
14638        pub fn GenerateTextureMipmap_is_loaded(&self) -> bool {
14639            !self.glGenerateTextureMipmap_p.load(RELAX).is_null()
14640        }
14641        /// [glGetActiveAtomicCounterBufferiv](http://docs.gl/gl4/glGetActiveAtomicCounterBuffer)(program, bufferIndex, pname, params)
14642        /// * `pname` group: AtomicCounterBufferPName
14643        /// * `params` len: COMPSIZE(pname)
14644        #[cfg_attr(feature = "inline", inline)]
14645        #[cfg_attr(feature = "inline_always", inline(always))]
14646        pub unsafe fn GetActiveAtomicCounterBufferiv(
14647            &self,
14648            program: GLuint,
14649            bufferIndex: GLuint,
14650            pname: GLenum,
14651            params: *mut GLint,
14652        ) {
14653            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14654            {
14655                trace!(
14656                    "calling gl.GetActiveAtomicCounterBufferiv({:?}, {:?}, {:#X}, {:p});",
14657                    program,
14658                    bufferIndex,
14659                    pname,
14660                    params
14661                );
14662            }
14663            let out = call_atomic_ptr_4arg(
14664                "glGetActiveAtomicCounterBufferiv",
14665                &self.glGetActiveAtomicCounterBufferiv_p,
14666                program,
14667                bufferIndex,
14668                pname,
14669                params,
14670            );
14671            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14672            {
14673                self.automatic_glGetError("glGetActiveAtomicCounterBufferiv");
14674            }
14675            out
14676        }
14677        #[doc(hidden)]
14678        pub unsafe fn GetActiveAtomicCounterBufferiv_load_with_dyn(
14679            &self,
14680            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14681        ) -> bool {
14682            load_dyn_name_atomic_ptr(
14683                get_proc_address,
14684                b"glGetActiveAtomicCounterBufferiv\0",
14685                &self.glGetActiveAtomicCounterBufferiv_p,
14686            )
14687        }
14688        #[inline]
14689        #[doc(hidden)]
14690        pub fn GetActiveAtomicCounterBufferiv_is_loaded(&self) -> bool {
14691            !self
14692                .glGetActiveAtomicCounterBufferiv_p
14693                .load(RELAX)
14694                .is_null()
14695        }
14696        /// [glGetActiveAttrib](http://docs.gl/gl4/glGetActiveAttrib)(program, index, bufSize, length, size, type_, name)
14697        /// * `length` len: 1
14698        /// * `size` len: 1
14699        /// * `type_` group: AttributeType
14700        /// * `type_` len: 1
14701        /// * `name` len: bufSize
14702        #[cfg_attr(feature = "inline", inline)]
14703        #[cfg_attr(feature = "inline_always", inline(always))]
14704        pub unsafe fn GetActiveAttrib(
14705            &self,
14706            program: GLuint,
14707            index: GLuint,
14708            bufSize: GLsizei,
14709            length: *mut GLsizei,
14710            size: *mut GLint,
14711            type_: *mut GLenum,
14712            name: *mut GLchar,
14713        ) {
14714            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14715            {
14716                trace!(
14717                    "calling gl.GetActiveAttrib({:?}, {:?}, {:?}, {:p}, {:p}, {:p}, {:p});",
14718                    program,
14719                    index,
14720                    bufSize,
14721                    length,
14722                    size,
14723                    type_,
14724                    name
14725                );
14726            }
14727            let out = call_atomic_ptr_7arg(
14728                "glGetActiveAttrib",
14729                &self.glGetActiveAttrib_p,
14730                program,
14731                index,
14732                bufSize,
14733                length,
14734                size,
14735                type_,
14736                name,
14737            );
14738            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14739            {
14740                self.automatic_glGetError("glGetActiveAttrib");
14741            }
14742            out
14743        }
14744        #[doc(hidden)]
14745        pub unsafe fn GetActiveAttrib_load_with_dyn(
14746            &self,
14747            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14748        ) -> bool {
14749            load_dyn_name_atomic_ptr(
14750                get_proc_address,
14751                b"glGetActiveAttrib\0",
14752                &self.glGetActiveAttrib_p,
14753            )
14754        }
14755        #[inline]
14756        #[doc(hidden)]
14757        pub fn GetActiveAttrib_is_loaded(&self) -> bool {
14758            !self.glGetActiveAttrib_p.load(RELAX).is_null()
14759        }
14760        /// [glGetActiveSubroutineName](http://docs.gl/gl4/glGetActiveSubroutineName)(program, shadertype, index, bufSize, length, name)
14761        /// * `shadertype` group: ShaderType
14762        /// * `length` len: 1
14763        /// * `name` len: bufSize
14764        #[cfg_attr(feature = "inline", inline)]
14765        #[cfg_attr(feature = "inline_always", inline(always))]
14766        pub unsafe fn GetActiveSubroutineName(
14767            &self,
14768            program: GLuint,
14769            shadertype: GLenum,
14770            index: GLuint,
14771            bufSize: GLsizei,
14772            length: *mut GLsizei,
14773            name: *mut GLchar,
14774        ) {
14775            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14776            {
14777                trace!(
14778                    "calling gl.GetActiveSubroutineName({:?}, {:#X}, {:?}, {:?}, {:p}, {:p});",
14779                    program,
14780                    shadertype,
14781                    index,
14782                    bufSize,
14783                    length,
14784                    name
14785                );
14786            }
14787            let out = call_atomic_ptr_6arg(
14788                "glGetActiveSubroutineName",
14789                &self.glGetActiveSubroutineName_p,
14790                program,
14791                shadertype,
14792                index,
14793                bufSize,
14794                length,
14795                name,
14796            );
14797            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14798            {
14799                self.automatic_glGetError("glGetActiveSubroutineName");
14800            }
14801            out
14802        }
14803        #[doc(hidden)]
14804        pub unsafe fn GetActiveSubroutineName_load_with_dyn(
14805            &self,
14806            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14807        ) -> bool {
14808            load_dyn_name_atomic_ptr(
14809                get_proc_address,
14810                b"glGetActiveSubroutineName\0",
14811                &self.glGetActiveSubroutineName_p,
14812            )
14813        }
14814        #[inline]
14815        #[doc(hidden)]
14816        pub fn GetActiveSubroutineName_is_loaded(&self) -> bool {
14817            !self.glGetActiveSubroutineName_p.load(RELAX).is_null()
14818        }
14819        /// [glGetActiveSubroutineUniformName](http://docs.gl/gl4/glGetActiveSubroutineUniformName)(program, shadertype, index, bufSize, length, name)
14820        /// * `shadertype` group: ShaderType
14821        /// * `length` len: 1
14822        /// * `name` len: bufSize
14823        #[cfg_attr(feature = "inline", inline)]
14824        #[cfg_attr(feature = "inline_always", inline(always))]
14825        pub unsafe fn GetActiveSubroutineUniformName(
14826            &self,
14827            program: GLuint,
14828            shadertype: GLenum,
14829            index: GLuint,
14830            bufSize: GLsizei,
14831            length: *mut GLsizei,
14832            name: *mut GLchar,
14833        ) {
14834            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14835            {
14836                trace!("calling gl.GetActiveSubroutineUniformName({:?}, {:#X}, {:?}, {:?}, {:p}, {:p});", program, shadertype, index, bufSize, length, name);
14837            }
14838            let out = call_atomic_ptr_6arg(
14839                "glGetActiveSubroutineUniformName",
14840                &self.glGetActiveSubroutineUniformName_p,
14841                program,
14842                shadertype,
14843                index,
14844                bufSize,
14845                length,
14846                name,
14847            );
14848            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14849            {
14850                self.automatic_glGetError("glGetActiveSubroutineUniformName");
14851            }
14852            out
14853        }
14854        #[doc(hidden)]
14855        pub unsafe fn GetActiveSubroutineUniformName_load_with_dyn(
14856            &self,
14857            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14858        ) -> bool {
14859            load_dyn_name_atomic_ptr(
14860                get_proc_address,
14861                b"glGetActiveSubroutineUniformName\0",
14862                &self.glGetActiveSubroutineUniformName_p,
14863            )
14864        }
14865        #[inline]
14866        #[doc(hidden)]
14867        pub fn GetActiveSubroutineUniformName_is_loaded(&self) -> bool {
14868            !self
14869                .glGetActiveSubroutineUniformName_p
14870                .load(RELAX)
14871                .is_null()
14872        }
14873        /// [glGetActiveSubroutineUniformiv](http://docs.gl/gl4/glGetActiveSubroutineUniform)(program, shadertype, index, pname, values)
14874        /// * `shadertype` group: ShaderType
14875        /// * `pname` group: SubroutineParameterName
14876        /// * `values` len: COMPSIZE(pname)
14877        #[cfg_attr(feature = "inline", inline)]
14878        #[cfg_attr(feature = "inline_always", inline(always))]
14879        pub unsafe fn GetActiveSubroutineUniformiv(
14880            &self,
14881            program: GLuint,
14882            shadertype: GLenum,
14883            index: GLuint,
14884            pname: GLenum,
14885            values: *mut GLint,
14886        ) {
14887            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14888            {
14889                trace!(
14890                    "calling gl.GetActiveSubroutineUniformiv({:?}, {:#X}, {:?}, {:#X}, {:p});",
14891                    program,
14892                    shadertype,
14893                    index,
14894                    pname,
14895                    values
14896                );
14897            }
14898            let out = call_atomic_ptr_5arg(
14899                "glGetActiveSubroutineUniformiv",
14900                &self.glGetActiveSubroutineUniformiv_p,
14901                program,
14902                shadertype,
14903                index,
14904                pname,
14905                values,
14906            );
14907            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14908            {
14909                self.automatic_glGetError("glGetActiveSubroutineUniformiv");
14910            }
14911            out
14912        }
14913        #[doc(hidden)]
14914        pub unsafe fn GetActiveSubroutineUniformiv_load_with_dyn(
14915            &self,
14916            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14917        ) -> bool {
14918            load_dyn_name_atomic_ptr(
14919                get_proc_address,
14920                b"glGetActiveSubroutineUniformiv\0",
14921                &self.glGetActiveSubroutineUniformiv_p,
14922            )
14923        }
14924        #[inline]
14925        #[doc(hidden)]
14926        pub fn GetActiveSubroutineUniformiv_is_loaded(&self) -> bool {
14927            !self.glGetActiveSubroutineUniformiv_p.load(RELAX).is_null()
14928        }
14929        /// [glGetActiveUniform](http://docs.gl/gl4/glGetActiveUniform)(program, index, bufSize, length, size, type_, name)
14930        /// * `length` len: 1
14931        /// * `size` len: 1
14932        /// * `type_` group: UniformType
14933        /// * `type_` len: 1
14934        /// * `name` len: bufSize
14935        #[cfg_attr(feature = "inline", inline)]
14936        #[cfg_attr(feature = "inline_always", inline(always))]
14937        pub unsafe fn GetActiveUniform(
14938            &self,
14939            program: GLuint,
14940            index: GLuint,
14941            bufSize: GLsizei,
14942            length: *mut GLsizei,
14943            size: *mut GLint,
14944            type_: *mut GLenum,
14945            name: *mut GLchar,
14946        ) {
14947            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14948            {
14949                trace!(
14950                    "calling gl.GetActiveUniform({:?}, {:?}, {:?}, {:p}, {:p}, {:p}, {:p});",
14951                    program,
14952                    index,
14953                    bufSize,
14954                    length,
14955                    size,
14956                    type_,
14957                    name
14958                );
14959            }
14960            let out = call_atomic_ptr_7arg(
14961                "glGetActiveUniform",
14962                &self.glGetActiveUniform_p,
14963                program,
14964                index,
14965                bufSize,
14966                length,
14967                size,
14968                type_,
14969                name,
14970            );
14971            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14972            {
14973                self.automatic_glGetError("glGetActiveUniform");
14974            }
14975            out
14976        }
14977        #[doc(hidden)]
14978        pub unsafe fn GetActiveUniform_load_with_dyn(
14979            &self,
14980            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14981        ) -> bool {
14982            load_dyn_name_atomic_ptr(
14983                get_proc_address,
14984                b"glGetActiveUniform\0",
14985                &self.glGetActiveUniform_p,
14986            )
14987        }
14988        #[inline]
14989        #[doc(hidden)]
14990        pub fn GetActiveUniform_is_loaded(&self) -> bool {
14991            !self.glGetActiveUniform_p.load(RELAX).is_null()
14992        }
14993        /// [glGetActiveUniformBlockName](http://docs.gl/gl4/glGetActiveUniformBlockName)(program, uniformBlockIndex, bufSize, length, uniformBlockName)
14994        /// * `length` len: 1
14995        /// * `uniformBlockName` len: bufSize
14996        #[cfg_attr(feature = "inline", inline)]
14997        #[cfg_attr(feature = "inline_always", inline(always))]
14998        pub unsafe fn GetActiveUniformBlockName(
14999            &self,
15000            program: GLuint,
15001            uniformBlockIndex: GLuint,
15002            bufSize: GLsizei,
15003            length: *mut GLsizei,
15004            uniformBlockName: *mut GLchar,
15005        ) {
15006            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15007            {
15008                trace!(
15009                    "calling gl.GetActiveUniformBlockName({:?}, {:?}, {:?}, {:p}, {:p});",
15010                    program,
15011                    uniformBlockIndex,
15012                    bufSize,
15013                    length,
15014                    uniformBlockName
15015                );
15016            }
15017            let out = call_atomic_ptr_5arg(
15018                "glGetActiveUniformBlockName",
15019                &self.glGetActiveUniformBlockName_p,
15020                program,
15021                uniformBlockIndex,
15022                bufSize,
15023                length,
15024                uniformBlockName,
15025            );
15026            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15027            {
15028                self.automatic_glGetError("glGetActiveUniformBlockName");
15029            }
15030            out
15031        }
15032        #[doc(hidden)]
15033        pub unsafe fn GetActiveUniformBlockName_load_with_dyn(
15034            &self,
15035            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15036        ) -> bool {
15037            load_dyn_name_atomic_ptr(
15038                get_proc_address,
15039                b"glGetActiveUniformBlockName\0",
15040                &self.glGetActiveUniformBlockName_p,
15041            )
15042        }
15043        #[inline]
15044        #[doc(hidden)]
15045        pub fn GetActiveUniformBlockName_is_loaded(&self) -> bool {
15046            !self.glGetActiveUniformBlockName_p.load(RELAX).is_null()
15047        }
15048        /// [glGetActiveUniformBlockiv](http://docs.gl/gl4/glGetActiveUniformBlockiv)(program, uniformBlockIndex, pname, params)
15049        /// * `pname` group: UniformBlockPName
15050        /// * `params` len: COMPSIZE(program,uniformBlockIndex,pname)
15051        #[cfg_attr(feature = "inline", inline)]
15052        #[cfg_attr(feature = "inline_always", inline(always))]
15053        pub unsafe fn GetActiveUniformBlockiv(
15054            &self,
15055            program: GLuint,
15056            uniformBlockIndex: GLuint,
15057            pname: GLenum,
15058            params: *mut GLint,
15059        ) {
15060            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15061            {
15062                trace!(
15063                    "calling gl.GetActiveUniformBlockiv({:?}, {:?}, {:#X}, {:p});",
15064                    program,
15065                    uniformBlockIndex,
15066                    pname,
15067                    params
15068                );
15069            }
15070            let out = call_atomic_ptr_4arg(
15071                "glGetActiveUniformBlockiv",
15072                &self.glGetActiveUniformBlockiv_p,
15073                program,
15074                uniformBlockIndex,
15075                pname,
15076                params,
15077            );
15078            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15079            {
15080                self.automatic_glGetError("glGetActiveUniformBlockiv");
15081            }
15082            out
15083        }
15084        #[doc(hidden)]
15085        pub unsafe fn GetActiveUniformBlockiv_load_with_dyn(
15086            &self,
15087            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15088        ) -> bool {
15089            load_dyn_name_atomic_ptr(
15090                get_proc_address,
15091                b"glGetActiveUniformBlockiv\0",
15092                &self.glGetActiveUniformBlockiv_p,
15093            )
15094        }
15095        #[inline]
15096        #[doc(hidden)]
15097        pub fn GetActiveUniformBlockiv_is_loaded(&self) -> bool {
15098            !self.glGetActiveUniformBlockiv_p.load(RELAX).is_null()
15099        }
15100        /// [glGetActiveUniformName](http://docs.gl/gl4/glGetActiveUniformName)(program, uniformIndex, bufSize, length, uniformName)
15101        /// * `length` len: 1
15102        /// * `uniformName` len: bufSize
15103        #[cfg_attr(feature = "inline", inline)]
15104        #[cfg_attr(feature = "inline_always", inline(always))]
15105        pub unsafe fn GetActiveUniformName(
15106            &self,
15107            program: GLuint,
15108            uniformIndex: GLuint,
15109            bufSize: GLsizei,
15110            length: *mut GLsizei,
15111            uniformName: *mut GLchar,
15112        ) {
15113            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15114            {
15115                trace!(
15116                    "calling gl.GetActiveUniformName({:?}, {:?}, {:?}, {:p}, {:p});",
15117                    program,
15118                    uniformIndex,
15119                    bufSize,
15120                    length,
15121                    uniformName
15122                );
15123            }
15124            let out = call_atomic_ptr_5arg(
15125                "glGetActiveUniformName",
15126                &self.glGetActiveUniformName_p,
15127                program,
15128                uniformIndex,
15129                bufSize,
15130                length,
15131                uniformName,
15132            );
15133            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15134            {
15135                self.automatic_glGetError("glGetActiveUniformName");
15136            }
15137            out
15138        }
15139        #[doc(hidden)]
15140        pub unsafe fn GetActiveUniformName_load_with_dyn(
15141            &self,
15142            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15143        ) -> bool {
15144            load_dyn_name_atomic_ptr(
15145                get_proc_address,
15146                b"glGetActiveUniformName\0",
15147                &self.glGetActiveUniformName_p,
15148            )
15149        }
15150        #[inline]
15151        #[doc(hidden)]
15152        pub fn GetActiveUniformName_is_loaded(&self) -> bool {
15153            !self.glGetActiveUniformName_p.load(RELAX).is_null()
15154        }
15155        /// [glGetActiveUniformsiv](http://docs.gl/gl4/glGetActiveUniformsiv)(program, uniformCount, uniformIndices, pname, params)
15156        /// * `uniformIndices` len: uniformCount
15157        /// * `pname` group: UniformPName
15158        /// * `params` len: COMPSIZE(uniformCount,pname)
15159        #[cfg_attr(feature = "inline", inline)]
15160        #[cfg_attr(feature = "inline_always", inline(always))]
15161        pub unsafe fn GetActiveUniformsiv(
15162            &self,
15163            program: GLuint,
15164            uniformCount: GLsizei,
15165            uniformIndices: *const GLuint,
15166            pname: GLenum,
15167            params: *mut GLint,
15168        ) {
15169            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15170            {
15171                trace!(
15172                    "calling gl.GetActiveUniformsiv({:?}, {:?}, {:p}, {:#X}, {:p});",
15173                    program,
15174                    uniformCount,
15175                    uniformIndices,
15176                    pname,
15177                    params
15178                );
15179            }
15180            let out = call_atomic_ptr_5arg(
15181                "glGetActiveUniformsiv",
15182                &self.glGetActiveUniformsiv_p,
15183                program,
15184                uniformCount,
15185                uniformIndices,
15186                pname,
15187                params,
15188            );
15189            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15190            {
15191                self.automatic_glGetError("glGetActiveUniformsiv");
15192            }
15193            out
15194        }
15195        #[doc(hidden)]
15196        pub unsafe fn GetActiveUniformsiv_load_with_dyn(
15197            &self,
15198            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15199        ) -> bool {
15200            load_dyn_name_atomic_ptr(
15201                get_proc_address,
15202                b"glGetActiveUniformsiv\0",
15203                &self.glGetActiveUniformsiv_p,
15204            )
15205        }
15206        #[inline]
15207        #[doc(hidden)]
15208        pub fn GetActiveUniformsiv_is_loaded(&self) -> bool {
15209            !self.glGetActiveUniformsiv_p.load(RELAX).is_null()
15210        }
15211        /// [glGetAttachedShaders](http://docs.gl/gl4/glGetAttachedShaders)(program, maxCount, count, shaders)
15212        /// * `count` len: 1
15213        /// * `shaders` len: maxCount
15214        #[cfg_attr(feature = "inline", inline)]
15215        #[cfg_attr(feature = "inline_always", inline(always))]
15216        pub unsafe fn GetAttachedShaders(
15217            &self,
15218            program: GLuint,
15219            maxCount: GLsizei,
15220            count: *mut GLsizei,
15221            shaders: *mut GLuint,
15222        ) {
15223            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15224            {
15225                trace!(
15226                    "calling gl.GetAttachedShaders({:?}, {:?}, {:p}, {:p});",
15227                    program,
15228                    maxCount,
15229                    count,
15230                    shaders
15231                );
15232            }
15233            let out = call_atomic_ptr_4arg(
15234                "glGetAttachedShaders",
15235                &self.glGetAttachedShaders_p,
15236                program,
15237                maxCount,
15238                count,
15239                shaders,
15240            );
15241            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15242            {
15243                self.automatic_glGetError("glGetAttachedShaders");
15244            }
15245            out
15246        }
15247        #[doc(hidden)]
15248        pub unsafe fn GetAttachedShaders_load_with_dyn(
15249            &self,
15250            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15251        ) -> bool {
15252            load_dyn_name_atomic_ptr(
15253                get_proc_address,
15254                b"glGetAttachedShaders\0",
15255                &self.glGetAttachedShaders_p,
15256            )
15257        }
15258        #[inline]
15259        #[doc(hidden)]
15260        pub fn GetAttachedShaders_is_loaded(&self) -> bool {
15261            !self.glGetAttachedShaders_p.load(RELAX).is_null()
15262        }
15263        /// [glGetAttribLocation](http://docs.gl/gl4/glGetAttribLocation)(program, name)
15264        #[cfg_attr(feature = "inline", inline)]
15265        #[cfg_attr(feature = "inline_always", inline(always))]
15266        pub unsafe fn GetAttribLocation(&self, program: GLuint, name: *const GLchar) -> GLint {
15267            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15268            {
15269                trace!("calling gl.GetAttribLocation({:?}, {:p});", program, name);
15270            }
15271            let out = call_atomic_ptr_2arg(
15272                "glGetAttribLocation",
15273                &self.glGetAttribLocation_p,
15274                program,
15275                name,
15276            );
15277            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15278            {
15279                self.automatic_glGetError("glGetAttribLocation");
15280            }
15281            out
15282        }
15283        #[doc(hidden)]
15284        pub unsafe fn GetAttribLocation_load_with_dyn(
15285            &self,
15286            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15287        ) -> bool {
15288            load_dyn_name_atomic_ptr(
15289                get_proc_address,
15290                b"glGetAttribLocation\0",
15291                &self.glGetAttribLocation_p,
15292            )
15293        }
15294        #[inline]
15295        #[doc(hidden)]
15296        pub fn GetAttribLocation_is_loaded(&self) -> bool {
15297            !self.glGetAttribLocation_p.load(RELAX).is_null()
15298        }
15299        /// [glGetBooleanIndexedvEXT](http://docs.gl/gl4/glGetBooleanIndexedvEXT)(target, index, data)
15300        /// * `target` group: BufferTargetARB
15301        /// * `data` len: COMPSIZE(target)
15302        /// * alias of: [`glGetBooleani_v`]
15303        #[cfg_attr(feature = "inline", inline)]
15304        #[cfg_attr(feature = "inline_always", inline(always))]
15305        pub unsafe fn GetBooleanIndexedvEXT(
15306            &self,
15307            target: GLenum,
15308            index: GLuint,
15309            data: *mut GLboolean,
15310        ) {
15311            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15312            {
15313                trace!(
15314                    "calling gl.GetBooleanIndexedvEXT({:#X}, {:?}, {:p});",
15315                    target,
15316                    index,
15317                    data
15318                );
15319            }
15320            let out = call_atomic_ptr_3arg(
15321                "glGetBooleanIndexedvEXT",
15322                &self.glGetBooleanIndexedvEXT_p,
15323                target,
15324                index,
15325                data,
15326            );
15327            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15328            {
15329                self.automatic_glGetError("glGetBooleanIndexedvEXT");
15330            }
15331            out
15332        }
15333        #[doc(hidden)]
15334        pub unsafe fn GetBooleanIndexedvEXT_load_with_dyn(
15335            &self,
15336            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15337        ) -> bool {
15338            load_dyn_name_atomic_ptr(
15339                get_proc_address,
15340                b"glGetBooleanIndexedvEXT\0",
15341                &self.glGetBooleanIndexedvEXT_p,
15342            )
15343        }
15344        #[inline]
15345        #[doc(hidden)]
15346        pub fn GetBooleanIndexedvEXT_is_loaded(&self) -> bool {
15347            !self.glGetBooleanIndexedvEXT_p.load(RELAX).is_null()
15348        }
15349        /// [glGetBooleani_v](http://docs.gl/gl4/glGet)(target, index, data)
15350        /// * `target` group: BufferTargetARB
15351        /// * `data` len: COMPSIZE(target)
15352        #[cfg_attr(feature = "inline", inline)]
15353        #[cfg_attr(feature = "inline_always", inline(always))]
15354        pub unsafe fn GetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) {
15355            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15356            {
15357                trace!(
15358                    "calling gl.GetBooleani_v({:#X}, {:?}, {:p});",
15359                    target,
15360                    index,
15361                    data
15362                );
15363            }
15364            let out = call_atomic_ptr_3arg(
15365                "glGetBooleani_v",
15366                &self.glGetBooleani_v_p,
15367                target,
15368                index,
15369                data,
15370            );
15371            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15372            {
15373                self.automatic_glGetError("glGetBooleani_v");
15374            }
15375            out
15376        }
15377        #[doc(hidden)]
15378        pub unsafe fn GetBooleani_v_load_with_dyn(
15379            &self,
15380            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15381        ) -> bool {
15382            load_dyn_name_atomic_ptr(
15383                get_proc_address,
15384                b"glGetBooleani_v\0",
15385                &self.glGetBooleani_v_p,
15386            )
15387        }
15388        #[inline]
15389        #[doc(hidden)]
15390        pub fn GetBooleani_v_is_loaded(&self) -> bool {
15391            !self.glGetBooleani_v_p.load(RELAX).is_null()
15392        }
15393        /// [glGetBooleanv](http://docs.gl/gl4/glGet)(pname, data)
15394        /// * `pname` group: GetPName
15395        /// * `data` len: COMPSIZE(pname)
15396        #[cfg_attr(feature = "inline", inline)]
15397        #[cfg_attr(feature = "inline_always", inline(always))]
15398        pub unsafe fn GetBooleanv(&self, pname: GLenum, data: *mut GLboolean) {
15399            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15400            {
15401                trace!("calling gl.GetBooleanv({:#X}, {:p});", pname, data);
15402            }
15403            let out = call_atomic_ptr_2arg("glGetBooleanv", &self.glGetBooleanv_p, pname, data);
15404            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15405            {
15406                self.automatic_glGetError("glGetBooleanv");
15407            }
15408            out
15409        }
15410        #[doc(hidden)]
15411        pub unsafe fn GetBooleanv_load_with_dyn(
15412            &self,
15413            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15414        ) -> bool {
15415            load_dyn_name_atomic_ptr(get_proc_address, b"glGetBooleanv\0", &self.glGetBooleanv_p)
15416        }
15417        #[inline]
15418        #[doc(hidden)]
15419        pub fn GetBooleanv_is_loaded(&self) -> bool {
15420            !self.glGetBooleanv_p.load(RELAX).is_null()
15421        }
15422        /// [glGetBufferParameteri64v](http://docs.gl/gl4/glGetBufferParameter)(target, pname, params)
15423        /// * `target` group: BufferTargetARB
15424        /// * `pname` group: BufferPNameARB
15425        /// * `params` len: COMPSIZE(pname)
15426        #[cfg_attr(feature = "inline", inline)]
15427        #[cfg_attr(feature = "inline_always", inline(always))]
15428        pub unsafe fn GetBufferParameteri64v(
15429            &self,
15430            target: GLenum,
15431            pname: GLenum,
15432            params: *mut GLint64,
15433        ) {
15434            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15435            {
15436                trace!(
15437                    "calling gl.GetBufferParameteri64v({:#X}, {:#X}, {:p});",
15438                    target,
15439                    pname,
15440                    params
15441                );
15442            }
15443            let out = call_atomic_ptr_3arg(
15444                "glGetBufferParameteri64v",
15445                &self.glGetBufferParameteri64v_p,
15446                target,
15447                pname,
15448                params,
15449            );
15450            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15451            {
15452                self.automatic_glGetError("glGetBufferParameteri64v");
15453            }
15454            out
15455        }
15456        #[doc(hidden)]
15457        pub unsafe fn GetBufferParameteri64v_load_with_dyn(
15458            &self,
15459            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15460        ) -> bool {
15461            load_dyn_name_atomic_ptr(
15462                get_proc_address,
15463                b"glGetBufferParameteri64v\0",
15464                &self.glGetBufferParameteri64v_p,
15465            )
15466        }
15467        #[inline]
15468        #[doc(hidden)]
15469        pub fn GetBufferParameteri64v_is_loaded(&self) -> bool {
15470            !self.glGetBufferParameteri64v_p.load(RELAX).is_null()
15471        }
15472        /// [glGetBufferParameteriv](http://docs.gl/gl4/glGetBufferParameter)(target, pname, params)
15473        /// * `target` group: BufferTargetARB
15474        /// * `pname` group: BufferPNameARB
15475        /// * `params` len: COMPSIZE(pname)
15476        #[cfg_attr(feature = "inline", inline)]
15477        #[cfg_attr(feature = "inline_always", inline(always))]
15478        pub unsafe fn GetBufferParameteriv(
15479            &self,
15480            target: GLenum,
15481            pname: GLenum,
15482            params: *mut GLint,
15483        ) {
15484            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15485            {
15486                trace!(
15487                    "calling gl.GetBufferParameteriv({:#X}, {:#X}, {:p});",
15488                    target,
15489                    pname,
15490                    params
15491                );
15492            }
15493            let out = call_atomic_ptr_3arg(
15494                "glGetBufferParameteriv",
15495                &self.glGetBufferParameteriv_p,
15496                target,
15497                pname,
15498                params,
15499            );
15500            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15501            {
15502                self.automatic_glGetError("glGetBufferParameteriv");
15503            }
15504            out
15505        }
15506        #[doc(hidden)]
15507        pub unsafe fn GetBufferParameteriv_load_with_dyn(
15508            &self,
15509            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15510        ) -> bool {
15511            load_dyn_name_atomic_ptr(
15512                get_proc_address,
15513                b"glGetBufferParameteriv\0",
15514                &self.glGetBufferParameteriv_p,
15515            )
15516        }
15517        #[inline]
15518        #[doc(hidden)]
15519        pub fn GetBufferParameteriv_is_loaded(&self) -> bool {
15520            !self.glGetBufferParameteriv_p.load(RELAX).is_null()
15521        }
15522        /// [glGetBufferPointerv](http://docs.gl/gl4/glGetBufferPointerv)(target, pname, params)
15523        /// * `target` group: BufferTargetARB
15524        /// * `pname` group: BufferPointerNameARB
15525        /// * `params` len: 1
15526        #[cfg_attr(feature = "inline", inline)]
15527        #[cfg_attr(feature = "inline_always", inline(always))]
15528        pub unsafe fn GetBufferPointerv(
15529            &self,
15530            target: GLenum,
15531            pname: GLenum,
15532            params: *mut *mut c_void,
15533        ) {
15534            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15535            {
15536                trace!(
15537                    "calling gl.GetBufferPointerv({:#X}, {:#X}, {:p});",
15538                    target,
15539                    pname,
15540                    params
15541                );
15542            }
15543            let out = call_atomic_ptr_3arg(
15544                "glGetBufferPointerv",
15545                &self.glGetBufferPointerv_p,
15546                target,
15547                pname,
15548                params,
15549            );
15550            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15551            {
15552                self.automatic_glGetError("glGetBufferPointerv");
15553            }
15554            out
15555        }
15556        #[doc(hidden)]
15557        pub unsafe fn GetBufferPointerv_load_with_dyn(
15558            &self,
15559            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15560        ) -> bool {
15561            load_dyn_name_atomic_ptr(
15562                get_proc_address,
15563                b"glGetBufferPointerv\0",
15564                &self.glGetBufferPointerv_p,
15565            )
15566        }
15567        #[inline]
15568        #[doc(hidden)]
15569        pub fn GetBufferPointerv_is_loaded(&self) -> bool {
15570            !self.glGetBufferPointerv_p.load(RELAX).is_null()
15571        }
15572        /// [glGetBufferSubData](http://docs.gl/gl4/glGetBufferSubData)(target, offset, size, data)
15573        /// * `target` group: BufferTargetARB
15574        /// * `offset` group: BufferOffset
15575        /// * `size` group: BufferSize
15576        /// * `data` len: size
15577        #[cfg_attr(feature = "inline", inline)]
15578        #[cfg_attr(feature = "inline_always", inline(always))]
15579        pub unsafe fn GetBufferSubData(
15580            &self,
15581            target: GLenum,
15582            offset: GLintptr,
15583            size: GLsizeiptr,
15584            data: *mut c_void,
15585        ) {
15586            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15587            {
15588                trace!(
15589                    "calling gl.GetBufferSubData({:#X}, {:?}, {:?}, {:p});",
15590                    target,
15591                    offset,
15592                    size,
15593                    data
15594                );
15595            }
15596            let out = call_atomic_ptr_4arg(
15597                "glGetBufferSubData",
15598                &self.glGetBufferSubData_p,
15599                target,
15600                offset,
15601                size,
15602                data,
15603            );
15604            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15605            {
15606                self.automatic_glGetError("glGetBufferSubData");
15607            }
15608            out
15609        }
15610        #[doc(hidden)]
15611        pub unsafe fn GetBufferSubData_load_with_dyn(
15612            &self,
15613            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15614        ) -> bool {
15615            load_dyn_name_atomic_ptr(
15616                get_proc_address,
15617                b"glGetBufferSubData\0",
15618                &self.glGetBufferSubData_p,
15619            )
15620        }
15621        #[inline]
15622        #[doc(hidden)]
15623        pub fn GetBufferSubData_is_loaded(&self) -> bool {
15624            !self.glGetBufferSubData_p.load(RELAX).is_null()
15625        }
15626        /// [glGetCompressedTexImage](http://docs.gl/gl4/glGetCompressedTexImage)(target, level, img)
15627        /// * `target` group: TextureTarget
15628        /// * `level` group: CheckedInt32
15629        /// * `img` group: CompressedTextureARB
15630        /// * `img` len: COMPSIZE(target,level)
15631        #[cfg_attr(feature = "inline", inline)]
15632        #[cfg_attr(feature = "inline_always", inline(always))]
15633        pub unsafe fn GetCompressedTexImage(&self, target: GLenum, level: GLint, img: *mut c_void) {
15634            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15635            {
15636                trace!(
15637                    "calling gl.GetCompressedTexImage({:#X}, {:?}, {:p});",
15638                    target,
15639                    level,
15640                    img
15641                );
15642            }
15643            let out = call_atomic_ptr_3arg(
15644                "glGetCompressedTexImage",
15645                &self.glGetCompressedTexImage_p,
15646                target,
15647                level,
15648                img,
15649            );
15650            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15651            {
15652                self.automatic_glGetError("glGetCompressedTexImage");
15653            }
15654            out
15655        }
15656        #[doc(hidden)]
15657        pub unsafe fn GetCompressedTexImage_load_with_dyn(
15658            &self,
15659            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15660        ) -> bool {
15661            load_dyn_name_atomic_ptr(
15662                get_proc_address,
15663                b"glGetCompressedTexImage\0",
15664                &self.glGetCompressedTexImage_p,
15665            )
15666        }
15667        #[inline]
15668        #[doc(hidden)]
15669        pub fn GetCompressedTexImage_is_loaded(&self) -> bool {
15670            !self.glGetCompressedTexImage_p.load(RELAX).is_null()
15671        }
15672        /// [glGetCompressedTextureImage](http://docs.gl/gl4/glGetCompressedTextureImage)(texture, level, bufSize, pixels)
15673        #[cfg_attr(feature = "inline", inline)]
15674        #[cfg_attr(feature = "inline_always", inline(always))]
15675        pub unsafe fn GetCompressedTextureImage(
15676            &self,
15677            texture: GLuint,
15678            level: GLint,
15679            bufSize: GLsizei,
15680            pixels: *mut c_void,
15681        ) {
15682            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15683            {
15684                trace!(
15685                    "calling gl.GetCompressedTextureImage({:?}, {:?}, {:?}, {:p});",
15686                    texture,
15687                    level,
15688                    bufSize,
15689                    pixels
15690                );
15691            }
15692            let out = call_atomic_ptr_4arg(
15693                "glGetCompressedTextureImage",
15694                &self.glGetCompressedTextureImage_p,
15695                texture,
15696                level,
15697                bufSize,
15698                pixels,
15699            );
15700            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15701            {
15702                self.automatic_glGetError("glGetCompressedTextureImage");
15703            }
15704            out
15705        }
15706        #[doc(hidden)]
15707        pub unsafe fn GetCompressedTextureImage_load_with_dyn(
15708            &self,
15709            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15710        ) -> bool {
15711            load_dyn_name_atomic_ptr(
15712                get_proc_address,
15713                b"glGetCompressedTextureImage\0",
15714                &self.glGetCompressedTextureImage_p,
15715            )
15716        }
15717        #[inline]
15718        #[doc(hidden)]
15719        pub fn GetCompressedTextureImage_is_loaded(&self) -> bool {
15720            !self.glGetCompressedTextureImage_p.load(RELAX).is_null()
15721        }
15722        /// [glGetCompressedTextureSubImage](http://docs.gl/gl4/glGetCompressedTextureSubImage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels)
15723        #[cfg_attr(feature = "inline", inline)]
15724        #[cfg_attr(feature = "inline_always", inline(always))]
15725        pub unsafe fn GetCompressedTextureSubImage(
15726            &self,
15727            texture: GLuint,
15728            level: GLint,
15729            xoffset: GLint,
15730            yoffset: GLint,
15731            zoffset: GLint,
15732            width: GLsizei,
15733            height: GLsizei,
15734            depth: GLsizei,
15735            bufSize: GLsizei,
15736            pixels: *mut c_void,
15737        ) {
15738            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15739            {
15740                trace!("calling gl.GetCompressedTextureSubImage({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:p});", texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels);
15741            }
15742            let out = call_atomic_ptr_10arg(
15743                "glGetCompressedTextureSubImage",
15744                &self.glGetCompressedTextureSubImage_p,
15745                texture,
15746                level,
15747                xoffset,
15748                yoffset,
15749                zoffset,
15750                width,
15751                height,
15752                depth,
15753                bufSize,
15754                pixels,
15755            );
15756            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15757            {
15758                self.automatic_glGetError("glGetCompressedTextureSubImage");
15759            }
15760            out
15761        }
15762        #[doc(hidden)]
15763        pub unsafe fn GetCompressedTextureSubImage_load_with_dyn(
15764            &self,
15765            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15766        ) -> bool {
15767            load_dyn_name_atomic_ptr(
15768                get_proc_address,
15769                b"glGetCompressedTextureSubImage\0",
15770                &self.glGetCompressedTextureSubImage_p,
15771            )
15772        }
15773        #[inline]
15774        #[doc(hidden)]
15775        pub fn GetCompressedTextureSubImage_is_loaded(&self) -> bool {
15776            !self.glGetCompressedTextureSubImage_p.load(RELAX).is_null()
15777        }
15778        /// [glGetDebugMessageLog](http://docs.gl/gl4/glGetDebugMessageLog)(count, bufSize, sources, types, ids, severities, lengths, messageLog)
15779        /// * `sources` group: DebugSource
15780        /// * `sources` len: count
15781        /// * `types` group: DebugType
15782        /// * `types` len: count
15783        /// * `ids` len: count
15784        /// * `severities` group: DebugSeverity
15785        /// * `severities` len: count
15786        /// * `lengths` len: count
15787        /// * `messageLog` len: bufSize
15788        #[cfg_attr(feature = "inline", inline)]
15789        #[cfg_attr(feature = "inline_always", inline(always))]
15790        pub unsafe fn GetDebugMessageLog(
15791            &self,
15792            count: GLuint,
15793            bufSize: GLsizei,
15794            sources: *mut GLenum,
15795            types: *mut GLenum,
15796            ids: *mut GLuint,
15797            severities: *mut GLenum,
15798            lengths: *mut GLsizei,
15799            messageLog: *mut GLchar,
15800        ) -> GLuint {
15801            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15802            {
15803                trace!("calling gl.GetDebugMessageLog({:?}, {:?}, {:p}, {:p}, {:p}, {:p}, {:p}, {:p});", count, bufSize, sources, types, ids, severities, lengths, messageLog);
15804            }
15805            let out = call_atomic_ptr_8arg(
15806                "glGetDebugMessageLog",
15807                &self.glGetDebugMessageLog_p,
15808                count,
15809                bufSize,
15810                sources,
15811                types,
15812                ids,
15813                severities,
15814                lengths,
15815                messageLog,
15816            );
15817            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15818            {
15819                self.automatic_glGetError("glGetDebugMessageLog");
15820            }
15821            out
15822        }
15823        #[doc(hidden)]
15824        pub unsafe fn GetDebugMessageLog_load_with_dyn(
15825            &self,
15826            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15827        ) -> bool {
15828            load_dyn_name_atomic_ptr(
15829                get_proc_address,
15830                b"glGetDebugMessageLog\0",
15831                &self.glGetDebugMessageLog_p,
15832            )
15833        }
15834        #[inline]
15835        #[doc(hidden)]
15836        pub fn GetDebugMessageLog_is_loaded(&self) -> bool {
15837            !self.glGetDebugMessageLog_p.load(RELAX).is_null()
15838        }
15839        /// [glGetDebugMessageLogARB](http://docs.gl/gl4/glGetDebugMessageLogARB)(count, bufSize, sources, types, ids, severities, lengths, messageLog)
15840        /// * `sources` group: DebugSource
15841        /// * `sources` len: count
15842        /// * `types` group: DebugType
15843        /// * `types` len: count
15844        /// * `ids` len: count
15845        /// * `severities` group: DebugSeverity
15846        /// * `severities` len: count
15847        /// * `lengths` len: count
15848        /// * `messageLog` len: bufSize
15849        /// * alias of: [`glGetDebugMessageLog`]
15850        #[cfg_attr(feature = "inline", inline)]
15851        #[cfg_attr(feature = "inline_always", inline(always))]
15852        pub unsafe fn GetDebugMessageLogARB(
15853            &self,
15854            count: GLuint,
15855            bufSize: GLsizei,
15856            sources: *mut GLenum,
15857            types: *mut GLenum,
15858            ids: *mut GLuint,
15859            severities: *mut GLenum,
15860            lengths: *mut GLsizei,
15861            messageLog: *mut GLchar,
15862        ) -> GLuint {
15863            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15864            {
15865                trace!("calling gl.GetDebugMessageLogARB({:?}, {:?}, {:p}, {:p}, {:p}, {:p}, {:p}, {:p});", count, bufSize, sources, types, ids, severities, lengths, messageLog);
15866            }
15867            let out = call_atomic_ptr_8arg(
15868                "glGetDebugMessageLogARB",
15869                &self.glGetDebugMessageLogARB_p,
15870                count,
15871                bufSize,
15872                sources,
15873                types,
15874                ids,
15875                severities,
15876                lengths,
15877                messageLog,
15878            );
15879            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15880            {
15881                self.automatic_glGetError("glGetDebugMessageLogARB");
15882            }
15883            out
15884        }
15885        #[doc(hidden)]
15886        pub unsafe fn GetDebugMessageLogARB_load_with_dyn(
15887            &self,
15888            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15889        ) -> bool {
15890            load_dyn_name_atomic_ptr(
15891                get_proc_address,
15892                b"glGetDebugMessageLogARB\0",
15893                &self.glGetDebugMessageLogARB_p,
15894            )
15895        }
15896        #[inline]
15897        #[doc(hidden)]
15898        pub fn GetDebugMessageLogARB_is_loaded(&self) -> bool {
15899            !self.glGetDebugMessageLogARB_p.load(RELAX).is_null()
15900        }
15901        /// [glGetDebugMessageLogKHR](http://docs.gl/gl4/glGetDebugMessageLogKHR)(count, bufSize, sources, types, ids, severities, lengths, messageLog)
15902        /// * `sources` group: DebugSource
15903        /// * `sources` len: count
15904        /// * `types` group: DebugType
15905        /// * `types` len: count
15906        /// * `ids` len: count
15907        /// * `severities` group: DebugSeverity
15908        /// * `severities` len: count
15909        /// * `lengths` len: count
15910        /// * `messageLog` len: bufSize
15911        /// * alias of: [`glGetDebugMessageLog`]
15912        #[cfg_attr(feature = "inline", inline)]
15913        #[cfg_attr(feature = "inline_always", inline(always))]
15914        pub unsafe fn GetDebugMessageLogKHR(
15915            &self,
15916            count: GLuint,
15917            bufSize: GLsizei,
15918            sources: *mut GLenum,
15919            types: *mut GLenum,
15920            ids: *mut GLuint,
15921            severities: *mut GLenum,
15922            lengths: *mut GLsizei,
15923            messageLog: *mut GLchar,
15924        ) -> GLuint {
15925            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15926            {
15927                trace!("calling gl.GetDebugMessageLogKHR({:?}, {:?}, {:p}, {:p}, {:p}, {:p}, {:p}, {:p});", count, bufSize, sources, types, ids, severities, lengths, messageLog);
15928            }
15929            let out = call_atomic_ptr_8arg(
15930                "glGetDebugMessageLogKHR",
15931                &self.glGetDebugMessageLogKHR_p,
15932                count,
15933                bufSize,
15934                sources,
15935                types,
15936                ids,
15937                severities,
15938                lengths,
15939                messageLog,
15940            );
15941            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15942            {
15943                self.automatic_glGetError("glGetDebugMessageLogKHR");
15944            }
15945            out
15946        }
15947        #[doc(hidden)]
15948        pub unsafe fn GetDebugMessageLogKHR_load_with_dyn(
15949            &self,
15950            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15951        ) -> bool {
15952            load_dyn_name_atomic_ptr(
15953                get_proc_address,
15954                b"glGetDebugMessageLogKHR\0",
15955                &self.glGetDebugMessageLogKHR_p,
15956            )
15957        }
15958        #[inline]
15959        #[doc(hidden)]
15960        pub fn GetDebugMessageLogKHR_is_loaded(&self) -> bool {
15961            !self.glGetDebugMessageLogKHR_p.load(RELAX).is_null()
15962        }
15963        /// [glGetDoublei_v](http://docs.gl/gl4/glGetDoublei_v)(target, index, data)
15964        /// * `target` group: GetPName
15965        /// * `data` len: COMPSIZE(target)
15966        #[cfg_attr(feature = "inline", inline)]
15967        #[cfg_attr(feature = "inline_always", inline(always))]
15968        pub unsafe fn GetDoublei_v(&self, target: GLenum, index: GLuint, data: *mut GLdouble) {
15969            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15970            {
15971                trace!(
15972                    "calling gl.GetDoublei_v({:#X}, {:?}, {:p});",
15973                    target,
15974                    index,
15975                    data
15976                );
15977            }
15978            let out = call_atomic_ptr_3arg(
15979                "glGetDoublei_v",
15980                &self.glGetDoublei_v_p,
15981                target,
15982                index,
15983                data,
15984            );
15985            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15986            {
15987                self.automatic_glGetError("glGetDoublei_v");
15988            }
15989            out
15990        }
15991        #[doc(hidden)]
15992        pub unsafe fn GetDoublei_v_load_with_dyn(
15993            &self,
15994            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15995        ) -> bool {
15996            load_dyn_name_atomic_ptr(
15997                get_proc_address,
15998                b"glGetDoublei_v\0",
15999                &self.glGetDoublei_v_p,
16000            )
16001        }
16002        #[inline]
16003        #[doc(hidden)]
16004        pub fn GetDoublei_v_is_loaded(&self) -> bool {
16005            !self.glGetDoublei_v_p.load(RELAX).is_null()
16006        }
16007        /// [glGetDoublev](http://docs.gl/gl4/glGetDoublev)(pname, data)
16008        /// * `pname` group: GetPName
16009        /// * `data` len: COMPSIZE(pname)
16010        #[cfg_attr(feature = "inline", inline)]
16011        #[cfg_attr(feature = "inline_always", inline(always))]
16012        pub unsafe fn GetDoublev(&self, pname: GLenum, data: *mut GLdouble) {
16013            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16014            {
16015                trace!("calling gl.GetDoublev({:#X}, {:p});", pname, data);
16016            }
16017            let out = call_atomic_ptr_2arg("glGetDoublev", &self.glGetDoublev_p, pname, data);
16018            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16019            {
16020                self.automatic_glGetError("glGetDoublev");
16021            }
16022            out
16023        }
16024        #[doc(hidden)]
16025        pub unsafe fn GetDoublev_load_with_dyn(
16026            &self,
16027            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16028        ) -> bool {
16029            load_dyn_name_atomic_ptr(get_proc_address, b"glGetDoublev\0", &self.glGetDoublev_p)
16030        }
16031        #[inline]
16032        #[doc(hidden)]
16033        pub fn GetDoublev_is_loaded(&self) -> bool {
16034            !self.glGetDoublev_p.load(RELAX).is_null()
16035        }
16036        /// [glGetError](http://docs.gl/gl4/glGetError)()
16037        /// * return value group: ErrorCode
16038        #[cfg_attr(feature = "inline", inline)]
16039        #[cfg_attr(feature = "inline_always", inline(always))]
16040        pub unsafe fn GetError(&self) -> GLenum {
16041            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16042            {
16043                trace!("calling gl.GetError();",);
16044            }
16045            let out = call_atomic_ptr_0arg("glGetError", &self.glGetError_p);
16046
16047            out
16048        }
16049        #[doc(hidden)]
16050        pub unsafe fn GetError_load_with_dyn(
16051            &self,
16052            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16053        ) -> bool {
16054            load_dyn_name_atomic_ptr(get_proc_address, b"glGetError\0", &self.glGetError_p)
16055        }
16056        #[inline]
16057        #[doc(hidden)]
16058        pub fn GetError_is_loaded(&self) -> bool {
16059            !self.glGetError_p.load(RELAX).is_null()
16060        }
16061        /// [glGetFloati_v](http://docs.gl/gl4/glGetFloati_v)(target, index, data)
16062        /// * `target` group: GetPName
16063        /// * `data` len: COMPSIZE(target)
16064        #[cfg_attr(feature = "inline", inline)]
16065        #[cfg_attr(feature = "inline_always", inline(always))]
16066        pub unsafe fn GetFloati_v(&self, target: GLenum, index: GLuint, data: *mut GLfloat) {
16067            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16068            {
16069                trace!(
16070                    "calling gl.GetFloati_v({:#X}, {:?}, {:p});",
16071                    target,
16072                    index,
16073                    data
16074                );
16075            }
16076            let out =
16077                call_atomic_ptr_3arg("glGetFloati_v", &self.glGetFloati_v_p, target, index, data);
16078            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16079            {
16080                self.automatic_glGetError("glGetFloati_v");
16081            }
16082            out
16083        }
16084        #[doc(hidden)]
16085        pub unsafe fn GetFloati_v_load_with_dyn(
16086            &self,
16087            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16088        ) -> bool {
16089            load_dyn_name_atomic_ptr(get_proc_address, b"glGetFloati_v\0", &self.glGetFloati_v_p)
16090        }
16091        #[inline]
16092        #[doc(hidden)]
16093        pub fn GetFloati_v_is_loaded(&self) -> bool {
16094            !self.glGetFloati_v_p.load(RELAX).is_null()
16095        }
16096        /// [glGetFloatv](http://docs.gl/gl4/glGet)(pname, data)
16097        /// * `pname` group: GetPName
16098        /// * `data` len: COMPSIZE(pname)
16099        #[cfg_attr(feature = "inline", inline)]
16100        #[cfg_attr(feature = "inline_always", inline(always))]
16101        pub unsafe fn GetFloatv(&self, pname: GLenum, data: *mut GLfloat) {
16102            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16103            {
16104                trace!("calling gl.GetFloatv({:#X}, {:p});", pname, data);
16105            }
16106            let out = call_atomic_ptr_2arg("glGetFloatv", &self.glGetFloatv_p, pname, data);
16107            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16108            {
16109                self.automatic_glGetError("glGetFloatv");
16110            }
16111            out
16112        }
16113        #[doc(hidden)]
16114        pub unsafe fn GetFloatv_load_with_dyn(
16115            &self,
16116            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16117        ) -> bool {
16118            load_dyn_name_atomic_ptr(get_proc_address, b"glGetFloatv\0", &self.glGetFloatv_p)
16119        }
16120        #[inline]
16121        #[doc(hidden)]
16122        pub fn GetFloatv_is_loaded(&self) -> bool {
16123            !self.glGetFloatv_p.load(RELAX).is_null()
16124        }
16125        /// [glGetFragDataIndex](http://docs.gl/gl4/glGetFragDataIndex)(program, name)
16126        #[cfg_attr(feature = "inline", inline)]
16127        #[cfg_attr(feature = "inline_always", inline(always))]
16128        pub unsafe fn GetFragDataIndex(&self, program: GLuint, name: *const GLchar) -> GLint {
16129            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16130            {
16131                trace!("calling gl.GetFragDataIndex({:?}, {:p});", program, name);
16132            }
16133            let out = call_atomic_ptr_2arg(
16134                "glGetFragDataIndex",
16135                &self.glGetFragDataIndex_p,
16136                program,
16137                name,
16138            );
16139            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16140            {
16141                self.automatic_glGetError("glGetFragDataIndex");
16142            }
16143            out
16144        }
16145        #[doc(hidden)]
16146        pub unsafe fn GetFragDataIndex_load_with_dyn(
16147            &self,
16148            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16149        ) -> bool {
16150            load_dyn_name_atomic_ptr(
16151                get_proc_address,
16152                b"glGetFragDataIndex\0",
16153                &self.glGetFragDataIndex_p,
16154            )
16155        }
16156        #[inline]
16157        #[doc(hidden)]
16158        pub fn GetFragDataIndex_is_loaded(&self) -> bool {
16159            !self.glGetFragDataIndex_p.load(RELAX).is_null()
16160        }
16161        /// [glGetFragDataLocation](http://docs.gl/gl4/glGetFragDataLocation)(program, name)
16162        /// * `name` len: COMPSIZE(name)
16163        #[cfg_attr(feature = "inline", inline)]
16164        #[cfg_attr(feature = "inline_always", inline(always))]
16165        pub unsafe fn GetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> GLint {
16166            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16167            {
16168                trace!("calling gl.GetFragDataLocation({:?}, {:p});", program, name);
16169            }
16170            let out = call_atomic_ptr_2arg(
16171                "glGetFragDataLocation",
16172                &self.glGetFragDataLocation_p,
16173                program,
16174                name,
16175            );
16176            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16177            {
16178                self.automatic_glGetError("glGetFragDataLocation");
16179            }
16180            out
16181        }
16182        #[doc(hidden)]
16183        pub unsafe fn GetFragDataLocation_load_with_dyn(
16184            &self,
16185            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16186        ) -> bool {
16187            load_dyn_name_atomic_ptr(
16188                get_proc_address,
16189                b"glGetFragDataLocation\0",
16190                &self.glGetFragDataLocation_p,
16191            )
16192        }
16193        #[inline]
16194        #[doc(hidden)]
16195        pub fn GetFragDataLocation_is_loaded(&self) -> bool {
16196            !self.glGetFragDataLocation_p.load(RELAX).is_null()
16197        }
16198        /// [glGetFramebufferAttachmentParameteriv](http://docs.gl/gl4/glGetFramebufferAttachmentParameter)(target, attachment, pname, params)
16199        /// * `target` group: FramebufferTarget
16200        /// * `attachment` group: FramebufferAttachment
16201        /// * `pname` group: FramebufferAttachmentParameterName
16202        /// * `params` len: COMPSIZE(pname)
16203        #[cfg_attr(feature = "inline", inline)]
16204        #[cfg_attr(feature = "inline_always", inline(always))]
16205        pub unsafe fn GetFramebufferAttachmentParameteriv(
16206            &self,
16207            target: GLenum,
16208            attachment: GLenum,
16209            pname: GLenum,
16210            params: *mut GLint,
16211        ) {
16212            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16213            {
16214                trace!(
16215                    "calling gl.GetFramebufferAttachmentParameteriv({:#X}, {:#X}, {:#X}, {:p});",
16216                    target,
16217                    attachment,
16218                    pname,
16219                    params
16220                );
16221            }
16222            let out = call_atomic_ptr_4arg(
16223                "glGetFramebufferAttachmentParameteriv",
16224                &self.glGetFramebufferAttachmentParameteriv_p,
16225                target,
16226                attachment,
16227                pname,
16228                params,
16229            );
16230            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16231            {
16232                self.automatic_glGetError("glGetFramebufferAttachmentParameteriv");
16233            }
16234            out
16235        }
16236        #[doc(hidden)]
16237        pub unsafe fn GetFramebufferAttachmentParameteriv_load_with_dyn(
16238            &self,
16239            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16240        ) -> bool {
16241            load_dyn_name_atomic_ptr(
16242                get_proc_address,
16243                b"glGetFramebufferAttachmentParameteriv\0",
16244                &self.glGetFramebufferAttachmentParameteriv_p,
16245            )
16246        }
16247        #[inline]
16248        #[doc(hidden)]
16249        pub fn GetFramebufferAttachmentParameteriv_is_loaded(&self) -> bool {
16250            !self
16251                .glGetFramebufferAttachmentParameteriv_p
16252                .load(RELAX)
16253                .is_null()
16254        }
16255        /// [glGetFramebufferParameteriv](http://docs.gl/gl4/glGetFramebufferParameter)(target, pname, params)
16256        /// * `target` group: FramebufferTarget
16257        /// * `pname` group: FramebufferAttachmentParameterName
16258        /// * `params` len: COMPSIZE(pname)
16259        #[cfg_attr(feature = "inline", inline)]
16260        #[cfg_attr(feature = "inline_always", inline(always))]
16261        pub unsafe fn GetFramebufferParameteriv(
16262            &self,
16263            target: GLenum,
16264            pname: GLenum,
16265            params: *mut GLint,
16266        ) {
16267            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16268            {
16269                trace!(
16270                    "calling gl.GetFramebufferParameteriv({:#X}, {:#X}, {:p});",
16271                    target,
16272                    pname,
16273                    params
16274                );
16275            }
16276            let out = call_atomic_ptr_3arg(
16277                "glGetFramebufferParameteriv",
16278                &self.glGetFramebufferParameteriv_p,
16279                target,
16280                pname,
16281                params,
16282            );
16283            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16284            {
16285                self.automatic_glGetError("glGetFramebufferParameteriv");
16286            }
16287            out
16288        }
16289        #[doc(hidden)]
16290        pub unsafe fn GetFramebufferParameteriv_load_with_dyn(
16291            &self,
16292            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16293        ) -> bool {
16294            load_dyn_name_atomic_ptr(
16295                get_proc_address,
16296                b"glGetFramebufferParameteriv\0",
16297                &self.glGetFramebufferParameteriv_p,
16298            )
16299        }
16300        #[inline]
16301        #[doc(hidden)]
16302        pub fn GetFramebufferParameteriv_is_loaded(&self) -> bool {
16303            !self.glGetFramebufferParameteriv_p.load(RELAX).is_null()
16304        }
16305        /// [glGetGraphicsResetStatus](http://docs.gl/gl4/glGetGraphicsResetStatus)()
16306        /// * return value group: GraphicsResetStatus
16307        #[cfg_attr(feature = "inline", inline)]
16308        #[cfg_attr(feature = "inline_always", inline(always))]
16309        pub unsafe fn GetGraphicsResetStatus(&self) -> GLenum {
16310            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16311            {
16312                trace!("calling gl.GetGraphicsResetStatus();",);
16313            }
16314            let out =
16315                call_atomic_ptr_0arg("glGetGraphicsResetStatus", &self.glGetGraphicsResetStatus_p);
16316            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16317            {
16318                self.automatic_glGetError("glGetGraphicsResetStatus");
16319            }
16320            out
16321        }
16322        #[doc(hidden)]
16323        pub unsafe fn GetGraphicsResetStatus_load_with_dyn(
16324            &self,
16325            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16326        ) -> bool {
16327            load_dyn_name_atomic_ptr(
16328                get_proc_address,
16329                b"glGetGraphicsResetStatus\0",
16330                &self.glGetGraphicsResetStatus_p,
16331            )
16332        }
16333        #[inline]
16334        #[doc(hidden)]
16335        pub fn GetGraphicsResetStatus_is_loaded(&self) -> bool {
16336            !self.glGetGraphicsResetStatus_p.load(RELAX).is_null()
16337        }
16338        /// [glGetInteger64i_v](http://docs.gl/gl4/glGet)(target, index, data)
16339        /// * `target` group: GetPName
16340        /// * `data` len: COMPSIZE(target)
16341        #[cfg_attr(feature = "inline", inline)]
16342        #[cfg_attr(feature = "inline_always", inline(always))]
16343        pub unsafe fn GetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) {
16344            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16345            {
16346                trace!(
16347                    "calling gl.GetInteger64i_v({:#X}, {:?}, {:p});",
16348                    target,
16349                    index,
16350                    data
16351                );
16352            }
16353            let out = call_atomic_ptr_3arg(
16354                "glGetInteger64i_v",
16355                &self.glGetInteger64i_v_p,
16356                target,
16357                index,
16358                data,
16359            );
16360            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16361            {
16362                self.automatic_glGetError("glGetInteger64i_v");
16363            }
16364            out
16365        }
16366        #[doc(hidden)]
16367        pub unsafe fn GetInteger64i_v_load_with_dyn(
16368            &self,
16369            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16370        ) -> bool {
16371            load_dyn_name_atomic_ptr(
16372                get_proc_address,
16373                b"glGetInteger64i_v\0",
16374                &self.glGetInteger64i_v_p,
16375            )
16376        }
16377        #[inline]
16378        #[doc(hidden)]
16379        pub fn GetInteger64i_v_is_loaded(&self) -> bool {
16380            !self.glGetInteger64i_v_p.load(RELAX).is_null()
16381        }
16382        /// [glGetInteger64v](http://docs.gl/gl4/glGet)(pname, data)
16383        /// * `pname` group: GetPName
16384        /// * `data` len: COMPSIZE(pname)
16385        #[cfg_attr(feature = "inline", inline)]
16386        #[cfg_attr(feature = "inline_always", inline(always))]
16387        pub unsafe fn GetInteger64v(&self, pname: GLenum, data: *mut GLint64) {
16388            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16389            {
16390                trace!("calling gl.GetInteger64v({:#X}, {:p});", pname, data);
16391            }
16392            let out = call_atomic_ptr_2arg("glGetInteger64v", &self.glGetInteger64v_p, pname, data);
16393            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16394            {
16395                self.automatic_glGetError("glGetInteger64v");
16396            }
16397            out
16398        }
16399        #[doc(hidden)]
16400        pub unsafe fn GetInteger64v_load_with_dyn(
16401            &self,
16402            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16403        ) -> bool {
16404            load_dyn_name_atomic_ptr(
16405                get_proc_address,
16406                b"glGetInteger64v\0",
16407                &self.glGetInteger64v_p,
16408            )
16409        }
16410        #[inline]
16411        #[doc(hidden)]
16412        pub fn GetInteger64v_is_loaded(&self) -> bool {
16413            !self.glGetInteger64v_p.load(RELAX).is_null()
16414        }
16415        /// [glGetInteger64vEXT](http://docs.gl/gl4/glGetInteger64vEXT)(pname, data)
16416        /// * `pname` group: GetPName
16417        /// * `data` len: COMPSIZE(pname)
16418        /// * alias of: [`glGetInteger64v`]
16419        #[cfg_attr(feature = "inline", inline)]
16420        #[cfg_attr(feature = "inline_always", inline(always))]
16421        pub unsafe fn GetInteger64vEXT(&self, pname: GLenum, data: *mut GLint64) {
16422            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16423            {
16424                trace!("calling gl.GetInteger64vEXT({:#X}, {:p});", pname, data);
16425            }
16426            let out = call_atomic_ptr_2arg(
16427                "glGetInteger64vEXT",
16428                &self.glGetInteger64vEXT_p,
16429                pname,
16430                data,
16431            );
16432            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16433            {
16434                self.automatic_glGetError("glGetInteger64vEXT");
16435            }
16436            out
16437        }
16438        #[doc(hidden)]
16439        pub unsafe fn GetInteger64vEXT_load_with_dyn(
16440            &self,
16441            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16442        ) -> bool {
16443            load_dyn_name_atomic_ptr(
16444                get_proc_address,
16445                b"glGetInteger64vEXT\0",
16446                &self.glGetInteger64vEXT_p,
16447            )
16448        }
16449        #[inline]
16450        #[doc(hidden)]
16451        pub fn GetInteger64vEXT_is_loaded(&self) -> bool {
16452            !self.glGetInteger64vEXT_p.load(RELAX).is_null()
16453        }
16454        /// [glGetIntegerIndexedvEXT](http://docs.gl/gl4/glGetIntegerIndexedvEXT)(target, index, data)
16455        /// * `target` group: GetPName
16456        /// * `data` len: COMPSIZE(target)
16457        /// * alias of: [`glGetIntegeri_v`]
16458        #[cfg_attr(feature = "inline", inline)]
16459        #[cfg_attr(feature = "inline_always", inline(always))]
16460        pub unsafe fn GetIntegerIndexedvEXT(
16461            &self,
16462            target: GLenum,
16463            index: GLuint,
16464            data: *mut GLint,
16465        ) {
16466            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16467            {
16468                trace!(
16469                    "calling gl.GetIntegerIndexedvEXT({:#X}, {:?}, {:p});",
16470                    target,
16471                    index,
16472                    data
16473                );
16474            }
16475            let out = call_atomic_ptr_3arg(
16476                "glGetIntegerIndexedvEXT",
16477                &self.glGetIntegerIndexedvEXT_p,
16478                target,
16479                index,
16480                data,
16481            );
16482            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16483            {
16484                self.automatic_glGetError("glGetIntegerIndexedvEXT");
16485            }
16486            out
16487        }
16488        #[doc(hidden)]
16489        pub unsafe fn GetIntegerIndexedvEXT_load_with_dyn(
16490            &self,
16491            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16492        ) -> bool {
16493            load_dyn_name_atomic_ptr(
16494                get_proc_address,
16495                b"glGetIntegerIndexedvEXT\0",
16496                &self.glGetIntegerIndexedvEXT_p,
16497            )
16498        }
16499        #[inline]
16500        #[doc(hidden)]
16501        pub fn GetIntegerIndexedvEXT_is_loaded(&self) -> bool {
16502            !self.glGetIntegerIndexedvEXT_p.load(RELAX).is_null()
16503        }
16504        /// [glGetIntegeri_v](http://docs.gl/gl4/glGet)(target, index, data)
16505        /// * `target` group: GetPName
16506        /// * `data` len: COMPSIZE(target)
16507        #[cfg_attr(feature = "inline", inline)]
16508        #[cfg_attr(feature = "inline_always", inline(always))]
16509        pub unsafe fn GetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) {
16510            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16511            {
16512                trace!(
16513                    "calling gl.GetIntegeri_v({:#X}, {:?}, {:p});",
16514                    target,
16515                    index,
16516                    data
16517                );
16518            }
16519            let out = call_atomic_ptr_3arg(
16520                "glGetIntegeri_v",
16521                &self.glGetIntegeri_v_p,
16522                target,
16523                index,
16524                data,
16525            );
16526            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16527            {
16528                self.automatic_glGetError("glGetIntegeri_v");
16529            }
16530            out
16531        }
16532        #[doc(hidden)]
16533        pub unsafe fn GetIntegeri_v_load_with_dyn(
16534            &self,
16535            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16536        ) -> bool {
16537            load_dyn_name_atomic_ptr(
16538                get_proc_address,
16539                b"glGetIntegeri_v\0",
16540                &self.glGetIntegeri_v_p,
16541            )
16542        }
16543        #[inline]
16544        #[doc(hidden)]
16545        pub fn GetIntegeri_v_is_loaded(&self) -> bool {
16546            !self.glGetIntegeri_v_p.load(RELAX).is_null()
16547        }
16548        /// [glGetIntegerv](http://docs.gl/gl4/glGet)(pname, data)
16549        /// * `pname` group: GetPName
16550        /// * `data` len: COMPSIZE(pname)
16551        #[cfg_attr(feature = "inline", inline)]
16552        #[cfg_attr(feature = "inline_always", inline(always))]
16553        pub unsafe fn GetIntegerv(&self, pname: GLenum, data: *mut GLint) {
16554            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16555            {
16556                trace!("calling gl.GetIntegerv({:#X}, {:p});", pname, data);
16557            }
16558            let out = call_atomic_ptr_2arg("glGetIntegerv", &self.glGetIntegerv_p, pname, data);
16559            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16560            {
16561                self.automatic_glGetError("glGetIntegerv");
16562            }
16563            out
16564        }
16565        #[doc(hidden)]
16566        pub unsafe fn GetIntegerv_load_with_dyn(
16567            &self,
16568            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16569        ) -> bool {
16570            load_dyn_name_atomic_ptr(get_proc_address, b"glGetIntegerv\0", &self.glGetIntegerv_p)
16571        }
16572        #[inline]
16573        #[doc(hidden)]
16574        pub fn GetIntegerv_is_loaded(&self) -> bool {
16575            !self.glGetIntegerv_p.load(RELAX).is_null()
16576        }
16577        /// [glGetInternalformati64v](http://docs.gl/gl4/glGetInternalformat)(target, internalformat, pname, count, params)
16578        /// * `target` group: TextureTarget
16579        /// * `internalformat` group: InternalFormat
16580        /// * `pname` group: InternalFormatPName
16581        /// * `params` len: count
16582        #[cfg_attr(feature = "inline", inline)]
16583        #[cfg_attr(feature = "inline_always", inline(always))]
16584        pub unsafe fn GetInternalformati64v(
16585            &self,
16586            target: GLenum,
16587            internalformat: GLenum,
16588            pname: GLenum,
16589            count: GLsizei,
16590            params: *mut GLint64,
16591        ) {
16592            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16593            {
16594                trace!(
16595                    "calling gl.GetInternalformati64v({:#X}, {:#X}, {:#X}, {:?}, {:p});",
16596                    target,
16597                    internalformat,
16598                    pname,
16599                    count,
16600                    params
16601                );
16602            }
16603            let out = call_atomic_ptr_5arg(
16604                "glGetInternalformati64v",
16605                &self.glGetInternalformati64v_p,
16606                target,
16607                internalformat,
16608                pname,
16609                count,
16610                params,
16611            );
16612            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16613            {
16614                self.automatic_glGetError("glGetInternalformati64v");
16615            }
16616            out
16617        }
16618        #[doc(hidden)]
16619        pub unsafe fn GetInternalformati64v_load_with_dyn(
16620            &self,
16621            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16622        ) -> bool {
16623            load_dyn_name_atomic_ptr(
16624                get_proc_address,
16625                b"glGetInternalformati64v\0",
16626                &self.glGetInternalformati64v_p,
16627            )
16628        }
16629        #[inline]
16630        #[doc(hidden)]
16631        pub fn GetInternalformati64v_is_loaded(&self) -> bool {
16632            !self.glGetInternalformati64v_p.load(RELAX).is_null()
16633        }
16634        /// [glGetInternalformativ](http://docs.gl/gl4/glGetInternalformativ)(target, internalformat, pname, count, params)
16635        /// * `target` group: TextureTarget
16636        /// * `internalformat` group: InternalFormat
16637        /// * `pname` group: InternalFormatPName
16638        /// * `params` len: count
16639        #[cfg_attr(feature = "inline", inline)]
16640        #[cfg_attr(feature = "inline_always", inline(always))]
16641        pub unsafe fn GetInternalformativ(
16642            &self,
16643            target: GLenum,
16644            internalformat: GLenum,
16645            pname: GLenum,
16646            count: GLsizei,
16647            params: *mut GLint,
16648        ) {
16649            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16650            {
16651                trace!(
16652                    "calling gl.GetInternalformativ({:#X}, {:#X}, {:#X}, {:?}, {:p});",
16653                    target,
16654                    internalformat,
16655                    pname,
16656                    count,
16657                    params
16658                );
16659            }
16660            let out = call_atomic_ptr_5arg(
16661                "glGetInternalformativ",
16662                &self.glGetInternalformativ_p,
16663                target,
16664                internalformat,
16665                pname,
16666                count,
16667                params,
16668            );
16669            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16670            {
16671                self.automatic_glGetError("glGetInternalformativ");
16672            }
16673            out
16674        }
16675        #[doc(hidden)]
16676        pub unsafe fn GetInternalformativ_load_with_dyn(
16677            &self,
16678            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16679        ) -> bool {
16680            load_dyn_name_atomic_ptr(
16681                get_proc_address,
16682                b"glGetInternalformativ\0",
16683                &self.glGetInternalformativ_p,
16684            )
16685        }
16686        #[inline]
16687        #[doc(hidden)]
16688        pub fn GetInternalformativ_is_loaded(&self) -> bool {
16689            !self.glGetInternalformativ_p.load(RELAX).is_null()
16690        }
16691        /// [glGetMultisamplefv](http://docs.gl/gl4/glGetMultisample)(pname, index, val)
16692        /// * `pname` group: GetMultisamplePNameNV
16693        /// * `val` len: COMPSIZE(pname)
16694        #[cfg_attr(feature = "inline", inline)]
16695        #[cfg_attr(feature = "inline_always", inline(always))]
16696        pub unsafe fn GetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) {
16697            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16698            {
16699                trace!(
16700                    "calling gl.GetMultisamplefv({:#X}, {:?}, {:p});",
16701                    pname,
16702                    index,
16703                    val
16704                );
16705            }
16706            let out = call_atomic_ptr_3arg(
16707                "glGetMultisamplefv",
16708                &self.glGetMultisamplefv_p,
16709                pname,
16710                index,
16711                val,
16712            );
16713            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16714            {
16715                self.automatic_glGetError("glGetMultisamplefv");
16716            }
16717            out
16718        }
16719        #[doc(hidden)]
16720        pub unsafe fn GetMultisamplefv_load_with_dyn(
16721            &self,
16722            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16723        ) -> bool {
16724            load_dyn_name_atomic_ptr(
16725                get_proc_address,
16726                b"glGetMultisamplefv\0",
16727                &self.glGetMultisamplefv_p,
16728            )
16729        }
16730        #[inline]
16731        #[doc(hidden)]
16732        pub fn GetMultisamplefv_is_loaded(&self) -> bool {
16733            !self.glGetMultisamplefv_p.load(RELAX).is_null()
16734        }
16735        /// [glGetNamedBufferParameteri64v](http://docs.gl/gl4/glGetNamedBufferParameter)(buffer, pname, params)
16736        /// * `pname` group: BufferPNameARB
16737        #[cfg_attr(feature = "inline", inline)]
16738        #[cfg_attr(feature = "inline_always", inline(always))]
16739        pub unsafe fn GetNamedBufferParameteri64v(
16740            &self,
16741            buffer: GLuint,
16742            pname: GLenum,
16743            params: *mut GLint64,
16744        ) {
16745            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16746            {
16747                trace!(
16748                    "calling gl.GetNamedBufferParameteri64v({:?}, {:#X}, {:p});",
16749                    buffer,
16750                    pname,
16751                    params
16752                );
16753            }
16754            let out = call_atomic_ptr_3arg(
16755                "glGetNamedBufferParameteri64v",
16756                &self.glGetNamedBufferParameteri64v_p,
16757                buffer,
16758                pname,
16759                params,
16760            );
16761            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16762            {
16763                self.automatic_glGetError("glGetNamedBufferParameteri64v");
16764            }
16765            out
16766        }
16767        #[doc(hidden)]
16768        pub unsafe fn GetNamedBufferParameteri64v_load_with_dyn(
16769            &self,
16770            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16771        ) -> bool {
16772            load_dyn_name_atomic_ptr(
16773                get_proc_address,
16774                b"glGetNamedBufferParameteri64v\0",
16775                &self.glGetNamedBufferParameteri64v_p,
16776            )
16777        }
16778        #[inline]
16779        #[doc(hidden)]
16780        pub fn GetNamedBufferParameteri64v_is_loaded(&self) -> bool {
16781            !self.glGetNamedBufferParameteri64v_p.load(RELAX).is_null()
16782        }
16783        /// [glGetNamedBufferParameteriv](http://docs.gl/gl4/glGetNamedBufferParameter)(buffer, pname, params)
16784        /// * `pname` group: BufferPNameARB
16785        #[cfg_attr(feature = "inline", inline)]
16786        #[cfg_attr(feature = "inline_always", inline(always))]
16787        pub unsafe fn GetNamedBufferParameteriv(
16788            &self,
16789            buffer: GLuint,
16790            pname: GLenum,
16791            params: *mut GLint,
16792        ) {
16793            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16794            {
16795                trace!(
16796                    "calling gl.GetNamedBufferParameteriv({:?}, {:#X}, {:p});",
16797                    buffer,
16798                    pname,
16799                    params
16800                );
16801            }
16802            let out = call_atomic_ptr_3arg(
16803                "glGetNamedBufferParameteriv",
16804                &self.glGetNamedBufferParameteriv_p,
16805                buffer,
16806                pname,
16807                params,
16808            );
16809            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16810            {
16811                self.automatic_glGetError("glGetNamedBufferParameteriv");
16812            }
16813            out
16814        }
16815        #[doc(hidden)]
16816        pub unsafe fn GetNamedBufferParameteriv_load_with_dyn(
16817            &self,
16818            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16819        ) -> bool {
16820            load_dyn_name_atomic_ptr(
16821                get_proc_address,
16822                b"glGetNamedBufferParameteriv\0",
16823                &self.glGetNamedBufferParameteriv_p,
16824            )
16825        }
16826        #[inline]
16827        #[doc(hidden)]
16828        pub fn GetNamedBufferParameteriv_is_loaded(&self) -> bool {
16829            !self.glGetNamedBufferParameteriv_p.load(RELAX).is_null()
16830        }
16831        /// [glGetNamedBufferPointerv](http://docs.gl/gl4/glGetNamedBufferPointerv)(buffer, pname, params)
16832        /// * `pname` group: BufferPointerNameARB
16833        #[cfg_attr(feature = "inline", inline)]
16834        #[cfg_attr(feature = "inline_always", inline(always))]
16835        pub unsafe fn GetNamedBufferPointerv(
16836            &self,
16837            buffer: GLuint,
16838            pname: GLenum,
16839            params: *mut *mut c_void,
16840        ) {
16841            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16842            {
16843                trace!(
16844                    "calling gl.GetNamedBufferPointerv({:?}, {:#X}, {:p});",
16845                    buffer,
16846                    pname,
16847                    params
16848                );
16849            }
16850            let out = call_atomic_ptr_3arg(
16851                "glGetNamedBufferPointerv",
16852                &self.glGetNamedBufferPointerv_p,
16853                buffer,
16854                pname,
16855                params,
16856            );
16857            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16858            {
16859                self.automatic_glGetError("glGetNamedBufferPointerv");
16860            }
16861            out
16862        }
16863        #[doc(hidden)]
16864        pub unsafe fn GetNamedBufferPointerv_load_with_dyn(
16865            &self,
16866            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16867        ) -> bool {
16868            load_dyn_name_atomic_ptr(
16869                get_proc_address,
16870                b"glGetNamedBufferPointerv\0",
16871                &self.glGetNamedBufferPointerv_p,
16872            )
16873        }
16874        #[inline]
16875        #[doc(hidden)]
16876        pub fn GetNamedBufferPointerv_is_loaded(&self) -> bool {
16877            !self.glGetNamedBufferPointerv_p.load(RELAX).is_null()
16878        }
16879        /// [glGetNamedBufferSubData](http://docs.gl/gl4/glGetNamedBufferSubData)(buffer, offset, size, data)
16880        /// * `size` group: BufferSize
16881        #[cfg_attr(feature = "inline", inline)]
16882        #[cfg_attr(feature = "inline_always", inline(always))]
16883        pub unsafe fn GetNamedBufferSubData(
16884            &self,
16885            buffer: GLuint,
16886            offset: GLintptr,
16887            size: GLsizeiptr,
16888            data: *mut c_void,
16889        ) {
16890            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16891            {
16892                trace!(
16893                    "calling gl.GetNamedBufferSubData({:?}, {:?}, {:?}, {:p});",
16894                    buffer,
16895                    offset,
16896                    size,
16897                    data
16898                );
16899            }
16900            let out = call_atomic_ptr_4arg(
16901                "glGetNamedBufferSubData",
16902                &self.glGetNamedBufferSubData_p,
16903                buffer,
16904                offset,
16905                size,
16906                data,
16907            );
16908            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16909            {
16910                self.automatic_glGetError("glGetNamedBufferSubData");
16911            }
16912            out
16913        }
16914        #[doc(hidden)]
16915        pub unsafe fn GetNamedBufferSubData_load_with_dyn(
16916            &self,
16917            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16918        ) -> bool {
16919            load_dyn_name_atomic_ptr(
16920                get_proc_address,
16921                b"glGetNamedBufferSubData\0",
16922                &self.glGetNamedBufferSubData_p,
16923            )
16924        }
16925        #[inline]
16926        #[doc(hidden)]
16927        pub fn GetNamedBufferSubData_is_loaded(&self) -> bool {
16928            !self.glGetNamedBufferSubData_p.load(RELAX).is_null()
16929        }
16930        /// [glGetNamedFramebufferAttachmentParameteriv](http://docs.gl/gl4/glGetNamedFramebufferAttachmentParameter)(framebuffer, attachment, pname, params)
16931        /// * `attachment` group: FramebufferAttachment
16932        /// * `pname` group: FramebufferAttachmentParameterName
16933        #[cfg_attr(feature = "inline", inline)]
16934        #[cfg_attr(feature = "inline_always", inline(always))]
16935        pub unsafe fn GetNamedFramebufferAttachmentParameteriv(
16936            &self,
16937            framebuffer: GLuint,
16938            attachment: GLenum,
16939            pname: GLenum,
16940            params: *mut GLint,
16941        ) {
16942            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16943            {
16944                trace!("calling gl.GetNamedFramebufferAttachmentParameteriv({:?}, {:#X}, {:#X}, {:p});", framebuffer, attachment, pname, params);
16945            }
16946            let out = call_atomic_ptr_4arg(
16947                "glGetNamedFramebufferAttachmentParameteriv",
16948                &self.glGetNamedFramebufferAttachmentParameteriv_p,
16949                framebuffer,
16950                attachment,
16951                pname,
16952                params,
16953            );
16954            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16955            {
16956                self.automatic_glGetError("glGetNamedFramebufferAttachmentParameteriv");
16957            }
16958            out
16959        }
16960        #[doc(hidden)]
16961        pub unsafe fn GetNamedFramebufferAttachmentParameteriv_load_with_dyn(
16962            &self,
16963            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16964        ) -> bool {
16965            load_dyn_name_atomic_ptr(
16966                get_proc_address,
16967                b"glGetNamedFramebufferAttachmentParameteriv\0",
16968                &self.glGetNamedFramebufferAttachmentParameteriv_p,
16969            )
16970        }
16971        #[inline]
16972        #[doc(hidden)]
16973        pub fn GetNamedFramebufferAttachmentParameteriv_is_loaded(&self) -> bool {
16974            !self
16975                .glGetNamedFramebufferAttachmentParameteriv_p
16976                .load(RELAX)
16977                .is_null()
16978        }
16979        /// [glGetNamedFramebufferParameteriv](http://docs.gl/gl4/glGetNamedFramebufferParameter)(framebuffer, pname, param)
16980        /// * `pname` group: GetFramebufferParameter
16981        #[cfg_attr(feature = "inline", inline)]
16982        #[cfg_attr(feature = "inline_always", inline(always))]
16983        pub unsafe fn GetNamedFramebufferParameteriv(
16984            &self,
16985            framebuffer: GLuint,
16986            pname: GLenum,
16987            param: *mut GLint,
16988        ) {
16989            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16990            {
16991                trace!(
16992                    "calling gl.GetNamedFramebufferParameteriv({:?}, {:#X}, {:p});",
16993                    framebuffer,
16994                    pname,
16995                    param
16996                );
16997            }
16998            let out = call_atomic_ptr_3arg(
16999                "glGetNamedFramebufferParameteriv",
17000                &self.glGetNamedFramebufferParameteriv_p,
17001                framebuffer,
17002                pname,
17003                param,
17004            );
17005            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17006            {
17007                self.automatic_glGetError("glGetNamedFramebufferParameteriv");
17008            }
17009            out
17010        }
17011        #[doc(hidden)]
17012        pub unsafe fn GetNamedFramebufferParameteriv_load_with_dyn(
17013            &self,
17014            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17015        ) -> bool {
17016            load_dyn_name_atomic_ptr(
17017                get_proc_address,
17018                b"glGetNamedFramebufferParameteriv\0",
17019                &self.glGetNamedFramebufferParameteriv_p,
17020            )
17021        }
17022        #[inline]
17023        #[doc(hidden)]
17024        pub fn GetNamedFramebufferParameteriv_is_loaded(&self) -> bool {
17025            !self
17026                .glGetNamedFramebufferParameteriv_p
17027                .load(RELAX)
17028                .is_null()
17029        }
17030        /// [glGetNamedRenderbufferParameteriv](http://docs.gl/gl4/glGetNamedRenderbufferParameter)(renderbuffer, pname, params)
17031        /// * `pname` group: RenderbufferParameterName
17032        #[cfg_attr(feature = "inline", inline)]
17033        #[cfg_attr(feature = "inline_always", inline(always))]
17034        pub unsafe fn GetNamedRenderbufferParameteriv(
17035            &self,
17036            renderbuffer: GLuint,
17037            pname: GLenum,
17038            params: *mut GLint,
17039        ) {
17040            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17041            {
17042                trace!(
17043                    "calling gl.GetNamedRenderbufferParameteriv({:?}, {:#X}, {:p});",
17044                    renderbuffer,
17045                    pname,
17046                    params
17047                );
17048            }
17049            let out = call_atomic_ptr_3arg(
17050                "glGetNamedRenderbufferParameteriv",
17051                &self.glGetNamedRenderbufferParameteriv_p,
17052                renderbuffer,
17053                pname,
17054                params,
17055            );
17056            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17057            {
17058                self.automatic_glGetError("glGetNamedRenderbufferParameteriv");
17059            }
17060            out
17061        }
17062        #[doc(hidden)]
17063        pub unsafe fn GetNamedRenderbufferParameteriv_load_with_dyn(
17064            &self,
17065            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17066        ) -> bool {
17067            load_dyn_name_atomic_ptr(
17068                get_proc_address,
17069                b"glGetNamedRenderbufferParameteriv\0",
17070                &self.glGetNamedRenderbufferParameteriv_p,
17071            )
17072        }
17073        #[inline]
17074        #[doc(hidden)]
17075        pub fn GetNamedRenderbufferParameteriv_is_loaded(&self) -> bool {
17076            !self
17077                .glGetNamedRenderbufferParameteriv_p
17078                .load(RELAX)
17079                .is_null()
17080        }
17081        /// [glGetObjectLabel](http://docs.gl/gl4/glGetObjectLabel)(identifier, name, bufSize, length, label)
17082        /// * `identifier` group: ObjectIdentifier
17083        /// * `length` len: 1
17084        /// * `label` len: bufSize
17085        #[cfg_attr(feature = "inline", inline)]
17086        #[cfg_attr(feature = "inline_always", inline(always))]
17087        pub unsafe fn GetObjectLabel(
17088            &self,
17089            identifier: GLenum,
17090            name: GLuint,
17091            bufSize: GLsizei,
17092            length: *mut GLsizei,
17093            label: *mut GLchar,
17094        ) {
17095            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17096            {
17097                trace!(
17098                    "calling gl.GetObjectLabel({:#X}, {:?}, {:?}, {:p}, {:p});",
17099                    identifier,
17100                    name,
17101                    bufSize,
17102                    length,
17103                    label
17104                );
17105            }
17106            let out = call_atomic_ptr_5arg(
17107                "glGetObjectLabel",
17108                &self.glGetObjectLabel_p,
17109                identifier,
17110                name,
17111                bufSize,
17112                length,
17113                label,
17114            );
17115            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17116            {
17117                self.automatic_glGetError("glGetObjectLabel");
17118            }
17119            out
17120        }
17121        #[doc(hidden)]
17122        pub unsafe fn GetObjectLabel_load_with_dyn(
17123            &self,
17124            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17125        ) -> bool {
17126            load_dyn_name_atomic_ptr(
17127                get_proc_address,
17128                b"glGetObjectLabel\0",
17129                &self.glGetObjectLabel_p,
17130            )
17131        }
17132        #[inline]
17133        #[doc(hidden)]
17134        pub fn GetObjectLabel_is_loaded(&self) -> bool {
17135            !self.glGetObjectLabel_p.load(RELAX).is_null()
17136        }
17137        /// [glGetObjectLabelKHR](http://docs.gl/gl4/glGetObjectLabelKHR)(identifier, name, bufSize, length, label)
17138        /// * `label` len: bufSize
17139        /// * alias of: [`glGetObjectLabel`]
17140        #[cfg_attr(feature = "inline", inline)]
17141        #[cfg_attr(feature = "inline_always", inline(always))]
17142        pub unsafe fn GetObjectLabelKHR(
17143            &self,
17144            identifier: GLenum,
17145            name: GLuint,
17146            bufSize: GLsizei,
17147            length: *mut GLsizei,
17148            label: *mut GLchar,
17149        ) {
17150            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17151            {
17152                trace!(
17153                    "calling gl.GetObjectLabelKHR({:#X}, {:?}, {:?}, {:p}, {:p});",
17154                    identifier,
17155                    name,
17156                    bufSize,
17157                    length,
17158                    label
17159                );
17160            }
17161            let out = call_atomic_ptr_5arg(
17162                "glGetObjectLabelKHR",
17163                &self.glGetObjectLabelKHR_p,
17164                identifier,
17165                name,
17166                bufSize,
17167                length,
17168                label,
17169            );
17170            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17171            {
17172                self.automatic_glGetError("glGetObjectLabelKHR");
17173            }
17174            out
17175        }
17176        #[doc(hidden)]
17177        pub unsafe fn GetObjectLabelKHR_load_with_dyn(
17178            &self,
17179            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17180        ) -> bool {
17181            load_dyn_name_atomic_ptr(
17182                get_proc_address,
17183                b"glGetObjectLabelKHR\0",
17184                &self.glGetObjectLabelKHR_p,
17185            )
17186        }
17187        #[inline]
17188        #[doc(hidden)]
17189        pub fn GetObjectLabelKHR_is_loaded(&self) -> bool {
17190            !self.glGetObjectLabelKHR_p.load(RELAX).is_null()
17191        }
17192        /// [glGetObjectPtrLabel](http://docs.gl/gl4/glGetObjectPtrLabel)(ptr, bufSize, length, label)
17193        /// * `length` len: 1
17194        /// * `label` len: bufSize
17195        #[cfg_attr(feature = "inline", inline)]
17196        #[cfg_attr(feature = "inline_always", inline(always))]
17197        pub unsafe fn GetObjectPtrLabel(
17198            &self,
17199            ptr: *const c_void,
17200            bufSize: GLsizei,
17201            length: *mut GLsizei,
17202            label: *mut GLchar,
17203        ) {
17204            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17205            {
17206                trace!(
17207                    "calling gl.GetObjectPtrLabel({:p}, {:?}, {:p}, {:p});",
17208                    ptr,
17209                    bufSize,
17210                    length,
17211                    label
17212                );
17213            }
17214            let out = call_atomic_ptr_4arg(
17215                "glGetObjectPtrLabel",
17216                &self.glGetObjectPtrLabel_p,
17217                ptr,
17218                bufSize,
17219                length,
17220                label,
17221            );
17222            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17223            {
17224                self.automatic_glGetError("glGetObjectPtrLabel");
17225            }
17226            out
17227        }
17228        #[doc(hidden)]
17229        pub unsafe fn GetObjectPtrLabel_load_with_dyn(
17230            &self,
17231            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17232        ) -> bool {
17233            load_dyn_name_atomic_ptr(
17234                get_proc_address,
17235                b"glGetObjectPtrLabel\0",
17236                &self.glGetObjectPtrLabel_p,
17237            )
17238        }
17239        #[inline]
17240        #[doc(hidden)]
17241        pub fn GetObjectPtrLabel_is_loaded(&self) -> bool {
17242            !self.glGetObjectPtrLabel_p.load(RELAX).is_null()
17243        }
17244        /// [glGetObjectPtrLabelKHR](http://docs.gl/gl4/glGetObjectPtrLabelKHR)(ptr, bufSize, length, label)
17245        /// * `length` len: 1
17246        /// * `label` len: bufSize
17247        /// * alias of: [`glGetObjectPtrLabel`]
17248        #[cfg_attr(feature = "inline", inline)]
17249        #[cfg_attr(feature = "inline_always", inline(always))]
17250        pub unsafe fn GetObjectPtrLabelKHR(
17251            &self,
17252            ptr: *const c_void,
17253            bufSize: GLsizei,
17254            length: *mut GLsizei,
17255            label: *mut GLchar,
17256        ) {
17257            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17258            {
17259                trace!(
17260                    "calling gl.GetObjectPtrLabelKHR({:p}, {:?}, {:p}, {:p});",
17261                    ptr,
17262                    bufSize,
17263                    length,
17264                    label
17265                );
17266            }
17267            let out = call_atomic_ptr_4arg(
17268                "glGetObjectPtrLabelKHR",
17269                &self.glGetObjectPtrLabelKHR_p,
17270                ptr,
17271                bufSize,
17272                length,
17273                label,
17274            );
17275            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17276            {
17277                self.automatic_glGetError("glGetObjectPtrLabelKHR");
17278            }
17279            out
17280        }
17281        #[doc(hidden)]
17282        pub unsafe fn GetObjectPtrLabelKHR_load_with_dyn(
17283            &self,
17284            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17285        ) -> bool {
17286            load_dyn_name_atomic_ptr(
17287                get_proc_address,
17288                b"glGetObjectPtrLabelKHR\0",
17289                &self.glGetObjectPtrLabelKHR_p,
17290            )
17291        }
17292        #[inline]
17293        #[doc(hidden)]
17294        pub fn GetObjectPtrLabelKHR_is_loaded(&self) -> bool {
17295            !self.glGetObjectPtrLabelKHR_p.load(RELAX).is_null()
17296        }
17297        /// [glGetPointerv](http://docs.gl/gl4/glGetPointerv)(pname, params)
17298        /// * `pname` group: GetPointervPName
17299        /// * `params` len: 1
17300        #[cfg_attr(feature = "inline", inline)]
17301        #[cfg_attr(feature = "inline_always", inline(always))]
17302        pub unsafe fn GetPointerv(&self, pname: GLenum, params: *mut *mut c_void) {
17303            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17304            {
17305                trace!("calling gl.GetPointerv({:#X}, {:p});", pname, params);
17306            }
17307            let out = call_atomic_ptr_2arg("glGetPointerv", &self.glGetPointerv_p, pname, params);
17308            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17309            {
17310                self.automatic_glGetError("glGetPointerv");
17311            }
17312            out
17313        }
17314        #[doc(hidden)]
17315        pub unsafe fn GetPointerv_load_with_dyn(
17316            &self,
17317            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17318        ) -> bool {
17319            load_dyn_name_atomic_ptr(get_proc_address, b"glGetPointerv\0", &self.glGetPointerv_p)
17320        }
17321        #[inline]
17322        #[doc(hidden)]
17323        pub fn GetPointerv_is_loaded(&self) -> bool {
17324            !self.glGetPointerv_p.load(RELAX).is_null()
17325        }
17326        /// [glGetPointervKHR](http://docs.gl/gl4/glGetPointervKHR)(pname, params)
17327        /// * alias of: [`glGetPointerv`]
17328        #[cfg_attr(feature = "inline", inline)]
17329        #[cfg_attr(feature = "inline_always", inline(always))]
17330        pub unsafe fn GetPointervKHR(&self, pname: GLenum, params: *mut *mut c_void) {
17331            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17332            {
17333                trace!("calling gl.GetPointervKHR({:#X}, {:p});", pname, params);
17334            }
17335            let out =
17336                call_atomic_ptr_2arg("glGetPointervKHR", &self.glGetPointervKHR_p, pname, params);
17337            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17338            {
17339                self.automatic_glGetError("glGetPointervKHR");
17340            }
17341            out
17342        }
17343        #[doc(hidden)]
17344        pub unsafe fn GetPointervKHR_load_with_dyn(
17345            &self,
17346            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17347        ) -> bool {
17348            load_dyn_name_atomic_ptr(
17349                get_proc_address,
17350                b"glGetPointervKHR\0",
17351                &self.glGetPointervKHR_p,
17352            )
17353        }
17354        #[inline]
17355        #[doc(hidden)]
17356        pub fn GetPointervKHR_is_loaded(&self) -> bool {
17357            !self.glGetPointervKHR_p.load(RELAX).is_null()
17358        }
17359        /// [glGetProgramBinary](http://docs.gl/gl4/glGetProgramBinary)(program, bufSize, length, binaryFormat, binary)
17360        /// * `length` len: 1
17361        /// * `binaryFormat` len: 1
17362        /// * `binary` len: bufSize
17363        #[cfg_attr(feature = "inline", inline)]
17364        #[cfg_attr(feature = "inline_always", inline(always))]
17365        pub unsafe fn GetProgramBinary(
17366            &self,
17367            program: GLuint,
17368            bufSize: GLsizei,
17369            length: *mut GLsizei,
17370            binaryFormat: *mut GLenum,
17371            binary: *mut c_void,
17372        ) {
17373            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17374            {
17375                trace!(
17376                    "calling gl.GetProgramBinary({:?}, {:?}, {:p}, {:p}, {:p});",
17377                    program,
17378                    bufSize,
17379                    length,
17380                    binaryFormat,
17381                    binary
17382                );
17383            }
17384            let out = call_atomic_ptr_5arg(
17385                "glGetProgramBinary",
17386                &self.glGetProgramBinary_p,
17387                program,
17388                bufSize,
17389                length,
17390                binaryFormat,
17391                binary,
17392            );
17393            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17394            {
17395                self.automatic_glGetError("glGetProgramBinary");
17396            }
17397            out
17398        }
17399        #[doc(hidden)]
17400        pub unsafe fn GetProgramBinary_load_with_dyn(
17401            &self,
17402            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17403        ) -> bool {
17404            load_dyn_name_atomic_ptr(
17405                get_proc_address,
17406                b"glGetProgramBinary\0",
17407                &self.glGetProgramBinary_p,
17408            )
17409        }
17410        #[inline]
17411        #[doc(hidden)]
17412        pub fn GetProgramBinary_is_loaded(&self) -> bool {
17413            !self.glGetProgramBinary_p.load(RELAX).is_null()
17414        }
17415        /// [glGetProgramInfoLog](http://docs.gl/gl4/glGetProgramInfoLog)(program, bufSize, length, infoLog)
17416        /// * `length` len: 1
17417        /// * `infoLog` len: bufSize
17418        #[cfg_attr(feature = "inline", inline)]
17419        #[cfg_attr(feature = "inline_always", inline(always))]
17420        pub unsafe fn GetProgramInfoLog(
17421            &self,
17422            program: GLuint,
17423            bufSize: GLsizei,
17424            length: *mut GLsizei,
17425            infoLog: *mut GLchar,
17426        ) {
17427            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17428            {
17429                trace!(
17430                    "calling gl.GetProgramInfoLog({:?}, {:?}, {:p}, {:p});",
17431                    program,
17432                    bufSize,
17433                    length,
17434                    infoLog
17435                );
17436            }
17437            let out = call_atomic_ptr_4arg(
17438                "glGetProgramInfoLog",
17439                &self.glGetProgramInfoLog_p,
17440                program,
17441                bufSize,
17442                length,
17443                infoLog,
17444            );
17445            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17446            {
17447                self.automatic_glGetError("glGetProgramInfoLog");
17448            }
17449            out
17450        }
17451        #[doc(hidden)]
17452        pub unsafe fn GetProgramInfoLog_load_with_dyn(
17453            &self,
17454            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17455        ) -> bool {
17456            load_dyn_name_atomic_ptr(
17457                get_proc_address,
17458                b"glGetProgramInfoLog\0",
17459                &self.glGetProgramInfoLog_p,
17460            )
17461        }
17462        #[inline]
17463        #[doc(hidden)]
17464        pub fn GetProgramInfoLog_is_loaded(&self) -> bool {
17465            !self.glGetProgramInfoLog_p.load(RELAX).is_null()
17466        }
17467        /// [glGetProgramInterfaceiv](http://docs.gl/gl4/glGetProgramInterface)(program, programInterface, pname, params)
17468        /// * `programInterface` group: ProgramInterface
17469        /// * `pname` group: ProgramInterfacePName
17470        /// * `params` len: COMPSIZE(pname)
17471        #[cfg_attr(feature = "inline", inline)]
17472        #[cfg_attr(feature = "inline_always", inline(always))]
17473        pub unsafe fn GetProgramInterfaceiv(
17474            &self,
17475            program: GLuint,
17476            programInterface: GLenum,
17477            pname: GLenum,
17478            params: *mut GLint,
17479        ) {
17480            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17481            {
17482                trace!(
17483                    "calling gl.GetProgramInterfaceiv({:?}, {:#X}, {:#X}, {:p});",
17484                    program,
17485                    programInterface,
17486                    pname,
17487                    params
17488                );
17489            }
17490            let out = call_atomic_ptr_4arg(
17491                "glGetProgramInterfaceiv",
17492                &self.glGetProgramInterfaceiv_p,
17493                program,
17494                programInterface,
17495                pname,
17496                params,
17497            );
17498            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17499            {
17500                self.automatic_glGetError("glGetProgramInterfaceiv");
17501            }
17502            out
17503        }
17504        #[doc(hidden)]
17505        pub unsafe fn GetProgramInterfaceiv_load_with_dyn(
17506            &self,
17507            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17508        ) -> bool {
17509            load_dyn_name_atomic_ptr(
17510                get_proc_address,
17511                b"glGetProgramInterfaceiv\0",
17512                &self.glGetProgramInterfaceiv_p,
17513            )
17514        }
17515        #[inline]
17516        #[doc(hidden)]
17517        pub fn GetProgramInterfaceiv_is_loaded(&self) -> bool {
17518            !self.glGetProgramInterfaceiv_p.load(RELAX).is_null()
17519        }
17520        /// [glGetProgramPipelineInfoLog](http://docs.gl/gl4/glGetProgramPipelineInfoLog)(pipeline, bufSize, length, infoLog)
17521        /// * `length` len: 1
17522        /// * `infoLog` len: bufSize
17523        #[cfg_attr(feature = "inline", inline)]
17524        #[cfg_attr(feature = "inline_always", inline(always))]
17525        pub unsafe fn GetProgramPipelineInfoLog(
17526            &self,
17527            pipeline: GLuint,
17528            bufSize: GLsizei,
17529            length: *mut GLsizei,
17530            infoLog: *mut GLchar,
17531        ) {
17532            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17533            {
17534                trace!(
17535                    "calling gl.GetProgramPipelineInfoLog({:?}, {:?}, {:p}, {:p});",
17536                    pipeline,
17537                    bufSize,
17538                    length,
17539                    infoLog
17540                );
17541            }
17542            let out = call_atomic_ptr_4arg(
17543                "glGetProgramPipelineInfoLog",
17544                &self.glGetProgramPipelineInfoLog_p,
17545                pipeline,
17546                bufSize,
17547                length,
17548                infoLog,
17549            );
17550            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17551            {
17552                self.automatic_glGetError("glGetProgramPipelineInfoLog");
17553            }
17554            out
17555        }
17556        #[doc(hidden)]
17557        pub unsafe fn GetProgramPipelineInfoLog_load_with_dyn(
17558            &self,
17559            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17560        ) -> bool {
17561            load_dyn_name_atomic_ptr(
17562                get_proc_address,
17563                b"glGetProgramPipelineInfoLog\0",
17564                &self.glGetProgramPipelineInfoLog_p,
17565            )
17566        }
17567        #[inline]
17568        #[doc(hidden)]
17569        pub fn GetProgramPipelineInfoLog_is_loaded(&self) -> bool {
17570            !self.glGetProgramPipelineInfoLog_p.load(RELAX).is_null()
17571        }
17572        /// [glGetProgramPipelineiv](http://docs.gl/gl4/glGetProgramPipeline)(pipeline, pname, params)
17573        /// * `pname` group: PipelineParameterName
17574        /// * `params` len: COMPSIZE(pname)
17575        #[cfg_attr(feature = "inline", inline)]
17576        #[cfg_attr(feature = "inline_always", inline(always))]
17577        pub unsafe fn GetProgramPipelineiv(
17578            &self,
17579            pipeline: GLuint,
17580            pname: GLenum,
17581            params: *mut GLint,
17582        ) {
17583            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17584            {
17585                trace!(
17586                    "calling gl.GetProgramPipelineiv({:?}, {:#X}, {:p});",
17587                    pipeline,
17588                    pname,
17589                    params
17590                );
17591            }
17592            let out = call_atomic_ptr_3arg(
17593                "glGetProgramPipelineiv",
17594                &self.glGetProgramPipelineiv_p,
17595                pipeline,
17596                pname,
17597                params,
17598            );
17599            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17600            {
17601                self.automatic_glGetError("glGetProgramPipelineiv");
17602            }
17603            out
17604        }
17605        #[doc(hidden)]
17606        pub unsafe fn GetProgramPipelineiv_load_with_dyn(
17607            &self,
17608            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17609        ) -> bool {
17610            load_dyn_name_atomic_ptr(
17611                get_proc_address,
17612                b"glGetProgramPipelineiv\0",
17613                &self.glGetProgramPipelineiv_p,
17614            )
17615        }
17616        #[inline]
17617        #[doc(hidden)]
17618        pub fn GetProgramPipelineiv_is_loaded(&self) -> bool {
17619            !self.glGetProgramPipelineiv_p.load(RELAX).is_null()
17620        }
17621        /// [glGetProgramResourceIndex](http://docs.gl/gl4/glGetProgramResourceIndex)(program, programInterface, name)
17622        /// * `programInterface` group: ProgramInterface
17623        /// * `name` len: COMPSIZE(name)
17624        #[cfg_attr(feature = "inline", inline)]
17625        #[cfg_attr(feature = "inline_always", inline(always))]
17626        pub unsafe fn GetProgramResourceIndex(
17627            &self,
17628            program: GLuint,
17629            programInterface: GLenum,
17630            name: *const GLchar,
17631        ) -> GLuint {
17632            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17633            {
17634                trace!(
17635                    "calling gl.GetProgramResourceIndex({:?}, {:#X}, {:p});",
17636                    program,
17637                    programInterface,
17638                    name
17639                );
17640            }
17641            let out = call_atomic_ptr_3arg(
17642                "glGetProgramResourceIndex",
17643                &self.glGetProgramResourceIndex_p,
17644                program,
17645                programInterface,
17646                name,
17647            );
17648            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17649            {
17650                self.automatic_glGetError("glGetProgramResourceIndex");
17651            }
17652            out
17653        }
17654        #[doc(hidden)]
17655        pub unsafe fn GetProgramResourceIndex_load_with_dyn(
17656            &self,
17657            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17658        ) -> bool {
17659            load_dyn_name_atomic_ptr(
17660                get_proc_address,
17661                b"glGetProgramResourceIndex\0",
17662                &self.glGetProgramResourceIndex_p,
17663            )
17664        }
17665        #[inline]
17666        #[doc(hidden)]
17667        pub fn GetProgramResourceIndex_is_loaded(&self) -> bool {
17668            !self.glGetProgramResourceIndex_p.load(RELAX).is_null()
17669        }
17670        /// [glGetProgramResourceLocation](http://docs.gl/gl4/glGetProgramResourceLocation)(program, programInterface, name)
17671        /// * `programInterface` group: ProgramInterface
17672        /// * `name` len: COMPSIZE(name)
17673        #[cfg_attr(feature = "inline", inline)]
17674        #[cfg_attr(feature = "inline_always", inline(always))]
17675        pub unsafe fn GetProgramResourceLocation(
17676            &self,
17677            program: GLuint,
17678            programInterface: GLenum,
17679            name: *const GLchar,
17680        ) -> GLint {
17681            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17682            {
17683                trace!(
17684                    "calling gl.GetProgramResourceLocation({:?}, {:#X}, {:p});",
17685                    program,
17686                    programInterface,
17687                    name
17688                );
17689            }
17690            let out = call_atomic_ptr_3arg(
17691                "glGetProgramResourceLocation",
17692                &self.glGetProgramResourceLocation_p,
17693                program,
17694                programInterface,
17695                name,
17696            );
17697            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17698            {
17699                self.automatic_glGetError("glGetProgramResourceLocation");
17700            }
17701            out
17702        }
17703        #[doc(hidden)]
17704        pub unsafe fn GetProgramResourceLocation_load_with_dyn(
17705            &self,
17706            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17707        ) -> bool {
17708            load_dyn_name_atomic_ptr(
17709                get_proc_address,
17710                b"glGetProgramResourceLocation\0",
17711                &self.glGetProgramResourceLocation_p,
17712            )
17713        }
17714        #[inline]
17715        #[doc(hidden)]
17716        pub fn GetProgramResourceLocation_is_loaded(&self) -> bool {
17717            !self.glGetProgramResourceLocation_p.load(RELAX).is_null()
17718        }
17719        /// [glGetProgramResourceLocationIndex](http://docs.gl/gl4/glGetProgramResourceLocationIndex)(program, programInterface, name)
17720        /// * `programInterface` group: ProgramInterface
17721        /// * `name` len: COMPSIZE(name)
17722        #[cfg_attr(feature = "inline", inline)]
17723        #[cfg_attr(feature = "inline_always", inline(always))]
17724        pub unsafe fn GetProgramResourceLocationIndex(
17725            &self,
17726            program: GLuint,
17727            programInterface: GLenum,
17728            name: *const GLchar,
17729        ) -> GLint {
17730            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17731            {
17732                trace!(
17733                    "calling gl.GetProgramResourceLocationIndex({:?}, {:#X}, {:p});",
17734                    program,
17735                    programInterface,
17736                    name
17737                );
17738            }
17739            let out = call_atomic_ptr_3arg(
17740                "glGetProgramResourceLocationIndex",
17741                &self.glGetProgramResourceLocationIndex_p,
17742                program,
17743                programInterface,
17744                name,
17745            );
17746            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17747            {
17748                self.automatic_glGetError("glGetProgramResourceLocationIndex");
17749            }
17750            out
17751        }
17752        #[doc(hidden)]
17753        pub unsafe fn GetProgramResourceLocationIndex_load_with_dyn(
17754            &self,
17755            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17756        ) -> bool {
17757            load_dyn_name_atomic_ptr(
17758                get_proc_address,
17759                b"glGetProgramResourceLocationIndex\0",
17760                &self.glGetProgramResourceLocationIndex_p,
17761            )
17762        }
17763        #[inline]
17764        #[doc(hidden)]
17765        pub fn GetProgramResourceLocationIndex_is_loaded(&self) -> bool {
17766            !self
17767                .glGetProgramResourceLocationIndex_p
17768                .load(RELAX)
17769                .is_null()
17770        }
17771        /// [glGetProgramResourceName](http://docs.gl/gl4/glGetProgramResourceName)(program, programInterface, index, bufSize, length, name)
17772        /// * `programInterface` group: ProgramInterface
17773        /// * `length` len: 1
17774        /// * `name` len: bufSize
17775        #[cfg_attr(feature = "inline", inline)]
17776        #[cfg_attr(feature = "inline_always", inline(always))]
17777        pub unsafe fn GetProgramResourceName(
17778            &self,
17779            program: GLuint,
17780            programInterface: GLenum,
17781            index: GLuint,
17782            bufSize: GLsizei,
17783            length: *mut GLsizei,
17784            name: *mut GLchar,
17785        ) {
17786            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17787            {
17788                trace!(
17789                    "calling gl.GetProgramResourceName({:?}, {:#X}, {:?}, {:?}, {:p}, {:p});",
17790                    program,
17791                    programInterface,
17792                    index,
17793                    bufSize,
17794                    length,
17795                    name
17796                );
17797            }
17798            let out = call_atomic_ptr_6arg(
17799                "glGetProgramResourceName",
17800                &self.glGetProgramResourceName_p,
17801                program,
17802                programInterface,
17803                index,
17804                bufSize,
17805                length,
17806                name,
17807            );
17808            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17809            {
17810                self.automatic_glGetError("glGetProgramResourceName");
17811            }
17812            out
17813        }
17814        #[doc(hidden)]
17815        pub unsafe fn GetProgramResourceName_load_with_dyn(
17816            &self,
17817            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17818        ) -> bool {
17819            load_dyn_name_atomic_ptr(
17820                get_proc_address,
17821                b"glGetProgramResourceName\0",
17822                &self.glGetProgramResourceName_p,
17823            )
17824        }
17825        #[inline]
17826        #[doc(hidden)]
17827        pub fn GetProgramResourceName_is_loaded(&self) -> bool {
17828            !self.glGetProgramResourceName_p.load(RELAX).is_null()
17829        }
17830        /// [glGetProgramResourceiv](http://docs.gl/gl4/glGetProgramResource)(program, programInterface, index, propCount, props, count, length, params)
17831        /// * `programInterface` group: ProgramInterface
17832        /// * `props` group: ProgramResourceProperty
17833        /// * `props` len: propCount
17834        /// * `length` len: 1
17835        /// * `params` len: count
17836        #[cfg_attr(feature = "inline", inline)]
17837        #[cfg_attr(feature = "inline_always", inline(always))]
17838        pub unsafe fn GetProgramResourceiv(
17839            &self,
17840            program: GLuint,
17841            programInterface: GLenum,
17842            index: GLuint,
17843            propCount: GLsizei,
17844            props: *const GLenum,
17845            count: GLsizei,
17846            length: *mut GLsizei,
17847            params: *mut GLint,
17848        ) {
17849            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17850            {
17851                trace!("calling gl.GetProgramResourceiv({:?}, {:#X}, {:?}, {:?}, {:p}, {:?}, {:p}, {:p});", program, programInterface, index, propCount, props, count, length, params);
17852            }
17853            let out = call_atomic_ptr_8arg(
17854                "glGetProgramResourceiv",
17855                &self.glGetProgramResourceiv_p,
17856                program,
17857                programInterface,
17858                index,
17859                propCount,
17860                props,
17861                count,
17862                length,
17863                params,
17864            );
17865            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17866            {
17867                self.automatic_glGetError("glGetProgramResourceiv");
17868            }
17869            out
17870        }
17871        #[doc(hidden)]
17872        pub unsafe fn GetProgramResourceiv_load_with_dyn(
17873            &self,
17874            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17875        ) -> bool {
17876            load_dyn_name_atomic_ptr(
17877                get_proc_address,
17878                b"glGetProgramResourceiv\0",
17879                &self.glGetProgramResourceiv_p,
17880            )
17881        }
17882        #[inline]
17883        #[doc(hidden)]
17884        pub fn GetProgramResourceiv_is_loaded(&self) -> bool {
17885            !self.glGetProgramResourceiv_p.load(RELAX).is_null()
17886        }
17887        /// [glGetProgramStageiv](http://docs.gl/gl4/glGetProgramStage)(program, shadertype, pname, values)
17888        /// * `shadertype` group: ShaderType
17889        /// * `pname` group: ProgramStagePName
17890        /// * `values` len: 1
17891        #[cfg_attr(feature = "inline", inline)]
17892        #[cfg_attr(feature = "inline_always", inline(always))]
17893        pub unsafe fn GetProgramStageiv(
17894            &self,
17895            program: GLuint,
17896            shadertype: GLenum,
17897            pname: GLenum,
17898            values: *mut GLint,
17899        ) {
17900            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17901            {
17902                trace!(
17903                    "calling gl.GetProgramStageiv({:?}, {:#X}, {:#X}, {:p});",
17904                    program,
17905                    shadertype,
17906                    pname,
17907                    values
17908                );
17909            }
17910            let out = call_atomic_ptr_4arg(
17911                "glGetProgramStageiv",
17912                &self.glGetProgramStageiv_p,
17913                program,
17914                shadertype,
17915                pname,
17916                values,
17917            );
17918            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17919            {
17920                self.automatic_glGetError("glGetProgramStageiv");
17921            }
17922            out
17923        }
17924        #[doc(hidden)]
17925        pub unsafe fn GetProgramStageiv_load_with_dyn(
17926            &self,
17927            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17928        ) -> bool {
17929            load_dyn_name_atomic_ptr(
17930                get_proc_address,
17931                b"glGetProgramStageiv\0",
17932                &self.glGetProgramStageiv_p,
17933            )
17934        }
17935        #[inline]
17936        #[doc(hidden)]
17937        pub fn GetProgramStageiv_is_loaded(&self) -> bool {
17938            !self.glGetProgramStageiv_p.load(RELAX).is_null()
17939        }
17940        /// [glGetProgramiv](http://docs.gl/gl4/glGetProgram)(program, pname, params)
17941        /// * `pname` group: ProgramPropertyARB
17942        /// * `params` len: COMPSIZE(pname)
17943        #[cfg_attr(feature = "inline", inline)]
17944        #[cfg_attr(feature = "inline_always", inline(always))]
17945        pub unsafe fn GetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) {
17946            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17947            {
17948                trace!(
17949                    "calling gl.GetProgramiv({:?}, {:#X}, {:p});",
17950                    program,
17951                    pname,
17952                    params
17953                );
17954            }
17955            let out = call_atomic_ptr_3arg(
17956                "glGetProgramiv",
17957                &self.glGetProgramiv_p,
17958                program,
17959                pname,
17960                params,
17961            );
17962            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17963            {
17964                self.automatic_glGetError("glGetProgramiv");
17965            }
17966            out
17967        }
17968        #[doc(hidden)]
17969        pub unsafe fn GetProgramiv_load_with_dyn(
17970            &self,
17971            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17972        ) -> bool {
17973            load_dyn_name_atomic_ptr(
17974                get_proc_address,
17975                b"glGetProgramiv\0",
17976                &self.glGetProgramiv_p,
17977            )
17978        }
17979        #[inline]
17980        #[doc(hidden)]
17981        pub fn GetProgramiv_is_loaded(&self) -> bool {
17982            !self.glGetProgramiv_p.load(RELAX).is_null()
17983        }
17984        /// [glGetQueryBufferObjecti64v](http://docs.gl/gl4/glGetQueryBufferObject)(id, buffer, pname, offset)
17985        /// * `pname` group: QueryObjectParameterName
17986        #[cfg_attr(feature = "inline", inline)]
17987        #[cfg_attr(feature = "inline_always", inline(always))]
17988        pub unsafe fn GetQueryBufferObjecti64v(
17989            &self,
17990            id: GLuint,
17991            buffer: GLuint,
17992            pname: GLenum,
17993            offset: GLintptr,
17994        ) {
17995            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17996            {
17997                trace!(
17998                    "calling gl.GetQueryBufferObjecti64v({:?}, {:?}, {:#X}, {:?});",
17999                    id,
18000                    buffer,
18001                    pname,
18002                    offset
18003                );
18004            }
18005            let out = call_atomic_ptr_4arg(
18006                "glGetQueryBufferObjecti64v",
18007                &self.glGetQueryBufferObjecti64v_p,
18008                id,
18009                buffer,
18010                pname,
18011                offset,
18012            );
18013            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18014            {
18015                self.automatic_glGetError("glGetQueryBufferObjecti64v");
18016            }
18017            out
18018        }
18019        #[doc(hidden)]
18020        pub unsafe fn GetQueryBufferObjecti64v_load_with_dyn(
18021            &self,
18022            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18023        ) -> bool {
18024            load_dyn_name_atomic_ptr(
18025                get_proc_address,
18026                b"glGetQueryBufferObjecti64v\0",
18027                &self.glGetQueryBufferObjecti64v_p,
18028            )
18029        }
18030        #[inline]
18031        #[doc(hidden)]
18032        pub fn GetQueryBufferObjecti64v_is_loaded(&self) -> bool {
18033            !self.glGetQueryBufferObjecti64v_p.load(RELAX).is_null()
18034        }
18035        /// [glGetQueryBufferObjectiv](http://docs.gl/gl4/glGetQueryBufferObject)(id, buffer, pname, offset)
18036        /// * `pname` group: QueryObjectParameterName
18037        #[cfg_attr(feature = "inline", inline)]
18038        #[cfg_attr(feature = "inline_always", inline(always))]
18039        pub unsafe fn GetQueryBufferObjectiv(
18040            &self,
18041            id: GLuint,
18042            buffer: GLuint,
18043            pname: GLenum,
18044            offset: GLintptr,
18045        ) {
18046            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18047            {
18048                trace!(
18049                    "calling gl.GetQueryBufferObjectiv({:?}, {:?}, {:#X}, {:?});",
18050                    id,
18051                    buffer,
18052                    pname,
18053                    offset
18054                );
18055            }
18056            let out = call_atomic_ptr_4arg(
18057                "glGetQueryBufferObjectiv",
18058                &self.glGetQueryBufferObjectiv_p,
18059                id,
18060                buffer,
18061                pname,
18062                offset,
18063            );
18064            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18065            {
18066                self.automatic_glGetError("glGetQueryBufferObjectiv");
18067            }
18068            out
18069        }
18070        #[doc(hidden)]
18071        pub unsafe fn GetQueryBufferObjectiv_load_with_dyn(
18072            &self,
18073            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18074        ) -> bool {
18075            load_dyn_name_atomic_ptr(
18076                get_proc_address,
18077                b"glGetQueryBufferObjectiv\0",
18078                &self.glGetQueryBufferObjectiv_p,
18079            )
18080        }
18081        #[inline]
18082        #[doc(hidden)]
18083        pub fn GetQueryBufferObjectiv_is_loaded(&self) -> bool {
18084            !self.glGetQueryBufferObjectiv_p.load(RELAX).is_null()
18085        }
18086        /// [glGetQueryBufferObjectui64v](http://docs.gl/gl4/glGetQueryBufferObjectu)(id, buffer, pname, offset)
18087        /// * `pname` group: QueryObjectParameterName
18088        #[cfg_attr(feature = "inline", inline)]
18089        #[cfg_attr(feature = "inline_always", inline(always))]
18090        pub unsafe fn GetQueryBufferObjectui64v(
18091            &self,
18092            id: GLuint,
18093            buffer: GLuint,
18094            pname: GLenum,
18095            offset: GLintptr,
18096        ) {
18097            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18098            {
18099                trace!(
18100                    "calling gl.GetQueryBufferObjectui64v({:?}, {:?}, {:#X}, {:?});",
18101                    id,
18102                    buffer,
18103                    pname,
18104                    offset
18105                );
18106            }
18107            let out = call_atomic_ptr_4arg(
18108                "glGetQueryBufferObjectui64v",
18109                &self.glGetQueryBufferObjectui64v_p,
18110                id,
18111                buffer,
18112                pname,
18113                offset,
18114            );
18115            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18116            {
18117                self.automatic_glGetError("glGetQueryBufferObjectui64v");
18118            }
18119            out
18120        }
18121        #[doc(hidden)]
18122        pub unsafe fn GetQueryBufferObjectui64v_load_with_dyn(
18123            &self,
18124            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18125        ) -> bool {
18126            load_dyn_name_atomic_ptr(
18127                get_proc_address,
18128                b"glGetQueryBufferObjectui64v\0",
18129                &self.glGetQueryBufferObjectui64v_p,
18130            )
18131        }
18132        #[inline]
18133        #[doc(hidden)]
18134        pub fn GetQueryBufferObjectui64v_is_loaded(&self) -> bool {
18135            !self.glGetQueryBufferObjectui64v_p.load(RELAX).is_null()
18136        }
18137        /// [glGetQueryBufferObjectuiv](http://docs.gl/gl4/glGetQueryBufferObject)(id, buffer, pname, offset)
18138        /// * `pname` group: QueryObjectParameterName
18139        #[cfg_attr(feature = "inline", inline)]
18140        #[cfg_attr(feature = "inline_always", inline(always))]
18141        pub unsafe fn GetQueryBufferObjectuiv(
18142            &self,
18143            id: GLuint,
18144            buffer: GLuint,
18145            pname: GLenum,
18146            offset: GLintptr,
18147        ) {
18148            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18149            {
18150                trace!(
18151                    "calling gl.GetQueryBufferObjectuiv({:?}, {:?}, {:#X}, {:?});",
18152                    id,
18153                    buffer,
18154                    pname,
18155                    offset
18156                );
18157            }
18158            let out = call_atomic_ptr_4arg(
18159                "glGetQueryBufferObjectuiv",
18160                &self.glGetQueryBufferObjectuiv_p,
18161                id,
18162                buffer,
18163                pname,
18164                offset,
18165            );
18166            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18167            {
18168                self.automatic_glGetError("glGetQueryBufferObjectuiv");
18169            }
18170            out
18171        }
18172        #[doc(hidden)]
18173        pub unsafe fn GetQueryBufferObjectuiv_load_with_dyn(
18174            &self,
18175            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18176        ) -> bool {
18177            load_dyn_name_atomic_ptr(
18178                get_proc_address,
18179                b"glGetQueryBufferObjectuiv\0",
18180                &self.glGetQueryBufferObjectuiv_p,
18181            )
18182        }
18183        #[inline]
18184        #[doc(hidden)]
18185        pub fn GetQueryBufferObjectuiv_is_loaded(&self) -> bool {
18186            !self.glGetQueryBufferObjectuiv_p.load(RELAX).is_null()
18187        }
18188        /// [glGetQueryIndexediv](http://docs.gl/gl4/glGetQueryIndexed)(target, index, pname, params)
18189        /// * `target` group: QueryTarget
18190        /// * `pname` group: QueryParameterName
18191        /// * `params` len: COMPSIZE(pname)
18192        #[cfg_attr(feature = "inline", inline)]
18193        #[cfg_attr(feature = "inline_always", inline(always))]
18194        pub unsafe fn GetQueryIndexediv(
18195            &self,
18196            target: GLenum,
18197            index: GLuint,
18198            pname: GLenum,
18199            params: *mut GLint,
18200        ) {
18201            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18202            {
18203                trace!(
18204                    "calling gl.GetQueryIndexediv({:#X}, {:?}, {:#X}, {:p});",
18205                    target,
18206                    index,
18207                    pname,
18208                    params
18209                );
18210            }
18211            let out = call_atomic_ptr_4arg(
18212                "glGetQueryIndexediv",
18213                &self.glGetQueryIndexediv_p,
18214                target,
18215                index,
18216                pname,
18217                params,
18218            );
18219            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18220            {
18221                self.automatic_glGetError("glGetQueryIndexediv");
18222            }
18223            out
18224        }
18225        #[doc(hidden)]
18226        pub unsafe fn GetQueryIndexediv_load_with_dyn(
18227            &self,
18228            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18229        ) -> bool {
18230            load_dyn_name_atomic_ptr(
18231                get_proc_address,
18232                b"glGetQueryIndexediv\0",
18233                &self.glGetQueryIndexediv_p,
18234            )
18235        }
18236        #[inline]
18237        #[doc(hidden)]
18238        pub fn GetQueryIndexediv_is_loaded(&self) -> bool {
18239            !self.glGetQueryIndexediv_p.load(RELAX).is_null()
18240        }
18241        /// [glGetQueryObjecti64v](http://docs.gl/gl4/glGetQueryObject)(id, pname, params)
18242        /// * `pname` group: QueryObjectParameterName
18243        /// * `params` len: COMPSIZE(pname)
18244        #[cfg_attr(feature = "inline", inline)]
18245        #[cfg_attr(feature = "inline_always", inline(always))]
18246        pub unsafe fn GetQueryObjecti64v(&self, id: GLuint, pname: GLenum, params: *mut GLint64) {
18247            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18248            {
18249                trace!(
18250                    "calling gl.GetQueryObjecti64v({:?}, {:#X}, {:p});",
18251                    id,
18252                    pname,
18253                    params
18254                );
18255            }
18256            let out = call_atomic_ptr_3arg(
18257                "glGetQueryObjecti64v",
18258                &self.glGetQueryObjecti64v_p,
18259                id,
18260                pname,
18261                params,
18262            );
18263            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18264            {
18265                self.automatic_glGetError("glGetQueryObjecti64v");
18266            }
18267            out
18268        }
18269        #[doc(hidden)]
18270        pub unsafe fn GetQueryObjecti64v_load_with_dyn(
18271            &self,
18272            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18273        ) -> bool {
18274            load_dyn_name_atomic_ptr(
18275                get_proc_address,
18276                b"glGetQueryObjecti64v\0",
18277                &self.glGetQueryObjecti64v_p,
18278            )
18279        }
18280        #[inline]
18281        #[doc(hidden)]
18282        pub fn GetQueryObjecti64v_is_loaded(&self) -> bool {
18283            !self.glGetQueryObjecti64v_p.load(RELAX).is_null()
18284        }
18285        /// [glGetQueryObjecti64vEXT](http://docs.gl/gl4/glGetQueryObjecti64vEXT)(id, pname, params)
18286        /// * `pname` group: QueryObjectParameterName
18287        /// * `params` len: COMPSIZE(pname)
18288        /// * alias of: [`glGetQueryObjecti64v`]
18289        #[cfg_attr(feature = "inline", inline)]
18290        #[cfg_attr(feature = "inline_always", inline(always))]
18291        pub unsafe fn GetQueryObjecti64vEXT(
18292            &self,
18293            id: GLuint,
18294            pname: GLenum,
18295            params: *mut GLint64,
18296        ) {
18297            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18298            {
18299                trace!(
18300                    "calling gl.GetQueryObjecti64vEXT({:?}, {:#X}, {:p});",
18301                    id,
18302                    pname,
18303                    params
18304                );
18305            }
18306            let out = call_atomic_ptr_3arg(
18307                "glGetQueryObjecti64vEXT",
18308                &self.glGetQueryObjecti64vEXT_p,
18309                id,
18310                pname,
18311                params,
18312            );
18313            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18314            {
18315                self.automatic_glGetError("glGetQueryObjecti64vEXT");
18316            }
18317            out
18318        }
18319        #[doc(hidden)]
18320        pub unsafe fn GetQueryObjecti64vEXT_load_with_dyn(
18321            &self,
18322            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18323        ) -> bool {
18324            load_dyn_name_atomic_ptr(
18325                get_proc_address,
18326                b"glGetQueryObjecti64vEXT\0",
18327                &self.glGetQueryObjecti64vEXT_p,
18328            )
18329        }
18330        #[inline]
18331        #[doc(hidden)]
18332        pub fn GetQueryObjecti64vEXT_is_loaded(&self) -> bool {
18333            !self.glGetQueryObjecti64vEXT_p.load(RELAX).is_null()
18334        }
18335        /// [glGetQueryObjectiv](http://docs.gl/gl4/glGetQueryObject)(id, pname, params)
18336        /// * `pname` group: QueryObjectParameterName
18337        /// * `params` len: COMPSIZE(pname)
18338        #[cfg_attr(feature = "inline", inline)]
18339        #[cfg_attr(feature = "inline_always", inline(always))]
18340        pub unsafe fn GetQueryObjectiv(&self, id: GLuint, pname: GLenum, params: *mut GLint) {
18341            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18342            {
18343                trace!(
18344                    "calling gl.GetQueryObjectiv({:?}, {:#X}, {:p});",
18345                    id,
18346                    pname,
18347                    params
18348                );
18349            }
18350            let out = call_atomic_ptr_3arg(
18351                "glGetQueryObjectiv",
18352                &self.glGetQueryObjectiv_p,
18353                id,
18354                pname,
18355                params,
18356            );
18357            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18358            {
18359                self.automatic_glGetError("glGetQueryObjectiv");
18360            }
18361            out
18362        }
18363        #[doc(hidden)]
18364        pub unsafe fn GetQueryObjectiv_load_with_dyn(
18365            &self,
18366            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18367        ) -> bool {
18368            load_dyn_name_atomic_ptr(
18369                get_proc_address,
18370                b"glGetQueryObjectiv\0",
18371                &self.glGetQueryObjectiv_p,
18372            )
18373        }
18374        #[inline]
18375        #[doc(hidden)]
18376        pub fn GetQueryObjectiv_is_loaded(&self) -> bool {
18377            !self.glGetQueryObjectiv_p.load(RELAX).is_null()
18378        }
18379        /// [glGetQueryObjectivEXT](http://docs.gl/gl4/glGetQueryObjectivEXT)(id, pname, params)
18380        /// * `pname` group: QueryObjectParameterName
18381        /// * `params` len: COMPSIZE(pname)
18382        /// * alias of: [`glGetQueryObjectiv`]
18383        #[cfg_attr(feature = "inline", inline)]
18384        #[cfg_attr(feature = "inline_always", inline(always))]
18385        pub unsafe fn GetQueryObjectivEXT(&self, id: GLuint, pname: GLenum, params: *mut GLint) {
18386            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18387            {
18388                trace!(
18389                    "calling gl.GetQueryObjectivEXT({:?}, {:#X}, {:p});",
18390                    id,
18391                    pname,
18392                    params
18393                );
18394            }
18395            let out = call_atomic_ptr_3arg(
18396                "glGetQueryObjectivEXT",
18397                &self.glGetQueryObjectivEXT_p,
18398                id,
18399                pname,
18400                params,
18401            );
18402            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18403            {
18404                self.automatic_glGetError("glGetQueryObjectivEXT");
18405            }
18406            out
18407        }
18408        #[doc(hidden)]
18409        pub unsafe fn GetQueryObjectivEXT_load_with_dyn(
18410            &self,
18411            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18412        ) -> bool {
18413            load_dyn_name_atomic_ptr(
18414                get_proc_address,
18415                b"glGetQueryObjectivEXT\0",
18416                &self.glGetQueryObjectivEXT_p,
18417            )
18418        }
18419        #[inline]
18420        #[doc(hidden)]
18421        pub fn GetQueryObjectivEXT_is_loaded(&self) -> bool {
18422            !self.glGetQueryObjectivEXT_p.load(RELAX).is_null()
18423        }
18424        /// [glGetQueryObjectui64v](http://docs.gl/gl4/glGetQueryObjectu)(id, pname, params)
18425        /// * `pname` group: QueryObjectParameterName
18426        /// * `params` len: COMPSIZE(pname)
18427        #[cfg_attr(feature = "inline", inline)]
18428        #[cfg_attr(feature = "inline_always", inline(always))]
18429        pub unsafe fn GetQueryObjectui64v(&self, id: GLuint, pname: GLenum, params: *mut GLuint64) {
18430            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18431            {
18432                trace!(
18433                    "calling gl.GetQueryObjectui64v({:?}, {:#X}, {:p});",
18434                    id,
18435                    pname,
18436                    params
18437                );
18438            }
18439            let out = call_atomic_ptr_3arg(
18440                "glGetQueryObjectui64v",
18441                &self.glGetQueryObjectui64v_p,
18442                id,
18443                pname,
18444                params,
18445            );
18446            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18447            {
18448                self.automatic_glGetError("glGetQueryObjectui64v");
18449            }
18450            out
18451        }
18452        #[doc(hidden)]
18453        pub unsafe fn GetQueryObjectui64v_load_with_dyn(
18454            &self,
18455            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18456        ) -> bool {
18457            load_dyn_name_atomic_ptr(
18458                get_proc_address,
18459                b"glGetQueryObjectui64v\0",
18460                &self.glGetQueryObjectui64v_p,
18461            )
18462        }
18463        #[inline]
18464        #[doc(hidden)]
18465        pub fn GetQueryObjectui64v_is_loaded(&self) -> bool {
18466            !self.glGetQueryObjectui64v_p.load(RELAX).is_null()
18467        }
18468        /// [glGetQueryObjectui64vEXT](http://docs.gl/gl4/glGetQueryObjectui64vEXT)(id, pname, params)
18469        /// * `pname` group: QueryObjectParameterName
18470        /// * `params` len: COMPSIZE(pname)
18471        /// * alias of: [`glGetQueryObjectui64v`]
18472        #[cfg_attr(feature = "inline", inline)]
18473        #[cfg_attr(feature = "inline_always", inline(always))]
18474        pub unsafe fn GetQueryObjectui64vEXT(
18475            &self,
18476            id: GLuint,
18477            pname: GLenum,
18478            params: *mut GLuint64,
18479        ) {
18480            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18481            {
18482                trace!(
18483                    "calling gl.GetQueryObjectui64vEXT({:?}, {:#X}, {:p});",
18484                    id,
18485                    pname,
18486                    params
18487                );
18488            }
18489            let out = call_atomic_ptr_3arg(
18490                "glGetQueryObjectui64vEXT",
18491                &self.glGetQueryObjectui64vEXT_p,
18492                id,
18493                pname,
18494                params,
18495            );
18496            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18497            {
18498                self.automatic_glGetError("glGetQueryObjectui64vEXT");
18499            }
18500            out
18501        }
18502        #[doc(hidden)]
18503        pub unsafe fn GetQueryObjectui64vEXT_load_with_dyn(
18504            &self,
18505            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18506        ) -> bool {
18507            load_dyn_name_atomic_ptr(
18508                get_proc_address,
18509                b"glGetQueryObjectui64vEXT\0",
18510                &self.glGetQueryObjectui64vEXT_p,
18511            )
18512        }
18513        #[inline]
18514        #[doc(hidden)]
18515        pub fn GetQueryObjectui64vEXT_is_loaded(&self) -> bool {
18516            !self.glGetQueryObjectui64vEXT_p.load(RELAX).is_null()
18517        }
18518        /// [glGetQueryObjectuiv](http://docs.gl/gl4/glGetQueryObject)(id, pname, params)
18519        /// * `pname` group: QueryObjectParameterName
18520        /// * `params` len: COMPSIZE(pname)
18521        #[cfg_attr(feature = "inline", inline)]
18522        #[cfg_attr(feature = "inline_always", inline(always))]
18523        pub unsafe fn GetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) {
18524            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18525            {
18526                trace!(
18527                    "calling gl.GetQueryObjectuiv({:?}, {:#X}, {:p});",
18528                    id,
18529                    pname,
18530                    params
18531                );
18532            }
18533            let out = call_atomic_ptr_3arg(
18534                "glGetQueryObjectuiv",
18535                &self.glGetQueryObjectuiv_p,
18536                id,
18537                pname,
18538                params,
18539            );
18540            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18541            {
18542                self.automatic_glGetError("glGetQueryObjectuiv");
18543            }
18544            out
18545        }
18546        #[doc(hidden)]
18547        pub unsafe fn GetQueryObjectuiv_load_with_dyn(
18548            &self,
18549            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18550        ) -> bool {
18551            load_dyn_name_atomic_ptr(
18552                get_proc_address,
18553                b"glGetQueryObjectuiv\0",
18554                &self.glGetQueryObjectuiv_p,
18555            )
18556        }
18557        #[inline]
18558        #[doc(hidden)]
18559        pub fn GetQueryObjectuiv_is_loaded(&self) -> bool {
18560            !self.glGetQueryObjectuiv_p.load(RELAX).is_null()
18561        }
18562        /// [glGetQueryObjectuivEXT](http://docs.gl/gl4/glGetQueryObjectuivEXT)(id, pname, params)
18563        /// * `pname` group: QueryObjectParameterName
18564        /// * `params` len: COMPSIZE(pname)
18565        #[cfg_attr(feature = "inline", inline)]
18566        #[cfg_attr(feature = "inline_always", inline(always))]
18567        pub unsafe fn GetQueryObjectuivEXT(&self, id: GLuint, pname: GLenum, params: *mut GLuint) {
18568            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18569            {
18570                trace!(
18571                    "calling gl.GetQueryObjectuivEXT({:?}, {:#X}, {:p});",
18572                    id,
18573                    pname,
18574                    params
18575                );
18576            }
18577            let out = call_atomic_ptr_3arg(
18578                "glGetQueryObjectuivEXT",
18579                &self.glGetQueryObjectuivEXT_p,
18580                id,
18581                pname,
18582                params,
18583            );
18584            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18585            {
18586                self.automatic_glGetError("glGetQueryObjectuivEXT");
18587            }
18588            out
18589        }
18590        #[doc(hidden)]
18591        pub unsafe fn GetQueryObjectuivEXT_load_with_dyn(
18592            &self,
18593            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18594        ) -> bool {
18595            load_dyn_name_atomic_ptr(
18596                get_proc_address,
18597                b"glGetQueryObjectuivEXT\0",
18598                &self.glGetQueryObjectuivEXT_p,
18599            )
18600        }
18601        #[inline]
18602        #[doc(hidden)]
18603        pub fn GetQueryObjectuivEXT_is_loaded(&self) -> bool {
18604            !self.glGetQueryObjectuivEXT_p.load(RELAX).is_null()
18605        }
18606        /// [glGetQueryiv](http://docs.gl/gl4/glGetQuery)(target, pname, params)
18607        /// * `target` group: QueryTarget
18608        /// * `pname` group: QueryParameterName
18609        /// * `params` len: COMPSIZE(pname)
18610        #[cfg_attr(feature = "inline", inline)]
18611        #[cfg_attr(feature = "inline_always", inline(always))]
18612        pub unsafe fn GetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) {
18613            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18614            {
18615                trace!(
18616                    "calling gl.GetQueryiv({:#X}, {:#X}, {:p});",
18617                    target,
18618                    pname,
18619                    params
18620                );
18621            }
18622            let out =
18623                call_atomic_ptr_3arg("glGetQueryiv", &self.glGetQueryiv_p, target, pname, params);
18624            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18625            {
18626                self.automatic_glGetError("glGetQueryiv");
18627            }
18628            out
18629        }
18630        #[doc(hidden)]
18631        pub unsafe fn GetQueryiv_load_with_dyn(
18632            &self,
18633            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18634        ) -> bool {
18635            load_dyn_name_atomic_ptr(get_proc_address, b"glGetQueryiv\0", &self.glGetQueryiv_p)
18636        }
18637        #[inline]
18638        #[doc(hidden)]
18639        pub fn GetQueryiv_is_loaded(&self) -> bool {
18640            !self.glGetQueryiv_p.load(RELAX).is_null()
18641        }
18642        /// [glGetQueryivEXT](http://docs.gl/gl4/glGetQueryivEXT)(target, pname, params)
18643        /// * `target` group: QueryTarget
18644        /// * `pname` group: QueryParameterName
18645        /// * `params` len: COMPSIZE(pname)
18646        #[cfg_attr(feature = "inline", inline)]
18647        #[cfg_attr(feature = "inline_always", inline(always))]
18648        pub unsafe fn GetQueryivEXT(&self, target: GLenum, pname: GLenum, params: *mut GLint) {
18649            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18650            {
18651                trace!(
18652                    "calling gl.GetQueryivEXT({:#X}, {:#X}, {:p});",
18653                    target,
18654                    pname,
18655                    params
18656                );
18657            }
18658            let out = call_atomic_ptr_3arg(
18659                "glGetQueryivEXT",
18660                &self.glGetQueryivEXT_p,
18661                target,
18662                pname,
18663                params,
18664            );
18665            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18666            {
18667                self.automatic_glGetError("glGetQueryivEXT");
18668            }
18669            out
18670        }
18671        #[doc(hidden)]
18672        pub unsafe fn GetQueryivEXT_load_with_dyn(
18673            &self,
18674            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18675        ) -> bool {
18676            load_dyn_name_atomic_ptr(
18677                get_proc_address,
18678                b"glGetQueryivEXT\0",
18679                &self.glGetQueryivEXT_p,
18680            )
18681        }
18682        #[inline]
18683        #[doc(hidden)]
18684        pub fn GetQueryivEXT_is_loaded(&self) -> bool {
18685            !self.glGetQueryivEXT_p.load(RELAX).is_null()
18686        }
18687        /// [glGetRenderbufferParameteriv](http://docs.gl/gl4/glGetRenderbufferParameter)(target, pname, params)
18688        /// * `target` group: RenderbufferTarget
18689        /// * `pname` group: RenderbufferParameterName
18690        /// * `params` len: COMPSIZE(pname)
18691        #[cfg_attr(feature = "inline", inline)]
18692        #[cfg_attr(feature = "inline_always", inline(always))]
18693        pub unsafe fn GetRenderbufferParameteriv(
18694            &self,
18695            target: GLenum,
18696            pname: GLenum,
18697            params: *mut GLint,
18698        ) {
18699            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18700            {
18701                trace!(
18702                    "calling gl.GetRenderbufferParameteriv({:#X}, {:#X}, {:p});",
18703                    target,
18704                    pname,
18705                    params
18706                );
18707            }
18708            let out = call_atomic_ptr_3arg(
18709                "glGetRenderbufferParameteriv",
18710                &self.glGetRenderbufferParameteriv_p,
18711                target,
18712                pname,
18713                params,
18714            );
18715            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18716            {
18717                self.automatic_glGetError("glGetRenderbufferParameteriv");
18718            }
18719            out
18720        }
18721        #[doc(hidden)]
18722        pub unsafe fn GetRenderbufferParameteriv_load_with_dyn(
18723            &self,
18724            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18725        ) -> bool {
18726            load_dyn_name_atomic_ptr(
18727                get_proc_address,
18728                b"glGetRenderbufferParameteriv\0",
18729                &self.glGetRenderbufferParameteriv_p,
18730            )
18731        }
18732        #[inline]
18733        #[doc(hidden)]
18734        pub fn GetRenderbufferParameteriv_is_loaded(&self) -> bool {
18735            !self.glGetRenderbufferParameteriv_p.load(RELAX).is_null()
18736        }
18737        /// [glGetSamplerParameterIiv](http://docs.gl/gl4/glGetSamplerParameter)(sampler, pname, params)
18738        /// * `pname` group: SamplerParameterI
18739        /// * `params` len: COMPSIZE(pname)
18740        #[cfg_attr(feature = "inline", inline)]
18741        #[cfg_attr(feature = "inline_always", inline(always))]
18742        pub unsafe fn GetSamplerParameterIiv(
18743            &self,
18744            sampler: GLuint,
18745            pname: GLenum,
18746            params: *mut GLint,
18747        ) {
18748            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18749            {
18750                trace!(
18751                    "calling gl.GetSamplerParameterIiv({:?}, {:#X}, {:p});",
18752                    sampler,
18753                    pname,
18754                    params
18755                );
18756            }
18757            let out = call_atomic_ptr_3arg(
18758                "glGetSamplerParameterIiv",
18759                &self.glGetSamplerParameterIiv_p,
18760                sampler,
18761                pname,
18762                params,
18763            );
18764            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18765            {
18766                self.automatic_glGetError("glGetSamplerParameterIiv");
18767            }
18768            out
18769        }
18770        #[doc(hidden)]
18771        pub unsafe fn GetSamplerParameterIiv_load_with_dyn(
18772            &self,
18773            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18774        ) -> bool {
18775            load_dyn_name_atomic_ptr(
18776                get_proc_address,
18777                b"glGetSamplerParameterIiv\0",
18778                &self.glGetSamplerParameterIiv_p,
18779            )
18780        }
18781        #[inline]
18782        #[doc(hidden)]
18783        pub fn GetSamplerParameterIiv_is_loaded(&self) -> bool {
18784            !self.glGetSamplerParameterIiv_p.load(RELAX).is_null()
18785        }
18786        /// [glGetSamplerParameterIuiv](http://docs.gl/gl4/glGetSamplerParameter)(sampler, pname, params)
18787        /// * `pname` group: SamplerParameterI
18788        /// * `params` len: COMPSIZE(pname)
18789        #[cfg_attr(feature = "inline", inline)]
18790        #[cfg_attr(feature = "inline_always", inline(always))]
18791        pub unsafe fn GetSamplerParameterIuiv(
18792            &self,
18793            sampler: GLuint,
18794            pname: GLenum,
18795            params: *mut GLuint,
18796        ) {
18797            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18798            {
18799                trace!(
18800                    "calling gl.GetSamplerParameterIuiv({:?}, {:#X}, {:p});",
18801                    sampler,
18802                    pname,
18803                    params
18804                );
18805            }
18806            let out = call_atomic_ptr_3arg(
18807                "glGetSamplerParameterIuiv",
18808                &self.glGetSamplerParameterIuiv_p,
18809                sampler,
18810                pname,
18811                params,
18812            );
18813            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18814            {
18815                self.automatic_glGetError("glGetSamplerParameterIuiv");
18816            }
18817            out
18818        }
18819        #[doc(hidden)]
18820        pub unsafe fn GetSamplerParameterIuiv_load_with_dyn(
18821            &self,
18822            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18823        ) -> bool {
18824            load_dyn_name_atomic_ptr(
18825                get_proc_address,
18826                b"glGetSamplerParameterIuiv\0",
18827                &self.glGetSamplerParameterIuiv_p,
18828            )
18829        }
18830        #[inline]
18831        #[doc(hidden)]
18832        pub fn GetSamplerParameterIuiv_is_loaded(&self) -> bool {
18833            !self.glGetSamplerParameterIuiv_p.load(RELAX).is_null()
18834        }
18835        /// [glGetSamplerParameterfv](http://docs.gl/gl4/glGetSamplerParameter)(sampler, pname, params)
18836        /// * `pname` group: SamplerParameterF
18837        /// * `params` len: COMPSIZE(pname)
18838        #[cfg_attr(feature = "inline", inline)]
18839        #[cfg_attr(feature = "inline_always", inline(always))]
18840        pub unsafe fn GetSamplerParameterfv(
18841            &self,
18842            sampler: GLuint,
18843            pname: GLenum,
18844            params: *mut GLfloat,
18845        ) {
18846            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18847            {
18848                trace!(
18849                    "calling gl.GetSamplerParameterfv({:?}, {:#X}, {:p});",
18850                    sampler,
18851                    pname,
18852                    params
18853                );
18854            }
18855            let out = call_atomic_ptr_3arg(
18856                "glGetSamplerParameterfv",
18857                &self.glGetSamplerParameterfv_p,
18858                sampler,
18859                pname,
18860                params,
18861            );
18862            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18863            {
18864                self.automatic_glGetError("glGetSamplerParameterfv");
18865            }
18866            out
18867        }
18868        #[doc(hidden)]
18869        pub unsafe fn GetSamplerParameterfv_load_with_dyn(
18870            &self,
18871            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18872        ) -> bool {
18873            load_dyn_name_atomic_ptr(
18874                get_proc_address,
18875                b"glGetSamplerParameterfv\0",
18876                &self.glGetSamplerParameterfv_p,
18877            )
18878        }
18879        #[inline]
18880        #[doc(hidden)]
18881        pub fn GetSamplerParameterfv_is_loaded(&self) -> bool {
18882            !self.glGetSamplerParameterfv_p.load(RELAX).is_null()
18883        }
18884        /// [glGetSamplerParameteriv](http://docs.gl/gl4/glGetSamplerParameter)(sampler, pname, params)
18885        /// * `pname` group: SamplerParameterI
18886        /// * `params` len: COMPSIZE(pname)
18887        #[cfg_attr(feature = "inline", inline)]
18888        #[cfg_attr(feature = "inline_always", inline(always))]
18889        pub unsafe fn GetSamplerParameteriv(
18890            &self,
18891            sampler: GLuint,
18892            pname: GLenum,
18893            params: *mut GLint,
18894        ) {
18895            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18896            {
18897                trace!(
18898                    "calling gl.GetSamplerParameteriv({:?}, {:#X}, {:p});",
18899                    sampler,
18900                    pname,
18901                    params
18902                );
18903            }
18904            let out = call_atomic_ptr_3arg(
18905                "glGetSamplerParameteriv",
18906                &self.glGetSamplerParameteriv_p,
18907                sampler,
18908                pname,
18909                params,
18910            );
18911            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18912            {
18913                self.automatic_glGetError("glGetSamplerParameteriv");
18914            }
18915            out
18916        }
18917        #[doc(hidden)]
18918        pub unsafe fn GetSamplerParameteriv_load_with_dyn(
18919            &self,
18920            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18921        ) -> bool {
18922            load_dyn_name_atomic_ptr(
18923                get_proc_address,
18924                b"glGetSamplerParameteriv\0",
18925                &self.glGetSamplerParameteriv_p,
18926            )
18927        }
18928        #[inline]
18929        #[doc(hidden)]
18930        pub fn GetSamplerParameteriv_is_loaded(&self) -> bool {
18931            !self.glGetSamplerParameteriv_p.load(RELAX).is_null()
18932        }
18933        /// [glGetShaderInfoLog](http://docs.gl/gl4/glGetShaderInfoLog)(shader, bufSize, length, infoLog)
18934        /// * `length` len: 1
18935        /// * `infoLog` len: bufSize
18936        #[cfg_attr(feature = "inline", inline)]
18937        #[cfg_attr(feature = "inline_always", inline(always))]
18938        pub unsafe fn GetShaderInfoLog(
18939            &self,
18940            shader: GLuint,
18941            bufSize: GLsizei,
18942            length: *mut GLsizei,
18943            infoLog: *mut GLchar,
18944        ) {
18945            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18946            {
18947                trace!(
18948                    "calling gl.GetShaderInfoLog({:?}, {:?}, {:p}, {:p});",
18949                    shader,
18950                    bufSize,
18951                    length,
18952                    infoLog
18953                );
18954            }
18955            let out = call_atomic_ptr_4arg(
18956                "glGetShaderInfoLog",
18957                &self.glGetShaderInfoLog_p,
18958                shader,
18959                bufSize,
18960                length,
18961                infoLog,
18962            );
18963            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18964            {
18965                self.automatic_glGetError("glGetShaderInfoLog");
18966            }
18967            out
18968        }
18969        #[doc(hidden)]
18970        pub unsafe fn GetShaderInfoLog_load_with_dyn(
18971            &self,
18972            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18973        ) -> bool {
18974            load_dyn_name_atomic_ptr(
18975                get_proc_address,
18976                b"glGetShaderInfoLog\0",
18977                &self.glGetShaderInfoLog_p,
18978            )
18979        }
18980        #[inline]
18981        #[doc(hidden)]
18982        pub fn GetShaderInfoLog_is_loaded(&self) -> bool {
18983            !self.glGetShaderInfoLog_p.load(RELAX).is_null()
18984        }
18985        /// [glGetShaderPrecisionFormat](http://docs.gl/gl4/glGetShaderPrecisionFormat)(shadertype, precisiontype, range, precision)
18986        /// * `shadertype` group: ShaderType
18987        /// * `precisiontype` group: PrecisionType
18988        /// * `range` len: 2
18989        /// * `precision` len: 1
18990        #[cfg_attr(feature = "inline", inline)]
18991        #[cfg_attr(feature = "inline_always", inline(always))]
18992        pub unsafe fn GetShaderPrecisionFormat(
18993            &self,
18994            shadertype: GLenum,
18995            precisiontype: GLenum,
18996            range: *mut GLint,
18997            precision: *mut GLint,
18998        ) {
18999            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19000            {
19001                trace!(
19002                    "calling gl.GetShaderPrecisionFormat({:#X}, {:#X}, {:p}, {:p});",
19003                    shadertype,
19004                    precisiontype,
19005                    range,
19006                    precision
19007                );
19008            }
19009            let out = call_atomic_ptr_4arg(
19010                "glGetShaderPrecisionFormat",
19011                &self.glGetShaderPrecisionFormat_p,
19012                shadertype,
19013                precisiontype,
19014                range,
19015                precision,
19016            );
19017            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19018            {
19019                self.automatic_glGetError("glGetShaderPrecisionFormat");
19020            }
19021            out
19022        }
19023        #[doc(hidden)]
19024        pub unsafe fn GetShaderPrecisionFormat_load_with_dyn(
19025            &self,
19026            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19027        ) -> bool {
19028            load_dyn_name_atomic_ptr(
19029                get_proc_address,
19030                b"glGetShaderPrecisionFormat\0",
19031                &self.glGetShaderPrecisionFormat_p,
19032            )
19033        }
19034        #[inline]
19035        #[doc(hidden)]
19036        pub fn GetShaderPrecisionFormat_is_loaded(&self) -> bool {
19037            !self.glGetShaderPrecisionFormat_p.load(RELAX).is_null()
19038        }
19039        /// [glGetShaderSource](http://docs.gl/gl4/glGetShaderSource)(shader, bufSize, length, source)
19040        /// * `length` len: 1
19041        /// * `source` len: bufSize
19042        #[cfg_attr(feature = "inline", inline)]
19043        #[cfg_attr(feature = "inline_always", inline(always))]
19044        pub unsafe fn GetShaderSource(
19045            &self,
19046            shader: GLuint,
19047            bufSize: GLsizei,
19048            length: *mut GLsizei,
19049            source: *mut GLchar,
19050        ) {
19051            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19052            {
19053                trace!(
19054                    "calling gl.GetShaderSource({:?}, {:?}, {:p}, {:p});",
19055                    shader,
19056                    bufSize,
19057                    length,
19058                    source
19059                );
19060            }
19061            let out = call_atomic_ptr_4arg(
19062                "glGetShaderSource",
19063                &self.glGetShaderSource_p,
19064                shader,
19065                bufSize,
19066                length,
19067                source,
19068            );
19069            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19070            {
19071                self.automatic_glGetError("glGetShaderSource");
19072            }
19073            out
19074        }
19075        #[doc(hidden)]
19076        pub unsafe fn GetShaderSource_load_with_dyn(
19077            &self,
19078            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19079        ) -> bool {
19080            load_dyn_name_atomic_ptr(
19081                get_proc_address,
19082                b"glGetShaderSource\0",
19083                &self.glGetShaderSource_p,
19084            )
19085        }
19086        #[inline]
19087        #[doc(hidden)]
19088        pub fn GetShaderSource_is_loaded(&self) -> bool {
19089            !self.glGetShaderSource_p.load(RELAX).is_null()
19090        }
19091        /// [glGetShaderiv](http://docs.gl/gl4/glGetShaderiv)(shader, pname, params)
19092        /// * `pname` group: ShaderParameterName
19093        /// * `params` len: COMPSIZE(pname)
19094        #[cfg_attr(feature = "inline", inline)]
19095        #[cfg_attr(feature = "inline_always", inline(always))]
19096        pub unsafe fn GetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) {
19097            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19098            {
19099                trace!(
19100                    "calling gl.GetShaderiv({:?}, {:#X}, {:p});",
19101                    shader,
19102                    pname,
19103                    params
19104                );
19105            }
19106            let out = call_atomic_ptr_3arg(
19107                "glGetShaderiv",
19108                &self.glGetShaderiv_p,
19109                shader,
19110                pname,
19111                params,
19112            );
19113            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19114            {
19115                self.automatic_glGetError("glGetShaderiv");
19116            }
19117            out
19118        }
19119        #[doc(hidden)]
19120        pub unsafe fn GetShaderiv_load_with_dyn(
19121            &self,
19122            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19123        ) -> bool {
19124            load_dyn_name_atomic_ptr(get_proc_address, b"glGetShaderiv\0", &self.glGetShaderiv_p)
19125        }
19126        #[inline]
19127        #[doc(hidden)]
19128        pub fn GetShaderiv_is_loaded(&self) -> bool {
19129            !self.glGetShaderiv_p.load(RELAX).is_null()
19130        }
19131        /// [glGetString](http://docs.gl/gl4/glGetString)(name)
19132        /// * `name` group: StringName
19133        /// * return value group: String
19134        #[cfg_attr(feature = "inline", inline)]
19135        #[cfg_attr(feature = "inline_always", inline(always))]
19136        pub unsafe fn GetString(&self, name: GLenum) -> *const GLubyte {
19137            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19138            {
19139                trace!("calling gl.GetString({:#X});", name);
19140            }
19141            let out = call_atomic_ptr_1arg("glGetString", &self.glGetString_p, name);
19142            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19143            {
19144                self.automatic_glGetError("glGetString");
19145            }
19146            out
19147        }
19148        #[doc(hidden)]
19149        pub unsafe fn GetString_load_with_dyn(
19150            &self,
19151            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19152        ) -> bool {
19153            load_dyn_name_atomic_ptr(get_proc_address, b"glGetString\0", &self.glGetString_p)
19154        }
19155        #[inline]
19156        #[doc(hidden)]
19157        pub fn GetString_is_loaded(&self) -> bool {
19158            !self.glGetString_p.load(RELAX).is_null()
19159        }
19160        /// [glGetStringi](http://docs.gl/gl4/glGetString)(name, index)
19161        /// * `name` group: StringName
19162        /// * return value group: String
19163        #[cfg_attr(feature = "inline", inline)]
19164        #[cfg_attr(feature = "inline_always", inline(always))]
19165        pub unsafe fn GetStringi(&self, name: GLenum, index: GLuint) -> *const GLubyte {
19166            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19167            {
19168                trace!("calling gl.GetStringi({:#X}, {:?});", name, index);
19169            }
19170            let out = call_atomic_ptr_2arg("glGetStringi", &self.glGetStringi_p, name, index);
19171            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19172            {
19173                self.automatic_glGetError("glGetStringi");
19174            }
19175            out
19176        }
19177        #[doc(hidden)]
19178        pub unsafe fn GetStringi_load_with_dyn(
19179            &self,
19180            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19181        ) -> bool {
19182            load_dyn_name_atomic_ptr(get_proc_address, b"glGetStringi\0", &self.glGetStringi_p)
19183        }
19184        #[inline]
19185        #[doc(hidden)]
19186        pub fn GetStringi_is_loaded(&self) -> bool {
19187            !self.glGetStringi_p.load(RELAX).is_null()
19188        }
19189        /// [glGetSubroutineIndex](http://docs.gl/gl4/glGetSubroutineIndex)(program, shadertype, name)
19190        /// * `shadertype` group: ShaderType
19191        #[cfg_attr(feature = "inline", inline)]
19192        #[cfg_attr(feature = "inline_always", inline(always))]
19193        pub unsafe fn GetSubroutineIndex(
19194            &self,
19195            program: GLuint,
19196            shadertype: GLenum,
19197            name: *const GLchar,
19198        ) -> GLuint {
19199            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19200            {
19201                trace!(
19202                    "calling gl.GetSubroutineIndex({:?}, {:#X}, {:p});",
19203                    program,
19204                    shadertype,
19205                    name
19206                );
19207            }
19208            let out = call_atomic_ptr_3arg(
19209                "glGetSubroutineIndex",
19210                &self.glGetSubroutineIndex_p,
19211                program,
19212                shadertype,
19213                name,
19214            );
19215            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19216            {
19217                self.automatic_glGetError("glGetSubroutineIndex");
19218            }
19219            out
19220        }
19221        #[doc(hidden)]
19222        pub unsafe fn GetSubroutineIndex_load_with_dyn(
19223            &self,
19224            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19225        ) -> bool {
19226            load_dyn_name_atomic_ptr(
19227                get_proc_address,
19228                b"glGetSubroutineIndex\0",
19229                &self.glGetSubroutineIndex_p,
19230            )
19231        }
19232        #[inline]
19233        #[doc(hidden)]
19234        pub fn GetSubroutineIndex_is_loaded(&self) -> bool {
19235            !self.glGetSubroutineIndex_p.load(RELAX).is_null()
19236        }
19237        /// [glGetSubroutineUniformLocation](http://docs.gl/gl4/glGetSubroutineUniformLocation)(program, shadertype, name)
19238        /// * `shadertype` group: ShaderType
19239        #[cfg_attr(feature = "inline", inline)]
19240        #[cfg_attr(feature = "inline_always", inline(always))]
19241        pub unsafe fn GetSubroutineUniformLocation(
19242            &self,
19243            program: GLuint,
19244            shadertype: GLenum,
19245            name: *const GLchar,
19246        ) -> GLint {
19247            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19248            {
19249                trace!(
19250                    "calling gl.GetSubroutineUniformLocation({:?}, {:#X}, {:p});",
19251                    program,
19252                    shadertype,
19253                    name
19254                );
19255            }
19256            let out = call_atomic_ptr_3arg(
19257                "glGetSubroutineUniformLocation",
19258                &self.glGetSubroutineUniformLocation_p,
19259                program,
19260                shadertype,
19261                name,
19262            );
19263            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19264            {
19265                self.automatic_glGetError("glGetSubroutineUniformLocation");
19266            }
19267            out
19268        }
19269        #[doc(hidden)]
19270        pub unsafe fn GetSubroutineUniformLocation_load_with_dyn(
19271            &self,
19272            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19273        ) -> bool {
19274            load_dyn_name_atomic_ptr(
19275                get_proc_address,
19276                b"glGetSubroutineUniformLocation\0",
19277                &self.glGetSubroutineUniformLocation_p,
19278            )
19279        }
19280        #[inline]
19281        #[doc(hidden)]
19282        pub fn GetSubroutineUniformLocation_is_loaded(&self) -> bool {
19283            !self.glGetSubroutineUniformLocation_p.load(RELAX).is_null()
19284        }
19285        /// [glGetSynciv](http://docs.gl/gl4/glGetSync)(sync, pname, count, length, values)
19286        /// * `sync` group: sync
19287        /// * `pname` group: SyncParameterName
19288        /// * `length` len: 1
19289        /// * `values` len: count
19290        #[cfg_attr(feature = "inline", inline)]
19291        #[cfg_attr(feature = "inline_always", inline(always))]
19292        pub unsafe fn GetSynciv(
19293            &self,
19294            sync: GLsync,
19295            pname: GLenum,
19296            count: GLsizei,
19297            length: *mut GLsizei,
19298            values: *mut GLint,
19299        ) {
19300            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19301            {
19302                trace!(
19303                    "calling gl.GetSynciv({:p}, {:#X}, {:?}, {:p}, {:p});",
19304                    sync,
19305                    pname,
19306                    count,
19307                    length,
19308                    values
19309                );
19310            }
19311            let out = call_atomic_ptr_5arg(
19312                "glGetSynciv",
19313                &self.glGetSynciv_p,
19314                sync,
19315                pname,
19316                count,
19317                length,
19318                values,
19319            );
19320            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19321            {
19322                self.automatic_glGetError("glGetSynciv");
19323            }
19324            out
19325        }
19326        #[doc(hidden)]
19327        pub unsafe fn GetSynciv_load_with_dyn(
19328            &self,
19329            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19330        ) -> bool {
19331            load_dyn_name_atomic_ptr(get_proc_address, b"glGetSynciv\0", &self.glGetSynciv_p)
19332        }
19333        #[inline]
19334        #[doc(hidden)]
19335        pub fn GetSynciv_is_loaded(&self) -> bool {
19336            !self.glGetSynciv_p.load(RELAX).is_null()
19337        }
19338        /// [glGetTexImage](http://docs.gl/gl4/glGetTexImage)(target, level, format, type_, pixels)
19339        /// * `target` group: TextureTarget
19340        /// * `level` group: CheckedInt32
19341        /// * `format` group: PixelFormat
19342        /// * `type_` group: PixelType
19343        /// * `pixels` len: COMPSIZE(target,level,format,type)
19344        #[cfg_attr(feature = "inline", inline)]
19345        #[cfg_attr(feature = "inline_always", inline(always))]
19346        pub unsafe fn GetTexImage(
19347            &self,
19348            target: GLenum,
19349            level: GLint,
19350            format: GLenum,
19351            type_: GLenum,
19352            pixels: *mut c_void,
19353        ) {
19354            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19355            {
19356                trace!(
19357                    "calling gl.GetTexImage({:#X}, {:?}, {:#X}, {:#X}, {:p});",
19358                    target,
19359                    level,
19360                    format,
19361                    type_,
19362                    pixels
19363                );
19364            }
19365            let out = call_atomic_ptr_5arg(
19366                "glGetTexImage",
19367                &self.glGetTexImage_p,
19368                target,
19369                level,
19370                format,
19371                type_,
19372                pixels,
19373            );
19374            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19375            {
19376                self.automatic_glGetError("glGetTexImage");
19377            }
19378            out
19379        }
19380        #[doc(hidden)]
19381        pub unsafe fn GetTexImage_load_with_dyn(
19382            &self,
19383            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19384        ) -> bool {
19385            load_dyn_name_atomic_ptr(get_proc_address, b"glGetTexImage\0", &self.glGetTexImage_p)
19386        }
19387        #[inline]
19388        #[doc(hidden)]
19389        pub fn GetTexImage_is_loaded(&self) -> bool {
19390            !self.glGetTexImage_p.load(RELAX).is_null()
19391        }
19392        /// [glGetTexLevelParameterfv](http://docs.gl/gl4/glGetTexLevelParameter)(target, level, pname, params)
19393        /// * `target` group: TextureTarget
19394        /// * `level` group: CheckedInt32
19395        /// * `pname` group: GetTextureParameter
19396        /// * `params` len: COMPSIZE(pname)
19397        #[cfg_attr(feature = "inline", inline)]
19398        #[cfg_attr(feature = "inline_always", inline(always))]
19399        pub unsafe fn GetTexLevelParameterfv(
19400            &self,
19401            target: GLenum,
19402            level: GLint,
19403            pname: GLenum,
19404            params: *mut GLfloat,
19405        ) {
19406            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19407            {
19408                trace!(
19409                    "calling gl.GetTexLevelParameterfv({:#X}, {:?}, {:#X}, {:p});",
19410                    target,
19411                    level,
19412                    pname,
19413                    params
19414                );
19415            }
19416            let out = call_atomic_ptr_4arg(
19417                "glGetTexLevelParameterfv",
19418                &self.glGetTexLevelParameterfv_p,
19419                target,
19420                level,
19421                pname,
19422                params,
19423            );
19424            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19425            {
19426                self.automatic_glGetError("glGetTexLevelParameterfv");
19427            }
19428            out
19429        }
19430        #[doc(hidden)]
19431        pub unsafe fn GetTexLevelParameterfv_load_with_dyn(
19432            &self,
19433            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19434        ) -> bool {
19435            load_dyn_name_atomic_ptr(
19436                get_proc_address,
19437                b"glGetTexLevelParameterfv\0",
19438                &self.glGetTexLevelParameterfv_p,
19439            )
19440        }
19441        #[inline]
19442        #[doc(hidden)]
19443        pub fn GetTexLevelParameterfv_is_loaded(&self) -> bool {
19444            !self.glGetTexLevelParameterfv_p.load(RELAX).is_null()
19445        }
19446        /// [glGetTexLevelParameteriv](http://docs.gl/gl4/glGetTexLevelParameter)(target, level, pname, params)
19447        /// * `target` group: TextureTarget
19448        /// * `level` group: CheckedInt32
19449        /// * `pname` group: GetTextureParameter
19450        /// * `params` len: COMPSIZE(pname)
19451        #[cfg_attr(feature = "inline", inline)]
19452        #[cfg_attr(feature = "inline_always", inline(always))]
19453        pub unsafe fn GetTexLevelParameteriv(
19454            &self,
19455            target: GLenum,
19456            level: GLint,
19457            pname: GLenum,
19458            params: *mut GLint,
19459        ) {
19460            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19461            {
19462                trace!(
19463                    "calling gl.GetTexLevelParameteriv({:#X}, {:?}, {:#X}, {:p});",
19464                    target,
19465                    level,
19466                    pname,
19467                    params
19468                );
19469            }
19470            let out = call_atomic_ptr_4arg(
19471                "glGetTexLevelParameteriv",
19472                &self.glGetTexLevelParameteriv_p,
19473                target,
19474                level,
19475                pname,
19476                params,
19477            );
19478            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19479            {
19480                self.automatic_glGetError("glGetTexLevelParameteriv");
19481            }
19482            out
19483        }
19484        #[doc(hidden)]
19485        pub unsafe fn GetTexLevelParameteriv_load_with_dyn(
19486            &self,
19487            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19488        ) -> bool {
19489            load_dyn_name_atomic_ptr(
19490                get_proc_address,
19491                b"glGetTexLevelParameteriv\0",
19492                &self.glGetTexLevelParameteriv_p,
19493            )
19494        }
19495        #[inline]
19496        #[doc(hidden)]
19497        pub fn GetTexLevelParameteriv_is_loaded(&self) -> bool {
19498            !self.glGetTexLevelParameteriv_p.load(RELAX).is_null()
19499        }
19500        /// [glGetTexParameterIiv](http://docs.gl/gl4/glGetTexParameter)(target, pname, params)
19501        /// * `target` group: TextureTarget
19502        /// * `pname` group: GetTextureParameter
19503        /// * `params` len: COMPSIZE(pname)
19504        #[cfg_attr(feature = "inline", inline)]
19505        #[cfg_attr(feature = "inline_always", inline(always))]
19506        pub unsafe fn GetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) {
19507            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19508            {
19509                trace!(
19510                    "calling gl.GetTexParameterIiv({:#X}, {:#X}, {:p});",
19511                    target,
19512                    pname,
19513                    params
19514                );
19515            }
19516            let out = call_atomic_ptr_3arg(
19517                "glGetTexParameterIiv",
19518                &self.glGetTexParameterIiv_p,
19519                target,
19520                pname,
19521                params,
19522            );
19523            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19524            {
19525                self.automatic_glGetError("glGetTexParameterIiv");
19526            }
19527            out
19528        }
19529        #[doc(hidden)]
19530        pub unsafe fn GetTexParameterIiv_load_with_dyn(
19531            &self,
19532            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19533        ) -> bool {
19534            load_dyn_name_atomic_ptr(
19535                get_proc_address,
19536                b"glGetTexParameterIiv\0",
19537                &self.glGetTexParameterIiv_p,
19538            )
19539        }
19540        #[inline]
19541        #[doc(hidden)]
19542        pub fn GetTexParameterIiv_is_loaded(&self) -> bool {
19543            !self.glGetTexParameterIiv_p.load(RELAX).is_null()
19544        }
19545        /// [glGetTexParameterIuiv](http://docs.gl/gl4/glGetTexParameter)(target, pname, params)
19546        /// * `target` group: TextureTarget
19547        /// * `pname` group: GetTextureParameter
19548        /// * `params` len: COMPSIZE(pname)
19549        #[cfg_attr(feature = "inline", inline)]
19550        #[cfg_attr(feature = "inline_always", inline(always))]
19551        pub unsafe fn GetTexParameterIuiv(
19552            &self,
19553            target: GLenum,
19554            pname: GLenum,
19555            params: *mut GLuint,
19556        ) {
19557            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19558            {
19559                trace!(
19560                    "calling gl.GetTexParameterIuiv({:#X}, {:#X}, {:p});",
19561                    target,
19562                    pname,
19563                    params
19564                );
19565            }
19566            let out = call_atomic_ptr_3arg(
19567                "glGetTexParameterIuiv",
19568                &self.glGetTexParameterIuiv_p,
19569                target,
19570                pname,
19571                params,
19572            );
19573            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19574            {
19575                self.automatic_glGetError("glGetTexParameterIuiv");
19576            }
19577            out
19578        }
19579        #[doc(hidden)]
19580        pub unsafe fn GetTexParameterIuiv_load_with_dyn(
19581            &self,
19582            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19583        ) -> bool {
19584            load_dyn_name_atomic_ptr(
19585                get_proc_address,
19586                b"glGetTexParameterIuiv\0",
19587                &self.glGetTexParameterIuiv_p,
19588            )
19589        }
19590        #[inline]
19591        #[doc(hidden)]
19592        pub fn GetTexParameterIuiv_is_loaded(&self) -> bool {
19593            !self.glGetTexParameterIuiv_p.load(RELAX).is_null()
19594        }
19595        /// [glGetTexParameterfv](http://docs.gl/gl4/glGetTexParameter)(target, pname, params)
19596        /// * `target` group: TextureTarget
19597        /// * `pname` group: GetTextureParameter
19598        /// * `params` len: COMPSIZE(pname)
19599        #[cfg_attr(feature = "inline", inline)]
19600        #[cfg_attr(feature = "inline_always", inline(always))]
19601        pub unsafe fn GetTexParameterfv(
19602            &self,
19603            target: GLenum,
19604            pname: GLenum,
19605            params: *mut GLfloat,
19606        ) {
19607            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19608            {
19609                trace!(
19610                    "calling gl.GetTexParameterfv({:#X}, {:#X}, {:p});",
19611                    target,
19612                    pname,
19613                    params
19614                );
19615            }
19616            let out = call_atomic_ptr_3arg(
19617                "glGetTexParameterfv",
19618                &self.glGetTexParameterfv_p,
19619                target,
19620                pname,
19621                params,
19622            );
19623            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19624            {
19625                self.automatic_glGetError("glGetTexParameterfv");
19626            }
19627            out
19628        }
19629        #[doc(hidden)]
19630        pub unsafe fn GetTexParameterfv_load_with_dyn(
19631            &self,
19632            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19633        ) -> bool {
19634            load_dyn_name_atomic_ptr(
19635                get_proc_address,
19636                b"glGetTexParameterfv\0",
19637                &self.glGetTexParameterfv_p,
19638            )
19639        }
19640        #[inline]
19641        #[doc(hidden)]
19642        pub fn GetTexParameterfv_is_loaded(&self) -> bool {
19643            !self.glGetTexParameterfv_p.load(RELAX).is_null()
19644        }
19645        /// [glGetTexParameteriv](http://docs.gl/gl4/glGetTexParameter)(target, pname, params)
19646        /// * `target` group: TextureTarget
19647        /// * `pname` group: GetTextureParameter
19648        /// * `params` len: COMPSIZE(pname)
19649        #[cfg_attr(feature = "inline", inline)]
19650        #[cfg_attr(feature = "inline_always", inline(always))]
19651        pub unsafe fn GetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) {
19652            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19653            {
19654                trace!(
19655                    "calling gl.GetTexParameteriv({:#X}, {:#X}, {:p});",
19656                    target,
19657                    pname,
19658                    params
19659                );
19660            }
19661            let out = call_atomic_ptr_3arg(
19662                "glGetTexParameteriv",
19663                &self.glGetTexParameteriv_p,
19664                target,
19665                pname,
19666                params,
19667            );
19668            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19669            {
19670                self.automatic_glGetError("glGetTexParameteriv");
19671            }
19672            out
19673        }
19674        #[doc(hidden)]
19675        pub unsafe fn GetTexParameteriv_load_with_dyn(
19676            &self,
19677            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19678        ) -> bool {
19679            load_dyn_name_atomic_ptr(
19680                get_proc_address,
19681                b"glGetTexParameteriv\0",
19682                &self.glGetTexParameteriv_p,
19683            )
19684        }
19685        #[inline]
19686        #[doc(hidden)]
19687        pub fn GetTexParameteriv_is_loaded(&self) -> bool {
19688            !self.glGetTexParameteriv_p.load(RELAX).is_null()
19689        }
19690        /// [glGetTextureImage](http://docs.gl/gl4/glGetTextureImage)(texture, level, format, type_, bufSize, pixels)
19691        /// * `format` group: PixelFormat
19692        /// * `type_` group: PixelType
19693        #[cfg_attr(feature = "inline", inline)]
19694        #[cfg_attr(feature = "inline_always", inline(always))]
19695        pub unsafe fn GetTextureImage(
19696            &self,
19697            texture: GLuint,
19698            level: GLint,
19699            format: GLenum,
19700            type_: GLenum,
19701            bufSize: GLsizei,
19702            pixels: *mut c_void,
19703        ) {
19704            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19705            {
19706                trace!(
19707                    "calling gl.GetTextureImage({:?}, {:?}, {:#X}, {:#X}, {:?}, {:p});",
19708                    texture,
19709                    level,
19710                    format,
19711                    type_,
19712                    bufSize,
19713                    pixels
19714                );
19715            }
19716            let out = call_atomic_ptr_6arg(
19717                "glGetTextureImage",
19718                &self.glGetTextureImage_p,
19719                texture,
19720                level,
19721                format,
19722                type_,
19723                bufSize,
19724                pixels,
19725            );
19726            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19727            {
19728                self.automatic_glGetError("glGetTextureImage");
19729            }
19730            out
19731        }
19732        #[doc(hidden)]
19733        pub unsafe fn GetTextureImage_load_with_dyn(
19734            &self,
19735            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19736        ) -> bool {
19737            load_dyn_name_atomic_ptr(
19738                get_proc_address,
19739                b"glGetTextureImage\0",
19740                &self.glGetTextureImage_p,
19741            )
19742        }
19743        #[inline]
19744        #[doc(hidden)]
19745        pub fn GetTextureImage_is_loaded(&self) -> bool {
19746            !self.glGetTextureImage_p.load(RELAX).is_null()
19747        }
19748        /// [glGetTextureLevelParameterfv](http://docs.gl/gl4/glGetTextureLevelParameter)(texture, level, pname, params)
19749        /// * `pname` group: GetTextureParameter
19750        #[cfg_attr(feature = "inline", inline)]
19751        #[cfg_attr(feature = "inline_always", inline(always))]
19752        pub unsafe fn GetTextureLevelParameterfv(
19753            &self,
19754            texture: GLuint,
19755            level: GLint,
19756            pname: GLenum,
19757            params: *mut GLfloat,
19758        ) {
19759            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19760            {
19761                trace!(
19762                    "calling gl.GetTextureLevelParameterfv({:?}, {:?}, {:#X}, {:p});",
19763                    texture,
19764                    level,
19765                    pname,
19766                    params
19767                );
19768            }
19769            let out = call_atomic_ptr_4arg(
19770                "glGetTextureLevelParameterfv",
19771                &self.glGetTextureLevelParameterfv_p,
19772                texture,
19773                level,
19774                pname,
19775                params,
19776            );
19777            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19778            {
19779                self.automatic_glGetError("glGetTextureLevelParameterfv");
19780            }
19781            out
19782        }
19783        #[doc(hidden)]
19784        pub unsafe fn GetTextureLevelParameterfv_load_with_dyn(
19785            &self,
19786            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19787        ) -> bool {
19788            load_dyn_name_atomic_ptr(
19789                get_proc_address,
19790                b"glGetTextureLevelParameterfv\0",
19791                &self.glGetTextureLevelParameterfv_p,
19792            )
19793        }
19794        #[inline]
19795        #[doc(hidden)]
19796        pub fn GetTextureLevelParameterfv_is_loaded(&self) -> bool {
19797            !self.glGetTextureLevelParameterfv_p.load(RELAX).is_null()
19798        }
19799        /// [glGetTextureLevelParameteriv](http://docs.gl/gl4/glGetTextureLevelParameter)(texture, level, pname, params)
19800        /// * `pname` group: GetTextureParameter
19801        #[cfg_attr(feature = "inline", inline)]
19802        #[cfg_attr(feature = "inline_always", inline(always))]
19803        pub unsafe fn GetTextureLevelParameteriv(
19804            &self,
19805            texture: GLuint,
19806            level: GLint,
19807            pname: GLenum,
19808            params: *mut GLint,
19809        ) {
19810            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19811            {
19812                trace!(
19813                    "calling gl.GetTextureLevelParameteriv({:?}, {:?}, {:#X}, {:p});",
19814                    texture,
19815                    level,
19816                    pname,
19817                    params
19818                );
19819            }
19820            let out = call_atomic_ptr_4arg(
19821                "glGetTextureLevelParameteriv",
19822                &self.glGetTextureLevelParameteriv_p,
19823                texture,
19824                level,
19825                pname,
19826                params,
19827            );
19828            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19829            {
19830                self.automatic_glGetError("glGetTextureLevelParameteriv");
19831            }
19832            out
19833        }
19834        #[doc(hidden)]
19835        pub unsafe fn GetTextureLevelParameteriv_load_with_dyn(
19836            &self,
19837            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19838        ) -> bool {
19839            load_dyn_name_atomic_ptr(
19840                get_proc_address,
19841                b"glGetTextureLevelParameteriv\0",
19842                &self.glGetTextureLevelParameteriv_p,
19843            )
19844        }
19845        #[inline]
19846        #[doc(hidden)]
19847        pub fn GetTextureLevelParameteriv_is_loaded(&self) -> bool {
19848            !self.glGetTextureLevelParameteriv_p.load(RELAX).is_null()
19849        }
19850        /// [glGetTextureParameterIiv](http://docs.gl/gl4/glGetTextureParameter)(texture, pname, params)
19851        /// * `pname` group: GetTextureParameter
19852        #[cfg_attr(feature = "inline", inline)]
19853        #[cfg_attr(feature = "inline_always", inline(always))]
19854        pub unsafe fn GetTextureParameterIiv(
19855            &self,
19856            texture: GLuint,
19857            pname: GLenum,
19858            params: *mut GLint,
19859        ) {
19860            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19861            {
19862                trace!(
19863                    "calling gl.GetTextureParameterIiv({:?}, {:#X}, {:p});",
19864                    texture,
19865                    pname,
19866                    params
19867                );
19868            }
19869            let out = call_atomic_ptr_3arg(
19870                "glGetTextureParameterIiv",
19871                &self.glGetTextureParameterIiv_p,
19872                texture,
19873                pname,
19874                params,
19875            );
19876            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19877            {
19878                self.automatic_glGetError("glGetTextureParameterIiv");
19879            }
19880            out
19881        }
19882        #[doc(hidden)]
19883        pub unsafe fn GetTextureParameterIiv_load_with_dyn(
19884            &self,
19885            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19886        ) -> bool {
19887            load_dyn_name_atomic_ptr(
19888                get_proc_address,
19889                b"glGetTextureParameterIiv\0",
19890                &self.glGetTextureParameterIiv_p,
19891            )
19892        }
19893        #[inline]
19894        #[doc(hidden)]
19895        pub fn GetTextureParameterIiv_is_loaded(&self) -> bool {
19896            !self.glGetTextureParameterIiv_p.load(RELAX).is_null()
19897        }
19898        /// [glGetTextureParameterIuiv](http://docs.gl/gl4/glGetTextureParameter)(texture, pname, params)
19899        /// * `pname` group: GetTextureParameter
19900        #[cfg_attr(feature = "inline", inline)]
19901        #[cfg_attr(feature = "inline_always", inline(always))]
19902        pub unsafe fn GetTextureParameterIuiv(
19903            &self,
19904            texture: GLuint,
19905            pname: GLenum,
19906            params: *mut GLuint,
19907        ) {
19908            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19909            {
19910                trace!(
19911                    "calling gl.GetTextureParameterIuiv({:?}, {:#X}, {:p});",
19912                    texture,
19913                    pname,
19914                    params
19915                );
19916            }
19917            let out = call_atomic_ptr_3arg(
19918                "glGetTextureParameterIuiv",
19919                &self.glGetTextureParameterIuiv_p,
19920                texture,
19921                pname,
19922                params,
19923            );
19924            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19925            {
19926                self.automatic_glGetError("glGetTextureParameterIuiv");
19927            }
19928            out
19929        }
19930        #[doc(hidden)]
19931        pub unsafe fn GetTextureParameterIuiv_load_with_dyn(
19932            &self,
19933            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19934        ) -> bool {
19935            load_dyn_name_atomic_ptr(
19936                get_proc_address,
19937                b"glGetTextureParameterIuiv\0",
19938                &self.glGetTextureParameterIuiv_p,
19939            )
19940        }
19941        #[inline]
19942        #[doc(hidden)]
19943        pub fn GetTextureParameterIuiv_is_loaded(&self) -> bool {
19944            !self.glGetTextureParameterIuiv_p.load(RELAX).is_null()
19945        }
19946        /// [glGetTextureParameterfv](http://docs.gl/gl4/glGetTextureParameter)(texture, pname, params)
19947        /// * `pname` group: GetTextureParameter
19948        #[cfg_attr(feature = "inline", inline)]
19949        #[cfg_attr(feature = "inline_always", inline(always))]
19950        pub unsafe fn GetTextureParameterfv(
19951            &self,
19952            texture: GLuint,
19953            pname: GLenum,
19954            params: *mut GLfloat,
19955        ) {
19956            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19957            {
19958                trace!(
19959                    "calling gl.GetTextureParameterfv({:?}, {:#X}, {:p});",
19960                    texture,
19961                    pname,
19962                    params
19963                );
19964            }
19965            let out = call_atomic_ptr_3arg(
19966                "glGetTextureParameterfv",
19967                &self.glGetTextureParameterfv_p,
19968                texture,
19969                pname,
19970                params,
19971            );
19972            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19973            {
19974                self.automatic_glGetError("glGetTextureParameterfv");
19975            }
19976            out
19977        }
19978        #[doc(hidden)]
19979        pub unsafe fn GetTextureParameterfv_load_with_dyn(
19980            &self,
19981            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19982        ) -> bool {
19983            load_dyn_name_atomic_ptr(
19984                get_proc_address,
19985                b"glGetTextureParameterfv\0",
19986                &self.glGetTextureParameterfv_p,
19987            )
19988        }
19989        #[inline]
19990        #[doc(hidden)]
19991        pub fn GetTextureParameterfv_is_loaded(&self) -> bool {
19992            !self.glGetTextureParameterfv_p.load(RELAX).is_null()
19993        }
19994        /// [glGetTextureParameteriv](http://docs.gl/gl4/glGetTextureParameter)(texture, pname, params)
19995        /// * `pname` group: GetTextureParameter
19996        #[cfg_attr(feature = "inline", inline)]
19997        #[cfg_attr(feature = "inline_always", inline(always))]
19998        pub unsafe fn GetTextureParameteriv(
19999            &self,
20000            texture: GLuint,
20001            pname: GLenum,
20002            params: *mut GLint,
20003        ) {
20004            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20005            {
20006                trace!(
20007                    "calling gl.GetTextureParameteriv({:?}, {:#X}, {:p});",
20008                    texture,
20009                    pname,
20010                    params
20011                );
20012            }
20013            let out = call_atomic_ptr_3arg(
20014                "glGetTextureParameteriv",
20015                &self.glGetTextureParameteriv_p,
20016                texture,
20017                pname,
20018                params,
20019            );
20020            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20021            {
20022                self.automatic_glGetError("glGetTextureParameteriv");
20023            }
20024            out
20025        }
20026        #[doc(hidden)]
20027        pub unsafe fn GetTextureParameteriv_load_with_dyn(
20028            &self,
20029            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20030        ) -> bool {
20031            load_dyn_name_atomic_ptr(
20032                get_proc_address,
20033                b"glGetTextureParameteriv\0",
20034                &self.glGetTextureParameteriv_p,
20035            )
20036        }
20037        #[inline]
20038        #[doc(hidden)]
20039        pub fn GetTextureParameteriv_is_loaded(&self) -> bool {
20040            !self.glGetTextureParameteriv_p.load(RELAX).is_null()
20041        }
20042        /// [glGetTextureSubImage](http://docs.gl/gl4/glGetTextureSubImage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, bufSize, pixels)
20043        /// * `format` group: PixelFormat
20044        /// * `type_` group: PixelType
20045        #[cfg_attr(feature = "inline", inline)]
20046        #[cfg_attr(feature = "inline_always", inline(always))]
20047        pub unsafe fn GetTextureSubImage(
20048            &self,
20049            texture: GLuint,
20050            level: GLint,
20051            xoffset: GLint,
20052            yoffset: GLint,
20053            zoffset: GLint,
20054            width: GLsizei,
20055            height: GLsizei,
20056            depth: GLsizei,
20057            format: GLenum,
20058            type_: GLenum,
20059            bufSize: GLsizei,
20060            pixels: *mut c_void,
20061        ) {
20062            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20063            {
20064                trace!("calling gl.GetTextureSubImage({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:?}, {:p});", texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, bufSize, pixels);
20065            }
20066            let out = call_atomic_ptr_12arg(
20067                "glGetTextureSubImage",
20068                &self.glGetTextureSubImage_p,
20069                texture,
20070                level,
20071                xoffset,
20072                yoffset,
20073                zoffset,
20074                width,
20075                height,
20076                depth,
20077                format,
20078                type_,
20079                bufSize,
20080                pixels,
20081            );
20082            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20083            {
20084                self.automatic_glGetError("glGetTextureSubImage");
20085            }
20086            out
20087        }
20088        #[doc(hidden)]
20089        pub unsafe fn GetTextureSubImage_load_with_dyn(
20090            &self,
20091            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20092        ) -> bool {
20093            load_dyn_name_atomic_ptr(
20094                get_proc_address,
20095                b"glGetTextureSubImage\0",
20096                &self.glGetTextureSubImage_p,
20097            )
20098        }
20099        #[inline]
20100        #[doc(hidden)]
20101        pub fn GetTextureSubImage_is_loaded(&self) -> bool {
20102            !self.glGetTextureSubImage_p.load(RELAX).is_null()
20103        }
20104        /// [glGetTransformFeedbackVarying](http://docs.gl/gl4/glGetTransformFeedbackVarying)(program, index, bufSize, length, size, type_, name)
20105        /// * `length` len: 1
20106        /// * `size` len: 1
20107        /// * `type_` group: AttributeType
20108        /// * `type_` len: 1
20109        /// * `name` len: bufSize
20110        #[cfg_attr(feature = "inline", inline)]
20111        #[cfg_attr(feature = "inline_always", inline(always))]
20112        pub unsafe fn GetTransformFeedbackVarying(
20113            &self,
20114            program: GLuint,
20115            index: GLuint,
20116            bufSize: GLsizei,
20117            length: *mut GLsizei,
20118            size: *mut GLsizei,
20119            type_: *mut GLenum,
20120            name: *mut GLchar,
20121        ) {
20122            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20123            {
20124                trace!("calling gl.GetTransformFeedbackVarying({:?}, {:?}, {:?}, {:p}, {:p}, {:p}, {:p});", program, index, bufSize, length, size, type_, name);
20125            }
20126            let out = call_atomic_ptr_7arg(
20127                "glGetTransformFeedbackVarying",
20128                &self.glGetTransformFeedbackVarying_p,
20129                program,
20130                index,
20131                bufSize,
20132                length,
20133                size,
20134                type_,
20135                name,
20136            );
20137            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20138            {
20139                self.automatic_glGetError("glGetTransformFeedbackVarying");
20140            }
20141            out
20142        }
20143        #[doc(hidden)]
20144        pub unsafe fn GetTransformFeedbackVarying_load_with_dyn(
20145            &self,
20146            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20147        ) -> bool {
20148            load_dyn_name_atomic_ptr(
20149                get_proc_address,
20150                b"glGetTransformFeedbackVarying\0",
20151                &self.glGetTransformFeedbackVarying_p,
20152            )
20153        }
20154        #[inline]
20155        #[doc(hidden)]
20156        pub fn GetTransformFeedbackVarying_is_loaded(&self) -> bool {
20157            !self.glGetTransformFeedbackVarying_p.load(RELAX).is_null()
20158        }
20159        /// [glGetTransformFeedbacki64_v](http://docs.gl/gl4/glGetTransformFeedbacki64_v)(xfb, pname, index, param)
20160        /// * `pname` group: TransformFeedbackPName
20161        #[cfg_attr(feature = "inline", inline)]
20162        #[cfg_attr(feature = "inline_always", inline(always))]
20163        pub unsafe fn GetTransformFeedbacki64_v(
20164            &self,
20165            xfb: GLuint,
20166            pname: GLenum,
20167            index: GLuint,
20168            param: *mut GLint64,
20169        ) {
20170            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20171            {
20172                trace!(
20173                    "calling gl.GetTransformFeedbacki64_v({:?}, {:#X}, {:?}, {:p});",
20174                    xfb,
20175                    pname,
20176                    index,
20177                    param
20178                );
20179            }
20180            let out = call_atomic_ptr_4arg(
20181                "glGetTransformFeedbacki64_v",
20182                &self.glGetTransformFeedbacki64_v_p,
20183                xfb,
20184                pname,
20185                index,
20186                param,
20187            );
20188            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20189            {
20190                self.automatic_glGetError("glGetTransformFeedbacki64_v");
20191            }
20192            out
20193        }
20194        #[doc(hidden)]
20195        pub unsafe fn GetTransformFeedbacki64_v_load_with_dyn(
20196            &self,
20197            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20198        ) -> bool {
20199            load_dyn_name_atomic_ptr(
20200                get_proc_address,
20201                b"glGetTransformFeedbacki64_v\0",
20202                &self.glGetTransformFeedbacki64_v_p,
20203            )
20204        }
20205        #[inline]
20206        #[doc(hidden)]
20207        pub fn GetTransformFeedbacki64_v_is_loaded(&self) -> bool {
20208            !self.glGetTransformFeedbacki64_v_p.load(RELAX).is_null()
20209        }
20210        /// [glGetTransformFeedbacki_v](http://docs.gl/gl4/glGetTransformFeedbacki_v)(xfb, pname, index, param)
20211        /// * `pname` group: TransformFeedbackPName
20212        #[cfg_attr(feature = "inline", inline)]
20213        #[cfg_attr(feature = "inline_always", inline(always))]
20214        pub unsafe fn GetTransformFeedbacki_v(
20215            &self,
20216            xfb: GLuint,
20217            pname: GLenum,
20218            index: GLuint,
20219            param: *mut GLint,
20220        ) {
20221            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20222            {
20223                trace!(
20224                    "calling gl.GetTransformFeedbacki_v({:?}, {:#X}, {:?}, {:p});",
20225                    xfb,
20226                    pname,
20227                    index,
20228                    param
20229                );
20230            }
20231            let out = call_atomic_ptr_4arg(
20232                "glGetTransformFeedbacki_v",
20233                &self.glGetTransformFeedbacki_v_p,
20234                xfb,
20235                pname,
20236                index,
20237                param,
20238            );
20239            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20240            {
20241                self.automatic_glGetError("glGetTransformFeedbacki_v");
20242            }
20243            out
20244        }
20245        #[doc(hidden)]
20246        pub unsafe fn GetTransformFeedbacki_v_load_with_dyn(
20247            &self,
20248            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20249        ) -> bool {
20250            load_dyn_name_atomic_ptr(
20251                get_proc_address,
20252                b"glGetTransformFeedbacki_v\0",
20253                &self.glGetTransformFeedbacki_v_p,
20254            )
20255        }
20256        #[inline]
20257        #[doc(hidden)]
20258        pub fn GetTransformFeedbacki_v_is_loaded(&self) -> bool {
20259            !self.glGetTransformFeedbacki_v_p.load(RELAX).is_null()
20260        }
20261        /// [glGetTransformFeedbackiv](http://docs.gl/gl4/glGetTransformFeedback)(xfb, pname, param)
20262        /// * `pname` group: TransformFeedbackPName
20263        #[cfg_attr(feature = "inline", inline)]
20264        #[cfg_attr(feature = "inline_always", inline(always))]
20265        pub unsafe fn GetTransformFeedbackiv(&self, xfb: GLuint, pname: GLenum, param: *mut GLint) {
20266            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20267            {
20268                trace!(
20269                    "calling gl.GetTransformFeedbackiv({:?}, {:#X}, {:p});",
20270                    xfb,
20271                    pname,
20272                    param
20273                );
20274            }
20275            let out = call_atomic_ptr_3arg(
20276                "glGetTransformFeedbackiv",
20277                &self.glGetTransformFeedbackiv_p,
20278                xfb,
20279                pname,
20280                param,
20281            );
20282            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20283            {
20284                self.automatic_glGetError("glGetTransformFeedbackiv");
20285            }
20286            out
20287        }
20288        #[doc(hidden)]
20289        pub unsafe fn GetTransformFeedbackiv_load_with_dyn(
20290            &self,
20291            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20292        ) -> bool {
20293            load_dyn_name_atomic_ptr(
20294                get_proc_address,
20295                b"glGetTransformFeedbackiv\0",
20296                &self.glGetTransformFeedbackiv_p,
20297            )
20298        }
20299        #[inline]
20300        #[doc(hidden)]
20301        pub fn GetTransformFeedbackiv_is_loaded(&self) -> bool {
20302            !self.glGetTransformFeedbackiv_p.load(RELAX).is_null()
20303        }
20304        /// [glGetUniformBlockIndex](http://docs.gl/gl4/glGetUniformBlockIndex)(program, uniformBlockName)
20305        /// * `uniformBlockName` len: COMPSIZE()
20306        #[cfg_attr(feature = "inline", inline)]
20307        #[cfg_attr(feature = "inline_always", inline(always))]
20308        pub unsafe fn GetUniformBlockIndex(
20309            &self,
20310            program: GLuint,
20311            uniformBlockName: *const GLchar,
20312        ) -> GLuint {
20313            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20314            {
20315                trace!(
20316                    "calling gl.GetUniformBlockIndex({:?}, {:p});",
20317                    program,
20318                    uniformBlockName
20319                );
20320            }
20321            let out = call_atomic_ptr_2arg(
20322                "glGetUniformBlockIndex",
20323                &self.glGetUniformBlockIndex_p,
20324                program,
20325                uniformBlockName,
20326            );
20327            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20328            {
20329                self.automatic_glGetError("glGetUniformBlockIndex");
20330            }
20331            out
20332        }
20333        #[doc(hidden)]
20334        pub unsafe fn GetUniformBlockIndex_load_with_dyn(
20335            &self,
20336            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20337        ) -> bool {
20338            load_dyn_name_atomic_ptr(
20339                get_proc_address,
20340                b"glGetUniformBlockIndex\0",
20341                &self.glGetUniformBlockIndex_p,
20342            )
20343        }
20344        #[inline]
20345        #[doc(hidden)]
20346        pub fn GetUniformBlockIndex_is_loaded(&self) -> bool {
20347            !self.glGetUniformBlockIndex_p.load(RELAX).is_null()
20348        }
20349        /// [glGetUniformIndices](http://docs.gl/gl4/glGetUniformIndices)(program, uniformCount, uniformNames, uniformIndices)
20350        /// * `uniformNames` len: COMPSIZE(uniformCount)
20351        /// * `uniformIndices` len: COMPSIZE(uniformCount)
20352        #[cfg_attr(feature = "inline", inline)]
20353        #[cfg_attr(feature = "inline_always", inline(always))]
20354        pub unsafe fn GetUniformIndices(
20355            &self,
20356            program: GLuint,
20357            uniformCount: GLsizei,
20358            uniformNames: *const *const GLchar,
20359            uniformIndices: *mut GLuint,
20360        ) {
20361            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20362            {
20363                trace!(
20364                    "calling gl.GetUniformIndices({:?}, {:?}, {:p}, {:p});",
20365                    program,
20366                    uniformCount,
20367                    uniformNames,
20368                    uniformIndices
20369                );
20370            }
20371            let out = call_atomic_ptr_4arg(
20372                "glGetUniformIndices",
20373                &self.glGetUniformIndices_p,
20374                program,
20375                uniformCount,
20376                uniformNames,
20377                uniformIndices,
20378            );
20379            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20380            {
20381                self.automatic_glGetError("glGetUniformIndices");
20382            }
20383            out
20384        }
20385        #[doc(hidden)]
20386        pub unsafe fn GetUniformIndices_load_with_dyn(
20387            &self,
20388            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20389        ) -> bool {
20390            load_dyn_name_atomic_ptr(
20391                get_proc_address,
20392                b"glGetUniformIndices\0",
20393                &self.glGetUniformIndices_p,
20394            )
20395        }
20396        #[inline]
20397        #[doc(hidden)]
20398        pub fn GetUniformIndices_is_loaded(&self) -> bool {
20399            !self.glGetUniformIndices_p.load(RELAX).is_null()
20400        }
20401        /// [glGetUniformLocation](http://docs.gl/gl4/glGetUniformLocation)(program, name)
20402        #[cfg_attr(feature = "inline", inline)]
20403        #[cfg_attr(feature = "inline_always", inline(always))]
20404        pub unsafe fn GetUniformLocation(&self, program: GLuint, name: *const GLchar) -> GLint {
20405            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20406            {
20407                trace!("calling gl.GetUniformLocation({:?}, {:p});", program, name);
20408            }
20409            let out = call_atomic_ptr_2arg(
20410                "glGetUniformLocation",
20411                &self.glGetUniformLocation_p,
20412                program,
20413                name,
20414            );
20415            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20416            {
20417                self.automatic_glGetError("glGetUniformLocation");
20418            }
20419            out
20420        }
20421        #[doc(hidden)]
20422        pub unsafe fn GetUniformLocation_load_with_dyn(
20423            &self,
20424            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20425        ) -> bool {
20426            load_dyn_name_atomic_ptr(
20427                get_proc_address,
20428                b"glGetUniformLocation\0",
20429                &self.glGetUniformLocation_p,
20430            )
20431        }
20432        #[inline]
20433        #[doc(hidden)]
20434        pub fn GetUniformLocation_is_loaded(&self) -> bool {
20435            !self.glGetUniformLocation_p.load(RELAX).is_null()
20436        }
20437        /// [glGetUniformSubroutineuiv](http://docs.gl/gl4/glGetUniformSubroutine)(shadertype, location, params)
20438        /// * `shadertype` group: ShaderType
20439        /// * `params` len: 1
20440        #[cfg_attr(feature = "inline", inline)]
20441        #[cfg_attr(feature = "inline_always", inline(always))]
20442        pub unsafe fn GetUniformSubroutineuiv(
20443            &self,
20444            shadertype: GLenum,
20445            location: GLint,
20446            params: *mut GLuint,
20447        ) {
20448            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20449            {
20450                trace!(
20451                    "calling gl.GetUniformSubroutineuiv({:#X}, {:?}, {:p});",
20452                    shadertype,
20453                    location,
20454                    params
20455                );
20456            }
20457            let out = call_atomic_ptr_3arg(
20458                "glGetUniformSubroutineuiv",
20459                &self.glGetUniformSubroutineuiv_p,
20460                shadertype,
20461                location,
20462                params,
20463            );
20464            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20465            {
20466                self.automatic_glGetError("glGetUniformSubroutineuiv");
20467            }
20468            out
20469        }
20470        #[doc(hidden)]
20471        pub unsafe fn GetUniformSubroutineuiv_load_with_dyn(
20472            &self,
20473            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20474        ) -> bool {
20475            load_dyn_name_atomic_ptr(
20476                get_proc_address,
20477                b"glGetUniformSubroutineuiv\0",
20478                &self.glGetUniformSubroutineuiv_p,
20479            )
20480        }
20481        #[inline]
20482        #[doc(hidden)]
20483        pub fn GetUniformSubroutineuiv_is_loaded(&self) -> bool {
20484            !self.glGetUniformSubroutineuiv_p.load(RELAX).is_null()
20485        }
20486        /// [glGetUniformdv](http://docs.gl/gl4/glGetUniformdv)(program, location, params)
20487        /// * `params` len: COMPSIZE(program,location)
20488        #[cfg_attr(feature = "inline", inline)]
20489        #[cfg_attr(feature = "inline_always", inline(always))]
20490        pub unsafe fn GetUniformdv(&self, program: GLuint, location: GLint, params: *mut GLdouble) {
20491            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20492            {
20493                trace!(
20494                    "calling gl.GetUniformdv({:?}, {:?}, {:p});",
20495                    program,
20496                    location,
20497                    params
20498                );
20499            }
20500            let out = call_atomic_ptr_3arg(
20501                "glGetUniformdv",
20502                &self.glGetUniformdv_p,
20503                program,
20504                location,
20505                params,
20506            );
20507            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20508            {
20509                self.automatic_glGetError("glGetUniformdv");
20510            }
20511            out
20512        }
20513        #[doc(hidden)]
20514        pub unsafe fn GetUniformdv_load_with_dyn(
20515            &self,
20516            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20517        ) -> bool {
20518            load_dyn_name_atomic_ptr(
20519                get_proc_address,
20520                b"glGetUniformdv\0",
20521                &self.glGetUniformdv_p,
20522            )
20523        }
20524        #[inline]
20525        #[doc(hidden)]
20526        pub fn GetUniformdv_is_loaded(&self) -> bool {
20527            !self.glGetUniformdv_p.load(RELAX).is_null()
20528        }
20529        /// [glGetUniformfv](http://docs.gl/gl4/glGetUniform)(program, location, params)
20530        /// * `params` len: COMPSIZE(program,location)
20531        #[cfg_attr(feature = "inline", inline)]
20532        #[cfg_attr(feature = "inline_always", inline(always))]
20533        pub unsafe fn GetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) {
20534            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20535            {
20536                trace!(
20537                    "calling gl.GetUniformfv({:?}, {:?}, {:p});",
20538                    program,
20539                    location,
20540                    params
20541                );
20542            }
20543            let out = call_atomic_ptr_3arg(
20544                "glGetUniformfv",
20545                &self.glGetUniformfv_p,
20546                program,
20547                location,
20548                params,
20549            );
20550            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20551            {
20552                self.automatic_glGetError("glGetUniformfv");
20553            }
20554            out
20555        }
20556        #[doc(hidden)]
20557        pub unsafe fn GetUniformfv_load_with_dyn(
20558            &self,
20559            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20560        ) -> bool {
20561            load_dyn_name_atomic_ptr(
20562                get_proc_address,
20563                b"glGetUniformfv\0",
20564                &self.glGetUniformfv_p,
20565            )
20566        }
20567        #[inline]
20568        #[doc(hidden)]
20569        pub fn GetUniformfv_is_loaded(&self) -> bool {
20570            !self.glGetUniformfv_p.load(RELAX).is_null()
20571        }
20572        /// [glGetUniformiv](http://docs.gl/gl4/glGetUniform)(program, location, params)
20573        /// * `params` len: COMPSIZE(program,location)
20574        #[cfg_attr(feature = "inline", inline)]
20575        #[cfg_attr(feature = "inline_always", inline(always))]
20576        pub unsafe fn GetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) {
20577            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20578            {
20579                trace!(
20580                    "calling gl.GetUniformiv({:?}, {:?}, {:p});",
20581                    program,
20582                    location,
20583                    params
20584                );
20585            }
20586            let out = call_atomic_ptr_3arg(
20587                "glGetUniformiv",
20588                &self.glGetUniformiv_p,
20589                program,
20590                location,
20591                params,
20592            );
20593            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20594            {
20595                self.automatic_glGetError("glGetUniformiv");
20596            }
20597            out
20598        }
20599        #[doc(hidden)]
20600        pub unsafe fn GetUniformiv_load_with_dyn(
20601            &self,
20602            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20603        ) -> bool {
20604            load_dyn_name_atomic_ptr(
20605                get_proc_address,
20606                b"glGetUniformiv\0",
20607                &self.glGetUniformiv_p,
20608            )
20609        }
20610        #[inline]
20611        #[doc(hidden)]
20612        pub fn GetUniformiv_is_loaded(&self) -> bool {
20613            !self.glGetUniformiv_p.load(RELAX).is_null()
20614        }
20615        /// [glGetUniformuiv](http://docs.gl/gl4/glGetUniform)(program, location, params)
20616        /// * `params` len: COMPSIZE(program,location)
20617        #[cfg_attr(feature = "inline", inline)]
20618        #[cfg_attr(feature = "inline_always", inline(always))]
20619        pub unsafe fn GetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) {
20620            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20621            {
20622                trace!(
20623                    "calling gl.GetUniformuiv({:?}, {:?}, {:p});",
20624                    program,
20625                    location,
20626                    params
20627                );
20628            }
20629            let out = call_atomic_ptr_3arg(
20630                "glGetUniformuiv",
20631                &self.glGetUniformuiv_p,
20632                program,
20633                location,
20634                params,
20635            );
20636            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20637            {
20638                self.automatic_glGetError("glGetUniformuiv");
20639            }
20640            out
20641        }
20642        #[doc(hidden)]
20643        pub unsafe fn GetUniformuiv_load_with_dyn(
20644            &self,
20645            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20646        ) -> bool {
20647            load_dyn_name_atomic_ptr(
20648                get_proc_address,
20649                b"glGetUniformuiv\0",
20650                &self.glGetUniformuiv_p,
20651            )
20652        }
20653        #[inline]
20654        #[doc(hidden)]
20655        pub fn GetUniformuiv_is_loaded(&self) -> bool {
20656            !self.glGetUniformuiv_p.load(RELAX).is_null()
20657        }
20658        /// [glGetVertexArrayIndexed64iv](http://docs.gl/gl4/glGetVertexArrayIndexed6)(vaobj, index, pname, param)
20659        /// * `pname` group: VertexArrayPName
20660        #[cfg_attr(feature = "inline", inline)]
20661        #[cfg_attr(feature = "inline_always", inline(always))]
20662        pub unsafe fn GetVertexArrayIndexed64iv(
20663            &self,
20664            vaobj: GLuint,
20665            index: GLuint,
20666            pname: GLenum,
20667            param: *mut GLint64,
20668        ) {
20669            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20670            {
20671                trace!(
20672                    "calling gl.GetVertexArrayIndexed64iv({:?}, {:?}, {:#X}, {:p});",
20673                    vaobj,
20674                    index,
20675                    pname,
20676                    param
20677                );
20678            }
20679            let out = call_atomic_ptr_4arg(
20680                "glGetVertexArrayIndexed64iv",
20681                &self.glGetVertexArrayIndexed64iv_p,
20682                vaobj,
20683                index,
20684                pname,
20685                param,
20686            );
20687            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20688            {
20689                self.automatic_glGetError("glGetVertexArrayIndexed64iv");
20690            }
20691            out
20692        }
20693        #[doc(hidden)]
20694        pub unsafe fn GetVertexArrayIndexed64iv_load_with_dyn(
20695            &self,
20696            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20697        ) -> bool {
20698            load_dyn_name_atomic_ptr(
20699                get_proc_address,
20700                b"glGetVertexArrayIndexed64iv\0",
20701                &self.glGetVertexArrayIndexed64iv_p,
20702            )
20703        }
20704        #[inline]
20705        #[doc(hidden)]
20706        pub fn GetVertexArrayIndexed64iv_is_loaded(&self) -> bool {
20707            !self.glGetVertexArrayIndexed64iv_p.load(RELAX).is_null()
20708        }
20709        /// [glGetVertexArrayIndexediv](http://docs.gl/gl4/glGetVertexArrayIndexed)(vaobj, index, pname, param)
20710        /// * `pname` group: VertexArrayPName
20711        #[cfg_attr(feature = "inline", inline)]
20712        #[cfg_attr(feature = "inline_always", inline(always))]
20713        pub unsafe fn GetVertexArrayIndexediv(
20714            &self,
20715            vaobj: GLuint,
20716            index: GLuint,
20717            pname: GLenum,
20718            param: *mut GLint,
20719        ) {
20720            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20721            {
20722                trace!(
20723                    "calling gl.GetVertexArrayIndexediv({:?}, {:?}, {:#X}, {:p});",
20724                    vaobj,
20725                    index,
20726                    pname,
20727                    param
20728                );
20729            }
20730            let out = call_atomic_ptr_4arg(
20731                "glGetVertexArrayIndexediv",
20732                &self.glGetVertexArrayIndexediv_p,
20733                vaobj,
20734                index,
20735                pname,
20736                param,
20737            );
20738            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20739            {
20740                self.automatic_glGetError("glGetVertexArrayIndexediv");
20741            }
20742            out
20743        }
20744        #[doc(hidden)]
20745        pub unsafe fn GetVertexArrayIndexediv_load_with_dyn(
20746            &self,
20747            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20748        ) -> bool {
20749            load_dyn_name_atomic_ptr(
20750                get_proc_address,
20751                b"glGetVertexArrayIndexediv\0",
20752                &self.glGetVertexArrayIndexediv_p,
20753            )
20754        }
20755        #[inline]
20756        #[doc(hidden)]
20757        pub fn GetVertexArrayIndexediv_is_loaded(&self) -> bool {
20758            !self.glGetVertexArrayIndexediv_p.load(RELAX).is_null()
20759        }
20760        /// [glGetVertexArrayiv](http://docs.gl/gl4/glGetVertexArray)(vaobj, pname, param)
20761        /// * `pname` group: VertexArrayPName
20762        #[cfg_attr(feature = "inline", inline)]
20763        #[cfg_attr(feature = "inline_always", inline(always))]
20764        pub unsafe fn GetVertexArrayiv(&self, vaobj: GLuint, pname: GLenum, param: *mut GLint) {
20765            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20766            {
20767                trace!(
20768                    "calling gl.GetVertexArrayiv({:?}, {:#X}, {:p});",
20769                    vaobj,
20770                    pname,
20771                    param
20772                );
20773            }
20774            let out = call_atomic_ptr_3arg(
20775                "glGetVertexArrayiv",
20776                &self.glGetVertexArrayiv_p,
20777                vaobj,
20778                pname,
20779                param,
20780            );
20781            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20782            {
20783                self.automatic_glGetError("glGetVertexArrayiv");
20784            }
20785            out
20786        }
20787        #[doc(hidden)]
20788        pub unsafe fn GetVertexArrayiv_load_with_dyn(
20789            &self,
20790            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20791        ) -> bool {
20792            load_dyn_name_atomic_ptr(
20793                get_proc_address,
20794                b"glGetVertexArrayiv\0",
20795                &self.glGetVertexArrayiv_p,
20796            )
20797        }
20798        #[inline]
20799        #[doc(hidden)]
20800        pub fn GetVertexArrayiv_is_loaded(&self) -> bool {
20801            !self.glGetVertexArrayiv_p.load(RELAX).is_null()
20802        }
20803        /// [glGetVertexAttribIiv](http://docs.gl/gl4/glGetVertexAttrib)(index, pname, params)
20804        /// * `pname` group: VertexAttribEnum
20805        /// * `params` len: 1
20806        #[cfg_attr(feature = "inline", inline)]
20807        #[cfg_attr(feature = "inline_always", inline(always))]
20808        pub unsafe fn GetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) {
20809            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20810            {
20811                trace!(
20812                    "calling gl.GetVertexAttribIiv({:?}, {:#X}, {:p});",
20813                    index,
20814                    pname,
20815                    params
20816                );
20817            }
20818            let out = call_atomic_ptr_3arg(
20819                "glGetVertexAttribIiv",
20820                &self.glGetVertexAttribIiv_p,
20821                index,
20822                pname,
20823                params,
20824            );
20825            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20826            {
20827                self.automatic_glGetError("glGetVertexAttribIiv");
20828            }
20829            out
20830        }
20831        #[doc(hidden)]
20832        pub unsafe fn GetVertexAttribIiv_load_with_dyn(
20833            &self,
20834            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20835        ) -> bool {
20836            load_dyn_name_atomic_ptr(
20837                get_proc_address,
20838                b"glGetVertexAttribIiv\0",
20839                &self.glGetVertexAttribIiv_p,
20840            )
20841        }
20842        #[inline]
20843        #[doc(hidden)]
20844        pub fn GetVertexAttribIiv_is_loaded(&self) -> bool {
20845            !self.glGetVertexAttribIiv_p.load(RELAX).is_null()
20846        }
20847        /// [glGetVertexAttribIuiv](http://docs.gl/gl4/glGetVertexAttrib)(index, pname, params)
20848        /// * `pname` group: VertexAttribEnum
20849        /// * `params` len: 1
20850        #[cfg_attr(feature = "inline", inline)]
20851        #[cfg_attr(feature = "inline_always", inline(always))]
20852        pub unsafe fn GetVertexAttribIuiv(
20853            &self,
20854            index: GLuint,
20855            pname: GLenum,
20856            params: *mut GLuint,
20857        ) {
20858            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20859            {
20860                trace!(
20861                    "calling gl.GetVertexAttribIuiv({:?}, {:#X}, {:p});",
20862                    index,
20863                    pname,
20864                    params
20865                );
20866            }
20867            let out = call_atomic_ptr_3arg(
20868                "glGetVertexAttribIuiv",
20869                &self.glGetVertexAttribIuiv_p,
20870                index,
20871                pname,
20872                params,
20873            );
20874            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20875            {
20876                self.automatic_glGetError("glGetVertexAttribIuiv");
20877            }
20878            out
20879        }
20880        #[doc(hidden)]
20881        pub unsafe fn GetVertexAttribIuiv_load_with_dyn(
20882            &self,
20883            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20884        ) -> bool {
20885            load_dyn_name_atomic_ptr(
20886                get_proc_address,
20887                b"glGetVertexAttribIuiv\0",
20888                &self.glGetVertexAttribIuiv_p,
20889            )
20890        }
20891        #[inline]
20892        #[doc(hidden)]
20893        pub fn GetVertexAttribIuiv_is_loaded(&self) -> bool {
20894            !self.glGetVertexAttribIuiv_p.load(RELAX).is_null()
20895        }
20896        /// [glGetVertexAttribLdv](http://docs.gl/gl4/glGetVertexAttribLdv)(index, pname, params)
20897        /// * `pname` group: VertexAttribEnum
20898        /// * `params` len: COMPSIZE(pname)
20899        #[cfg_attr(feature = "inline", inline)]
20900        #[cfg_attr(feature = "inline_always", inline(always))]
20901        pub unsafe fn GetVertexAttribLdv(
20902            &self,
20903            index: GLuint,
20904            pname: GLenum,
20905            params: *mut GLdouble,
20906        ) {
20907            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20908            {
20909                trace!(
20910                    "calling gl.GetVertexAttribLdv({:?}, {:#X}, {:p});",
20911                    index,
20912                    pname,
20913                    params
20914                );
20915            }
20916            let out = call_atomic_ptr_3arg(
20917                "glGetVertexAttribLdv",
20918                &self.glGetVertexAttribLdv_p,
20919                index,
20920                pname,
20921                params,
20922            );
20923            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20924            {
20925                self.automatic_glGetError("glGetVertexAttribLdv");
20926            }
20927            out
20928        }
20929        #[doc(hidden)]
20930        pub unsafe fn GetVertexAttribLdv_load_with_dyn(
20931            &self,
20932            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20933        ) -> bool {
20934            load_dyn_name_atomic_ptr(
20935                get_proc_address,
20936                b"glGetVertexAttribLdv\0",
20937                &self.glGetVertexAttribLdv_p,
20938            )
20939        }
20940        #[inline]
20941        #[doc(hidden)]
20942        pub fn GetVertexAttribLdv_is_loaded(&self) -> bool {
20943            !self.glGetVertexAttribLdv_p.load(RELAX).is_null()
20944        }
20945        /// [glGetVertexAttribPointerv](http://docs.gl/gl4/glGetVertexAttribPointerv)(index, pname, pointer)
20946        /// * `pname` group: VertexAttribPointerPropertyARB
20947        /// * `pointer` len: 1
20948        #[cfg_attr(feature = "inline", inline)]
20949        #[cfg_attr(feature = "inline_always", inline(always))]
20950        pub unsafe fn GetVertexAttribPointerv(
20951            &self,
20952            index: GLuint,
20953            pname: GLenum,
20954            pointer: *mut *mut c_void,
20955        ) {
20956            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20957            {
20958                trace!(
20959                    "calling gl.GetVertexAttribPointerv({:?}, {:#X}, {:p});",
20960                    index,
20961                    pname,
20962                    pointer
20963                );
20964            }
20965            let out = call_atomic_ptr_3arg(
20966                "glGetVertexAttribPointerv",
20967                &self.glGetVertexAttribPointerv_p,
20968                index,
20969                pname,
20970                pointer,
20971            );
20972            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20973            {
20974                self.automatic_glGetError("glGetVertexAttribPointerv");
20975            }
20976            out
20977        }
20978        #[doc(hidden)]
20979        pub unsafe fn GetVertexAttribPointerv_load_with_dyn(
20980            &self,
20981            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20982        ) -> bool {
20983            load_dyn_name_atomic_ptr(
20984                get_proc_address,
20985                b"glGetVertexAttribPointerv\0",
20986                &self.glGetVertexAttribPointerv_p,
20987            )
20988        }
20989        #[inline]
20990        #[doc(hidden)]
20991        pub fn GetVertexAttribPointerv_is_loaded(&self) -> bool {
20992            !self.glGetVertexAttribPointerv_p.load(RELAX).is_null()
20993        }
20994        /// [glGetVertexAttribdv](http://docs.gl/gl4/glGetVertexAttribdv)(index, pname, params)
20995        /// * `pname` group: VertexAttribPropertyARB
20996        /// * `params` len: 4
20997        #[cfg_attr(feature = "inline", inline)]
20998        #[cfg_attr(feature = "inline_always", inline(always))]
20999        pub unsafe fn GetVertexAttribdv(
21000            &self,
21001            index: GLuint,
21002            pname: GLenum,
21003            params: *mut GLdouble,
21004        ) {
21005            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21006            {
21007                trace!(
21008                    "calling gl.GetVertexAttribdv({:?}, {:#X}, {:p});",
21009                    index,
21010                    pname,
21011                    params
21012                );
21013            }
21014            let out = call_atomic_ptr_3arg(
21015                "glGetVertexAttribdv",
21016                &self.glGetVertexAttribdv_p,
21017                index,
21018                pname,
21019                params,
21020            );
21021            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21022            {
21023                self.automatic_glGetError("glGetVertexAttribdv");
21024            }
21025            out
21026        }
21027        #[doc(hidden)]
21028        pub unsafe fn GetVertexAttribdv_load_with_dyn(
21029            &self,
21030            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21031        ) -> bool {
21032            load_dyn_name_atomic_ptr(
21033                get_proc_address,
21034                b"glGetVertexAttribdv\0",
21035                &self.glGetVertexAttribdv_p,
21036            )
21037        }
21038        #[inline]
21039        #[doc(hidden)]
21040        pub fn GetVertexAttribdv_is_loaded(&self) -> bool {
21041            !self.glGetVertexAttribdv_p.load(RELAX).is_null()
21042        }
21043        /// [glGetVertexAttribfv](http://docs.gl/gl4/glGetVertexAttrib)(index, pname, params)
21044        /// * `pname` group: VertexAttribPropertyARB
21045        /// * `params` len: 4
21046        #[cfg_attr(feature = "inline", inline)]
21047        #[cfg_attr(feature = "inline_always", inline(always))]
21048        pub unsafe fn GetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) {
21049            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21050            {
21051                trace!(
21052                    "calling gl.GetVertexAttribfv({:?}, {:#X}, {:p});",
21053                    index,
21054                    pname,
21055                    params
21056                );
21057            }
21058            let out = call_atomic_ptr_3arg(
21059                "glGetVertexAttribfv",
21060                &self.glGetVertexAttribfv_p,
21061                index,
21062                pname,
21063                params,
21064            );
21065            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21066            {
21067                self.automatic_glGetError("glGetVertexAttribfv");
21068            }
21069            out
21070        }
21071        #[doc(hidden)]
21072        pub unsafe fn GetVertexAttribfv_load_with_dyn(
21073            &self,
21074            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21075        ) -> bool {
21076            load_dyn_name_atomic_ptr(
21077                get_proc_address,
21078                b"glGetVertexAttribfv\0",
21079                &self.glGetVertexAttribfv_p,
21080            )
21081        }
21082        #[inline]
21083        #[doc(hidden)]
21084        pub fn GetVertexAttribfv_is_loaded(&self) -> bool {
21085            !self.glGetVertexAttribfv_p.load(RELAX).is_null()
21086        }
21087        /// [glGetVertexAttribiv](http://docs.gl/gl4/glGetVertexAttrib)(index, pname, params)
21088        /// * `pname` group: VertexAttribPropertyARB
21089        /// * `params` len: 4
21090        #[cfg_attr(feature = "inline", inline)]
21091        #[cfg_attr(feature = "inline_always", inline(always))]
21092        pub unsafe fn GetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) {
21093            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21094            {
21095                trace!(
21096                    "calling gl.GetVertexAttribiv({:?}, {:#X}, {:p});",
21097                    index,
21098                    pname,
21099                    params
21100                );
21101            }
21102            let out = call_atomic_ptr_3arg(
21103                "glGetVertexAttribiv",
21104                &self.glGetVertexAttribiv_p,
21105                index,
21106                pname,
21107                params,
21108            );
21109            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21110            {
21111                self.automatic_glGetError("glGetVertexAttribiv");
21112            }
21113            out
21114        }
21115        #[doc(hidden)]
21116        pub unsafe fn GetVertexAttribiv_load_with_dyn(
21117            &self,
21118            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21119        ) -> bool {
21120            load_dyn_name_atomic_ptr(
21121                get_proc_address,
21122                b"glGetVertexAttribiv\0",
21123                &self.glGetVertexAttribiv_p,
21124            )
21125        }
21126        #[inline]
21127        #[doc(hidden)]
21128        pub fn GetVertexAttribiv_is_loaded(&self) -> bool {
21129            !self.glGetVertexAttribiv_p.load(RELAX).is_null()
21130        }
21131        /// [glGetnCompressedTexImage](http://docs.gl/gl4/glGetnCompressedTexImage)(target, lod, bufSize, pixels)
21132        /// * `target` group: TextureTarget
21133        #[cfg_attr(feature = "inline", inline)]
21134        #[cfg_attr(feature = "inline_always", inline(always))]
21135        pub unsafe fn GetnCompressedTexImage(
21136            &self,
21137            target: GLenum,
21138            lod: GLint,
21139            bufSize: GLsizei,
21140            pixels: *mut c_void,
21141        ) {
21142            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21143            {
21144                trace!(
21145                    "calling gl.GetnCompressedTexImage({:#X}, {:?}, {:?}, {:p});",
21146                    target,
21147                    lod,
21148                    bufSize,
21149                    pixels
21150                );
21151            }
21152            let out = call_atomic_ptr_4arg(
21153                "glGetnCompressedTexImage",
21154                &self.glGetnCompressedTexImage_p,
21155                target,
21156                lod,
21157                bufSize,
21158                pixels,
21159            );
21160            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21161            {
21162                self.automatic_glGetError("glGetnCompressedTexImage");
21163            }
21164            out
21165        }
21166        #[doc(hidden)]
21167        pub unsafe fn GetnCompressedTexImage_load_with_dyn(
21168            &self,
21169            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21170        ) -> bool {
21171            load_dyn_name_atomic_ptr(
21172                get_proc_address,
21173                b"glGetnCompressedTexImage\0",
21174                &self.glGetnCompressedTexImage_p,
21175            )
21176        }
21177        #[inline]
21178        #[doc(hidden)]
21179        pub fn GetnCompressedTexImage_is_loaded(&self) -> bool {
21180            !self.glGetnCompressedTexImage_p.load(RELAX).is_null()
21181        }
21182        /// [glGetnTexImage](http://docs.gl/gl4/glGetnTexImage)(target, level, format, type_, bufSize, pixels)
21183        /// * `target` group: TextureTarget
21184        /// * `format` group: PixelFormat
21185        /// * `type_` group: PixelType
21186        /// * `pixels` len: bufSize
21187        #[cfg_attr(feature = "inline", inline)]
21188        #[cfg_attr(feature = "inline_always", inline(always))]
21189        pub unsafe fn GetnTexImage(
21190            &self,
21191            target: GLenum,
21192            level: GLint,
21193            format: GLenum,
21194            type_: GLenum,
21195            bufSize: GLsizei,
21196            pixels: *mut c_void,
21197        ) {
21198            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21199            {
21200                trace!(
21201                    "calling gl.GetnTexImage({:#X}, {:?}, {:#X}, {:#X}, {:?}, {:p});",
21202                    target,
21203                    level,
21204                    format,
21205                    type_,
21206                    bufSize,
21207                    pixels
21208                );
21209            }
21210            let out = call_atomic_ptr_6arg(
21211                "glGetnTexImage",
21212                &self.glGetnTexImage_p,
21213                target,
21214                level,
21215                format,
21216                type_,
21217                bufSize,
21218                pixels,
21219            );
21220            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21221            {
21222                self.automatic_glGetError("glGetnTexImage");
21223            }
21224            out
21225        }
21226        #[doc(hidden)]
21227        pub unsafe fn GetnTexImage_load_with_dyn(
21228            &self,
21229            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21230        ) -> bool {
21231            load_dyn_name_atomic_ptr(
21232                get_proc_address,
21233                b"glGetnTexImage\0",
21234                &self.glGetnTexImage_p,
21235            )
21236        }
21237        #[inline]
21238        #[doc(hidden)]
21239        pub fn GetnTexImage_is_loaded(&self) -> bool {
21240            !self.glGetnTexImage_p.load(RELAX).is_null()
21241        }
21242        /// [glGetnUniformdv](http://docs.gl/gl4/glGetnUniformdv)(program, location, bufSize, params)
21243        /// * `params` len: bufSize
21244        #[cfg_attr(feature = "inline", inline)]
21245        #[cfg_attr(feature = "inline_always", inline(always))]
21246        pub unsafe fn GetnUniformdv(
21247            &self,
21248            program: GLuint,
21249            location: GLint,
21250            bufSize: GLsizei,
21251            params: *mut GLdouble,
21252        ) {
21253            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21254            {
21255                trace!(
21256                    "calling gl.GetnUniformdv({:?}, {:?}, {:?}, {:p});",
21257                    program,
21258                    location,
21259                    bufSize,
21260                    params
21261                );
21262            }
21263            let out = call_atomic_ptr_4arg(
21264                "glGetnUniformdv",
21265                &self.glGetnUniformdv_p,
21266                program,
21267                location,
21268                bufSize,
21269                params,
21270            );
21271            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21272            {
21273                self.automatic_glGetError("glGetnUniformdv");
21274            }
21275            out
21276        }
21277        #[doc(hidden)]
21278        pub unsafe fn GetnUniformdv_load_with_dyn(
21279            &self,
21280            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21281        ) -> bool {
21282            load_dyn_name_atomic_ptr(
21283                get_proc_address,
21284                b"glGetnUniformdv\0",
21285                &self.glGetnUniformdv_p,
21286            )
21287        }
21288        #[inline]
21289        #[doc(hidden)]
21290        pub fn GetnUniformdv_is_loaded(&self) -> bool {
21291            !self.glGetnUniformdv_p.load(RELAX).is_null()
21292        }
21293        /// [glGetnUniformfv](http://docs.gl/gl4/glGetnUniform)(program, location, bufSize, params)
21294        /// * `params` len: bufSize
21295        #[cfg_attr(feature = "inline", inline)]
21296        #[cfg_attr(feature = "inline_always", inline(always))]
21297        pub unsafe fn GetnUniformfv(
21298            &self,
21299            program: GLuint,
21300            location: GLint,
21301            bufSize: GLsizei,
21302            params: *mut GLfloat,
21303        ) {
21304            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21305            {
21306                trace!(
21307                    "calling gl.GetnUniformfv({:?}, {:?}, {:?}, {:p});",
21308                    program,
21309                    location,
21310                    bufSize,
21311                    params
21312                );
21313            }
21314            let out = call_atomic_ptr_4arg(
21315                "glGetnUniformfv",
21316                &self.glGetnUniformfv_p,
21317                program,
21318                location,
21319                bufSize,
21320                params,
21321            );
21322            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21323            {
21324                self.automatic_glGetError("glGetnUniformfv");
21325            }
21326            out
21327        }
21328        #[doc(hidden)]
21329        pub unsafe fn GetnUniformfv_load_with_dyn(
21330            &self,
21331            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21332        ) -> bool {
21333            load_dyn_name_atomic_ptr(
21334                get_proc_address,
21335                b"glGetnUniformfv\0",
21336                &self.glGetnUniformfv_p,
21337            )
21338        }
21339        #[inline]
21340        #[doc(hidden)]
21341        pub fn GetnUniformfv_is_loaded(&self) -> bool {
21342            !self.glGetnUniformfv_p.load(RELAX).is_null()
21343        }
21344        /// [glGetnUniformiv](http://docs.gl/gl4/glGetnUniform)(program, location, bufSize, params)
21345        /// * `params` len: bufSize
21346        #[cfg_attr(feature = "inline", inline)]
21347        #[cfg_attr(feature = "inline_always", inline(always))]
21348        pub unsafe fn GetnUniformiv(
21349            &self,
21350            program: GLuint,
21351            location: GLint,
21352            bufSize: GLsizei,
21353            params: *mut GLint,
21354        ) {
21355            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21356            {
21357                trace!(
21358                    "calling gl.GetnUniformiv({:?}, {:?}, {:?}, {:p});",
21359                    program,
21360                    location,
21361                    bufSize,
21362                    params
21363                );
21364            }
21365            let out = call_atomic_ptr_4arg(
21366                "glGetnUniformiv",
21367                &self.glGetnUniformiv_p,
21368                program,
21369                location,
21370                bufSize,
21371                params,
21372            );
21373            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21374            {
21375                self.automatic_glGetError("glGetnUniformiv");
21376            }
21377            out
21378        }
21379        #[doc(hidden)]
21380        pub unsafe fn GetnUniformiv_load_with_dyn(
21381            &self,
21382            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21383        ) -> bool {
21384            load_dyn_name_atomic_ptr(
21385                get_proc_address,
21386                b"glGetnUniformiv\0",
21387                &self.glGetnUniformiv_p,
21388            )
21389        }
21390        #[inline]
21391        #[doc(hidden)]
21392        pub fn GetnUniformiv_is_loaded(&self) -> bool {
21393            !self.glGetnUniformiv_p.load(RELAX).is_null()
21394        }
21395        /// [glGetnUniformuiv](http://docs.gl/gl4/glGetnUniform)(program, location, bufSize, params)
21396        /// * `params` len: bufSize
21397        #[cfg_attr(feature = "inline", inline)]
21398        #[cfg_attr(feature = "inline_always", inline(always))]
21399        pub unsafe fn GetnUniformuiv(
21400            &self,
21401            program: GLuint,
21402            location: GLint,
21403            bufSize: GLsizei,
21404            params: *mut GLuint,
21405        ) {
21406            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21407            {
21408                trace!(
21409                    "calling gl.GetnUniformuiv({:?}, {:?}, {:?}, {:p});",
21410                    program,
21411                    location,
21412                    bufSize,
21413                    params
21414                );
21415            }
21416            let out = call_atomic_ptr_4arg(
21417                "glGetnUniformuiv",
21418                &self.glGetnUniformuiv_p,
21419                program,
21420                location,
21421                bufSize,
21422                params,
21423            );
21424            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21425            {
21426                self.automatic_glGetError("glGetnUniformuiv");
21427            }
21428            out
21429        }
21430        #[doc(hidden)]
21431        pub unsafe fn GetnUniformuiv_load_with_dyn(
21432            &self,
21433            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21434        ) -> bool {
21435            load_dyn_name_atomic_ptr(
21436                get_proc_address,
21437                b"glGetnUniformuiv\0",
21438                &self.glGetnUniformuiv_p,
21439            )
21440        }
21441        #[inline]
21442        #[doc(hidden)]
21443        pub fn GetnUniformuiv_is_loaded(&self) -> bool {
21444            !self.glGetnUniformuiv_p.load(RELAX).is_null()
21445        }
21446        /// [glHint](http://docs.gl/gl4/glHint)(target, mode)
21447        /// * `target` group: HintTarget
21448        /// * `mode` group: HintMode
21449        #[cfg_attr(feature = "inline", inline)]
21450        #[cfg_attr(feature = "inline_always", inline(always))]
21451        pub unsafe fn Hint(&self, target: GLenum, mode: GLenum) {
21452            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21453            {
21454                trace!("calling gl.Hint({:#X}, {:#X});", target, mode);
21455            }
21456            let out = call_atomic_ptr_2arg("glHint", &self.glHint_p, target, mode);
21457            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21458            {
21459                self.automatic_glGetError("glHint");
21460            }
21461            out
21462        }
21463        #[doc(hidden)]
21464        pub unsafe fn Hint_load_with_dyn(
21465            &self,
21466            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21467        ) -> bool {
21468            load_dyn_name_atomic_ptr(get_proc_address, b"glHint\0", &self.glHint_p)
21469        }
21470        #[inline]
21471        #[doc(hidden)]
21472        pub fn Hint_is_loaded(&self) -> bool {
21473            !self.glHint_p.load(RELAX).is_null()
21474        }
21475        /// [glInvalidateBufferData](http://docs.gl/gl4/glInvalidateBufferData)(buffer)
21476        #[cfg_attr(feature = "inline", inline)]
21477        #[cfg_attr(feature = "inline_always", inline(always))]
21478        pub unsafe fn InvalidateBufferData(&self, buffer: GLuint) {
21479            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21480            {
21481                trace!("calling gl.InvalidateBufferData({:?});", buffer);
21482            }
21483            let out = call_atomic_ptr_1arg(
21484                "glInvalidateBufferData",
21485                &self.glInvalidateBufferData_p,
21486                buffer,
21487            );
21488            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21489            {
21490                self.automatic_glGetError("glInvalidateBufferData");
21491            }
21492            out
21493        }
21494        #[doc(hidden)]
21495        pub unsafe fn InvalidateBufferData_load_with_dyn(
21496            &self,
21497            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21498        ) -> bool {
21499            load_dyn_name_atomic_ptr(
21500                get_proc_address,
21501                b"glInvalidateBufferData\0",
21502                &self.glInvalidateBufferData_p,
21503            )
21504        }
21505        #[inline]
21506        #[doc(hidden)]
21507        pub fn InvalidateBufferData_is_loaded(&self) -> bool {
21508            !self.glInvalidateBufferData_p.load(RELAX).is_null()
21509        }
21510        /// [glInvalidateBufferSubData](http://docs.gl/gl4/glInvalidateBufferSubData)(buffer, offset, length)
21511        /// * `offset` group: BufferOffset
21512        /// * `length` group: BufferSize
21513        #[cfg_attr(feature = "inline", inline)]
21514        #[cfg_attr(feature = "inline_always", inline(always))]
21515        pub unsafe fn InvalidateBufferSubData(
21516            &self,
21517            buffer: GLuint,
21518            offset: GLintptr,
21519            length: GLsizeiptr,
21520        ) {
21521            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21522            {
21523                trace!(
21524                    "calling gl.InvalidateBufferSubData({:?}, {:?}, {:?});",
21525                    buffer,
21526                    offset,
21527                    length
21528                );
21529            }
21530            let out = call_atomic_ptr_3arg(
21531                "glInvalidateBufferSubData",
21532                &self.glInvalidateBufferSubData_p,
21533                buffer,
21534                offset,
21535                length,
21536            );
21537            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21538            {
21539                self.automatic_glGetError("glInvalidateBufferSubData");
21540            }
21541            out
21542        }
21543        #[doc(hidden)]
21544        pub unsafe fn InvalidateBufferSubData_load_with_dyn(
21545            &self,
21546            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21547        ) -> bool {
21548            load_dyn_name_atomic_ptr(
21549                get_proc_address,
21550                b"glInvalidateBufferSubData\0",
21551                &self.glInvalidateBufferSubData_p,
21552            )
21553        }
21554        #[inline]
21555        #[doc(hidden)]
21556        pub fn InvalidateBufferSubData_is_loaded(&self) -> bool {
21557            !self.glInvalidateBufferSubData_p.load(RELAX).is_null()
21558        }
21559        /// [glInvalidateFramebuffer](http://docs.gl/gl4/glInvalidateFramebuffer)(target, numAttachments, attachments)
21560        /// * `target` group: FramebufferTarget
21561        /// * `attachments` group: InvalidateFramebufferAttachment
21562        /// * `attachments` len: numAttachments
21563        #[cfg_attr(feature = "inline", inline)]
21564        #[cfg_attr(feature = "inline_always", inline(always))]
21565        pub unsafe fn InvalidateFramebuffer(
21566            &self,
21567            target: GLenum,
21568            numAttachments: GLsizei,
21569            attachments: *const GLenum,
21570        ) {
21571            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21572            {
21573                trace!(
21574                    "calling gl.InvalidateFramebuffer({:#X}, {:?}, {:p});",
21575                    target,
21576                    numAttachments,
21577                    attachments
21578                );
21579            }
21580            let out = call_atomic_ptr_3arg(
21581                "glInvalidateFramebuffer",
21582                &self.glInvalidateFramebuffer_p,
21583                target,
21584                numAttachments,
21585                attachments,
21586            );
21587            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21588            {
21589                self.automatic_glGetError("glInvalidateFramebuffer");
21590            }
21591            out
21592        }
21593        #[doc(hidden)]
21594        pub unsafe fn InvalidateFramebuffer_load_with_dyn(
21595            &self,
21596            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21597        ) -> bool {
21598            load_dyn_name_atomic_ptr(
21599                get_proc_address,
21600                b"glInvalidateFramebuffer\0",
21601                &self.glInvalidateFramebuffer_p,
21602            )
21603        }
21604        #[inline]
21605        #[doc(hidden)]
21606        pub fn InvalidateFramebuffer_is_loaded(&self) -> bool {
21607            !self.glInvalidateFramebuffer_p.load(RELAX).is_null()
21608        }
21609        /// [glInvalidateNamedFramebufferData](http://docs.gl/gl4/glInvalidateNamedFramebufferData)(framebuffer, numAttachments, attachments)
21610        /// * `attachments` group: FramebufferAttachment
21611        #[cfg_attr(feature = "inline", inline)]
21612        #[cfg_attr(feature = "inline_always", inline(always))]
21613        pub unsafe fn InvalidateNamedFramebufferData(
21614            &self,
21615            framebuffer: GLuint,
21616            numAttachments: GLsizei,
21617            attachments: *const GLenum,
21618        ) {
21619            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21620            {
21621                trace!(
21622                    "calling gl.InvalidateNamedFramebufferData({:?}, {:?}, {:p});",
21623                    framebuffer,
21624                    numAttachments,
21625                    attachments
21626                );
21627            }
21628            let out = call_atomic_ptr_3arg(
21629                "glInvalidateNamedFramebufferData",
21630                &self.glInvalidateNamedFramebufferData_p,
21631                framebuffer,
21632                numAttachments,
21633                attachments,
21634            );
21635            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21636            {
21637                self.automatic_glGetError("glInvalidateNamedFramebufferData");
21638            }
21639            out
21640        }
21641        #[doc(hidden)]
21642        pub unsafe fn InvalidateNamedFramebufferData_load_with_dyn(
21643            &self,
21644            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21645        ) -> bool {
21646            load_dyn_name_atomic_ptr(
21647                get_proc_address,
21648                b"glInvalidateNamedFramebufferData\0",
21649                &self.glInvalidateNamedFramebufferData_p,
21650            )
21651        }
21652        #[inline]
21653        #[doc(hidden)]
21654        pub fn InvalidateNamedFramebufferData_is_loaded(&self) -> bool {
21655            !self
21656                .glInvalidateNamedFramebufferData_p
21657                .load(RELAX)
21658                .is_null()
21659        }
21660        /// [glInvalidateNamedFramebufferSubData](http://docs.gl/gl4/glInvalidateNamedFramebufferSubData)(framebuffer, numAttachments, attachments, x, y, width, height)
21661        /// * `attachments` group: FramebufferAttachment
21662        #[cfg_attr(feature = "inline", inline)]
21663        #[cfg_attr(feature = "inline_always", inline(always))]
21664        pub unsafe fn InvalidateNamedFramebufferSubData(
21665            &self,
21666            framebuffer: GLuint,
21667            numAttachments: GLsizei,
21668            attachments: *const GLenum,
21669            x: GLint,
21670            y: GLint,
21671            width: GLsizei,
21672            height: GLsizei,
21673        ) {
21674            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21675            {
21676                trace!("calling gl.InvalidateNamedFramebufferSubData({:?}, {:?}, {:p}, {:?}, {:?}, {:?}, {:?});", framebuffer, numAttachments, attachments, x, y, width, height);
21677            }
21678            let out = call_atomic_ptr_7arg(
21679                "glInvalidateNamedFramebufferSubData",
21680                &self.glInvalidateNamedFramebufferSubData_p,
21681                framebuffer,
21682                numAttachments,
21683                attachments,
21684                x,
21685                y,
21686                width,
21687                height,
21688            );
21689            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21690            {
21691                self.automatic_glGetError("glInvalidateNamedFramebufferSubData");
21692            }
21693            out
21694        }
21695        #[doc(hidden)]
21696        pub unsafe fn InvalidateNamedFramebufferSubData_load_with_dyn(
21697            &self,
21698            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21699        ) -> bool {
21700            load_dyn_name_atomic_ptr(
21701                get_proc_address,
21702                b"glInvalidateNamedFramebufferSubData\0",
21703                &self.glInvalidateNamedFramebufferSubData_p,
21704            )
21705        }
21706        #[inline]
21707        #[doc(hidden)]
21708        pub fn InvalidateNamedFramebufferSubData_is_loaded(&self) -> bool {
21709            !self
21710                .glInvalidateNamedFramebufferSubData_p
21711                .load(RELAX)
21712                .is_null()
21713        }
21714        /// [glInvalidateSubFramebuffer](http://docs.gl/gl4/glInvalidateSubFramebuffer)(target, numAttachments, attachments, x, y, width, height)
21715        /// * `target` group: FramebufferTarget
21716        /// * `attachments` group: InvalidateFramebufferAttachment
21717        /// * `attachments` len: numAttachments
21718        #[cfg_attr(feature = "inline", inline)]
21719        #[cfg_attr(feature = "inline_always", inline(always))]
21720        pub unsafe fn InvalidateSubFramebuffer(
21721            &self,
21722            target: GLenum,
21723            numAttachments: GLsizei,
21724            attachments: *const GLenum,
21725            x: GLint,
21726            y: GLint,
21727            width: GLsizei,
21728            height: GLsizei,
21729        ) {
21730            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21731            {
21732                trace!("calling gl.InvalidateSubFramebuffer({:#X}, {:?}, {:p}, {:?}, {:?}, {:?}, {:?});", target, numAttachments, attachments, x, y, width, height);
21733            }
21734            let out = call_atomic_ptr_7arg(
21735                "glInvalidateSubFramebuffer",
21736                &self.glInvalidateSubFramebuffer_p,
21737                target,
21738                numAttachments,
21739                attachments,
21740                x,
21741                y,
21742                width,
21743                height,
21744            );
21745            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21746            {
21747                self.automatic_glGetError("glInvalidateSubFramebuffer");
21748            }
21749            out
21750        }
21751        #[doc(hidden)]
21752        pub unsafe fn InvalidateSubFramebuffer_load_with_dyn(
21753            &self,
21754            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21755        ) -> bool {
21756            load_dyn_name_atomic_ptr(
21757                get_proc_address,
21758                b"glInvalidateSubFramebuffer\0",
21759                &self.glInvalidateSubFramebuffer_p,
21760            )
21761        }
21762        #[inline]
21763        #[doc(hidden)]
21764        pub fn InvalidateSubFramebuffer_is_loaded(&self) -> bool {
21765            !self.glInvalidateSubFramebuffer_p.load(RELAX).is_null()
21766        }
21767        /// [glInvalidateTexImage](http://docs.gl/gl4/glInvalidateTexImage)(texture, level)
21768        #[cfg_attr(feature = "inline", inline)]
21769        #[cfg_attr(feature = "inline_always", inline(always))]
21770        pub unsafe fn InvalidateTexImage(&self, texture: GLuint, level: GLint) {
21771            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21772            {
21773                trace!("calling gl.InvalidateTexImage({:?}, {:?});", texture, level);
21774            }
21775            let out = call_atomic_ptr_2arg(
21776                "glInvalidateTexImage",
21777                &self.glInvalidateTexImage_p,
21778                texture,
21779                level,
21780            );
21781            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21782            {
21783                self.automatic_glGetError("glInvalidateTexImage");
21784            }
21785            out
21786        }
21787        #[doc(hidden)]
21788        pub unsafe fn InvalidateTexImage_load_with_dyn(
21789            &self,
21790            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21791        ) -> bool {
21792            load_dyn_name_atomic_ptr(
21793                get_proc_address,
21794                b"glInvalidateTexImage\0",
21795                &self.glInvalidateTexImage_p,
21796            )
21797        }
21798        #[inline]
21799        #[doc(hidden)]
21800        pub fn InvalidateTexImage_is_loaded(&self) -> bool {
21801            !self.glInvalidateTexImage_p.load(RELAX).is_null()
21802        }
21803        /// [glInvalidateTexSubImage](http://docs.gl/gl4/glInvalidateTexSubImage)(texture, level, xoffset, yoffset, zoffset, width, height, depth)
21804        #[cfg_attr(feature = "inline", inline)]
21805        #[cfg_attr(feature = "inline_always", inline(always))]
21806        pub unsafe fn InvalidateTexSubImage(
21807            &self,
21808            texture: GLuint,
21809            level: GLint,
21810            xoffset: GLint,
21811            yoffset: GLint,
21812            zoffset: GLint,
21813            width: GLsizei,
21814            height: GLsizei,
21815            depth: GLsizei,
21816        ) {
21817            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21818            {
21819                trace!("calling gl.InvalidateTexSubImage({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", texture, level, xoffset, yoffset, zoffset, width, height, depth);
21820            }
21821            let out = call_atomic_ptr_8arg(
21822                "glInvalidateTexSubImage",
21823                &self.glInvalidateTexSubImage_p,
21824                texture,
21825                level,
21826                xoffset,
21827                yoffset,
21828                zoffset,
21829                width,
21830                height,
21831                depth,
21832            );
21833            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21834            {
21835                self.automatic_glGetError("glInvalidateTexSubImage");
21836            }
21837            out
21838        }
21839        #[doc(hidden)]
21840        pub unsafe fn InvalidateTexSubImage_load_with_dyn(
21841            &self,
21842            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21843        ) -> bool {
21844            load_dyn_name_atomic_ptr(
21845                get_proc_address,
21846                b"glInvalidateTexSubImage\0",
21847                &self.glInvalidateTexSubImage_p,
21848            )
21849        }
21850        #[inline]
21851        #[doc(hidden)]
21852        pub fn InvalidateTexSubImage_is_loaded(&self) -> bool {
21853            !self.glInvalidateTexSubImage_p.load(RELAX).is_null()
21854        }
21855        /// [glIsBuffer](http://docs.gl/gl4/glIsBuffer)(buffer)
21856        #[cfg_attr(feature = "inline", inline)]
21857        #[cfg_attr(feature = "inline_always", inline(always))]
21858        pub unsafe fn IsBuffer(&self, buffer: GLuint) -> GLboolean {
21859            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21860            {
21861                trace!("calling gl.IsBuffer({:?});", buffer);
21862            }
21863            let out = call_atomic_ptr_1arg("glIsBuffer", &self.glIsBuffer_p, buffer);
21864            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21865            {
21866                self.automatic_glGetError("glIsBuffer");
21867            }
21868            out
21869        }
21870        #[doc(hidden)]
21871        pub unsafe fn IsBuffer_load_with_dyn(
21872            &self,
21873            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21874        ) -> bool {
21875            load_dyn_name_atomic_ptr(get_proc_address, b"glIsBuffer\0", &self.glIsBuffer_p)
21876        }
21877        #[inline]
21878        #[doc(hidden)]
21879        pub fn IsBuffer_is_loaded(&self) -> bool {
21880            !self.glIsBuffer_p.load(RELAX).is_null()
21881        }
21882        /// [glIsEnabled](http://docs.gl/gl4/glIsEnabled)(cap)
21883        /// * `cap` group: EnableCap
21884        #[cfg_attr(feature = "inline", inline)]
21885        #[cfg_attr(feature = "inline_always", inline(always))]
21886        pub unsafe fn IsEnabled(&self, cap: GLenum) -> GLboolean {
21887            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21888            {
21889                trace!("calling gl.IsEnabled({:#X});", cap);
21890            }
21891            let out = call_atomic_ptr_1arg("glIsEnabled", &self.glIsEnabled_p, cap);
21892            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21893            {
21894                self.automatic_glGetError("glIsEnabled");
21895            }
21896            out
21897        }
21898        #[doc(hidden)]
21899        pub unsafe fn IsEnabled_load_with_dyn(
21900            &self,
21901            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21902        ) -> bool {
21903            load_dyn_name_atomic_ptr(get_proc_address, b"glIsEnabled\0", &self.glIsEnabled_p)
21904        }
21905        #[inline]
21906        #[doc(hidden)]
21907        pub fn IsEnabled_is_loaded(&self) -> bool {
21908            !self.glIsEnabled_p.load(RELAX).is_null()
21909        }
21910        /// [glIsEnabledIndexedEXT](http://docs.gl/gl4/glIsEnabledIndexedEXT)(target, index)
21911        /// * `target` group: EnableCap
21912        /// * alias of: [`glIsEnabledi`]
21913        #[cfg_attr(feature = "inline", inline)]
21914        #[cfg_attr(feature = "inline_always", inline(always))]
21915        pub unsafe fn IsEnabledIndexedEXT(&self, target: GLenum, index: GLuint) -> GLboolean {
21916            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21917            {
21918                trace!(
21919                    "calling gl.IsEnabledIndexedEXT({:#X}, {:?});",
21920                    target,
21921                    index
21922                );
21923            }
21924            let out = call_atomic_ptr_2arg(
21925                "glIsEnabledIndexedEXT",
21926                &self.glIsEnabledIndexedEXT_p,
21927                target,
21928                index,
21929            );
21930            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21931            {
21932                self.automatic_glGetError("glIsEnabledIndexedEXT");
21933            }
21934            out
21935        }
21936        #[doc(hidden)]
21937        pub unsafe fn IsEnabledIndexedEXT_load_with_dyn(
21938            &self,
21939            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21940        ) -> bool {
21941            load_dyn_name_atomic_ptr(
21942                get_proc_address,
21943                b"glIsEnabledIndexedEXT\0",
21944                &self.glIsEnabledIndexedEXT_p,
21945            )
21946        }
21947        #[inline]
21948        #[doc(hidden)]
21949        pub fn IsEnabledIndexedEXT_is_loaded(&self) -> bool {
21950            !self.glIsEnabledIndexedEXT_p.load(RELAX).is_null()
21951        }
21952        /// [glIsEnabledi](http://docs.gl/gl4/glIsEnabled)(target, index)
21953        /// * `target` group: EnableCap
21954        #[cfg_attr(feature = "inline", inline)]
21955        #[cfg_attr(feature = "inline_always", inline(always))]
21956        pub unsafe fn IsEnabledi(&self, target: GLenum, index: GLuint) -> GLboolean {
21957            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21958            {
21959                trace!("calling gl.IsEnabledi({:#X}, {:?});", target, index);
21960            }
21961            let out = call_atomic_ptr_2arg("glIsEnabledi", &self.glIsEnabledi_p, target, index);
21962            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21963            {
21964                self.automatic_glGetError("glIsEnabledi");
21965            }
21966            out
21967        }
21968        #[doc(hidden)]
21969        pub unsafe fn IsEnabledi_load_with_dyn(
21970            &self,
21971            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21972        ) -> bool {
21973            load_dyn_name_atomic_ptr(get_proc_address, b"glIsEnabledi\0", &self.glIsEnabledi_p)
21974        }
21975        #[inline]
21976        #[doc(hidden)]
21977        pub fn IsEnabledi_is_loaded(&self) -> bool {
21978            !self.glIsEnabledi_p.load(RELAX).is_null()
21979        }
21980        /// [glIsFramebuffer](http://docs.gl/gl4/glIsFramebuffer)(framebuffer)
21981        #[cfg_attr(feature = "inline", inline)]
21982        #[cfg_attr(feature = "inline_always", inline(always))]
21983        pub unsafe fn IsFramebuffer(&self, framebuffer: GLuint) -> GLboolean {
21984            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21985            {
21986                trace!("calling gl.IsFramebuffer({:?});", framebuffer);
21987            }
21988            let out = call_atomic_ptr_1arg("glIsFramebuffer", &self.glIsFramebuffer_p, framebuffer);
21989            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21990            {
21991                self.automatic_glGetError("glIsFramebuffer");
21992            }
21993            out
21994        }
21995        #[doc(hidden)]
21996        pub unsafe fn IsFramebuffer_load_with_dyn(
21997            &self,
21998            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21999        ) -> bool {
22000            load_dyn_name_atomic_ptr(
22001                get_proc_address,
22002                b"glIsFramebuffer\0",
22003                &self.glIsFramebuffer_p,
22004            )
22005        }
22006        #[inline]
22007        #[doc(hidden)]
22008        pub fn IsFramebuffer_is_loaded(&self) -> bool {
22009            !self.glIsFramebuffer_p.load(RELAX).is_null()
22010        }
22011        /// [glIsProgram](http://docs.gl/gl4/glIsProgram)(program)
22012        #[cfg_attr(feature = "inline", inline)]
22013        #[cfg_attr(feature = "inline_always", inline(always))]
22014        pub unsafe fn IsProgram(&self, program: GLuint) -> GLboolean {
22015            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22016            {
22017                trace!("calling gl.IsProgram({:?});", program);
22018            }
22019            let out = call_atomic_ptr_1arg("glIsProgram", &self.glIsProgram_p, program);
22020            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22021            {
22022                self.automatic_glGetError("glIsProgram");
22023            }
22024            out
22025        }
22026        #[doc(hidden)]
22027        pub unsafe fn IsProgram_load_with_dyn(
22028            &self,
22029            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22030        ) -> bool {
22031            load_dyn_name_atomic_ptr(get_proc_address, b"glIsProgram\0", &self.glIsProgram_p)
22032        }
22033        #[inline]
22034        #[doc(hidden)]
22035        pub fn IsProgram_is_loaded(&self) -> bool {
22036            !self.glIsProgram_p.load(RELAX).is_null()
22037        }
22038        /// [glIsProgramPipeline](http://docs.gl/gl4/glIsProgramPipeline)(pipeline)
22039        #[cfg_attr(feature = "inline", inline)]
22040        #[cfg_attr(feature = "inline_always", inline(always))]
22041        pub unsafe fn IsProgramPipeline(&self, pipeline: GLuint) -> GLboolean {
22042            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22043            {
22044                trace!("calling gl.IsProgramPipeline({:?});", pipeline);
22045            }
22046            let out =
22047                call_atomic_ptr_1arg("glIsProgramPipeline", &self.glIsProgramPipeline_p, pipeline);
22048            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22049            {
22050                self.automatic_glGetError("glIsProgramPipeline");
22051            }
22052            out
22053        }
22054        #[doc(hidden)]
22055        pub unsafe fn IsProgramPipeline_load_with_dyn(
22056            &self,
22057            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22058        ) -> bool {
22059            load_dyn_name_atomic_ptr(
22060                get_proc_address,
22061                b"glIsProgramPipeline\0",
22062                &self.glIsProgramPipeline_p,
22063            )
22064        }
22065        #[inline]
22066        #[doc(hidden)]
22067        pub fn IsProgramPipeline_is_loaded(&self) -> bool {
22068            !self.glIsProgramPipeline_p.load(RELAX).is_null()
22069        }
22070        /// [glIsQuery](http://docs.gl/gl4/glIsQuery)(id)
22071        #[cfg_attr(feature = "inline", inline)]
22072        #[cfg_attr(feature = "inline_always", inline(always))]
22073        pub unsafe fn IsQuery(&self, id: GLuint) -> GLboolean {
22074            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22075            {
22076                trace!("calling gl.IsQuery({:?});", id);
22077            }
22078            let out = call_atomic_ptr_1arg("glIsQuery", &self.glIsQuery_p, id);
22079            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22080            {
22081                self.automatic_glGetError("glIsQuery");
22082            }
22083            out
22084        }
22085        #[doc(hidden)]
22086        pub unsafe fn IsQuery_load_with_dyn(
22087            &self,
22088            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22089        ) -> bool {
22090            load_dyn_name_atomic_ptr(get_proc_address, b"glIsQuery\0", &self.glIsQuery_p)
22091        }
22092        #[inline]
22093        #[doc(hidden)]
22094        pub fn IsQuery_is_loaded(&self) -> bool {
22095            !self.glIsQuery_p.load(RELAX).is_null()
22096        }
22097        /// [glIsQueryEXT](http://docs.gl/gl4/glIsQueryEXT)(id)
22098        #[cfg_attr(feature = "inline", inline)]
22099        #[cfg_attr(feature = "inline_always", inline(always))]
22100        pub unsafe fn IsQueryEXT(&self, id: GLuint) -> GLboolean {
22101            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22102            {
22103                trace!("calling gl.IsQueryEXT({:?});", id);
22104            }
22105            let out = call_atomic_ptr_1arg("glIsQueryEXT", &self.glIsQueryEXT_p, id);
22106            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22107            {
22108                self.automatic_glGetError("glIsQueryEXT");
22109            }
22110            out
22111        }
22112        #[doc(hidden)]
22113        pub unsafe fn IsQueryEXT_load_with_dyn(
22114            &self,
22115            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22116        ) -> bool {
22117            load_dyn_name_atomic_ptr(get_proc_address, b"glIsQueryEXT\0", &self.glIsQueryEXT_p)
22118        }
22119        #[inline]
22120        #[doc(hidden)]
22121        pub fn IsQueryEXT_is_loaded(&self) -> bool {
22122            !self.glIsQueryEXT_p.load(RELAX).is_null()
22123        }
22124        /// [glIsRenderbuffer](http://docs.gl/gl4/glIsRenderbuffer)(renderbuffer)
22125        #[cfg_attr(feature = "inline", inline)]
22126        #[cfg_attr(feature = "inline_always", inline(always))]
22127        pub unsafe fn IsRenderbuffer(&self, renderbuffer: GLuint) -> GLboolean {
22128            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22129            {
22130                trace!("calling gl.IsRenderbuffer({:?});", renderbuffer);
22131            }
22132            let out =
22133                call_atomic_ptr_1arg("glIsRenderbuffer", &self.glIsRenderbuffer_p, renderbuffer);
22134            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22135            {
22136                self.automatic_glGetError("glIsRenderbuffer");
22137            }
22138            out
22139        }
22140        #[doc(hidden)]
22141        pub unsafe fn IsRenderbuffer_load_with_dyn(
22142            &self,
22143            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22144        ) -> bool {
22145            load_dyn_name_atomic_ptr(
22146                get_proc_address,
22147                b"glIsRenderbuffer\0",
22148                &self.glIsRenderbuffer_p,
22149            )
22150        }
22151        #[inline]
22152        #[doc(hidden)]
22153        pub fn IsRenderbuffer_is_loaded(&self) -> bool {
22154            !self.glIsRenderbuffer_p.load(RELAX).is_null()
22155        }
22156        /// [glIsSampler](http://docs.gl/gl4/glIsSampler)(sampler)
22157        #[cfg_attr(feature = "inline", inline)]
22158        #[cfg_attr(feature = "inline_always", inline(always))]
22159        pub unsafe fn IsSampler(&self, sampler: GLuint) -> GLboolean {
22160            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22161            {
22162                trace!("calling gl.IsSampler({:?});", sampler);
22163            }
22164            let out = call_atomic_ptr_1arg("glIsSampler", &self.glIsSampler_p, sampler);
22165            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22166            {
22167                self.automatic_glGetError("glIsSampler");
22168            }
22169            out
22170        }
22171        #[doc(hidden)]
22172        pub unsafe fn IsSampler_load_with_dyn(
22173            &self,
22174            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22175        ) -> bool {
22176            load_dyn_name_atomic_ptr(get_proc_address, b"glIsSampler\0", &self.glIsSampler_p)
22177        }
22178        #[inline]
22179        #[doc(hidden)]
22180        pub fn IsSampler_is_loaded(&self) -> bool {
22181            !self.glIsSampler_p.load(RELAX).is_null()
22182        }
22183        /// [glIsShader](http://docs.gl/gl4/glIsShader)(shader)
22184        #[cfg_attr(feature = "inline", inline)]
22185        #[cfg_attr(feature = "inline_always", inline(always))]
22186        pub unsafe fn IsShader(&self, shader: GLuint) -> GLboolean {
22187            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22188            {
22189                trace!("calling gl.IsShader({:?});", shader);
22190            }
22191            let out = call_atomic_ptr_1arg("glIsShader", &self.glIsShader_p, shader);
22192            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22193            {
22194                self.automatic_glGetError("glIsShader");
22195            }
22196            out
22197        }
22198        #[doc(hidden)]
22199        pub unsafe fn IsShader_load_with_dyn(
22200            &self,
22201            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22202        ) -> bool {
22203            load_dyn_name_atomic_ptr(get_proc_address, b"glIsShader\0", &self.glIsShader_p)
22204        }
22205        #[inline]
22206        #[doc(hidden)]
22207        pub fn IsShader_is_loaded(&self) -> bool {
22208            !self.glIsShader_p.load(RELAX).is_null()
22209        }
22210        /// [glIsSync](http://docs.gl/gl4/glIsSync)(sync)
22211        /// * `sync` group: sync
22212        #[cfg_attr(feature = "inline", inline)]
22213        #[cfg_attr(feature = "inline_always", inline(always))]
22214        pub unsafe fn IsSync(&self, sync: GLsync) -> GLboolean {
22215            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22216            {
22217                trace!("calling gl.IsSync({:p});", sync);
22218            }
22219            let out = call_atomic_ptr_1arg("glIsSync", &self.glIsSync_p, sync);
22220            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22221            {
22222                self.automatic_glGetError("glIsSync");
22223            }
22224            out
22225        }
22226        #[doc(hidden)]
22227        pub unsafe fn IsSync_load_with_dyn(
22228            &self,
22229            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22230        ) -> bool {
22231            load_dyn_name_atomic_ptr(get_proc_address, b"glIsSync\0", &self.glIsSync_p)
22232        }
22233        #[inline]
22234        #[doc(hidden)]
22235        pub fn IsSync_is_loaded(&self) -> bool {
22236            !self.glIsSync_p.load(RELAX).is_null()
22237        }
22238        /// [glIsTexture](http://docs.gl/gl4/glIsTexture)(texture)
22239        /// * `texture` group: Texture
22240        #[cfg_attr(feature = "inline", inline)]
22241        #[cfg_attr(feature = "inline_always", inline(always))]
22242        pub unsafe fn IsTexture(&self, texture: GLuint) -> GLboolean {
22243            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22244            {
22245                trace!("calling gl.IsTexture({:?});", texture);
22246            }
22247            let out = call_atomic_ptr_1arg("glIsTexture", &self.glIsTexture_p, texture);
22248            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22249            {
22250                self.automatic_glGetError("glIsTexture");
22251            }
22252            out
22253        }
22254        #[doc(hidden)]
22255        pub unsafe fn IsTexture_load_with_dyn(
22256            &self,
22257            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22258        ) -> bool {
22259            load_dyn_name_atomic_ptr(get_proc_address, b"glIsTexture\0", &self.glIsTexture_p)
22260        }
22261        #[inline]
22262        #[doc(hidden)]
22263        pub fn IsTexture_is_loaded(&self) -> bool {
22264            !self.glIsTexture_p.load(RELAX).is_null()
22265        }
22266        /// [glIsTransformFeedback](http://docs.gl/gl4/glIsTransformFeedback)(id)
22267        #[cfg_attr(feature = "inline", inline)]
22268        #[cfg_attr(feature = "inline_always", inline(always))]
22269        pub unsafe fn IsTransformFeedback(&self, id: GLuint) -> GLboolean {
22270            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22271            {
22272                trace!("calling gl.IsTransformFeedback({:?});", id);
22273            }
22274            let out =
22275                call_atomic_ptr_1arg("glIsTransformFeedback", &self.glIsTransformFeedback_p, id);
22276            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22277            {
22278                self.automatic_glGetError("glIsTransformFeedback");
22279            }
22280            out
22281        }
22282        #[doc(hidden)]
22283        pub unsafe fn IsTransformFeedback_load_with_dyn(
22284            &self,
22285            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22286        ) -> bool {
22287            load_dyn_name_atomic_ptr(
22288                get_proc_address,
22289                b"glIsTransformFeedback\0",
22290                &self.glIsTransformFeedback_p,
22291            )
22292        }
22293        #[inline]
22294        #[doc(hidden)]
22295        pub fn IsTransformFeedback_is_loaded(&self) -> bool {
22296            !self.glIsTransformFeedback_p.load(RELAX).is_null()
22297        }
22298        /// [glIsVertexArray](http://docs.gl/gl4/glIsVertexArray)(array)
22299        #[cfg_attr(feature = "inline", inline)]
22300        #[cfg_attr(feature = "inline_always", inline(always))]
22301        pub unsafe fn IsVertexArray(&self, array: GLuint) -> GLboolean {
22302            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22303            {
22304                trace!("calling gl.IsVertexArray({:?});", array);
22305            }
22306            let out = call_atomic_ptr_1arg("glIsVertexArray", &self.glIsVertexArray_p, array);
22307            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22308            {
22309                self.automatic_glGetError("glIsVertexArray");
22310            }
22311            out
22312        }
22313        #[doc(hidden)]
22314        pub unsafe fn IsVertexArray_load_with_dyn(
22315            &self,
22316            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22317        ) -> bool {
22318            load_dyn_name_atomic_ptr(
22319                get_proc_address,
22320                b"glIsVertexArray\0",
22321                &self.glIsVertexArray_p,
22322            )
22323        }
22324        #[inline]
22325        #[doc(hidden)]
22326        pub fn IsVertexArray_is_loaded(&self) -> bool {
22327            !self.glIsVertexArray_p.load(RELAX).is_null()
22328        }
22329        /// [glIsVertexArrayAPPLE](http://docs.gl/gl4/glIsVertexArrayAPPLE)(array)
22330        /// * alias of: [`glIsVertexArray`]
22331        #[cfg_attr(feature = "inline", inline)]
22332        #[cfg_attr(feature = "inline_always", inline(always))]
22333        pub unsafe fn IsVertexArrayAPPLE(&self, array: GLuint) -> GLboolean {
22334            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22335            {
22336                trace!("calling gl.IsVertexArrayAPPLE({:?});", array);
22337            }
22338            let out =
22339                call_atomic_ptr_1arg("glIsVertexArrayAPPLE", &self.glIsVertexArrayAPPLE_p, array);
22340            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22341            {
22342                self.automatic_glGetError("glIsVertexArrayAPPLE");
22343            }
22344            out
22345        }
22346        #[doc(hidden)]
22347        pub unsafe fn IsVertexArrayAPPLE_load_with_dyn(
22348            &self,
22349            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22350        ) -> bool {
22351            load_dyn_name_atomic_ptr(
22352                get_proc_address,
22353                b"glIsVertexArrayAPPLE\0",
22354                &self.glIsVertexArrayAPPLE_p,
22355            )
22356        }
22357        #[inline]
22358        #[doc(hidden)]
22359        pub fn IsVertexArrayAPPLE_is_loaded(&self) -> bool {
22360            !self.glIsVertexArrayAPPLE_p.load(RELAX).is_null()
22361        }
22362        /// [glIsVertexArrayOES](http://docs.gl/gl4/glIsVertexArrayOES)(array)
22363        /// * alias of: [`glIsVertexArray`]
22364        #[cfg_attr(feature = "inline", inline)]
22365        #[cfg_attr(feature = "inline_always", inline(always))]
22366        pub unsafe fn IsVertexArrayOES(&self, array: GLuint) -> GLboolean {
22367            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22368            {
22369                trace!("calling gl.IsVertexArrayOES({:?});", array);
22370            }
22371            let out = call_atomic_ptr_1arg("glIsVertexArrayOES", &self.glIsVertexArrayOES_p, array);
22372            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22373            {
22374                self.automatic_glGetError("glIsVertexArrayOES");
22375            }
22376            out
22377        }
22378        #[doc(hidden)]
22379        pub unsafe fn IsVertexArrayOES_load_with_dyn(
22380            &self,
22381            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22382        ) -> bool {
22383            load_dyn_name_atomic_ptr(
22384                get_proc_address,
22385                b"glIsVertexArrayOES\0",
22386                &self.glIsVertexArrayOES_p,
22387            )
22388        }
22389        #[inline]
22390        #[doc(hidden)]
22391        pub fn IsVertexArrayOES_is_loaded(&self) -> bool {
22392            !self.glIsVertexArrayOES_p.load(RELAX).is_null()
22393        }
22394        /// [glLineWidth](http://docs.gl/gl4/glLineWidth)(width)
22395        /// * `width` group: CheckedFloat32
22396        #[cfg_attr(feature = "inline", inline)]
22397        #[cfg_attr(feature = "inline_always", inline(always))]
22398        pub unsafe fn LineWidth(&self, width: GLfloat) {
22399            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22400            {
22401                trace!("calling gl.LineWidth({:?});", width);
22402            }
22403            let out = call_atomic_ptr_1arg("glLineWidth", &self.glLineWidth_p, width);
22404            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22405            {
22406                self.automatic_glGetError("glLineWidth");
22407            }
22408            out
22409        }
22410        #[doc(hidden)]
22411        pub unsafe fn LineWidth_load_with_dyn(
22412            &self,
22413            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22414        ) -> bool {
22415            load_dyn_name_atomic_ptr(get_proc_address, b"glLineWidth\0", &self.glLineWidth_p)
22416        }
22417        #[inline]
22418        #[doc(hidden)]
22419        pub fn LineWidth_is_loaded(&self) -> bool {
22420            !self.glLineWidth_p.load(RELAX).is_null()
22421        }
22422        /// [glLinkProgram](http://docs.gl/gl4/glLinkProgram)(program)
22423        #[cfg_attr(feature = "inline", inline)]
22424        #[cfg_attr(feature = "inline_always", inline(always))]
22425        pub unsafe fn LinkProgram(&self, program: GLuint) {
22426            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22427            {
22428                trace!("calling gl.LinkProgram({:?});", program);
22429            }
22430            let out = call_atomic_ptr_1arg("glLinkProgram", &self.glLinkProgram_p, program);
22431            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22432            {
22433                self.automatic_glGetError("glLinkProgram");
22434            }
22435            out
22436        }
22437        #[doc(hidden)]
22438        pub unsafe fn LinkProgram_load_with_dyn(
22439            &self,
22440            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22441        ) -> bool {
22442            load_dyn_name_atomic_ptr(get_proc_address, b"glLinkProgram\0", &self.glLinkProgram_p)
22443        }
22444        #[inline]
22445        #[doc(hidden)]
22446        pub fn LinkProgram_is_loaded(&self) -> bool {
22447            !self.glLinkProgram_p.load(RELAX).is_null()
22448        }
22449        /// [glLogicOp](http://docs.gl/gl4/glLogicOp)(opcode)
22450        /// * `opcode` group: LogicOp
22451        #[cfg_attr(feature = "inline", inline)]
22452        #[cfg_attr(feature = "inline_always", inline(always))]
22453        pub unsafe fn LogicOp(&self, opcode: GLenum) {
22454            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22455            {
22456                trace!("calling gl.LogicOp({:#X});", opcode);
22457            }
22458            let out = call_atomic_ptr_1arg("glLogicOp", &self.glLogicOp_p, opcode);
22459            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22460            {
22461                self.automatic_glGetError("glLogicOp");
22462            }
22463            out
22464        }
22465        #[doc(hidden)]
22466        pub unsafe fn LogicOp_load_with_dyn(
22467            &self,
22468            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22469        ) -> bool {
22470            load_dyn_name_atomic_ptr(get_proc_address, b"glLogicOp\0", &self.glLogicOp_p)
22471        }
22472        #[inline]
22473        #[doc(hidden)]
22474        pub fn LogicOp_is_loaded(&self) -> bool {
22475            !self.glLogicOp_p.load(RELAX).is_null()
22476        }
22477        /// [glMapBuffer](http://docs.gl/gl4/glMapBuffer)(target, access)
22478        /// * `target` group: BufferTargetARB
22479        /// * `access` group: BufferAccessARB
22480        #[cfg_attr(feature = "inline", inline)]
22481        #[cfg_attr(feature = "inline_always", inline(always))]
22482        pub unsafe fn MapBuffer(&self, target: GLenum, access: GLenum) -> *mut c_void {
22483            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22484            {
22485                trace!("calling gl.MapBuffer({:#X}, {:#X});", target, access);
22486            }
22487            let out = call_atomic_ptr_2arg("glMapBuffer", &self.glMapBuffer_p, target, access);
22488            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22489            {
22490                self.automatic_glGetError("glMapBuffer");
22491            }
22492            out
22493        }
22494        #[doc(hidden)]
22495        pub unsafe fn MapBuffer_load_with_dyn(
22496            &self,
22497            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22498        ) -> bool {
22499            load_dyn_name_atomic_ptr(get_proc_address, b"glMapBuffer\0", &self.glMapBuffer_p)
22500        }
22501        #[inline]
22502        #[doc(hidden)]
22503        pub fn MapBuffer_is_loaded(&self) -> bool {
22504            !self.glMapBuffer_p.load(RELAX).is_null()
22505        }
22506        /// [glMapBufferRange](http://docs.gl/gl4/glMapBufferRange)(target, offset, length, access)
22507        /// * `target` group: BufferTargetARB
22508        /// * `offset` group: BufferOffset
22509        /// * `length` group: BufferSize
22510        /// * `access` group: MapBufferAccessMask
22511        #[cfg_attr(feature = "inline", inline)]
22512        #[cfg_attr(feature = "inline_always", inline(always))]
22513        pub unsafe fn MapBufferRange(
22514            &self,
22515            target: GLenum,
22516            offset: GLintptr,
22517            length: GLsizeiptr,
22518            access: GLbitfield,
22519        ) -> *mut c_void {
22520            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22521            {
22522                trace!(
22523                    "calling gl.MapBufferRange({:#X}, {:?}, {:?}, {:?});",
22524                    target,
22525                    offset,
22526                    length,
22527                    access
22528                );
22529            }
22530            let out = call_atomic_ptr_4arg(
22531                "glMapBufferRange",
22532                &self.glMapBufferRange_p,
22533                target,
22534                offset,
22535                length,
22536                access,
22537            );
22538            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22539            {
22540                self.automatic_glGetError("glMapBufferRange");
22541            }
22542            out
22543        }
22544        #[doc(hidden)]
22545        pub unsafe fn MapBufferRange_load_with_dyn(
22546            &self,
22547            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22548        ) -> bool {
22549            load_dyn_name_atomic_ptr(
22550                get_proc_address,
22551                b"glMapBufferRange\0",
22552                &self.glMapBufferRange_p,
22553            )
22554        }
22555        #[inline]
22556        #[doc(hidden)]
22557        pub fn MapBufferRange_is_loaded(&self) -> bool {
22558            !self.glMapBufferRange_p.load(RELAX).is_null()
22559        }
22560        /// [glMapNamedBuffer](http://docs.gl/gl4/glMapNamedBuffer)(buffer, access)
22561        /// * `access` group: BufferAccessARB
22562        #[cfg_attr(feature = "inline", inline)]
22563        #[cfg_attr(feature = "inline_always", inline(always))]
22564        pub unsafe fn MapNamedBuffer(&self, buffer: GLuint, access: GLenum) -> *mut c_void {
22565            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22566            {
22567                trace!("calling gl.MapNamedBuffer({:?}, {:#X});", buffer, access);
22568            }
22569            let out =
22570                call_atomic_ptr_2arg("glMapNamedBuffer", &self.glMapNamedBuffer_p, buffer, access);
22571            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22572            {
22573                self.automatic_glGetError("glMapNamedBuffer");
22574            }
22575            out
22576        }
22577        #[doc(hidden)]
22578        pub unsafe fn MapNamedBuffer_load_with_dyn(
22579            &self,
22580            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22581        ) -> bool {
22582            load_dyn_name_atomic_ptr(
22583                get_proc_address,
22584                b"glMapNamedBuffer\0",
22585                &self.glMapNamedBuffer_p,
22586            )
22587        }
22588        #[inline]
22589        #[doc(hidden)]
22590        pub fn MapNamedBuffer_is_loaded(&self) -> bool {
22591            !self.glMapNamedBuffer_p.load(RELAX).is_null()
22592        }
22593        /// [glMapNamedBufferRange](http://docs.gl/gl4/glMapNamedBufferRange)(buffer, offset, length, access)
22594        /// * `length` group: BufferSize
22595        /// * `access` group: MapBufferAccessMask
22596        #[cfg_attr(feature = "inline", inline)]
22597        #[cfg_attr(feature = "inline_always", inline(always))]
22598        pub unsafe fn MapNamedBufferRange(
22599            &self,
22600            buffer: GLuint,
22601            offset: GLintptr,
22602            length: GLsizeiptr,
22603            access: GLbitfield,
22604        ) -> *mut c_void {
22605            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22606            {
22607                trace!(
22608                    "calling gl.MapNamedBufferRange({:?}, {:?}, {:?}, {:?});",
22609                    buffer,
22610                    offset,
22611                    length,
22612                    access
22613                );
22614            }
22615            let out = call_atomic_ptr_4arg(
22616                "glMapNamedBufferRange",
22617                &self.glMapNamedBufferRange_p,
22618                buffer,
22619                offset,
22620                length,
22621                access,
22622            );
22623            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22624            {
22625                self.automatic_glGetError("glMapNamedBufferRange");
22626            }
22627            out
22628        }
22629        #[doc(hidden)]
22630        pub unsafe fn MapNamedBufferRange_load_with_dyn(
22631            &self,
22632            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22633        ) -> bool {
22634            load_dyn_name_atomic_ptr(
22635                get_proc_address,
22636                b"glMapNamedBufferRange\0",
22637                &self.glMapNamedBufferRange_p,
22638            )
22639        }
22640        #[inline]
22641        #[doc(hidden)]
22642        pub fn MapNamedBufferRange_is_loaded(&self) -> bool {
22643            !self.glMapNamedBufferRange_p.load(RELAX).is_null()
22644        }
22645        /// [glMaxShaderCompilerThreadsARB](http://docs.gl/gl4/glMaxShaderCompilerThreadsARB)(count)
22646        /// * alias of: [`glMaxShaderCompilerThreadsKHR`]
22647        #[cfg_attr(feature = "inline", inline)]
22648        #[cfg_attr(feature = "inline_always", inline(always))]
22649        pub unsafe fn MaxShaderCompilerThreadsARB(&self, count: GLuint) {
22650            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22651            {
22652                trace!("calling gl.MaxShaderCompilerThreadsARB({:?});", count);
22653            }
22654            let out = call_atomic_ptr_1arg(
22655                "glMaxShaderCompilerThreadsARB",
22656                &self.glMaxShaderCompilerThreadsARB_p,
22657                count,
22658            );
22659            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22660            {
22661                self.automatic_glGetError("glMaxShaderCompilerThreadsARB");
22662            }
22663            out
22664        }
22665        #[doc(hidden)]
22666        pub unsafe fn MaxShaderCompilerThreadsARB_load_with_dyn(
22667            &self,
22668            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22669        ) -> bool {
22670            load_dyn_name_atomic_ptr(
22671                get_proc_address,
22672                b"glMaxShaderCompilerThreadsARB\0",
22673                &self.glMaxShaderCompilerThreadsARB_p,
22674            )
22675        }
22676        #[inline]
22677        #[doc(hidden)]
22678        pub fn MaxShaderCompilerThreadsARB_is_loaded(&self) -> bool {
22679            !self.glMaxShaderCompilerThreadsARB_p.load(RELAX).is_null()
22680        }
22681        /// [glMaxShaderCompilerThreadsKHR](http://docs.gl/gl4/glMaxShaderCompilerThreadsKHR)(count)
22682        #[cfg_attr(feature = "inline", inline)]
22683        #[cfg_attr(feature = "inline_always", inline(always))]
22684        pub unsafe fn MaxShaderCompilerThreadsKHR(&self, count: GLuint) {
22685            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22686            {
22687                trace!("calling gl.MaxShaderCompilerThreadsKHR({:?});", count);
22688            }
22689            let out = call_atomic_ptr_1arg(
22690                "glMaxShaderCompilerThreadsKHR",
22691                &self.glMaxShaderCompilerThreadsKHR_p,
22692                count,
22693            );
22694            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22695            {
22696                self.automatic_glGetError("glMaxShaderCompilerThreadsKHR");
22697            }
22698            out
22699        }
22700        #[doc(hidden)]
22701        pub unsafe fn MaxShaderCompilerThreadsKHR_load_with_dyn(
22702            &self,
22703            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22704        ) -> bool {
22705            load_dyn_name_atomic_ptr(
22706                get_proc_address,
22707                b"glMaxShaderCompilerThreadsKHR\0",
22708                &self.glMaxShaderCompilerThreadsKHR_p,
22709            )
22710        }
22711        #[inline]
22712        #[doc(hidden)]
22713        pub fn MaxShaderCompilerThreadsKHR_is_loaded(&self) -> bool {
22714            !self.glMaxShaderCompilerThreadsKHR_p.load(RELAX).is_null()
22715        }
22716        /// [glMemoryBarrier](http://docs.gl/gl4/glMemoryBarrier)(barriers)
22717        /// * `barriers` group: MemoryBarrierMask
22718        #[cfg_attr(feature = "inline", inline)]
22719        #[cfg_attr(feature = "inline_always", inline(always))]
22720        pub unsafe fn MemoryBarrier(&self, barriers: GLbitfield) {
22721            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22722            {
22723                trace!("calling gl.MemoryBarrier({:?});", barriers);
22724            }
22725            let out = call_atomic_ptr_1arg("glMemoryBarrier", &self.glMemoryBarrier_p, barriers);
22726            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22727            {
22728                self.automatic_glGetError("glMemoryBarrier");
22729            }
22730            out
22731        }
22732        #[doc(hidden)]
22733        pub unsafe fn MemoryBarrier_load_with_dyn(
22734            &self,
22735            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22736        ) -> bool {
22737            load_dyn_name_atomic_ptr(
22738                get_proc_address,
22739                b"glMemoryBarrier\0",
22740                &self.glMemoryBarrier_p,
22741            )
22742        }
22743        #[inline]
22744        #[doc(hidden)]
22745        pub fn MemoryBarrier_is_loaded(&self) -> bool {
22746            !self.glMemoryBarrier_p.load(RELAX).is_null()
22747        }
22748        /// [glMemoryBarrierByRegion](http://docs.gl/gl4/glMemoryBarrierByRegion)(barriers)
22749        /// * `barriers` group: MemoryBarrierMask
22750        #[cfg_attr(feature = "inline", inline)]
22751        #[cfg_attr(feature = "inline_always", inline(always))]
22752        pub unsafe fn MemoryBarrierByRegion(&self, barriers: GLbitfield) {
22753            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22754            {
22755                trace!("calling gl.MemoryBarrierByRegion({:?});", barriers);
22756            }
22757            let out = call_atomic_ptr_1arg(
22758                "glMemoryBarrierByRegion",
22759                &self.glMemoryBarrierByRegion_p,
22760                barriers,
22761            );
22762            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22763            {
22764                self.automatic_glGetError("glMemoryBarrierByRegion");
22765            }
22766            out
22767        }
22768        #[doc(hidden)]
22769        pub unsafe fn MemoryBarrierByRegion_load_with_dyn(
22770            &self,
22771            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22772        ) -> bool {
22773            load_dyn_name_atomic_ptr(
22774                get_proc_address,
22775                b"glMemoryBarrierByRegion\0",
22776                &self.glMemoryBarrierByRegion_p,
22777            )
22778        }
22779        #[inline]
22780        #[doc(hidden)]
22781        pub fn MemoryBarrierByRegion_is_loaded(&self) -> bool {
22782            !self.glMemoryBarrierByRegion_p.load(RELAX).is_null()
22783        }
22784        /// [glMinSampleShading](http://docs.gl/gl4/glMinSampleShading)(value)
22785        /// * `value` group: ColorF
22786        #[cfg_attr(feature = "inline", inline)]
22787        #[cfg_attr(feature = "inline_always", inline(always))]
22788        pub unsafe fn MinSampleShading(&self, value: GLfloat) {
22789            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22790            {
22791                trace!("calling gl.MinSampleShading({:?});", value);
22792            }
22793            let out = call_atomic_ptr_1arg("glMinSampleShading", &self.glMinSampleShading_p, value);
22794            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22795            {
22796                self.automatic_glGetError("glMinSampleShading");
22797            }
22798            out
22799        }
22800        #[doc(hidden)]
22801        pub unsafe fn MinSampleShading_load_with_dyn(
22802            &self,
22803            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22804        ) -> bool {
22805            load_dyn_name_atomic_ptr(
22806                get_proc_address,
22807                b"glMinSampleShading\0",
22808                &self.glMinSampleShading_p,
22809            )
22810        }
22811        #[inline]
22812        #[doc(hidden)]
22813        pub fn MinSampleShading_is_loaded(&self) -> bool {
22814            !self.glMinSampleShading_p.load(RELAX).is_null()
22815        }
22816        /// [glMultiDrawArrays](http://docs.gl/gl4/glMultiDrawArrays)(mode, first, count, drawcount)
22817        /// * `mode` group: PrimitiveType
22818        /// * `first` len: COMPSIZE(drawcount)
22819        /// * `count` len: COMPSIZE(drawcount)
22820        #[cfg_attr(feature = "inline", inline)]
22821        #[cfg_attr(feature = "inline_always", inline(always))]
22822        pub unsafe fn MultiDrawArrays(
22823            &self,
22824            mode: GLenum,
22825            first: *const GLint,
22826            count: *const GLsizei,
22827            drawcount: GLsizei,
22828        ) {
22829            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22830            {
22831                trace!(
22832                    "calling gl.MultiDrawArrays({:#X}, {:p}, {:p}, {:?});",
22833                    mode,
22834                    first,
22835                    count,
22836                    drawcount
22837                );
22838            }
22839            let out = call_atomic_ptr_4arg(
22840                "glMultiDrawArrays",
22841                &self.glMultiDrawArrays_p,
22842                mode,
22843                first,
22844                count,
22845                drawcount,
22846            );
22847            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22848            {
22849                self.automatic_glGetError("glMultiDrawArrays");
22850            }
22851            out
22852        }
22853        #[doc(hidden)]
22854        pub unsafe fn MultiDrawArrays_load_with_dyn(
22855            &self,
22856            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22857        ) -> bool {
22858            load_dyn_name_atomic_ptr(
22859                get_proc_address,
22860                b"glMultiDrawArrays\0",
22861                &self.glMultiDrawArrays_p,
22862            )
22863        }
22864        #[inline]
22865        #[doc(hidden)]
22866        pub fn MultiDrawArrays_is_loaded(&self) -> bool {
22867            !self.glMultiDrawArrays_p.load(RELAX).is_null()
22868        }
22869        /// [glMultiDrawArraysIndirect](http://docs.gl/gl4/glMultiDrawArraysIndirect)(mode, indirect, drawcount, stride)
22870        /// * `mode` group: PrimitiveType
22871        /// * `indirect` len: COMPSIZE(drawcount,stride)
22872        #[cfg_attr(feature = "inline", inline)]
22873        #[cfg_attr(feature = "inline_always", inline(always))]
22874        pub unsafe fn MultiDrawArraysIndirect(
22875            &self,
22876            mode: GLenum,
22877            indirect: *const c_void,
22878            drawcount: GLsizei,
22879            stride: GLsizei,
22880        ) {
22881            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22882            {
22883                trace!(
22884                    "calling gl.MultiDrawArraysIndirect({:#X}, {:p}, {:?}, {:?});",
22885                    mode,
22886                    indirect,
22887                    drawcount,
22888                    stride
22889                );
22890            }
22891            let out = call_atomic_ptr_4arg(
22892                "glMultiDrawArraysIndirect",
22893                &self.glMultiDrawArraysIndirect_p,
22894                mode,
22895                indirect,
22896                drawcount,
22897                stride,
22898            );
22899            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22900            {
22901                self.automatic_glGetError("glMultiDrawArraysIndirect");
22902            }
22903            out
22904        }
22905        #[doc(hidden)]
22906        pub unsafe fn MultiDrawArraysIndirect_load_with_dyn(
22907            &self,
22908            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22909        ) -> bool {
22910            load_dyn_name_atomic_ptr(
22911                get_proc_address,
22912                b"glMultiDrawArraysIndirect\0",
22913                &self.glMultiDrawArraysIndirect_p,
22914            )
22915        }
22916        #[inline]
22917        #[doc(hidden)]
22918        pub fn MultiDrawArraysIndirect_is_loaded(&self) -> bool {
22919            !self.glMultiDrawArraysIndirect_p.load(RELAX).is_null()
22920        }
22921        /// [glMultiDrawArraysIndirectCount](http://docs.gl/gl4/glMultiDrawArraysIndirectCount)(mode, indirect, drawcount, maxdrawcount, stride)
22922        /// * `mode` group: PrimitiveType
22923        #[cfg_attr(feature = "inline", inline)]
22924        #[cfg_attr(feature = "inline_always", inline(always))]
22925        pub unsafe fn MultiDrawArraysIndirectCount(
22926            &self,
22927            mode: GLenum,
22928            indirect: *const c_void,
22929            drawcount: GLintptr,
22930            maxdrawcount: GLsizei,
22931            stride: GLsizei,
22932        ) {
22933            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22934            {
22935                trace!(
22936                    "calling gl.MultiDrawArraysIndirectCount({:#X}, {:p}, {:?}, {:?}, {:?});",
22937                    mode,
22938                    indirect,
22939                    drawcount,
22940                    maxdrawcount,
22941                    stride
22942                );
22943            }
22944            let out = call_atomic_ptr_5arg(
22945                "glMultiDrawArraysIndirectCount",
22946                &self.glMultiDrawArraysIndirectCount_p,
22947                mode,
22948                indirect,
22949                drawcount,
22950                maxdrawcount,
22951                stride,
22952            );
22953            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22954            {
22955                self.automatic_glGetError("glMultiDrawArraysIndirectCount");
22956            }
22957            out
22958        }
22959        #[doc(hidden)]
22960        pub unsafe fn MultiDrawArraysIndirectCount_load_with_dyn(
22961            &self,
22962            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22963        ) -> bool {
22964            load_dyn_name_atomic_ptr(
22965                get_proc_address,
22966                b"glMultiDrawArraysIndirectCount\0",
22967                &self.glMultiDrawArraysIndirectCount_p,
22968            )
22969        }
22970        #[inline]
22971        #[doc(hidden)]
22972        pub fn MultiDrawArraysIndirectCount_is_loaded(&self) -> bool {
22973            !self.glMultiDrawArraysIndirectCount_p.load(RELAX).is_null()
22974        }
22975        /// [glMultiDrawElements](http://docs.gl/gl4/glMultiDrawElements)(mode, count, type_, indices, drawcount)
22976        /// * `mode` group: PrimitiveType
22977        /// * `count` len: COMPSIZE(drawcount)
22978        /// * `type_` group: DrawElementsType
22979        /// * `indices` len: COMPSIZE(drawcount)
22980        #[cfg_attr(feature = "inline", inline)]
22981        #[cfg_attr(feature = "inline_always", inline(always))]
22982        pub unsafe fn MultiDrawElements(
22983            &self,
22984            mode: GLenum,
22985            count: *const GLsizei,
22986            type_: GLenum,
22987            indices: *const *const c_void,
22988            drawcount: GLsizei,
22989        ) {
22990            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22991            {
22992                trace!(
22993                    "calling gl.MultiDrawElements({:#X}, {:p}, {:#X}, {:p}, {:?});",
22994                    mode,
22995                    count,
22996                    type_,
22997                    indices,
22998                    drawcount
22999                );
23000            }
23001            let out = call_atomic_ptr_5arg(
23002                "glMultiDrawElements",
23003                &self.glMultiDrawElements_p,
23004                mode,
23005                count,
23006                type_,
23007                indices,
23008                drawcount,
23009            );
23010            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23011            {
23012                self.automatic_glGetError("glMultiDrawElements");
23013            }
23014            out
23015        }
23016        #[doc(hidden)]
23017        pub unsafe fn MultiDrawElements_load_with_dyn(
23018            &self,
23019            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23020        ) -> bool {
23021            load_dyn_name_atomic_ptr(
23022                get_proc_address,
23023                b"glMultiDrawElements\0",
23024                &self.glMultiDrawElements_p,
23025            )
23026        }
23027        #[inline]
23028        #[doc(hidden)]
23029        pub fn MultiDrawElements_is_loaded(&self) -> bool {
23030            !self.glMultiDrawElements_p.load(RELAX).is_null()
23031        }
23032        /// [glMultiDrawElementsBaseVertex](http://docs.gl/gl4/glMultiDrawElementsBaseVertex)(mode, count, type_, indices, drawcount, basevertex)
23033        /// * `mode` group: PrimitiveType
23034        /// * `count` len: COMPSIZE(drawcount)
23035        /// * `type_` group: DrawElementsType
23036        /// * `indices` len: COMPSIZE(drawcount)
23037        /// * `basevertex` len: COMPSIZE(drawcount)
23038        #[cfg_attr(feature = "inline", inline)]
23039        #[cfg_attr(feature = "inline_always", inline(always))]
23040        pub unsafe fn MultiDrawElementsBaseVertex(
23041            &self,
23042            mode: GLenum,
23043            count: *const GLsizei,
23044            type_: GLenum,
23045            indices: *const *const c_void,
23046            drawcount: GLsizei,
23047            basevertex: *const GLint,
23048        ) {
23049            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23050            {
23051                trace!(
23052                    "calling gl.MultiDrawElementsBaseVertex({:#X}, {:p}, {:#X}, {:p}, {:?}, {:p});",
23053                    mode,
23054                    count,
23055                    type_,
23056                    indices,
23057                    drawcount,
23058                    basevertex
23059                );
23060            }
23061            let out = call_atomic_ptr_6arg(
23062                "glMultiDrawElementsBaseVertex",
23063                &self.glMultiDrawElementsBaseVertex_p,
23064                mode,
23065                count,
23066                type_,
23067                indices,
23068                drawcount,
23069                basevertex,
23070            );
23071            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23072            {
23073                self.automatic_glGetError("glMultiDrawElementsBaseVertex");
23074            }
23075            out
23076        }
23077        #[doc(hidden)]
23078        pub unsafe fn MultiDrawElementsBaseVertex_load_with_dyn(
23079            &self,
23080            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23081        ) -> bool {
23082            load_dyn_name_atomic_ptr(
23083                get_proc_address,
23084                b"glMultiDrawElementsBaseVertex\0",
23085                &self.glMultiDrawElementsBaseVertex_p,
23086            )
23087        }
23088        #[inline]
23089        #[doc(hidden)]
23090        pub fn MultiDrawElementsBaseVertex_is_loaded(&self) -> bool {
23091            !self.glMultiDrawElementsBaseVertex_p.load(RELAX).is_null()
23092        }
23093        /// [glMultiDrawElementsIndirect](http://docs.gl/gl4/glMultiDrawElementsIndirect)(mode, type_, indirect, drawcount, stride)
23094        /// * `mode` group: PrimitiveType
23095        /// * `type_` group: DrawElementsType
23096        /// * `indirect` len: COMPSIZE(drawcount,stride)
23097        #[cfg_attr(feature = "inline", inline)]
23098        #[cfg_attr(feature = "inline_always", inline(always))]
23099        pub unsafe fn MultiDrawElementsIndirect(
23100            &self,
23101            mode: GLenum,
23102            type_: GLenum,
23103            indirect: *const c_void,
23104            drawcount: GLsizei,
23105            stride: GLsizei,
23106        ) {
23107            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23108            {
23109                trace!(
23110                    "calling gl.MultiDrawElementsIndirect({:#X}, {:#X}, {:p}, {:?}, {:?});",
23111                    mode,
23112                    type_,
23113                    indirect,
23114                    drawcount,
23115                    stride
23116                );
23117            }
23118            let out = call_atomic_ptr_5arg(
23119                "glMultiDrawElementsIndirect",
23120                &self.glMultiDrawElementsIndirect_p,
23121                mode,
23122                type_,
23123                indirect,
23124                drawcount,
23125                stride,
23126            );
23127            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23128            {
23129                self.automatic_glGetError("glMultiDrawElementsIndirect");
23130            }
23131            out
23132        }
23133        #[doc(hidden)]
23134        pub unsafe fn MultiDrawElementsIndirect_load_with_dyn(
23135            &self,
23136            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23137        ) -> bool {
23138            load_dyn_name_atomic_ptr(
23139                get_proc_address,
23140                b"glMultiDrawElementsIndirect\0",
23141                &self.glMultiDrawElementsIndirect_p,
23142            )
23143        }
23144        #[inline]
23145        #[doc(hidden)]
23146        pub fn MultiDrawElementsIndirect_is_loaded(&self) -> bool {
23147            !self.glMultiDrawElementsIndirect_p.load(RELAX).is_null()
23148        }
23149        /// [glMultiDrawElementsIndirectCount](http://docs.gl/gl4/glMultiDrawElementsIndirectCount)(mode, type_, indirect, drawcount, maxdrawcount, stride)
23150        /// * `mode` group: PrimitiveType
23151        /// * `type_` group: DrawElementsType
23152        #[cfg_attr(feature = "inline", inline)]
23153        #[cfg_attr(feature = "inline_always", inline(always))]
23154        pub unsafe fn MultiDrawElementsIndirectCount(
23155            &self,
23156            mode: GLenum,
23157            type_: GLenum,
23158            indirect: *const c_void,
23159            drawcount: GLintptr,
23160            maxdrawcount: GLsizei,
23161            stride: GLsizei,
23162        ) {
23163            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23164            {
23165                trace!("calling gl.MultiDrawElementsIndirectCount({:#X}, {:#X}, {:p}, {:?}, {:?}, {:?});", mode, type_, indirect, drawcount, maxdrawcount, stride);
23166            }
23167            let out = call_atomic_ptr_6arg(
23168                "glMultiDrawElementsIndirectCount",
23169                &self.glMultiDrawElementsIndirectCount_p,
23170                mode,
23171                type_,
23172                indirect,
23173                drawcount,
23174                maxdrawcount,
23175                stride,
23176            );
23177            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23178            {
23179                self.automatic_glGetError("glMultiDrawElementsIndirectCount");
23180            }
23181            out
23182        }
23183        #[doc(hidden)]
23184        pub unsafe fn MultiDrawElementsIndirectCount_load_with_dyn(
23185            &self,
23186            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23187        ) -> bool {
23188            load_dyn_name_atomic_ptr(
23189                get_proc_address,
23190                b"glMultiDrawElementsIndirectCount\0",
23191                &self.glMultiDrawElementsIndirectCount_p,
23192            )
23193        }
23194        #[inline]
23195        #[doc(hidden)]
23196        pub fn MultiDrawElementsIndirectCount_is_loaded(&self) -> bool {
23197            !self
23198                .glMultiDrawElementsIndirectCount_p
23199                .load(RELAX)
23200                .is_null()
23201        }
23202        /// [glNamedBufferData](http://docs.gl/gl4/glNamedBufferData)(buffer, size, data, usage)
23203        /// * `size` group: BufferSize
23204        /// * `usage` group: VertexBufferObjectUsage
23205        #[cfg_attr(feature = "inline", inline)]
23206        #[cfg_attr(feature = "inline_always", inline(always))]
23207        pub unsafe fn NamedBufferData(
23208            &self,
23209            buffer: GLuint,
23210            size: GLsizeiptr,
23211            data: *const c_void,
23212            usage: GLenum,
23213        ) {
23214            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23215            {
23216                trace!(
23217                    "calling gl.NamedBufferData({:?}, {:?}, {:p}, {:#X});",
23218                    buffer,
23219                    size,
23220                    data,
23221                    usage
23222                );
23223            }
23224            let out = call_atomic_ptr_4arg(
23225                "glNamedBufferData",
23226                &self.glNamedBufferData_p,
23227                buffer,
23228                size,
23229                data,
23230                usage,
23231            );
23232            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23233            {
23234                self.automatic_glGetError("glNamedBufferData");
23235            }
23236            out
23237        }
23238        #[doc(hidden)]
23239        pub unsafe fn NamedBufferData_load_with_dyn(
23240            &self,
23241            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23242        ) -> bool {
23243            load_dyn_name_atomic_ptr(
23244                get_proc_address,
23245                b"glNamedBufferData\0",
23246                &self.glNamedBufferData_p,
23247            )
23248        }
23249        #[inline]
23250        #[doc(hidden)]
23251        pub fn NamedBufferData_is_loaded(&self) -> bool {
23252            !self.glNamedBufferData_p.load(RELAX).is_null()
23253        }
23254        /// [glNamedBufferStorage](http://docs.gl/gl4/glNamedBufferStorage)(buffer, size, data, flags)
23255        /// * `size` group: BufferSize
23256        /// * `data` len: size
23257        /// * `flags` group: BufferStorageMask
23258        #[cfg_attr(feature = "inline", inline)]
23259        #[cfg_attr(feature = "inline_always", inline(always))]
23260        pub unsafe fn NamedBufferStorage(
23261            &self,
23262            buffer: GLuint,
23263            size: GLsizeiptr,
23264            data: *const c_void,
23265            flags: GLbitfield,
23266        ) {
23267            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23268            {
23269                trace!(
23270                    "calling gl.NamedBufferStorage({:?}, {:?}, {:p}, {:?});",
23271                    buffer,
23272                    size,
23273                    data,
23274                    flags
23275                );
23276            }
23277            let out = call_atomic_ptr_4arg(
23278                "glNamedBufferStorage",
23279                &self.glNamedBufferStorage_p,
23280                buffer,
23281                size,
23282                data,
23283                flags,
23284            );
23285            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23286            {
23287                self.automatic_glGetError("glNamedBufferStorage");
23288            }
23289            out
23290        }
23291        #[doc(hidden)]
23292        pub unsafe fn NamedBufferStorage_load_with_dyn(
23293            &self,
23294            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23295        ) -> bool {
23296            load_dyn_name_atomic_ptr(
23297                get_proc_address,
23298                b"glNamedBufferStorage\0",
23299                &self.glNamedBufferStorage_p,
23300            )
23301        }
23302        #[inline]
23303        #[doc(hidden)]
23304        pub fn NamedBufferStorage_is_loaded(&self) -> bool {
23305            !self.glNamedBufferStorage_p.load(RELAX).is_null()
23306        }
23307        /// [glNamedBufferSubData](http://docs.gl/gl4/glNamedBufferSubData)(buffer, offset, size, data)
23308        /// * `size` group: BufferSize
23309        /// * `data` len: COMPSIZE(size)
23310        #[cfg_attr(feature = "inline", inline)]
23311        #[cfg_attr(feature = "inline_always", inline(always))]
23312        pub unsafe fn NamedBufferSubData(
23313            &self,
23314            buffer: GLuint,
23315            offset: GLintptr,
23316            size: GLsizeiptr,
23317            data: *const c_void,
23318        ) {
23319            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23320            {
23321                trace!(
23322                    "calling gl.NamedBufferSubData({:?}, {:?}, {:?}, {:p});",
23323                    buffer,
23324                    offset,
23325                    size,
23326                    data
23327                );
23328            }
23329            let out = call_atomic_ptr_4arg(
23330                "glNamedBufferSubData",
23331                &self.glNamedBufferSubData_p,
23332                buffer,
23333                offset,
23334                size,
23335                data,
23336            );
23337            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23338            {
23339                self.automatic_glGetError("glNamedBufferSubData");
23340            }
23341            out
23342        }
23343        #[doc(hidden)]
23344        pub unsafe fn NamedBufferSubData_load_with_dyn(
23345            &self,
23346            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23347        ) -> bool {
23348            load_dyn_name_atomic_ptr(
23349                get_proc_address,
23350                b"glNamedBufferSubData\0",
23351                &self.glNamedBufferSubData_p,
23352            )
23353        }
23354        #[inline]
23355        #[doc(hidden)]
23356        pub fn NamedBufferSubData_is_loaded(&self) -> bool {
23357            !self.glNamedBufferSubData_p.load(RELAX).is_null()
23358        }
23359        /// [glNamedFramebufferDrawBuffer](http://docs.gl/gl4/glNamedFramebufferDrawBuffer)(framebuffer, buf)
23360        /// * `buf` group: ColorBuffer
23361        #[cfg_attr(feature = "inline", inline)]
23362        #[cfg_attr(feature = "inline_always", inline(always))]
23363        pub unsafe fn NamedFramebufferDrawBuffer(&self, framebuffer: GLuint, buf: GLenum) {
23364            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23365            {
23366                trace!(
23367                    "calling gl.NamedFramebufferDrawBuffer({:?}, {:#X});",
23368                    framebuffer,
23369                    buf
23370                );
23371            }
23372            let out = call_atomic_ptr_2arg(
23373                "glNamedFramebufferDrawBuffer",
23374                &self.glNamedFramebufferDrawBuffer_p,
23375                framebuffer,
23376                buf,
23377            );
23378            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23379            {
23380                self.automatic_glGetError("glNamedFramebufferDrawBuffer");
23381            }
23382            out
23383        }
23384        #[doc(hidden)]
23385        pub unsafe fn NamedFramebufferDrawBuffer_load_with_dyn(
23386            &self,
23387            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23388        ) -> bool {
23389            load_dyn_name_atomic_ptr(
23390                get_proc_address,
23391                b"glNamedFramebufferDrawBuffer\0",
23392                &self.glNamedFramebufferDrawBuffer_p,
23393            )
23394        }
23395        #[inline]
23396        #[doc(hidden)]
23397        pub fn NamedFramebufferDrawBuffer_is_loaded(&self) -> bool {
23398            !self.glNamedFramebufferDrawBuffer_p.load(RELAX).is_null()
23399        }
23400        /// [glNamedFramebufferDrawBuffers](http://docs.gl/gl4/glNamedFramebufferDrawBuffers)(framebuffer, n, bufs)
23401        /// * `bufs` group: ColorBuffer
23402        #[cfg_attr(feature = "inline", inline)]
23403        #[cfg_attr(feature = "inline_always", inline(always))]
23404        pub unsafe fn NamedFramebufferDrawBuffers(
23405            &self,
23406            framebuffer: GLuint,
23407            n: GLsizei,
23408            bufs: *const GLenum,
23409        ) {
23410            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23411            {
23412                trace!(
23413                    "calling gl.NamedFramebufferDrawBuffers({:?}, {:?}, {:p});",
23414                    framebuffer,
23415                    n,
23416                    bufs
23417                );
23418            }
23419            let out = call_atomic_ptr_3arg(
23420                "glNamedFramebufferDrawBuffers",
23421                &self.glNamedFramebufferDrawBuffers_p,
23422                framebuffer,
23423                n,
23424                bufs,
23425            );
23426            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23427            {
23428                self.automatic_glGetError("glNamedFramebufferDrawBuffers");
23429            }
23430            out
23431        }
23432        #[doc(hidden)]
23433        pub unsafe fn NamedFramebufferDrawBuffers_load_with_dyn(
23434            &self,
23435            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23436        ) -> bool {
23437            load_dyn_name_atomic_ptr(
23438                get_proc_address,
23439                b"glNamedFramebufferDrawBuffers\0",
23440                &self.glNamedFramebufferDrawBuffers_p,
23441            )
23442        }
23443        #[inline]
23444        #[doc(hidden)]
23445        pub fn NamedFramebufferDrawBuffers_is_loaded(&self) -> bool {
23446            !self.glNamedFramebufferDrawBuffers_p.load(RELAX).is_null()
23447        }
23448        /// [glNamedFramebufferParameteri](http://docs.gl/gl4/glNamedFramebufferParameter)(framebuffer, pname, param)
23449        /// * `pname` group: FramebufferParameterName
23450        #[cfg_attr(feature = "inline", inline)]
23451        #[cfg_attr(feature = "inline_always", inline(always))]
23452        pub unsafe fn NamedFramebufferParameteri(
23453            &self,
23454            framebuffer: GLuint,
23455            pname: GLenum,
23456            param: GLint,
23457        ) {
23458            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23459            {
23460                trace!(
23461                    "calling gl.NamedFramebufferParameteri({:?}, {:#X}, {:?});",
23462                    framebuffer,
23463                    pname,
23464                    param
23465                );
23466            }
23467            let out = call_atomic_ptr_3arg(
23468                "glNamedFramebufferParameteri",
23469                &self.glNamedFramebufferParameteri_p,
23470                framebuffer,
23471                pname,
23472                param,
23473            );
23474            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23475            {
23476                self.automatic_glGetError("glNamedFramebufferParameteri");
23477            }
23478            out
23479        }
23480        #[doc(hidden)]
23481        pub unsafe fn NamedFramebufferParameteri_load_with_dyn(
23482            &self,
23483            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23484        ) -> bool {
23485            load_dyn_name_atomic_ptr(
23486                get_proc_address,
23487                b"glNamedFramebufferParameteri\0",
23488                &self.glNamedFramebufferParameteri_p,
23489            )
23490        }
23491        #[inline]
23492        #[doc(hidden)]
23493        pub fn NamedFramebufferParameteri_is_loaded(&self) -> bool {
23494            !self.glNamedFramebufferParameteri_p.load(RELAX).is_null()
23495        }
23496        /// [glNamedFramebufferReadBuffer](http://docs.gl/gl4/glNamedFramebufferReadBuffer)(framebuffer, src)
23497        /// * `src` group: ColorBuffer
23498        #[cfg_attr(feature = "inline", inline)]
23499        #[cfg_attr(feature = "inline_always", inline(always))]
23500        pub unsafe fn NamedFramebufferReadBuffer(&self, framebuffer: GLuint, src: GLenum) {
23501            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23502            {
23503                trace!(
23504                    "calling gl.NamedFramebufferReadBuffer({:?}, {:#X});",
23505                    framebuffer,
23506                    src
23507                );
23508            }
23509            let out = call_atomic_ptr_2arg(
23510                "glNamedFramebufferReadBuffer",
23511                &self.glNamedFramebufferReadBuffer_p,
23512                framebuffer,
23513                src,
23514            );
23515            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23516            {
23517                self.automatic_glGetError("glNamedFramebufferReadBuffer");
23518            }
23519            out
23520        }
23521        #[doc(hidden)]
23522        pub unsafe fn NamedFramebufferReadBuffer_load_with_dyn(
23523            &self,
23524            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23525        ) -> bool {
23526            load_dyn_name_atomic_ptr(
23527                get_proc_address,
23528                b"glNamedFramebufferReadBuffer\0",
23529                &self.glNamedFramebufferReadBuffer_p,
23530            )
23531        }
23532        #[inline]
23533        #[doc(hidden)]
23534        pub fn NamedFramebufferReadBuffer_is_loaded(&self) -> bool {
23535            !self.glNamedFramebufferReadBuffer_p.load(RELAX).is_null()
23536        }
23537        /// [glNamedFramebufferRenderbuffer](http://docs.gl/gl4/glNamedFramebufferRenderbuffer)(framebuffer, attachment, renderbuffertarget, renderbuffer)
23538        /// * `attachment` group: FramebufferAttachment
23539        /// * `renderbuffertarget` group: RenderbufferTarget
23540        #[cfg_attr(feature = "inline", inline)]
23541        #[cfg_attr(feature = "inline_always", inline(always))]
23542        pub unsafe fn NamedFramebufferRenderbuffer(
23543            &self,
23544            framebuffer: GLuint,
23545            attachment: GLenum,
23546            renderbuffertarget: GLenum,
23547            renderbuffer: GLuint,
23548        ) {
23549            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23550            {
23551                trace!(
23552                    "calling gl.NamedFramebufferRenderbuffer({:?}, {:#X}, {:#X}, {:?});",
23553                    framebuffer,
23554                    attachment,
23555                    renderbuffertarget,
23556                    renderbuffer
23557                );
23558            }
23559            let out = call_atomic_ptr_4arg(
23560                "glNamedFramebufferRenderbuffer",
23561                &self.glNamedFramebufferRenderbuffer_p,
23562                framebuffer,
23563                attachment,
23564                renderbuffertarget,
23565                renderbuffer,
23566            );
23567            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23568            {
23569                self.automatic_glGetError("glNamedFramebufferRenderbuffer");
23570            }
23571            out
23572        }
23573        #[doc(hidden)]
23574        pub unsafe fn NamedFramebufferRenderbuffer_load_with_dyn(
23575            &self,
23576            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23577        ) -> bool {
23578            load_dyn_name_atomic_ptr(
23579                get_proc_address,
23580                b"glNamedFramebufferRenderbuffer\0",
23581                &self.glNamedFramebufferRenderbuffer_p,
23582            )
23583        }
23584        #[inline]
23585        #[doc(hidden)]
23586        pub fn NamedFramebufferRenderbuffer_is_loaded(&self) -> bool {
23587            !self.glNamedFramebufferRenderbuffer_p.load(RELAX).is_null()
23588        }
23589        /// [glNamedFramebufferTexture](http://docs.gl/gl4/glNamedFramebufferTexture)(framebuffer, attachment, texture, level)
23590        /// * `attachment` group: FramebufferAttachment
23591        #[cfg_attr(feature = "inline", inline)]
23592        #[cfg_attr(feature = "inline_always", inline(always))]
23593        pub unsafe fn NamedFramebufferTexture(
23594            &self,
23595            framebuffer: GLuint,
23596            attachment: GLenum,
23597            texture: GLuint,
23598            level: GLint,
23599        ) {
23600            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23601            {
23602                trace!(
23603                    "calling gl.NamedFramebufferTexture({:?}, {:#X}, {:?}, {:?});",
23604                    framebuffer,
23605                    attachment,
23606                    texture,
23607                    level
23608                );
23609            }
23610            let out = call_atomic_ptr_4arg(
23611                "glNamedFramebufferTexture",
23612                &self.glNamedFramebufferTexture_p,
23613                framebuffer,
23614                attachment,
23615                texture,
23616                level,
23617            );
23618            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23619            {
23620                self.automatic_glGetError("glNamedFramebufferTexture");
23621            }
23622            out
23623        }
23624        #[doc(hidden)]
23625        pub unsafe fn NamedFramebufferTexture_load_with_dyn(
23626            &self,
23627            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23628        ) -> bool {
23629            load_dyn_name_atomic_ptr(
23630                get_proc_address,
23631                b"glNamedFramebufferTexture\0",
23632                &self.glNamedFramebufferTexture_p,
23633            )
23634        }
23635        #[inline]
23636        #[doc(hidden)]
23637        pub fn NamedFramebufferTexture_is_loaded(&self) -> bool {
23638            !self.glNamedFramebufferTexture_p.load(RELAX).is_null()
23639        }
23640        /// [glNamedFramebufferTextureLayer](http://docs.gl/gl4/glNamedFramebufferTextureLayer)(framebuffer, attachment, texture, level, layer)
23641        /// * `attachment` group: FramebufferAttachment
23642        #[cfg_attr(feature = "inline", inline)]
23643        #[cfg_attr(feature = "inline_always", inline(always))]
23644        pub unsafe fn NamedFramebufferTextureLayer(
23645            &self,
23646            framebuffer: GLuint,
23647            attachment: GLenum,
23648            texture: GLuint,
23649            level: GLint,
23650            layer: GLint,
23651        ) {
23652            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23653            {
23654                trace!(
23655                    "calling gl.NamedFramebufferTextureLayer({:?}, {:#X}, {:?}, {:?}, {:?});",
23656                    framebuffer,
23657                    attachment,
23658                    texture,
23659                    level,
23660                    layer
23661                );
23662            }
23663            let out = call_atomic_ptr_5arg(
23664                "glNamedFramebufferTextureLayer",
23665                &self.glNamedFramebufferTextureLayer_p,
23666                framebuffer,
23667                attachment,
23668                texture,
23669                level,
23670                layer,
23671            );
23672            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23673            {
23674                self.automatic_glGetError("glNamedFramebufferTextureLayer");
23675            }
23676            out
23677        }
23678        #[doc(hidden)]
23679        pub unsafe fn NamedFramebufferTextureLayer_load_with_dyn(
23680            &self,
23681            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23682        ) -> bool {
23683            load_dyn_name_atomic_ptr(
23684                get_proc_address,
23685                b"glNamedFramebufferTextureLayer\0",
23686                &self.glNamedFramebufferTextureLayer_p,
23687            )
23688        }
23689        #[inline]
23690        #[doc(hidden)]
23691        pub fn NamedFramebufferTextureLayer_is_loaded(&self) -> bool {
23692            !self.glNamedFramebufferTextureLayer_p.load(RELAX).is_null()
23693        }
23694        /// [glNamedRenderbufferStorage](http://docs.gl/gl4/glNamedRenderbufferStorage)(renderbuffer, internalformat, width, height)
23695        /// * `internalformat` group: InternalFormat
23696        #[cfg_attr(feature = "inline", inline)]
23697        #[cfg_attr(feature = "inline_always", inline(always))]
23698        pub unsafe fn NamedRenderbufferStorage(
23699            &self,
23700            renderbuffer: GLuint,
23701            internalformat: GLenum,
23702            width: GLsizei,
23703            height: GLsizei,
23704        ) {
23705            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23706            {
23707                trace!(
23708                    "calling gl.NamedRenderbufferStorage({:?}, {:#X}, {:?}, {:?});",
23709                    renderbuffer,
23710                    internalformat,
23711                    width,
23712                    height
23713                );
23714            }
23715            let out = call_atomic_ptr_4arg(
23716                "glNamedRenderbufferStorage",
23717                &self.glNamedRenderbufferStorage_p,
23718                renderbuffer,
23719                internalformat,
23720                width,
23721                height,
23722            );
23723            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23724            {
23725                self.automatic_glGetError("glNamedRenderbufferStorage");
23726            }
23727            out
23728        }
23729        #[doc(hidden)]
23730        pub unsafe fn NamedRenderbufferStorage_load_with_dyn(
23731            &self,
23732            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23733        ) -> bool {
23734            load_dyn_name_atomic_ptr(
23735                get_proc_address,
23736                b"glNamedRenderbufferStorage\0",
23737                &self.glNamedRenderbufferStorage_p,
23738            )
23739        }
23740        #[inline]
23741        #[doc(hidden)]
23742        pub fn NamedRenderbufferStorage_is_loaded(&self) -> bool {
23743            !self.glNamedRenderbufferStorage_p.load(RELAX).is_null()
23744        }
23745        /// [glNamedRenderbufferStorageMultisample](http://docs.gl/gl4/glNamedRenderbufferStorageMultisample)(renderbuffer, samples, internalformat, width, height)
23746        /// * `internalformat` group: InternalFormat
23747        #[cfg_attr(feature = "inline", inline)]
23748        #[cfg_attr(feature = "inline_always", inline(always))]
23749        pub unsafe fn NamedRenderbufferStorageMultisample(
23750            &self,
23751            renderbuffer: GLuint,
23752            samples: GLsizei,
23753            internalformat: GLenum,
23754            width: GLsizei,
23755            height: GLsizei,
23756        ) {
23757            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23758            {
23759                trace!("calling gl.NamedRenderbufferStorageMultisample({:?}, {:?}, {:#X}, {:?}, {:?});", renderbuffer, samples, internalformat, width, height);
23760            }
23761            let out = call_atomic_ptr_5arg(
23762                "glNamedRenderbufferStorageMultisample",
23763                &self.glNamedRenderbufferStorageMultisample_p,
23764                renderbuffer,
23765                samples,
23766                internalformat,
23767                width,
23768                height,
23769            );
23770            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23771            {
23772                self.automatic_glGetError("glNamedRenderbufferStorageMultisample");
23773            }
23774            out
23775        }
23776        #[doc(hidden)]
23777        pub unsafe fn NamedRenderbufferStorageMultisample_load_with_dyn(
23778            &self,
23779            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23780        ) -> bool {
23781            load_dyn_name_atomic_ptr(
23782                get_proc_address,
23783                b"glNamedRenderbufferStorageMultisample\0",
23784                &self.glNamedRenderbufferStorageMultisample_p,
23785            )
23786        }
23787        #[inline]
23788        #[doc(hidden)]
23789        pub fn NamedRenderbufferStorageMultisample_is_loaded(&self) -> bool {
23790            !self
23791                .glNamedRenderbufferStorageMultisample_p
23792                .load(RELAX)
23793                .is_null()
23794        }
23795        /// [glObjectLabel](http://docs.gl/gl4/glObjectLabel)(identifier, name, length, label)
23796        /// * `identifier` group: ObjectIdentifier
23797        /// * `label` len: COMPSIZE(label,length)
23798        #[cfg_attr(feature = "inline", inline)]
23799        #[cfg_attr(feature = "inline_always", inline(always))]
23800        pub unsafe fn ObjectLabel(
23801            &self,
23802            identifier: GLenum,
23803            name: GLuint,
23804            length: GLsizei,
23805            label: *const GLchar,
23806        ) {
23807            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23808            {
23809                trace!(
23810                    "calling gl.ObjectLabel({:#X}, {:?}, {:?}, {:p});",
23811                    identifier,
23812                    name,
23813                    length,
23814                    label
23815                );
23816            }
23817            let out = call_atomic_ptr_4arg(
23818                "glObjectLabel",
23819                &self.glObjectLabel_p,
23820                identifier,
23821                name,
23822                length,
23823                label,
23824            );
23825            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23826            {
23827                self.automatic_glGetError("glObjectLabel");
23828            }
23829            out
23830        }
23831        #[doc(hidden)]
23832        pub unsafe fn ObjectLabel_load_with_dyn(
23833            &self,
23834            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23835        ) -> bool {
23836            load_dyn_name_atomic_ptr(get_proc_address, b"glObjectLabel\0", &self.glObjectLabel_p)
23837        }
23838        #[inline]
23839        #[doc(hidden)]
23840        pub fn ObjectLabel_is_loaded(&self) -> bool {
23841            !self.glObjectLabel_p.load(RELAX).is_null()
23842        }
23843        /// [glObjectLabelKHR](http://docs.gl/gl4/glObjectLabelKHR)(identifier, name, length, label)
23844        /// * `identifier` group: ObjectIdentifier
23845        /// * alias of: [`glObjectLabel`]
23846        #[cfg_attr(feature = "inline", inline)]
23847        #[cfg_attr(feature = "inline_always", inline(always))]
23848        pub unsafe fn ObjectLabelKHR(
23849            &self,
23850            identifier: GLenum,
23851            name: GLuint,
23852            length: GLsizei,
23853            label: *const GLchar,
23854        ) {
23855            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23856            {
23857                trace!(
23858                    "calling gl.ObjectLabelKHR({:#X}, {:?}, {:?}, {:p});",
23859                    identifier,
23860                    name,
23861                    length,
23862                    label
23863                );
23864            }
23865            let out = call_atomic_ptr_4arg(
23866                "glObjectLabelKHR",
23867                &self.glObjectLabelKHR_p,
23868                identifier,
23869                name,
23870                length,
23871                label,
23872            );
23873            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23874            {
23875                self.automatic_glGetError("glObjectLabelKHR");
23876            }
23877            out
23878        }
23879        #[doc(hidden)]
23880        pub unsafe fn ObjectLabelKHR_load_with_dyn(
23881            &self,
23882            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23883        ) -> bool {
23884            load_dyn_name_atomic_ptr(
23885                get_proc_address,
23886                b"glObjectLabelKHR\0",
23887                &self.glObjectLabelKHR_p,
23888            )
23889        }
23890        #[inline]
23891        #[doc(hidden)]
23892        pub fn ObjectLabelKHR_is_loaded(&self) -> bool {
23893            !self.glObjectLabelKHR_p.load(RELAX).is_null()
23894        }
23895        /// [glObjectPtrLabel](http://docs.gl/gl4/glObjectPtrLabel)(ptr, length, label)
23896        /// * `label` len: COMPSIZE(label,length)
23897        #[cfg_attr(feature = "inline", inline)]
23898        #[cfg_attr(feature = "inline_always", inline(always))]
23899        pub unsafe fn ObjectPtrLabel(
23900            &self,
23901            ptr: *const c_void,
23902            length: GLsizei,
23903            label: *const GLchar,
23904        ) {
23905            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23906            {
23907                trace!(
23908                    "calling gl.ObjectPtrLabel({:p}, {:?}, {:p});",
23909                    ptr,
23910                    length,
23911                    label
23912                );
23913            }
23914            let out = call_atomic_ptr_3arg(
23915                "glObjectPtrLabel",
23916                &self.glObjectPtrLabel_p,
23917                ptr,
23918                length,
23919                label,
23920            );
23921            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23922            {
23923                self.automatic_glGetError("glObjectPtrLabel");
23924            }
23925            out
23926        }
23927        #[doc(hidden)]
23928        pub unsafe fn ObjectPtrLabel_load_with_dyn(
23929            &self,
23930            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23931        ) -> bool {
23932            load_dyn_name_atomic_ptr(
23933                get_proc_address,
23934                b"glObjectPtrLabel\0",
23935                &self.glObjectPtrLabel_p,
23936            )
23937        }
23938        #[inline]
23939        #[doc(hidden)]
23940        pub fn ObjectPtrLabel_is_loaded(&self) -> bool {
23941            !self.glObjectPtrLabel_p.load(RELAX).is_null()
23942        }
23943        /// [glObjectPtrLabelKHR](http://docs.gl/gl4/glObjectPtrLabelKHR)(ptr, length, label)
23944        /// * alias of: [`glObjectPtrLabel`]
23945        #[cfg_attr(feature = "inline", inline)]
23946        #[cfg_attr(feature = "inline_always", inline(always))]
23947        pub unsafe fn ObjectPtrLabelKHR(
23948            &self,
23949            ptr: *const c_void,
23950            length: GLsizei,
23951            label: *const GLchar,
23952        ) {
23953            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23954            {
23955                trace!(
23956                    "calling gl.ObjectPtrLabelKHR({:p}, {:?}, {:p});",
23957                    ptr,
23958                    length,
23959                    label
23960                );
23961            }
23962            let out = call_atomic_ptr_3arg(
23963                "glObjectPtrLabelKHR",
23964                &self.glObjectPtrLabelKHR_p,
23965                ptr,
23966                length,
23967                label,
23968            );
23969            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23970            {
23971                self.automatic_glGetError("glObjectPtrLabelKHR");
23972            }
23973            out
23974        }
23975        #[doc(hidden)]
23976        pub unsafe fn ObjectPtrLabelKHR_load_with_dyn(
23977            &self,
23978            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23979        ) -> bool {
23980            load_dyn_name_atomic_ptr(
23981                get_proc_address,
23982                b"glObjectPtrLabelKHR\0",
23983                &self.glObjectPtrLabelKHR_p,
23984            )
23985        }
23986        #[inline]
23987        #[doc(hidden)]
23988        pub fn ObjectPtrLabelKHR_is_loaded(&self) -> bool {
23989            !self.glObjectPtrLabelKHR_p.load(RELAX).is_null()
23990        }
23991        /// [glPatchParameterfv](http://docs.gl/gl4/glPatchParameter)(pname, values)
23992        /// * `pname` group: PatchParameterName
23993        /// * `values` len: COMPSIZE(pname)
23994        #[cfg_attr(feature = "inline", inline)]
23995        #[cfg_attr(feature = "inline_always", inline(always))]
23996        pub unsafe fn PatchParameterfv(&self, pname: GLenum, values: *const GLfloat) {
23997            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23998            {
23999                trace!("calling gl.PatchParameterfv({:#X}, {:p});", pname, values);
24000            }
24001            let out = call_atomic_ptr_2arg(
24002                "glPatchParameterfv",
24003                &self.glPatchParameterfv_p,
24004                pname,
24005                values,
24006            );
24007            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24008            {
24009                self.automatic_glGetError("glPatchParameterfv");
24010            }
24011            out
24012        }
24013        #[doc(hidden)]
24014        pub unsafe fn PatchParameterfv_load_with_dyn(
24015            &self,
24016            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24017        ) -> bool {
24018            load_dyn_name_atomic_ptr(
24019                get_proc_address,
24020                b"glPatchParameterfv\0",
24021                &self.glPatchParameterfv_p,
24022            )
24023        }
24024        #[inline]
24025        #[doc(hidden)]
24026        pub fn PatchParameterfv_is_loaded(&self) -> bool {
24027            !self.glPatchParameterfv_p.load(RELAX).is_null()
24028        }
24029        /// [glPatchParameteri](http://docs.gl/gl4/glPatchParameter)(pname, value)
24030        /// * `pname` group: PatchParameterName
24031        #[cfg_attr(feature = "inline", inline)]
24032        #[cfg_attr(feature = "inline_always", inline(always))]
24033        pub unsafe fn PatchParameteri(&self, pname: GLenum, value: GLint) {
24034            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24035            {
24036                trace!("calling gl.PatchParameteri({:#X}, {:?});", pname, value);
24037            }
24038            let out =
24039                call_atomic_ptr_2arg("glPatchParameteri", &self.glPatchParameteri_p, pname, value);
24040            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24041            {
24042                self.automatic_glGetError("glPatchParameteri");
24043            }
24044            out
24045        }
24046        #[doc(hidden)]
24047        pub unsafe fn PatchParameteri_load_with_dyn(
24048            &self,
24049            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24050        ) -> bool {
24051            load_dyn_name_atomic_ptr(
24052                get_proc_address,
24053                b"glPatchParameteri\0",
24054                &self.glPatchParameteri_p,
24055            )
24056        }
24057        #[inline]
24058        #[doc(hidden)]
24059        pub fn PatchParameteri_is_loaded(&self) -> bool {
24060            !self.glPatchParameteri_p.load(RELAX).is_null()
24061        }
24062        /// [glPauseTransformFeedback](http://docs.gl/gl4/glPauseTransformFeedback)()
24063        #[cfg_attr(feature = "inline", inline)]
24064        #[cfg_attr(feature = "inline_always", inline(always))]
24065        pub unsafe fn PauseTransformFeedback(&self) {
24066            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24067            {
24068                trace!("calling gl.PauseTransformFeedback();",);
24069            }
24070            let out =
24071                call_atomic_ptr_0arg("glPauseTransformFeedback", &self.glPauseTransformFeedback_p);
24072            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24073            {
24074                self.automatic_glGetError("glPauseTransformFeedback");
24075            }
24076            out
24077        }
24078        #[doc(hidden)]
24079        pub unsafe fn PauseTransformFeedback_load_with_dyn(
24080            &self,
24081            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24082        ) -> bool {
24083            load_dyn_name_atomic_ptr(
24084                get_proc_address,
24085                b"glPauseTransformFeedback\0",
24086                &self.glPauseTransformFeedback_p,
24087            )
24088        }
24089        #[inline]
24090        #[doc(hidden)]
24091        pub fn PauseTransformFeedback_is_loaded(&self) -> bool {
24092            !self.glPauseTransformFeedback_p.load(RELAX).is_null()
24093        }
24094        /// [glPixelStoref](http://docs.gl/gl4/glPixelStore)(pname, param)
24095        /// * `pname` group: PixelStoreParameter
24096        /// * `param` group: CheckedFloat32
24097        #[cfg_attr(feature = "inline", inline)]
24098        #[cfg_attr(feature = "inline_always", inline(always))]
24099        pub unsafe fn PixelStoref(&self, pname: GLenum, param: GLfloat) {
24100            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24101            {
24102                trace!("calling gl.PixelStoref({:#X}, {:?});", pname, param);
24103            }
24104            let out = call_atomic_ptr_2arg("glPixelStoref", &self.glPixelStoref_p, pname, param);
24105            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24106            {
24107                self.automatic_glGetError("glPixelStoref");
24108            }
24109            out
24110        }
24111        #[doc(hidden)]
24112        pub unsafe fn PixelStoref_load_with_dyn(
24113            &self,
24114            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24115        ) -> bool {
24116            load_dyn_name_atomic_ptr(get_proc_address, b"glPixelStoref\0", &self.glPixelStoref_p)
24117        }
24118        #[inline]
24119        #[doc(hidden)]
24120        pub fn PixelStoref_is_loaded(&self) -> bool {
24121            !self.glPixelStoref_p.load(RELAX).is_null()
24122        }
24123        /// [glPixelStorei](http://docs.gl/gl4/glPixelStore)(pname, param)
24124        /// * `pname` group: PixelStoreParameter
24125        /// * `param` group: CheckedInt32
24126        #[cfg_attr(feature = "inline", inline)]
24127        #[cfg_attr(feature = "inline_always", inline(always))]
24128        pub unsafe fn PixelStorei(&self, pname: GLenum, param: GLint) {
24129            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24130            {
24131                trace!("calling gl.PixelStorei({:#X}, {:?});", pname, param);
24132            }
24133            let out = call_atomic_ptr_2arg("glPixelStorei", &self.glPixelStorei_p, pname, param);
24134            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24135            {
24136                self.automatic_glGetError("glPixelStorei");
24137            }
24138            out
24139        }
24140        #[doc(hidden)]
24141        pub unsafe fn PixelStorei_load_with_dyn(
24142            &self,
24143            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24144        ) -> bool {
24145            load_dyn_name_atomic_ptr(get_proc_address, b"glPixelStorei\0", &self.glPixelStorei_p)
24146        }
24147        #[inline]
24148        #[doc(hidden)]
24149        pub fn PixelStorei_is_loaded(&self) -> bool {
24150            !self.glPixelStorei_p.load(RELAX).is_null()
24151        }
24152        /// [glPointParameterf](http://docs.gl/gl4/glPointParameter)(pname, param)
24153        /// * `pname` group: PointParameterNameARB
24154        /// * `param` group: CheckedFloat32
24155        #[cfg_attr(feature = "inline", inline)]
24156        #[cfg_attr(feature = "inline_always", inline(always))]
24157        pub unsafe fn PointParameterf(&self, pname: GLenum, param: GLfloat) {
24158            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24159            {
24160                trace!("calling gl.PointParameterf({:#X}, {:?});", pname, param);
24161            }
24162            let out =
24163                call_atomic_ptr_2arg("glPointParameterf", &self.glPointParameterf_p, pname, param);
24164            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24165            {
24166                self.automatic_glGetError("glPointParameterf");
24167            }
24168            out
24169        }
24170        #[doc(hidden)]
24171        pub unsafe fn PointParameterf_load_with_dyn(
24172            &self,
24173            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24174        ) -> bool {
24175            load_dyn_name_atomic_ptr(
24176                get_proc_address,
24177                b"glPointParameterf\0",
24178                &self.glPointParameterf_p,
24179            )
24180        }
24181        #[inline]
24182        #[doc(hidden)]
24183        pub fn PointParameterf_is_loaded(&self) -> bool {
24184            !self.glPointParameterf_p.load(RELAX).is_null()
24185        }
24186        /// [glPointParameterfv](http://docs.gl/gl4/glPointParameter)(pname, params)
24187        /// * `pname` group: PointParameterNameARB
24188        /// * `params` group: CheckedFloat32
24189        /// * `params` len: COMPSIZE(pname)
24190        #[cfg_attr(feature = "inline", inline)]
24191        #[cfg_attr(feature = "inline_always", inline(always))]
24192        pub unsafe fn PointParameterfv(&self, pname: GLenum, params: *const GLfloat) {
24193            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24194            {
24195                trace!("calling gl.PointParameterfv({:#X}, {:p});", pname, params);
24196            }
24197            let out = call_atomic_ptr_2arg(
24198                "glPointParameterfv",
24199                &self.glPointParameterfv_p,
24200                pname,
24201                params,
24202            );
24203            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24204            {
24205                self.automatic_glGetError("glPointParameterfv");
24206            }
24207            out
24208        }
24209        #[doc(hidden)]
24210        pub unsafe fn PointParameterfv_load_with_dyn(
24211            &self,
24212            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24213        ) -> bool {
24214            load_dyn_name_atomic_ptr(
24215                get_proc_address,
24216                b"glPointParameterfv\0",
24217                &self.glPointParameterfv_p,
24218            )
24219        }
24220        #[inline]
24221        #[doc(hidden)]
24222        pub fn PointParameterfv_is_loaded(&self) -> bool {
24223            !self.glPointParameterfv_p.load(RELAX).is_null()
24224        }
24225        /// [glPointParameteri](http://docs.gl/gl4/glPointParameter)(pname, param)
24226        /// * `pname` group: PointParameterNameARB
24227        #[cfg_attr(feature = "inline", inline)]
24228        #[cfg_attr(feature = "inline_always", inline(always))]
24229        pub unsafe fn PointParameteri(&self, pname: GLenum, param: GLint) {
24230            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24231            {
24232                trace!("calling gl.PointParameteri({:#X}, {:?});", pname, param);
24233            }
24234            let out =
24235                call_atomic_ptr_2arg("glPointParameteri", &self.glPointParameteri_p, pname, param);
24236            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24237            {
24238                self.automatic_glGetError("glPointParameteri");
24239            }
24240            out
24241        }
24242        #[doc(hidden)]
24243        pub unsafe fn PointParameteri_load_with_dyn(
24244            &self,
24245            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24246        ) -> bool {
24247            load_dyn_name_atomic_ptr(
24248                get_proc_address,
24249                b"glPointParameteri\0",
24250                &self.glPointParameteri_p,
24251            )
24252        }
24253        #[inline]
24254        #[doc(hidden)]
24255        pub fn PointParameteri_is_loaded(&self) -> bool {
24256            !self.glPointParameteri_p.load(RELAX).is_null()
24257        }
24258        /// [glPointParameteriv](http://docs.gl/gl4/glPointParameter)(pname, params)
24259        /// * `pname` group: PointParameterNameARB
24260        /// * `params` len: COMPSIZE(pname)
24261        #[cfg_attr(feature = "inline", inline)]
24262        #[cfg_attr(feature = "inline_always", inline(always))]
24263        pub unsafe fn PointParameteriv(&self, pname: GLenum, params: *const GLint) {
24264            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24265            {
24266                trace!("calling gl.PointParameteriv({:#X}, {:p});", pname, params);
24267            }
24268            let out = call_atomic_ptr_2arg(
24269                "glPointParameteriv",
24270                &self.glPointParameteriv_p,
24271                pname,
24272                params,
24273            );
24274            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24275            {
24276                self.automatic_glGetError("glPointParameteriv");
24277            }
24278            out
24279        }
24280        #[doc(hidden)]
24281        pub unsafe fn PointParameteriv_load_with_dyn(
24282            &self,
24283            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24284        ) -> bool {
24285            load_dyn_name_atomic_ptr(
24286                get_proc_address,
24287                b"glPointParameteriv\0",
24288                &self.glPointParameteriv_p,
24289            )
24290        }
24291        #[inline]
24292        #[doc(hidden)]
24293        pub fn PointParameteriv_is_loaded(&self) -> bool {
24294            !self.glPointParameteriv_p.load(RELAX).is_null()
24295        }
24296        /// [glPointSize](http://docs.gl/gl4/glPointSize)(size)
24297        /// * `size` group: CheckedFloat32
24298        #[cfg_attr(feature = "inline", inline)]
24299        #[cfg_attr(feature = "inline_always", inline(always))]
24300        pub unsafe fn PointSize(&self, size: GLfloat) {
24301            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24302            {
24303                trace!("calling gl.PointSize({:?});", size);
24304            }
24305            let out = call_atomic_ptr_1arg("glPointSize", &self.glPointSize_p, size);
24306            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24307            {
24308                self.automatic_glGetError("glPointSize");
24309            }
24310            out
24311        }
24312        #[doc(hidden)]
24313        pub unsafe fn PointSize_load_with_dyn(
24314            &self,
24315            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24316        ) -> bool {
24317            load_dyn_name_atomic_ptr(get_proc_address, b"glPointSize\0", &self.glPointSize_p)
24318        }
24319        #[inline]
24320        #[doc(hidden)]
24321        pub fn PointSize_is_loaded(&self) -> bool {
24322            !self.glPointSize_p.load(RELAX).is_null()
24323        }
24324        /// [glPolygonMode](http://docs.gl/gl4/glPolygonMode)(face, mode)
24325        /// * `face` group: MaterialFace
24326        /// * `mode` group: PolygonMode
24327        #[cfg_attr(feature = "inline", inline)]
24328        #[cfg_attr(feature = "inline_always", inline(always))]
24329        pub unsafe fn PolygonMode(&self, face: GLenum, mode: GLenum) {
24330            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24331            {
24332                trace!("calling gl.PolygonMode({:#X}, {:#X});", face, mode);
24333            }
24334            let out = call_atomic_ptr_2arg("glPolygonMode", &self.glPolygonMode_p, face, mode);
24335            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24336            {
24337                self.automatic_glGetError("glPolygonMode");
24338            }
24339            out
24340        }
24341        #[doc(hidden)]
24342        pub unsafe fn PolygonMode_load_with_dyn(
24343            &self,
24344            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24345        ) -> bool {
24346            load_dyn_name_atomic_ptr(get_proc_address, b"glPolygonMode\0", &self.glPolygonMode_p)
24347        }
24348        #[inline]
24349        #[doc(hidden)]
24350        pub fn PolygonMode_is_loaded(&self) -> bool {
24351            !self.glPolygonMode_p.load(RELAX).is_null()
24352        }
24353        /// [glPolygonOffset](http://docs.gl/gl4/glPolygonOffset)(factor, units)
24354        #[cfg_attr(feature = "inline", inline)]
24355        #[cfg_attr(feature = "inline_always", inline(always))]
24356        pub unsafe fn PolygonOffset(&self, factor: GLfloat, units: GLfloat) {
24357            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24358            {
24359                trace!("calling gl.PolygonOffset({:?}, {:?});", factor, units);
24360            }
24361            let out =
24362                call_atomic_ptr_2arg("glPolygonOffset", &self.glPolygonOffset_p, factor, units);
24363            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24364            {
24365                self.automatic_glGetError("glPolygonOffset");
24366            }
24367            out
24368        }
24369        #[doc(hidden)]
24370        pub unsafe fn PolygonOffset_load_with_dyn(
24371            &self,
24372            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24373        ) -> bool {
24374            load_dyn_name_atomic_ptr(
24375                get_proc_address,
24376                b"glPolygonOffset\0",
24377                &self.glPolygonOffset_p,
24378            )
24379        }
24380        #[inline]
24381        #[doc(hidden)]
24382        pub fn PolygonOffset_is_loaded(&self) -> bool {
24383            !self.glPolygonOffset_p.load(RELAX).is_null()
24384        }
24385        /// [glPolygonOffsetClamp](http://docs.gl/gl4/glPolygonOffsetClamp)(factor, units, clamp)
24386        #[cfg_attr(feature = "inline", inline)]
24387        #[cfg_attr(feature = "inline_always", inline(always))]
24388        pub unsafe fn PolygonOffsetClamp(&self, factor: GLfloat, units: GLfloat, clamp: GLfloat) {
24389            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24390            {
24391                trace!(
24392                    "calling gl.PolygonOffsetClamp({:?}, {:?}, {:?});",
24393                    factor,
24394                    units,
24395                    clamp
24396                );
24397            }
24398            let out = call_atomic_ptr_3arg(
24399                "glPolygonOffsetClamp",
24400                &self.glPolygonOffsetClamp_p,
24401                factor,
24402                units,
24403                clamp,
24404            );
24405            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24406            {
24407                self.automatic_glGetError("glPolygonOffsetClamp");
24408            }
24409            out
24410        }
24411        #[doc(hidden)]
24412        pub unsafe fn PolygonOffsetClamp_load_with_dyn(
24413            &self,
24414            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24415        ) -> bool {
24416            load_dyn_name_atomic_ptr(
24417                get_proc_address,
24418                b"glPolygonOffsetClamp\0",
24419                &self.glPolygonOffsetClamp_p,
24420            )
24421        }
24422        #[inline]
24423        #[doc(hidden)]
24424        pub fn PolygonOffsetClamp_is_loaded(&self) -> bool {
24425            !self.glPolygonOffsetClamp_p.load(RELAX).is_null()
24426        }
24427        /// [glPopDebugGroup](http://docs.gl/gl4/glPopDebugGroup)()
24428        #[cfg_attr(feature = "inline", inline)]
24429        #[cfg_attr(feature = "inline_always", inline(always))]
24430        pub unsafe fn PopDebugGroup(&self) {
24431            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24432            {
24433                trace!("calling gl.PopDebugGroup();",);
24434            }
24435            let out = call_atomic_ptr_0arg("glPopDebugGroup", &self.glPopDebugGroup_p);
24436            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24437            {
24438                self.automatic_glGetError("glPopDebugGroup");
24439            }
24440            out
24441        }
24442        #[doc(hidden)]
24443        pub unsafe fn PopDebugGroup_load_with_dyn(
24444            &self,
24445            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24446        ) -> bool {
24447            load_dyn_name_atomic_ptr(
24448                get_proc_address,
24449                b"glPopDebugGroup\0",
24450                &self.glPopDebugGroup_p,
24451            )
24452        }
24453        #[inline]
24454        #[doc(hidden)]
24455        pub fn PopDebugGroup_is_loaded(&self) -> bool {
24456            !self.glPopDebugGroup_p.load(RELAX).is_null()
24457        }
24458        /// [glPopDebugGroupKHR](http://docs.gl/gl4/glPopDebugGroupKHR)()
24459        /// * alias of: [`glPopDebugGroup`]
24460        #[cfg_attr(feature = "inline", inline)]
24461        #[cfg_attr(feature = "inline_always", inline(always))]
24462        pub unsafe fn PopDebugGroupKHR(&self) {
24463            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24464            {
24465                trace!("calling gl.PopDebugGroupKHR();",);
24466            }
24467            let out = call_atomic_ptr_0arg("glPopDebugGroupKHR", &self.glPopDebugGroupKHR_p);
24468            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24469            {
24470                self.automatic_glGetError("glPopDebugGroupKHR");
24471            }
24472            out
24473        }
24474        #[doc(hidden)]
24475        pub unsafe fn PopDebugGroupKHR_load_with_dyn(
24476            &self,
24477            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24478        ) -> bool {
24479            load_dyn_name_atomic_ptr(
24480                get_proc_address,
24481                b"glPopDebugGroupKHR\0",
24482                &self.glPopDebugGroupKHR_p,
24483            )
24484        }
24485        #[inline]
24486        #[doc(hidden)]
24487        pub fn PopDebugGroupKHR_is_loaded(&self) -> bool {
24488            !self.glPopDebugGroupKHR_p.load(RELAX).is_null()
24489        }
24490        /// [glPrimitiveBoundingBox](http://docs.gl/gl4/glPrimitiveBoundingBox)(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW)
24491        #[cfg_attr(feature = "inline", inline)]
24492        #[cfg_attr(feature = "inline_always", inline(always))]
24493        pub unsafe fn PrimitiveBoundingBox(
24494            &self,
24495            minX: GLfloat,
24496            minY: GLfloat,
24497            minZ: GLfloat,
24498            minW: GLfloat,
24499            maxX: GLfloat,
24500            maxY: GLfloat,
24501            maxZ: GLfloat,
24502            maxW: GLfloat,
24503        ) {
24504            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24505            {
24506                trace!("calling gl.PrimitiveBoundingBox({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
24507            }
24508            let out = call_atomic_ptr_8arg(
24509                "glPrimitiveBoundingBox",
24510                &self.glPrimitiveBoundingBox_p,
24511                minX,
24512                minY,
24513                minZ,
24514                minW,
24515                maxX,
24516                maxY,
24517                maxZ,
24518                maxW,
24519            );
24520            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24521            {
24522                self.automatic_glGetError("glPrimitiveBoundingBox");
24523            }
24524            out
24525        }
24526        #[doc(hidden)]
24527        pub unsafe fn PrimitiveBoundingBox_load_with_dyn(
24528            &self,
24529            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24530        ) -> bool {
24531            load_dyn_name_atomic_ptr(
24532                get_proc_address,
24533                b"glPrimitiveBoundingBox\0",
24534                &self.glPrimitiveBoundingBox_p,
24535            )
24536        }
24537        #[inline]
24538        #[doc(hidden)]
24539        pub fn PrimitiveBoundingBox_is_loaded(&self) -> bool {
24540            !self.glPrimitiveBoundingBox_p.load(RELAX).is_null()
24541        }
24542        /// [glPrimitiveRestartIndex](http://docs.gl/gl4/glPrimitiveRestartIndex)(index)
24543        #[cfg_attr(feature = "inline", inline)]
24544        #[cfg_attr(feature = "inline_always", inline(always))]
24545        pub unsafe fn PrimitiveRestartIndex(&self, index: GLuint) {
24546            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24547            {
24548                trace!("calling gl.PrimitiveRestartIndex({:?});", index);
24549            }
24550            let out = call_atomic_ptr_1arg(
24551                "glPrimitiveRestartIndex",
24552                &self.glPrimitiveRestartIndex_p,
24553                index,
24554            );
24555            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24556            {
24557                self.automatic_glGetError("glPrimitiveRestartIndex");
24558            }
24559            out
24560        }
24561        #[doc(hidden)]
24562        pub unsafe fn PrimitiveRestartIndex_load_with_dyn(
24563            &self,
24564            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24565        ) -> bool {
24566            load_dyn_name_atomic_ptr(
24567                get_proc_address,
24568                b"glPrimitiveRestartIndex\0",
24569                &self.glPrimitiveRestartIndex_p,
24570            )
24571        }
24572        #[inline]
24573        #[doc(hidden)]
24574        pub fn PrimitiveRestartIndex_is_loaded(&self) -> bool {
24575            !self.glPrimitiveRestartIndex_p.load(RELAX).is_null()
24576        }
24577        /// [glProgramBinary](http://docs.gl/gl4/glProgramBinary)(program, binaryFormat, binary, length)
24578        /// * `binary` len: length
24579        #[cfg_attr(feature = "inline", inline)]
24580        #[cfg_attr(feature = "inline_always", inline(always))]
24581        pub unsafe fn ProgramBinary(
24582            &self,
24583            program: GLuint,
24584            binaryFormat: GLenum,
24585            binary: *const c_void,
24586            length: GLsizei,
24587        ) {
24588            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24589            {
24590                trace!(
24591                    "calling gl.ProgramBinary({:?}, {:#X}, {:p}, {:?});",
24592                    program,
24593                    binaryFormat,
24594                    binary,
24595                    length
24596                );
24597            }
24598            let out = call_atomic_ptr_4arg(
24599                "glProgramBinary",
24600                &self.glProgramBinary_p,
24601                program,
24602                binaryFormat,
24603                binary,
24604                length,
24605            );
24606            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24607            {
24608                self.automatic_glGetError("glProgramBinary");
24609            }
24610            out
24611        }
24612        #[doc(hidden)]
24613        pub unsafe fn ProgramBinary_load_with_dyn(
24614            &self,
24615            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24616        ) -> bool {
24617            load_dyn_name_atomic_ptr(
24618                get_proc_address,
24619                b"glProgramBinary\0",
24620                &self.glProgramBinary_p,
24621            )
24622        }
24623        #[inline]
24624        #[doc(hidden)]
24625        pub fn ProgramBinary_is_loaded(&self) -> bool {
24626            !self.glProgramBinary_p.load(RELAX).is_null()
24627        }
24628        /// [glProgramParameteri](http://docs.gl/gl4/glProgramParameteri)(program, pname, value)
24629        /// * `pname` group: ProgramParameterPName
24630        #[cfg_attr(feature = "inline", inline)]
24631        #[cfg_attr(feature = "inline_always", inline(always))]
24632        pub unsafe fn ProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) {
24633            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24634            {
24635                trace!(
24636                    "calling gl.ProgramParameteri({:?}, {:#X}, {:?});",
24637                    program,
24638                    pname,
24639                    value
24640                );
24641            }
24642            let out = call_atomic_ptr_3arg(
24643                "glProgramParameteri",
24644                &self.glProgramParameteri_p,
24645                program,
24646                pname,
24647                value,
24648            );
24649            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24650            {
24651                self.automatic_glGetError("glProgramParameteri");
24652            }
24653            out
24654        }
24655        #[doc(hidden)]
24656        pub unsafe fn ProgramParameteri_load_with_dyn(
24657            &self,
24658            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24659        ) -> bool {
24660            load_dyn_name_atomic_ptr(
24661                get_proc_address,
24662                b"glProgramParameteri\0",
24663                &self.glProgramParameteri_p,
24664            )
24665        }
24666        #[inline]
24667        #[doc(hidden)]
24668        pub fn ProgramParameteri_is_loaded(&self) -> bool {
24669            !self.glProgramParameteri_p.load(RELAX).is_null()
24670        }
24671        /// [glProgramUniform1d](http://docs.gl/gl4/glProgramUniform1d)(program, location, v0)
24672        #[cfg_attr(feature = "inline", inline)]
24673        #[cfg_attr(feature = "inline_always", inline(always))]
24674        pub unsafe fn ProgramUniform1d(&self, program: GLuint, location: GLint, v0: GLdouble) {
24675            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24676            {
24677                trace!(
24678                    "calling gl.ProgramUniform1d({:?}, {:?}, {:?});",
24679                    program,
24680                    location,
24681                    v0
24682                );
24683            }
24684            let out = call_atomic_ptr_3arg(
24685                "glProgramUniform1d",
24686                &self.glProgramUniform1d_p,
24687                program,
24688                location,
24689                v0,
24690            );
24691            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24692            {
24693                self.automatic_glGetError("glProgramUniform1d");
24694            }
24695            out
24696        }
24697        #[doc(hidden)]
24698        pub unsafe fn ProgramUniform1d_load_with_dyn(
24699            &self,
24700            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24701        ) -> bool {
24702            load_dyn_name_atomic_ptr(
24703                get_proc_address,
24704                b"glProgramUniform1d\0",
24705                &self.glProgramUniform1d_p,
24706            )
24707        }
24708        #[inline]
24709        #[doc(hidden)]
24710        pub fn ProgramUniform1d_is_loaded(&self) -> bool {
24711            !self.glProgramUniform1d_p.load(RELAX).is_null()
24712        }
24713        /// [glProgramUniform1dv](http://docs.gl/gl4/glProgramUniform1dv)(program, location, count, value)
24714        /// * `value` len: count
24715        #[cfg_attr(feature = "inline", inline)]
24716        #[cfg_attr(feature = "inline_always", inline(always))]
24717        pub unsafe fn ProgramUniform1dv(
24718            &self,
24719            program: GLuint,
24720            location: GLint,
24721            count: GLsizei,
24722            value: *const GLdouble,
24723        ) {
24724            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24725            {
24726                trace!(
24727                    "calling gl.ProgramUniform1dv({:?}, {:?}, {:?}, {:p});",
24728                    program,
24729                    location,
24730                    count,
24731                    value
24732                );
24733            }
24734            let out = call_atomic_ptr_4arg(
24735                "glProgramUniform1dv",
24736                &self.glProgramUniform1dv_p,
24737                program,
24738                location,
24739                count,
24740                value,
24741            );
24742            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24743            {
24744                self.automatic_glGetError("glProgramUniform1dv");
24745            }
24746            out
24747        }
24748        #[doc(hidden)]
24749        pub unsafe fn ProgramUniform1dv_load_with_dyn(
24750            &self,
24751            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24752        ) -> bool {
24753            load_dyn_name_atomic_ptr(
24754                get_proc_address,
24755                b"glProgramUniform1dv\0",
24756                &self.glProgramUniform1dv_p,
24757            )
24758        }
24759        #[inline]
24760        #[doc(hidden)]
24761        pub fn ProgramUniform1dv_is_loaded(&self) -> bool {
24762            !self.glProgramUniform1dv_p.load(RELAX).is_null()
24763        }
24764        /// [glProgramUniform1f](http://docs.gl/gl4/glProgramUniform)(program, location, v0)
24765        #[cfg_attr(feature = "inline", inline)]
24766        #[cfg_attr(feature = "inline_always", inline(always))]
24767        pub unsafe fn ProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) {
24768            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24769            {
24770                trace!(
24771                    "calling gl.ProgramUniform1f({:?}, {:?}, {:?});",
24772                    program,
24773                    location,
24774                    v0
24775                );
24776            }
24777            let out = call_atomic_ptr_3arg(
24778                "glProgramUniform1f",
24779                &self.glProgramUniform1f_p,
24780                program,
24781                location,
24782                v0,
24783            );
24784            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24785            {
24786                self.automatic_glGetError("glProgramUniform1f");
24787            }
24788            out
24789        }
24790        #[doc(hidden)]
24791        pub unsafe fn ProgramUniform1f_load_with_dyn(
24792            &self,
24793            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24794        ) -> bool {
24795            load_dyn_name_atomic_ptr(
24796                get_proc_address,
24797                b"glProgramUniform1f\0",
24798                &self.glProgramUniform1f_p,
24799            )
24800        }
24801        #[inline]
24802        #[doc(hidden)]
24803        pub fn ProgramUniform1f_is_loaded(&self) -> bool {
24804            !self.glProgramUniform1f_p.load(RELAX).is_null()
24805        }
24806        /// [glProgramUniform1fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
24807        /// * `value` len: count
24808        #[cfg_attr(feature = "inline", inline)]
24809        #[cfg_attr(feature = "inline_always", inline(always))]
24810        pub unsafe fn ProgramUniform1fv(
24811            &self,
24812            program: GLuint,
24813            location: GLint,
24814            count: GLsizei,
24815            value: *const GLfloat,
24816        ) {
24817            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24818            {
24819                trace!(
24820                    "calling gl.ProgramUniform1fv({:?}, {:?}, {:?}, {:p});",
24821                    program,
24822                    location,
24823                    count,
24824                    value
24825                );
24826            }
24827            let out = call_atomic_ptr_4arg(
24828                "glProgramUniform1fv",
24829                &self.glProgramUniform1fv_p,
24830                program,
24831                location,
24832                count,
24833                value,
24834            );
24835            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24836            {
24837                self.automatic_glGetError("glProgramUniform1fv");
24838            }
24839            out
24840        }
24841        #[doc(hidden)]
24842        pub unsafe fn ProgramUniform1fv_load_with_dyn(
24843            &self,
24844            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24845        ) -> bool {
24846            load_dyn_name_atomic_ptr(
24847                get_proc_address,
24848                b"glProgramUniform1fv\0",
24849                &self.glProgramUniform1fv_p,
24850            )
24851        }
24852        #[inline]
24853        #[doc(hidden)]
24854        pub fn ProgramUniform1fv_is_loaded(&self) -> bool {
24855            !self.glProgramUniform1fv_p.load(RELAX).is_null()
24856        }
24857        /// [glProgramUniform1i](http://docs.gl/gl4/glProgramUniform)(program, location, v0)
24858        #[cfg_attr(feature = "inline", inline)]
24859        #[cfg_attr(feature = "inline_always", inline(always))]
24860        pub unsafe fn ProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) {
24861            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24862            {
24863                trace!(
24864                    "calling gl.ProgramUniform1i({:?}, {:?}, {:?});",
24865                    program,
24866                    location,
24867                    v0
24868                );
24869            }
24870            let out = call_atomic_ptr_3arg(
24871                "glProgramUniform1i",
24872                &self.glProgramUniform1i_p,
24873                program,
24874                location,
24875                v0,
24876            );
24877            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24878            {
24879                self.automatic_glGetError("glProgramUniform1i");
24880            }
24881            out
24882        }
24883        #[doc(hidden)]
24884        pub unsafe fn ProgramUniform1i_load_with_dyn(
24885            &self,
24886            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24887        ) -> bool {
24888            load_dyn_name_atomic_ptr(
24889                get_proc_address,
24890                b"glProgramUniform1i\0",
24891                &self.glProgramUniform1i_p,
24892            )
24893        }
24894        #[inline]
24895        #[doc(hidden)]
24896        pub fn ProgramUniform1i_is_loaded(&self) -> bool {
24897            !self.glProgramUniform1i_p.load(RELAX).is_null()
24898        }
24899        /// [glProgramUniform1iv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
24900        /// * `value` len: count
24901        #[cfg_attr(feature = "inline", inline)]
24902        #[cfg_attr(feature = "inline_always", inline(always))]
24903        pub unsafe fn ProgramUniform1iv(
24904            &self,
24905            program: GLuint,
24906            location: GLint,
24907            count: GLsizei,
24908            value: *const GLint,
24909        ) {
24910            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24911            {
24912                trace!(
24913                    "calling gl.ProgramUniform1iv({:?}, {:?}, {:?}, {:p});",
24914                    program,
24915                    location,
24916                    count,
24917                    value
24918                );
24919            }
24920            let out = call_atomic_ptr_4arg(
24921                "glProgramUniform1iv",
24922                &self.glProgramUniform1iv_p,
24923                program,
24924                location,
24925                count,
24926                value,
24927            );
24928            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24929            {
24930                self.automatic_glGetError("glProgramUniform1iv");
24931            }
24932            out
24933        }
24934        #[doc(hidden)]
24935        pub unsafe fn ProgramUniform1iv_load_with_dyn(
24936            &self,
24937            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24938        ) -> bool {
24939            load_dyn_name_atomic_ptr(
24940                get_proc_address,
24941                b"glProgramUniform1iv\0",
24942                &self.glProgramUniform1iv_p,
24943            )
24944        }
24945        #[inline]
24946        #[doc(hidden)]
24947        pub fn ProgramUniform1iv_is_loaded(&self) -> bool {
24948            !self.glProgramUniform1iv_p.load(RELAX).is_null()
24949        }
24950        /// [glProgramUniform1ui](http://docs.gl/gl4/glProgramUniform)(program, location, v0)
24951        #[cfg_attr(feature = "inline", inline)]
24952        #[cfg_attr(feature = "inline_always", inline(always))]
24953        pub unsafe fn ProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) {
24954            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24955            {
24956                trace!(
24957                    "calling gl.ProgramUniform1ui({:?}, {:?}, {:?});",
24958                    program,
24959                    location,
24960                    v0
24961                );
24962            }
24963            let out = call_atomic_ptr_3arg(
24964                "glProgramUniform1ui",
24965                &self.glProgramUniform1ui_p,
24966                program,
24967                location,
24968                v0,
24969            );
24970            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24971            {
24972                self.automatic_glGetError("glProgramUniform1ui");
24973            }
24974            out
24975        }
24976        #[doc(hidden)]
24977        pub unsafe fn ProgramUniform1ui_load_with_dyn(
24978            &self,
24979            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24980        ) -> bool {
24981            load_dyn_name_atomic_ptr(
24982                get_proc_address,
24983                b"glProgramUniform1ui\0",
24984                &self.glProgramUniform1ui_p,
24985            )
24986        }
24987        #[inline]
24988        #[doc(hidden)]
24989        pub fn ProgramUniform1ui_is_loaded(&self) -> bool {
24990            !self.glProgramUniform1ui_p.load(RELAX).is_null()
24991        }
24992        /// [glProgramUniform1uiv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
24993        /// * `value` len: count
24994        #[cfg_attr(feature = "inline", inline)]
24995        #[cfg_attr(feature = "inline_always", inline(always))]
24996        pub unsafe fn ProgramUniform1uiv(
24997            &self,
24998            program: GLuint,
24999            location: GLint,
25000            count: GLsizei,
25001            value: *const GLuint,
25002        ) {
25003            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25004            {
25005                trace!(
25006                    "calling gl.ProgramUniform1uiv({:?}, {:?}, {:?}, {:p});",
25007                    program,
25008                    location,
25009                    count,
25010                    value
25011                );
25012            }
25013            let out = call_atomic_ptr_4arg(
25014                "glProgramUniform1uiv",
25015                &self.glProgramUniform1uiv_p,
25016                program,
25017                location,
25018                count,
25019                value,
25020            );
25021            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25022            {
25023                self.automatic_glGetError("glProgramUniform1uiv");
25024            }
25025            out
25026        }
25027        #[doc(hidden)]
25028        pub unsafe fn ProgramUniform1uiv_load_with_dyn(
25029            &self,
25030            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25031        ) -> bool {
25032            load_dyn_name_atomic_ptr(
25033                get_proc_address,
25034                b"glProgramUniform1uiv\0",
25035                &self.glProgramUniform1uiv_p,
25036            )
25037        }
25038        #[inline]
25039        #[doc(hidden)]
25040        pub fn ProgramUniform1uiv_is_loaded(&self) -> bool {
25041            !self.glProgramUniform1uiv_p.load(RELAX).is_null()
25042        }
25043        /// [glProgramUniform2d](http://docs.gl/gl4/glProgramUniform2d)(program, location, v0, v1)
25044        #[cfg_attr(feature = "inline", inline)]
25045        #[cfg_attr(feature = "inline_always", inline(always))]
25046        pub unsafe fn ProgramUniform2d(
25047            &self,
25048            program: GLuint,
25049            location: GLint,
25050            v0: GLdouble,
25051            v1: GLdouble,
25052        ) {
25053            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25054            {
25055                trace!(
25056                    "calling gl.ProgramUniform2d({:?}, {:?}, {:?}, {:?});",
25057                    program,
25058                    location,
25059                    v0,
25060                    v1
25061                );
25062            }
25063            let out = call_atomic_ptr_4arg(
25064                "glProgramUniform2d",
25065                &self.glProgramUniform2d_p,
25066                program,
25067                location,
25068                v0,
25069                v1,
25070            );
25071            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25072            {
25073                self.automatic_glGetError("glProgramUniform2d");
25074            }
25075            out
25076        }
25077        #[doc(hidden)]
25078        pub unsafe fn ProgramUniform2d_load_with_dyn(
25079            &self,
25080            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25081        ) -> bool {
25082            load_dyn_name_atomic_ptr(
25083                get_proc_address,
25084                b"glProgramUniform2d\0",
25085                &self.glProgramUniform2d_p,
25086            )
25087        }
25088        #[inline]
25089        #[doc(hidden)]
25090        pub fn ProgramUniform2d_is_loaded(&self) -> bool {
25091            !self.glProgramUniform2d_p.load(RELAX).is_null()
25092        }
25093        /// [glProgramUniform2dv](http://docs.gl/gl4/glProgramUniform2dv)(program, location, count, value)
25094        /// * `value` len: count*2
25095        #[cfg_attr(feature = "inline", inline)]
25096        #[cfg_attr(feature = "inline_always", inline(always))]
25097        pub unsafe fn ProgramUniform2dv(
25098            &self,
25099            program: GLuint,
25100            location: GLint,
25101            count: GLsizei,
25102            value: *const GLdouble,
25103        ) {
25104            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25105            {
25106                trace!(
25107                    "calling gl.ProgramUniform2dv({:?}, {:?}, {:?}, {:p});",
25108                    program,
25109                    location,
25110                    count,
25111                    value
25112                );
25113            }
25114            let out = call_atomic_ptr_4arg(
25115                "glProgramUniform2dv",
25116                &self.glProgramUniform2dv_p,
25117                program,
25118                location,
25119                count,
25120                value,
25121            );
25122            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25123            {
25124                self.automatic_glGetError("glProgramUniform2dv");
25125            }
25126            out
25127        }
25128        #[doc(hidden)]
25129        pub unsafe fn ProgramUniform2dv_load_with_dyn(
25130            &self,
25131            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25132        ) -> bool {
25133            load_dyn_name_atomic_ptr(
25134                get_proc_address,
25135                b"glProgramUniform2dv\0",
25136                &self.glProgramUniform2dv_p,
25137            )
25138        }
25139        #[inline]
25140        #[doc(hidden)]
25141        pub fn ProgramUniform2dv_is_loaded(&self) -> bool {
25142            !self.glProgramUniform2dv_p.load(RELAX).is_null()
25143        }
25144        /// [glProgramUniform2f](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1)
25145        #[cfg_attr(feature = "inline", inline)]
25146        #[cfg_attr(feature = "inline_always", inline(always))]
25147        pub unsafe fn ProgramUniform2f(
25148            &self,
25149            program: GLuint,
25150            location: GLint,
25151            v0: GLfloat,
25152            v1: GLfloat,
25153        ) {
25154            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25155            {
25156                trace!(
25157                    "calling gl.ProgramUniform2f({:?}, {:?}, {:?}, {:?});",
25158                    program,
25159                    location,
25160                    v0,
25161                    v1
25162                );
25163            }
25164            let out = call_atomic_ptr_4arg(
25165                "glProgramUniform2f",
25166                &self.glProgramUniform2f_p,
25167                program,
25168                location,
25169                v0,
25170                v1,
25171            );
25172            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25173            {
25174                self.automatic_glGetError("glProgramUniform2f");
25175            }
25176            out
25177        }
25178        #[doc(hidden)]
25179        pub unsafe fn ProgramUniform2f_load_with_dyn(
25180            &self,
25181            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25182        ) -> bool {
25183            load_dyn_name_atomic_ptr(
25184                get_proc_address,
25185                b"glProgramUniform2f\0",
25186                &self.glProgramUniform2f_p,
25187            )
25188        }
25189        #[inline]
25190        #[doc(hidden)]
25191        pub fn ProgramUniform2f_is_loaded(&self) -> bool {
25192            !self.glProgramUniform2f_p.load(RELAX).is_null()
25193        }
25194        /// [glProgramUniform2fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25195        /// * `value` len: count*2
25196        #[cfg_attr(feature = "inline", inline)]
25197        #[cfg_attr(feature = "inline_always", inline(always))]
25198        pub unsafe fn ProgramUniform2fv(
25199            &self,
25200            program: GLuint,
25201            location: GLint,
25202            count: GLsizei,
25203            value: *const GLfloat,
25204        ) {
25205            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25206            {
25207                trace!(
25208                    "calling gl.ProgramUniform2fv({:?}, {:?}, {:?}, {:p});",
25209                    program,
25210                    location,
25211                    count,
25212                    value
25213                );
25214            }
25215            let out = call_atomic_ptr_4arg(
25216                "glProgramUniform2fv",
25217                &self.glProgramUniform2fv_p,
25218                program,
25219                location,
25220                count,
25221                value,
25222            );
25223            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25224            {
25225                self.automatic_glGetError("glProgramUniform2fv");
25226            }
25227            out
25228        }
25229        #[doc(hidden)]
25230        pub unsafe fn ProgramUniform2fv_load_with_dyn(
25231            &self,
25232            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25233        ) -> bool {
25234            load_dyn_name_atomic_ptr(
25235                get_proc_address,
25236                b"glProgramUniform2fv\0",
25237                &self.glProgramUniform2fv_p,
25238            )
25239        }
25240        #[inline]
25241        #[doc(hidden)]
25242        pub fn ProgramUniform2fv_is_loaded(&self) -> bool {
25243            !self.glProgramUniform2fv_p.load(RELAX).is_null()
25244        }
25245        /// [glProgramUniform2i](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1)
25246        #[cfg_attr(feature = "inline", inline)]
25247        #[cfg_attr(feature = "inline_always", inline(always))]
25248        pub unsafe fn ProgramUniform2i(
25249            &self,
25250            program: GLuint,
25251            location: GLint,
25252            v0: GLint,
25253            v1: GLint,
25254        ) {
25255            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25256            {
25257                trace!(
25258                    "calling gl.ProgramUniform2i({:?}, {:?}, {:?}, {:?});",
25259                    program,
25260                    location,
25261                    v0,
25262                    v1
25263                );
25264            }
25265            let out = call_atomic_ptr_4arg(
25266                "glProgramUniform2i",
25267                &self.glProgramUniform2i_p,
25268                program,
25269                location,
25270                v0,
25271                v1,
25272            );
25273            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25274            {
25275                self.automatic_glGetError("glProgramUniform2i");
25276            }
25277            out
25278        }
25279        #[doc(hidden)]
25280        pub unsafe fn ProgramUniform2i_load_with_dyn(
25281            &self,
25282            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25283        ) -> bool {
25284            load_dyn_name_atomic_ptr(
25285                get_proc_address,
25286                b"glProgramUniform2i\0",
25287                &self.glProgramUniform2i_p,
25288            )
25289        }
25290        #[inline]
25291        #[doc(hidden)]
25292        pub fn ProgramUniform2i_is_loaded(&self) -> bool {
25293            !self.glProgramUniform2i_p.load(RELAX).is_null()
25294        }
25295        /// [glProgramUniform2iv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25296        /// * `value` len: count*2
25297        #[cfg_attr(feature = "inline", inline)]
25298        #[cfg_attr(feature = "inline_always", inline(always))]
25299        pub unsafe fn ProgramUniform2iv(
25300            &self,
25301            program: GLuint,
25302            location: GLint,
25303            count: GLsizei,
25304            value: *const GLint,
25305        ) {
25306            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25307            {
25308                trace!(
25309                    "calling gl.ProgramUniform2iv({:?}, {:?}, {:?}, {:p});",
25310                    program,
25311                    location,
25312                    count,
25313                    value
25314                );
25315            }
25316            let out = call_atomic_ptr_4arg(
25317                "glProgramUniform2iv",
25318                &self.glProgramUniform2iv_p,
25319                program,
25320                location,
25321                count,
25322                value,
25323            );
25324            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25325            {
25326                self.automatic_glGetError("glProgramUniform2iv");
25327            }
25328            out
25329        }
25330        #[doc(hidden)]
25331        pub unsafe fn ProgramUniform2iv_load_with_dyn(
25332            &self,
25333            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25334        ) -> bool {
25335            load_dyn_name_atomic_ptr(
25336                get_proc_address,
25337                b"glProgramUniform2iv\0",
25338                &self.glProgramUniform2iv_p,
25339            )
25340        }
25341        #[inline]
25342        #[doc(hidden)]
25343        pub fn ProgramUniform2iv_is_loaded(&self) -> bool {
25344            !self.glProgramUniform2iv_p.load(RELAX).is_null()
25345        }
25346        /// [glProgramUniform2ui](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1)
25347        #[cfg_attr(feature = "inline", inline)]
25348        #[cfg_attr(feature = "inline_always", inline(always))]
25349        pub unsafe fn ProgramUniform2ui(
25350            &self,
25351            program: GLuint,
25352            location: GLint,
25353            v0: GLuint,
25354            v1: GLuint,
25355        ) {
25356            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25357            {
25358                trace!(
25359                    "calling gl.ProgramUniform2ui({:?}, {:?}, {:?}, {:?});",
25360                    program,
25361                    location,
25362                    v0,
25363                    v1
25364                );
25365            }
25366            let out = call_atomic_ptr_4arg(
25367                "glProgramUniform2ui",
25368                &self.glProgramUniform2ui_p,
25369                program,
25370                location,
25371                v0,
25372                v1,
25373            );
25374            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25375            {
25376                self.automatic_glGetError("glProgramUniform2ui");
25377            }
25378            out
25379        }
25380        #[doc(hidden)]
25381        pub unsafe fn ProgramUniform2ui_load_with_dyn(
25382            &self,
25383            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25384        ) -> bool {
25385            load_dyn_name_atomic_ptr(
25386                get_proc_address,
25387                b"glProgramUniform2ui\0",
25388                &self.glProgramUniform2ui_p,
25389            )
25390        }
25391        #[inline]
25392        #[doc(hidden)]
25393        pub fn ProgramUniform2ui_is_loaded(&self) -> bool {
25394            !self.glProgramUniform2ui_p.load(RELAX).is_null()
25395        }
25396        /// [glProgramUniform2uiv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25397        /// * `value` len: count*2
25398        #[cfg_attr(feature = "inline", inline)]
25399        #[cfg_attr(feature = "inline_always", inline(always))]
25400        pub unsafe fn ProgramUniform2uiv(
25401            &self,
25402            program: GLuint,
25403            location: GLint,
25404            count: GLsizei,
25405            value: *const GLuint,
25406        ) {
25407            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25408            {
25409                trace!(
25410                    "calling gl.ProgramUniform2uiv({:?}, {:?}, {:?}, {:p});",
25411                    program,
25412                    location,
25413                    count,
25414                    value
25415                );
25416            }
25417            let out = call_atomic_ptr_4arg(
25418                "glProgramUniform2uiv",
25419                &self.glProgramUniform2uiv_p,
25420                program,
25421                location,
25422                count,
25423                value,
25424            );
25425            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25426            {
25427                self.automatic_glGetError("glProgramUniform2uiv");
25428            }
25429            out
25430        }
25431        #[doc(hidden)]
25432        pub unsafe fn ProgramUniform2uiv_load_with_dyn(
25433            &self,
25434            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25435        ) -> bool {
25436            load_dyn_name_atomic_ptr(
25437                get_proc_address,
25438                b"glProgramUniform2uiv\0",
25439                &self.glProgramUniform2uiv_p,
25440            )
25441        }
25442        #[inline]
25443        #[doc(hidden)]
25444        pub fn ProgramUniform2uiv_is_loaded(&self) -> bool {
25445            !self.glProgramUniform2uiv_p.load(RELAX).is_null()
25446        }
25447        /// [glProgramUniform3d](http://docs.gl/gl4/glProgramUniform3d)(program, location, v0, v1, v2)
25448        #[cfg_attr(feature = "inline", inline)]
25449        #[cfg_attr(feature = "inline_always", inline(always))]
25450        pub unsafe fn ProgramUniform3d(
25451            &self,
25452            program: GLuint,
25453            location: GLint,
25454            v0: GLdouble,
25455            v1: GLdouble,
25456            v2: GLdouble,
25457        ) {
25458            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25459            {
25460                trace!(
25461                    "calling gl.ProgramUniform3d({:?}, {:?}, {:?}, {:?}, {:?});",
25462                    program,
25463                    location,
25464                    v0,
25465                    v1,
25466                    v2
25467                );
25468            }
25469            let out = call_atomic_ptr_5arg(
25470                "glProgramUniform3d",
25471                &self.glProgramUniform3d_p,
25472                program,
25473                location,
25474                v0,
25475                v1,
25476                v2,
25477            );
25478            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25479            {
25480                self.automatic_glGetError("glProgramUniform3d");
25481            }
25482            out
25483        }
25484        #[doc(hidden)]
25485        pub unsafe fn ProgramUniform3d_load_with_dyn(
25486            &self,
25487            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25488        ) -> bool {
25489            load_dyn_name_atomic_ptr(
25490                get_proc_address,
25491                b"glProgramUniform3d\0",
25492                &self.glProgramUniform3d_p,
25493            )
25494        }
25495        #[inline]
25496        #[doc(hidden)]
25497        pub fn ProgramUniform3d_is_loaded(&self) -> bool {
25498            !self.glProgramUniform3d_p.load(RELAX).is_null()
25499        }
25500        /// [glProgramUniform3dv](http://docs.gl/gl4/glProgramUniform3dv)(program, location, count, value)
25501        /// * `value` len: count*3
25502        #[cfg_attr(feature = "inline", inline)]
25503        #[cfg_attr(feature = "inline_always", inline(always))]
25504        pub unsafe fn ProgramUniform3dv(
25505            &self,
25506            program: GLuint,
25507            location: GLint,
25508            count: GLsizei,
25509            value: *const GLdouble,
25510        ) {
25511            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25512            {
25513                trace!(
25514                    "calling gl.ProgramUniform3dv({:?}, {:?}, {:?}, {:p});",
25515                    program,
25516                    location,
25517                    count,
25518                    value
25519                );
25520            }
25521            let out = call_atomic_ptr_4arg(
25522                "glProgramUniform3dv",
25523                &self.glProgramUniform3dv_p,
25524                program,
25525                location,
25526                count,
25527                value,
25528            );
25529            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25530            {
25531                self.automatic_glGetError("glProgramUniform3dv");
25532            }
25533            out
25534        }
25535        #[doc(hidden)]
25536        pub unsafe fn ProgramUniform3dv_load_with_dyn(
25537            &self,
25538            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25539        ) -> bool {
25540            load_dyn_name_atomic_ptr(
25541                get_proc_address,
25542                b"glProgramUniform3dv\0",
25543                &self.glProgramUniform3dv_p,
25544            )
25545        }
25546        #[inline]
25547        #[doc(hidden)]
25548        pub fn ProgramUniform3dv_is_loaded(&self) -> bool {
25549            !self.glProgramUniform3dv_p.load(RELAX).is_null()
25550        }
25551        /// [glProgramUniform3f](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1, v2)
25552        #[cfg_attr(feature = "inline", inline)]
25553        #[cfg_attr(feature = "inline_always", inline(always))]
25554        pub unsafe fn ProgramUniform3f(
25555            &self,
25556            program: GLuint,
25557            location: GLint,
25558            v0: GLfloat,
25559            v1: GLfloat,
25560            v2: GLfloat,
25561        ) {
25562            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25563            {
25564                trace!(
25565                    "calling gl.ProgramUniform3f({:?}, {:?}, {:?}, {:?}, {:?});",
25566                    program,
25567                    location,
25568                    v0,
25569                    v1,
25570                    v2
25571                );
25572            }
25573            let out = call_atomic_ptr_5arg(
25574                "glProgramUniform3f",
25575                &self.glProgramUniform3f_p,
25576                program,
25577                location,
25578                v0,
25579                v1,
25580                v2,
25581            );
25582            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25583            {
25584                self.automatic_glGetError("glProgramUniform3f");
25585            }
25586            out
25587        }
25588        #[doc(hidden)]
25589        pub unsafe fn ProgramUniform3f_load_with_dyn(
25590            &self,
25591            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25592        ) -> bool {
25593            load_dyn_name_atomic_ptr(
25594                get_proc_address,
25595                b"glProgramUniform3f\0",
25596                &self.glProgramUniform3f_p,
25597            )
25598        }
25599        #[inline]
25600        #[doc(hidden)]
25601        pub fn ProgramUniform3f_is_loaded(&self) -> bool {
25602            !self.glProgramUniform3f_p.load(RELAX).is_null()
25603        }
25604        /// [glProgramUniform3fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25605        /// * `value` len: count*3
25606        #[cfg_attr(feature = "inline", inline)]
25607        #[cfg_attr(feature = "inline_always", inline(always))]
25608        pub unsafe fn ProgramUniform3fv(
25609            &self,
25610            program: GLuint,
25611            location: GLint,
25612            count: GLsizei,
25613            value: *const GLfloat,
25614        ) {
25615            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25616            {
25617                trace!(
25618                    "calling gl.ProgramUniform3fv({:?}, {:?}, {:?}, {:p});",
25619                    program,
25620                    location,
25621                    count,
25622                    value
25623                );
25624            }
25625            let out = call_atomic_ptr_4arg(
25626                "glProgramUniform3fv",
25627                &self.glProgramUniform3fv_p,
25628                program,
25629                location,
25630                count,
25631                value,
25632            );
25633            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25634            {
25635                self.automatic_glGetError("glProgramUniform3fv");
25636            }
25637            out
25638        }
25639        #[doc(hidden)]
25640        pub unsafe fn ProgramUniform3fv_load_with_dyn(
25641            &self,
25642            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25643        ) -> bool {
25644            load_dyn_name_atomic_ptr(
25645                get_proc_address,
25646                b"glProgramUniform3fv\0",
25647                &self.glProgramUniform3fv_p,
25648            )
25649        }
25650        #[inline]
25651        #[doc(hidden)]
25652        pub fn ProgramUniform3fv_is_loaded(&self) -> bool {
25653            !self.glProgramUniform3fv_p.load(RELAX).is_null()
25654        }
25655        /// [glProgramUniform3i](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1, v2)
25656        #[cfg_attr(feature = "inline", inline)]
25657        #[cfg_attr(feature = "inline_always", inline(always))]
25658        pub unsafe fn ProgramUniform3i(
25659            &self,
25660            program: GLuint,
25661            location: GLint,
25662            v0: GLint,
25663            v1: GLint,
25664            v2: GLint,
25665        ) {
25666            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25667            {
25668                trace!(
25669                    "calling gl.ProgramUniform3i({:?}, {:?}, {:?}, {:?}, {:?});",
25670                    program,
25671                    location,
25672                    v0,
25673                    v1,
25674                    v2
25675                );
25676            }
25677            let out = call_atomic_ptr_5arg(
25678                "glProgramUniform3i",
25679                &self.glProgramUniform3i_p,
25680                program,
25681                location,
25682                v0,
25683                v1,
25684                v2,
25685            );
25686            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25687            {
25688                self.automatic_glGetError("glProgramUniform3i");
25689            }
25690            out
25691        }
25692        #[doc(hidden)]
25693        pub unsafe fn ProgramUniform3i_load_with_dyn(
25694            &self,
25695            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25696        ) -> bool {
25697            load_dyn_name_atomic_ptr(
25698                get_proc_address,
25699                b"glProgramUniform3i\0",
25700                &self.glProgramUniform3i_p,
25701            )
25702        }
25703        #[inline]
25704        #[doc(hidden)]
25705        pub fn ProgramUniform3i_is_loaded(&self) -> bool {
25706            !self.glProgramUniform3i_p.load(RELAX).is_null()
25707        }
25708        /// [glProgramUniform3iv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25709        /// * `value` len: count*3
25710        #[cfg_attr(feature = "inline", inline)]
25711        #[cfg_attr(feature = "inline_always", inline(always))]
25712        pub unsafe fn ProgramUniform3iv(
25713            &self,
25714            program: GLuint,
25715            location: GLint,
25716            count: GLsizei,
25717            value: *const GLint,
25718        ) {
25719            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25720            {
25721                trace!(
25722                    "calling gl.ProgramUniform3iv({:?}, {:?}, {:?}, {:p});",
25723                    program,
25724                    location,
25725                    count,
25726                    value
25727                );
25728            }
25729            let out = call_atomic_ptr_4arg(
25730                "glProgramUniform3iv",
25731                &self.glProgramUniform3iv_p,
25732                program,
25733                location,
25734                count,
25735                value,
25736            );
25737            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25738            {
25739                self.automatic_glGetError("glProgramUniform3iv");
25740            }
25741            out
25742        }
25743        #[doc(hidden)]
25744        pub unsafe fn ProgramUniform3iv_load_with_dyn(
25745            &self,
25746            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25747        ) -> bool {
25748            load_dyn_name_atomic_ptr(
25749                get_proc_address,
25750                b"glProgramUniform3iv\0",
25751                &self.glProgramUniform3iv_p,
25752            )
25753        }
25754        #[inline]
25755        #[doc(hidden)]
25756        pub fn ProgramUniform3iv_is_loaded(&self) -> bool {
25757            !self.glProgramUniform3iv_p.load(RELAX).is_null()
25758        }
25759        /// [glProgramUniform3ui](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1, v2)
25760        #[cfg_attr(feature = "inline", inline)]
25761        #[cfg_attr(feature = "inline_always", inline(always))]
25762        pub unsafe fn ProgramUniform3ui(
25763            &self,
25764            program: GLuint,
25765            location: GLint,
25766            v0: GLuint,
25767            v1: GLuint,
25768            v2: GLuint,
25769        ) {
25770            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25771            {
25772                trace!(
25773                    "calling gl.ProgramUniform3ui({:?}, {:?}, {:?}, {:?}, {:?});",
25774                    program,
25775                    location,
25776                    v0,
25777                    v1,
25778                    v2
25779                );
25780            }
25781            let out = call_atomic_ptr_5arg(
25782                "glProgramUniform3ui",
25783                &self.glProgramUniform3ui_p,
25784                program,
25785                location,
25786                v0,
25787                v1,
25788                v2,
25789            );
25790            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25791            {
25792                self.automatic_glGetError("glProgramUniform3ui");
25793            }
25794            out
25795        }
25796        #[doc(hidden)]
25797        pub unsafe fn ProgramUniform3ui_load_with_dyn(
25798            &self,
25799            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25800        ) -> bool {
25801            load_dyn_name_atomic_ptr(
25802                get_proc_address,
25803                b"glProgramUniform3ui\0",
25804                &self.glProgramUniform3ui_p,
25805            )
25806        }
25807        #[inline]
25808        #[doc(hidden)]
25809        pub fn ProgramUniform3ui_is_loaded(&self) -> bool {
25810            !self.glProgramUniform3ui_p.load(RELAX).is_null()
25811        }
25812        /// [glProgramUniform3uiv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25813        /// * `value` len: count*3
25814        #[cfg_attr(feature = "inline", inline)]
25815        #[cfg_attr(feature = "inline_always", inline(always))]
25816        pub unsafe fn ProgramUniform3uiv(
25817            &self,
25818            program: GLuint,
25819            location: GLint,
25820            count: GLsizei,
25821            value: *const GLuint,
25822        ) {
25823            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25824            {
25825                trace!(
25826                    "calling gl.ProgramUniform3uiv({:?}, {:?}, {:?}, {:p});",
25827                    program,
25828                    location,
25829                    count,
25830                    value
25831                );
25832            }
25833            let out = call_atomic_ptr_4arg(
25834                "glProgramUniform3uiv",
25835                &self.glProgramUniform3uiv_p,
25836                program,
25837                location,
25838                count,
25839                value,
25840            );
25841            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25842            {
25843                self.automatic_glGetError("glProgramUniform3uiv");
25844            }
25845            out
25846        }
25847        #[doc(hidden)]
25848        pub unsafe fn ProgramUniform3uiv_load_with_dyn(
25849            &self,
25850            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25851        ) -> bool {
25852            load_dyn_name_atomic_ptr(
25853                get_proc_address,
25854                b"glProgramUniform3uiv\0",
25855                &self.glProgramUniform3uiv_p,
25856            )
25857        }
25858        #[inline]
25859        #[doc(hidden)]
25860        pub fn ProgramUniform3uiv_is_loaded(&self) -> bool {
25861            !self.glProgramUniform3uiv_p.load(RELAX).is_null()
25862        }
25863        /// [glProgramUniform4d](http://docs.gl/gl4/glProgramUniform4d)(program, location, v0, v1, v2, v3)
25864        #[cfg_attr(feature = "inline", inline)]
25865        #[cfg_attr(feature = "inline_always", inline(always))]
25866        pub unsafe fn ProgramUniform4d(
25867            &self,
25868            program: GLuint,
25869            location: GLint,
25870            v0: GLdouble,
25871            v1: GLdouble,
25872            v2: GLdouble,
25873            v3: GLdouble,
25874        ) {
25875            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25876            {
25877                trace!(
25878                    "calling gl.ProgramUniform4d({:?}, {:?}, {:?}, {:?}, {:?}, {:?});",
25879                    program,
25880                    location,
25881                    v0,
25882                    v1,
25883                    v2,
25884                    v3
25885                );
25886            }
25887            let out = call_atomic_ptr_6arg(
25888                "glProgramUniform4d",
25889                &self.glProgramUniform4d_p,
25890                program,
25891                location,
25892                v0,
25893                v1,
25894                v2,
25895                v3,
25896            );
25897            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25898            {
25899                self.automatic_glGetError("glProgramUniform4d");
25900            }
25901            out
25902        }
25903        #[doc(hidden)]
25904        pub unsafe fn ProgramUniform4d_load_with_dyn(
25905            &self,
25906            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25907        ) -> bool {
25908            load_dyn_name_atomic_ptr(
25909                get_proc_address,
25910                b"glProgramUniform4d\0",
25911                &self.glProgramUniform4d_p,
25912            )
25913        }
25914        #[inline]
25915        #[doc(hidden)]
25916        pub fn ProgramUniform4d_is_loaded(&self) -> bool {
25917            !self.glProgramUniform4d_p.load(RELAX).is_null()
25918        }
25919        /// [glProgramUniform4dv](http://docs.gl/gl4/glProgramUniform4dv)(program, location, count, value)
25920        /// * `value` len: count*4
25921        #[cfg_attr(feature = "inline", inline)]
25922        #[cfg_attr(feature = "inline_always", inline(always))]
25923        pub unsafe fn ProgramUniform4dv(
25924            &self,
25925            program: GLuint,
25926            location: GLint,
25927            count: GLsizei,
25928            value: *const GLdouble,
25929        ) {
25930            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25931            {
25932                trace!(
25933                    "calling gl.ProgramUniform4dv({:?}, {:?}, {:?}, {:p});",
25934                    program,
25935                    location,
25936                    count,
25937                    value
25938                );
25939            }
25940            let out = call_atomic_ptr_4arg(
25941                "glProgramUniform4dv",
25942                &self.glProgramUniform4dv_p,
25943                program,
25944                location,
25945                count,
25946                value,
25947            );
25948            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25949            {
25950                self.automatic_glGetError("glProgramUniform4dv");
25951            }
25952            out
25953        }
25954        #[doc(hidden)]
25955        pub unsafe fn ProgramUniform4dv_load_with_dyn(
25956            &self,
25957            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25958        ) -> bool {
25959            load_dyn_name_atomic_ptr(
25960                get_proc_address,
25961                b"glProgramUniform4dv\0",
25962                &self.glProgramUniform4dv_p,
25963            )
25964        }
25965        #[inline]
25966        #[doc(hidden)]
25967        pub fn ProgramUniform4dv_is_loaded(&self) -> bool {
25968            !self.glProgramUniform4dv_p.load(RELAX).is_null()
25969        }
25970        /// [glProgramUniform4f](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1, v2, v3)
25971        #[cfg_attr(feature = "inline", inline)]
25972        #[cfg_attr(feature = "inline_always", inline(always))]
25973        pub unsafe fn ProgramUniform4f(
25974            &self,
25975            program: GLuint,
25976            location: GLint,
25977            v0: GLfloat,
25978            v1: GLfloat,
25979            v2: GLfloat,
25980            v3: GLfloat,
25981        ) {
25982            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25983            {
25984                trace!(
25985                    "calling gl.ProgramUniform4f({:?}, {:?}, {:?}, {:?}, {:?}, {:?});",
25986                    program,
25987                    location,
25988                    v0,
25989                    v1,
25990                    v2,
25991                    v3
25992                );
25993            }
25994            let out = call_atomic_ptr_6arg(
25995                "glProgramUniform4f",
25996                &self.glProgramUniform4f_p,
25997                program,
25998                location,
25999                v0,
26000                v1,
26001                v2,
26002                v3,
26003            );
26004            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26005            {
26006                self.automatic_glGetError("glProgramUniform4f");
26007            }
26008            out
26009        }
26010        #[doc(hidden)]
26011        pub unsafe fn ProgramUniform4f_load_with_dyn(
26012            &self,
26013            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26014        ) -> bool {
26015            load_dyn_name_atomic_ptr(
26016                get_proc_address,
26017                b"glProgramUniform4f\0",
26018                &self.glProgramUniform4f_p,
26019            )
26020        }
26021        #[inline]
26022        #[doc(hidden)]
26023        pub fn ProgramUniform4f_is_loaded(&self) -> bool {
26024            !self.glProgramUniform4f_p.load(RELAX).is_null()
26025        }
26026        /// [glProgramUniform4fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
26027        /// * `value` len: count*4
26028        #[cfg_attr(feature = "inline", inline)]
26029        #[cfg_attr(feature = "inline_always", inline(always))]
26030        pub unsafe fn ProgramUniform4fv(
26031            &self,
26032            program: GLuint,
26033            location: GLint,
26034            count: GLsizei,
26035            value: *const GLfloat,
26036        ) {
26037            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26038            {
26039                trace!(
26040                    "calling gl.ProgramUniform4fv({:?}, {:?}, {:?}, {:p});",
26041                    program,
26042                    location,
26043                    count,
26044                    value
26045                );
26046            }
26047            let out = call_atomic_ptr_4arg(
26048                "glProgramUniform4fv",
26049                &self.glProgramUniform4fv_p,
26050                program,
26051                location,
26052                count,
26053                value,
26054            );
26055            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26056            {
26057                self.automatic_glGetError("glProgramUniform4fv");
26058            }
26059            out
26060        }
26061        #[doc(hidden)]
26062        pub unsafe fn ProgramUniform4fv_load_with_dyn(
26063            &self,
26064            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26065        ) -> bool {
26066            load_dyn_name_atomic_ptr(
26067                get_proc_address,
26068                b"glProgramUniform4fv\0",
26069                &self.glProgramUniform4fv_p,
26070            )
26071        }
26072        #[inline]
26073        #[doc(hidden)]
26074        pub fn ProgramUniform4fv_is_loaded(&self) -> bool {
26075            !self.glProgramUniform4fv_p.load(RELAX).is_null()
26076        }
26077        /// [glProgramUniform4i](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1, v2, v3)
26078        #[cfg_attr(feature = "inline", inline)]
26079        #[cfg_attr(feature = "inline_always", inline(always))]
26080        pub unsafe fn ProgramUniform4i(
26081            &self,
26082            program: GLuint,
26083            location: GLint,
26084            v0: GLint,
26085            v1: GLint,
26086            v2: GLint,
26087            v3: GLint,
26088        ) {
26089            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26090            {
26091                trace!(
26092                    "calling gl.ProgramUniform4i({:?}, {:?}, {:?}, {:?}, {:?}, {:?});",
26093                    program,
26094                    location,
26095                    v0,
26096                    v1,
26097                    v2,
26098                    v3
26099                );
26100            }
26101            let out = call_atomic_ptr_6arg(
26102                "glProgramUniform4i",
26103                &self.glProgramUniform4i_p,
26104                program,
26105                location,
26106                v0,
26107                v1,
26108                v2,
26109                v3,
26110            );
26111            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26112            {
26113                self.automatic_glGetError("glProgramUniform4i");
26114            }
26115            out
26116        }
26117        #[doc(hidden)]
26118        pub unsafe fn ProgramUniform4i_load_with_dyn(
26119            &self,
26120            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26121        ) -> bool {
26122            load_dyn_name_atomic_ptr(
26123                get_proc_address,
26124                b"glProgramUniform4i\0",
26125                &self.glProgramUniform4i_p,
26126            )
26127        }
26128        #[inline]
26129        #[doc(hidden)]
26130        pub fn ProgramUniform4i_is_loaded(&self) -> bool {
26131            !self.glProgramUniform4i_p.load(RELAX).is_null()
26132        }
26133        /// [glProgramUniform4iv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
26134        /// * `value` len: count*4
26135        #[cfg_attr(feature = "inline", inline)]
26136        #[cfg_attr(feature = "inline_always", inline(always))]
26137        pub unsafe fn ProgramUniform4iv(
26138            &self,
26139            program: GLuint,
26140            location: GLint,
26141            count: GLsizei,
26142            value: *const GLint,
26143        ) {
26144            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26145            {
26146                trace!(
26147                    "calling gl.ProgramUniform4iv({:?}, {:?}, {:?}, {:p});",
26148                    program,
26149                    location,
26150                    count,
26151                    value
26152                );
26153            }
26154            let out = call_atomic_ptr_4arg(
26155                "glProgramUniform4iv",
26156                &self.glProgramUniform4iv_p,
26157                program,
26158                location,
26159                count,
26160                value,
26161            );
26162            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26163            {
26164                self.automatic_glGetError("glProgramUniform4iv");
26165            }
26166            out
26167        }
26168        #[doc(hidden)]
26169        pub unsafe fn ProgramUniform4iv_load_with_dyn(
26170            &self,
26171            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26172        ) -> bool {
26173            load_dyn_name_atomic_ptr(
26174                get_proc_address,
26175                b"glProgramUniform4iv\0",
26176                &self.glProgramUniform4iv_p,
26177            )
26178        }
26179        #[inline]
26180        #[doc(hidden)]
26181        pub fn ProgramUniform4iv_is_loaded(&self) -> bool {
26182            !self.glProgramUniform4iv_p.load(RELAX).is_null()
26183        }
26184        /// [glProgramUniform4ui](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1, v2, v3)
26185        #[cfg_attr(feature = "inline", inline)]
26186        #[cfg_attr(feature = "inline_always", inline(always))]
26187        pub unsafe fn ProgramUniform4ui(
26188            &self,
26189            program: GLuint,
26190            location: GLint,
26191            v0: GLuint,
26192            v1: GLuint,
26193            v2: GLuint,
26194            v3: GLuint,
26195        ) {
26196            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26197            {
26198                trace!(
26199                    "calling gl.ProgramUniform4ui({:?}, {:?}, {:?}, {:?}, {:?}, {:?});",
26200                    program,
26201                    location,
26202                    v0,
26203                    v1,
26204                    v2,
26205                    v3
26206                );
26207            }
26208            let out = call_atomic_ptr_6arg(
26209                "glProgramUniform4ui",
26210                &self.glProgramUniform4ui_p,
26211                program,
26212                location,
26213                v0,
26214                v1,
26215                v2,
26216                v3,
26217            );
26218            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26219            {
26220                self.automatic_glGetError("glProgramUniform4ui");
26221            }
26222            out
26223        }
26224        #[doc(hidden)]
26225        pub unsafe fn ProgramUniform4ui_load_with_dyn(
26226            &self,
26227            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26228        ) -> bool {
26229            load_dyn_name_atomic_ptr(
26230                get_proc_address,
26231                b"glProgramUniform4ui\0",
26232                &self.glProgramUniform4ui_p,
26233            )
26234        }
26235        #[inline]
26236        #[doc(hidden)]
26237        pub fn ProgramUniform4ui_is_loaded(&self) -> bool {
26238            !self.glProgramUniform4ui_p.load(RELAX).is_null()
26239        }
26240        /// [glProgramUniform4uiv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
26241        /// * `value` len: count*4
26242        #[cfg_attr(feature = "inline", inline)]
26243        #[cfg_attr(feature = "inline_always", inline(always))]
26244        pub unsafe fn ProgramUniform4uiv(
26245            &self,
26246            program: GLuint,
26247            location: GLint,
26248            count: GLsizei,
26249            value: *const GLuint,
26250        ) {
26251            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26252            {
26253                trace!(
26254                    "calling gl.ProgramUniform4uiv({:?}, {:?}, {:?}, {:p});",
26255                    program,
26256                    location,
26257                    count,
26258                    value
26259                );
26260            }
26261            let out = call_atomic_ptr_4arg(
26262                "glProgramUniform4uiv",
26263                &self.glProgramUniform4uiv_p,
26264                program,
26265                location,
26266                count,
26267                value,
26268            );
26269            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26270            {
26271                self.automatic_glGetError("glProgramUniform4uiv");
26272            }
26273            out
26274        }
26275        #[doc(hidden)]
26276        pub unsafe fn ProgramUniform4uiv_load_with_dyn(
26277            &self,
26278            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26279        ) -> bool {
26280            load_dyn_name_atomic_ptr(
26281                get_proc_address,
26282                b"glProgramUniform4uiv\0",
26283                &self.glProgramUniform4uiv_p,
26284            )
26285        }
26286        #[inline]
26287        #[doc(hidden)]
26288        pub fn ProgramUniform4uiv_is_loaded(&self) -> bool {
26289            !self.glProgramUniform4uiv_p.load(RELAX).is_null()
26290        }
26291        /// [glProgramUniformMatrix2dv](http://docs.gl/gl4/glProgramUniformMatrix2dv)(program, location, count, transpose, value)
26292        /// * `value` len: count*4
26293        #[cfg_attr(feature = "inline", inline)]
26294        #[cfg_attr(feature = "inline_always", inline(always))]
26295        pub unsafe fn ProgramUniformMatrix2dv(
26296            &self,
26297            program: GLuint,
26298            location: GLint,
26299            count: GLsizei,
26300            transpose: GLboolean,
26301            value: *const GLdouble,
26302        ) {
26303            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26304            {
26305                trace!(
26306                    "calling gl.ProgramUniformMatrix2dv({:?}, {:?}, {:?}, {:?}, {:p});",
26307                    program,
26308                    location,
26309                    count,
26310                    transpose,
26311                    value
26312                );
26313            }
26314            let out = call_atomic_ptr_5arg(
26315                "glProgramUniformMatrix2dv",
26316                &self.glProgramUniformMatrix2dv_p,
26317                program,
26318                location,
26319                count,
26320                transpose,
26321                value,
26322            );
26323            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26324            {
26325                self.automatic_glGetError("glProgramUniformMatrix2dv");
26326            }
26327            out
26328        }
26329        #[doc(hidden)]
26330        pub unsafe fn ProgramUniformMatrix2dv_load_with_dyn(
26331            &self,
26332            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26333        ) -> bool {
26334            load_dyn_name_atomic_ptr(
26335                get_proc_address,
26336                b"glProgramUniformMatrix2dv\0",
26337                &self.glProgramUniformMatrix2dv_p,
26338            )
26339        }
26340        #[inline]
26341        #[doc(hidden)]
26342        pub fn ProgramUniformMatrix2dv_is_loaded(&self) -> bool {
26343            !self.glProgramUniformMatrix2dv_p.load(RELAX).is_null()
26344        }
26345        /// [glProgramUniformMatrix2fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26346        /// * `value` len: count*4
26347        #[cfg_attr(feature = "inline", inline)]
26348        #[cfg_attr(feature = "inline_always", inline(always))]
26349        pub unsafe fn ProgramUniformMatrix2fv(
26350            &self,
26351            program: GLuint,
26352            location: GLint,
26353            count: GLsizei,
26354            transpose: GLboolean,
26355            value: *const GLfloat,
26356        ) {
26357            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26358            {
26359                trace!(
26360                    "calling gl.ProgramUniformMatrix2fv({:?}, {:?}, {:?}, {:?}, {:p});",
26361                    program,
26362                    location,
26363                    count,
26364                    transpose,
26365                    value
26366                );
26367            }
26368            let out = call_atomic_ptr_5arg(
26369                "glProgramUniformMatrix2fv",
26370                &self.glProgramUniformMatrix2fv_p,
26371                program,
26372                location,
26373                count,
26374                transpose,
26375                value,
26376            );
26377            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26378            {
26379                self.automatic_glGetError("glProgramUniformMatrix2fv");
26380            }
26381            out
26382        }
26383        #[doc(hidden)]
26384        pub unsafe fn ProgramUniformMatrix2fv_load_with_dyn(
26385            &self,
26386            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26387        ) -> bool {
26388            load_dyn_name_atomic_ptr(
26389                get_proc_address,
26390                b"glProgramUniformMatrix2fv\0",
26391                &self.glProgramUniformMatrix2fv_p,
26392            )
26393        }
26394        #[inline]
26395        #[doc(hidden)]
26396        pub fn ProgramUniformMatrix2fv_is_loaded(&self) -> bool {
26397            !self.glProgramUniformMatrix2fv_p.load(RELAX).is_null()
26398        }
26399        /// [glProgramUniformMatrix2x3dv](http://docs.gl/gl4/glProgramUniformMatrix2x3dv)(program, location, count, transpose, value)
26400        /// * `value` len: count*6
26401        #[cfg_attr(feature = "inline", inline)]
26402        #[cfg_attr(feature = "inline_always", inline(always))]
26403        pub unsafe fn ProgramUniformMatrix2x3dv(
26404            &self,
26405            program: GLuint,
26406            location: GLint,
26407            count: GLsizei,
26408            transpose: GLboolean,
26409            value: *const GLdouble,
26410        ) {
26411            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26412            {
26413                trace!(
26414                    "calling gl.ProgramUniformMatrix2x3dv({:?}, {:?}, {:?}, {:?}, {:p});",
26415                    program,
26416                    location,
26417                    count,
26418                    transpose,
26419                    value
26420                );
26421            }
26422            let out = call_atomic_ptr_5arg(
26423                "glProgramUniformMatrix2x3dv",
26424                &self.glProgramUniformMatrix2x3dv_p,
26425                program,
26426                location,
26427                count,
26428                transpose,
26429                value,
26430            );
26431            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26432            {
26433                self.automatic_glGetError("glProgramUniformMatrix2x3dv");
26434            }
26435            out
26436        }
26437        #[doc(hidden)]
26438        pub unsafe fn ProgramUniformMatrix2x3dv_load_with_dyn(
26439            &self,
26440            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26441        ) -> bool {
26442            load_dyn_name_atomic_ptr(
26443                get_proc_address,
26444                b"glProgramUniformMatrix2x3dv\0",
26445                &self.glProgramUniformMatrix2x3dv_p,
26446            )
26447        }
26448        #[inline]
26449        #[doc(hidden)]
26450        pub fn ProgramUniformMatrix2x3dv_is_loaded(&self) -> bool {
26451            !self.glProgramUniformMatrix2x3dv_p.load(RELAX).is_null()
26452        }
26453        /// [glProgramUniformMatrix2x3fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26454        /// * `value` len: count*6
26455        #[cfg_attr(feature = "inline", inline)]
26456        #[cfg_attr(feature = "inline_always", inline(always))]
26457        pub unsafe fn ProgramUniformMatrix2x3fv(
26458            &self,
26459            program: GLuint,
26460            location: GLint,
26461            count: GLsizei,
26462            transpose: GLboolean,
26463            value: *const GLfloat,
26464        ) {
26465            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26466            {
26467                trace!(
26468                    "calling gl.ProgramUniformMatrix2x3fv({:?}, {:?}, {:?}, {:?}, {:p});",
26469                    program,
26470                    location,
26471                    count,
26472                    transpose,
26473                    value
26474                );
26475            }
26476            let out = call_atomic_ptr_5arg(
26477                "glProgramUniformMatrix2x3fv",
26478                &self.glProgramUniformMatrix2x3fv_p,
26479                program,
26480                location,
26481                count,
26482                transpose,
26483                value,
26484            );
26485            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26486            {
26487                self.automatic_glGetError("glProgramUniformMatrix2x3fv");
26488            }
26489            out
26490        }
26491        #[doc(hidden)]
26492        pub unsafe fn ProgramUniformMatrix2x3fv_load_with_dyn(
26493            &self,
26494            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26495        ) -> bool {
26496            load_dyn_name_atomic_ptr(
26497                get_proc_address,
26498                b"glProgramUniformMatrix2x3fv\0",
26499                &self.glProgramUniformMatrix2x3fv_p,
26500            )
26501        }
26502        #[inline]
26503        #[doc(hidden)]
26504        pub fn ProgramUniformMatrix2x3fv_is_loaded(&self) -> bool {
26505            !self.glProgramUniformMatrix2x3fv_p.load(RELAX).is_null()
26506        }
26507        /// [glProgramUniformMatrix2x4dv](http://docs.gl/gl4/glProgramUniformMatrix2x4dv)(program, location, count, transpose, value)
26508        /// * `value` len: count*8
26509        #[cfg_attr(feature = "inline", inline)]
26510        #[cfg_attr(feature = "inline_always", inline(always))]
26511        pub unsafe fn ProgramUniformMatrix2x4dv(
26512            &self,
26513            program: GLuint,
26514            location: GLint,
26515            count: GLsizei,
26516            transpose: GLboolean,
26517            value: *const GLdouble,
26518        ) {
26519            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26520            {
26521                trace!(
26522                    "calling gl.ProgramUniformMatrix2x4dv({:?}, {:?}, {:?}, {:?}, {:p});",
26523                    program,
26524                    location,
26525                    count,
26526                    transpose,
26527                    value
26528                );
26529            }
26530            let out = call_atomic_ptr_5arg(
26531                "glProgramUniformMatrix2x4dv",
26532                &self.glProgramUniformMatrix2x4dv_p,
26533                program,
26534                location,
26535                count,
26536                transpose,
26537                value,
26538            );
26539            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26540            {
26541                self.automatic_glGetError("glProgramUniformMatrix2x4dv");
26542            }
26543            out
26544        }
26545        #[doc(hidden)]
26546        pub unsafe fn ProgramUniformMatrix2x4dv_load_with_dyn(
26547            &self,
26548            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26549        ) -> bool {
26550            load_dyn_name_atomic_ptr(
26551                get_proc_address,
26552                b"glProgramUniformMatrix2x4dv\0",
26553                &self.glProgramUniformMatrix2x4dv_p,
26554            )
26555        }
26556        #[inline]
26557        #[doc(hidden)]
26558        pub fn ProgramUniformMatrix2x4dv_is_loaded(&self) -> bool {
26559            !self.glProgramUniformMatrix2x4dv_p.load(RELAX).is_null()
26560        }
26561        /// [glProgramUniformMatrix2x4fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26562        /// * `value` len: count*8
26563        #[cfg_attr(feature = "inline", inline)]
26564        #[cfg_attr(feature = "inline_always", inline(always))]
26565        pub unsafe fn ProgramUniformMatrix2x4fv(
26566            &self,
26567            program: GLuint,
26568            location: GLint,
26569            count: GLsizei,
26570            transpose: GLboolean,
26571            value: *const GLfloat,
26572        ) {
26573            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26574            {
26575                trace!(
26576                    "calling gl.ProgramUniformMatrix2x4fv({:?}, {:?}, {:?}, {:?}, {:p});",
26577                    program,
26578                    location,
26579                    count,
26580                    transpose,
26581                    value
26582                );
26583            }
26584            let out = call_atomic_ptr_5arg(
26585                "glProgramUniformMatrix2x4fv",
26586                &self.glProgramUniformMatrix2x4fv_p,
26587                program,
26588                location,
26589                count,
26590                transpose,
26591                value,
26592            );
26593            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26594            {
26595                self.automatic_glGetError("glProgramUniformMatrix2x4fv");
26596            }
26597            out
26598        }
26599        #[doc(hidden)]
26600        pub unsafe fn ProgramUniformMatrix2x4fv_load_with_dyn(
26601            &self,
26602            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26603        ) -> bool {
26604            load_dyn_name_atomic_ptr(
26605                get_proc_address,
26606                b"glProgramUniformMatrix2x4fv\0",
26607                &self.glProgramUniformMatrix2x4fv_p,
26608            )
26609        }
26610        #[inline]
26611        #[doc(hidden)]
26612        pub fn ProgramUniformMatrix2x4fv_is_loaded(&self) -> bool {
26613            !self.glProgramUniformMatrix2x4fv_p.load(RELAX).is_null()
26614        }
26615        /// [glProgramUniformMatrix3dv](http://docs.gl/gl4/glProgramUniformMatrix3dv)(program, location, count, transpose, value)
26616        /// * `value` len: count*9
26617        #[cfg_attr(feature = "inline", inline)]
26618        #[cfg_attr(feature = "inline_always", inline(always))]
26619        pub unsafe fn ProgramUniformMatrix3dv(
26620            &self,
26621            program: GLuint,
26622            location: GLint,
26623            count: GLsizei,
26624            transpose: GLboolean,
26625            value: *const GLdouble,
26626        ) {
26627            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26628            {
26629                trace!(
26630                    "calling gl.ProgramUniformMatrix3dv({:?}, {:?}, {:?}, {:?}, {:p});",
26631                    program,
26632                    location,
26633                    count,
26634                    transpose,
26635                    value
26636                );
26637            }
26638            let out = call_atomic_ptr_5arg(
26639                "glProgramUniformMatrix3dv",
26640                &self.glProgramUniformMatrix3dv_p,
26641                program,
26642                location,
26643                count,
26644                transpose,
26645                value,
26646            );
26647            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26648            {
26649                self.automatic_glGetError("glProgramUniformMatrix3dv");
26650            }
26651            out
26652        }
26653        #[doc(hidden)]
26654        pub unsafe fn ProgramUniformMatrix3dv_load_with_dyn(
26655            &self,
26656            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26657        ) -> bool {
26658            load_dyn_name_atomic_ptr(
26659                get_proc_address,
26660                b"glProgramUniformMatrix3dv\0",
26661                &self.glProgramUniformMatrix3dv_p,
26662            )
26663        }
26664        #[inline]
26665        #[doc(hidden)]
26666        pub fn ProgramUniformMatrix3dv_is_loaded(&self) -> bool {
26667            !self.glProgramUniformMatrix3dv_p.load(RELAX).is_null()
26668        }
26669        /// [glProgramUniformMatrix3fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26670        /// * `value` len: count*9
26671        #[cfg_attr(feature = "inline", inline)]
26672        #[cfg_attr(feature = "inline_always", inline(always))]
26673        pub unsafe fn ProgramUniformMatrix3fv(
26674            &self,
26675            program: GLuint,
26676            location: GLint,
26677            count: GLsizei,
26678            transpose: GLboolean,
26679            value: *const GLfloat,
26680        ) {
26681            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26682            {
26683                trace!(
26684                    "calling gl.ProgramUniformMatrix3fv({:?}, {:?}, {:?}, {:?}, {:p});",
26685                    program,
26686                    location,
26687                    count,
26688                    transpose,
26689                    value
26690                );
26691            }
26692            let out = call_atomic_ptr_5arg(
26693                "glProgramUniformMatrix3fv",
26694                &self.glProgramUniformMatrix3fv_p,
26695                program,
26696                location,
26697                count,
26698                transpose,
26699                value,
26700            );
26701            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26702            {
26703                self.automatic_glGetError("glProgramUniformMatrix3fv");
26704            }
26705            out
26706        }
26707        #[doc(hidden)]
26708        pub unsafe fn ProgramUniformMatrix3fv_load_with_dyn(
26709            &self,
26710            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26711        ) -> bool {
26712            load_dyn_name_atomic_ptr(
26713                get_proc_address,
26714                b"glProgramUniformMatrix3fv\0",
26715                &self.glProgramUniformMatrix3fv_p,
26716            )
26717        }
26718        #[inline]
26719        #[doc(hidden)]
26720        pub fn ProgramUniformMatrix3fv_is_loaded(&self) -> bool {
26721            !self.glProgramUniformMatrix3fv_p.load(RELAX).is_null()
26722        }
26723        /// [glProgramUniformMatrix3x2dv](http://docs.gl/gl4/glProgramUniformMatrix3x2dv)(program, location, count, transpose, value)
26724        /// * `value` len: count*6
26725        #[cfg_attr(feature = "inline", inline)]
26726        #[cfg_attr(feature = "inline_always", inline(always))]
26727        pub unsafe fn ProgramUniformMatrix3x2dv(
26728            &self,
26729            program: GLuint,
26730            location: GLint,
26731            count: GLsizei,
26732            transpose: GLboolean,
26733            value: *const GLdouble,
26734        ) {
26735            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26736            {
26737                trace!(
26738                    "calling gl.ProgramUniformMatrix3x2dv({:?}, {:?}, {:?}, {:?}, {:p});",
26739                    program,
26740                    location,
26741                    count,
26742                    transpose,
26743                    value
26744                );
26745            }
26746            let out = call_atomic_ptr_5arg(
26747                "glProgramUniformMatrix3x2dv",
26748                &self.glProgramUniformMatrix3x2dv_p,
26749                program,
26750                location,
26751                count,
26752                transpose,
26753                value,
26754            );
26755            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26756            {
26757                self.automatic_glGetError("glProgramUniformMatrix3x2dv");
26758            }
26759            out
26760        }
26761        #[doc(hidden)]
26762        pub unsafe fn ProgramUniformMatrix3x2dv_load_with_dyn(
26763            &self,
26764            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26765        ) -> bool {
26766            load_dyn_name_atomic_ptr(
26767                get_proc_address,
26768                b"glProgramUniformMatrix3x2dv\0",
26769                &self.glProgramUniformMatrix3x2dv_p,
26770            )
26771        }
26772        #[inline]
26773        #[doc(hidden)]
26774        pub fn ProgramUniformMatrix3x2dv_is_loaded(&self) -> bool {
26775            !self.glProgramUniformMatrix3x2dv_p.load(RELAX).is_null()
26776        }
26777        /// [glProgramUniformMatrix3x2fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26778        /// * `value` len: count*6
26779        #[cfg_attr(feature = "inline", inline)]
26780        #[cfg_attr(feature = "inline_always", inline(always))]
26781        pub unsafe fn ProgramUniformMatrix3x2fv(
26782            &self,
26783            program: GLuint,
26784            location: GLint,
26785            count: GLsizei,
26786            transpose: GLboolean,
26787            value: *const GLfloat,
26788        ) {
26789            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26790            {
26791                trace!(
26792                    "calling gl.ProgramUniformMatrix3x2fv({:?}, {:?}, {:?}, {:?}, {:p});",
26793                    program,
26794                    location,
26795                    count,
26796                    transpose,
26797                    value
26798                );
26799            }
26800            let out = call_atomic_ptr_5arg(
26801                "glProgramUniformMatrix3x2fv",
26802                &self.glProgramUniformMatrix3x2fv_p,
26803                program,
26804                location,
26805                count,
26806                transpose,
26807                value,
26808            );
26809            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26810            {
26811                self.automatic_glGetError("glProgramUniformMatrix3x2fv");
26812            }
26813            out
26814        }
26815        #[doc(hidden)]
26816        pub unsafe fn ProgramUniformMatrix3x2fv_load_with_dyn(
26817            &self,
26818            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26819        ) -> bool {
26820            load_dyn_name_atomic_ptr(
26821                get_proc_address,
26822                b"glProgramUniformMatrix3x2fv\0",
26823                &self.glProgramUniformMatrix3x2fv_p,
26824            )
26825        }
26826        #[inline]
26827        #[doc(hidden)]
26828        pub fn ProgramUniformMatrix3x2fv_is_loaded(&self) -> bool {
26829            !self.glProgramUniformMatrix3x2fv_p.load(RELAX).is_null()
26830        }
26831        /// [glProgramUniformMatrix3x4dv](http://docs.gl/gl4/glProgramUniformMatrix3x4dv)(program, location, count, transpose, value)
26832        /// * `value` len: count*12
26833        #[cfg_attr(feature = "inline", inline)]
26834        #[cfg_attr(feature = "inline_always", inline(always))]
26835        pub unsafe fn ProgramUniformMatrix3x4dv(
26836            &self,
26837            program: GLuint,
26838            location: GLint,
26839            count: GLsizei,
26840            transpose: GLboolean,
26841            value: *const GLdouble,
26842        ) {
26843            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26844            {
26845                trace!(
26846                    "calling gl.ProgramUniformMatrix3x4dv({:?}, {:?}, {:?}, {:?}, {:p});",
26847                    program,
26848                    location,
26849                    count,
26850                    transpose,
26851                    value
26852                );
26853            }
26854            let out = call_atomic_ptr_5arg(
26855                "glProgramUniformMatrix3x4dv",
26856                &self.glProgramUniformMatrix3x4dv_p,
26857                program,
26858                location,
26859                count,
26860                transpose,
26861                value,
26862            );
26863            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26864            {
26865                self.automatic_glGetError("glProgramUniformMatrix3x4dv");
26866            }
26867            out
26868        }
26869        #[doc(hidden)]
26870        pub unsafe fn ProgramUniformMatrix3x4dv_load_with_dyn(
26871            &self,
26872            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26873        ) -> bool {
26874            load_dyn_name_atomic_ptr(
26875                get_proc_address,
26876                b"glProgramUniformMatrix3x4dv\0",
26877                &self.glProgramUniformMatrix3x4dv_p,
26878            )
26879        }
26880        #[inline]
26881        #[doc(hidden)]
26882        pub fn ProgramUniformMatrix3x4dv_is_loaded(&self) -> bool {
26883            !self.glProgramUniformMatrix3x4dv_p.load(RELAX).is_null()
26884        }
26885        /// [glProgramUniformMatrix3x4fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26886        /// * `value` len: count*12
26887        #[cfg_attr(feature = "inline", inline)]
26888        #[cfg_attr(feature = "inline_always", inline(always))]
26889        pub unsafe fn ProgramUniformMatrix3x4fv(
26890            &self,
26891            program: GLuint,
26892            location: GLint,
26893            count: GLsizei,
26894            transpose: GLboolean,
26895            value: *const GLfloat,
26896        ) {
26897            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26898            {
26899                trace!(
26900                    "calling gl.ProgramUniformMatrix3x4fv({:?}, {:?}, {:?}, {:?}, {:p});",
26901                    program,
26902                    location,
26903                    count,
26904                    transpose,
26905                    value
26906                );
26907            }
26908            let out = call_atomic_ptr_5arg(
26909                "glProgramUniformMatrix3x4fv",
26910                &self.glProgramUniformMatrix3x4fv_p,
26911                program,
26912                location,
26913                count,
26914                transpose,
26915                value,
26916            );
26917            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26918            {
26919                self.automatic_glGetError("glProgramUniformMatrix3x4fv");
26920            }
26921            out
26922        }
26923        #[doc(hidden)]
26924        pub unsafe fn ProgramUniformMatrix3x4fv_load_with_dyn(
26925            &self,
26926            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26927        ) -> bool {
26928            load_dyn_name_atomic_ptr(
26929                get_proc_address,
26930                b"glProgramUniformMatrix3x4fv\0",
26931                &self.glProgramUniformMatrix3x4fv_p,
26932            )
26933        }
26934        #[inline]
26935        #[doc(hidden)]
26936        pub fn ProgramUniformMatrix3x4fv_is_loaded(&self) -> bool {
26937            !self.glProgramUniformMatrix3x4fv_p.load(RELAX).is_null()
26938        }
26939        /// [glProgramUniformMatrix4dv](http://docs.gl/gl4/glProgramUniformMatrix4dv)(program, location, count, transpose, value)
26940        /// * `value` len: count*16
26941        #[cfg_attr(feature = "inline", inline)]
26942        #[cfg_attr(feature = "inline_always", inline(always))]
26943        pub unsafe fn ProgramUniformMatrix4dv(
26944            &self,
26945            program: GLuint,
26946            location: GLint,
26947            count: GLsizei,
26948            transpose: GLboolean,
26949            value: *const GLdouble,
26950        ) {
26951            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26952            {
26953                trace!(
26954                    "calling gl.ProgramUniformMatrix4dv({:?}, {:?}, {:?}, {:?}, {:p});",
26955                    program,
26956                    location,
26957                    count,
26958                    transpose,
26959                    value
26960                );
26961            }
26962            let out = call_atomic_ptr_5arg(
26963                "glProgramUniformMatrix4dv",
26964                &self.glProgramUniformMatrix4dv_p,
26965                program,
26966                location,
26967                count,
26968                transpose,
26969                value,
26970            );
26971            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26972            {
26973                self.automatic_glGetError("glProgramUniformMatrix4dv");
26974            }
26975            out
26976        }
26977        #[doc(hidden)]
26978        pub unsafe fn ProgramUniformMatrix4dv_load_with_dyn(
26979            &self,
26980            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26981        ) -> bool {
26982            load_dyn_name_atomic_ptr(
26983                get_proc_address,
26984                b"glProgramUniformMatrix4dv\0",
26985                &self.glProgramUniformMatrix4dv_p,
26986            )
26987        }
26988        #[inline]
26989        #[doc(hidden)]
26990        pub fn ProgramUniformMatrix4dv_is_loaded(&self) -> bool {
26991            !self.glProgramUniformMatrix4dv_p.load(RELAX).is_null()
26992        }
26993        /// [glProgramUniformMatrix4fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26994        /// * `value` len: count*16
26995        #[cfg_attr(feature = "inline", inline)]
26996        #[cfg_attr(feature = "inline_always", inline(always))]
26997        pub unsafe fn ProgramUniformMatrix4fv(
26998            &self,
26999            program: GLuint,
27000            location: GLint,
27001            count: GLsizei,
27002            transpose: GLboolean,
27003            value: *const GLfloat,
27004        ) {
27005            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27006            {
27007                trace!(
27008                    "calling gl.ProgramUniformMatrix4fv({:?}, {:?}, {:?}, {:?}, {:p});",
27009                    program,
27010                    location,
27011                    count,
27012                    transpose,
27013                    value
27014                );
27015            }
27016            let out = call_atomic_ptr_5arg(
27017                "glProgramUniformMatrix4fv",
27018                &self.glProgramUniformMatrix4fv_p,
27019                program,
27020                location,
27021                count,
27022                transpose,
27023                value,
27024            );
27025            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27026            {
27027                self.automatic_glGetError("glProgramUniformMatrix4fv");
27028            }
27029            out
27030        }
27031        #[doc(hidden)]
27032        pub unsafe fn ProgramUniformMatrix4fv_load_with_dyn(
27033            &self,
27034            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27035        ) -> bool {
27036            load_dyn_name_atomic_ptr(
27037                get_proc_address,
27038                b"glProgramUniformMatrix4fv\0",
27039                &self.glProgramUniformMatrix4fv_p,
27040            )
27041        }
27042        #[inline]
27043        #[doc(hidden)]
27044        pub fn ProgramUniformMatrix4fv_is_loaded(&self) -> bool {
27045            !self.glProgramUniformMatrix4fv_p.load(RELAX).is_null()
27046        }
27047        /// [glProgramUniformMatrix4x2dv](http://docs.gl/gl4/glProgramUniformMatrix4x2dv)(program, location, count, transpose, value)
27048        /// * `value` len: count*8
27049        #[cfg_attr(feature = "inline", inline)]
27050        #[cfg_attr(feature = "inline_always", inline(always))]
27051        pub unsafe fn ProgramUniformMatrix4x2dv(
27052            &self,
27053            program: GLuint,
27054            location: GLint,
27055            count: GLsizei,
27056            transpose: GLboolean,
27057            value: *const GLdouble,
27058        ) {
27059            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27060            {
27061                trace!(
27062                    "calling gl.ProgramUniformMatrix4x2dv({:?}, {:?}, {:?}, {:?}, {:p});",
27063                    program,
27064                    location,
27065                    count,
27066                    transpose,
27067                    value
27068                );
27069            }
27070            let out = call_atomic_ptr_5arg(
27071                "glProgramUniformMatrix4x2dv",
27072                &self.glProgramUniformMatrix4x2dv_p,
27073                program,
27074                location,
27075                count,
27076                transpose,
27077                value,
27078            );
27079            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27080            {
27081                self.automatic_glGetError("glProgramUniformMatrix4x2dv");
27082            }
27083            out
27084        }
27085        #[doc(hidden)]
27086        pub unsafe fn ProgramUniformMatrix4x2dv_load_with_dyn(
27087            &self,
27088            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27089        ) -> bool {
27090            load_dyn_name_atomic_ptr(
27091                get_proc_address,
27092                b"glProgramUniformMatrix4x2dv\0",
27093                &self.glProgramUniformMatrix4x2dv_p,
27094            )
27095        }
27096        #[inline]
27097        #[doc(hidden)]
27098        pub fn ProgramUniformMatrix4x2dv_is_loaded(&self) -> bool {
27099            !self.glProgramUniformMatrix4x2dv_p.load(RELAX).is_null()
27100        }
27101        /// [glProgramUniformMatrix4x2fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
27102        /// * `value` len: count*8
27103        #[cfg_attr(feature = "inline", inline)]
27104        #[cfg_attr(feature = "inline_always", inline(always))]
27105        pub unsafe fn ProgramUniformMatrix4x2fv(
27106            &self,
27107            program: GLuint,
27108            location: GLint,
27109            count: GLsizei,
27110            transpose: GLboolean,
27111            value: *const GLfloat,
27112        ) {
27113            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27114            {
27115                trace!(
27116                    "calling gl.ProgramUniformMatrix4x2fv({:?}, {:?}, {:?}, {:?}, {:p});",
27117                    program,
27118                    location,
27119                    count,
27120                    transpose,
27121                    value
27122                );
27123            }
27124            let out = call_atomic_ptr_5arg(
27125                "glProgramUniformMatrix4x2fv",
27126                &self.glProgramUniformMatrix4x2fv_p,
27127                program,
27128                location,
27129                count,
27130                transpose,
27131                value,
27132            );
27133            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27134            {
27135                self.automatic_glGetError("glProgramUniformMatrix4x2fv");
27136            }
27137            out
27138        }
27139        #[doc(hidden)]
27140        pub unsafe fn ProgramUniformMatrix4x2fv_load_with_dyn(
27141            &self,
27142            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27143        ) -> bool {
27144            load_dyn_name_atomic_ptr(
27145                get_proc_address,
27146                b"glProgramUniformMatrix4x2fv\0",
27147                &self.glProgramUniformMatrix4x2fv_p,
27148            )
27149        }
27150        #[inline]
27151        #[doc(hidden)]
27152        pub fn ProgramUniformMatrix4x2fv_is_loaded(&self) -> bool {
27153            !self.glProgramUniformMatrix4x2fv_p.load(RELAX).is_null()
27154        }
27155        /// [glProgramUniformMatrix4x3dv](http://docs.gl/gl4/glProgramUniformMatrix4x3dv)(program, location, count, transpose, value)
27156        /// * `value` len: count*12
27157        #[cfg_attr(feature = "inline", inline)]
27158        #[cfg_attr(feature = "inline_always", inline(always))]
27159        pub unsafe fn ProgramUniformMatrix4x3dv(
27160            &self,
27161            program: GLuint,
27162            location: GLint,
27163            count: GLsizei,
27164            transpose: GLboolean,
27165            value: *const GLdouble,
27166        ) {
27167            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27168            {
27169                trace!(
27170                    "calling gl.ProgramUniformMatrix4x3dv({:?}, {:?}, {:?}, {:?}, {:p});",
27171                    program,
27172                    location,
27173                    count,
27174                    transpose,
27175                    value
27176                );
27177            }
27178            let out = call_atomic_ptr_5arg(
27179                "glProgramUniformMatrix4x3dv",
27180                &self.glProgramUniformMatrix4x3dv_p,
27181                program,
27182                location,
27183                count,
27184                transpose,
27185                value,
27186            );
27187            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27188            {
27189                self.automatic_glGetError("glProgramUniformMatrix4x3dv");
27190            }
27191            out
27192        }
27193        #[doc(hidden)]
27194        pub unsafe fn ProgramUniformMatrix4x3dv_load_with_dyn(
27195            &self,
27196            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27197        ) -> bool {
27198            load_dyn_name_atomic_ptr(
27199                get_proc_address,
27200                b"glProgramUniformMatrix4x3dv\0",
27201                &self.glProgramUniformMatrix4x3dv_p,
27202            )
27203        }
27204        #[inline]
27205        #[doc(hidden)]
27206        pub fn ProgramUniformMatrix4x3dv_is_loaded(&self) -> bool {
27207            !self.glProgramUniformMatrix4x3dv_p.load(RELAX).is_null()
27208        }
27209        /// [glProgramUniformMatrix4x3fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
27210        /// * `value` len: count*12
27211        #[cfg_attr(feature = "inline", inline)]
27212        #[cfg_attr(feature = "inline_always", inline(always))]
27213        pub unsafe fn ProgramUniformMatrix4x3fv(
27214            &self,
27215            program: GLuint,
27216            location: GLint,
27217            count: GLsizei,
27218            transpose: GLboolean,
27219            value: *const GLfloat,
27220        ) {
27221            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27222            {
27223                trace!(
27224                    "calling gl.ProgramUniformMatrix4x3fv({:?}, {:?}, {:?}, {:?}, {:p});",
27225                    program,
27226                    location,
27227                    count,
27228                    transpose,
27229                    value
27230                );
27231            }
27232            let out = call_atomic_ptr_5arg(
27233                "glProgramUniformMatrix4x3fv",
27234                &self.glProgramUniformMatrix4x3fv_p,
27235                program,
27236                location,
27237                count,
27238                transpose,
27239                value,
27240            );
27241            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27242            {
27243                self.automatic_glGetError("glProgramUniformMatrix4x3fv");
27244            }
27245            out
27246        }
27247        #[doc(hidden)]
27248        pub unsafe fn ProgramUniformMatrix4x3fv_load_with_dyn(
27249            &self,
27250            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27251        ) -> bool {
27252            load_dyn_name_atomic_ptr(
27253                get_proc_address,
27254                b"glProgramUniformMatrix4x3fv\0",
27255                &self.glProgramUniformMatrix4x3fv_p,
27256            )
27257        }
27258        #[inline]
27259        #[doc(hidden)]
27260        pub fn ProgramUniformMatrix4x3fv_is_loaded(&self) -> bool {
27261            !self.glProgramUniformMatrix4x3fv_p.load(RELAX).is_null()
27262        }
27263        /// [glProvokingVertex](http://docs.gl/gl4/glProvokingVertex)(mode)
27264        /// * `mode` group: VertexProvokingMode
27265        #[cfg_attr(feature = "inline", inline)]
27266        #[cfg_attr(feature = "inline_always", inline(always))]
27267        pub unsafe fn ProvokingVertex(&self, mode: GLenum) {
27268            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27269            {
27270                trace!("calling gl.ProvokingVertex({:#X});", mode);
27271            }
27272            let out = call_atomic_ptr_1arg("glProvokingVertex", &self.glProvokingVertex_p, mode);
27273            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27274            {
27275                self.automatic_glGetError("glProvokingVertex");
27276            }
27277            out
27278        }
27279        #[doc(hidden)]
27280        pub unsafe fn ProvokingVertex_load_with_dyn(
27281            &self,
27282            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27283        ) -> bool {
27284            load_dyn_name_atomic_ptr(
27285                get_proc_address,
27286                b"glProvokingVertex\0",
27287                &self.glProvokingVertex_p,
27288            )
27289        }
27290        #[inline]
27291        #[doc(hidden)]
27292        pub fn ProvokingVertex_is_loaded(&self) -> bool {
27293            !self.glProvokingVertex_p.load(RELAX).is_null()
27294        }
27295        /// [glPushDebugGroup](http://docs.gl/gl4/glPushDebugGroup)(source, id, length, message)
27296        /// * `source` group: DebugSource
27297        /// * `message` len: COMPSIZE(message,length)
27298        #[cfg_attr(feature = "inline", inline)]
27299        #[cfg_attr(feature = "inline_always", inline(always))]
27300        pub unsafe fn PushDebugGroup(
27301            &self,
27302            source: GLenum,
27303            id: GLuint,
27304            length: GLsizei,
27305            message: *const GLchar,
27306        ) {
27307            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27308            {
27309                trace!(
27310                    "calling gl.PushDebugGroup({:#X}, {:?}, {:?}, {:p});",
27311                    source,
27312                    id,
27313                    length,
27314                    message
27315                );
27316            }
27317            let out = call_atomic_ptr_4arg(
27318                "glPushDebugGroup",
27319                &self.glPushDebugGroup_p,
27320                source,
27321                id,
27322                length,
27323                message,
27324            );
27325            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27326            {
27327                self.automatic_glGetError("glPushDebugGroup");
27328            }
27329            out
27330        }
27331        #[doc(hidden)]
27332        pub unsafe fn PushDebugGroup_load_with_dyn(
27333            &self,
27334            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27335        ) -> bool {
27336            load_dyn_name_atomic_ptr(
27337                get_proc_address,
27338                b"glPushDebugGroup\0",
27339                &self.glPushDebugGroup_p,
27340            )
27341        }
27342        #[inline]
27343        #[doc(hidden)]
27344        pub fn PushDebugGroup_is_loaded(&self) -> bool {
27345            !self.glPushDebugGroup_p.load(RELAX).is_null()
27346        }
27347        /// [glPushDebugGroupKHR](http://docs.gl/gl4/glPushDebugGroupKHR)(source, id, length, message)
27348        /// * `source` group: DebugSource
27349        /// * alias of: [`glPushDebugGroup`]
27350        #[cfg_attr(feature = "inline", inline)]
27351        #[cfg_attr(feature = "inline_always", inline(always))]
27352        pub unsafe fn PushDebugGroupKHR(
27353            &self,
27354            source: GLenum,
27355            id: GLuint,
27356            length: GLsizei,
27357            message: *const GLchar,
27358        ) {
27359            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27360            {
27361                trace!(
27362                    "calling gl.PushDebugGroupKHR({:#X}, {:?}, {:?}, {:p});",
27363                    source,
27364                    id,
27365                    length,
27366                    message
27367                );
27368            }
27369            let out = call_atomic_ptr_4arg(
27370                "glPushDebugGroupKHR",
27371                &self.glPushDebugGroupKHR_p,
27372                source,
27373                id,
27374                length,
27375                message,
27376            );
27377            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27378            {
27379                self.automatic_glGetError("glPushDebugGroupKHR");
27380            }
27381            out
27382        }
27383        #[doc(hidden)]
27384        pub unsafe fn PushDebugGroupKHR_load_with_dyn(
27385            &self,
27386            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27387        ) -> bool {
27388            load_dyn_name_atomic_ptr(
27389                get_proc_address,
27390                b"glPushDebugGroupKHR\0",
27391                &self.glPushDebugGroupKHR_p,
27392            )
27393        }
27394        #[inline]
27395        #[doc(hidden)]
27396        pub fn PushDebugGroupKHR_is_loaded(&self) -> bool {
27397            !self.glPushDebugGroupKHR_p.load(RELAX).is_null()
27398        }
27399        /// [glQueryCounter](http://docs.gl/gl4/glQueryCounter)(id, target)
27400        /// * `target` group: QueryCounterTarget
27401        #[cfg_attr(feature = "inline", inline)]
27402        #[cfg_attr(feature = "inline_always", inline(always))]
27403        pub unsafe fn QueryCounter(&self, id: GLuint, target: GLenum) {
27404            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27405            {
27406                trace!("calling gl.QueryCounter({:?}, {:#X});", id, target);
27407            }
27408            let out = call_atomic_ptr_2arg("glQueryCounter", &self.glQueryCounter_p, id, target);
27409            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27410            {
27411                self.automatic_glGetError("glQueryCounter");
27412            }
27413            out
27414        }
27415        #[doc(hidden)]
27416        pub unsafe fn QueryCounter_load_with_dyn(
27417            &self,
27418            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27419        ) -> bool {
27420            load_dyn_name_atomic_ptr(
27421                get_proc_address,
27422                b"glQueryCounter\0",
27423                &self.glQueryCounter_p,
27424            )
27425        }
27426        #[inline]
27427        #[doc(hidden)]
27428        pub fn QueryCounter_is_loaded(&self) -> bool {
27429            !self.glQueryCounter_p.load(RELAX).is_null()
27430        }
27431        /// [glQueryCounterEXT](http://docs.gl/gl4/glQueryCounterEXT)(id, target)
27432        /// * `target` group: QueryCounterTarget
27433        /// * alias of: [`glQueryCounter`]
27434        #[cfg_attr(feature = "inline", inline)]
27435        #[cfg_attr(feature = "inline_always", inline(always))]
27436        pub unsafe fn QueryCounterEXT(&self, id: GLuint, target: GLenum) {
27437            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27438            {
27439                trace!("calling gl.QueryCounterEXT({:?}, {:#X});", id, target);
27440            }
27441            let out =
27442                call_atomic_ptr_2arg("glQueryCounterEXT", &self.glQueryCounterEXT_p, id, target);
27443            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27444            {
27445                self.automatic_glGetError("glQueryCounterEXT");
27446            }
27447            out
27448        }
27449        #[doc(hidden)]
27450        pub unsafe fn QueryCounterEXT_load_with_dyn(
27451            &self,
27452            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27453        ) -> bool {
27454            load_dyn_name_atomic_ptr(
27455                get_proc_address,
27456                b"glQueryCounterEXT\0",
27457                &self.glQueryCounterEXT_p,
27458            )
27459        }
27460        #[inline]
27461        #[doc(hidden)]
27462        pub fn QueryCounterEXT_is_loaded(&self) -> bool {
27463            !self.glQueryCounterEXT_p.load(RELAX).is_null()
27464        }
27465        /// [glReadBuffer](http://docs.gl/gl4/glReadBuffer)(src)
27466        /// * `src` group: ReadBufferMode
27467        #[cfg_attr(feature = "inline", inline)]
27468        #[cfg_attr(feature = "inline_always", inline(always))]
27469        pub unsafe fn ReadBuffer(&self, src: GLenum) {
27470            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27471            {
27472                trace!("calling gl.ReadBuffer({:#X});", src);
27473            }
27474            let out = call_atomic_ptr_1arg("glReadBuffer", &self.glReadBuffer_p, src);
27475            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27476            {
27477                self.automatic_glGetError("glReadBuffer");
27478            }
27479            out
27480        }
27481        #[doc(hidden)]
27482        pub unsafe fn ReadBuffer_load_with_dyn(
27483            &self,
27484            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27485        ) -> bool {
27486            load_dyn_name_atomic_ptr(get_proc_address, b"glReadBuffer\0", &self.glReadBuffer_p)
27487        }
27488        #[inline]
27489        #[doc(hidden)]
27490        pub fn ReadBuffer_is_loaded(&self) -> bool {
27491            !self.glReadBuffer_p.load(RELAX).is_null()
27492        }
27493        /// [glReadPixels](http://docs.gl/gl4/glReadPixels)(x, y, width, height, format, type_, pixels)
27494        /// * `x` group: WinCoord
27495        /// * `y` group: WinCoord
27496        /// * `format` group: PixelFormat
27497        /// * `type_` group: PixelType
27498        /// * `pixels` len: COMPSIZE(format,type,width,height)
27499        #[cfg_attr(feature = "inline", inline)]
27500        #[cfg_attr(feature = "inline_always", inline(always))]
27501        pub unsafe fn ReadPixels(
27502            &self,
27503            x: GLint,
27504            y: GLint,
27505            width: GLsizei,
27506            height: GLsizei,
27507            format: GLenum,
27508            type_: GLenum,
27509            pixels: *mut c_void,
27510        ) {
27511            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27512            {
27513                trace!(
27514                    "calling gl.ReadPixels({:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});",
27515                    x,
27516                    y,
27517                    width,
27518                    height,
27519                    format,
27520                    type_,
27521                    pixels
27522                );
27523            }
27524            let out = call_atomic_ptr_7arg(
27525                "glReadPixels",
27526                &self.glReadPixels_p,
27527                x,
27528                y,
27529                width,
27530                height,
27531                format,
27532                type_,
27533                pixels,
27534            );
27535            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27536            {
27537                self.automatic_glGetError("glReadPixels");
27538            }
27539            out
27540        }
27541        #[doc(hidden)]
27542        pub unsafe fn ReadPixels_load_with_dyn(
27543            &self,
27544            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27545        ) -> bool {
27546            load_dyn_name_atomic_ptr(get_proc_address, b"glReadPixels\0", &self.glReadPixels_p)
27547        }
27548        #[inline]
27549        #[doc(hidden)]
27550        pub fn ReadPixels_is_loaded(&self) -> bool {
27551            !self.glReadPixels_p.load(RELAX).is_null()
27552        }
27553        /// [glReadnPixels](http://docs.gl/gl4/glReadnPixels)(x, y, width, height, format, type_, bufSize, data)
27554        /// * `format` group: PixelFormat
27555        /// * `type_` group: PixelType
27556        /// * `data` len: bufSize
27557        #[cfg_attr(feature = "inline", inline)]
27558        #[cfg_attr(feature = "inline_always", inline(always))]
27559        pub unsafe fn ReadnPixels(
27560            &self,
27561            x: GLint,
27562            y: GLint,
27563            width: GLsizei,
27564            height: GLsizei,
27565            format: GLenum,
27566            type_: GLenum,
27567            bufSize: GLsizei,
27568            data: *mut c_void,
27569        ) {
27570            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27571            {
27572                trace!(
27573                    "calling gl.ReadnPixels({:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:?}, {:p});",
27574                    x,
27575                    y,
27576                    width,
27577                    height,
27578                    format,
27579                    type_,
27580                    bufSize,
27581                    data
27582                );
27583            }
27584            let out = call_atomic_ptr_8arg(
27585                "glReadnPixels",
27586                &self.glReadnPixels_p,
27587                x,
27588                y,
27589                width,
27590                height,
27591                format,
27592                type_,
27593                bufSize,
27594                data,
27595            );
27596            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27597            {
27598                self.automatic_glGetError("glReadnPixels");
27599            }
27600            out
27601        }
27602        #[doc(hidden)]
27603        pub unsafe fn ReadnPixels_load_with_dyn(
27604            &self,
27605            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27606        ) -> bool {
27607            load_dyn_name_atomic_ptr(get_proc_address, b"glReadnPixels\0", &self.glReadnPixels_p)
27608        }
27609        #[inline]
27610        #[doc(hidden)]
27611        pub fn ReadnPixels_is_loaded(&self) -> bool {
27612            !self.glReadnPixels_p.load(RELAX).is_null()
27613        }
27614        /// [glReleaseShaderCompiler](http://docs.gl/gl4/glReleaseShaderCompiler)()
27615        #[cfg_attr(feature = "inline", inline)]
27616        #[cfg_attr(feature = "inline_always", inline(always))]
27617        pub unsafe fn ReleaseShaderCompiler(&self) {
27618            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27619            {
27620                trace!("calling gl.ReleaseShaderCompiler();",);
27621            }
27622            let out =
27623                call_atomic_ptr_0arg("glReleaseShaderCompiler", &self.glReleaseShaderCompiler_p);
27624            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27625            {
27626                self.automatic_glGetError("glReleaseShaderCompiler");
27627            }
27628            out
27629        }
27630        #[doc(hidden)]
27631        pub unsafe fn ReleaseShaderCompiler_load_with_dyn(
27632            &self,
27633            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27634        ) -> bool {
27635            load_dyn_name_atomic_ptr(
27636                get_proc_address,
27637                b"glReleaseShaderCompiler\0",
27638                &self.glReleaseShaderCompiler_p,
27639            )
27640        }
27641        #[inline]
27642        #[doc(hidden)]
27643        pub fn ReleaseShaderCompiler_is_loaded(&self) -> bool {
27644            !self.glReleaseShaderCompiler_p.load(RELAX).is_null()
27645        }
27646        /// [glRenderbufferStorage](http://docs.gl/gl4/glRenderbufferStorage)(target, internalformat, width, height)
27647        /// * `target` group: RenderbufferTarget
27648        /// * `internalformat` group: InternalFormat
27649        #[cfg_attr(feature = "inline", inline)]
27650        #[cfg_attr(feature = "inline_always", inline(always))]
27651        pub unsafe fn RenderbufferStorage(
27652            &self,
27653            target: GLenum,
27654            internalformat: GLenum,
27655            width: GLsizei,
27656            height: GLsizei,
27657        ) {
27658            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27659            {
27660                trace!(
27661                    "calling gl.RenderbufferStorage({:#X}, {:#X}, {:?}, {:?});",
27662                    target,
27663                    internalformat,
27664                    width,
27665                    height
27666                );
27667            }
27668            let out = call_atomic_ptr_4arg(
27669                "glRenderbufferStorage",
27670                &self.glRenderbufferStorage_p,
27671                target,
27672                internalformat,
27673                width,
27674                height,
27675            );
27676            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27677            {
27678                self.automatic_glGetError("glRenderbufferStorage");
27679            }
27680            out
27681        }
27682        #[doc(hidden)]
27683        pub unsafe fn RenderbufferStorage_load_with_dyn(
27684            &self,
27685            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27686        ) -> bool {
27687            load_dyn_name_atomic_ptr(
27688                get_proc_address,
27689                b"glRenderbufferStorage\0",
27690                &self.glRenderbufferStorage_p,
27691            )
27692        }
27693        #[inline]
27694        #[doc(hidden)]
27695        pub fn RenderbufferStorage_is_loaded(&self) -> bool {
27696            !self.glRenderbufferStorage_p.load(RELAX).is_null()
27697        }
27698        /// [glRenderbufferStorageMultisample](http://docs.gl/gl4/glRenderbufferStorageMultisample)(target, samples, internalformat, width, height)
27699        /// * `target` group: RenderbufferTarget
27700        /// * `internalformat` group: InternalFormat
27701        #[cfg_attr(feature = "inline", inline)]
27702        #[cfg_attr(feature = "inline_always", inline(always))]
27703        pub unsafe fn RenderbufferStorageMultisample(
27704            &self,
27705            target: GLenum,
27706            samples: GLsizei,
27707            internalformat: GLenum,
27708            width: GLsizei,
27709            height: GLsizei,
27710        ) {
27711            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27712            {
27713                trace!(
27714                    "calling gl.RenderbufferStorageMultisample({:#X}, {:?}, {:#X}, {:?}, {:?});",
27715                    target,
27716                    samples,
27717                    internalformat,
27718                    width,
27719                    height
27720                );
27721            }
27722            let out = call_atomic_ptr_5arg(
27723                "glRenderbufferStorageMultisample",
27724                &self.glRenderbufferStorageMultisample_p,
27725                target,
27726                samples,
27727                internalformat,
27728                width,
27729                height,
27730            );
27731            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27732            {
27733                self.automatic_glGetError("glRenderbufferStorageMultisample");
27734            }
27735            out
27736        }
27737        #[doc(hidden)]
27738        pub unsafe fn RenderbufferStorageMultisample_load_with_dyn(
27739            &self,
27740            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27741        ) -> bool {
27742            load_dyn_name_atomic_ptr(
27743                get_proc_address,
27744                b"glRenderbufferStorageMultisample\0",
27745                &self.glRenderbufferStorageMultisample_p,
27746            )
27747        }
27748        #[inline]
27749        #[doc(hidden)]
27750        pub fn RenderbufferStorageMultisample_is_loaded(&self) -> bool {
27751            !self
27752                .glRenderbufferStorageMultisample_p
27753                .load(RELAX)
27754                .is_null()
27755        }
27756        /// [glResumeTransformFeedback](http://docs.gl/gl4/glResumeTransformFeedback)()
27757        #[cfg_attr(feature = "inline", inline)]
27758        #[cfg_attr(feature = "inline_always", inline(always))]
27759        pub unsafe fn ResumeTransformFeedback(&self) {
27760            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27761            {
27762                trace!("calling gl.ResumeTransformFeedback();",);
27763            }
27764            let out = call_atomic_ptr_0arg(
27765                "glResumeTransformFeedback",
27766                &self.glResumeTransformFeedback_p,
27767            );
27768            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27769            {
27770                self.automatic_glGetError("glResumeTransformFeedback");
27771            }
27772            out
27773        }
27774        #[doc(hidden)]
27775        pub unsafe fn ResumeTransformFeedback_load_with_dyn(
27776            &self,
27777            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27778        ) -> bool {
27779            load_dyn_name_atomic_ptr(
27780                get_proc_address,
27781                b"glResumeTransformFeedback\0",
27782                &self.glResumeTransformFeedback_p,
27783            )
27784        }
27785        #[inline]
27786        #[doc(hidden)]
27787        pub fn ResumeTransformFeedback_is_loaded(&self) -> bool {
27788            !self.glResumeTransformFeedback_p.load(RELAX).is_null()
27789        }
27790        /// [glSampleCoverage](http://docs.gl/gl4/glSampleCoverage)(value, invert)
27791        #[cfg_attr(feature = "inline", inline)]
27792        #[cfg_attr(feature = "inline_always", inline(always))]
27793        pub unsafe fn SampleCoverage(&self, value: GLfloat, invert: GLboolean) {
27794            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27795            {
27796                trace!("calling gl.SampleCoverage({:?}, {:?});", value, invert);
27797            }
27798            let out =
27799                call_atomic_ptr_2arg("glSampleCoverage", &self.glSampleCoverage_p, value, invert);
27800            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27801            {
27802                self.automatic_glGetError("glSampleCoverage");
27803            }
27804            out
27805        }
27806        #[doc(hidden)]
27807        pub unsafe fn SampleCoverage_load_with_dyn(
27808            &self,
27809            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27810        ) -> bool {
27811            load_dyn_name_atomic_ptr(
27812                get_proc_address,
27813                b"glSampleCoverage\0",
27814                &self.glSampleCoverage_p,
27815            )
27816        }
27817        #[inline]
27818        #[doc(hidden)]
27819        pub fn SampleCoverage_is_loaded(&self) -> bool {
27820            !self.glSampleCoverage_p.load(RELAX).is_null()
27821        }
27822        /// [glSampleMaski](http://docs.gl/gl4/glSampleMask)(maskNumber, mask)
27823        #[cfg_attr(feature = "inline", inline)]
27824        #[cfg_attr(feature = "inline_always", inline(always))]
27825        pub unsafe fn SampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) {
27826            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27827            {
27828                trace!("calling gl.SampleMaski({:?}, {:?});", maskNumber, mask);
27829            }
27830            let out =
27831                call_atomic_ptr_2arg("glSampleMaski", &self.glSampleMaski_p, maskNumber, mask);
27832            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27833            {
27834                self.automatic_glGetError("glSampleMaski");
27835            }
27836            out
27837        }
27838        #[doc(hidden)]
27839        pub unsafe fn SampleMaski_load_with_dyn(
27840            &self,
27841            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27842        ) -> bool {
27843            load_dyn_name_atomic_ptr(get_proc_address, b"glSampleMaski\0", &self.glSampleMaski_p)
27844        }
27845        #[inline]
27846        #[doc(hidden)]
27847        pub fn SampleMaski_is_loaded(&self) -> bool {
27848            !self.glSampleMaski_p.load(RELAX).is_null()
27849        }
27850        /// [glSamplerParameterIiv](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
27851        /// * `pname` group: SamplerParameterI
27852        /// * `param` len: COMPSIZE(pname)
27853        #[cfg_attr(feature = "inline", inline)]
27854        #[cfg_attr(feature = "inline_always", inline(always))]
27855        pub unsafe fn SamplerParameterIiv(
27856            &self,
27857            sampler: GLuint,
27858            pname: GLenum,
27859            param: *const GLint,
27860        ) {
27861            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27862            {
27863                trace!(
27864                    "calling gl.SamplerParameterIiv({:?}, {:#X}, {:p});",
27865                    sampler,
27866                    pname,
27867                    param
27868                );
27869            }
27870            let out = call_atomic_ptr_3arg(
27871                "glSamplerParameterIiv",
27872                &self.glSamplerParameterIiv_p,
27873                sampler,
27874                pname,
27875                param,
27876            );
27877            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27878            {
27879                self.automatic_glGetError("glSamplerParameterIiv");
27880            }
27881            out
27882        }
27883        #[doc(hidden)]
27884        pub unsafe fn SamplerParameterIiv_load_with_dyn(
27885            &self,
27886            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27887        ) -> bool {
27888            load_dyn_name_atomic_ptr(
27889                get_proc_address,
27890                b"glSamplerParameterIiv\0",
27891                &self.glSamplerParameterIiv_p,
27892            )
27893        }
27894        #[inline]
27895        #[doc(hidden)]
27896        pub fn SamplerParameterIiv_is_loaded(&self) -> bool {
27897            !self.glSamplerParameterIiv_p.load(RELAX).is_null()
27898        }
27899        /// [glSamplerParameterIuiv](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
27900        /// * `pname` group: SamplerParameterI
27901        /// * `param` len: COMPSIZE(pname)
27902        #[cfg_attr(feature = "inline", inline)]
27903        #[cfg_attr(feature = "inline_always", inline(always))]
27904        pub unsafe fn SamplerParameterIuiv(
27905            &self,
27906            sampler: GLuint,
27907            pname: GLenum,
27908            param: *const GLuint,
27909        ) {
27910            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27911            {
27912                trace!(
27913                    "calling gl.SamplerParameterIuiv({:?}, {:#X}, {:p});",
27914                    sampler,
27915                    pname,
27916                    param
27917                );
27918            }
27919            let out = call_atomic_ptr_3arg(
27920                "glSamplerParameterIuiv",
27921                &self.glSamplerParameterIuiv_p,
27922                sampler,
27923                pname,
27924                param,
27925            );
27926            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27927            {
27928                self.automatic_glGetError("glSamplerParameterIuiv");
27929            }
27930            out
27931        }
27932        #[doc(hidden)]
27933        pub unsafe fn SamplerParameterIuiv_load_with_dyn(
27934            &self,
27935            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27936        ) -> bool {
27937            load_dyn_name_atomic_ptr(
27938                get_proc_address,
27939                b"glSamplerParameterIuiv\0",
27940                &self.glSamplerParameterIuiv_p,
27941            )
27942        }
27943        #[inline]
27944        #[doc(hidden)]
27945        pub fn SamplerParameterIuiv_is_loaded(&self) -> bool {
27946            !self.glSamplerParameterIuiv_p.load(RELAX).is_null()
27947        }
27948        /// [glSamplerParameterf](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
27949        /// * `pname` group: SamplerParameterF
27950        #[cfg_attr(feature = "inline", inline)]
27951        #[cfg_attr(feature = "inline_always", inline(always))]
27952        pub unsafe fn SamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) {
27953            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27954            {
27955                trace!(
27956                    "calling gl.SamplerParameterf({:?}, {:#X}, {:?});",
27957                    sampler,
27958                    pname,
27959                    param
27960                );
27961            }
27962            let out = call_atomic_ptr_3arg(
27963                "glSamplerParameterf",
27964                &self.glSamplerParameterf_p,
27965                sampler,
27966                pname,
27967                param,
27968            );
27969            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27970            {
27971                self.automatic_glGetError("glSamplerParameterf");
27972            }
27973            out
27974        }
27975        #[doc(hidden)]
27976        pub unsafe fn SamplerParameterf_load_with_dyn(
27977            &self,
27978            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27979        ) -> bool {
27980            load_dyn_name_atomic_ptr(
27981                get_proc_address,
27982                b"glSamplerParameterf\0",
27983                &self.glSamplerParameterf_p,
27984            )
27985        }
27986        #[inline]
27987        #[doc(hidden)]
27988        pub fn SamplerParameterf_is_loaded(&self) -> bool {
27989            !self.glSamplerParameterf_p.load(RELAX).is_null()
27990        }
27991        /// [glSamplerParameterfv](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
27992        /// * `pname` group: SamplerParameterF
27993        /// * `param` len: COMPSIZE(pname)
27994        #[cfg_attr(feature = "inline", inline)]
27995        #[cfg_attr(feature = "inline_always", inline(always))]
27996        pub unsafe fn SamplerParameterfv(
27997            &self,
27998            sampler: GLuint,
27999            pname: GLenum,
28000            param: *const GLfloat,
28001        ) {
28002            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28003            {
28004                trace!(
28005                    "calling gl.SamplerParameterfv({:?}, {:#X}, {:p});",
28006                    sampler,
28007                    pname,
28008                    param
28009                );
28010            }
28011            let out = call_atomic_ptr_3arg(
28012                "glSamplerParameterfv",
28013                &self.glSamplerParameterfv_p,
28014                sampler,
28015                pname,
28016                param,
28017            );
28018            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28019            {
28020                self.automatic_glGetError("glSamplerParameterfv");
28021            }
28022            out
28023        }
28024        #[doc(hidden)]
28025        pub unsafe fn SamplerParameterfv_load_with_dyn(
28026            &self,
28027            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28028        ) -> bool {
28029            load_dyn_name_atomic_ptr(
28030                get_proc_address,
28031                b"glSamplerParameterfv\0",
28032                &self.glSamplerParameterfv_p,
28033            )
28034        }
28035        #[inline]
28036        #[doc(hidden)]
28037        pub fn SamplerParameterfv_is_loaded(&self) -> bool {
28038            !self.glSamplerParameterfv_p.load(RELAX).is_null()
28039        }
28040        /// [glSamplerParameteri](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
28041        /// * `pname` group: SamplerParameterI
28042        #[cfg_attr(feature = "inline", inline)]
28043        #[cfg_attr(feature = "inline_always", inline(always))]
28044        pub unsafe fn SamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) {
28045            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28046            {
28047                trace!(
28048                    "calling gl.SamplerParameteri({:?}, {:#X}, {:?});",
28049                    sampler,
28050                    pname,
28051                    param
28052                );
28053            }
28054            let out = call_atomic_ptr_3arg(
28055                "glSamplerParameteri",
28056                &self.glSamplerParameteri_p,
28057                sampler,
28058                pname,
28059                param,
28060            );
28061            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28062            {
28063                self.automatic_glGetError("glSamplerParameteri");
28064            }
28065            out
28066        }
28067        #[doc(hidden)]
28068        pub unsafe fn SamplerParameteri_load_with_dyn(
28069            &self,
28070            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28071        ) -> bool {
28072            load_dyn_name_atomic_ptr(
28073                get_proc_address,
28074                b"glSamplerParameteri\0",
28075                &self.glSamplerParameteri_p,
28076            )
28077        }
28078        #[inline]
28079        #[doc(hidden)]
28080        pub fn SamplerParameteri_is_loaded(&self) -> bool {
28081            !self.glSamplerParameteri_p.load(RELAX).is_null()
28082        }
28083        /// [glSamplerParameteriv](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
28084        /// * `pname` group: SamplerParameterI
28085        /// * `param` len: COMPSIZE(pname)
28086        #[cfg_attr(feature = "inline", inline)]
28087        #[cfg_attr(feature = "inline_always", inline(always))]
28088        pub unsafe fn SamplerParameteriv(
28089            &self,
28090            sampler: GLuint,
28091            pname: GLenum,
28092            param: *const GLint,
28093        ) {
28094            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28095            {
28096                trace!(
28097                    "calling gl.SamplerParameteriv({:?}, {:#X}, {:p});",
28098                    sampler,
28099                    pname,
28100                    param
28101                );
28102            }
28103            let out = call_atomic_ptr_3arg(
28104                "glSamplerParameteriv",
28105                &self.glSamplerParameteriv_p,
28106                sampler,
28107                pname,
28108                param,
28109            );
28110            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28111            {
28112                self.automatic_glGetError("glSamplerParameteriv");
28113            }
28114            out
28115        }
28116        #[doc(hidden)]
28117        pub unsafe fn SamplerParameteriv_load_with_dyn(
28118            &self,
28119            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28120        ) -> bool {
28121            load_dyn_name_atomic_ptr(
28122                get_proc_address,
28123                b"glSamplerParameteriv\0",
28124                &self.glSamplerParameteriv_p,
28125            )
28126        }
28127        #[inline]
28128        #[doc(hidden)]
28129        pub fn SamplerParameteriv_is_loaded(&self) -> bool {
28130            !self.glSamplerParameteriv_p.load(RELAX).is_null()
28131        }
28132        /// [glScissor](http://docs.gl/gl4/glScissor)(x, y, width, height)
28133        /// * `x` group: WinCoord
28134        /// * `y` group: WinCoord
28135        #[cfg_attr(feature = "inline", inline)]
28136        #[cfg_attr(feature = "inline_always", inline(always))]
28137        pub unsafe fn Scissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) {
28138            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28139            {
28140                trace!(
28141                    "calling gl.Scissor({:?}, {:?}, {:?}, {:?});",
28142                    x,
28143                    y,
28144                    width,
28145                    height
28146                );
28147            }
28148            let out = call_atomic_ptr_4arg("glScissor", &self.glScissor_p, x, y, width, height);
28149            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28150            {
28151                self.automatic_glGetError("glScissor");
28152            }
28153            out
28154        }
28155        #[doc(hidden)]
28156        pub unsafe fn Scissor_load_with_dyn(
28157            &self,
28158            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28159        ) -> bool {
28160            load_dyn_name_atomic_ptr(get_proc_address, b"glScissor\0", &self.glScissor_p)
28161        }
28162        #[inline]
28163        #[doc(hidden)]
28164        pub fn Scissor_is_loaded(&self) -> bool {
28165            !self.glScissor_p.load(RELAX).is_null()
28166        }
28167        /// [glScissorArrayv](http://docs.gl/gl4/glScissorArrayv)(first, count, v)
28168        /// * `v` len: COMPSIZE(count)
28169        #[cfg_attr(feature = "inline", inline)]
28170        #[cfg_attr(feature = "inline_always", inline(always))]
28171        pub unsafe fn ScissorArrayv(&self, first: GLuint, count: GLsizei, v: *const GLint) {
28172            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28173            {
28174                trace!(
28175                    "calling gl.ScissorArrayv({:?}, {:?}, {:p});",
28176                    first,
28177                    count,
28178                    v
28179                );
28180            }
28181            let out =
28182                call_atomic_ptr_3arg("glScissorArrayv", &self.glScissorArrayv_p, first, count, v);
28183            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28184            {
28185                self.automatic_glGetError("glScissorArrayv");
28186            }
28187            out
28188        }
28189        #[doc(hidden)]
28190        pub unsafe fn ScissorArrayv_load_with_dyn(
28191            &self,
28192            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28193        ) -> bool {
28194            load_dyn_name_atomic_ptr(
28195                get_proc_address,
28196                b"glScissorArrayv\0",
28197                &self.glScissorArrayv_p,
28198            )
28199        }
28200        #[inline]
28201        #[doc(hidden)]
28202        pub fn ScissorArrayv_is_loaded(&self) -> bool {
28203            !self.glScissorArrayv_p.load(RELAX).is_null()
28204        }
28205        /// [glScissorIndexed](http://docs.gl/gl4/glScissorIndexed)(index, left, bottom, width, height)
28206        #[cfg_attr(feature = "inline", inline)]
28207        #[cfg_attr(feature = "inline_always", inline(always))]
28208        pub unsafe fn ScissorIndexed(
28209            &self,
28210            index: GLuint,
28211            left: GLint,
28212            bottom: GLint,
28213            width: GLsizei,
28214            height: GLsizei,
28215        ) {
28216            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28217            {
28218                trace!(
28219                    "calling gl.ScissorIndexed({:?}, {:?}, {:?}, {:?}, {:?});",
28220                    index,
28221                    left,
28222                    bottom,
28223                    width,
28224                    height
28225                );
28226            }
28227            let out = call_atomic_ptr_5arg(
28228                "glScissorIndexed",
28229                &self.glScissorIndexed_p,
28230                index,
28231                left,
28232                bottom,
28233                width,
28234                height,
28235            );
28236            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28237            {
28238                self.automatic_glGetError("glScissorIndexed");
28239            }
28240            out
28241        }
28242        #[doc(hidden)]
28243        pub unsafe fn ScissorIndexed_load_with_dyn(
28244            &self,
28245            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28246        ) -> bool {
28247            load_dyn_name_atomic_ptr(
28248                get_proc_address,
28249                b"glScissorIndexed\0",
28250                &self.glScissorIndexed_p,
28251            )
28252        }
28253        #[inline]
28254        #[doc(hidden)]
28255        pub fn ScissorIndexed_is_loaded(&self) -> bool {
28256            !self.glScissorIndexed_p.load(RELAX).is_null()
28257        }
28258        /// [glScissorIndexedv](http://docs.gl/gl4/glScissorIndexedv)(index, v)
28259        /// * `v` len: 4
28260        #[cfg_attr(feature = "inline", inline)]
28261        #[cfg_attr(feature = "inline_always", inline(always))]
28262        pub unsafe fn ScissorIndexedv(&self, index: GLuint, v: *const GLint) {
28263            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28264            {
28265                trace!("calling gl.ScissorIndexedv({:?}, {:p});", index, v);
28266            }
28267            let out =
28268                call_atomic_ptr_2arg("glScissorIndexedv", &self.glScissorIndexedv_p, index, v);
28269            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28270            {
28271                self.automatic_glGetError("glScissorIndexedv");
28272            }
28273            out
28274        }
28275        #[doc(hidden)]
28276        pub unsafe fn ScissorIndexedv_load_with_dyn(
28277            &self,
28278            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28279        ) -> bool {
28280            load_dyn_name_atomic_ptr(
28281                get_proc_address,
28282                b"glScissorIndexedv\0",
28283                &self.glScissorIndexedv_p,
28284            )
28285        }
28286        #[inline]
28287        #[doc(hidden)]
28288        pub fn ScissorIndexedv_is_loaded(&self) -> bool {
28289            !self.glScissorIndexedv_p.load(RELAX).is_null()
28290        }
28291        /// [glShaderBinary](http://docs.gl/gl4/glShaderBinary)(count, shaders, binaryFormat, binary, length)
28292        /// * `shaders` len: count
28293        /// * `binaryFormat` group: ShaderBinaryFormat
28294        /// * `binary` len: length
28295        #[cfg_attr(feature = "inline", inline)]
28296        #[cfg_attr(feature = "inline_always", inline(always))]
28297        pub unsafe fn ShaderBinary(
28298            &self,
28299            count: GLsizei,
28300            shaders: *const GLuint,
28301            binaryFormat: GLenum,
28302            binary: *const c_void,
28303            length: GLsizei,
28304        ) {
28305            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28306            {
28307                trace!(
28308                    "calling gl.ShaderBinary({:?}, {:p}, {:#X}, {:p}, {:?});",
28309                    count,
28310                    shaders,
28311                    binaryFormat,
28312                    binary,
28313                    length
28314                );
28315            }
28316            let out = call_atomic_ptr_5arg(
28317                "glShaderBinary",
28318                &self.glShaderBinary_p,
28319                count,
28320                shaders,
28321                binaryFormat,
28322                binary,
28323                length,
28324            );
28325            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28326            {
28327                self.automatic_glGetError("glShaderBinary");
28328            }
28329            out
28330        }
28331        #[doc(hidden)]
28332        pub unsafe fn ShaderBinary_load_with_dyn(
28333            &self,
28334            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28335        ) -> bool {
28336            load_dyn_name_atomic_ptr(
28337                get_proc_address,
28338                b"glShaderBinary\0",
28339                &self.glShaderBinary_p,
28340            )
28341        }
28342        #[inline]
28343        #[doc(hidden)]
28344        pub fn ShaderBinary_is_loaded(&self) -> bool {
28345            !self.glShaderBinary_p.load(RELAX).is_null()
28346        }
28347        /// [glShaderSource](http://docs.gl/gl4/glShaderSource)(shader, count, string, length)
28348        /// * `string` len: count
28349        /// * `length` len: count
28350        #[cfg_attr(feature = "inline", inline)]
28351        #[cfg_attr(feature = "inline_always", inline(always))]
28352        pub unsafe fn ShaderSource(
28353            &self,
28354            shader: GLuint,
28355            count: GLsizei,
28356            string: *const *const GLchar,
28357            length: *const GLint,
28358        ) {
28359            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28360            {
28361                trace!(
28362                    "calling gl.ShaderSource({:?}, {:?}, {:p}, {:p});",
28363                    shader,
28364                    count,
28365                    string,
28366                    length
28367                );
28368            }
28369            let out = call_atomic_ptr_4arg(
28370                "glShaderSource",
28371                &self.glShaderSource_p,
28372                shader,
28373                count,
28374                string,
28375                length,
28376            );
28377            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28378            {
28379                self.automatic_glGetError("glShaderSource");
28380            }
28381            out
28382        }
28383        #[doc(hidden)]
28384        pub unsafe fn ShaderSource_load_with_dyn(
28385            &self,
28386            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28387        ) -> bool {
28388            load_dyn_name_atomic_ptr(
28389                get_proc_address,
28390                b"glShaderSource\0",
28391                &self.glShaderSource_p,
28392            )
28393        }
28394        #[inline]
28395        #[doc(hidden)]
28396        pub fn ShaderSource_is_loaded(&self) -> bool {
28397            !self.glShaderSource_p.load(RELAX).is_null()
28398        }
28399        /// [glShaderStorageBlockBinding](http://docs.gl/gl4/glShaderStorageBlockBinding)(program, storageBlockIndex, storageBlockBinding)
28400        #[cfg_attr(feature = "inline", inline)]
28401        #[cfg_attr(feature = "inline_always", inline(always))]
28402        pub unsafe fn ShaderStorageBlockBinding(
28403            &self,
28404            program: GLuint,
28405            storageBlockIndex: GLuint,
28406            storageBlockBinding: GLuint,
28407        ) {
28408            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28409            {
28410                trace!(
28411                    "calling gl.ShaderStorageBlockBinding({:?}, {:?}, {:?});",
28412                    program,
28413                    storageBlockIndex,
28414                    storageBlockBinding
28415                );
28416            }
28417            let out = call_atomic_ptr_3arg(
28418                "glShaderStorageBlockBinding",
28419                &self.glShaderStorageBlockBinding_p,
28420                program,
28421                storageBlockIndex,
28422                storageBlockBinding,
28423            );
28424            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28425            {
28426                self.automatic_glGetError("glShaderStorageBlockBinding");
28427            }
28428            out
28429        }
28430        #[doc(hidden)]
28431        pub unsafe fn ShaderStorageBlockBinding_load_with_dyn(
28432            &self,
28433            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28434        ) -> bool {
28435            load_dyn_name_atomic_ptr(
28436                get_proc_address,
28437                b"glShaderStorageBlockBinding\0",
28438                &self.glShaderStorageBlockBinding_p,
28439            )
28440        }
28441        #[inline]
28442        #[doc(hidden)]
28443        pub fn ShaderStorageBlockBinding_is_loaded(&self) -> bool {
28444            !self.glShaderStorageBlockBinding_p.load(RELAX).is_null()
28445        }
28446        /// [glSpecializeShader](http://docs.gl/gl4/glSpecializeShader)(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue)
28447        #[cfg_attr(feature = "inline", inline)]
28448        #[cfg_attr(feature = "inline_always", inline(always))]
28449        pub unsafe fn SpecializeShader(
28450            &self,
28451            shader: GLuint,
28452            pEntryPoint: *const GLchar,
28453            numSpecializationConstants: GLuint,
28454            pConstantIndex: *const GLuint,
28455            pConstantValue: *const GLuint,
28456        ) {
28457            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28458            {
28459                trace!(
28460                    "calling gl.SpecializeShader({:?}, {:p}, {:?}, {:p}, {:p});",
28461                    shader,
28462                    pEntryPoint,
28463                    numSpecializationConstants,
28464                    pConstantIndex,
28465                    pConstantValue
28466                );
28467            }
28468            let out = call_atomic_ptr_5arg(
28469                "glSpecializeShader",
28470                &self.glSpecializeShader_p,
28471                shader,
28472                pEntryPoint,
28473                numSpecializationConstants,
28474                pConstantIndex,
28475                pConstantValue,
28476            );
28477            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28478            {
28479                self.automatic_glGetError("glSpecializeShader");
28480            }
28481            out
28482        }
28483        #[doc(hidden)]
28484        pub unsafe fn SpecializeShader_load_with_dyn(
28485            &self,
28486            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28487        ) -> bool {
28488            load_dyn_name_atomic_ptr(
28489                get_proc_address,
28490                b"glSpecializeShader\0",
28491                &self.glSpecializeShader_p,
28492            )
28493        }
28494        #[inline]
28495        #[doc(hidden)]
28496        pub fn SpecializeShader_is_loaded(&self) -> bool {
28497            !self.glSpecializeShader_p.load(RELAX).is_null()
28498        }
28499        /// [glStencilFunc](http://docs.gl/gl4/glStencilFunc)(func, ref_, mask)
28500        /// * `func` group: StencilFunction
28501        /// * `ref_` group: StencilValue
28502        /// * `mask` group: MaskedStencilValue
28503        #[cfg_attr(feature = "inline", inline)]
28504        #[cfg_attr(feature = "inline_always", inline(always))]
28505        pub unsafe fn StencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) {
28506            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28507            {
28508                trace!(
28509                    "calling gl.StencilFunc({:#X}, {:?}, {:?});",
28510                    func,
28511                    ref_,
28512                    mask
28513                );
28514            }
28515            let out =
28516                call_atomic_ptr_3arg("glStencilFunc", &self.glStencilFunc_p, func, ref_, mask);
28517            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28518            {
28519                self.automatic_glGetError("glStencilFunc");
28520            }
28521            out
28522        }
28523        #[doc(hidden)]
28524        pub unsafe fn StencilFunc_load_with_dyn(
28525            &self,
28526            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28527        ) -> bool {
28528            load_dyn_name_atomic_ptr(get_proc_address, b"glStencilFunc\0", &self.glStencilFunc_p)
28529        }
28530        #[inline]
28531        #[doc(hidden)]
28532        pub fn StencilFunc_is_loaded(&self) -> bool {
28533            !self.glStencilFunc_p.load(RELAX).is_null()
28534        }
28535        /// [glStencilFuncSeparate](http://docs.gl/gl4/glStencilFuncSeparate)(face, func, ref_, mask)
28536        /// * `face` group: StencilFaceDirection
28537        /// * `func` group: StencilFunction
28538        /// * `ref_` group: StencilValue
28539        /// * `mask` group: MaskedStencilValue
28540        #[cfg_attr(feature = "inline", inline)]
28541        #[cfg_attr(feature = "inline_always", inline(always))]
28542        pub unsafe fn StencilFuncSeparate(
28543            &self,
28544            face: GLenum,
28545            func: GLenum,
28546            ref_: GLint,
28547            mask: GLuint,
28548        ) {
28549            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28550            {
28551                trace!(
28552                    "calling gl.StencilFuncSeparate({:#X}, {:#X}, {:?}, {:?});",
28553                    face,
28554                    func,
28555                    ref_,
28556                    mask
28557                );
28558            }
28559            let out = call_atomic_ptr_4arg(
28560                "glStencilFuncSeparate",
28561                &self.glStencilFuncSeparate_p,
28562                face,
28563                func,
28564                ref_,
28565                mask,
28566            );
28567            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28568            {
28569                self.automatic_glGetError("glStencilFuncSeparate");
28570            }
28571            out
28572        }
28573        #[doc(hidden)]
28574        pub unsafe fn StencilFuncSeparate_load_with_dyn(
28575            &self,
28576            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28577        ) -> bool {
28578            load_dyn_name_atomic_ptr(
28579                get_proc_address,
28580                b"glStencilFuncSeparate\0",
28581                &self.glStencilFuncSeparate_p,
28582            )
28583        }
28584        #[inline]
28585        #[doc(hidden)]
28586        pub fn StencilFuncSeparate_is_loaded(&self) -> bool {
28587            !self.glStencilFuncSeparate_p.load(RELAX).is_null()
28588        }
28589        /// [glStencilMask](http://docs.gl/gl4/glStencilMask)(mask)
28590        /// * `mask` group: MaskedStencilValue
28591        #[cfg_attr(feature = "inline", inline)]
28592        #[cfg_attr(feature = "inline_always", inline(always))]
28593        pub unsafe fn StencilMask(&self, mask: GLuint) {
28594            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28595            {
28596                trace!("calling gl.StencilMask({:?});", mask);
28597            }
28598            let out = call_atomic_ptr_1arg("glStencilMask", &self.glStencilMask_p, mask);
28599            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28600            {
28601                self.automatic_glGetError("glStencilMask");
28602            }
28603            out
28604        }
28605        #[doc(hidden)]
28606        pub unsafe fn StencilMask_load_with_dyn(
28607            &self,
28608            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28609        ) -> bool {
28610            load_dyn_name_atomic_ptr(get_proc_address, b"glStencilMask\0", &self.glStencilMask_p)
28611        }
28612        #[inline]
28613        #[doc(hidden)]
28614        pub fn StencilMask_is_loaded(&self) -> bool {
28615            !self.glStencilMask_p.load(RELAX).is_null()
28616        }
28617        /// [glStencilMaskSeparate](http://docs.gl/gl4/glStencilMaskSeparate)(face, mask)
28618        /// * `face` group: StencilFaceDirection
28619        /// * `mask` group: MaskedStencilValue
28620        #[cfg_attr(feature = "inline", inline)]
28621        #[cfg_attr(feature = "inline_always", inline(always))]
28622        pub unsafe fn StencilMaskSeparate(&self, face: GLenum, mask: GLuint) {
28623            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28624            {
28625                trace!("calling gl.StencilMaskSeparate({:#X}, {:?});", face, mask);
28626            }
28627            let out = call_atomic_ptr_2arg(
28628                "glStencilMaskSeparate",
28629                &self.glStencilMaskSeparate_p,
28630                face,
28631                mask,
28632            );
28633            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28634            {
28635                self.automatic_glGetError("glStencilMaskSeparate");
28636            }
28637            out
28638        }
28639        #[doc(hidden)]
28640        pub unsafe fn StencilMaskSeparate_load_with_dyn(
28641            &self,
28642            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28643        ) -> bool {
28644            load_dyn_name_atomic_ptr(
28645                get_proc_address,
28646                b"glStencilMaskSeparate\0",
28647                &self.glStencilMaskSeparate_p,
28648            )
28649        }
28650        #[inline]
28651        #[doc(hidden)]
28652        pub fn StencilMaskSeparate_is_loaded(&self) -> bool {
28653            !self.glStencilMaskSeparate_p.load(RELAX).is_null()
28654        }
28655        /// [glStencilOp](http://docs.gl/gl4/glStencilOp)(fail, zfail, zpass)
28656        /// * `fail` group: StencilOp
28657        /// * `zfail` group: StencilOp
28658        /// * `zpass` group: StencilOp
28659        #[cfg_attr(feature = "inline", inline)]
28660        #[cfg_attr(feature = "inline_always", inline(always))]
28661        pub unsafe fn StencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) {
28662            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28663            {
28664                trace!(
28665                    "calling gl.StencilOp({:#X}, {:#X}, {:#X});",
28666                    fail,
28667                    zfail,
28668                    zpass
28669                );
28670            }
28671            let out = call_atomic_ptr_3arg("glStencilOp", &self.glStencilOp_p, fail, zfail, zpass);
28672            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28673            {
28674                self.automatic_glGetError("glStencilOp");
28675            }
28676            out
28677        }
28678        #[doc(hidden)]
28679        pub unsafe fn StencilOp_load_with_dyn(
28680            &self,
28681            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28682        ) -> bool {
28683            load_dyn_name_atomic_ptr(get_proc_address, b"glStencilOp\0", &self.glStencilOp_p)
28684        }
28685        #[inline]
28686        #[doc(hidden)]
28687        pub fn StencilOp_is_loaded(&self) -> bool {
28688            !self.glStencilOp_p.load(RELAX).is_null()
28689        }
28690        /// [glStencilOpSeparate](http://docs.gl/gl4/glStencilOpSeparate)(face, sfail, dpfail, dppass)
28691        /// * `face` group: StencilFaceDirection
28692        /// * `sfail` group: StencilOp
28693        /// * `dpfail` group: StencilOp
28694        /// * `dppass` group: StencilOp
28695        #[cfg_attr(feature = "inline", inline)]
28696        #[cfg_attr(feature = "inline_always", inline(always))]
28697        pub unsafe fn StencilOpSeparate(
28698            &self,
28699            face: GLenum,
28700            sfail: GLenum,
28701            dpfail: GLenum,
28702            dppass: GLenum,
28703        ) {
28704            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28705            {
28706                trace!(
28707                    "calling gl.StencilOpSeparate({:#X}, {:#X}, {:#X}, {:#X});",
28708                    face,
28709                    sfail,
28710                    dpfail,
28711                    dppass
28712                );
28713            }
28714            let out = call_atomic_ptr_4arg(
28715                "glStencilOpSeparate",
28716                &self.glStencilOpSeparate_p,
28717                face,
28718                sfail,
28719                dpfail,
28720                dppass,
28721            );
28722            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28723            {
28724                self.automatic_glGetError("glStencilOpSeparate");
28725            }
28726            out
28727        }
28728        #[doc(hidden)]
28729        pub unsafe fn StencilOpSeparate_load_with_dyn(
28730            &self,
28731            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28732        ) -> bool {
28733            load_dyn_name_atomic_ptr(
28734                get_proc_address,
28735                b"glStencilOpSeparate\0",
28736                &self.glStencilOpSeparate_p,
28737            )
28738        }
28739        #[inline]
28740        #[doc(hidden)]
28741        pub fn StencilOpSeparate_is_loaded(&self) -> bool {
28742            !self.glStencilOpSeparate_p.load(RELAX).is_null()
28743        }
28744        /// [glTexBuffer](http://docs.gl/gl4/glTexBuffer)(target, internalformat, buffer)
28745        /// * `target` group: TextureTarget
28746        /// * `internalformat` group: InternalFormat
28747        #[cfg_attr(feature = "inline", inline)]
28748        #[cfg_attr(feature = "inline_always", inline(always))]
28749        pub unsafe fn TexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) {
28750            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28751            {
28752                trace!(
28753                    "calling gl.TexBuffer({:#X}, {:#X}, {:?});",
28754                    target,
28755                    internalformat,
28756                    buffer
28757                );
28758            }
28759            let out = call_atomic_ptr_3arg(
28760                "glTexBuffer",
28761                &self.glTexBuffer_p,
28762                target,
28763                internalformat,
28764                buffer,
28765            );
28766            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28767            {
28768                self.automatic_glGetError("glTexBuffer");
28769            }
28770            out
28771        }
28772        #[doc(hidden)]
28773        pub unsafe fn TexBuffer_load_with_dyn(
28774            &self,
28775            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28776        ) -> bool {
28777            load_dyn_name_atomic_ptr(get_proc_address, b"glTexBuffer\0", &self.glTexBuffer_p)
28778        }
28779        #[inline]
28780        #[doc(hidden)]
28781        pub fn TexBuffer_is_loaded(&self) -> bool {
28782            !self.glTexBuffer_p.load(RELAX).is_null()
28783        }
28784        /// [glTexBufferRange](http://docs.gl/gl4/glTexBufferRange)(target, internalformat, buffer, offset, size)
28785        /// * `target` group: TextureTarget
28786        /// * `internalformat` group: InternalFormat
28787        /// * `offset` group: BufferOffset
28788        /// * `size` group: BufferSize
28789        #[cfg_attr(feature = "inline", inline)]
28790        #[cfg_attr(feature = "inline_always", inline(always))]
28791        pub unsafe fn TexBufferRange(
28792            &self,
28793            target: GLenum,
28794            internalformat: GLenum,
28795            buffer: GLuint,
28796            offset: GLintptr,
28797            size: GLsizeiptr,
28798        ) {
28799            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28800            {
28801                trace!(
28802                    "calling gl.TexBufferRange({:#X}, {:#X}, {:?}, {:?}, {:?});",
28803                    target,
28804                    internalformat,
28805                    buffer,
28806                    offset,
28807                    size
28808                );
28809            }
28810            let out = call_atomic_ptr_5arg(
28811                "glTexBufferRange",
28812                &self.glTexBufferRange_p,
28813                target,
28814                internalformat,
28815                buffer,
28816                offset,
28817                size,
28818            );
28819            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28820            {
28821                self.automatic_glGetError("glTexBufferRange");
28822            }
28823            out
28824        }
28825        #[doc(hidden)]
28826        pub unsafe fn TexBufferRange_load_with_dyn(
28827            &self,
28828            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28829        ) -> bool {
28830            load_dyn_name_atomic_ptr(
28831                get_proc_address,
28832                b"glTexBufferRange\0",
28833                &self.glTexBufferRange_p,
28834            )
28835        }
28836        #[inline]
28837        #[doc(hidden)]
28838        pub fn TexBufferRange_is_loaded(&self) -> bool {
28839            !self.glTexBufferRange_p.load(RELAX).is_null()
28840        }
28841        /// [glTexImage1D](http://docs.gl/gl4/glTexImage1D)(target, level, internalformat, width, border, format, type_, pixels)
28842        /// * `target` group: TextureTarget
28843        /// * `level` group: CheckedInt32
28844        /// * `internalformat` group: InternalFormat
28845        /// * `border` group: CheckedInt32
28846        /// * `format` group: PixelFormat
28847        /// * `type_` group: PixelType
28848        /// * `pixels` len: COMPSIZE(format,type,width)
28849        #[cfg_attr(feature = "inline", inline)]
28850        #[cfg_attr(feature = "inline_always", inline(always))]
28851        pub unsafe fn TexImage1D(
28852            &self,
28853            target: GLenum,
28854            level: GLint,
28855            internalformat: GLint,
28856            width: GLsizei,
28857            border: GLint,
28858            format: GLenum,
28859            type_: GLenum,
28860            pixels: *const c_void,
28861        ) {
28862            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28863            {
28864                trace!(
28865                    "calling gl.TexImage1D({:#X}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});",
28866                    target,
28867                    level,
28868                    internalformat,
28869                    width,
28870                    border,
28871                    format,
28872                    type_,
28873                    pixels
28874                );
28875            }
28876            let out = call_atomic_ptr_8arg(
28877                "glTexImage1D",
28878                &self.glTexImage1D_p,
28879                target,
28880                level,
28881                internalformat,
28882                width,
28883                border,
28884                format,
28885                type_,
28886                pixels,
28887            );
28888            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28889            {
28890                self.automatic_glGetError("glTexImage1D");
28891            }
28892            out
28893        }
28894        #[doc(hidden)]
28895        pub unsafe fn TexImage1D_load_with_dyn(
28896            &self,
28897            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28898        ) -> bool {
28899            load_dyn_name_atomic_ptr(get_proc_address, b"glTexImage1D\0", &self.glTexImage1D_p)
28900        }
28901        #[inline]
28902        #[doc(hidden)]
28903        pub fn TexImage1D_is_loaded(&self) -> bool {
28904            !self.glTexImage1D_p.load(RELAX).is_null()
28905        }
28906        /// [glTexImage2D](http://docs.gl/gl4/glTexImage2D)(target, level, internalformat, width, height, border, format, type_, pixels)
28907        /// * `target` group: TextureTarget
28908        /// * `level` group: CheckedInt32
28909        /// * `internalformat` group: InternalFormat
28910        /// * `border` group: CheckedInt32
28911        /// * `format` group: PixelFormat
28912        /// * `type_` group: PixelType
28913        /// * `pixels` len: COMPSIZE(format,type,width,height)
28914        #[cfg_attr(feature = "inline", inline)]
28915        #[cfg_attr(feature = "inline_always", inline(always))]
28916        pub unsafe fn TexImage2D(
28917            &self,
28918            target: GLenum,
28919            level: GLint,
28920            internalformat: GLint,
28921            width: GLsizei,
28922            height: GLsizei,
28923            border: GLint,
28924            format: GLenum,
28925            type_: GLenum,
28926            pixels: *const c_void,
28927        ) {
28928            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28929            {
28930                trace!("calling gl.TexImage2D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", target, level, internalformat, width, height, border, format, type_, pixels);
28931            }
28932            let out = call_atomic_ptr_9arg(
28933                "glTexImage2D",
28934                &self.glTexImage2D_p,
28935                target,
28936                level,
28937                internalformat,
28938                width,
28939                height,
28940                border,
28941                format,
28942                type_,
28943                pixels,
28944            );
28945            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28946            {
28947                self.automatic_glGetError("glTexImage2D");
28948            }
28949            out
28950        }
28951        #[doc(hidden)]
28952        pub unsafe fn TexImage2D_load_with_dyn(
28953            &self,
28954            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28955        ) -> bool {
28956            load_dyn_name_atomic_ptr(get_proc_address, b"glTexImage2D\0", &self.glTexImage2D_p)
28957        }
28958        #[inline]
28959        #[doc(hidden)]
28960        pub fn TexImage2D_is_loaded(&self) -> bool {
28961            !self.glTexImage2D_p.load(RELAX).is_null()
28962        }
28963        /// [glTexImage2DMultisample](http://docs.gl/gl4/glTexImage2DMultisample)(target, samples, internalformat, width, height, fixedsamplelocations)
28964        /// * `target` group: TextureTarget
28965        /// * `internalformat` group: InternalFormat
28966        #[cfg_attr(feature = "inline", inline)]
28967        #[cfg_attr(feature = "inline_always", inline(always))]
28968        pub unsafe fn TexImage2DMultisample(
28969            &self,
28970            target: GLenum,
28971            samples: GLsizei,
28972            internalformat: GLenum,
28973            width: GLsizei,
28974            height: GLsizei,
28975            fixedsamplelocations: GLboolean,
28976        ) {
28977            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28978            {
28979                trace!(
28980                    "calling gl.TexImage2DMultisample({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?});",
28981                    target,
28982                    samples,
28983                    internalformat,
28984                    width,
28985                    height,
28986                    fixedsamplelocations
28987                );
28988            }
28989            let out = call_atomic_ptr_6arg(
28990                "glTexImage2DMultisample",
28991                &self.glTexImage2DMultisample_p,
28992                target,
28993                samples,
28994                internalformat,
28995                width,
28996                height,
28997                fixedsamplelocations,
28998            );
28999            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29000            {
29001                self.automatic_glGetError("glTexImage2DMultisample");
29002            }
29003            out
29004        }
29005        #[doc(hidden)]
29006        pub unsafe fn TexImage2DMultisample_load_with_dyn(
29007            &self,
29008            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29009        ) -> bool {
29010            load_dyn_name_atomic_ptr(
29011                get_proc_address,
29012                b"glTexImage2DMultisample\0",
29013                &self.glTexImage2DMultisample_p,
29014            )
29015        }
29016        #[inline]
29017        #[doc(hidden)]
29018        pub fn TexImage2DMultisample_is_loaded(&self) -> bool {
29019            !self.glTexImage2DMultisample_p.load(RELAX).is_null()
29020        }
29021        /// [glTexImage3D](http://docs.gl/gl4/glTexImage3D)(target, level, internalformat, width, height, depth, border, format, type_, pixels)
29022        /// * `target` group: TextureTarget
29023        /// * `level` group: CheckedInt32
29024        /// * `internalformat` group: InternalFormat
29025        /// * `border` group: CheckedInt32
29026        /// * `format` group: PixelFormat
29027        /// * `type_` group: PixelType
29028        /// * `pixels` len: COMPSIZE(format,type,width,height,depth)
29029        #[cfg_attr(feature = "inline", inline)]
29030        #[cfg_attr(feature = "inline_always", inline(always))]
29031        pub unsafe fn TexImage3D(
29032            &self,
29033            target: GLenum,
29034            level: GLint,
29035            internalformat: GLint,
29036            width: GLsizei,
29037            height: GLsizei,
29038            depth: GLsizei,
29039            border: GLint,
29040            format: GLenum,
29041            type_: GLenum,
29042            pixels: *const c_void,
29043        ) {
29044            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29045            {
29046                trace!("calling gl.TexImage3D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", target, level, internalformat, width, height, depth, border, format, type_, pixels);
29047            }
29048            let out = call_atomic_ptr_10arg(
29049                "glTexImage3D",
29050                &self.glTexImage3D_p,
29051                target,
29052                level,
29053                internalformat,
29054                width,
29055                height,
29056                depth,
29057                border,
29058                format,
29059                type_,
29060                pixels,
29061            );
29062            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29063            {
29064                self.automatic_glGetError("glTexImage3D");
29065            }
29066            out
29067        }
29068        #[doc(hidden)]
29069        pub unsafe fn TexImage3D_load_with_dyn(
29070            &self,
29071            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29072        ) -> bool {
29073            load_dyn_name_atomic_ptr(get_proc_address, b"glTexImage3D\0", &self.glTexImage3D_p)
29074        }
29075        #[inline]
29076        #[doc(hidden)]
29077        pub fn TexImage3D_is_loaded(&self) -> bool {
29078            !self.glTexImage3D_p.load(RELAX).is_null()
29079        }
29080        /// [glTexImage3DMultisample](http://docs.gl/gl4/glTexImage3DMultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)
29081        /// * `target` group: TextureTarget
29082        /// * `internalformat` group: InternalFormat
29083        #[cfg_attr(feature = "inline", inline)]
29084        #[cfg_attr(feature = "inline_always", inline(always))]
29085        pub unsafe fn TexImage3DMultisample(
29086            &self,
29087            target: GLenum,
29088            samples: GLsizei,
29089            internalformat: GLenum,
29090            width: GLsizei,
29091            height: GLsizei,
29092            depth: GLsizei,
29093            fixedsamplelocations: GLboolean,
29094        ) {
29095            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29096            {
29097                trace!(
29098                    "calling gl.TexImage3DMultisample({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?});",
29099                    target,
29100                    samples,
29101                    internalformat,
29102                    width,
29103                    height,
29104                    depth,
29105                    fixedsamplelocations
29106                );
29107            }
29108            let out = call_atomic_ptr_7arg(
29109                "glTexImage3DMultisample",
29110                &self.glTexImage3DMultisample_p,
29111                target,
29112                samples,
29113                internalformat,
29114                width,
29115                height,
29116                depth,
29117                fixedsamplelocations,
29118            );
29119            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29120            {
29121                self.automatic_glGetError("glTexImage3DMultisample");
29122            }
29123            out
29124        }
29125        #[doc(hidden)]
29126        pub unsafe fn TexImage3DMultisample_load_with_dyn(
29127            &self,
29128            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29129        ) -> bool {
29130            load_dyn_name_atomic_ptr(
29131                get_proc_address,
29132                b"glTexImage3DMultisample\0",
29133                &self.glTexImage3DMultisample_p,
29134            )
29135        }
29136        #[inline]
29137        #[doc(hidden)]
29138        pub fn TexImage3DMultisample_is_loaded(&self) -> bool {
29139            !self.glTexImage3DMultisample_p.load(RELAX).is_null()
29140        }
29141        /// [glTexParameterIiv](http://docs.gl/gl4/glTexParameter)(target, pname, params)
29142        /// * `target` group: TextureTarget
29143        /// * `pname` group: TextureParameterName
29144        /// * `params` len: COMPSIZE(pname)
29145        #[cfg_attr(feature = "inline", inline)]
29146        #[cfg_attr(feature = "inline_always", inline(always))]
29147        pub unsafe fn TexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) {
29148            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29149            {
29150                trace!(
29151                    "calling gl.TexParameterIiv({:#X}, {:#X}, {:p});",
29152                    target,
29153                    pname,
29154                    params
29155                );
29156            }
29157            let out = call_atomic_ptr_3arg(
29158                "glTexParameterIiv",
29159                &self.glTexParameterIiv_p,
29160                target,
29161                pname,
29162                params,
29163            );
29164            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29165            {
29166                self.automatic_glGetError("glTexParameterIiv");
29167            }
29168            out
29169        }
29170        #[doc(hidden)]
29171        pub unsafe fn TexParameterIiv_load_with_dyn(
29172            &self,
29173            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29174        ) -> bool {
29175            load_dyn_name_atomic_ptr(
29176                get_proc_address,
29177                b"glTexParameterIiv\0",
29178                &self.glTexParameterIiv_p,
29179            )
29180        }
29181        #[inline]
29182        #[doc(hidden)]
29183        pub fn TexParameterIiv_is_loaded(&self) -> bool {
29184            !self.glTexParameterIiv_p.load(RELAX).is_null()
29185        }
29186        /// [glTexParameterIuiv](http://docs.gl/gl4/glTexParameter)(target, pname, params)
29187        /// * `target` group: TextureTarget
29188        /// * `pname` group: TextureParameterName
29189        /// * `params` len: COMPSIZE(pname)
29190        #[cfg_attr(feature = "inline", inline)]
29191        #[cfg_attr(feature = "inline_always", inline(always))]
29192        pub unsafe fn TexParameterIuiv(
29193            &self,
29194            target: GLenum,
29195            pname: GLenum,
29196            params: *const GLuint,
29197        ) {
29198            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29199            {
29200                trace!(
29201                    "calling gl.TexParameterIuiv({:#X}, {:#X}, {:p});",
29202                    target,
29203                    pname,
29204                    params
29205                );
29206            }
29207            let out = call_atomic_ptr_3arg(
29208                "glTexParameterIuiv",
29209                &self.glTexParameterIuiv_p,
29210                target,
29211                pname,
29212                params,
29213            );
29214            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29215            {
29216                self.automatic_glGetError("glTexParameterIuiv");
29217            }
29218            out
29219        }
29220        #[doc(hidden)]
29221        pub unsafe fn TexParameterIuiv_load_with_dyn(
29222            &self,
29223            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29224        ) -> bool {
29225            load_dyn_name_atomic_ptr(
29226                get_proc_address,
29227                b"glTexParameterIuiv\0",
29228                &self.glTexParameterIuiv_p,
29229            )
29230        }
29231        #[inline]
29232        #[doc(hidden)]
29233        pub fn TexParameterIuiv_is_loaded(&self) -> bool {
29234            !self.glTexParameterIuiv_p.load(RELAX).is_null()
29235        }
29236        /// [glTexParameterf](http://docs.gl/gl4/glTexParameter)(target, pname, param)
29237        /// * `target` group: TextureTarget
29238        /// * `pname` group: TextureParameterName
29239        /// * `param` group: CheckedFloat32
29240        #[cfg_attr(feature = "inline", inline)]
29241        #[cfg_attr(feature = "inline_always", inline(always))]
29242        pub unsafe fn TexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) {
29243            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29244            {
29245                trace!(
29246                    "calling gl.TexParameterf({:#X}, {:#X}, {:?});",
29247                    target,
29248                    pname,
29249                    param
29250                );
29251            }
29252            let out = call_atomic_ptr_3arg(
29253                "glTexParameterf",
29254                &self.glTexParameterf_p,
29255                target,
29256                pname,
29257                param,
29258            );
29259            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29260            {
29261                self.automatic_glGetError("glTexParameterf");
29262            }
29263            out
29264        }
29265        #[doc(hidden)]
29266        pub unsafe fn TexParameterf_load_with_dyn(
29267            &self,
29268            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29269        ) -> bool {
29270            load_dyn_name_atomic_ptr(
29271                get_proc_address,
29272                b"glTexParameterf\0",
29273                &self.glTexParameterf_p,
29274            )
29275        }
29276        #[inline]
29277        #[doc(hidden)]
29278        pub fn TexParameterf_is_loaded(&self) -> bool {
29279            !self.glTexParameterf_p.load(RELAX).is_null()
29280        }
29281        /// [glTexParameterfv](http://docs.gl/gl4/glTexParameter)(target, pname, params)
29282        /// * `target` group: TextureTarget
29283        /// * `pname` group: TextureParameterName
29284        /// * `params` group: CheckedFloat32
29285        /// * `params` len: COMPSIZE(pname)
29286        #[cfg_attr(feature = "inline", inline)]
29287        #[cfg_attr(feature = "inline_always", inline(always))]
29288        pub unsafe fn TexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) {
29289            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29290            {
29291                trace!(
29292                    "calling gl.TexParameterfv({:#X}, {:#X}, {:p});",
29293                    target,
29294                    pname,
29295                    params
29296                );
29297            }
29298            let out = call_atomic_ptr_3arg(
29299                "glTexParameterfv",
29300                &self.glTexParameterfv_p,
29301                target,
29302                pname,
29303                params,
29304            );
29305            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29306            {
29307                self.automatic_glGetError("glTexParameterfv");
29308            }
29309            out
29310        }
29311        #[doc(hidden)]
29312        pub unsafe fn TexParameterfv_load_with_dyn(
29313            &self,
29314            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29315        ) -> bool {
29316            load_dyn_name_atomic_ptr(
29317                get_proc_address,
29318                b"glTexParameterfv\0",
29319                &self.glTexParameterfv_p,
29320            )
29321        }
29322        #[inline]
29323        #[doc(hidden)]
29324        pub fn TexParameterfv_is_loaded(&self) -> bool {
29325            !self.glTexParameterfv_p.load(RELAX).is_null()
29326        }
29327        /// [glTexParameteri](http://docs.gl/gl4/glTexParameter)(target, pname, param)
29328        /// * `target` group: TextureTarget
29329        /// * `pname` group: TextureParameterName
29330        /// * `param` group: CheckedInt32
29331        #[cfg_attr(feature = "inline", inline)]
29332        #[cfg_attr(feature = "inline_always", inline(always))]
29333        pub unsafe fn TexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) {
29334            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29335            {
29336                trace!(
29337                    "calling gl.TexParameteri({:#X}, {:#X}, {:?});",
29338                    target,
29339                    pname,
29340                    param
29341                );
29342            }
29343            let out = call_atomic_ptr_3arg(
29344                "glTexParameteri",
29345                &self.glTexParameteri_p,
29346                target,
29347                pname,
29348                param,
29349            );
29350            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29351            {
29352                self.automatic_glGetError("glTexParameteri");
29353            }
29354            out
29355        }
29356        #[doc(hidden)]
29357        pub unsafe fn TexParameteri_load_with_dyn(
29358            &self,
29359            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29360        ) -> bool {
29361            load_dyn_name_atomic_ptr(
29362                get_proc_address,
29363                b"glTexParameteri\0",
29364                &self.glTexParameteri_p,
29365            )
29366        }
29367        #[inline]
29368        #[doc(hidden)]
29369        pub fn TexParameteri_is_loaded(&self) -> bool {
29370            !self.glTexParameteri_p.load(RELAX).is_null()
29371        }
29372        /// [glTexParameteriv](http://docs.gl/gl4/glTexParameter)(target, pname, params)
29373        /// * `target` group: TextureTarget
29374        /// * `pname` group: TextureParameterName
29375        /// * `params` group: CheckedInt32
29376        /// * `params` len: COMPSIZE(pname)
29377        #[cfg_attr(feature = "inline", inline)]
29378        #[cfg_attr(feature = "inline_always", inline(always))]
29379        pub unsafe fn TexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) {
29380            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29381            {
29382                trace!(
29383                    "calling gl.TexParameteriv({:#X}, {:#X}, {:p});",
29384                    target,
29385                    pname,
29386                    params
29387                );
29388            }
29389            let out = call_atomic_ptr_3arg(
29390                "glTexParameteriv",
29391                &self.glTexParameteriv_p,
29392                target,
29393                pname,
29394                params,
29395            );
29396            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29397            {
29398                self.automatic_glGetError("glTexParameteriv");
29399            }
29400            out
29401        }
29402        #[doc(hidden)]
29403        pub unsafe fn TexParameteriv_load_with_dyn(
29404            &self,
29405            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29406        ) -> bool {
29407            load_dyn_name_atomic_ptr(
29408                get_proc_address,
29409                b"glTexParameteriv\0",
29410                &self.glTexParameteriv_p,
29411            )
29412        }
29413        #[inline]
29414        #[doc(hidden)]
29415        pub fn TexParameteriv_is_loaded(&self) -> bool {
29416            !self.glTexParameteriv_p.load(RELAX).is_null()
29417        }
29418        /// [glTexStorage1D](http://docs.gl/gl4/glTexStorage1D)(target, levels, internalformat, width)
29419        /// * `target` group: TextureTarget
29420        /// * `internalformat` group: InternalFormat
29421        #[cfg_attr(feature = "inline", inline)]
29422        #[cfg_attr(feature = "inline_always", inline(always))]
29423        pub unsafe fn TexStorage1D(
29424            &self,
29425            target: GLenum,
29426            levels: GLsizei,
29427            internalformat: GLenum,
29428            width: GLsizei,
29429        ) {
29430            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29431            {
29432                trace!(
29433                    "calling gl.TexStorage1D({:#X}, {:?}, {:#X}, {:?});",
29434                    target,
29435                    levels,
29436                    internalformat,
29437                    width
29438                );
29439            }
29440            let out = call_atomic_ptr_4arg(
29441                "glTexStorage1D",
29442                &self.glTexStorage1D_p,
29443                target,
29444                levels,
29445                internalformat,
29446                width,
29447            );
29448            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29449            {
29450                self.automatic_glGetError("glTexStorage1D");
29451            }
29452            out
29453        }
29454        #[doc(hidden)]
29455        pub unsafe fn TexStorage1D_load_with_dyn(
29456            &self,
29457            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29458        ) -> bool {
29459            load_dyn_name_atomic_ptr(
29460                get_proc_address,
29461                b"glTexStorage1D\0",
29462                &self.glTexStorage1D_p,
29463            )
29464        }
29465        #[inline]
29466        #[doc(hidden)]
29467        pub fn TexStorage1D_is_loaded(&self) -> bool {
29468            !self.glTexStorage1D_p.load(RELAX).is_null()
29469        }
29470        /// [glTexStorage2D](http://docs.gl/gl4/glTexStorage2D)(target, levels, internalformat, width, height)
29471        /// * `target` group: TextureTarget
29472        /// * `internalformat` group: InternalFormat
29473        #[cfg_attr(feature = "inline", inline)]
29474        #[cfg_attr(feature = "inline_always", inline(always))]
29475        pub unsafe fn TexStorage2D(
29476            &self,
29477            target: GLenum,
29478            levels: GLsizei,
29479            internalformat: GLenum,
29480            width: GLsizei,
29481            height: GLsizei,
29482        ) {
29483            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29484            {
29485                trace!(
29486                    "calling gl.TexStorage2D({:#X}, {:?}, {:#X}, {:?}, {:?});",
29487                    target,
29488                    levels,
29489                    internalformat,
29490                    width,
29491                    height
29492                );
29493            }
29494            let out = call_atomic_ptr_5arg(
29495                "glTexStorage2D",
29496                &self.glTexStorage2D_p,
29497                target,
29498                levels,
29499                internalformat,
29500                width,
29501                height,
29502            );
29503            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29504            {
29505                self.automatic_glGetError("glTexStorage2D");
29506            }
29507            out
29508        }
29509        #[doc(hidden)]
29510        pub unsafe fn TexStorage2D_load_with_dyn(
29511            &self,
29512            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29513        ) -> bool {
29514            load_dyn_name_atomic_ptr(
29515                get_proc_address,
29516                b"glTexStorage2D\0",
29517                &self.glTexStorage2D_p,
29518            )
29519        }
29520        #[inline]
29521        #[doc(hidden)]
29522        pub fn TexStorage2D_is_loaded(&self) -> bool {
29523            !self.glTexStorage2D_p.load(RELAX).is_null()
29524        }
29525        /// [glTexStorage2DMultisample](http://docs.gl/gl4/glTexStorage2DMultisample)(target, samples, internalformat, width, height, fixedsamplelocations)
29526        /// * `target` group: TextureTarget
29527        /// * `internalformat` group: InternalFormat
29528        #[cfg_attr(feature = "inline", inline)]
29529        #[cfg_attr(feature = "inline_always", inline(always))]
29530        pub unsafe fn TexStorage2DMultisample(
29531            &self,
29532            target: GLenum,
29533            samples: GLsizei,
29534            internalformat: GLenum,
29535            width: GLsizei,
29536            height: GLsizei,
29537            fixedsamplelocations: GLboolean,
29538        ) {
29539            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29540            {
29541                trace!(
29542                    "calling gl.TexStorage2DMultisample({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?});",
29543                    target,
29544                    samples,
29545                    internalformat,
29546                    width,
29547                    height,
29548                    fixedsamplelocations
29549                );
29550            }
29551            let out = call_atomic_ptr_6arg(
29552                "glTexStorage2DMultisample",
29553                &self.glTexStorage2DMultisample_p,
29554                target,
29555                samples,
29556                internalformat,
29557                width,
29558                height,
29559                fixedsamplelocations,
29560            );
29561            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29562            {
29563                self.automatic_glGetError("glTexStorage2DMultisample");
29564            }
29565            out
29566        }
29567        #[doc(hidden)]
29568        pub unsafe fn TexStorage2DMultisample_load_with_dyn(
29569            &self,
29570            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29571        ) -> bool {
29572            load_dyn_name_atomic_ptr(
29573                get_proc_address,
29574                b"glTexStorage2DMultisample\0",
29575                &self.glTexStorage2DMultisample_p,
29576            )
29577        }
29578        #[inline]
29579        #[doc(hidden)]
29580        pub fn TexStorage2DMultisample_is_loaded(&self) -> bool {
29581            !self.glTexStorage2DMultisample_p.load(RELAX).is_null()
29582        }
29583        /// [glTexStorage3D](http://docs.gl/gl4/glTexStorage3D)(target, levels, internalformat, width, height, depth)
29584        /// * `target` group: TextureTarget
29585        /// * `internalformat` group: InternalFormat
29586        #[cfg_attr(feature = "inline", inline)]
29587        #[cfg_attr(feature = "inline_always", inline(always))]
29588        pub unsafe fn TexStorage3D(
29589            &self,
29590            target: GLenum,
29591            levels: GLsizei,
29592            internalformat: GLenum,
29593            width: GLsizei,
29594            height: GLsizei,
29595            depth: GLsizei,
29596        ) {
29597            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29598            {
29599                trace!(
29600                    "calling gl.TexStorage3D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?});",
29601                    target,
29602                    levels,
29603                    internalformat,
29604                    width,
29605                    height,
29606                    depth
29607                );
29608            }
29609            let out = call_atomic_ptr_6arg(
29610                "glTexStorage3D",
29611                &self.glTexStorage3D_p,
29612                target,
29613                levels,
29614                internalformat,
29615                width,
29616                height,
29617                depth,
29618            );
29619            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29620            {
29621                self.automatic_glGetError("glTexStorage3D");
29622            }
29623            out
29624        }
29625        #[doc(hidden)]
29626        pub unsafe fn TexStorage3D_load_with_dyn(
29627            &self,
29628            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29629        ) -> bool {
29630            load_dyn_name_atomic_ptr(
29631                get_proc_address,
29632                b"glTexStorage3D\0",
29633                &self.glTexStorage3D_p,
29634            )
29635        }
29636        #[inline]
29637        #[doc(hidden)]
29638        pub fn TexStorage3D_is_loaded(&self) -> bool {
29639            !self.glTexStorage3D_p.load(RELAX).is_null()
29640        }
29641        /// [glTexStorage3DMultisample](http://docs.gl/gl4/glTexStorage3DMultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)
29642        /// * `target` group: TextureTarget
29643        /// * `internalformat` group: InternalFormat
29644        #[cfg_attr(feature = "inline", inline)]
29645        #[cfg_attr(feature = "inline_always", inline(always))]
29646        pub unsafe fn TexStorage3DMultisample(
29647            &self,
29648            target: GLenum,
29649            samples: GLsizei,
29650            internalformat: GLenum,
29651            width: GLsizei,
29652            height: GLsizei,
29653            depth: GLsizei,
29654            fixedsamplelocations: GLboolean,
29655        ) {
29656            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29657            {
29658                trace!("calling gl.TexStorage3DMultisample({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?});", target, samples, internalformat, width, height, depth, fixedsamplelocations);
29659            }
29660            let out = call_atomic_ptr_7arg(
29661                "glTexStorage3DMultisample",
29662                &self.glTexStorage3DMultisample_p,
29663                target,
29664                samples,
29665                internalformat,
29666                width,
29667                height,
29668                depth,
29669                fixedsamplelocations,
29670            );
29671            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29672            {
29673                self.automatic_glGetError("glTexStorage3DMultisample");
29674            }
29675            out
29676        }
29677        #[doc(hidden)]
29678        pub unsafe fn TexStorage3DMultisample_load_with_dyn(
29679            &self,
29680            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29681        ) -> bool {
29682            load_dyn_name_atomic_ptr(
29683                get_proc_address,
29684                b"glTexStorage3DMultisample\0",
29685                &self.glTexStorage3DMultisample_p,
29686            )
29687        }
29688        #[inline]
29689        #[doc(hidden)]
29690        pub fn TexStorage3DMultisample_is_loaded(&self) -> bool {
29691            !self.glTexStorage3DMultisample_p.load(RELAX).is_null()
29692        }
29693        /// [glTexSubImage1D](http://docs.gl/gl4/glTexSubImage1D)(target, level, xoffset, width, format, type_, pixels)
29694        /// * `target` group: TextureTarget
29695        /// * `level` group: CheckedInt32
29696        /// * `xoffset` group: CheckedInt32
29697        /// * `format` group: PixelFormat
29698        /// * `type_` group: PixelType
29699        /// * `pixels` len: COMPSIZE(format,type,width)
29700        #[cfg_attr(feature = "inline", inline)]
29701        #[cfg_attr(feature = "inline_always", inline(always))]
29702        pub unsafe fn TexSubImage1D(
29703            &self,
29704            target: GLenum,
29705            level: GLint,
29706            xoffset: GLint,
29707            width: GLsizei,
29708            format: GLenum,
29709            type_: GLenum,
29710            pixels: *const c_void,
29711        ) {
29712            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29713            {
29714                trace!(
29715                    "calling gl.TexSubImage1D({:#X}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});",
29716                    target,
29717                    level,
29718                    xoffset,
29719                    width,
29720                    format,
29721                    type_,
29722                    pixels
29723                );
29724            }
29725            let out = call_atomic_ptr_7arg(
29726                "glTexSubImage1D",
29727                &self.glTexSubImage1D_p,
29728                target,
29729                level,
29730                xoffset,
29731                width,
29732                format,
29733                type_,
29734                pixels,
29735            );
29736            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29737            {
29738                self.automatic_glGetError("glTexSubImage1D");
29739            }
29740            out
29741        }
29742        #[doc(hidden)]
29743        pub unsafe fn TexSubImage1D_load_with_dyn(
29744            &self,
29745            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29746        ) -> bool {
29747            load_dyn_name_atomic_ptr(
29748                get_proc_address,
29749                b"glTexSubImage1D\0",
29750                &self.glTexSubImage1D_p,
29751            )
29752        }
29753        #[inline]
29754        #[doc(hidden)]
29755        pub fn TexSubImage1D_is_loaded(&self) -> bool {
29756            !self.glTexSubImage1D_p.load(RELAX).is_null()
29757        }
29758        /// [glTexSubImage2D](http://docs.gl/gl4/glTexSubImage2D)(target, level, xoffset, yoffset, width, height, format, type_, pixels)
29759        /// * `target` group: TextureTarget
29760        /// * `level` group: CheckedInt32
29761        /// * `xoffset` group: CheckedInt32
29762        /// * `yoffset` group: CheckedInt32
29763        /// * `format` group: PixelFormat
29764        /// * `type_` group: PixelType
29765        /// * `pixels` len: COMPSIZE(format,type,width,height)
29766        #[cfg_attr(feature = "inline", inline)]
29767        #[cfg_attr(feature = "inline_always", inline(always))]
29768        pub unsafe fn TexSubImage2D(
29769            &self,
29770            target: GLenum,
29771            level: GLint,
29772            xoffset: GLint,
29773            yoffset: GLint,
29774            width: GLsizei,
29775            height: GLsizei,
29776            format: GLenum,
29777            type_: GLenum,
29778            pixels: *const c_void,
29779        ) {
29780            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29781            {
29782                trace!("calling gl.TexSubImage2D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", target, level, xoffset, yoffset, width, height, format, type_, pixels);
29783            }
29784            let out = call_atomic_ptr_9arg(
29785                "glTexSubImage2D",
29786                &self.glTexSubImage2D_p,
29787                target,
29788                level,
29789                xoffset,
29790                yoffset,
29791                width,
29792                height,
29793                format,
29794                type_,
29795                pixels,
29796            );
29797            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29798            {
29799                self.automatic_glGetError("glTexSubImage2D");
29800            }
29801            out
29802        }
29803        #[doc(hidden)]
29804        pub unsafe fn TexSubImage2D_load_with_dyn(
29805            &self,
29806            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29807        ) -> bool {
29808            load_dyn_name_atomic_ptr(
29809                get_proc_address,
29810                b"glTexSubImage2D\0",
29811                &self.glTexSubImage2D_p,
29812            )
29813        }
29814        #[inline]
29815        #[doc(hidden)]
29816        pub fn TexSubImage2D_is_loaded(&self) -> bool {
29817            !self.glTexSubImage2D_p.load(RELAX).is_null()
29818        }
29819        /// [glTexSubImage3D](http://docs.gl/gl4/glTexSubImage3D)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)
29820        /// * `target` group: TextureTarget
29821        /// * `level` group: CheckedInt32
29822        /// * `xoffset` group: CheckedInt32
29823        /// * `yoffset` group: CheckedInt32
29824        /// * `zoffset` group: CheckedInt32
29825        /// * `format` group: PixelFormat
29826        /// * `type_` group: PixelType
29827        /// * `pixels` len: COMPSIZE(format,type,width,height,depth)
29828        #[cfg_attr(feature = "inline", inline)]
29829        #[cfg_attr(feature = "inline_always", inline(always))]
29830        pub unsafe fn TexSubImage3D(
29831            &self,
29832            target: GLenum,
29833            level: GLint,
29834            xoffset: GLint,
29835            yoffset: GLint,
29836            zoffset: GLint,
29837            width: GLsizei,
29838            height: GLsizei,
29839            depth: GLsizei,
29840            format: GLenum,
29841            type_: GLenum,
29842            pixels: *const c_void,
29843        ) {
29844            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29845            {
29846                trace!("calling gl.TexSubImage3D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels);
29847            }
29848            let out = call_atomic_ptr_11arg(
29849                "glTexSubImage3D",
29850                &self.glTexSubImage3D_p,
29851                target,
29852                level,
29853                xoffset,
29854                yoffset,
29855                zoffset,
29856                width,
29857                height,
29858                depth,
29859                format,
29860                type_,
29861                pixels,
29862            );
29863            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29864            {
29865                self.automatic_glGetError("glTexSubImage3D");
29866            }
29867            out
29868        }
29869        #[doc(hidden)]
29870        pub unsafe fn TexSubImage3D_load_with_dyn(
29871            &self,
29872            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29873        ) -> bool {
29874            load_dyn_name_atomic_ptr(
29875                get_proc_address,
29876                b"glTexSubImage3D\0",
29877                &self.glTexSubImage3D_p,
29878            )
29879        }
29880        #[inline]
29881        #[doc(hidden)]
29882        pub fn TexSubImage3D_is_loaded(&self) -> bool {
29883            !self.glTexSubImage3D_p.load(RELAX).is_null()
29884        }
29885        /// [glTextureBarrier](http://docs.gl/gl4/glTextureBarrier)()
29886        #[cfg_attr(feature = "inline", inline)]
29887        #[cfg_attr(feature = "inline_always", inline(always))]
29888        pub unsafe fn TextureBarrier(&self) {
29889            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29890            {
29891                trace!("calling gl.TextureBarrier();",);
29892            }
29893            let out = call_atomic_ptr_0arg("glTextureBarrier", &self.glTextureBarrier_p);
29894            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29895            {
29896                self.automatic_glGetError("glTextureBarrier");
29897            }
29898            out
29899        }
29900        #[doc(hidden)]
29901        pub unsafe fn TextureBarrier_load_with_dyn(
29902            &self,
29903            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29904        ) -> bool {
29905            load_dyn_name_atomic_ptr(
29906                get_proc_address,
29907                b"glTextureBarrier\0",
29908                &self.glTextureBarrier_p,
29909            )
29910        }
29911        #[inline]
29912        #[doc(hidden)]
29913        pub fn TextureBarrier_is_loaded(&self) -> bool {
29914            !self.glTextureBarrier_p.load(RELAX).is_null()
29915        }
29916        /// [glTextureBuffer](http://docs.gl/gl4/glTextureBuffer)(texture, internalformat, buffer)
29917        /// * `internalformat` group: InternalFormat
29918        #[cfg_attr(feature = "inline", inline)]
29919        #[cfg_attr(feature = "inline_always", inline(always))]
29920        pub unsafe fn TextureBuffer(
29921            &self,
29922            texture: GLuint,
29923            internalformat: GLenum,
29924            buffer: GLuint,
29925        ) {
29926            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29927            {
29928                trace!(
29929                    "calling gl.TextureBuffer({:?}, {:#X}, {:?});",
29930                    texture,
29931                    internalformat,
29932                    buffer
29933                );
29934            }
29935            let out = call_atomic_ptr_3arg(
29936                "glTextureBuffer",
29937                &self.glTextureBuffer_p,
29938                texture,
29939                internalformat,
29940                buffer,
29941            );
29942            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29943            {
29944                self.automatic_glGetError("glTextureBuffer");
29945            }
29946            out
29947        }
29948        #[doc(hidden)]
29949        pub unsafe fn TextureBuffer_load_with_dyn(
29950            &self,
29951            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29952        ) -> bool {
29953            load_dyn_name_atomic_ptr(
29954                get_proc_address,
29955                b"glTextureBuffer\0",
29956                &self.glTextureBuffer_p,
29957            )
29958        }
29959        #[inline]
29960        #[doc(hidden)]
29961        pub fn TextureBuffer_is_loaded(&self) -> bool {
29962            !self.glTextureBuffer_p.load(RELAX).is_null()
29963        }
29964        /// [glTextureBufferRange](http://docs.gl/gl4/glTextureBufferRange)(texture, internalformat, buffer, offset, size)
29965        /// * `internalformat` group: InternalFormat
29966        /// * `size` group: BufferSize
29967        #[cfg_attr(feature = "inline", inline)]
29968        #[cfg_attr(feature = "inline_always", inline(always))]
29969        pub unsafe fn TextureBufferRange(
29970            &self,
29971            texture: GLuint,
29972            internalformat: GLenum,
29973            buffer: GLuint,
29974            offset: GLintptr,
29975            size: GLsizeiptr,
29976        ) {
29977            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29978            {
29979                trace!(
29980                    "calling gl.TextureBufferRange({:?}, {:#X}, {:?}, {:?}, {:?});",
29981                    texture,
29982                    internalformat,
29983                    buffer,
29984                    offset,
29985                    size
29986                );
29987            }
29988            let out = call_atomic_ptr_5arg(
29989                "glTextureBufferRange",
29990                &self.glTextureBufferRange_p,
29991                texture,
29992                internalformat,
29993                buffer,
29994                offset,
29995                size,
29996            );
29997            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29998            {
29999                self.automatic_glGetError("glTextureBufferRange");
30000            }
30001            out
30002        }
30003        #[doc(hidden)]
30004        pub unsafe fn TextureBufferRange_load_with_dyn(
30005            &self,
30006            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30007        ) -> bool {
30008            load_dyn_name_atomic_ptr(
30009                get_proc_address,
30010                b"glTextureBufferRange\0",
30011                &self.glTextureBufferRange_p,
30012            )
30013        }
30014        #[inline]
30015        #[doc(hidden)]
30016        pub fn TextureBufferRange_is_loaded(&self) -> bool {
30017            !self.glTextureBufferRange_p.load(RELAX).is_null()
30018        }
30019        /// [glTextureParameterIiv](http://docs.gl/gl4/glTextureParameter)(texture, pname, params)
30020        /// * `pname` group: TextureParameterName
30021        #[cfg_attr(feature = "inline", inline)]
30022        #[cfg_attr(feature = "inline_always", inline(always))]
30023        pub unsafe fn TextureParameterIiv(
30024            &self,
30025            texture: GLuint,
30026            pname: GLenum,
30027            params: *const GLint,
30028        ) {
30029            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30030            {
30031                trace!(
30032                    "calling gl.TextureParameterIiv({:?}, {:#X}, {:p});",
30033                    texture,
30034                    pname,
30035                    params
30036                );
30037            }
30038            let out = call_atomic_ptr_3arg(
30039                "glTextureParameterIiv",
30040                &self.glTextureParameterIiv_p,
30041                texture,
30042                pname,
30043                params,
30044            );
30045            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30046            {
30047                self.automatic_glGetError("glTextureParameterIiv");
30048            }
30049            out
30050        }
30051        #[doc(hidden)]
30052        pub unsafe fn TextureParameterIiv_load_with_dyn(
30053            &self,
30054            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30055        ) -> bool {
30056            load_dyn_name_atomic_ptr(
30057                get_proc_address,
30058                b"glTextureParameterIiv\0",
30059                &self.glTextureParameterIiv_p,
30060            )
30061        }
30062        #[inline]
30063        #[doc(hidden)]
30064        pub fn TextureParameterIiv_is_loaded(&self) -> bool {
30065            !self.glTextureParameterIiv_p.load(RELAX).is_null()
30066        }
30067        /// [glTextureParameterIuiv](http://docs.gl/gl4/glTextureParameter)(texture, pname, params)
30068        /// * `pname` group: TextureParameterName
30069        #[cfg_attr(feature = "inline", inline)]
30070        #[cfg_attr(feature = "inline_always", inline(always))]
30071        pub unsafe fn TextureParameterIuiv(
30072            &self,
30073            texture: GLuint,
30074            pname: GLenum,
30075            params: *const GLuint,
30076        ) {
30077            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30078            {
30079                trace!(
30080                    "calling gl.TextureParameterIuiv({:?}, {:#X}, {:p});",
30081                    texture,
30082                    pname,
30083                    params
30084                );
30085            }
30086            let out = call_atomic_ptr_3arg(
30087                "glTextureParameterIuiv",
30088                &self.glTextureParameterIuiv_p,
30089                texture,
30090                pname,
30091                params,
30092            );
30093            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30094            {
30095                self.automatic_glGetError("glTextureParameterIuiv");
30096            }
30097            out
30098        }
30099        #[doc(hidden)]
30100        pub unsafe fn TextureParameterIuiv_load_with_dyn(
30101            &self,
30102            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30103        ) -> bool {
30104            load_dyn_name_atomic_ptr(
30105                get_proc_address,
30106                b"glTextureParameterIuiv\0",
30107                &self.glTextureParameterIuiv_p,
30108            )
30109        }
30110        #[inline]
30111        #[doc(hidden)]
30112        pub fn TextureParameterIuiv_is_loaded(&self) -> bool {
30113            !self.glTextureParameterIuiv_p.load(RELAX).is_null()
30114        }
30115        /// [glTextureParameterf](http://docs.gl/gl4/glTextureParameter)(texture, pname, param)
30116        /// * `pname` group: TextureParameterName
30117        #[cfg_attr(feature = "inline", inline)]
30118        #[cfg_attr(feature = "inline_always", inline(always))]
30119        pub unsafe fn TextureParameterf(&self, texture: GLuint, pname: GLenum, param: GLfloat) {
30120            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30121            {
30122                trace!(
30123                    "calling gl.TextureParameterf({:?}, {:#X}, {:?});",
30124                    texture,
30125                    pname,
30126                    param
30127                );
30128            }
30129            let out = call_atomic_ptr_3arg(
30130                "glTextureParameterf",
30131                &self.glTextureParameterf_p,
30132                texture,
30133                pname,
30134                param,
30135            );
30136            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30137            {
30138                self.automatic_glGetError("glTextureParameterf");
30139            }
30140            out
30141        }
30142        #[doc(hidden)]
30143        pub unsafe fn TextureParameterf_load_with_dyn(
30144            &self,
30145            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30146        ) -> bool {
30147            load_dyn_name_atomic_ptr(
30148                get_proc_address,
30149                b"glTextureParameterf\0",
30150                &self.glTextureParameterf_p,
30151            )
30152        }
30153        #[inline]
30154        #[doc(hidden)]
30155        pub fn TextureParameterf_is_loaded(&self) -> bool {
30156            !self.glTextureParameterf_p.load(RELAX).is_null()
30157        }
30158        /// [glTextureParameterfv](http://docs.gl/gl4/glTextureParameter)(texture, pname, param)
30159        /// * `pname` group: TextureParameterName
30160        #[cfg_attr(feature = "inline", inline)]
30161        #[cfg_attr(feature = "inline_always", inline(always))]
30162        pub unsafe fn TextureParameterfv(
30163            &self,
30164            texture: GLuint,
30165            pname: GLenum,
30166            param: *const GLfloat,
30167        ) {
30168            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30169            {
30170                trace!(
30171                    "calling gl.TextureParameterfv({:?}, {:#X}, {:p});",
30172                    texture,
30173                    pname,
30174                    param
30175                );
30176            }
30177            let out = call_atomic_ptr_3arg(
30178                "glTextureParameterfv",
30179                &self.glTextureParameterfv_p,
30180                texture,
30181                pname,
30182                param,
30183            );
30184            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30185            {
30186                self.automatic_glGetError("glTextureParameterfv");
30187            }
30188            out
30189        }
30190        #[doc(hidden)]
30191        pub unsafe fn TextureParameterfv_load_with_dyn(
30192            &self,
30193            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30194        ) -> bool {
30195            load_dyn_name_atomic_ptr(
30196                get_proc_address,
30197                b"glTextureParameterfv\0",
30198                &self.glTextureParameterfv_p,
30199            )
30200        }
30201        #[inline]
30202        #[doc(hidden)]
30203        pub fn TextureParameterfv_is_loaded(&self) -> bool {
30204            !self.glTextureParameterfv_p.load(RELAX).is_null()
30205        }
30206        /// [glTextureParameteri](http://docs.gl/gl4/glTextureParameter)(texture, pname, param)
30207        /// * `pname` group: TextureParameterName
30208        #[cfg_attr(feature = "inline", inline)]
30209        #[cfg_attr(feature = "inline_always", inline(always))]
30210        pub unsafe fn TextureParameteri(&self, texture: GLuint, pname: GLenum, param: GLint) {
30211            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30212            {
30213                trace!(
30214                    "calling gl.TextureParameteri({:?}, {:#X}, {:?});",
30215                    texture,
30216                    pname,
30217                    param
30218                );
30219            }
30220            let out = call_atomic_ptr_3arg(
30221                "glTextureParameteri",
30222                &self.glTextureParameteri_p,
30223                texture,
30224                pname,
30225                param,
30226            );
30227            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30228            {
30229                self.automatic_glGetError("glTextureParameteri");
30230            }
30231            out
30232        }
30233        #[doc(hidden)]
30234        pub unsafe fn TextureParameteri_load_with_dyn(
30235            &self,
30236            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30237        ) -> bool {
30238            load_dyn_name_atomic_ptr(
30239                get_proc_address,
30240                b"glTextureParameteri\0",
30241                &self.glTextureParameteri_p,
30242            )
30243        }
30244        #[inline]
30245        #[doc(hidden)]
30246        pub fn TextureParameteri_is_loaded(&self) -> bool {
30247            !self.glTextureParameteri_p.load(RELAX).is_null()
30248        }
30249        /// [glTextureParameteriv](http://docs.gl/gl4/glTextureParameter)(texture, pname, param)
30250        /// * `pname` group: TextureParameterName
30251        #[cfg_attr(feature = "inline", inline)]
30252        #[cfg_attr(feature = "inline_always", inline(always))]
30253        pub unsafe fn TextureParameteriv(
30254            &self,
30255            texture: GLuint,
30256            pname: GLenum,
30257            param: *const GLint,
30258        ) {
30259            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30260            {
30261                trace!(
30262                    "calling gl.TextureParameteriv({:?}, {:#X}, {:p});",
30263                    texture,
30264                    pname,
30265                    param
30266                );
30267            }
30268            let out = call_atomic_ptr_3arg(
30269                "glTextureParameteriv",
30270                &self.glTextureParameteriv_p,
30271                texture,
30272                pname,
30273                param,
30274            );
30275            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30276            {
30277                self.automatic_glGetError("glTextureParameteriv");
30278            }
30279            out
30280        }
30281        #[doc(hidden)]
30282        pub unsafe fn TextureParameteriv_load_with_dyn(
30283            &self,
30284            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30285        ) -> bool {
30286            load_dyn_name_atomic_ptr(
30287                get_proc_address,
30288                b"glTextureParameteriv\0",
30289                &self.glTextureParameteriv_p,
30290            )
30291        }
30292        #[inline]
30293        #[doc(hidden)]
30294        pub fn TextureParameteriv_is_loaded(&self) -> bool {
30295            !self.glTextureParameteriv_p.load(RELAX).is_null()
30296        }
30297        /// [glTextureStorage1D](http://docs.gl/gl4/glTextureStorage1D)(texture, levels, internalformat, width)
30298        /// * `internalformat` group: InternalFormat
30299        #[cfg_attr(feature = "inline", inline)]
30300        #[cfg_attr(feature = "inline_always", inline(always))]
30301        pub unsafe fn TextureStorage1D(
30302            &self,
30303            texture: GLuint,
30304            levels: GLsizei,
30305            internalformat: GLenum,
30306            width: GLsizei,
30307        ) {
30308            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30309            {
30310                trace!(
30311                    "calling gl.TextureStorage1D({:?}, {:?}, {:#X}, {:?});",
30312                    texture,
30313                    levels,
30314                    internalformat,
30315                    width
30316                );
30317            }
30318            let out = call_atomic_ptr_4arg(
30319                "glTextureStorage1D",
30320                &self.glTextureStorage1D_p,
30321                texture,
30322                levels,
30323                internalformat,
30324                width,
30325            );
30326            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30327            {
30328                self.automatic_glGetError("glTextureStorage1D");
30329            }
30330            out
30331        }
30332        #[doc(hidden)]
30333        pub unsafe fn TextureStorage1D_load_with_dyn(
30334            &self,
30335            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30336        ) -> bool {
30337            load_dyn_name_atomic_ptr(
30338                get_proc_address,
30339                b"glTextureStorage1D\0",
30340                &self.glTextureStorage1D_p,
30341            )
30342        }
30343        #[inline]
30344        #[doc(hidden)]
30345        pub fn TextureStorage1D_is_loaded(&self) -> bool {
30346            !self.glTextureStorage1D_p.load(RELAX).is_null()
30347        }
30348        /// [glTextureStorage2D](http://docs.gl/gl4/glTextureStorage2D)(texture, levels, internalformat, width, height)
30349        /// * `internalformat` group: InternalFormat
30350        #[cfg_attr(feature = "inline", inline)]
30351        #[cfg_attr(feature = "inline_always", inline(always))]
30352        pub unsafe fn TextureStorage2D(
30353            &self,
30354            texture: GLuint,
30355            levels: GLsizei,
30356            internalformat: GLenum,
30357            width: GLsizei,
30358            height: GLsizei,
30359        ) {
30360            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30361            {
30362                trace!(
30363                    "calling gl.TextureStorage2D({:?}, {:?}, {:#X}, {:?}, {:?});",
30364                    texture,
30365                    levels,
30366                    internalformat,
30367                    width,
30368                    height
30369                );
30370            }
30371            let out = call_atomic_ptr_5arg(
30372                "glTextureStorage2D",
30373                &self.glTextureStorage2D_p,
30374                texture,
30375                levels,
30376                internalformat,
30377                width,
30378                height,
30379            );
30380            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30381            {
30382                self.automatic_glGetError("glTextureStorage2D");
30383            }
30384            out
30385        }
30386        #[doc(hidden)]
30387        pub unsafe fn TextureStorage2D_load_with_dyn(
30388            &self,
30389            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30390        ) -> bool {
30391            load_dyn_name_atomic_ptr(
30392                get_proc_address,
30393                b"glTextureStorage2D\0",
30394                &self.glTextureStorage2D_p,
30395            )
30396        }
30397        #[inline]
30398        #[doc(hidden)]
30399        pub fn TextureStorage2D_is_loaded(&self) -> bool {
30400            !self.glTextureStorage2D_p.load(RELAX).is_null()
30401        }
30402        /// [glTextureStorage2DMultisample](http://docs.gl/gl4/glTextureStorage2DMultisample)(texture, samples, internalformat, width, height, fixedsamplelocations)
30403        /// * `internalformat` group: InternalFormat
30404        #[cfg_attr(feature = "inline", inline)]
30405        #[cfg_attr(feature = "inline_always", inline(always))]
30406        pub unsafe fn TextureStorage2DMultisample(
30407            &self,
30408            texture: GLuint,
30409            samples: GLsizei,
30410            internalformat: GLenum,
30411            width: GLsizei,
30412            height: GLsizei,
30413            fixedsamplelocations: GLboolean,
30414        ) {
30415            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30416            {
30417                trace!(
30418                    "calling gl.TextureStorage2DMultisample({:?}, {:?}, {:#X}, {:?}, {:?}, {:?});",
30419                    texture,
30420                    samples,
30421                    internalformat,
30422                    width,
30423                    height,
30424                    fixedsamplelocations
30425                );
30426            }
30427            let out = call_atomic_ptr_6arg(
30428                "glTextureStorage2DMultisample",
30429                &self.glTextureStorage2DMultisample_p,
30430                texture,
30431                samples,
30432                internalformat,
30433                width,
30434                height,
30435                fixedsamplelocations,
30436            );
30437            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30438            {
30439                self.automatic_glGetError("glTextureStorage2DMultisample");
30440            }
30441            out
30442        }
30443        #[doc(hidden)]
30444        pub unsafe fn TextureStorage2DMultisample_load_with_dyn(
30445            &self,
30446            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30447        ) -> bool {
30448            load_dyn_name_atomic_ptr(
30449                get_proc_address,
30450                b"glTextureStorage2DMultisample\0",
30451                &self.glTextureStorage2DMultisample_p,
30452            )
30453        }
30454        #[inline]
30455        #[doc(hidden)]
30456        pub fn TextureStorage2DMultisample_is_loaded(&self) -> bool {
30457            !self.glTextureStorage2DMultisample_p.load(RELAX).is_null()
30458        }
30459        /// [glTextureStorage3D](http://docs.gl/gl4/glTextureStorage3D)(texture, levels, internalformat, width, height, depth)
30460        /// * `internalformat` group: InternalFormat
30461        #[cfg_attr(feature = "inline", inline)]
30462        #[cfg_attr(feature = "inline_always", inline(always))]
30463        pub unsafe fn TextureStorage3D(
30464            &self,
30465            texture: GLuint,
30466            levels: GLsizei,
30467            internalformat: GLenum,
30468            width: GLsizei,
30469            height: GLsizei,
30470            depth: GLsizei,
30471        ) {
30472            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30473            {
30474                trace!(
30475                    "calling gl.TextureStorage3D({:?}, {:?}, {:#X}, {:?}, {:?}, {:?});",
30476                    texture,
30477                    levels,
30478                    internalformat,
30479                    width,
30480                    height,
30481                    depth
30482                );
30483            }
30484            let out = call_atomic_ptr_6arg(
30485                "glTextureStorage3D",
30486                &self.glTextureStorage3D_p,
30487                texture,
30488                levels,
30489                internalformat,
30490                width,
30491                height,
30492                depth,
30493            );
30494            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30495            {
30496                self.automatic_glGetError("glTextureStorage3D");
30497            }
30498            out
30499        }
30500        #[doc(hidden)]
30501        pub unsafe fn TextureStorage3D_load_with_dyn(
30502            &self,
30503            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30504        ) -> bool {
30505            load_dyn_name_atomic_ptr(
30506                get_proc_address,
30507                b"glTextureStorage3D\0",
30508                &self.glTextureStorage3D_p,
30509            )
30510        }
30511        #[inline]
30512        #[doc(hidden)]
30513        pub fn TextureStorage3D_is_loaded(&self) -> bool {
30514            !self.glTextureStorage3D_p.load(RELAX).is_null()
30515        }
30516        /// [glTextureStorage3DMultisample](http://docs.gl/gl4/glTextureStorage3DMultisample)(texture, samples, internalformat, width, height, depth, fixedsamplelocations)
30517        /// * `internalformat` group: InternalFormat
30518        #[cfg_attr(feature = "inline", inline)]
30519        #[cfg_attr(feature = "inline_always", inline(always))]
30520        pub unsafe fn TextureStorage3DMultisample(
30521            &self,
30522            texture: GLuint,
30523            samples: GLsizei,
30524            internalformat: GLenum,
30525            width: GLsizei,
30526            height: GLsizei,
30527            depth: GLsizei,
30528            fixedsamplelocations: GLboolean,
30529        ) {
30530            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30531            {
30532                trace!("calling gl.TextureStorage3DMultisample({:?}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?});", texture, samples, internalformat, width, height, depth, fixedsamplelocations);
30533            }
30534            let out = call_atomic_ptr_7arg(
30535                "glTextureStorage3DMultisample",
30536                &self.glTextureStorage3DMultisample_p,
30537                texture,
30538                samples,
30539                internalformat,
30540                width,
30541                height,
30542                depth,
30543                fixedsamplelocations,
30544            );
30545            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30546            {
30547                self.automatic_glGetError("glTextureStorage3DMultisample");
30548            }
30549            out
30550        }
30551        #[doc(hidden)]
30552        pub unsafe fn TextureStorage3DMultisample_load_with_dyn(
30553            &self,
30554            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30555        ) -> bool {
30556            load_dyn_name_atomic_ptr(
30557                get_proc_address,
30558                b"glTextureStorage3DMultisample\0",
30559                &self.glTextureStorage3DMultisample_p,
30560            )
30561        }
30562        #[inline]
30563        #[doc(hidden)]
30564        pub fn TextureStorage3DMultisample_is_loaded(&self) -> bool {
30565            !self.glTextureStorage3DMultisample_p.load(RELAX).is_null()
30566        }
30567        /// [glTextureSubImage1D](http://docs.gl/gl4/glTextureSubImage1D)(texture, level, xoffset, width, format, type_, pixels)
30568        /// * `format` group: PixelFormat
30569        /// * `type_` group: PixelType
30570        #[cfg_attr(feature = "inline", inline)]
30571        #[cfg_attr(feature = "inline_always", inline(always))]
30572        pub unsafe fn TextureSubImage1D(
30573            &self,
30574            texture: GLuint,
30575            level: GLint,
30576            xoffset: GLint,
30577            width: GLsizei,
30578            format: GLenum,
30579            type_: GLenum,
30580            pixels: *const c_void,
30581        ) {
30582            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30583            {
30584                trace!(
30585                    "calling gl.TextureSubImage1D({:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});",
30586                    texture,
30587                    level,
30588                    xoffset,
30589                    width,
30590                    format,
30591                    type_,
30592                    pixels
30593                );
30594            }
30595            let out = call_atomic_ptr_7arg(
30596                "glTextureSubImage1D",
30597                &self.glTextureSubImage1D_p,
30598                texture,
30599                level,
30600                xoffset,
30601                width,
30602                format,
30603                type_,
30604                pixels,
30605            );
30606            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30607            {
30608                self.automatic_glGetError("glTextureSubImage1D");
30609            }
30610            out
30611        }
30612        #[doc(hidden)]
30613        pub unsafe fn TextureSubImage1D_load_with_dyn(
30614            &self,
30615            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30616        ) -> bool {
30617            load_dyn_name_atomic_ptr(
30618                get_proc_address,
30619                b"glTextureSubImage1D\0",
30620                &self.glTextureSubImage1D_p,
30621            )
30622        }
30623        #[inline]
30624        #[doc(hidden)]
30625        pub fn TextureSubImage1D_is_loaded(&self) -> bool {
30626            !self.glTextureSubImage1D_p.load(RELAX).is_null()
30627        }
30628        /// [glTextureSubImage2D](http://docs.gl/gl4/glTextureSubImage2D)(texture, level, xoffset, yoffset, width, height, format, type_, pixels)
30629        /// * `format` group: PixelFormat
30630        /// * `type_` group: PixelType
30631        #[cfg_attr(feature = "inline", inline)]
30632        #[cfg_attr(feature = "inline_always", inline(always))]
30633        pub unsafe fn TextureSubImage2D(
30634            &self,
30635            texture: GLuint,
30636            level: GLint,
30637            xoffset: GLint,
30638            yoffset: GLint,
30639            width: GLsizei,
30640            height: GLsizei,
30641            format: GLenum,
30642            type_: GLenum,
30643            pixels: *const c_void,
30644        ) {
30645            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30646            {
30647                trace!("calling gl.TextureSubImage2D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", texture, level, xoffset, yoffset, width, height, format, type_, pixels);
30648            }
30649            let out = call_atomic_ptr_9arg(
30650                "glTextureSubImage2D",
30651                &self.glTextureSubImage2D_p,
30652                texture,
30653                level,
30654                xoffset,
30655                yoffset,
30656                width,
30657                height,
30658                format,
30659                type_,
30660                pixels,
30661            );
30662            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30663            {
30664                self.automatic_glGetError("glTextureSubImage2D");
30665            }
30666            out
30667        }
30668        #[doc(hidden)]
30669        pub unsafe fn TextureSubImage2D_load_with_dyn(
30670            &self,
30671            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30672        ) -> bool {
30673            load_dyn_name_atomic_ptr(
30674                get_proc_address,
30675                b"glTextureSubImage2D\0",
30676                &self.glTextureSubImage2D_p,
30677            )
30678        }
30679        #[inline]
30680        #[doc(hidden)]
30681        pub fn TextureSubImage2D_is_loaded(&self) -> bool {
30682            !self.glTextureSubImage2D_p.load(RELAX).is_null()
30683        }
30684        /// [glTextureSubImage3D](http://docs.gl/gl4/glTextureSubImage3D)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)
30685        /// * `format` group: PixelFormat
30686        /// * `type_` group: PixelType
30687        #[cfg_attr(feature = "inline", inline)]
30688        #[cfg_attr(feature = "inline_always", inline(always))]
30689        pub unsafe fn TextureSubImage3D(
30690            &self,
30691            texture: GLuint,
30692            level: GLint,
30693            xoffset: GLint,
30694            yoffset: GLint,
30695            zoffset: GLint,
30696            width: GLsizei,
30697            height: GLsizei,
30698            depth: GLsizei,
30699            format: GLenum,
30700            type_: GLenum,
30701            pixels: *const c_void,
30702        ) {
30703            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30704            {
30705                trace!("calling gl.TextureSubImage3D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels);
30706            }
30707            let out = call_atomic_ptr_11arg(
30708                "glTextureSubImage3D",
30709                &self.glTextureSubImage3D_p,
30710                texture,
30711                level,
30712                xoffset,
30713                yoffset,
30714                zoffset,
30715                width,
30716                height,
30717                depth,
30718                format,
30719                type_,
30720                pixels,
30721            );
30722            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30723            {
30724                self.automatic_glGetError("glTextureSubImage3D");
30725            }
30726            out
30727        }
30728        #[doc(hidden)]
30729        pub unsafe fn TextureSubImage3D_load_with_dyn(
30730            &self,
30731            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30732        ) -> bool {
30733            load_dyn_name_atomic_ptr(
30734                get_proc_address,
30735                b"glTextureSubImage3D\0",
30736                &self.glTextureSubImage3D_p,
30737            )
30738        }
30739        #[inline]
30740        #[doc(hidden)]
30741        pub fn TextureSubImage3D_is_loaded(&self) -> bool {
30742            !self.glTextureSubImage3D_p.load(RELAX).is_null()
30743        }
30744        /// [glTextureView](http://docs.gl/gl4/glTextureView)(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers)
30745        /// * `target` group: TextureTarget
30746        /// * `internalformat` group: InternalFormat
30747        #[cfg_attr(feature = "inline", inline)]
30748        #[cfg_attr(feature = "inline_always", inline(always))]
30749        pub unsafe fn TextureView(
30750            &self,
30751            texture: GLuint,
30752            target: GLenum,
30753            origtexture: GLuint,
30754            internalformat: GLenum,
30755            minlevel: GLuint,
30756            numlevels: GLuint,
30757            minlayer: GLuint,
30758            numlayers: GLuint,
30759        ) {
30760            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30761            {
30762                trace!(
30763                    "calling gl.TextureView({:?}, {:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?});",
30764                    texture,
30765                    target,
30766                    origtexture,
30767                    internalformat,
30768                    minlevel,
30769                    numlevels,
30770                    minlayer,
30771                    numlayers
30772                );
30773            }
30774            let out = call_atomic_ptr_8arg(
30775                "glTextureView",
30776                &self.glTextureView_p,
30777                texture,
30778                target,
30779                origtexture,
30780                internalformat,
30781                minlevel,
30782                numlevels,
30783                minlayer,
30784                numlayers,
30785            );
30786            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30787            {
30788                self.automatic_glGetError("glTextureView");
30789            }
30790            out
30791        }
30792        #[doc(hidden)]
30793        pub unsafe fn TextureView_load_with_dyn(
30794            &self,
30795            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30796        ) -> bool {
30797            load_dyn_name_atomic_ptr(get_proc_address, b"glTextureView\0", &self.glTextureView_p)
30798        }
30799        #[inline]
30800        #[doc(hidden)]
30801        pub fn TextureView_is_loaded(&self) -> bool {
30802            !self.glTextureView_p.load(RELAX).is_null()
30803        }
30804        /// [glTransformFeedbackBufferBase](http://docs.gl/gl4/glTransformFeedbackBufferBase)(xfb, index, buffer)
30805        #[cfg_attr(feature = "inline", inline)]
30806        #[cfg_attr(feature = "inline_always", inline(always))]
30807        pub unsafe fn TransformFeedbackBufferBase(
30808            &self,
30809            xfb: GLuint,
30810            index: GLuint,
30811            buffer: GLuint,
30812        ) {
30813            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30814            {
30815                trace!(
30816                    "calling gl.TransformFeedbackBufferBase({:?}, {:?}, {:?});",
30817                    xfb,
30818                    index,
30819                    buffer
30820                );
30821            }
30822            let out = call_atomic_ptr_3arg(
30823                "glTransformFeedbackBufferBase",
30824                &self.glTransformFeedbackBufferBase_p,
30825                xfb,
30826                index,
30827                buffer,
30828            );
30829            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30830            {
30831                self.automatic_glGetError("glTransformFeedbackBufferBase");
30832            }
30833            out
30834        }
30835        #[doc(hidden)]
30836        pub unsafe fn TransformFeedbackBufferBase_load_with_dyn(
30837            &self,
30838            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30839        ) -> bool {
30840            load_dyn_name_atomic_ptr(
30841                get_proc_address,
30842                b"glTransformFeedbackBufferBase\0",
30843                &self.glTransformFeedbackBufferBase_p,
30844            )
30845        }
30846        #[inline]
30847        #[doc(hidden)]
30848        pub fn TransformFeedbackBufferBase_is_loaded(&self) -> bool {
30849            !self.glTransformFeedbackBufferBase_p.load(RELAX).is_null()
30850        }
30851        /// [glTransformFeedbackBufferRange](http://docs.gl/gl4/glTransformFeedbackBufferRange)(xfb, index, buffer, offset, size)
30852        /// * `size` group: BufferSize
30853        #[cfg_attr(feature = "inline", inline)]
30854        #[cfg_attr(feature = "inline_always", inline(always))]
30855        pub unsafe fn TransformFeedbackBufferRange(
30856            &self,
30857            xfb: GLuint,
30858            index: GLuint,
30859            buffer: GLuint,
30860            offset: GLintptr,
30861            size: GLsizeiptr,
30862        ) {
30863            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30864            {
30865                trace!(
30866                    "calling gl.TransformFeedbackBufferRange({:?}, {:?}, {:?}, {:?}, {:?});",
30867                    xfb,
30868                    index,
30869                    buffer,
30870                    offset,
30871                    size
30872                );
30873            }
30874            let out = call_atomic_ptr_5arg(
30875                "glTransformFeedbackBufferRange",
30876                &self.glTransformFeedbackBufferRange_p,
30877                xfb,
30878                index,
30879                buffer,
30880                offset,
30881                size,
30882            );
30883            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30884            {
30885                self.automatic_glGetError("glTransformFeedbackBufferRange");
30886            }
30887            out
30888        }
30889        #[doc(hidden)]
30890        pub unsafe fn TransformFeedbackBufferRange_load_with_dyn(
30891            &self,
30892            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30893        ) -> bool {
30894            load_dyn_name_atomic_ptr(
30895                get_proc_address,
30896                b"glTransformFeedbackBufferRange\0",
30897                &self.glTransformFeedbackBufferRange_p,
30898            )
30899        }
30900        #[inline]
30901        #[doc(hidden)]
30902        pub fn TransformFeedbackBufferRange_is_loaded(&self) -> bool {
30903            !self.glTransformFeedbackBufferRange_p.load(RELAX).is_null()
30904        }
30905        /// [glTransformFeedbackVaryings](http://docs.gl/gl4/glTransformFeedbackVaryings)(program, count, varyings, bufferMode)
30906        /// * `varyings` len: count
30907        /// * `bufferMode` group: TransformFeedbackBufferMode
30908        #[cfg_attr(feature = "inline", inline)]
30909        #[cfg_attr(feature = "inline_always", inline(always))]
30910        pub unsafe fn TransformFeedbackVaryings(
30911            &self,
30912            program: GLuint,
30913            count: GLsizei,
30914            varyings: *const *const GLchar,
30915            bufferMode: GLenum,
30916        ) {
30917            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30918            {
30919                trace!(
30920                    "calling gl.TransformFeedbackVaryings({:?}, {:?}, {:p}, {:#X});",
30921                    program,
30922                    count,
30923                    varyings,
30924                    bufferMode
30925                );
30926            }
30927            let out = call_atomic_ptr_4arg(
30928                "glTransformFeedbackVaryings",
30929                &self.glTransformFeedbackVaryings_p,
30930                program,
30931                count,
30932                varyings,
30933                bufferMode,
30934            );
30935            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30936            {
30937                self.automatic_glGetError("glTransformFeedbackVaryings");
30938            }
30939            out
30940        }
30941        #[doc(hidden)]
30942        pub unsafe fn TransformFeedbackVaryings_load_with_dyn(
30943            &self,
30944            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30945        ) -> bool {
30946            load_dyn_name_atomic_ptr(
30947                get_proc_address,
30948                b"glTransformFeedbackVaryings\0",
30949                &self.glTransformFeedbackVaryings_p,
30950            )
30951        }
30952        #[inline]
30953        #[doc(hidden)]
30954        pub fn TransformFeedbackVaryings_is_loaded(&self) -> bool {
30955            !self.glTransformFeedbackVaryings_p.load(RELAX).is_null()
30956        }
30957        /// [glUniform1d](http://docs.gl/gl4/glUniform1d)(location, x)
30958        #[cfg_attr(feature = "inline", inline)]
30959        #[cfg_attr(feature = "inline_always", inline(always))]
30960        pub unsafe fn Uniform1d(&self, location: GLint, x: GLdouble) {
30961            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30962            {
30963                trace!("calling gl.Uniform1d({:?}, {:?});", location, x);
30964            }
30965            let out = call_atomic_ptr_2arg("glUniform1d", &self.glUniform1d_p, location, x);
30966            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30967            {
30968                self.automatic_glGetError("glUniform1d");
30969            }
30970            out
30971        }
30972        #[doc(hidden)]
30973        pub unsafe fn Uniform1d_load_with_dyn(
30974            &self,
30975            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30976        ) -> bool {
30977            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1d\0", &self.glUniform1d_p)
30978        }
30979        #[inline]
30980        #[doc(hidden)]
30981        pub fn Uniform1d_is_loaded(&self) -> bool {
30982            !self.glUniform1d_p.load(RELAX).is_null()
30983        }
30984        /// [glUniform1dv](http://docs.gl/gl4/glUniform1dv)(location, count, value)
30985        /// * `value` len: count*1
30986        #[cfg_attr(feature = "inline", inline)]
30987        #[cfg_attr(feature = "inline_always", inline(always))]
30988        pub unsafe fn Uniform1dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) {
30989            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30990            {
30991                trace!(
30992                    "calling gl.Uniform1dv({:?}, {:?}, {:p});",
30993                    location,
30994                    count,
30995                    value
30996                );
30997            }
30998            let out =
30999                call_atomic_ptr_3arg("glUniform1dv", &self.glUniform1dv_p, location, count, value);
31000            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31001            {
31002                self.automatic_glGetError("glUniform1dv");
31003            }
31004            out
31005        }
31006        #[doc(hidden)]
31007        pub unsafe fn Uniform1dv_load_with_dyn(
31008            &self,
31009            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31010        ) -> bool {
31011            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1dv\0", &self.glUniform1dv_p)
31012        }
31013        #[inline]
31014        #[doc(hidden)]
31015        pub fn Uniform1dv_is_loaded(&self) -> bool {
31016            !self.glUniform1dv_p.load(RELAX).is_null()
31017        }
31018        /// [glUniform1f](http://docs.gl/gl4/glUniform)(location, v0)
31019        #[cfg_attr(feature = "inline", inline)]
31020        #[cfg_attr(feature = "inline_always", inline(always))]
31021        pub unsafe fn Uniform1f(&self, location: GLint, v0: GLfloat) {
31022            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31023            {
31024                trace!("calling gl.Uniform1f({:?}, {:?});", location, v0);
31025            }
31026            let out = call_atomic_ptr_2arg("glUniform1f", &self.glUniform1f_p, location, v0);
31027            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31028            {
31029                self.automatic_glGetError("glUniform1f");
31030            }
31031            out
31032        }
31033        #[doc(hidden)]
31034        pub unsafe fn Uniform1f_load_with_dyn(
31035            &self,
31036            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31037        ) -> bool {
31038            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1f\0", &self.glUniform1f_p)
31039        }
31040        #[inline]
31041        #[doc(hidden)]
31042        pub fn Uniform1f_is_loaded(&self) -> bool {
31043            !self.glUniform1f_p.load(RELAX).is_null()
31044        }
31045        /// [glUniform1fv](http://docs.gl/gl4/glUniform)(location, count, value)
31046        /// * `value` len: count*1
31047        #[cfg_attr(feature = "inline", inline)]
31048        #[cfg_attr(feature = "inline_always", inline(always))]
31049        pub unsafe fn Uniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) {
31050            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31051            {
31052                trace!(
31053                    "calling gl.Uniform1fv({:?}, {:?}, {:p});",
31054                    location,
31055                    count,
31056                    value
31057                );
31058            }
31059            let out =
31060                call_atomic_ptr_3arg("glUniform1fv", &self.glUniform1fv_p, location, count, value);
31061            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31062            {
31063                self.automatic_glGetError("glUniform1fv");
31064            }
31065            out
31066        }
31067        #[doc(hidden)]
31068        pub unsafe fn Uniform1fv_load_with_dyn(
31069            &self,
31070            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31071        ) -> bool {
31072            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1fv\0", &self.glUniform1fv_p)
31073        }
31074        #[inline]
31075        #[doc(hidden)]
31076        pub fn Uniform1fv_is_loaded(&self) -> bool {
31077            !self.glUniform1fv_p.load(RELAX).is_null()
31078        }
31079        /// [glUniform1i](http://docs.gl/gl4/glUniform)(location, v0)
31080        #[cfg_attr(feature = "inline", inline)]
31081        #[cfg_attr(feature = "inline_always", inline(always))]
31082        pub unsafe fn Uniform1i(&self, location: GLint, v0: GLint) {
31083            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31084            {
31085                trace!("calling gl.Uniform1i({:?}, {:?});", location, v0);
31086            }
31087            let out = call_atomic_ptr_2arg("glUniform1i", &self.glUniform1i_p, location, v0);
31088            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31089            {
31090                self.automatic_glGetError("glUniform1i");
31091            }
31092            out
31093        }
31094        #[doc(hidden)]
31095        pub unsafe fn Uniform1i_load_with_dyn(
31096            &self,
31097            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31098        ) -> bool {
31099            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1i\0", &self.glUniform1i_p)
31100        }
31101        #[inline]
31102        #[doc(hidden)]
31103        pub fn Uniform1i_is_loaded(&self) -> bool {
31104            !self.glUniform1i_p.load(RELAX).is_null()
31105        }
31106        /// [glUniform1iv](http://docs.gl/gl4/glUniform)(location, count, value)
31107        /// * `value` len: count*1
31108        #[cfg_attr(feature = "inline", inline)]
31109        #[cfg_attr(feature = "inline_always", inline(always))]
31110        pub unsafe fn Uniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) {
31111            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31112            {
31113                trace!(
31114                    "calling gl.Uniform1iv({:?}, {:?}, {:p});",
31115                    location,
31116                    count,
31117                    value
31118                );
31119            }
31120            let out =
31121                call_atomic_ptr_3arg("glUniform1iv", &self.glUniform1iv_p, location, count, value);
31122            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31123            {
31124                self.automatic_glGetError("glUniform1iv");
31125            }
31126            out
31127        }
31128        #[doc(hidden)]
31129        pub unsafe fn Uniform1iv_load_with_dyn(
31130            &self,
31131            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31132        ) -> bool {
31133            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1iv\0", &self.glUniform1iv_p)
31134        }
31135        #[inline]
31136        #[doc(hidden)]
31137        pub fn Uniform1iv_is_loaded(&self) -> bool {
31138            !self.glUniform1iv_p.load(RELAX).is_null()
31139        }
31140        /// [glUniform1ui](http://docs.gl/gl4/glUniform)(location, v0)
31141        #[cfg_attr(feature = "inline", inline)]
31142        #[cfg_attr(feature = "inline_always", inline(always))]
31143        pub unsafe fn Uniform1ui(&self, location: GLint, v0: GLuint) {
31144            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31145            {
31146                trace!("calling gl.Uniform1ui({:?}, {:?});", location, v0);
31147            }
31148            let out = call_atomic_ptr_2arg("glUniform1ui", &self.glUniform1ui_p, location, v0);
31149            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31150            {
31151                self.automatic_glGetError("glUniform1ui");
31152            }
31153            out
31154        }
31155        #[doc(hidden)]
31156        pub unsafe fn Uniform1ui_load_with_dyn(
31157            &self,
31158            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31159        ) -> bool {
31160            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1ui\0", &self.glUniform1ui_p)
31161        }
31162        #[inline]
31163        #[doc(hidden)]
31164        pub fn Uniform1ui_is_loaded(&self) -> bool {
31165            !self.glUniform1ui_p.load(RELAX).is_null()
31166        }
31167        /// [glUniform1uiv](http://docs.gl/gl4/glUniform)(location, count, value)
31168        /// * `value` len: count*1
31169        #[cfg_attr(feature = "inline", inline)]
31170        #[cfg_attr(feature = "inline_always", inline(always))]
31171        pub unsafe fn Uniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) {
31172            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31173            {
31174                trace!(
31175                    "calling gl.Uniform1uiv({:?}, {:?}, {:p});",
31176                    location,
31177                    count,
31178                    value
31179                );
31180            }
31181            let out = call_atomic_ptr_3arg(
31182                "glUniform1uiv",
31183                &self.glUniform1uiv_p,
31184                location,
31185                count,
31186                value,
31187            );
31188            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31189            {
31190                self.automatic_glGetError("glUniform1uiv");
31191            }
31192            out
31193        }
31194        #[doc(hidden)]
31195        pub unsafe fn Uniform1uiv_load_with_dyn(
31196            &self,
31197            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31198        ) -> bool {
31199            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1uiv\0", &self.glUniform1uiv_p)
31200        }
31201        #[inline]
31202        #[doc(hidden)]
31203        pub fn Uniform1uiv_is_loaded(&self) -> bool {
31204            !self.glUniform1uiv_p.load(RELAX).is_null()
31205        }
31206        /// [glUniform2d](http://docs.gl/gl4/glUniform2d)(location, x, y)
31207        #[cfg_attr(feature = "inline", inline)]
31208        #[cfg_attr(feature = "inline_always", inline(always))]
31209        pub unsafe fn Uniform2d(&self, location: GLint, x: GLdouble, y: GLdouble) {
31210            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31211            {
31212                trace!("calling gl.Uniform2d({:?}, {:?}, {:?});", location, x, y);
31213            }
31214            let out = call_atomic_ptr_3arg("glUniform2d", &self.glUniform2d_p, location, x, y);
31215            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31216            {
31217                self.automatic_glGetError("glUniform2d");
31218            }
31219            out
31220        }
31221        #[doc(hidden)]
31222        pub unsafe fn Uniform2d_load_with_dyn(
31223            &self,
31224            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31225        ) -> bool {
31226            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2d\0", &self.glUniform2d_p)
31227        }
31228        #[inline]
31229        #[doc(hidden)]
31230        pub fn Uniform2d_is_loaded(&self) -> bool {
31231            !self.glUniform2d_p.load(RELAX).is_null()
31232        }
31233        /// [glUniform2dv](http://docs.gl/gl4/glUniform2dv)(location, count, value)
31234        /// * `value` len: count*2
31235        #[cfg_attr(feature = "inline", inline)]
31236        #[cfg_attr(feature = "inline_always", inline(always))]
31237        pub unsafe fn Uniform2dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) {
31238            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31239            {
31240                trace!(
31241                    "calling gl.Uniform2dv({:?}, {:?}, {:p});",
31242                    location,
31243                    count,
31244                    value
31245                );
31246            }
31247            let out =
31248                call_atomic_ptr_3arg("glUniform2dv", &self.glUniform2dv_p, location, count, value);
31249            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31250            {
31251                self.automatic_glGetError("glUniform2dv");
31252            }
31253            out
31254        }
31255        #[doc(hidden)]
31256        pub unsafe fn Uniform2dv_load_with_dyn(
31257            &self,
31258            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31259        ) -> bool {
31260            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2dv\0", &self.glUniform2dv_p)
31261        }
31262        #[inline]
31263        #[doc(hidden)]
31264        pub fn Uniform2dv_is_loaded(&self) -> bool {
31265            !self.glUniform2dv_p.load(RELAX).is_null()
31266        }
31267        /// [glUniform2f](http://docs.gl/gl4/glUniform)(location, v0, v1)
31268        #[cfg_attr(feature = "inline", inline)]
31269        #[cfg_attr(feature = "inline_always", inline(always))]
31270        pub unsafe fn Uniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) {
31271            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31272            {
31273                trace!("calling gl.Uniform2f({:?}, {:?}, {:?});", location, v0, v1);
31274            }
31275            let out = call_atomic_ptr_3arg("glUniform2f", &self.glUniform2f_p, location, v0, v1);
31276            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31277            {
31278                self.automatic_glGetError("glUniform2f");
31279            }
31280            out
31281        }
31282        #[doc(hidden)]
31283        pub unsafe fn Uniform2f_load_with_dyn(
31284            &self,
31285            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31286        ) -> bool {
31287            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2f\0", &self.glUniform2f_p)
31288        }
31289        #[inline]
31290        #[doc(hidden)]
31291        pub fn Uniform2f_is_loaded(&self) -> bool {
31292            !self.glUniform2f_p.load(RELAX).is_null()
31293        }
31294        /// [glUniform2fv](http://docs.gl/gl4/glUniform)(location, count, value)
31295        /// * `value` len: count*2
31296        #[cfg_attr(feature = "inline", inline)]
31297        #[cfg_attr(feature = "inline_always", inline(always))]
31298        pub unsafe fn Uniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) {
31299            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31300            {
31301                trace!(
31302                    "calling gl.Uniform2fv({:?}, {:?}, {:p});",
31303                    location,
31304                    count,
31305                    value
31306                );
31307            }
31308            let out =
31309                call_atomic_ptr_3arg("glUniform2fv", &self.glUniform2fv_p, location, count, value);
31310            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31311            {
31312                self.automatic_glGetError("glUniform2fv");
31313            }
31314            out
31315        }
31316        #[doc(hidden)]
31317        pub unsafe fn Uniform2fv_load_with_dyn(
31318            &self,
31319            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31320        ) -> bool {
31321            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2fv\0", &self.glUniform2fv_p)
31322        }
31323        #[inline]
31324        #[doc(hidden)]
31325        pub fn Uniform2fv_is_loaded(&self) -> bool {
31326            !self.glUniform2fv_p.load(RELAX).is_null()
31327        }
31328        /// [glUniform2i](http://docs.gl/gl4/glUniform)(location, v0, v1)
31329        #[cfg_attr(feature = "inline", inline)]
31330        #[cfg_attr(feature = "inline_always", inline(always))]
31331        pub unsafe fn Uniform2i(&self, location: GLint, v0: GLint, v1: GLint) {
31332            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31333            {
31334                trace!("calling gl.Uniform2i({:?}, {:?}, {:?});", location, v0, v1);
31335            }
31336            let out = call_atomic_ptr_3arg("glUniform2i", &self.glUniform2i_p, location, v0, v1);
31337            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31338            {
31339                self.automatic_glGetError("glUniform2i");
31340            }
31341            out
31342        }
31343        #[doc(hidden)]
31344        pub unsafe fn Uniform2i_load_with_dyn(
31345            &self,
31346            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31347        ) -> bool {
31348            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2i\0", &self.glUniform2i_p)
31349        }
31350        #[inline]
31351        #[doc(hidden)]
31352        pub fn Uniform2i_is_loaded(&self) -> bool {
31353            !self.glUniform2i_p.load(RELAX).is_null()
31354        }
31355        /// [glUniform2iv](http://docs.gl/gl4/glUniform)(location, count, value)
31356        /// * `value` len: count*2
31357        #[cfg_attr(feature = "inline", inline)]
31358        #[cfg_attr(feature = "inline_always", inline(always))]
31359        pub unsafe fn Uniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) {
31360            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31361            {
31362                trace!(
31363                    "calling gl.Uniform2iv({:?}, {:?}, {:p});",
31364                    location,
31365                    count,
31366                    value
31367                );
31368            }
31369            let out =
31370                call_atomic_ptr_3arg("glUniform2iv", &self.glUniform2iv_p, location, count, value);
31371            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31372            {
31373                self.automatic_glGetError("glUniform2iv");
31374            }
31375            out
31376        }
31377        #[doc(hidden)]
31378        pub unsafe fn Uniform2iv_load_with_dyn(
31379            &self,
31380            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31381        ) -> bool {
31382            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2iv\0", &self.glUniform2iv_p)
31383        }
31384        #[inline]
31385        #[doc(hidden)]
31386        pub fn Uniform2iv_is_loaded(&self) -> bool {
31387            !self.glUniform2iv_p.load(RELAX).is_null()
31388        }
31389        /// [glUniform2ui](http://docs.gl/gl4/glUniform)(location, v0, v1)
31390        #[cfg_attr(feature = "inline", inline)]
31391        #[cfg_attr(feature = "inline_always", inline(always))]
31392        pub unsafe fn Uniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) {
31393            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31394            {
31395                trace!("calling gl.Uniform2ui({:?}, {:?}, {:?});", location, v0, v1);
31396            }
31397            let out = call_atomic_ptr_3arg("glUniform2ui", &self.glUniform2ui_p, location, v0, v1);
31398            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31399            {
31400                self.automatic_glGetError("glUniform2ui");
31401            }
31402            out
31403        }
31404        #[doc(hidden)]
31405        pub unsafe fn Uniform2ui_load_with_dyn(
31406            &self,
31407            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31408        ) -> bool {
31409            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2ui\0", &self.glUniform2ui_p)
31410        }
31411        #[inline]
31412        #[doc(hidden)]
31413        pub fn Uniform2ui_is_loaded(&self) -> bool {
31414            !self.glUniform2ui_p.load(RELAX).is_null()
31415        }
31416        /// [glUniform2uiv](http://docs.gl/gl4/glUniform)(location, count, value)
31417        /// * `value` len: count*2
31418        #[cfg_attr(feature = "inline", inline)]
31419        #[cfg_attr(feature = "inline_always", inline(always))]
31420        pub unsafe fn Uniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) {
31421            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31422            {
31423                trace!(
31424                    "calling gl.Uniform2uiv({:?}, {:?}, {:p});",
31425                    location,
31426                    count,
31427                    value
31428                );
31429            }
31430            let out = call_atomic_ptr_3arg(
31431                "glUniform2uiv",
31432                &self.glUniform2uiv_p,
31433                location,
31434                count,
31435                value,
31436            );
31437            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31438            {
31439                self.automatic_glGetError("glUniform2uiv");
31440            }
31441            out
31442        }
31443        #[doc(hidden)]
31444        pub unsafe fn Uniform2uiv_load_with_dyn(
31445            &self,
31446            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31447        ) -> bool {
31448            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2uiv\0", &self.glUniform2uiv_p)
31449        }
31450        #[inline]
31451        #[doc(hidden)]
31452        pub fn Uniform2uiv_is_loaded(&self) -> bool {
31453            !self.glUniform2uiv_p.load(RELAX).is_null()
31454        }
31455        /// [glUniform3d](http://docs.gl/gl4/glUniform3d)(location, x, y, z)
31456        #[cfg_attr(feature = "inline", inline)]
31457        #[cfg_attr(feature = "inline_always", inline(always))]
31458        pub unsafe fn Uniform3d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble) {
31459            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31460            {
31461                trace!(
31462                    "calling gl.Uniform3d({:?}, {:?}, {:?}, {:?});",
31463                    location,
31464                    x,
31465                    y,
31466                    z
31467                );
31468            }
31469            let out = call_atomic_ptr_4arg("glUniform3d", &self.glUniform3d_p, location, x, y, z);
31470            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31471            {
31472                self.automatic_glGetError("glUniform3d");
31473            }
31474            out
31475        }
31476        #[doc(hidden)]
31477        pub unsafe fn Uniform3d_load_with_dyn(
31478            &self,
31479            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31480        ) -> bool {
31481            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3d\0", &self.glUniform3d_p)
31482        }
31483        #[inline]
31484        #[doc(hidden)]
31485        pub fn Uniform3d_is_loaded(&self) -> bool {
31486            !self.glUniform3d_p.load(RELAX).is_null()
31487        }
31488        /// [glUniform3dv](http://docs.gl/gl4/glUniform3dv)(location, count, value)
31489        /// * `value` len: count*3
31490        #[cfg_attr(feature = "inline", inline)]
31491        #[cfg_attr(feature = "inline_always", inline(always))]
31492        pub unsafe fn Uniform3dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) {
31493            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31494            {
31495                trace!(
31496                    "calling gl.Uniform3dv({:?}, {:?}, {:p});",
31497                    location,
31498                    count,
31499                    value
31500                );
31501            }
31502            let out =
31503                call_atomic_ptr_3arg("glUniform3dv", &self.glUniform3dv_p, location, count, value);
31504            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31505            {
31506                self.automatic_glGetError("glUniform3dv");
31507            }
31508            out
31509        }
31510        #[doc(hidden)]
31511        pub unsafe fn Uniform3dv_load_with_dyn(
31512            &self,
31513            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31514        ) -> bool {
31515            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3dv\0", &self.glUniform3dv_p)
31516        }
31517        #[inline]
31518        #[doc(hidden)]
31519        pub fn Uniform3dv_is_loaded(&self) -> bool {
31520            !self.glUniform3dv_p.load(RELAX).is_null()
31521        }
31522        /// [glUniform3f](http://docs.gl/gl4/glUniform)(location, v0, v1, v2)
31523        #[cfg_attr(feature = "inline", inline)]
31524        #[cfg_attr(feature = "inline_always", inline(always))]
31525        pub unsafe fn Uniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) {
31526            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31527            {
31528                trace!(
31529                    "calling gl.Uniform3f({:?}, {:?}, {:?}, {:?});",
31530                    location,
31531                    v0,
31532                    v1,
31533                    v2
31534                );
31535            }
31536            let out =
31537                call_atomic_ptr_4arg("glUniform3f", &self.glUniform3f_p, location, v0, v1, v2);
31538            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31539            {
31540                self.automatic_glGetError("glUniform3f");
31541            }
31542            out
31543        }
31544        #[doc(hidden)]
31545        pub unsafe fn Uniform3f_load_with_dyn(
31546            &self,
31547            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31548        ) -> bool {
31549            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3f\0", &self.glUniform3f_p)
31550        }
31551        #[inline]
31552        #[doc(hidden)]
31553        pub fn Uniform3f_is_loaded(&self) -> bool {
31554            !self.glUniform3f_p.load(RELAX).is_null()
31555        }
31556        /// [glUniform3fv](http://docs.gl/gl4/glUniform)(location, count, value)
31557        /// * `value` len: count*3
31558        #[cfg_attr(feature = "inline", inline)]
31559        #[cfg_attr(feature = "inline_always", inline(always))]
31560        pub unsafe fn Uniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) {
31561            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31562            {
31563                trace!(
31564                    "calling gl.Uniform3fv({:?}, {:?}, {:p});",
31565                    location,
31566                    count,
31567                    value
31568                );
31569            }
31570            let out =
31571                call_atomic_ptr_3arg("glUniform3fv", &self.glUniform3fv_p, location, count, value);
31572            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31573            {
31574                self.automatic_glGetError("glUniform3fv");
31575            }
31576            out
31577        }
31578        #[doc(hidden)]
31579        pub unsafe fn Uniform3fv_load_with_dyn(
31580            &self,
31581            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31582        ) -> bool {
31583            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3fv\0", &self.glUniform3fv_p)
31584        }
31585        #[inline]
31586        #[doc(hidden)]
31587        pub fn Uniform3fv_is_loaded(&self) -> bool {
31588            !self.glUniform3fv_p.load(RELAX).is_null()
31589        }
31590        /// [glUniform3i](http://docs.gl/gl4/glUniform)(location, v0, v1, v2)
31591        #[cfg_attr(feature = "inline", inline)]
31592        #[cfg_attr(feature = "inline_always", inline(always))]
31593        pub unsafe fn Uniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) {
31594            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31595            {
31596                trace!(
31597                    "calling gl.Uniform3i({:?}, {:?}, {:?}, {:?});",
31598                    location,
31599                    v0,
31600                    v1,
31601                    v2
31602                );
31603            }
31604            let out =
31605                call_atomic_ptr_4arg("glUniform3i", &self.glUniform3i_p, location, v0, v1, v2);
31606            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31607            {
31608                self.automatic_glGetError("glUniform3i");
31609            }
31610            out
31611        }
31612        #[doc(hidden)]
31613        pub unsafe fn Uniform3i_load_with_dyn(
31614            &self,
31615            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31616        ) -> bool {
31617            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3i\0", &self.glUniform3i_p)
31618        }
31619        #[inline]
31620        #[doc(hidden)]
31621        pub fn Uniform3i_is_loaded(&self) -> bool {
31622            !self.glUniform3i_p.load(RELAX).is_null()
31623        }
31624        /// [glUniform3iv](http://docs.gl/gl4/glUniform)(location, count, value)
31625        /// * `value` len: count*3
31626        #[cfg_attr(feature = "inline", inline)]
31627        #[cfg_attr(feature = "inline_always", inline(always))]
31628        pub unsafe fn Uniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) {
31629            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31630            {
31631                trace!(
31632                    "calling gl.Uniform3iv({:?}, {:?}, {:p});",
31633                    location,
31634                    count,
31635                    value
31636                );
31637            }
31638            let out =
31639                call_atomic_ptr_3arg("glUniform3iv", &self.glUniform3iv_p, location, count, value);
31640            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31641            {
31642                self.automatic_glGetError("glUniform3iv");
31643            }
31644            out
31645        }
31646        #[doc(hidden)]
31647        pub unsafe fn Uniform3iv_load_with_dyn(
31648            &self,
31649            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31650        ) -> bool {
31651            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3iv\0", &self.glUniform3iv_p)
31652        }
31653        #[inline]
31654        #[doc(hidden)]
31655        pub fn Uniform3iv_is_loaded(&self) -> bool {
31656            !self.glUniform3iv_p.load(RELAX).is_null()
31657        }
31658        /// [glUniform3ui](http://docs.gl/gl4/glUniform)(location, v0, v1, v2)
31659        #[cfg_attr(feature = "inline", inline)]
31660        #[cfg_attr(feature = "inline_always", inline(always))]
31661        pub unsafe fn Uniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) {
31662            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31663            {
31664                trace!(
31665                    "calling gl.Uniform3ui({:?}, {:?}, {:?}, {:?});",
31666                    location,
31667                    v0,
31668                    v1,
31669                    v2
31670                );
31671            }
31672            let out =
31673                call_atomic_ptr_4arg("glUniform3ui", &self.glUniform3ui_p, location, v0, v1, v2);
31674            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31675            {
31676                self.automatic_glGetError("glUniform3ui");
31677            }
31678            out
31679        }
31680        #[doc(hidden)]
31681        pub unsafe fn Uniform3ui_load_with_dyn(
31682            &self,
31683            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31684        ) -> bool {
31685            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3ui\0", &self.glUniform3ui_p)
31686        }
31687        #[inline]
31688        #[doc(hidden)]
31689        pub fn Uniform3ui_is_loaded(&self) -> bool {
31690            !self.glUniform3ui_p.load(RELAX).is_null()
31691        }
31692        /// [glUniform3uiv](http://docs.gl/gl4/glUniform)(location, count, value)
31693        /// * `value` len: count*3
31694        #[cfg_attr(feature = "inline", inline)]
31695        #[cfg_attr(feature = "inline_always", inline(always))]
31696        pub unsafe fn Uniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) {
31697            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31698            {
31699                trace!(
31700                    "calling gl.Uniform3uiv({:?}, {:?}, {:p});",
31701                    location,
31702                    count,
31703                    value
31704                );
31705            }
31706            let out = call_atomic_ptr_3arg(
31707                "glUniform3uiv",
31708                &self.glUniform3uiv_p,
31709                location,
31710                count,
31711                value,
31712            );
31713            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31714            {
31715                self.automatic_glGetError("glUniform3uiv");
31716            }
31717            out
31718        }
31719        #[doc(hidden)]
31720        pub unsafe fn Uniform3uiv_load_with_dyn(
31721            &self,
31722            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31723        ) -> bool {
31724            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3uiv\0", &self.glUniform3uiv_p)
31725        }
31726        #[inline]
31727        #[doc(hidden)]
31728        pub fn Uniform3uiv_is_loaded(&self) -> bool {
31729            !self.glUniform3uiv_p.load(RELAX).is_null()
31730        }
31731        /// [glUniform4d](http://docs.gl/gl4/glUniform4d)(location, x, y, z, w)
31732        #[cfg_attr(feature = "inline", inline)]
31733        #[cfg_attr(feature = "inline_always", inline(always))]
31734        pub unsafe fn Uniform4d(
31735            &self,
31736            location: GLint,
31737            x: GLdouble,
31738            y: GLdouble,
31739            z: GLdouble,
31740            w: GLdouble,
31741        ) {
31742            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31743            {
31744                trace!(
31745                    "calling gl.Uniform4d({:?}, {:?}, {:?}, {:?}, {:?});",
31746                    location,
31747                    x,
31748                    y,
31749                    z,
31750                    w
31751                );
31752            }
31753            let out =
31754                call_atomic_ptr_5arg("glUniform4d", &self.glUniform4d_p, location, x, y, z, w);
31755            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31756            {
31757                self.automatic_glGetError("glUniform4d");
31758            }
31759            out
31760        }
31761        #[doc(hidden)]
31762        pub unsafe fn Uniform4d_load_with_dyn(
31763            &self,
31764            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31765        ) -> bool {
31766            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4d\0", &self.glUniform4d_p)
31767        }
31768        #[inline]
31769        #[doc(hidden)]
31770        pub fn Uniform4d_is_loaded(&self) -> bool {
31771            !self.glUniform4d_p.load(RELAX).is_null()
31772        }
31773        /// [glUniform4dv](http://docs.gl/gl4/glUniform4dv)(location, count, value)
31774        /// * `value` len: count*4
31775        #[cfg_attr(feature = "inline", inline)]
31776        #[cfg_attr(feature = "inline_always", inline(always))]
31777        pub unsafe fn Uniform4dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) {
31778            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31779            {
31780                trace!(
31781                    "calling gl.Uniform4dv({:?}, {:?}, {:p});",
31782                    location,
31783                    count,
31784                    value
31785                );
31786            }
31787            let out =
31788                call_atomic_ptr_3arg("glUniform4dv", &self.glUniform4dv_p, location, count, value);
31789            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31790            {
31791                self.automatic_glGetError("glUniform4dv");
31792            }
31793            out
31794        }
31795        #[doc(hidden)]
31796        pub unsafe fn Uniform4dv_load_with_dyn(
31797            &self,
31798            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31799        ) -> bool {
31800            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4dv\0", &self.glUniform4dv_p)
31801        }
31802        #[inline]
31803        #[doc(hidden)]
31804        pub fn Uniform4dv_is_loaded(&self) -> bool {
31805            !self.glUniform4dv_p.load(RELAX).is_null()
31806        }
31807        /// [glUniform4f](http://docs.gl/gl4/glUniform)(location, v0, v1, v2, v3)
31808        #[cfg_attr(feature = "inline", inline)]
31809        #[cfg_attr(feature = "inline_always", inline(always))]
31810        pub unsafe fn Uniform4f(
31811            &self,
31812            location: GLint,
31813            v0: GLfloat,
31814            v1: GLfloat,
31815            v2: GLfloat,
31816            v3: GLfloat,
31817        ) {
31818            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31819            {
31820                trace!(
31821                    "calling gl.Uniform4f({:?}, {:?}, {:?}, {:?}, {:?});",
31822                    location,
31823                    v0,
31824                    v1,
31825                    v2,
31826                    v3
31827                );
31828            }
31829            let out =
31830                call_atomic_ptr_5arg("glUniform4f", &self.glUniform4f_p, location, v0, v1, v2, v3);
31831            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31832            {
31833                self.automatic_glGetError("glUniform4f");
31834            }
31835            out
31836        }
31837        #[doc(hidden)]
31838        pub unsafe fn Uniform4f_load_with_dyn(
31839            &self,
31840            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31841        ) -> bool {
31842            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4f\0", &self.glUniform4f_p)
31843        }
31844        #[inline]
31845        #[doc(hidden)]
31846        pub fn Uniform4f_is_loaded(&self) -> bool {
31847            !self.glUniform4f_p.load(RELAX).is_null()
31848        }
31849        /// [glUniform4fv](http://docs.gl/gl4/glUniform)(location, count, value)
31850        /// * `value` len: count*4
31851        #[cfg_attr(feature = "inline", inline)]
31852        #[cfg_attr(feature = "inline_always", inline(always))]
31853        pub unsafe fn Uniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) {
31854            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31855            {
31856                trace!(
31857                    "calling gl.Uniform4fv({:?}, {:?}, {:p});",
31858                    location,
31859                    count,
31860                    value
31861                );
31862            }
31863            let out =
31864                call_atomic_ptr_3arg("glUniform4fv", &self.glUniform4fv_p, location, count, value);
31865            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31866            {
31867                self.automatic_glGetError("glUniform4fv");
31868            }
31869            out
31870        }
31871        #[doc(hidden)]
31872        pub unsafe fn Uniform4fv_load_with_dyn(
31873            &self,
31874            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31875        ) -> bool {
31876            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4fv\0", &self.glUniform4fv_p)
31877        }
31878        #[inline]
31879        #[doc(hidden)]
31880        pub fn Uniform4fv_is_loaded(&self) -> bool {
31881            !self.glUniform4fv_p.load(RELAX).is_null()
31882        }
31883        /// [glUniform4i](http://docs.gl/gl4/glUniform)(location, v0, v1, v2, v3)
31884        #[cfg_attr(feature = "inline", inline)]
31885        #[cfg_attr(feature = "inline_always", inline(always))]
31886        pub unsafe fn Uniform4i(
31887            &self,
31888            location: GLint,
31889            v0: GLint,
31890            v1: GLint,
31891            v2: GLint,
31892            v3: GLint,
31893        ) {
31894            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31895            {
31896                trace!(
31897                    "calling gl.Uniform4i({:?}, {:?}, {:?}, {:?}, {:?});",
31898                    location,
31899                    v0,
31900                    v1,
31901                    v2,
31902                    v3
31903                );
31904            }
31905            let out =
31906                call_atomic_ptr_5arg("glUniform4i", &self.glUniform4i_p, location, v0, v1, v2, v3);
31907            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31908            {
31909                self.automatic_glGetError("glUniform4i");
31910            }
31911            out
31912        }
31913        #[doc(hidden)]
31914        pub unsafe fn Uniform4i_load_with_dyn(
31915            &self,
31916            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31917        ) -> bool {
31918            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4i\0", &self.glUniform4i_p)
31919        }
31920        #[inline]
31921        #[doc(hidden)]
31922        pub fn Uniform4i_is_loaded(&self) -> bool {
31923            !self.glUniform4i_p.load(RELAX).is_null()
31924        }
31925        /// [glUniform4iv](http://docs.gl/gl4/glUniform)(location, count, value)
31926        /// * `value` len: count*4
31927        #[cfg_attr(feature = "inline", inline)]
31928        #[cfg_attr(feature = "inline_always", inline(always))]
31929        pub unsafe fn Uniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) {
31930            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31931            {
31932                trace!(
31933                    "calling gl.Uniform4iv({:?}, {:?}, {:p});",
31934                    location,
31935                    count,
31936                    value
31937                );
31938            }
31939            let out =
31940                call_atomic_ptr_3arg("glUniform4iv", &self.glUniform4iv_p, location, count, value);
31941            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31942            {
31943                self.automatic_glGetError("glUniform4iv");
31944            }
31945            out
31946        }
31947        #[doc(hidden)]
31948        pub unsafe fn Uniform4iv_load_with_dyn(
31949            &self,
31950            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31951        ) -> bool {
31952            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4iv\0", &self.glUniform4iv_p)
31953        }
31954        #[inline]
31955        #[doc(hidden)]
31956        pub fn Uniform4iv_is_loaded(&self) -> bool {
31957            !self.glUniform4iv_p.load(RELAX).is_null()
31958        }
31959        /// [glUniform4ui](http://docs.gl/gl4/glUniform)(location, v0, v1, v2, v3)
31960        #[cfg_attr(feature = "inline", inline)]
31961        #[cfg_attr(feature = "inline_always", inline(always))]
31962        pub unsafe fn Uniform4ui(
31963            &self,
31964            location: GLint,
31965            v0: GLuint,
31966            v1: GLuint,
31967            v2: GLuint,
31968            v3: GLuint,
31969        ) {
31970            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31971            {
31972                trace!(
31973                    "calling gl.Uniform4ui({:?}, {:?}, {:?}, {:?}, {:?});",
31974                    location,
31975                    v0,
31976                    v1,
31977                    v2,
31978                    v3
31979                );
31980            }
31981            let out = call_atomic_ptr_5arg(
31982                "glUniform4ui",
31983                &self.glUniform4ui_p,
31984                location,
31985                v0,
31986                v1,
31987                v2,
31988                v3,
31989            );
31990            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31991            {
31992                self.automatic_glGetError("glUniform4ui");
31993            }
31994            out
31995        }
31996        #[doc(hidden)]
31997        pub unsafe fn Uniform4ui_load_with_dyn(
31998            &self,
31999            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32000        ) -> bool {
32001            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4ui\0", &self.glUniform4ui_p)
32002        }
32003        #[inline]
32004        #[doc(hidden)]
32005        pub fn Uniform4ui_is_loaded(&self) -> bool {
32006            !self.glUniform4ui_p.load(RELAX).is_null()
32007        }
32008        /// [glUniform4uiv](http://docs.gl/gl4/glUniform)(location, count, value)
32009        /// * `value` len: count*4
32010        #[cfg_attr(feature = "inline", inline)]
32011        #[cfg_attr(feature = "inline_always", inline(always))]
32012        pub unsafe fn Uniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) {
32013            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32014            {
32015                trace!(
32016                    "calling gl.Uniform4uiv({:?}, {:?}, {:p});",
32017                    location,
32018                    count,
32019                    value
32020                );
32021            }
32022            let out = call_atomic_ptr_3arg(
32023                "glUniform4uiv",
32024                &self.glUniform4uiv_p,
32025                location,
32026                count,
32027                value,
32028            );
32029            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32030            {
32031                self.automatic_glGetError("glUniform4uiv");
32032            }
32033            out
32034        }
32035        #[doc(hidden)]
32036        pub unsafe fn Uniform4uiv_load_with_dyn(
32037            &self,
32038            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32039        ) -> bool {
32040            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4uiv\0", &self.glUniform4uiv_p)
32041        }
32042        #[inline]
32043        #[doc(hidden)]
32044        pub fn Uniform4uiv_is_loaded(&self) -> bool {
32045            !self.glUniform4uiv_p.load(RELAX).is_null()
32046        }
32047        /// [glUniformBlockBinding](http://docs.gl/gl4/glUniformBlockBinding)(program, uniformBlockIndex, uniformBlockBinding)
32048        #[cfg_attr(feature = "inline", inline)]
32049        #[cfg_attr(feature = "inline_always", inline(always))]
32050        pub unsafe fn UniformBlockBinding(
32051            &self,
32052            program: GLuint,
32053            uniformBlockIndex: GLuint,
32054            uniformBlockBinding: GLuint,
32055        ) {
32056            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32057            {
32058                trace!(
32059                    "calling gl.UniformBlockBinding({:?}, {:?}, {:?});",
32060                    program,
32061                    uniformBlockIndex,
32062                    uniformBlockBinding
32063                );
32064            }
32065            let out = call_atomic_ptr_3arg(
32066                "glUniformBlockBinding",
32067                &self.glUniformBlockBinding_p,
32068                program,
32069                uniformBlockIndex,
32070                uniformBlockBinding,
32071            );
32072            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32073            {
32074                self.automatic_glGetError("glUniformBlockBinding");
32075            }
32076            out
32077        }
32078        #[doc(hidden)]
32079        pub unsafe fn UniformBlockBinding_load_with_dyn(
32080            &self,
32081            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32082        ) -> bool {
32083            load_dyn_name_atomic_ptr(
32084                get_proc_address,
32085                b"glUniformBlockBinding\0",
32086                &self.glUniformBlockBinding_p,
32087            )
32088        }
32089        #[inline]
32090        #[doc(hidden)]
32091        pub fn UniformBlockBinding_is_loaded(&self) -> bool {
32092            !self.glUniformBlockBinding_p.load(RELAX).is_null()
32093        }
32094        /// [glUniformMatrix2dv](http://docs.gl/gl4/glUniformMatrix2dv)(location, count, transpose, value)
32095        /// * `value` len: count*4
32096        #[cfg_attr(feature = "inline", inline)]
32097        #[cfg_attr(feature = "inline_always", inline(always))]
32098        pub unsafe fn UniformMatrix2dv(
32099            &self,
32100            location: GLint,
32101            count: GLsizei,
32102            transpose: GLboolean,
32103            value: *const GLdouble,
32104        ) {
32105            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32106            {
32107                trace!(
32108                    "calling gl.UniformMatrix2dv({:?}, {:?}, {:?}, {:p});",
32109                    location,
32110                    count,
32111                    transpose,
32112                    value
32113                );
32114            }
32115            let out = call_atomic_ptr_4arg(
32116                "glUniformMatrix2dv",
32117                &self.glUniformMatrix2dv_p,
32118                location,
32119                count,
32120                transpose,
32121                value,
32122            );
32123            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32124            {
32125                self.automatic_glGetError("glUniformMatrix2dv");
32126            }
32127            out
32128        }
32129        #[doc(hidden)]
32130        pub unsafe fn UniformMatrix2dv_load_with_dyn(
32131            &self,
32132            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32133        ) -> bool {
32134            load_dyn_name_atomic_ptr(
32135                get_proc_address,
32136                b"glUniformMatrix2dv\0",
32137                &self.glUniformMatrix2dv_p,
32138            )
32139        }
32140        #[inline]
32141        #[doc(hidden)]
32142        pub fn UniformMatrix2dv_is_loaded(&self) -> bool {
32143            !self.glUniformMatrix2dv_p.load(RELAX).is_null()
32144        }
32145        /// [glUniformMatrix2fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32146        /// * `value` len: count*4
32147        #[cfg_attr(feature = "inline", inline)]
32148        #[cfg_attr(feature = "inline_always", inline(always))]
32149        pub unsafe fn UniformMatrix2fv(
32150            &self,
32151            location: GLint,
32152            count: GLsizei,
32153            transpose: GLboolean,
32154            value: *const GLfloat,
32155        ) {
32156            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32157            {
32158                trace!(
32159                    "calling gl.UniformMatrix2fv({:?}, {:?}, {:?}, {:p});",
32160                    location,
32161                    count,
32162                    transpose,
32163                    value
32164                );
32165            }
32166            let out = call_atomic_ptr_4arg(
32167                "glUniformMatrix2fv",
32168                &self.glUniformMatrix2fv_p,
32169                location,
32170                count,
32171                transpose,
32172                value,
32173            );
32174            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32175            {
32176                self.automatic_glGetError("glUniformMatrix2fv");
32177            }
32178            out
32179        }
32180        #[doc(hidden)]
32181        pub unsafe fn UniformMatrix2fv_load_with_dyn(
32182            &self,
32183            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32184        ) -> bool {
32185            load_dyn_name_atomic_ptr(
32186                get_proc_address,
32187                b"glUniformMatrix2fv\0",
32188                &self.glUniformMatrix2fv_p,
32189            )
32190        }
32191        #[inline]
32192        #[doc(hidden)]
32193        pub fn UniformMatrix2fv_is_loaded(&self) -> bool {
32194            !self.glUniformMatrix2fv_p.load(RELAX).is_null()
32195        }
32196        /// [glUniformMatrix2x3dv](http://docs.gl/gl4/glUniformMatrix2x3dv)(location, count, transpose, value)
32197        /// * `value` len: count*6
32198        #[cfg_attr(feature = "inline", inline)]
32199        #[cfg_attr(feature = "inline_always", inline(always))]
32200        pub unsafe fn UniformMatrix2x3dv(
32201            &self,
32202            location: GLint,
32203            count: GLsizei,
32204            transpose: GLboolean,
32205            value: *const GLdouble,
32206        ) {
32207            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32208            {
32209                trace!(
32210                    "calling gl.UniformMatrix2x3dv({:?}, {:?}, {:?}, {:p});",
32211                    location,
32212                    count,
32213                    transpose,
32214                    value
32215                );
32216            }
32217            let out = call_atomic_ptr_4arg(
32218                "glUniformMatrix2x3dv",
32219                &self.glUniformMatrix2x3dv_p,
32220                location,
32221                count,
32222                transpose,
32223                value,
32224            );
32225            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32226            {
32227                self.automatic_glGetError("glUniformMatrix2x3dv");
32228            }
32229            out
32230        }
32231        #[doc(hidden)]
32232        pub unsafe fn UniformMatrix2x3dv_load_with_dyn(
32233            &self,
32234            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32235        ) -> bool {
32236            load_dyn_name_atomic_ptr(
32237                get_proc_address,
32238                b"glUniformMatrix2x3dv\0",
32239                &self.glUniformMatrix2x3dv_p,
32240            )
32241        }
32242        #[inline]
32243        #[doc(hidden)]
32244        pub fn UniformMatrix2x3dv_is_loaded(&self) -> bool {
32245            !self.glUniformMatrix2x3dv_p.load(RELAX).is_null()
32246        }
32247        /// [glUniformMatrix2x3fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32248        /// * `value` len: count*6
32249        #[cfg_attr(feature = "inline", inline)]
32250        #[cfg_attr(feature = "inline_always", inline(always))]
32251        pub unsafe fn UniformMatrix2x3fv(
32252            &self,
32253            location: GLint,
32254            count: GLsizei,
32255            transpose: GLboolean,
32256            value: *const GLfloat,
32257        ) {
32258            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32259            {
32260                trace!(
32261                    "calling gl.UniformMatrix2x3fv({:?}, {:?}, {:?}, {:p});",
32262                    location,
32263                    count,
32264                    transpose,
32265                    value
32266                );
32267            }
32268            let out = call_atomic_ptr_4arg(
32269                "glUniformMatrix2x3fv",
32270                &self.glUniformMatrix2x3fv_p,
32271                location,
32272                count,
32273                transpose,
32274                value,
32275            );
32276            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32277            {
32278                self.automatic_glGetError("glUniformMatrix2x3fv");
32279            }
32280            out
32281        }
32282        #[doc(hidden)]
32283        pub unsafe fn UniformMatrix2x3fv_load_with_dyn(
32284            &self,
32285            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32286        ) -> bool {
32287            load_dyn_name_atomic_ptr(
32288                get_proc_address,
32289                b"glUniformMatrix2x3fv\0",
32290                &self.glUniformMatrix2x3fv_p,
32291            )
32292        }
32293        #[inline]
32294        #[doc(hidden)]
32295        pub fn UniformMatrix2x3fv_is_loaded(&self) -> bool {
32296            !self.glUniformMatrix2x3fv_p.load(RELAX).is_null()
32297        }
32298        /// [glUniformMatrix2x4dv](http://docs.gl/gl4/glUniformMatrix2x4dv)(location, count, transpose, value)
32299        /// * `value` len: count*8
32300        #[cfg_attr(feature = "inline", inline)]
32301        #[cfg_attr(feature = "inline_always", inline(always))]
32302        pub unsafe fn UniformMatrix2x4dv(
32303            &self,
32304            location: GLint,
32305            count: GLsizei,
32306            transpose: GLboolean,
32307            value: *const GLdouble,
32308        ) {
32309            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32310            {
32311                trace!(
32312                    "calling gl.UniformMatrix2x4dv({:?}, {:?}, {:?}, {:p});",
32313                    location,
32314                    count,
32315                    transpose,
32316                    value
32317                );
32318            }
32319            let out = call_atomic_ptr_4arg(
32320                "glUniformMatrix2x4dv",
32321                &self.glUniformMatrix2x4dv_p,
32322                location,
32323                count,
32324                transpose,
32325                value,
32326            );
32327            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32328            {
32329                self.automatic_glGetError("glUniformMatrix2x4dv");
32330            }
32331            out
32332        }
32333        #[doc(hidden)]
32334        pub unsafe fn UniformMatrix2x4dv_load_with_dyn(
32335            &self,
32336            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32337        ) -> bool {
32338            load_dyn_name_atomic_ptr(
32339                get_proc_address,
32340                b"glUniformMatrix2x4dv\0",
32341                &self.glUniformMatrix2x4dv_p,
32342            )
32343        }
32344        #[inline]
32345        #[doc(hidden)]
32346        pub fn UniformMatrix2x4dv_is_loaded(&self) -> bool {
32347            !self.glUniformMatrix2x4dv_p.load(RELAX).is_null()
32348        }
32349        /// [glUniformMatrix2x4fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32350        /// * `value` len: count*8
32351        #[cfg_attr(feature = "inline", inline)]
32352        #[cfg_attr(feature = "inline_always", inline(always))]
32353        pub unsafe fn UniformMatrix2x4fv(
32354            &self,
32355            location: GLint,
32356            count: GLsizei,
32357            transpose: GLboolean,
32358            value: *const GLfloat,
32359        ) {
32360            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32361            {
32362                trace!(
32363                    "calling gl.UniformMatrix2x4fv({:?}, {:?}, {:?}, {:p});",
32364                    location,
32365                    count,
32366                    transpose,
32367                    value
32368                );
32369            }
32370            let out = call_atomic_ptr_4arg(
32371                "glUniformMatrix2x4fv",
32372                &self.glUniformMatrix2x4fv_p,
32373                location,
32374                count,
32375                transpose,
32376                value,
32377            );
32378            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32379            {
32380                self.automatic_glGetError("glUniformMatrix2x4fv");
32381            }
32382            out
32383        }
32384        #[doc(hidden)]
32385        pub unsafe fn UniformMatrix2x4fv_load_with_dyn(
32386            &self,
32387            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32388        ) -> bool {
32389            load_dyn_name_atomic_ptr(
32390                get_proc_address,
32391                b"glUniformMatrix2x4fv\0",
32392                &self.glUniformMatrix2x4fv_p,
32393            )
32394        }
32395        #[inline]
32396        #[doc(hidden)]
32397        pub fn UniformMatrix2x4fv_is_loaded(&self) -> bool {
32398            !self.glUniformMatrix2x4fv_p.load(RELAX).is_null()
32399        }
32400        /// [glUniformMatrix3dv](http://docs.gl/gl4/glUniformMatrix3dv)(location, count, transpose, value)
32401        /// * `value` len: count*9
32402        #[cfg_attr(feature = "inline", inline)]
32403        #[cfg_attr(feature = "inline_always", inline(always))]
32404        pub unsafe fn UniformMatrix3dv(
32405            &self,
32406            location: GLint,
32407            count: GLsizei,
32408            transpose: GLboolean,
32409            value: *const GLdouble,
32410        ) {
32411            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32412            {
32413                trace!(
32414                    "calling gl.UniformMatrix3dv({:?}, {:?}, {:?}, {:p});",
32415                    location,
32416                    count,
32417                    transpose,
32418                    value
32419                );
32420            }
32421            let out = call_atomic_ptr_4arg(
32422                "glUniformMatrix3dv",
32423                &self.glUniformMatrix3dv_p,
32424                location,
32425                count,
32426                transpose,
32427                value,
32428            );
32429            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32430            {
32431                self.automatic_glGetError("glUniformMatrix3dv");
32432            }
32433            out
32434        }
32435        #[doc(hidden)]
32436        pub unsafe fn UniformMatrix3dv_load_with_dyn(
32437            &self,
32438            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32439        ) -> bool {
32440            load_dyn_name_atomic_ptr(
32441                get_proc_address,
32442                b"glUniformMatrix3dv\0",
32443                &self.glUniformMatrix3dv_p,
32444            )
32445        }
32446        #[inline]
32447        #[doc(hidden)]
32448        pub fn UniformMatrix3dv_is_loaded(&self) -> bool {
32449            !self.glUniformMatrix3dv_p.load(RELAX).is_null()
32450        }
32451        /// [glUniformMatrix3fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32452        /// * `value` len: count*9
32453        #[cfg_attr(feature = "inline", inline)]
32454        #[cfg_attr(feature = "inline_always", inline(always))]
32455        pub unsafe fn UniformMatrix3fv(
32456            &self,
32457            location: GLint,
32458            count: GLsizei,
32459            transpose: GLboolean,
32460            value: *const GLfloat,
32461        ) {
32462            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32463            {
32464                trace!(
32465                    "calling gl.UniformMatrix3fv({:?}, {:?}, {:?}, {:p});",
32466                    location,
32467                    count,
32468                    transpose,
32469                    value
32470                );
32471            }
32472            let out = call_atomic_ptr_4arg(
32473                "glUniformMatrix3fv",
32474                &self.glUniformMatrix3fv_p,
32475                location,
32476                count,
32477                transpose,
32478                value,
32479            );
32480            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32481            {
32482                self.automatic_glGetError("glUniformMatrix3fv");
32483            }
32484            out
32485        }
32486        #[doc(hidden)]
32487        pub unsafe fn UniformMatrix3fv_load_with_dyn(
32488            &self,
32489            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32490        ) -> bool {
32491            load_dyn_name_atomic_ptr(
32492                get_proc_address,
32493                b"glUniformMatrix3fv\0",
32494                &self.glUniformMatrix3fv_p,
32495            )
32496        }
32497        #[inline]
32498        #[doc(hidden)]
32499        pub fn UniformMatrix3fv_is_loaded(&self) -> bool {
32500            !self.glUniformMatrix3fv_p.load(RELAX).is_null()
32501        }
32502        /// [glUniformMatrix3x2dv](http://docs.gl/gl4/glUniformMatrix3x2dv)(location, count, transpose, value)
32503        /// * `value` len: count*6
32504        #[cfg_attr(feature = "inline", inline)]
32505        #[cfg_attr(feature = "inline_always", inline(always))]
32506        pub unsafe fn UniformMatrix3x2dv(
32507            &self,
32508            location: GLint,
32509            count: GLsizei,
32510            transpose: GLboolean,
32511            value: *const GLdouble,
32512        ) {
32513            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32514            {
32515                trace!(
32516                    "calling gl.UniformMatrix3x2dv({:?}, {:?}, {:?}, {:p});",
32517                    location,
32518                    count,
32519                    transpose,
32520                    value
32521                );
32522            }
32523            let out = call_atomic_ptr_4arg(
32524                "glUniformMatrix3x2dv",
32525                &self.glUniformMatrix3x2dv_p,
32526                location,
32527                count,
32528                transpose,
32529                value,
32530            );
32531            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32532            {
32533                self.automatic_glGetError("glUniformMatrix3x2dv");
32534            }
32535            out
32536        }
32537        #[doc(hidden)]
32538        pub unsafe fn UniformMatrix3x2dv_load_with_dyn(
32539            &self,
32540            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32541        ) -> bool {
32542            load_dyn_name_atomic_ptr(
32543                get_proc_address,
32544                b"glUniformMatrix3x2dv\0",
32545                &self.glUniformMatrix3x2dv_p,
32546            )
32547        }
32548        #[inline]
32549        #[doc(hidden)]
32550        pub fn UniformMatrix3x2dv_is_loaded(&self) -> bool {
32551            !self.glUniformMatrix3x2dv_p.load(RELAX).is_null()
32552        }
32553        /// [glUniformMatrix3x2fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32554        /// * `value` len: count*6
32555        #[cfg_attr(feature = "inline", inline)]
32556        #[cfg_attr(feature = "inline_always", inline(always))]
32557        pub unsafe fn UniformMatrix3x2fv(
32558            &self,
32559            location: GLint,
32560            count: GLsizei,
32561            transpose: GLboolean,
32562            value: *const GLfloat,
32563        ) {
32564            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32565            {
32566                trace!(
32567                    "calling gl.UniformMatrix3x2fv({:?}, {:?}, {:?}, {:p});",
32568                    location,
32569                    count,
32570                    transpose,
32571                    value
32572                );
32573            }
32574            let out = call_atomic_ptr_4arg(
32575                "glUniformMatrix3x2fv",
32576                &self.glUniformMatrix3x2fv_p,
32577                location,
32578                count,
32579                transpose,
32580                value,
32581            );
32582            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32583            {
32584                self.automatic_glGetError("glUniformMatrix3x2fv");
32585            }
32586            out
32587        }
32588        #[doc(hidden)]
32589        pub unsafe fn UniformMatrix3x2fv_load_with_dyn(
32590            &self,
32591            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32592        ) -> bool {
32593            load_dyn_name_atomic_ptr(
32594                get_proc_address,
32595                b"glUniformMatrix3x2fv\0",
32596                &self.glUniformMatrix3x2fv_p,
32597            )
32598        }
32599        #[inline]
32600        #[doc(hidden)]
32601        pub fn UniformMatrix3x2fv_is_loaded(&self) -> bool {
32602            !self.glUniformMatrix3x2fv_p.load(RELAX).is_null()
32603        }
32604        /// [glUniformMatrix3x4dv](http://docs.gl/gl4/glUniformMatrix3x4dv)(location, count, transpose, value)
32605        /// * `value` len: count*12
32606        #[cfg_attr(feature = "inline", inline)]
32607        #[cfg_attr(feature = "inline_always", inline(always))]
32608        pub unsafe fn UniformMatrix3x4dv(
32609            &self,
32610            location: GLint,
32611            count: GLsizei,
32612            transpose: GLboolean,
32613            value: *const GLdouble,
32614        ) {
32615            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32616            {
32617                trace!(
32618                    "calling gl.UniformMatrix3x4dv({:?}, {:?}, {:?}, {:p});",
32619                    location,
32620                    count,
32621                    transpose,
32622                    value
32623                );
32624            }
32625            let out = call_atomic_ptr_4arg(
32626                "glUniformMatrix3x4dv",
32627                &self.glUniformMatrix3x4dv_p,
32628                location,
32629                count,
32630                transpose,
32631                value,
32632            );
32633            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32634            {
32635                self.automatic_glGetError("glUniformMatrix3x4dv");
32636            }
32637            out
32638        }
32639        #[doc(hidden)]
32640        pub unsafe fn UniformMatrix3x4dv_load_with_dyn(
32641            &self,
32642            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32643        ) -> bool {
32644            load_dyn_name_atomic_ptr(
32645                get_proc_address,
32646                b"glUniformMatrix3x4dv\0",
32647                &self.glUniformMatrix3x4dv_p,
32648            )
32649        }
32650        #[inline]
32651        #[doc(hidden)]
32652        pub fn UniformMatrix3x4dv_is_loaded(&self) -> bool {
32653            !self.glUniformMatrix3x4dv_p.load(RELAX).is_null()
32654        }
32655        /// [glUniformMatrix3x4fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32656        /// * `value` len: count*12
32657        #[cfg_attr(feature = "inline", inline)]
32658        #[cfg_attr(feature = "inline_always", inline(always))]
32659        pub unsafe fn UniformMatrix3x4fv(
32660            &self,
32661            location: GLint,
32662            count: GLsizei,
32663            transpose: GLboolean,
32664            value: *const GLfloat,
32665        ) {
32666            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32667            {
32668                trace!(
32669                    "calling gl.UniformMatrix3x4fv({:?}, {:?}, {:?}, {:p});",
32670                    location,
32671                    count,
32672                    transpose,
32673                    value
32674                );
32675            }
32676            let out = call_atomic_ptr_4arg(
32677                "glUniformMatrix3x4fv",
32678                &self.glUniformMatrix3x4fv_p,
32679                location,
32680                count,
32681                transpose,
32682                value,
32683            );
32684            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32685            {
32686                self.automatic_glGetError("glUniformMatrix3x4fv");
32687            }
32688            out
32689        }
32690        #[doc(hidden)]
32691        pub unsafe fn UniformMatrix3x4fv_load_with_dyn(
32692            &self,
32693            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32694        ) -> bool {
32695            load_dyn_name_atomic_ptr(
32696                get_proc_address,
32697                b"glUniformMatrix3x4fv\0",
32698                &self.glUniformMatrix3x4fv_p,
32699            )
32700        }
32701        #[inline]
32702        #[doc(hidden)]
32703        pub fn UniformMatrix3x4fv_is_loaded(&self) -> bool {
32704            !self.glUniformMatrix3x4fv_p.load(RELAX).is_null()
32705        }
32706        /// [glUniformMatrix4dv](http://docs.gl/gl4/glUniformMatrix4dv)(location, count, transpose, value)
32707        /// * `value` len: count*16
32708        #[cfg_attr(feature = "inline", inline)]
32709        #[cfg_attr(feature = "inline_always", inline(always))]
32710        pub unsafe fn UniformMatrix4dv(
32711            &self,
32712            location: GLint,
32713            count: GLsizei,
32714            transpose: GLboolean,
32715            value: *const GLdouble,
32716        ) {
32717            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32718            {
32719                trace!(
32720                    "calling gl.UniformMatrix4dv({:?}, {:?}, {:?}, {:p});",
32721                    location,
32722                    count,
32723                    transpose,
32724                    value
32725                );
32726            }
32727            let out = call_atomic_ptr_4arg(
32728                "glUniformMatrix4dv",
32729                &self.glUniformMatrix4dv_p,
32730                location,
32731                count,
32732                transpose,
32733                value,
32734            );
32735            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32736            {
32737                self.automatic_glGetError("glUniformMatrix4dv");
32738            }
32739            out
32740        }
32741        #[doc(hidden)]
32742        pub unsafe fn UniformMatrix4dv_load_with_dyn(
32743            &self,
32744            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32745        ) -> bool {
32746            load_dyn_name_atomic_ptr(
32747                get_proc_address,
32748                b"glUniformMatrix4dv\0",
32749                &self.glUniformMatrix4dv_p,
32750            )
32751        }
32752        #[inline]
32753        #[doc(hidden)]
32754        pub fn UniformMatrix4dv_is_loaded(&self) -> bool {
32755            !self.glUniformMatrix4dv_p.load(RELAX).is_null()
32756        }
32757        /// [glUniformMatrix4fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32758        /// * `value` len: count*16
32759        #[cfg_attr(feature = "inline", inline)]
32760        #[cfg_attr(feature = "inline_always", inline(always))]
32761        pub unsafe fn UniformMatrix4fv(
32762            &self,
32763            location: GLint,
32764            count: GLsizei,
32765            transpose: GLboolean,
32766            value: *const GLfloat,
32767        ) {
32768            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32769            {
32770                trace!(
32771                    "calling gl.UniformMatrix4fv({:?}, {:?}, {:?}, {:p});",
32772                    location,
32773                    count,
32774                    transpose,
32775                    value
32776                );
32777            }
32778            let out = call_atomic_ptr_4arg(
32779                "glUniformMatrix4fv",
32780                &self.glUniformMatrix4fv_p,
32781                location,
32782                count,
32783                transpose,
32784                value,
32785            );
32786            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32787            {
32788                self.automatic_glGetError("glUniformMatrix4fv");
32789            }
32790            out
32791        }
32792        #[doc(hidden)]
32793        pub unsafe fn UniformMatrix4fv_load_with_dyn(
32794            &self,
32795            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32796        ) -> bool {
32797            load_dyn_name_atomic_ptr(
32798                get_proc_address,
32799                b"glUniformMatrix4fv\0",
32800                &self.glUniformMatrix4fv_p,
32801            )
32802        }
32803        #[inline]
32804        #[doc(hidden)]
32805        pub fn UniformMatrix4fv_is_loaded(&self) -> bool {
32806            !self.glUniformMatrix4fv_p.load(RELAX).is_null()
32807        }
32808        /// [glUniformMatrix4x2dv](http://docs.gl/gl4/glUniformMatrix4x2dv)(location, count, transpose, value)
32809        /// * `value` len: count*8
32810        #[cfg_attr(feature = "inline", inline)]
32811        #[cfg_attr(feature = "inline_always", inline(always))]
32812        pub unsafe fn UniformMatrix4x2dv(
32813            &self,
32814            location: GLint,
32815            count: GLsizei,
32816            transpose: GLboolean,
32817            value: *const GLdouble,
32818        ) {
32819            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32820            {
32821                trace!(
32822                    "calling gl.UniformMatrix4x2dv({:?}, {:?}, {:?}, {:p});",
32823                    location,
32824                    count,
32825                    transpose,
32826                    value
32827                );
32828            }
32829            let out = call_atomic_ptr_4arg(
32830                "glUniformMatrix4x2dv",
32831                &self.glUniformMatrix4x2dv_p,
32832                location,
32833                count,
32834                transpose,
32835                value,
32836            );
32837            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32838            {
32839                self.automatic_glGetError("glUniformMatrix4x2dv");
32840            }
32841            out
32842        }
32843        #[doc(hidden)]
32844        pub unsafe fn UniformMatrix4x2dv_load_with_dyn(
32845            &self,
32846            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32847        ) -> bool {
32848            load_dyn_name_atomic_ptr(
32849                get_proc_address,
32850                b"glUniformMatrix4x2dv\0",
32851                &self.glUniformMatrix4x2dv_p,
32852            )
32853        }
32854        #[inline]
32855        #[doc(hidden)]
32856        pub fn UniformMatrix4x2dv_is_loaded(&self) -> bool {
32857            !self.glUniformMatrix4x2dv_p.load(RELAX).is_null()
32858        }
32859        /// [glUniformMatrix4x2fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32860        /// * `value` len: count*8
32861        #[cfg_attr(feature = "inline", inline)]
32862        #[cfg_attr(feature = "inline_always", inline(always))]
32863        pub unsafe fn UniformMatrix4x2fv(
32864            &self,
32865            location: GLint,
32866            count: GLsizei,
32867            transpose: GLboolean,
32868            value: *const GLfloat,
32869        ) {
32870            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32871            {
32872                trace!(
32873                    "calling gl.UniformMatrix4x2fv({:?}, {:?}, {:?}, {:p});",
32874                    location,
32875                    count,
32876                    transpose,
32877                    value
32878                );
32879            }
32880            let out = call_atomic_ptr_4arg(
32881                "glUniformMatrix4x2fv",
32882                &self.glUniformMatrix4x2fv_p,
32883                location,
32884                count,
32885                transpose,
32886                value,
32887            );
32888            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32889            {
32890                self.automatic_glGetError("glUniformMatrix4x2fv");
32891            }
32892            out
32893        }
32894        #[doc(hidden)]
32895        pub unsafe fn UniformMatrix4x2fv_load_with_dyn(
32896            &self,
32897            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32898        ) -> bool {
32899            load_dyn_name_atomic_ptr(
32900                get_proc_address,
32901                b"glUniformMatrix4x2fv\0",
32902                &self.glUniformMatrix4x2fv_p,
32903            )
32904        }
32905        #[inline]
32906        #[doc(hidden)]
32907        pub fn UniformMatrix4x2fv_is_loaded(&self) -> bool {
32908            !self.glUniformMatrix4x2fv_p.load(RELAX).is_null()
32909        }
32910        /// [glUniformMatrix4x3dv](http://docs.gl/gl4/glUniformMatrix4x3dv)(location, count, transpose, value)
32911        /// * `value` len: count*12
32912        #[cfg_attr(feature = "inline", inline)]
32913        #[cfg_attr(feature = "inline_always", inline(always))]
32914        pub unsafe fn UniformMatrix4x3dv(
32915            &self,
32916            location: GLint,
32917            count: GLsizei,
32918            transpose: GLboolean,
32919            value: *const GLdouble,
32920        ) {
32921            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32922            {
32923                trace!(
32924                    "calling gl.UniformMatrix4x3dv({:?}, {:?}, {:?}, {:p});",
32925                    location,
32926                    count,
32927                    transpose,
32928                    value
32929                );
32930            }
32931            let out = call_atomic_ptr_4arg(
32932                "glUniformMatrix4x3dv",
32933                &self.glUniformMatrix4x3dv_p,
32934                location,
32935                count,
32936                transpose,
32937                value,
32938            );
32939            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32940            {
32941                self.automatic_glGetError("glUniformMatrix4x3dv");
32942            }
32943            out
32944        }
32945        #[doc(hidden)]
32946        pub unsafe fn UniformMatrix4x3dv_load_with_dyn(
32947            &self,
32948            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32949        ) -> bool {
32950            load_dyn_name_atomic_ptr(
32951                get_proc_address,
32952                b"glUniformMatrix4x3dv\0",
32953                &self.glUniformMatrix4x3dv_p,
32954            )
32955        }
32956        #[inline]
32957        #[doc(hidden)]
32958        pub fn UniformMatrix4x3dv_is_loaded(&self) -> bool {
32959            !self.glUniformMatrix4x3dv_p.load(RELAX).is_null()
32960        }
32961        /// [glUniformMatrix4x3fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32962        /// * `value` len: count*12
32963        #[cfg_attr(feature = "inline", inline)]
32964        #[cfg_attr(feature = "inline_always", inline(always))]
32965        pub unsafe fn UniformMatrix4x3fv(
32966            &self,
32967            location: GLint,
32968            count: GLsizei,
32969            transpose: GLboolean,
32970            value: *const GLfloat,
32971        ) {
32972            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32973            {
32974                trace!(
32975                    "calling gl.UniformMatrix4x3fv({:?}, {:?}, {:?}, {:p});",
32976                    location,
32977                    count,
32978                    transpose,
32979                    value
32980                );
32981            }
32982            let out = call_atomic_ptr_4arg(
32983                "glUniformMatrix4x3fv",
32984                &self.glUniformMatrix4x3fv_p,
32985                location,
32986                count,
32987                transpose,
32988                value,
32989            );
32990            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32991            {
32992                self.automatic_glGetError("glUniformMatrix4x3fv");
32993            }
32994            out
32995        }
32996        #[doc(hidden)]
32997        pub unsafe fn UniformMatrix4x3fv_load_with_dyn(
32998            &self,
32999            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33000        ) -> bool {
33001            load_dyn_name_atomic_ptr(
33002                get_proc_address,
33003                b"glUniformMatrix4x3fv\0",
33004                &self.glUniformMatrix4x3fv_p,
33005            )
33006        }
33007        #[inline]
33008        #[doc(hidden)]
33009        pub fn UniformMatrix4x3fv_is_loaded(&self) -> bool {
33010            !self.glUniformMatrix4x3fv_p.load(RELAX).is_null()
33011        }
33012        /// [glUniformSubroutinesuiv](http://docs.gl/gl4/glUniformSubroutines)(shadertype, count, indices)
33013        /// * `shadertype` group: ShaderType
33014        /// * `indices` len: count
33015        #[cfg_attr(feature = "inline", inline)]
33016        #[cfg_attr(feature = "inline_always", inline(always))]
33017        pub unsafe fn UniformSubroutinesuiv(
33018            &self,
33019            shadertype: GLenum,
33020            count: GLsizei,
33021            indices: *const GLuint,
33022        ) {
33023            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33024            {
33025                trace!(
33026                    "calling gl.UniformSubroutinesuiv({:#X}, {:?}, {:p});",
33027                    shadertype,
33028                    count,
33029                    indices
33030                );
33031            }
33032            let out = call_atomic_ptr_3arg(
33033                "glUniformSubroutinesuiv",
33034                &self.glUniformSubroutinesuiv_p,
33035                shadertype,
33036                count,
33037                indices,
33038            );
33039            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33040            {
33041                self.automatic_glGetError("glUniformSubroutinesuiv");
33042            }
33043            out
33044        }
33045        #[doc(hidden)]
33046        pub unsafe fn UniformSubroutinesuiv_load_with_dyn(
33047            &self,
33048            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33049        ) -> bool {
33050            load_dyn_name_atomic_ptr(
33051                get_proc_address,
33052                b"glUniformSubroutinesuiv\0",
33053                &self.glUniformSubroutinesuiv_p,
33054            )
33055        }
33056        #[inline]
33057        #[doc(hidden)]
33058        pub fn UniformSubroutinesuiv_is_loaded(&self) -> bool {
33059            !self.glUniformSubroutinesuiv_p.load(RELAX).is_null()
33060        }
33061        /// [glUnmapBuffer](http://docs.gl/gl4/glUnmapBuffer)(target)
33062        /// * `target` group: BufferTargetARB
33063        #[cfg_attr(feature = "inline", inline)]
33064        #[cfg_attr(feature = "inline_always", inline(always))]
33065        pub unsafe fn UnmapBuffer(&self, target: GLenum) -> GLboolean {
33066            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33067            {
33068                trace!("calling gl.UnmapBuffer({:#X});", target);
33069            }
33070            let out = call_atomic_ptr_1arg("glUnmapBuffer", &self.glUnmapBuffer_p, target);
33071            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33072            {
33073                self.automatic_glGetError("glUnmapBuffer");
33074            }
33075            out
33076        }
33077        #[doc(hidden)]
33078        pub unsafe fn UnmapBuffer_load_with_dyn(
33079            &self,
33080            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33081        ) -> bool {
33082            load_dyn_name_atomic_ptr(get_proc_address, b"glUnmapBuffer\0", &self.glUnmapBuffer_p)
33083        }
33084        #[inline]
33085        #[doc(hidden)]
33086        pub fn UnmapBuffer_is_loaded(&self) -> bool {
33087            !self.glUnmapBuffer_p.load(RELAX).is_null()
33088        }
33089        /// [glUnmapNamedBuffer](http://docs.gl/gl4/glUnmapNamedBuffer)(buffer)
33090        #[cfg_attr(feature = "inline", inline)]
33091        #[cfg_attr(feature = "inline_always", inline(always))]
33092        pub unsafe fn UnmapNamedBuffer(&self, buffer: GLuint) -> GLboolean {
33093            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33094            {
33095                trace!("calling gl.UnmapNamedBuffer({:?});", buffer);
33096            }
33097            let out =
33098                call_atomic_ptr_1arg("glUnmapNamedBuffer", &self.glUnmapNamedBuffer_p, buffer);
33099            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33100            {
33101                self.automatic_glGetError("glUnmapNamedBuffer");
33102            }
33103            out
33104        }
33105        #[doc(hidden)]
33106        pub unsafe fn UnmapNamedBuffer_load_with_dyn(
33107            &self,
33108            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33109        ) -> bool {
33110            load_dyn_name_atomic_ptr(
33111                get_proc_address,
33112                b"glUnmapNamedBuffer\0",
33113                &self.glUnmapNamedBuffer_p,
33114            )
33115        }
33116        #[inline]
33117        #[doc(hidden)]
33118        pub fn UnmapNamedBuffer_is_loaded(&self) -> bool {
33119            !self.glUnmapNamedBuffer_p.load(RELAX).is_null()
33120        }
33121        /// [glUseProgram](http://docs.gl/gl4/glUseProgram)(program)
33122        #[cfg_attr(feature = "inline", inline)]
33123        #[cfg_attr(feature = "inline_always", inline(always))]
33124        pub unsafe fn UseProgram(&self, program: GLuint) {
33125            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33126            {
33127                trace!("calling gl.UseProgram({:?});", program);
33128            }
33129            let out = call_atomic_ptr_1arg("glUseProgram", &self.glUseProgram_p, program);
33130            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33131            {
33132                self.automatic_glGetError("glUseProgram");
33133            }
33134            out
33135        }
33136        #[doc(hidden)]
33137        pub unsafe fn UseProgram_load_with_dyn(
33138            &self,
33139            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33140        ) -> bool {
33141            load_dyn_name_atomic_ptr(get_proc_address, b"glUseProgram\0", &self.glUseProgram_p)
33142        }
33143        #[inline]
33144        #[doc(hidden)]
33145        pub fn UseProgram_is_loaded(&self) -> bool {
33146            !self.glUseProgram_p.load(RELAX).is_null()
33147        }
33148        /// [glUseProgramStages](http://docs.gl/gl4/glUseProgramStages)(pipeline, stages, program)
33149        /// * `stages` group: UseProgramStageMask
33150        #[cfg_attr(feature = "inline", inline)]
33151        #[cfg_attr(feature = "inline_always", inline(always))]
33152        pub unsafe fn UseProgramStages(
33153            &self,
33154            pipeline: GLuint,
33155            stages: GLbitfield,
33156            program: GLuint,
33157        ) {
33158            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33159            {
33160                trace!(
33161                    "calling gl.UseProgramStages({:?}, {:?}, {:?});",
33162                    pipeline,
33163                    stages,
33164                    program
33165                );
33166            }
33167            let out = call_atomic_ptr_3arg(
33168                "glUseProgramStages",
33169                &self.glUseProgramStages_p,
33170                pipeline,
33171                stages,
33172                program,
33173            );
33174            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33175            {
33176                self.automatic_glGetError("glUseProgramStages");
33177            }
33178            out
33179        }
33180        #[doc(hidden)]
33181        pub unsafe fn UseProgramStages_load_with_dyn(
33182            &self,
33183            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33184        ) -> bool {
33185            load_dyn_name_atomic_ptr(
33186                get_proc_address,
33187                b"glUseProgramStages\0",
33188                &self.glUseProgramStages_p,
33189            )
33190        }
33191        #[inline]
33192        #[doc(hidden)]
33193        pub fn UseProgramStages_is_loaded(&self) -> bool {
33194            !self.glUseProgramStages_p.load(RELAX).is_null()
33195        }
33196        /// [glValidateProgram](http://docs.gl/gl4/glValidateProgram)(program)
33197        #[cfg_attr(feature = "inline", inline)]
33198        #[cfg_attr(feature = "inline_always", inline(always))]
33199        pub unsafe fn ValidateProgram(&self, program: GLuint) {
33200            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33201            {
33202                trace!("calling gl.ValidateProgram({:?});", program);
33203            }
33204            let out = call_atomic_ptr_1arg("glValidateProgram", &self.glValidateProgram_p, program);
33205            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33206            {
33207                self.automatic_glGetError("glValidateProgram");
33208            }
33209            out
33210        }
33211        #[doc(hidden)]
33212        pub unsafe fn ValidateProgram_load_with_dyn(
33213            &self,
33214            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33215        ) -> bool {
33216            load_dyn_name_atomic_ptr(
33217                get_proc_address,
33218                b"glValidateProgram\0",
33219                &self.glValidateProgram_p,
33220            )
33221        }
33222        #[inline]
33223        #[doc(hidden)]
33224        pub fn ValidateProgram_is_loaded(&self) -> bool {
33225            !self.glValidateProgram_p.load(RELAX).is_null()
33226        }
33227        /// [glValidateProgramPipeline](http://docs.gl/gl4/glValidateProgramPipeline)(pipeline)
33228        #[cfg_attr(feature = "inline", inline)]
33229        #[cfg_attr(feature = "inline_always", inline(always))]
33230        pub unsafe fn ValidateProgramPipeline(&self, pipeline: GLuint) {
33231            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33232            {
33233                trace!("calling gl.ValidateProgramPipeline({:?});", pipeline);
33234            }
33235            let out = call_atomic_ptr_1arg(
33236                "glValidateProgramPipeline",
33237                &self.glValidateProgramPipeline_p,
33238                pipeline,
33239            );
33240            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33241            {
33242                self.automatic_glGetError("glValidateProgramPipeline");
33243            }
33244            out
33245        }
33246        #[doc(hidden)]
33247        pub unsafe fn ValidateProgramPipeline_load_with_dyn(
33248            &self,
33249            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33250        ) -> bool {
33251            load_dyn_name_atomic_ptr(
33252                get_proc_address,
33253                b"glValidateProgramPipeline\0",
33254                &self.glValidateProgramPipeline_p,
33255            )
33256        }
33257        #[inline]
33258        #[doc(hidden)]
33259        pub fn ValidateProgramPipeline_is_loaded(&self) -> bool {
33260            !self.glValidateProgramPipeline_p.load(RELAX).is_null()
33261        }
33262        /// [glVertexArrayAttribBinding](http://docs.gl/gl4/glVertexArrayAttribBinding)(vaobj, attribindex, bindingindex)
33263        #[cfg_attr(feature = "inline", inline)]
33264        #[cfg_attr(feature = "inline_always", inline(always))]
33265        pub unsafe fn VertexArrayAttribBinding(
33266            &self,
33267            vaobj: GLuint,
33268            attribindex: GLuint,
33269            bindingindex: GLuint,
33270        ) {
33271            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33272            {
33273                trace!(
33274                    "calling gl.VertexArrayAttribBinding({:?}, {:?}, {:?});",
33275                    vaobj,
33276                    attribindex,
33277                    bindingindex
33278                );
33279            }
33280            let out = call_atomic_ptr_3arg(
33281                "glVertexArrayAttribBinding",
33282                &self.glVertexArrayAttribBinding_p,
33283                vaobj,
33284                attribindex,
33285                bindingindex,
33286            );
33287            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33288            {
33289                self.automatic_glGetError("glVertexArrayAttribBinding");
33290            }
33291            out
33292        }
33293        #[doc(hidden)]
33294        pub unsafe fn VertexArrayAttribBinding_load_with_dyn(
33295            &self,
33296            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33297        ) -> bool {
33298            load_dyn_name_atomic_ptr(
33299                get_proc_address,
33300                b"glVertexArrayAttribBinding\0",
33301                &self.glVertexArrayAttribBinding_p,
33302            )
33303        }
33304        #[inline]
33305        #[doc(hidden)]
33306        pub fn VertexArrayAttribBinding_is_loaded(&self) -> bool {
33307            !self.glVertexArrayAttribBinding_p.load(RELAX).is_null()
33308        }
33309        /// [glVertexArrayAttribFormat](http://docs.gl/gl4/glVertexArrayAttribFormat)(vaobj, attribindex, size, type_, normalized, relativeoffset)
33310        /// * `type_` group: VertexAttribType
33311        #[cfg_attr(feature = "inline", inline)]
33312        #[cfg_attr(feature = "inline_always", inline(always))]
33313        pub unsafe fn VertexArrayAttribFormat(
33314            &self,
33315            vaobj: GLuint,
33316            attribindex: GLuint,
33317            size: GLint,
33318            type_: GLenum,
33319            normalized: GLboolean,
33320            relativeoffset: GLuint,
33321        ) {
33322            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33323            {
33324                trace!(
33325                    "calling gl.VertexArrayAttribFormat({:?}, {:?}, {:?}, {:#X}, {:?}, {:?});",
33326                    vaobj,
33327                    attribindex,
33328                    size,
33329                    type_,
33330                    normalized,
33331                    relativeoffset
33332                );
33333            }
33334            let out = call_atomic_ptr_6arg(
33335                "glVertexArrayAttribFormat",
33336                &self.glVertexArrayAttribFormat_p,
33337                vaobj,
33338                attribindex,
33339                size,
33340                type_,
33341                normalized,
33342                relativeoffset,
33343            );
33344            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33345            {
33346                self.automatic_glGetError("glVertexArrayAttribFormat");
33347            }
33348            out
33349        }
33350        #[doc(hidden)]
33351        pub unsafe fn VertexArrayAttribFormat_load_with_dyn(
33352            &self,
33353            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33354        ) -> bool {
33355            load_dyn_name_atomic_ptr(
33356                get_proc_address,
33357                b"glVertexArrayAttribFormat\0",
33358                &self.glVertexArrayAttribFormat_p,
33359            )
33360        }
33361        #[inline]
33362        #[doc(hidden)]
33363        pub fn VertexArrayAttribFormat_is_loaded(&self) -> bool {
33364            !self.glVertexArrayAttribFormat_p.load(RELAX).is_null()
33365        }
33366        /// [glVertexArrayAttribIFormat](http://docs.gl/gl4/glVertexArrayAttribIFormat)(vaobj, attribindex, size, type_, relativeoffset)
33367        /// * `type_` group: VertexAttribIType
33368        #[cfg_attr(feature = "inline", inline)]
33369        #[cfg_attr(feature = "inline_always", inline(always))]
33370        pub unsafe fn VertexArrayAttribIFormat(
33371            &self,
33372            vaobj: GLuint,
33373            attribindex: GLuint,
33374            size: GLint,
33375            type_: GLenum,
33376            relativeoffset: GLuint,
33377        ) {
33378            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33379            {
33380                trace!(
33381                    "calling gl.VertexArrayAttribIFormat({:?}, {:?}, {:?}, {:#X}, {:?});",
33382                    vaobj,
33383                    attribindex,
33384                    size,
33385                    type_,
33386                    relativeoffset
33387                );
33388            }
33389            let out = call_atomic_ptr_5arg(
33390                "glVertexArrayAttribIFormat",
33391                &self.glVertexArrayAttribIFormat_p,
33392                vaobj,
33393                attribindex,
33394                size,
33395                type_,
33396                relativeoffset,
33397            );
33398            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33399            {
33400                self.automatic_glGetError("glVertexArrayAttribIFormat");
33401            }
33402            out
33403        }
33404        #[doc(hidden)]
33405        pub unsafe fn VertexArrayAttribIFormat_load_with_dyn(
33406            &self,
33407            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33408        ) -> bool {
33409            load_dyn_name_atomic_ptr(
33410                get_proc_address,
33411                b"glVertexArrayAttribIFormat\0",
33412                &self.glVertexArrayAttribIFormat_p,
33413            )
33414        }
33415        #[inline]
33416        #[doc(hidden)]
33417        pub fn VertexArrayAttribIFormat_is_loaded(&self) -> bool {
33418            !self.glVertexArrayAttribIFormat_p.load(RELAX).is_null()
33419        }
33420        /// [glVertexArrayAttribLFormat](http://docs.gl/gl4/glVertexArrayAttribLFormat)(vaobj, attribindex, size, type_, relativeoffset)
33421        /// * `type_` group: VertexAttribLType
33422        #[cfg_attr(feature = "inline", inline)]
33423        #[cfg_attr(feature = "inline_always", inline(always))]
33424        pub unsafe fn VertexArrayAttribLFormat(
33425            &self,
33426            vaobj: GLuint,
33427            attribindex: GLuint,
33428            size: GLint,
33429            type_: GLenum,
33430            relativeoffset: GLuint,
33431        ) {
33432            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33433            {
33434                trace!(
33435                    "calling gl.VertexArrayAttribLFormat({:?}, {:?}, {:?}, {:#X}, {:?});",
33436                    vaobj,
33437                    attribindex,
33438                    size,
33439                    type_,
33440                    relativeoffset
33441                );
33442            }
33443            let out = call_atomic_ptr_5arg(
33444                "glVertexArrayAttribLFormat",
33445                &self.glVertexArrayAttribLFormat_p,
33446                vaobj,
33447                attribindex,
33448                size,
33449                type_,
33450                relativeoffset,
33451            );
33452            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33453            {
33454                self.automatic_glGetError("glVertexArrayAttribLFormat");
33455            }
33456            out
33457        }
33458        #[doc(hidden)]
33459        pub unsafe fn VertexArrayAttribLFormat_load_with_dyn(
33460            &self,
33461            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33462        ) -> bool {
33463            load_dyn_name_atomic_ptr(
33464                get_proc_address,
33465                b"glVertexArrayAttribLFormat\0",
33466                &self.glVertexArrayAttribLFormat_p,
33467            )
33468        }
33469        #[inline]
33470        #[doc(hidden)]
33471        pub fn VertexArrayAttribLFormat_is_loaded(&self) -> bool {
33472            !self.glVertexArrayAttribLFormat_p.load(RELAX).is_null()
33473        }
33474        /// [glVertexArrayBindingDivisor](http://docs.gl/gl4/glVertexArrayBindingDivisor)(vaobj, bindingindex, divisor)
33475        #[cfg_attr(feature = "inline", inline)]
33476        #[cfg_attr(feature = "inline_always", inline(always))]
33477        pub unsafe fn VertexArrayBindingDivisor(
33478            &self,
33479            vaobj: GLuint,
33480            bindingindex: GLuint,
33481            divisor: GLuint,
33482        ) {
33483            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33484            {
33485                trace!(
33486                    "calling gl.VertexArrayBindingDivisor({:?}, {:?}, {:?});",
33487                    vaobj,
33488                    bindingindex,
33489                    divisor
33490                );
33491            }
33492            let out = call_atomic_ptr_3arg(
33493                "glVertexArrayBindingDivisor",
33494                &self.glVertexArrayBindingDivisor_p,
33495                vaobj,
33496                bindingindex,
33497                divisor,
33498            );
33499            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33500            {
33501                self.automatic_glGetError("glVertexArrayBindingDivisor");
33502            }
33503            out
33504        }
33505        #[doc(hidden)]
33506        pub unsafe fn VertexArrayBindingDivisor_load_with_dyn(
33507            &self,
33508            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33509        ) -> bool {
33510            load_dyn_name_atomic_ptr(
33511                get_proc_address,
33512                b"glVertexArrayBindingDivisor\0",
33513                &self.glVertexArrayBindingDivisor_p,
33514            )
33515        }
33516        #[inline]
33517        #[doc(hidden)]
33518        pub fn VertexArrayBindingDivisor_is_loaded(&self) -> bool {
33519            !self.glVertexArrayBindingDivisor_p.load(RELAX).is_null()
33520        }
33521        /// [glVertexArrayElementBuffer](http://docs.gl/gl4/glVertexArrayElementBuffer)(vaobj, buffer)
33522        #[cfg_attr(feature = "inline", inline)]
33523        #[cfg_attr(feature = "inline_always", inline(always))]
33524        pub unsafe fn VertexArrayElementBuffer(&self, vaobj: GLuint, buffer: GLuint) {
33525            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33526            {
33527                trace!(
33528                    "calling gl.VertexArrayElementBuffer({:?}, {:?});",
33529                    vaobj,
33530                    buffer
33531                );
33532            }
33533            let out = call_atomic_ptr_2arg(
33534                "glVertexArrayElementBuffer",
33535                &self.glVertexArrayElementBuffer_p,
33536                vaobj,
33537                buffer,
33538            );
33539            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33540            {
33541                self.automatic_glGetError("glVertexArrayElementBuffer");
33542            }
33543            out
33544        }
33545        #[doc(hidden)]
33546        pub unsafe fn VertexArrayElementBuffer_load_with_dyn(
33547            &self,
33548            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33549        ) -> bool {
33550            load_dyn_name_atomic_ptr(
33551                get_proc_address,
33552                b"glVertexArrayElementBuffer\0",
33553                &self.glVertexArrayElementBuffer_p,
33554            )
33555        }
33556        #[inline]
33557        #[doc(hidden)]
33558        pub fn VertexArrayElementBuffer_is_loaded(&self) -> bool {
33559            !self.glVertexArrayElementBuffer_p.load(RELAX).is_null()
33560        }
33561        /// [glVertexArrayVertexBuffer](http://docs.gl/gl4/glVertexArrayVertexBuffer)(vaobj, bindingindex, buffer, offset, stride)
33562        #[cfg_attr(feature = "inline", inline)]
33563        #[cfg_attr(feature = "inline_always", inline(always))]
33564        pub unsafe fn VertexArrayVertexBuffer(
33565            &self,
33566            vaobj: GLuint,
33567            bindingindex: GLuint,
33568            buffer: GLuint,
33569            offset: GLintptr,
33570            stride: GLsizei,
33571        ) {
33572            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33573            {
33574                trace!(
33575                    "calling gl.VertexArrayVertexBuffer({:?}, {:?}, {:?}, {:?}, {:?});",
33576                    vaobj,
33577                    bindingindex,
33578                    buffer,
33579                    offset,
33580                    stride
33581                );
33582            }
33583            let out = call_atomic_ptr_5arg(
33584                "glVertexArrayVertexBuffer",
33585                &self.glVertexArrayVertexBuffer_p,
33586                vaobj,
33587                bindingindex,
33588                buffer,
33589                offset,
33590                stride,
33591            );
33592            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33593            {
33594                self.automatic_glGetError("glVertexArrayVertexBuffer");
33595            }
33596            out
33597        }
33598        #[doc(hidden)]
33599        pub unsafe fn VertexArrayVertexBuffer_load_with_dyn(
33600            &self,
33601            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33602        ) -> bool {
33603            load_dyn_name_atomic_ptr(
33604                get_proc_address,
33605                b"glVertexArrayVertexBuffer\0",
33606                &self.glVertexArrayVertexBuffer_p,
33607            )
33608        }
33609        #[inline]
33610        #[doc(hidden)]
33611        pub fn VertexArrayVertexBuffer_is_loaded(&self) -> bool {
33612            !self.glVertexArrayVertexBuffer_p.load(RELAX).is_null()
33613        }
33614        /// [glVertexArrayVertexBuffers](http://docs.gl/gl4/glVertexArrayVertexBuffers)(vaobj, first, count, buffers, offsets, strides)
33615        #[cfg_attr(feature = "inline", inline)]
33616        #[cfg_attr(feature = "inline_always", inline(always))]
33617        pub unsafe fn VertexArrayVertexBuffers(
33618            &self,
33619            vaobj: GLuint,
33620            first: GLuint,
33621            count: GLsizei,
33622            buffers: *const GLuint,
33623            offsets: *const GLintptr,
33624            strides: *const GLsizei,
33625        ) {
33626            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33627            {
33628                trace!(
33629                    "calling gl.VertexArrayVertexBuffers({:?}, {:?}, {:?}, {:p}, {:p}, {:p});",
33630                    vaobj,
33631                    first,
33632                    count,
33633                    buffers,
33634                    offsets,
33635                    strides
33636                );
33637            }
33638            let out = call_atomic_ptr_6arg(
33639                "glVertexArrayVertexBuffers",
33640                &self.glVertexArrayVertexBuffers_p,
33641                vaobj,
33642                first,
33643                count,
33644                buffers,
33645                offsets,
33646                strides,
33647            );
33648            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33649            {
33650                self.automatic_glGetError("glVertexArrayVertexBuffers");
33651            }
33652            out
33653        }
33654        #[doc(hidden)]
33655        pub unsafe fn VertexArrayVertexBuffers_load_with_dyn(
33656            &self,
33657            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33658        ) -> bool {
33659            load_dyn_name_atomic_ptr(
33660                get_proc_address,
33661                b"glVertexArrayVertexBuffers\0",
33662                &self.glVertexArrayVertexBuffers_p,
33663            )
33664        }
33665        #[inline]
33666        #[doc(hidden)]
33667        pub fn VertexArrayVertexBuffers_is_loaded(&self) -> bool {
33668            !self.glVertexArrayVertexBuffers_p.load(RELAX).is_null()
33669        }
33670        /// [glVertexAttrib1d](http://docs.gl/gl4/glVertexAttrib1d)(index, x)
33671        /// * vector equivalent: [`glVertexAttrib1dv`]
33672        #[cfg_attr(feature = "inline", inline)]
33673        #[cfg_attr(feature = "inline_always", inline(always))]
33674        pub unsafe fn VertexAttrib1d(&self, index: GLuint, x: GLdouble) {
33675            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33676            {
33677                trace!("calling gl.VertexAttrib1d({:?}, {:?});", index, x);
33678            }
33679            let out = call_atomic_ptr_2arg("glVertexAttrib1d", &self.glVertexAttrib1d_p, index, x);
33680            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33681            {
33682                self.automatic_glGetError("glVertexAttrib1d");
33683            }
33684            out
33685        }
33686        #[doc(hidden)]
33687        pub unsafe fn VertexAttrib1d_load_with_dyn(
33688            &self,
33689            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33690        ) -> bool {
33691            load_dyn_name_atomic_ptr(
33692                get_proc_address,
33693                b"glVertexAttrib1d\0",
33694                &self.glVertexAttrib1d_p,
33695            )
33696        }
33697        #[inline]
33698        #[doc(hidden)]
33699        pub fn VertexAttrib1d_is_loaded(&self) -> bool {
33700            !self.glVertexAttrib1d_p.load(RELAX).is_null()
33701        }
33702        /// [glVertexAttrib1dv](http://docs.gl/gl4/glVertexAttrib1dv)(index, v)
33703        /// * `v` len: 1
33704        #[cfg_attr(feature = "inline", inline)]
33705        #[cfg_attr(feature = "inline_always", inline(always))]
33706        pub unsafe fn VertexAttrib1dv(&self, index: GLuint, v: *const GLdouble) {
33707            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33708            {
33709                trace!("calling gl.VertexAttrib1dv({:?}, {:p});", index, v);
33710            }
33711            let out =
33712                call_atomic_ptr_2arg("glVertexAttrib1dv", &self.glVertexAttrib1dv_p, index, v);
33713            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33714            {
33715                self.automatic_glGetError("glVertexAttrib1dv");
33716            }
33717            out
33718        }
33719        #[doc(hidden)]
33720        pub unsafe fn VertexAttrib1dv_load_with_dyn(
33721            &self,
33722            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33723        ) -> bool {
33724            load_dyn_name_atomic_ptr(
33725                get_proc_address,
33726                b"glVertexAttrib1dv\0",
33727                &self.glVertexAttrib1dv_p,
33728            )
33729        }
33730        #[inline]
33731        #[doc(hidden)]
33732        pub fn VertexAttrib1dv_is_loaded(&self) -> bool {
33733            !self.glVertexAttrib1dv_p.load(RELAX).is_null()
33734        }
33735        /// [glVertexAttrib1f](http://docs.gl/gl4/glVertexAttrib)(index, x)
33736        /// * vector equivalent: [`glVertexAttrib1fv`]
33737        #[cfg_attr(feature = "inline", inline)]
33738        #[cfg_attr(feature = "inline_always", inline(always))]
33739        pub unsafe fn VertexAttrib1f(&self, index: GLuint, x: GLfloat) {
33740            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33741            {
33742                trace!("calling gl.VertexAttrib1f({:?}, {:?});", index, x);
33743            }
33744            let out = call_atomic_ptr_2arg("glVertexAttrib1f", &self.glVertexAttrib1f_p, index, x);
33745            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33746            {
33747                self.automatic_glGetError("glVertexAttrib1f");
33748            }
33749            out
33750        }
33751        #[doc(hidden)]
33752        pub unsafe fn VertexAttrib1f_load_with_dyn(
33753            &self,
33754            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33755        ) -> bool {
33756            load_dyn_name_atomic_ptr(
33757                get_proc_address,
33758                b"glVertexAttrib1f\0",
33759                &self.glVertexAttrib1f_p,
33760            )
33761        }
33762        #[inline]
33763        #[doc(hidden)]
33764        pub fn VertexAttrib1f_is_loaded(&self) -> bool {
33765            !self.glVertexAttrib1f_p.load(RELAX).is_null()
33766        }
33767        /// [glVertexAttrib1fv](http://docs.gl/gl4/glVertexAttrib)(index, v)
33768        /// * `v` len: 1
33769        #[cfg_attr(feature = "inline", inline)]
33770        #[cfg_attr(feature = "inline_always", inline(always))]
33771        pub unsafe fn VertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) {
33772            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33773            {
33774                trace!("calling gl.VertexAttrib1fv({:?}, {:p});", index, v);
33775            }
33776            let out =
33777                call_atomic_ptr_2arg("glVertexAttrib1fv", &self.glVertexAttrib1fv_p, index, v);
33778            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33779            {
33780                self.automatic_glGetError("glVertexAttrib1fv");
33781            }
33782            out
33783        }
33784        #[doc(hidden)]
33785        pub unsafe fn VertexAttrib1fv_load_with_dyn(
33786            &self,
33787            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33788        ) -> bool {
33789            load_dyn_name_atomic_ptr(
33790                get_proc_address,
33791                b"glVertexAttrib1fv\0",
33792                &self.glVertexAttrib1fv_p,
33793            )
33794        }
33795        #[inline]
33796        #[doc(hidden)]
33797        pub fn VertexAttrib1fv_is_loaded(&self) -> bool {
33798            !self.glVertexAttrib1fv_p.load(RELAX).is_null()
33799        }
33800        /// [glVertexAttrib1s](http://docs.gl/gl4/glVertexAttrib1s)(index, x)
33801        /// * vector equivalent: [`glVertexAttrib1sv`]
33802        #[cfg_attr(feature = "inline", inline)]
33803        #[cfg_attr(feature = "inline_always", inline(always))]
33804        pub unsafe fn VertexAttrib1s(&self, index: GLuint, x: GLshort) {
33805            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33806            {
33807                trace!("calling gl.VertexAttrib1s({:?}, {:?});", index, x);
33808            }
33809            let out = call_atomic_ptr_2arg("glVertexAttrib1s", &self.glVertexAttrib1s_p, index, x);
33810            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33811            {
33812                self.automatic_glGetError("glVertexAttrib1s");
33813            }
33814            out
33815        }
33816        #[doc(hidden)]
33817        pub unsafe fn VertexAttrib1s_load_with_dyn(
33818            &self,
33819            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33820        ) -> bool {
33821            load_dyn_name_atomic_ptr(
33822                get_proc_address,
33823                b"glVertexAttrib1s\0",
33824                &self.glVertexAttrib1s_p,
33825            )
33826        }
33827        #[inline]
33828        #[doc(hidden)]
33829        pub fn VertexAttrib1s_is_loaded(&self) -> bool {
33830            !self.glVertexAttrib1s_p.load(RELAX).is_null()
33831        }
33832        /// [glVertexAttrib1sv](http://docs.gl/gl4/glVertexAttrib1sv)(index, v)
33833        /// * `v` len: 1
33834        #[cfg_attr(feature = "inline", inline)]
33835        #[cfg_attr(feature = "inline_always", inline(always))]
33836        pub unsafe fn VertexAttrib1sv(&self, index: GLuint, v: *const GLshort) {
33837            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33838            {
33839                trace!("calling gl.VertexAttrib1sv({:?}, {:p});", index, v);
33840            }
33841            let out =
33842                call_atomic_ptr_2arg("glVertexAttrib1sv", &self.glVertexAttrib1sv_p, index, v);
33843            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33844            {
33845                self.automatic_glGetError("glVertexAttrib1sv");
33846            }
33847            out
33848        }
33849        #[doc(hidden)]
33850        pub unsafe fn VertexAttrib1sv_load_with_dyn(
33851            &self,
33852            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33853        ) -> bool {
33854            load_dyn_name_atomic_ptr(
33855                get_proc_address,
33856                b"glVertexAttrib1sv\0",
33857                &self.glVertexAttrib1sv_p,
33858            )
33859        }
33860        #[inline]
33861        #[doc(hidden)]
33862        pub fn VertexAttrib1sv_is_loaded(&self) -> bool {
33863            !self.glVertexAttrib1sv_p.load(RELAX).is_null()
33864        }
33865        /// [glVertexAttrib2d](http://docs.gl/gl4/glVertexAttrib2d)(index, x, y)
33866        /// * vector equivalent: [`glVertexAttrib2dv`]
33867        #[cfg_attr(feature = "inline", inline)]
33868        #[cfg_attr(feature = "inline_always", inline(always))]
33869        pub unsafe fn VertexAttrib2d(&self, index: GLuint, x: GLdouble, y: GLdouble) {
33870            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33871            {
33872                trace!("calling gl.VertexAttrib2d({:?}, {:?}, {:?});", index, x, y);
33873            }
33874            let out =
33875                call_atomic_ptr_3arg("glVertexAttrib2d", &self.glVertexAttrib2d_p, index, x, y);
33876            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33877            {
33878                self.automatic_glGetError("glVertexAttrib2d");
33879            }
33880            out
33881        }
33882        #[doc(hidden)]
33883        pub unsafe fn VertexAttrib2d_load_with_dyn(
33884            &self,
33885            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33886        ) -> bool {
33887            load_dyn_name_atomic_ptr(
33888                get_proc_address,
33889                b"glVertexAttrib2d\0",
33890                &self.glVertexAttrib2d_p,
33891            )
33892        }
33893        #[inline]
33894        #[doc(hidden)]
33895        pub fn VertexAttrib2d_is_loaded(&self) -> bool {
33896            !self.glVertexAttrib2d_p.load(RELAX).is_null()
33897        }
33898        /// [glVertexAttrib2dv](http://docs.gl/gl4/glVertexAttrib2dv)(index, v)
33899        /// * `v` len: 2
33900        #[cfg_attr(feature = "inline", inline)]
33901        #[cfg_attr(feature = "inline_always", inline(always))]
33902        pub unsafe fn VertexAttrib2dv(&self, index: GLuint, v: *const GLdouble) {
33903            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33904            {
33905                trace!("calling gl.VertexAttrib2dv({:?}, {:p});", index, v);
33906            }
33907            let out =
33908                call_atomic_ptr_2arg("glVertexAttrib2dv", &self.glVertexAttrib2dv_p, index, v);
33909            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33910            {
33911                self.automatic_glGetError("glVertexAttrib2dv");
33912            }
33913            out
33914        }
33915        #[doc(hidden)]
33916        pub unsafe fn VertexAttrib2dv_load_with_dyn(
33917            &self,
33918            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33919        ) -> bool {
33920            load_dyn_name_atomic_ptr(
33921                get_proc_address,
33922                b"glVertexAttrib2dv\0",
33923                &self.glVertexAttrib2dv_p,
33924            )
33925        }
33926        #[inline]
33927        #[doc(hidden)]
33928        pub fn VertexAttrib2dv_is_loaded(&self) -> bool {
33929            !self.glVertexAttrib2dv_p.load(RELAX).is_null()
33930        }
33931        /// [glVertexAttrib2f](http://docs.gl/gl4/glVertexAttrib)(index, x, y)
33932        /// * vector equivalent: [`glVertexAttrib2fv`]
33933        #[cfg_attr(feature = "inline", inline)]
33934        #[cfg_attr(feature = "inline_always", inline(always))]
33935        pub unsafe fn VertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) {
33936            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33937            {
33938                trace!("calling gl.VertexAttrib2f({:?}, {:?}, {:?});", index, x, y);
33939            }
33940            let out =
33941                call_atomic_ptr_3arg("glVertexAttrib2f", &self.glVertexAttrib2f_p, index, x, y);
33942            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33943            {
33944                self.automatic_glGetError("glVertexAttrib2f");
33945            }
33946            out
33947        }
33948        #[doc(hidden)]
33949        pub unsafe fn VertexAttrib2f_load_with_dyn(
33950            &self,
33951            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33952        ) -> bool {
33953            load_dyn_name_atomic_ptr(
33954                get_proc_address,
33955                b"glVertexAttrib2f\0",
33956                &self.glVertexAttrib2f_p,
33957            )
33958        }
33959        #[inline]
33960        #[doc(hidden)]
33961        pub fn VertexAttrib2f_is_loaded(&self) -> bool {
33962            !self.glVertexAttrib2f_p.load(RELAX).is_null()
33963        }
33964        /// [glVertexAttrib2fv](http://docs.gl/gl4/glVertexAttrib)(index, v)
33965        /// * `v` len: 2
33966        #[cfg_attr(feature = "inline", inline)]
33967        #[cfg_attr(feature = "inline_always", inline(always))]
33968        pub unsafe fn VertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) {
33969            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33970            {
33971                trace!("calling gl.VertexAttrib2fv({:?}, {:p});", index, v);
33972            }
33973            let out =
33974                call_atomic_ptr_2arg("glVertexAttrib2fv", &self.glVertexAttrib2fv_p, index, v);
33975            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33976            {
33977                self.automatic_glGetError("glVertexAttrib2fv");
33978            }
33979            out
33980        }
33981        #[doc(hidden)]
33982        pub unsafe fn VertexAttrib2fv_load_with_dyn(
33983            &self,
33984            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33985        ) -> bool {
33986            load_dyn_name_atomic_ptr(
33987                get_proc_address,
33988                b"glVertexAttrib2fv\0",
33989                &self.glVertexAttrib2fv_p,
33990            )
33991        }
33992        #[inline]
33993        #[doc(hidden)]
33994        pub fn VertexAttrib2fv_is_loaded(&self) -> bool {
33995            !self.glVertexAttrib2fv_p.load(RELAX).is_null()
33996        }
33997        /// [glVertexAttrib2s](http://docs.gl/gl4/glVertexAttrib2s)(index, x, y)
33998        /// * vector equivalent: [`glVertexAttrib2sv`]
33999        #[cfg_attr(feature = "inline", inline)]
34000        #[cfg_attr(feature = "inline_always", inline(always))]
34001        pub unsafe fn VertexAttrib2s(&self, index: GLuint, x: GLshort, y: GLshort) {
34002            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34003            {
34004                trace!("calling gl.VertexAttrib2s({:?}, {:?}, {:?});", index, x, y);
34005            }
34006            let out =
34007                call_atomic_ptr_3arg("glVertexAttrib2s", &self.glVertexAttrib2s_p, index, x, y);
34008            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34009            {
34010                self.automatic_glGetError("glVertexAttrib2s");
34011            }
34012            out
34013        }
34014        #[doc(hidden)]
34015        pub unsafe fn VertexAttrib2s_load_with_dyn(
34016            &self,
34017            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34018        ) -> bool {
34019            load_dyn_name_atomic_ptr(
34020                get_proc_address,
34021                b"glVertexAttrib2s\0",
34022                &self.glVertexAttrib2s_p,
34023            )
34024        }
34025        #[inline]
34026        #[doc(hidden)]
34027        pub fn VertexAttrib2s_is_loaded(&self) -> bool {
34028            !self.glVertexAttrib2s_p.load(RELAX).is_null()
34029        }
34030        /// [glVertexAttrib2sv](http://docs.gl/gl4/glVertexAttrib2sv)(index, v)
34031        /// * `v` len: 2
34032        #[cfg_attr(feature = "inline", inline)]
34033        #[cfg_attr(feature = "inline_always", inline(always))]
34034        pub unsafe fn VertexAttrib2sv(&self, index: GLuint, v: *const GLshort) {
34035            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34036            {
34037                trace!("calling gl.VertexAttrib2sv({:?}, {:p});", index, v);
34038            }
34039            let out =
34040                call_atomic_ptr_2arg("glVertexAttrib2sv", &self.glVertexAttrib2sv_p, index, v);
34041            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34042            {
34043                self.automatic_glGetError("glVertexAttrib2sv");
34044            }
34045            out
34046        }
34047        #[doc(hidden)]
34048        pub unsafe fn VertexAttrib2sv_load_with_dyn(
34049            &self,
34050            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34051        ) -> bool {
34052            load_dyn_name_atomic_ptr(
34053                get_proc_address,
34054                b"glVertexAttrib2sv\0",
34055                &self.glVertexAttrib2sv_p,
34056            )
34057        }
34058        #[inline]
34059        #[doc(hidden)]
34060        pub fn VertexAttrib2sv_is_loaded(&self) -> bool {
34061            !self.glVertexAttrib2sv_p.load(RELAX).is_null()
34062        }
34063        /// [glVertexAttrib3d](http://docs.gl/gl4/glVertexAttrib3d)(index, x, y, z)
34064        /// * vector equivalent: [`glVertexAttrib3dv`]
34065        #[cfg_attr(feature = "inline", inline)]
34066        #[cfg_attr(feature = "inline_always", inline(always))]
34067        pub unsafe fn VertexAttrib3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) {
34068            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34069            {
34070                trace!(
34071                    "calling gl.VertexAttrib3d({:?}, {:?}, {:?}, {:?});",
34072                    index,
34073                    x,
34074                    y,
34075                    z
34076                );
34077            }
34078            let out =
34079                call_atomic_ptr_4arg("glVertexAttrib3d", &self.glVertexAttrib3d_p, index, x, y, z);
34080            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34081            {
34082                self.automatic_glGetError("glVertexAttrib3d");
34083            }
34084            out
34085        }
34086        #[doc(hidden)]
34087        pub unsafe fn VertexAttrib3d_load_with_dyn(
34088            &self,
34089            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34090        ) -> bool {
34091            load_dyn_name_atomic_ptr(
34092                get_proc_address,
34093                b"glVertexAttrib3d\0",
34094                &self.glVertexAttrib3d_p,
34095            )
34096        }
34097        #[inline]
34098        #[doc(hidden)]
34099        pub fn VertexAttrib3d_is_loaded(&self) -> bool {
34100            !self.glVertexAttrib3d_p.load(RELAX).is_null()
34101        }
34102        /// [glVertexAttrib3dv](http://docs.gl/gl4/glVertexAttrib3dv)(index, v)
34103        /// * `v` len: 3
34104        #[cfg_attr(feature = "inline", inline)]
34105        #[cfg_attr(feature = "inline_always", inline(always))]
34106        pub unsafe fn VertexAttrib3dv(&self, index: GLuint, v: *const GLdouble) {
34107            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34108            {
34109                trace!("calling gl.VertexAttrib3dv({:?}, {:p});", index, v);
34110            }
34111            let out =
34112                call_atomic_ptr_2arg("glVertexAttrib3dv", &self.glVertexAttrib3dv_p, index, v);
34113            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34114            {
34115                self.automatic_glGetError("glVertexAttrib3dv");
34116            }
34117            out
34118        }
34119        #[doc(hidden)]
34120        pub unsafe fn VertexAttrib3dv_load_with_dyn(
34121            &self,
34122            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34123        ) -> bool {
34124            load_dyn_name_atomic_ptr(
34125                get_proc_address,
34126                b"glVertexAttrib3dv\0",
34127                &self.glVertexAttrib3dv_p,
34128            )
34129        }
34130        #[inline]
34131        #[doc(hidden)]
34132        pub fn VertexAttrib3dv_is_loaded(&self) -> bool {
34133            !self.glVertexAttrib3dv_p.load(RELAX).is_null()
34134        }
34135        /// [glVertexAttrib3f](http://docs.gl/gl4/glVertexAttrib)(index, x, y, z)
34136        /// * vector equivalent: [`glVertexAttrib3fv`]
34137        #[cfg_attr(feature = "inline", inline)]
34138        #[cfg_attr(feature = "inline_always", inline(always))]
34139        pub unsafe fn VertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) {
34140            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34141            {
34142                trace!(
34143                    "calling gl.VertexAttrib3f({:?}, {:?}, {:?}, {:?});",
34144                    index,
34145                    x,
34146                    y,
34147                    z
34148                );
34149            }
34150            let out =
34151                call_atomic_ptr_4arg("glVertexAttrib3f", &self.glVertexAttrib3f_p, index, x, y, z);
34152            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34153            {
34154                self.automatic_glGetError("glVertexAttrib3f");
34155            }
34156            out
34157        }
34158        #[doc(hidden)]
34159        pub unsafe fn VertexAttrib3f_load_with_dyn(
34160            &self,
34161            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34162        ) -> bool {
34163            load_dyn_name_atomic_ptr(
34164                get_proc_address,
34165                b"glVertexAttrib3f\0",
34166                &self.glVertexAttrib3f_p,
34167            )
34168        }
34169        #[inline]
34170        #[doc(hidden)]
34171        pub fn VertexAttrib3f_is_loaded(&self) -> bool {
34172            !self.glVertexAttrib3f_p.load(RELAX).is_null()
34173        }
34174        /// [glVertexAttrib3fv](http://docs.gl/gl4/glVertexAttrib)(index, v)
34175        /// * `v` len: 3
34176        #[cfg_attr(feature = "inline", inline)]
34177        #[cfg_attr(feature = "inline_always", inline(always))]
34178        pub unsafe fn VertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) {
34179            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34180            {
34181                trace!("calling gl.VertexAttrib3fv({:?}, {:p});", index, v);
34182            }
34183            let out =
34184                call_atomic_ptr_2arg("glVertexAttrib3fv", &self.glVertexAttrib3fv_p, index, v);
34185            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34186            {
34187                self.automatic_glGetError("glVertexAttrib3fv");
34188            }
34189            out
34190        }
34191        #[doc(hidden)]
34192        pub unsafe fn VertexAttrib3fv_load_with_dyn(
34193            &self,
34194            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34195        ) -> bool {
34196            load_dyn_name_atomic_ptr(
34197                get_proc_address,
34198                b"glVertexAttrib3fv\0",
34199                &self.glVertexAttrib3fv_p,
34200            )
34201        }
34202        #[inline]
34203        #[doc(hidden)]
34204        pub fn VertexAttrib3fv_is_loaded(&self) -> bool {
34205            !self.glVertexAttrib3fv_p.load(RELAX).is_null()
34206        }
34207        /// [glVertexAttrib3s](http://docs.gl/gl4/glVertexAttrib3s)(index, x, y, z)
34208        /// * vector equivalent: [`glVertexAttrib3sv`]
34209        #[cfg_attr(feature = "inline", inline)]
34210        #[cfg_attr(feature = "inline_always", inline(always))]
34211        pub unsafe fn VertexAttrib3s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort) {
34212            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34213            {
34214                trace!(
34215                    "calling gl.VertexAttrib3s({:?}, {:?}, {:?}, {:?});",
34216                    index,
34217                    x,
34218                    y,
34219                    z
34220                );
34221            }
34222            let out =
34223                call_atomic_ptr_4arg("glVertexAttrib3s", &self.glVertexAttrib3s_p, index, x, y, z);
34224            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34225            {
34226                self.automatic_glGetError("glVertexAttrib3s");
34227            }
34228            out
34229        }
34230        #[doc(hidden)]
34231        pub unsafe fn VertexAttrib3s_load_with_dyn(
34232            &self,
34233            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34234        ) -> bool {
34235            load_dyn_name_atomic_ptr(
34236                get_proc_address,
34237                b"glVertexAttrib3s\0",
34238                &self.glVertexAttrib3s_p,
34239            )
34240        }
34241        #[inline]
34242        #[doc(hidden)]
34243        pub fn VertexAttrib3s_is_loaded(&self) -> bool {
34244            !self.glVertexAttrib3s_p.load(RELAX).is_null()
34245        }
34246        /// [glVertexAttrib3sv](http://docs.gl/gl4/glVertexAttrib3sv)(index, v)
34247        /// * `v` len: 3
34248        #[cfg_attr(feature = "inline", inline)]
34249        #[cfg_attr(feature = "inline_always", inline(always))]
34250        pub unsafe fn VertexAttrib3sv(&self, index: GLuint, v: *const GLshort) {
34251            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34252            {
34253                trace!("calling gl.VertexAttrib3sv({:?}, {:p});", index, v);
34254            }
34255            let out =
34256                call_atomic_ptr_2arg("glVertexAttrib3sv", &self.glVertexAttrib3sv_p, index, v);
34257            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34258            {
34259                self.automatic_glGetError("glVertexAttrib3sv");
34260            }
34261            out
34262        }
34263        #[doc(hidden)]
34264        pub unsafe fn VertexAttrib3sv_load_with_dyn(
34265            &self,
34266            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34267        ) -> bool {
34268            load_dyn_name_atomic_ptr(
34269                get_proc_address,
34270                b"glVertexAttrib3sv\0",
34271                &self.glVertexAttrib3sv_p,
34272            )
34273        }
34274        #[inline]
34275        #[doc(hidden)]
34276        pub fn VertexAttrib3sv_is_loaded(&self) -> bool {
34277            !self.glVertexAttrib3sv_p.load(RELAX).is_null()
34278        }
34279        /// [glVertexAttrib4Nbv](http://docs.gl/gl4/glVertexAttrib4Nbv)(index, v)
34280        /// * `v` len: 4
34281        #[cfg_attr(feature = "inline", inline)]
34282        #[cfg_attr(feature = "inline_always", inline(always))]
34283        pub unsafe fn VertexAttrib4Nbv(&self, index: GLuint, v: *const GLbyte) {
34284            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34285            {
34286                trace!("calling gl.VertexAttrib4Nbv({:?}, {:p});", index, v);
34287            }
34288            let out =
34289                call_atomic_ptr_2arg("glVertexAttrib4Nbv", &self.glVertexAttrib4Nbv_p, index, v);
34290            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34291            {
34292                self.automatic_glGetError("glVertexAttrib4Nbv");
34293            }
34294            out
34295        }
34296        #[doc(hidden)]
34297        pub unsafe fn VertexAttrib4Nbv_load_with_dyn(
34298            &self,
34299            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34300        ) -> bool {
34301            load_dyn_name_atomic_ptr(
34302                get_proc_address,
34303                b"glVertexAttrib4Nbv\0",
34304                &self.glVertexAttrib4Nbv_p,
34305            )
34306        }
34307        #[inline]
34308        #[doc(hidden)]
34309        pub fn VertexAttrib4Nbv_is_loaded(&self) -> bool {
34310            !self.glVertexAttrib4Nbv_p.load(RELAX).is_null()
34311        }
34312        /// [glVertexAttrib4Niv](http://docs.gl/gl4/glVertexAttrib4N)(index, v)
34313        /// * `v` len: 4
34314        #[cfg_attr(feature = "inline", inline)]
34315        #[cfg_attr(feature = "inline_always", inline(always))]
34316        pub unsafe fn VertexAttrib4Niv(&self, index: GLuint, v: *const GLint) {
34317            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34318            {
34319                trace!("calling gl.VertexAttrib4Niv({:?}, {:p});", index, v);
34320            }
34321            let out =
34322                call_atomic_ptr_2arg("glVertexAttrib4Niv", &self.glVertexAttrib4Niv_p, index, v);
34323            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34324            {
34325                self.automatic_glGetError("glVertexAttrib4Niv");
34326            }
34327            out
34328        }
34329        #[doc(hidden)]
34330        pub unsafe fn VertexAttrib4Niv_load_with_dyn(
34331            &self,
34332            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34333        ) -> bool {
34334            load_dyn_name_atomic_ptr(
34335                get_proc_address,
34336                b"glVertexAttrib4Niv\0",
34337                &self.glVertexAttrib4Niv_p,
34338            )
34339        }
34340        #[inline]
34341        #[doc(hidden)]
34342        pub fn VertexAttrib4Niv_is_loaded(&self) -> bool {
34343            !self.glVertexAttrib4Niv_p.load(RELAX).is_null()
34344        }
34345        /// [glVertexAttrib4Nsv](http://docs.gl/gl4/glVertexAttrib4Nsv)(index, v)
34346        /// * `v` len: 4
34347        #[cfg_attr(feature = "inline", inline)]
34348        #[cfg_attr(feature = "inline_always", inline(always))]
34349        pub unsafe fn VertexAttrib4Nsv(&self, index: GLuint, v: *const GLshort) {
34350            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34351            {
34352                trace!("calling gl.VertexAttrib4Nsv({:?}, {:p});", index, v);
34353            }
34354            let out =
34355                call_atomic_ptr_2arg("glVertexAttrib4Nsv", &self.glVertexAttrib4Nsv_p, index, v);
34356            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34357            {
34358                self.automatic_glGetError("glVertexAttrib4Nsv");
34359            }
34360            out
34361        }
34362        #[doc(hidden)]
34363        pub unsafe fn VertexAttrib4Nsv_load_with_dyn(
34364            &self,
34365            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34366        ) -> bool {
34367            load_dyn_name_atomic_ptr(
34368                get_proc_address,
34369                b"glVertexAttrib4Nsv\0",
34370                &self.glVertexAttrib4Nsv_p,
34371            )
34372        }
34373        #[inline]
34374        #[doc(hidden)]
34375        pub fn VertexAttrib4Nsv_is_loaded(&self) -> bool {
34376            !self.glVertexAttrib4Nsv_p.load(RELAX).is_null()
34377        }
34378        /// [glVertexAttrib4Nub](http://docs.gl/gl4/glVertexAttrib4Nub)(index, x, y, z, w)
34379        #[cfg_attr(feature = "inline", inline)]
34380        #[cfg_attr(feature = "inline_always", inline(always))]
34381        pub unsafe fn VertexAttrib4Nub(
34382            &self,
34383            index: GLuint,
34384            x: GLubyte,
34385            y: GLubyte,
34386            z: GLubyte,
34387            w: GLubyte,
34388        ) {
34389            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34390            {
34391                trace!(
34392                    "calling gl.VertexAttrib4Nub({:?}, {:?}, {:?}, {:?}, {:?});",
34393                    index,
34394                    x,
34395                    y,
34396                    z,
34397                    w
34398                );
34399            }
34400            let out = call_atomic_ptr_5arg(
34401                "glVertexAttrib4Nub",
34402                &self.glVertexAttrib4Nub_p,
34403                index,
34404                x,
34405                y,
34406                z,
34407                w,
34408            );
34409            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34410            {
34411                self.automatic_glGetError("glVertexAttrib4Nub");
34412            }
34413            out
34414        }
34415        #[doc(hidden)]
34416        pub unsafe fn VertexAttrib4Nub_load_with_dyn(
34417            &self,
34418            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34419        ) -> bool {
34420            load_dyn_name_atomic_ptr(
34421                get_proc_address,
34422                b"glVertexAttrib4Nub\0",
34423                &self.glVertexAttrib4Nub_p,
34424            )
34425        }
34426        #[inline]
34427        #[doc(hidden)]
34428        pub fn VertexAttrib4Nub_is_loaded(&self) -> bool {
34429            !self.glVertexAttrib4Nub_p.load(RELAX).is_null()
34430        }
34431        /// [glVertexAttrib4Nubv](http://docs.gl/gl4/glVertexAttrib4Nubv)(index, v)
34432        /// * `v` len: 4
34433        #[cfg_attr(feature = "inline", inline)]
34434        #[cfg_attr(feature = "inline_always", inline(always))]
34435        pub unsafe fn VertexAttrib4Nubv(&self, index: GLuint, v: *const GLubyte) {
34436            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34437            {
34438                trace!("calling gl.VertexAttrib4Nubv({:?}, {:p});", index, v);
34439            }
34440            let out =
34441                call_atomic_ptr_2arg("glVertexAttrib4Nubv", &self.glVertexAttrib4Nubv_p, index, v);
34442            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34443            {
34444                self.automatic_glGetError("glVertexAttrib4Nubv");
34445            }
34446            out
34447        }
34448        #[doc(hidden)]
34449        pub unsafe fn VertexAttrib4Nubv_load_with_dyn(
34450            &self,
34451            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34452        ) -> bool {
34453            load_dyn_name_atomic_ptr(
34454                get_proc_address,
34455                b"glVertexAttrib4Nubv\0",
34456                &self.glVertexAttrib4Nubv_p,
34457            )
34458        }
34459        #[inline]
34460        #[doc(hidden)]
34461        pub fn VertexAttrib4Nubv_is_loaded(&self) -> bool {
34462            !self.glVertexAttrib4Nubv_p.load(RELAX).is_null()
34463        }
34464        /// [glVertexAttrib4Nuiv](http://docs.gl/gl4/glVertexAttrib4N)(index, v)
34465        /// * `v` len: 4
34466        #[cfg_attr(feature = "inline", inline)]
34467        #[cfg_attr(feature = "inline_always", inline(always))]
34468        pub unsafe fn VertexAttrib4Nuiv(&self, index: GLuint, v: *const GLuint) {
34469            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34470            {
34471                trace!("calling gl.VertexAttrib4Nuiv({:?}, {:p});", index, v);
34472            }
34473            let out =
34474                call_atomic_ptr_2arg("glVertexAttrib4Nuiv", &self.glVertexAttrib4Nuiv_p, index, v);
34475            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34476            {
34477                self.automatic_glGetError("glVertexAttrib4Nuiv");
34478            }
34479            out
34480        }
34481        #[doc(hidden)]
34482        pub unsafe fn VertexAttrib4Nuiv_load_with_dyn(
34483            &self,
34484            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34485        ) -> bool {
34486            load_dyn_name_atomic_ptr(
34487                get_proc_address,
34488                b"glVertexAttrib4Nuiv\0",
34489                &self.glVertexAttrib4Nuiv_p,
34490            )
34491        }
34492        #[inline]
34493        #[doc(hidden)]
34494        pub fn VertexAttrib4Nuiv_is_loaded(&self) -> bool {
34495            !self.glVertexAttrib4Nuiv_p.load(RELAX).is_null()
34496        }
34497        /// [glVertexAttrib4Nusv](http://docs.gl/gl4/glVertexAttrib4Nusv)(index, v)
34498        /// * `v` len: 4
34499        #[cfg_attr(feature = "inline", inline)]
34500        #[cfg_attr(feature = "inline_always", inline(always))]
34501        pub unsafe fn VertexAttrib4Nusv(&self, index: GLuint, v: *const GLushort) {
34502            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34503            {
34504                trace!("calling gl.VertexAttrib4Nusv({:?}, {:p});", index, v);
34505            }
34506            let out =
34507                call_atomic_ptr_2arg("glVertexAttrib4Nusv", &self.glVertexAttrib4Nusv_p, index, v);
34508            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34509            {
34510                self.automatic_glGetError("glVertexAttrib4Nusv");
34511            }
34512            out
34513        }
34514        #[doc(hidden)]
34515        pub unsafe fn VertexAttrib4Nusv_load_with_dyn(
34516            &self,
34517            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34518        ) -> bool {
34519            load_dyn_name_atomic_ptr(
34520                get_proc_address,
34521                b"glVertexAttrib4Nusv\0",
34522                &self.glVertexAttrib4Nusv_p,
34523            )
34524        }
34525        #[inline]
34526        #[doc(hidden)]
34527        pub fn VertexAttrib4Nusv_is_loaded(&self) -> bool {
34528            !self.glVertexAttrib4Nusv_p.load(RELAX).is_null()
34529        }
34530        /// [glVertexAttrib4bv](http://docs.gl/gl4/glVertexAttrib4bv)(index, v)
34531        /// * `v` len: 4
34532        #[cfg_attr(feature = "inline", inline)]
34533        #[cfg_attr(feature = "inline_always", inline(always))]
34534        pub unsafe fn VertexAttrib4bv(&self, index: GLuint, v: *const GLbyte) {
34535            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34536            {
34537                trace!("calling gl.VertexAttrib4bv({:?}, {:p});", index, v);
34538            }
34539            let out =
34540                call_atomic_ptr_2arg("glVertexAttrib4bv", &self.glVertexAttrib4bv_p, index, v);
34541            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34542            {
34543                self.automatic_glGetError("glVertexAttrib4bv");
34544            }
34545            out
34546        }
34547        #[doc(hidden)]
34548        pub unsafe fn VertexAttrib4bv_load_with_dyn(
34549            &self,
34550            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34551        ) -> bool {
34552            load_dyn_name_atomic_ptr(
34553                get_proc_address,
34554                b"glVertexAttrib4bv\0",
34555                &self.glVertexAttrib4bv_p,
34556            )
34557        }
34558        #[inline]
34559        #[doc(hidden)]
34560        pub fn VertexAttrib4bv_is_loaded(&self) -> bool {
34561            !self.glVertexAttrib4bv_p.load(RELAX).is_null()
34562        }
34563        /// [glVertexAttrib4d](http://docs.gl/gl4/glVertexAttrib4d)(index, x, y, z, w)
34564        /// * vector equivalent: [`glVertexAttrib4dv`]
34565        #[cfg_attr(feature = "inline", inline)]
34566        #[cfg_attr(feature = "inline_always", inline(always))]
34567        pub unsafe fn VertexAttrib4d(
34568            &self,
34569            index: GLuint,
34570            x: GLdouble,
34571            y: GLdouble,
34572            z: GLdouble,
34573            w: GLdouble,
34574        ) {
34575            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34576            {
34577                trace!(
34578                    "calling gl.VertexAttrib4d({:?}, {:?}, {:?}, {:?}, {:?});",
34579                    index,
34580                    x,
34581                    y,
34582                    z,
34583                    w
34584                );
34585            }
34586            let out = call_atomic_ptr_5arg(
34587                "glVertexAttrib4d",
34588                &self.glVertexAttrib4d_p,
34589                index,
34590                x,
34591                y,
34592                z,
34593                w,
34594            );
34595            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34596            {
34597                self.automatic_glGetError("glVertexAttrib4d");
34598            }
34599            out
34600        }
34601        #[doc(hidden)]
34602        pub unsafe fn VertexAttrib4d_load_with_dyn(
34603            &self,
34604            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34605        ) -> bool {
34606            load_dyn_name_atomic_ptr(
34607                get_proc_address,
34608                b"glVertexAttrib4d\0",
34609                &self.glVertexAttrib4d_p,
34610            )
34611        }
34612        #[inline]
34613        #[doc(hidden)]
34614        pub fn VertexAttrib4d_is_loaded(&self) -> bool {
34615            !self.glVertexAttrib4d_p.load(RELAX).is_null()
34616        }
34617        /// [glVertexAttrib4dv](http://docs.gl/gl4/glVertexAttrib4dv)(index, v)
34618        /// * `v` len: 4
34619        #[cfg_attr(feature = "inline", inline)]
34620        #[cfg_attr(feature = "inline_always", inline(always))]
34621        pub unsafe fn VertexAttrib4dv(&self, index: GLuint, v: *const GLdouble) {
34622            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34623            {
34624                trace!("calling gl.VertexAttrib4dv({:?}, {:p});", index, v);
34625            }
34626            let out =
34627                call_atomic_ptr_2arg("glVertexAttrib4dv", &self.glVertexAttrib4dv_p, index, v);
34628            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34629            {
34630                self.automatic_glGetError("glVertexAttrib4dv");
34631            }
34632            out
34633        }
34634        #[doc(hidden)]
34635        pub unsafe fn VertexAttrib4dv_load_with_dyn(
34636            &self,
34637            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34638        ) -> bool {
34639            load_dyn_name_atomic_ptr(
34640                get_proc_address,
34641                b"glVertexAttrib4dv\0",
34642                &self.glVertexAttrib4dv_p,
34643            )
34644        }
34645        #[inline]
34646        #[doc(hidden)]
34647        pub fn VertexAttrib4dv_is_loaded(&self) -> bool {
34648            !self.glVertexAttrib4dv_p.load(RELAX).is_null()
34649        }
34650        /// [glVertexAttrib4f](http://docs.gl/gl4/glVertexAttrib)(index, x, y, z, w)
34651        /// * vector equivalent: [`glVertexAttrib4fv`]
34652        #[cfg_attr(feature = "inline", inline)]
34653        #[cfg_attr(feature = "inline_always", inline(always))]
34654        pub unsafe fn VertexAttrib4f(
34655            &self,
34656            index: GLuint,
34657            x: GLfloat,
34658            y: GLfloat,
34659            z: GLfloat,
34660            w: GLfloat,
34661        ) {
34662            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34663            {
34664                trace!(
34665                    "calling gl.VertexAttrib4f({:?}, {:?}, {:?}, {:?}, {:?});",
34666                    index,
34667                    x,
34668                    y,
34669                    z,
34670                    w
34671                );
34672            }
34673            let out = call_atomic_ptr_5arg(
34674                "glVertexAttrib4f",
34675                &self.glVertexAttrib4f_p,
34676                index,
34677                x,
34678                y,
34679                z,
34680                w,
34681            );
34682            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34683            {
34684                self.automatic_glGetError("glVertexAttrib4f");
34685            }
34686            out
34687        }
34688        #[doc(hidden)]
34689        pub unsafe fn VertexAttrib4f_load_with_dyn(
34690            &self,
34691            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34692        ) -> bool {
34693            load_dyn_name_atomic_ptr(
34694                get_proc_address,
34695                b"glVertexAttrib4f\0",
34696                &self.glVertexAttrib4f_p,
34697            )
34698        }
34699        #[inline]
34700        #[doc(hidden)]
34701        pub fn VertexAttrib4f_is_loaded(&self) -> bool {
34702            !self.glVertexAttrib4f_p.load(RELAX).is_null()
34703        }
34704        /// [glVertexAttrib4fv](http://docs.gl/gl4/glVertexAttrib)(index, v)
34705        /// * `v` len: 4
34706        #[cfg_attr(feature = "inline", inline)]
34707        #[cfg_attr(feature = "inline_always", inline(always))]
34708        pub unsafe fn VertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) {
34709            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34710            {
34711                trace!("calling gl.VertexAttrib4fv({:?}, {:p});", index, v);
34712            }
34713            let out =
34714                call_atomic_ptr_2arg("glVertexAttrib4fv", &self.glVertexAttrib4fv_p, index, v);
34715            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34716            {
34717                self.automatic_glGetError("glVertexAttrib4fv");
34718            }
34719            out
34720        }
34721        #[doc(hidden)]
34722        pub unsafe fn VertexAttrib4fv_load_with_dyn(
34723            &self,
34724            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34725        ) -> bool {
34726            load_dyn_name_atomic_ptr(
34727                get_proc_address,
34728                b"glVertexAttrib4fv\0",
34729                &self.glVertexAttrib4fv_p,
34730            )
34731        }
34732        #[inline]
34733        #[doc(hidden)]
34734        pub fn VertexAttrib4fv_is_loaded(&self) -> bool {
34735            !self.glVertexAttrib4fv_p.load(RELAX).is_null()
34736        }
34737        /// [glVertexAttrib4iv](http://docs.gl/gl4/glVertexAttrib)(index, v)
34738        /// * `v` len: 4
34739        #[cfg_attr(feature = "inline", inline)]
34740        #[cfg_attr(feature = "inline_always", inline(always))]
34741        pub unsafe fn VertexAttrib4iv(&self, index: GLuint, v: *const GLint) {
34742            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34743            {
34744                trace!("calling gl.VertexAttrib4iv({:?}, {:p});", index, v);
34745            }
34746            let out =
34747                call_atomic_ptr_2arg("glVertexAttrib4iv", &self.glVertexAttrib4iv_p, index, v);
34748            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34749            {
34750                self.automatic_glGetError("glVertexAttrib4iv");
34751            }
34752            out
34753        }
34754        #[doc(hidden)]
34755        pub unsafe fn VertexAttrib4iv_load_with_dyn(
34756            &self,
34757            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34758        ) -> bool {
34759            load_dyn_name_atomic_ptr(
34760                get_proc_address,
34761                b"glVertexAttrib4iv\0",
34762                &self.glVertexAttrib4iv_p,
34763            )
34764        }
34765        #[inline]
34766        #[doc(hidden)]
34767        pub fn VertexAttrib4iv_is_loaded(&self) -> bool {
34768            !self.glVertexAttrib4iv_p.load(RELAX).is_null()
34769        }
34770        /// [glVertexAttrib4s](http://docs.gl/gl4/glVertexAttrib4s)(index, x, y, z, w)
34771        /// * vector equivalent: [`glVertexAttrib4sv`]
34772        #[cfg_attr(feature = "inline", inline)]
34773        #[cfg_attr(feature = "inline_always", inline(always))]
34774        pub unsafe fn VertexAttrib4s(
34775            &self,
34776            index: GLuint,
34777            x: GLshort,
34778            y: GLshort,
34779            z: GLshort,
34780            w: GLshort,
34781        ) {
34782            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34783            {
34784                trace!(
34785                    "calling gl.VertexAttrib4s({:?}, {:?}, {:?}, {:?}, {:?});",
34786                    index,
34787                    x,
34788                    y,
34789                    z,
34790                    w
34791                );
34792            }
34793            let out = call_atomic_ptr_5arg(
34794                "glVertexAttrib4s",
34795                &self.glVertexAttrib4s_p,
34796                index,
34797                x,
34798                y,
34799                z,
34800                w,
34801            );
34802            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34803            {
34804                self.automatic_glGetError("glVertexAttrib4s");
34805            }
34806            out
34807        }
34808        #[doc(hidden)]
34809        pub unsafe fn VertexAttrib4s_load_with_dyn(
34810            &self,
34811            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34812        ) -> bool {
34813            load_dyn_name_atomic_ptr(
34814                get_proc_address,
34815                b"glVertexAttrib4s\0",
34816                &self.glVertexAttrib4s_p,
34817            )
34818        }
34819        #[inline]
34820        #[doc(hidden)]
34821        pub fn VertexAttrib4s_is_loaded(&self) -> bool {
34822            !self.glVertexAttrib4s_p.load(RELAX).is_null()
34823        }
34824        /// [glVertexAttrib4sv](http://docs.gl/gl4/glVertexAttrib4sv)(index, v)
34825        /// * `v` len: 4
34826        #[cfg_attr(feature = "inline", inline)]
34827        #[cfg_attr(feature = "inline_always", inline(always))]
34828        pub unsafe fn VertexAttrib4sv(&self, index: GLuint, v: *const GLshort) {
34829            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34830            {
34831                trace!("calling gl.VertexAttrib4sv({:?}, {:p});", index, v);
34832            }
34833            let out =
34834                call_atomic_ptr_2arg("glVertexAttrib4sv", &self.glVertexAttrib4sv_p, index, v);
34835            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34836            {
34837                self.automatic_glGetError("glVertexAttrib4sv");
34838            }
34839            out
34840        }
34841        #[doc(hidden)]
34842        pub unsafe fn VertexAttrib4sv_load_with_dyn(
34843            &self,
34844            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34845        ) -> bool {
34846            load_dyn_name_atomic_ptr(
34847                get_proc_address,
34848                b"glVertexAttrib4sv\0",
34849                &self.glVertexAttrib4sv_p,
34850            )
34851        }
34852        #[inline]
34853        #[doc(hidden)]
34854        pub fn VertexAttrib4sv_is_loaded(&self) -> bool {
34855            !self.glVertexAttrib4sv_p.load(RELAX).is_null()
34856        }
34857        /// [glVertexAttrib4ubv](http://docs.gl/gl4/glVertexAttrib4ubv)(index, v)
34858        /// * `v` len: 4
34859        #[cfg_attr(feature = "inline", inline)]
34860        #[cfg_attr(feature = "inline_always", inline(always))]
34861        pub unsafe fn VertexAttrib4ubv(&self, index: GLuint, v: *const GLubyte) {
34862            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34863            {
34864                trace!("calling gl.VertexAttrib4ubv({:?}, {:p});", index, v);
34865            }
34866            let out =
34867                call_atomic_ptr_2arg("glVertexAttrib4ubv", &self.glVertexAttrib4ubv_p, index, v);
34868            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34869            {
34870                self.automatic_glGetError("glVertexAttrib4ubv");
34871            }
34872            out
34873        }
34874        #[doc(hidden)]
34875        pub unsafe fn VertexAttrib4ubv_load_with_dyn(
34876            &self,
34877            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34878        ) -> bool {
34879            load_dyn_name_atomic_ptr(
34880                get_proc_address,
34881                b"glVertexAttrib4ubv\0",
34882                &self.glVertexAttrib4ubv_p,
34883            )
34884        }
34885        #[inline]
34886        #[doc(hidden)]
34887        pub fn VertexAttrib4ubv_is_loaded(&self) -> bool {
34888            !self.glVertexAttrib4ubv_p.load(RELAX).is_null()
34889        }
34890        /// [glVertexAttrib4uiv](http://docs.gl/gl4/glVertexAttrib)(index, v)
34891        /// * `v` len: 4
34892        #[cfg_attr(feature = "inline", inline)]
34893        #[cfg_attr(feature = "inline_always", inline(always))]
34894        pub unsafe fn VertexAttrib4uiv(&self, index: GLuint, v: *const GLuint) {
34895            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34896            {
34897                trace!("calling gl.VertexAttrib4uiv({:?}, {:p});", index, v);
34898            }
34899            let out =
34900                call_atomic_ptr_2arg("glVertexAttrib4uiv", &self.glVertexAttrib4uiv_p, index, v);
34901            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34902            {
34903                self.automatic_glGetError("glVertexAttrib4uiv");
34904            }
34905            out
34906        }
34907        #[doc(hidden)]
34908        pub unsafe fn VertexAttrib4uiv_load_with_dyn(
34909            &self,
34910            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34911        ) -> bool {
34912            load_dyn_name_atomic_ptr(
34913                get_proc_address,
34914                b"glVertexAttrib4uiv\0",
34915                &self.glVertexAttrib4uiv_p,
34916            )
34917        }
34918        #[inline]
34919        #[doc(hidden)]
34920        pub fn VertexAttrib4uiv_is_loaded(&self) -> bool {
34921            !self.glVertexAttrib4uiv_p.load(RELAX).is_null()
34922        }
34923        /// [glVertexAttrib4usv](http://docs.gl/gl4/glVertexAttrib4usv)(index, v)
34924        /// * `v` len: 4
34925        #[cfg_attr(feature = "inline", inline)]
34926        #[cfg_attr(feature = "inline_always", inline(always))]
34927        pub unsafe fn VertexAttrib4usv(&self, index: GLuint, v: *const GLushort) {
34928            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34929            {
34930                trace!("calling gl.VertexAttrib4usv({:?}, {:p});", index, v);
34931            }
34932            let out =
34933                call_atomic_ptr_2arg("glVertexAttrib4usv", &self.glVertexAttrib4usv_p, index, v);
34934            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34935            {
34936                self.automatic_glGetError("glVertexAttrib4usv");
34937            }
34938            out
34939        }
34940        #[doc(hidden)]
34941        pub unsafe fn VertexAttrib4usv_load_with_dyn(
34942            &self,
34943            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34944        ) -> bool {
34945            load_dyn_name_atomic_ptr(
34946                get_proc_address,
34947                b"glVertexAttrib4usv\0",
34948                &self.glVertexAttrib4usv_p,
34949            )
34950        }
34951        #[inline]
34952        #[doc(hidden)]
34953        pub fn VertexAttrib4usv_is_loaded(&self) -> bool {
34954            !self.glVertexAttrib4usv_p.load(RELAX).is_null()
34955        }
34956        /// [glVertexAttribBinding](http://docs.gl/gl4/glVertexAttribBinding)(attribindex, bindingindex)
34957        #[cfg_attr(feature = "inline", inline)]
34958        #[cfg_attr(feature = "inline_always", inline(always))]
34959        pub unsafe fn VertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) {
34960            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34961            {
34962                trace!(
34963                    "calling gl.VertexAttribBinding({:?}, {:?});",
34964                    attribindex,
34965                    bindingindex
34966                );
34967            }
34968            let out = call_atomic_ptr_2arg(
34969                "glVertexAttribBinding",
34970                &self.glVertexAttribBinding_p,
34971                attribindex,
34972                bindingindex,
34973            );
34974            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34975            {
34976                self.automatic_glGetError("glVertexAttribBinding");
34977            }
34978            out
34979        }
34980        #[doc(hidden)]
34981        pub unsafe fn VertexAttribBinding_load_with_dyn(
34982            &self,
34983            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34984        ) -> bool {
34985            load_dyn_name_atomic_ptr(
34986                get_proc_address,
34987                b"glVertexAttribBinding\0",
34988                &self.glVertexAttribBinding_p,
34989            )
34990        }
34991        #[inline]
34992        #[doc(hidden)]
34993        pub fn VertexAttribBinding_is_loaded(&self) -> bool {
34994            !self.glVertexAttribBinding_p.load(RELAX).is_null()
34995        }
34996        /// [glVertexAttribDivisor](http://docs.gl/gl4/glVertexAttribDivisor)(index, divisor)
34997        #[cfg_attr(feature = "inline", inline)]
34998        #[cfg_attr(feature = "inline_always", inline(always))]
34999        pub unsafe fn VertexAttribDivisor(&self, index: GLuint, divisor: GLuint) {
35000            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35001            {
35002                trace!(
35003                    "calling gl.VertexAttribDivisor({:?}, {:?});",
35004                    index,
35005                    divisor
35006                );
35007            }
35008            let out = call_atomic_ptr_2arg(
35009                "glVertexAttribDivisor",
35010                &self.glVertexAttribDivisor_p,
35011                index,
35012                divisor,
35013            );
35014            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35015            {
35016                self.automatic_glGetError("glVertexAttribDivisor");
35017            }
35018            out
35019        }
35020        #[doc(hidden)]
35021        pub unsafe fn VertexAttribDivisor_load_with_dyn(
35022            &self,
35023            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35024        ) -> bool {
35025            load_dyn_name_atomic_ptr(
35026                get_proc_address,
35027                b"glVertexAttribDivisor\0",
35028                &self.glVertexAttribDivisor_p,
35029            )
35030        }
35031        #[inline]
35032        #[doc(hidden)]
35033        pub fn VertexAttribDivisor_is_loaded(&self) -> bool {
35034            !self.glVertexAttribDivisor_p.load(RELAX).is_null()
35035        }
35036        /// [glVertexAttribDivisorARB](http://docs.gl/gl4/glVertexAttribDivisorARB)(index, divisor)
35037        /// * alias of: [`glVertexAttribDivisor`]
35038        #[cfg_attr(feature = "inline", inline)]
35039        #[cfg_attr(feature = "inline_always", inline(always))]
35040        pub unsafe fn VertexAttribDivisorARB(&self, index: GLuint, divisor: GLuint) {
35041            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35042            {
35043                trace!(
35044                    "calling gl.VertexAttribDivisorARB({:?}, {:?});",
35045                    index,
35046                    divisor
35047                );
35048            }
35049            let out = call_atomic_ptr_2arg(
35050                "glVertexAttribDivisorARB",
35051                &self.glVertexAttribDivisorARB_p,
35052                index,
35053                divisor,
35054            );
35055            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35056            {
35057                self.automatic_glGetError("glVertexAttribDivisorARB");
35058            }
35059            out
35060        }
35061        #[doc(hidden)]
35062        pub unsafe fn VertexAttribDivisorARB_load_with_dyn(
35063            &self,
35064            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35065        ) -> bool {
35066            load_dyn_name_atomic_ptr(
35067                get_proc_address,
35068                b"glVertexAttribDivisorARB\0",
35069                &self.glVertexAttribDivisorARB_p,
35070            )
35071        }
35072        #[inline]
35073        #[doc(hidden)]
35074        pub fn VertexAttribDivisorARB_is_loaded(&self) -> bool {
35075            !self.glVertexAttribDivisorARB_p.load(RELAX).is_null()
35076        }
35077        /// [glVertexAttribFormat](http://docs.gl/gl4/glVertexAttribFormat)(attribindex, size, type_, normalized, relativeoffset)
35078        /// * `type_` group: VertexAttribType
35079        #[cfg_attr(feature = "inline", inline)]
35080        #[cfg_attr(feature = "inline_always", inline(always))]
35081        pub unsafe fn VertexAttribFormat(
35082            &self,
35083            attribindex: GLuint,
35084            size: GLint,
35085            type_: GLenum,
35086            normalized: GLboolean,
35087            relativeoffset: GLuint,
35088        ) {
35089            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35090            {
35091                trace!(
35092                    "calling gl.VertexAttribFormat({:?}, {:?}, {:#X}, {:?}, {:?});",
35093                    attribindex,
35094                    size,
35095                    type_,
35096                    normalized,
35097                    relativeoffset
35098                );
35099            }
35100            let out = call_atomic_ptr_5arg(
35101                "glVertexAttribFormat",
35102                &self.glVertexAttribFormat_p,
35103                attribindex,
35104                size,
35105                type_,
35106                normalized,
35107                relativeoffset,
35108            );
35109            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35110            {
35111                self.automatic_glGetError("glVertexAttribFormat");
35112            }
35113            out
35114        }
35115        #[doc(hidden)]
35116        pub unsafe fn VertexAttribFormat_load_with_dyn(
35117            &self,
35118            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35119        ) -> bool {
35120            load_dyn_name_atomic_ptr(
35121                get_proc_address,
35122                b"glVertexAttribFormat\0",
35123                &self.glVertexAttribFormat_p,
35124            )
35125        }
35126        #[inline]
35127        #[doc(hidden)]
35128        pub fn VertexAttribFormat_is_loaded(&self) -> bool {
35129            !self.glVertexAttribFormat_p.load(RELAX).is_null()
35130        }
35131        /// [glVertexAttribI1i](http://docs.gl/gl4/glVertexAttribI)(index, x)
35132        /// * vector equivalent: [`glVertexAttribI1iv`]
35133        #[cfg_attr(feature = "inline", inline)]
35134        #[cfg_attr(feature = "inline_always", inline(always))]
35135        pub unsafe fn VertexAttribI1i(&self, index: GLuint, x: GLint) {
35136            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35137            {
35138                trace!("calling gl.VertexAttribI1i({:?}, {:?});", index, x);
35139            }
35140            let out =
35141                call_atomic_ptr_2arg("glVertexAttribI1i", &self.glVertexAttribI1i_p, index, x);
35142            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35143            {
35144                self.automatic_glGetError("glVertexAttribI1i");
35145            }
35146            out
35147        }
35148        #[doc(hidden)]
35149        pub unsafe fn VertexAttribI1i_load_with_dyn(
35150            &self,
35151            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35152        ) -> bool {
35153            load_dyn_name_atomic_ptr(
35154                get_proc_address,
35155                b"glVertexAttribI1i\0",
35156                &self.glVertexAttribI1i_p,
35157            )
35158        }
35159        #[inline]
35160        #[doc(hidden)]
35161        pub fn VertexAttribI1i_is_loaded(&self) -> bool {
35162            !self.glVertexAttribI1i_p.load(RELAX).is_null()
35163        }
35164        /// [glVertexAttribI1iv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35165        /// * `v` len: 1
35166        #[cfg_attr(feature = "inline", inline)]
35167        #[cfg_attr(feature = "inline_always", inline(always))]
35168        pub unsafe fn VertexAttribI1iv(&self, index: GLuint, v: *const GLint) {
35169            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35170            {
35171                trace!("calling gl.VertexAttribI1iv({:?}, {:p});", index, v);
35172            }
35173            let out =
35174                call_atomic_ptr_2arg("glVertexAttribI1iv", &self.glVertexAttribI1iv_p, index, v);
35175            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35176            {
35177                self.automatic_glGetError("glVertexAttribI1iv");
35178            }
35179            out
35180        }
35181        #[doc(hidden)]
35182        pub unsafe fn VertexAttribI1iv_load_with_dyn(
35183            &self,
35184            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35185        ) -> bool {
35186            load_dyn_name_atomic_ptr(
35187                get_proc_address,
35188                b"glVertexAttribI1iv\0",
35189                &self.glVertexAttribI1iv_p,
35190            )
35191        }
35192        #[inline]
35193        #[doc(hidden)]
35194        pub fn VertexAttribI1iv_is_loaded(&self) -> bool {
35195            !self.glVertexAttribI1iv_p.load(RELAX).is_null()
35196        }
35197        /// [glVertexAttribI1ui](http://docs.gl/gl4/glVertexAttribI)(index, x)
35198        /// * vector equivalent: [`glVertexAttribI1uiv`]
35199        #[cfg_attr(feature = "inline", inline)]
35200        #[cfg_attr(feature = "inline_always", inline(always))]
35201        pub unsafe fn VertexAttribI1ui(&self, index: GLuint, x: GLuint) {
35202            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35203            {
35204                trace!("calling gl.VertexAttribI1ui({:?}, {:?});", index, x);
35205            }
35206            let out =
35207                call_atomic_ptr_2arg("glVertexAttribI1ui", &self.glVertexAttribI1ui_p, index, x);
35208            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35209            {
35210                self.automatic_glGetError("glVertexAttribI1ui");
35211            }
35212            out
35213        }
35214        #[doc(hidden)]
35215        pub unsafe fn VertexAttribI1ui_load_with_dyn(
35216            &self,
35217            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35218        ) -> bool {
35219            load_dyn_name_atomic_ptr(
35220                get_proc_address,
35221                b"glVertexAttribI1ui\0",
35222                &self.glVertexAttribI1ui_p,
35223            )
35224        }
35225        #[inline]
35226        #[doc(hidden)]
35227        pub fn VertexAttribI1ui_is_loaded(&self) -> bool {
35228            !self.glVertexAttribI1ui_p.load(RELAX).is_null()
35229        }
35230        /// [glVertexAttribI1uiv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35231        /// * `v` len: 1
35232        #[cfg_attr(feature = "inline", inline)]
35233        #[cfg_attr(feature = "inline_always", inline(always))]
35234        pub unsafe fn VertexAttribI1uiv(&self, index: GLuint, v: *const GLuint) {
35235            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35236            {
35237                trace!("calling gl.VertexAttribI1uiv({:?}, {:p});", index, v);
35238            }
35239            let out =
35240                call_atomic_ptr_2arg("glVertexAttribI1uiv", &self.glVertexAttribI1uiv_p, index, v);
35241            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35242            {
35243                self.automatic_glGetError("glVertexAttribI1uiv");
35244            }
35245            out
35246        }
35247        #[doc(hidden)]
35248        pub unsafe fn VertexAttribI1uiv_load_with_dyn(
35249            &self,
35250            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35251        ) -> bool {
35252            load_dyn_name_atomic_ptr(
35253                get_proc_address,
35254                b"glVertexAttribI1uiv\0",
35255                &self.glVertexAttribI1uiv_p,
35256            )
35257        }
35258        #[inline]
35259        #[doc(hidden)]
35260        pub fn VertexAttribI1uiv_is_loaded(&self) -> bool {
35261            !self.glVertexAttribI1uiv_p.load(RELAX).is_null()
35262        }
35263        /// [glVertexAttribI2i](http://docs.gl/gl4/glVertexAttribI)(index, x, y)
35264        /// * vector equivalent: [`glVertexAttribI2iv`]
35265        #[cfg_attr(feature = "inline", inline)]
35266        #[cfg_attr(feature = "inline_always", inline(always))]
35267        pub unsafe fn VertexAttribI2i(&self, index: GLuint, x: GLint, y: GLint) {
35268            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35269            {
35270                trace!("calling gl.VertexAttribI2i({:?}, {:?}, {:?});", index, x, y);
35271            }
35272            let out =
35273                call_atomic_ptr_3arg("glVertexAttribI2i", &self.glVertexAttribI2i_p, index, x, y);
35274            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35275            {
35276                self.automatic_glGetError("glVertexAttribI2i");
35277            }
35278            out
35279        }
35280        #[doc(hidden)]
35281        pub unsafe fn VertexAttribI2i_load_with_dyn(
35282            &self,
35283            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35284        ) -> bool {
35285            load_dyn_name_atomic_ptr(
35286                get_proc_address,
35287                b"glVertexAttribI2i\0",
35288                &self.glVertexAttribI2i_p,
35289            )
35290        }
35291        #[inline]
35292        #[doc(hidden)]
35293        pub fn VertexAttribI2i_is_loaded(&self) -> bool {
35294            !self.glVertexAttribI2i_p.load(RELAX).is_null()
35295        }
35296        /// [glVertexAttribI2iv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35297        /// * `v` len: 2
35298        #[cfg_attr(feature = "inline", inline)]
35299        #[cfg_attr(feature = "inline_always", inline(always))]
35300        pub unsafe fn VertexAttribI2iv(&self, index: GLuint, v: *const GLint) {
35301            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35302            {
35303                trace!("calling gl.VertexAttribI2iv({:?}, {:p});", index, v);
35304            }
35305            let out =
35306                call_atomic_ptr_2arg("glVertexAttribI2iv", &self.glVertexAttribI2iv_p, index, v);
35307            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35308            {
35309                self.automatic_glGetError("glVertexAttribI2iv");
35310            }
35311            out
35312        }
35313        #[doc(hidden)]
35314        pub unsafe fn VertexAttribI2iv_load_with_dyn(
35315            &self,
35316            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35317        ) -> bool {
35318            load_dyn_name_atomic_ptr(
35319                get_proc_address,
35320                b"glVertexAttribI2iv\0",
35321                &self.glVertexAttribI2iv_p,
35322            )
35323        }
35324        #[inline]
35325        #[doc(hidden)]
35326        pub fn VertexAttribI2iv_is_loaded(&self) -> bool {
35327            !self.glVertexAttribI2iv_p.load(RELAX).is_null()
35328        }
35329        /// [glVertexAttribI2ui](http://docs.gl/gl4/glVertexAttribI)(index, x, y)
35330        /// * vector equivalent: [`glVertexAttribI2uiv`]
35331        #[cfg_attr(feature = "inline", inline)]
35332        #[cfg_attr(feature = "inline_always", inline(always))]
35333        pub unsafe fn VertexAttribI2ui(&self, index: GLuint, x: GLuint, y: GLuint) {
35334            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35335            {
35336                trace!(
35337                    "calling gl.VertexAttribI2ui({:?}, {:?}, {:?});",
35338                    index,
35339                    x,
35340                    y
35341                );
35342            }
35343            let out = call_atomic_ptr_3arg(
35344                "glVertexAttribI2ui",
35345                &self.glVertexAttribI2ui_p,
35346                index,
35347                x,
35348                y,
35349            );
35350            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35351            {
35352                self.automatic_glGetError("glVertexAttribI2ui");
35353            }
35354            out
35355        }
35356        #[doc(hidden)]
35357        pub unsafe fn VertexAttribI2ui_load_with_dyn(
35358            &self,
35359            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35360        ) -> bool {
35361            load_dyn_name_atomic_ptr(
35362                get_proc_address,
35363                b"glVertexAttribI2ui\0",
35364                &self.glVertexAttribI2ui_p,
35365            )
35366        }
35367        #[inline]
35368        #[doc(hidden)]
35369        pub fn VertexAttribI2ui_is_loaded(&self) -> bool {
35370            !self.glVertexAttribI2ui_p.load(RELAX).is_null()
35371        }
35372        /// [glVertexAttribI2uiv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35373        /// * `v` len: 2
35374        #[cfg_attr(feature = "inline", inline)]
35375        #[cfg_attr(feature = "inline_always", inline(always))]
35376        pub unsafe fn VertexAttribI2uiv(&self, index: GLuint, v: *const GLuint) {
35377            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35378            {
35379                trace!("calling gl.VertexAttribI2uiv({:?}, {:p});", index, v);
35380            }
35381            let out =
35382                call_atomic_ptr_2arg("glVertexAttribI2uiv", &self.glVertexAttribI2uiv_p, index, v);
35383            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35384            {
35385                self.automatic_glGetError("glVertexAttribI2uiv");
35386            }
35387            out
35388        }
35389        #[doc(hidden)]
35390        pub unsafe fn VertexAttribI2uiv_load_with_dyn(
35391            &self,
35392            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35393        ) -> bool {
35394            load_dyn_name_atomic_ptr(
35395                get_proc_address,
35396                b"glVertexAttribI2uiv\0",
35397                &self.glVertexAttribI2uiv_p,
35398            )
35399        }
35400        #[inline]
35401        #[doc(hidden)]
35402        pub fn VertexAttribI2uiv_is_loaded(&self) -> bool {
35403            !self.glVertexAttribI2uiv_p.load(RELAX).is_null()
35404        }
35405        /// [glVertexAttribI3i](http://docs.gl/gl4/glVertexAttribI)(index, x, y, z)
35406        /// * vector equivalent: [`glVertexAttribI3iv`]
35407        #[cfg_attr(feature = "inline", inline)]
35408        #[cfg_attr(feature = "inline_always", inline(always))]
35409        pub unsafe fn VertexAttribI3i(&self, index: GLuint, x: GLint, y: GLint, z: GLint) {
35410            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35411            {
35412                trace!(
35413                    "calling gl.VertexAttribI3i({:?}, {:?}, {:?}, {:?});",
35414                    index,
35415                    x,
35416                    y,
35417                    z
35418                );
35419            }
35420            let out = call_atomic_ptr_4arg(
35421                "glVertexAttribI3i",
35422                &self.glVertexAttribI3i_p,
35423                index,
35424                x,
35425                y,
35426                z,
35427            );
35428            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35429            {
35430                self.automatic_glGetError("glVertexAttribI3i");
35431            }
35432            out
35433        }
35434        #[doc(hidden)]
35435        pub unsafe fn VertexAttribI3i_load_with_dyn(
35436            &self,
35437            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35438        ) -> bool {
35439            load_dyn_name_atomic_ptr(
35440                get_proc_address,
35441                b"glVertexAttribI3i\0",
35442                &self.glVertexAttribI3i_p,
35443            )
35444        }
35445        #[inline]
35446        #[doc(hidden)]
35447        pub fn VertexAttribI3i_is_loaded(&self) -> bool {
35448            !self.glVertexAttribI3i_p.load(RELAX).is_null()
35449        }
35450        /// [glVertexAttribI3iv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35451        /// * `v` len: 3
35452        #[cfg_attr(feature = "inline", inline)]
35453        #[cfg_attr(feature = "inline_always", inline(always))]
35454        pub unsafe fn VertexAttribI3iv(&self, index: GLuint, v: *const GLint) {
35455            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35456            {
35457                trace!("calling gl.VertexAttribI3iv({:?}, {:p});", index, v);
35458            }
35459            let out =
35460                call_atomic_ptr_2arg("glVertexAttribI3iv", &self.glVertexAttribI3iv_p, index, v);
35461            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35462            {
35463                self.automatic_glGetError("glVertexAttribI3iv");
35464            }
35465            out
35466        }
35467        #[doc(hidden)]
35468        pub unsafe fn VertexAttribI3iv_load_with_dyn(
35469            &self,
35470            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35471        ) -> bool {
35472            load_dyn_name_atomic_ptr(
35473                get_proc_address,
35474                b"glVertexAttribI3iv\0",
35475                &self.glVertexAttribI3iv_p,
35476            )
35477        }
35478        #[inline]
35479        #[doc(hidden)]
35480        pub fn VertexAttribI3iv_is_loaded(&self) -> bool {
35481            !self.glVertexAttribI3iv_p.load(RELAX).is_null()
35482        }
35483        /// [glVertexAttribI3ui](http://docs.gl/gl4/glVertexAttribI)(index, x, y, z)
35484        /// * vector equivalent: [`glVertexAttribI3uiv`]
35485        #[cfg_attr(feature = "inline", inline)]
35486        #[cfg_attr(feature = "inline_always", inline(always))]
35487        pub unsafe fn VertexAttribI3ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint) {
35488            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35489            {
35490                trace!(
35491                    "calling gl.VertexAttribI3ui({:?}, {:?}, {:?}, {:?});",
35492                    index,
35493                    x,
35494                    y,
35495                    z
35496                );
35497            }
35498            let out = call_atomic_ptr_4arg(
35499                "glVertexAttribI3ui",
35500                &self.glVertexAttribI3ui_p,
35501                index,
35502                x,
35503                y,
35504                z,
35505            );
35506            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35507            {
35508                self.automatic_glGetError("glVertexAttribI3ui");
35509            }
35510            out
35511        }
35512        #[doc(hidden)]
35513        pub unsafe fn VertexAttribI3ui_load_with_dyn(
35514            &self,
35515            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35516        ) -> bool {
35517            load_dyn_name_atomic_ptr(
35518                get_proc_address,
35519                b"glVertexAttribI3ui\0",
35520                &self.glVertexAttribI3ui_p,
35521            )
35522        }
35523        #[inline]
35524        #[doc(hidden)]
35525        pub fn VertexAttribI3ui_is_loaded(&self) -> bool {
35526            !self.glVertexAttribI3ui_p.load(RELAX).is_null()
35527        }
35528        /// [glVertexAttribI3uiv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35529        /// * `v` len: 3
35530        #[cfg_attr(feature = "inline", inline)]
35531        #[cfg_attr(feature = "inline_always", inline(always))]
35532        pub unsafe fn VertexAttribI3uiv(&self, index: GLuint, v: *const GLuint) {
35533            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35534            {
35535                trace!("calling gl.VertexAttribI3uiv({:?}, {:p});", index, v);
35536            }
35537            let out =
35538                call_atomic_ptr_2arg("glVertexAttribI3uiv", &self.glVertexAttribI3uiv_p, index, v);
35539            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35540            {
35541                self.automatic_glGetError("glVertexAttribI3uiv");
35542            }
35543            out
35544        }
35545        #[doc(hidden)]
35546        pub unsafe fn VertexAttribI3uiv_load_with_dyn(
35547            &self,
35548            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35549        ) -> bool {
35550            load_dyn_name_atomic_ptr(
35551                get_proc_address,
35552                b"glVertexAttribI3uiv\0",
35553                &self.glVertexAttribI3uiv_p,
35554            )
35555        }
35556        #[inline]
35557        #[doc(hidden)]
35558        pub fn VertexAttribI3uiv_is_loaded(&self) -> bool {
35559            !self.glVertexAttribI3uiv_p.load(RELAX).is_null()
35560        }
35561        /// [glVertexAttribI4bv](http://docs.gl/gl4/glVertexAttribI4bv)(index, v)
35562        /// * `v` len: 4
35563        #[cfg_attr(feature = "inline", inline)]
35564        #[cfg_attr(feature = "inline_always", inline(always))]
35565        pub unsafe fn VertexAttribI4bv(&self, index: GLuint, v: *const GLbyte) {
35566            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35567            {
35568                trace!("calling gl.VertexAttribI4bv({:?}, {:p});", index, v);
35569            }
35570            let out =
35571                call_atomic_ptr_2arg("glVertexAttribI4bv", &self.glVertexAttribI4bv_p, index, v);
35572            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35573            {
35574                self.automatic_glGetError("glVertexAttribI4bv");
35575            }
35576            out
35577        }
35578        #[doc(hidden)]
35579        pub unsafe fn VertexAttribI4bv_load_with_dyn(
35580            &self,
35581            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35582        ) -> bool {
35583            load_dyn_name_atomic_ptr(
35584                get_proc_address,
35585                b"glVertexAttribI4bv\0",
35586                &self.glVertexAttribI4bv_p,
35587            )
35588        }
35589        #[inline]
35590        #[doc(hidden)]
35591        pub fn VertexAttribI4bv_is_loaded(&self) -> bool {
35592            !self.glVertexAttribI4bv_p.load(RELAX).is_null()
35593        }
35594        /// [glVertexAttribI4i](http://docs.gl/gl4/glVertexAttribI)(index, x, y, z, w)
35595        /// * vector equivalent: [`glVertexAttribI4iv`]
35596        #[cfg_attr(feature = "inline", inline)]
35597        #[cfg_attr(feature = "inline_always", inline(always))]
35598        pub unsafe fn VertexAttribI4i(
35599            &self,
35600            index: GLuint,
35601            x: GLint,
35602            y: GLint,
35603            z: GLint,
35604            w: GLint,
35605        ) {
35606            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35607            {
35608                trace!(
35609                    "calling gl.VertexAttribI4i({:?}, {:?}, {:?}, {:?}, {:?});",
35610                    index,
35611                    x,
35612                    y,
35613                    z,
35614                    w
35615                );
35616            }
35617            let out = call_atomic_ptr_5arg(
35618                "glVertexAttribI4i",
35619                &self.glVertexAttribI4i_p,
35620                index,
35621                x,
35622                y,
35623                z,
35624                w,
35625            );
35626            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35627            {
35628                self.automatic_glGetError("glVertexAttribI4i");
35629            }
35630            out
35631        }
35632        #[doc(hidden)]
35633        pub unsafe fn VertexAttribI4i_load_with_dyn(
35634            &self,
35635            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35636        ) -> bool {
35637            load_dyn_name_atomic_ptr(
35638                get_proc_address,
35639                b"glVertexAttribI4i\0",
35640                &self.glVertexAttribI4i_p,
35641            )
35642        }
35643        #[inline]
35644        #[doc(hidden)]
35645        pub fn VertexAttribI4i_is_loaded(&self) -> bool {
35646            !self.glVertexAttribI4i_p.load(RELAX).is_null()
35647        }
35648        /// [glVertexAttribI4iv](http://docs.gl/gl4/glVertexAttrib)(index, v)
35649        /// * `v` len: 4
35650        #[cfg_attr(feature = "inline", inline)]
35651        #[cfg_attr(feature = "inline_always", inline(always))]
35652        pub unsafe fn VertexAttribI4iv(&self, index: GLuint, v: *const GLint) {
35653            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35654            {
35655                trace!("calling gl.VertexAttribI4iv({:?}, {:p});", index, v);
35656            }
35657            let out =
35658                call_atomic_ptr_2arg("glVertexAttribI4iv", &self.glVertexAttribI4iv_p, index, v);
35659            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35660            {
35661                self.automatic_glGetError("glVertexAttribI4iv");
35662            }
35663            out
35664        }
35665        #[doc(hidden)]
35666        pub unsafe fn VertexAttribI4iv_load_with_dyn(
35667            &self,
35668            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35669        ) -> bool {
35670            load_dyn_name_atomic_ptr(
35671                get_proc_address,
35672                b"glVertexAttribI4iv\0",
35673                &self.glVertexAttribI4iv_p,
35674            )
35675        }
35676        #[inline]
35677        #[doc(hidden)]
35678        pub fn VertexAttribI4iv_is_loaded(&self) -> bool {
35679            !self.glVertexAttribI4iv_p.load(RELAX).is_null()
35680        }
35681        /// [glVertexAttribI4sv](http://docs.gl/gl4/glVertexAttribI4sv)(index, v)
35682        /// * `v` len: 4
35683        #[cfg_attr(feature = "inline", inline)]
35684        #[cfg_attr(feature = "inline_always", inline(always))]
35685        pub unsafe fn VertexAttribI4sv(&self, index: GLuint, v: *const GLshort) {
35686            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35687            {
35688                trace!("calling gl.VertexAttribI4sv({:?}, {:p});", index, v);
35689            }
35690            let out =
35691                call_atomic_ptr_2arg("glVertexAttribI4sv", &self.glVertexAttribI4sv_p, index, v);
35692            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35693            {
35694                self.automatic_glGetError("glVertexAttribI4sv");
35695            }
35696            out
35697        }
35698        #[doc(hidden)]
35699        pub unsafe fn VertexAttribI4sv_load_with_dyn(
35700            &self,
35701            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35702        ) -> bool {
35703            load_dyn_name_atomic_ptr(
35704                get_proc_address,
35705                b"glVertexAttribI4sv\0",
35706                &self.glVertexAttribI4sv_p,
35707            )
35708        }
35709        #[inline]
35710        #[doc(hidden)]
35711        pub fn VertexAttribI4sv_is_loaded(&self) -> bool {
35712            !self.glVertexAttribI4sv_p.load(RELAX).is_null()
35713        }
35714        /// [glVertexAttribI4ubv](http://docs.gl/gl4/glVertexAttribI4ubv)(index, v)
35715        /// * `v` len: 4
35716        #[cfg_attr(feature = "inline", inline)]
35717        #[cfg_attr(feature = "inline_always", inline(always))]
35718        pub unsafe fn VertexAttribI4ubv(&self, index: GLuint, v: *const GLubyte) {
35719            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35720            {
35721                trace!("calling gl.VertexAttribI4ubv({:?}, {:p});", index, v);
35722            }
35723            let out =
35724                call_atomic_ptr_2arg("glVertexAttribI4ubv", &self.glVertexAttribI4ubv_p, index, v);
35725            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35726            {
35727                self.automatic_glGetError("glVertexAttribI4ubv");
35728            }
35729            out
35730        }
35731        #[doc(hidden)]
35732        pub unsafe fn VertexAttribI4ubv_load_with_dyn(
35733            &self,
35734            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35735        ) -> bool {
35736            load_dyn_name_atomic_ptr(
35737                get_proc_address,
35738                b"glVertexAttribI4ubv\0",
35739                &self.glVertexAttribI4ubv_p,
35740            )
35741        }
35742        #[inline]
35743        #[doc(hidden)]
35744        pub fn VertexAttribI4ubv_is_loaded(&self) -> bool {
35745            !self.glVertexAttribI4ubv_p.load(RELAX).is_null()
35746        }
35747        /// [glVertexAttribI4ui](http://docs.gl/gl4/glVertexAttrib)(index, x, y, z, w)
35748        /// * vector equivalent: [`glVertexAttribI4uiv`]
35749        #[cfg_attr(feature = "inline", inline)]
35750        #[cfg_attr(feature = "inline_always", inline(always))]
35751        pub unsafe fn VertexAttribI4ui(
35752            &self,
35753            index: GLuint,
35754            x: GLuint,
35755            y: GLuint,
35756            z: GLuint,
35757            w: GLuint,
35758        ) {
35759            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35760            {
35761                trace!(
35762                    "calling gl.VertexAttribI4ui({:?}, {:?}, {:?}, {:?}, {:?});",
35763                    index,
35764                    x,
35765                    y,
35766                    z,
35767                    w
35768                );
35769            }
35770            let out = call_atomic_ptr_5arg(
35771                "glVertexAttribI4ui",
35772                &self.glVertexAttribI4ui_p,
35773                index,
35774                x,
35775                y,
35776                z,
35777                w,
35778            );
35779            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35780            {
35781                self.automatic_glGetError("glVertexAttribI4ui");
35782            }
35783            out
35784        }
35785        #[doc(hidden)]
35786        pub unsafe fn VertexAttribI4ui_load_with_dyn(
35787            &self,
35788            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35789        ) -> bool {
35790            load_dyn_name_atomic_ptr(
35791                get_proc_address,
35792                b"glVertexAttribI4ui\0",
35793                &self.glVertexAttribI4ui_p,
35794            )
35795        }
35796        #[inline]
35797        #[doc(hidden)]
35798        pub fn VertexAttribI4ui_is_loaded(&self) -> bool {
35799            !self.glVertexAttribI4ui_p.load(RELAX).is_null()
35800        }
35801        /// [glVertexAttribI4uiv](http://docs.gl/gl4/glVertexAttrib)(index, v)
35802        /// * `v` len: 4
35803        #[cfg_attr(feature = "inline", inline)]
35804        #[cfg_attr(feature = "inline_always", inline(always))]
35805        pub unsafe fn VertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) {
35806            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35807            {
35808                trace!("calling gl.VertexAttribI4uiv({:?}, {:p});", index, v);
35809            }
35810            let out =
35811                call_atomic_ptr_2arg("glVertexAttribI4uiv", &self.glVertexAttribI4uiv_p, index, v);
35812            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35813            {
35814                self.automatic_glGetError("glVertexAttribI4uiv");
35815            }
35816            out
35817        }
35818        #[doc(hidden)]
35819        pub unsafe fn VertexAttribI4uiv_load_with_dyn(
35820            &self,
35821            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35822        ) -> bool {
35823            load_dyn_name_atomic_ptr(
35824                get_proc_address,
35825                b"glVertexAttribI4uiv\0",
35826                &self.glVertexAttribI4uiv_p,
35827            )
35828        }
35829        #[inline]
35830        #[doc(hidden)]
35831        pub fn VertexAttribI4uiv_is_loaded(&self) -> bool {
35832            !self.glVertexAttribI4uiv_p.load(RELAX).is_null()
35833        }
35834        /// [glVertexAttribI4usv](http://docs.gl/gl4/glVertexAttribI4usv)(index, v)
35835        /// * `v` len: 4
35836        #[cfg_attr(feature = "inline", inline)]
35837        #[cfg_attr(feature = "inline_always", inline(always))]
35838        pub unsafe fn VertexAttribI4usv(&self, index: GLuint, v: *const GLushort) {
35839            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35840            {
35841                trace!("calling gl.VertexAttribI4usv({:?}, {:p});", index, v);
35842            }
35843            let out =
35844                call_atomic_ptr_2arg("glVertexAttribI4usv", &self.glVertexAttribI4usv_p, index, v);
35845            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35846            {
35847                self.automatic_glGetError("glVertexAttribI4usv");
35848            }
35849            out
35850        }
35851        #[doc(hidden)]
35852        pub unsafe fn VertexAttribI4usv_load_with_dyn(
35853            &self,
35854            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35855        ) -> bool {
35856            load_dyn_name_atomic_ptr(
35857                get_proc_address,
35858                b"glVertexAttribI4usv\0",
35859                &self.glVertexAttribI4usv_p,
35860            )
35861        }
35862        #[inline]
35863        #[doc(hidden)]
35864        pub fn VertexAttribI4usv_is_loaded(&self) -> bool {
35865            !self.glVertexAttribI4usv_p.load(RELAX).is_null()
35866        }
35867        /// [glVertexAttribIFormat](http://docs.gl/gl4/glVertexAttribIFormat)(attribindex, size, type_, relativeoffset)
35868        /// * `type_` group: VertexAttribIType
35869        #[cfg_attr(feature = "inline", inline)]
35870        #[cfg_attr(feature = "inline_always", inline(always))]
35871        pub unsafe fn VertexAttribIFormat(
35872            &self,
35873            attribindex: GLuint,
35874            size: GLint,
35875            type_: GLenum,
35876            relativeoffset: GLuint,
35877        ) {
35878            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35879            {
35880                trace!(
35881                    "calling gl.VertexAttribIFormat({:?}, {:?}, {:#X}, {:?});",
35882                    attribindex,
35883                    size,
35884                    type_,
35885                    relativeoffset
35886                );
35887            }
35888            let out = call_atomic_ptr_4arg(
35889                "glVertexAttribIFormat",
35890                &self.glVertexAttribIFormat_p,
35891                attribindex,
35892                size,
35893                type_,
35894                relativeoffset,
35895            );
35896            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35897            {
35898                self.automatic_glGetError("glVertexAttribIFormat");
35899            }
35900            out
35901        }
35902        #[doc(hidden)]
35903        pub unsafe fn VertexAttribIFormat_load_with_dyn(
35904            &self,
35905            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35906        ) -> bool {
35907            load_dyn_name_atomic_ptr(
35908                get_proc_address,
35909                b"glVertexAttribIFormat\0",
35910                &self.glVertexAttribIFormat_p,
35911            )
35912        }
35913        #[inline]
35914        #[doc(hidden)]
35915        pub fn VertexAttribIFormat_is_loaded(&self) -> bool {
35916            !self.glVertexAttribIFormat_p.load(RELAX).is_null()
35917        }
35918        /// [glVertexAttribIPointer](http://docs.gl/gl4/glVertexAttribPointer)(index, size, type_, stride, pointer)
35919        /// * `type_` group: VertexAttribIType
35920        /// * `pointer` len: COMPSIZE(size,type,stride)
35921        #[cfg_attr(feature = "inline", inline)]
35922        #[cfg_attr(feature = "inline_always", inline(always))]
35923        pub unsafe fn VertexAttribIPointer(
35924            &self,
35925            index: GLuint,
35926            size: GLint,
35927            type_: GLenum,
35928            stride: GLsizei,
35929            pointer: *const c_void,
35930        ) {
35931            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35932            {
35933                trace!(
35934                    "calling gl.VertexAttribIPointer({:?}, {:?}, {:#X}, {:?}, {:p});",
35935                    index,
35936                    size,
35937                    type_,
35938                    stride,
35939                    pointer
35940                );
35941            }
35942            let out = call_atomic_ptr_5arg(
35943                "glVertexAttribIPointer",
35944                &self.glVertexAttribIPointer_p,
35945                index,
35946                size,
35947                type_,
35948                stride,
35949                pointer,
35950            );
35951            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35952            {
35953                self.automatic_glGetError("glVertexAttribIPointer");
35954            }
35955            out
35956        }
35957        #[doc(hidden)]
35958        pub unsafe fn VertexAttribIPointer_load_with_dyn(
35959            &self,
35960            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35961        ) -> bool {
35962            load_dyn_name_atomic_ptr(
35963                get_proc_address,
35964                b"glVertexAttribIPointer\0",
35965                &self.glVertexAttribIPointer_p,
35966            )
35967        }
35968        #[inline]
35969        #[doc(hidden)]
35970        pub fn VertexAttribIPointer_is_loaded(&self) -> bool {
35971            !self.glVertexAttribIPointer_p.load(RELAX).is_null()
35972        }
35973        /// [glVertexAttribL1d](http://docs.gl/gl4/glVertexAttribL1d)(index, x)
35974        #[cfg_attr(feature = "inline", inline)]
35975        #[cfg_attr(feature = "inline_always", inline(always))]
35976        pub unsafe fn VertexAttribL1d(&self, index: GLuint, x: GLdouble) {
35977            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35978            {
35979                trace!("calling gl.VertexAttribL1d({:?}, {:?});", index, x);
35980            }
35981            let out =
35982                call_atomic_ptr_2arg("glVertexAttribL1d", &self.glVertexAttribL1d_p, index, x);
35983            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35984            {
35985                self.automatic_glGetError("glVertexAttribL1d");
35986            }
35987            out
35988        }
35989        #[doc(hidden)]
35990        pub unsafe fn VertexAttribL1d_load_with_dyn(
35991            &self,
35992            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35993        ) -> bool {
35994            load_dyn_name_atomic_ptr(
35995                get_proc_address,
35996                b"glVertexAttribL1d\0",
35997                &self.glVertexAttribL1d_p,
35998            )
35999        }
36000        #[inline]
36001        #[doc(hidden)]
36002        pub fn VertexAttribL1d_is_loaded(&self) -> bool {
36003            !self.glVertexAttribL1d_p.load(RELAX).is_null()
36004        }
36005        /// [glVertexAttribL1dv](http://docs.gl/gl4/glVertexAttribL1dv)(index, v)
36006        /// * `v` len: 1
36007        #[cfg_attr(feature = "inline", inline)]
36008        #[cfg_attr(feature = "inline_always", inline(always))]
36009        pub unsafe fn VertexAttribL1dv(&self, index: GLuint, v: *const GLdouble) {
36010            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36011            {
36012                trace!("calling gl.VertexAttribL1dv({:?}, {:p});", index, v);
36013            }
36014            let out =
36015                call_atomic_ptr_2arg("glVertexAttribL1dv", &self.glVertexAttribL1dv_p, index, v);
36016            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36017            {
36018                self.automatic_glGetError("glVertexAttribL1dv");
36019            }
36020            out
36021        }
36022        #[doc(hidden)]
36023        pub unsafe fn VertexAttribL1dv_load_with_dyn(
36024            &self,
36025            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36026        ) -> bool {
36027            load_dyn_name_atomic_ptr(
36028                get_proc_address,
36029                b"glVertexAttribL1dv\0",
36030                &self.glVertexAttribL1dv_p,
36031            )
36032        }
36033        #[inline]
36034        #[doc(hidden)]
36035        pub fn VertexAttribL1dv_is_loaded(&self) -> bool {
36036            !self.glVertexAttribL1dv_p.load(RELAX).is_null()
36037        }
36038        /// [glVertexAttribL2d](http://docs.gl/gl4/glVertexAttribL2d)(index, x, y)
36039        #[cfg_attr(feature = "inline", inline)]
36040        #[cfg_attr(feature = "inline_always", inline(always))]
36041        pub unsafe fn VertexAttribL2d(&self, index: GLuint, x: GLdouble, y: GLdouble) {
36042            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36043            {
36044                trace!("calling gl.VertexAttribL2d({:?}, {:?}, {:?});", index, x, y);
36045            }
36046            let out =
36047                call_atomic_ptr_3arg("glVertexAttribL2d", &self.glVertexAttribL2d_p, index, x, y);
36048            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36049            {
36050                self.automatic_glGetError("glVertexAttribL2d");
36051            }
36052            out
36053        }
36054        #[doc(hidden)]
36055        pub unsafe fn VertexAttribL2d_load_with_dyn(
36056            &self,
36057            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36058        ) -> bool {
36059            load_dyn_name_atomic_ptr(
36060                get_proc_address,
36061                b"glVertexAttribL2d\0",
36062                &self.glVertexAttribL2d_p,
36063            )
36064        }
36065        #[inline]
36066        #[doc(hidden)]
36067        pub fn VertexAttribL2d_is_loaded(&self) -> bool {
36068            !self.glVertexAttribL2d_p.load(RELAX).is_null()
36069        }
36070        /// [glVertexAttribL2dv](http://docs.gl/gl4/glVertexAttribL2dv)(index, v)
36071        /// * `v` len: 2
36072        #[cfg_attr(feature = "inline", inline)]
36073        #[cfg_attr(feature = "inline_always", inline(always))]
36074        pub unsafe fn VertexAttribL2dv(&self, index: GLuint, v: *const GLdouble) {
36075            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36076            {
36077                trace!("calling gl.VertexAttribL2dv({:?}, {:p});", index, v);
36078            }
36079            let out =
36080                call_atomic_ptr_2arg("glVertexAttribL2dv", &self.glVertexAttribL2dv_p, index, v);
36081            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36082            {
36083                self.automatic_glGetError("glVertexAttribL2dv");
36084            }
36085            out
36086        }
36087        #[doc(hidden)]
36088        pub unsafe fn VertexAttribL2dv_load_with_dyn(
36089            &self,
36090            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36091        ) -> bool {
36092            load_dyn_name_atomic_ptr(
36093                get_proc_address,
36094                b"glVertexAttribL2dv\0",
36095                &self.glVertexAttribL2dv_p,
36096            )
36097        }
36098        #[inline]
36099        #[doc(hidden)]
36100        pub fn VertexAttribL2dv_is_loaded(&self) -> bool {
36101            !self.glVertexAttribL2dv_p.load(RELAX).is_null()
36102        }
36103        /// [glVertexAttribL3d](http://docs.gl/gl4/glVertexAttribL3d)(index, x, y, z)
36104        #[cfg_attr(feature = "inline", inline)]
36105        #[cfg_attr(feature = "inline_always", inline(always))]
36106        pub unsafe fn VertexAttribL3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) {
36107            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36108            {
36109                trace!(
36110                    "calling gl.VertexAttribL3d({:?}, {:?}, {:?}, {:?});",
36111                    index,
36112                    x,
36113                    y,
36114                    z
36115                );
36116            }
36117            let out = call_atomic_ptr_4arg(
36118                "glVertexAttribL3d",
36119                &self.glVertexAttribL3d_p,
36120                index,
36121                x,
36122                y,
36123                z,
36124            );
36125            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36126            {
36127                self.automatic_glGetError("glVertexAttribL3d");
36128            }
36129            out
36130        }
36131        #[doc(hidden)]
36132        pub unsafe fn VertexAttribL3d_load_with_dyn(
36133            &self,
36134            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36135        ) -> bool {
36136            load_dyn_name_atomic_ptr(
36137                get_proc_address,
36138                b"glVertexAttribL3d\0",
36139                &self.glVertexAttribL3d_p,
36140            )
36141        }
36142        #[inline]
36143        #[doc(hidden)]
36144        pub fn VertexAttribL3d_is_loaded(&self) -> bool {
36145            !self.glVertexAttribL3d_p.load(RELAX).is_null()
36146        }
36147        /// [glVertexAttribL3dv](http://docs.gl/gl4/glVertexAttribL3dv)(index, v)
36148        /// * `v` len: 3
36149        #[cfg_attr(feature = "inline", inline)]
36150        #[cfg_attr(feature = "inline_always", inline(always))]
36151        pub unsafe fn VertexAttribL3dv(&self, index: GLuint, v: *const GLdouble) {
36152            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36153            {
36154                trace!("calling gl.VertexAttribL3dv({:?}, {:p});", index, v);
36155            }
36156            let out =
36157                call_atomic_ptr_2arg("glVertexAttribL3dv", &self.glVertexAttribL3dv_p, index, v);
36158            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36159            {
36160                self.automatic_glGetError("glVertexAttribL3dv");
36161            }
36162            out
36163        }
36164        #[doc(hidden)]
36165        pub unsafe fn VertexAttribL3dv_load_with_dyn(
36166            &self,
36167            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36168        ) -> bool {
36169            load_dyn_name_atomic_ptr(
36170                get_proc_address,
36171                b"glVertexAttribL3dv\0",
36172                &self.glVertexAttribL3dv_p,
36173            )
36174        }
36175        #[inline]
36176        #[doc(hidden)]
36177        pub fn VertexAttribL3dv_is_loaded(&self) -> bool {
36178            !self.glVertexAttribL3dv_p.load(RELAX).is_null()
36179        }
36180        /// [glVertexAttribL4d](http://docs.gl/gl4/glVertexAttribL4d)(index, x, y, z, w)
36181        #[cfg_attr(feature = "inline", inline)]
36182        #[cfg_attr(feature = "inline_always", inline(always))]
36183        pub unsafe fn VertexAttribL4d(
36184            &self,
36185            index: GLuint,
36186            x: GLdouble,
36187            y: GLdouble,
36188            z: GLdouble,
36189            w: GLdouble,
36190        ) {
36191            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36192            {
36193                trace!(
36194                    "calling gl.VertexAttribL4d({:?}, {:?}, {:?}, {:?}, {:?});",
36195                    index,
36196                    x,
36197                    y,
36198                    z,
36199                    w
36200                );
36201            }
36202            let out = call_atomic_ptr_5arg(
36203                "glVertexAttribL4d",
36204                &self.glVertexAttribL4d_p,
36205                index,
36206                x,
36207                y,
36208                z,
36209                w,
36210            );
36211            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36212            {
36213                self.automatic_glGetError("glVertexAttribL4d");
36214            }
36215            out
36216        }
36217        #[doc(hidden)]
36218        pub unsafe fn VertexAttribL4d_load_with_dyn(
36219            &self,
36220            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36221        ) -> bool {
36222            load_dyn_name_atomic_ptr(
36223                get_proc_address,
36224                b"glVertexAttribL4d\0",
36225                &self.glVertexAttribL4d_p,
36226            )
36227        }
36228        #[inline]
36229        #[doc(hidden)]
36230        pub fn VertexAttribL4d_is_loaded(&self) -> bool {
36231            !self.glVertexAttribL4d_p.load(RELAX).is_null()
36232        }
36233        /// [glVertexAttribL4dv](http://docs.gl/gl4/glVertexAttribL4dv)(index, v)
36234        /// * `v` len: 4
36235        #[cfg_attr(feature = "inline", inline)]
36236        #[cfg_attr(feature = "inline_always", inline(always))]
36237        pub unsafe fn VertexAttribL4dv(&self, index: GLuint, v: *const GLdouble) {
36238            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36239            {
36240                trace!("calling gl.VertexAttribL4dv({:?}, {:p});", index, v);
36241            }
36242            let out =
36243                call_atomic_ptr_2arg("glVertexAttribL4dv", &self.glVertexAttribL4dv_p, index, v);
36244            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36245            {
36246                self.automatic_glGetError("glVertexAttribL4dv");
36247            }
36248            out
36249        }
36250        #[doc(hidden)]
36251        pub unsafe fn VertexAttribL4dv_load_with_dyn(
36252            &self,
36253            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36254        ) -> bool {
36255            load_dyn_name_atomic_ptr(
36256                get_proc_address,
36257                b"glVertexAttribL4dv\0",
36258                &self.glVertexAttribL4dv_p,
36259            )
36260        }
36261        #[inline]
36262        #[doc(hidden)]
36263        pub fn VertexAttribL4dv_is_loaded(&self) -> bool {
36264            !self.glVertexAttribL4dv_p.load(RELAX).is_null()
36265        }
36266        /// [glVertexAttribLFormat](http://docs.gl/gl4/glVertexAttribLFormat)(attribindex, size, type_, relativeoffset)
36267        /// * `type_` group: VertexAttribLType
36268        #[cfg_attr(feature = "inline", inline)]
36269        #[cfg_attr(feature = "inline_always", inline(always))]
36270        pub unsafe fn VertexAttribLFormat(
36271            &self,
36272            attribindex: GLuint,
36273            size: GLint,
36274            type_: GLenum,
36275            relativeoffset: GLuint,
36276        ) {
36277            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36278            {
36279                trace!(
36280                    "calling gl.VertexAttribLFormat({:?}, {:?}, {:#X}, {:?});",
36281                    attribindex,
36282                    size,
36283                    type_,
36284                    relativeoffset
36285                );
36286            }
36287            let out = call_atomic_ptr_4arg(
36288                "glVertexAttribLFormat",
36289                &self.glVertexAttribLFormat_p,
36290                attribindex,
36291                size,
36292                type_,
36293                relativeoffset,
36294            );
36295            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36296            {
36297                self.automatic_glGetError("glVertexAttribLFormat");
36298            }
36299            out
36300        }
36301        #[doc(hidden)]
36302        pub unsafe fn VertexAttribLFormat_load_with_dyn(
36303            &self,
36304            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36305        ) -> bool {
36306            load_dyn_name_atomic_ptr(
36307                get_proc_address,
36308                b"glVertexAttribLFormat\0",
36309                &self.glVertexAttribLFormat_p,
36310            )
36311        }
36312        #[inline]
36313        #[doc(hidden)]
36314        pub fn VertexAttribLFormat_is_loaded(&self) -> bool {
36315            !self.glVertexAttribLFormat_p.load(RELAX).is_null()
36316        }
36317        /// [glVertexAttribLPointer](http://docs.gl/gl4/glVertexAttribLPointer)(index, size, type_, stride, pointer)
36318        /// * `type_` group: VertexAttribLType
36319        /// * `pointer` len: size
36320        #[cfg_attr(feature = "inline", inline)]
36321        #[cfg_attr(feature = "inline_always", inline(always))]
36322        pub unsafe fn VertexAttribLPointer(
36323            &self,
36324            index: GLuint,
36325            size: GLint,
36326            type_: GLenum,
36327            stride: GLsizei,
36328            pointer: *const c_void,
36329        ) {
36330            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36331            {
36332                trace!(
36333                    "calling gl.VertexAttribLPointer({:?}, {:?}, {:#X}, {:?}, {:p});",
36334                    index,
36335                    size,
36336                    type_,
36337                    stride,
36338                    pointer
36339                );
36340            }
36341            let out = call_atomic_ptr_5arg(
36342                "glVertexAttribLPointer",
36343                &self.glVertexAttribLPointer_p,
36344                index,
36345                size,
36346                type_,
36347                stride,
36348                pointer,
36349            );
36350            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36351            {
36352                self.automatic_glGetError("glVertexAttribLPointer");
36353            }
36354            out
36355        }
36356        #[doc(hidden)]
36357        pub unsafe fn VertexAttribLPointer_load_with_dyn(
36358            &self,
36359            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36360        ) -> bool {
36361            load_dyn_name_atomic_ptr(
36362                get_proc_address,
36363                b"glVertexAttribLPointer\0",
36364                &self.glVertexAttribLPointer_p,
36365            )
36366        }
36367        #[inline]
36368        #[doc(hidden)]
36369        pub fn VertexAttribLPointer_is_loaded(&self) -> bool {
36370            !self.glVertexAttribLPointer_p.load(RELAX).is_null()
36371        }
36372        /// [glVertexAttribP1ui](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36373        /// * `type_` group: VertexAttribPointerType
36374        #[cfg_attr(feature = "inline", inline)]
36375        #[cfg_attr(feature = "inline_always", inline(always))]
36376        pub unsafe fn VertexAttribP1ui(
36377            &self,
36378            index: GLuint,
36379            type_: GLenum,
36380            normalized: GLboolean,
36381            value: GLuint,
36382        ) {
36383            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36384            {
36385                trace!(
36386                    "calling gl.VertexAttribP1ui({:?}, {:#X}, {:?}, {:?});",
36387                    index,
36388                    type_,
36389                    normalized,
36390                    value
36391                );
36392            }
36393            let out = call_atomic_ptr_4arg(
36394                "glVertexAttribP1ui",
36395                &self.glVertexAttribP1ui_p,
36396                index,
36397                type_,
36398                normalized,
36399                value,
36400            );
36401            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36402            {
36403                self.automatic_glGetError("glVertexAttribP1ui");
36404            }
36405            out
36406        }
36407        #[doc(hidden)]
36408        pub unsafe fn VertexAttribP1ui_load_with_dyn(
36409            &self,
36410            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36411        ) -> bool {
36412            load_dyn_name_atomic_ptr(
36413                get_proc_address,
36414                b"glVertexAttribP1ui\0",
36415                &self.glVertexAttribP1ui_p,
36416            )
36417        }
36418        #[inline]
36419        #[doc(hidden)]
36420        pub fn VertexAttribP1ui_is_loaded(&self) -> bool {
36421            !self.glVertexAttribP1ui_p.load(RELAX).is_null()
36422        }
36423        /// [glVertexAttribP1uiv](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36424        /// * `type_` group: VertexAttribPointerType
36425        /// * `value` len: 1
36426        #[cfg_attr(feature = "inline", inline)]
36427        #[cfg_attr(feature = "inline_always", inline(always))]
36428        pub unsafe fn VertexAttribP1uiv(
36429            &self,
36430            index: GLuint,
36431            type_: GLenum,
36432            normalized: GLboolean,
36433            value: *const GLuint,
36434        ) {
36435            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36436            {
36437                trace!(
36438                    "calling gl.VertexAttribP1uiv({:?}, {:#X}, {:?}, {:p});",
36439                    index,
36440                    type_,
36441                    normalized,
36442                    value
36443                );
36444            }
36445            let out = call_atomic_ptr_4arg(
36446                "glVertexAttribP1uiv",
36447                &self.glVertexAttribP1uiv_p,
36448                index,
36449                type_,
36450                normalized,
36451                value,
36452            );
36453            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36454            {
36455                self.automatic_glGetError("glVertexAttribP1uiv");
36456            }
36457            out
36458        }
36459        #[doc(hidden)]
36460        pub unsafe fn VertexAttribP1uiv_load_with_dyn(
36461            &self,
36462            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36463        ) -> bool {
36464            load_dyn_name_atomic_ptr(
36465                get_proc_address,
36466                b"glVertexAttribP1uiv\0",
36467                &self.glVertexAttribP1uiv_p,
36468            )
36469        }
36470        #[inline]
36471        #[doc(hidden)]
36472        pub fn VertexAttribP1uiv_is_loaded(&self) -> bool {
36473            !self.glVertexAttribP1uiv_p.load(RELAX).is_null()
36474        }
36475        /// [glVertexAttribP2ui](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36476        /// * `type_` group: VertexAttribPointerType
36477        #[cfg_attr(feature = "inline", inline)]
36478        #[cfg_attr(feature = "inline_always", inline(always))]
36479        pub unsafe fn VertexAttribP2ui(
36480            &self,
36481            index: GLuint,
36482            type_: GLenum,
36483            normalized: GLboolean,
36484            value: GLuint,
36485        ) {
36486            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36487            {
36488                trace!(
36489                    "calling gl.VertexAttribP2ui({:?}, {:#X}, {:?}, {:?});",
36490                    index,
36491                    type_,
36492                    normalized,
36493                    value
36494                );
36495            }
36496            let out = call_atomic_ptr_4arg(
36497                "glVertexAttribP2ui",
36498                &self.glVertexAttribP2ui_p,
36499                index,
36500                type_,
36501                normalized,
36502                value,
36503            );
36504            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36505            {
36506                self.automatic_glGetError("glVertexAttribP2ui");
36507            }
36508            out
36509        }
36510        #[doc(hidden)]
36511        pub unsafe fn VertexAttribP2ui_load_with_dyn(
36512            &self,
36513            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36514        ) -> bool {
36515            load_dyn_name_atomic_ptr(
36516                get_proc_address,
36517                b"glVertexAttribP2ui\0",
36518                &self.glVertexAttribP2ui_p,
36519            )
36520        }
36521        #[inline]
36522        #[doc(hidden)]
36523        pub fn VertexAttribP2ui_is_loaded(&self) -> bool {
36524            !self.glVertexAttribP2ui_p.load(RELAX).is_null()
36525        }
36526        /// [glVertexAttribP2uiv](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36527        /// * `type_` group: VertexAttribPointerType
36528        /// * `value` len: 1
36529        #[cfg_attr(feature = "inline", inline)]
36530        #[cfg_attr(feature = "inline_always", inline(always))]
36531        pub unsafe fn VertexAttribP2uiv(
36532            &self,
36533            index: GLuint,
36534            type_: GLenum,
36535            normalized: GLboolean,
36536            value: *const GLuint,
36537        ) {
36538            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36539            {
36540                trace!(
36541                    "calling gl.VertexAttribP2uiv({:?}, {:#X}, {:?}, {:p});",
36542                    index,
36543                    type_,
36544                    normalized,
36545                    value
36546                );
36547            }
36548            let out = call_atomic_ptr_4arg(
36549                "glVertexAttribP2uiv",
36550                &self.glVertexAttribP2uiv_p,
36551                index,
36552                type_,
36553                normalized,
36554                value,
36555            );
36556            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36557            {
36558                self.automatic_glGetError("glVertexAttribP2uiv");
36559            }
36560            out
36561        }
36562        #[doc(hidden)]
36563        pub unsafe fn VertexAttribP2uiv_load_with_dyn(
36564            &self,
36565            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36566        ) -> bool {
36567            load_dyn_name_atomic_ptr(
36568                get_proc_address,
36569                b"glVertexAttribP2uiv\0",
36570                &self.glVertexAttribP2uiv_p,
36571            )
36572        }
36573        #[inline]
36574        #[doc(hidden)]
36575        pub fn VertexAttribP2uiv_is_loaded(&self) -> bool {
36576            !self.glVertexAttribP2uiv_p.load(RELAX).is_null()
36577        }
36578        /// [glVertexAttribP3ui](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36579        /// * `type_` group: VertexAttribPointerType
36580        #[cfg_attr(feature = "inline", inline)]
36581        #[cfg_attr(feature = "inline_always", inline(always))]
36582        pub unsafe fn VertexAttribP3ui(
36583            &self,
36584            index: GLuint,
36585            type_: GLenum,
36586            normalized: GLboolean,
36587            value: GLuint,
36588        ) {
36589            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36590            {
36591                trace!(
36592                    "calling gl.VertexAttribP3ui({:?}, {:#X}, {:?}, {:?});",
36593                    index,
36594                    type_,
36595                    normalized,
36596                    value
36597                );
36598            }
36599            let out = call_atomic_ptr_4arg(
36600                "glVertexAttribP3ui",
36601                &self.glVertexAttribP3ui_p,
36602                index,
36603                type_,
36604                normalized,
36605                value,
36606            );
36607            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36608            {
36609                self.automatic_glGetError("glVertexAttribP3ui");
36610            }
36611            out
36612        }
36613        #[doc(hidden)]
36614        pub unsafe fn VertexAttribP3ui_load_with_dyn(
36615            &self,
36616            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36617        ) -> bool {
36618            load_dyn_name_atomic_ptr(
36619                get_proc_address,
36620                b"glVertexAttribP3ui\0",
36621                &self.glVertexAttribP3ui_p,
36622            )
36623        }
36624        #[inline]
36625        #[doc(hidden)]
36626        pub fn VertexAttribP3ui_is_loaded(&self) -> bool {
36627            !self.glVertexAttribP3ui_p.load(RELAX).is_null()
36628        }
36629        /// [glVertexAttribP3uiv](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36630        /// * `type_` group: VertexAttribPointerType
36631        /// * `value` len: 1
36632        #[cfg_attr(feature = "inline", inline)]
36633        #[cfg_attr(feature = "inline_always", inline(always))]
36634        pub unsafe fn VertexAttribP3uiv(
36635            &self,
36636            index: GLuint,
36637            type_: GLenum,
36638            normalized: GLboolean,
36639            value: *const GLuint,
36640        ) {
36641            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36642            {
36643                trace!(
36644                    "calling gl.VertexAttribP3uiv({:?}, {:#X}, {:?}, {:p});",
36645                    index,
36646                    type_,
36647                    normalized,
36648                    value
36649                );
36650            }
36651            let out = call_atomic_ptr_4arg(
36652                "glVertexAttribP3uiv",
36653                &self.glVertexAttribP3uiv_p,
36654                index,
36655                type_,
36656                normalized,
36657                value,
36658            );
36659            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36660            {
36661                self.automatic_glGetError("glVertexAttribP3uiv");
36662            }
36663            out
36664        }
36665        #[doc(hidden)]
36666        pub unsafe fn VertexAttribP3uiv_load_with_dyn(
36667            &self,
36668            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36669        ) -> bool {
36670            load_dyn_name_atomic_ptr(
36671                get_proc_address,
36672                b"glVertexAttribP3uiv\0",
36673                &self.glVertexAttribP3uiv_p,
36674            )
36675        }
36676        #[inline]
36677        #[doc(hidden)]
36678        pub fn VertexAttribP3uiv_is_loaded(&self) -> bool {
36679            !self.glVertexAttribP3uiv_p.load(RELAX).is_null()
36680        }
36681        /// [glVertexAttribP4ui](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36682        /// * `type_` group: VertexAttribPointerType
36683        #[cfg_attr(feature = "inline", inline)]
36684        #[cfg_attr(feature = "inline_always", inline(always))]
36685        pub unsafe fn VertexAttribP4ui(
36686            &self,
36687            index: GLuint,
36688            type_: GLenum,
36689            normalized: GLboolean,
36690            value: GLuint,
36691        ) {
36692            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36693            {
36694                trace!(
36695                    "calling gl.VertexAttribP4ui({:?}, {:#X}, {:?}, {:?});",
36696                    index,
36697                    type_,
36698                    normalized,
36699                    value
36700                );
36701            }
36702            let out = call_atomic_ptr_4arg(
36703                "glVertexAttribP4ui",
36704                &self.glVertexAttribP4ui_p,
36705                index,
36706                type_,
36707                normalized,
36708                value,
36709            );
36710            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36711            {
36712                self.automatic_glGetError("glVertexAttribP4ui");
36713            }
36714            out
36715        }
36716        #[doc(hidden)]
36717        pub unsafe fn VertexAttribP4ui_load_with_dyn(
36718            &self,
36719            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36720        ) -> bool {
36721            load_dyn_name_atomic_ptr(
36722                get_proc_address,
36723                b"glVertexAttribP4ui\0",
36724                &self.glVertexAttribP4ui_p,
36725            )
36726        }
36727        #[inline]
36728        #[doc(hidden)]
36729        pub fn VertexAttribP4ui_is_loaded(&self) -> bool {
36730            !self.glVertexAttribP4ui_p.load(RELAX).is_null()
36731        }
36732        /// [glVertexAttribP4uiv](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36733        /// * `type_` group: VertexAttribPointerType
36734        /// * `value` len: 1
36735        #[cfg_attr(feature = "inline", inline)]
36736        #[cfg_attr(feature = "inline_always", inline(always))]
36737        pub unsafe fn VertexAttribP4uiv(
36738            &self,
36739            index: GLuint,
36740            type_: GLenum,
36741            normalized: GLboolean,
36742            value: *const GLuint,
36743        ) {
36744            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36745            {
36746                trace!(
36747                    "calling gl.VertexAttribP4uiv({:?}, {:#X}, {:?}, {:p});",
36748                    index,
36749                    type_,
36750                    normalized,
36751                    value
36752                );
36753            }
36754            let out = call_atomic_ptr_4arg(
36755                "glVertexAttribP4uiv",
36756                &self.glVertexAttribP4uiv_p,
36757                index,
36758                type_,
36759                normalized,
36760                value,
36761            );
36762            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36763            {
36764                self.automatic_glGetError("glVertexAttribP4uiv");
36765            }
36766            out
36767        }
36768        #[doc(hidden)]
36769        pub unsafe fn VertexAttribP4uiv_load_with_dyn(
36770            &self,
36771            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36772        ) -> bool {
36773            load_dyn_name_atomic_ptr(
36774                get_proc_address,
36775                b"glVertexAttribP4uiv\0",
36776                &self.glVertexAttribP4uiv_p,
36777            )
36778        }
36779        #[inline]
36780        #[doc(hidden)]
36781        pub fn VertexAttribP4uiv_is_loaded(&self) -> bool {
36782            !self.glVertexAttribP4uiv_p.load(RELAX).is_null()
36783        }
36784        /// [glVertexAttribPointer](http://docs.gl/gl4/glVertexAttribPointer)(index, size, type_, normalized, stride, pointer)
36785        /// * `type_` group: VertexAttribPointerType
36786        /// * `pointer` len: COMPSIZE(size,type,stride)
36787        #[cfg_attr(feature = "inline", inline)]
36788        #[cfg_attr(feature = "inline_always", inline(always))]
36789        pub unsafe fn VertexAttribPointer(
36790            &self,
36791            index: GLuint,
36792            size: GLint,
36793            type_: GLenum,
36794            normalized: GLboolean,
36795            stride: GLsizei,
36796            pointer: *const c_void,
36797        ) {
36798            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36799            {
36800                trace!(
36801                    "calling gl.VertexAttribPointer({:?}, {:?}, {:#X}, {:?}, {:?}, {:p});",
36802                    index,
36803                    size,
36804                    type_,
36805                    normalized,
36806                    stride,
36807                    pointer
36808                );
36809            }
36810            let out = call_atomic_ptr_6arg(
36811                "glVertexAttribPointer",
36812                &self.glVertexAttribPointer_p,
36813                index,
36814                size,
36815                type_,
36816                normalized,
36817                stride,
36818                pointer,
36819            );
36820            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36821            {
36822                self.automatic_glGetError("glVertexAttribPointer");
36823            }
36824            out
36825        }
36826        #[doc(hidden)]
36827        pub unsafe fn VertexAttribPointer_load_with_dyn(
36828            &self,
36829            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36830        ) -> bool {
36831            load_dyn_name_atomic_ptr(
36832                get_proc_address,
36833                b"glVertexAttribPointer\0",
36834                &self.glVertexAttribPointer_p,
36835            )
36836        }
36837        #[inline]
36838        #[doc(hidden)]
36839        pub fn VertexAttribPointer_is_loaded(&self) -> bool {
36840            !self.glVertexAttribPointer_p.load(RELAX).is_null()
36841        }
36842        /// [glVertexBindingDivisor](http://docs.gl/gl4/glVertexBindingDivisor)(bindingindex, divisor)
36843        #[cfg_attr(feature = "inline", inline)]
36844        #[cfg_attr(feature = "inline_always", inline(always))]
36845        pub unsafe fn VertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) {
36846            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36847            {
36848                trace!(
36849                    "calling gl.VertexBindingDivisor({:?}, {:?});",
36850                    bindingindex,
36851                    divisor
36852                );
36853            }
36854            let out = call_atomic_ptr_2arg(
36855                "glVertexBindingDivisor",
36856                &self.glVertexBindingDivisor_p,
36857                bindingindex,
36858                divisor,
36859            );
36860            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36861            {
36862                self.automatic_glGetError("glVertexBindingDivisor");
36863            }
36864            out
36865        }
36866        #[doc(hidden)]
36867        pub unsafe fn VertexBindingDivisor_load_with_dyn(
36868            &self,
36869            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36870        ) -> bool {
36871            load_dyn_name_atomic_ptr(
36872                get_proc_address,
36873                b"glVertexBindingDivisor\0",
36874                &self.glVertexBindingDivisor_p,
36875            )
36876        }
36877        #[inline]
36878        #[doc(hidden)]
36879        pub fn VertexBindingDivisor_is_loaded(&self) -> bool {
36880            !self.glVertexBindingDivisor_p.load(RELAX).is_null()
36881        }
36882        /// [glViewport](http://docs.gl/gl4/glViewport)(x, y, width, height)
36883        /// * `x` group: WinCoord
36884        /// * `y` group: WinCoord
36885        #[cfg_attr(feature = "inline", inline)]
36886        #[cfg_attr(feature = "inline_always", inline(always))]
36887        pub unsafe fn Viewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) {
36888            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36889            {
36890                trace!(
36891                    "calling gl.Viewport({:?}, {:?}, {:?}, {:?});",
36892                    x,
36893                    y,
36894                    width,
36895                    height
36896                );
36897            }
36898            let out = call_atomic_ptr_4arg("glViewport", &self.glViewport_p, x, y, width, height);
36899            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36900            {
36901                self.automatic_glGetError("glViewport");
36902            }
36903            out
36904        }
36905        #[doc(hidden)]
36906        pub unsafe fn Viewport_load_with_dyn(
36907            &self,
36908            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36909        ) -> bool {
36910            load_dyn_name_atomic_ptr(get_proc_address, b"glViewport\0", &self.glViewport_p)
36911        }
36912        #[inline]
36913        #[doc(hidden)]
36914        pub fn Viewport_is_loaded(&self) -> bool {
36915            !self.glViewport_p.load(RELAX).is_null()
36916        }
36917        /// [glViewportArrayv](http://docs.gl/gl4/glViewportArrayv)(first, count, v)
36918        /// * `v` len: COMPSIZE(count)
36919        #[cfg_attr(feature = "inline", inline)]
36920        #[cfg_attr(feature = "inline_always", inline(always))]
36921        pub unsafe fn ViewportArrayv(&self, first: GLuint, count: GLsizei, v: *const GLfloat) {
36922            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36923            {
36924                trace!(
36925                    "calling gl.ViewportArrayv({:?}, {:?}, {:p});",
36926                    first,
36927                    count,
36928                    v
36929                );
36930            }
36931            let out = call_atomic_ptr_3arg(
36932                "glViewportArrayv",
36933                &self.glViewportArrayv_p,
36934                first,
36935                count,
36936                v,
36937            );
36938            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36939            {
36940                self.automatic_glGetError("glViewportArrayv");
36941            }
36942            out
36943        }
36944        #[doc(hidden)]
36945        pub unsafe fn ViewportArrayv_load_with_dyn(
36946            &self,
36947            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36948        ) -> bool {
36949            load_dyn_name_atomic_ptr(
36950                get_proc_address,
36951                b"glViewportArrayv\0",
36952                &self.glViewportArrayv_p,
36953            )
36954        }
36955        #[inline]
36956        #[doc(hidden)]
36957        pub fn ViewportArrayv_is_loaded(&self) -> bool {
36958            !self.glViewportArrayv_p.load(RELAX).is_null()
36959        }
36960        /// [glViewportIndexedf](http://docs.gl/gl4/glViewportIndexed)(index, x, y, w, h)
36961        #[cfg_attr(feature = "inline", inline)]
36962        #[cfg_attr(feature = "inline_always", inline(always))]
36963        pub unsafe fn ViewportIndexedf(
36964            &self,
36965            index: GLuint,
36966            x: GLfloat,
36967            y: GLfloat,
36968            w: GLfloat,
36969            h: GLfloat,
36970        ) {
36971            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36972            {
36973                trace!(
36974                    "calling gl.ViewportIndexedf({:?}, {:?}, {:?}, {:?}, {:?});",
36975                    index,
36976                    x,
36977                    y,
36978                    w,
36979                    h
36980                );
36981            }
36982            let out = call_atomic_ptr_5arg(
36983                "glViewportIndexedf",
36984                &self.glViewportIndexedf_p,
36985                index,
36986                x,
36987                y,
36988                w,
36989                h,
36990            );
36991            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36992            {
36993                self.automatic_glGetError("glViewportIndexedf");
36994            }
36995            out
36996        }
36997        #[doc(hidden)]
36998        pub unsafe fn ViewportIndexedf_load_with_dyn(
36999            &self,
37000            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
37001        ) -> bool {
37002            load_dyn_name_atomic_ptr(
37003                get_proc_address,
37004                b"glViewportIndexedf\0",
37005                &self.glViewportIndexedf_p,
37006            )
37007        }
37008        #[inline]
37009        #[doc(hidden)]
37010        pub fn ViewportIndexedf_is_loaded(&self) -> bool {
37011            !self.glViewportIndexedf_p.load(RELAX).is_null()
37012        }
37013        /// [glViewportIndexedfv](http://docs.gl/gl4/glViewportIndexed)(index, v)
37014        /// * `v` len: 4
37015        #[cfg_attr(feature = "inline", inline)]
37016        #[cfg_attr(feature = "inline_always", inline(always))]
37017        pub unsafe fn ViewportIndexedfv(&self, index: GLuint, v: *const GLfloat) {
37018            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
37019            {
37020                trace!("calling gl.ViewportIndexedfv({:?}, {:p});", index, v);
37021            }
37022            let out =
37023                call_atomic_ptr_2arg("glViewportIndexedfv", &self.glViewportIndexedfv_p, index, v);
37024            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
37025            {
37026                self.automatic_glGetError("glViewportIndexedfv");
37027            }
37028            out
37029        }
37030        #[doc(hidden)]
37031        pub unsafe fn ViewportIndexedfv_load_with_dyn(
37032            &self,
37033            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
37034        ) -> bool {
37035            load_dyn_name_atomic_ptr(
37036                get_proc_address,
37037                b"glViewportIndexedfv\0",
37038                &self.glViewportIndexedfv_p,
37039            )
37040        }
37041        #[inline]
37042        #[doc(hidden)]
37043        pub fn ViewportIndexedfv_is_loaded(&self) -> bool {
37044            !self.glViewportIndexedfv_p.load(RELAX).is_null()
37045        }
37046        /// [glWaitSync](http://docs.gl/gl4/glWaitSync)(sync, flags, timeout)
37047        /// * `sync` group: sync
37048        /// * `flags` group: SyncBehaviorFlags
37049        #[cfg_attr(feature = "inline", inline)]
37050        #[cfg_attr(feature = "inline_always", inline(always))]
37051        pub unsafe fn WaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) {
37052            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
37053            {
37054                trace!(
37055                    "calling gl.WaitSync({:p}, {:?}, {:?});",
37056                    sync,
37057                    flags,
37058                    timeout
37059                );
37060            }
37061            let out = call_atomic_ptr_3arg("glWaitSync", &self.glWaitSync_p, sync, flags, timeout);
37062            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
37063            {
37064                self.automatic_glGetError("glWaitSync");
37065            }
37066            out
37067        }
37068        #[doc(hidden)]
37069        pub unsafe fn WaitSync_load_with_dyn(
37070            &self,
37071            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
37072        ) -> bool {
37073            load_dyn_name_atomic_ptr(get_proc_address, b"glWaitSync\0", &self.glWaitSync_p)
37074        }
37075        #[inline]
37076        #[doc(hidden)]
37077        pub fn WaitSync_is_loaded(&self) -> bool {
37078            !self.glWaitSync_p.load(RELAX).is_null()
37079        }
37080    }
37081    /// This holds the many, many function pointers for GL.
37082    ///
37083    /// It's typically quite large (hundreds of pointers), depending on what API level and extensions you selected during the generation.
37084    #[repr(C)]
37085    pub struct GlFns {
37086        glActiveShaderProgram_p: APcv,
37087        glActiveTexture_p: APcv,
37088        glAttachShader_p: APcv,
37089        glBeginConditionalRender_p: APcv,
37090        glBeginQuery_p: APcv,
37091        glBeginQueryEXT_p: APcv,
37092        glBeginQueryIndexed_p: APcv,
37093        glBeginTransformFeedback_p: APcv,
37094        glBindAttribLocation_p: APcv,
37095        glBindBuffer_p: APcv,
37096        glBindBufferBase_p: APcv,
37097        glBindBufferRange_p: APcv,
37098        glBindBuffersBase_p: APcv,
37099        glBindBuffersRange_p: APcv,
37100        glBindFragDataLocation_p: APcv,
37101        glBindFragDataLocationIndexed_p: APcv,
37102        glBindFramebuffer_p: APcv,
37103        glBindImageTexture_p: APcv,
37104        glBindImageTextures_p: APcv,
37105        glBindProgramPipeline_p: APcv,
37106        glBindRenderbuffer_p: APcv,
37107        glBindSampler_p: APcv,
37108        glBindSamplers_p: APcv,
37109        glBindTexture_p: APcv,
37110        glBindTextureUnit_p: APcv,
37111        glBindTextures_p: APcv,
37112        glBindTransformFeedback_p: APcv,
37113        glBindVertexArray_p: APcv,
37114        glBindVertexArrayAPPLE_p: APcv,
37115        glBindVertexArrayOES_p: APcv,
37116        glBindVertexBuffer_p: APcv,
37117        glBindVertexBuffers_p: APcv,
37118        glBlendBarrier_p: APcv,
37119        glBlendColor_p: APcv,
37120        glBlendEquation_p: APcv,
37121        glBlendEquationSeparate_p: APcv,
37122        glBlendEquationSeparatei_p: APcv,
37123        glBlendEquationi_p: APcv,
37124        glBlendFunc_p: APcv,
37125        glBlendFuncSeparate_p: APcv,
37126        glBlendFuncSeparatei_p: APcv,
37127        glBlendFunci_p: APcv,
37128        glBlitFramebuffer_p: APcv,
37129        glBlitNamedFramebuffer_p: APcv,
37130        glBufferData_p: APcv,
37131        glBufferStorage_p: APcv,
37132        glBufferStorageEXT_p: APcv,
37133        glBufferSubData_p: APcv,
37134        glCheckFramebufferStatus_p: APcv,
37135        glCheckNamedFramebufferStatus_p: APcv,
37136        glClampColor_p: APcv,
37137        glClear_p: APcv,
37138        glClearBufferData_p: APcv,
37139        glClearBufferSubData_p: APcv,
37140        glClearBufferfi_p: APcv,
37141        glClearBufferfv_p: APcv,
37142        glClearBufferiv_p: APcv,
37143        glClearBufferuiv_p: APcv,
37144        glClearColor_p: APcv,
37145        glClearDepth_p: APcv,
37146        glClearDepthf_p: APcv,
37147        glClearNamedBufferData_p: APcv,
37148        glClearNamedBufferSubData_p: APcv,
37149        glClearNamedFramebufferfi_p: APcv,
37150        glClearNamedFramebufferfv_p: APcv,
37151        glClearNamedFramebufferiv_p: APcv,
37152        glClearNamedFramebufferuiv_p: APcv,
37153        glClearStencil_p: APcv,
37154        glClearTexImage_p: APcv,
37155        glClearTexSubImage_p: APcv,
37156        glClientWaitSync_p: APcv,
37157        glClipControl_p: APcv,
37158        glColorMask_p: APcv,
37159        glColorMaskIndexedEXT_p: APcv,
37160        glColorMaski_p: APcv,
37161        glCompileShader_p: APcv,
37162        glCompressedTexImage1D_p: APcv,
37163        glCompressedTexImage2D_p: APcv,
37164        glCompressedTexImage3D_p: APcv,
37165        glCompressedTexSubImage1D_p: APcv,
37166        glCompressedTexSubImage2D_p: APcv,
37167        glCompressedTexSubImage3D_p: APcv,
37168        glCompressedTextureSubImage1D_p: APcv,
37169        glCompressedTextureSubImage2D_p: APcv,
37170        glCompressedTextureSubImage3D_p: APcv,
37171        glCopyBufferSubData_p: APcv,
37172        glCopyBufferSubDataNV_p: APcv,
37173        glCopyImageSubData_p: APcv,
37174        glCopyNamedBufferSubData_p: APcv,
37175        glCopyTexImage1D_p: APcv,
37176        glCopyTexImage2D_p: APcv,
37177        glCopyTexSubImage1D_p: APcv,
37178        glCopyTexSubImage2D_p: APcv,
37179        glCopyTexSubImage3D_p: APcv,
37180        glCopyTextureSubImage1D_p: APcv,
37181        glCopyTextureSubImage2D_p: APcv,
37182        glCopyTextureSubImage3D_p: APcv,
37183        glCreateBuffers_p: APcv,
37184        glCreateFramebuffers_p: APcv,
37185        glCreateProgram_p: APcv,
37186        glCreateProgramPipelines_p: APcv,
37187        glCreateQueries_p: APcv,
37188        glCreateRenderbuffers_p: APcv,
37189        glCreateSamplers_p: APcv,
37190        glCreateShader_p: APcv,
37191        glCreateShaderProgramv_p: APcv,
37192        glCreateTextures_p: APcv,
37193        glCreateTransformFeedbacks_p: APcv,
37194        glCreateVertexArrays_p: APcv,
37195        glCullFace_p: APcv,
37196        glDebugMessageCallback_p: APcv,
37197        glDebugMessageCallbackARB_p: APcv,
37198        glDebugMessageCallbackKHR_p: APcv,
37199        glDebugMessageControl_p: APcv,
37200        glDebugMessageControlARB_p: APcv,
37201        glDebugMessageControlKHR_p: APcv,
37202        glDebugMessageInsert_p: APcv,
37203        glDebugMessageInsertARB_p: APcv,
37204        glDebugMessageInsertKHR_p: APcv,
37205        glDeleteBuffers_p: APcv,
37206        glDeleteFramebuffers_p: APcv,
37207        glDeleteProgram_p: APcv,
37208        glDeleteProgramPipelines_p: APcv,
37209        glDeleteQueries_p: APcv,
37210        glDeleteQueriesEXT_p: APcv,
37211        glDeleteRenderbuffers_p: APcv,
37212        glDeleteSamplers_p: APcv,
37213        glDeleteShader_p: APcv,
37214        glDeleteSync_p: APcv,
37215        glDeleteTextures_p: APcv,
37216        glDeleteTransformFeedbacks_p: APcv,
37217        glDeleteVertexArrays_p: APcv,
37218        glDeleteVertexArraysAPPLE_p: APcv,
37219        glDeleteVertexArraysOES_p: APcv,
37220        glDepthFunc_p: APcv,
37221        glDepthMask_p: APcv,
37222        glDepthRange_p: APcv,
37223        glDepthRangeArrayv_p: APcv,
37224        glDepthRangeIndexed_p: APcv,
37225        glDepthRangef_p: APcv,
37226        glDetachShader_p: APcv,
37227        glDisable_p: APcv,
37228        glDisableIndexedEXT_p: APcv,
37229        glDisableVertexArrayAttrib_p: APcv,
37230        glDisableVertexAttribArray_p: APcv,
37231        glDisablei_p: APcv,
37232        glDispatchCompute_p: APcv,
37233        glDispatchComputeIndirect_p: APcv,
37234        glDrawArrays_p: APcv,
37235        glDrawArraysIndirect_p: APcv,
37236        glDrawArraysInstanced_p: APcv,
37237        glDrawArraysInstancedARB_p: APcv,
37238        glDrawArraysInstancedBaseInstance_p: APcv,
37239        glDrawBuffer_p: APcv,
37240        glDrawBuffers_p: APcv,
37241        glDrawElements_p: APcv,
37242        glDrawElementsBaseVertex_p: APcv,
37243        glDrawElementsIndirect_p: APcv,
37244        glDrawElementsInstanced_p: APcv,
37245        glDrawElementsInstancedARB_p: APcv,
37246        glDrawElementsInstancedBaseInstance_p: APcv,
37247        glDrawElementsInstancedBaseVertex_p: APcv,
37248        glDrawElementsInstancedBaseVertexBaseInstance_p: APcv,
37249        glDrawRangeElements_p: APcv,
37250        glDrawRangeElementsBaseVertex_p: APcv,
37251        glDrawTransformFeedback_p: APcv,
37252        glDrawTransformFeedbackInstanced_p: APcv,
37253        glDrawTransformFeedbackStream_p: APcv,
37254        glDrawTransformFeedbackStreamInstanced_p: APcv,
37255        glEnable_p: APcv,
37256        glEnableIndexedEXT_p: APcv,
37257        glEnableVertexArrayAttrib_p: APcv,
37258        glEnableVertexAttribArray_p: APcv,
37259        glEnablei_p: APcv,
37260        glEndConditionalRender_p: APcv,
37261        glEndQuery_p: APcv,
37262        glEndQueryEXT_p: APcv,
37263        glEndQueryIndexed_p: APcv,
37264        glEndTransformFeedback_p: APcv,
37265        glFenceSync_p: APcv,
37266        glFinish_p: APcv,
37267        glFlush_p: APcv,
37268        glFlushMappedBufferRange_p: APcv,
37269        glFlushMappedNamedBufferRange_p: APcv,
37270        glFramebufferParameteri_p: APcv,
37271        glFramebufferRenderbuffer_p: APcv,
37272        glFramebufferTexture_p: APcv,
37273        glFramebufferTexture1D_p: APcv,
37274        glFramebufferTexture2D_p: APcv,
37275        glFramebufferTexture3D_p: APcv,
37276        glFramebufferTextureLayer_p: APcv,
37277        glFrontFace_p: APcv,
37278        glGenBuffers_p: APcv,
37279        glGenFramebuffers_p: APcv,
37280        glGenProgramPipelines_p: APcv,
37281        glGenQueries_p: APcv,
37282        glGenQueriesEXT_p: APcv,
37283        glGenRenderbuffers_p: APcv,
37284        glGenSamplers_p: APcv,
37285        glGenTextures_p: APcv,
37286        glGenTransformFeedbacks_p: APcv,
37287        glGenVertexArrays_p: APcv,
37288        glGenVertexArraysAPPLE_p: APcv,
37289        glGenVertexArraysOES_p: APcv,
37290        glGenerateMipmap_p: APcv,
37291        glGenerateTextureMipmap_p: APcv,
37292        glGetActiveAtomicCounterBufferiv_p: APcv,
37293        glGetActiveAttrib_p: APcv,
37294        glGetActiveSubroutineName_p: APcv,
37295        glGetActiveSubroutineUniformName_p: APcv,
37296        glGetActiveSubroutineUniformiv_p: APcv,
37297        glGetActiveUniform_p: APcv,
37298        glGetActiveUniformBlockName_p: APcv,
37299        glGetActiveUniformBlockiv_p: APcv,
37300        glGetActiveUniformName_p: APcv,
37301        glGetActiveUniformsiv_p: APcv,
37302        glGetAttachedShaders_p: APcv,
37303        glGetAttribLocation_p: APcv,
37304        glGetBooleanIndexedvEXT_p: APcv,
37305        glGetBooleani_v_p: APcv,
37306        glGetBooleanv_p: APcv,
37307        glGetBufferParameteri64v_p: APcv,
37308        glGetBufferParameteriv_p: APcv,
37309        glGetBufferPointerv_p: APcv,
37310        glGetBufferSubData_p: APcv,
37311        glGetCompressedTexImage_p: APcv,
37312        glGetCompressedTextureImage_p: APcv,
37313        glGetCompressedTextureSubImage_p: APcv,
37314        glGetDebugMessageLog_p: APcv,
37315        glGetDebugMessageLogARB_p: APcv,
37316        glGetDebugMessageLogKHR_p: APcv,
37317        glGetDoublei_v_p: APcv,
37318        glGetDoublev_p: APcv,
37319        glGetError_p: APcv,
37320        glGetFloati_v_p: APcv,
37321        glGetFloatv_p: APcv,
37322        glGetFragDataIndex_p: APcv,
37323        glGetFragDataLocation_p: APcv,
37324        glGetFramebufferAttachmentParameteriv_p: APcv,
37325        glGetFramebufferParameteriv_p: APcv,
37326        glGetGraphicsResetStatus_p: APcv,
37327        glGetInteger64i_v_p: APcv,
37328        glGetInteger64v_p: APcv,
37329        glGetInteger64vEXT_p: APcv,
37330        glGetIntegerIndexedvEXT_p: APcv,
37331        glGetIntegeri_v_p: APcv,
37332        glGetIntegerv_p: APcv,
37333        glGetInternalformati64v_p: APcv,
37334        glGetInternalformativ_p: APcv,
37335        glGetMultisamplefv_p: APcv,
37336        glGetNamedBufferParameteri64v_p: APcv,
37337        glGetNamedBufferParameteriv_p: APcv,
37338        glGetNamedBufferPointerv_p: APcv,
37339        glGetNamedBufferSubData_p: APcv,
37340        glGetNamedFramebufferAttachmentParameteriv_p: APcv,
37341        glGetNamedFramebufferParameteriv_p: APcv,
37342        glGetNamedRenderbufferParameteriv_p: APcv,
37343        glGetObjectLabel_p: APcv,
37344        glGetObjectLabelKHR_p: APcv,
37345        glGetObjectPtrLabel_p: APcv,
37346        glGetObjectPtrLabelKHR_p: APcv,
37347        glGetPointerv_p: APcv,
37348        glGetPointervKHR_p: APcv,
37349        glGetProgramBinary_p: APcv,
37350        glGetProgramInfoLog_p: APcv,
37351        glGetProgramInterfaceiv_p: APcv,
37352        glGetProgramPipelineInfoLog_p: APcv,
37353        glGetProgramPipelineiv_p: APcv,
37354        glGetProgramResourceIndex_p: APcv,
37355        glGetProgramResourceLocation_p: APcv,
37356        glGetProgramResourceLocationIndex_p: APcv,
37357        glGetProgramResourceName_p: APcv,
37358        glGetProgramResourceiv_p: APcv,
37359        glGetProgramStageiv_p: APcv,
37360        glGetProgramiv_p: APcv,
37361        glGetQueryBufferObjecti64v_p: APcv,
37362        glGetQueryBufferObjectiv_p: APcv,
37363        glGetQueryBufferObjectui64v_p: APcv,
37364        glGetQueryBufferObjectuiv_p: APcv,
37365        glGetQueryIndexediv_p: APcv,
37366        glGetQueryObjecti64v_p: APcv,
37367        glGetQueryObjecti64vEXT_p: APcv,
37368        glGetQueryObjectiv_p: APcv,
37369        glGetQueryObjectivEXT_p: APcv,
37370        glGetQueryObjectui64v_p: APcv,
37371        glGetQueryObjectui64vEXT_p: APcv,
37372        glGetQueryObjectuiv_p: APcv,
37373        glGetQueryObjectuivEXT_p: APcv,
37374        glGetQueryiv_p: APcv,
37375        glGetQueryivEXT_p: APcv,
37376        glGetRenderbufferParameteriv_p: APcv,
37377        glGetSamplerParameterIiv_p: APcv,
37378        glGetSamplerParameterIuiv_p: APcv,
37379        glGetSamplerParameterfv_p: APcv,
37380        glGetSamplerParameteriv_p: APcv,
37381        glGetShaderInfoLog_p: APcv,
37382        glGetShaderPrecisionFormat_p: APcv,
37383        glGetShaderSource_p: APcv,
37384        glGetShaderiv_p: APcv,
37385        glGetString_p: APcv,
37386        glGetStringi_p: APcv,
37387        glGetSubroutineIndex_p: APcv,
37388        glGetSubroutineUniformLocation_p: APcv,
37389        glGetSynciv_p: APcv,
37390        glGetTexImage_p: APcv,
37391        glGetTexLevelParameterfv_p: APcv,
37392        glGetTexLevelParameteriv_p: APcv,
37393        glGetTexParameterIiv_p: APcv,
37394        glGetTexParameterIuiv_p: APcv,
37395        glGetTexParameterfv_p: APcv,
37396        glGetTexParameteriv_p: APcv,
37397        glGetTextureImage_p: APcv,
37398        glGetTextureLevelParameterfv_p: APcv,
37399        glGetTextureLevelParameteriv_p: APcv,
37400        glGetTextureParameterIiv_p: APcv,
37401        glGetTextureParameterIuiv_p: APcv,
37402        glGetTextureParameterfv_p: APcv,
37403        glGetTextureParameteriv_p: APcv,
37404        glGetTextureSubImage_p: APcv,
37405        glGetTransformFeedbackVarying_p: APcv,
37406        glGetTransformFeedbacki64_v_p: APcv,
37407        glGetTransformFeedbacki_v_p: APcv,
37408        glGetTransformFeedbackiv_p: APcv,
37409        glGetUniformBlockIndex_p: APcv,
37410        glGetUniformIndices_p: APcv,
37411        glGetUniformLocation_p: APcv,
37412        glGetUniformSubroutineuiv_p: APcv,
37413        glGetUniformdv_p: APcv,
37414        glGetUniformfv_p: APcv,
37415        glGetUniformiv_p: APcv,
37416        glGetUniformuiv_p: APcv,
37417        glGetVertexArrayIndexed64iv_p: APcv,
37418        glGetVertexArrayIndexediv_p: APcv,
37419        glGetVertexArrayiv_p: APcv,
37420        glGetVertexAttribIiv_p: APcv,
37421        glGetVertexAttribIuiv_p: APcv,
37422        glGetVertexAttribLdv_p: APcv,
37423        glGetVertexAttribPointerv_p: APcv,
37424        glGetVertexAttribdv_p: APcv,
37425        glGetVertexAttribfv_p: APcv,
37426        glGetVertexAttribiv_p: APcv,
37427        glGetnCompressedTexImage_p: APcv,
37428        glGetnTexImage_p: APcv,
37429        glGetnUniformdv_p: APcv,
37430        glGetnUniformfv_p: APcv,
37431        glGetnUniformiv_p: APcv,
37432        glGetnUniformuiv_p: APcv,
37433        glHint_p: APcv,
37434        glInvalidateBufferData_p: APcv,
37435        glInvalidateBufferSubData_p: APcv,
37436        glInvalidateFramebuffer_p: APcv,
37437        glInvalidateNamedFramebufferData_p: APcv,
37438        glInvalidateNamedFramebufferSubData_p: APcv,
37439        glInvalidateSubFramebuffer_p: APcv,
37440        glInvalidateTexImage_p: APcv,
37441        glInvalidateTexSubImage_p: APcv,
37442        glIsBuffer_p: APcv,
37443        glIsEnabled_p: APcv,
37444        glIsEnabledIndexedEXT_p: APcv,
37445        glIsEnabledi_p: APcv,
37446        glIsFramebuffer_p: APcv,
37447        glIsProgram_p: APcv,
37448        glIsProgramPipeline_p: APcv,
37449        glIsQuery_p: APcv,
37450        glIsQueryEXT_p: APcv,
37451        glIsRenderbuffer_p: APcv,
37452        glIsSampler_p: APcv,
37453        glIsShader_p: APcv,
37454        glIsSync_p: APcv,
37455        glIsTexture_p: APcv,
37456        glIsTransformFeedback_p: APcv,
37457        glIsVertexArray_p: APcv,
37458        glIsVertexArrayAPPLE_p: APcv,
37459        glIsVertexArrayOES_p: APcv,
37460        glLineWidth_p: APcv,
37461        glLinkProgram_p: APcv,
37462        glLogicOp_p: APcv,
37463        glMapBuffer_p: APcv,
37464        glMapBufferRange_p: APcv,
37465        glMapNamedBuffer_p: APcv,
37466        glMapNamedBufferRange_p: APcv,
37467        glMaxShaderCompilerThreadsARB_p: APcv,
37468        glMaxShaderCompilerThreadsKHR_p: APcv,
37469        glMemoryBarrier_p: APcv,
37470        glMemoryBarrierByRegion_p: APcv,
37471        glMinSampleShading_p: APcv,
37472        glMultiDrawArrays_p: APcv,
37473        glMultiDrawArraysIndirect_p: APcv,
37474        glMultiDrawArraysIndirectCount_p: APcv,
37475        glMultiDrawElements_p: APcv,
37476        glMultiDrawElementsBaseVertex_p: APcv,
37477        glMultiDrawElementsIndirect_p: APcv,
37478        glMultiDrawElementsIndirectCount_p: APcv,
37479        glNamedBufferData_p: APcv,
37480        glNamedBufferStorage_p: APcv,
37481        glNamedBufferSubData_p: APcv,
37482        glNamedFramebufferDrawBuffer_p: APcv,
37483        glNamedFramebufferDrawBuffers_p: APcv,
37484        glNamedFramebufferParameteri_p: APcv,
37485        glNamedFramebufferReadBuffer_p: APcv,
37486        glNamedFramebufferRenderbuffer_p: APcv,
37487        glNamedFramebufferTexture_p: APcv,
37488        glNamedFramebufferTextureLayer_p: APcv,
37489        glNamedRenderbufferStorage_p: APcv,
37490        glNamedRenderbufferStorageMultisample_p: APcv,
37491        glObjectLabel_p: APcv,
37492        glObjectLabelKHR_p: APcv,
37493        glObjectPtrLabel_p: APcv,
37494        glObjectPtrLabelKHR_p: APcv,
37495        glPatchParameterfv_p: APcv,
37496        glPatchParameteri_p: APcv,
37497        glPauseTransformFeedback_p: APcv,
37498        glPixelStoref_p: APcv,
37499        glPixelStorei_p: APcv,
37500        glPointParameterf_p: APcv,
37501        glPointParameterfv_p: APcv,
37502        glPointParameteri_p: APcv,
37503        glPointParameteriv_p: APcv,
37504        glPointSize_p: APcv,
37505        glPolygonMode_p: APcv,
37506        glPolygonOffset_p: APcv,
37507        glPolygonOffsetClamp_p: APcv,
37508        glPopDebugGroup_p: APcv,
37509        glPopDebugGroupKHR_p: APcv,
37510        glPrimitiveBoundingBox_p: APcv,
37511        glPrimitiveRestartIndex_p: APcv,
37512        glProgramBinary_p: APcv,
37513        glProgramParameteri_p: APcv,
37514        glProgramUniform1d_p: APcv,
37515        glProgramUniform1dv_p: APcv,
37516        glProgramUniform1f_p: APcv,
37517        glProgramUniform1fv_p: APcv,
37518        glProgramUniform1i_p: APcv,
37519        glProgramUniform1iv_p: APcv,
37520        glProgramUniform1ui_p: APcv,
37521        glProgramUniform1uiv_p: APcv,
37522        glProgramUniform2d_p: APcv,
37523        glProgramUniform2dv_p: APcv,
37524        glProgramUniform2f_p: APcv,
37525        glProgramUniform2fv_p: APcv,
37526        glProgramUniform2i_p: APcv,
37527        glProgramUniform2iv_p: APcv,
37528        glProgramUniform2ui_p: APcv,
37529        glProgramUniform2uiv_p: APcv,
37530        glProgramUniform3d_p: APcv,
37531        glProgramUniform3dv_p: APcv,
37532        glProgramUniform3f_p: APcv,
37533        glProgramUniform3fv_p: APcv,
37534        glProgramUniform3i_p: APcv,
37535        glProgramUniform3iv_p: APcv,
37536        glProgramUniform3ui_p: APcv,
37537        glProgramUniform3uiv_p: APcv,
37538        glProgramUniform4d_p: APcv,
37539        glProgramUniform4dv_p: APcv,
37540        glProgramUniform4f_p: APcv,
37541        glProgramUniform4fv_p: APcv,
37542        glProgramUniform4i_p: APcv,
37543        glProgramUniform4iv_p: APcv,
37544        glProgramUniform4ui_p: APcv,
37545        glProgramUniform4uiv_p: APcv,
37546        glProgramUniformMatrix2dv_p: APcv,
37547        glProgramUniformMatrix2fv_p: APcv,
37548        glProgramUniformMatrix2x3dv_p: APcv,
37549        glProgramUniformMatrix2x3fv_p: APcv,
37550        glProgramUniformMatrix2x4dv_p: APcv,
37551        glProgramUniformMatrix2x4fv_p: APcv,
37552        glProgramUniformMatrix3dv_p: APcv,
37553        glProgramUniformMatrix3fv_p: APcv,
37554        glProgramUniformMatrix3x2dv_p: APcv,
37555        glProgramUniformMatrix3x2fv_p: APcv,
37556        glProgramUniformMatrix3x4dv_p: APcv,
37557        glProgramUniformMatrix3x4fv_p: APcv,
37558        glProgramUniformMatrix4dv_p: APcv,
37559        glProgramUniformMatrix4fv_p: APcv,
37560        glProgramUniformMatrix4x2dv_p: APcv,
37561        glProgramUniformMatrix4x2fv_p: APcv,
37562        glProgramUniformMatrix4x3dv_p: APcv,
37563        glProgramUniformMatrix4x3fv_p: APcv,
37564        glProvokingVertex_p: APcv,
37565        glPushDebugGroup_p: APcv,
37566        glPushDebugGroupKHR_p: APcv,
37567        glQueryCounter_p: APcv,
37568        glQueryCounterEXT_p: APcv,
37569        glReadBuffer_p: APcv,
37570        glReadPixels_p: APcv,
37571        glReadnPixels_p: APcv,
37572        glReleaseShaderCompiler_p: APcv,
37573        glRenderbufferStorage_p: APcv,
37574        glRenderbufferStorageMultisample_p: APcv,
37575        glResumeTransformFeedback_p: APcv,
37576        glSampleCoverage_p: APcv,
37577        glSampleMaski_p: APcv,
37578        glSamplerParameterIiv_p: APcv,
37579        glSamplerParameterIuiv_p: APcv,
37580        glSamplerParameterf_p: APcv,
37581        glSamplerParameterfv_p: APcv,
37582        glSamplerParameteri_p: APcv,
37583        glSamplerParameteriv_p: APcv,
37584        glScissor_p: APcv,
37585        glScissorArrayv_p: APcv,
37586        glScissorIndexed_p: APcv,
37587        glScissorIndexedv_p: APcv,
37588        glShaderBinary_p: APcv,
37589        glShaderSource_p: APcv,
37590        glShaderStorageBlockBinding_p: APcv,
37591        glSpecializeShader_p: APcv,
37592        glStencilFunc_p: APcv,
37593        glStencilFuncSeparate_p: APcv,
37594        glStencilMask_p: APcv,
37595        glStencilMaskSeparate_p: APcv,
37596        glStencilOp_p: APcv,
37597        glStencilOpSeparate_p: APcv,
37598        glTexBuffer_p: APcv,
37599        glTexBufferRange_p: APcv,
37600        glTexImage1D_p: APcv,
37601        glTexImage2D_p: APcv,
37602        glTexImage2DMultisample_p: APcv,
37603        glTexImage3D_p: APcv,
37604        glTexImage3DMultisample_p: APcv,
37605        glTexParameterIiv_p: APcv,
37606        glTexParameterIuiv_p: APcv,
37607        glTexParameterf_p: APcv,
37608        glTexParameterfv_p: APcv,
37609        glTexParameteri_p: APcv,
37610        glTexParameteriv_p: APcv,
37611        glTexStorage1D_p: APcv,
37612        glTexStorage2D_p: APcv,
37613        glTexStorage2DMultisample_p: APcv,
37614        glTexStorage3D_p: APcv,
37615        glTexStorage3DMultisample_p: APcv,
37616        glTexSubImage1D_p: APcv,
37617        glTexSubImage2D_p: APcv,
37618        glTexSubImage3D_p: APcv,
37619        glTextureBarrier_p: APcv,
37620        glTextureBuffer_p: APcv,
37621        glTextureBufferRange_p: APcv,
37622        glTextureParameterIiv_p: APcv,
37623        glTextureParameterIuiv_p: APcv,
37624        glTextureParameterf_p: APcv,
37625        glTextureParameterfv_p: APcv,
37626        glTextureParameteri_p: APcv,
37627        glTextureParameteriv_p: APcv,
37628        glTextureStorage1D_p: APcv,
37629        glTextureStorage2D_p: APcv,
37630        glTextureStorage2DMultisample_p: APcv,
37631        glTextureStorage3D_p: APcv,
37632        glTextureStorage3DMultisample_p: APcv,
37633        glTextureSubImage1D_p: APcv,
37634        glTextureSubImage2D_p: APcv,
37635        glTextureSubImage3D_p: APcv,
37636        glTextureView_p: APcv,
37637        glTransformFeedbackBufferBase_p: APcv,
37638        glTransformFeedbackBufferRange_p: APcv,
37639        glTransformFeedbackVaryings_p: APcv,
37640        glUniform1d_p: APcv,
37641        glUniform1dv_p: APcv,
37642        glUniform1f_p: APcv,
37643        glUniform1fv_p: APcv,
37644        glUniform1i_p: APcv,
37645        glUniform1iv_p: APcv,
37646        glUniform1ui_p: APcv,
37647        glUniform1uiv_p: APcv,
37648        glUniform2d_p: APcv,
37649        glUniform2dv_p: APcv,
37650        glUniform2f_p: APcv,
37651        glUniform2fv_p: APcv,
37652        glUniform2i_p: APcv,
37653        glUniform2iv_p: APcv,
37654        glUniform2ui_p: APcv,
37655        glUniform2uiv_p: APcv,
37656        glUniform3d_p: APcv,
37657        glUniform3dv_p: APcv,
37658        glUniform3f_p: APcv,
37659        glUniform3fv_p: APcv,
37660        glUniform3i_p: APcv,
37661        glUniform3iv_p: APcv,
37662        glUniform3ui_p: APcv,
37663        glUniform3uiv_p: APcv,
37664        glUniform4d_p: APcv,
37665        glUniform4dv_p: APcv,
37666        glUniform4f_p: APcv,
37667        glUniform4fv_p: APcv,
37668        glUniform4i_p: APcv,
37669        glUniform4iv_p: APcv,
37670        glUniform4ui_p: APcv,
37671        glUniform4uiv_p: APcv,
37672        glUniformBlockBinding_p: APcv,
37673        glUniformMatrix2dv_p: APcv,
37674        glUniformMatrix2fv_p: APcv,
37675        glUniformMatrix2x3dv_p: APcv,
37676        glUniformMatrix2x3fv_p: APcv,
37677        glUniformMatrix2x4dv_p: APcv,
37678        glUniformMatrix2x4fv_p: APcv,
37679        glUniformMatrix3dv_p: APcv,
37680        glUniformMatrix3fv_p: APcv,
37681        glUniformMatrix3x2dv_p: APcv,
37682        glUniformMatrix3x2fv_p: APcv,
37683        glUniformMatrix3x4dv_p: APcv,
37684        glUniformMatrix3x4fv_p: APcv,
37685        glUniformMatrix4dv_p: APcv,
37686        glUniformMatrix4fv_p: APcv,
37687        glUniformMatrix4x2dv_p: APcv,
37688        glUniformMatrix4x2fv_p: APcv,
37689        glUniformMatrix4x3dv_p: APcv,
37690        glUniformMatrix4x3fv_p: APcv,
37691        glUniformSubroutinesuiv_p: APcv,
37692        glUnmapBuffer_p: APcv,
37693        glUnmapNamedBuffer_p: APcv,
37694        glUseProgram_p: APcv,
37695        glUseProgramStages_p: APcv,
37696        glValidateProgram_p: APcv,
37697        glValidateProgramPipeline_p: APcv,
37698        glVertexArrayAttribBinding_p: APcv,
37699        glVertexArrayAttribFormat_p: APcv,
37700        glVertexArrayAttribIFormat_p: APcv,
37701        glVertexArrayAttribLFormat_p: APcv,
37702        glVertexArrayBindingDivisor_p: APcv,
37703        glVertexArrayElementBuffer_p: APcv,
37704        glVertexArrayVertexBuffer_p: APcv,
37705        glVertexArrayVertexBuffers_p: APcv,
37706        glVertexAttrib1d_p: APcv,
37707        glVertexAttrib1dv_p: APcv,
37708        glVertexAttrib1f_p: APcv,
37709        glVertexAttrib1fv_p: APcv,
37710        glVertexAttrib1s_p: APcv,
37711        glVertexAttrib1sv_p: APcv,
37712        glVertexAttrib2d_p: APcv,
37713        glVertexAttrib2dv_p: APcv,
37714        glVertexAttrib2f_p: APcv,
37715        glVertexAttrib2fv_p: APcv,
37716        glVertexAttrib2s_p: APcv,
37717        glVertexAttrib2sv_p: APcv,
37718        glVertexAttrib3d_p: APcv,
37719        glVertexAttrib3dv_p: APcv,
37720        glVertexAttrib3f_p: APcv,
37721        glVertexAttrib3fv_p: APcv,
37722        glVertexAttrib3s_p: APcv,
37723        glVertexAttrib3sv_p: APcv,
37724        glVertexAttrib4Nbv_p: APcv,
37725        glVertexAttrib4Niv_p: APcv,
37726        glVertexAttrib4Nsv_p: APcv,
37727        glVertexAttrib4Nub_p: APcv,
37728        glVertexAttrib4Nubv_p: APcv,
37729        glVertexAttrib4Nuiv_p: APcv,
37730        glVertexAttrib4Nusv_p: APcv,
37731        glVertexAttrib4bv_p: APcv,
37732        glVertexAttrib4d_p: APcv,
37733        glVertexAttrib4dv_p: APcv,
37734        glVertexAttrib4f_p: APcv,
37735        glVertexAttrib4fv_p: APcv,
37736        glVertexAttrib4iv_p: APcv,
37737        glVertexAttrib4s_p: APcv,
37738        glVertexAttrib4sv_p: APcv,
37739        glVertexAttrib4ubv_p: APcv,
37740        glVertexAttrib4uiv_p: APcv,
37741        glVertexAttrib4usv_p: APcv,
37742        glVertexAttribBinding_p: APcv,
37743        glVertexAttribDivisor_p: APcv,
37744        glVertexAttribDivisorARB_p: APcv,
37745        glVertexAttribFormat_p: APcv,
37746        glVertexAttribI1i_p: APcv,
37747        glVertexAttribI1iv_p: APcv,
37748        glVertexAttribI1ui_p: APcv,
37749        glVertexAttribI1uiv_p: APcv,
37750        glVertexAttribI2i_p: APcv,
37751        glVertexAttribI2iv_p: APcv,
37752        glVertexAttribI2ui_p: APcv,
37753        glVertexAttribI2uiv_p: APcv,
37754        glVertexAttribI3i_p: APcv,
37755        glVertexAttribI3iv_p: APcv,
37756        glVertexAttribI3ui_p: APcv,
37757        glVertexAttribI3uiv_p: APcv,
37758        glVertexAttribI4bv_p: APcv,
37759        glVertexAttribI4i_p: APcv,
37760        glVertexAttribI4iv_p: APcv,
37761        glVertexAttribI4sv_p: APcv,
37762        glVertexAttribI4ubv_p: APcv,
37763        glVertexAttribI4ui_p: APcv,
37764        glVertexAttribI4uiv_p: APcv,
37765        glVertexAttribI4usv_p: APcv,
37766        glVertexAttribIFormat_p: APcv,
37767        glVertexAttribIPointer_p: APcv,
37768        glVertexAttribL1d_p: APcv,
37769        glVertexAttribL1dv_p: APcv,
37770        glVertexAttribL2d_p: APcv,
37771        glVertexAttribL2dv_p: APcv,
37772        glVertexAttribL3d_p: APcv,
37773        glVertexAttribL3dv_p: APcv,
37774        glVertexAttribL4d_p: APcv,
37775        glVertexAttribL4dv_p: APcv,
37776        glVertexAttribLFormat_p: APcv,
37777        glVertexAttribLPointer_p: APcv,
37778        glVertexAttribP1ui_p: APcv,
37779        glVertexAttribP1uiv_p: APcv,
37780        glVertexAttribP2ui_p: APcv,
37781        glVertexAttribP2uiv_p: APcv,
37782        glVertexAttribP3ui_p: APcv,
37783        glVertexAttribP3uiv_p: APcv,
37784        glVertexAttribP4ui_p: APcv,
37785        glVertexAttribP4uiv_p: APcv,
37786        glVertexAttribPointer_p: APcv,
37787        glVertexBindingDivisor_p: APcv,
37788        glViewport_p: APcv,
37789        glViewportArrayv_p: APcv,
37790        glViewportIndexedf_p: APcv,
37791        glViewportIndexedfv_p: APcv,
37792        glWaitSync_p: APcv,
37793    }
37794    #[cfg(feature = "bytemuck")]
37795    unsafe impl bytemuck::Zeroable for GlFns {}
37796    impl core::fmt::Debug for GlFns {
37797        fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
37798            write!(f, "GlFns")
37799        }
37800    }
37801}
37802// end of module