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_multisampled_render_to_texture`
36//! * `GL_EXT_texture_filter_anisotropic`
37//! * `GL_KHR_debug`
38//! * `GL_KHR_parallel_shader_compile`
39//! * `GL_NV_copy_buffer`
40//! * `GL_OES_vertex_array_object`
41//!
42//! Supported Features:
43//! * `global_loader`: Include all mechanisms necessary for calling GL using
44//!   global functions.
45//! * `struct_loader`: Include all mechanisms necessary for calling GL as
46//!   methods on a struct.
47//! * `debug_trace_calls`: if cfg!(debug_assertions), any call to a GL function
48//!   will `trace!` what was called and with what args.
49//! * `debug_automatic_glGetError`: If cfg!(debug_assertions), this will
50//!   automatically call `glGetError` after every call to any *other* GL
51//!   function. If an error code occurs it's shown via `error!` along with the
52//!   name of the function that had the error.
53//! * `log`: imports `trace!` and `error!` macros from the `log` crate.
54//!   Otherwise they just call `println!` and `eprintln!` respectively.
55//! * `chlorine`: gets all C types from the `chlorine` crate (which is `no_std`
56//!   friendly). Otherwise they will be imported from `std::os::raw`.
57//! * `bytemuck`: Adds support for the `bytemuck` crate, mostly in the form of
58//!   `bytemuck::Zeroable` on `GlFns`.
59//! * `inline`: Tags all GL calls as `#[inline]`.
60//! * `inline_always`: Tags all GL calls as `#[inline(always)]`. This will
61//!   effectively override the `inline` feature.
62//!
63//! The crate is `no_std` friendly by default, but features above can end up
64//! requiring `std` to be available.
65//!
66//! # GL Loaders
67//! The docs for this crate hosted on docs.rs generate **both** the
68//! `global_loader` and `struct_loader` documentation for sake of completeness.
69//!
70//! However, you are generally expected to use **only one** loader style in any
71//! particular project.
72//!
73//! Each loader style has its own small advantages:
74//! * The `global_loader` stores the GL function pointers in static `AtomicPtr`
75//!   values.
76//!   * Call [`load_global_gl_with`] to initialize the pointers.
77//!   * Each GL function is available as a global function under its standard
78//!     name, eg `glGetError()`.
79//!   * This lets you call GL functions from anywhere at all, and it's how you
80//!     might expect to use GL if you have a C background.
81//!   * Being able to call GL from anywhere makes it easy to write Drop impls,
82//!     among other things.
83//! * The `struct_loader` stores all the function pointers in the fields of a
84//!   [`GlFns`] struct.
85//!   * Call [`GlFns::load_with`] to make a `GlFns` value.
86//!   * Each GL function is available as a method on the struct with the `gl`
87//!     prefix removed. It's presumed that you'll call the struct itself `gl`,
88//!     so calls will look something like `gl.GetError()`.
89//!   * This is closer to how WebGL works on WASM targets, and so this is how
90//!     the [`glow`](https://docs.rs/glow) crate works to maintain consistency
91//!     across desktop and web.
92//!   * Also, if you want to do any sort of "live code reloading" you'll have to
93//!     use the struct loader. DLLs don't share their static values with the
94//!     main program, so if the DLL uses the global loader functions the
95//!     pointers won't be loaded and calling any GL function from the DLL will
96//!     panic. Instead, if you just pass a `&GlFns` to your DLL it can call the
97//!     GL methods just fine.
98//!
99//! In both styles, if you call a function that isn't loaded you will get a
100//! panic. This generally only happens if the context doesn't fully support
101//! the GL version. You can check if a GL command is loaded or not before
102//! actually calling it by adding `_is_loaded` to the name of the command. In
103//! other words, `glGetError_is_loaded` to check if `glGetError` is globally
104//! loaded, and `gl.GetError_is_loaded` to check if it's loaded in a `GlFns`.
105//! All of the "`_is_loaded`" functions are hidden in the generated docs just
106//! to keep things tidy, but they're there.
107//!
108//! # Safety
109//! In general, there's many ways that GL can go wrong.
110//!
111//! For the purposes of this library, it's important to focus on the fact that:
112//! * 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).
113//! * You can load pointers from the current GL context (described above).
114//!   * These pointers are technically context specific, though in practice different contexts for the same graphics driver often all share the same function pointers.
115//!   * 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.
116//! * 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`.
117//! * 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`.
118//! It's up to you to try and manage this unsafety! Sorry, but this crate just does what you tell it to.
119
120#[cfg(any(
121    all(
122        not(feature = "log"),
123        any(feature = "debug_trace_calls", feature = "debug_automatic_glGetError")
124    ),
125    not(feature = "chlorine"),
126))]
127extern crate std;
128
129use std::os::raw::*;
130
131#[cfg(feature = "log")]
132#[allow(unused)]
133use log::{error, trace};
134#[cfg(all(not(feature = "log"), feature = "debug_trace_calls"))]
135macro_rules! trace { ($($arg:tt)*) => { std::println!($($arg)*) } }
136#[cfg(all(not(feature = "log"), feature = "debug_automatic_glGetError"))]
137macro_rules! error { ($($arg:tt)*) => { std::eprintln!($($arg)*) } }
138
139use core::{
140    mem::transmute,
141    ptr::null_mut,
142    sync::atomic::{AtomicPtr, Ordering},
143};
144#[allow(dead_code)]
145const RELAX: Ordering = Ordering::Relaxed;
146#[allow(dead_code)]
147type APcv = AtomicPtr<c_void>;
148const fn ap_null() -> APcv {
149    AtomicPtr::new(null_mut())
150}
151
152pub use types::*;
153#[allow(missing_docs)]
154pub mod types {
155    //! Contains all the GL types.
156    use super::*;
157    pub type GLenum = c_uint;
158    pub type GLboolean = c_uchar;
159    pub type GLbitfield = c_uint;
160    pub type GLvoid = c_void;
161    pub type GLbyte = i8;
162    pub type GLubyte = u8;
163    pub type GLshort = i16;
164    pub type GLushort = u16;
165    pub type GLint = c_int;
166    pub type GLuint = c_uint;
167    pub type GLclampx = i32;
168    pub type GLsizei = c_int;
169    pub type GLfloat = c_float;
170    pub type GLclampf = c_float;
171    pub type GLdouble = c_double;
172    pub type GLclampd = c_double;
173    pub type GLeglClientBufferEXT = *mut c_void;
174    pub type GLeglImageOES = *mut c_void;
175    pub type GLchar = c_char;
176    pub type GLcharARB = c_char;
177    #[cfg(any(target_os = "macos", target_os = "ios"))]
178    pub type GLhandleARB = *mut c_void;
179    #[cfg(not(any(target_os = "macos", target_os = "ios")))]
180    pub type GLhandleARB = c_uint;
181    pub type GLhalf = u16;
182    pub type GLhalfARB = u16;
183    pub type GLfixed = i32;
184    pub type GLintptr = isize;
185    pub type GLintptrARB = isize;
186    pub type GLsizeiptr = isize;
187    pub type GLsizeiptrARB = isize;
188    pub type GLint64 = i64;
189    pub type GLint64EXT = i64;
190    pub type GLuint64 = u64;
191    pub type GLuint64EXT = u64;
192    #[doc(hidden)]
193    pub struct __GLsync {
194        _priv: u8,
195    }
196    impl core::fmt::Debug for __GLsync {
197        fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
198            write!(f, "__GLsync")
199        }
200    }
201    pub type GLsync = *mut __GLsync;
202    pub struct _cl_context {
203        _priv: u8,
204    }
205    impl core::fmt::Debug for _cl_context {
206        fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
207            write!(f, "_cl_context")
208        }
209    }
210    pub struct _cl_event {
211        _priv: u8,
212    }
213    impl core::fmt::Debug for _cl_event {
214        fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
215            write!(f, "_cl_event")
216        }
217    }
218    pub type GLDEBUGPROC = Option<
219        unsafe extern "system" fn(
220            source: GLenum,
221            gltype: GLenum,
222            id: GLuint,
223            severity: GLenum,
224            length: GLsizei,
225            message: *const GLchar,
226            userParam: *mut c_void,
227        ),
228    >;
229    pub type GLDEBUGPROCARB = Option<
230        extern "system" fn(
231            source: GLenum,
232            gltype: GLenum,
233            id: GLuint,
234            severity: GLenum,
235            length: GLsizei,
236            message: *const GLchar,
237            userParam: *mut c_void,
238        ),
239    >;
240    pub type GLDEBUGPROCKHR = Option<
241        extern "system" fn(
242            source: GLenum,
243            gltype: GLenum,
244            id: GLuint,
245            severity: GLenum,
246            length: GLsizei,
247            message: *const GLchar,
248            userParam: *mut c_void,
249        ),
250    >;
251    pub type GLDEBUGPROCAMD = Option<
252        extern "system" fn(
253            id: GLuint,
254            category: GLenum,
255            severity: GLenum,
256            length: GLsizei,
257            message: *const GLchar,
258            userParam: *mut c_void,
259        ),
260    >;
261    pub type GLhalfNV = c_ushort;
262    pub type GLvdpauSurfaceNV = GLintptr;
263    pub type GLVULKANPROCNV = Option<extern "system" fn()>;
264}
265
266pub use enums::*;
267pub mod enums {
268    //! Contains all the GL enumerated values.
269    //!
270    //! In C these are called 'enums', but in Rust we call them a 'const'. Whatever.
271    use super::*;
272    #[doc = "`GL_ACTIVE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D9`"]
273    #[doc = "* **Group:** ProgramPropertyARB"]
274    pub const GL_ACTIVE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D9;
275    #[doc = "`GL_ACTIVE_ATTRIBUTES: GLenum = 0x8B89`"]
276    #[doc = "* **Group:** ProgramPropertyARB"]
277    pub const GL_ACTIVE_ATTRIBUTES: GLenum = 0x8B89;
278    #[doc = "`GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: GLenum = 0x8B8A`"]
279    #[doc = "* **Group:** ProgramPropertyARB"]
280    pub const GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: GLenum = 0x8B8A;
281    #[doc = "`GL_ACTIVE_PROGRAM: GLenum = 0x8259`"]
282    #[doc = "* **Group:** PipelineParameterName"]
283    pub const GL_ACTIVE_PROGRAM: GLenum = 0x8259;
284    #[doc = "`GL_ACTIVE_RESOURCES: GLenum = 0x92F5`"]
285    #[doc = "* **Group:** ProgramInterfacePName"]
286    pub const GL_ACTIVE_RESOURCES: GLenum = 0x92F5;
287    #[doc = "`GL_ACTIVE_SUBROUTINES: GLenum = 0x8DE5`"]
288    #[doc = "* **Group:** ProgramStagePName"]
289    pub const GL_ACTIVE_SUBROUTINES: GLenum = 0x8DE5;
290    #[doc = "`GL_ACTIVE_SUBROUTINE_MAX_LENGTH: GLenum = 0x8E48`"]
291    #[doc = "* **Group:** ProgramStagePName"]
292    pub const GL_ACTIVE_SUBROUTINE_MAX_LENGTH: GLenum = 0x8E48;
293    #[doc = "`GL_ACTIVE_SUBROUTINE_UNIFORMS: GLenum = 0x8DE6`"]
294    #[doc = "* **Group:** ProgramStagePName"]
295    pub const GL_ACTIVE_SUBROUTINE_UNIFORMS: GLenum = 0x8DE6;
296    #[doc = "`GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8E47`"]
297    #[doc = "* **Group:** ProgramStagePName"]
298    pub const GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8E47;
299    #[doc = "`GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH: GLenum = 0x8E49`"]
300    #[doc = "* **Group:** ProgramStagePName"]
301    pub const GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH: GLenum = 0x8E49;
302    #[doc = "`GL_ACTIVE_TEXTURE: GLenum = 0x84E0`"]
303    #[doc = "* **Group:** GetPName"]
304    pub const GL_ACTIVE_TEXTURE: GLenum = 0x84E0;
305    #[doc = "`GL_ACTIVE_UNIFORMS: GLenum = 0x8B86`"]
306    #[doc = "* **Group:** ProgramPropertyARB"]
307    pub const GL_ACTIVE_UNIFORMS: GLenum = 0x8B86;
308    #[doc = "`GL_ACTIVE_UNIFORM_BLOCKS: GLenum = 0x8A36`"]
309    #[doc = "* **Group:** ProgramPropertyARB"]
310    pub const GL_ACTIVE_UNIFORM_BLOCKS: GLenum = 0x8A36;
311    #[doc = "`GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: GLenum = 0x8A35`"]
312    #[doc = "* **Group:** ProgramPropertyARB"]
313    pub const GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: GLenum = 0x8A35;
314    #[doc = "`GL_ACTIVE_UNIFORM_MAX_LENGTH: GLenum = 0x8B87`"]
315    #[doc = "* **Group:** ProgramPropertyARB"]
316    pub const GL_ACTIVE_UNIFORM_MAX_LENGTH: GLenum = 0x8B87;
317    #[doc = "`GL_ACTIVE_VARIABLES: GLenum = 0x9305`"]
318    #[doc = "* **Group:** ProgramResourceProperty"]
319    pub const GL_ACTIVE_VARIABLES: GLenum = 0x9305;
320    #[doc = "`GL_ALIASED_LINE_WIDTH_RANGE: GLenum = 0x846E`"]
321    #[doc = "* **Group:** GetPName"]
322    pub const GL_ALIASED_LINE_WIDTH_RANGE: GLenum = 0x846E;
323    #[doc = "`GL_ALIASED_POINT_SIZE_RANGE: GLenum = 0x846D`"]
324    #[doc = "* **Group:** GetPName"]
325    pub const GL_ALIASED_POINT_SIZE_RANGE: GLenum = 0x846D;
326    #[doc = "`GL_ALL_BARRIER_BITS: GLbitfield = 0xFFFFFFFF`"]
327    #[doc = "* **Group:** MemoryBarrierMask"]
328    pub const GL_ALL_BARRIER_BITS: GLbitfield = 0xFFFFFFFF;
329    #[doc = "`GL_ALL_SHADER_BITS: GLbitfield = 0xFFFFFFFF`"]
330    #[doc = "* **Group:** UseProgramStageMask"]
331    pub const GL_ALL_SHADER_BITS: GLbitfield = 0xFFFFFFFF;
332    #[doc = "`GL_ALPHA: GLenum = 0x1906`"]
333    #[doc = "* **Groups:** TextureSwizzle, CombinerPortionNV, PathColorFormat, CombinerComponentUsageNV, PixelFormat"]
334    pub const GL_ALPHA: GLenum = 0x1906;
335    #[doc = "`GL_ALPHA_BITS: GLenum = 0x0D55`"]
336    #[doc = "* **Group:** GetPName"]
337    pub const GL_ALPHA_BITS: GLenum = 0x0D55;
338    #[doc = "`GL_ALREADY_SIGNALED: GLenum = 0x911A`"]
339    #[doc = "* **Group:** SyncStatus"]
340    pub const GL_ALREADY_SIGNALED: GLenum = 0x911A;
341    #[doc = "`GL_ALWAYS: GLenum = 0x0207`"]
342    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
343    pub const GL_ALWAYS: GLenum = 0x0207;
344    #[doc = "`GL_AND: GLenum = 0x1501`"]
345    #[doc = "* **Group:** LogicOp"]
346    pub const GL_AND: GLenum = 0x1501;
347    #[doc = "`GL_AND_INVERTED: GLenum = 0x1504`"]
348    #[doc = "* **Group:** LogicOp"]
349    pub const GL_AND_INVERTED: GLenum = 0x1504;
350    #[doc = "`GL_AND_REVERSE: GLenum = 0x1502`"]
351    #[doc = "* **Group:** LogicOp"]
352    pub const GL_AND_REVERSE: GLenum = 0x1502;
353    #[doc = "`GL_ANY_SAMPLES_PASSED: GLenum = 0x8C2F`"]
354    #[doc = "* **Group:** QueryTarget"]
355    pub const GL_ANY_SAMPLES_PASSED: GLenum = 0x8C2F;
356    #[doc = "`GL_ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum = 0x8D6A`"]
357    #[doc = "* **Group:** QueryTarget"]
358    pub const GL_ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum = 0x8D6A;
359    #[doc = "`GL_ARRAY_BUFFER: GLenum = 0x8892`"]
360    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
361    pub const GL_ARRAY_BUFFER: GLenum = 0x8892;
362    #[doc = "`GL_ARRAY_BUFFER_BINDING: GLenum = 0x8894`"]
363    #[doc = "* **Group:** GetPName"]
364    pub const GL_ARRAY_BUFFER_BINDING: GLenum = 0x8894;
365    #[doc = "`GL_ARRAY_SIZE: GLenum = 0x92FB`"]
366    #[doc = "* **Group:** ProgramResourceProperty"]
367    pub const GL_ARRAY_SIZE: GLenum = 0x92FB;
368    #[doc = "`GL_ARRAY_STRIDE: GLenum = 0x92FE`"]
369    #[doc = "* **Group:** ProgramResourceProperty"]
370    pub const GL_ARRAY_STRIDE: GLenum = 0x92FE;
371    #[doc = "`GL_ATOMIC_COUNTER_BARRIER_BIT: GLbitfield = 0x00001000`"]
372    #[doc = "* **Group:** MemoryBarrierMask"]
373    pub const GL_ATOMIC_COUNTER_BARRIER_BIT: GLbitfield = 0x00001000;
374    #[doc = "`GL_ATOMIC_COUNTER_BUFFER: GLenum = 0x92C0`"]
375    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
376    pub const GL_ATOMIC_COUNTER_BUFFER: GLenum = 0x92C0;
377    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS: GLenum = 0x92C5`"]
378    #[doc = "* **Group:** AtomicCounterBufferPName"]
379    pub const GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS: GLenum = 0x92C5;
380    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES: GLenum = 0x92C6`"]
381    #[doc = "* **Group:** AtomicCounterBufferPName"]
382    pub const GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES: GLenum = 0x92C6;
383    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_BINDING: GLenum = 0x92C1`"]
384    #[doc = "* **Group:** AtomicCounterBufferPName"]
385    pub const GL_ATOMIC_COUNTER_BUFFER_BINDING: GLenum = 0x92C1;
386    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE: GLenum = 0x92C4`"]
387    #[doc = "* **Group:** AtomicCounterBufferPName"]
388    pub const GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE: GLenum = 0x92C4;
389    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x9301`"]
390    #[doc = "* **Group:** ProgramResourceProperty"]
391    pub const GL_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x9301;
392    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90ED`"]
393    #[doc = "* **Group:** AtomicCounterBufferPName"]
394    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90ED;
395    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x92CB`"]
396    #[doc = "* **Group:** AtomicCounterBufferPName"]
397    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x92CB;
398    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x92CA`"]
399    #[doc = "* **Group:** AtomicCounterBufferPName"]
400    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x92CA;
401    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x92C8`"]
402    #[doc = "* **Group:** AtomicCounterBufferPName"]
403    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x92C8;
404    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x92C9`"]
405    #[doc = "* **Group:** AtomicCounterBufferPName"]
406    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x92C9;
407    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x92C7`"]
408    #[doc = "* **Group:** AtomicCounterBufferPName"]
409    pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x92C7;
410    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92C3`"]
411    pub const GL_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92C3;
412    #[doc = "`GL_ATOMIC_COUNTER_BUFFER_START: GLenum = 0x92C2`"]
413    pub const GL_ATOMIC_COUNTER_BUFFER_START: GLenum = 0x92C2;
414    #[doc = "`GL_ATTACHED_SHADERS: GLenum = 0x8B85`"]
415    #[doc = "* **Group:** ProgramPropertyARB"]
416    pub const GL_ATTACHED_SHADERS: GLenum = 0x8B85;
417    #[doc = "`GL_AUTO_GENERATE_MIPMAP: GLenum = 0x8295`"]
418    #[doc = "* **Group:** InternalFormatPName"]
419    pub const GL_AUTO_GENERATE_MIPMAP: GLenum = 0x8295;
420    #[doc = "`GL_BACK: GLenum = 0x0405`"]
421    #[doc = "* **Groups:** ColorBuffer, ColorMaterialFace, CullFaceMode, DrawBufferMode, ReadBufferMode, StencilFaceDirection, MaterialFace"]
422    pub const GL_BACK: GLenum = 0x0405;
423    #[doc = "`GL_BACK_LEFT: GLenum = 0x0402`"]
424    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
425    pub const GL_BACK_LEFT: GLenum = 0x0402;
426    #[doc = "`GL_BACK_RIGHT: GLenum = 0x0403`"]
427    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
428    pub const GL_BACK_RIGHT: GLenum = 0x0403;
429    #[doc = "`GL_BGR: GLenum = 0x80E0`"]
430    #[doc = "* **Group:** PixelFormat"]
431    pub const GL_BGR: GLenum = 0x80E0;
432    #[doc = "`GL_BGRA: GLenum = 0x80E1`"]
433    #[doc = "* **Group:** PixelFormat"]
434    pub const GL_BGRA: GLenum = 0x80E1;
435    #[doc = "`GL_BGRA_INTEGER: GLenum = 0x8D9B`"]
436    #[doc = "* **Group:** PixelFormat"]
437    pub const GL_BGRA_INTEGER: GLenum = 0x8D9B;
438    #[doc = "`GL_BGR_INTEGER: GLenum = 0x8D9A`"]
439    #[doc = "* **Group:** PixelFormat"]
440    pub const GL_BGR_INTEGER: GLenum = 0x8D9A;
441    #[doc = "`GL_BLEND: GLenum = 0x0BE2`"]
442    #[doc = "* **Groups:** TextureEnvMode, EnableCap, GetPName"]
443    pub const GL_BLEND: GLenum = 0x0BE2;
444    #[doc = "`GL_BLEND_COLOR: GLenum = 0x8005`"]
445    #[doc = "* **Group:** GetPName"]
446    pub const GL_BLEND_COLOR: GLenum = 0x8005;
447    #[doc = "`GL_BLEND_DST: GLenum = 0x0BE0`"]
448    #[doc = "* **Group:** GetPName"]
449    pub const GL_BLEND_DST: GLenum = 0x0BE0;
450    #[doc = "`GL_BLEND_DST_ALPHA: GLenum = 0x80CA`"]
451    #[doc = "* **Group:** GetPName"]
452    pub const GL_BLEND_DST_ALPHA: GLenum = 0x80CA;
453    #[doc = "`GL_BLEND_DST_RGB: GLenum = 0x80C8`"]
454    #[doc = "* **Group:** GetPName"]
455    pub const GL_BLEND_DST_RGB: GLenum = 0x80C8;
456    #[doc = "`GL_BLEND_EQUATION: GLenum = 0x8009`"]
457    pub const GL_BLEND_EQUATION: GLenum = 0x8009;
458    #[doc = "`GL_BLEND_EQUATION_ALPHA: GLenum = 0x883D`"]
459    #[doc = "* **Group:** GetPName"]
460    pub const GL_BLEND_EQUATION_ALPHA: GLenum = 0x883D;
461    #[doc = "`GL_BLEND_EQUATION_RGB: GLenum = 0x8009`"]
462    #[doc = "* **Group:** GetPName"]
463    pub const GL_BLEND_EQUATION_RGB: GLenum = 0x8009;
464    #[doc = "`GL_BLEND_SRC: GLenum = 0x0BE1`"]
465    #[doc = "* **Group:** GetPName"]
466    pub const GL_BLEND_SRC: GLenum = 0x0BE1;
467    #[doc = "`GL_BLEND_SRC_ALPHA: GLenum = 0x80CB`"]
468    #[doc = "* **Group:** GetPName"]
469    pub const GL_BLEND_SRC_ALPHA: GLenum = 0x80CB;
470    #[doc = "`GL_BLEND_SRC_RGB: GLenum = 0x80C9`"]
471    #[doc = "* **Group:** GetPName"]
472    pub const GL_BLEND_SRC_RGB: GLenum = 0x80C9;
473    #[doc = "`GL_BLOCK_INDEX: GLenum = 0x92FD`"]
474    #[doc = "* **Group:** ProgramResourceProperty"]
475    pub const GL_BLOCK_INDEX: GLenum = 0x92FD;
476    #[doc = "`GL_BLUE: GLenum = 0x1905`"]
477    #[doc = "* **Groups:** TextureSwizzle, CombinerComponentUsageNV, PixelFormat"]
478    pub const GL_BLUE: GLenum = 0x1905;
479    #[doc = "`GL_BLUE_BITS: GLenum = 0x0D54`"]
480    #[doc = "* **Group:** GetPName"]
481    pub const GL_BLUE_BITS: GLenum = 0x0D54;
482    #[doc = "`GL_BLUE_INTEGER: GLenum = 0x8D96`"]
483    #[doc = "* **Group:** PixelFormat"]
484    pub const GL_BLUE_INTEGER: GLenum = 0x8D96;
485    #[doc = "`GL_BOOL: GLenum = 0x8B56`"]
486    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
487    pub const GL_BOOL: GLenum = 0x8B56;
488    #[doc = "`GL_BOOL_VEC2: GLenum = 0x8B57`"]
489    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
490    pub const GL_BOOL_VEC2: GLenum = 0x8B57;
491    #[doc = "`GL_BOOL_VEC3: GLenum = 0x8B58`"]
492    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
493    pub const GL_BOOL_VEC3: GLenum = 0x8B58;
494    #[doc = "`GL_BOOL_VEC4: GLenum = 0x8B59`"]
495    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
496    pub const GL_BOOL_VEC4: GLenum = 0x8B59;
497    #[doc = "`GL_BUFFER: GLenum = 0x82E0`"]
498    #[doc = "* **Group:** ObjectIdentifier"]
499    pub const GL_BUFFER: GLenum = 0x82E0;
500    #[doc = "`GL_BUFFER_ACCESS: GLenum = 0x88BB`"]
501    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
502    pub const GL_BUFFER_ACCESS: GLenum = 0x88BB;
503    #[doc = "`GL_BUFFER_ACCESS_FLAGS: GLenum = 0x911F`"]
504    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
505    pub const GL_BUFFER_ACCESS_FLAGS: GLenum = 0x911F;
506    #[doc = "`GL_BUFFER_BINDING: GLenum = 0x9302`"]
507    #[doc = "* **Group:** ProgramResourceProperty"]
508    pub const GL_BUFFER_BINDING: GLenum = 0x9302;
509    #[doc = "`GL_BUFFER_DATA_SIZE: GLenum = 0x9303`"]
510    #[doc = "* **Group:** ProgramResourceProperty"]
511    pub const GL_BUFFER_DATA_SIZE: GLenum = 0x9303;
512    #[doc = "`GL_BUFFER_IMMUTABLE_STORAGE: GLenum = 0x821F`"]
513    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
514    pub const GL_BUFFER_IMMUTABLE_STORAGE: GLenum = 0x821F;
515    #[doc = "`GL_BUFFER_IMMUTABLE_STORAGE_EXT: GLenum = 0x821F`"]
516    pub const GL_BUFFER_IMMUTABLE_STORAGE_EXT: GLenum = 0x821F;
517    #[doc = "`GL_BUFFER_KHR: GLenum = 0x82E0`"]
518    pub const GL_BUFFER_KHR: GLenum = 0x82E0;
519    #[doc = "`GL_BUFFER_MAPPED: GLenum = 0x88BC`"]
520    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
521    pub const GL_BUFFER_MAPPED: GLenum = 0x88BC;
522    #[doc = "`GL_BUFFER_MAP_LENGTH: GLenum = 0x9120`"]
523    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
524    pub const GL_BUFFER_MAP_LENGTH: GLenum = 0x9120;
525    #[doc = "`GL_BUFFER_MAP_OFFSET: GLenum = 0x9121`"]
526    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
527    pub const GL_BUFFER_MAP_OFFSET: GLenum = 0x9121;
528    #[doc = "`GL_BUFFER_MAP_POINTER: GLenum = 0x88BD`"]
529    #[doc = "* **Group:** BufferPointerNameARB"]
530    pub const GL_BUFFER_MAP_POINTER: GLenum = 0x88BD;
531    #[doc = "`GL_BUFFER_SIZE: GLenum = 0x8764`"]
532    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
533    pub const GL_BUFFER_SIZE: GLenum = 0x8764;
534    #[doc = "`GL_BUFFER_STORAGE_FLAGS: GLenum = 0x8220`"]
535    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
536    pub const GL_BUFFER_STORAGE_FLAGS: GLenum = 0x8220;
537    #[doc = "`GL_BUFFER_STORAGE_FLAGS_EXT: GLenum = 0x8220`"]
538    pub const GL_BUFFER_STORAGE_FLAGS_EXT: GLenum = 0x8220;
539    #[doc = "`GL_BUFFER_UPDATE_BARRIER_BIT: GLbitfield = 0x00000200`"]
540    #[doc = "* **Group:** MemoryBarrierMask"]
541    pub const GL_BUFFER_UPDATE_BARRIER_BIT: GLbitfield = 0x00000200;
542    #[doc = "`GL_BUFFER_USAGE: GLenum = 0x8765`"]
543    #[doc = "* **Groups:** VertexBufferObjectParameter, BufferPNameARB"]
544    pub const GL_BUFFER_USAGE: GLenum = 0x8765;
545    #[doc = "`GL_BUFFER_VARIABLE: GLenum = 0x92E5`"]
546    #[doc = "* **Group:** ProgramInterface"]
547    pub const GL_BUFFER_VARIABLE: GLenum = 0x92E5;
548    #[doc = "`GL_BYTE: GLenum = 0x1400`"]
549    #[doc = "* **Groups:** VertexAttribIType, WeightPointerTypeARB, TangentPointerTypeEXT, BinormalPointerTypeEXT, ColorPointerType, ListNameType, NormalPointerType, PixelType, VertexAttribType, VertexAttribPointerType"]
550    pub const GL_BYTE: GLenum = 0x1400;
551    #[doc = "`GL_CAVEAT_SUPPORT: GLenum = 0x82B8`"]
552    pub const GL_CAVEAT_SUPPORT: GLenum = 0x82B8;
553    #[doc = "`GL_CCW: GLenum = 0x0901`"]
554    #[doc = "* **Group:** FrontFaceDirection"]
555    pub const GL_CCW: GLenum = 0x0901;
556    #[doc = "`GL_CLAMP_READ_COLOR: GLenum = 0x891C`"]
557    #[doc = "* **Group:** ClampColorTargetARB"]
558    pub const GL_CLAMP_READ_COLOR: GLenum = 0x891C;
559    #[doc = "`GL_CLAMP_TO_BORDER: GLenum = 0x812D`"]
560    #[doc = "* **Group:** TextureWrapMode"]
561    pub const GL_CLAMP_TO_BORDER: GLenum = 0x812D;
562    #[doc = "`GL_CLAMP_TO_EDGE: GLenum = 0x812F`"]
563    #[doc = "* **Group:** TextureWrapMode"]
564    pub const GL_CLAMP_TO_EDGE: GLenum = 0x812F;
565    #[doc = "`GL_CLEAR: GLenum = 0x1500`"]
566    #[doc = "* **Group:** LogicOp"]
567    pub const GL_CLEAR: GLenum = 0x1500;
568    #[doc = "`GL_CLEAR_BUFFER: GLenum = 0x82B4`"]
569    #[doc = "* **Group:** InternalFormatPName"]
570    pub const GL_CLEAR_BUFFER: GLenum = 0x82B4;
571    #[doc = "`GL_CLEAR_TEXTURE: GLenum = 0x9365`"]
572    #[doc = "* **Group:** InternalFormatPName"]
573    pub const GL_CLEAR_TEXTURE: GLenum = 0x9365;
574    #[doc = "`GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT: GLbitfield = 0x00004000`"]
575    #[doc = "* **Group:** MemoryBarrierMask"]
576    pub const GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT: GLbitfield = 0x00004000;
577    #[doc = "`GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT: GLbitfield = 0x00004000`"]
578    #[doc = "* **Group:** MemoryBarrierMask"]
579    pub const GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT: GLbitfield = 0x00004000;
580    #[doc = "`GL_CLIENT_STORAGE_BIT: GLbitfield = 0x0200`"]
581    #[doc = "* **Group:** BufferStorageMask"]
582    pub const GL_CLIENT_STORAGE_BIT: GLbitfield = 0x0200;
583    #[doc = "`GL_CLIENT_STORAGE_BIT_EXT: GLbitfield = 0x0200`"]
584    #[doc = "* **Group:** BufferStorageMask"]
585    pub const GL_CLIENT_STORAGE_BIT_EXT: GLbitfield = 0x0200;
586    #[doc = "`GL_CLIPPING_INPUT_PRIMITIVES: GLenum = 0x82F6`"]
587    pub const GL_CLIPPING_INPUT_PRIMITIVES: GLenum = 0x82F6;
588    #[doc = "`GL_CLIPPING_OUTPUT_PRIMITIVES: GLenum = 0x82F7`"]
589    pub const GL_CLIPPING_OUTPUT_PRIMITIVES: GLenum = 0x82F7;
590    #[doc = "`GL_CLIP_DEPTH_MODE: GLenum = 0x935D`"]
591    pub const GL_CLIP_DEPTH_MODE: GLenum = 0x935D;
592    #[doc = "`GL_CLIP_DISTANCE0: GLenum = 0x3000`"]
593    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
594    #[doc = "* **Alias Of:** `GL_CLIP_PLANE0`"]
595    pub const GL_CLIP_DISTANCE0: GLenum = 0x3000;
596    #[doc = "`GL_CLIP_DISTANCE1: GLenum = 0x3001`"]
597    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
598    #[doc = "* **Alias Of:** `GL_CLIP_PLANE1`"]
599    pub const GL_CLIP_DISTANCE1: GLenum = 0x3001;
600    #[doc = "`GL_CLIP_DISTANCE2: GLenum = 0x3002`"]
601    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
602    #[doc = "* **Alias Of:** `GL_CLIP_PLANE2`"]
603    pub const GL_CLIP_DISTANCE2: GLenum = 0x3002;
604    #[doc = "`GL_CLIP_DISTANCE3: GLenum = 0x3003`"]
605    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
606    #[doc = "* **Alias Of:** `GL_CLIP_PLANE3`"]
607    pub const GL_CLIP_DISTANCE3: GLenum = 0x3003;
608    #[doc = "`GL_CLIP_DISTANCE4: GLenum = 0x3004`"]
609    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
610    #[doc = "* **Alias Of:** `GL_CLIP_PLANE4`"]
611    pub const GL_CLIP_DISTANCE4: GLenum = 0x3004;
612    #[doc = "`GL_CLIP_DISTANCE5: GLenum = 0x3005`"]
613    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
614    #[doc = "* **Alias Of:** `GL_CLIP_PLANE5`"]
615    pub const GL_CLIP_DISTANCE5: GLenum = 0x3005;
616    #[doc = "`GL_CLIP_DISTANCE6: GLenum = 0x3006`"]
617    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
618    pub const GL_CLIP_DISTANCE6: GLenum = 0x3006;
619    #[doc = "`GL_CLIP_DISTANCE7: GLenum = 0x3007`"]
620    #[doc = "* **Groups:** EnableCap, ClipPlaneName"]
621    pub const GL_CLIP_DISTANCE7: GLenum = 0x3007;
622    #[doc = "`GL_CLIP_ORIGIN: GLenum = 0x935C`"]
623    pub const GL_CLIP_ORIGIN: GLenum = 0x935C;
624    #[doc = "`GL_COLOR: GLenum = 0x1800`"]
625    #[doc = "* **Groups:** Buffer, PixelCopyType, InvalidateFramebufferAttachment"]
626    pub const GL_COLOR: GLenum = 0x1800;
627    #[doc = "`GL_COLORBURN: GLenum = 0x929A`"]
628    pub const GL_COLORBURN: GLenum = 0x929A;
629    #[doc = "`GL_COLORDODGE: GLenum = 0x9299`"]
630    pub const GL_COLORDODGE: GLenum = 0x9299;
631    #[doc = "`GL_COLOR_ATTACHMENT0: GLenum = 0x8CE0`"]
632    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
633    pub const GL_COLOR_ATTACHMENT0: GLenum = 0x8CE0;
634    #[doc = "`GL_COLOR_ATTACHMENT1: GLenum = 0x8CE1`"]
635    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
636    pub const GL_COLOR_ATTACHMENT1: GLenum = 0x8CE1;
637    #[doc = "`GL_COLOR_ATTACHMENT10: GLenum = 0x8CEA`"]
638    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
639    pub const GL_COLOR_ATTACHMENT10: GLenum = 0x8CEA;
640    #[doc = "`GL_COLOR_ATTACHMENT11: GLenum = 0x8CEB`"]
641    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
642    pub const GL_COLOR_ATTACHMENT11: GLenum = 0x8CEB;
643    #[doc = "`GL_COLOR_ATTACHMENT12: GLenum = 0x8CEC`"]
644    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
645    pub const GL_COLOR_ATTACHMENT12: GLenum = 0x8CEC;
646    #[doc = "`GL_COLOR_ATTACHMENT13: GLenum = 0x8CED`"]
647    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
648    pub const GL_COLOR_ATTACHMENT13: GLenum = 0x8CED;
649    #[doc = "`GL_COLOR_ATTACHMENT14: GLenum = 0x8CEE`"]
650    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
651    pub const GL_COLOR_ATTACHMENT14: GLenum = 0x8CEE;
652    #[doc = "`GL_COLOR_ATTACHMENT15: GLenum = 0x8CEF`"]
653    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
654    pub const GL_COLOR_ATTACHMENT15: GLenum = 0x8CEF;
655    #[doc = "`GL_COLOR_ATTACHMENT16: GLenum = 0x8CF0`"]
656    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
657    pub const GL_COLOR_ATTACHMENT16: GLenum = 0x8CF0;
658    #[doc = "`GL_COLOR_ATTACHMENT17: GLenum = 0x8CF1`"]
659    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
660    pub const GL_COLOR_ATTACHMENT17: GLenum = 0x8CF1;
661    #[doc = "`GL_COLOR_ATTACHMENT18: GLenum = 0x8CF2`"]
662    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
663    pub const GL_COLOR_ATTACHMENT18: GLenum = 0x8CF2;
664    #[doc = "`GL_COLOR_ATTACHMENT19: GLenum = 0x8CF3`"]
665    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
666    pub const GL_COLOR_ATTACHMENT19: GLenum = 0x8CF3;
667    #[doc = "`GL_COLOR_ATTACHMENT2: GLenum = 0x8CE2`"]
668    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
669    pub const GL_COLOR_ATTACHMENT2: GLenum = 0x8CE2;
670    #[doc = "`GL_COLOR_ATTACHMENT20: GLenum = 0x8CF4`"]
671    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
672    pub const GL_COLOR_ATTACHMENT20: GLenum = 0x8CF4;
673    #[doc = "`GL_COLOR_ATTACHMENT21: GLenum = 0x8CF5`"]
674    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
675    pub const GL_COLOR_ATTACHMENT21: GLenum = 0x8CF5;
676    #[doc = "`GL_COLOR_ATTACHMENT22: GLenum = 0x8CF6`"]
677    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
678    pub const GL_COLOR_ATTACHMENT22: GLenum = 0x8CF6;
679    #[doc = "`GL_COLOR_ATTACHMENT23: GLenum = 0x8CF7`"]
680    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
681    pub const GL_COLOR_ATTACHMENT23: GLenum = 0x8CF7;
682    #[doc = "`GL_COLOR_ATTACHMENT24: GLenum = 0x8CF8`"]
683    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
684    pub const GL_COLOR_ATTACHMENT24: GLenum = 0x8CF8;
685    #[doc = "`GL_COLOR_ATTACHMENT25: GLenum = 0x8CF9`"]
686    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
687    pub const GL_COLOR_ATTACHMENT25: GLenum = 0x8CF9;
688    #[doc = "`GL_COLOR_ATTACHMENT26: GLenum = 0x8CFA`"]
689    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
690    pub const GL_COLOR_ATTACHMENT26: GLenum = 0x8CFA;
691    #[doc = "`GL_COLOR_ATTACHMENT27: GLenum = 0x8CFB`"]
692    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
693    pub const GL_COLOR_ATTACHMENT27: GLenum = 0x8CFB;
694    #[doc = "`GL_COLOR_ATTACHMENT28: GLenum = 0x8CFC`"]
695    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
696    pub const GL_COLOR_ATTACHMENT28: GLenum = 0x8CFC;
697    #[doc = "`GL_COLOR_ATTACHMENT29: GLenum = 0x8CFD`"]
698    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
699    pub const GL_COLOR_ATTACHMENT29: GLenum = 0x8CFD;
700    #[doc = "`GL_COLOR_ATTACHMENT3: GLenum = 0x8CE3`"]
701    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
702    pub const GL_COLOR_ATTACHMENT3: GLenum = 0x8CE3;
703    #[doc = "`GL_COLOR_ATTACHMENT30: GLenum = 0x8CFE`"]
704    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
705    pub const GL_COLOR_ATTACHMENT30: GLenum = 0x8CFE;
706    #[doc = "`GL_COLOR_ATTACHMENT31: GLenum = 0x8CFF`"]
707    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
708    pub const GL_COLOR_ATTACHMENT31: GLenum = 0x8CFF;
709    #[doc = "`GL_COLOR_ATTACHMENT4: GLenum = 0x8CE4`"]
710    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
711    pub const GL_COLOR_ATTACHMENT4: GLenum = 0x8CE4;
712    #[doc = "`GL_COLOR_ATTACHMENT5: GLenum = 0x8CE5`"]
713    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
714    pub const GL_COLOR_ATTACHMENT5: GLenum = 0x8CE5;
715    #[doc = "`GL_COLOR_ATTACHMENT6: GLenum = 0x8CE6`"]
716    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
717    pub const GL_COLOR_ATTACHMENT6: GLenum = 0x8CE6;
718    #[doc = "`GL_COLOR_ATTACHMENT7: GLenum = 0x8CE7`"]
719    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
720    pub const GL_COLOR_ATTACHMENT7: GLenum = 0x8CE7;
721    #[doc = "`GL_COLOR_ATTACHMENT8: GLenum = 0x8CE8`"]
722    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
723    pub const GL_COLOR_ATTACHMENT8: GLenum = 0x8CE8;
724    #[doc = "`GL_COLOR_ATTACHMENT9: GLenum = 0x8CE9`"]
725    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode, FramebufferAttachment, InvalidateFramebufferAttachment"]
726    pub const GL_COLOR_ATTACHMENT9: GLenum = 0x8CE9;
727    #[doc = "`GL_COLOR_BUFFER_BIT: GLbitfield = 0x00004000`"]
728    #[doc = "* **Groups:** ClearBufferMask, AttribMask"]
729    pub const GL_COLOR_BUFFER_BIT: GLbitfield = 0x00004000;
730    #[doc = "`GL_COLOR_CLEAR_VALUE: GLenum = 0x0C22`"]
731    #[doc = "* **Group:** GetPName"]
732    pub const GL_COLOR_CLEAR_VALUE: GLenum = 0x0C22;
733    #[doc = "`GL_COLOR_COMPONENTS: GLenum = 0x8283`"]
734    #[doc = "* **Group:** InternalFormatPName"]
735    pub const GL_COLOR_COMPONENTS: GLenum = 0x8283;
736    #[doc = "`GL_COLOR_ENCODING: GLenum = 0x8296`"]
737    #[doc = "* **Group:** InternalFormatPName"]
738    pub const GL_COLOR_ENCODING: GLenum = 0x8296;
739    #[doc = "`GL_COLOR_LOGIC_OP: GLenum = 0x0BF2`"]
740    #[doc = "* **Groups:** GetPName, EnableCap"]
741    pub const GL_COLOR_LOGIC_OP: GLenum = 0x0BF2;
742    #[doc = "`GL_COLOR_RENDERABLE: GLenum = 0x8286`"]
743    #[doc = "* **Group:** InternalFormatPName"]
744    pub const GL_COLOR_RENDERABLE: GLenum = 0x8286;
745    #[doc = "`GL_COLOR_WRITEMASK: GLenum = 0x0C23`"]
746    #[doc = "* **Group:** GetPName"]
747    pub const GL_COLOR_WRITEMASK: GLenum = 0x0C23;
748    #[doc = "`GL_COMMAND_BARRIER_BIT: GLbitfield = 0x00000040`"]
749    #[doc = "* **Group:** MemoryBarrierMask"]
750    pub const GL_COMMAND_BARRIER_BIT: GLbitfield = 0x00000040;
751    #[doc = "`GL_COMPARE_REF_TO_TEXTURE: GLenum = 0x884E`"]
752    #[doc = "* **Group:** TextureCompareMode"]
753    #[doc = "* **Alias Of:** `GL_COMPARE_R_TO_TEXTURE`"]
754    pub const GL_COMPARE_REF_TO_TEXTURE: GLenum = 0x884E;
755    #[doc = "`GL_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4B`"]
756    #[doc = "* **Groups:** ProgramResourceProperty, SubroutineParameterName"]
757    pub const GL_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4B;
758    #[doc = "`GL_COMPILE_STATUS: GLenum = 0x8B81`"]
759    #[doc = "* **Group:** ShaderParameterName"]
760    pub const GL_COMPILE_STATUS: GLenum = 0x8B81;
761    #[doc = "`GL_COMPLETION_STATUS_ARB: GLenum = 0x91B1`"]
762    #[doc = "* **Alias Of:** `GL_COMPLETION_STATUS_KHR`"]
763    pub const GL_COMPLETION_STATUS_ARB: GLenum = 0x91B1;
764    #[doc = "`GL_COMPLETION_STATUS_KHR: GLenum = 0x91B1`"]
765    pub const GL_COMPLETION_STATUS_KHR: GLenum = 0x91B1;
766    #[doc = "`GL_COMPRESSED_R11_EAC: GLenum = 0x9270`"]
767    #[doc = "* **Group:** InternalFormat"]
768    pub const GL_COMPRESSED_R11_EAC: GLenum = 0x9270;
769    #[doc = "`GL_COMPRESSED_RED: GLenum = 0x8225`"]
770    #[doc = "* **Group:** InternalFormat"]
771    pub const GL_COMPRESSED_RED: GLenum = 0x8225;
772    #[doc = "`GL_COMPRESSED_RED_RGTC1: GLenum = 0x8DBB`"]
773    #[doc = "* **Group:** InternalFormat"]
774    pub const GL_COMPRESSED_RED_RGTC1: GLenum = 0x8DBB;
775    #[doc = "`GL_COMPRESSED_RG: GLenum = 0x8226`"]
776    #[doc = "* **Group:** InternalFormat"]
777    pub const GL_COMPRESSED_RG: GLenum = 0x8226;
778    #[doc = "`GL_COMPRESSED_RG11_EAC: GLenum = 0x9272`"]
779    #[doc = "* **Group:** InternalFormat"]
780    pub const GL_COMPRESSED_RG11_EAC: GLenum = 0x9272;
781    #[doc = "`GL_COMPRESSED_RGB: GLenum = 0x84ED`"]
782    #[doc = "* **Group:** InternalFormat"]
783    pub const GL_COMPRESSED_RGB: GLenum = 0x84ED;
784    #[doc = "`GL_COMPRESSED_RGB8_ETC2: GLenum = 0x9274`"]
785    #[doc = "* **Group:** InternalFormat"]
786    pub const GL_COMPRESSED_RGB8_ETC2: GLenum = 0x9274;
787    #[doc = "`GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9276`"]
788    #[doc = "* **Group:** InternalFormat"]
789    pub const GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9276;
790    #[doc = "`GL_COMPRESSED_RGBA: GLenum = 0x84EE`"]
791    #[doc = "* **Group:** InternalFormat"]
792    pub const GL_COMPRESSED_RGBA: GLenum = 0x84EE;
793    #[doc = "`GL_COMPRESSED_RGBA8_ETC2_EAC: GLenum = 0x9278`"]
794    #[doc = "* **Group:** InternalFormat"]
795    pub const GL_COMPRESSED_RGBA8_ETC2_EAC: GLenum = 0x9278;
796    #[doc = "`GL_COMPRESSED_RGBA_ASTC_10x10: GLenum = 0x93BB`"]
797    #[doc = "* **Group:** InternalFormat"]
798    pub const GL_COMPRESSED_RGBA_ASTC_10x10: GLenum = 0x93BB;
799    #[doc = "`GL_COMPRESSED_RGBA_ASTC_10x5: GLenum = 0x93B8`"]
800    #[doc = "* **Group:** InternalFormat"]
801    pub const GL_COMPRESSED_RGBA_ASTC_10x5: GLenum = 0x93B8;
802    #[doc = "`GL_COMPRESSED_RGBA_ASTC_10x6: GLenum = 0x93B9`"]
803    #[doc = "* **Group:** InternalFormat"]
804    pub const GL_COMPRESSED_RGBA_ASTC_10x6: GLenum = 0x93B9;
805    #[doc = "`GL_COMPRESSED_RGBA_ASTC_10x8: GLenum = 0x93BA`"]
806    #[doc = "* **Group:** InternalFormat"]
807    pub const GL_COMPRESSED_RGBA_ASTC_10x8: GLenum = 0x93BA;
808    #[doc = "`GL_COMPRESSED_RGBA_ASTC_12x10: GLenum = 0x93BC`"]
809    #[doc = "* **Group:** InternalFormat"]
810    pub const GL_COMPRESSED_RGBA_ASTC_12x10: GLenum = 0x93BC;
811    #[doc = "`GL_COMPRESSED_RGBA_ASTC_12x12: GLenum = 0x93BD`"]
812    #[doc = "* **Group:** InternalFormat"]
813    pub const GL_COMPRESSED_RGBA_ASTC_12x12: GLenum = 0x93BD;
814    #[doc = "`GL_COMPRESSED_RGBA_ASTC_4x4: GLenum = 0x93B0`"]
815    #[doc = "* **Group:** InternalFormat"]
816    pub const GL_COMPRESSED_RGBA_ASTC_4x4: GLenum = 0x93B0;
817    #[doc = "`GL_COMPRESSED_RGBA_ASTC_5x4: GLenum = 0x93B1`"]
818    #[doc = "* **Group:** InternalFormat"]
819    pub const GL_COMPRESSED_RGBA_ASTC_5x4: GLenum = 0x93B1;
820    #[doc = "`GL_COMPRESSED_RGBA_ASTC_5x5: GLenum = 0x93B2`"]
821    #[doc = "* **Group:** InternalFormat"]
822    pub const GL_COMPRESSED_RGBA_ASTC_5x5: GLenum = 0x93B2;
823    #[doc = "`GL_COMPRESSED_RGBA_ASTC_6x5: GLenum = 0x93B3`"]
824    #[doc = "* **Group:** InternalFormat"]
825    pub const GL_COMPRESSED_RGBA_ASTC_6x5: GLenum = 0x93B3;
826    #[doc = "`GL_COMPRESSED_RGBA_ASTC_6x6: GLenum = 0x93B4`"]
827    #[doc = "* **Group:** InternalFormat"]
828    pub const GL_COMPRESSED_RGBA_ASTC_6x6: GLenum = 0x93B4;
829    #[doc = "`GL_COMPRESSED_RGBA_ASTC_8x5: GLenum = 0x93B5`"]
830    #[doc = "* **Group:** InternalFormat"]
831    pub const GL_COMPRESSED_RGBA_ASTC_8x5: GLenum = 0x93B5;
832    #[doc = "`GL_COMPRESSED_RGBA_ASTC_8x6: GLenum = 0x93B6`"]
833    #[doc = "* **Group:** InternalFormat"]
834    pub const GL_COMPRESSED_RGBA_ASTC_8x6: GLenum = 0x93B6;
835    #[doc = "`GL_COMPRESSED_RGBA_ASTC_8x8: GLenum = 0x93B7`"]
836    #[doc = "* **Group:** InternalFormat"]
837    pub const GL_COMPRESSED_RGBA_ASTC_8x8: GLenum = 0x93B7;
838    #[doc = "`GL_COMPRESSED_RGBA_BPTC_UNORM: GLenum = 0x8E8C`"]
839    #[doc = "* **Group:** InternalFormat"]
840    pub const GL_COMPRESSED_RGBA_BPTC_UNORM: GLenum = 0x8E8C;
841    #[doc = "`GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: GLenum = 0x8E8E`"]
842    #[doc = "* **Group:** InternalFormat"]
843    pub const GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: GLenum = 0x8E8E;
844    #[doc = "`GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: GLenum = 0x8E8F`"]
845    #[doc = "* **Group:** InternalFormat"]
846    pub const GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: GLenum = 0x8E8F;
847    #[doc = "`GL_COMPRESSED_RG_RGTC2: GLenum = 0x8DBD`"]
848    #[doc = "* **Group:** InternalFormat"]
849    pub const GL_COMPRESSED_RG_RGTC2: GLenum = 0x8DBD;
850    #[doc = "`GL_COMPRESSED_SIGNED_R11_EAC: GLenum = 0x9271`"]
851    #[doc = "* **Group:** InternalFormat"]
852    pub const GL_COMPRESSED_SIGNED_R11_EAC: GLenum = 0x9271;
853    #[doc = "`GL_COMPRESSED_SIGNED_RED_RGTC1: GLenum = 0x8DBC`"]
854    #[doc = "* **Group:** InternalFormat"]
855    pub const GL_COMPRESSED_SIGNED_RED_RGTC1: GLenum = 0x8DBC;
856    #[doc = "`GL_COMPRESSED_SIGNED_RG11_EAC: GLenum = 0x9273`"]
857    #[doc = "* **Group:** InternalFormat"]
858    pub const GL_COMPRESSED_SIGNED_RG11_EAC: GLenum = 0x9273;
859    #[doc = "`GL_COMPRESSED_SIGNED_RG_RGTC2: GLenum = 0x8DBE`"]
860    #[doc = "* **Group:** InternalFormat"]
861    pub const GL_COMPRESSED_SIGNED_RG_RGTC2: GLenum = 0x8DBE;
862    #[doc = "`GL_COMPRESSED_SRGB: GLenum = 0x8C48`"]
863    #[doc = "* **Group:** InternalFormat"]
864    pub const GL_COMPRESSED_SRGB: GLenum = 0x8C48;
865    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: GLenum = 0x93DB`"]
866    #[doc = "* **Group:** InternalFormat"]
867    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: GLenum = 0x93DB;
868    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: GLenum = 0x93D8`"]
869    #[doc = "* **Group:** InternalFormat"]
870    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: GLenum = 0x93D8;
871    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: GLenum = 0x93D9`"]
872    #[doc = "* **Group:** InternalFormat"]
873    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: GLenum = 0x93D9;
874    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: GLenum = 0x93DA`"]
875    #[doc = "* **Group:** InternalFormat"]
876    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: GLenum = 0x93DA;
877    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: GLenum = 0x93DC`"]
878    #[doc = "* **Group:** InternalFormat"]
879    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: GLenum = 0x93DC;
880    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: GLenum = 0x93DD`"]
881    #[doc = "* **Group:** InternalFormat"]
882    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: GLenum = 0x93DD;
883    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: GLenum = 0x93D0`"]
884    #[doc = "* **Group:** InternalFormat"]
885    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: GLenum = 0x93D0;
886    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: GLenum = 0x93D1`"]
887    #[doc = "* **Group:** InternalFormat"]
888    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: GLenum = 0x93D1;
889    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: GLenum = 0x93D2`"]
890    #[doc = "* **Group:** InternalFormat"]
891    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: GLenum = 0x93D2;
892    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: GLenum = 0x93D3`"]
893    #[doc = "* **Group:** InternalFormat"]
894    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: GLenum = 0x93D3;
895    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: GLenum = 0x93D4`"]
896    #[doc = "* **Group:** InternalFormat"]
897    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: GLenum = 0x93D4;
898    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: GLenum = 0x93D5`"]
899    #[doc = "* **Group:** InternalFormat"]
900    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: GLenum = 0x93D5;
901    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: GLenum = 0x93D6`"]
902    #[doc = "* **Group:** InternalFormat"]
903    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: GLenum = 0x93D6;
904    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: GLenum = 0x93D7`"]
905    #[doc = "* **Group:** InternalFormat"]
906    pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: GLenum = 0x93D7;
907    #[doc = "`GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: GLenum = 0x9279`"]
908    #[doc = "* **Group:** InternalFormat"]
909    pub const GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: GLenum = 0x9279;
910    #[doc = "`GL_COMPRESSED_SRGB8_ETC2: GLenum = 0x9275`"]
911    #[doc = "* **Group:** InternalFormat"]
912    pub const GL_COMPRESSED_SRGB8_ETC2: GLenum = 0x9275;
913    #[doc = "`GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9277`"]
914    #[doc = "* **Group:** InternalFormat"]
915    pub const GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9277;
916    #[doc = "`GL_COMPRESSED_SRGB_ALPHA: GLenum = 0x8C49`"]
917    #[doc = "* **Group:** InternalFormat"]
918    pub const GL_COMPRESSED_SRGB_ALPHA: GLenum = 0x8C49;
919    #[doc = "`GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: GLenum = 0x8E8D`"]
920    #[doc = "* **Group:** InternalFormat"]
921    pub const GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: GLenum = 0x8E8D;
922    #[doc = "`GL_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A3`"]
923    #[doc = "* **Group:** GetPName"]
924    pub const GL_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A3;
925    #[doc = "`GL_COMPUTE_SHADER: GLenum = 0x91B9`"]
926    #[doc = "* **Group:** ShaderType"]
927    pub const GL_COMPUTE_SHADER: GLenum = 0x91B9;
928    #[doc = "`GL_COMPUTE_SHADER_BIT: GLbitfield = 0x00000020`"]
929    #[doc = "* **Group:** UseProgramStageMask"]
930    pub const GL_COMPUTE_SHADER_BIT: GLbitfield = 0x00000020;
931    #[doc = "`GL_COMPUTE_SHADER_INVOCATIONS: GLenum = 0x82F5`"]
932    pub const GL_COMPUTE_SHADER_INVOCATIONS: GLenum = 0x82F5;
933    #[doc = "`GL_COMPUTE_SUBROUTINE: GLenum = 0x92ED`"]
934    #[doc = "* **Group:** ProgramInterface"]
935    pub const GL_COMPUTE_SUBROUTINE: GLenum = 0x92ED;
936    #[doc = "`GL_COMPUTE_SUBROUTINE_UNIFORM: GLenum = 0x92F3`"]
937    #[doc = "* **Group:** ProgramInterface"]
938    pub const GL_COMPUTE_SUBROUTINE_UNIFORM: GLenum = 0x92F3;
939    #[doc = "`GL_COMPUTE_TEXTURE: GLenum = 0x82A0`"]
940    #[doc = "* **Group:** InternalFormatPName"]
941    pub const GL_COMPUTE_TEXTURE: GLenum = 0x82A0;
942    #[doc = "`GL_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x8267`"]
943    #[doc = "* **Group:** ProgramPropertyARB"]
944    pub const GL_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x8267;
945    #[doc = "`GL_CONDITION_SATISFIED: GLenum = 0x911C`"]
946    #[doc = "* **Group:** SyncStatus"]
947    pub const GL_CONDITION_SATISFIED: GLenum = 0x911C;
948    #[doc = "`GL_CONSTANT_ALPHA: GLenum = 0x8003`"]
949    #[doc = "* **Group:** BlendingFactor"]
950    pub const GL_CONSTANT_ALPHA: GLenum = 0x8003;
951    #[doc = "`GL_CONSTANT_COLOR: GLenum = 0x8001`"]
952    #[doc = "* **Group:** BlendingFactor"]
953    pub const GL_CONSTANT_COLOR: GLenum = 0x8001;
954    #[doc = "`GL_CONTEXT_COMPATIBILITY_PROFILE_BIT: GLbitfield = 0x00000002`"]
955    #[doc = "* **Group:** ContextProfileMask"]
956    pub const GL_CONTEXT_COMPATIBILITY_PROFILE_BIT: GLbitfield = 0x00000002;
957    #[doc = "`GL_CONTEXT_CORE_PROFILE_BIT: GLbitfield = 0x00000001`"]
958    #[doc = "* **Group:** ContextProfileMask"]
959    pub const GL_CONTEXT_CORE_PROFILE_BIT: GLbitfield = 0x00000001;
960    #[doc = "`GL_CONTEXT_FLAGS: GLenum = 0x821E`"]
961    #[doc = "* **Group:** GetPName"]
962    pub const GL_CONTEXT_FLAGS: GLenum = 0x821E;
963    #[doc = "`GL_CONTEXT_FLAG_DEBUG_BIT: GLbitfield = 0x00000002`"]
964    #[doc = "* **Group:** ContextFlagMask"]
965    pub const GL_CONTEXT_FLAG_DEBUG_BIT: GLbitfield = 0x00000002;
966    #[doc = "`GL_CONTEXT_FLAG_DEBUG_BIT_KHR: GLbitfield = 0x00000002`"]
967    #[doc = "* **Group:** ContextFlagMask"]
968    pub const GL_CONTEXT_FLAG_DEBUG_BIT_KHR: GLbitfield = 0x00000002;
969    #[doc = "`GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT: GLbitfield = 0x00000001`"]
970    #[doc = "* **Group:** ContextFlagMask"]
971    pub const GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT: GLbitfield = 0x00000001;
972    #[doc = "`GL_CONTEXT_FLAG_NO_ERROR_BIT: GLbitfield = 0x00000008`"]
973    #[doc = "* **Group:** ContextFlagMask"]
974    pub const GL_CONTEXT_FLAG_NO_ERROR_BIT: GLbitfield = 0x00000008;
975    #[doc = "`GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT: GLbitfield = 0x00000004`"]
976    #[doc = "* **Group:** ContextFlagMask"]
977    pub const GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT: GLbitfield = 0x00000004;
978    #[doc = "`GL_CONTEXT_LOST: GLenum = 0x0507`"]
979    pub const GL_CONTEXT_LOST: GLenum = 0x0507;
980    #[doc = "`GL_CONTEXT_PROFILE_MASK: GLenum = 0x9126`"]
981    #[doc = "* **Group:** GetPName"]
982    pub const GL_CONTEXT_PROFILE_MASK: GLenum = 0x9126;
983    #[doc = "`GL_CONTEXT_RELEASE_BEHAVIOR: GLenum = 0x82FB`"]
984    pub const GL_CONTEXT_RELEASE_BEHAVIOR: GLenum = 0x82FB;
985    #[doc = "`GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH: GLenum = 0x82FC`"]
986    pub const GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH: GLenum = 0x82FC;
987    #[doc = "`GL_COPY: GLenum = 0x1503`"]
988    #[doc = "* **Group:** LogicOp"]
989    pub const GL_COPY: GLenum = 0x1503;
990    #[doc = "`GL_COPY_INVERTED: GLenum = 0x150C`"]
991    #[doc = "* **Group:** LogicOp"]
992    pub const GL_COPY_INVERTED: GLenum = 0x150C;
993    #[doc = "`GL_COPY_READ_BUFFER: GLenum = 0x8F36`"]
994    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
995    pub const GL_COPY_READ_BUFFER: GLenum = 0x8F36;
996    #[doc = "`GL_COPY_READ_BUFFER_BINDING: GLenum = 0x8F36`"]
997    #[doc = "* **Alias Of:** `GL_COPY_READ_BUFFER`"]
998    pub const GL_COPY_READ_BUFFER_BINDING: GLenum = 0x8F36;
999    #[doc = "`GL_COPY_READ_BUFFER_NV: GLenum = 0x8F36`"]
1000    pub const GL_COPY_READ_BUFFER_NV: GLenum = 0x8F36;
1001    #[doc = "`GL_COPY_WRITE_BUFFER: GLenum = 0x8F37`"]
1002    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
1003    pub const GL_COPY_WRITE_BUFFER: GLenum = 0x8F37;
1004    #[doc = "`GL_COPY_WRITE_BUFFER_BINDING: GLenum = 0x8F37`"]
1005    #[doc = "* **Alias Of:** `GL_COPY_WRITE_BUFFER`"]
1006    pub const GL_COPY_WRITE_BUFFER_BINDING: GLenum = 0x8F37;
1007    #[doc = "`GL_COPY_WRITE_BUFFER_NV: GLenum = 0x8F37`"]
1008    pub const GL_COPY_WRITE_BUFFER_NV: GLenum = 0x8F37;
1009    #[doc = "`GL_CULL_FACE: GLenum = 0x0B44`"]
1010    #[doc = "* **Groups:** GetPName, EnableCap"]
1011    pub const GL_CULL_FACE: GLenum = 0x0B44;
1012    #[doc = "`GL_CULL_FACE_MODE: GLenum = 0x0B45`"]
1013    #[doc = "* **Group:** GetPName"]
1014    pub const GL_CULL_FACE_MODE: GLenum = 0x0B45;
1015    #[doc = "`GL_CURRENT_PROGRAM: GLenum = 0x8B8D`"]
1016    #[doc = "* **Group:** GetPName"]
1017    pub const GL_CURRENT_PROGRAM: GLenum = 0x8B8D;
1018    #[doc = "`GL_CURRENT_QUERY: GLenum = 0x8865`"]
1019    #[doc = "* **Group:** QueryParameterName"]
1020    pub const GL_CURRENT_QUERY: GLenum = 0x8865;
1021    #[doc = "`GL_CURRENT_QUERY_EXT: GLenum = 0x8865`"]
1022    pub const GL_CURRENT_QUERY_EXT: GLenum = 0x8865;
1023    #[doc = "`GL_CURRENT_VERTEX_ATTRIB: GLenum = 0x8626`"]
1024    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB"]
1025    pub const GL_CURRENT_VERTEX_ATTRIB: GLenum = 0x8626;
1026    #[doc = "`GL_CW: GLenum = 0x0900`"]
1027    #[doc = "* **Group:** FrontFaceDirection"]
1028    pub const GL_CW: GLenum = 0x0900;
1029    #[doc = "`GL_DARKEN: GLenum = 0x9297`"]
1030    pub const GL_DARKEN: GLenum = 0x9297;
1031    #[doc = "`GL_DEBUG_CALLBACK_FUNCTION: GLenum = 0x8244`"]
1032    #[doc = "* **Group:** GetPointervPName"]
1033    pub const GL_DEBUG_CALLBACK_FUNCTION: GLenum = 0x8244;
1034    #[doc = "`GL_DEBUG_CALLBACK_FUNCTION_ARB: GLenum = 0x8244`"]
1035    pub const GL_DEBUG_CALLBACK_FUNCTION_ARB: GLenum = 0x8244;
1036    #[doc = "`GL_DEBUG_CALLBACK_FUNCTION_KHR: GLenum = 0x8244`"]
1037    pub const GL_DEBUG_CALLBACK_FUNCTION_KHR: GLenum = 0x8244;
1038    #[doc = "`GL_DEBUG_CALLBACK_USER_PARAM: GLenum = 0x8245`"]
1039    #[doc = "* **Group:** GetPointervPName"]
1040    pub const GL_DEBUG_CALLBACK_USER_PARAM: GLenum = 0x8245;
1041    #[doc = "`GL_DEBUG_CALLBACK_USER_PARAM_ARB: GLenum = 0x8245`"]
1042    pub const GL_DEBUG_CALLBACK_USER_PARAM_ARB: GLenum = 0x8245;
1043    #[doc = "`GL_DEBUG_CALLBACK_USER_PARAM_KHR: GLenum = 0x8245`"]
1044    pub const GL_DEBUG_CALLBACK_USER_PARAM_KHR: GLenum = 0x8245;
1045    #[doc = "`GL_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826D`"]
1046    #[doc = "* **Group:** GetPName"]
1047    pub const GL_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826D;
1048    #[doc = "`GL_DEBUG_GROUP_STACK_DEPTH_KHR: GLenum = 0x826D`"]
1049    pub const GL_DEBUG_GROUP_STACK_DEPTH_KHR: GLenum = 0x826D;
1050    #[doc = "`GL_DEBUG_LOGGED_MESSAGES: GLenum = 0x9145`"]
1051    pub const GL_DEBUG_LOGGED_MESSAGES: GLenum = 0x9145;
1052    #[doc = "`GL_DEBUG_LOGGED_MESSAGES_ARB: GLenum = 0x9145`"]
1053    pub const GL_DEBUG_LOGGED_MESSAGES_ARB: GLenum = 0x9145;
1054    #[doc = "`GL_DEBUG_LOGGED_MESSAGES_KHR: GLenum = 0x9145`"]
1055    pub const GL_DEBUG_LOGGED_MESSAGES_KHR: GLenum = 0x9145;
1056    #[doc = "`GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: GLenum = 0x8243`"]
1057    pub const GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: GLenum = 0x8243;
1058    #[doc = "`GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB: GLenum = 0x8243`"]
1059    pub const GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB: GLenum = 0x8243;
1060    #[doc = "`GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR: GLenum = 0x8243`"]
1061    pub const GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR: GLenum = 0x8243;
1062    #[doc = "`GL_DEBUG_OUTPUT: GLenum = 0x92E0`"]
1063    #[doc = "* **Group:** EnableCap"]
1064    pub const GL_DEBUG_OUTPUT: GLenum = 0x92E0;
1065    #[doc = "`GL_DEBUG_OUTPUT_KHR: GLenum = 0x92E0`"]
1066    pub const GL_DEBUG_OUTPUT_KHR: GLenum = 0x92E0;
1067    #[doc = "`GL_DEBUG_OUTPUT_SYNCHRONOUS: GLenum = 0x8242`"]
1068    #[doc = "* **Group:** EnableCap"]
1069    pub const GL_DEBUG_OUTPUT_SYNCHRONOUS: GLenum = 0x8242;
1070    #[doc = "`GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB: GLenum = 0x8242`"]
1071    pub const GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB: GLenum = 0x8242;
1072    #[doc = "`GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR: GLenum = 0x8242`"]
1073    pub const GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR: GLenum = 0x8242;
1074    #[doc = "`GL_DEBUG_SEVERITY_HIGH: GLenum = 0x9146`"]
1075    #[doc = "* **Group:** DebugSeverity"]
1076    pub const GL_DEBUG_SEVERITY_HIGH: GLenum = 0x9146;
1077    #[doc = "`GL_DEBUG_SEVERITY_HIGH_ARB: GLenum = 0x9146`"]
1078    pub const GL_DEBUG_SEVERITY_HIGH_ARB: GLenum = 0x9146;
1079    #[doc = "`GL_DEBUG_SEVERITY_HIGH_KHR: GLenum = 0x9146`"]
1080    pub const GL_DEBUG_SEVERITY_HIGH_KHR: GLenum = 0x9146;
1081    #[doc = "`GL_DEBUG_SEVERITY_LOW: GLenum = 0x9148`"]
1082    #[doc = "* **Group:** DebugSeverity"]
1083    pub const GL_DEBUG_SEVERITY_LOW: GLenum = 0x9148;
1084    #[doc = "`GL_DEBUG_SEVERITY_LOW_ARB: GLenum = 0x9148`"]
1085    pub const GL_DEBUG_SEVERITY_LOW_ARB: GLenum = 0x9148;
1086    #[doc = "`GL_DEBUG_SEVERITY_LOW_KHR: GLenum = 0x9148`"]
1087    pub const GL_DEBUG_SEVERITY_LOW_KHR: GLenum = 0x9148;
1088    #[doc = "`GL_DEBUG_SEVERITY_MEDIUM: GLenum = 0x9147`"]
1089    #[doc = "* **Group:** DebugSeverity"]
1090    pub const GL_DEBUG_SEVERITY_MEDIUM: GLenum = 0x9147;
1091    #[doc = "`GL_DEBUG_SEVERITY_MEDIUM_ARB: GLenum = 0x9147`"]
1092    pub const GL_DEBUG_SEVERITY_MEDIUM_ARB: GLenum = 0x9147;
1093    #[doc = "`GL_DEBUG_SEVERITY_MEDIUM_KHR: GLenum = 0x9147`"]
1094    pub const GL_DEBUG_SEVERITY_MEDIUM_KHR: GLenum = 0x9147;
1095    #[doc = "`GL_DEBUG_SEVERITY_NOTIFICATION: GLenum = 0x826B`"]
1096    #[doc = "* **Group:** DebugSeverity"]
1097    pub const GL_DEBUG_SEVERITY_NOTIFICATION: GLenum = 0x826B;
1098    #[doc = "`GL_DEBUG_SEVERITY_NOTIFICATION_KHR: GLenum = 0x826B`"]
1099    pub const GL_DEBUG_SEVERITY_NOTIFICATION_KHR: GLenum = 0x826B;
1100    #[doc = "`GL_DEBUG_SOURCE_API: GLenum = 0x8246`"]
1101    #[doc = "* **Group:** DebugSource"]
1102    pub const GL_DEBUG_SOURCE_API: GLenum = 0x8246;
1103    #[doc = "`GL_DEBUG_SOURCE_API_ARB: GLenum = 0x8246`"]
1104    pub const GL_DEBUG_SOURCE_API_ARB: GLenum = 0x8246;
1105    #[doc = "`GL_DEBUG_SOURCE_API_KHR: GLenum = 0x8246`"]
1106    pub const GL_DEBUG_SOURCE_API_KHR: GLenum = 0x8246;
1107    #[doc = "`GL_DEBUG_SOURCE_APPLICATION: GLenum = 0x824A`"]
1108    #[doc = "* **Group:** DebugSource"]
1109    pub const GL_DEBUG_SOURCE_APPLICATION: GLenum = 0x824A;
1110    #[doc = "`GL_DEBUG_SOURCE_APPLICATION_ARB: GLenum = 0x824A`"]
1111    pub const GL_DEBUG_SOURCE_APPLICATION_ARB: GLenum = 0x824A;
1112    #[doc = "`GL_DEBUG_SOURCE_APPLICATION_KHR: GLenum = 0x824A`"]
1113    pub const GL_DEBUG_SOURCE_APPLICATION_KHR: GLenum = 0x824A;
1114    #[doc = "`GL_DEBUG_SOURCE_OTHER: GLenum = 0x824B`"]
1115    #[doc = "* **Group:** DebugSource"]
1116    pub const GL_DEBUG_SOURCE_OTHER: GLenum = 0x824B;
1117    #[doc = "`GL_DEBUG_SOURCE_OTHER_ARB: GLenum = 0x824B`"]
1118    pub const GL_DEBUG_SOURCE_OTHER_ARB: GLenum = 0x824B;
1119    #[doc = "`GL_DEBUG_SOURCE_OTHER_KHR: GLenum = 0x824B`"]
1120    pub const GL_DEBUG_SOURCE_OTHER_KHR: GLenum = 0x824B;
1121    #[doc = "`GL_DEBUG_SOURCE_SHADER_COMPILER: GLenum = 0x8248`"]
1122    #[doc = "* **Group:** DebugSource"]
1123    pub const GL_DEBUG_SOURCE_SHADER_COMPILER: GLenum = 0x8248;
1124    #[doc = "`GL_DEBUG_SOURCE_SHADER_COMPILER_ARB: GLenum = 0x8248`"]
1125    pub const GL_DEBUG_SOURCE_SHADER_COMPILER_ARB: GLenum = 0x8248;
1126    #[doc = "`GL_DEBUG_SOURCE_SHADER_COMPILER_KHR: GLenum = 0x8248`"]
1127    pub const GL_DEBUG_SOURCE_SHADER_COMPILER_KHR: GLenum = 0x8248;
1128    #[doc = "`GL_DEBUG_SOURCE_THIRD_PARTY: GLenum = 0x8249`"]
1129    #[doc = "* **Group:** DebugSource"]
1130    pub const GL_DEBUG_SOURCE_THIRD_PARTY: GLenum = 0x8249;
1131    #[doc = "`GL_DEBUG_SOURCE_THIRD_PARTY_ARB: GLenum = 0x8249`"]
1132    pub const GL_DEBUG_SOURCE_THIRD_PARTY_ARB: GLenum = 0x8249;
1133    #[doc = "`GL_DEBUG_SOURCE_THIRD_PARTY_KHR: GLenum = 0x8249`"]
1134    pub const GL_DEBUG_SOURCE_THIRD_PARTY_KHR: GLenum = 0x8249;
1135    #[doc = "`GL_DEBUG_SOURCE_WINDOW_SYSTEM: GLenum = 0x8247`"]
1136    #[doc = "* **Group:** DebugSource"]
1137    pub const GL_DEBUG_SOURCE_WINDOW_SYSTEM: GLenum = 0x8247;
1138    #[doc = "`GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB: GLenum = 0x8247`"]
1139    pub const GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB: GLenum = 0x8247;
1140    #[doc = "`GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR: GLenum = 0x8247`"]
1141    pub const GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR: GLenum = 0x8247;
1142    #[doc = "`GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: GLenum = 0x824D`"]
1143    #[doc = "* **Group:** DebugType"]
1144    pub const GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: GLenum = 0x824D;
1145    #[doc = "`GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB: GLenum = 0x824D`"]
1146    pub const GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB: GLenum = 0x824D;
1147    #[doc = "`GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR: GLenum = 0x824D`"]
1148    pub const GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR: GLenum = 0x824D;
1149    #[doc = "`GL_DEBUG_TYPE_ERROR: GLenum = 0x824C`"]
1150    #[doc = "* **Group:** DebugType"]
1151    pub const GL_DEBUG_TYPE_ERROR: GLenum = 0x824C;
1152    #[doc = "`GL_DEBUG_TYPE_ERROR_ARB: GLenum = 0x824C`"]
1153    pub const GL_DEBUG_TYPE_ERROR_ARB: GLenum = 0x824C;
1154    #[doc = "`GL_DEBUG_TYPE_ERROR_KHR: GLenum = 0x824C`"]
1155    pub const GL_DEBUG_TYPE_ERROR_KHR: GLenum = 0x824C;
1156    #[doc = "`GL_DEBUG_TYPE_MARKER: GLenum = 0x8268`"]
1157    #[doc = "* **Group:** DebugType"]
1158    pub const GL_DEBUG_TYPE_MARKER: GLenum = 0x8268;
1159    #[doc = "`GL_DEBUG_TYPE_MARKER_KHR: GLenum = 0x8268`"]
1160    pub const GL_DEBUG_TYPE_MARKER_KHR: GLenum = 0x8268;
1161    #[doc = "`GL_DEBUG_TYPE_OTHER: GLenum = 0x8251`"]
1162    #[doc = "* **Group:** DebugType"]
1163    pub const GL_DEBUG_TYPE_OTHER: GLenum = 0x8251;
1164    #[doc = "`GL_DEBUG_TYPE_OTHER_ARB: GLenum = 0x8251`"]
1165    pub const GL_DEBUG_TYPE_OTHER_ARB: GLenum = 0x8251;
1166    #[doc = "`GL_DEBUG_TYPE_OTHER_KHR: GLenum = 0x8251`"]
1167    pub const GL_DEBUG_TYPE_OTHER_KHR: GLenum = 0x8251;
1168    #[doc = "`GL_DEBUG_TYPE_PERFORMANCE: GLenum = 0x8250`"]
1169    #[doc = "* **Group:** DebugType"]
1170    pub const GL_DEBUG_TYPE_PERFORMANCE: GLenum = 0x8250;
1171    #[doc = "`GL_DEBUG_TYPE_PERFORMANCE_ARB: GLenum = 0x8250`"]
1172    pub const GL_DEBUG_TYPE_PERFORMANCE_ARB: GLenum = 0x8250;
1173    #[doc = "`GL_DEBUG_TYPE_PERFORMANCE_KHR: GLenum = 0x8250`"]
1174    pub const GL_DEBUG_TYPE_PERFORMANCE_KHR: GLenum = 0x8250;
1175    #[doc = "`GL_DEBUG_TYPE_POP_GROUP: GLenum = 0x826A`"]
1176    #[doc = "* **Group:** DebugType"]
1177    pub const GL_DEBUG_TYPE_POP_GROUP: GLenum = 0x826A;
1178    #[doc = "`GL_DEBUG_TYPE_POP_GROUP_KHR: GLenum = 0x826A`"]
1179    pub const GL_DEBUG_TYPE_POP_GROUP_KHR: GLenum = 0x826A;
1180    #[doc = "`GL_DEBUG_TYPE_PORTABILITY: GLenum = 0x824F`"]
1181    #[doc = "* **Group:** DebugType"]
1182    pub const GL_DEBUG_TYPE_PORTABILITY: GLenum = 0x824F;
1183    #[doc = "`GL_DEBUG_TYPE_PORTABILITY_ARB: GLenum = 0x824F`"]
1184    pub const GL_DEBUG_TYPE_PORTABILITY_ARB: GLenum = 0x824F;
1185    #[doc = "`GL_DEBUG_TYPE_PORTABILITY_KHR: GLenum = 0x824F`"]
1186    pub const GL_DEBUG_TYPE_PORTABILITY_KHR: GLenum = 0x824F;
1187    #[doc = "`GL_DEBUG_TYPE_PUSH_GROUP: GLenum = 0x8269`"]
1188    #[doc = "* **Group:** DebugType"]
1189    pub const GL_DEBUG_TYPE_PUSH_GROUP: GLenum = 0x8269;
1190    #[doc = "`GL_DEBUG_TYPE_PUSH_GROUP_KHR: GLenum = 0x8269`"]
1191    pub const GL_DEBUG_TYPE_PUSH_GROUP_KHR: GLenum = 0x8269;
1192    #[doc = "`GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: GLenum = 0x824E`"]
1193    #[doc = "* **Group:** DebugType"]
1194    pub const GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: GLenum = 0x824E;
1195    #[doc = "`GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB: GLenum = 0x824E`"]
1196    pub const GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB: GLenum = 0x824E;
1197    #[doc = "`GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR: GLenum = 0x824E`"]
1198    pub const GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR: GLenum = 0x824E;
1199    #[doc = "`GL_DECR: GLenum = 0x1E03`"]
1200    #[doc = "* **Group:** StencilOp"]
1201    pub const GL_DECR: GLenum = 0x1E03;
1202    #[doc = "`GL_DECR_WRAP: GLenum = 0x8508`"]
1203    #[doc = "* **Group:** StencilOp"]
1204    pub const GL_DECR_WRAP: GLenum = 0x8508;
1205    #[doc = "`GL_DELETE_STATUS: GLenum = 0x8B80`"]
1206    #[doc = "* **Groups:** ProgramPropertyARB, ShaderParameterName"]
1207    pub const GL_DELETE_STATUS: GLenum = 0x8B80;
1208    #[doc = "`GL_DEPTH: GLenum = 0x1801`"]
1209    #[doc = "* **Groups:** Buffer, PixelCopyType, InvalidateFramebufferAttachment"]
1210    pub const GL_DEPTH: GLenum = 0x1801;
1211    #[doc = "`GL_DEPTH24_STENCIL8: GLenum = 0x88F0`"]
1212    #[doc = "* **Group:** InternalFormat"]
1213    pub const GL_DEPTH24_STENCIL8: GLenum = 0x88F0;
1214    #[doc = "`GL_DEPTH32F_STENCIL8: GLenum = 0x8CAD`"]
1215    #[doc = "* **Group:** InternalFormat"]
1216    pub const GL_DEPTH32F_STENCIL8: GLenum = 0x8CAD;
1217    #[doc = "`GL_DEPTH_ATTACHMENT: GLenum = 0x8D00`"]
1218    #[doc = "* **Groups:** InvalidateFramebufferAttachment, FramebufferAttachment"]
1219    pub const GL_DEPTH_ATTACHMENT: GLenum = 0x8D00;
1220    #[doc = "`GL_DEPTH_BITS: GLenum = 0x0D56`"]
1221    #[doc = "* **Group:** GetPName"]
1222    pub const GL_DEPTH_BITS: GLenum = 0x0D56;
1223    #[doc = "`GL_DEPTH_BUFFER_BIT: GLbitfield = 0x00000100`"]
1224    #[doc = "* **Groups:** ClearBufferMask, AttribMask"]
1225    pub const GL_DEPTH_BUFFER_BIT: GLbitfield = 0x00000100;
1226    #[doc = "`GL_DEPTH_CLAMP: GLenum = 0x864F`"]
1227    #[doc = "* **Group:** EnableCap"]
1228    pub const GL_DEPTH_CLAMP: GLenum = 0x864F;
1229    #[doc = "`GL_DEPTH_CLEAR_VALUE: GLenum = 0x0B73`"]
1230    #[doc = "* **Group:** GetPName"]
1231    pub const GL_DEPTH_CLEAR_VALUE: GLenum = 0x0B73;
1232    #[doc = "`GL_DEPTH_COMPONENT: GLenum = 0x1902`"]
1233    #[doc = "* **Groups:** InternalFormat, PixelFormat"]
1234    pub const GL_DEPTH_COMPONENT: GLenum = 0x1902;
1235    #[doc = "`GL_DEPTH_COMPONENT16: GLenum = 0x81A5`"]
1236    #[doc = "* **Group:** InternalFormat"]
1237    pub const GL_DEPTH_COMPONENT16: GLenum = 0x81A5;
1238    #[doc = "`GL_DEPTH_COMPONENT24: GLenum = 0x81A6`"]
1239    pub const GL_DEPTH_COMPONENT24: GLenum = 0x81A6;
1240    #[doc = "`GL_DEPTH_COMPONENT32: GLenum = 0x81A7`"]
1241    pub const GL_DEPTH_COMPONENT32: GLenum = 0x81A7;
1242    #[doc = "`GL_DEPTH_COMPONENT32F: GLenum = 0x8CAC`"]
1243    #[doc = "* **Group:** InternalFormat"]
1244    pub const GL_DEPTH_COMPONENT32F: GLenum = 0x8CAC;
1245    #[doc = "`GL_DEPTH_COMPONENTS: GLenum = 0x8284`"]
1246    pub const GL_DEPTH_COMPONENTS: GLenum = 0x8284;
1247    #[doc = "`GL_DEPTH_FUNC: GLenum = 0x0B74`"]
1248    #[doc = "* **Group:** GetPName"]
1249    pub const GL_DEPTH_FUNC: GLenum = 0x0B74;
1250    #[doc = "`GL_DEPTH_RANGE: GLenum = 0x0B70`"]
1251    #[doc = "* **Group:** GetPName"]
1252    pub const GL_DEPTH_RANGE: GLenum = 0x0B70;
1253    #[doc = "`GL_DEPTH_RENDERABLE: GLenum = 0x8287`"]
1254    #[doc = "* **Group:** InternalFormatPName"]
1255    pub const GL_DEPTH_RENDERABLE: GLenum = 0x8287;
1256    #[doc = "`GL_DEPTH_STENCIL: GLenum = 0x84F9`"]
1257    #[doc = "* **Groups:** InternalFormat, PixelFormat"]
1258    pub const GL_DEPTH_STENCIL: GLenum = 0x84F9;
1259    #[doc = "`GL_DEPTH_STENCIL_ATTACHMENT: GLenum = 0x821A`"]
1260    #[doc = "* **Group:** InvalidateFramebufferAttachment"]
1261    pub const GL_DEPTH_STENCIL_ATTACHMENT: GLenum = 0x821A;
1262    #[doc = "`GL_DEPTH_STENCIL_TEXTURE_MODE: GLenum = 0x90EA`"]
1263    #[doc = "* **Group:** TextureParameterName"]
1264    pub const GL_DEPTH_STENCIL_TEXTURE_MODE: GLenum = 0x90EA;
1265    #[doc = "`GL_DEPTH_TEST: GLenum = 0x0B71`"]
1266    #[doc = "* **Groups:** GetPName, EnableCap"]
1267    pub const GL_DEPTH_TEST: GLenum = 0x0B71;
1268    #[doc = "`GL_DEPTH_WRITEMASK: GLenum = 0x0B72`"]
1269    #[doc = "* **Group:** GetPName"]
1270    pub const GL_DEPTH_WRITEMASK: GLenum = 0x0B72;
1271    #[doc = "`GL_DIFFERENCE: GLenum = 0x929E`"]
1272    pub const GL_DIFFERENCE: GLenum = 0x929E;
1273    #[doc = "`GL_DISPATCH_INDIRECT_BUFFER: GLenum = 0x90EE`"]
1274    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
1275    pub const GL_DISPATCH_INDIRECT_BUFFER: GLenum = 0x90EE;
1276    #[doc = "`GL_DISPATCH_INDIRECT_BUFFER_BINDING: GLenum = 0x90EF`"]
1277    #[doc = "* **Group:** GetPName"]
1278    pub const GL_DISPATCH_INDIRECT_BUFFER_BINDING: GLenum = 0x90EF;
1279    #[doc = "`GL_DITHER: GLenum = 0x0BD0`"]
1280    #[doc = "* **Groups:** GetPName, EnableCap"]
1281    pub const GL_DITHER: GLenum = 0x0BD0;
1282    #[doc = "`GL_DONT_CARE: GLenum = 0x1100`"]
1283    #[doc = "* **Groups:** DebugSeverity, HintMode, DebugSource, DebugType"]
1284    pub const GL_DONT_CARE: GLenum = 0x1100;
1285    #[doc = "`GL_DOUBLE: GLenum = 0x140A`"]
1286    #[doc = "* **Groups:** VertexAttribLType, MapTypeNV, SecondaryColorPointerTypeIBM, WeightPointerTypeARB, TangentPointerTypeEXT, BinormalPointerTypeEXT, FogCoordinatePointerType, FogPointerTypeEXT, FogPointerTypeIBM, IndexPointerType, NormalPointerType, TexCoordPointerType, VertexPointerType, VertexAttribType, AttributeType, UniformType, VertexAttribPointerType, GlslTypeToken"]
1287    pub const GL_DOUBLE: GLenum = 0x140A;
1288    #[doc = "`GL_DOUBLEBUFFER: GLenum = 0x0C32`"]
1289    #[doc = "* **Groups:** GetFramebufferParameter, GetPName"]
1290    pub const GL_DOUBLEBUFFER: GLenum = 0x0C32;
1291    #[doc = "`GL_DOUBLE_MAT2: GLenum = 0x8F46`"]
1292    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1293    pub const GL_DOUBLE_MAT2: GLenum = 0x8F46;
1294    #[doc = "`GL_DOUBLE_MAT2x3: GLenum = 0x8F49`"]
1295    #[doc = "* **Groups:** UniformType, AttributeType"]
1296    pub const GL_DOUBLE_MAT2x3: GLenum = 0x8F49;
1297    #[doc = "`GL_DOUBLE_MAT2x4: GLenum = 0x8F4A`"]
1298    #[doc = "* **Groups:** UniformType, AttributeType"]
1299    pub const GL_DOUBLE_MAT2x4: GLenum = 0x8F4A;
1300    #[doc = "`GL_DOUBLE_MAT3: GLenum = 0x8F47`"]
1301    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1302    pub const GL_DOUBLE_MAT3: GLenum = 0x8F47;
1303    #[doc = "`GL_DOUBLE_MAT3x2: GLenum = 0x8F4B`"]
1304    #[doc = "* **Groups:** UniformType, AttributeType"]
1305    pub const GL_DOUBLE_MAT3x2: GLenum = 0x8F4B;
1306    #[doc = "`GL_DOUBLE_MAT3x4: GLenum = 0x8F4C`"]
1307    #[doc = "* **Groups:** UniformType, AttributeType"]
1308    pub const GL_DOUBLE_MAT3x4: GLenum = 0x8F4C;
1309    #[doc = "`GL_DOUBLE_MAT4: GLenum = 0x8F48`"]
1310    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1311    pub const GL_DOUBLE_MAT4: GLenum = 0x8F48;
1312    #[doc = "`GL_DOUBLE_MAT4x2: GLenum = 0x8F4D`"]
1313    #[doc = "* **Groups:** UniformType, AttributeType"]
1314    pub const GL_DOUBLE_MAT4x2: GLenum = 0x8F4D;
1315    #[doc = "`GL_DOUBLE_MAT4x3: GLenum = 0x8F4E`"]
1316    #[doc = "* **Groups:** UniformType, AttributeType"]
1317    pub const GL_DOUBLE_MAT4x3: GLenum = 0x8F4E;
1318    #[doc = "`GL_DOUBLE_VEC2: GLenum = 0x8FFC`"]
1319    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1320    pub const GL_DOUBLE_VEC2: GLenum = 0x8FFC;
1321    #[doc = "`GL_DOUBLE_VEC3: GLenum = 0x8FFD`"]
1322    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1323    pub const GL_DOUBLE_VEC3: GLenum = 0x8FFD;
1324    #[doc = "`GL_DOUBLE_VEC4: GLenum = 0x8FFE`"]
1325    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1326    pub const GL_DOUBLE_VEC4: GLenum = 0x8FFE;
1327    #[doc = "`GL_DRAW_BUFFER: GLenum = 0x0C01`"]
1328    #[doc = "* **Group:** GetPName"]
1329    pub const GL_DRAW_BUFFER: GLenum = 0x0C01;
1330    #[doc = "`GL_DRAW_BUFFER0: GLenum = 0x8825`"]
1331    pub const GL_DRAW_BUFFER0: GLenum = 0x8825;
1332    #[doc = "`GL_DRAW_BUFFER1: GLenum = 0x8826`"]
1333    pub const GL_DRAW_BUFFER1: GLenum = 0x8826;
1334    #[doc = "`GL_DRAW_BUFFER10: GLenum = 0x882F`"]
1335    pub const GL_DRAW_BUFFER10: GLenum = 0x882F;
1336    #[doc = "`GL_DRAW_BUFFER11: GLenum = 0x8830`"]
1337    pub const GL_DRAW_BUFFER11: GLenum = 0x8830;
1338    #[doc = "`GL_DRAW_BUFFER12: GLenum = 0x8831`"]
1339    pub const GL_DRAW_BUFFER12: GLenum = 0x8831;
1340    #[doc = "`GL_DRAW_BUFFER13: GLenum = 0x8832`"]
1341    pub const GL_DRAW_BUFFER13: GLenum = 0x8832;
1342    #[doc = "`GL_DRAW_BUFFER14: GLenum = 0x8833`"]
1343    pub const GL_DRAW_BUFFER14: GLenum = 0x8833;
1344    #[doc = "`GL_DRAW_BUFFER15: GLenum = 0x8834`"]
1345    pub const GL_DRAW_BUFFER15: GLenum = 0x8834;
1346    #[doc = "`GL_DRAW_BUFFER2: GLenum = 0x8827`"]
1347    pub const GL_DRAW_BUFFER2: GLenum = 0x8827;
1348    #[doc = "`GL_DRAW_BUFFER3: GLenum = 0x8828`"]
1349    pub const GL_DRAW_BUFFER3: GLenum = 0x8828;
1350    #[doc = "`GL_DRAW_BUFFER4: GLenum = 0x8829`"]
1351    pub const GL_DRAW_BUFFER4: GLenum = 0x8829;
1352    #[doc = "`GL_DRAW_BUFFER5: GLenum = 0x882A`"]
1353    pub const GL_DRAW_BUFFER5: GLenum = 0x882A;
1354    #[doc = "`GL_DRAW_BUFFER6: GLenum = 0x882B`"]
1355    pub const GL_DRAW_BUFFER6: GLenum = 0x882B;
1356    #[doc = "`GL_DRAW_BUFFER7: GLenum = 0x882C`"]
1357    pub const GL_DRAW_BUFFER7: GLenum = 0x882C;
1358    #[doc = "`GL_DRAW_BUFFER8: GLenum = 0x882D`"]
1359    pub const GL_DRAW_BUFFER8: GLenum = 0x882D;
1360    #[doc = "`GL_DRAW_BUFFER9: GLenum = 0x882E`"]
1361    pub const GL_DRAW_BUFFER9: GLenum = 0x882E;
1362    #[doc = "`GL_DRAW_FRAMEBUFFER: GLenum = 0x8CA9`"]
1363    #[doc = "* **Groups:** CheckFramebufferStatusTarget, FramebufferTarget"]
1364    pub const GL_DRAW_FRAMEBUFFER: GLenum = 0x8CA9;
1365    #[doc = "`GL_DRAW_FRAMEBUFFER_BINDING: GLenum = 0x8CA6`"]
1366    #[doc = "* **Group:** GetPName"]
1367    pub const GL_DRAW_FRAMEBUFFER_BINDING: GLenum = 0x8CA6;
1368    #[doc = "`GL_DRAW_INDIRECT_BUFFER: GLenum = 0x8F3F`"]
1369    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
1370    pub const GL_DRAW_INDIRECT_BUFFER: GLenum = 0x8F3F;
1371    #[doc = "`GL_DRAW_INDIRECT_BUFFER_BINDING: GLenum = 0x8F43`"]
1372    pub const GL_DRAW_INDIRECT_BUFFER_BINDING: GLenum = 0x8F43;
1373    #[doc = "`GL_DST_ALPHA: GLenum = 0x0304`"]
1374    #[doc = "* **Group:** BlendingFactor"]
1375    pub const GL_DST_ALPHA: GLenum = 0x0304;
1376    #[doc = "`GL_DST_COLOR: GLenum = 0x0306`"]
1377    #[doc = "* **Group:** BlendingFactor"]
1378    pub const GL_DST_COLOR: GLenum = 0x0306;
1379    #[doc = "`GL_DYNAMIC_COPY: GLenum = 0x88EA`"]
1380    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
1381    pub const GL_DYNAMIC_COPY: GLenum = 0x88EA;
1382    #[doc = "`GL_DYNAMIC_DRAW: GLenum = 0x88E8`"]
1383    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
1384    pub const GL_DYNAMIC_DRAW: GLenum = 0x88E8;
1385    #[doc = "`GL_DYNAMIC_READ: GLenum = 0x88E9`"]
1386    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
1387    pub const GL_DYNAMIC_READ: GLenum = 0x88E9;
1388    #[doc = "`GL_DYNAMIC_STORAGE_BIT: GLbitfield = 0x0100`"]
1389    #[doc = "* **Group:** BufferStorageMask"]
1390    pub const GL_DYNAMIC_STORAGE_BIT: GLbitfield = 0x0100;
1391    #[doc = "`GL_DYNAMIC_STORAGE_BIT_EXT: GLbitfield = 0x0100`"]
1392    #[doc = "* **Group:** BufferStorageMask"]
1393    pub const GL_DYNAMIC_STORAGE_BIT_EXT: GLbitfield = 0x0100;
1394    #[doc = "`GL_ELEMENT_ARRAY_BARRIER_BIT: GLbitfield = 0x00000002`"]
1395    #[doc = "* **Group:** MemoryBarrierMask"]
1396    pub const GL_ELEMENT_ARRAY_BARRIER_BIT: GLbitfield = 0x00000002;
1397    #[doc = "`GL_ELEMENT_ARRAY_BUFFER: GLenum = 0x8893`"]
1398    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
1399    pub const GL_ELEMENT_ARRAY_BUFFER: GLenum = 0x8893;
1400    #[doc = "`GL_ELEMENT_ARRAY_BUFFER_BINDING: GLenum = 0x8895`"]
1401    #[doc = "* **Group:** GetPName"]
1402    pub const GL_ELEMENT_ARRAY_BUFFER_BINDING: GLenum = 0x8895;
1403    #[doc = "`GL_EQUAL: GLenum = 0x0202`"]
1404    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
1405    pub const GL_EQUAL: GLenum = 0x0202;
1406    #[doc = "`GL_EQUIV: GLenum = 0x1509`"]
1407    #[doc = "* **Group:** LogicOp"]
1408    pub const GL_EQUIV: GLenum = 0x1509;
1409    #[doc = "`GL_EXCLUSION: GLenum = 0x92A0`"]
1410    pub const GL_EXCLUSION: GLenum = 0x92A0;
1411    #[doc = "`GL_EXTENSIONS: GLenum = 0x1F03`"]
1412    #[doc = "* **Group:** StringName"]
1413    pub const GL_EXTENSIONS: GLenum = 0x1F03;
1414    #[doc = "`GL_FALSE: GLenum = 0`"]
1415    #[doc = "* **Groups:** Boolean, VertexShaderWriteMaskEXT, ClampColorModeARB"]
1416    pub const GL_FALSE: GLenum = 0;
1417    #[doc = "`GL_FASTEST: GLenum = 0x1101`"]
1418    #[doc = "* **Group:** HintMode"]
1419    pub const GL_FASTEST: GLenum = 0x1101;
1420    #[doc = "`GL_FILL: GLenum = 0x1B02`"]
1421    #[doc = "* **Groups:** PolygonMode, MeshMode2"]
1422    pub const GL_FILL: GLenum = 0x1B02;
1423    #[doc = "`GL_FILTER: GLenum = 0x829A`"]
1424    #[doc = "* **Group:** InternalFormatPName"]
1425    pub const GL_FILTER: GLenum = 0x829A;
1426    #[doc = "`GL_FIRST_VERTEX_CONVENTION: GLenum = 0x8E4D`"]
1427    #[doc = "* **Group:** VertexProvokingMode"]
1428    pub const GL_FIRST_VERTEX_CONVENTION: GLenum = 0x8E4D;
1429    #[doc = "`GL_FIXED: GLenum = 0x140C`"]
1430    #[doc = "* **Groups:** VertexAttribPointerType, VertexAttribType"]
1431    pub const GL_FIXED: GLenum = 0x140C;
1432    #[doc = "`GL_FIXED_ONLY: GLenum = 0x891D`"]
1433    #[doc = "* **Group:** ClampColorModeARB"]
1434    pub const GL_FIXED_ONLY: GLenum = 0x891D;
1435    #[doc = "`GL_FLOAT: GLenum = 0x1406`"]
1436    #[doc = "* **Groups:** GlslTypeToken, MapTypeNV, SecondaryColorPointerTypeIBM, WeightPointerTypeARB, VertexWeightPointerTypeEXT, TangentPointerTypeEXT, BinormalPointerTypeEXT, FogCoordinatePointerType, FogPointerTypeEXT, FogPointerTypeIBM, IndexPointerType, ListNameType, NormalPointerType, PixelType, TexCoordPointerType, VertexPointerType, VertexAttribType, AttributeType, UniformType, VertexAttribPointerType"]
1437    pub const GL_FLOAT: GLenum = 0x1406;
1438    #[doc = "`GL_FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum = 0x8DAD`"]
1439    pub const GL_FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum = 0x8DAD;
1440    #[doc = "`GL_FLOAT_MAT2: GLenum = 0x8B5A`"]
1441    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1442    pub const GL_FLOAT_MAT2: GLenum = 0x8B5A;
1443    #[doc = "`GL_FLOAT_MAT2x3: GLenum = 0x8B65`"]
1444    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1445    pub const GL_FLOAT_MAT2x3: GLenum = 0x8B65;
1446    #[doc = "`GL_FLOAT_MAT2x4: GLenum = 0x8B66`"]
1447    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1448    pub const GL_FLOAT_MAT2x4: GLenum = 0x8B66;
1449    #[doc = "`GL_FLOAT_MAT3: GLenum = 0x8B5B`"]
1450    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1451    pub const GL_FLOAT_MAT3: GLenum = 0x8B5B;
1452    #[doc = "`GL_FLOAT_MAT3x2: GLenum = 0x8B67`"]
1453    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1454    pub const GL_FLOAT_MAT3x2: GLenum = 0x8B67;
1455    #[doc = "`GL_FLOAT_MAT3x4: GLenum = 0x8B68`"]
1456    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1457    pub const GL_FLOAT_MAT3x4: GLenum = 0x8B68;
1458    #[doc = "`GL_FLOAT_MAT4: GLenum = 0x8B5C`"]
1459    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1460    pub const GL_FLOAT_MAT4: GLenum = 0x8B5C;
1461    #[doc = "`GL_FLOAT_MAT4x2: GLenum = 0x8B69`"]
1462    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1463    pub const GL_FLOAT_MAT4x2: GLenum = 0x8B69;
1464    #[doc = "`GL_FLOAT_MAT4x3: GLenum = 0x8B6A`"]
1465    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1466    pub const GL_FLOAT_MAT4x3: GLenum = 0x8B6A;
1467    #[doc = "`GL_FLOAT_VEC2: GLenum = 0x8B50`"]
1468    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1469    pub const GL_FLOAT_VEC2: GLenum = 0x8B50;
1470    #[doc = "`GL_FLOAT_VEC3: GLenum = 0x8B51`"]
1471    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1472    pub const GL_FLOAT_VEC3: GLenum = 0x8B51;
1473    #[doc = "`GL_FLOAT_VEC4: GLenum = 0x8B52`"]
1474    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1475    pub const GL_FLOAT_VEC4: GLenum = 0x8B52;
1476    #[doc = "`GL_FRACTIONAL_EVEN: GLenum = 0x8E7C`"]
1477    pub const GL_FRACTIONAL_EVEN: GLenum = 0x8E7C;
1478    #[doc = "`GL_FRACTIONAL_ODD: GLenum = 0x8E7B`"]
1479    pub const GL_FRACTIONAL_ODD: GLenum = 0x8E7B;
1480    #[doc = "`GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: GLenum = 0x8E5D`"]
1481    pub const GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: GLenum = 0x8E5D;
1482    #[doc = "`GL_FRAGMENT_SHADER: GLenum = 0x8B30`"]
1483    #[doc = "* **Groups:** PipelineParameterName, ShaderType"]
1484    pub const GL_FRAGMENT_SHADER: GLenum = 0x8B30;
1485    #[doc = "`GL_FRAGMENT_SHADER_BIT: GLbitfield = 0x00000002`"]
1486    #[doc = "* **Group:** UseProgramStageMask"]
1487    pub const GL_FRAGMENT_SHADER_BIT: GLbitfield = 0x00000002;
1488    #[doc = "`GL_FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum = 0x8B8B`"]
1489    #[doc = "* **Groups:** HintTarget, GetPName"]
1490    pub const GL_FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum = 0x8B8B;
1491    #[doc = "`GL_FRAGMENT_SHADER_INVOCATIONS: GLenum = 0x82F4`"]
1492    pub const GL_FRAGMENT_SHADER_INVOCATIONS: GLenum = 0x82F4;
1493    #[doc = "`GL_FRAGMENT_SUBROUTINE: GLenum = 0x92EC`"]
1494    #[doc = "* **Group:** ProgramInterface"]
1495    pub const GL_FRAGMENT_SUBROUTINE: GLenum = 0x92EC;
1496    #[doc = "`GL_FRAGMENT_SUBROUTINE_UNIFORM: GLenum = 0x92F2`"]
1497    #[doc = "* **Group:** ProgramInterface"]
1498    pub const GL_FRAGMENT_SUBROUTINE_UNIFORM: GLenum = 0x92F2;
1499    #[doc = "`GL_FRAGMENT_TEXTURE: GLenum = 0x829F`"]
1500    #[doc = "* **Group:** InternalFormatPName"]
1501    pub const GL_FRAGMENT_TEXTURE: GLenum = 0x829F;
1502    #[doc = "`GL_FRAMEBUFFER: GLenum = 0x8D40`"]
1503    #[doc = "* **Groups:** ObjectIdentifier, FramebufferTarget, CheckFramebufferStatusTarget"]
1504    pub const GL_FRAMEBUFFER: GLenum = 0x8D40;
1505    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum = 0x8215`"]
1506    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1507    pub const GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum = 0x8215;
1508    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum = 0x8214`"]
1509    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1510    pub const GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum = 0x8214;
1511    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum = 0x8210`"]
1512    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1513    pub const GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum = 0x8210;
1514    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum = 0x8211`"]
1515    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1516    pub const GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum = 0x8211;
1517    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum = 0x8216`"]
1518    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1519    pub const GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum = 0x8216;
1520    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum = 0x8213`"]
1521    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1522    pub const GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum = 0x8213;
1523    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_LAYERED: GLenum = 0x8DA7`"]
1524    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1525    pub const GL_FRAMEBUFFER_ATTACHMENT_LAYERED: GLenum = 0x8DA7;
1526    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum = 0x8CD1`"]
1527    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1528    pub const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum = 0x8CD1;
1529    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum = 0x8CD0`"]
1530    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1531    pub const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum = 0x8CD0;
1532    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum = 0x8212`"]
1533    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1534    pub const GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum = 0x8212;
1535    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum = 0x8217`"]
1536    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1537    pub const GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum = 0x8217;
1538    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum = 0x8CD3`"]
1539    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1540    pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum = 0x8CD3;
1541    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum = 0x8CD4`"]
1542    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1543    pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum = 0x8CD4;
1544    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum = 0x8CD2`"]
1545    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1546    pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum = 0x8CD2;
1547    #[doc = "`GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT: GLenum = 0x8D6C`"]
1548    #[doc = "* **Group:** FramebufferAttachmentParameterName"]
1549    #[cfg_attr(
1550        docs_rs,
1551        doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
1552    )]
1553    pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT: GLenum = 0x8D6C;
1554    #[doc = "`GL_FRAMEBUFFER_BARRIER_BIT: GLbitfield = 0x00000400`"]
1555    #[doc = "* **Group:** MemoryBarrierMask"]
1556    pub const GL_FRAMEBUFFER_BARRIER_BIT: GLbitfield = 0x00000400;
1557    #[doc = "`GL_FRAMEBUFFER_BINDING: GLenum = 0x8CA6`"]
1558    pub const GL_FRAMEBUFFER_BINDING: GLenum = 0x8CA6;
1559    #[doc = "`GL_FRAMEBUFFER_BLEND: GLenum = 0x828B`"]
1560    #[doc = "* **Group:** InternalFormatPName"]
1561    pub const GL_FRAMEBUFFER_BLEND: GLenum = 0x828B;
1562    #[doc = "`GL_FRAMEBUFFER_COMPLETE: GLenum = 0x8CD5`"]
1563    #[doc = "* **Group:** FramebufferStatus"]
1564    pub const GL_FRAMEBUFFER_COMPLETE: GLenum = 0x8CD5;
1565    #[doc = "`GL_FRAMEBUFFER_DEFAULT: GLenum = 0x8218`"]
1566    pub const GL_FRAMEBUFFER_DEFAULT: GLenum = 0x8218;
1567    #[doc = "`GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9314`"]
1568    #[doc = "* **Groups:** GetFramebufferParameter, FramebufferParameterName"]
1569    pub const GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9314;
1570    #[doc = "`GL_FRAMEBUFFER_DEFAULT_HEIGHT: GLenum = 0x9311`"]
1571    #[doc = "* **Groups:** GetFramebufferParameter, FramebufferParameterName"]
1572    pub const GL_FRAMEBUFFER_DEFAULT_HEIGHT: GLenum = 0x9311;
1573    #[doc = "`GL_FRAMEBUFFER_DEFAULT_LAYERS: GLenum = 0x9312`"]
1574    #[doc = "* **Groups:** GetFramebufferParameter, FramebufferParameterName"]
1575    pub const GL_FRAMEBUFFER_DEFAULT_LAYERS: GLenum = 0x9312;
1576    #[doc = "`GL_FRAMEBUFFER_DEFAULT_SAMPLES: GLenum = 0x9313`"]
1577    #[doc = "* **Groups:** GetFramebufferParameter, FramebufferParameterName"]
1578    pub const GL_FRAMEBUFFER_DEFAULT_SAMPLES: GLenum = 0x9313;
1579    #[doc = "`GL_FRAMEBUFFER_DEFAULT_WIDTH: GLenum = 0x9310`"]
1580    #[doc = "* **Groups:** GetFramebufferParameter, FramebufferParameterName"]
1581    pub const GL_FRAMEBUFFER_DEFAULT_WIDTH: GLenum = 0x9310;
1582    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum = 0x8CD6`"]
1583    #[doc = "* **Group:** FramebufferStatus"]
1584    pub const GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum = 0x8CD6;
1585    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum = 0x8CD9`"]
1586    pub const GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum = 0x8CD9;
1587    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: GLenum = 0x8CDB`"]
1588    #[doc = "* **Group:** FramebufferStatus"]
1589    pub const GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: GLenum = 0x8CDB;
1590    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: GLenum = 0x8DA8`"]
1591    #[doc = "* **Group:** FramebufferStatus"]
1592    pub const GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: GLenum = 0x8DA8;
1593    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum = 0x8CD7`"]
1594    #[doc = "* **Group:** FramebufferStatus"]
1595    pub const GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum = 0x8CD7;
1596    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum = 0x8D56`"]
1597    #[doc = "* **Group:** FramebufferStatus"]
1598    pub const GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum = 0x8D56;
1599    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT: GLenum = 0x8D56`"]
1600    #[cfg_attr(
1601        docs_rs,
1602        doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
1603    )]
1604    pub const GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT: GLenum = 0x8D56;
1605    #[doc = "`GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: GLenum = 0x8CDC`"]
1606    #[doc = "* **Group:** FramebufferStatus"]
1607    pub const GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: GLenum = 0x8CDC;
1608    #[doc = "`GL_FRAMEBUFFER_RENDERABLE: GLenum = 0x8289`"]
1609    #[doc = "* **Group:** InternalFormatPName"]
1610    pub const GL_FRAMEBUFFER_RENDERABLE: GLenum = 0x8289;
1611    #[doc = "`GL_FRAMEBUFFER_RENDERABLE_LAYERED: GLenum = 0x828A`"]
1612    #[doc = "* **Group:** InternalFormatPName"]
1613    pub const GL_FRAMEBUFFER_RENDERABLE_LAYERED: GLenum = 0x828A;
1614    #[doc = "`GL_FRAMEBUFFER_SRGB: GLenum = 0x8DB9`"]
1615    #[doc = "* **Group:** EnableCap"]
1616    pub const GL_FRAMEBUFFER_SRGB: GLenum = 0x8DB9;
1617    #[doc = "`GL_FRAMEBUFFER_UNDEFINED: GLenum = 0x8219`"]
1618    #[doc = "* **Group:** FramebufferStatus"]
1619    pub const GL_FRAMEBUFFER_UNDEFINED: GLenum = 0x8219;
1620    #[doc = "`GL_FRAMEBUFFER_UNSUPPORTED: GLenum = 0x8CDD`"]
1621    #[doc = "* **Group:** FramebufferStatus"]
1622    pub const GL_FRAMEBUFFER_UNSUPPORTED: GLenum = 0x8CDD;
1623    #[doc = "`GL_FRONT: GLenum = 0x0404`"]
1624    #[doc = "* **Groups:** ColorBuffer, ColorMaterialFace, CullFaceMode, DrawBufferMode, ReadBufferMode, StencilFaceDirection, MaterialFace"]
1625    pub const GL_FRONT: GLenum = 0x0404;
1626    #[doc = "`GL_FRONT_AND_BACK: GLenum = 0x0408`"]
1627    #[doc = "* **Groups:** ColorBuffer, ColorMaterialFace, CullFaceMode, DrawBufferMode, StencilFaceDirection, MaterialFace"]
1628    pub const GL_FRONT_AND_BACK: GLenum = 0x0408;
1629    #[doc = "`GL_FRONT_FACE: GLenum = 0x0B46`"]
1630    #[doc = "* **Group:** GetPName"]
1631    pub const GL_FRONT_FACE: GLenum = 0x0B46;
1632    #[doc = "`GL_FRONT_LEFT: GLenum = 0x0400`"]
1633    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
1634    pub const GL_FRONT_LEFT: GLenum = 0x0400;
1635    #[doc = "`GL_FRONT_RIGHT: GLenum = 0x0401`"]
1636    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
1637    pub const GL_FRONT_RIGHT: GLenum = 0x0401;
1638    #[doc = "`GL_FULL_SUPPORT: GLenum = 0x82B7`"]
1639    pub const GL_FULL_SUPPORT: GLenum = 0x82B7;
1640    #[doc = "`GL_FUNC_ADD: GLenum = 0x8006`"]
1641    #[doc = "* **Group:** BlendEquationModeEXT"]
1642    pub const GL_FUNC_ADD: GLenum = 0x8006;
1643    #[doc = "`GL_FUNC_REVERSE_SUBTRACT: GLenum = 0x800B`"]
1644    #[doc = "* **Group:** BlendEquationModeEXT"]
1645    pub const GL_FUNC_REVERSE_SUBTRACT: GLenum = 0x800B;
1646    #[doc = "`GL_FUNC_SUBTRACT: GLenum = 0x800A`"]
1647    #[doc = "* **Group:** BlendEquationModeEXT"]
1648    pub const GL_FUNC_SUBTRACT: GLenum = 0x800A;
1649    #[doc = "`GL_GENERATE_MIPMAP_HINT: GLenum = 0x8192`"]
1650    #[doc = "* **Group:** HintTarget"]
1651    pub const GL_GENERATE_MIPMAP_HINT: GLenum = 0x8192;
1652    #[doc = "`GL_GEOMETRY_INPUT_TYPE: GLenum = 0x8917`"]
1653    #[doc = "* **Group:** ProgramPropertyARB"]
1654    pub const GL_GEOMETRY_INPUT_TYPE: GLenum = 0x8917;
1655    #[doc = "`GL_GEOMETRY_OUTPUT_TYPE: GLenum = 0x8918`"]
1656    #[doc = "* **Group:** ProgramPropertyARB"]
1657    pub const GL_GEOMETRY_OUTPUT_TYPE: GLenum = 0x8918;
1658    #[doc = "`GL_GEOMETRY_SHADER: GLenum = 0x8DD9`"]
1659    #[doc = "* **Groups:** PipelineParameterName, ShaderType"]
1660    pub const GL_GEOMETRY_SHADER: GLenum = 0x8DD9;
1661    #[doc = "`GL_GEOMETRY_SHADER_BIT: GLbitfield = 0x00000004`"]
1662    #[doc = "* **Group:** UseProgramStageMask"]
1663    pub const GL_GEOMETRY_SHADER_BIT: GLbitfield = 0x00000004;
1664    #[doc = "`GL_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x887F`"]
1665    pub const GL_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x887F;
1666    #[doc = "`GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED: GLenum = 0x82F3`"]
1667    pub const GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED: GLenum = 0x82F3;
1668    #[doc = "`GL_GEOMETRY_SUBROUTINE: GLenum = 0x92EB`"]
1669    #[doc = "* **Group:** ProgramInterface"]
1670    pub const GL_GEOMETRY_SUBROUTINE: GLenum = 0x92EB;
1671    #[doc = "`GL_GEOMETRY_SUBROUTINE_UNIFORM: GLenum = 0x92F1`"]
1672    #[doc = "* **Group:** ProgramInterface"]
1673    pub const GL_GEOMETRY_SUBROUTINE_UNIFORM: GLenum = 0x92F1;
1674    #[doc = "`GL_GEOMETRY_TEXTURE: GLenum = 0x829E`"]
1675    #[doc = "* **Group:** InternalFormatPName"]
1676    pub const GL_GEOMETRY_TEXTURE: GLenum = 0x829E;
1677    #[doc = "`GL_GEOMETRY_VERTICES_OUT: GLenum = 0x8916`"]
1678    #[doc = "* **Group:** ProgramPropertyARB"]
1679    pub const GL_GEOMETRY_VERTICES_OUT: GLenum = 0x8916;
1680    #[doc = "`GL_GEQUAL: GLenum = 0x0206`"]
1681    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
1682    pub const GL_GEQUAL: GLenum = 0x0206;
1683    #[doc = "`GL_GET_TEXTURE_IMAGE_FORMAT: GLenum = 0x8291`"]
1684    #[doc = "* **Group:** InternalFormatPName"]
1685    pub const GL_GET_TEXTURE_IMAGE_FORMAT: GLenum = 0x8291;
1686    #[doc = "`GL_GET_TEXTURE_IMAGE_TYPE: GLenum = 0x8292`"]
1687    #[doc = "* **Group:** InternalFormatPName"]
1688    pub const GL_GET_TEXTURE_IMAGE_TYPE: GLenum = 0x8292;
1689    #[doc = "`GL_GPU_DISJOINT_EXT: GLenum = 0x8FBB`"]
1690    pub const GL_GPU_DISJOINT_EXT: GLenum = 0x8FBB;
1691    #[doc = "`GL_GREATER: GLenum = 0x0204`"]
1692    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
1693    pub const GL_GREATER: GLenum = 0x0204;
1694    #[doc = "`GL_GREEN: GLenum = 0x1904`"]
1695    #[doc = "* **Groups:** TextureSwizzle, PixelFormat"]
1696    pub const GL_GREEN: GLenum = 0x1904;
1697    #[doc = "`GL_GREEN_BITS: GLenum = 0x0D53`"]
1698    #[doc = "* **Group:** GetPName"]
1699    pub const GL_GREEN_BITS: GLenum = 0x0D53;
1700    #[doc = "`GL_GREEN_INTEGER: GLenum = 0x8D95`"]
1701    #[doc = "* **Group:** PixelFormat"]
1702    pub const GL_GREEN_INTEGER: GLenum = 0x8D95;
1703    #[doc = "`GL_GUILTY_CONTEXT_RESET: GLenum = 0x8253`"]
1704    #[doc = "* **Group:** GraphicsResetStatus"]
1705    pub const GL_GUILTY_CONTEXT_RESET: GLenum = 0x8253;
1706    #[doc = "`GL_HALF_FLOAT: GLenum = 0x140B`"]
1707    #[doc = "* **Groups:** VertexAttribPointerType, VertexAttribType"]
1708    pub const GL_HALF_FLOAT: GLenum = 0x140B;
1709    #[doc = "`GL_HARDLIGHT: GLenum = 0x929B`"]
1710    pub const GL_HARDLIGHT: GLenum = 0x929B;
1711    #[doc = "`GL_HIGH_FLOAT: GLenum = 0x8DF2`"]
1712    #[doc = "* **Group:** PrecisionType"]
1713    pub const GL_HIGH_FLOAT: GLenum = 0x8DF2;
1714    #[doc = "`GL_HIGH_INT: GLenum = 0x8DF5`"]
1715    #[doc = "* **Group:** PrecisionType"]
1716    pub const GL_HIGH_INT: GLenum = 0x8DF5;
1717    #[doc = "`GL_HSL_COLOR: GLenum = 0x92AF`"]
1718    pub const GL_HSL_COLOR: GLenum = 0x92AF;
1719    #[doc = "`GL_HSL_HUE: GLenum = 0x92AD`"]
1720    pub const GL_HSL_HUE: GLenum = 0x92AD;
1721    #[doc = "`GL_HSL_LUMINOSITY: GLenum = 0x92B0`"]
1722    pub const GL_HSL_LUMINOSITY: GLenum = 0x92B0;
1723    #[doc = "`GL_HSL_SATURATION: GLenum = 0x92AE`"]
1724    pub const GL_HSL_SATURATION: GLenum = 0x92AE;
1725    #[doc = "`GL_IMAGE_1D: GLenum = 0x904C`"]
1726    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1727    pub const GL_IMAGE_1D: GLenum = 0x904C;
1728    #[doc = "`GL_IMAGE_1D_ARRAY: GLenum = 0x9052`"]
1729    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1730    pub const GL_IMAGE_1D_ARRAY: GLenum = 0x9052;
1731    #[doc = "`GL_IMAGE_2D: GLenum = 0x904D`"]
1732    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1733    pub const GL_IMAGE_2D: GLenum = 0x904D;
1734    #[doc = "`GL_IMAGE_2D_ARRAY: GLenum = 0x9053`"]
1735    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1736    pub const GL_IMAGE_2D_ARRAY: GLenum = 0x9053;
1737    #[doc = "`GL_IMAGE_2D_MULTISAMPLE: GLenum = 0x9055`"]
1738    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1739    pub const GL_IMAGE_2D_MULTISAMPLE: GLenum = 0x9055;
1740    #[doc = "`GL_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9056`"]
1741    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1742    pub const GL_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9056;
1743    #[doc = "`GL_IMAGE_2D_RECT: GLenum = 0x904F`"]
1744    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1745    pub const GL_IMAGE_2D_RECT: GLenum = 0x904F;
1746    #[doc = "`GL_IMAGE_3D: GLenum = 0x904E`"]
1747    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1748    pub const GL_IMAGE_3D: GLenum = 0x904E;
1749    #[doc = "`GL_IMAGE_BINDING_ACCESS: GLenum = 0x8F3E`"]
1750    pub const GL_IMAGE_BINDING_ACCESS: GLenum = 0x8F3E;
1751    #[doc = "`GL_IMAGE_BINDING_FORMAT: GLenum = 0x906E`"]
1752    pub const GL_IMAGE_BINDING_FORMAT: GLenum = 0x906E;
1753    #[doc = "`GL_IMAGE_BINDING_LAYER: GLenum = 0x8F3D`"]
1754    pub const GL_IMAGE_BINDING_LAYER: GLenum = 0x8F3D;
1755    #[doc = "`GL_IMAGE_BINDING_LAYERED: GLenum = 0x8F3C`"]
1756    pub const GL_IMAGE_BINDING_LAYERED: GLenum = 0x8F3C;
1757    #[doc = "`GL_IMAGE_BINDING_LEVEL: GLenum = 0x8F3B`"]
1758    pub const GL_IMAGE_BINDING_LEVEL: GLenum = 0x8F3B;
1759    #[doc = "`GL_IMAGE_BINDING_NAME: GLenum = 0x8F3A`"]
1760    pub const GL_IMAGE_BINDING_NAME: GLenum = 0x8F3A;
1761    #[doc = "`GL_IMAGE_BUFFER: GLenum = 0x9051`"]
1762    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1763    pub const GL_IMAGE_BUFFER: GLenum = 0x9051;
1764    #[doc = "`GL_IMAGE_CLASS_10_10_10_2: GLenum = 0x82C3`"]
1765    pub const GL_IMAGE_CLASS_10_10_10_2: GLenum = 0x82C3;
1766    #[doc = "`GL_IMAGE_CLASS_11_11_10: GLenum = 0x82C2`"]
1767    pub const GL_IMAGE_CLASS_11_11_10: GLenum = 0x82C2;
1768    #[doc = "`GL_IMAGE_CLASS_1_X_16: GLenum = 0x82BE`"]
1769    pub const GL_IMAGE_CLASS_1_X_16: GLenum = 0x82BE;
1770    #[doc = "`GL_IMAGE_CLASS_1_X_32: GLenum = 0x82BB`"]
1771    pub const GL_IMAGE_CLASS_1_X_32: GLenum = 0x82BB;
1772    #[doc = "`GL_IMAGE_CLASS_1_X_8: GLenum = 0x82C1`"]
1773    pub const GL_IMAGE_CLASS_1_X_8: GLenum = 0x82C1;
1774    #[doc = "`GL_IMAGE_CLASS_2_X_16: GLenum = 0x82BD`"]
1775    pub const GL_IMAGE_CLASS_2_X_16: GLenum = 0x82BD;
1776    #[doc = "`GL_IMAGE_CLASS_2_X_32: GLenum = 0x82BA`"]
1777    pub const GL_IMAGE_CLASS_2_X_32: GLenum = 0x82BA;
1778    #[doc = "`GL_IMAGE_CLASS_2_X_8: GLenum = 0x82C0`"]
1779    pub const GL_IMAGE_CLASS_2_X_8: GLenum = 0x82C0;
1780    #[doc = "`GL_IMAGE_CLASS_4_X_16: GLenum = 0x82BC`"]
1781    pub const GL_IMAGE_CLASS_4_X_16: GLenum = 0x82BC;
1782    #[doc = "`GL_IMAGE_CLASS_4_X_32: GLenum = 0x82B9`"]
1783    pub const GL_IMAGE_CLASS_4_X_32: GLenum = 0x82B9;
1784    #[doc = "`GL_IMAGE_CLASS_4_X_8: GLenum = 0x82BF`"]
1785    pub const GL_IMAGE_CLASS_4_X_8: GLenum = 0x82BF;
1786    #[doc = "`GL_IMAGE_COMPATIBILITY_CLASS: GLenum = 0x82A8`"]
1787    #[doc = "* **Group:** InternalFormatPName"]
1788    pub const GL_IMAGE_COMPATIBILITY_CLASS: GLenum = 0x82A8;
1789    #[doc = "`GL_IMAGE_CUBE: GLenum = 0x9050`"]
1790    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1791    pub const GL_IMAGE_CUBE: GLenum = 0x9050;
1792    #[doc = "`GL_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x9054`"]
1793    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1794    pub const GL_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x9054;
1795    #[doc = "`GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS: GLenum = 0x90C9`"]
1796    pub const GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS: GLenum = 0x90C9;
1797    #[doc = "`GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE: GLenum = 0x90C8`"]
1798    pub const GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE: GLenum = 0x90C8;
1799    #[doc = "`GL_IMAGE_FORMAT_COMPATIBILITY_TYPE: GLenum = 0x90C7`"]
1800    #[doc = "* **Group:** InternalFormatPName"]
1801    pub const GL_IMAGE_FORMAT_COMPATIBILITY_TYPE: GLenum = 0x90C7;
1802    #[doc = "`GL_IMAGE_PIXEL_FORMAT: GLenum = 0x82A9`"]
1803    #[doc = "* **Group:** InternalFormatPName"]
1804    pub const GL_IMAGE_PIXEL_FORMAT: GLenum = 0x82A9;
1805    #[doc = "`GL_IMAGE_PIXEL_TYPE: GLenum = 0x82AA`"]
1806    #[doc = "* **Group:** InternalFormatPName"]
1807    pub const GL_IMAGE_PIXEL_TYPE: GLenum = 0x82AA;
1808    #[doc = "`GL_IMAGE_TEXEL_SIZE: GLenum = 0x82A7`"]
1809    #[doc = "* **Group:** InternalFormatPName"]
1810    pub const GL_IMAGE_TEXEL_SIZE: GLenum = 0x82A7;
1811    #[doc = "`GL_IMPLEMENTATION_COLOR_READ_FORMAT: GLenum = 0x8B9B`"]
1812    #[doc = "* **Groups:** GetFramebufferParameter, GetPName"]
1813    pub const GL_IMPLEMENTATION_COLOR_READ_FORMAT: GLenum = 0x8B9B;
1814    #[doc = "`GL_IMPLEMENTATION_COLOR_READ_TYPE: GLenum = 0x8B9A`"]
1815    #[doc = "* **Groups:** GetFramebufferParameter, GetPName"]
1816    pub const GL_IMPLEMENTATION_COLOR_READ_TYPE: GLenum = 0x8B9A;
1817    #[doc = "`GL_INCR: GLenum = 0x1E02`"]
1818    #[doc = "* **Group:** StencilOp"]
1819    pub const GL_INCR: GLenum = 0x1E02;
1820    #[doc = "`GL_INCR_WRAP: GLenum = 0x8507`"]
1821    #[doc = "* **Group:** StencilOp"]
1822    pub const GL_INCR_WRAP: GLenum = 0x8507;
1823    #[doc = "`GL_INFO_LOG_LENGTH: GLenum = 0x8B84`"]
1824    #[doc = "* **Groups:** ProgramPropertyARB, ShaderParameterName, PipelineParameterName"]
1825    pub const GL_INFO_LOG_LENGTH: GLenum = 0x8B84;
1826    #[doc = "`GL_INNOCENT_CONTEXT_RESET: GLenum = 0x8254`"]
1827    #[doc = "* **Group:** GraphicsResetStatus"]
1828    pub const GL_INNOCENT_CONTEXT_RESET: GLenum = 0x8254;
1829    #[doc = "`GL_INT: GLenum = 0x1404`"]
1830    #[doc = "* **Groups:** VertexAttribIType, SecondaryColorPointerTypeIBM, WeightPointerTypeARB, TangentPointerTypeEXT, BinormalPointerTypeEXT, IndexPointerType, ListNameType, NormalPointerType, PixelType, TexCoordPointerType, VertexPointerType, VertexAttribType, AttributeType, UniformType, VertexAttribPointerType, GlslTypeToken"]
1831    pub const GL_INT: GLenum = 0x1404;
1832    #[doc = "`GL_INTERLEAVED_ATTRIBS: GLenum = 0x8C8C`"]
1833    #[doc = "* **Group:** TransformFeedbackBufferMode"]
1834    pub const GL_INTERLEAVED_ATTRIBS: GLenum = 0x8C8C;
1835    #[doc = "`GL_INTERNALFORMAT_ALPHA_SIZE: GLenum = 0x8274`"]
1836    #[doc = "* **Group:** InternalFormatPName"]
1837    pub const GL_INTERNALFORMAT_ALPHA_SIZE: GLenum = 0x8274;
1838    #[doc = "`GL_INTERNALFORMAT_ALPHA_TYPE: GLenum = 0x827B`"]
1839    #[doc = "* **Group:** InternalFormatPName"]
1840    pub const GL_INTERNALFORMAT_ALPHA_TYPE: GLenum = 0x827B;
1841    #[doc = "`GL_INTERNALFORMAT_BLUE_SIZE: GLenum = 0x8273`"]
1842    #[doc = "* **Group:** InternalFormatPName"]
1843    pub const GL_INTERNALFORMAT_BLUE_SIZE: GLenum = 0x8273;
1844    #[doc = "`GL_INTERNALFORMAT_BLUE_TYPE: GLenum = 0x827A`"]
1845    #[doc = "* **Group:** InternalFormatPName"]
1846    pub const GL_INTERNALFORMAT_BLUE_TYPE: GLenum = 0x827A;
1847    #[doc = "`GL_INTERNALFORMAT_DEPTH_SIZE: GLenum = 0x8275`"]
1848    #[doc = "* **Group:** InternalFormatPName"]
1849    pub const GL_INTERNALFORMAT_DEPTH_SIZE: GLenum = 0x8275;
1850    #[doc = "`GL_INTERNALFORMAT_DEPTH_TYPE: GLenum = 0x827C`"]
1851    #[doc = "* **Group:** InternalFormatPName"]
1852    pub const GL_INTERNALFORMAT_DEPTH_TYPE: GLenum = 0x827C;
1853    #[doc = "`GL_INTERNALFORMAT_GREEN_SIZE: GLenum = 0x8272`"]
1854    #[doc = "* **Group:** InternalFormatPName"]
1855    pub const GL_INTERNALFORMAT_GREEN_SIZE: GLenum = 0x8272;
1856    #[doc = "`GL_INTERNALFORMAT_GREEN_TYPE: GLenum = 0x8279`"]
1857    #[doc = "* **Group:** InternalFormatPName"]
1858    pub const GL_INTERNALFORMAT_GREEN_TYPE: GLenum = 0x8279;
1859    #[doc = "`GL_INTERNALFORMAT_PREFERRED: GLenum = 0x8270`"]
1860    #[doc = "* **Group:** InternalFormatPName"]
1861    pub const GL_INTERNALFORMAT_PREFERRED: GLenum = 0x8270;
1862    #[doc = "`GL_INTERNALFORMAT_RED_SIZE: GLenum = 0x8271`"]
1863    #[doc = "* **Group:** InternalFormatPName"]
1864    pub const GL_INTERNALFORMAT_RED_SIZE: GLenum = 0x8271;
1865    #[doc = "`GL_INTERNALFORMAT_RED_TYPE: GLenum = 0x8278`"]
1866    #[doc = "* **Group:** InternalFormatPName"]
1867    pub const GL_INTERNALFORMAT_RED_TYPE: GLenum = 0x8278;
1868    #[doc = "`GL_INTERNALFORMAT_SHARED_SIZE: GLenum = 0x8277`"]
1869    #[doc = "* **Group:** InternalFormatPName"]
1870    pub const GL_INTERNALFORMAT_SHARED_SIZE: GLenum = 0x8277;
1871    #[doc = "`GL_INTERNALFORMAT_STENCIL_SIZE: GLenum = 0x8276`"]
1872    #[doc = "* **Group:** InternalFormatPName"]
1873    pub const GL_INTERNALFORMAT_STENCIL_SIZE: GLenum = 0x8276;
1874    #[doc = "`GL_INTERNALFORMAT_STENCIL_TYPE: GLenum = 0x827D`"]
1875    #[doc = "* **Group:** InternalFormatPName"]
1876    pub const GL_INTERNALFORMAT_STENCIL_TYPE: GLenum = 0x827D;
1877    #[doc = "`GL_INTERNALFORMAT_SUPPORTED: GLenum = 0x826F`"]
1878    #[doc = "* **Group:** InternalFormatPName"]
1879    pub const GL_INTERNALFORMAT_SUPPORTED: GLenum = 0x826F;
1880    #[doc = "`GL_INT_2_10_10_10_REV: GLenum = 0x8D9F`"]
1881    #[doc = "* **Groups:** VertexAttribPointerType, VertexAttribType"]
1882    pub const GL_INT_2_10_10_10_REV: GLenum = 0x8D9F;
1883    #[doc = "`GL_INT_IMAGE_1D: GLenum = 0x9057`"]
1884    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1885    pub const GL_INT_IMAGE_1D: GLenum = 0x9057;
1886    #[doc = "`GL_INT_IMAGE_1D_ARRAY: GLenum = 0x905D`"]
1887    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1888    pub const GL_INT_IMAGE_1D_ARRAY: GLenum = 0x905D;
1889    #[doc = "`GL_INT_IMAGE_2D: GLenum = 0x9058`"]
1890    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1891    pub const GL_INT_IMAGE_2D: GLenum = 0x9058;
1892    #[doc = "`GL_INT_IMAGE_2D_ARRAY: GLenum = 0x905E`"]
1893    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1894    pub const GL_INT_IMAGE_2D_ARRAY: GLenum = 0x905E;
1895    #[doc = "`GL_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x9060`"]
1896    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1897    pub const GL_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x9060;
1898    #[doc = "`GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9061`"]
1899    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1900    pub const GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9061;
1901    #[doc = "`GL_INT_IMAGE_2D_RECT: GLenum = 0x905A`"]
1902    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1903    pub const GL_INT_IMAGE_2D_RECT: GLenum = 0x905A;
1904    #[doc = "`GL_INT_IMAGE_3D: GLenum = 0x9059`"]
1905    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1906    pub const GL_INT_IMAGE_3D: GLenum = 0x9059;
1907    #[doc = "`GL_INT_IMAGE_BUFFER: GLenum = 0x905C`"]
1908    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1909    pub const GL_INT_IMAGE_BUFFER: GLenum = 0x905C;
1910    #[doc = "`GL_INT_IMAGE_CUBE: GLenum = 0x905B`"]
1911    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1912    pub const GL_INT_IMAGE_CUBE: GLenum = 0x905B;
1913    #[doc = "`GL_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x905F`"]
1914    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
1915    pub const GL_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x905F;
1916    #[doc = "`GL_INT_SAMPLER_1D: GLenum = 0x8DC9`"]
1917    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1918    pub const GL_INT_SAMPLER_1D: GLenum = 0x8DC9;
1919    #[doc = "`GL_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DCE`"]
1920    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1921    pub const GL_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DCE;
1922    #[doc = "`GL_INT_SAMPLER_2D: GLenum = 0x8DCA`"]
1923    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1924    pub const GL_INT_SAMPLER_2D: GLenum = 0x8DCA;
1925    #[doc = "`GL_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DCF`"]
1926    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1927    pub const GL_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DCF;
1928    #[doc = "`GL_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9109`"]
1929    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1930    pub const GL_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9109;
1931    #[doc = "`GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910C`"]
1932    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1933    pub const GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910C;
1934    #[doc = "`GL_INT_SAMPLER_2D_RECT: GLenum = 0x8DCD`"]
1935    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1936    pub const GL_INT_SAMPLER_2D_RECT: GLenum = 0x8DCD;
1937    #[doc = "`GL_INT_SAMPLER_3D: GLenum = 0x8DCB`"]
1938    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1939    pub const GL_INT_SAMPLER_3D: GLenum = 0x8DCB;
1940    #[doc = "`GL_INT_SAMPLER_BUFFER: GLenum = 0x8DD0`"]
1941    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1942    pub const GL_INT_SAMPLER_BUFFER: GLenum = 0x8DD0;
1943    #[doc = "`GL_INT_SAMPLER_CUBE: GLenum = 0x8DCC`"]
1944    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1945    pub const GL_INT_SAMPLER_CUBE: GLenum = 0x8DCC;
1946    #[doc = "`GL_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900E`"]
1947    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1948    pub const GL_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900E;
1949    #[doc = "`GL_INT_VEC2: GLenum = 0x8B53`"]
1950    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1951    pub const GL_INT_VEC2: GLenum = 0x8B53;
1952    #[doc = "`GL_INT_VEC3: GLenum = 0x8B54`"]
1953    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1954    pub const GL_INT_VEC3: GLenum = 0x8B54;
1955    #[doc = "`GL_INT_VEC4: GLenum = 0x8B55`"]
1956    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
1957    pub const GL_INT_VEC4: GLenum = 0x8B55;
1958    #[doc = "`GL_INVALID_ENUM: GLenum = 0x0500`"]
1959    #[doc = "* **Group:** ErrorCode"]
1960    pub const GL_INVALID_ENUM: GLenum = 0x0500;
1961    #[doc = "`GL_INVALID_FRAMEBUFFER_OPERATION: GLenum = 0x0506`"]
1962    #[doc = "* **Group:** ErrorCode"]
1963    pub const GL_INVALID_FRAMEBUFFER_OPERATION: GLenum = 0x0506;
1964    #[doc = "`GL_INVALID_INDEX: GLenum = 0xFFFFFFFF`"]
1965    pub const GL_INVALID_INDEX: GLenum = 0xFFFFFFFF;
1966    #[doc = "`GL_INVALID_OPERATION: GLenum = 0x0502`"]
1967    #[doc = "* **Group:** ErrorCode"]
1968    pub const GL_INVALID_OPERATION: GLenum = 0x0502;
1969    #[doc = "`GL_INVALID_VALUE: GLenum = 0x0501`"]
1970    #[doc = "* **Group:** ErrorCode"]
1971    pub const GL_INVALID_VALUE: GLenum = 0x0501;
1972    #[doc = "`GL_INVERT: GLenum = 0x150A`"]
1973    #[doc = "* **Groups:** PathFillMode, LogicOp, StencilOp"]
1974    pub const GL_INVERT: GLenum = 0x150A;
1975    #[doc = "`GL_ISOLINES: GLenum = 0x8E7A`"]
1976    pub const GL_ISOLINES: GLenum = 0x8E7A;
1977    #[doc = "`GL_IS_PER_PATCH: GLenum = 0x92E7`"]
1978    #[doc = "* **Group:** ProgramResourceProperty"]
1979    pub const GL_IS_PER_PATCH: GLenum = 0x92E7;
1980    #[doc = "`GL_IS_ROW_MAJOR: GLenum = 0x9300`"]
1981    #[doc = "* **Group:** ProgramResourceProperty"]
1982    pub const GL_IS_ROW_MAJOR: GLenum = 0x9300;
1983    #[doc = "`GL_KEEP: GLenum = 0x1E00`"]
1984    #[doc = "* **Group:** StencilOp"]
1985    pub const GL_KEEP: GLenum = 0x1E00;
1986    #[doc = "`GL_LAST_VERTEX_CONVENTION: GLenum = 0x8E4E`"]
1987    #[doc = "* **Group:** VertexProvokingMode"]
1988    pub const GL_LAST_VERTEX_CONVENTION: GLenum = 0x8E4E;
1989    #[doc = "`GL_LAYER_PROVOKING_VERTEX: GLenum = 0x825E`"]
1990    #[doc = "* **Group:** GetPName"]
1991    pub const GL_LAYER_PROVOKING_VERTEX: GLenum = 0x825E;
1992    #[doc = "`GL_LEFT: GLenum = 0x0406`"]
1993    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
1994    pub const GL_LEFT: GLenum = 0x0406;
1995    #[doc = "`GL_LEQUAL: GLenum = 0x0203`"]
1996    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
1997    pub const GL_LEQUAL: GLenum = 0x0203;
1998    #[doc = "`GL_LESS: GLenum = 0x0201`"]
1999    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
2000    pub const GL_LESS: GLenum = 0x0201;
2001    #[doc = "`GL_LIGHTEN: GLenum = 0x9298`"]
2002    pub const GL_LIGHTEN: GLenum = 0x9298;
2003    #[doc = "`GL_LINE: GLenum = 0x1B01`"]
2004    #[doc = "* **Groups:** PolygonMode, MeshMode1, MeshMode2"]
2005    pub const GL_LINE: GLenum = 0x1B01;
2006    #[doc = "`GL_LINEAR: GLenum = 0x2601`"]
2007    #[doc = "* **Groups:** BlitFramebufferFilter, FogMode, TextureMagFilter, TextureMinFilter"]
2008    pub const GL_LINEAR: GLenum = 0x2601;
2009    #[doc = "`GL_LINEAR_MIPMAP_LINEAR: GLenum = 0x2703`"]
2010    #[doc = "* **Groups:** TextureWrapMode, TextureMinFilter"]
2011    pub const GL_LINEAR_MIPMAP_LINEAR: GLenum = 0x2703;
2012    #[doc = "`GL_LINEAR_MIPMAP_NEAREST: GLenum = 0x2701`"]
2013    #[doc = "* **Group:** TextureMinFilter"]
2014    pub const GL_LINEAR_MIPMAP_NEAREST: GLenum = 0x2701;
2015    #[doc = "`GL_LINES: GLenum = 0x0001`"]
2016    #[doc = "* **Group:** PrimitiveType"]
2017    pub const GL_LINES: GLenum = 0x0001;
2018    #[doc = "`GL_LINES_ADJACENCY: GLenum = 0x000A`"]
2019    #[doc = "* **Group:** PrimitiveType"]
2020    pub const GL_LINES_ADJACENCY: GLenum = 0x000A;
2021    #[doc = "`GL_LINE_LOOP: GLenum = 0x0002`"]
2022    #[doc = "* **Group:** PrimitiveType"]
2023    pub const GL_LINE_LOOP: GLenum = 0x0002;
2024    #[doc = "`GL_LINE_SMOOTH: GLenum = 0x0B20`"]
2025    #[doc = "* **Groups:** GetPName, EnableCap"]
2026    pub const GL_LINE_SMOOTH: GLenum = 0x0B20;
2027    #[doc = "`GL_LINE_SMOOTH_HINT: GLenum = 0x0C52`"]
2028    #[doc = "* **Groups:** HintTarget, GetPName"]
2029    pub const GL_LINE_SMOOTH_HINT: GLenum = 0x0C52;
2030    #[doc = "`GL_LINE_STRIP: GLenum = 0x0003`"]
2031    #[doc = "* **Group:** PrimitiveType"]
2032    pub const GL_LINE_STRIP: GLenum = 0x0003;
2033    #[doc = "`GL_LINE_STRIP_ADJACENCY: GLenum = 0x000B`"]
2034    #[doc = "* **Group:** PrimitiveType"]
2035    pub const GL_LINE_STRIP_ADJACENCY: GLenum = 0x000B;
2036    #[doc = "`GL_LINE_WIDTH: GLenum = 0x0B21`"]
2037    #[doc = "* **Group:** GetPName"]
2038    pub const GL_LINE_WIDTH: GLenum = 0x0B21;
2039    #[doc = "`GL_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23`"]
2040    #[doc = "* **Group:** GetPName"]
2041    pub const GL_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23;
2042    #[doc = "`GL_LINE_WIDTH_RANGE: GLenum = 0x0B22`"]
2043    #[doc = "* **Group:** GetPName"]
2044    pub const GL_LINE_WIDTH_RANGE: GLenum = 0x0B22;
2045    #[doc = "`GL_LINK_STATUS: GLenum = 0x8B82`"]
2046    #[doc = "* **Group:** ProgramPropertyARB"]
2047    pub const GL_LINK_STATUS: GLenum = 0x8B82;
2048    #[doc = "`GL_LOCATION: GLenum = 0x930E`"]
2049    #[doc = "* **Group:** ProgramResourceProperty"]
2050    pub const GL_LOCATION: GLenum = 0x930E;
2051    #[doc = "`GL_LOCATION_COMPONENT: GLenum = 0x934A`"]
2052    #[doc = "* **Group:** ProgramResourceProperty"]
2053    pub const GL_LOCATION_COMPONENT: GLenum = 0x934A;
2054    #[doc = "`GL_LOCATION_INDEX: GLenum = 0x930F`"]
2055    #[doc = "* **Group:** ProgramResourceProperty"]
2056    pub const GL_LOCATION_INDEX: GLenum = 0x930F;
2057    #[doc = "`GL_LOGIC_OP_MODE: GLenum = 0x0BF0`"]
2058    #[doc = "* **Group:** GetPName"]
2059    pub const GL_LOGIC_OP_MODE: GLenum = 0x0BF0;
2060    #[doc = "`GL_LOSE_CONTEXT_ON_RESET: GLenum = 0x8252`"]
2061    pub const GL_LOSE_CONTEXT_ON_RESET: GLenum = 0x8252;
2062    #[doc = "`GL_LOWER_LEFT: GLenum = 0x8CA1`"]
2063    #[doc = "* **Group:** ClipControlOrigin"]
2064    pub const GL_LOWER_LEFT: GLenum = 0x8CA1;
2065    #[doc = "`GL_LOW_FLOAT: GLenum = 0x8DF0`"]
2066    #[doc = "* **Group:** PrecisionType"]
2067    pub const GL_LOW_FLOAT: GLenum = 0x8DF0;
2068    #[doc = "`GL_LOW_INT: GLenum = 0x8DF3`"]
2069    #[doc = "* **Group:** PrecisionType"]
2070    pub const GL_LOW_INT: GLenum = 0x8DF3;
2071    #[doc = "`GL_LUMINANCE: GLenum = 0x1909`"]
2072    #[doc = "* **Groups:** PixelTexGenMode, PathColorFormat, PixelFormat"]
2073    pub const GL_LUMINANCE: GLenum = 0x1909;
2074    #[doc = "`GL_LUMINANCE_ALPHA: GLenum = 0x190A`"]
2075    #[doc = "* **Groups:** PixelTexGenMode, PathColorFormat, PixelFormat"]
2076    pub const GL_LUMINANCE_ALPHA: GLenum = 0x190A;
2077    #[doc = "`GL_MAJOR_VERSION: GLenum = 0x821B`"]
2078    #[doc = "* **Group:** GetPName"]
2079    pub const GL_MAJOR_VERSION: GLenum = 0x821B;
2080    #[doc = "`GL_MANUAL_GENERATE_MIPMAP: GLenum = 0x8294`"]
2081    pub const GL_MANUAL_GENERATE_MIPMAP: GLenum = 0x8294;
2082    #[doc = "`GL_MAP_COHERENT_BIT: GLbitfield = 0x0080`"]
2083    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2084    pub const GL_MAP_COHERENT_BIT: GLbitfield = 0x0080;
2085    #[doc = "`GL_MAP_COHERENT_BIT_EXT: GLbitfield = 0x0080`"]
2086    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2087    pub const GL_MAP_COHERENT_BIT_EXT: GLbitfield = 0x0080;
2088    #[doc = "`GL_MAP_FLUSH_EXPLICIT_BIT: GLbitfield = 0x0010`"]
2089    #[doc = "* **Group:** MapBufferAccessMask"]
2090    pub const GL_MAP_FLUSH_EXPLICIT_BIT: GLbitfield = 0x0010;
2091    #[doc = "`GL_MAP_INVALIDATE_BUFFER_BIT: GLbitfield = 0x0008`"]
2092    #[doc = "* **Group:** MapBufferAccessMask"]
2093    pub const GL_MAP_INVALIDATE_BUFFER_BIT: GLbitfield = 0x0008;
2094    #[doc = "`GL_MAP_INVALIDATE_RANGE_BIT: GLbitfield = 0x0004`"]
2095    #[doc = "* **Group:** MapBufferAccessMask"]
2096    pub const GL_MAP_INVALIDATE_RANGE_BIT: GLbitfield = 0x0004;
2097    #[doc = "`GL_MAP_PERSISTENT_BIT: GLbitfield = 0x0040`"]
2098    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2099    pub const GL_MAP_PERSISTENT_BIT: GLbitfield = 0x0040;
2100    #[doc = "`GL_MAP_PERSISTENT_BIT_EXT: GLbitfield = 0x0040`"]
2101    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2102    pub const GL_MAP_PERSISTENT_BIT_EXT: GLbitfield = 0x0040;
2103    #[doc = "`GL_MAP_READ_BIT: GLbitfield = 0x0001`"]
2104    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2105    pub const GL_MAP_READ_BIT: GLbitfield = 0x0001;
2106    #[doc = "`GL_MAP_UNSYNCHRONIZED_BIT: GLbitfield = 0x0020`"]
2107    #[doc = "* **Group:** MapBufferAccessMask"]
2108    pub const GL_MAP_UNSYNCHRONIZED_BIT: GLbitfield = 0x0020;
2109    #[doc = "`GL_MAP_WRITE_BIT: GLbitfield = 0x0002`"]
2110    #[doc = "* **Groups:** MapBufferAccessMask, BufferStorageMask"]
2111    pub const GL_MAP_WRITE_BIT: GLbitfield = 0x0002;
2112    #[doc = "`GL_MATRIX_STRIDE: GLenum = 0x92FF`"]
2113    #[doc = "* **Group:** ProgramResourceProperty"]
2114    pub const GL_MATRIX_STRIDE: GLenum = 0x92FF;
2115    #[doc = "`GL_MAX: GLenum = 0x8008`"]
2116    #[doc = "* **Group:** BlendEquationModeEXT"]
2117    pub const GL_MAX: GLenum = 0x8008;
2118    #[doc = "`GL_MAX_3D_TEXTURE_SIZE: GLenum = 0x8073`"]
2119    #[doc = "* **Group:** GetPName"]
2120    pub const GL_MAX_3D_TEXTURE_SIZE: GLenum = 0x8073;
2121    #[doc = "`GL_MAX_ARRAY_TEXTURE_LAYERS: GLenum = 0x88FF`"]
2122    #[doc = "* **Group:** GetPName"]
2123    pub const GL_MAX_ARRAY_TEXTURE_LAYERS: GLenum = 0x88FF;
2124    #[doc = "`GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: GLenum = 0x92DC`"]
2125    pub const GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: GLenum = 0x92DC;
2126    #[doc = "`GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92D8`"]
2127    pub const GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92D8;
2128    #[doc = "`GL_MAX_CLIP_DISTANCES: GLenum = 0x0D32`"]
2129    #[doc = "* **Group:** GetPName"]
2130    #[doc = "* **Alias Of:** `GL_MAX_CLIP_PLANES`"]
2131    pub const GL_MAX_CLIP_DISTANCES: GLenum = 0x0D32;
2132    #[doc = "`GL_MAX_COLOR_ATTACHMENTS: GLenum = 0x8CDF`"]
2133    pub const GL_MAX_COLOR_ATTACHMENTS: GLenum = 0x8CDF;
2134    #[doc = "`GL_MAX_COLOR_TEXTURE_SAMPLES: GLenum = 0x910E`"]
2135    #[doc = "* **Group:** GetPName"]
2136    pub const GL_MAX_COLOR_TEXTURE_SAMPLES: GLenum = 0x910E;
2137    #[doc = "`GL_MAX_COMBINED_ATOMIC_COUNTERS: GLenum = 0x92D7`"]
2138    #[doc = "* **Group:** GetPName"]
2139    pub const GL_MAX_COMBINED_ATOMIC_COUNTERS: GLenum = 0x92D7;
2140    #[doc = "`GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D1`"]
2141    pub const GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D1;
2142    #[doc = "`GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES: GLenum = 0x82FA`"]
2143    pub const GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES: GLenum = 0x82FA;
2144    #[doc = "`GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8266`"]
2145    #[doc = "* **Group:** GetPName"]
2146    pub const GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8266;
2147    #[doc = "`GL_MAX_COMBINED_DIMENSIONS: GLenum = 0x8282`"]
2148    pub const GL_MAX_COMBINED_DIMENSIONS: GLenum = 0x8282;
2149    #[doc = "`GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8A33`"]
2150    #[doc = "* **Group:** GetPName"]
2151    pub const GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8A33;
2152    #[doc = "`GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8A32`"]
2153    #[doc = "* **Group:** GetPName"]
2154    pub const GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8A32;
2155    #[doc = "`GL_MAX_COMBINED_IMAGE_UNIFORMS: GLenum = 0x90CF`"]
2156    pub const GL_MAX_COMBINED_IMAGE_UNIFORMS: GLenum = 0x90CF;
2157    #[doc = "`GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS: GLenum = 0x8F39`"]
2158    pub const GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS: GLenum = 0x8F39;
2159    #[doc = "`GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: GLenum = 0x8F39`"]
2160    #[doc = "* **Alias Of:** `GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS`"]
2161    pub const GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: GLenum = 0x8F39;
2162    #[doc = "`GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: GLenum = 0x90DC`"]
2163    #[doc = "* **Group:** GetPName"]
2164    pub const GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: GLenum = 0x90DC;
2165    #[doc = "`GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E1E`"]
2166    pub const GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E1E;
2167    #[doc = "`GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E1F`"]
2168    pub const GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E1F;
2169    #[doc = "`GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4D`"]
2170    #[doc = "* **Group:** GetPName"]
2171    pub const GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4D;
2172    #[doc = "`GL_MAX_COMBINED_UNIFORM_BLOCKS: GLenum = 0x8A2E`"]
2173    #[doc = "* **Group:** GetPName"]
2174    pub const GL_MAX_COMBINED_UNIFORM_BLOCKS: GLenum = 0x8A2E;
2175    #[doc = "`GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8A31`"]
2176    #[doc = "* **Group:** GetPName"]
2177    pub const GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8A31;
2178    #[doc = "`GL_MAX_COMPUTE_ATOMIC_COUNTERS: GLenum = 0x8265`"]
2179    #[doc = "* **Group:** GetPName"]
2180    pub const GL_MAX_COMPUTE_ATOMIC_COUNTERS: GLenum = 0x8265;
2181    #[doc = "`GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x8264`"]
2182    #[doc = "* **Group:** GetPName"]
2183    pub const GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x8264;
2184    #[doc = "`GL_MAX_COMPUTE_IMAGE_UNIFORMS: GLenum = 0x91BD`"]
2185    pub const GL_MAX_COMPUTE_IMAGE_UNIFORMS: GLenum = 0x91BD;
2186    #[doc = "`GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: GLenum = 0x90DB`"]
2187    #[doc = "* **Group:** GetPName"]
2188    pub const GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: GLenum = 0x90DB;
2189    #[doc = "`GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: GLenum = 0x8262`"]
2190    pub const GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: GLenum = 0x8262;
2191    #[doc = "`GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: GLenum = 0x91BC`"]
2192    #[doc = "* **Group:** GetPName"]
2193    pub const GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: GLenum = 0x91BC;
2194    #[doc = "`GL_MAX_COMPUTE_UNIFORM_BLOCKS: GLenum = 0x91BB`"]
2195    #[doc = "* **Group:** GetPName"]
2196    pub const GL_MAX_COMPUTE_UNIFORM_BLOCKS: GLenum = 0x91BB;
2197    #[doc = "`GL_MAX_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8263`"]
2198    #[doc = "* **Group:** GetPName"]
2199    pub const GL_MAX_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8263;
2200    #[doc = "`GL_MAX_COMPUTE_WORK_GROUP_COUNT: GLenum = 0x91BE`"]
2201    #[doc = "* **Group:** GetPName"]
2202    pub const GL_MAX_COMPUTE_WORK_GROUP_COUNT: GLenum = 0x91BE;
2203    #[doc = "`GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: GLenum = 0x90EB`"]
2204    #[doc = "* **Group:** GetPName"]
2205    pub const GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: GLenum = 0x90EB;
2206    #[doc = "`GL_MAX_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x91BF`"]
2207    #[doc = "* **Group:** GetPName"]
2208    pub const GL_MAX_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x91BF;
2209    #[doc = "`GL_MAX_CUBE_MAP_TEXTURE_SIZE: GLenum = 0x851C`"]
2210    #[doc = "* **Group:** GetPName"]
2211    pub const GL_MAX_CUBE_MAP_TEXTURE_SIZE: GLenum = 0x851C;
2212    #[doc = "`GL_MAX_CULL_DISTANCES: GLenum = 0x82F9`"]
2213    pub const GL_MAX_CULL_DISTANCES: GLenum = 0x82F9;
2214    #[doc = "`GL_MAX_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826C`"]
2215    #[doc = "* **Group:** GetPName"]
2216    pub const GL_MAX_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826C;
2217    #[doc = "`GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR: GLenum = 0x826C`"]
2218    pub const GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR: GLenum = 0x826C;
2219    #[doc = "`GL_MAX_DEBUG_LOGGED_MESSAGES: GLenum = 0x9144`"]
2220    pub const GL_MAX_DEBUG_LOGGED_MESSAGES: GLenum = 0x9144;
2221    #[doc = "`GL_MAX_DEBUG_LOGGED_MESSAGES_ARB: GLenum = 0x9144`"]
2222    pub const GL_MAX_DEBUG_LOGGED_MESSAGES_ARB: GLenum = 0x9144;
2223    #[doc = "`GL_MAX_DEBUG_LOGGED_MESSAGES_KHR: GLenum = 0x9144`"]
2224    pub const GL_MAX_DEBUG_LOGGED_MESSAGES_KHR: GLenum = 0x9144;
2225    #[doc = "`GL_MAX_DEBUG_MESSAGE_LENGTH: GLenum = 0x9143`"]
2226    pub const GL_MAX_DEBUG_MESSAGE_LENGTH: GLenum = 0x9143;
2227    #[doc = "`GL_MAX_DEBUG_MESSAGE_LENGTH_ARB: GLenum = 0x9143`"]
2228    pub const GL_MAX_DEBUG_MESSAGE_LENGTH_ARB: GLenum = 0x9143;
2229    #[doc = "`GL_MAX_DEBUG_MESSAGE_LENGTH_KHR: GLenum = 0x9143`"]
2230    pub const GL_MAX_DEBUG_MESSAGE_LENGTH_KHR: GLenum = 0x9143;
2231    #[doc = "`GL_MAX_DEPTH: GLenum = 0x8280`"]
2232    #[doc = "* **Group:** InternalFormatPName"]
2233    pub const GL_MAX_DEPTH: GLenum = 0x8280;
2234    #[doc = "`GL_MAX_DEPTH_TEXTURE_SAMPLES: GLenum = 0x910F`"]
2235    #[doc = "* **Group:** GetPName"]
2236    pub const GL_MAX_DEPTH_TEXTURE_SAMPLES: GLenum = 0x910F;
2237    #[doc = "`GL_MAX_DRAW_BUFFERS: GLenum = 0x8824`"]
2238    #[doc = "* **Group:** GetPName"]
2239    pub const GL_MAX_DRAW_BUFFERS: GLenum = 0x8824;
2240    #[doc = "`GL_MAX_DUAL_SOURCE_DRAW_BUFFERS: GLenum = 0x88FC`"]
2241    #[doc = "* **Group:** GetPName"]
2242    pub const GL_MAX_DUAL_SOURCE_DRAW_BUFFERS: GLenum = 0x88FC;
2243    #[doc = "`GL_MAX_ELEMENTS_INDICES: GLenum = 0x80E9`"]
2244    #[doc = "* **Group:** GetPName"]
2245    pub const GL_MAX_ELEMENTS_INDICES: GLenum = 0x80E9;
2246    #[doc = "`GL_MAX_ELEMENTS_VERTICES: GLenum = 0x80E8`"]
2247    #[doc = "* **Group:** GetPName"]
2248    pub const GL_MAX_ELEMENTS_VERTICES: GLenum = 0x80E8;
2249    #[doc = "`GL_MAX_ELEMENT_INDEX: GLenum = 0x8D6B`"]
2250    #[doc = "* **Group:** GetPName"]
2251    pub const GL_MAX_ELEMENT_INDEX: GLenum = 0x8D6B;
2252    #[doc = "`GL_MAX_FRAGMENT_ATOMIC_COUNTERS: GLenum = 0x92D6`"]
2253    #[doc = "* **Group:** GetPName"]
2254    pub const GL_MAX_FRAGMENT_ATOMIC_COUNTERS: GLenum = 0x92D6;
2255    #[doc = "`GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D0`"]
2256    pub const GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D0;
2257    #[doc = "`GL_MAX_FRAGMENT_IMAGE_UNIFORMS: GLenum = 0x90CE`"]
2258    pub const GL_MAX_FRAGMENT_IMAGE_UNIFORMS: GLenum = 0x90CE;
2259    #[doc = "`GL_MAX_FRAGMENT_INPUT_COMPONENTS: GLenum = 0x9125`"]
2260    #[doc = "* **Group:** GetPName"]
2261    pub const GL_MAX_FRAGMENT_INPUT_COMPONENTS: GLenum = 0x9125;
2262    #[doc = "`GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5C`"]
2263    pub const GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5C;
2264    #[doc = "`GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: GLenum = 0x90DA`"]
2265    #[doc = "* **Group:** GetPName"]
2266    pub const GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: GLenum = 0x90DA;
2267    #[doc = "`GL_MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum = 0x8A2D`"]
2268    #[doc = "* **Group:** GetPName"]
2269    pub const GL_MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum = 0x8A2D;
2270    #[doc = "`GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8B49`"]
2271    #[doc = "* **Group:** GetPName"]
2272    pub const GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8B49;
2273    #[doc = "`GL_MAX_FRAGMENT_UNIFORM_VECTORS: GLenum = 0x8DFD`"]
2274    #[doc = "* **Group:** GetPName"]
2275    pub const GL_MAX_FRAGMENT_UNIFORM_VECTORS: GLenum = 0x8DFD;
2276    #[doc = "`GL_MAX_FRAMEBUFFER_HEIGHT: GLenum = 0x9316`"]
2277    #[doc = "* **Group:** GetPName"]
2278    pub const GL_MAX_FRAMEBUFFER_HEIGHT: GLenum = 0x9316;
2279    #[doc = "`GL_MAX_FRAMEBUFFER_LAYERS: GLenum = 0x9317`"]
2280    #[doc = "* **Group:** GetPName"]
2281    pub const GL_MAX_FRAMEBUFFER_LAYERS: GLenum = 0x9317;
2282    #[doc = "`GL_MAX_FRAMEBUFFER_SAMPLES: GLenum = 0x9318`"]
2283    #[doc = "* **Group:** GetPName"]
2284    pub const GL_MAX_FRAMEBUFFER_SAMPLES: GLenum = 0x9318;
2285    #[doc = "`GL_MAX_FRAMEBUFFER_WIDTH: GLenum = 0x9315`"]
2286    #[doc = "* **Group:** GetPName"]
2287    pub const GL_MAX_FRAMEBUFFER_WIDTH: GLenum = 0x9315;
2288    #[doc = "`GL_MAX_GEOMETRY_ATOMIC_COUNTERS: GLenum = 0x92D5`"]
2289    #[doc = "* **Group:** GetPName"]
2290    pub const GL_MAX_GEOMETRY_ATOMIC_COUNTERS: GLenum = 0x92D5;
2291    #[doc = "`GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CF`"]
2292    pub const GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CF;
2293    #[doc = "`GL_MAX_GEOMETRY_IMAGE_UNIFORMS: GLenum = 0x90CD`"]
2294    pub const GL_MAX_GEOMETRY_IMAGE_UNIFORMS: GLenum = 0x90CD;
2295    #[doc = "`GL_MAX_GEOMETRY_INPUT_COMPONENTS: GLenum = 0x9123`"]
2296    #[doc = "* **Group:** GetPName"]
2297    pub const GL_MAX_GEOMETRY_INPUT_COMPONENTS: GLenum = 0x9123;
2298    #[doc = "`GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: GLenum = 0x9124`"]
2299    #[doc = "* **Group:** GetPName"]
2300    pub const GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: GLenum = 0x9124;
2301    #[doc = "`GL_MAX_GEOMETRY_OUTPUT_VERTICES: GLenum = 0x8DE0`"]
2302    pub const GL_MAX_GEOMETRY_OUTPUT_VERTICES: GLenum = 0x8DE0;
2303    #[doc = "`GL_MAX_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x8E5A`"]
2304    pub const GL_MAX_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x8E5A;
2305    #[doc = "`GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS: GLenum = 0x90D7`"]
2306    #[doc = "* **Group:** GetPName"]
2307    pub const GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS: GLenum = 0x90D7;
2308    #[doc = "`GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: GLenum = 0x8C29`"]
2309    #[doc = "* **Group:** GetPName"]
2310    pub const GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: GLenum = 0x8C29;
2311    #[doc = "`GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8DE1`"]
2312    pub const GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8DE1;
2313    #[doc = "`GL_MAX_GEOMETRY_UNIFORM_BLOCKS: GLenum = 0x8A2C`"]
2314    #[doc = "* **Group:** GetPName"]
2315    pub const GL_MAX_GEOMETRY_UNIFORM_BLOCKS: GLenum = 0x8A2C;
2316    #[doc = "`GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8DDF`"]
2317    #[doc = "* **Group:** GetPName"]
2318    pub const GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8DDF;
2319    #[doc = "`GL_MAX_HEIGHT: GLenum = 0x827F`"]
2320    #[doc = "* **Group:** InternalFormatPName"]
2321    pub const GL_MAX_HEIGHT: GLenum = 0x827F;
2322    #[doc = "`GL_MAX_IMAGE_SAMPLES: GLenum = 0x906D`"]
2323    pub const GL_MAX_IMAGE_SAMPLES: GLenum = 0x906D;
2324    #[doc = "`GL_MAX_IMAGE_UNITS: GLenum = 0x8F38`"]
2325    pub const GL_MAX_IMAGE_UNITS: GLenum = 0x8F38;
2326    #[doc = "`GL_MAX_INTEGER_SAMPLES: GLenum = 0x9110`"]
2327    #[doc = "* **Group:** GetPName"]
2328    pub const GL_MAX_INTEGER_SAMPLES: GLenum = 0x9110;
2329    #[doc = "`GL_MAX_LABEL_LENGTH: GLenum = 0x82E8`"]
2330    #[doc = "* **Group:** GetPName"]
2331    pub const GL_MAX_LABEL_LENGTH: GLenum = 0x82E8;
2332    #[doc = "`GL_MAX_LABEL_LENGTH_KHR: GLenum = 0x82E8`"]
2333    pub const GL_MAX_LABEL_LENGTH_KHR: GLenum = 0x82E8;
2334    #[doc = "`GL_MAX_LAYERS: GLenum = 0x8281`"]
2335    #[doc = "* **Group:** InternalFormatPName"]
2336    pub const GL_MAX_LAYERS: GLenum = 0x8281;
2337    #[doc = "`GL_MAX_NAME_LENGTH: GLenum = 0x92F6`"]
2338    #[doc = "* **Group:** ProgramInterfacePName"]
2339    pub const GL_MAX_NAME_LENGTH: GLenum = 0x92F6;
2340    #[doc = "`GL_MAX_NUM_ACTIVE_VARIABLES: GLenum = 0x92F7`"]
2341    #[doc = "* **Group:** ProgramInterfacePName"]
2342    pub const GL_MAX_NUM_ACTIVE_VARIABLES: GLenum = 0x92F7;
2343    #[doc = "`GL_MAX_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x92F8`"]
2344    #[doc = "* **Group:** ProgramInterfacePName"]
2345    pub const GL_MAX_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x92F8;
2346    #[doc = "`GL_MAX_PATCH_VERTICES: GLenum = 0x8E7D`"]
2347    pub const GL_MAX_PATCH_VERTICES: GLenum = 0x8E7D;
2348    #[doc = "`GL_MAX_PROGRAM_TEXEL_OFFSET: GLenum = 0x8905`"]
2349    #[doc = "* **Group:** GetPName"]
2350    pub const GL_MAX_PROGRAM_TEXEL_OFFSET: GLenum = 0x8905;
2351    #[doc = "`GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5F`"]
2352    pub const GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5F;
2353    #[doc = "`GL_MAX_RECTANGLE_TEXTURE_SIZE: GLenum = 0x84F8`"]
2354    #[doc = "* **Group:** GetPName"]
2355    pub const GL_MAX_RECTANGLE_TEXTURE_SIZE: GLenum = 0x84F8;
2356    #[doc = "`GL_MAX_RENDERBUFFER_SIZE: GLenum = 0x84E8`"]
2357    #[doc = "* **Group:** GetPName"]
2358    pub const GL_MAX_RENDERBUFFER_SIZE: GLenum = 0x84E8;
2359    #[doc = "`GL_MAX_SAMPLES: GLenum = 0x8D57`"]
2360    pub const GL_MAX_SAMPLES: GLenum = 0x8D57;
2361    #[doc = "`GL_MAX_SAMPLES_EXT: GLenum = 0x8D57`"]
2362    #[cfg_attr(
2363        docs_rs,
2364        doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
2365    )]
2366    pub const GL_MAX_SAMPLES_EXT: GLenum = 0x8D57;
2367    #[doc = "`GL_MAX_SAMPLE_MASK_WORDS: GLenum = 0x8E59`"]
2368    #[doc = "* **Group:** GetPName"]
2369    pub const GL_MAX_SAMPLE_MASK_WORDS: GLenum = 0x8E59;
2370    #[doc = "`GL_MAX_SERVER_WAIT_TIMEOUT: GLenum = 0x9111`"]
2371    #[doc = "* **Group:** GetPName"]
2372    pub const GL_MAX_SERVER_WAIT_TIMEOUT: GLenum = 0x9111;
2373    #[doc = "`GL_MAX_SHADER_COMPILER_THREADS_ARB: GLenum = 0x91B0`"]
2374    #[doc = "* **Alias Of:** `GL_MAX_SHADER_COMPILER_THREADS_KHR`"]
2375    pub const GL_MAX_SHADER_COMPILER_THREADS_ARB: GLenum = 0x91B0;
2376    #[doc = "`GL_MAX_SHADER_COMPILER_THREADS_KHR: GLenum = 0x91B0`"]
2377    pub const GL_MAX_SHADER_COMPILER_THREADS_KHR: GLenum = 0x91B0;
2378    #[doc = "`GL_MAX_SHADER_STORAGE_BLOCK_SIZE: GLenum = 0x90DE`"]
2379    pub const GL_MAX_SHADER_STORAGE_BLOCK_SIZE: GLenum = 0x90DE;
2380    #[doc = "`GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: GLenum = 0x90DD`"]
2381    #[doc = "* **Group:** GetPName"]
2382    pub const GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: GLenum = 0x90DD;
2383    #[doc = "`GL_MAX_SUBROUTINES: GLenum = 0x8DE7`"]
2384    pub const GL_MAX_SUBROUTINES: GLenum = 0x8DE7;
2385    #[doc = "`GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8DE8`"]
2386    pub const GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8DE8;
2387    #[doc = "`GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS: GLenum = 0x92D3`"]
2388    #[doc = "* **Group:** GetPName"]
2389    pub const GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS: GLenum = 0x92D3;
2390    #[doc = "`GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CD`"]
2391    pub const GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CD;
2392    #[doc = "`GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS: GLenum = 0x90CB`"]
2393    pub const GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS: GLenum = 0x90CB;
2394    #[doc = "`GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: GLenum = 0x886C`"]
2395    pub const GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: GLenum = 0x886C;
2396    #[doc = "`GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: GLenum = 0x8E83`"]
2397    pub const GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: GLenum = 0x8E83;
2398    #[doc = "`GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS: GLenum = 0x90D8`"]
2399    #[doc = "* **Group:** GetPName"]
2400    pub const GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS: GLenum = 0x90D8;
2401    #[doc = "`GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: GLenum = 0x8E81`"]
2402    pub const GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: GLenum = 0x8E81;
2403    #[doc = "`GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8E85`"]
2404    pub const GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8E85;
2405    #[doc = "`GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: GLenum = 0x8E89`"]
2406    #[doc = "* **Group:** GetPName"]
2407    pub const GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: GLenum = 0x8E89;
2408    #[doc = "`GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E7F`"]
2409    pub const GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E7F;
2410    #[doc = "`GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS: GLenum = 0x92D4`"]
2411    #[doc = "* **Group:** GetPName"]
2412    pub const GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS: GLenum = 0x92D4;
2413    #[doc = "`GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CE`"]
2414    pub const GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CE;
2415    #[doc = "`GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS: GLenum = 0x90CC`"]
2416    pub const GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS: GLenum = 0x90CC;
2417    #[doc = "`GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: GLenum = 0x886D`"]
2418    pub const GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: GLenum = 0x886D;
2419    #[doc = "`GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: GLenum = 0x8E86`"]
2420    pub const GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: GLenum = 0x8E86;
2421    #[doc = "`GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS: GLenum = 0x90D9`"]
2422    #[doc = "* **Group:** GetPName"]
2423    pub const GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS: GLenum = 0x90D9;
2424    #[doc = "`GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: GLenum = 0x8E82`"]
2425    pub const GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: GLenum = 0x8E82;
2426    #[doc = "`GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: GLenum = 0x8E8A`"]
2427    #[doc = "* **Group:** GetPName"]
2428    pub const GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: GLenum = 0x8E8A;
2429    #[doc = "`GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E80`"]
2430    pub const GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E80;
2431    #[doc = "`GL_MAX_TESS_GEN_LEVEL: GLenum = 0x8E7E`"]
2432    pub const GL_MAX_TESS_GEN_LEVEL: GLenum = 0x8E7E;
2433    #[doc = "`GL_MAX_TESS_PATCH_COMPONENTS: GLenum = 0x8E84`"]
2434    pub const GL_MAX_TESS_PATCH_COMPONENTS: GLenum = 0x8E84;
2435    #[doc = "`GL_MAX_TEXTURE_BUFFER_SIZE: GLenum = 0x8C2B`"]
2436    #[doc = "* **Group:** GetPName"]
2437    pub const GL_MAX_TEXTURE_BUFFER_SIZE: GLenum = 0x8C2B;
2438    #[doc = "`GL_MAX_TEXTURE_IMAGE_UNITS: GLenum = 0x8872`"]
2439    #[doc = "* **Group:** GetPName"]
2440    pub const GL_MAX_TEXTURE_IMAGE_UNITS: GLenum = 0x8872;
2441    #[doc = "`GL_MAX_TEXTURE_LOD_BIAS: GLenum = 0x84FD`"]
2442    #[doc = "* **Group:** GetPName"]
2443    pub const GL_MAX_TEXTURE_LOD_BIAS: GLenum = 0x84FD;
2444    #[doc = "`GL_MAX_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FF`"]
2445    pub const GL_MAX_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FF;
2446    #[doc = "`GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum = 0x84FF`"]
2447    #[doc = "* **Alias Of:** `GL_MAX_TEXTURE_MAX_ANISOTROPY`"]
2448    pub const GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: GLenum = 0x84FF;
2449    #[doc = "`GL_MAX_TEXTURE_SIZE: GLenum = 0x0D33`"]
2450    #[doc = "* **Group:** GetPName"]
2451    pub const GL_MAX_TEXTURE_SIZE: GLenum = 0x0D33;
2452    #[doc = "`GL_MAX_TRANSFORM_FEEDBACK_BUFFERS: GLenum = 0x8E70`"]
2453    pub const GL_MAX_TRANSFORM_FEEDBACK_BUFFERS: GLenum = 0x8E70;
2454    #[doc = "`GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum = 0x8C8A`"]
2455    pub const GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum = 0x8C8A;
2456    #[doc = "`GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum = 0x8C8B`"]
2457    pub const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum = 0x8C8B;
2458    #[doc = "`GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum = 0x8C80`"]
2459    pub const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum = 0x8C80;
2460    #[doc = "`GL_MAX_UNIFORM_BLOCK_SIZE: GLenum = 0x8A30`"]
2461    #[doc = "* **Group:** GetPName"]
2462    pub const GL_MAX_UNIFORM_BLOCK_SIZE: GLenum = 0x8A30;
2463    #[doc = "`GL_MAX_UNIFORM_BUFFER_BINDINGS: GLenum = 0x8A2F`"]
2464    #[doc = "* **Group:** GetPName"]
2465    pub const GL_MAX_UNIFORM_BUFFER_BINDINGS: GLenum = 0x8A2F;
2466    #[doc = "`GL_MAX_UNIFORM_LOCATIONS: GLenum = 0x826E`"]
2467    #[doc = "* **Group:** GetPName"]
2468    pub const GL_MAX_UNIFORM_LOCATIONS: GLenum = 0x826E;
2469    #[doc = "`GL_MAX_VARYING_COMPONENTS: GLenum = 0x8B4B`"]
2470    #[doc = "* **Group:** GetPName"]
2471    #[doc = "* **Alias Of:** `MAX_VARYING_FLOATS`"]
2472    pub const GL_MAX_VARYING_COMPONENTS: GLenum = 0x8B4B;
2473    #[doc = "`GL_MAX_VARYING_FLOATS: GLenum = 0x8B4B`"]
2474    #[doc = "* **Group:** GetPName"]
2475    pub const GL_MAX_VARYING_FLOATS: GLenum = 0x8B4B;
2476    #[doc = "`GL_MAX_VARYING_VECTORS: GLenum = 0x8DFC`"]
2477    #[doc = "* **Group:** GetPName"]
2478    pub const GL_MAX_VARYING_VECTORS: GLenum = 0x8DFC;
2479    #[doc = "`GL_MAX_VERTEX_ATOMIC_COUNTERS: GLenum = 0x92D2`"]
2480    #[doc = "* **Group:** GetPName"]
2481    pub const GL_MAX_VERTEX_ATOMIC_COUNTERS: GLenum = 0x92D2;
2482    #[doc = "`GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CC`"]
2483    pub const GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CC;
2484    #[doc = "`GL_MAX_VERTEX_ATTRIBS: GLenum = 0x8869`"]
2485    #[doc = "* **Group:** GetPName"]
2486    pub const GL_MAX_VERTEX_ATTRIBS: GLenum = 0x8869;
2487    #[doc = "`GL_MAX_VERTEX_ATTRIB_BINDINGS: GLenum = 0x82DA`"]
2488    #[doc = "* **Group:** GetPName"]
2489    pub const GL_MAX_VERTEX_ATTRIB_BINDINGS: GLenum = 0x82DA;
2490    #[doc = "`GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D9`"]
2491    #[doc = "* **Group:** GetPName"]
2492    pub const GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D9;
2493    #[doc = "`GL_MAX_VERTEX_ATTRIB_STRIDE: GLenum = 0x82E5`"]
2494    pub const GL_MAX_VERTEX_ATTRIB_STRIDE: GLenum = 0x82E5;
2495    #[doc = "`GL_MAX_VERTEX_IMAGE_UNIFORMS: GLenum = 0x90CA`"]
2496    pub const GL_MAX_VERTEX_IMAGE_UNIFORMS: GLenum = 0x90CA;
2497    #[doc = "`GL_MAX_VERTEX_OUTPUT_COMPONENTS: GLenum = 0x9122`"]
2498    #[doc = "* **Group:** GetPName"]
2499    pub const GL_MAX_VERTEX_OUTPUT_COMPONENTS: GLenum = 0x9122;
2500    #[doc = "`GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: GLenum = 0x90D6`"]
2501    #[doc = "* **Group:** GetPName"]
2502    pub const GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: GLenum = 0x90D6;
2503    #[doc = "`GL_MAX_VERTEX_STREAMS: GLenum = 0x8E71`"]
2504    pub const GL_MAX_VERTEX_STREAMS: GLenum = 0x8E71;
2505    #[doc = "`GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4C`"]
2506    #[doc = "* **Group:** GetPName"]
2507    pub const GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4C;
2508    #[doc = "`GL_MAX_VERTEX_UNIFORM_BLOCKS: GLenum = 0x8A2B`"]
2509    #[doc = "* **Group:** GetPName"]
2510    pub const GL_MAX_VERTEX_UNIFORM_BLOCKS: GLenum = 0x8A2B;
2511    #[doc = "`GL_MAX_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8B4A`"]
2512    #[doc = "* **Group:** GetPName"]
2513    pub const GL_MAX_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8B4A;
2514    #[doc = "`GL_MAX_VERTEX_UNIFORM_VECTORS: GLenum = 0x8DFB`"]
2515    #[doc = "* **Group:** GetPName"]
2516    pub const GL_MAX_VERTEX_UNIFORM_VECTORS: GLenum = 0x8DFB;
2517    #[doc = "`GL_MAX_VIEWPORTS: GLenum = 0x825B`"]
2518    #[doc = "* **Group:** GetPName"]
2519    pub const GL_MAX_VIEWPORTS: GLenum = 0x825B;
2520    #[doc = "`GL_MAX_VIEWPORT_DIMS: GLenum = 0x0D3A`"]
2521    #[doc = "* **Group:** GetPName"]
2522    pub const GL_MAX_VIEWPORT_DIMS: GLenum = 0x0D3A;
2523    #[doc = "`GL_MAX_WIDTH: GLenum = 0x827E`"]
2524    #[doc = "* **Group:** InternalFormatPName"]
2525    pub const GL_MAX_WIDTH: GLenum = 0x827E;
2526    #[doc = "`GL_MEDIUM_FLOAT: GLenum = 0x8DF1`"]
2527    #[doc = "* **Group:** PrecisionType"]
2528    pub const GL_MEDIUM_FLOAT: GLenum = 0x8DF1;
2529    #[doc = "`GL_MEDIUM_INT: GLenum = 0x8DF4`"]
2530    #[doc = "* **Group:** PrecisionType"]
2531    pub const GL_MEDIUM_INT: GLenum = 0x8DF4;
2532    #[doc = "`GL_MIN: GLenum = 0x8007`"]
2533    #[doc = "* **Group:** BlendEquationModeEXT"]
2534    pub const GL_MIN: GLenum = 0x8007;
2535    #[doc = "`GL_MINOR_VERSION: GLenum = 0x821C`"]
2536    #[doc = "* **Group:** GetPName"]
2537    pub const GL_MINOR_VERSION: GLenum = 0x821C;
2538    #[doc = "`GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5B`"]
2539    pub const GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5B;
2540    #[doc = "`GL_MIN_MAP_BUFFER_ALIGNMENT: GLenum = 0x90BC`"]
2541    #[doc = "* **Group:** GetPName"]
2542    pub const GL_MIN_MAP_BUFFER_ALIGNMENT: GLenum = 0x90BC;
2543    #[doc = "`GL_MIN_PROGRAM_TEXEL_OFFSET: GLenum = 0x8904`"]
2544    #[doc = "* **Group:** GetPName"]
2545    pub const GL_MIN_PROGRAM_TEXEL_OFFSET: GLenum = 0x8904;
2546    #[doc = "`GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5E`"]
2547    pub const GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5E;
2548    #[doc = "`GL_MIN_SAMPLE_SHADING_VALUE: GLenum = 0x8C37`"]
2549    pub const GL_MIN_SAMPLE_SHADING_VALUE: GLenum = 0x8C37;
2550    #[doc = "`GL_MIPMAP: GLenum = 0x8293`"]
2551    #[doc = "* **Group:** InternalFormatPName"]
2552    pub const GL_MIPMAP: GLenum = 0x8293;
2553    #[doc = "`GL_MIRRORED_REPEAT: GLenum = 0x8370`"]
2554    #[doc = "* **Group:** TextureWrapMode"]
2555    pub const GL_MIRRORED_REPEAT: GLenum = 0x8370;
2556    #[doc = "`GL_MIRROR_CLAMP_TO_EDGE: GLenum = 0x8743`"]
2557    pub const GL_MIRROR_CLAMP_TO_EDGE: GLenum = 0x8743;
2558    #[doc = "`GL_MULTIPLY: GLenum = 0x9294`"]
2559    pub const GL_MULTIPLY: GLenum = 0x9294;
2560    #[doc = "`GL_MULTISAMPLE: GLenum = 0x809D`"]
2561    #[doc = "* **Group:** EnableCap"]
2562    pub const GL_MULTISAMPLE: GLenum = 0x809D;
2563    #[doc = "`GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY: GLenum = 0x9382`"]
2564    pub const GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY: GLenum = 0x9382;
2565    #[doc = "`GL_MULTISAMPLE_LINE_WIDTH_RANGE: GLenum = 0x9381`"]
2566    pub const GL_MULTISAMPLE_LINE_WIDTH_RANGE: GLenum = 0x9381;
2567    #[doc = "`GL_NAME_LENGTH: GLenum = 0x92F9`"]
2568    #[doc = "* **Group:** ProgramResourceProperty"]
2569    pub const GL_NAME_LENGTH: GLenum = 0x92F9;
2570    #[doc = "`GL_NAND: GLenum = 0x150E`"]
2571    #[doc = "* **Group:** LogicOp"]
2572    pub const GL_NAND: GLenum = 0x150E;
2573    #[doc = "`GL_NEAREST: GLenum = 0x2600`"]
2574    #[doc = "* **Groups:** BlitFramebufferFilter, TextureMagFilter, TextureMinFilter"]
2575    pub const GL_NEAREST: GLenum = 0x2600;
2576    #[doc = "`GL_NEAREST_MIPMAP_LINEAR: GLenum = 0x2702`"]
2577    #[doc = "* **Group:** TextureMinFilter"]
2578    pub const GL_NEAREST_MIPMAP_LINEAR: GLenum = 0x2702;
2579    #[doc = "`GL_NEAREST_MIPMAP_NEAREST: GLenum = 0x2700`"]
2580    #[doc = "* **Group:** TextureMinFilter"]
2581    pub const GL_NEAREST_MIPMAP_NEAREST: GLenum = 0x2700;
2582    #[doc = "`GL_NEGATIVE_ONE_TO_ONE: GLenum = 0x935E`"]
2583    #[doc = "* **Group:** ClipControlDepth"]
2584    pub const GL_NEGATIVE_ONE_TO_ONE: GLenum = 0x935E;
2585    #[doc = "`GL_NEVER: GLenum = 0x0200`"]
2586    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
2587    pub const GL_NEVER: GLenum = 0x0200;
2588    #[doc = "`GL_NICEST: GLenum = 0x1102`"]
2589    #[doc = "* **Group:** HintMode"]
2590    pub const GL_NICEST: GLenum = 0x1102;
2591    #[doc = "`GL_NONE: GLenum = 0`"]
2592    #[doc = "* **Groups:** SyncBehaviorFlags, TextureCompareMode, PathColorFormat, CombinerBiasNV, CombinerScaleNV, DrawBufferMode, PixelTexGenMode, ReadBufferMode, ColorBuffer, PathGenMode, PathTransformType, PathFontStyle"]
2593    pub const GL_NONE: GLenum = 0;
2594    #[doc = "`GL_NOOP: GLenum = 0x1505`"]
2595    #[doc = "* **Group:** LogicOp"]
2596    pub const GL_NOOP: GLenum = 0x1505;
2597    #[doc = "`GL_NOR: GLenum = 0x1508`"]
2598    #[doc = "* **Group:** LogicOp"]
2599    pub const GL_NOR: GLenum = 0x1508;
2600    #[doc = "`GL_NOTEQUAL: GLenum = 0x0205`"]
2601    #[doc = "* **Groups:** StencilFunction, IndexFunctionEXT, AlphaFunction, DepthFunction"]
2602    pub const GL_NOTEQUAL: GLenum = 0x0205;
2603    #[doc = "`GL_NO_ERROR: GLenum = 0`"]
2604    #[doc = "* **Groups:** GraphicsResetStatus, ErrorCode"]
2605    pub const GL_NO_ERROR: GLenum = 0;
2606    #[doc = "`GL_NO_RESET_NOTIFICATION: GLenum = 0x8261`"]
2607    pub const GL_NO_RESET_NOTIFICATION: GLenum = 0x8261;
2608    #[doc = "`GL_NUM_ACTIVE_VARIABLES: GLenum = 0x9304`"]
2609    #[doc = "* **Group:** ProgramResourceProperty"]
2610    pub const GL_NUM_ACTIVE_VARIABLES: GLenum = 0x9304;
2611    #[doc = "`GL_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4A`"]
2612    #[doc = "* **Groups:** ProgramResourceProperty, SubroutineParameterName"]
2613    pub const GL_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4A;
2614    #[doc = "`GL_NUM_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A2`"]
2615    #[doc = "* **Group:** GetPName"]
2616    pub const GL_NUM_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A2;
2617    #[doc = "`GL_NUM_EXTENSIONS: GLenum = 0x821D`"]
2618    #[doc = "* **Group:** GetPName"]
2619    pub const GL_NUM_EXTENSIONS: GLenum = 0x821D;
2620    #[doc = "`GL_NUM_PROGRAM_BINARY_FORMATS: GLenum = 0x87FE`"]
2621    #[doc = "* **Group:** GetPName"]
2622    pub const GL_NUM_PROGRAM_BINARY_FORMATS: GLenum = 0x87FE;
2623    #[doc = "`GL_NUM_SAMPLE_COUNTS: GLenum = 0x9380`"]
2624    #[doc = "* **Group:** InternalFormatPName"]
2625    pub const GL_NUM_SAMPLE_COUNTS: GLenum = 0x9380;
2626    #[doc = "`GL_NUM_SHADER_BINARY_FORMATS: GLenum = 0x8DF9`"]
2627    #[doc = "* **Group:** GetPName"]
2628    pub const GL_NUM_SHADER_BINARY_FORMATS: GLenum = 0x8DF9;
2629    #[doc = "`GL_NUM_SHADING_LANGUAGE_VERSIONS: GLenum = 0x82E9`"]
2630    pub const GL_NUM_SHADING_LANGUAGE_VERSIONS: GLenum = 0x82E9;
2631    #[doc = "`GL_NUM_SPIR_V_EXTENSIONS: GLenum = 0x9554`"]
2632    pub const GL_NUM_SPIR_V_EXTENSIONS: GLenum = 0x9554;
2633    #[doc = "`GL_OBJECT_TYPE: GLenum = 0x9112`"]
2634    #[doc = "* **Group:** SyncParameterName"]
2635    pub const GL_OBJECT_TYPE: GLenum = 0x9112;
2636    #[doc = "`GL_OFFSET: GLenum = 0x92FC`"]
2637    #[doc = "* **Group:** ProgramResourceProperty"]
2638    pub const GL_OFFSET: GLenum = 0x92FC;
2639    #[doc = "`GL_ONE: GLenum = 1`"]
2640    #[doc = "* **Groups:** TextureSwizzle, BlendingFactor"]
2641    pub const GL_ONE: GLenum = 1;
2642    #[doc = "`GL_ONE_MINUS_CONSTANT_ALPHA: GLenum = 0x8004`"]
2643    #[doc = "* **Group:** BlendingFactor"]
2644    pub const GL_ONE_MINUS_CONSTANT_ALPHA: GLenum = 0x8004;
2645    #[doc = "`GL_ONE_MINUS_CONSTANT_COLOR: GLenum = 0x8002`"]
2646    #[doc = "* **Group:** BlendingFactor"]
2647    pub const GL_ONE_MINUS_CONSTANT_COLOR: GLenum = 0x8002;
2648    #[doc = "`GL_ONE_MINUS_DST_ALPHA: GLenum = 0x0305`"]
2649    #[doc = "* **Group:** BlendingFactor"]
2650    pub const GL_ONE_MINUS_DST_ALPHA: GLenum = 0x0305;
2651    #[doc = "`GL_ONE_MINUS_DST_COLOR: GLenum = 0x0307`"]
2652    #[doc = "* **Group:** BlendingFactor"]
2653    pub const GL_ONE_MINUS_DST_COLOR: GLenum = 0x0307;
2654    #[doc = "`GL_ONE_MINUS_SRC1_ALPHA: GLenum = 0x88FB`"]
2655    #[doc = "* **Group:** BlendingFactor"]
2656    pub const GL_ONE_MINUS_SRC1_ALPHA: GLenum = 0x88FB;
2657    #[doc = "`GL_ONE_MINUS_SRC1_COLOR: GLenum = 0x88FA`"]
2658    #[doc = "* **Group:** BlendingFactor"]
2659    pub const GL_ONE_MINUS_SRC1_COLOR: GLenum = 0x88FA;
2660    #[doc = "`GL_ONE_MINUS_SRC_ALPHA: GLenum = 0x0303`"]
2661    #[doc = "* **Group:** BlendingFactor"]
2662    pub const GL_ONE_MINUS_SRC_ALPHA: GLenum = 0x0303;
2663    #[doc = "`GL_ONE_MINUS_SRC_COLOR: GLenum = 0x0301`"]
2664    #[doc = "* **Group:** BlendingFactor"]
2665    pub const GL_ONE_MINUS_SRC_COLOR: GLenum = 0x0301;
2666    #[doc = "`GL_OR: GLenum = 0x1507`"]
2667    #[doc = "* **Group:** LogicOp"]
2668    pub const GL_OR: GLenum = 0x1507;
2669    #[doc = "`GL_OR_INVERTED: GLenum = 0x150D`"]
2670    #[doc = "* **Group:** LogicOp"]
2671    pub const GL_OR_INVERTED: GLenum = 0x150D;
2672    #[doc = "`GL_OR_REVERSE: GLenum = 0x150B`"]
2673    #[doc = "* **Group:** LogicOp"]
2674    pub const GL_OR_REVERSE: GLenum = 0x150B;
2675    #[doc = "`GL_OUT_OF_MEMORY: GLenum = 0x0505`"]
2676    #[doc = "* **Group:** ErrorCode"]
2677    pub const GL_OUT_OF_MEMORY: GLenum = 0x0505;
2678    #[doc = "`GL_OVERLAY: GLenum = 0x9296`"]
2679    pub const GL_OVERLAY: GLenum = 0x9296;
2680    #[doc = "`GL_PACK_ALIGNMENT: GLenum = 0x0D05`"]
2681    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2682    pub const GL_PACK_ALIGNMENT: GLenum = 0x0D05;
2683    #[doc = "`GL_PACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x912D`"]
2684    pub const GL_PACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x912D;
2685    #[doc = "`GL_PACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x912C`"]
2686    pub const GL_PACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x912C;
2687    #[doc = "`GL_PACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912E`"]
2688    pub const GL_PACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912E;
2689    #[doc = "`GL_PACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x912B`"]
2690    pub const GL_PACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x912B;
2691    #[doc = "`GL_PACK_IMAGE_HEIGHT: GLenum = 0x806C`"]
2692    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2693    pub const GL_PACK_IMAGE_HEIGHT: GLenum = 0x806C;
2694    #[doc = "`GL_PACK_LSB_FIRST: GLenum = 0x0D01`"]
2695    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2696    pub const GL_PACK_LSB_FIRST: GLenum = 0x0D01;
2697    #[doc = "`GL_PACK_ROW_LENGTH: GLenum = 0x0D02`"]
2698    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2699    pub const GL_PACK_ROW_LENGTH: GLenum = 0x0D02;
2700    #[doc = "`GL_PACK_SKIP_IMAGES: GLenum = 0x806B`"]
2701    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2702    pub const GL_PACK_SKIP_IMAGES: GLenum = 0x806B;
2703    #[doc = "`GL_PACK_SKIP_PIXELS: GLenum = 0x0D04`"]
2704    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2705    pub const GL_PACK_SKIP_PIXELS: GLenum = 0x0D04;
2706    #[doc = "`GL_PACK_SKIP_ROWS: GLenum = 0x0D03`"]
2707    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2708    pub const GL_PACK_SKIP_ROWS: GLenum = 0x0D03;
2709    #[doc = "`GL_PACK_SWAP_BYTES: GLenum = 0x0D00`"]
2710    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
2711    pub const GL_PACK_SWAP_BYTES: GLenum = 0x0D00;
2712    #[doc = "`GL_PARAMETER_BUFFER: GLenum = 0x80EE`"]
2713    #[doc = "* **Group:** BufferTargetARB"]
2714    pub const GL_PARAMETER_BUFFER: GLenum = 0x80EE;
2715    #[doc = "`GL_PARAMETER_BUFFER_BINDING: GLenum = 0x80EF`"]
2716    pub const GL_PARAMETER_BUFFER_BINDING: GLenum = 0x80EF;
2717    #[doc = "`GL_PATCHES: GLenum = 0x000E`"]
2718    #[doc = "* **Group:** PrimitiveType"]
2719    pub const GL_PATCHES: GLenum = 0x000E;
2720    #[doc = "`GL_PATCH_DEFAULT_INNER_LEVEL: GLenum = 0x8E73`"]
2721    #[doc = "* **Group:** PatchParameterName"]
2722    pub const GL_PATCH_DEFAULT_INNER_LEVEL: GLenum = 0x8E73;
2723    #[doc = "`GL_PATCH_DEFAULT_OUTER_LEVEL: GLenum = 0x8E74`"]
2724    #[doc = "* **Group:** PatchParameterName"]
2725    pub const GL_PATCH_DEFAULT_OUTER_LEVEL: GLenum = 0x8E74;
2726    #[doc = "`GL_PATCH_VERTICES: GLenum = 0x8E72`"]
2727    #[doc = "* **Group:** PatchParameterName"]
2728    pub const GL_PATCH_VERTICES: GLenum = 0x8E72;
2729    #[doc = "`GL_PIXEL_BUFFER_BARRIER_BIT: GLbitfield = 0x00000080`"]
2730    #[doc = "* **Group:** MemoryBarrierMask"]
2731    pub const GL_PIXEL_BUFFER_BARRIER_BIT: GLbitfield = 0x00000080;
2732    #[doc = "`GL_PIXEL_PACK_BUFFER: GLenum = 0x88EB`"]
2733    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
2734    pub const GL_PIXEL_PACK_BUFFER: GLenum = 0x88EB;
2735    #[doc = "`GL_PIXEL_PACK_BUFFER_BINDING: GLenum = 0x88ED`"]
2736    #[doc = "* **Group:** GetPName"]
2737    pub const GL_PIXEL_PACK_BUFFER_BINDING: GLenum = 0x88ED;
2738    #[doc = "`GL_PIXEL_UNPACK_BUFFER: GLenum = 0x88EC`"]
2739    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
2740    pub const GL_PIXEL_UNPACK_BUFFER: GLenum = 0x88EC;
2741    #[doc = "`GL_PIXEL_UNPACK_BUFFER_BINDING: GLenum = 0x88EF`"]
2742    #[doc = "* **Group:** GetPName"]
2743    pub const GL_PIXEL_UNPACK_BUFFER_BINDING: GLenum = 0x88EF;
2744    #[doc = "`GL_POINT: GLenum = 0x1B00`"]
2745    #[doc = "* **Groups:** PolygonMode, MeshMode1, MeshMode2"]
2746    pub const GL_POINT: GLenum = 0x1B00;
2747    #[doc = "`GL_POINTS: GLenum = 0x0000`"]
2748    #[doc = "* **Group:** PrimitiveType"]
2749    pub const GL_POINTS: GLenum = 0x0000;
2750    #[doc = "`GL_POINT_FADE_THRESHOLD_SIZE: GLenum = 0x8128`"]
2751    #[doc = "* **Groups:** PointParameterNameSGIS, PointParameterNameARB, GetPName"]
2752    pub const GL_POINT_FADE_THRESHOLD_SIZE: GLenum = 0x8128;
2753    #[doc = "`GL_POINT_SIZE: GLenum = 0x0B11`"]
2754    #[doc = "* **Group:** GetPName"]
2755    pub const GL_POINT_SIZE: GLenum = 0x0B11;
2756    #[doc = "`GL_POINT_SIZE_GRANULARITY: GLenum = 0x0B13`"]
2757    #[doc = "* **Group:** GetPName"]
2758    pub const GL_POINT_SIZE_GRANULARITY: GLenum = 0x0B13;
2759    #[doc = "`GL_POINT_SIZE_RANGE: GLenum = 0x0B12`"]
2760    #[doc = "* **Group:** GetPName"]
2761    pub const GL_POINT_SIZE_RANGE: GLenum = 0x0B12;
2762    #[doc = "`GL_POINT_SPRITE_COORD_ORIGIN: GLenum = 0x8CA0`"]
2763    pub const GL_POINT_SPRITE_COORD_ORIGIN: GLenum = 0x8CA0;
2764    #[doc = "`GL_POLYGON_MODE: GLenum = 0x0B40`"]
2765    #[doc = "* **Group:** GetPName"]
2766    pub const GL_POLYGON_MODE: GLenum = 0x0B40;
2767    #[doc = "`GL_POLYGON_OFFSET_CLAMP: GLenum = 0x8E1B`"]
2768    pub const GL_POLYGON_OFFSET_CLAMP: GLenum = 0x8E1B;
2769    #[doc = "`GL_POLYGON_OFFSET_FACTOR: GLenum = 0x8038`"]
2770    #[doc = "* **Group:** GetPName"]
2771    pub const GL_POLYGON_OFFSET_FACTOR: GLenum = 0x8038;
2772    #[doc = "`GL_POLYGON_OFFSET_FILL: GLenum = 0x8037`"]
2773    #[doc = "* **Groups:** GetPName, EnableCap"]
2774    pub const GL_POLYGON_OFFSET_FILL: GLenum = 0x8037;
2775    #[doc = "`GL_POLYGON_OFFSET_LINE: GLenum = 0x2A02`"]
2776    #[doc = "* **Groups:** GetPName, EnableCap"]
2777    pub const GL_POLYGON_OFFSET_LINE: GLenum = 0x2A02;
2778    #[doc = "`GL_POLYGON_OFFSET_POINT: GLenum = 0x2A01`"]
2779    #[doc = "* **Groups:** GetPName, EnableCap"]
2780    pub const GL_POLYGON_OFFSET_POINT: GLenum = 0x2A01;
2781    #[doc = "`GL_POLYGON_OFFSET_UNITS: GLenum = 0x2A00`"]
2782    #[doc = "* **Group:** GetPName"]
2783    pub const GL_POLYGON_OFFSET_UNITS: GLenum = 0x2A00;
2784    #[doc = "`GL_POLYGON_SMOOTH: GLenum = 0x0B41`"]
2785    #[doc = "* **Groups:** GetPName, EnableCap"]
2786    pub const GL_POLYGON_SMOOTH: GLenum = 0x0B41;
2787    #[doc = "`GL_POLYGON_SMOOTH_HINT: GLenum = 0x0C53`"]
2788    #[doc = "* **Groups:** HintTarget, GetPName"]
2789    pub const GL_POLYGON_SMOOTH_HINT: GLenum = 0x0C53;
2790    #[doc = "`GL_PRIMITIVES_GENERATED: GLenum = 0x8C87`"]
2791    #[doc = "* **Group:** QueryTarget"]
2792    pub const GL_PRIMITIVES_GENERATED: GLenum = 0x8C87;
2793    #[doc = "`GL_PRIMITIVES_SUBMITTED: GLenum = 0x82EF`"]
2794    #[doc = "* **Group:** QueryTarget"]
2795    pub const GL_PRIMITIVES_SUBMITTED: GLenum = 0x82EF;
2796    #[doc = "`GL_PRIMITIVE_BOUNDING_BOX: GLenum = 0x92BE`"]
2797    pub const GL_PRIMITIVE_BOUNDING_BOX: GLenum = 0x92BE;
2798    #[doc = "`GL_PRIMITIVE_RESTART: GLenum = 0x8F9D`"]
2799    #[doc = "* **Group:** EnableCap"]
2800    pub const GL_PRIMITIVE_RESTART: GLenum = 0x8F9D;
2801    #[doc = "`GL_PRIMITIVE_RESTART_FIXED_INDEX: GLenum = 0x8D69`"]
2802    #[doc = "* **Group:** EnableCap"]
2803    pub const GL_PRIMITIVE_RESTART_FIXED_INDEX: GLenum = 0x8D69;
2804    #[doc = "`GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED: GLenum = 0x8221`"]
2805    pub const GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED: GLenum = 0x8221;
2806    #[doc = "`GL_PRIMITIVE_RESTART_INDEX: GLenum = 0x8F9E`"]
2807    #[doc = "* **Group:** GetPName"]
2808    pub const GL_PRIMITIVE_RESTART_INDEX: GLenum = 0x8F9E;
2809    #[doc = "`GL_PROGRAM: GLenum = 0x82E2`"]
2810    #[doc = "* **Group:** ObjectIdentifier"]
2811    pub const GL_PROGRAM: GLenum = 0x82E2;
2812    #[doc = "`GL_PROGRAM_BINARY_FORMATS: GLenum = 0x87FF`"]
2813    #[doc = "* **Group:** GetPName"]
2814    pub const GL_PROGRAM_BINARY_FORMATS: GLenum = 0x87FF;
2815    #[doc = "`GL_PROGRAM_BINARY_LENGTH: GLenum = 0x8741`"]
2816    #[doc = "* **Group:** ProgramPropertyARB"]
2817    pub const GL_PROGRAM_BINARY_LENGTH: GLenum = 0x8741;
2818    #[doc = "`GL_PROGRAM_BINARY_RETRIEVABLE_HINT: GLenum = 0x8257`"]
2819    #[doc = "* **Groups:** ProgramParameterPName, HintTarget"]
2820    pub const GL_PROGRAM_BINARY_RETRIEVABLE_HINT: GLenum = 0x8257;
2821    #[doc = "`GL_PROGRAM_INPUT: GLenum = 0x92E3`"]
2822    #[doc = "* **Group:** ProgramInterface"]
2823    pub const GL_PROGRAM_INPUT: GLenum = 0x92E3;
2824    #[doc = "`GL_PROGRAM_KHR: GLenum = 0x82E2`"]
2825    pub const GL_PROGRAM_KHR: GLenum = 0x82E2;
2826    #[doc = "`GL_PROGRAM_OUTPUT: GLenum = 0x92E4`"]
2827    #[doc = "* **Group:** ProgramInterface"]
2828    pub const GL_PROGRAM_OUTPUT: GLenum = 0x92E4;
2829    #[doc = "`GL_PROGRAM_PIPELINE: GLenum = 0x82E4`"]
2830    #[doc = "* **Group:** ObjectIdentifier"]
2831    pub const GL_PROGRAM_PIPELINE: GLenum = 0x82E4;
2832    #[doc = "`GL_PROGRAM_PIPELINE_BINDING: GLenum = 0x825A`"]
2833    #[doc = "* **Group:** GetPName"]
2834    pub const GL_PROGRAM_PIPELINE_BINDING: GLenum = 0x825A;
2835    #[doc = "`GL_PROGRAM_PIPELINE_KHR: GLenum = 0x82E4`"]
2836    pub const GL_PROGRAM_PIPELINE_KHR: GLenum = 0x82E4;
2837    #[doc = "`GL_PROGRAM_POINT_SIZE: GLenum = 0x8642`"]
2838    #[doc = "* **Groups:** GetPName, EnableCap"]
2839    #[doc = "* **Alias Of:** `GL_VERTEX_PROGRAM_POINT_SIZE`"]
2840    pub const GL_PROGRAM_POINT_SIZE: GLenum = 0x8642;
2841    #[doc = "`GL_PROGRAM_SEPARABLE: GLenum = 0x8258`"]
2842    #[doc = "* **Group:** ProgramParameterPName"]
2843    pub const GL_PROGRAM_SEPARABLE: GLenum = 0x8258;
2844    #[doc = "`GL_PROVOKING_VERTEX: GLenum = 0x8E4F`"]
2845    #[doc = "* **Group:** GetPName"]
2846    pub const GL_PROVOKING_VERTEX: GLenum = 0x8E4F;
2847    #[doc = "`GL_PROXY_TEXTURE_1D: GLenum = 0x8063`"]
2848    #[doc = "* **Group:** TextureTarget"]
2849    pub const GL_PROXY_TEXTURE_1D: GLenum = 0x8063;
2850    #[doc = "`GL_PROXY_TEXTURE_1D_ARRAY: GLenum = 0x8C19`"]
2851    #[doc = "* **Group:** TextureTarget"]
2852    pub const GL_PROXY_TEXTURE_1D_ARRAY: GLenum = 0x8C19;
2853    #[doc = "`GL_PROXY_TEXTURE_2D: GLenum = 0x8064`"]
2854    #[doc = "* **Group:** TextureTarget"]
2855    pub const GL_PROXY_TEXTURE_2D: GLenum = 0x8064;
2856    #[doc = "`GL_PROXY_TEXTURE_2D_ARRAY: GLenum = 0x8C1B`"]
2857    #[doc = "* **Group:** TextureTarget"]
2858    pub const GL_PROXY_TEXTURE_2D_ARRAY: GLenum = 0x8C1B;
2859    #[doc = "`GL_PROXY_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9101`"]
2860    #[doc = "* **Group:** TextureTarget"]
2861    pub const GL_PROXY_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9101;
2862    #[doc = "`GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9103`"]
2863    #[doc = "* **Group:** TextureTarget"]
2864    pub const GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9103;
2865    #[doc = "`GL_PROXY_TEXTURE_3D: GLenum = 0x8070`"]
2866    #[doc = "* **Group:** TextureTarget"]
2867    pub const GL_PROXY_TEXTURE_3D: GLenum = 0x8070;
2868    #[doc = "`GL_PROXY_TEXTURE_CUBE_MAP: GLenum = 0x851B`"]
2869    #[doc = "* **Group:** TextureTarget"]
2870    pub const GL_PROXY_TEXTURE_CUBE_MAP: GLenum = 0x851B;
2871    #[doc = "`GL_PROXY_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x900B`"]
2872    #[doc = "* **Group:** TextureTarget"]
2873    pub const GL_PROXY_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x900B;
2874    #[doc = "`GL_PROXY_TEXTURE_RECTANGLE: GLenum = 0x84F7`"]
2875    #[doc = "* **Group:** TextureTarget"]
2876    pub const GL_PROXY_TEXTURE_RECTANGLE: GLenum = 0x84F7;
2877    #[doc = "`GL_QUADS: GLenum = 0x0007`"]
2878    #[doc = "* **Group:** PrimitiveType"]
2879    pub const GL_QUADS: GLenum = 0x0007;
2880    #[doc = "`GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: GLenum = 0x8E4C`"]
2881    pub const GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: GLenum = 0x8E4C;
2882    #[doc = "`GL_QUERY: GLenum = 0x82E3`"]
2883    #[doc = "* **Group:** ObjectIdentifier"]
2884    pub const GL_QUERY: GLenum = 0x82E3;
2885    #[doc = "`GL_QUERY_BUFFER: GLenum = 0x9192`"]
2886    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
2887    pub const GL_QUERY_BUFFER: GLenum = 0x9192;
2888    #[doc = "`GL_QUERY_BUFFER_BARRIER_BIT: GLbitfield = 0x00008000`"]
2889    #[doc = "* **Group:** MemoryBarrierMask"]
2890    pub const GL_QUERY_BUFFER_BARRIER_BIT: GLbitfield = 0x00008000;
2891    #[doc = "`GL_QUERY_BUFFER_BINDING: GLenum = 0x9193`"]
2892    pub const GL_QUERY_BUFFER_BINDING: GLenum = 0x9193;
2893    #[doc = "`GL_QUERY_BY_REGION_NO_WAIT: GLenum = 0x8E16`"]
2894    #[doc = "* **Group:** ConditionalRenderMode"]
2895    pub const GL_QUERY_BY_REGION_NO_WAIT: GLenum = 0x8E16;
2896    #[doc = "`GL_QUERY_BY_REGION_NO_WAIT_INVERTED: GLenum = 0x8E1A`"]
2897    #[doc = "* **Group:** ConditionalRenderMode"]
2898    pub const GL_QUERY_BY_REGION_NO_WAIT_INVERTED: GLenum = 0x8E1A;
2899    #[doc = "`GL_QUERY_BY_REGION_WAIT: GLenum = 0x8E15`"]
2900    #[doc = "* **Group:** ConditionalRenderMode"]
2901    pub const GL_QUERY_BY_REGION_WAIT: GLenum = 0x8E15;
2902    #[doc = "`GL_QUERY_BY_REGION_WAIT_INVERTED: GLenum = 0x8E19`"]
2903    #[doc = "* **Group:** ConditionalRenderMode"]
2904    pub const GL_QUERY_BY_REGION_WAIT_INVERTED: GLenum = 0x8E19;
2905    #[doc = "`GL_QUERY_COUNTER_BITS: GLenum = 0x8864`"]
2906    #[doc = "* **Group:** QueryParameterName"]
2907    pub const GL_QUERY_COUNTER_BITS: GLenum = 0x8864;
2908    #[doc = "`GL_QUERY_COUNTER_BITS_EXT: GLenum = 0x8864`"]
2909    pub const GL_QUERY_COUNTER_BITS_EXT: GLenum = 0x8864;
2910    #[doc = "`GL_QUERY_KHR: GLenum = 0x82E3`"]
2911    pub const GL_QUERY_KHR: GLenum = 0x82E3;
2912    #[doc = "`GL_QUERY_NO_WAIT: GLenum = 0x8E14`"]
2913    #[doc = "* **Group:** ConditionalRenderMode"]
2914    pub const GL_QUERY_NO_WAIT: GLenum = 0x8E14;
2915    #[doc = "`GL_QUERY_NO_WAIT_INVERTED: GLenum = 0x8E18`"]
2916    #[doc = "* **Group:** ConditionalRenderMode"]
2917    pub const GL_QUERY_NO_WAIT_INVERTED: GLenum = 0x8E18;
2918    #[doc = "`GL_QUERY_RESULT: GLenum = 0x8866`"]
2919    #[doc = "* **Group:** QueryObjectParameterName"]
2920    pub const GL_QUERY_RESULT: GLenum = 0x8866;
2921    #[doc = "`GL_QUERY_RESULT_AVAILABLE: GLenum = 0x8867`"]
2922    #[doc = "* **Group:** QueryObjectParameterName"]
2923    pub const GL_QUERY_RESULT_AVAILABLE: GLenum = 0x8867;
2924    #[doc = "`GL_QUERY_RESULT_AVAILABLE_EXT: GLenum = 0x8867`"]
2925    pub const GL_QUERY_RESULT_AVAILABLE_EXT: GLenum = 0x8867;
2926    #[doc = "`GL_QUERY_RESULT_EXT: GLenum = 0x8866`"]
2927    pub const GL_QUERY_RESULT_EXT: GLenum = 0x8866;
2928    #[doc = "`GL_QUERY_RESULT_NO_WAIT: GLenum = 0x9194`"]
2929    #[doc = "* **Group:** QueryObjectParameterName"]
2930    pub const GL_QUERY_RESULT_NO_WAIT: GLenum = 0x9194;
2931    #[doc = "`GL_QUERY_TARGET: GLenum = 0x82EA`"]
2932    #[doc = "* **Group:** QueryObjectParameterName"]
2933    pub const GL_QUERY_TARGET: GLenum = 0x82EA;
2934    #[doc = "`GL_QUERY_WAIT: GLenum = 0x8E13`"]
2935    #[doc = "* **Group:** ConditionalRenderMode"]
2936    pub const GL_QUERY_WAIT: GLenum = 0x8E13;
2937    #[doc = "`GL_QUERY_WAIT_INVERTED: GLenum = 0x8E17`"]
2938    #[doc = "* **Group:** ConditionalRenderMode"]
2939    pub const GL_QUERY_WAIT_INVERTED: GLenum = 0x8E17;
2940    #[doc = "`GL_R11F_G11F_B10F: GLenum = 0x8C3A`"]
2941    #[doc = "* **Group:** InternalFormat"]
2942    pub const GL_R11F_G11F_B10F: GLenum = 0x8C3A;
2943    #[doc = "`GL_R16: GLenum = 0x822A`"]
2944    #[doc = "* **Group:** InternalFormat"]
2945    pub const GL_R16: GLenum = 0x822A;
2946    #[doc = "`GL_R16F: GLenum = 0x822D`"]
2947    #[doc = "* **Group:** InternalFormat"]
2948    pub const GL_R16F: GLenum = 0x822D;
2949    #[doc = "`GL_R16I: GLenum = 0x8233`"]
2950    #[doc = "* **Group:** InternalFormat"]
2951    pub const GL_R16I: GLenum = 0x8233;
2952    #[doc = "`GL_R16UI: GLenum = 0x8234`"]
2953    #[doc = "* **Group:** InternalFormat"]
2954    pub const GL_R16UI: GLenum = 0x8234;
2955    #[doc = "`GL_R16_SNORM: GLenum = 0x8F98`"]
2956    #[doc = "* **Group:** InternalFormat"]
2957    pub const GL_R16_SNORM: GLenum = 0x8F98;
2958    #[doc = "`GL_R32F: GLenum = 0x822E`"]
2959    #[doc = "* **Group:** InternalFormat"]
2960    pub const GL_R32F: GLenum = 0x822E;
2961    #[doc = "`GL_R32I: GLenum = 0x8235`"]
2962    #[doc = "* **Group:** InternalFormat"]
2963    pub const GL_R32I: GLenum = 0x8235;
2964    #[doc = "`GL_R32UI: GLenum = 0x8236`"]
2965    #[doc = "* **Group:** InternalFormat"]
2966    pub const GL_R32UI: GLenum = 0x8236;
2967    #[doc = "`GL_R3_G3_B2: GLenum = 0x2A10`"]
2968    #[doc = "* **Group:** InternalFormat"]
2969    pub const GL_R3_G3_B2: GLenum = 0x2A10;
2970    #[doc = "`GL_R8: GLenum = 0x8229`"]
2971    #[doc = "* **Group:** InternalFormat"]
2972    pub const GL_R8: GLenum = 0x8229;
2973    #[doc = "`GL_R8I: GLenum = 0x8231`"]
2974    #[doc = "* **Group:** InternalFormat"]
2975    pub const GL_R8I: GLenum = 0x8231;
2976    #[doc = "`GL_R8UI: GLenum = 0x8232`"]
2977    #[doc = "* **Group:** InternalFormat"]
2978    pub const GL_R8UI: GLenum = 0x8232;
2979    #[doc = "`GL_R8_SNORM: GLenum = 0x8F94`"]
2980    #[doc = "* **Group:** InternalFormat"]
2981    pub const GL_R8_SNORM: GLenum = 0x8F94;
2982    #[doc = "`GL_RASTERIZER_DISCARD: GLenum = 0x8C89`"]
2983    #[doc = "* **Group:** EnableCap"]
2984    pub const GL_RASTERIZER_DISCARD: GLenum = 0x8C89;
2985    #[doc = "`GL_READ_BUFFER: GLenum = 0x0C02`"]
2986    #[doc = "* **Group:** GetPName"]
2987    pub const GL_READ_BUFFER: GLenum = 0x0C02;
2988    #[doc = "`GL_READ_FRAMEBUFFER: GLenum = 0x8CA8`"]
2989    #[doc = "* **Groups:** CheckFramebufferStatusTarget, FramebufferTarget"]
2990    pub const GL_READ_FRAMEBUFFER: GLenum = 0x8CA8;
2991    #[doc = "`GL_READ_FRAMEBUFFER_BINDING: GLenum = 0x8CAA`"]
2992    #[doc = "* **Group:** GetPName"]
2993    pub const GL_READ_FRAMEBUFFER_BINDING: GLenum = 0x8CAA;
2994    #[doc = "`GL_READ_ONLY: GLenum = 0x88B8`"]
2995    #[doc = "* **Group:** BufferAccessARB"]
2996    pub const GL_READ_ONLY: GLenum = 0x88B8;
2997    #[doc = "`GL_READ_PIXELS: GLenum = 0x828C`"]
2998    #[doc = "* **Group:** InternalFormatPName"]
2999    pub const GL_READ_PIXELS: GLenum = 0x828C;
3000    #[doc = "`GL_READ_PIXELS_FORMAT: GLenum = 0x828D`"]
3001    #[doc = "* **Group:** InternalFormatPName"]
3002    pub const GL_READ_PIXELS_FORMAT: GLenum = 0x828D;
3003    #[doc = "`GL_READ_PIXELS_TYPE: GLenum = 0x828E`"]
3004    #[doc = "* **Group:** InternalFormatPName"]
3005    pub const GL_READ_PIXELS_TYPE: GLenum = 0x828E;
3006    #[doc = "`GL_READ_WRITE: GLenum = 0x88BA`"]
3007    #[doc = "* **Group:** BufferAccessARB"]
3008    pub const GL_READ_WRITE: GLenum = 0x88BA;
3009    #[doc = "`GL_RED: GLenum = 0x1903`"]
3010    #[doc = "* **Groups:** TextureSwizzle, PixelFormat, InternalFormat"]
3011    pub const GL_RED: GLenum = 0x1903;
3012    #[doc = "`GL_RED_BITS: GLenum = 0x0D52`"]
3013    #[doc = "* **Group:** GetPName"]
3014    pub const GL_RED_BITS: GLenum = 0x0D52;
3015    #[doc = "`GL_RED_INTEGER: GLenum = 0x8D94`"]
3016    #[doc = "* **Group:** PixelFormat"]
3017    pub const GL_RED_INTEGER: GLenum = 0x8D94;
3018    #[doc = "`GL_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x930B`"]
3019    #[doc = "* **Group:** ProgramResourceProperty"]
3020    pub const GL_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x930B;
3021    #[doc = "`GL_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x930A`"]
3022    #[doc = "* **Group:** ProgramResourceProperty"]
3023    pub const GL_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x930A;
3024    #[doc = "`GL_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x9309`"]
3025    #[doc = "* **Group:** ProgramResourceProperty"]
3026    pub const GL_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x9309;
3027    #[doc = "`GL_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x9307`"]
3028    #[doc = "* **Group:** ProgramResourceProperty"]
3029    pub const GL_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x9307;
3030    #[doc = "`GL_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x9308`"]
3031    #[doc = "* **Group:** ProgramResourceProperty"]
3032    pub const GL_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x9308;
3033    #[doc = "`GL_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x9306`"]
3034    #[doc = "* **Group:** ProgramResourceProperty"]
3035    pub const GL_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x9306;
3036    #[doc = "`GL_RENDERBUFFER: GLenum = 0x8D41`"]
3037    #[doc = "* **Groups:** ObjectIdentifier, RenderbufferTarget, CopyImageSubDataTarget"]
3038    pub const GL_RENDERBUFFER: GLenum = 0x8D41;
3039    #[doc = "`GL_RENDERBUFFER_ALPHA_SIZE: GLenum = 0x8D53`"]
3040    #[doc = "* **Group:** RenderbufferParameterName"]
3041    pub const GL_RENDERBUFFER_ALPHA_SIZE: GLenum = 0x8D53;
3042    #[doc = "`GL_RENDERBUFFER_BINDING: GLenum = 0x8CA7`"]
3043    #[doc = "* **Group:** GetPName"]
3044    pub const GL_RENDERBUFFER_BINDING: GLenum = 0x8CA7;
3045    #[doc = "`GL_RENDERBUFFER_BLUE_SIZE: GLenum = 0x8D52`"]
3046    #[doc = "* **Group:** RenderbufferParameterName"]
3047    pub const GL_RENDERBUFFER_BLUE_SIZE: GLenum = 0x8D52;
3048    #[doc = "`GL_RENDERBUFFER_DEPTH_SIZE: GLenum = 0x8D54`"]
3049    #[doc = "* **Group:** RenderbufferParameterName"]
3050    pub const GL_RENDERBUFFER_DEPTH_SIZE: GLenum = 0x8D54;
3051    #[doc = "`GL_RENDERBUFFER_GREEN_SIZE: GLenum = 0x8D51`"]
3052    #[doc = "* **Group:** RenderbufferParameterName"]
3053    pub const GL_RENDERBUFFER_GREEN_SIZE: GLenum = 0x8D51;
3054    #[doc = "`GL_RENDERBUFFER_HEIGHT: GLenum = 0x8D43`"]
3055    #[doc = "* **Group:** RenderbufferParameterName"]
3056    pub const GL_RENDERBUFFER_HEIGHT: GLenum = 0x8D43;
3057    #[doc = "`GL_RENDERBUFFER_INTERNAL_FORMAT: GLenum = 0x8D44`"]
3058    #[doc = "* **Group:** RenderbufferParameterName"]
3059    pub const GL_RENDERBUFFER_INTERNAL_FORMAT: GLenum = 0x8D44;
3060    #[doc = "`GL_RENDERBUFFER_RED_SIZE: GLenum = 0x8D50`"]
3061    #[doc = "* **Group:** RenderbufferParameterName"]
3062    pub const GL_RENDERBUFFER_RED_SIZE: GLenum = 0x8D50;
3063    #[doc = "`GL_RENDERBUFFER_SAMPLES: GLenum = 0x8CAB`"]
3064    #[doc = "* **Group:** RenderbufferParameterName"]
3065    pub const GL_RENDERBUFFER_SAMPLES: GLenum = 0x8CAB;
3066    #[doc = "`GL_RENDERBUFFER_SAMPLES_EXT: GLenum = 0x8CAB`"]
3067    #[doc = "* **Group:** RenderbufferParameterName"]
3068    #[cfg_attr(
3069        docs_rs,
3070        doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
3071    )]
3072    pub const GL_RENDERBUFFER_SAMPLES_EXT: GLenum = 0x8CAB;
3073    #[doc = "`GL_RENDERBUFFER_STENCIL_SIZE: GLenum = 0x8D55`"]
3074    #[doc = "* **Group:** RenderbufferParameterName"]
3075    pub const GL_RENDERBUFFER_STENCIL_SIZE: GLenum = 0x8D55;
3076    #[doc = "`GL_RENDERBUFFER_WIDTH: GLenum = 0x8D42`"]
3077    #[doc = "* **Group:** RenderbufferParameterName"]
3078    pub const GL_RENDERBUFFER_WIDTH: GLenum = 0x8D42;
3079    #[doc = "`GL_RENDERER: GLenum = 0x1F01`"]
3080    #[doc = "* **Group:** StringName"]
3081    pub const GL_RENDERER: GLenum = 0x1F01;
3082    #[doc = "`GL_REPEAT: GLenum = 0x2901`"]
3083    #[doc = "* **Group:** TextureWrapMode"]
3084    pub const GL_REPEAT: GLenum = 0x2901;
3085    #[doc = "`GL_REPLACE: GLenum = 0x1E01`"]
3086    #[doc = "* **Groups:** StencilOp, LightEnvModeSGIX"]
3087    pub const GL_REPLACE: GLenum = 0x1E01;
3088    #[doc = "`GL_RESET_NOTIFICATION_STRATEGY: GLenum = 0x8256`"]
3089    pub const GL_RESET_NOTIFICATION_STRATEGY: GLenum = 0x8256;
3090    #[doc = "`GL_RG: GLenum = 0x8227`"]
3091    #[doc = "* **Groups:** InternalFormat, PixelFormat"]
3092    pub const GL_RG: GLenum = 0x8227;
3093    #[doc = "`GL_RG16: GLenum = 0x822C`"]
3094    #[doc = "* **Group:** InternalFormat"]
3095    pub const GL_RG16: GLenum = 0x822C;
3096    #[doc = "`GL_RG16F: GLenum = 0x822F`"]
3097    #[doc = "* **Group:** InternalFormat"]
3098    pub const GL_RG16F: GLenum = 0x822F;
3099    #[doc = "`GL_RG16I: GLenum = 0x8239`"]
3100    #[doc = "* **Group:** InternalFormat"]
3101    pub const GL_RG16I: GLenum = 0x8239;
3102    #[doc = "`GL_RG16UI: GLenum = 0x823A`"]
3103    #[doc = "* **Group:** InternalFormat"]
3104    pub const GL_RG16UI: GLenum = 0x823A;
3105    #[doc = "`GL_RG16_SNORM: GLenum = 0x8F99`"]
3106    #[doc = "* **Group:** InternalFormat"]
3107    pub const GL_RG16_SNORM: GLenum = 0x8F99;
3108    #[doc = "`GL_RG32F: GLenum = 0x8230`"]
3109    #[doc = "* **Group:** InternalFormat"]
3110    pub const GL_RG32F: GLenum = 0x8230;
3111    #[doc = "`GL_RG32I: GLenum = 0x823B`"]
3112    #[doc = "* **Group:** InternalFormat"]
3113    pub const GL_RG32I: GLenum = 0x823B;
3114    #[doc = "`GL_RG32UI: GLenum = 0x823C`"]
3115    #[doc = "* **Group:** InternalFormat"]
3116    pub const GL_RG32UI: GLenum = 0x823C;
3117    #[doc = "`GL_RG8: GLenum = 0x822B`"]
3118    #[doc = "* **Group:** InternalFormat"]
3119    pub const GL_RG8: GLenum = 0x822B;
3120    #[doc = "`GL_RG8I: GLenum = 0x8237`"]
3121    #[doc = "* **Group:** InternalFormat"]
3122    pub const GL_RG8I: GLenum = 0x8237;
3123    #[doc = "`GL_RG8UI: GLenum = 0x8238`"]
3124    #[doc = "* **Group:** InternalFormat"]
3125    pub const GL_RG8UI: GLenum = 0x8238;
3126    #[doc = "`GL_RG8_SNORM: GLenum = 0x8F95`"]
3127    #[doc = "* **Group:** InternalFormat"]
3128    pub const GL_RG8_SNORM: GLenum = 0x8F95;
3129    #[doc = "`GL_RGB: GLenum = 0x1907`"]
3130    #[doc = "* **Groups:** PixelTexGenMode, CombinerPortionNV, PathColorFormat, CombinerComponentUsageNV, PixelFormat, InternalFormat"]
3131    pub const GL_RGB: GLenum = 0x1907;
3132    #[doc = "`GL_RGB10: GLenum = 0x8052`"]
3133    #[doc = "* **Group:** InternalFormat"]
3134    pub const GL_RGB10: GLenum = 0x8052;
3135    #[doc = "`GL_RGB10_A2: GLenum = 0x8059`"]
3136    #[doc = "* **Group:** InternalFormat"]
3137    pub const GL_RGB10_A2: GLenum = 0x8059;
3138    #[doc = "`GL_RGB10_A2UI: GLenum = 0x906F`"]
3139    #[doc = "* **Group:** InternalFormat"]
3140    pub const GL_RGB10_A2UI: GLenum = 0x906F;
3141    #[doc = "`GL_RGB12: GLenum = 0x8053`"]
3142    #[doc = "* **Group:** InternalFormat"]
3143    pub const GL_RGB12: GLenum = 0x8053;
3144    #[doc = "`GL_RGB16: GLenum = 0x8054`"]
3145    #[doc = "* **Group:** InternalFormat"]
3146    pub const GL_RGB16: GLenum = 0x8054;
3147    #[doc = "`GL_RGB16F: GLenum = 0x881B`"]
3148    #[doc = "* **Group:** InternalFormat"]
3149    pub const GL_RGB16F: GLenum = 0x881B;
3150    #[doc = "`GL_RGB16I: GLenum = 0x8D89`"]
3151    #[doc = "* **Group:** InternalFormat"]
3152    pub const GL_RGB16I: GLenum = 0x8D89;
3153    #[doc = "`GL_RGB16UI: GLenum = 0x8D77`"]
3154    #[doc = "* **Group:** InternalFormat"]
3155    pub const GL_RGB16UI: GLenum = 0x8D77;
3156    #[doc = "`GL_RGB16_SNORM: GLenum = 0x8F9A`"]
3157    #[doc = "* **Group:** InternalFormat"]
3158    pub const GL_RGB16_SNORM: GLenum = 0x8F9A;
3159    #[doc = "`GL_RGB32F: GLenum = 0x8815`"]
3160    #[doc = "* **Group:** InternalFormat"]
3161    pub const GL_RGB32F: GLenum = 0x8815;
3162    #[doc = "`GL_RGB32I: GLenum = 0x8D83`"]
3163    #[doc = "* **Group:** InternalFormat"]
3164    pub const GL_RGB32I: GLenum = 0x8D83;
3165    #[doc = "`GL_RGB32UI: GLenum = 0x8D71`"]
3166    #[doc = "* **Group:** InternalFormat"]
3167    pub const GL_RGB32UI: GLenum = 0x8D71;
3168    #[doc = "`GL_RGB4: GLenum = 0x804F`"]
3169    #[doc = "* **Group:** InternalFormat"]
3170    pub const GL_RGB4: GLenum = 0x804F;
3171    #[doc = "`GL_RGB5: GLenum = 0x8050`"]
3172    #[doc = "* **Group:** InternalFormat"]
3173    pub const GL_RGB5: GLenum = 0x8050;
3174    #[doc = "`GL_RGB565: GLenum = 0x8D62`"]
3175    pub const GL_RGB565: GLenum = 0x8D62;
3176    #[doc = "`GL_RGB5_A1: GLenum = 0x8057`"]
3177    #[doc = "* **Group:** InternalFormat"]
3178    pub const GL_RGB5_A1: GLenum = 0x8057;
3179    #[doc = "`GL_RGB8: GLenum = 0x8051`"]
3180    #[doc = "* **Group:** InternalFormat"]
3181    pub const GL_RGB8: GLenum = 0x8051;
3182    #[doc = "`GL_RGB8I: GLenum = 0x8D8F`"]
3183    #[doc = "* **Group:** InternalFormat"]
3184    pub const GL_RGB8I: GLenum = 0x8D8F;
3185    #[doc = "`GL_RGB8UI: GLenum = 0x8D7D`"]
3186    #[doc = "* **Group:** InternalFormat"]
3187    pub const GL_RGB8UI: GLenum = 0x8D7D;
3188    #[doc = "`GL_RGB8_SNORM: GLenum = 0x8F96`"]
3189    #[doc = "* **Group:** InternalFormat"]
3190    pub const GL_RGB8_SNORM: GLenum = 0x8F96;
3191    #[doc = "`GL_RGB9_E5: GLenum = 0x8C3D`"]
3192    #[doc = "* **Group:** InternalFormat"]
3193    pub const GL_RGB9_E5: GLenum = 0x8C3D;
3194    #[doc = "`GL_RGBA: GLenum = 0x1908`"]
3195    #[doc = "* **Groups:** PixelTexGenMode, PathColorFormat, PixelFormat, InternalFormat"]
3196    pub const GL_RGBA: GLenum = 0x1908;
3197    #[doc = "`GL_RGBA12: GLenum = 0x805A`"]
3198    #[doc = "* **Group:** InternalFormat"]
3199    pub const GL_RGBA12: GLenum = 0x805A;
3200    #[doc = "`GL_RGBA16: GLenum = 0x805B`"]
3201    #[doc = "* **Group:** InternalFormat"]
3202    pub const GL_RGBA16: GLenum = 0x805B;
3203    #[doc = "`GL_RGBA16F: GLenum = 0x881A`"]
3204    #[doc = "* **Group:** InternalFormat"]
3205    pub const GL_RGBA16F: GLenum = 0x881A;
3206    #[doc = "`GL_RGBA16I: GLenum = 0x8D88`"]
3207    #[doc = "* **Group:** InternalFormat"]
3208    pub const GL_RGBA16I: GLenum = 0x8D88;
3209    #[doc = "`GL_RGBA16UI: GLenum = 0x8D76`"]
3210    #[doc = "* **Group:** InternalFormat"]
3211    pub const GL_RGBA16UI: GLenum = 0x8D76;
3212    #[doc = "`GL_RGBA16_SNORM: GLenum = 0x8F9B`"]
3213    pub const GL_RGBA16_SNORM: GLenum = 0x8F9B;
3214    #[doc = "`GL_RGBA2: GLenum = 0x8055`"]
3215    pub const GL_RGBA2: GLenum = 0x8055;
3216    #[doc = "`GL_RGBA32F: GLenum = 0x8814`"]
3217    #[doc = "* **Group:** InternalFormat"]
3218    pub const GL_RGBA32F: GLenum = 0x8814;
3219    #[doc = "`GL_RGBA32I: GLenum = 0x8D82`"]
3220    #[doc = "* **Group:** InternalFormat"]
3221    pub const GL_RGBA32I: GLenum = 0x8D82;
3222    #[doc = "`GL_RGBA32UI: GLenum = 0x8D70`"]
3223    #[doc = "* **Group:** InternalFormat"]
3224    pub const GL_RGBA32UI: GLenum = 0x8D70;
3225    #[doc = "`GL_RGBA4: GLenum = 0x8056`"]
3226    #[doc = "* **Group:** InternalFormat"]
3227    pub const GL_RGBA4: GLenum = 0x8056;
3228    #[doc = "`GL_RGBA8: GLenum = 0x8058`"]
3229    #[doc = "* **Group:** InternalFormat"]
3230    pub const GL_RGBA8: GLenum = 0x8058;
3231    #[doc = "`GL_RGBA8I: GLenum = 0x8D8E`"]
3232    #[doc = "* **Group:** InternalFormat"]
3233    pub const GL_RGBA8I: GLenum = 0x8D8E;
3234    #[doc = "`GL_RGBA8UI: GLenum = 0x8D7C`"]
3235    #[doc = "* **Group:** InternalFormat"]
3236    pub const GL_RGBA8UI: GLenum = 0x8D7C;
3237    #[doc = "`GL_RGBA8_SNORM: GLenum = 0x8F97`"]
3238    #[doc = "* **Group:** InternalFormat"]
3239    pub const GL_RGBA8_SNORM: GLenum = 0x8F97;
3240    #[doc = "`GL_RGBA_INTEGER: GLenum = 0x8D99`"]
3241    #[doc = "* **Group:** PixelFormat"]
3242    pub const GL_RGBA_INTEGER: GLenum = 0x8D99;
3243    #[doc = "`GL_RGB_INTEGER: GLenum = 0x8D98`"]
3244    #[doc = "* **Group:** PixelFormat"]
3245    pub const GL_RGB_INTEGER: GLenum = 0x8D98;
3246    #[doc = "`GL_RG_INTEGER: GLenum = 0x8228`"]
3247    #[doc = "* **Group:** PixelFormat"]
3248    pub const GL_RG_INTEGER: GLenum = 0x8228;
3249    #[doc = "`GL_RIGHT: GLenum = 0x0407`"]
3250    #[doc = "* **Groups:** ColorBuffer, DrawBufferMode, ReadBufferMode"]
3251    pub const GL_RIGHT: GLenum = 0x0407;
3252    #[doc = "`GL_SAMPLER: GLenum = 0x82E6`"]
3253    #[doc = "* **Group:** ObjectIdentifier"]
3254    pub const GL_SAMPLER: GLenum = 0x82E6;
3255    #[doc = "`GL_SAMPLER_1D: GLenum = 0x8B5D`"]
3256    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3257    pub const GL_SAMPLER_1D: GLenum = 0x8B5D;
3258    #[doc = "`GL_SAMPLER_1D_ARRAY: GLenum = 0x8DC0`"]
3259    #[doc = "* **Groups:** GlslTypeToken, UniformType"]
3260    pub const GL_SAMPLER_1D_ARRAY: GLenum = 0x8DC0;
3261    #[doc = "`GL_SAMPLER_1D_ARRAY_SHADOW: GLenum = 0x8DC3`"]
3262    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3263    pub const GL_SAMPLER_1D_ARRAY_SHADOW: GLenum = 0x8DC3;
3264    #[doc = "`GL_SAMPLER_1D_SHADOW: GLenum = 0x8B61`"]
3265    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3266    pub const GL_SAMPLER_1D_SHADOW: GLenum = 0x8B61;
3267    #[doc = "`GL_SAMPLER_2D: GLenum = 0x8B5E`"]
3268    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3269    pub const GL_SAMPLER_2D: GLenum = 0x8B5E;
3270    #[doc = "`GL_SAMPLER_2D_ARRAY: GLenum = 0x8DC1`"]
3271    #[doc = "* **Groups:** GlslTypeToken, UniformType"]
3272    pub const GL_SAMPLER_2D_ARRAY: GLenum = 0x8DC1;
3273    #[doc = "`GL_SAMPLER_2D_ARRAY_SHADOW: GLenum = 0x8DC4`"]
3274    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3275    pub const GL_SAMPLER_2D_ARRAY_SHADOW: GLenum = 0x8DC4;
3276    #[doc = "`GL_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9108`"]
3277    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3278    pub const GL_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9108;
3279    #[doc = "`GL_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910B`"]
3280    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3281    pub const GL_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910B;
3282    #[doc = "`GL_SAMPLER_2D_RECT: GLenum = 0x8B63`"]
3283    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3284    pub const GL_SAMPLER_2D_RECT: GLenum = 0x8B63;
3285    #[doc = "`GL_SAMPLER_2D_RECT_SHADOW: GLenum = 0x8B64`"]
3286    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3287    pub const GL_SAMPLER_2D_RECT_SHADOW: GLenum = 0x8B64;
3288    #[doc = "`GL_SAMPLER_2D_SHADOW: GLenum = 0x8B62`"]
3289    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3290    pub const GL_SAMPLER_2D_SHADOW: GLenum = 0x8B62;
3291    #[doc = "`GL_SAMPLER_3D: GLenum = 0x8B5F`"]
3292    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3293    pub const GL_SAMPLER_3D: GLenum = 0x8B5F;
3294    #[doc = "`GL_SAMPLER_BINDING: GLenum = 0x8919`"]
3295    #[doc = "* **Group:** GetPName"]
3296    pub const GL_SAMPLER_BINDING: GLenum = 0x8919;
3297    #[doc = "`GL_SAMPLER_BUFFER: GLenum = 0x8DC2`"]
3298    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3299    pub const GL_SAMPLER_BUFFER: GLenum = 0x8DC2;
3300    #[doc = "`GL_SAMPLER_CUBE: GLenum = 0x8B60`"]
3301    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3302    pub const GL_SAMPLER_CUBE: GLenum = 0x8B60;
3303    #[doc = "`GL_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900C`"]
3304    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3305    pub const GL_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900C;
3306    #[doc = "`GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW: GLenum = 0x900D`"]
3307    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3308    pub const GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW: GLenum = 0x900D;
3309    #[doc = "`GL_SAMPLER_CUBE_SHADOW: GLenum = 0x8DC5`"]
3310    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
3311    pub const GL_SAMPLER_CUBE_SHADOW: GLenum = 0x8DC5;
3312    #[doc = "`GL_SAMPLER_KHR: GLenum = 0x82E6`"]
3313    pub const GL_SAMPLER_KHR: GLenum = 0x82E6;
3314    #[doc = "`GL_SAMPLES: GLenum = 0x80A9`"]
3315    #[doc = "* **Groups:** GetFramebufferParameter, GetPName, InternalFormatPName"]
3316    pub const GL_SAMPLES: GLenum = 0x80A9;
3317    #[doc = "`GL_SAMPLES_PASSED: GLenum = 0x8914`"]
3318    #[doc = "* **Group:** QueryTarget"]
3319    pub const GL_SAMPLES_PASSED: GLenum = 0x8914;
3320    #[doc = "`GL_SAMPLE_ALPHA_TO_COVERAGE: GLenum = 0x809E`"]
3321    #[doc = "* **Group:** EnableCap"]
3322    pub const GL_SAMPLE_ALPHA_TO_COVERAGE: GLenum = 0x809E;
3323    #[doc = "`GL_SAMPLE_ALPHA_TO_ONE: GLenum = 0x809F`"]
3324    #[doc = "* **Group:** EnableCap"]
3325    pub const GL_SAMPLE_ALPHA_TO_ONE: GLenum = 0x809F;
3326    #[doc = "`GL_SAMPLE_BUFFERS: GLenum = 0x80A8`"]
3327    #[doc = "* **Groups:** GetFramebufferParameter, GetPName"]
3328    pub const GL_SAMPLE_BUFFERS: GLenum = 0x80A8;
3329    #[doc = "`GL_SAMPLE_COVERAGE: GLenum = 0x80A0`"]
3330    #[doc = "* **Group:** EnableCap"]
3331    pub const GL_SAMPLE_COVERAGE: GLenum = 0x80A0;
3332    #[doc = "`GL_SAMPLE_COVERAGE_INVERT: GLenum = 0x80AB`"]
3333    #[doc = "* **Group:** GetPName"]
3334    pub const GL_SAMPLE_COVERAGE_INVERT: GLenum = 0x80AB;
3335    #[doc = "`GL_SAMPLE_COVERAGE_VALUE: GLenum = 0x80AA`"]
3336    #[doc = "* **Group:** GetPName"]
3337    pub const GL_SAMPLE_COVERAGE_VALUE: GLenum = 0x80AA;
3338    #[doc = "`GL_SAMPLE_MASK: GLenum = 0x8E51`"]
3339    #[doc = "* **Group:** EnableCap"]
3340    pub const GL_SAMPLE_MASK: GLenum = 0x8E51;
3341    #[doc = "`GL_SAMPLE_MASK_VALUE: GLenum = 0x8E52`"]
3342    pub const GL_SAMPLE_MASK_VALUE: GLenum = 0x8E52;
3343    #[doc = "`GL_SAMPLE_POSITION: GLenum = 0x8E50`"]
3344    #[doc = "* **Group:** GetMultisamplePNameNV"]
3345    pub const GL_SAMPLE_POSITION: GLenum = 0x8E50;
3346    #[doc = "`GL_SAMPLE_SHADING: GLenum = 0x8C36`"]
3347    #[doc = "* **Group:** EnableCap"]
3348    pub const GL_SAMPLE_SHADING: GLenum = 0x8C36;
3349    #[doc = "`GL_SCISSOR_BOX: GLenum = 0x0C10`"]
3350    #[doc = "* **Group:** GetPName"]
3351    pub const GL_SCISSOR_BOX: GLenum = 0x0C10;
3352    #[doc = "`GL_SCISSOR_TEST: GLenum = 0x0C11`"]
3353    #[doc = "* **Groups:** GetPName, EnableCap"]
3354    pub const GL_SCISSOR_TEST: GLenum = 0x0C11;
3355    #[doc = "`GL_SCREEN: GLenum = 0x9295`"]
3356    pub const GL_SCREEN: GLenum = 0x9295;
3357    #[doc = "`GL_SEPARATE_ATTRIBS: GLenum = 0x8C8D`"]
3358    #[doc = "* **Group:** TransformFeedbackBufferMode"]
3359    pub const GL_SEPARATE_ATTRIBS: GLenum = 0x8C8D;
3360    #[doc = "`GL_SET: GLenum = 0x150F`"]
3361    #[doc = "* **Group:** LogicOp"]
3362    pub const GL_SET: GLenum = 0x150F;
3363    #[doc = "`GL_SHADER: GLenum = 0x82E1`"]
3364    #[doc = "* **Group:** ObjectIdentifier"]
3365    pub const GL_SHADER: GLenum = 0x82E1;
3366    #[doc = "`GL_SHADER_BINARY_FORMATS: GLenum = 0x8DF8`"]
3367    pub const GL_SHADER_BINARY_FORMATS: GLenum = 0x8DF8;
3368    #[doc = "`GL_SHADER_BINARY_FORMAT_SPIR_V: GLenum = 0x9551`"]
3369    #[doc = "* **Group:** ShaderBinaryFormat"]
3370    pub const GL_SHADER_BINARY_FORMAT_SPIR_V: GLenum = 0x9551;
3371    #[doc = "`GL_SHADER_COMPILER: GLenum = 0x8DFA`"]
3372    #[doc = "* **Group:** GetPName"]
3373    pub const GL_SHADER_COMPILER: GLenum = 0x8DFA;
3374    #[doc = "`GL_SHADER_IMAGE_ACCESS_BARRIER_BIT: GLbitfield = 0x00000020`"]
3375    #[doc = "* **Group:** MemoryBarrierMask"]
3376    pub const GL_SHADER_IMAGE_ACCESS_BARRIER_BIT: GLbitfield = 0x00000020;
3377    #[doc = "`GL_SHADER_IMAGE_ATOMIC: GLenum = 0x82A6`"]
3378    #[doc = "* **Group:** InternalFormatPName"]
3379    pub const GL_SHADER_IMAGE_ATOMIC: GLenum = 0x82A6;
3380    #[doc = "`GL_SHADER_IMAGE_LOAD: GLenum = 0x82A4`"]
3381    #[doc = "* **Group:** InternalFormatPName"]
3382    pub const GL_SHADER_IMAGE_LOAD: GLenum = 0x82A4;
3383    #[doc = "`GL_SHADER_IMAGE_STORE: GLenum = 0x82A5`"]
3384    #[doc = "* **Group:** InternalFormatPName"]
3385    pub const GL_SHADER_IMAGE_STORE: GLenum = 0x82A5;
3386    #[doc = "`GL_SHADER_KHR: GLenum = 0x82E1`"]
3387    pub const GL_SHADER_KHR: GLenum = 0x82E1;
3388    #[doc = "`GL_SHADER_SOURCE_LENGTH: GLenum = 0x8B88`"]
3389    #[doc = "* **Group:** ShaderParameterName"]
3390    pub const GL_SHADER_SOURCE_LENGTH: GLenum = 0x8B88;
3391    #[doc = "`GL_SHADER_STORAGE_BARRIER_BIT: GLbitfield = 0x00002000`"]
3392    #[doc = "* **Group:** MemoryBarrierMask"]
3393    pub const GL_SHADER_STORAGE_BARRIER_BIT: GLbitfield = 0x00002000;
3394    #[doc = "`GL_SHADER_STORAGE_BLOCK: GLenum = 0x92E6`"]
3395    #[doc = "* **Group:** ProgramInterface"]
3396    pub const GL_SHADER_STORAGE_BLOCK: GLenum = 0x92E6;
3397    #[doc = "`GL_SHADER_STORAGE_BUFFER: GLenum = 0x90D2`"]
3398    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
3399    pub const GL_SHADER_STORAGE_BUFFER: GLenum = 0x90D2;
3400    #[doc = "`GL_SHADER_STORAGE_BUFFER_BINDING: GLenum = 0x90D3`"]
3401    #[doc = "* **Group:** GetPName"]
3402    pub const GL_SHADER_STORAGE_BUFFER_BINDING: GLenum = 0x90D3;
3403    #[doc = "`GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x90DF`"]
3404    #[doc = "* **Group:** GetPName"]
3405    pub const GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x90DF;
3406    #[doc = "`GL_SHADER_STORAGE_BUFFER_SIZE: GLenum = 0x90D5`"]
3407    #[doc = "* **Group:** GetPName"]
3408    pub const GL_SHADER_STORAGE_BUFFER_SIZE: GLenum = 0x90D5;
3409    #[doc = "`GL_SHADER_STORAGE_BUFFER_START: GLenum = 0x90D4`"]
3410    #[doc = "* **Group:** GetPName"]
3411    pub const GL_SHADER_STORAGE_BUFFER_START: GLenum = 0x90D4;
3412    #[doc = "`GL_SHADER_TYPE: GLenum = 0x8B4F`"]
3413    #[doc = "* **Group:** ShaderParameterName"]
3414    pub const GL_SHADER_TYPE: GLenum = 0x8B4F;
3415    #[doc = "`GL_SHADING_LANGUAGE_VERSION: GLenum = 0x8B8C`"]
3416    #[doc = "* **Group:** StringName"]
3417    pub const GL_SHADING_LANGUAGE_VERSION: GLenum = 0x8B8C;
3418    #[doc = "`GL_SHORT: GLenum = 0x1402`"]
3419    #[doc = "* **Groups:** VertexAttribIType, SecondaryColorPointerTypeIBM, WeightPointerTypeARB, TangentPointerTypeEXT, BinormalPointerTypeEXT, IndexPointerType, ListNameType, NormalPointerType, PixelType, TexCoordPointerType, VertexPointerType, VertexAttribType, VertexAttribPointerType"]
3420    pub const GL_SHORT: GLenum = 0x1402;
3421    #[doc = "`GL_SIGNALED: GLenum = 0x9119`"]
3422    pub const GL_SIGNALED: GLenum = 0x9119;
3423    #[doc = "`GL_SIGNED_NORMALIZED: GLenum = 0x8F9C`"]
3424    pub const GL_SIGNED_NORMALIZED: GLenum = 0x8F9C;
3425    #[doc = "`GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST: GLenum = 0x82AC`"]
3426    #[doc = "* **Group:** InternalFormatPName"]
3427    pub const GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST: GLenum = 0x82AC;
3428    #[doc = "`GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE: GLenum = 0x82AE`"]
3429    #[doc = "* **Group:** InternalFormatPName"]
3430    pub const GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE: GLenum = 0x82AE;
3431    #[doc = "`GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST: GLenum = 0x82AD`"]
3432    #[doc = "* **Group:** InternalFormatPName"]
3433    pub const GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST: GLenum = 0x82AD;
3434    #[doc = "`GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE: GLenum = 0x82AF`"]
3435    #[doc = "* **Group:** InternalFormatPName"]
3436    pub const GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE: GLenum = 0x82AF;
3437    #[doc = "`GL_SMOOTH_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23`"]
3438    #[doc = "* **Group:** GetPName"]
3439    #[doc = "* **Alias Of:** `GL_LINE_WIDTH_GRANULARITY`"]
3440    pub const GL_SMOOTH_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23;
3441    #[doc = "`GL_SMOOTH_LINE_WIDTH_RANGE: GLenum = 0x0B22`"]
3442    #[doc = "* **Group:** GetPName"]
3443    #[doc = "* **Alias Of:** `GL_LINE_WIDTH_RANGE`"]
3444    pub const GL_SMOOTH_LINE_WIDTH_RANGE: GLenum = 0x0B22;
3445    #[doc = "`GL_SMOOTH_POINT_SIZE_GRANULARITY: GLenum = 0x0B13`"]
3446    #[doc = "* **Group:** GetPName"]
3447    #[doc = "* **Alias Of:** `GL_POINT_SIZE_GRANULARITY`"]
3448    pub const GL_SMOOTH_POINT_SIZE_GRANULARITY: GLenum = 0x0B13;
3449    #[doc = "`GL_SMOOTH_POINT_SIZE_RANGE: GLenum = 0x0B12`"]
3450    #[doc = "* **Group:** GetPName"]
3451    #[doc = "* **Alias Of:** `GL_POINT_SIZE_RANGE`"]
3452    pub const GL_SMOOTH_POINT_SIZE_RANGE: GLenum = 0x0B12;
3453    #[doc = "`GL_SOFTLIGHT: GLenum = 0x929C`"]
3454    pub const GL_SOFTLIGHT: GLenum = 0x929C;
3455    #[doc = "`GL_SPIR_V_BINARY: GLenum = 0x9552`"]
3456    pub const GL_SPIR_V_BINARY: GLenum = 0x9552;
3457    #[doc = "`GL_SPIR_V_EXTENSIONS: GLenum = 0x9553`"]
3458    pub const GL_SPIR_V_EXTENSIONS: GLenum = 0x9553;
3459    #[doc = "`GL_SRC1_ALPHA: GLenum = 0x8589`"]
3460    #[doc = "* **Group:** BlendingFactor"]
3461    #[doc = "* **Alias Of:** `GL_SOURCE1_ALPHA`"]
3462    pub const GL_SRC1_ALPHA: GLenum = 0x8589;
3463    #[doc = "`GL_SRC1_COLOR: GLenum = 0x88F9`"]
3464    #[doc = "* **Group:** BlendingFactor"]
3465    pub const GL_SRC1_COLOR: GLenum = 0x88F9;
3466    #[doc = "`GL_SRC_ALPHA: GLenum = 0x0302`"]
3467    #[doc = "* **Group:** BlendingFactor"]
3468    pub const GL_SRC_ALPHA: GLenum = 0x0302;
3469    #[doc = "`GL_SRC_ALPHA_SATURATE: GLenum = 0x0308`"]
3470    #[doc = "* **Group:** BlendingFactor"]
3471    pub const GL_SRC_ALPHA_SATURATE: GLenum = 0x0308;
3472    #[doc = "`GL_SRC_COLOR: GLenum = 0x0300`"]
3473    #[doc = "* **Group:** BlendingFactor"]
3474    pub const GL_SRC_COLOR: GLenum = 0x0300;
3475    #[doc = "`GL_SRGB: GLenum = 0x8C40`"]
3476    #[doc = "* **Group:** InternalFormat"]
3477    pub const GL_SRGB: GLenum = 0x8C40;
3478    #[doc = "`GL_SRGB8: GLenum = 0x8C41`"]
3479    #[doc = "* **Group:** InternalFormat"]
3480    pub const GL_SRGB8: GLenum = 0x8C41;
3481    #[doc = "`GL_SRGB8_ALPHA8: GLenum = 0x8C43`"]
3482    #[doc = "* **Group:** InternalFormat"]
3483    pub const GL_SRGB8_ALPHA8: GLenum = 0x8C43;
3484    #[doc = "`GL_SRGB_ALPHA: GLenum = 0x8C42`"]
3485    #[doc = "* **Group:** InternalFormat"]
3486    pub const GL_SRGB_ALPHA: GLenum = 0x8C42;
3487    #[doc = "`GL_SRGB_READ: GLenum = 0x8297`"]
3488    #[doc = "* **Group:** InternalFormatPName"]
3489    pub const GL_SRGB_READ: GLenum = 0x8297;
3490    #[doc = "`GL_SRGB_WRITE: GLenum = 0x8298`"]
3491    #[doc = "* **Group:** InternalFormatPName"]
3492    pub const GL_SRGB_WRITE: GLenum = 0x8298;
3493    #[doc = "`GL_STACK_OVERFLOW: GLenum = 0x0503`"]
3494    #[doc = "* **Group:** ErrorCode"]
3495    pub const GL_STACK_OVERFLOW: GLenum = 0x0503;
3496    #[doc = "`GL_STACK_OVERFLOW_KHR: GLenum = 0x0503`"]
3497    pub const GL_STACK_OVERFLOW_KHR: GLenum = 0x0503;
3498    #[doc = "`GL_STACK_UNDERFLOW: GLenum = 0x0504`"]
3499    #[doc = "* **Group:** ErrorCode"]
3500    pub const GL_STACK_UNDERFLOW: GLenum = 0x0504;
3501    #[doc = "`GL_STACK_UNDERFLOW_KHR: GLenum = 0x0504`"]
3502    pub const GL_STACK_UNDERFLOW_KHR: GLenum = 0x0504;
3503    #[doc = "`GL_STATIC_COPY: GLenum = 0x88E6`"]
3504    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3505    pub const GL_STATIC_COPY: GLenum = 0x88E6;
3506    #[doc = "`GL_STATIC_DRAW: GLenum = 0x88E4`"]
3507    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3508    pub const GL_STATIC_DRAW: GLenum = 0x88E4;
3509    #[doc = "`GL_STATIC_READ: GLenum = 0x88E5`"]
3510    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3511    pub const GL_STATIC_READ: GLenum = 0x88E5;
3512    #[doc = "`GL_STENCIL: GLenum = 0x1802`"]
3513    #[doc = "* **Groups:** Buffer, PixelCopyType, InvalidateFramebufferAttachment"]
3514    pub const GL_STENCIL: GLenum = 0x1802;
3515    #[doc = "`GL_STENCIL_ATTACHMENT: GLenum = 0x8D20`"]
3516    #[doc = "* **Group:** FramebufferAttachment"]
3517    pub const GL_STENCIL_ATTACHMENT: GLenum = 0x8D20;
3518    #[doc = "`GL_STENCIL_BACK_FAIL: GLenum = 0x8801`"]
3519    #[doc = "* **Group:** GetPName"]
3520    pub const GL_STENCIL_BACK_FAIL: GLenum = 0x8801;
3521    #[doc = "`GL_STENCIL_BACK_FUNC: GLenum = 0x8800`"]
3522    #[doc = "* **Group:** GetPName"]
3523    pub const GL_STENCIL_BACK_FUNC: GLenum = 0x8800;
3524    #[doc = "`GL_STENCIL_BACK_PASS_DEPTH_FAIL: GLenum = 0x8802`"]
3525    #[doc = "* **Group:** GetPName"]
3526    pub const GL_STENCIL_BACK_PASS_DEPTH_FAIL: GLenum = 0x8802;
3527    #[doc = "`GL_STENCIL_BACK_PASS_DEPTH_PASS: GLenum = 0x8803`"]
3528    #[doc = "* **Group:** GetPName"]
3529    pub const GL_STENCIL_BACK_PASS_DEPTH_PASS: GLenum = 0x8803;
3530    #[doc = "`GL_STENCIL_BACK_REF: GLenum = 0x8CA3`"]
3531    #[doc = "* **Group:** GetPName"]
3532    pub const GL_STENCIL_BACK_REF: GLenum = 0x8CA3;
3533    #[doc = "`GL_STENCIL_BACK_VALUE_MASK: GLenum = 0x8CA4`"]
3534    #[doc = "* **Group:** GetPName"]
3535    pub const GL_STENCIL_BACK_VALUE_MASK: GLenum = 0x8CA4;
3536    #[doc = "`GL_STENCIL_BACK_WRITEMASK: GLenum = 0x8CA5`"]
3537    #[doc = "* **Group:** GetPName"]
3538    pub const GL_STENCIL_BACK_WRITEMASK: GLenum = 0x8CA5;
3539    #[doc = "`GL_STENCIL_BITS: GLenum = 0x0D57`"]
3540    #[doc = "* **Group:** GetPName"]
3541    pub const GL_STENCIL_BITS: GLenum = 0x0D57;
3542    #[doc = "`GL_STENCIL_BUFFER_BIT: GLbitfield = 0x00000400`"]
3543    #[doc = "* **Groups:** ClearBufferMask, AttribMask"]
3544    pub const GL_STENCIL_BUFFER_BIT: GLbitfield = 0x00000400;
3545    #[doc = "`GL_STENCIL_CLEAR_VALUE: GLenum = 0x0B91`"]
3546    #[doc = "* **Group:** GetPName"]
3547    pub const GL_STENCIL_CLEAR_VALUE: GLenum = 0x0B91;
3548    #[doc = "`GL_STENCIL_COMPONENTS: GLenum = 0x8285`"]
3549    pub const GL_STENCIL_COMPONENTS: GLenum = 0x8285;
3550    #[doc = "`GL_STENCIL_FAIL: GLenum = 0x0B94`"]
3551    #[doc = "* **Group:** GetPName"]
3552    pub const GL_STENCIL_FAIL: GLenum = 0x0B94;
3553    #[doc = "`GL_STENCIL_FUNC: GLenum = 0x0B92`"]
3554    #[doc = "* **Group:** GetPName"]
3555    pub const GL_STENCIL_FUNC: GLenum = 0x0B92;
3556    #[doc = "`GL_STENCIL_INDEX: GLenum = 0x1901`"]
3557    #[doc = "* **Groups:** InternalFormat, PixelFormat"]
3558    pub const GL_STENCIL_INDEX: GLenum = 0x1901;
3559    #[doc = "`GL_STENCIL_INDEX1: GLenum = 0x8D46`"]
3560    #[doc = "* **Group:** InternalFormat"]
3561    pub const GL_STENCIL_INDEX1: GLenum = 0x8D46;
3562    #[doc = "`GL_STENCIL_INDEX16: GLenum = 0x8D49`"]
3563    #[doc = "* **Group:** InternalFormat"]
3564    pub const GL_STENCIL_INDEX16: GLenum = 0x8D49;
3565    #[doc = "`GL_STENCIL_INDEX4: GLenum = 0x8D47`"]
3566    #[doc = "* **Group:** InternalFormat"]
3567    pub const GL_STENCIL_INDEX4: GLenum = 0x8D47;
3568    #[doc = "`GL_STENCIL_INDEX8: GLenum = 0x8D48`"]
3569    #[doc = "* **Group:** InternalFormat"]
3570    pub const GL_STENCIL_INDEX8: GLenum = 0x8D48;
3571    #[doc = "`GL_STENCIL_PASS_DEPTH_FAIL: GLenum = 0x0B95`"]
3572    #[doc = "* **Group:** GetPName"]
3573    pub const GL_STENCIL_PASS_DEPTH_FAIL: GLenum = 0x0B95;
3574    #[doc = "`GL_STENCIL_PASS_DEPTH_PASS: GLenum = 0x0B96`"]
3575    #[doc = "* **Group:** GetPName"]
3576    pub const GL_STENCIL_PASS_DEPTH_PASS: GLenum = 0x0B96;
3577    #[doc = "`GL_STENCIL_REF: GLenum = 0x0B97`"]
3578    #[doc = "* **Group:** GetPName"]
3579    pub const GL_STENCIL_REF: GLenum = 0x0B97;
3580    #[doc = "`GL_STENCIL_RENDERABLE: GLenum = 0x8288`"]
3581    #[doc = "* **Group:** InternalFormatPName"]
3582    pub const GL_STENCIL_RENDERABLE: GLenum = 0x8288;
3583    #[doc = "`GL_STENCIL_TEST: GLenum = 0x0B90`"]
3584    #[doc = "* **Groups:** GetPName, EnableCap"]
3585    pub const GL_STENCIL_TEST: GLenum = 0x0B90;
3586    #[doc = "`GL_STENCIL_VALUE_MASK: GLenum = 0x0B93`"]
3587    #[doc = "* **Group:** GetPName"]
3588    pub const GL_STENCIL_VALUE_MASK: GLenum = 0x0B93;
3589    #[doc = "`GL_STENCIL_WRITEMASK: GLenum = 0x0B98`"]
3590    #[doc = "* **Group:** GetPName"]
3591    pub const GL_STENCIL_WRITEMASK: GLenum = 0x0B98;
3592    #[doc = "`GL_STEREO: GLenum = 0x0C33`"]
3593    #[doc = "* **Groups:** GetFramebufferParameter, GetPName"]
3594    pub const GL_STEREO: GLenum = 0x0C33;
3595    #[doc = "`GL_STREAM_COPY: GLenum = 0x88E2`"]
3596    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3597    pub const GL_STREAM_COPY: GLenum = 0x88E2;
3598    #[doc = "`GL_STREAM_DRAW: GLenum = 0x88E0`"]
3599    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3600    pub const GL_STREAM_DRAW: GLenum = 0x88E0;
3601    #[doc = "`GL_STREAM_READ: GLenum = 0x88E1`"]
3602    #[doc = "* **Groups:** VertexBufferObjectUsage, BufferUsageARB"]
3603    pub const GL_STREAM_READ: GLenum = 0x88E1;
3604    #[doc = "`GL_SUBPIXEL_BITS: GLenum = 0x0D50`"]
3605    #[doc = "* **Group:** GetPName"]
3606    pub const GL_SUBPIXEL_BITS: GLenum = 0x0D50;
3607    #[doc = "`GL_SYNC_CONDITION: GLenum = 0x9113`"]
3608    #[doc = "* **Group:** SyncParameterName"]
3609    pub const GL_SYNC_CONDITION: GLenum = 0x9113;
3610    #[doc = "`GL_SYNC_FENCE: GLenum = 0x9116`"]
3611    pub const GL_SYNC_FENCE: GLenum = 0x9116;
3612    #[doc = "`GL_SYNC_FLAGS: GLenum = 0x9115`"]
3613    #[doc = "* **Group:** SyncParameterName"]
3614    pub const GL_SYNC_FLAGS: GLenum = 0x9115;
3615    #[doc = "`GL_SYNC_FLUSH_COMMANDS_BIT: GLbitfield = 0x00000001`"]
3616    #[doc = "* **Group:** SyncObjectMask"]
3617    pub const GL_SYNC_FLUSH_COMMANDS_BIT: GLbitfield = 0x00000001;
3618    #[doc = "`GL_SYNC_GPU_COMMANDS_COMPLETE: GLenum = 0x9117`"]
3619    #[doc = "* **Group:** SyncCondition"]
3620    pub const GL_SYNC_GPU_COMMANDS_COMPLETE: GLenum = 0x9117;
3621    #[doc = "`GL_SYNC_STATUS: GLenum = 0x9114`"]
3622    #[doc = "* **Group:** SyncParameterName"]
3623    pub const GL_SYNC_STATUS: GLenum = 0x9114;
3624    #[doc = "`GL_TESS_CONTROL_OUTPUT_VERTICES: GLenum = 0x8E75`"]
3625    pub const GL_TESS_CONTROL_OUTPUT_VERTICES: GLenum = 0x8E75;
3626    #[doc = "`GL_TESS_CONTROL_SHADER: GLenum = 0x8E88`"]
3627    #[doc = "* **Groups:** PipelineParameterName, ShaderType"]
3628    pub const GL_TESS_CONTROL_SHADER: GLenum = 0x8E88;
3629    #[doc = "`GL_TESS_CONTROL_SHADER_BIT: GLbitfield = 0x00000008`"]
3630    #[doc = "* **Group:** UseProgramStageMask"]
3631    pub const GL_TESS_CONTROL_SHADER_BIT: GLbitfield = 0x00000008;
3632    #[doc = "`GL_TESS_CONTROL_SHADER_PATCHES: GLenum = 0x82F1`"]
3633    pub const GL_TESS_CONTROL_SHADER_PATCHES: GLenum = 0x82F1;
3634    #[doc = "`GL_TESS_CONTROL_SUBROUTINE: GLenum = 0x92E9`"]
3635    #[doc = "* **Group:** ProgramInterface"]
3636    pub const GL_TESS_CONTROL_SUBROUTINE: GLenum = 0x92E9;
3637    #[doc = "`GL_TESS_CONTROL_SUBROUTINE_UNIFORM: GLenum = 0x92EF`"]
3638    #[doc = "* **Group:** ProgramInterface"]
3639    pub const GL_TESS_CONTROL_SUBROUTINE_UNIFORM: GLenum = 0x92EF;
3640    #[doc = "`GL_TESS_CONTROL_TEXTURE: GLenum = 0x829C`"]
3641    #[doc = "* **Group:** InternalFormatPName"]
3642    pub const GL_TESS_CONTROL_TEXTURE: GLenum = 0x829C;
3643    #[doc = "`GL_TESS_EVALUATION_SHADER: GLenum = 0x8E87`"]
3644    #[doc = "* **Groups:** PipelineParameterName, ShaderType"]
3645    pub const GL_TESS_EVALUATION_SHADER: GLenum = 0x8E87;
3646    #[doc = "`GL_TESS_EVALUATION_SHADER_BIT: GLbitfield = 0x00000010`"]
3647    #[doc = "* **Group:** UseProgramStageMask"]
3648    pub const GL_TESS_EVALUATION_SHADER_BIT: GLbitfield = 0x00000010;
3649    #[doc = "`GL_TESS_EVALUATION_SHADER_INVOCATIONS: GLenum = 0x82F2`"]
3650    pub const GL_TESS_EVALUATION_SHADER_INVOCATIONS: GLenum = 0x82F2;
3651    #[doc = "`GL_TESS_EVALUATION_SUBROUTINE: GLenum = 0x92EA`"]
3652    #[doc = "* **Group:** ProgramInterface"]
3653    pub const GL_TESS_EVALUATION_SUBROUTINE: GLenum = 0x92EA;
3654    #[doc = "`GL_TESS_EVALUATION_SUBROUTINE_UNIFORM: GLenum = 0x92F0`"]
3655    #[doc = "* **Group:** ProgramInterface"]
3656    pub const GL_TESS_EVALUATION_SUBROUTINE_UNIFORM: GLenum = 0x92F0;
3657    #[doc = "`GL_TESS_EVALUATION_TEXTURE: GLenum = 0x829D`"]
3658    #[doc = "* **Group:** InternalFormatPName"]
3659    pub const GL_TESS_EVALUATION_TEXTURE: GLenum = 0x829D;
3660    #[doc = "`GL_TESS_GEN_MODE: GLenum = 0x8E76`"]
3661    pub const GL_TESS_GEN_MODE: GLenum = 0x8E76;
3662    #[doc = "`GL_TESS_GEN_POINT_MODE: GLenum = 0x8E79`"]
3663    pub const GL_TESS_GEN_POINT_MODE: GLenum = 0x8E79;
3664    #[doc = "`GL_TESS_GEN_SPACING: GLenum = 0x8E77`"]
3665    pub const GL_TESS_GEN_SPACING: GLenum = 0x8E77;
3666    #[doc = "`GL_TESS_GEN_VERTEX_ORDER: GLenum = 0x8E78`"]
3667    pub const GL_TESS_GEN_VERTEX_ORDER: GLenum = 0x8E78;
3668    #[doc = "`GL_TEXTURE: GLenum = 0x1702`"]
3669    #[doc = "* **Groups:** ObjectIdentifier, MatrixMode"]
3670    pub const GL_TEXTURE: GLenum = 0x1702;
3671    #[doc = "`GL_TEXTURE0: GLenum = 0x84C0`"]
3672    #[doc = "* **Group:** TextureUnit"]
3673    pub const GL_TEXTURE0: GLenum = 0x84C0;
3674    #[doc = "`GL_TEXTURE1: GLenum = 0x84C1`"]
3675    #[doc = "* **Group:** TextureUnit"]
3676    pub const GL_TEXTURE1: GLenum = 0x84C1;
3677    #[doc = "`GL_TEXTURE10: GLenum = 0x84CA`"]
3678    #[doc = "* **Group:** TextureUnit"]
3679    pub const GL_TEXTURE10: GLenum = 0x84CA;
3680    #[doc = "`GL_TEXTURE11: GLenum = 0x84CB`"]
3681    #[doc = "* **Group:** TextureUnit"]
3682    pub const GL_TEXTURE11: GLenum = 0x84CB;
3683    #[doc = "`GL_TEXTURE12: GLenum = 0x84CC`"]
3684    #[doc = "* **Group:** TextureUnit"]
3685    pub const GL_TEXTURE12: GLenum = 0x84CC;
3686    #[doc = "`GL_TEXTURE13: GLenum = 0x84CD`"]
3687    #[doc = "* **Group:** TextureUnit"]
3688    pub const GL_TEXTURE13: GLenum = 0x84CD;
3689    #[doc = "`GL_TEXTURE14: GLenum = 0x84CE`"]
3690    #[doc = "* **Group:** TextureUnit"]
3691    pub const GL_TEXTURE14: GLenum = 0x84CE;
3692    #[doc = "`GL_TEXTURE15: GLenum = 0x84CF`"]
3693    #[doc = "* **Group:** TextureUnit"]
3694    pub const GL_TEXTURE15: GLenum = 0x84CF;
3695    #[doc = "`GL_TEXTURE16: GLenum = 0x84D0`"]
3696    #[doc = "* **Group:** TextureUnit"]
3697    pub const GL_TEXTURE16: GLenum = 0x84D0;
3698    #[doc = "`GL_TEXTURE17: GLenum = 0x84D1`"]
3699    #[doc = "* **Group:** TextureUnit"]
3700    pub const GL_TEXTURE17: GLenum = 0x84D1;
3701    #[doc = "`GL_TEXTURE18: GLenum = 0x84D2`"]
3702    #[doc = "* **Group:** TextureUnit"]
3703    pub const GL_TEXTURE18: GLenum = 0x84D2;
3704    #[doc = "`GL_TEXTURE19: GLenum = 0x84D3`"]
3705    #[doc = "* **Group:** TextureUnit"]
3706    pub const GL_TEXTURE19: GLenum = 0x84D3;
3707    #[doc = "`GL_TEXTURE2: GLenum = 0x84C2`"]
3708    #[doc = "* **Group:** TextureUnit"]
3709    pub const GL_TEXTURE2: GLenum = 0x84C2;
3710    #[doc = "`GL_TEXTURE20: GLenum = 0x84D4`"]
3711    #[doc = "* **Group:** TextureUnit"]
3712    pub const GL_TEXTURE20: GLenum = 0x84D4;
3713    #[doc = "`GL_TEXTURE21: GLenum = 0x84D5`"]
3714    #[doc = "* **Group:** TextureUnit"]
3715    pub const GL_TEXTURE21: GLenum = 0x84D5;
3716    #[doc = "`GL_TEXTURE22: GLenum = 0x84D6`"]
3717    #[doc = "* **Group:** TextureUnit"]
3718    pub const GL_TEXTURE22: GLenum = 0x84D6;
3719    #[doc = "`GL_TEXTURE23: GLenum = 0x84D7`"]
3720    #[doc = "* **Group:** TextureUnit"]
3721    pub const GL_TEXTURE23: GLenum = 0x84D7;
3722    #[doc = "`GL_TEXTURE24: GLenum = 0x84D8`"]
3723    #[doc = "* **Group:** TextureUnit"]
3724    pub const GL_TEXTURE24: GLenum = 0x84D8;
3725    #[doc = "`GL_TEXTURE25: GLenum = 0x84D9`"]
3726    #[doc = "* **Group:** TextureUnit"]
3727    pub const GL_TEXTURE25: GLenum = 0x84D9;
3728    #[doc = "`GL_TEXTURE26: GLenum = 0x84DA`"]
3729    #[doc = "* **Group:** TextureUnit"]
3730    pub const GL_TEXTURE26: GLenum = 0x84DA;
3731    #[doc = "`GL_TEXTURE27: GLenum = 0x84DB`"]
3732    #[doc = "* **Group:** TextureUnit"]
3733    pub const GL_TEXTURE27: GLenum = 0x84DB;
3734    #[doc = "`GL_TEXTURE28: GLenum = 0x84DC`"]
3735    #[doc = "* **Group:** TextureUnit"]
3736    pub const GL_TEXTURE28: GLenum = 0x84DC;
3737    #[doc = "`GL_TEXTURE29: GLenum = 0x84DD`"]
3738    #[doc = "* **Group:** TextureUnit"]
3739    pub const GL_TEXTURE29: GLenum = 0x84DD;
3740    #[doc = "`GL_TEXTURE3: GLenum = 0x84C3`"]
3741    #[doc = "* **Group:** TextureUnit"]
3742    pub const GL_TEXTURE3: GLenum = 0x84C3;
3743    #[doc = "`GL_TEXTURE30: GLenum = 0x84DE`"]
3744    #[doc = "* **Group:** TextureUnit"]
3745    pub const GL_TEXTURE30: GLenum = 0x84DE;
3746    #[doc = "`GL_TEXTURE31: GLenum = 0x84DF`"]
3747    #[doc = "* **Group:** TextureUnit"]
3748    pub const GL_TEXTURE31: GLenum = 0x84DF;
3749    #[doc = "`GL_TEXTURE4: GLenum = 0x84C4`"]
3750    #[doc = "* **Group:** TextureUnit"]
3751    pub const GL_TEXTURE4: GLenum = 0x84C4;
3752    #[doc = "`GL_TEXTURE5: GLenum = 0x84C5`"]
3753    #[doc = "* **Group:** TextureUnit"]
3754    pub const GL_TEXTURE5: GLenum = 0x84C5;
3755    #[doc = "`GL_TEXTURE6: GLenum = 0x84C6`"]
3756    #[doc = "* **Group:** TextureUnit"]
3757    pub const GL_TEXTURE6: GLenum = 0x84C6;
3758    #[doc = "`GL_TEXTURE7: GLenum = 0x84C7`"]
3759    #[doc = "* **Group:** TextureUnit"]
3760    pub const GL_TEXTURE7: GLenum = 0x84C7;
3761    #[doc = "`GL_TEXTURE8: GLenum = 0x84C8`"]
3762    #[doc = "* **Group:** TextureUnit"]
3763    pub const GL_TEXTURE8: GLenum = 0x84C8;
3764    #[doc = "`GL_TEXTURE9: GLenum = 0x84C9`"]
3765    #[doc = "* **Group:** TextureUnit"]
3766    pub const GL_TEXTURE9: GLenum = 0x84C9;
3767    #[doc = "`GL_TEXTURE_1D: GLenum = 0x0DE0`"]
3768    #[doc = "* **Groups:** CopyImageSubDataTarget, EnableCap, GetPName, TextureTarget"]
3769    pub const GL_TEXTURE_1D: GLenum = 0x0DE0;
3770    #[doc = "`GL_TEXTURE_1D_ARRAY: GLenum = 0x8C18`"]
3771    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3772    pub const GL_TEXTURE_1D_ARRAY: GLenum = 0x8C18;
3773    #[doc = "`GL_TEXTURE_2D: GLenum = 0x0DE1`"]
3774    #[doc = "* **Groups:** CopyImageSubDataTarget, EnableCap, GetPName, TextureTarget"]
3775    pub const GL_TEXTURE_2D: GLenum = 0x0DE1;
3776    #[doc = "`GL_TEXTURE_2D_ARRAY: GLenum = 0x8C1A`"]
3777    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3778    pub const GL_TEXTURE_2D_ARRAY: GLenum = 0x8C1A;
3779    #[doc = "`GL_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9100`"]
3780    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3781    pub const GL_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9100;
3782    #[doc = "`GL_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9102`"]
3783    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3784    pub const GL_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9102;
3785    #[doc = "`GL_TEXTURE_3D: GLenum = 0x806F`"]
3786    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3787    pub const GL_TEXTURE_3D: GLenum = 0x806F;
3788    #[doc = "`GL_TEXTURE_ALPHA_SIZE: GLenum = 0x805F`"]
3789    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3790    pub const GL_TEXTURE_ALPHA_SIZE: GLenum = 0x805F;
3791    #[doc = "`GL_TEXTURE_ALPHA_TYPE: GLenum = 0x8C13`"]
3792    pub const GL_TEXTURE_ALPHA_TYPE: GLenum = 0x8C13;
3793    #[doc = "`GL_TEXTURE_BASE_LEVEL: GLenum = 0x813C`"]
3794    #[doc = "* **Group:** TextureParameterName"]
3795    pub const GL_TEXTURE_BASE_LEVEL: GLenum = 0x813C;
3796    #[doc = "`GL_TEXTURE_BINDING_1D: GLenum = 0x8068`"]
3797    #[doc = "* **Group:** GetPName"]
3798    pub const GL_TEXTURE_BINDING_1D: GLenum = 0x8068;
3799    #[doc = "`GL_TEXTURE_BINDING_1D_ARRAY: GLenum = 0x8C1C`"]
3800    #[doc = "* **Group:** GetPName"]
3801    pub const GL_TEXTURE_BINDING_1D_ARRAY: GLenum = 0x8C1C;
3802    #[doc = "`GL_TEXTURE_BINDING_2D: GLenum = 0x8069`"]
3803    #[doc = "* **Group:** GetPName"]
3804    pub const GL_TEXTURE_BINDING_2D: GLenum = 0x8069;
3805    #[doc = "`GL_TEXTURE_BINDING_2D_ARRAY: GLenum = 0x8C1D`"]
3806    #[doc = "* **Group:** GetPName"]
3807    pub const GL_TEXTURE_BINDING_2D_ARRAY: GLenum = 0x8C1D;
3808    #[doc = "`GL_TEXTURE_BINDING_2D_MULTISAMPLE: GLenum = 0x9104`"]
3809    #[doc = "* **Group:** GetPName"]
3810    pub const GL_TEXTURE_BINDING_2D_MULTISAMPLE: GLenum = 0x9104;
3811    #[doc = "`GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: GLenum = 0x9105`"]
3812    #[doc = "* **Group:** GetPName"]
3813    pub const GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: GLenum = 0x9105;
3814    #[doc = "`GL_TEXTURE_BINDING_3D: GLenum = 0x806A`"]
3815    #[doc = "* **Group:** GetPName"]
3816    pub const GL_TEXTURE_BINDING_3D: GLenum = 0x806A;
3817    #[doc = "`GL_TEXTURE_BINDING_BUFFER: GLenum = 0x8C2C`"]
3818    #[doc = "* **Group:** GetPName"]
3819    pub const GL_TEXTURE_BINDING_BUFFER: GLenum = 0x8C2C;
3820    #[doc = "`GL_TEXTURE_BINDING_CUBE_MAP: GLenum = 0x8514`"]
3821    #[doc = "* **Group:** GetPName"]
3822    pub const GL_TEXTURE_BINDING_CUBE_MAP: GLenum = 0x8514;
3823    #[doc = "`GL_TEXTURE_BINDING_CUBE_MAP_ARRAY: GLenum = 0x900A`"]
3824    pub const GL_TEXTURE_BINDING_CUBE_MAP_ARRAY: GLenum = 0x900A;
3825    #[doc = "`GL_TEXTURE_BINDING_RECTANGLE: GLenum = 0x84F6`"]
3826    #[doc = "* **Group:** GetPName"]
3827    pub const GL_TEXTURE_BINDING_RECTANGLE: GLenum = 0x84F6;
3828    #[doc = "`GL_TEXTURE_BLUE_SIZE: GLenum = 0x805E`"]
3829    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3830    pub const GL_TEXTURE_BLUE_SIZE: GLenum = 0x805E;
3831    #[doc = "`GL_TEXTURE_BLUE_TYPE: GLenum = 0x8C12`"]
3832    pub const GL_TEXTURE_BLUE_TYPE: GLenum = 0x8C12;
3833    #[doc = "`GL_TEXTURE_BORDER_COLOR: GLenum = 0x1004`"]
3834    #[doc = "* **Groups:** SamplerParameterF, GetTextureParameter, TextureParameterName"]
3835    pub const GL_TEXTURE_BORDER_COLOR: GLenum = 0x1004;
3836    #[doc = "`GL_TEXTURE_BUFFER: GLenum = 0x8C2A`"]
3837    #[doc = "* **Groups:** TextureTarget, CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
3838    pub const GL_TEXTURE_BUFFER: GLenum = 0x8C2A;
3839    #[doc = "`GL_TEXTURE_BUFFER_BINDING: GLenum = 0x8C2A`"]
3840    pub const GL_TEXTURE_BUFFER_BINDING: GLenum = 0x8C2A;
3841    #[doc = "`GL_TEXTURE_BUFFER_DATA_STORE_BINDING: GLenum = 0x8C2D`"]
3842    pub const GL_TEXTURE_BUFFER_DATA_STORE_BINDING: GLenum = 0x8C2D;
3843    #[doc = "`GL_TEXTURE_BUFFER_OFFSET: GLenum = 0x919D`"]
3844    pub const GL_TEXTURE_BUFFER_OFFSET: GLenum = 0x919D;
3845    #[doc = "`GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x919F`"]
3846    #[doc = "* **Group:** GetPName"]
3847    pub const GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x919F;
3848    #[doc = "`GL_TEXTURE_BUFFER_SIZE: GLenum = 0x919E`"]
3849    pub const GL_TEXTURE_BUFFER_SIZE: GLenum = 0x919E;
3850    #[doc = "`GL_TEXTURE_COMPARE_FUNC: GLenum = 0x884D`"]
3851    #[doc = "* **Groups:** SamplerParameterI, TextureParameterName"]
3852    pub const GL_TEXTURE_COMPARE_FUNC: GLenum = 0x884D;
3853    #[doc = "`GL_TEXTURE_COMPARE_MODE: GLenum = 0x884C`"]
3854    #[doc = "* **Groups:** SamplerParameterI, TextureParameterName"]
3855    pub const GL_TEXTURE_COMPARE_MODE: GLenum = 0x884C;
3856    #[doc = "`GL_TEXTURE_COMPRESSED: GLenum = 0x86A1`"]
3857    #[doc = "* **Group:** InternalFormatPName"]
3858    pub const GL_TEXTURE_COMPRESSED: GLenum = 0x86A1;
3859    #[doc = "`GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x82B2`"]
3860    #[doc = "* **Group:** InternalFormatPName"]
3861    pub const GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x82B2;
3862    #[doc = "`GL_TEXTURE_COMPRESSED_BLOCK_SIZE: GLenum = 0x82B3`"]
3863    #[doc = "* **Group:** InternalFormatPName"]
3864    pub const GL_TEXTURE_COMPRESSED_BLOCK_SIZE: GLenum = 0x82B3;
3865    #[doc = "`GL_TEXTURE_COMPRESSED_BLOCK_WIDTH: GLenum = 0x82B1`"]
3866    #[doc = "* **Group:** InternalFormatPName"]
3867    pub const GL_TEXTURE_COMPRESSED_BLOCK_WIDTH: GLenum = 0x82B1;
3868    #[doc = "`GL_TEXTURE_COMPRESSED_IMAGE_SIZE: GLenum = 0x86A0`"]
3869    pub const GL_TEXTURE_COMPRESSED_IMAGE_SIZE: GLenum = 0x86A0;
3870    #[doc = "`GL_TEXTURE_COMPRESSION_HINT: GLenum = 0x84EF`"]
3871    #[doc = "* **Groups:** HintTarget, GetPName"]
3872    pub const GL_TEXTURE_COMPRESSION_HINT: GLenum = 0x84EF;
3873    #[doc = "`GL_TEXTURE_CUBE_MAP: GLenum = 0x8513`"]
3874    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3875    pub const GL_TEXTURE_CUBE_MAP: GLenum = 0x8513;
3876    #[doc = "`GL_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x9009`"]
3877    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3878    pub const GL_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x9009;
3879    #[doc = "`GL_TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum = 0x8516`"]
3880    #[doc = "* **Group:** TextureTarget"]
3881    pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum = 0x8516;
3882    #[doc = "`GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum = 0x8518`"]
3883    #[doc = "* **Group:** TextureTarget"]
3884    pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum = 0x8518;
3885    #[doc = "`GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum = 0x851A`"]
3886    #[doc = "* **Group:** TextureTarget"]
3887    pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum = 0x851A;
3888    #[doc = "`GL_TEXTURE_CUBE_MAP_POSITIVE_X: GLenum = 0x8515`"]
3889    #[doc = "* **Group:** TextureTarget"]
3890    pub const GL_TEXTURE_CUBE_MAP_POSITIVE_X: GLenum = 0x8515;
3891    #[doc = "`GL_TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum = 0x8517`"]
3892    #[doc = "* **Group:** TextureTarget"]
3893    pub const GL_TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum = 0x8517;
3894    #[doc = "`GL_TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum = 0x8519`"]
3895    #[doc = "* **Group:** TextureTarget"]
3896    pub const GL_TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum = 0x8519;
3897    #[doc = "`GL_TEXTURE_CUBE_MAP_SEAMLESS: GLenum = 0x884F`"]
3898    #[doc = "* **Group:** EnableCap"]
3899    pub const GL_TEXTURE_CUBE_MAP_SEAMLESS: GLenum = 0x884F;
3900    #[doc = "`GL_TEXTURE_DEPTH: GLenum = 0x8071`"]
3901    pub const GL_TEXTURE_DEPTH: GLenum = 0x8071;
3902    #[doc = "`GL_TEXTURE_DEPTH_SIZE: GLenum = 0x884A`"]
3903    pub const GL_TEXTURE_DEPTH_SIZE: GLenum = 0x884A;
3904    #[doc = "`GL_TEXTURE_DEPTH_TYPE: GLenum = 0x8C16`"]
3905    pub const GL_TEXTURE_DEPTH_TYPE: GLenum = 0x8C16;
3906    #[doc = "`GL_TEXTURE_FETCH_BARRIER_BIT: GLbitfield = 0x00000008`"]
3907    #[doc = "* **Group:** MemoryBarrierMask"]
3908    pub const GL_TEXTURE_FETCH_BARRIER_BIT: GLbitfield = 0x00000008;
3909    #[doc = "`GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9107`"]
3910    pub const GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9107;
3911    #[doc = "`GL_TEXTURE_GATHER: GLenum = 0x82A2`"]
3912    #[doc = "* **Group:** InternalFormatPName"]
3913    pub const GL_TEXTURE_GATHER: GLenum = 0x82A2;
3914    #[doc = "`GL_TEXTURE_GATHER_SHADOW: GLenum = 0x82A3`"]
3915    #[doc = "* **Group:** InternalFormatPName"]
3916    pub const GL_TEXTURE_GATHER_SHADOW: GLenum = 0x82A3;
3917    #[doc = "`GL_TEXTURE_GREEN_SIZE: GLenum = 0x805D`"]
3918    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3919    pub const GL_TEXTURE_GREEN_SIZE: GLenum = 0x805D;
3920    #[doc = "`GL_TEXTURE_GREEN_TYPE: GLenum = 0x8C11`"]
3921    pub const GL_TEXTURE_GREEN_TYPE: GLenum = 0x8C11;
3922    #[doc = "`GL_TEXTURE_HEIGHT: GLenum = 0x1001`"]
3923    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3924    pub const GL_TEXTURE_HEIGHT: GLenum = 0x1001;
3925    #[doc = "`GL_TEXTURE_IMAGE_FORMAT: GLenum = 0x828F`"]
3926    #[doc = "* **Group:** InternalFormatPName"]
3927    pub const GL_TEXTURE_IMAGE_FORMAT: GLenum = 0x828F;
3928    #[doc = "`GL_TEXTURE_IMAGE_TYPE: GLenum = 0x8290`"]
3929    #[doc = "* **Group:** InternalFormatPName"]
3930    pub const GL_TEXTURE_IMAGE_TYPE: GLenum = 0x8290;
3931    #[doc = "`GL_TEXTURE_IMMUTABLE_FORMAT: GLenum = 0x912F`"]
3932    pub const GL_TEXTURE_IMMUTABLE_FORMAT: GLenum = 0x912F;
3933    #[doc = "`GL_TEXTURE_IMMUTABLE_LEVELS: GLenum = 0x82DF`"]
3934    pub const GL_TEXTURE_IMMUTABLE_LEVELS: GLenum = 0x82DF;
3935    #[doc = "`GL_TEXTURE_INTERNAL_FORMAT: GLenum = 0x1003`"]
3936    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3937    pub const GL_TEXTURE_INTERNAL_FORMAT: GLenum = 0x1003;
3938    #[doc = "`GL_TEXTURE_LOD_BIAS: GLenum = 0x8501`"]
3939    #[doc = "* **Groups:** TextureParameterName, SamplerParameterF"]
3940    pub const GL_TEXTURE_LOD_BIAS: GLenum = 0x8501;
3941    #[doc = "`GL_TEXTURE_MAG_FILTER: GLenum = 0x2800`"]
3942    #[doc = "* **Groups:** SamplerParameterI, GetTextureParameter, TextureParameterName"]
3943    pub const GL_TEXTURE_MAG_FILTER: GLenum = 0x2800;
3944    #[doc = "`GL_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FE`"]
3945    #[doc = "* **Group:** SamplerParameterF"]
3946    pub const GL_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FE;
3947    #[doc = "`GL_TEXTURE_MAX_ANISOTROPY_EXT: GLenum = 0x84FE`"]
3948    #[doc = "* **Alias Of:** `GL_TEXTURE_MAX_ANISOTROPY`"]
3949    pub const GL_TEXTURE_MAX_ANISOTROPY_EXT: GLenum = 0x84FE;
3950    #[doc = "`GL_TEXTURE_MAX_LEVEL: GLenum = 0x813D`"]
3951    #[doc = "* **Group:** TextureParameterName"]
3952    pub const GL_TEXTURE_MAX_LEVEL: GLenum = 0x813D;
3953    #[doc = "`GL_TEXTURE_MAX_LOD: GLenum = 0x813B`"]
3954    #[doc = "* **Groups:** SamplerParameterF, TextureParameterName"]
3955    pub const GL_TEXTURE_MAX_LOD: GLenum = 0x813B;
3956    #[doc = "`GL_TEXTURE_MIN_FILTER: GLenum = 0x2801`"]
3957    #[doc = "* **Groups:** SamplerParameterI, GetTextureParameter, TextureParameterName"]
3958    pub const GL_TEXTURE_MIN_FILTER: GLenum = 0x2801;
3959    #[doc = "`GL_TEXTURE_MIN_LOD: GLenum = 0x813A`"]
3960    #[doc = "* **Groups:** SamplerParameterF, TextureParameterName"]
3961    pub const GL_TEXTURE_MIN_LOD: GLenum = 0x813A;
3962    #[doc = "`GL_TEXTURE_RECTANGLE: GLenum = 0x84F5`"]
3963    #[doc = "* **Groups:** CopyImageSubDataTarget, TextureTarget"]
3964    pub const GL_TEXTURE_RECTANGLE: GLenum = 0x84F5;
3965    #[doc = "`GL_TEXTURE_RED_SIZE: GLenum = 0x805C`"]
3966    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
3967    pub const GL_TEXTURE_RED_SIZE: GLenum = 0x805C;
3968    #[doc = "`GL_TEXTURE_RED_TYPE: GLenum = 0x8C10`"]
3969    pub const GL_TEXTURE_RED_TYPE: GLenum = 0x8C10;
3970    #[doc = "`GL_TEXTURE_SAMPLES: GLenum = 0x9106`"]
3971    pub const GL_TEXTURE_SAMPLES: GLenum = 0x9106;
3972    #[doc = "`GL_TEXTURE_SHADOW: GLenum = 0x82A1`"]
3973    #[doc = "* **Group:** InternalFormatPName"]
3974    pub const GL_TEXTURE_SHADOW: GLenum = 0x82A1;
3975    #[doc = "`GL_TEXTURE_SHARED_SIZE: GLenum = 0x8C3F`"]
3976    pub const GL_TEXTURE_SHARED_SIZE: GLenum = 0x8C3F;
3977    #[doc = "`GL_TEXTURE_STENCIL_SIZE: GLenum = 0x88F1`"]
3978    pub const GL_TEXTURE_STENCIL_SIZE: GLenum = 0x88F1;
3979    #[doc = "`GL_TEXTURE_SWIZZLE_A: GLenum = 0x8E45`"]
3980    #[doc = "* **Group:** TextureParameterName"]
3981    pub const GL_TEXTURE_SWIZZLE_A: GLenum = 0x8E45;
3982    #[doc = "`GL_TEXTURE_SWIZZLE_B: GLenum = 0x8E44`"]
3983    #[doc = "* **Group:** TextureParameterName"]
3984    pub const GL_TEXTURE_SWIZZLE_B: GLenum = 0x8E44;
3985    #[doc = "`GL_TEXTURE_SWIZZLE_G: GLenum = 0x8E43`"]
3986    #[doc = "* **Group:** TextureParameterName"]
3987    pub const GL_TEXTURE_SWIZZLE_G: GLenum = 0x8E43;
3988    #[doc = "`GL_TEXTURE_SWIZZLE_R: GLenum = 0x8E42`"]
3989    #[doc = "* **Group:** TextureParameterName"]
3990    pub const GL_TEXTURE_SWIZZLE_R: GLenum = 0x8E42;
3991    #[doc = "`GL_TEXTURE_SWIZZLE_RGBA: GLenum = 0x8E46`"]
3992    #[doc = "* **Group:** TextureParameterName"]
3993    pub const GL_TEXTURE_SWIZZLE_RGBA: GLenum = 0x8E46;
3994    #[doc = "`GL_TEXTURE_TARGET: GLenum = 0x1006`"]
3995    pub const GL_TEXTURE_TARGET: GLenum = 0x1006;
3996    #[doc = "`GL_TEXTURE_UPDATE_BARRIER_BIT: GLbitfield = 0x00000100`"]
3997    #[doc = "* **Group:** MemoryBarrierMask"]
3998    pub const GL_TEXTURE_UPDATE_BARRIER_BIT: GLbitfield = 0x00000100;
3999    #[doc = "`GL_TEXTURE_VIEW: GLenum = 0x82B5`"]
4000    #[doc = "* **Group:** InternalFormatPName"]
4001    pub const GL_TEXTURE_VIEW: GLenum = 0x82B5;
4002    #[doc = "`GL_TEXTURE_VIEW_MIN_LAYER: GLenum = 0x82DD`"]
4003    pub const GL_TEXTURE_VIEW_MIN_LAYER: GLenum = 0x82DD;
4004    #[doc = "`GL_TEXTURE_VIEW_MIN_LEVEL: GLenum = 0x82DB`"]
4005    pub const GL_TEXTURE_VIEW_MIN_LEVEL: GLenum = 0x82DB;
4006    #[doc = "`GL_TEXTURE_VIEW_NUM_LAYERS: GLenum = 0x82DE`"]
4007    pub const GL_TEXTURE_VIEW_NUM_LAYERS: GLenum = 0x82DE;
4008    #[doc = "`GL_TEXTURE_VIEW_NUM_LEVELS: GLenum = 0x82DC`"]
4009    pub const GL_TEXTURE_VIEW_NUM_LEVELS: GLenum = 0x82DC;
4010    #[doc = "`GL_TEXTURE_WIDTH: GLenum = 0x1000`"]
4011    #[doc = "* **Groups:** TextureParameterName, GetTextureParameter"]
4012    pub const GL_TEXTURE_WIDTH: GLenum = 0x1000;
4013    #[doc = "`GL_TEXTURE_WRAP_R: GLenum = 0x8072`"]
4014    #[doc = "* **Groups:** SamplerParameterI, TextureParameterName"]
4015    pub const GL_TEXTURE_WRAP_R: GLenum = 0x8072;
4016    #[doc = "`GL_TEXTURE_WRAP_S: GLenum = 0x2802`"]
4017    #[doc = "* **Groups:** SamplerParameterI, GetTextureParameter, TextureParameterName"]
4018    pub const GL_TEXTURE_WRAP_S: GLenum = 0x2802;
4019    #[doc = "`GL_TEXTURE_WRAP_T: GLenum = 0x2803`"]
4020    #[doc = "* **Groups:** SamplerParameterI, GetTextureParameter, TextureParameterName"]
4021    pub const GL_TEXTURE_WRAP_T: GLenum = 0x2803;
4022    #[doc = "`GL_TIMEOUT_EXPIRED: GLenum = 0x911B`"]
4023    #[doc = "* **Group:** SyncStatus"]
4024    pub const GL_TIMEOUT_EXPIRED: GLenum = 0x911B;
4025    #[doc = "`GL_TIMEOUT_IGNORED: u64 = 0xFFFFFFFFFFFFFFFF`"]
4026    pub const GL_TIMEOUT_IGNORED: u64 = 0xFFFFFFFFFFFFFFFF;
4027    #[doc = "`GL_TIMESTAMP: GLenum = 0x8E28`"]
4028    #[doc = "* **Groups:** QueryCounterTarget, GetPName"]
4029    pub const GL_TIMESTAMP: GLenum = 0x8E28;
4030    #[doc = "`GL_TIMESTAMP_EXT: GLenum = 0x8E28`"]
4031    pub const GL_TIMESTAMP_EXT: GLenum = 0x8E28;
4032    #[doc = "`GL_TIME_ELAPSED: GLenum = 0x88BF`"]
4033    #[doc = "* **Group:** QueryTarget"]
4034    pub const GL_TIME_ELAPSED: GLenum = 0x88BF;
4035    #[doc = "`GL_TIME_ELAPSED_EXT: GLenum = 0x88BF`"]
4036    pub const GL_TIME_ELAPSED_EXT: GLenum = 0x88BF;
4037    #[doc = "`GL_TOP_LEVEL_ARRAY_SIZE: GLenum = 0x930C`"]
4038    #[doc = "* **Group:** ProgramResourceProperty"]
4039    pub const GL_TOP_LEVEL_ARRAY_SIZE: GLenum = 0x930C;
4040    #[doc = "`GL_TOP_LEVEL_ARRAY_STRIDE: GLenum = 0x930D`"]
4041    #[doc = "* **Group:** ProgramResourceProperty"]
4042    pub const GL_TOP_LEVEL_ARRAY_STRIDE: GLenum = 0x930D;
4043    #[doc = "`GL_TRANSFORM_FEEDBACK: GLenum = 0x8E22`"]
4044    #[doc = "* **Groups:** ObjectIdentifier, BindTransformFeedbackTarget"]
4045    pub const GL_TRANSFORM_FEEDBACK: GLenum = 0x8E22;
4046    #[doc = "`GL_TRANSFORM_FEEDBACK_ACTIVE: GLenum = 0x8E24`"]
4047    #[doc = "* **Group:** TransformFeedbackPName"]
4048    #[doc = "* **Alias Of:** `GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE`"]
4049    pub const GL_TRANSFORM_FEEDBACK_ACTIVE: GLenum = 0x8E24;
4050    #[doc = "`GL_TRANSFORM_FEEDBACK_BARRIER_BIT: GLbitfield = 0x00000800`"]
4051    #[doc = "* **Group:** MemoryBarrierMask"]
4052    pub const GL_TRANSFORM_FEEDBACK_BARRIER_BIT: GLbitfield = 0x00000800;
4053    #[doc = "`GL_TRANSFORM_FEEDBACK_BINDING: GLenum = 0x8E25`"]
4054    pub const GL_TRANSFORM_FEEDBACK_BINDING: GLenum = 0x8E25;
4055    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER: GLenum = 0x8C8E`"]
4056    #[doc = "* **Groups:** ProgramInterface, BufferTargetARB, BufferStorageTarget, CopyBufferSubDataTarget"]
4057    pub const GL_TRANSFORM_FEEDBACK_BUFFER: GLenum = 0x8C8E;
4058    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE: GLenum = 0x8E24`"]
4059    pub const GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE: GLenum = 0x8E24;
4060    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum = 0x8C8F`"]
4061    #[doc = "* **Groups:** TransformFeedbackPName, GetPName"]
4062    pub const GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum = 0x8C8F;
4063    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_INDEX: GLenum = 0x934B`"]
4064    #[doc = "* **Group:** ProgramResourceProperty"]
4065    pub const GL_TRANSFORM_FEEDBACK_BUFFER_INDEX: GLenum = 0x934B;
4066    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum = 0x8C7F`"]
4067    #[doc = "* **Group:** ProgramPropertyARB"]
4068    pub const GL_TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum = 0x8C7F;
4069    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED: GLenum = 0x8E23`"]
4070    pub const GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED: GLenum = 0x8E23;
4071    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum = 0x8C85`"]
4072    #[doc = "* **Groups:** TransformFeedbackPName, GetPName"]
4073    pub const GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum = 0x8C85;
4074    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_START: GLenum = 0x8C84`"]
4075    #[doc = "* **Groups:** TransformFeedbackPName, GetPName"]
4076    pub const GL_TRANSFORM_FEEDBACK_BUFFER_START: GLenum = 0x8C84;
4077    #[doc = "`GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE: GLenum = 0x934C`"]
4078    #[doc = "* **Group:** ProgramResourceProperty"]
4079    pub const GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE: GLenum = 0x934C;
4080    #[doc = "`GL_TRANSFORM_FEEDBACK_OVERFLOW: GLenum = 0x82EC`"]
4081    #[doc = "* **Group:** QueryTarget"]
4082    pub const GL_TRANSFORM_FEEDBACK_OVERFLOW: GLenum = 0x82EC;
4083    #[doc = "`GL_TRANSFORM_FEEDBACK_PAUSED: GLenum = 0x8E23`"]
4084    #[doc = "* **Group:** TransformFeedbackPName"]
4085    #[doc = "* **Alias Of:** `GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED`"]
4086    pub const GL_TRANSFORM_FEEDBACK_PAUSED: GLenum = 0x8E23;
4087    #[doc = "`GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum = 0x8C88`"]
4088    #[doc = "* **Group:** QueryTarget"]
4089    pub const GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum = 0x8C88;
4090    #[doc = "`GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW: GLenum = 0x82ED`"]
4091    pub const GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW: GLenum = 0x82ED;
4092    #[doc = "`GL_TRANSFORM_FEEDBACK_VARYING: GLenum = 0x92F4`"]
4093    #[doc = "* **Group:** ProgramInterface"]
4094    pub const GL_TRANSFORM_FEEDBACK_VARYING: GLenum = 0x92F4;
4095    #[doc = "`GL_TRANSFORM_FEEDBACK_VARYINGS: GLenum = 0x8C83`"]
4096    #[doc = "* **Group:** ProgramPropertyARB"]
4097    pub const GL_TRANSFORM_FEEDBACK_VARYINGS: GLenum = 0x8C83;
4098    #[doc = "`GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: GLenum = 0x8C76`"]
4099    #[doc = "* **Group:** ProgramPropertyARB"]
4100    pub const GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: GLenum = 0x8C76;
4101    #[doc = "`GL_TRIANGLES: GLenum = 0x0004`"]
4102    #[doc = "* **Group:** PrimitiveType"]
4103    pub const GL_TRIANGLES: GLenum = 0x0004;
4104    #[doc = "`GL_TRIANGLES_ADJACENCY: GLenum = 0x000C`"]
4105    #[doc = "* **Group:** PrimitiveType"]
4106    pub const GL_TRIANGLES_ADJACENCY: GLenum = 0x000C;
4107    #[doc = "`GL_TRIANGLE_FAN: GLenum = 0x0006`"]
4108    #[doc = "* **Group:** PrimitiveType"]
4109    pub const GL_TRIANGLE_FAN: GLenum = 0x0006;
4110    #[doc = "`GL_TRIANGLE_STRIP: GLenum = 0x0005`"]
4111    #[doc = "* **Group:** PrimitiveType"]
4112    pub const GL_TRIANGLE_STRIP: GLenum = 0x0005;
4113    #[doc = "`GL_TRIANGLE_STRIP_ADJACENCY: GLenum = 0x000D`"]
4114    #[doc = "* **Group:** PrimitiveType"]
4115    pub const GL_TRIANGLE_STRIP_ADJACENCY: GLenum = 0x000D;
4116    #[doc = "`GL_TRUE: GLenum = 1`"]
4117    #[doc = "* **Groups:** Boolean, VertexShaderWriteMaskEXT, ClampColorModeARB"]
4118    pub const GL_TRUE: GLenum = 1;
4119    #[doc = "`GL_TYPE: GLenum = 0x92FA`"]
4120    #[doc = "* **Group:** ProgramResourceProperty"]
4121    pub const GL_TYPE: GLenum = 0x92FA;
4122    #[doc = "`GL_UNDEFINED_VERTEX: GLenum = 0x8260`"]
4123    pub const GL_UNDEFINED_VERTEX: GLenum = 0x8260;
4124    #[doc = "`GL_UNIFORM: GLenum = 0x92E1`"]
4125    #[doc = "* **Groups:** ProgramResourceProperty, ProgramInterface"]
4126    pub const GL_UNIFORM: GLenum = 0x92E1;
4127    #[doc = "`GL_UNIFORM_ARRAY_STRIDE: GLenum = 0x8A3C`"]
4128    #[doc = "* **Group:** UniformPName"]
4129    pub const GL_UNIFORM_ARRAY_STRIDE: GLenum = 0x8A3C;
4130    #[doc = "`GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x92DA`"]
4131    #[doc = "* **Group:** UniformPName"]
4132    pub const GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x92DA;
4133    #[doc = "`GL_UNIFORM_BARRIER_BIT: GLbitfield = 0x00000004`"]
4134    #[doc = "* **Group:** MemoryBarrierMask"]
4135    pub const GL_UNIFORM_BARRIER_BIT: GLbitfield = 0x00000004;
4136    #[doc = "`GL_UNIFORM_BLOCK: GLenum = 0x92E2`"]
4137    #[doc = "* **Group:** ProgramInterface"]
4138    pub const GL_UNIFORM_BLOCK: GLenum = 0x92E2;
4139    #[doc = "`GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum = 0x8A42`"]
4140    #[doc = "* **Group:** UniformBlockPName"]
4141    pub const GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum = 0x8A42;
4142    #[doc = "`GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum = 0x8A43`"]
4143    #[doc = "* **Group:** UniformBlockPName"]
4144    pub const GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum = 0x8A43;
4145    #[doc = "`GL_UNIFORM_BLOCK_BINDING: GLenum = 0x8A3F`"]
4146    #[doc = "* **Group:** UniformBlockPName"]
4147    pub const GL_UNIFORM_BLOCK_BINDING: GLenum = 0x8A3F;
4148    #[doc = "`GL_UNIFORM_BLOCK_DATA_SIZE: GLenum = 0x8A40`"]
4149    #[doc = "* **Group:** UniformBlockPName"]
4150    pub const GL_UNIFORM_BLOCK_DATA_SIZE: GLenum = 0x8A40;
4151    #[doc = "`GL_UNIFORM_BLOCK_INDEX: GLenum = 0x8A3A`"]
4152    #[doc = "* **Group:** UniformPName"]
4153    pub const GL_UNIFORM_BLOCK_INDEX: GLenum = 0x8A3A;
4154    #[doc = "`GL_UNIFORM_BLOCK_NAME_LENGTH: GLenum = 0x8A41`"]
4155    #[doc = "* **Group:** UniformBlockPName"]
4156    pub const GL_UNIFORM_BLOCK_NAME_LENGTH: GLenum = 0x8A41;
4157    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90EC`"]
4158    #[doc = "* **Group:** UniformBlockPName"]
4159    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90EC;
4160    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x8A46`"]
4161    #[doc = "* **Group:** UniformBlockPName"]
4162    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x8A46;
4163    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x8A45`"]
4164    #[doc = "* **Group:** UniformBlockPName"]
4165    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x8A45;
4166    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x84F0`"]
4167    #[doc = "* **Group:** UniformBlockPName"]
4168    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x84F0;
4169    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x84F1`"]
4170    #[doc = "* **Group:** UniformBlockPName"]
4171    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x84F1;
4172    #[doc = "`GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x8A44`"]
4173    #[doc = "* **Group:** UniformBlockPName"]
4174    pub const GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x8A44;
4175    #[doc = "`GL_UNIFORM_BUFFER: GLenum = 0x8A11`"]
4176    #[doc = "* **Groups:** CopyBufferSubDataTarget, BufferTargetARB, BufferStorageTarget"]
4177    pub const GL_UNIFORM_BUFFER: GLenum = 0x8A11;
4178    #[doc = "`GL_UNIFORM_BUFFER_BINDING: GLenum = 0x8A28`"]
4179    #[doc = "* **Group:** GetPName"]
4180    pub const GL_UNIFORM_BUFFER_BINDING: GLenum = 0x8A28;
4181    #[doc = "`GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x8A34`"]
4182    #[doc = "* **Group:** GetPName"]
4183    pub const GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x8A34;
4184    #[doc = "`GL_UNIFORM_BUFFER_SIZE: GLenum = 0x8A2A`"]
4185    #[doc = "* **Group:** GetPName"]
4186    pub const GL_UNIFORM_BUFFER_SIZE: GLenum = 0x8A2A;
4187    #[doc = "`GL_UNIFORM_BUFFER_START: GLenum = 0x8A29`"]
4188    #[doc = "* **Group:** GetPName"]
4189    pub const GL_UNIFORM_BUFFER_START: GLenum = 0x8A29;
4190    #[doc = "`GL_UNIFORM_IS_ROW_MAJOR: GLenum = 0x8A3E`"]
4191    #[doc = "* **Group:** UniformPName"]
4192    pub const GL_UNIFORM_IS_ROW_MAJOR: GLenum = 0x8A3E;
4193    #[doc = "`GL_UNIFORM_MATRIX_STRIDE: GLenum = 0x8A3D`"]
4194    #[doc = "* **Group:** UniformPName"]
4195    pub const GL_UNIFORM_MATRIX_STRIDE: GLenum = 0x8A3D;
4196    #[doc = "`GL_UNIFORM_NAME_LENGTH: GLenum = 0x8A39`"]
4197    #[doc = "* **Groups:** SubroutineParameterName, UniformPName"]
4198    pub const GL_UNIFORM_NAME_LENGTH: GLenum = 0x8A39;
4199    #[doc = "`GL_UNIFORM_OFFSET: GLenum = 0x8A3B`"]
4200    #[doc = "* **Group:** UniformPName"]
4201    pub const GL_UNIFORM_OFFSET: GLenum = 0x8A3B;
4202    #[doc = "`GL_UNIFORM_SIZE: GLenum = 0x8A38`"]
4203    #[doc = "* **Groups:** SubroutineParameterName, UniformPName"]
4204    pub const GL_UNIFORM_SIZE: GLenum = 0x8A38;
4205    #[doc = "`GL_UNIFORM_TYPE: GLenum = 0x8A37`"]
4206    #[doc = "* **Group:** UniformPName"]
4207    pub const GL_UNIFORM_TYPE: GLenum = 0x8A37;
4208    #[doc = "`GL_UNKNOWN_CONTEXT_RESET: GLenum = 0x8255`"]
4209    #[doc = "* **Group:** GraphicsResetStatus"]
4210    pub const GL_UNKNOWN_CONTEXT_RESET: GLenum = 0x8255;
4211    #[doc = "`GL_UNPACK_ALIGNMENT: GLenum = 0x0CF5`"]
4212    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4213    pub const GL_UNPACK_ALIGNMENT: GLenum = 0x0CF5;
4214    #[doc = "`GL_UNPACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x9129`"]
4215    pub const GL_UNPACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x9129;
4216    #[doc = "`GL_UNPACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x9128`"]
4217    pub const GL_UNPACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x9128;
4218    #[doc = "`GL_UNPACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912A`"]
4219    pub const GL_UNPACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912A;
4220    #[doc = "`GL_UNPACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x9127`"]
4221    pub const GL_UNPACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x9127;
4222    #[doc = "`GL_UNPACK_IMAGE_HEIGHT: GLenum = 0x806E`"]
4223    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4224    pub const GL_UNPACK_IMAGE_HEIGHT: GLenum = 0x806E;
4225    #[doc = "`GL_UNPACK_LSB_FIRST: GLenum = 0x0CF1`"]
4226    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4227    pub const GL_UNPACK_LSB_FIRST: GLenum = 0x0CF1;
4228    #[doc = "`GL_UNPACK_ROW_LENGTH: GLenum = 0x0CF2`"]
4229    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4230    pub const GL_UNPACK_ROW_LENGTH: GLenum = 0x0CF2;
4231    #[doc = "`GL_UNPACK_SKIP_IMAGES: GLenum = 0x806D`"]
4232    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4233    pub const GL_UNPACK_SKIP_IMAGES: GLenum = 0x806D;
4234    #[doc = "`GL_UNPACK_SKIP_PIXELS: GLenum = 0x0CF4`"]
4235    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4236    pub const GL_UNPACK_SKIP_PIXELS: GLenum = 0x0CF4;
4237    #[doc = "`GL_UNPACK_SKIP_ROWS: GLenum = 0x0CF3`"]
4238    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4239    pub const GL_UNPACK_SKIP_ROWS: GLenum = 0x0CF3;
4240    #[doc = "`GL_UNPACK_SWAP_BYTES: GLenum = 0x0CF0`"]
4241    #[doc = "* **Groups:** PixelStoreParameter, GetPName"]
4242    pub const GL_UNPACK_SWAP_BYTES: GLenum = 0x0CF0;
4243    #[doc = "`GL_UNSIGNALED: GLenum = 0x9118`"]
4244    pub const GL_UNSIGNALED: GLenum = 0x9118;
4245    #[doc = "`GL_UNSIGNED_BYTE: GLenum = 0x1401`"]
4246    #[doc = "* **Groups:** VertexAttribIType, ScalarType, ReplacementCodeTypeSUN, ElementPointerTypeATI, MatrixIndexPointerTypeARB, WeightPointerTypeARB, ColorPointerType, DrawElementsType, ListNameType, PixelType, VertexAttribType, VertexAttribPointerType"]
4247    pub const GL_UNSIGNED_BYTE: GLenum = 0x1401;
4248    #[doc = "`GL_UNSIGNED_BYTE_2_3_3_REV: GLenum = 0x8362`"]
4249    pub const GL_UNSIGNED_BYTE_2_3_3_REV: GLenum = 0x8362;
4250    #[doc = "`GL_UNSIGNED_BYTE_3_3_2: GLenum = 0x8032`"]
4251    #[doc = "* **Group:** PixelType"]
4252    pub const GL_UNSIGNED_BYTE_3_3_2: GLenum = 0x8032;
4253    #[doc = "`GL_UNSIGNED_INT: GLenum = 0x1405`"]
4254    #[doc = "* **Groups:** VertexAttribIType, ScalarType, ReplacementCodeTypeSUN, ElementPointerTypeATI, MatrixIndexPointerTypeARB, WeightPointerTypeARB, ColorPointerType, DrawElementsType, ListNameType, PixelFormat, PixelType, VertexAttribType, AttributeType, UniformType, VertexAttribPointerType, GlslTypeToken"]
4255    pub const GL_UNSIGNED_INT: GLenum = 0x1405;
4256    #[doc = "`GL_UNSIGNED_INT_10F_11F_11F_REV: GLenum = 0x8C3B`"]
4257    #[doc = "* **Groups:** VertexAttribPointerType, VertexAttribType"]
4258    pub const GL_UNSIGNED_INT_10F_11F_11F_REV: GLenum = 0x8C3B;
4259    #[doc = "`GL_UNSIGNED_INT_10_10_10_2: GLenum = 0x8036`"]
4260    #[doc = "* **Group:** PixelType"]
4261    pub const GL_UNSIGNED_INT_10_10_10_2: GLenum = 0x8036;
4262    #[doc = "`GL_UNSIGNED_INT_24_8: GLenum = 0x84FA`"]
4263    pub const GL_UNSIGNED_INT_24_8: GLenum = 0x84FA;
4264    #[doc = "`GL_UNSIGNED_INT_2_10_10_10_REV: GLenum = 0x8368`"]
4265    #[doc = "* **Groups:** VertexAttribPointerType, VertexAttribType"]
4266    pub const GL_UNSIGNED_INT_2_10_10_10_REV: GLenum = 0x8368;
4267    #[doc = "`GL_UNSIGNED_INT_5_9_9_9_REV: GLenum = 0x8C3E`"]
4268    pub const GL_UNSIGNED_INT_5_9_9_9_REV: GLenum = 0x8C3E;
4269    #[doc = "`GL_UNSIGNED_INT_8_8_8_8: GLenum = 0x8035`"]
4270    #[doc = "* **Group:** PixelType"]
4271    pub const GL_UNSIGNED_INT_8_8_8_8: GLenum = 0x8035;
4272    #[doc = "`GL_UNSIGNED_INT_8_8_8_8_REV: GLenum = 0x8367`"]
4273    pub const GL_UNSIGNED_INT_8_8_8_8_REV: GLenum = 0x8367;
4274    #[doc = "`GL_UNSIGNED_INT_ATOMIC_COUNTER: GLenum = 0x92DB`"]
4275    #[doc = "* **Group:** GlslTypeToken"]
4276    pub const GL_UNSIGNED_INT_ATOMIC_COUNTER: GLenum = 0x92DB;
4277    #[doc = "`GL_UNSIGNED_INT_IMAGE_1D: GLenum = 0x9062`"]
4278    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4279    pub const GL_UNSIGNED_INT_IMAGE_1D: GLenum = 0x9062;
4280    #[doc = "`GL_UNSIGNED_INT_IMAGE_1D_ARRAY: GLenum = 0x9068`"]
4281    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4282    pub const GL_UNSIGNED_INT_IMAGE_1D_ARRAY: GLenum = 0x9068;
4283    #[doc = "`GL_UNSIGNED_INT_IMAGE_2D: GLenum = 0x9063`"]
4284    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4285    pub const GL_UNSIGNED_INT_IMAGE_2D: GLenum = 0x9063;
4286    #[doc = "`GL_UNSIGNED_INT_IMAGE_2D_ARRAY: GLenum = 0x9069`"]
4287    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4288    pub const GL_UNSIGNED_INT_IMAGE_2D_ARRAY: GLenum = 0x9069;
4289    #[doc = "`GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x906B`"]
4290    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4291    pub const GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x906B;
4292    #[doc = "`GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x906C`"]
4293    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4294    pub const GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x906C;
4295    #[doc = "`GL_UNSIGNED_INT_IMAGE_2D_RECT: GLenum = 0x9065`"]
4296    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4297    pub const GL_UNSIGNED_INT_IMAGE_2D_RECT: GLenum = 0x9065;
4298    #[doc = "`GL_UNSIGNED_INT_IMAGE_3D: GLenum = 0x9064`"]
4299    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4300    pub const GL_UNSIGNED_INT_IMAGE_3D: GLenum = 0x9064;
4301    #[doc = "`GL_UNSIGNED_INT_IMAGE_BUFFER: GLenum = 0x9067`"]
4302    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4303    pub const GL_UNSIGNED_INT_IMAGE_BUFFER: GLenum = 0x9067;
4304    #[doc = "`GL_UNSIGNED_INT_IMAGE_CUBE: GLenum = 0x9066`"]
4305    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4306    pub const GL_UNSIGNED_INT_IMAGE_CUBE: GLenum = 0x9066;
4307    #[doc = "`GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x906A`"]
4308    #[doc = "* **Groups:** GlslTypeToken, AttributeType"]
4309    pub const GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x906A;
4310    #[doc = "`GL_UNSIGNED_INT_SAMPLER_1D: GLenum = 0x8DD1`"]
4311    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4312    pub const GL_UNSIGNED_INT_SAMPLER_1D: GLenum = 0x8DD1;
4313    #[doc = "`GL_UNSIGNED_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DD6`"]
4314    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4315    pub const GL_UNSIGNED_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DD6;
4316    #[doc = "`GL_UNSIGNED_INT_SAMPLER_2D: GLenum = 0x8DD2`"]
4317    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4318    pub const GL_UNSIGNED_INT_SAMPLER_2D: GLenum = 0x8DD2;
4319    #[doc = "`GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DD7`"]
4320    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4321    pub const GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DD7;
4322    #[doc = "`GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x910A`"]
4323    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4324    pub const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x910A;
4325    #[doc = "`GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910D`"]
4326    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4327    pub const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910D;
4328    #[doc = "`GL_UNSIGNED_INT_SAMPLER_2D_RECT: GLenum = 0x8DD5`"]
4329    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4330    pub const GL_UNSIGNED_INT_SAMPLER_2D_RECT: GLenum = 0x8DD5;
4331    #[doc = "`GL_UNSIGNED_INT_SAMPLER_3D: GLenum = 0x8DD3`"]
4332    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4333    pub const GL_UNSIGNED_INT_SAMPLER_3D: GLenum = 0x8DD3;
4334    #[doc = "`GL_UNSIGNED_INT_SAMPLER_BUFFER: GLenum = 0x8DD8`"]
4335    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4336    pub const GL_UNSIGNED_INT_SAMPLER_BUFFER: GLenum = 0x8DD8;
4337    #[doc = "`GL_UNSIGNED_INT_SAMPLER_CUBE: GLenum = 0x8DD4`"]
4338    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4339    pub const GL_UNSIGNED_INT_SAMPLER_CUBE: GLenum = 0x8DD4;
4340    #[doc = "`GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900F`"]
4341    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4342    pub const GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900F;
4343    #[doc = "`GL_UNSIGNED_INT_VEC2: GLenum = 0x8DC6`"]
4344    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4345    pub const GL_UNSIGNED_INT_VEC2: GLenum = 0x8DC6;
4346    #[doc = "`GL_UNSIGNED_INT_VEC3: GLenum = 0x8DC7`"]
4347    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4348    pub const GL_UNSIGNED_INT_VEC3: GLenum = 0x8DC7;
4349    #[doc = "`GL_UNSIGNED_INT_VEC4: GLenum = 0x8DC8`"]
4350    #[doc = "* **Groups:** GlslTypeToken, AttributeType, UniformType"]
4351    pub const GL_UNSIGNED_INT_VEC4: GLenum = 0x8DC8;
4352    #[doc = "`GL_UNSIGNED_NORMALIZED: GLenum = 0x8C17`"]
4353    pub const GL_UNSIGNED_NORMALIZED: GLenum = 0x8C17;
4354    #[doc = "`GL_UNSIGNED_SHORT: GLenum = 0x1403`"]
4355    #[doc = "* **Groups:** VertexAttribIType, ScalarType, ReplacementCodeTypeSUN, ElementPointerTypeATI, MatrixIndexPointerTypeARB, WeightPointerTypeARB, ColorPointerType, DrawElementsType, ListNameType, PixelFormat, PixelType, VertexAttribType, VertexAttribPointerType"]
4356    pub const GL_UNSIGNED_SHORT: GLenum = 0x1403;
4357    #[doc = "`GL_UNSIGNED_SHORT_1_5_5_5_REV: GLenum = 0x8366`"]
4358    pub const GL_UNSIGNED_SHORT_1_5_5_5_REV: GLenum = 0x8366;
4359    #[doc = "`GL_UNSIGNED_SHORT_4_4_4_4: GLenum = 0x8033`"]
4360    #[doc = "* **Group:** PixelType"]
4361    pub const GL_UNSIGNED_SHORT_4_4_4_4: GLenum = 0x8033;
4362    #[doc = "`GL_UNSIGNED_SHORT_4_4_4_4_REV: GLenum = 0x8365`"]
4363    pub const GL_UNSIGNED_SHORT_4_4_4_4_REV: GLenum = 0x8365;
4364    #[doc = "`GL_UNSIGNED_SHORT_5_5_5_1: GLenum = 0x8034`"]
4365    #[doc = "* **Group:** PixelType"]
4366    pub const GL_UNSIGNED_SHORT_5_5_5_1: GLenum = 0x8034;
4367    #[doc = "`GL_UNSIGNED_SHORT_5_6_5: GLenum = 0x8363`"]
4368    pub const GL_UNSIGNED_SHORT_5_6_5: GLenum = 0x8363;
4369    #[doc = "`GL_UNSIGNED_SHORT_5_6_5_REV: GLenum = 0x8364`"]
4370    pub const GL_UNSIGNED_SHORT_5_6_5_REV: GLenum = 0x8364;
4371    #[doc = "`GL_UPPER_LEFT: GLenum = 0x8CA2`"]
4372    #[doc = "* **Group:** ClipControlOrigin"]
4373    pub const GL_UPPER_LEFT: GLenum = 0x8CA2;
4374    #[doc = "`GL_VALIDATE_STATUS: GLenum = 0x8B83`"]
4375    #[doc = "* **Group:** ProgramPropertyARB"]
4376    pub const GL_VALIDATE_STATUS: GLenum = 0x8B83;
4377    #[doc = "`GL_VENDOR: GLenum = 0x1F00`"]
4378    #[doc = "* **Group:** StringName"]
4379    pub const GL_VENDOR: GLenum = 0x1F00;
4380    #[doc = "`GL_VERSION: GLenum = 0x1F02`"]
4381    #[doc = "* **Group:** StringName"]
4382    pub const GL_VERSION: GLenum = 0x1F02;
4383    #[doc = "`GL_VERTEX_ARRAY: GLenum = 0x8074`"]
4384    #[doc = "* **Groups:** ObjectIdentifier, EnableCap, GetPName"]
4385    pub const GL_VERTEX_ARRAY: GLenum = 0x8074;
4386    #[doc = "`GL_VERTEX_ARRAY_BINDING: GLenum = 0x85B5`"]
4387    #[doc = "* **Group:** GetPName"]
4388    pub const GL_VERTEX_ARRAY_BINDING: GLenum = 0x85B5;
4389    #[doc = "`GL_VERTEX_ARRAY_BINDING_APPLE: GLenum = 0x85B5`"]
4390    pub const GL_VERTEX_ARRAY_BINDING_APPLE: GLenum = 0x85B5;
4391    #[doc = "`GL_VERTEX_ARRAY_BINDING_OES: GLenum = 0x85B5`"]
4392    pub const GL_VERTEX_ARRAY_BINDING_OES: GLenum = 0x85B5;
4393    #[doc = "`GL_VERTEX_ARRAY_KHR: GLenum = 0x8074`"]
4394    pub const GL_VERTEX_ARRAY_KHR: GLenum = 0x8074;
4395    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT: GLbitfield = 0x00000001`"]
4396    #[doc = "* **Group:** MemoryBarrierMask"]
4397    pub const GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT: GLbitfield = 0x00000001;
4398    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum = 0x889F`"]
4399    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB"]
4400    pub const GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum = 0x889F;
4401    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum = 0x88FE`"]
4402    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4403    pub const GL_VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum = 0x88FE;
4404    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB: GLenum = 0x88FE`"]
4405    pub const GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB: GLenum = 0x88FE;
4406    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_ENABLED: GLenum = 0x8622`"]
4407    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4408    pub const GL_VERTEX_ATTRIB_ARRAY_ENABLED: GLenum = 0x8622;
4409    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_INTEGER: GLenum = 0x88FD`"]
4410    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4411    pub const GL_VERTEX_ATTRIB_ARRAY_INTEGER: GLenum = 0x88FD;
4412    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_LONG: GLenum = 0x874E`"]
4413    #[doc = "* **Groups:** VertexArrayPName, VertexAttribPropertyARB"]
4414    pub const GL_VERTEX_ATTRIB_ARRAY_LONG: GLenum = 0x874E;
4415    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum = 0x886A`"]
4416    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4417    pub const GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum = 0x886A;
4418    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_POINTER: GLenum = 0x8645`"]
4419    #[doc = "* **Group:** VertexAttribPointerPropertyARB"]
4420    pub const GL_VERTEX_ATTRIB_ARRAY_POINTER: GLenum = 0x8645;
4421    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_SIZE: GLenum = 0x8623`"]
4422    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4423    pub const GL_VERTEX_ATTRIB_ARRAY_SIZE: GLenum = 0x8623;
4424    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_STRIDE: GLenum = 0x8624`"]
4425    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4426    pub const GL_VERTEX_ATTRIB_ARRAY_STRIDE: GLenum = 0x8624;
4427    #[doc = "`GL_VERTEX_ATTRIB_ARRAY_TYPE: GLenum = 0x8625`"]
4428    #[doc = "* **Groups:** VertexAttribEnum, VertexAttribPropertyARB, VertexArrayPName"]
4429    pub const GL_VERTEX_ATTRIB_ARRAY_TYPE: GLenum = 0x8625;
4430    #[doc = "`GL_VERTEX_ATTRIB_BINDING: GLenum = 0x82D4`"]
4431    #[doc = "* **Group:** VertexAttribPropertyARB"]
4432    pub const GL_VERTEX_ATTRIB_BINDING: GLenum = 0x82D4;
4433    #[doc = "`GL_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D5`"]
4434    #[doc = "* **Groups:** VertexArrayPName, VertexAttribPropertyARB"]
4435    pub const GL_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D5;
4436    #[doc = "`GL_VERTEX_BINDING_BUFFER: GLenum = 0x8F4F`"]
4437    pub const GL_VERTEX_BINDING_BUFFER: GLenum = 0x8F4F;
4438    #[doc = "`GL_VERTEX_BINDING_DIVISOR: GLenum = 0x82D6`"]
4439    #[doc = "* **Group:** GetPName"]
4440    pub const GL_VERTEX_BINDING_DIVISOR: GLenum = 0x82D6;
4441    #[doc = "`GL_VERTEX_BINDING_OFFSET: GLenum = 0x82D7`"]
4442    #[doc = "* **Group:** GetPName"]
4443    pub const GL_VERTEX_BINDING_OFFSET: GLenum = 0x82D7;
4444    #[doc = "`GL_VERTEX_BINDING_STRIDE: GLenum = 0x82D8`"]
4445    #[doc = "* **Group:** GetPName"]
4446    pub const GL_VERTEX_BINDING_STRIDE: GLenum = 0x82D8;
4447    #[doc = "`GL_VERTEX_PROGRAM_POINT_SIZE: GLenum = 0x8642`"]
4448    pub const GL_VERTEX_PROGRAM_POINT_SIZE: GLenum = 0x8642;
4449    #[doc = "`GL_VERTEX_SHADER: GLenum = 0x8B31`"]
4450    #[doc = "* **Groups:** PipelineParameterName, ShaderType"]
4451    pub const GL_VERTEX_SHADER: GLenum = 0x8B31;
4452    #[doc = "`GL_VERTEX_SHADER_BIT: GLbitfield = 0x00000001`"]
4453    #[doc = "* **Group:** UseProgramStageMask"]
4454    pub const GL_VERTEX_SHADER_BIT: GLbitfield = 0x00000001;
4455    #[doc = "`GL_VERTEX_SHADER_INVOCATIONS: GLenum = 0x82F0`"]
4456    #[doc = "* **Group:** QueryTarget"]
4457    pub const GL_VERTEX_SHADER_INVOCATIONS: GLenum = 0x82F0;
4458    #[doc = "`GL_VERTEX_SUBROUTINE: GLenum = 0x92E8`"]
4459    #[doc = "* **Group:** ProgramInterface"]
4460    pub const GL_VERTEX_SUBROUTINE: GLenum = 0x92E8;
4461    #[doc = "`GL_VERTEX_SUBROUTINE_UNIFORM: GLenum = 0x92EE`"]
4462    #[doc = "* **Group:** ProgramInterface"]
4463    pub const GL_VERTEX_SUBROUTINE_UNIFORM: GLenum = 0x92EE;
4464    #[doc = "`GL_VERTEX_TEXTURE: GLenum = 0x829B`"]
4465    #[doc = "* **Group:** InternalFormatPName"]
4466    pub const GL_VERTEX_TEXTURE: GLenum = 0x829B;
4467    #[doc = "`GL_VERTICES_SUBMITTED: GLenum = 0x82EE`"]
4468    #[doc = "* **Group:** QueryTarget"]
4469    pub const GL_VERTICES_SUBMITTED: GLenum = 0x82EE;
4470    #[doc = "`GL_VIEWPORT: GLenum = 0x0BA2`"]
4471    #[doc = "* **Group:** GetPName"]
4472    pub const GL_VIEWPORT: GLenum = 0x0BA2;
4473    #[doc = "`GL_VIEWPORT_BOUNDS_RANGE: GLenum = 0x825D`"]
4474    #[doc = "* **Group:** GetPName"]
4475    pub const GL_VIEWPORT_BOUNDS_RANGE: GLenum = 0x825D;
4476    #[doc = "`GL_VIEWPORT_INDEX_PROVOKING_VERTEX: GLenum = 0x825F`"]
4477    #[doc = "* **Group:** GetPName"]
4478    pub const GL_VIEWPORT_INDEX_PROVOKING_VERTEX: GLenum = 0x825F;
4479    #[doc = "`GL_VIEWPORT_SUBPIXEL_BITS: GLenum = 0x825C`"]
4480    #[doc = "* **Group:** GetPName"]
4481    pub const GL_VIEWPORT_SUBPIXEL_BITS: GLenum = 0x825C;
4482    #[doc = "`GL_VIEW_CLASS_128_BITS: GLenum = 0x82C4`"]
4483    pub const GL_VIEW_CLASS_128_BITS: GLenum = 0x82C4;
4484    #[doc = "`GL_VIEW_CLASS_16_BITS: GLenum = 0x82CA`"]
4485    pub const GL_VIEW_CLASS_16_BITS: GLenum = 0x82CA;
4486    #[doc = "`GL_VIEW_CLASS_24_BITS: GLenum = 0x82C9`"]
4487    pub const GL_VIEW_CLASS_24_BITS: GLenum = 0x82C9;
4488    #[doc = "`GL_VIEW_CLASS_32_BITS: GLenum = 0x82C8`"]
4489    pub const GL_VIEW_CLASS_32_BITS: GLenum = 0x82C8;
4490    #[doc = "`GL_VIEW_CLASS_48_BITS: GLenum = 0x82C7`"]
4491    pub const GL_VIEW_CLASS_48_BITS: GLenum = 0x82C7;
4492    #[doc = "`GL_VIEW_CLASS_64_BITS: GLenum = 0x82C6`"]
4493    pub const GL_VIEW_CLASS_64_BITS: GLenum = 0x82C6;
4494    #[doc = "`GL_VIEW_CLASS_8_BITS: GLenum = 0x82CB`"]
4495    pub const GL_VIEW_CLASS_8_BITS: GLenum = 0x82CB;
4496    #[doc = "`GL_VIEW_CLASS_96_BITS: GLenum = 0x82C5`"]
4497    pub const GL_VIEW_CLASS_96_BITS: GLenum = 0x82C5;
4498    #[doc = "`GL_VIEW_CLASS_BPTC_FLOAT: GLenum = 0x82D3`"]
4499    pub const GL_VIEW_CLASS_BPTC_FLOAT: GLenum = 0x82D3;
4500    #[doc = "`GL_VIEW_CLASS_BPTC_UNORM: GLenum = 0x82D2`"]
4501    pub const GL_VIEW_CLASS_BPTC_UNORM: GLenum = 0x82D2;
4502    #[doc = "`GL_VIEW_CLASS_RGTC1_RED: GLenum = 0x82D0`"]
4503    pub const GL_VIEW_CLASS_RGTC1_RED: GLenum = 0x82D0;
4504    #[doc = "`GL_VIEW_CLASS_RGTC2_RG: GLenum = 0x82D1`"]
4505    pub const GL_VIEW_CLASS_RGTC2_RG: GLenum = 0x82D1;
4506    #[doc = "`GL_VIEW_CLASS_S3TC_DXT1_RGB: GLenum = 0x82CC`"]
4507    pub const GL_VIEW_CLASS_S3TC_DXT1_RGB: GLenum = 0x82CC;
4508    #[doc = "`GL_VIEW_CLASS_S3TC_DXT1_RGBA: GLenum = 0x82CD`"]
4509    pub const GL_VIEW_CLASS_S3TC_DXT1_RGBA: GLenum = 0x82CD;
4510    #[doc = "`GL_VIEW_CLASS_S3TC_DXT3_RGBA: GLenum = 0x82CE`"]
4511    pub const GL_VIEW_CLASS_S3TC_DXT3_RGBA: GLenum = 0x82CE;
4512    #[doc = "`GL_VIEW_CLASS_S3TC_DXT5_RGBA: GLenum = 0x82CF`"]
4513    pub const GL_VIEW_CLASS_S3TC_DXT5_RGBA: GLenum = 0x82CF;
4514    #[doc = "`GL_VIEW_COMPATIBILITY_CLASS: GLenum = 0x82B6`"]
4515    #[doc = "* **Group:** InternalFormatPName"]
4516    pub const GL_VIEW_COMPATIBILITY_CLASS: GLenum = 0x82B6;
4517    #[doc = "`GL_WAIT_FAILED: GLenum = 0x911D`"]
4518    #[doc = "* **Group:** SyncStatus"]
4519    pub const GL_WAIT_FAILED: GLenum = 0x911D;
4520    #[doc = "`GL_WRITE_ONLY: GLenum = 0x88B9`"]
4521    #[doc = "* **Group:** BufferAccessARB"]
4522    pub const GL_WRITE_ONLY: GLenum = 0x88B9;
4523    #[doc = "`GL_XOR: GLenum = 0x1506`"]
4524    #[doc = "* **Group:** LogicOp"]
4525    pub const GL_XOR: GLenum = 0x1506;
4526    #[doc = "`GL_ZERO: GLenum = 0`"]
4527    #[doc = "* **Groups:** TextureSwizzle, StencilOp, BlendingFactor"]
4528    pub const GL_ZERO: GLenum = 0;
4529    #[doc = "`GL_ZERO_TO_ONE: GLenum = 0x935F`"]
4530    #[doc = "* **Group:** ClipControlDepth"]
4531    pub const GL_ZERO_TO_ONE: GLenum = 0x935F;
4532}
4533
4534/// This is called to panic when a not-loaded function is attempted.
4535///
4536/// Placing the panic mechanism in this cold function generally helps code generation for the hot path.
4537/// Or so the sages say, at least.
4538#[cold]
4539#[inline(never)]
4540#[allow(dead_code)]
4541fn go_panic_because_fn_not_loaded(name: &str) -> ! {
4542    panic!("called {name} but it was not loaded.", name = name)
4543}
4544
4545/// Loads a function pointer.
4546/// Rejects suggested pointer addresses which are likely to be lies.
4547/// This function is used by both the global loader and struct loader.
4548/// We mark it as `inline(never)` to favor a small binary over initialization speed.
4549/// Returns if there's now a non-null value in the atomic pointer.
4550#[inline(never)]
4551#[allow(dead_code)]
4552fn load_dyn_name_atomic_ptr(
4553    get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
4554    fn_name: &[u8],
4555    ptr: &APcv,
4556) -> bool {
4557    // if this fails the code generator itself royally screwed up somehow,
4558    // and so it's only a debug assert.
4559    debug_assert_eq!(*fn_name.last().unwrap(), 0);
4560    let p: *mut c_void = get_proc_address(fn_name.as_ptr() as *const c_char);
4561    let p_usize = p as usize;
4562    // You *should* get null for failed lookups, but some systems have been
4563    // reported to give "error code" values such as -1 or small non-null values.
4564    // To help guard against this silliness, we consider these values to also
4565    // just be a result of null.
4566    if p_usize == core::usize::MAX || p_usize < 8 {
4567        ptr.store(null_mut(), RELAX);
4568        false
4569    } else {
4570        ptr.store(p, RELAX);
4571        true
4572    }
4573}
4574
4575/// Returns if an error was printed.
4576#[cfg(feature = "debug_automatic_glGetError")]
4577#[inline(never)]
4578fn report_error_code_from(name: &str, err: GLenum) {
4579    match err {
4580        GL_NO_ERROR => return,
4581        GL_INVALID_ENUM => error!("Invalid Enum to {name}.", name = name),
4582        GL_INVALID_VALUE => error!("Invalid Value to {name}.", name = name),
4583        GL_INVALID_OPERATION => error!("Invalid Operation to {name}.", name = name),
4584        GL_INVALID_FRAMEBUFFER_OPERATION => {
4585            error!("Invalid Framebuffer Operation to {name}.", name = name)
4586        }
4587        GL_OUT_OF_MEMORY => error!("Out of Memory in {name}.", name = name),
4588        GL_STACK_UNDERFLOW => error!("Stack Underflow in {name}.", name = name),
4589        GL_STACK_OVERFLOW => error!("Stack Overflow in {name}.", name = name),
4590        unknown => error!(
4591            "Unknown error code {unknown} to {name}.",
4592            name = name,
4593            unknown = unknown
4594        ),
4595    }
4596}
4597
4598#[inline(always)]
4599#[allow(dead_code)]
4600unsafe fn call_atomic_ptr_0arg<Ret>(name: &str, ptr: &APcv) -> Ret {
4601    let p = ptr.load(RELAX);
4602    match transmute::<*mut c_void, Option<extern "system" fn() -> Ret>>(p) {
4603        Some(fn_p) => fn_p(),
4604        None => go_panic_because_fn_not_loaded(name),
4605    }
4606}
4607
4608#[inline(always)]
4609#[allow(dead_code)]
4610unsafe fn call_atomic_ptr_1arg<Ret, A>(name: &str, ptr: &APcv, a: A) -> Ret {
4611    let p = ptr.load(RELAX);
4612    match transmute::<*mut c_void, Option<extern "system" fn(A) -> Ret>>(p) {
4613        Some(fn_p) => fn_p(a),
4614        None => go_panic_because_fn_not_loaded(name),
4615    }
4616}
4617
4618#[inline(always)]
4619#[allow(dead_code)]
4620unsafe fn call_atomic_ptr_2arg<Ret, A, B>(name: &str, ptr: &APcv, a: A, b: B) -> Ret {
4621    let p = ptr.load(RELAX);
4622    match transmute::<*mut c_void, Option<extern "system" fn(A, B) -> Ret>>(p) {
4623        Some(fn_p) => fn_p(a, b),
4624        None => go_panic_because_fn_not_loaded(name),
4625    }
4626}
4627
4628#[inline(always)]
4629#[allow(dead_code)]
4630unsafe fn call_atomic_ptr_3arg<Ret, A, B, C>(name: &str, ptr: &APcv, a: A, b: B, c: C) -> Ret {
4631    let p = ptr.load(RELAX);
4632    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C) -> Ret>>(p) {
4633        Some(fn_p) => fn_p(a, b, c),
4634        None => go_panic_because_fn_not_loaded(name),
4635    }
4636}
4637
4638#[inline(always)]
4639#[allow(dead_code)]
4640unsafe fn call_atomic_ptr_4arg<Ret, A, B, C, D>(
4641    name: &str,
4642    ptr: &APcv,
4643    a: A,
4644    b: B,
4645    c: C,
4646    d: D,
4647) -> Ret {
4648    let p = ptr.load(RELAX);
4649    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D) -> Ret>>(p) {
4650        Some(fn_p) => fn_p(a, b, c, d),
4651        None => go_panic_because_fn_not_loaded(name),
4652    }
4653}
4654
4655#[inline(always)]
4656#[allow(dead_code)]
4657unsafe fn call_atomic_ptr_5arg<Ret, A, B, C, D, E>(
4658    name: &str,
4659    ptr: &APcv,
4660    a: A,
4661    b: B,
4662    c: C,
4663    d: D,
4664    e: E,
4665) -> Ret {
4666    let p = ptr.load(RELAX);
4667    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E) -> Ret>>(p) {
4668        Some(fn_p) => fn_p(a, b, c, d, e),
4669        None => go_panic_because_fn_not_loaded(name),
4670    }
4671}
4672
4673#[inline(always)]
4674#[allow(dead_code)]
4675unsafe fn call_atomic_ptr_6arg<Ret, A, B, C, D, E, F>(
4676    name: &str,
4677    ptr: &APcv,
4678    a: A,
4679    b: B,
4680    c: C,
4681    d: D,
4682    e: E,
4683    f: F,
4684) -> Ret {
4685    let p = ptr.load(RELAX);
4686    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F) -> Ret>>(p) {
4687        Some(fn_p) => fn_p(a, b, c, d, e, f),
4688        None => go_panic_because_fn_not_loaded(name),
4689    }
4690}
4691
4692#[inline(always)]
4693#[allow(dead_code)]
4694unsafe fn call_atomic_ptr_7arg<Ret, A, B, C, D, E, F, G>(
4695    name: &str,
4696    ptr: &APcv,
4697    a: A,
4698    b: B,
4699    c: C,
4700    d: D,
4701    e: E,
4702    f: F,
4703    g: G,
4704) -> Ret {
4705    let p = ptr.load(RELAX);
4706    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F, G) -> Ret>>(p) {
4707        Some(fn_p) => fn_p(a, b, c, d, e, f, g),
4708        None => go_panic_because_fn_not_loaded(name),
4709    }
4710}
4711
4712#[inline(always)]
4713#[allow(dead_code)]
4714unsafe fn call_atomic_ptr_8arg<Ret, A, B, C, D, E, F, G, H>(
4715    name: &str,
4716    ptr: &APcv,
4717    a: A,
4718    b: B,
4719    c: C,
4720    d: D,
4721    e: E,
4722    f: F,
4723    g: G,
4724    h: H,
4725) -> Ret {
4726    let p = ptr.load(RELAX);
4727    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F, G, H) -> Ret>>(p) {
4728        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h),
4729        None => go_panic_because_fn_not_loaded(name),
4730    }
4731}
4732
4733#[inline(always)]
4734#[allow(dead_code)]
4735unsafe fn call_atomic_ptr_9arg<Ret, A, B, C, D, E, F, G, H, I>(
4736    name: &str,
4737    ptr: &APcv,
4738    a: A,
4739    b: B,
4740    c: C,
4741    d: D,
4742    e: E,
4743    f: F,
4744    g: G,
4745    h: H,
4746    i: I,
4747) -> Ret {
4748    let p = ptr.load(RELAX);
4749    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F, G, H, I) -> Ret>>(p)
4750    {
4751        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h, i),
4752        None => go_panic_because_fn_not_loaded(name),
4753    }
4754}
4755
4756#[inline(always)]
4757#[allow(dead_code)]
4758unsafe fn call_atomic_ptr_10arg<Ret, A, B, C, D, E, F, G, H, I, J>(
4759    name: &str,
4760    ptr: &APcv,
4761    a: A,
4762    b: B,
4763    c: C,
4764    d: D,
4765    e: E,
4766    f: F,
4767    g: G,
4768    h: H,
4769    i: I,
4770    j: J,
4771) -> Ret {
4772    let p = ptr.load(RELAX);
4773    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F, G, H, I, J) -> Ret>>(
4774        p,
4775    ) {
4776        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h, i, j),
4777        None => go_panic_because_fn_not_loaded(name),
4778    }
4779}
4780
4781#[inline(always)]
4782#[allow(dead_code)]
4783unsafe fn call_atomic_ptr_11arg<Ret, A, B, C, D, E, F, G, H, I, J, K>(
4784    name: &str,
4785    ptr: &APcv,
4786    a: A,
4787    b: B,
4788    c: C,
4789    d: D,
4790    e: E,
4791    f: F,
4792    g: G,
4793    h: H,
4794    i: I,
4795    j: J,
4796    k: K,
4797) -> Ret {
4798    let p = ptr.load(RELAX);
4799    match transmute::<*mut c_void, Option<extern "system" fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret>>(
4800        p,
4801    ) {
4802        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h, i, j, k),
4803        None => go_panic_because_fn_not_loaded(name),
4804    }
4805}
4806
4807#[inline(always)]
4808#[allow(dead_code)]
4809unsafe fn call_atomic_ptr_12arg<Ret, A, B, C, D, E, F, G, H, I, J, K, L>(
4810    name: &str,
4811    ptr: &APcv,
4812    a: A,
4813    b: B,
4814    c: C,
4815    d: D,
4816    e: E,
4817    f: F,
4818    g: G,
4819    h: H,
4820    i: I,
4821    j: J,
4822    k: K,
4823    l: L,
4824) -> Ret {
4825    let p = ptr.load(RELAX);
4826    match transmute::<
4827        *mut c_void,
4828        Option<extern "system" fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret>,
4829    >(p)
4830    {
4831        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h, i, j, k, l),
4832        None => go_panic_because_fn_not_loaded(name),
4833    }
4834}
4835
4836#[inline(always)]
4837#[allow(dead_code)]
4838unsafe fn call_atomic_ptr_15arg<Ret, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(
4839    name: &str,
4840    ptr: &APcv,
4841    a: A,
4842    b: B,
4843    c: C,
4844    d: D,
4845    e: E,
4846    f: F,
4847    g: G,
4848    h: H,
4849    i: I,
4850    j: J,
4851    k: K,
4852    l: L,
4853    m: M,
4854    n: N,
4855    o: O,
4856) -> Ret {
4857    let p = ptr.load(RELAX);
4858    match transmute::<
4859        *mut c_void,
4860        Option<extern "system" fn(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) -> Ret>,
4861    >(p)
4862    {
4863        Some(fn_p) => fn_p(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o),
4864        None => go_panic_because_fn_not_loaded(name),
4865    }
4866}
4867
4868pub use struct_commands::*;
4869pub mod struct_commands {
4870    //! Contains the [`GlFns`] type for using the struct GL loader.
4871    use super::*;
4872    impl GlFns {
4873        /// Constructs a new struct with all pointers loaded by the `get_proc_address` given.
4874        pub unsafe fn load_with<F>(mut get_proc_address: F) -> Self
4875        where
4876            F: FnMut(*const c_char) -> *mut c_void,
4877        {
4878            // Safety: The `GlFns` struct is nothing but `AtomicPtr` fields,
4879            // which can be safely constructed with `zeroed`.
4880            let out: Self = core::mem::zeroed();
4881            out.load_all_with_dyn(&mut get_proc_address);
4882            out
4883        }
4884
4885        #[cfg(feature = "debug_automatic_glGetError")]
4886        #[inline(never)]
4887        unsafe fn automatic_glGetError(&self, name: &str) {
4888            let mut err = self.GetError();
4889            while err != GL_NO_ERROR {
4890                report_error_code_from(name, err);
4891                err = self.GetError();
4892            }
4893        }
4894
4895        /// Loads all pointers using the `get_proc_address` given.
4896        #[doc(hidden)]
4897        #[inline(never)]
4898        pub unsafe fn load_all_with_dyn(
4899            &self,
4900            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
4901        ) {
4902            self.ActiveShaderProgram_load_with_dyn(get_proc_address);
4903            self.ActiveTexture_load_with_dyn(get_proc_address);
4904            self.AttachShader_load_with_dyn(get_proc_address);
4905            self.BeginConditionalRender_load_with_dyn(get_proc_address);
4906            self.BeginQuery_load_with_dyn(get_proc_address);
4907            {
4908                self.BeginQueryEXT_load_with_dyn(get_proc_address);
4909            }
4910            self.BeginQueryIndexed_load_with_dyn(get_proc_address);
4911            self.BeginTransformFeedback_load_with_dyn(get_proc_address);
4912            self.BindAttribLocation_load_with_dyn(get_proc_address);
4913            self.BindBuffer_load_with_dyn(get_proc_address);
4914            self.BindBufferBase_load_with_dyn(get_proc_address);
4915            self.BindBufferRange_load_with_dyn(get_proc_address);
4916            self.BindBuffersBase_load_with_dyn(get_proc_address);
4917            self.BindBuffersRange_load_with_dyn(get_proc_address);
4918            self.BindFragDataLocation_load_with_dyn(get_proc_address);
4919            self.BindFragDataLocationIndexed_load_with_dyn(get_proc_address);
4920            self.BindFramebuffer_load_with_dyn(get_proc_address);
4921            self.BindImageTexture_load_with_dyn(get_proc_address);
4922            self.BindImageTextures_load_with_dyn(get_proc_address);
4923            self.BindProgramPipeline_load_with_dyn(get_proc_address);
4924            self.BindRenderbuffer_load_with_dyn(get_proc_address);
4925            self.BindSampler_load_with_dyn(get_proc_address);
4926            self.BindSamplers_load_with_dyn(get_proc_address);
4927            self.BindTexture_load_with_dyn(get_proc_address);
4928            self.BindTextureUnit_load_with_dyn(get_proc_address);
4929            self.BindTextures_load_with_dyn(get_proc_address);
4930            self.BindTransformFeedback_load_with_dyn(get_proc_address);
4931            self.BindVertexArray_load_with_dyn(get_proc_address);
4932            {
4933                self.BindVertexArrayAPPLE_load_with_dyn(get_proc_address);
4934            }
4935            {
4936                self.BindVertexArrayOES_load_with_dyn(get_proc_address);
4937            }
4938            self.BindVertexBuffer_load_with_dyn(get_proc_address);
4939            self.BindVertexBuffers_load_with_dyn(get_proc_address);
4940            self.BlendBarrier_load_with_dyn(get_proc_address);
4941            self.BlendColor_load_with_dyn(get_proc_address);
4942            self.BlendEquation_load_with_dyn(get_proc_address);
4943            self.BlendEquationSeparate_load_with_dyn(get_proc_address);
4944            self.BlendEquationSeparatei_load_with_dyn(get_proc_address);
4945            self.BlendEquationi_load_with_dyn(get_proc_address);
4946            self.BlendFunc_load_with_dyn(get_proc_address);
4947            self.BlendFuncSeparate_load_with_dyn(get_proc_address);
4948            self.BlendFuncSeparatei_load_with_dyn(get_proc_address);
4949            self.BlendFunci_load_with_dyn(get_proc_address);
4950            self.BlitFramebuffer_load_with_dyn(get_proc_address);
4951            self.BlitNamedFramebuffer_load_with_dyn(get_proc_address);
4952            self.BufferData_load_with_dyn(get_proc_address);
4953            self.BufferStorage_load_with_dyn(get_proc_address);
4954            {
4955                self.BufferStorageEXT_load_with_dyn(get_proc_address);
4956            }
4957            self.BufferSubData_load_with_dyn(get_proc_address);
4958            self.CheckFramebufferStatus_load_with_dyn(get_proc_address);
4959            self.CheckNamedFramebufferStatus_load_with_dyn(get_proc_address);
4960            self.ClampColor_load_with_dyn(get_proc_address);
4961            self.Clear_load_with_dyn(get_proc_address);
4962            self.ClearBufferData_load_with_dyn(get_proc_address);
4963            self.ClearBufferSubData_load_with_dyn(get_proc_address);
4964            self.ClearBufferfi_load_with_dyn(get_proc_address);
4965            self.ClearBufferfv_load_with_dyn(get_proc_address);
4966            self.ClearBufferiv_load_with_dyn(get_proc_address);
4967            self.ClearBufferuiv_load_with_dyn(get_proc_address);
4968            self.ClearColor_load_with_dyn(get_proc_address);
4969            self.ClearDepth_load_with_dyn(get_proc_address);
4970            self.ClearDepthf_load_with_dyn(get_proc_address);
4971            self.ClearNamedBufferData_load_with_dyn(get_proc_address);
4972            self.ClearNamedBufferSubData_load_with_dyn(get_proc_address);
4973            self.ClearNamedFramebufferfi_load_with_dyn(get_proc_address);
4974            self.ClearNamedFramebufferfv_load_with_dyn(get_proc_address);
4975            self.ClearNamedFramebufferiv_load_with_dyn(get_proc_address);
4976            self.ClearNamedFramebufferuiv_load_with_dyn(get_proc_address);
4977            self.ClearStencil_load_with_dyn(get_proc_address);
4978            self.ClearTexImage_load_with_dyn(get_proc_address);
4979            self.ClearTexSubImage_load_with_dyn(get_proc_address);
4980            self.ClientWaitSync_load_with_dyn(get_proc_address);
4981            self.ClipControl_load_with_dyn(get_proc_address);
4982            self.ColorMask_load_with_dyn(get_proc_address);
4983            {
4984                self.ColorMaskIndexedEXT_load_with_dyn(get_proc_address);
4985            }
4986            self.ColorMaski_load_with_dyn(get_proc_address);
4987            self.CompileShader_load_with_dyn(get_proc_address);
4988            self.CompressedTexImage1D_load_with_dyn(get_proc_address);
4989            self.CompressedTexImage2D_load_with_dyn(get_proc_address);
4990            self.CompressedTexImage3D_load_with_dyn(get_proc_address);
4991            self.CompressedTexSubImage1D_load_with_dyn(get_proc_address);
4992            self.CompressedTexSubImage2D_load_with_dyn(get_proc_address);
4993            self.CompressedTexSubImage3D_load_with_dyn(get_proc_address);
4994            self.CompressedTextureSubImage1D_load_with_dyn(get_proc_address);
4995            self.CompressedTextureSubImage2D_load_with_dyn(get_proc_address);
4996            self.CompressedTextureSubImage3D_load_with_dyn(get_proc_address);
4997            self.CopyBufferSubData_load_with_dyn(get_proc_address);
4998            {
4999                self.CopyBufferSubDataNV_load_with_dyn(get_proc_address);
5000            }
5001            self.CopyImageSubData_load_with_dyn(get_proc_address);
5002            self.CopyNamedBufferSubData_load_with_dyn(get_proc_address);
5003            self.CopyTexImage1D_load_with_dyn(get_proc_address);
5004            self.CopyTexImage2D_load_with_dyn(get_proc_address);
5005            self.CopyTexSubImage1D_load_with_dyn(get_proc_address);
5006            self.CopyTexSubImage2D_load_with_dyn(get_proc_address);
5007            self.CopyTexSubImage3D_load_with_dyn(get_proc_address);
5008            self.CopyTextureSubImage1D_load_with_dyn(get_proc_address);
5009            self.CopyTextureSubImage2D_load_with_dyn(get_proc_address);
5010            self.CopyTextureSubImage3D_load_with_dyn(get_proc_address);
5011            self.CreateBuffers_load_with_dyn(get_proc_address);
5012            self.CreateFramebuffers_load_with_dyn(get_proc_address);
5013            self.CreateProgram_load_with_dyn(get_proc_address);
5014            self.CreateProgramPipelines_load_with_dyn(get_proc_address);
5015            self.CreateQueries_load_with_dyn(get_proc_address);
5016            self.CreateRenderbuffers_load_with_dyn(get_proc_address);
5017            self.CreateSamplers_load_with_dyn(get_proc_address);
5018            self.CreateShader_load_with_dyn(get_proc_address);
5019            self.CreateShaderProgramv_load_with_dyn(get_proc_address);
5020            self.CreateTextures_load_with_dyn(get_proc_address);
5021            self.CreateTransformFeedbacks_load_with_dyn(get_proc_address);
5022            self.CreateVertexArrays_load_with_dyn(get_proc_address);
5023            self.CullFace_load_with_dyn(get_proc_address);
5024            self.DebugMessageCallback_load_with_dyn(get_proc_address);
5025            {
5026                self.DebugMessageCallbackARB_load_with_dyn(get_proc_address);
5027            }
5028            {
5029                self.DebugMessageCallbackKHR_load_with_dyn(get_proc_address);
5030            }
5031            self.DebugMessageControl_load_with_dyn(get_proc_address);
5032            {
5033                self.DebugMessageControlARB_load_with_dyn(get_proc_address);
5034            }
5035            {
5036                self.DebugMessageControlKHR_load_with_dyn(get_proc_address);
5037            }
5038            self.DebugMessageInsert_load_with_dyn(get_proc_address);
5039            {
5040                self.DebugMessageInsertARB_load_with_dyn(get_proc_address);
5041            }
5042            {
5043                self.DebugMessageInsertKHR_load_with_dyn(get_proc_address);
5044            }
5045            self.DeleteBuffers_load_with_dyn(get_proc_address);
5046            self.DeleteFramebuffers_load_with_dyn(get_proc_address);
5047            self.DeleteProgram_load_with_dyn(get_proc_address);
5048            self.DeleteProgramPipelines_load_with_dyn(get_proc_address);
5049            self.DeleteQueries_load_with_dyn(get_proc_address);
5050            {
5051                self.DeleteQueriesEXT_load_with_dyn(get_proc_address);
5052            }
5053            self.DeleteRenderbuffers_load_with_dyn(get_proc_address);
5054            self.DeleteSamplers_load_with_dyn(get_proc_address);
5055            self.DeleteShader_load_with_dyn(get_proc_address);
5056            self.DeleteSync_load_with_dyn(get_proc_address);
5057            self.DeleteTextures_load_with_dyn(get_proc_address);
5058            self.DeleteTransformFeedbacks_load_with_dyn(get_proc_address);
5059            self.DeleteVertexArrays_load_with_dyn(get_proc_address);
5060            {
5061                self.DeleteVertexArraysAPPLE_load_with_dyn(get_proc_address);
5062            }
5063            {
5064                self.DeleteVertexArraysOES_load_with_dyn(get_proc_address);
5065            }
5066            self.DepthFunc_load_with_dyn(get_proc_address);
5067            self.DepthMask_load_with_dyn(get_proc_address);
5068            self.DepthRange_load_with_dyn(get_proc_address);
5069            self.DepthRangeArrayv_load_with_dyn(get_proc_address);
5070            self.DepthRangeIndexed_load_with_dyn(get_proc_address);
5071            self.DepthRangef_load_with_dyn(get_proc_address);
5072            self.DetachShader_load_with_dyn(get_proc_address);
5073            self.Disable_load_with_dyn(get_proc_address);
5074            {
5075                self.DisableIndexedEXT_load_with_dyn(get_proc_address);
5076            }
5077            self.DisableVertexArrayAttrib_load_with_dyn(get_proc_address);
5078            self.DisableVertexAttribArray_load_with_dyn(get_proc_address);
5079            self.Disablei_load_with_dyn(get_proc_address);
5080            self.DispatchCompute_load_with_dyn(get_proc_address);
5081            self.DispatchComputeIndirect_load_with_dyn(get_proc_address);
5082            self.DrawArrays_load_with_dyn(get_proc_address);
5083            self.DrawArraysIndirect_load_with_dyn(get_proc_address);
5084            self.DrawArraysInstanced_load_with_dyn(get_proc_address);
5085            {
5086                self.DrawArraysInstancedARB_load_with_dyn(get_proc_address);
5087            }
5088            self.DrawArraysInstancedBaseInstance_load_with_dyn(get_proc_address);
5089            self.DrawBuffer_load_with_dyn(get_proc_address);
5090            self.DrawBuffers_load_with_dyn(get_proc_address);
5091            self.DrawElements_load_with_dyn(get_proc_address);
5092            self.DrawElementsBaseVertex_load_with_dyn(get_proc_address);
5093            self.DrawElementsIndirect_load_with_dyn(get_proc_address);
5094            self.DrawElementsInstanced_load_with_dyn(get_proc_address);
5095            {
5096                self.DrawElementsInstancedARB_load_with_dyn(get_proc_address);
5097            }
5098            self.DrawElementsInstancedBaseInstance_load_with_dyn(get_proc_address);
5099            self.DrawElementsInstancedBaseVertex_load_with_dyn(get_proc_address);
5100            self.DrawElementsInstancedBaseVertexBaseInstance_load_with_dyn(get_proc_address);
5101            self.DrawRangeElements_load_with_dyn(get_proc_address);
5102            self.DrawRangeElementsBaseVertex_load_with_dyn(get_proc_address);
5103            self.DrawTransformFeedback_load_with_dyn(get_proc_address);
5104            self.DrawTransformFeedbackInstanced_load_with_dyn(get_proc_address);
5105            self.DrawTransformFeedbackStream_load_with_dyn(get_proc_address);
5106            self.DrawTransformFeedbackStreamInstanced_load_with_dyn(get_proc_address);
5107            self.Enable_load_with_dyn(get_proc_address);
5108            {
5109                self.EnableIndexedEXT_load_with_dyn(get_proc_address);
5110            }
5111            self.EnableVertexArrayAttrib_load_with_dyn(get_proc_address);
5112            self.EnableVertexAttribArray_load_with_dyn(get_proc_address);
5113            self.Enablei_load_with_dyn(get_proc_address);
5114            self.EndConditionalRender_load_with_dyn(get_proc_address);
5115            self.EndQuery_load_with_dyn(get_proc_address);
5116            {
5117                self.EndQueryEXT_load_with_dyn(get_proc_address);
5118            }
5119            self.EndQueryIndexed_load_with_dyn(get_proc_address);
5120            self.EndTransformFeedback_load_with_dyn(get_proc_address);
5121            self.FenceSync_load_with_dyn(get_proc_address);
5122            self.Finish_load_with_dyn(get_proc_address);
5123            self.Flush_load_with_dyn(get_proc_address);
5124            self.FlushMappedBufferRange_load_with_dyn(get_proc_address);
5125            self.FlushMappedNamedBufferRange_load_with_dyn(get_proc_address);
5126            self.FramebufferParameteri_load_with_dyn(get_proc_address);
5127            self.FramebufferRenderbuffer_load_with_dyn(get_proc_address);
5128            self.FramebufferTexture_load_with_dyn(get_proc_address);
5129            self.FramebufferTexture1D_load_with_dyn(get_proc_address);
5130            self.FramebufferTexture2D_load_with_dyn(get_proc_address);
5131            #[cfg_attr(
5132                docs_rs,
5133                doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
5134            )]
5135            {
5136                self.FramebufferTexture2DMultisampleEXT_load_with_dyn(get_proc_address);
5137            }
5138            self.FramebufferTexture3D_load_with_dyn(get_proc_address);
5139            self.FramebufferTextureLayer_load_with_dyn(get_proc_address);
5140            self.FrontFace_load_with_dyn(get_proc_address);
5141            self.GenBuffers_load_with_dyn(get_proc_address);
5142            self.GenFramebuffers_load_with_dyn(get_proc_address);
5143            self.GenProgramPipelines_load_with_dyn(get_proc_address);
5144            self.GenQueries_load_with_dyn(get_proc_address);
5145            {
5146                self.GenQueriesEXT_load_with_dyn(get_proc_address);
5147            }
5148            self.GenRenderbuffers_load_with_dyn(get_proc_address);
5149            self.GenSamplers_load_with_dyn(get_proc_address);
5150            self.GenTextures_load_with_dyn(get_proc_address);
5151            self.GenTransformFeedbacks_load_with_dyn(get_proc_address);
5152            self.GenVertexArrays_load_with_dyn(get_proc_address);
5153            {
5154                self.GenVertexArraysAPPLE_load_with_dyn(get_proc_address);
5155            }
5156            {
5157                self.GenVertexArraysOES_load_with_dyn(get_proc_address);
5158            }
5159            self.GenerateMipmap_load_with_dyn(get_proc_address);
5160            self.GenerateTextureMipmap_load_with_dyn(get_proc_address);
5161            self.GetActiveAtomicCounterBufferiv_load_with_dyn(get_proc_address);
5162            self.GetActiveAttrib_load_with_dyn(get_proc_address);
5163            self.GetActiveSubroutineName_load_with_dyn(get_proc_address);
5164            self.GetActiveSubroutineUniformName_load_with_dyn(get_proc_address);
5165            self.GetActiveSubroutineUniformiv_load_with_dyn(get_proc_address);
5166            self.GetActiveUniform_load_with_dyn(get_proc_address);
5167            self.GetActiveUniformBlockName_load_with_dyn(get_proc_address);
5168            self.GetActiveUniformBlockiv_load_with_dyn(get_proc_address);
5169            self.GetActiveUniformName_load_with_dyn(get_proc_address);
5170            self.GetActiveUniformsiv_load_with_dyn(get_proc_address);
5171            self.GetAttachedShaders_load_with_dyn(get_proc_address);
5172            self.GetAttribLocation_load_with_dyn(get_proc_address);
5173            {
5174                self.GetBooleanIndexedvEXT_load_with_dyn(get_proc_address);
5175            }
5176            self.GetBooleani_v_load_with_dyn(get_proc_address);
5177            self.GetBooleanv_load_with_dyn(get_proc_address);
5178            self.GetBufferParameteri64v_load_with_dyn(get_proc_address);
5179            self.GetBufferParameteriv_load_with_dyn(get_proc_address);
5180            self.GetBufferPointerv_load_with_dyn(get_proc_address);
5181            self.GetBufferSubData_load_with_dyn(get_proc_address);
5182            self.GetCompressedTexImage_load_with_dyn(get_proc_address);
5183            self.GetCompressedTextureImage_load_with_dyn(get_proc_address);
5184            self.GetCompressedTextureSubImage_load_with_dyn(get_proc_address);
5185            self.GetDebugMessageLog_load_with_dyn(get_proc_address);
5186            {
5187                self.GetDebugMessageLogARB_load_with_dyn(get_proc_address);
5188            }
5189            {
5190                self.GetDebugMessageLogKHR_load_with_dyn(get_proc_address);
5191            }
5192            self.GetDoublei_v_load_with_dyn(get_proc_address);
5193            self.GetDoublev_load_with_dyn(get_proc_address);
5194            self.GetError_load_with_dyn(get_proc_address);
5195            self.GetFloati_v_load_with_dyn(get_proc_address);
5196            self.GetFloatv_load_with_dyn(get_proc_address);
5197            self.GetFragDataIndex_load_with_dyn(get_proc_address);
5198            self.GetFragDataLocation_load_with_dyn(get_proc_address);
5199            self.GetFramebufferAttachmentParameteriv_load_with_dyn(get_proc_address);
5200            self.GetFramebufferParameteriv_load_with_dyn(get_proc_address);
5201            self.GetGraphicsResetStatus_load_with_dyn(get_proc_address);
5202            self.GetInteger64i_v_load_with_dyn(get_proc_address);
5203            self.GetInteger64v_load_with_dyn(get_proc_address);
5204            {
5205                self.GetInteger64vEXT_load_with_dyn(get_proc_address);
5206            }
5207            {
5208                self.GetIntegerIndexedvEXT_load_with_dyn(get_proc_address);
5209            }
5210            self.GetIntegeri_v_load_with_dyn(get_proc_address);
5211            self.GetIntegerv_load_with_dyn(get_proc_address);
5212            self.GetInternalformati64v_load_with_dyn(get_proc_address);
5213            self.GetInternalformativ_load_with_dyn(get_proc_address);
5214            self.GetMultisamplefv_load_with_dyn(get_proc_address);
5215            self.GetNamedBufferParameteri64v_load_with_dyn(get_proc_address);
5216            self.GetNamedBufferParameteriv_load_with_dyn(get_proc_address);
5217            self.GetNamedBufferPointerv_load_with_dyn(get_proc_address);
5218            self.GetNamedBufferSubData_load_with_dyn(get_proc_address);
5219            self.GetNamedFramebufferAttachmentParameteriv_load_with_dyn(get_proc_address);
5220            self.GetNamedFramebufferParameteriv_load_with_dyn(get_proc_address);
5221            self.GetNamedRenderbufferParameteriv_load_with_dyn(get_proc_address);
5222            self.GetObjectLabel_load_with_dyn(get_proc_address);
5223            {
5224                self.GetObjectLabelKHR_load_with_dyn(get_proc_address);
5225            }
5226            self.GetObjectPtrLabel_load_with_dyn(get_proc_address);
5227            {
5228                self.GetObjectPtrLabelKHR_load_with_dyn(get_proc_address);
5229            }
5230            self.GetPointerv_load_with_dyn(get_proc_address);
5231            {
5232                self.GetPointervKHR_load_with_dyn(get_proc_address);
5233            }
5234            self.GetProgramBinary_load_with_dyn(get_proc_address);
5235            self.GetProgramInfoLog_load_with_dyn(get_proc_address);
5236            self.GetProgramInterfaceiv_load_with_dyn(get_proc_address);
5237            self.GetProgramPipelineInfoLog_load_with_dyn(get_proc_address);
5238            self.GetProgramPipelineiv_load_with_dyn(get_proc_address);
5239            self.GetProgramResourceIndex_load_with_dyn(get_proc_address);
5240            self.GetProgramResourceLocation_load_with_dyn(get_proc_address);
5241            self.GetProgramResourceLocationIndex_load_with_dyn(get_proc_address);
5242            self.GetProgramResourceName_load_with_dyn(get_proc_address);
5243            self.GetProgramResourceiv_load_with_dyn(get_proc_address);
5244            self.GetProgramStageiv_load_with_dyn(get_proc_address);
5245            self.GetProgramiv_load_with_dyn(get_proc_address);
5246            self.GetQueryBufferObjecti64v_load_with_dyn(get_proc_address);
5247            self.GetQueryBufferObjectiv_load_with_dyn(get_proc_address);
5248            self.GetQueryBufferObjectui64v_load_with_dyn(get_proc_address);
5249            self.GetQueryBufferObjectuiv_load_with_dyn(get_proc_address);
5250            self.GetQueryIndexediv_load_with_dyn(get_proc_address);
5251            self.GetQueryObjecti64v_load_with_dyn(get_proc_address);
5252            {
5253                self.GetQueryObjecti64vEXT_load_with_dyn(get_proc_address);
5254            }
5255            self.GetQueryObjectiv_load_with_dyn(get_proc_address);
5256            {
5257                self.GetQueryObjectivEXT_load_with_dyn(get_proc_address);
5258            }
5259            self.GetQueryObjectui64v_load_with_dyn(get_proc_address);
5260            {
5261                self.GetQueryObjectui64vEXT_load_with_dyn(get_proc_address);
5262            }
5263            self.GetQueryObjectuiv_load_with_dyn(get_proc_address);
5264            {
5265                self.GetQueryObjectuivEXT_load_with_dyn(get_proc_address);
5266            }
5267            self.GetQueryiv_load_with_dyn(get_proc_address);
5268            {
5269                self.GetQueryivEXT_load_with_dyn(get_proc_address);
5270            }
5271            self.GetRenderbufferParameteriv_load_with_dyn(get_proc_address);
5272            self.GetSamplerParameterIiv_load_with_dyn(get_proc_address);
5273            self.GetSamplerParameterIuiv_load_with_dyn(get_proc_address);
5274            self.GetSamplerParameterfv_load_with_dyn(get_proc_address);
5275            self.GetSamplerParameteriv_load_with_dyn(get_proc_address);
5276            self.GetShaderInfoLog_load_with_dyn(get_proc_address);
5277            self.GetShaderPrecisionFormat_load_with_dyn(get_proc_address);
5278            self.GetShaderSource_load_with_dyn(get_proc_address);
5279            self.GetShaderiv_load_with_dyn(get_proc_address);
5280            self.GetString_load_with_dyn(get_proc_address);
5281            self.GetStringi_load_with_dyn(get_proc_address);
5282            self.GetSubroutineIndex_load_with_dyn(get_proc_address);
5283            self.GetSubroutineUniformLocation_load_with_dyn(get_proc_address);
5284            self.GetSynciv_load_with_dyn(get_proc_address);
5285            self.GetTexImage_load_with_dyn(get_proc_address);
5286            self.GetTexLevelParameterfv_load_with_dyn(get_proc_address);
5287            self.GetTexLevelParameteriv_load_with_dyn(get_proc_address);
5288            self.GetTexParameterIiv_load_with_dyn(get_proc_address);
5289            self.GetTexParameterIuiv_load_with_dyn(get_proc_address);
5290            self.GetTexParameterfv_load_with_dyn(get_proc_address);
5291            self.GetTexParameteriv_load_with_dyn(get_proc_address);
5292            self.GetTextureImage_load_with_dyn(get_proc_address);
5293            self.GetTextureLevelParameterfv_load_with_dyn(get_proc_address);
5294            self.GetTextureLevelParameteriv_load_with_dyn(get_proc_address);
5295            self.GetTextureParameterIiv_load_with_dyn(get_proc_address);
5296            self.GetTextureParameterIuiv_load_with_dyn(get_proc_address);
5297            self.GetTextureParameterfv_load_with_dyn(get_proc_address);
5298            self.GetTextureParameteriv_load_with_dyn(get_proc_address);
5299            self.GetTextureSubImage_load_with_dyn(get_proc_address);
5300            self.GetTransformFeedbackVarying_load_with_dyn(get_proc_address);
5301            self.GetTransformFeedbacki64_v_load_with_dyn(get_proc_address);
5302            self.GetTransformFeedbacki_v_load_with_dyn(get_proc_address);
5303            self.GetTransformFeedbackiv_load_with_dyn(get_proc_address);
5304            self.GetUniformBlockIndex_load_with_dyn(get_proc_address);
5305            self.GetUniformIndices_load_with_dyn(get_proc_address);
5306            self.GetUniformLocation_load_with_dyn(get_proc_address);
5307            self.GetUniformSubroutineuiv_load_with_dyn(get_proc_address);
5308            self.GetUniformdv_load_with_dyn(get_proc_address);
5309            self.GetUniformfv_load_with_dyn(get_proc_address);
5310            self.GetUniformiv_load_with_dyn(get_proc_address);
5311            self.GetUniformuiv_load_with_dyn(get_proc_address);
5312            self.GetVertexArrayIndexed64iv_load_with_dyn(get_proc_address);
5313            self.GetVertexArrayIndexediv_load_with_dyn(get_proc_address);
5314            self.GetVertexArrayiv_load_with_dyn(get_proc_address);
5315            self.GetVertexAttribIiv_load_with_dyn(get_proc_address);
5316            self.GetVertexAttribIuiv_load_with_dyn(get_proc_address);
5317            self.GetVertexAttribLdv_load_with_dyn(get_proc_address);
5318            self.GetVertexAttribPointerv_load_with_dyn(get_proc_address);
5319            self.GetVertexAttribdv_load_with_dyn(get_proc_address);
5320            self.GetVertexAttribfv_load_with_dyn(get_proc_address);
5321            self.GetVertexAttribiv_load_with_dyn(get_proc_address);
5322            self.GetnCompressedTexImage_load_with_dyn(get_proc_address);
5323            self.GetnTexImage_load_with_dyn(get_proc_address);
5324            self.GetnUniformdv_load_with_dyn(get_proc_address);
5325            self.GetnUniformfv_load_with_dyn(get_proc_address);
5326            self.GetnUniformiv_load_with_dyn(get_proc_address);
5327            self.GetnUniformuiv_load_with_dyn(get_proc_address);
5328            self.Hint_load_with_dyn(get_proc_address);
5329            self.InvalidateBufferData_load_with_dyn(get_proc_address);
5330            self.InvalidateBufferSubData_load_with_dyn(get_proc_address);
5331            self.InvalidateFramebuffer_load_with_dyn(get_proc_address);
5332            self.InvalidateNamedFramebufferData_load_with_dyn(get_proc_address);
5333            self.InvalidateNamedFramebufferSubData_load_with_dyn(get_proc_address);
5334            self.InvalidateSubFramebuffer_load_with_dyn(get_proc_address);
5335            self.InvalidateTexImage_load_with_dyn(get_proc_address);
5336            self.InvalidateTexSubImage_load_with_dyn(get_proc_address);
5337            self.IsBuffer_load_with_dyn(get_proc_address);
5338            self.IsEnabled_load_with_dyn(get_proc_address);
5339            {
5340                self.IsEnabledIndexedEXT_load_with_dyn(get_proc_address);
5341            }
5342            self.IsEnabledi_load_with_dyn(get_proc_address);
5343            self.IsFramebuffer_load_with_dyn(get_proc_address);
5344            self.IsProgram_load_with_dyn(get_proc_address);
5345            self.IsProgramPipeline_load_with_dyn(get_proc_address);
5346            self.IsQuery_load_with_dyn(get_proc_address);
5347            {
5348                self.IsQueryEXT_load_with_dyn(get_proc_address);
5349            }
5350            self.IsRenderbuffer_load_with_dyn(get_proc_address);
5351            self.IsSampler_load_with_dyn(get_proc_address);
5352            self.IsShader_load_with_dyn(get_proc_address);
5353            self.IsSync_load_with_dyn(get_proc_address);
5354            self.IsTexture_load_with_dyn(get_proc_address);
5355            self.IsTransformFeedback_load_with_dyn(get_proc_address);
5356            self.IsVertexArray_load_with_dyn(get_proc_address);
5357            {
5358                self.IsVertexArrayAPPLE_load_with_dyn(get_proc_address);
5359            }
5360            {
5361                self.IsVertexArrayOES_load_with_dyn(get_proc_address);
5362            }
5363            self.LineWidth_load_with_dyn(get_proc_address);
5364            self.LinkProgram_load_with_dyn(get_proc_address);
5365            self.LogicOp_load_with_dyn(get_proc_address);
5366            self.MapBuffer_load_with_dyn(get_proc_address);
5367            self.MapBufferRange_load_with_dyn(get_proc_address);
5368            self.MapNamedBuffer_load_with_dyn(get_proc_address);
5369            self.MapNamedBufferRange_load_with_dyn(get_proc_address);
5370            {
5371                self.MaxShaderCompilerThreadsARB_load_with_dyn(get_proc_address);
5372            }
5373            {
5374                self.MaxShaderCompilerThreadsKHR_load_with_dyn(get_proc_address);
5375            }
5376            self.MemoryBarrier_load_with_dyn(get_proc_address);
5377            self.MemoryBarrierByRegion_load_with_dyn(get_proc_address);
5378            self.MinSampleShading_load_with_dyn(get_proc_address);
5379            self.MultiDrawArrays_load_with_dyn(get_proc_address);
5380            self.MultiDrawArraysIndirect_load_with_dyn(get_proc_address);
5381            self.MultiDrawArraysIndirectCount_load_with_dyn(get_proc_address);
5382            self.MultiDrawElements_load_with_dyn(get_proc_address);
5383            self.MultiDrawElementsBaseVertex_load_with_dyn(get_proc_address);
5384            self.MultiDrawElementsIndirect_load_with_dyn(get_proc_address);
5385            self.MultiDrawElementsIndirectCount_load_with_dyn(get_proc_address);
5386            self.NamedBufferData_load_with_dyn(get_proc_address);
5387            self.NamedBufferStorage_load_with_dyn(get_proc_address);
5388            self.NamedBufferSubData_load_with_dyn(get_proc_address);
5389            self.NamedFramebufferDrawBuffer_load_with_dyn(get_proc_address);
5390            self.NamedFramebufferDrawBuffers_load_with_dyn(get_proc_address);
5391            self.NamedFramebufferParameteri_load_with_dyn(get_proc_address);
5392            self.NamedFramebufferReadBuffer_load_with_dyn(get_proc_address);
5393            self.NamedFramebufferRenderbuffer_load_with_dyn(get_proc_address);
5394            self.NamedFramebufferTexture_load_with_dyn(get_proc_address);
5395            self.NamedFramebufferTextureLayer_load_with_dyn(get_proc_address);
5396            self.NamedRenderbufferStorage_load_with_dyn(get_proc_address);
5397            self.NamedRenderbufferStorageMultisample_load_with_dyn(get_proc_address);
5398            self.ObjectLabel_load_with_dyn(get_proc_address);
5399            {
5400                self.ObjectLabelKHR_load_with_dyn(get_proc_address);
5401            }
5402            self.ObjectPtrLabel_load_with_dyn(get_proc_address);
5403            {
5404                self.ObjectPtrLabelKHR_load_with_dyn(get_proc_address);
5405            }
5406            self.PatchParameterfv_load_with_dyn(get_proc_address);
5407            self.PatchParameteri_load_with_dyn(get_proc_address);
5408            self.PauseTransformFeedback_load_with_dyn(get_proc_address);
5409            self.PixelStoref_load_with_dyn(get_proc_address);
5410            self.PixelStorei_load_with_dyn(get_proc_address);
5411            self.PointParameterf_load_with_dyn(get_proc_address);
5412            self.PointParameterfv_load_with_dyn(get_proc_address);
5413            self.PointParameteri_load_with_dyn(get_proc_address);
5414            self.PointParameteriv_load_with_dyn(get_proc_address);
5415            self.PointSize_load_with_dyn(get_proc_address);
5416            self.PolygonMode_load_with_dyn(get_proc_address);
5417            self.PolygonOffset_load_with_dyn(get_proc_address);
5418            self.PolygonOffsetClamp_load_with_dyn(get_proc_address);
5419            self.PopDebugGroup_load_with_dyn(get_proc_address);
5420            {
5421                self.PopDebugGroupKHR_load_with_dyn(get_proc_address);
5422            }
5423            self.PrimitiveBoundingBox_load_with_dyn(get_proc_address);
5424            self.PrimitiveRestartIndex_load_with_dyn(get_proc_address);
5425            self.ProgramBinary_load_with_dyn(get_proc_address);
5426            self.ProgramParameteri_load_with_dyn(get_proc_address);
5427            self.ProgramUniform1d_load_with_dyn(get_proc_address);
5428            self.ProgramUniform1dv_load_with_dyn(get_proc_address);
5429            self.ProgramUniform1f_load_with_dyn(get_proc_address);
5430            self.ProgramUniform1fv_load_with_dyn(get_proc_address);
5431            self.ProgramUniform1i_load_with_dyn(get_proc_address);
5432            self.ProgramUniform1iv_load_with_dyn(get_proc_address);
5433            self.ProgramUniform1ui_load_with_dyn(get_proc_address);
5434            self.ProgramUniform1uiv_load_with_dyn(get_proc_address);
5435            self.ProgramUniform2d_load_with_dyn(get_proc_address);
5436            self.ProgramUniform2dv_load_with_dyn(get_proc_address);
5437            self.ProgramUniform2f_load_with_dyn(get_proc_address);
5438            self.ProgramUniform2fv_load_with_dyn(get_proc_address);
5439            self.ProgramUniform2i_load_with_dyn(get_proc_address);
5440            self.ProgramUniform2iv_load_with_dyn(get_proc_address);
5441            self.ProgramUniform2ui_load_with_dyn(get_proc_address);
5442            self.ProgramUniform2uiv_load_with_dyn(get_proc_address);
5443            self.ProgramUniform3d_load_with_dyn(get_proc_address);
5444            self.ProgramUniform3dv_load_with_dyn(get_proc_address);
5445            self.ProgramUniform3f_load_with_dyn(get_proc_address);
5446            self.ProgramUniform3fv_load_with_dyn(get_proc_address);
5447            self.ProgramUniform3i_load_with_dyn(get_proc_address);
5448            self.ProgramUniform3iv_load_with_dyn(get_proc_address);
5449            self.ProgramUniform3ui_load_with_dyn(get_proc_address);
5450            self.ProgramUniform3uiv_load_with_dyn(get_proc_address);
5451            self.ProgramUniform4d_load_with_dyn(get_proc_address);
5452            self.ProgramUniform4dv_load_with_dyn(get_proc_address);
5453            self.ProgramUniform4f_load_with_dyn(get_proc_address);
5454            self.ProgramUniform4fv_load_with_dyn(get_proc_address);
5455            self.ProgramUniform4i_load_with_dyn(get_proc_address);
5456            self.ProgramUniform4iv_load_with_dyn(get_proc_address);
5457            self.ProgramUniform4ui_load_with_dyn(get_proc_address);
5458            self.ProgramUniform4uiv_load_with_dyn(get_proc_address);
5459            self.ProgramUniformMatrix2dv_load_with_dyn(get_proc_address);
5460            self.ProgramUniformMatrix2fv_load_with_dyn(get_proc_address);
5461            self.ProgramUniformMatrix2x3dv_load_with_dyn(get_proc_address);
5462            self.ProgramUniformMatrix2x3fv_load_with_dyn(get_proc_address);
5463            self.ProgramUniformMatrix2x4dv_load_with_dyn(get_proc_address);
5464            self.ProgramUniformMatrix2x4fv_load_with_dyn(get_proc_address);
5465            self.ProgramUniformMatrix3dv_load_with_dyn(get_proc_address);
5466            self.ProgramUniformMatrix3fv_load_with_dyn(get_proc_address);
5467            self.ProgramUniformMatrix3x2dv_load_with_dyn(get_proc_address);
5468            self.ProgramUniformMatrix3x2fv_load_with_dyn(get_proc_address);
5469            self.ProgramUniformMatrix3x4dv_load_with_dyn(get_proc_address);
5470            self.ProgramUniformMatrix3x4fv_load_with_dyn(get_proc_address);
5471            self.ProgramUniformMatrix4dv_load_with_dyn(get_proc_address);
5472            self.ProgramUniformMatrix4fv_load_with_dyn(get_proc_address);
5473            self.ProgramUniformMatrix4x2dv_load_with_dyn(get_proc_address);
5474            self.ProgramUniformMatrix4x2fv_load_with_dyn(get_proc_address);
5475            self.ProgramUniformMatrix4x3dv_load_with_dyn(get_proc_address);
5476            self.ProgramUniformMatrix4x3fv_load_with_dyn(get_proc_address);
5477            self.ProvokingVertex_load_with_dyn(get_proc_address);
5478            self.PushDebugGroup_load_with_dyn(get_proc_address);
5479            {
5480                self.PushDebugGroupKHR_load_with_dyn(get_proc_address);
5481            }
5482            self.QueryCounter_load_with_dyn(get_proc_address);
5483            {
5484                self.QueryCounterEXT_load_with_dyn(get_proc_address);
5485            }
5486            self.ReadBuffer_load_with_dyn(get_proc_address);
5487            self.ReadPixels_load_with_dyn(get_proc_address);
5488            self.ReadnPixels_load_with_dyn(get_proc_address);
5489            self.ReleaseShaderCompiler_load_with_dyn(get_proc_address);
5490            self.RenderbufferStorage_load_with_dyn(get_proc_address);
5491            self.RenderbufferStorageMultisample_load_with_dyn(get_proc_address);
5492            #[cfg_attr(
5493                docs_rs,
5494                doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
5495            )]
5496            {
5497                self.RenderbufferStorageMultisampleEXT_load_with_dyn(get_proc_address);
5498            }
5499            self.ResumeTransformFeedback_load_with_dyn(get_proc_address);
5500            self.SampleCoverage_load_with_dyn(get_proc_address);
5501            self.SampleMaski_load_with_dyn(get_proc_address);
5502            self.SamplerParameterIiv_load_with_dyn(get_proc_address);
5503            self.SamplerParameterIuiv_load_with_dyn(get_proc_address);
5504            self.SamplerParameterf_load_with_dyn(get_proc_address);
5505            self.SamplerParameterfv_load_with_dyn(get_proc_address);
5506            self.SamplerParameteri_load_with_dyn(get_proc_address);
5507            self.SamplerParameteriv_load_with_dyn(get_proc_address);
5508            self.Scissor_load_with_dyn(get_proc_address);
5509            self.ScissorArrayv_load_with_dyn(get_proc_address);
5510            self.ScissorIndexed_load_with_dyn(get_proc_address);
5511            self.ScissorIndexedv_load_with_dyn(get_proc_address);
5512            self.ShaderBinary_load_with_dyn(get_proc_address);
5513            self.ShaderSource_load_with_dyn(get_proc_address);
5514            self.ShaderStorageBlockBinding_load_with_dyn(get_proc_address);
5515            self.SpecializeShader_load_with_dyn(get_proc_address);
5516            self.StencilFunc_load_with_dyn(get_proc_address);
5517            self.StencilFuncSeparate_load_with_dyn(get_proc_address);
5518            self.StencilMask_load_with_dyn(get_proc_address);
5519            self.StencilMaskSeparate_load_with_dyn(get_proc_address);
5520            self.StencilOp_load_with_dyn(get_proc_address);
5521            self.StencilOpSeparate_load_with_dyn(get_proc_address);
5522            self.TexBuffer_load_with_dyn(get_proc_address);
5523            self.TexBufferRange_load_with_dyn(get_proc_address);
5524            self.TexImage1D_load_with_dyn(get_proc_address);
5525            self.TexImage2D_load_with_dyn(get_proc_address);
5526            self.TexImage2DMultisample_load_with_dyn(get_proc_address);
5527            self.TexImage3D_load_with_dyn(get_proc_address);
5528            self.TexImage3DMultisample_load_with_dyn(get_proc_address);
5529            self.TexParameterIiv_load_with_dyn(get_proc_address);
5530            self.TexParameterIuiv_load_with_dyn(get_proc_address);
5531            self.TexParameterf_load_with_dyn(get_proc_address);
5532            self.TexParameterfv_load_with_dyn(get_proc_address);
5533            self.TexParameteri_load_with_dyn(get_proc_address);
5534            self.TexParameteriv_load_with_dyn(get_proc_address);
5535            self.TexStorage1D_load_with_dyn(get_proc_address);
5536            self.TexStorage2D_load_with_dyn(get_proc_address);
5537            self.TexStorage2DMultisample_load_with_dyn(get_proc_address);
5538            self.TexStorage3D_load_with_dyn(get_proc_address);
5539            self.TexStorage3DMultisample_load_with_dyn(get_proc_address);
5540            self.TexSubImage1D_load_with_dyn(get_proc_address);
5541            self.TexSubImage2D_load_with_dyn(get_proc_address);
5542            self.TexSubImage3D_load_with_dyn(get_proc_address);
5543            self.TextureBarrier_load_with_dyn(get_proc_address);
5544            self.TextureBuffer_load_with_dyn(get_proc_address);
5545            self.TextureBufferRange_load_with_dyn(get_proc_address);
5546            self.TextureParameterIiv_load_with_dyn(get_proc_address);
5547            self.TextureParameterIuiv_load_with_dyn(get_proc_address);
5548            self.TextureParameterf_load_with_dyn(get_proc_address);
5549            self.TextureParameterfv_load_with_dyn(get_proc_address);
5550            self.TextureParameteri_load_with_dyn(get_proc_address);
5551            self.TextureParameteriv_load_with_dyn(get_proc_address);
5552            self.TextureStorage1D_load_with_dyn(get_proc_address);
5553            self.TextureStorage2D_load_with_dyn(get_proc_address);
5554            self.TextureStorage2DMultisample_load_with_dyn(get_proc_address);
5555            self.TextureStorage3D_load_with_dyn(get_proc_address);
5556            self.TextureStorage3DMultisample_load_with_dyn(get_proc_address);
5557            self.TextureSubImage1D_load_with_dyn(get_proc_address);
5558            self.TextureSubImage2D_load_with_dyn(get_proc_address);
5559            self.TextureSubImage3D_load_with_dyn(get_proc_address);
5560            self.TextureView_load_with_dyn(get_proc_address);
5561            self.TransformFeedbackBufferBase_load_with_dyn(get_proc_address);
5562            self.TransformFeedbackBufferRange_load_with_dyn(get_proc_address);
5563            self.TransformFeedbackVaryings_load_with_dyn(get_proc_address);
5564            self.Uniform1d_load_with_dyn(get_proc_address);
5565            self.Uniform1dv_load_with_dyn(get_proc_address);
5566            self.Uniform1f_load_with_dyn(get_proc_address);
5567            self.Uniform1fv_load_with_dyn(get_proc_address);
5568            self.Uniform1i_load_with_dyn(get_proc_address);
5569            self.Uniform1iv_load_with_dyn(get_proc_address);
5570            self.Uniform1ui_load_with_dyn(get_proc_address);
5571            self.Uniform1uiv_load_with_dyn(get_proc_address);
5572            self.Uniform2d_load_with_dyn(get_proc_address);
5573            self.Uniform2dv_load_with_dyn(get_proc_address);
5574            self.Uniform2f_load_with_dyn(get_proc_address);
5575            self.Uniform2fv_load_with_dyn(get_proc_address);
5576            self.Uniform2i_load_with_dyn(get_proc_address);
5577            self.Uniform2iv_load_with_dyn(get_proc_address);
5578            self.Uniform2ui_load_with_dyn(get_proc_address);
5579            self.Uniform2uiv_load_with_dyn(get_proc_address);
5580            self.Uniform3d_load_with_dyn(get_proc_address);
5581            self.Uniform3dv_load_with_dyn(get_proc_address);
5582            self.Uniform3f_load_with_dyn(get_proc_address);
5583            self.Uniform3fv_load_with_dyn(get_proc_address);
5584            self.Uniform3i_load_with_dyn(get_proc_address);
5585            self.Uniform3iv_load_with_dyn(get_proc_address);
5586            self.Uniform3ui_load_with_dyn(get_proc_address);
5587            self.Uniform3uiv_load_with_dyn(get_proc_address);
5588            self.Uniform4d_load_with_dyn(get_proc_address);
5589            self.Uniform4dv_load_with_dyn(get_proc_address);
5590            self.Uniform4f_load_with_dyn(get_proc_address);
5591            self.Uniform4fv_load_with_dyn(get_proc_address);
5592            self.Uniform4i_load_with_dyn(get_proc_address);
5593            self.Uniform4iv_load_with_dyn(get_proc_address);
5594            self.Uniform4ui_load_with_dyn(get_proc_address);
5595            self.Uniform4uiv_load_with_dyn(get_proc_address);
5596            self.UniformBlockBinding_load_with_dyn(get_proc_address);
5597            self.UniformMatrix2dv_load_with_dyn(get_proc_address);
5598            self.UniformMatrix2fv_load_with_dyn(get_proc_address);
5599            self.UniformMatrix2x3dv_load_with_dyn(get_proc_address);
5600            self.UniformMatrix2x3fv_load_with_dyn(get_proc_address);
5601            self.UniformMatrix2x4dv_load_with_dyn(get_proc_address);
5602            self.UniformMatrix2x4fv_load_with_dyn(get_proc_address);
5603            self.UniformMatrix3dv_load_with_dyn(get_proc_address);
5604            self.UniformMatrix3fv_load_with_dyn(get_proc_address);
5605            self.UniformMatrix3x2dv_load_with_dyn(get_proc_address);
5606            self.UniformMatrix3x2fv_load_with_dyn(get_proc_address);
5607            self.UniformMatrix3x4dv_load_with_dyn(get_proc_address);
5608            self.UniformMatrix3x4fv_load_with_dyn(get_proc_address);
5609            self.UniformMatrix4dv_load_with_dyn(get_proc_address);
5610            self.UniformMatrix4fv_load_with_dyn(get_proc_address);
5611            self.UniformMatrix4x2dv_load_with_dyn(get_proc_address);
5612            self.UniformMatrix4x2fv_load_with_dyn(get_proc_address);
5613            self.UniformMatrix4x3dv_load_with_dyn(get_proc_address);
5614            self.UniformMatrix4x3fv_load_with_dyn(get_proc_address);
5615            self.UniformSubroutinesuiv_load_with_dyn(get_proc_address);
5616            self.UnmapBuffer_load_with_dyn(get_proc_address);
5617            self.UnmapNamedBuffer_load_with_dyn(get_proc_address);
5618            self.UseProgram_load_with_dyn(get_proc_address);
5619            self.UseProgramStages_load_with_dyn(get_proc_address);
5620            self.ValidateProgram_load_with_dyn(get_proc_address);
5621            self.ValidateProgramPipeline_load_with_dyn(get_proc_address);
5622            self.VertexArrayAttribBinding_load_with_dyn(get_proc_address);
5623            self.VertexArrayAttribFormat_load_with_dyn(get_proc_address);
5624            self.VertexArrayAttribIFormat_load_with_dyn(get_proc_address);
5625            self.VertexArrayAttribLFormat_load_with_dyn(get_proc_address);
5626            self.VertexArrayBindingDivisor_load_with_dyn(get_proc_address);
5627            self.VertexArrayElementBuffer_load_with_dyn(get_proc_address);
5628            self.VertexArrayVertexBuffer_load_with_dyn(get_proc_address);
5629            self.VertexArrayVertexBuffers_load_with_dyn(get_proc_address);
5630            self.VertexAttrib1d_load_with_dyn(get_proc_address);
5631            self.VertexAttrib1dv_load_with_dyn(get_proc_address);
5632            self.VertexAttrib1f_load_with_dyn(get_proc_address);
5633            self.VertexAttrib1fv_load_with_dyn(get_proc_address);
5634            self.VertexAttrib1s_load_with_dyn(get_proc_address);
5635            self.VertexAttrib1sv_load_with_dyn(get_proc_address);
5636            self.VertexAttrib2d_load_with_dyn(get_proc_address);
5637            self.VertexAttrib2dv_load_with_dyn(get_proc_address);
5638            self.VertexAttrib2f_load_with_dyn(get_proc_address);
5639            self.VertexAttrib2fv_load_with_dyn(get_proc_address);
5640            self.VertexAttrib2s_load_with_dyn(get_proc_address);
5641            self.VertexAttrib2sv_load_with_dyn(get_proc_address);
5642            self.VertexAttrib3d_load_with_dyn(get_proc_address);
5643            self.VertexAttrib3dv_load_with_dyn(get_proc_address);
5644            self.VertexAttrib3f_load_with_dyn(get_proc_address);
5645            self.VertexAttrib3fv_load_with_dyn(get_proc_address);
5646            self.VertexAttrib3s_load_with_dyn(get_proc_address);
5647            self.VertexAttrib3sv_load_with_dyn(get_proc_address);
5648            self.VertexAttrib4Nbv_load_with_dyn(get_proc_address);
5649            self.VertexAttrib4Niv_load_with_dyn(get_proc_address);
5650            self.VertexAttrib4Nsv_load_with_dyn(get_proc_address);
5651            self.VertexAttrib4Nub_load_with_dyn(get_proc_address);
5652            self.VertexAttrib4Nubv_load_with_dyn(get_proc_address);
5653            self.VertexAttrib4Nuiv_load_with_dyn(get_proc_address);
5654            self.VertexAttrib4Nusv_load_with_dyn(get_proc_address);
5655            self.VertexAttrib4bv_load_with_dyn(get_proc_address);
5656            self.VertexAttrib4d_load_with_dyn(get_proc_address);
5657            self.VertexAttrib4dv_load_with_dyn(get_proc_address);
5658            self.VertexAttrib4f_load_with_dyn(get_proc_address);
5659            self.VertexAttrib4fv_load_with_dyn(get_proc_address);
5660            self.VertexAttrib4iv_load_with_dyn(get_proc_address);
5661            self.VertexAttrib4s_load_with_dyn(get_proc_address);
5662            self.VertexAttrib4sv_load_with_dyn(get_proc_address);
5663            self.VertexAttrib4ubv_load_with_dyn(get_proc_address);
5664            self.VertexAttrib4uiv_load_with_dyn(get_proc_address);
5665            self.VertexAttrib4usv_load_with_dyn(get_proc_address);
5666            self.VertexAttribBinding_load_with_dyn(get_proc_address);
5667            self.VertexAttribDivisor_load_with_dyn(get_proc_address);
5668            {
5669                self.VertexAttribDivisorARB_load_with_dyn(get_proc_address);
5670            }
5671            self.VertexAttribFormat_load_with_dyn(get_proc_address);
5672            self.VertexAttribI1i_load_with_dyn(get_proc_address);
5673            self.VertexAttribI1iv_load_with_dyn(get_proc_address);
5674            self.VertexAttribI1ui_load_with_dyn(get_proc_address);
5675            self.VertexAttribI1uiv_load_with_dyn(get_proc_address);
5676            self.VertexAttribI2i_load_with_dyn(get_proc_address);
5677            self.VertexAttribI2iv_load_with_dyn(get_proc_address);
5678            self.VertexAttribI2ui_load_with_dyn(get_proc_address);
5679            self.VertexAttribI2uiv_load_with_dyn(get_proc_address);
5680            self.VertexAttribI3i_load_with_dyn(get_proc_address);
5681            self.VertexAttribI3iv_load_with_dyn(get_proc_address);
5682            self.VertexAttribI3ui_load_with_dyn(get_proc_address);
5683            self.VertexAttribI3uiv_load_with_dyn(get_proc_address);
5684            self.VertexAttribI4bv_load_with_dyn(get_proc_address);
5685            self.VertexAttribI4i_load_with_dyn(get_proc_address);
5686            self.VertexAttribI4iv_load_with_dyn(get_proc_address);
5687            self.VertexAttribI4sv_load_with_dyn(get_proc_address);
5688            self.VertexAttribI4ubv_load_with_dyn(get_proc_address);
5689            self.VertexAttribI4ui_load_with_dyn(get_proc_address);
5690            self.VertexAttribI4uiv_load_with_dyn(get_proc_address);
5691            self.VertexAttribI4usv_load_with_dyn(get_proc_address);
5692            self.VertexAttribIFormat_load_with_dyn(get_proc_address);
5693            self.VertexAttribIPointer_load_with_dyn(get_proc_address);
5694            self.VertexAttribL1d_load_with_dyn(get_proc_address);
5695            self.VertexAttribL1dv_load_with_dyn(get_proc_address);
5696            self.VertexAttribL2d_load_with_dyn(get_proc_address);
5697            self.VertexAttribL2dv_load_with_dyn(get_proc_address);
5698            self.VertexAttribL3d_load_with_dyn(get_proc_address);
5699            self.VertexAttribL3dv_load_with_dyn(get_proc_address);
5700            self.VertexAttribL4d_load_with_dyn(get_proc_address);
5701            self.VertexAttribL4dv_load_with_dyn(get_proc_address);
5702            self.VertexAttribLFormat_load_with_dyn(get_proc_address);
5703            self.VertexAttribLPointer_load_with_dyn(get_proc_address);
5704            self.VertexAttribP1ui_load_with_dyn(get_proc_address);
5705            self.VertexAttribP1uiv_load_with_dyn(get_proc_address);
5706            self.VertexAttribP2ui_load_with_dyn(get_proc_address);
5707            self.VertexAttribP2uiv_load_with_dyn(get_proc_address);
5708            self.VertexAttribP3ui_load_with_dyn(get_proc_address);
5709            self.VertexAttribP3uiv_load_with_dyn(get_proc_address);
5710            self.VertexAttribP4ui_load_with_dyn(get_proc_address);
5711            self.VertexAttribP4uiv_load_with_dyn(get_proc_address);
5712            self.VertexAttribPointer_load_with_dyn(get_proc_address);
5713            self.VertexBindingDivisor_load_with_dyn(get_proc_address);
5714            self.Viewport_load_with_dyn(get_proc_address);
5715            self.ViewportArrayv_load_with_dyn(get_proc_address);
5716            self.ViewportIndexedf_load_with_dyn(get_proc_address);
5717            self.ViewportIndexedfv_load_with_dyn(get_proc_address);
5718            self.WaitSync_load_with_dyn(get_proc_address);
5719        }
5720        /// [glActiveShaderProgram](http://docs.gl/gl4/glActiveShaderProgram)(pipeline, program)
5721        #[cfg_attr(feature = "inline", inline)]
5722        #[cfg_attr(feature = "inline_always", inline(always))]
5723        pub unsafe fn ActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) {
5724            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5725            {
5726                trace!(
5727                    "calling gl.ActiveShaderProgram({:?}, {:?});",
5728                    pipeline,
5729                    program
5730                );
5731            }
5732            let out = call_atomic_ptr_2arg(
5733                "glActiveShaderProgram",
5734                &self.glActiveShaderProgram_p,
5735                pipeline,
5736                program,
5737            );
5738            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5739            {
5740                self.automatic_glGetError("glActiveShaderProgram");
5741            }
5742            out
5743        }
5744        #[doc(hidden)]
5745        pub unsafe fn ActiveShaderProgram_load_with_dyn(
5746            &self,
5747            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5748        ) -> bool {
5749            load_dyn_name_atomic_ptr(
5750                get_proc_address,
5751                b"glActiveShaderProgram\0",
5752                &self.glActiveShaderProgram_p,
5753            )
5754        }
5755        #[inline]
5756        #[doc(hidden)]
5757        pub fn ActiveShaderProgram_is_loaded(&self) -> bool {
5758            !self.glActiveShaderProgram_p.load(RELAX).is_null()
5759        }
5760        /// [glActiveTexture](http://docs.gl/gl4/glActiveTexture)(texture)
5761        /// * `texture` group: TextureUnit
5762        #[cfg_attr(feature = "inline", inline)]
5763        #[cfg_attr(feature = "inline_always", inline(always))]
5764        pub unsafe fn ActiveTexture(&self, texture: GLenum) {
5765            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5766            {
5767                trace!("calling gl.ActiveTexture({:#X});", texture);
5768            }
5769            let out = call_atomic_ptr_1arg("glActiveTexture", &self.glActiveTexture_p, texture);
5770            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5771            {
5772                self.automatic_glGetError("glActiveTexture");
5773            }
5774            out
5775        }
5776        #[doc(hidden)]
5777        pub unsafe fn ActiveTexture_load_with_dyn(
5778            &self,
5779            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5780        ) -> bool {
5781            load_dyn_name_atomic_ptr(
5782                get_proc_address,
5783                b"glActiveTexture\0",
5784                &self.glActiveTexture_p,
5785            )
5786        }
5787        #[inline]
5788        #[doc(hidden)]
5789        pub fn ActiveTexture_is_loaded(&self) -> bool {
5790            !self.glActiveTexture_p.load(RELAX).is_null()
5791        }
5792        /// [glAttachShader](http://docs.gl/gl4/glAttachShader)(program, shader)
5793        #[cfg_attr(feature = "inline", inline)]
5794        #[cfg_attr(feature = "inline_always", inline(always))]
5795        pub unsafe fn AttachShader(&self, program: GLuint, shader: GLuint) {
5796            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5797            {
5798                trace!("calling gl.AttachShader({:?}, {:?});", program, shader);
5799            }
5800            let out =
5801                call_atomic_ptr_2arg("glAttachShader", &self.glAttachShader_p, program, shader);
5802            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5803            {
5804                self.automatic_glGetError("glAttachShader");
5805            }
5806            out
5807        }
5808        #[doc(hidden)]
5809        pub unsafe fn AttachShader_load_with_dyn(
5810            &self,
5811            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5812        ) -> bool {
5813            load_dyn_name_atomic_ptr(
5814                get_proc_address,
5815                b"glAttachShader\0",
5816                &self.glAttachShader_p,
5817            )
5818        }
5819        #[inline]
5820        #[doc(hidden)]
5821        pub fn AttachShader_is_loaded(&self) -> bool {
5822            !self.glAttachShader_p.load(RELAX).is_null()
5823        }
5824        /// [glBeginConditionalRender](http://docs.gl/gl4/glBeginConditionalRender)(id, mode)
5825        /// * `mode` group: ConditionalRenderMode
5826        #[cfg_attr(feature = "inline", inline)]
5827        #[cfg_attr(feature = "inline_always", inline(always))]
5828        pub unsafe fn BeginConditionalRender(&self, id: GLuint, mode: GLenum) {
5829            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5830            {
5831                trace!("calling gl.BeginConditionalRender({:?}, {:#X});", id, mode);
5832            }
5833            let out = call_atomic_ptr_2arg(
5834                "glBeginConditionalRender",
5835                &self.glBeginConditionalRender_p,
5836                id,
5837                mode,
5838            );
5839            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5840            {
5841                self.automatic_glGetError("glBeginConditionalRender");
5842            }
5843            out
5844        }
5845        #[doc(hidden)]
5846        pub unsafe fn BeginConditionalRender_load_with_dyn(
5847            &self,
5848            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5849        ) -> bool {
5850            load_dyn_name_atomic_ptr(
5851                get_proc_address,
5852                b"glBeginConditionalRender\0",
5853                &self.glBeginConditionalRender_p,
5854            )
5855        }
5856        #[inline]
5857        #[doc(hidden)]
5858        pub fn BeginConditionalRender_is_loaded(&self) -> bool {
5859            !self.glBeginConditionalRender_p.load(RELAX).is_null()
5860        }
5861        /// [glBeginQuery](http://docs.gl/gl4/glBeginQuery)(target, id)
5862        /// * `target` group: QueryTarget
5863        #[cfg_attr(feature = "inline", inline)]
5864        #[cfg_attr(feature = "inline_always", inline(always))]
5865        pub unsafe fn BeginQuery(&self, target: GLenum, id: GLuint) {
5866            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5867            {
5868                trace!("calling gl.BeginQuery({:#X}, {:?});", target, id);
5869            }
5870            let out = call_atomic_ptr_2arg("glBeginQuery", &self.glBeginQuery_p, target, id);
5871            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5872            {
5873                self.automatic_glGetError("glBeginQuery");
5874            }
5875            out
5876        }
5877        #[doc(hidden)]
5878        pub unsafe fn BeginQuery_load_with_dyn(
5879            &self,
5880            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5881        ) -> bool {
5882            load_dyn_name_atomic_ptr(get_proc_address, b"glBeginQuery\0", &self.glBeginQuery_p)
5883        }
5884        #[inline]
5885        #[doc(hidden)]
5886        pub fn BeginQuery_is_loaded(&self) -> bool {
5887            !self.glBeginQuery_p.load(RELAX).is_null()
5888        }
5889        /// [glBeginQueryEXT](http://docs.gl/gl4/glBeginQueryEXT)(target, id)
5890        /// * `target` group: QueryTarget
5891        #[cfg_attr(feature = "inline", inline)]
5892        #[cfg_attr(feature = "inline_always", inline(always))]
5893        pub unsafe fn BeginQueryEXT(&self, target: GLenum, id: GLuint) {
5894            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5895            {
5896                trace!("calling gl.BeginQueryEXT({:#X}, {:?});", target, id);
5897            }
5898            let out = call_atomic_ptr_2arg("glBeginQueryEXT", &self.glBeginQueryEXT_p, target, id);
5899            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5900            {
5901                self.automatic_glGetError("glBeginQueryEXT");
5902            }
5903            out
5904        }
5905        #[doc(hidden)]
5906        pub unsafe fn BeginQueryEXT_load_with_dyn(
5907            &self,
5908            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5909        ) -> bool {
5910            load_dyn_name_atomic_ptr(
5911                get_proc_address,
5912                b"glBeginQueryEXT\0",
5913                &self.glBeginQueryEXT_p,
5914            )
5915        }
5916        #[inline]
5917        #[doc(hidden)]
5918        pub fn BeginQueryEXT_is_loaded(&self) -> bool {
5919            !self.glBeginQueryEXT_p.load(RELAX).is_null()
5920        }
5921        /// [glBeginQueryIndexed](http://docs.gl/gl4/glBeginQueryIndexed)(target, index, id)
5922        /// * `target` group: QueryTarget
5923        #[cfg_attr(feature = "inline", inline)]
5924        #[cfg_attr(feature = "inline_always", inline(always))]
5925        pub unsafe fn BeginQueryIndexed(&self, target: GLenum, index: GLuint, id: GLuint) {
5926            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5927            {
5928                trace!(
5929                    "calling gl.BeginQueryIndexed({:#X}, {:?}, {:?});",
5930                    target,
5931                    index,
5932                    id
5933                );
5934            }
5935            let out = call_atomic_ptr_3arg(
5936                "glBeginQueryIndexed",
5937                &self.glBeginQueryIndexed_p,
5938                target,
5939                index,
5940                id,
5941            );
5942            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5943            {
5944                self.automatic_glGetError("glBeginQueryIndexed");
5945            }
5946            out
5947        }
5948        #[doc(hidden)]
5949        pub unsafe fn BeginQueryIndexed_load_with_dyn(
5950            &self,
5951            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5952        ) -> bool {
5953            load_dyn_name_atomic_ptr(
5954                get_proc_address,
5955                b"glBeginQueryIndexed\0",
5956                &self.glBeginQueryIndexed_p,
5957            )
5958        }
5959        #[inline]
5960        #[doc(hidden)]
5961        pub fn BeginQueryIndexed_is_loaded(&self) -> bool {
5962            !self.glBeginQueryIndexed_p.load(RELAX).is_null()
5963        }
5964        /// [glBeginTransformFeedback](http://docs.gl/gl4/glBeginTransformFeedback)(primitiveMode)
5965        /// * `primitiveMode` group: PrimitiveType
5966        #[cfg_attr(feature = "inline", inline)]
5967        #[cfg_attr(feature = "inline_always", inline(always))]
5968        pub unsafe fn BeginTransformFeedback(&self, primitiveMode: GLenum) {
5969            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
5970            {
5971                trace!("calling gl.BeginTransformFeedback({:#X});", primitiveMode);
5972            }
5973            let out = call_atomic_ptr_1arg(
5974                "glBeginTransformFeedback",
5975                &self.glBeginTransformFeedback_p,
5976                primitiveMode,
5977            );
5978            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
5979            {
5980                self.automatic_glGetError("glBeginTransformFeedback");
5981            }
5982            out
5983        }
5984        #[doc(hidden)]
5985        pub unsafe fn BeginTransformFeedback_load_with_dyn(
5986            &self,
5987            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
5988        ) -> bool {
5989            load_dyn_name_atomic_ptr(
5990                get_proc_address,
5991                b"glBeginTransformFeedback\0",
5992                &self.glBeginTransformFeedback_p,
5993            )
5994        }
5995        #[inline]
5996        #[doc(hidden)]
5997        pub fn BeginTransformFeedback_is_loaded(&self) -> bool {
5998            !self.glBeginTransformFeedback_p.load(RELAX).is_null()
5999        }
6000        /// [glBindAttribLocation](http://docs.gl/gl4/glBindAttribLocation)(program, index, name)
6001        #[cfg_attr(feature = "inline", inline)]
6002        #[cfg_attr(feature = "inline_always", inline(always))]
6003        pub unsafe fn BindAttribLocation(
6004            &self,
6005            program: GLuint,
6006            index: GLuint,
6007            name: *const GLchar,
6008        ) {
6009            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6010            {
6011                trace!(
6012                    "calling gl.BindAttribLocation({:?}, {:?}, {:p});",
6013                    program,
6014                    index,
6015                    name
6016                );
6017            }
6018            let out = call_atomic_ptr_3arg(
6019                "glBindAttribLocation",
6020                &self.glBindAttribLocation_p,
6021                program,
6022                index,
6023                name,
6024            );
6025            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6026            {
6027                self.automatic_glGetError("glBindAttribLocation");
6028            }
6029            out
6030        }
6031        #[doc(hidden)]
6032        pub unsafe fn BindAttribLocation_load_with_dyn(
6033            &self,
6034            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6035        ) -> bool {
6036            load_dyn_name_atomic_ptr(
6037                get_proc_address,
6038                b"glBindAttribLocation\0",
6039                &self.glBindAttribLocation_p,
6040            )
6041        }
6042        #[inline]
6043        #[doc(hidden)]
6044        pub fn BindAttribLocation_is_loaded(&self) -> bool {
6045            !self.glBindAttribLocation_p.load(RELAX).is_null()
6046        }
6047        /// [glBindBuffer](http://docs.gl/gl4/glBindBuffer)(target, buffer)
6048        /// * `target` group: BufferTargetARB
6049        #[cfg_attr(feature = "inline", inline)]
6050        #[cfg_attr(feature = "inline_always", inline(always))]
6051        pub unsafe fn BindBuffer(&self, target: GLenum, buffer: GLuint) {
6052            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6053            {
6054                trace!("calling gl.BindBuffer({:#X}, {:?});", target, buffer);
6055            }
6056            let out = call_atomic_ptr_2arg("glBindBuffer", &self.glBindBuffer_p, target, buffer);
6057            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6058            {
6059                self.automatic_glGetError("glBindBuffer");
6060            }
6061            out
6062        }
6063        #[doc(hidden)]
6064        pub unsafe fn BindBuffer_load_with_dyn(
6065            &self,
6066            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6067        ) -> bool {
6068            load_dyn_name_atomic_ptr(get_proc_address, b"glBindBuffer\0", &self.glBindBuffer_p)
6069        }
6070        #[inline]
6071        #[doc(hidden)]
6072        pub fn BindBuffer_is_loaded(&self) -> bool {
6073            !self.glBindBuffer_p.load(RELAX).is_null()
6074        }
6075        /// [glBindBufferBase](http://docs.gl/gl4/glBindBufferBase)(target, index, buffer)
6076        /// * `target` group: BufferTargetARB
6077        #[cfg_attr(feature = "inline", inline)]
6078        #[cfg_attr(feature = "inline_always", inline(always))]
6079        pub unsafe fn BindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) {
6080            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6081            {
6082                trace!(
6083                    "calling gl.BindBufferBase({:#X}, {:?}, {:?});",
6084                    target,
6085                    index,
6086                    buffer
6087                );
6088            }
6089            let out = call_atomic_ptr_3arg(
6090                "glBindBufferBase",
6091                &self.glBindBufferBase_p,
6092                target,
6093                index,
6094                buffer,
6095            );
6096            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6097            {
6098                self.automatic_glGetError("glBindBufferBase");
6099            }
6100            out
6101        }
6102        #[doc(hidden)]
6103        pub unsafe fn BindBufferBase_load_with_dyn(
6104            &self,
6105            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6106        ) -> bool {
6107            load_dyn_name_atomic_ptr(
6108                get_proc_address,
6109                b"glBindBufferBase\0",
6110                &self.glBindBufferBase_p,
6111            )
6112        }
6113        #[inline]
6114        #[doc(hidden)]
6115        pub fn BindBufferBase_is_loaded(&self) -> bool {
6116            !self.glBindBufferBase_p.load(RELAX).is_null()
6117        }
6118        /// [glBindBufferRange](http://docs.gl/gl4/glBindBufferRange)(target, index, buffer, offset, size)
6119        /// * `target` group: BufferTargetARB
6120        /// * `offset` group: BufferOffset
6121        /// * `size` group: BufferSize
6122        #[cfg_attr(feature = "inline", inline)]
6123        #[cfg_attr(feature = "inline_always", inline(always))]
6124        pub unsafe fn BindBufferRange(
6125            &self,
6126            target: GLenum,
6127            index: GLuint,
6128            buffer: GLuint,
6129            offset: GLintptr,
6130            size: GLsizeiptr,
6131        ) {
6132            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6133            {
6134                trace!(
6135                    "calling gl.BindBufferRange({:#X}, {:?}, {:?}, {:?}, {:?});",
6136                    target,
6137                    index,
6138                    buffer,
6139                    offset,
6140                    size
6141                );
6142            }
6143            let out = call_atomic_ptr_5arg(
6144                "glBindBufferRange",
6145                &self.glBindBufferRange_p,
6146                target,
6147                index,
6148                buffer,
6149                offset,
6150                size,
6151            );
6152            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6153            {
6154                self.automatic_glGetError("glBindBufferRange");
6155            }
6156            out
6157        }
6158        #[doc(hidden)]
6159        pub unsafe fn BindBufferRange_load_with_dyn(
6160            &self,
6161            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6162        ) -> bool {
6163            load_dyn_name_atomic_ptr(
6164                get_proc_address,
6165                b"glBindBufferRange\0",
6166                &self.glBindBufferRange_p,
6167            )
6168        }
6169        #[inline]
6170        #[doc(hidden)]
6171        pub fn BindBufferRange_is_loaded(&self) -> bool {
6172            !self.glBindBufferRange_p.load(RELAX).is_null()
6173        }
6174        /// [glBindBuffersBase](http://docs.gl/gl4/glBindBuffersBase)(target, first, count, buffers)
6175        /// * `target` group: BufferTargetARB
6176        /// * `buffers` len: count
6177        #[cfg_attr(feature = "inline", inline)]
6178        #[cfg_attr(feature = "inline_always", inline(always))]
6179        pub unsafe fn BindBuffersBase(
6180            &self,
6181            target: GLenum,
6182            first: GLuint,
6183            count: GLsizei,
6184            buffers: *const GLuint,
6185        ) {
6186            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6187            {
6188                trace!(
6189                    "calling gl.BindBuffersBase({:#X}, {:?}, {:?}, {:p});",
6190                    target,
6191                    first,
6192                    count,
6193                    buffers
6194                );
6195            }
6196            let out = call_atomic_ptr_4arg(
6197                "glBindBuffersBase",
6198                &self.glBindBuffersBase_p,
6199                target,
6200                first,
6201                count,
6202                buffers,
6203            );
6204            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6205            {
6206                self.automatic_glGetError("glBindBuffersBase");
6207            }
6208            out
6209        }
6210        #[doc(hidden)]
6211        pub unsafe fn BindBuffersBase_load_with_dyn(
6212            &self,
6213            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6214        ) -> bool {
6215            load_dyn_name_atomic_ptr(
6216                get_proc_address,
6217                b"glBindBuffersBase\0",
6218                &self.glBindBuffersBase_p,
6219            )
6220        }
6221        #[inline]
6222        #[doc(hidden)]
6223        pub fn BindBuffersBase_is_loaded(&self) -> bool {
6224            !self.glBindBuffersBase_p.load(RELAX).is_null()
6225        }
6226        /// [glBindBuffersRange](http://docs.gl/gl4/glBindBuffersRange)(target, first, count, buffers, offsets, sizes)
6227        /// * `target` group: BufferTargetARB
6228        /// * `buffers` len: count
6229        /// * `offsets` len: count
6230        /// * `sizes` len: count
6231        #[cfg_attr(feature = "inline", inline)]
6232        #[cfg_attr(feature = "inline_always", inline(always))]
6233        pub unsafe fn BindBuffersRange(
6234            &self,
6235            target: GLenum,
6236            first: GLuint,
6237            count: GLsizei,
6238            buffers: *const GLuint,
6239            offsets: *const GLintptr,
6240            sizes: *const GLsizeiptr,
6241        ) {
6242            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6243            {
6244                trace!(
6245                    "calling gl.BindBuffersRange({:#X}, {:?}, {:?}, {:p}, {:p}, {:p});",
6246                    target,
6247                    first,
6248                    count,
6249                    buffers,
6250                    offsets,
6251                    sizes
6252                );
6253            }
6254            let out = call_atomic_ptr_6arg(
6255                "glBindBuffersRange",
6256                &self.glBindBuffersRange_p,
6257                target,
6258                first,
6259                count,
6260                buffers,
6261                offsets,
6262                sizes,
6263            );
6264            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6265            {
6266                self.automatic_glGetError("glBindBuffersRange");
6267            }
6268            out
6269        }
6270        #[doc(hidden)]
6271        pub unsafe fn BindBuffersRange_load_with_dyn(
6272            &self,
6273            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6274        ) -> bool {
6275            load_dyn_name_atomic_ptr(
6276                get_proc_address,
6277                b"glBindBuffersRange\0",
6278                &self.glBindBuffersRange_p,
6279            )
6280        }
6281        #[inline]
6282        #[doc(hidden)]
6283        pub fn BindBuffersRange_is_loaded(&self) -> bool {
6284            !self.glBindBuffersRange_p.load(RELAX).is_null()
6285        }
6286        /// [glBindFragDataLocation](http://docs.gl/gl4/glBindFragDataLocation)(program, color, name)
6287        /// * `name` len: COMPSIZE(name)
6288        #[cfg_attr(feature = "inline", inline)]
6289        #[cfg_attr(feature = "inline_always", inline(always))]
6290        pub unsafe fn BindFragDataLocation(
6291            &self,
6292            program: GLuint,
6293            color: GLuint,
6294            name: *const GLchar,
6295        ) {
6296            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6297            {
6298                trace!(
6299                    "calling gl.BindFragDataLocation({:?}, {:?}, {:p});",
6300                    program,
6301                    color,
6302                    name
6303                );
6304            }
6305            let out = call_atomic_ptr_3arg(
6306                "glBindFragDataLocation",
6307                &self.glBindFragDataLocation_p,
6308                program,
6309                color,
6310                name,
6311            );
6312            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6313            {
6314                self.automatic_glGetError("glBindFragDataLocation");
6315            }
6316            out
6317        }
6318        #[doc(hidden)]
6319        pub unsafe fn BindFragDataLocation_load_with_dyn(
6320            &self,
6321            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6322        ) -> bool {
6323            load_dyn_name_atomic_ptr(
6324                get_proc_address,
6325                b"glBindFragDataLocation\0",
6326                &self.glBindFragDataLocation_p,
6327            )
6328        }
6329        #[inline]
6330        #[doc(hidden)]
6331        pub fn BindFragDataLocation_is_loaded(&self) -> bool {
6332            !self.glBindFragDataLocation_p.load(RELAX).is_null()
6333        }
6334        /// [glBindFragDataLocationIndexed](http://docs.gl/gl4/glBindFragDataLocationIndexed)(program, colorNumber, index, name)
6335        #[cfg_attr(feature = "inline", inline)]
6336        #[cfg_attr(feature = "inline_always", inline(always))]
6337        pub unsafe fn BindFragDataLocationIndexed(
6338            &self,
6339            program: GLuint,
6340            colorNumber: GLuint,
6341            index: GLuint,
6342            name: *const GLchar,
6343        ) {
6344            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6345            {
6346                trace!(
6347                    "calling gl.BindFragDataLocationIndexed({:?}, {:?}, {:?}, {:p});",
6348                    program,
6349                    colorNumber,
6350                    index,
6351                    name
6352                );
6353            }
6354            let out = call_atomic_ptr_4arg(
6355                "glBindFragDataLocationIndexed",
6356                &self.glBindFragDataLocationIndexed_p,
6357                program,
6358                colorNumber,
6359                index,
6360                name,
6361            );
6362            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6363            {
6364                self.automatic_glGetError("glBindFragDataLocationIndexed");
6365            }
6366            out
6367        }
6368        #[doc(hidden)]
6369        pub unsafe fn BindFragDataLocationIndexed_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"glBindFragDataLocationIndexed\0",
6376                &self.glBindFragDataLocationIndexed_p,
6377            )
6378        }
6379        #[inline]
6380        #[doc(hidden)]
6381        pub fn BindFragDataLocationIndexed_is_loaded(&self) -> bool {
6382            !self.glBindFragDataLocationIndexed_p.load(RELAX).is_null()
6383        }
6384        /// [glBindFramebuffer](http://docs.gl/gl4/glBindFramebuffer)(target, framebuffer)
6385        /// * `target` group: FramebufferTarget
6386        #[cfg_attr(feature = "inline", inline)]
6387        #[cfg_attr(feature = "inline_always", inline(always))]
6388        pub unsafe fn BindFramebuffer(&self, target: GLenum, framebuffer: GLuint) {
6389            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6390            {
6391                trace!(
6392                    "calling gl.BindFramebuffer({:#X}, {:?});",
6393                    target,
6394                    framebuffer
6395                );
6396            }
6397            let out = call_atomic_ptr_2arg(
6398                "glBindFramebuffer",
6399                &self.glBindFramebuffer_p,
6400                target,
6401                framebuffer,
6402            );
6403            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6404            {
6405                self.automatic_glGetError("glBindFramebuffer");
6406            }
6407            out
6408        }
6409        #[doc(hidden)]
6410        pub unsafe fn BindFramebuffer_load_with_dyn(
6411            &self,
6412            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6413        ) -> bool {
6414            load_dyn_name_atomic_ptr(
6415                get_proc_address,
6416                b"glBindFramebuffer\0",
6417                &self.glBindFramebuffer_p,
6418            )
6419        }
6420        #[inline]
6421        #[doc(hidden)]
6422        pub fn BindFramebuffer_is_loaded(&self) -> bool {
6423            !self.glBindFramebuffer_p.load(RELAX).is_null()
6424        }
6425        /// [glBindImageTexture](http://docs.gl/gl4/glBindImageTexture)(unit, texture, level, layered, layer, access, format)
6426        /// * `access` group: BufferAccessARB
6427        /// * `format` group: InternalFormat
6428        #[cfg_attr(feature = "inline", inline)]
6429        #[cfg_attr(feature = "inline_always", inline(always))]
6430        pub unsafe fn BindImageTexture(
6431            &self,
6432            unit: GLuint,
6433            texture: GLuint,
6434            level: GLint,
6435            layered: GLboolean,
6436            layer: GLint,
6437            access: GLenum,
6438            format: GLenum,
6439        ) {
6440            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6441            {
6442                trace!(
6443                    "calling gl.BindImageTexture({:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X});",
6444                    unit,
6445                    texture,
6446                    level,
6447                    layered,
6448                    layer,
6449                    access,
6450                    format
6451                );
6452            }
6453            let out = call_atomic_ptr_7arg(
6454                "glBindImageTexture",
6455                &self.glBindImageTexture_p,
6456                unit,
6457                texture,
6458                level,
6459                layered,
6460                layer,
6461                access,
6462                format,
6463            );
6464            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6465            {
6466                self.automatic_glGetError("glBindImageTexture");
6467            }
6468            out
6469        }
6470        #[doc(hidden)]
6471        pub unsafe fn BindImageTexture_load_with_dyn(
6472            &self,
6473            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6474        ) -> bool {
6475            load_dyn_name_atomic_ptr(
6476                get_proc_address,
6477                b"glBindImageTexture\0",
6478                &self.glBindImageTexture_p,
6479            )
6480        }
6481        #[inline]
6482        #[doc(hidden)]
6483        pub fn BindImageTexture_is_loaded(&self) -> bool {
6484            !self.glBindImageTexture_p.load(RELAX).is_null()
6485        }
6486        /// [glBindImageTextures](http://docs.gl/gl4/glBindImageTextures)(first, count, textures)
6487        /// * `textures` len: count
6488        #[cfg_attr(feature = "inline", inline)]
6489        #[cfg_attr(feature = "inline_always", inline(always))]
6490        pub unsafe fn BindImageTextures(
6491            &self,
6492            first: GLuint,
6493            count: GLsizei,
6494            textures: *const GLuint,
6495        ) {
6496            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6497            {
6498                trace!(
6499                    "calling gl.BindImageTextures({:?}, {:?}, {:p});",
6500                    first,
6501                    count,
6502                    textures
6503                );
6504            }
6505            let out = call_atomic_ptr_3arg(
6506                "glBindImageTextures",
6507                &self.glBindImageTextures_p,
6508                first,
6509                count,
6510                textures,
6511            );
6512            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6513            {
6514                self.automatic_glGetError("glBindImageTextures");
6515            }
6516            out
6517        }
6518        #[doc(hidden)]
6519        pub unsafe fn BindImageTextures_load_with_dyn(
6520            &self,
6521            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6522        ) -> bool {
6523            load_dyn_name_atomic_ptr(
6524                get_proc_address,
6525                b"glBindImageTextures\0",
6526                &self.glBindImageTextures_p,
6527            )
6528        }
6529        #[inline]
6530        #[doc(hidden)]
6531        pub fn BindImageTextures_is_loaded(&self) -> bool {
6532            !self.glBindImageTextures_p.load(RELAX).is_null()
6533        }
6534        /// [glBindProgramPipeline](http://docs.gl/gl4/glBindProgramPipeline)(pipeline)
6535        #[cfg_attr(feature = "inline", inline)]
6536        #[cfg_attr(feature = "inline_always", inline(always))]
6537        pub unsafe fn BindProgramPipeline(&self, pipeline: GLuint) {
6538            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6539            {
6540                trace!("calling gl.BindProgramPipeline({:?});", pipeline);
6541            }
6542            let out = call_atomic_ptr_1arg(
6543                "glBindProgramPipeline",
6544                &self.glBindProgramPipeline_p,
6545                pipeline,
6546            );
6547            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6548            {
6549                self.automatic_glGetError("glBindProgramPipeline");
6550            }
6551            out
6552        }
6553        #[doc(hidden)]
6554        pub unsafe fn BindProgramPipeline_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"glBindProgramPipeline\0",
6561                &self.glBindProgramPipeline_p,
6562            )
6563        }
6564        #[inline]
6565        #[doc(hidden)]
6566        pub fn BindProgramPipeline_is_loaded(&self) -> bool {
6567            !self.glBindProgramPipeline_p.load(RELAX).is_null()
6568        }
6569        /// [glBindRenderbuffer](http://docs.gl/gl4/glBindRenderbuffer)(target, renderbuffer)
6570        /// * `target` group: RenderbufferTarget
6571        #[cfg_attr(feature = "inline", inline)]
6572        #[cfg_attr(feature = "inline_always", inline(always))]
6573        pub unsafe fn BindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) {
6574            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6575            {
6576                trace!(
6577                    "calling gl.BindRenderbuffer({:#X}, {:?});",
6578                    target,
6579                    renderbuffer
6580                );
6581            }
6582            let out = call_atomic_ptr_2arg(
6583                "glBindRenderbuffer",
6584                &self.glBindRenderbuffer_p,
6585                target,
6586                renderbuffer,
6587            );
6588            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6589            {
6590                self.automatic_glGetError("glBindRenderbuffer");
6591            }
6592            out
6593        }
6594        #[doc(hidden)]
6595        pub unsafe fn BindRenderbuffer_load_with_dyn(
6596            &self,
6597            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6598        ) -> bool {
6599            load_dyn_name_atomic_ptr(
6600                get_proc_address,
6601                b"glBindRenderbuffer\0",
6602                &self.glBindRenderbuffer_p,
6603            )
6604        }
6605        #[inline]
6606        #[doc(hidden)]
6607        pub fn BindRenderbuffer_is_loaded(&self) -> bool {
6608            !self.glBindRenderbuffer_p.load(RELAX).is_null()
6609        }
6610        /// [glBindSampler](http://docs.gl/gl4/glBindSampler)(unit, sampler)
6611        #[cfg_attr(feature = "inline", inline)]
6612        #[cfg_attr(feature = "inline_always", inline(always))]
6613        pub unsafe fn BindSampler(&self, unit: GLuint, sampler: GLuint) {
6614            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6615            {
6616                trace!("calling gl.BindSampler({:?}, {:?});", unit, sampler);
6617            }
6618            let out = call_atomic_ptr_2arg("glBindSampler", &self.glBindSampler_p, unit, sampler);
6619            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6620            {
6621                self.automatic_glGetError("glBindSampler");
6622            }
6623            out
6624        }
6625        #[doc(hidden)]
6626        pub unsafe fn BindSampler_load_with_dyn(
6627            &self,
6628            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6629        ) -> bool {
6630            load_dyn_name_atomic_ptr(get_proc_address, b"glBindSampler\0", &self.glBindSampler_p)
6631        }
6632        #[inline]
6633        #[doc(hidden)]
6634        pub fn BindSampler_is_loaded(&self) -> bool {
6635            !self.glBindSampler_p.load(RELAX).is_null()
6636        }
6637        /// [glBindSamplers](http://docs.gl/gl4/glBindSamplers)(first, count, samplers)
6638        /// * `samplers` len: count
6639        #[cfg_attr(feature = "inline", inline)]
6640        #[cfg_attr(feature = "inline_always", inline(always))]
6641        pub unsafe fn BindSamplers(&self, first: GLuint, count: GLsizei, samplers: *const GLuint) {
6642            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6643            {
6644                trace!(
6645                    "calling gl.BindSamplers({:?}, {:?}, {:p});",
6646                    first,
6647                    count,
6648                    samplers
6649                );
6650            }
6651            let out = call_atomic_ptr_3arg(
6652                "glBindSamplers",
6653                &self.glBindSamplers_p,
6654                first,
6655                count,
6656                samplers,
6657            );
6658            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6659            {
6660                self.automatic_glGetError("glBindSamplers");
6661            }
6662            out
6663        }
6664        #[doc(hidden)]
6665        pub unsafe fn BindSamplers_load_with_dyn(
6666            &self,
6667            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6668        ) -> bool {
6669            load_dyn_name_atomic_ptr(
6670                get_proc_address,
6671                b"glBindSamplers\0",
6672                &self.glBindSamplers_p,
6673            )
6674        }
6675        #[inline]
6676        #[doc(hidden)]
6677        pub fn BindSamplers_is_loaded(&self) -> bool {
6678            !self.glBindSamplers_p.load(RELAX).is_null()
6679        }
6680        /// [glBindTexture](http://docs.gl/gl4/glBindTexture)(target, texture)
6681        /// * `target` group: TextureTarget
6682        /// * `texture` group: Texture
6683        #[cfg_attr(feature = "inline", inline)]
6684        #[cfg_attr(feature = "inline_always", inline(always))]
6685        pub unsafe fn BindTexture(&self, target: GLenum, texture: GLuint) {
6686            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6687            {
6688                trace!("calling gl.BindTexture({:#X}, {:?});", target, texture);
6689            }
6690            let out = call_atomic_ptr_2arg("glBindTexture", &self.glBindTexture_p, target, texture);
6691            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6692            {
6693                self.automatic_glGetError("glBindTexture");
6694            }
6695            out
6696        }
6697        #[doc(hidden)]
6698        pub unsafe fn BindTexture_load_with_dyn(
6699            &self,
6700            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6701        ) -> bool {
6702            load_dyn_name_atomic_ptr(get_proc_address, b"glBindTexture\0", &self.glBindTexture_p)
6703        }
6704        #[inline]
6705        #[doc(hidden)]
6706        pub fn BindTexture_is_loaded(&self) -> bool {
6707            !self.glBindTexture_p.load(RELAX).is_null()
6708        }
6709        /// [glBindTextureUnit](http://docs.gl/gl4/glBindTextureUnit)(unit, texture)
6710        #[cfg_attr(feature = "inline", inline)]
6711        #[cfg_attr(feature = "inline_always", inline(always))]
6712        pub unsafe fn BindTextureUnit(&self, unit: GLuint, texture: GLuint) {
6713            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6714            {
6715                trace!("calling gl.BindTextureUnit({:?}, {:?});", unit, texture);
6716            }
6717            let out = call_atomic_ptr_2arg(
6718                "glBindTextureUnit",
6719                &self.glBindTextureUnit_p,
6720                unit,
6721                texture,
6722            );
6723            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6724            {
6725                self.automatic_glGetError("glBindTextureUnit");
6726            }
6727            out
6728        }
6729        #[doc(hidden)]
6730        pub unsafe fn BindTextureUnit_load_with_dyn(
6731            &self,
6732            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6733        ) -> bool {
6734            load_dyn_name_atomic_ptr(
6735                get_proc_address,
6736                b"glBindTextureUnit\0",
6737                &self.glBindTextureUnit_p,
6738            )
6739        }
6740        #[inline]
6741        #[doc(hidden)]
6742        pub fn BindTextureUnit_is_loaded(&self) -> bool {
6743            !self.glBindTextureUnit_p.load(RELAX).is_null()
6744        }
6745        /// [glBindTextures](http://docs.gl/gl4/glBindTextures)(first, count, textures)
6746        /// * `textures` len: count
6747        #[cfg_attr(feature = "inline", inline)]
6748        #[cfg_attr(feature = "inline_always", inline(always))]
6749        pub unsafe fn BindTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) {
6750            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6751            {
6752                trace!(
6753                    "calling gl.BindTextures({:?}, {:?}, {:p});",
6754                    first,
6755                    count,
6756                    textures
6757                );
6758            }
6759            let out = call_atomic_ptr_3arg(
6760                "glBindTextures",
6761                &self.glBindTextures_p,
6762                first,
6763                count,
6764                textures,
6765            );
6766            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6767            {
6768                self.automatic_glGetError("glBindTextures");
6769            }
6770            out
6771        }
6772        #[doc(hidden)]
6773        pub unsafe fn BindTextures_load_with_dyn(
6774            &self,
6775            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6776        ) -> bool {
6777            load_dyn_name_atomic_ptr(
6778                get_proc_address,
6779                b"glBindTextures\0",
6780                &self.glBindTextures_p,
6781            )
6782        }
6783        #[inline]
6784        #[doc(hidden)]
6785        pub fn BindTextures_is_loaded(&self) -> bool {
6786            !self.glBindTextures_p.load(RELAX).is_null()
6787        }
6788        /// [glBindTransformFeedback](http://docs.gl/gl4/glBindTransformFeedback)(target, id)
6789        /// * `target` group: BindTransformFeedbackTarget
6790        #[cfg_attr(feature = "inline", inline)]
6791        #[cfg_attr(feature = "inline_always", inline(always))]
6792        pub unsafe fn BindTransformFeedback(&self, target: GLenum, id: GLuint) {
6793            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6794            {
6795                trace!("calling gl.BindTransformFeedback({:#X}, {:?});", target, id);
6796            }
6797            let out = call_atomic_ptr_2arg(
6798                "glBindTransformFeedback",
6799                &self.glBindTransformFeedback_p,
6800                target,
6801                id,
6802            );
6803            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6804            {
6805                self.automatic_glGetError("glBindTransformFeedback");
6806            }
6807            out
6808        }
6809        #[doc(hidden)]
6810        pub unsafe fn BindTransformFeedback_load_with_dyn(
6811            &self,
6812            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6813        ) -> bool {
6814            load_dyn_name_atomic_ptr(
6815                get_proc_address,
6816                b"glBindTransformFeedback\0",
6817                &self.glBindTransformFeedback_p,
6818            )
6819        }
6820        #[inline]
6821        #[doc(hidden)]
6822        pub fn BindTransformFeedback_is_loaded(&self) -> bool {
6823            !self.glBindTransformFeedback_p.load(RELAX).is_null()
6824        }
6825        /// [glBindVertexArray](http://docs.gl/gl4/glBindVertexArray)(array)
6826        #[cfg_attr(feature = "inline", inline)]
6827        #[cfg_attr(feature = "inline_always", inline(always))]
6828        pub unsafe fn BindVertexArray(&self, array: GLuint) {
6829            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6830            {
6831                trace!("calling gl.BindVertexArray({:?});", array);
6832            }
6833            let out = call_atomic_ptr_1arg("glBindVertexArray", &self.glBindVertexArray_p, array);
6834            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6835            {
6836                self.automatic_glGetError("glBindVertexArray");
6837            }
6838            out
6839        }
6840        #[doc(hidden)]
6841        pub unsafe fn BindVertexArray_load_with_dyn(
6842            &self,
6843            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6844        ) -> bool {
6845            load_dyn_name_atomic_ptr(
6846                get_proc_address,
6847                b"glBindVertexArray\0",
6848                &self.glBindVertexArray_p,
6849            )
6850        }
6851        #[inline]
6852        #[doc(hidden)]
6853        pub fn BindVertexArray_is_loaded(&self) -> bool {
6854            !self.glBindVertexArray_p.load(RELAX).is_null()
6855        }
6856        /// [glBindVertexArrayAPPLE](http://docs.gl/gl4/glBindVertexArrayAPPLE)(array)
6857        #[cfg_attr(feature = "inline", inline)]
6858        #[cfg_attr(feature = "inline_always", inline(always))]
6859        pub unsafe fn BindVertexArrayAPPLE(&self, array: GLuint) {
6860            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6861            {
6862                trace!("calling gl.BindVertexArrayAPPLE({:?});", array);
6863            }
6864            let out = call_atomic_ptr_1arg(
6865                "glBindVertexArrayAPPLE",
6866                &self.glBindVertexArrayAPPLE_p,
6867                array,
6868            );
6869            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6870            {
6871                self.automatic_glGetError("glBindVertexArrayAPPLE");
6872            }
6873            out
6874        }
6875        #[doc(hidden)]
6876        pub unsafe fn BindVertexArrayAPPLE_load_with_dyn(
6877            &self,
6878            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6879        ) -> bool {
6880            load_dyn_name_atomic_ptr(
6881                get_proc_address,
6882                b"glBindVertexArrayAPPLE\0",
6883                &self.glBindVertexArrayAPPLE_p,
6884            )
6885        }
6886        #[inline]
6887        #[doc(hidden)]
6888        pub fn BindVertexArrayAPPLE_is_loaded(&self) -> bool {
6889            !self.glBindVertexArrayAPPLE_p.load(RELAX).is_null()
6890        }
6891        /// [glBindVertexArrayOES](http://docs.gl/gl4/glBindVertexArrayOES)(array)
6892        /// * alias of: [`glBindVertexArray`]
6893        #[cfg_attr(feature = "inline", inline)]
6894        #[cfg_attr(feature = "inline_always", inline(always))]
6895        pub unsafe fn BindVertexArrayOES(&self, array: GLuint) {
6896            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6897            {
6898                trace!("calling gl.BindVertexArrayOES({:?});", array);
6899            }
6900            let out =
6901                call_atomic_ptr_1arg("glBindVertexArrayOES", &self.glBindVertexArrayOES_p, array);
6902            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6903            {
6904                self.automatic_glGetError("glBindVertexArrayOES");
6905            }
6906            out
6907        }
6908        #[doc(hidden)]
6909        pub unsafe fn BindVertexArrayOES_load_with_dyn(
6910            &self,
6911            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6912        ) -> bool {
6913            load_dyn_name_atomic_ptr(
6914                get_proc_address,
6915                b"glBindVertexArrayOES\0",
6916                &self.glBindVertexArrayOES_p,
6917            )
6918        }
6919        #[inline]
6920        #[doc(hidden)]
6921        pub fn BindVertexArrayOES_is_loaded(&self) -> bool {
6922            !self.glBindVertexArrayOES_p.load(RELAX).is_null()
6923        }
6924        /// [glBindVertexBuffer](http://docs.gl/gl4/glBindVertexBuffer)(bindingindex, buffer, offset, stride)
6925        /// * `offset` group: BufferOffset
6926        #[cfg_attr(feature = "inline", inline)]
6927        #[cfg_attr(feature = "inline_always", inline(always))]
6928        pub unsafe fn BindVertexBuffer(
6929            &self,
6930            bindingindex: GLuint,
6931            buffer: GLuint,
6932            offset: GLintptr,
6933            stride: GLsizei,
6934        ) {
6935            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6936            {
6937                trace!(
6938                    "calling gl.BindVertexBuffer({:?}, {:?}, {:?}, {:?});",
6939                    bindingindex,
6940                    buffer,
6941                    offset,
6942                    stride
6943                );
6944            }
6945            let out = call_atomic_ptr_4arg(
6946                "glBindVertexBuffer",
6947                &self.glBindVertexBuffer_p,
6948                bindingindex,
6949                buffer,
6950                offset,
6951                stride,
6952            );
6953            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
6954            {
6955                self.automatic_glGetError("glBindVertexBuffer");
6956            }
6957            out
6958        }
6959        #[doc(hidden)]
6960        pub unsafe fn BindVertexBuffer_load_with_dyn(
6961            &self,
6962            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
6963        ) -> bool {
6964            load_dyn_name_atomic_ptr(
6965                get_proc_address,
6966                b"glBindVertexBuffer\0",
6967                &self.glBindVertexBuffer_p,
6968            )
6969        }
6970        #[inline]
6971        #[doc(hidden)]
6972        pub fn BindVertexBuffer_is_loaded(&self) -> bool {
6973            !self.glBindVertexBuffer_p.load(RELAX).is_null()
6974        }
6975        /// [glBindVertexBuffers](http://docs.gl/gl4/glBindVertexBuffers)(first, count, buffers, offsets, strides)
6976        /// * `buffers` len: count
6977        /// * `offsets` len: count
6978        /// * `strides` len: count
6979        #[cfg_attr(feature = "inline", inline)]
6980        #[cfg_attr(feature = "inline_always", inline(always))]
6981        pub unsafe fn BindVertexBuffers(
6982            &self,
6983            first: GLuint,
6984            count: GLsizei,
6985            buffers: *const GLuint,
6986            offsets: *const GLintptr,
6987            strides: *const GLsizei,
6988        ) {
6989            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
6990            {
6991                trace!(
6992                    "calling gl.BindVertexBuffers({:?}, {:?}, {:p}, {:p}, {:p});",
6993                    first,
6994                    count,
6995                    buffers,
6996                    offsets,
6997                    strides
6998                );
6999            }
7000            let out = call_atomic_ptr_5arg(
7001                "glBindVertexBuffers",
7002                &self.glBindVertexBuffers_p,
7003                first,
7004                count,
7005                buffers,
7006                offsets,
7007                strides,
7008            );
7009            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7010            {
7011                self.automatic_glGetError("glBindVertexBuffers");
7012            }
7013            out
7014        }
7015        #[doc(hidden)]
7016        pub unsafe fn BindVertexBuffers_load_with_dyn(
7017            &self,
7018            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7019        ) -> bool {
7020            load_dyn_name_atomic_ptr(
7021                get_proc_address,
7022                b"glBindVertexBuffers\0",
7023                &self.glBindVertexBuffers_p,
7024            )
7025        }
7026        #[inline]
7027        #[doc(hidden)]
7028        pub fn BindVertexBuffers_is_loaded(&self) -> bool {
7029            !self.glBindVertexBuffers_p.load(RELAX).is_null()
7030        }
7031        /// [glBlendBarrier](http://docs.gl/gl4/glBlendBarrier)()
7032        #[cfg_attr(feature = "inline", inline)]
7033        #[cfg_attr(feature = "inline_always", inline(always))]
7034        pub unsafe fn BlendBarrier(&self) {
7035            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7036            {
7037                trace!("calling gl.BlendBarrier();",);
7038            }
7039            let out = call_atomic_ptr_0arg("glBlendBarrier", &self.glBlendBarrier_p);
7040            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7041            {
7042                self.automatic_glGetError("glBlendBarrier");
7043            }
7044            out
7045        }
7046        #[doc(hidden)]
7047        pub unsafe fn BlendBarrier_load_with_dyn(
7048            &self,
7049            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7050        ) -> bool {
7051            load_dyn_name_atomic_ptr(
7052                get_proc_address,
7053                b"glBlendBarrier\0",
7054                &self.glBlendBarrier_p,
7055            )
7056        }
7057        #[inline]
7058        #[doc(hidden)]
7059        pub fn BlendBarrier_is_loaded(&self) -> bool {
7060            !self.glBlendBarrier_p.load(RELAX).is_null()
7061        }
7062        /// [glBlendColor](http://docs.gl/gl4/glBlendColor)(red, green, blue, alpha)
7063        /// * `red` group: ColorF
7064        /// * `green` group: ColorF
7065        /// * `blue` group: ColorF
7066        /// * `alpha` group: ColorF
7067        #[cfg_attr(feature = "inline", inline)]
7068        #[cfg_attr(feature = "inline_always", inline(always))]
7069        pub unsafe fn BlendColor(
7070            &self,
7071            red: GLfloat,
7072            green: GLfloat,
7073            blue: GLfloat,
7074            alpha: GLfloat,
7075        ) {
7076            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7077            {
7078                trace!(
7079                    "calling gl.BlendColor({:?}, {:?}, {:?}, {:?});",
7080                    red,
7081                    green,
7082                    blue,
7083                    alpha
7084                );
7085            }
7086            let out = call_atomic_ptr_4arg(
7087                "glBlendColor",
7088                &self.glBlendColor_p,
7089                red,
7090                green,
7091                blue,
7092                alpha,
7093            );
7094            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7095            {
7096                self.automatic_glGetError("glBlendColor");
7097            }
7098            out
7099        }
7100        #[doc(hidden)]
7101        pub unsafe fn BlendColor_load_with_dyn(
7102            &self,
7103            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7104        ) -> bool {
7105            load_dyn_name_atomic_ptr(get_proc_address, b"glBlendColor\0", &self.glBlendColor_p)
7106        }
7107        #[inline]
7108        #[doc(hidden)]
7109        pub fn BlendColor_is_loaded(&self) -> bool {
7110            !self.glBlendColor_p.load(RELAX).is_null()
7111        }
7112        /// [glBlendEquation](http://docs.gl/gl4/glBlendEquation)(mode)
7113        /// * `mode` group: BlendEquationModeEXT
7114        #[cfg_attr(feature = "inline", inline)]
7115        #[cfg_attr(feature = "inline_always", inline(always))]
7116        pub unsafe fn BlendEquation(&self, mode: GLenum) {
7117            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7118            {
7119                trace!("calling gl.BlendEquation({:#X});", mode);
7120            }
7121            let out = call_atomic_ptr_1arg("glBlendEquation", &self.glBlendEquation_p, mode);
7122            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7123            {
7124                self.automatic_glGetError("glBlendEquation");
7125            }
7126            out
7127        }
7128        #[doc(hidden)]
7129        pub unsafe fn BlendEquation_load_with_dyn(
7130            &self,
7131            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7132        ) -> bool {
7133            load_dyn_name_atomic_ptr(
7134                get_proc_address,
7135                b"glBlendEquation\0",
7136                &self.glBlendEquation_p,
7137            )
7138        }
7139        #[inline]
7140        #[doc(hidden)]
7141        pub fn BlendEquation_is_loaded(&self) -> bool {
7142            !self.glBlendEquation_p.load(RELAX).is_null()
7143        }
7144        /// [glBlendEquationSeparate](http://docs.gl/gl4/glBlendEquationSeparate)(modeRGB, modeAlpha)
7145        /// * `modeRGB` group: BlendEquationModeEXT
7146        /// * `modeAlpha` group: BlendEquationModeEXT
7147        #[cfg_attr(feature = "inline", inline)]
7148        #[cfg_attr(feature = "inline_always", inline(always))]
7149        pub unsafe fn BlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) {
7150            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7151            {
7152                trace!(
7153                    "calling gl.BlendEquationSeparate({:#X}, {:#X});",
7154                    modeRGB,
7155                    modeAlpha
7156                );
7157            }
7158            let out = call_atomic_ptr_2arg(
7159                "glBlendEquationSeparate",
7160                &self.glBlendEquationSeparate_p,
7161                modeRGB,
7162                modeAlpha,
7163            );
7164            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7165            {
7166                self.automatic_glGetError("glBlendEquationSeparate");
7167            }
7168            out
7169        }
7170        #[doc(hidden)]
7171        pub unsafe fn BlendEquationSeparate_load_with_dyn(
7172            &self,
7173            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7174        ) -> bool {
7175            load_dyn_name_atomic_ptr(
7176                get_proc_address,
7177                b"glBlendEquationSeparate\0",
7178                &self.glBlendEquationSeparate_p,
7179            )
7180        }
7181        #[inline]
7182        #[doc(hidden)]
7183        pub fn BlendEquationSeparate_is_loaded(&self) -> bool {
7184            !self.glBlendEquationSeparate_p.load(RELAX).is_null()
7185        }
7186        /// [glBlendEquationSeparatei](http://docs.gl/gl4/glBlendEquationSeparate)(buf, modeRGB, modeAlpha)
7187        /// * `modeRGB` group: BlendEquationModeEXT
7188        /// * `modeAlpha` group: BlendEquationModeEXT
7189        #[cfg_attr(feature = "inline", inline)]
7190        #[cfg_attr(feature = "inline_always", inline(always))]
7191        pub unsafe fn BlendEquationSeparatei(
7192            &self,
7193            buf: GLuint,
7194            modeRGB: GLenum,
7195            modeAlpha: GLenum,
7196        ) {
7197            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7198            {
7199                trace!(
7200                    "calling gl.BlendEquationSeparatei({:?}, {:#X}, {:#X});",
7201                    buf,
7202                    modeRGB,
7203                    modeAlpha
7204                );
7205            }
7206            let out = call_atomic_ptr_3arg(
7207                "glBlendEquationSeparatei",
7208                &self.glBlendEquationSeparatei_p,
7209                buf,
7210                modeRGB,
7211                modeAlpha,
7212            );
7213            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7214            {
7215                self.automatic_glGetError("glBlendEquationSeparatei");
7216            }
7217            out
7218        }
7219        #[doc(hidden)]
7220        pub unsafe fn BlendEquationSeparatei_load_with_dyn(
7221            &self,
7222            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7223        ) -> bool {
7224            load_dyn_name_atomic_ptr(
7225                get_proc_address,
7226                b"glBlendEquationSeparatei\0",
7227                &self.glBlendEquationSeparatei_p,
7228            )
7229        }
7230        #[inline]
7231        #[doc(hidden)]
7232        pub fn BlendEquationSeparatei_is_loaded(&self) -> bool {
7233            !self.glBlendEquationSeparatei_p.load(RELAX).is_null()
7234        }
7235        /// [glBlendEquationi](http://docs.gl/gl4/glBlendEquation)(buf, mode)
7236        /// * `mode` group: BlendEquationModeEXT
7237        #[cfg_attr(feature = "inline", inline)]
7238        #[cfg_attr(feature = "inline_always", inline(always))]
7239        pub unsafe fn BlendEquationi(&self, buf: GLuint, mode: GLenum) {
7240            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7241            {
7242                trace!("calling gl.BlendEquationi({:?}, {:#X});", buf, mode);
7243            }
7244            let out = call_atomic_ptr_2arg("glBlendEquationi", &self.glBlendEquationi_p, buf, mode);
7245            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7246            {
7247                self.automatic_glGetError("glBlendEquationi");
7248            }
7249            out
7250        }
7251        #[doc(hidden)]
7252        pub unsafe fn BlendEquationi_load_with_dyn(
7253            &self,
7254            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7255        ) -> bool {
7256            load_dyn_name_atomic_ptr(
7257                get_proc_address,
7258                b"glBlendEquationi\0",
7259                &self.glBlendEquationi_p,
7260            )
7261        }
7262        #[inline]
7263        #[doc(hidden)]
7264        pub fn BlendEquationi_is_loaded(&self) -> bool {
7265            !self.glBlendEquationi_p.load(RELAX).is_null()
7266        }
7267        /// [glBlendFunc](http://docs.gl/gl4/glBlendFunc)(sfactor, dfactor)
7268        /// * `sfactor` group: BlendingFactor
7269        /// * `dfactor` group: BlendingFactor
7270        #[cfg_attr(feature = "inline", inline)]
7271        #[cfg_attr(feature = "inline_always", inline(always))]
7272        pub unsafe fn BlendFunc(&self, sfactor: GLenum, dfactor: GLenum) {
7273            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7274            {
7275                trace!("calling gl.BlendFunc({:#X}, {:#X});", sfactor, dfactor);
7276            }
7277            let out = call_atomic_ptr_2arg("glBlendFunc", &self.glBlendFunc_p, sfactor, dfactor);
7278            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7279            {
7280                self.automatic_glGetError("glBlendFunc");
7281            }
7282            out
7283        }
7284        #[doc(hidden)]
7285        pub unsafe fn BlendFunc_load_with_dyn(
7286            &self,
7287            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7288        ) -> bool {
7289            load_dyn_name_atomic_ptr(get_proc_address, b"glBlendFunc\0", &self.glBlendFunc_p)
7290        }
7291        #[inline]
7292        #[doc(hidden)]
7293        pub fn BlendFunc_is_loaded(&self) -> bool {
7294            !self.glBlendFunc_p.load(RELAX).is_null()
7295        }
7296        /// [glBlendFuncSeparate](http://docs.gl/gl4/glBlendFuncSeparate)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)
7297        /// * `sfactorRGB` group: BlendingFactor
7298        /// * `dfactorRGB` group: BlendingFactor
7299        /// * `sfactorAlpha` group: BlendingFactor
7300        /// * `dfactorAlpha` group: BlendingFactor
7301        #[cfg_attr(feature = "inline", inline)]
7302        #[cfg_attr(feature = "inline_always", inline(always))]
7303        pub unsafe fn BlendFuncSeparate(
7304            &self,
7305            sfactorRGB: GLenum,
7306            dfactorRGB: GLenum,
7307            sfactorAlpha: GLenum,
7308            dfactorAlpha: GLenum,
7309        ) {
7310            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7311            {
7312                trace!(
7313                    "calling gl.BlendFuncSeparate({:#X}, {:#X}, {:#X}, {:#X});",
7314                    sfactorRGB,
7315                    dfactorRGB,
7316                    sfactorAlpha,
7317                    dfactorAlpha
7318                );
7319            }
7320            let out = call_atomic_ptr_4arg(
7321                "glBlendFuncSeparate",
7322                &self.glBlendFuncSeparate_p,
7323                sfactorRGB,
7324                dfactorRGB,
7325                sfactorAlpha,
7326                dfactorAlpha,
7327            );
7328            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7329            {
7330                self.automatic_glGetError("glBlendFuncSeparate");
7331            }
7332            out
7333        }
7334        #[doc(hidden)]
7335        pub unsafe fn BlendFuncSeparate_load_with_dyn(
7336            &self,
7337            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7338        ) -> bool {
7339            load_dyn_name_atomic_ptr(
7340                get_proc_address,
7341                b"glBlendFuncSeparate\0",
7342                &self.glBlendFuncSeparate_p,
7343            )
7344        }
7345        #[inline]
7346        #[doc(hidden)]
7347        pub fn BlendFuncSeparate_is_loaded(&self) -> bool {
7348            !self.glBlendFuncSeparate_p.load(RELAX).is_null()
7349        }
7350        /// [glBlendFuncSeparatei](http://docs.gl/gl4/glBlendFuncSeparate)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)
7351        /// * `srcRGB` group: BlendingFactor
7352        /// * `dstRGB` group: BlendingFactor
7353        /// * `srcAlpha` group: BlendingFactor
7354        /// * `dstAlpha` group: BlendingFactor
7355        #[cfg_attr(feature = "inline", inline)]
7356        #[cfg_attr(feature = "inline_always", inline(always))]
7357        pub unsafe fn BlendFuncSeparatei(
7358            &self,
7359            buf: GLuint,
7360            srcRGB: GLenum,
7361            dstRGB: GLenum,
7362            srcAlpha: GLenum,
7363            dstAlpha: GLenum,
7364        ) {
7365            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7366            {
7367                trace!(
7368                    "calling gl.BlendFuncSeparatei({:?}, {:#X}, {:#X}, {:#X}, {:#X});",
7369                    buf,
7370                    srcRGB,
7371                    dstRGB,
7372                    srcAlpha,
7373                    dstAlpha
7374                );
7375            }
7376            let out = call_atomic_ptr_5arg(
7377                "glBlendFuncSeparatei",
7378                &self.glBlendFuncSeparatei_p,
7379                buf,
7380                srcRGB,
7381                dstRGB,
7382                srcAlpha,
7383                dstAlpha,
7384            );
7385            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7386            {
7387                self.automatic_glGetError("glBlendFuncSeparatei");
7388            }
7389            out
7390        }
7391        #[doc(hidden)]
7392        pub unsafe fn BlendFuncSeparatei_load_with_dyn(
7393            &self,
7394            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7395        ) -> bool {
7396            load_dyn_name_atomic_ptr(
7397                get_proc_address,
7398                b"glBlendFuncSeparatei\0",
7399                &self.glBlendFuncSeparatei_p,
7400            )
7401        }
7402        #[inline]
7403        #[doc(hidden)]
7404        pub fn BlendFuncSeparatei_is_loaded(&self) -> bool {
7405            !self.glBlendFuncSeparatei_p.load(RELAX).is_null()
7406        }
7407        /// [glBlendFunci](http://docs.gl/gl4/glBlendFunc)(buf, src, dst)
7408        /// * `src` group: BlendingFactor
7409        /// * `dst` group: BlendingFactor
7410        #[cfg_attr(feature = "inline", inline)]
7411        #[cfg_attr(feature = "inline_always", inline(always))]
7412        pub unsafe fn BlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) {
7413            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7414            {
7415                trace!("calling gl.BlendFunci({:?}, {:#X}, {:#X});", buf, src, dst);
7416            }
7417            let out = call_atomic_ptr_3arg("glBlendFunci", &self.glBlendFunci_p, buf, src, dst);
7418            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7419            {
7420                self.automatic_glGetError("glBlendFunci");
7421            }
7422            out
7423        }
7424        #[doc(hidden)]
7425        pub unsafe fn BlendFunci_load_with_dyn(
7426            &self,
7427            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7428        ) -> bool {
7429            load_dyn_name_atomic_ptr(get_proc_address, b"glBlendFunci\0", &self.glBlendFunci_p)
7430        }
7431        #[inline]
7432        #[doc(hidden)]
7433        pub fn BlendFunci_is_loaded(&self) -> bool {
7434            !self.glBlendFunci_p.load(RELAX).is_null()
7435        }
7436        /// [glBlitFramebuffer](http://docs.gl/gl4/glBlitFramebuffer)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)
7437        /// * `mask` group: ClearBufferMask
7438        /// * `filter` group: BlitFramebufferFilter
7439        #[cfg_attr(feature = "inline", inline)]
7440        #[cfg_attr(feature = "inline_always", inline(always))]
7441        pub unsafe fn BlitFramebuffer(
7442            &self,
7443            srcX0: GLint,
7444            srcY0: GLint,
7445            srcX1: GLint,
7446            srcY1: GLint,
7447            dstX0: GLint,
7448            dstY0: GLint,
7449            dstX1: GLint,
7450            dstY1: GLint,
7451            mask: GLbitfield,
7452            filter: GLenum,
7453        ) {
7454            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7455            {
7456                trace!("calling gl.BlitFramebuffer({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X});", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
7457            }
7458            let out = call_atomic_ptr_10arg(
7459                "glBlitFramebuffer",
7460                &self.glBlitFramebuffer_p,
7461                srcX0,
7462                srcY0,
7463                srcX1,
7464                srcY1,
7465                dstX0,
7466                dstY0,
7467                dstX1,
7468                dstY1,
7469                mask,
7470                filter,
7471            );
7472            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7473            {
7474                self.automatic_glGetError("glBlitFramebuffer");
7475            }
7476            out
7477        }
7478        #[doc(hidden)]
7479        pub unsafe fn BlitFramebuffer_load_with_dyn(
7480            &self,
7481            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7482        ) -> bool {
7483            load_dyn_name_atomic_ptr(
7484                get_proc_address,
7485                b"glBlitFramebuffer\0",
7486                &self.glBlitFramebuffer_p,
7487            )
7488        }
7489        #[inline]
7490        #[doc(hidden)]
7491        pub fn BlitFramebuffer_is_loaded(&self) -> bool {
7492            !self.glBlitFramebuffer_p.load(RELAX).is_null()
7493        }
7494        /// [glBlitNamedFramebuffer](http://docs.gl/gl4/glBlitNamedFramebuffer)(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)
7495        /// * `mask` group: ClearBufferMask
7496        /// * `filter` group: BlitFramebufferFilter
7497        #[cfg_attr(feature = "inline", inline)]
7498        #[cfg_attr(feature = "inline_always", inline(always))]
7499        pub unsafe fn BlitNamedFramebuffer(
7500            &self,
7501            readFramebuffer: GLuint,
7502            drawFramebuffer: GLuint,
7503            srcX0: GLint,
7504            srcY0: GLint,
7505            srcX1: GLint,
7506            srcY1: GLint,
7507            dstX0: GLint,
7508            dstY0: GLint,
7509            dstX1: GLint,
7510            dstY1: GLint,
7511            mask: GLbitfield,
7512            filter: GLenum,
7513        ) {
7514            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7515            {
7516                trace!("calling gl.BlitNamedFramebuffer({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X});", readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
7517            }
7518            let out = call_atomic_ptr_12arg(
7519                "glBlitNamedFramebuffer",
7520                &self.glBlitNamedFramebuffer_p,
7521                readFramebuffer,
7522                drawFramebuffer,
7523                srcX0,
7524                srcY0,
7525                srcX1,
7526                srcY1,
7527                dstX0,
7528                dstY0,
7529                dstX1,
7530                dstY1,
7531                mask,
7532                filter,
7533            );
7534            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7535            {
7536                self.automatic_glGetError("glBlitNamedFramebuffer");
7537            }
7538            out
7539        }
7540        #[doc(hidden)]
7541        pub unsafe fn BlitNamedFramebuffer_load_with_dyn(
7542            &self,
7543            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7544        ) -> bool {
7545            load_dyn_name_atomic_ptr(
7546                get_proc_address,
7547                b"glBlitNamedFramebuffer\0",
7548                &self.glBlitNamedFramebuffer_p,
7549            )
7550        }
7551        #[inline]
7552        #[doc(hidden)]
7553        pub fn BlitNamedFramebuffer_is_loaded(&self) -> bool {
7554            !self.glBlitNamedFramebuffer_p.load(RELAX).is_null()
7555        }
7556        /// [glBufferData](http://docs.gl/gl4/glBufferData)(target, size, data, usage)
7557        /// * `target` group: BufferTargetARB
7558        /// * `size` group: BufferSize
7559        /// * `data` len: size
7560        /// * `usage` group: BufferUsageARB
7561        #[cfg_attr(feature = "inline", inline)]
7562        #[cfg_attr(feature = "inline_always", inline(always))]
7563        pub unsafe fn BufferData(
7564            &self,
7565            target: GLenum,
7566            size: GLsizeiptr,
7567            data: *const c_void,
7568            usage: GLenum,
7569        ) {
7570            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7571            {
7572                trace!(
7573                    "calling gl.BufferData({:#X}, {:?}, {:p}, {:#X});",
7574                    target,
7575                    size,
7576                    data,
7577                    usage
7578                );
7579            }
7580            let out = call_atomic_ptr_4arg(
7581                "glBufferData",
7582                &self.glBufferData_p,
7583                target,
7584                size,
7585                data,
7586                usage,
7587            );
7588            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7589            {
7590                self.automatic_glGetError("glBufferData");
7591            }
7592            out
7593        }
7594        #[doc(hidden)]
7595        pub unsafe fn BufferData_load_with_dyn(
7596            &self,
7597            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7598        ) -> bool {
7599            load_dyn_name_atomic_ptr(get_proc_address, b"glBufferData\0", &self.glBufferData_p)
7600        }
7601        #[inline]
7602        #[doc(hidden)]
7603        pub fn BufferData_is_loaded(&self) -> bool {
7604            !self.glBufferData_p.load(RELAX).is_null()
7605        }
7606        /// [glBufferStorage](http://docs.gl/gl4/glBufferStorage)(target, size, data, flags)
7607        /// * `target` group: BufferStorageTarget
7608        /// * `data` len: size
7609        /// * `flags` group: BufferStorageMask
7610        #[cfg_attr(feature = "inline", inline)]
7611        #[cfg_attr(feature = "inline_always", inline(always))]
7612        pub unsafe fn BufferStorage(
7613            &self,
7614            target: GLenum,
7615            size: GLsizeiptr,
7616            data: *const c_void,
7617            flags: GLbitfield,
7618        ) {
7619            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7620            {
7621                trace!(
7622                    "calling gl.BufferStorage({:#X}, {:?}, {:p}, {:?});",
7623                    target,
7624                    size,
7625                    data,
7626                    flags
7627                );
7628            }
7629            let out = call_atomic_ptr_4arg(
7630                "glBufferStorage",
7631                &self.glBufferStorage_p,
7632                target,
7633                size,
7634                data,
7635                flags,
7636            );
7637            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7638            {
7639                self.automatic_glGetError("glBufferStorage");
7640            }
7641            out
7642        }
7643        #[doc(hidden)]
7644        pub unsafe fn BufferStorage_load_with_dyn(
7645            &self,
7646            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7647        ) -> bool {
7648            load_dyn_name_atomic_ptr(
7649                get_proc_address,
7650                b"glBufferStorage\0",
7651                &self.glBufferStorage_p,
7652            )
7653        }
7654        #[inline]
7655        #[doc(hidden)]
7656        pub fn BufferStorage_is_loaded(&self) -> bool {
7657            !self.glBufferStorage_p.load(RELAX).is_null()
7658        }
7659        /// [glBufferStorageEXT](http://docs.gl/gl4/glBufferStorageEXT)(target, size, data, flags)
7660        /// * `target` group: BufferStorageTarget
7661        /// * `data` len: size
7662        /// * `flags` group: BufferStorageMask
7663        /// * alias of: [`glBufferStorage`]
7664        #[cfg_attr(feature = "inline", inline)]
7665        #[cfg_attr(feature = "inline_always", inline(always))]
7666        pub unsafe fn BufferStorageEXT(
7667            &self,
7668            target: GLenum,
7669            size: GLsizeiptr,
7670            data: *const c_void,
7671            flags: GLbitfield,
7672        ) {
7673            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7674            {
7675                trace!(
7676                    "calling gl.BufferStorageEXT({:#X}, {:?}, {:p}, {:?});",
7677                    target,
7678                    size,
7679                    data,
7680                    flags
7681                );
7682            }
7683            let out = call_atomic_ptr_4arg(
7684                "glBufferStorageEXT",
7685                &self.glBufferStorageEXT_p,
7686                target,
7687                size,
7688                data,
7689                flags,
7690            );
7691            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7692            {
7693                self.automatic_glGetError("glBufferStorageEXT");
7694            }
7695            out
7696        }
7697        #[doc(hidden)]
7698        pub unsafe fn BufferStorageEXT_load_with_dyn(
7699            &self,
7700            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7701        ) -> bool {
7702            load_dyn_name_atomic_ptr(
7703                get_proc_address,
7704                b"glBufferStorageEXT\0",
7705                &self.glBufferStorageEXT_p,
7706            )
7707        }
7708        #[inline]
7709        #[doc(hidden)]
7710        pub fn BufferStorageEXT_is_loaded(&self) -> bool {
7711            !self.glBufferStorageEXT_p.load(RELAX).is_null()
7712        }
7713        /// [glBufferSubData](http://docs.gl/gl4/glBufferSubData)(target, offset, size, data)
7714        /// * `target` group: BufferTargetARB
7715        /// * `offset` group: BufferOffset
7716        /// * `size` group: BufferSize
7717        /// * `data` len: size
7718        #[cfg_attr(feature = "inline", inline)]
7719        #[cfg_attr(feature = "inline_always", inline(always))]
7720        pub unsafe fn BufferSubData(
7721            &self,
7722            target: GLenum,
7723            offset: GLintptr,
7724            size: GLsizeiptr,
7725            data: *const c_void,
7726        ) {
7727            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7728            {
7729                trace!(
7730                    "calling gl.BufferSubData({:#X}, {:?}, {:?}, {:p});",
7731                    target,
7732                    offset,
7733                    size,
7734                    data
7735                );
7736            }
7737            let out = call_atomic_ptr_4arg(
7738                "glBufferSubData",
7739                &self.glBufferSubData_p,
7740                target,
7741                offset,
7742                size,
7743                data,
7744            );
7745            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7746            {
7747                self.automatic_glGetError("glBufferSubData");
7748            }
7749            out
7750        }
7751        #[doc(hidden)]
7752        pub unsafe fn BufferSubData_load_with_dyn(
7753            &self,
7754            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7755        ) -> bool {
7756            load_dyn_name_atomic_ptr(
7757                get_proc_address,
7758                b"glBufferSubData\0",
7759                &self.glBufferSubData_p,
7760            )
7761        }
7762        #[inline]
7763        #[doc(hidden)]
7764        pub fn BufferSubData_is_loaded(&self) -> bool {
7765            !self.glBufferSubData_p.load(RELAX).is_null()
7766        }
7767        /// [glCheckFramebufferStatus](http://docs.gl/gl4/glCheckFramebufferStatus)(target)
7768        /// * `target` group: FramebufferTarget
7769        /// * return value group: FramebufferStatus
7770        #[cfg_attr(feature = "inline", inline)]
7771        #[cfg_attr(feature = "inline_always", inline(always))]
7772        pub unsafe fn CheckFramebufferStatus(&self, target: GLenum) -> GLenum {
7773            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7774            {
7775                trace!("calling gl.CheckFramebufferStatus({:#X});", target);
7776            }
7777            let out = call_atomic_ptr_1arg(
7778                "glCheckFramebufferStatus",
7779                &self.glCheckFramebufferStatus_p,
7780                target,
7781            );
7782            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7783            {
7784                self.automatic_glGetError("glCheckFramebufferStatus");
7785            }
7786            out
7787        }
7788        #[doc(hidden)]
7789        pub unsafe fn CheckFramebufferStatus_load_with_dyn(
7790            &self,
7791            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7792        ) -> bool {
7793            load_dyn_name_atomic_ptr(
7794                get_proc_address,
7795                b"glCheckFramebufferStatus\0",
7796                &self.glCheckFramebufferStatus_p,
7797            )
7798        }
7799        #[inline]
7800        #[doc(hidden)]
7801        pub fn CheckFramebufferStatus_is_loaded(&self) -> bool {
7802            !self.glCheckFramebufferStatus_p.load(RELAX).is_null()
7803        }
7804        /// [glCheckNamedFramebufferStatus](http://docs.gl/gl4/glCheckNamedFramebufferStatus)(framebuffer, target)
7805        /// * `target` group: FramebufferTarget
7806        /// * return value group: FramebufferStatus
7807        #[cfg_attr(feature = "inline", inline)]
7808        #[cfg_attr(feature = "inline_always", inline(always))]
7809        pub unsafe fn CheckNamedFramebufferStatus(
7810            &self,
7811            framebuffer: GLuint,
7812            target: GLenum,
7813        ) -> GLenum {
7814            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7815            {
7816                trace!(
7817                    "calling gl.CheckNamedFramebufferStatus({:?}, {:#X});",
7818                    framebuffer,
7819                    target
7820                );
7821            }
7822            let out = call_atomic_ptr_2arg(
7823                "glCheckNamedFramebufferStatus",
7824                &self.glCheckNamedFramebufferStatus_p,
7825                framebuffer,
7826                target,
7827            );
7828            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7829            {
7830                self.automatic_glGetError("glCheckNamedFramebufferStatus");
7831            }
7832            out
7833        }
7834        #[doc(hidden)]
7835        pub unsafe fn CheckNamedFramebufferStatus_load_with_dyn(
7836            &self,
7837            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7838        ) -> bool {
7839            load_dyn_name_atomic_ptr(
7840                get_proc_address,
7841                b"glCheckNamedFramebufferStatus\0",
7842                &self.glCheckNamedFramebufferStatus_p,
7843            )
7844        }
7845        #[inline]
7846        #[doc(hidden)]
7847        pub fn CheckNamedFramebufferStatus_is_loaded(&self) -> bool {
7848            !self.glCheckNamedFramebufferStatus_p.load(RELAX).is_null()
7849        }
7850        /// [glClampColor](http://docs.gl/gl4/glClampColor)(target, clamp)
7851        /// * `target` group: ClampColorTargetARB
7852        /// * `clamp` group: ClampColorModeARB
7853        #[cfg_attr(feature = "inline", inline)]
7854        #[cfg_attr(feature = "inline_always", inline(always))]
7855        pub unsafe fn ClampColor(&self, target: GLenum, clamp: GLenum) {
7856            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7857            {
7858                trace!("calling gl.ClampColor({:#X}, {:#X});", target, clamp);
7859            }
7860            let out = call_atomic_ptr_2arg("glClampColor", &self.glClampColor_p, target, clamp);
7861            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7862            {
7863                self.automatic_glGetError("glClampColor");
7864            }
7865            out
7866        }
7867        #[doc(hidden)]
7868        pub unsafe fn ClampColor_load_with_dyn(
7869            &self,
7870            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7871        ) -> bool {
7872            load_dyn_name_atomic_ptr(get_proc_address, b"glClampColor\0", &self.glClampColor_p)
7873        }
7874        #[inline]
7875        #[doc(hidden)]
7876        pub fn ClampColor_is_loaded(&self) -> bool {
7877            !self.glClampColor_p.load(RELAX).is_null()
7878        }
7879        /// [glClear](http://docs.gl/gl4/glClear)(mask)
7880        /// * `mask` group: ClearBufferMask
7881        #[cfg_attr(feature = "inline", inline)]
7882        #[cfg_attr(feature = "inline_always", inline(always))]
7883        pub unsafe fn Clear(&self, mask: GLbitfield) {
7884            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7885            {
7886                trace!("calling gl.Clear({:?});", mask);
7887            }
7888            let out = call_atomic_ptr_1arg("glClear", &self.glClear_p, mask);
7889            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7890            {
7891                self.automatic_glGetError("glClear");
7892            }
7893            out
7894        }
7895        #[doc(hidden)]
7896        pub unsafe fn Clear_load_with_dyn(
7897            &self,
7898            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7899        ) -> bool {
7900            load_dyn_name_atomic_ptr(get_proc_address, b"glClear\0", &self.glClear_p)
7901        }
7902        #[inline]
7903        #[doc(hidden)]
7904        pub fn Clear_is_loaded(&self) -> bool {
7905            !self.glClear_p.load(RELAX).is_null()
7906        }
7907        /// [glClearBufferData](http://docs.gl/gl4/glClearBufferData)(target, internalformat, format, type_, data)
7908        /// * `target` group: BufferStorageTarget
7909        /// * `internalformat` group: InternalFormat
7910        /// * `format` group: PixelFormat
7911        /// * `type_` group: PixelType
7912        /// * `data` len: COMPSIZE(format,type)
7913        #[cfg_attr(feature = "inline", inline)]
7914        #[cfg_attr(feature = "inline_always", inline(always))]
7915        pub unsafe fn ClearBufferData(
7916            &self,
7917            target: GLenum,
7918            internalformat: GLenum,
7919            format: GLenum,
7920            type_: GLenum,
7921            data: *const c_void,
7922        ) {
7923            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7924            {
7925                trace!(
7926                    "calling gl.ClearBufferData({:#X}, {:#X}, {:#X}, {:#X}, {:p});",
7927                    target,
7928                    internalformat,
7929                    format,
7930                    type_,
7931                    data
7932                );
7933            }
7934            let out = call_atomic_ptr_5arg(
7935                "glClearBufferData",
7936                &self.glClearBufferData_p,
7937                target,
7938                internalformat,
7939                format,
7940                type_,
7941                data,
7942            );
7943            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
7944            {
7945                self.automatic_glGetError("glClearBufferData");
7946            }
7947            out
7948        }
7949        #[doc(hidden)]
7950        pub unsafe fn ClearBufferData_load_with_dyn(
7951            &self,
7952            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
7953        ) -> bool {
7954            load_dyn_name_atomic_ptr(
7955                get_proc_address,
7956                b"glClearBufferData\0",
7957                &self.glClearBufferData_p,
7958            )
7959        }
7960        #[inline]
7961        #[doc(hidden)]
7962        pub fn ClearBufferData_is_loaded(&self) -> bool {
7963            !self.glClearBufferData_p.load(RELAX).is_null()
7964        }
7965        /// [glClearBufferSubData](http://docs.gl/gl4/glClearBufferSubData)(target, internalformat, offset, size, format, type_, data)
7966        /// * `target` group: BufferTargetARB
7967        /// * `internalformat` group: InternalFormat
7968        /// * `offset` group: BufferOffset
7969        /// * `size` group: BufferSize
7970        /// * `format` group: PixelFormat
7971        /// * `type_` group: PixelType
7972        /// * `data` len: COMPSIZE(format,type)
7973        #[cfg_attr(feature = "inline", inline)]
7974        #[cfg_attr(feature = "inline_always", inline(always))]
7975        pub unsafe fn ClearBufferSubData(
7976            &self,
7977            target: GLenum,
7978            internalformat: GLenum,
7979            offset: GLintptr,
7980            size: GLsizeiptr,
7981            format: GLenum,
7982            type_: GLenum,
7983            data: *const c_void,
7984        ) {
7985            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
7986            {
7987                trace!(
7988                    "calling gl.ClearBufferSubData({:#X}, {:#X}, {:?}, {:?}, {:#X}, {:#X}, {:p});",
7989                    target,
7990                    internalformat,
7991                    offset,
7992                    size,
7993                    format,
7994                    type_,
7995                    data
7996                );
7997            }
7998            let out = call_atomic_ptr_7arg(
7999                "glClearBufferSubData",
8000                &self.glClearBufferSubData_p,
8001                target,
8002                internalformat,
8003                offset,
8004                size,
8005                format,
8006                type_,
8007                data,
8008            );
8009            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8010            {
8011                self.automatic_glGetError("glClearBufferSubData");
8012            }
8013            out
8014        }
8015        #[doc(hidden)]
8016        pub unsafe fn ClearBufferSubData_load_with_dyn(
8017            &self,
8018            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8019        ) -> bool {
8020            load_dyn_name_atomic_ptr(
8021                get_proc_address,
8022                b"glClearBufferSubData\0",
8023                &self.glClearBufferSubData_p,
8024            )
8025        }
8026        #[inline]
8027        #[doc(hidden)]
8028        pub fn ClearBufferSubData_is_loaded(&self) -> bool {
8029            !self.glClearBufferSubData_p.load(RELAX).is_null()
8030        }
8031        /// [glClearBufferfi](http://docs.gl/gl4/glClearBuffer)(buffer, drawbuffer, depth, stencil)
8032        /// * `buffer` group: Buffer
8033        /// * `drawbuffer` group: DrawBufferName
8034        #[cfg_attr(feature = "inline", inline)]
8035        #[cfg_attr(feature = "inline_always", inline(always))]
8036        pub unsafe fn ClearBufferfi(
8037            &self,
8038            buffer: GLenum,
8039            drawbuffer: GLint,
8040            depth: GLfloat,
8041            stencil: GLint,
8042        ) {
8043            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8044            {
8045                trace!(
8046                    "calling gl.ClearBufferfi({:#X}, {:?}, {:?}, {:?});",
8047                    buffer,
8048                    drawbuffer,
8049                    depth,
8050                    stencil
8051                );
8052            }
8053            let out = call_atomic_ptr_4arg(
8054                "glClearBufferfi",
8055                &self.glClearBufferfi_p,
8056                buffer,
8057                drawbuffer,
8058                depth,
8059                stencil,
8060            );
8061            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8062            {
8063                self.automatic_glGetError("glClearBufferfi");
8064            }
8065            out
8066        }
8067        #[doc(hidden)]
8068        pub unsafe fn ClearBufferfi_load_with_dyn(
8069            &self,
8070            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8071        ) -> bool {
8072            load_dyn_name_atomic_ptr(
8073                get_proc_address,
8074                b"glClearBufferfi\0",
8075                &self.glClearBufferfi_p,
8076            )
8077        }
8078        #[inline]
8079        #[doc(hidden)]
8080        pub fn ClearBufferfi_is_loaded(&self) -> bool {
8081            !self.glClearBufferfi_p.load(RELAX).is_null()
8082        }
8083        /// [glClearBufferfv](http://docs.gl/gl4/glClearBuffer)(buffer, drawbuffer, value)
8084        /// * `buffer` group: Buffer
8085        /// * `drawbuffer` group: DrawBufferName
8086        /// * `value` len: COMPSIZE(buffer)
8087        #[cfg_attr(feature = "inline", inline)]
8088        #[cfg_attr(feature = "inline_always", inline(always))]
8089        pub unsafe fn ClearBufferfv(
8090            &self,
8091            buffer: GLenum,
8092            drawbuffer: GLint,
8093            value: *const GLfloat,
8094        ) {
8095            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8096            {
8097                trace!(
8098                    "calling gl.ClearBufferfv({:#X}, {:?}, {:p});",
8099                    buffer,
8100                    drawbuffer,
8101                    value
8102                );
8103            }
8104            let out = call_atomic_ptr_3arg(
8105                "glClearBufferfv",
8106                &self.glClearBufferfv_p,
8107                buffer,
8108                drawbuffer,
8109                value,
8110            );
8111            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8112            {
8113                self.automatic_glGetError("glClearBufferfv");
8114            }
8115            out
8116        }
8117        #[doc(hidden)]
8118        pub unsafe fn ClearBufferfv_load_with_dyn(
8119            &self,
8120            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8121        ) -> bool {
8122            load_dyn_name_atomic_ptr(
8123                get_proc_address,
8124                b"glClearBufferfv\0",
8125                &self.glClearBufferfv_p,
8126            )
8127        }
8128        #[inline]
8129        #[doc(hidden)]
8130        pub fn ClearBufferfv_is_loaded(&self) -> bool {
8131            !self.glClearBufferfv_p.load(RELAX).is_null()
8132        }
8133        /// [glClearBufferiv](http://docs.gl/gl4/glClearBuffer)(buffer, drawbuffer, value)
8134        /// * `buffer` group: Buffer
8135        /// * `drawbuffer` group: DrawBufferName
8136        /// * `value` len: COMPSIZE(buffer)
8137        #[cfg_attr(feature = "inline", inline)]
8138        #[cfg_attr(feature = "inline_always", inline(always))]
8139        pub unsafe fn ClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) {
8140            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8141            {
8142                trace!(
8143                    "calling gl.ClearBufferiv({:#X}, {:?}, {:p});",
8144                    buffer,
8145                    drawbuffer,
8146                    value
8147                );
8148            }
8149            let out = call_atomic_ptr_3arg(
8150                "glClearBufferiv",
8151                &self.glClearBufferiv_p,
8152                buffer,
8153                drawbuffer,
8154                value,
8155            );
8156            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8157            {
8158                self.automatic_glGetError("glClearBufferiv");
8159            }
8160            out
8161        }
8162        #[doc(hidden)]
8163        pub unsafe fn ClearBufferiv_load_with_dyn(
8164            &self,
8165            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8166        ) -> bool {
8167            load_dyn_name_atomic_ptr(
8168                get_proc_address,
8169                b"glClearBufferiv\0",
8170                &self.glClearBufferiv_p,
8171            )
8172        }
8173        #[inline]
8174        #[doc(hidden)]
8175        pub fn ClearBufferiv_is_loaded(&self) -> bool {
8176            !self.glClearBufferiv_p.load(RELAX).is_null()
8177        }
8178        /// [glClearBufferuiv](http://docs.gl/gl4/glClearBuffer)(buffer, drawbuffer, value)
8179        /// * `buffer` group: Buffer
8180        /// * `drawbuffer` group: DrawBufferName
8181        /// * `value` len: COMPSIZE(buffer)
8182        #[cfg_attr(feature = "inline", inline)]
8183        #[cfg_attr(feature = "inline_always", inline(always))]
8184        pub unsafe fn ClearBufferuiv(
8185            &self,
8186            buffer: GLenum,
8187            drawbuffer: GLint,
8188            value: *const GLuint,
8189        ) {
8190            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8191            {
8192                trace!(
8193                    "calling gl.ClearBufferuiv({:#X}, {:?}, {:p});",
8194                    buffer,
8195                    drawbuffer,
8196                    value
8197                );
8198            }
8199            let out = call_atomic_ptr_3arg(
8200                "glClearBufferuiv",
8201                &self.glClearBufferuiv_p,
8202                buffer,
8203                drawbuffer,
8204                value,
8205            );
8206            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8207            {
8208                self.automatic_glGetError("glClearBufferuiv");
8209            }
8210            out
8211        }
8212        #[doc(hidden)]
8213        pub unsafe fn ClearBufferuiv_load_with_dyn(
8214            &self,
8215            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8216        ) -> bool {
8217            load_dyn_name_atomic_ptr(
8218                get_proc_address,
8219                b"glClearBufferuiv\0",
8220                &self.glClearBufferuiv_p,
8221            )
8222        }
8223        #[inline]
8224        #[doc(hidden)]
8225        pub fn ClearBufferuiv_is_loaded(&self) -> bool {
8226            !self.glClearBufferuiv_p.load(RELAX).is_null()
8227        }
8228        /// [glClearColor](http://docs.gl/gl4/glClearColor)(red, green, blue, alpha)
8229        /// * `red` group: ColorF
8230        /// * `green` group: ColorF
8231        /// * `blue` group: ColorF
8232        /// * `alpha` group: ColorF
8233        #[cfg_attr(feature = "inline", inline)]
8234        #[cfg_attr(feature = "inline_always", inline(always))]
8235        pub unsafe fn ClearColor(
8236            &self,
8237            red: GLfloat,
8238            green: GLfloat,
8239            blue: GLfloat,
8240            alpha: GLfloat,
8241        ) {
8242            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8243            {
8244                trace!(
8245                    "calling gl.ClearColor({:?}, {:?}, {:?}, {:?});",
8246                    red,
8247                    green,
8248                    blue,
8249                    alpha
8250                );
8251            }
8252            let out = call_atomic_ptr_4arg(
8253                "glClearColor",
8254                &self.glClearColor_p,
8255                red,
8256                green,
8257                blue,
8258                alpha,
8259            );
8260            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8261            {
8262                self.automatic_glGetError("glClearColor");
8263            }
8264            out
8265        }
8266        #[doc(hidden)]
8267        pub unsafe fn ClearColor_load_with_dyn(
8268            &self,
8269            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8270        ) -> bool {
8271            load_dyn_name_atomic_ptr(get_proc_address, b"glClearColor\0", &self.glClearColor_p)
8272        }
8273        #[inline]
8274        #[doc(hidden)]
8275        pub fn ClearColor_is_loaded(&self) -> bool {
8276            !self.glClearColor_p.load(RELAX).is_null()
8277        }
8278        /// [glClearDepth](http://docs.gl/gl4/glClearDepth)(depth)
8279        #[cfg_attr(feature = "inline", inline)]
8280        #[cfg_attr(feature = "inline_always", inline(always))]
8281        pub unsafe fn ClearDepth(&self, depth: GLdouble) {
8282            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8283            {
8284                trace!("calling gl.ClearDepth({:?});", depth);
8285            }
8286            let out = call_atomic_ptr_1arg("glClearDepth", &self.glClearDepth_p, depth);
8287            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8288            {
8289                self.automatic_glGetError("glClearDepth");
8290            }
8291            out
8292        }
8293        #[doc(hidden)]
8294        pub unsafe fn ClearDepth_load_with_dyn(
8295            &self,
8296            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8297        ) -> bool {
8298            load_dyn_name_atomic_ptr(get_proc_address, b"glClearDepth\0", &self.glClearDepth_p)
8299        }
8300        #[inline]
8301        #[doc(hidden)]
8302        pub fn ClearDepth_is_loaded(&self) -> bool {
8303            !self.glClearDepth_p.load(RELAX).is_null()
8304        }
8305        /// [glClearDepthf](http://docs.gl/gl4/glClearDepth)(d)
8306        #[cfg_attr(feature = "inline", inline)]
8307        #[cfg_attr(feature = "inline_always", inline(always))]
8308        pub unsafe fn ClearDepthf(&self, d: GLfloat) {
8309            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8310            {
8311                trace!("calling gl.ClearDepthf({:?});", d);
8312            }
8313            let out = call_atomic_ptr_1arg("glClearDepthf", &self.glClearDepthf_p, d);
8314            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8315            {
8316                self.automatic_glGetError("glClearDepthf");
8317            }
8318            out
8319        }
8320        #[doc(hidden)]
8321        pub unsafe fn ClearDepthf_load_with_dyn(
8322            &self,
8323            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8324        ) -> bool {
8325            load_dyn_name_atomic_ptr(get_proc_address, b"glClearDepthf\0", &self.glClearDepthf_p)
8326        }
8327        #[inline]
8328        #[doc(hidden)]
8329        pub fn ClearDepthf_is_loaded(&self) -> bool {
8330            !self.glClearDepthf_p.load(RELAX).is_null()
8331        }
8332        /// [glClearNamedBufferData](http://docs.gl/gl4/glClearNamedBufferData)(buffer, internalformat, format, type_, data)
8333        /// * `internalformat` group: InternalFormat
8334        /// * `format` group: PixelFormat
8335        /// * `type_` group: PixelType
8336        #[cfg_attr(feature = "inline", inline)]
8337        #[cfg_attr(feature = "inline_always", inline(always))]
8338        pub unsafe fn ClearNamedBufferData(
8339            &self,
8340            buffer: GLuint,
8341            internalformat: GLenum,
8342            format: GLenum,
8343            type_: GLenum,
8344            data: *const c_void,
8345        ) {
8346            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8347            {
8348                trace!(
8349                    "calling gl.ClearNamedBufferData({:?}, {:#X}, {:#X}, {:#X}, {:p});",
8350                    buffer,
8351                    internalformat,
8352                    format,
8353                    type_,
8354                    data
8355                );
8356            }
8357            let out = call_atomic_ptr_5arg(
8358                "glClearNamedBufferData",
8359                &self.glClearNamedBufferData_p,
8360                buffer,
8361                internalformat,
8362                format,
8363                type_,
8364                data,
8365            );
8366            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8367            {
8368                self.automatic_glGetError("glClearNamedBufferData");
8369            }
8370            out
8371        }
8372        #[doc(hidden)]
8373        pub unsafe fn ClearNamedBufferData_load_with_dyn(
8374            &self,
8375            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8376        ) -> bool {
8377            load_dyn_name_atomic_ptr(
8378                get_proc_address,
8379                b"glClearNamedBufferData\0",
8380                &self.glClearNamedBufferData_p,
8381            )
8382        }
8383        #[inline]
8384        #[doc(hidden)]
8385        pub fn ClearNamedBufferData_is_loaded(&self) -> bool {
8386            !self.glClearNamedBufferData_p.load(RELAX).is_null()
8387        }
8388        /// [glClearNamedBufferSubData](http://docs.gl/gl4/glClearNamedBufferSubData)(buffer, internalformat, offset, size, format, type_, data)
8389        /// * `internalformat` group: InternalFormat
8390        /// * `size` group: BufferSize
8391        /// * `format` group: PixelFormat
8392        /// * `type_` group: PixelType
8393        #[cfg_attr(feature = "inline", inline)]
8394        #[cfg_attr(feature = "inline_always", inline(always))]
8395        pub unsafe fn ClearNamedBufferSubData(
8396            &self,
8397            buffer: GLuint,
8398            internalformat: GLenum,
8399            offset: GLintptr,
8400            size: GLsizeiptr,
8401            format: GLenum,
8402            type_: GLenum,
8403            data: *const c_void,
8404        ) {
8405            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8406            {
8407                trace!("calling gl.ClearNamedBufferSubData({:?}, {:#X}, {:?}, {:?}, {:#X}, {:#X}, {:p});", buffer, internalformat, offset, size, format, type_, data);
8408            }
8409            let out = call_atomic_ptr_7arg(
8410                "glClearNamedBufferSubData",
8411                &self.glClearNamedBufferSubData_p,
8412                buffer,
8413                internalformat,
8414                offset,
8415                size,
8416                format,
8417                type_,
8418                data,
8419            );
8420            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8421            {
8422                self.automatic_glGetError("glClearNamedBufferSubData");
8423            }
8424            out
8425        }
8426        #[doc(hidden)]
8427        pub unsafe fn ClearNamedBufferSubData_load_with_dyn(
8428            &self,
8429            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8430        ) -> bool {
8431            load_dyn_name_atomic_ptr(
8432                get_proc_address,
8433                b"glClearNamedBufferSubData\0",
8434                &self.glClearNamedBufferSubData_p,
8435            )
8436        }
8437        #[inline]
8438        #[doc(hidden)]
8439        pub fn ClearNamedBufferSubData_is_loaded(&self) -> bool {
8440            !self.glClearNamedBufferSubData_p.load(RELAX).is_null()
8441        }
8442        /// [glClearNamedFramebufferfi](http://docs.gl/gl4/glClearNamedFramebuffer)(framebuffer, buffer, drawbuffer, depth, stencil)
8443        /// * `buffer` group: Buffer
8444        #[cfg_attr(feature = "inline", inline)]
8445        #[cfg_attr(feature = "inline_always", inline(always))]
8446        pub unsafe fn ClearNamedFramebufferfi(
8447            &self,
8448            framebuffer: GLuint,
8449            buffer: GLenum,
8450            drawbuffer: GLint,
8451            depth: GLfloat,
8452            stencil: GLint,
8453        ) {
8454            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8455            {
8456                trace!(
8457                    "calling gl.ClearNamedFramebufferfi({:?}, {:#X}, {:?}, {:?}, {:?});",
8458                    framebuffer,
8459                    buffer,
8460                    drawbuffer,
8461                    depth,
8462                    stencil
8463                );
8464            }
8465            let out = call_atomic_ptr_5arg(
8466                "glClearNamedFramebufferfi",
8467                &self.glClearNamedFramebufferfi_p,
8468                framebuffer,
8469                buffer,
8470                drawbuffer,
8471                depth,
8472                stencil,
8473            );
8474            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8475            {
8476                self.automatic_glGetError("glClearNamedFramebufferfi");
8477            }
8478            out
8479        }
8480        #[doc(hidden)]
8481        pub unsafe fn ClearNamedFramebufferfi_load_with_dyn(
8482            &self,
8483            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8484        ) -> bool {
8485            load_dyn_name_atomic_ptr(
8486                get_proc_address,
8487                b"glClearNamedFramebufferfi\0",
8488                &self.glClearNamedFramebufferfi_p,
8489            )
8490        }
8491        #[inline]
8492        #[doc(hidden)]
8493        pub fn ClearNamedFramebufferfi_is_loaded(&self) -> bool {
8494            !self.glClearNamedFramebufferfi_p.load(RELAX).is_null()
8495        }
8496        /// [glClearNamedFramebufferfv](http://docs.gl/gl4/glClearNamedFramebuffer)(framebuffer, buffer, drawbuffer, value)
8497        /// * `buffer` group: Buffer
8498        #[cfg_attr(feature = "inline", inline)]
8499        #[cfg_attr(feature = "inline_always", inline(always))]
8500        pub unsafe fn ClearNamedFramebufferfv(
8501            &self,
8502            framebuffer: GLuint,
8503            buffer: GLenum,
8504            drawbuffer: GLint,
8505            value: *const GLfloat,
8506        ) {
8507            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8508            {
8509                trace!(
8510                    "calling gl.ClearNamedFramebufferfv({:?}, {:#X}, {:?}, {:p});",
8511                    framebuffer,
8512                    buffer,
8513                    drawbuffer,
8514                    value
8515                );
8516            }
8517            let out = call_atomic_ptr_4arg(
8518                "glClearNamedFramebufferfv",
8519                &self.glClearNamedFramebufferfv_p,
8520                framebuffer,
8521                buffer,
8522                drawbuffer,
8523                value,
8524            );
8525            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8526            {
8527                self.automatic_glGetError("glClearNamedFramebufferfv");
8528            }
8529            out
8530        }
8531        #[doc(hidden)]
8532        pub unsafe fn ClearNamedFramebufferfv_load_with_dyn(
8533            &self,
8534            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8535        ) -> bool {
8536            load_dyn_name_atomic_ptr(
8537                get_proc_address,
8538                b"glClearNamedFramebufferfv\0",
8539                &self.glClearNamedFramebufferfv_p,
8540            )
8541        }
8542        #[inline]
8543        #[doc(hidden)]
8544        pub fn ClearNamedFramebufferfv_is_loaded(&self) -> bool {
8545            !self.glClearNamedFramebufferfv_p.load(RELAX).is_null()
8546        }
8547        /// [glClearNamedFramebufferiv](http://docs.gl/gl4/glClearNamedFramebuffer)(framebuffer, buffer, drawbuffer, value)
8548        /// * `buffer` group: Buffer
8549        #[cfg_attr(feature = "inline", inline)]
8550        #[cfg_attr(feature = "inline_always", inline(always))]
8551        pub unsafe fn ClearNamedFramebufferiv(
8552            &self,
8553            framebuffer: GLuint,
8554            buffer: GLenum,
8555            drawbuffer: GLint,
8556            value: *const GLint,
8557        ) {
8558            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8559            {
8560                trace!(
8561                    "calling gl.ClearNamedFramebufferiv({:?}, {:#X}, {:?}, {:p});",
8562                    framebuffer,
8563                    buffer,
8564                    drawbuffer,
8565                    value
8566                );
8567            }
8568            let out = call_atomic_ptr_4arg(
8569                "glClearNamedFramebufferiv",
8570                &self.glClearNamedFramebufferiv_p,
8571                framebuffer,
8572                buffer,
8573                drawbuffer,
8574                value,
8575            );
8576            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8577            {
8578                self.automatic_glGetError("glClearNamedFramebufferiv");
8579            }
8580            out
8581        }
8582        #[doc(hidden)]
8583        pub unsafe fn ClearNamedFramebufferiv_load_with_dyn(
8584            &self,
8585            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8586        ) -> bool {
8587            load_dyn_name_atomic_ptr(
8588                get_proc_address,
8589                b"glClearNamedFramebufferiv\0",
8590                &self.glClearNamedFramebufferiv_p,
8591            )
8592        }
8593        #[inline]
8594        #[doc(hidden)]
8595        pub fn ClearNamedFramebufferiv_is_loaded(&self) -> bool {
8596            !self.glClearNamedFramebufferiv_p.load(RELAX).is_null()
8597        }
8598        /// [glClearNamedFramebufferuiv](http://docs.gl/gl4/glClearNamedFramebuffer)(framebuffer, buffer, drawbuffer, value)
8599        /// * `buffer` group: Buffer
8600        #[cfg_attr(feature = "inline", inline)]
8601        #[cfg_attr(feature = "inline_always", inline(always))]
8602        pub unsafe fn ClearNamedFramebufferuiv(
8603            &self,
8604            framebuffer: GLuint,
8605            buffer: GLenum,
8606            drawbuffer: GLint,
8607            value: *const GLuint,
8608        ) {
8609            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8610            {
8611                trace!(
8612                    "calling gl.ClearNamedFramebufferuiv({:?}, {:#X}, {:?}, {:p});",
8613                    framebuffer,
8614                    buffer,
8615                    drawbuffer,
8616                    value
8617                );
8618            }
8619            let out = call_atomic_ptr_4arg(
8620                "glClearNamedFramebufferuiv",
8621                &self.glClearNamedFramebufferuiv_p,
8622                framebuffer,
8623                buffer,
8624                drawbuffer,
8625                value,
8626            );
8627            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8628            {
8629                self.automatic_glGetError("glClearNamedFramebufferuiv");
8630            }
8631            out
8632        }
8633        #[doc(hidden)]
8634        pub unsafe fn ClearNamedFramebufferuiv_load_with_dyn(
8635            &self,
8636            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8637        ) -> bool {
8638            load_dyn_name_atomic_ptr(
8639                get_proc_address,
8640                b"glClearNamedFramebufferuiv\0",
8641                &self.glClearNamedFramebufferuiv_p,
8642            )
8643        }
8644        #[inline]
8645        #[doc(hidden)]
8646        pub fn ClearNamedFramebufferuiv_is_loaded(&self) -> bool {
8647            !self.glClearNamedFramebufferuiv_p.load(RELAX).is_null()
8648        }
8649        /// [glClearStencil](http://docs.gl/gl4/glClearStencil)(s)
8650        /// * `s` group: StencilValue
8651        #[cfg_attr(feature = "inline", inline)]
8652        #[cfg_attr(feature = "inline_always", inline(always))]
8653        pub unsafe fn ClearStencil(&self, s: GLint) {
8654            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8655            {
8656                trace!("calling gl.ClearStencil({:?});", s);
8657            }
8658            let out = call_atomic_ptr_1arg("glClearStencil", &self.glClearStencil_p, s);
8659            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8660            {
8661                self.automatic_glGetError("glClearStencil");
8662            }
8663            out
8664        }
8665        #[doc(hidden)]
8666        pub unsafe fn ClearStencil_load_with_dyn(
8667            &self,
8668            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8669        ) -> bool {
8670            load_dyn_name_atomic_ptr(
8671                get_proc_address,
8672                b"glClearStencil\0",
8673                &self.glClearStencil_p,
8674            )
8675        }
8676        #[inline]
8677        #[doc(hidden)]
8678        pub fn ClearStencil_is_loaded(&self) -> bool {
8679            !self.glClearStencil_p.load(RELAX).is_null()
8680        }
8681        /// [glClearTexImage](http://docs.gl/gl4/glClearTexImage)(texture, level, format, type_, data)
8682        /// * `format` group: PixelFormat
8683        /// * `type_` group: PixelType
8684        /// * `data` len: COMPSIZE(format,type)
8685        #[cfg_attr(feature = "inline", inline)]
8686        #[cfg_attr(feature = "inline_always", inline(always))]
8687        pub unsafe fn ClearTexImage(
8688            &self,
8689            texture: GLuint,
8690            level: GLint,
8691            format: GLenum,
8692            type_: GLenum,
8693            data: *const c_void,
8694        ) {
8695            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8696            {
8697                trace!(
8698                    "calling gl.ClearTexImage({:?}, {:?}, {:#X}, {:#X}, {:p});",
8699                    texture,
8700                    level,
8701                    format,
8702                    type_,
8703                    data
8704                );
8705            }
8706            let out = call_atomic_ptr_5arg(
8707                "glClearTexImage",
8708                &self.glClearTexImage_p,
8709                texture,
8710                level,
8711                format,
8712                type_,
8713                data,
8714            );
8715            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8716            {
8717                self.automatic_glGetError("glClearTexImage");
8718            }
8719            out
8720        }
8721        #[doc(hidden)]
8722        pub unsafe fn ClearTexImage_load_with_dyn(
8723            &self,
8724            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8725        ) -> bool {
8726            load_dyn_name_atomic_ptr(
8727                get_proc_address,
8728                b"glClearTexImage\0",
8729                &self.glClearTexImage_p,
8730            )
8731        }
8732        #[inline]
8733        #[doc(hidden)]
8734        pub fn ClearTexImage_is_loaded(&self) -> bool {
8735            !self.glClearTexImage_p.load(RELAX).is_null()
8736        }
8737        /// [glClearTexSubImage](http://docs.gl/gl4/glClearTexSubImage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, data)
8738        /// * `format` group: PixelFormat
8739        /// * `type_` group: PixelType
8740        /// * `data` len: COMPSIZE(format,type)
8741        #[cfg_attr(feature = "inline", inline)]
8742        #[cfg_attr(feature = "inline_always", inline(always))]
8743        pub unsafe fn ClearTexSubImage(
8744            &self,
8745            texture: GLuint,
8746            level: GLint,
8747            xoffset: GLint,
8748            yoffset: GLint,
8749            zoffset: GLint,
8750            width: GLsizei,
8751            height: GLsizei,
8752            depth: GLsizei,
8753            format: GLenum,
8754            type_: GLenum,
8755            data: *const c_void,
8756        ) {
8757            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8758            {
8759                trace!("calling gl.ClearTexSubImage({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, data);
8760            }
8761            let out = call_atomic_ptr_11arg(
8762                "glClearTexSubImage",
8763                &self.glClearTexSubImage_p,
8764                texture,
8765                level,
8766                xoffset,
8767                yoffset,
8768                zoffset,
8769                width,
8770                height,
8771                depth,
8772                format,
8773                type_,
8774                data,
8775            );
8776            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8777            {
8778                self.automatic_glGetError("glClearTexSubImage");
8779            }
8780            out
8781        }
8782        #[doc(hidden)]
8783        pub unsafe fn ClearTexSubImage_load_with_dyn(
8784            &self,
8785            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8786        ) -> bool {
8787            load_dyn_name_atomic_ptr(
8788                get_proc_address,
8789                b"glClearTexSubImage\0",
8790                &self.glClearTexSubImage_p,
8791            )
8792        }
8793        #[inline]
8794        #[doc(hidden)]
8795        pub fn ClearTexSubImage_is_loaded(&self) -> bool {
8796            !self.glClearTexSubImage_p.load(RELAX).is_null()
8797        }
8798        /// [glClientWaitSync](http://docs.gl/gl4/glClientWaitSync)(sync, flags, timeout)
8799        /// * `sync` group: sync
8800        /// * `flags` group: SyncObjectMask
8801        /// * return value group: SyncStatus
8802        #[cfg_attr(feature = "inline", inline)]
8803        #[cfg_attr(feature = "inline_always", inline(always))]
8804        pub unsafe fn ClientWaitSync(
8805            &self,
8806            sync: GLsync,
8807            flags: GLbitfield,
8808            timeout: GLuint64,
8809        ) -> GLenum {
8810            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8811            {
8812                trace!(
8813                    "calling gl.ClientWaitSync({:p}, {:?}, {:?});",
8814                    sync,
8815                    flags,
8816                    timeout
8817                );
8818            }
8819            let out = call_atomic_ptr_3arg(
8820                "glClientWaitSync",
8821                &self.glClientWaitSync_p,
8822                sync,
8823                flags,
8824                timeout,
8825            );
8826            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8827            {
8828                self.automatic_glGetError("glClientWaitSync");
8829            }
8830            out
8831        }
8832        #[doc(hidden)]
8833        pub unsafe fn ClientWaitSync_load_with_dyn(
8834            &self,
8835            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8836        ) -> bool {
8837            load_dyn_name_atomic_ptr(
8838                get_proc_address,
8839                b"glClientWaitSync\0",
8840                &self.glClientWaitSync_p,
8841            )
8842        }
8843        #[inline]
8844        #[doc(hidden)]
8845        pub fn ClientWaitSync_is_loaded(&self) -> bool {
8846            !self.glClientWaitSync_p.load(RELAX).is_null()
8847        }
8848        /// [glClipControl](http://docs.gl/gl4/glClipControl)(origin, depth)
8849        /// * `origin` group: ClipControlOrigin
8850        /// * `depth` group: ClipControlDepth
8851        #[cfg_attr(feature = "inline", inline)]
8852        #[cfg_attr(feature = "inline_always", inline(always))]
8853        pub unsafe fn ClipControl(&self, origin: GLenum, depth: GLenum) {
8854            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8855            {
8856                trace!("calling gl.ClipControl({:#X}, {:#X});", origin, depth);
8857            }
8858            let out = call_atomic_ptr_2arg("glClipControl", &self.glClipControl_p, origin, depth);
8859            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8860            {
8861                self.automatic_glGetError("glClipControl");
8862            }
8863            out
8864        }
8865        #[doc(hidden)]
8866        pub unsafe fn ClipControl_load_with_dyn(
8867            &self,
8868            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8869        ) -> bool {
8870            load_dyn_name_atomic_ptr(get_proc_address, b"glClipControl\0", &self.glClipControl_p)
8871        }
8872        #[inline]
8873        #[doc(hidden)]
8874        pub fn ClipControl_is_loaded(&self) -> bool {
8875            !self.glClipControl_p.load(RELAX).is_null()
8876        }
8877        /// [glColorMask](http://docs.gl/gl4/glColorMask)(red, green, blue, alpha)
8878        #[cfg_attr(feature = "inline", inline)]
8879        #[cfg_attr(feature = "inline_always", inline(always))]
8880        pub unsafe fn ColorMask(
8881            &self,
8882            red: GLboolean,
8883            green: GLboolean,
8884            blue: GLboolean,
8885            alpha: GLboolean,
8886        ) {
8887            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8888            {
8889                trace!(
8890                    "calling gl.ColorMask({:?}, {:?}, {:?}, {:?});",
8891                    red,
8892                    green,
8893                    blue,
8894                    alpha
8895                );
8896            }
8897            let out =
8898                call_atomic_ptr_4arg("glColorMask", &self.glColorMask_p, red, green, blue, alpha);
8899            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8900            {
8901                self.automatic_glGetError("glColorMask");
8902            }
8903            out
8904        }
8905        #[doc(hidden)]
8906        pub unsafe fn ColorMask_load_with_dyn(
8907            &self,
8908            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8909        ) -> bool {
8910            load_dyn_name_atomic_ptr(get_proc_address, b"glColorMask\0", &self.glColorMask_p)
8911        }
8912        #[inline]
8913        #[doc(hidden)]
8914        pub fn ColorMask_is_loaded(&self) -> bool {
8915            !self.glColorMask_p.load(RELAX).is_null()
8916        }
8917        /// [glColorMaskIndexedEXT](http://docs.gl/gl4/glColorMaskIndexedEXT)(index, r, g, b, a)
8918        /// * alias of: [`glColorMaski`]
8919        #[cfg_attr(feature = "inline", inline)]
8920        #[cfg_attr(feature = "inline_always", inline(always))]
8921        pub unsafe fn ColorMaskIndexedEXT(
8922            &self,
8923            index: GLuint,
8924            r: GLboolean,
8925            g: GLboolean,
8926            b: GLboolean,
8927            a: GLboolean,
8928        ) {
8929            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8930            {
8931                trace!(
8932                    "calling gl.ColorMaskIndexedEXT({:?}, {:?}, {:?}, {:?}, {:?});",
8933                    index,
8934                    r,
8935                    g,
8936                    b,
8937                    a
8938                );
8939            }
8940            let out = call_atomic_ptr_5arg(
8941                "glColorMaskIndexedEXT",
8942                &self.glColorMaskIndexedEXT_p,
8943                index,
8944                r,
8945                g,
8946                b,
8947                a,
8948            );
8949            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8950            {
8951                self.automatic_glGetError("glColorMaskIndexedEXT");
8952            }
8953            out
8954        }
8955        #[doc(hidden)]
8956        pub unsafe fn ColorMaskIndexedEXT_load_with_dyn(
8957            &self,
8958            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
8959        ) -> bool {
8960            load_dyn_name_atomic_ptr(
8961                get_proc_address,
8962                b"glColorMaskIndexedEXT\0",
8963                &self.glColorMaskIndexedEXT_p,
8964            )
8965        }
8966        #[inline]
8967        #[doc(hidden)]
8968        pub fn ColorMaskIndexedEXT_is_loaded(&self) -> bool {
8969            !self.glColorMaskIndexedEXT_p.load(RELAX).is_null()
8970        }
8971        /// [glColorMaski](http://docs.gl/gl4/glColorMask)(index, r, g, b, a)
8972        #[cfg_attr(feature = "inline", inline)]
8973        #[cfg_attr(feature = "inline_always", inline(always))]
8974        pub unsafe fn ColorMaski(
8975            &self,
8976            index: GLuint,
8977            r: GLboolean,
8978            g: GLboolean,
8979            b: GLboolean,
8980            a: GLboolean,
8981        ) {
8982            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
8983            {
8984                trace!(
8985                    "calling gl.ColorMaski({:?}, {:?}, {:?}, {:?}, {:?});",
8986                    index,
8987                    r,
8988                    g,
8989                    b,
8990                    a
8991                );
8992            }
8993            let out = call_atomic_ptr_5arg("glColorMaski", &self.glColorMaski_p, index, r, g, b, a);
8994            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
8995            {
8996                self.automatic_glGetError("glColorMaski");
8997            }
8998            out
8999        }
9000        #[doc(hidden)]
9001        pub unsafe fn ColorMaski_load_with_dyn(
9002            &self,
9003            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9004        ) -> bool {
9005            load_dyn_name_atomic_ptr(get_proc_address, b"glColorMaski\0", &self.glColorMaski_p)
9006        }
9007        #[inline]
9008        #[doc(hidden)]
9009        pub fn ColorMaski_is_loaded(&self) -> bool {
9010            !self.glColorMaski_p.load(RELAX).is_null()
9011        }
9012        /// [glCompileShader](http://docs.gl/gl4/glCompileShader)(shader)
9013        #[cfg_attr(feature = "inline", inline)]
9014        #[cfg_attr(feature = "inline_always", inline(always))]
9015        pub unsafe fn CompileShader(&self, shader: GLuint) {
9016            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9017            {
9018                trace!("calling gl.CompileShader({:?});", shader);
9019            }
9020            let out = call_atomic_ptr_1arg("glCompileShader", &self.glCompileShader_p, shader);
9021            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9022            {
9023                self.automatic_glGetError("glCompileShader");
9024            }
9025            out
9026        }
9027        #[doc(hidden)]
9028        pub unsafe fn CompileShader_load_with_dyn(
9029            &self,
9030            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9031        ) -> bool {
9032            load_dyn_name_atomic_ptr(
9033                get_proc_address,
9034                b"glCompileShader\0",
9035                &self.glCompileShader_p,
9036            )
9037        }
9038        #[inline]
9039        #[doc(hidden)]
9040        pub fn CompileShader_is_loaded(&self) -> bool {
9041            !self.glCompileShader_p.load(RELAX).is_null()
9042        }
9043        /// [glCompressedTexImage1D](http://docs.gl/gl4/glCompressedTexImage1D)(target, level, internalformat, width, border, imageSize, data)
9044        /// * `target` group: TextureTarget
9045        /// * `level` group: CheckedInt32
9046        /// * `internalformat` group: InternalFormat
9047        /// * `border` group: CheckedInt32
9048        /// * `data` group: CompressedTextureARB
9049        /// * `data` len: imageSize
9050        #[cfg_attr(feature = "inline", inline)]
9051        #[cfg_attr(feature = "inline_always", inline(always))]
9052        pub unsafe fn CompressedTexImage1D(
9053            &self,
9054            target: GLenum,
9055            level: GLint,
9056            internalformat: GLenum,
9057            width: GLsizei,
9058            border: GLint,
9059            imageSize: GLsizei,
9060            data: *const c_void,
9061        ) {
9062            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9063            {
9064                trace!(
9065                    "calling gl.CompressedTexImage1D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:p});",
9066                    target,
9067                    level,
9068                    internalformat,
9069                    width,
9070                    border,
9071                    imageSize,
9072                    data
9073                );
9074            }
9075            let out = call_atomic_ptr_7arg(
9076                "glCompressedTexImage1D",
9077                &self.glCompressedTexImage1D_p,
9078                target,
9079                level,
9080                internalformat,
9081                width,
9082                border,
9083                imageSize,
9084                data,
9085            );
9086            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9087            {
9088                self.automatic_glGetError("glCompressedTexImage1D");
9089            }
9090            out
9091        }
9092        #[doc(hidden)]
9093        pub unsafe fn CompressedTexImage1D_load_with_dyn(
9094            &self,
9095            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9096        ) -> bool {
9097            load_dyn_name_atomic_ptr(
9098                get_proc_address,
9099                b"glCompressedTexImage1D\0",
9100                &self.glCompressedTexImage1D_p,
9101            )
9102        }
9103        #[inline]
9104        #[doc(hidden)]
9105        pub fn CompressedTexImage1D_is_loaded(&self) -> bool {
9106            !self.glCompressedTexImage1D_p.load(RELAX).is_null()
9107        }
9108        /// [glCompressedTexImage2D](http://docs.gl/gl4/glCompressedTexImage2D)(target, level, internalformat, width, height, border, imageSize, data)
9109        /// * `target` group: TextureTarget
9110        /// * `level` group: CheckedInt32
9111        /// * `internalformat` group: InternalFormat
9112        /// * `border` group: CheckedInt32
9113        /// * `data` group: CompressedTextureARB
9114        /// * `data` len: imageSize
9115        #[cfg_attr(feature = "inline", inline)]
9116        #[cfg_attr(feature = "inline_always", inline(always))]
9117        pub unsafe fn CompressedTexImage2D(
9118            &self,
9119            target: GLenum,
9120            level: GLint,
9121            internalformat: GLenum,
9122            width: GLsizei,
9123            height: GLsizei,
9124            border: GLint,
9125            imageSize: GLsizei,
9126            data: *const c_void,
9127        ) {
9128            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9129            {
9130                trace!("calling gl.CompressedTexImage2D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?}, {:p});", target, level, internalformat, width, height, border, imageSize, data);
9131            }
9132            let out = call_atomic_ptr_8arg(
9133                "glCompressedTexImage2D",
9134                &self.glCompressedTexImage2D_p,
9135                target,
9136                level,
9137                internalformat,
9138                width,
9139                height,
9140                border,
9141                imageSize,
9142                data,
9143            );
9144            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9145            {
9146                self.automatic_glGetError("glCompressedTexImage2D");
9147            }
9148            out
9149        }
9150        #[doc(hidden)]
9151        pub unsafe fn CompressedTexImage2D_load_with_dyn(
9152            &self,
9153            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9154        ) -> bool {
9155            load_dyn_name_atomic_ptr(
9156                get_proc_address,
9157                b"glCompressedTexImage2D\0",
9158                &self.glCompressedTexImage2D_p,
9159            )
9160        }
9161        #[inline]
9162        #[doc(hidden)]
9163        pub fn CompressedTexImage2D_is_loaded(&self) -> bool {
9164            !self.glCompressedTexImage2D_p.load(RELAX).is_null()
9165        }
9166        /// [glCompressedTexImage3D](http://docs.gl/gl4/glCompressedTexImage3D)(target, level, internalformat, width, height, depth, border, imageSize, data)
9167        /// * `target` group: TextureTarget
9168        /// * `level` group: CheckedInt32
9169        /// * `internalformat` group: InternalFormat
9170        /// * `border` group: CheckedInt32
9171        /// * `data` group: CompressedTextureARB
9172        /// * `data` len: imageSize
9173        #[cfg_attr(feature = "inline", inline)]
9174        #[cfg_attr(feature = "inline_always", inline(always))]
9175        pub unsafe fn CompressedTexImage3D(
9176            &self,
9177            target: GLenum,
9178            level: GLint,
9179            internalformat: GLenum,
9180            width: GLsizei,
9181            height: GLsizei,
9182            depth: GLsizei,
9183            border: GLint,
9184            imageSize: GLsizei,
9185            data: *const c_void,
9186        ) {
9187            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9188            {
9189                trace!("calling gl.CompressedTexImage3D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:p});", target, level, internalformat, width, height, depth, border, imageSize, data);
9190            }
9191            let out = call_atomic_ptr_9arg(
9192                "glCompressedTexImage3D",
9193                &self.glCompressedTexImage3D_p,
9194                target,
9195                level,
9196                internalformat,
9197                width,
9198                height,
9199                depth,
9200                border,
9201                imageSize,
9202                data,
9203            );
9204            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9205            {
9206                self.automatic_glGetError("glCompressedTexImage3D");
9207            }
9208            out
9209        }
9210        #[doc(hidden)]
9211        pub unsafe fn CompressedTexImage3D_load_with_dyn(
9212            &self,
9213            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9214        ) -> bool {
9215            load_dyn_name_atomic_ptr(
9216                get_proc_address,
9217                b"glCompressedTexImage3D\0",
9218                &self.glCompressedTexImage3D_p,
9219            )
9220        }
9221        #[inline]
9222        #[doc(hidden)]
9223        pub fn CompressedTexImage3D_is_loaded(&self) -> bool {
9224            !self.glCompressedTexImage3D_p.load(RELAX).is_null()
9225        }
9226        /// [glCompressedTexSubImage1D](http://docs.gl/gl4/glCompressedTexSubImage1D)(target, level, xoffset, width, format, imageSize, data)
9227        /// * `target` group: TextureTarget
9228        /// * `level` group: CheckedInt32
9229        /// * `xoffset` group: CheckedInt32
9230        /// * `format` group: PixelFormat
9231        /// * `data` group: CompressedTextureARB
9232        /// * `data` len: imageSize
9233        #[cfg_attr(feature = "inline", inline)]
9234        #[cfg_attr(feature = "inline_always", inline(always))]
9235        pub unsafe fn CompressedTexSubImage1D(
9236            &self,
9237            target: GLenum,
9238            level: GLint,
9239            xoffset: GLint,
9240            width: GLsizei,
9241            format: GLenum,
9242            imageSize: GLsizei,
9243            data: *const c_void,
9244        ) {
9245            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9246            {
9247                trace!("calling gl.CompressedTexSubImage1D({:#X}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", target, level, xoffset, width, format, imageSize, data);
9248            }
9249            let out = call_atomic_ptr_7arg(
9250                "glCompressedTexSubImage1D",
9251                &self.glCompressedTexSubImage1D_p,
9252                target,
9253                level,
9254                xoffset,
9255                width,
9256                format,
9257                imageSize,
9258                data,
9259            );
9260            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9261            {
9262                self.automatic_glGetError("glCompressedTexSubImage1D");
9263            }
9264            out
9265        }
9266        #[doc(hidden)]
9267        pub unsafe fn CompressedTexSubImage1D_load_with_dyn(
9268            &self,
9269            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9270        ) -> bool {
9271            load_dyn_name_atomic_ptr(
9272                get_proc_address,
9273                b"glCompressedTexSubImage1D\0",
9274                &self.glCompressedTexSubImage1D_p,
9275            )
9276        }
9277        #[inline]
9278        #[doc(hidden)]
9279        pub fn CompressedTexSubImage1D_is_loaded(&self) -> bool {
9280            !self.glCompressedTexSubImage1D_p.load(RELAX).is_null()
9281        }
9282        /// [glCompressedTexSubImage2D](http://docs.gl/gl4/glCompressedTexSubImage2D)(target, level, xoffset, yoffset, width, height, format, imageSize, data)
9283        /// * `target` group: TextureTarget
9284        /// * `level` group: CheckedInt32
9285        /// * `xoffset` group: CheckedInt32
9286        /// * `yoffset` group: CheckedInt32
9287        /// * `format` group: PixelFormat
9288        /// * `data` group: CompressedTextureARB
9289        /// * `data` len: imageSize
9290        #[cfg_attr(feature = "inline", inline)]
9291        #[cfg_attr(feature = "inline_always", inline(always))]
9292        pub unsafe fn CompressedTexSubImage2D(
9293            &self,
9294            target: GLenum,
9295            level: GLint,
9296            xoffset: GLint,
9297            yoffset: GLint,
9298            width: GLsizei,
9299            height: GLsizei,
9300            format: GLenum,
9301            imageSize: GLsizei,
9302            data: *const c_void,
9303        ) {
9304            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9305            {
9306                trace!("calling gl.CompressedTexSubImage2D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", target, level, xoffset, yoffset, width, height, format, imageSize, data);
9307            }
9308            let out = call_atomic_ptr_9arg(
9309                "glCompressedTexSubImage2D",
9310                &self.glCompressedTexSubImage2D_p,
9311                target,
9312                level,
9313                xoffset,
9314                yoffset,
9315                width,
9316                height,
9317                format,
9318                imageSize,
9319                data,
9320            );
9321            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9322            {
9323                self.automatic_glGetError("glCompressedTexSubImage2D");
9324            }
9325            out
9326        }
9327        #[doc(hidden)]
9328        pub unsafe fn CompressedTexSubImage2D_load_with_dyn(
9329            &self,
9330            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9331        ) -> bool {
9332            load_dyn_name_atomic_ptr(
9333                get_proc_address,
9334                b"glCompressedTexSubImage2D\0",
9335                &self.glCompressedTexSubImage2D_p,
9336            )
9337        }
9338        #[inline]
9339        #[doc(hidden)]
9340        pub fn CompressedTexSubImage2D_is_loaded(&self) -> bool {
9341            !self.glCompressedTexSubImage2D_p.load(RELAX).is_null()
9342        }
9343        /// [glCompressedTexSubImage3D](http://docs.gl/gl4/glCompressedTexSubImage3D)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)
9344        /// * `target` group: TextureTarget
9345        /// * `level` group: CheckedInt32
9346        /// * `xoffset` group: CheckedInt32
9347        /// * `yoffset` group: CheckedInt32
9348        /// * `zoffset` group: CheckedInt32
9349        /// * `format` group: PixelFormat
9350        /// * `data` group: CompressedTextureARB
9351        /// * `data` len: imageSize
9352        #[cfg_attr(feature = "inline", inline)]
9353        #[cfg_attr(feature = "inline_always", inline(always))]
9354        pub unsafe fn CompressedTexSubImage3D(
9355            &self,
9356            target: GLenum,
9357            level: GLint,
9358            xoffset: GLint,
9359            yoffset: GLint,
9360            zoffset: GLint,
9361            width: GLsizei,
9362            height: GLsizei,
9363            depth: GLsizei,
9364            format: GLenum,
9365            imageSize: GLsizei,
9366            data: *const c_void,
9367        ) {
9368            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9369            {
9370                trace!("calling gl.CompressedTexSubImage3D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
9371            }
9372            let out = call_atomic_ptr_11arg(
9373                "glCompressedTexSubImage3D",
9374                &self.glCompressedTexSubImage3D_p,
9375                target,
9376                level,
9377                xoffset,
9378                yoffset,
9379                zoffset,
9380                width,
9381                height,
9382                depth,
9383                format,
9384                imageSize,
9385                data,
9386            );
9387            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9388            {
9389                self.automatic_glGetError("glCompressedTexSubImage3D");
9390            }
9391            out
9392        }
9393        #[doc(hidden)]
9394        pub unsafe fn CompressedTexSubImage3D_load_with_dyn(
9395            &self,
9396            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9397        ) -> bool {
9398            load_dyn_name_atomic_ptr(
9399                get_proc_address,
9400                b"glCompressedTexSubImage3D\0",
9401                &self.glCompressedTexSubImage3D_p,
9402            )
9403        }
9404        #[inline]
9405        #[doc(hidden)]
9406        pub fn CompressedTexSubImage3D_is_loaded(&self) -> bool {
9407            !self.glCompressedTexSubImage3D_p.load(RELAX).is_null()
9408        }
9409        /// [glCompressedTextureSubImage1D](http://docs.gl/gl4/glCompressedTextureSubImage1D)(texture, level, xoffset, width, format, imageSize, data)
9410        /// * `format` group: PixelFormat
9411        #[cfg_attr(feature = "inline", inline)]
9412        #[cfg_attr(feature = "inline_always", inline(always))]
9413        pub unsafe fn CompressedTextureSubImage1D(
9414            &self,
9415            texture: GLuint,
9416            level: GLint,
9417            xoffset: GLint,
9418            width: GLsizei,
9419            format: GLenum,
9420            imageSize: GLsizei,
9421            data: *const c_void,
9422        ) {
9423            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9424            {
9425                trace!("calling gl.CompressedTextureSubImage1D({:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", texture, level, xoffset, width, format, imageSize, data);
9426            }
9427            let out = call_atomic_ptr_7arg(
9428                "glCompressedTextureSubImage1D",
9429                &self.glCompressedTextureSubImage1D_p,
9430                texture,
9431                level,
9432                xoffset,
9433                width,
9434                format,
9435                imageSize,
9436                data,
9437            );
9438            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9439            {
9440                self.automatic_glGetError("glCompressedTextureSubImage1D");
9441            }
9442            out
9443        }
9444        #[doc(hidden)]
9445        pub unsafe fn CompressedTextureSubImage1D_load_with_dyn(
9446            &self,
9447            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9448        ) -> bool {
9449            load_dyn_name_atomic_ptr(
9450                get_proc_address,
9451                b"glCompressedTextureSubImage1D\0",
9452                &self.glCompressedTextureSubImage1D_p,
9453            )
9454        }
9455        #[inline]
9456        #[doc(hidden)]
9457        pub fn CompressedTextureSubImage1D_is_loaded(&self) -> bool {
9458            !self.glCompressedTextureSubImage1D_p.load(RELAX).is_null()
9459        }
9460        /// [glCompressedTextureSubImage2D](http://docs.gl/gl4/glCompressedTextureSubImage2D)(texture, level, xoffset, yoffset, width, height, format, imageSize, data)
9461        /// * `format` group: PixelFormat
9462        #[cfg_attr(feature = "inline", inline)]
9463        #[cfg_attr(feature = "inline_always", inline(always))]
9464        pub unsafe fn CompressedTextureSubImage2D(
9465            &self,
9466            texture: GLuint,
9467            level: GLint,
9468            xoffset: GLint,
9469            yoffset: GLint,
9470            width: GLsizei,
9471            height: GLsizei,
9472            format: GLenum,
9473            imageSize: GLsizei,
9474            data: *const c_void,
9475        ) {
9476            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9477            {
9478                trace!("calling gl.CompressedTextureSubImage2D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", texture, level, xoffset, yoffset, width, height, format, imageSize, data);
9479            }
9480            let out = call_atomic_ptr_9arg(
9481                "glCompressedTextureSubImage2D",
9482                &self.glCompressedTextureSubImage2D_p,
9483                texture,
9484                level,
9485                xoffset,
9486                yoffset,
9487                width,
9488                height,
9489                format,
9490                imageSize,
9491                data,
9492            );
9493            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9494            {
9495                self.automatic_glGetError("glCompressedTextureSubImage2D");
9496            }
9497            out
9498        }
9499        #[doc(hidden)]
9500        pub unsafe fn CompressedTextureSubImage2D_load_with_dyn(
9501            &self,
9502            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9503        ) -> bool {
9504            load_dyn_name_atomic_ptr(
9505                get_proc_address,
9506                b"glCompressedTextureSubImage2D\0",
9507                &self.glCompressedTextureSubImage2D_p,
9508            )
9509        }
9510        #[inline]
9511        #[doc(hidden)]
9512        pub fn CompressedTextureSubImage2D_is_loaded(&self) -> bool {
9513            !self.glCompressedTextureSubImage2D_p.load(RELAX).is_null()
9514        }
9515        /// [glCompressedTextureSubImage3D](http://docs.gl/gl4/glCompressedTextureSubImage3D)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)
9516        /// * `format` group: PixelFormat
9517        #[cfg_attr(feature = "inline", inline)]
9518        #[cfg_attr(feature = "inline_always", inline(always))]
9519        pub unsafe fn CompressedTextureSubImage3D(
9520            &self,
9521            texture: GLuint,
9522            level: GLint,
9523            xoffset: GLint,
9524            yoffset: GLint,
9525            zoffset: GLint,
9526            width: GLsizei,
9527            height: GLsizei,
9528            depth: GLsizei,
9529            format: GLenum,
9530            imageSize: GLsizei,
9531            data: *const c_void,
9532        ) {
9533            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9534            {
9535                trace!("calling gl.CompressedTextureSubImage3D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:p});", texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
9536            }
9537            let out = call_atomic_ptr_11arg(
9538                "glCompressedTextureSubImage3D",
9539                &self.glCompressedTextureSubImage3D_p,
9540                texture,
9541                level,
9542                xoffset,
9543                yoffset,
9544                zoffset,
9545                width,
9546                height,
9547                depth,
9548                format,
9549                imageSize,
9550                data,
9551            );
9552            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9553            {
9554                self.automatic_glGetError("glCompressedTextureSubImage3D");
9555            }
9556            out
9557        }
9558        #[doc(hidden)]
9559        pub unsafe fn CompressedTextureSubImage3D_load_with_dyn(
9560            &self,
9561            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9562        ) -> bool {
9563            load_dyn_name_atomic_ptr(
9564                get_proc_address,
9565                b"glCompressedTextureSubImage3D\0",
9566                &self.glCompressedTextureSubImage3D_p,
9567            )
9568        }
9569        #[inline]
9570        #[doc(hidden)]
9571        pub fn CompressedTextureSubImage3D_is_loaded(&self) -> bool {
9572            !self.glCompressedTextureSubImage3D_p.load(RELAX).is_null()
9573        }
9574        /// [glCopyBufferSubData](http://docs.gl/gl4/glCopyBufferSubData)(readTarget, writeTarget, readOffset, writeOffset, size)
9575        /// * `readTarget` group: CopyBufferSubDataTarget
9576        /// * `writeTarget` group: CopyBufferSubDataTarget
9577        /// * `readOffset` group: BufferOffset
9578        /// * `writeOffset` group: BufferOffset
9579        /// * `size` group: BufferSize
9580        #[cfg_attr(feature = "inline", inline)]
9581        #[cfg_attr(feature = "inline_always", inline(always))]
9582        pub unsafe fn CopyBufferSubData(
9583            &self,
9584            readTarget: GLenum,
9585            writeTarget: GLenum,
9586            readOffset: GLintptr,
9587            writeOffset: GLintptr,
9588            size: GLsizeiptr,
9589        ) {
9590            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9591            {
9592                trace!(
9593                    "calling gl.CopyBufferSubData({:#X}, {:#X}, {:?}, {:?}, {:?});",
9594                    readTarget,
9595                    writeTarget,
9596                    readOffset,
9597                    writeOffset,
9598                    size
9599                );
9600            }
9601            let out = call_atomic_ptr_5arg(
9602                "glCopyBufferSubData",
9603                &self.glCopyBufferSubData_p,
9604                readTarget,
9605                writeTarget,
9606                readOffset,
9607                writeOffset,
9608                size,
9609            );
9610            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9611            {
9612                self.automatic_glGetError("glCopyBufferSubData");
9613            }
9614            out
9615        }
9616        #[doc(hidden)]
9617        pub unsafe fn CopyBufferSubData_load_with_dyn(
9618            &self,
9619            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9620        ) -> bool {
9621            load_dyn_name_atomic_ptr(
9622                get_proc_address,
9623                b"glCopyBufferSubData\0",
9624                &self.glCopyBufferSubData_p,
9625            )
9626        }
9627        #[inline]
9628        #[doc(hidden)]
9629        pub fn CopyBufferSubData_is_loaded(&self) -> bool {
9630            !self.glCopyBufferSubData_p.load(RELAX).is_null()
9631        }
9632        /// [glCopyBufferSubDataNV](http://docs.gl/gl4/glCopyBufferSubDataNV)(readTarget, writeTarget, readOffset, writeOffset, size)
9633        /// * `readTarget` group: CopyBufferSubDataTarget
9634        /// * `writeTarget` group: CopyBufferSubDataTarget
9635        /// * `readOffset` group: BufferOffset
9636        /// * `writeOffset` group: BufferOffset
9637        /// * `size` group: BufferSize
9638        /// * alias of: [`glCopyBufferSubData`]
9639        #[cfg_attr(feature = "inline", inline)]
9640        #[cfg_attr(feature = "inline_always", inline(always))]
9641        pub unsafe fn CopyBufferSubDataNV(
9642            &self,
9643            readTarget: GLenum,
9644            writeTarget: GLenum,
9645            readOffset: GLintptr,
9646            writeOffset: GLintptr,
9647            size: GLsizeiptr,
9648        ) {
9649            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9650            {
9651                trace!(
9652                    "calling gl.CopyBufferSubDataNV({:#X}, {:#X}, {:?}, {:?}, {:?});",
9653                    readTarget,
9654                    writeTarget,
9655                    readOffset,
9656                    writeOffset,
9657                    size
9658                );
9659            }
9660            let out = call_atomic_ptr_5arg(
9661                "glCopyBufferSubDataNV",
9662                &self.glCopyBufferSubDataNV_p,
9663                readTarget,
9664                writeTarget,
9665                readOffset,
9666                writeOffset,
9667                size,
9668            );
9669            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9670            {
9671                self.automatic_glGetError("glCopyBufferSubDataNV");
9672            }
9673            out
9674        }
9675        #[doc(hidden)]
9676        pub unsafe fn CopyBufferSubDataNV_load_with_dyn(
9677            &self,
9678            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9679        ) -> bool {
9680            load_dyn_name_atomic_ptr(
9681                get_proc_address,
9682                b"glCopyBufferSubDataNV\0",
9683                &self.glCopyBufferSubDataNV_p,
9684            )
9685        }
9686        #[inline]
9687        #[doc(hidden)]
9688        pub fn CopyBufferSubDataNV_is_loaded(&self) -> bool {
9689            !self.glCopyBufferSubDataNV_p.load(RELAX).is_null()
9690        }
9691        /// [glCopyImageSubData](http://docs.gl/gl4/glCopyImageSubData)(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth)
9692        /// * `srcTarget` group: CopyImageSubDataTarget
9693        /// * `dstTarget` group: CopyImageSubDataTarget
9694        #[cfg_attr(feature = "inline", inline)]
9695        #[cfg_attr(feature = "inline_always", inline(always))]
9696        pub unsafe fn CopyImageSubData(
9697            &self,
9698            srcName: GLuint,
9699            srcTarget: GLenum,
9700            srcLevel: GLint,
9701            srcX: GLint,
9702            srcY: GLint,
9703            srcZ: GLint,
9704            dstName: GLuint,
9705            dstTarget: GLenum,
9706            dstLevel: GLint,
9707            dstX: GLint,
9708            dstY: GLint,
9709            dstZ: GLint,
9710            srcWidth: GLsizei,
9711            srcHeight: GLsizei,
9712            srcDepth: GLsizei,
9713        ) {
9714            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9715            {
9716                trace!("calling gl.CopyImageSubData({:?}, {:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
9717            }
9718            let out = call_atomic_ptr_15arg(
9719                "glCopyImageSubData",
9720                &self.glCopyImageSubData_p,
9721                srcName,
9722                srcTarget,
9723                srcLevel,
9724                srcX,
9725                srcY,
9726                srcZ,
9727                dstName,
9728                dstTarget,
9729                dstLevel,
9730                dstX,
9731                dstY,
9732                dstZ,
9733                srcWidth,
9734                srcHeight,
9735                srcDepth,
9736            );
9737            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9738            {
9739                self.automatic_glGetError("glCopyImageSubData");
9740            }
9741            out
9742        }
9743        #[doc(hidden)]
9744        pub unsafe fn CopyImageSubData_load_with_dyn(
9745            &self,
9746            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9747        ) -> bool {
9748            load_dyn_name_atomic_ptr(
9749                get_proc_address,
9750                b"glCopyImageSubData\0",
9751                &self.glCopyImageSubData_p,
9752            )
9753        }
9754        #[inline]
9755        #[doc(hidden)]
9756        pub fn CopyImageSubData_is_loaded(&self) -> bool {
9757            !self.glCopyImageSubData_p.load(RELAX).is_null()
9758        }
9759        /// [glCopyNamedBufferSubData](http://docs.gl/gl4/glCopyNamedBufferSubData)(readBuffer, writeBuffer, readOffset, writeOffset, size)
9760        /// * `size` group: BufferSize
9761        #[cfg_attr(feature = "inline", inline)]
9762        #[cfg_attr(feature = "inline_always", inline(always))]
9763        pub unsafe fn CopyNamedBufferSubData(
9764            &self,
9765            readBuffer: GLuint,
9766            writeBuffer: GLuint,
9767            readOffset: GLintptr,
9768            writeOffset: GLintptr,
9769            size: GLsizeiptr,
9770        ) {
9771            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9772            {
9773                trace!(
9774                    "calling gl.CopyNamedBufferSubData({:?}, {:?}, {:?}, {:?}, {:?});",
9775                    readBuffer,
9776                    writeBuffer,
9777                    readOffset,
9778                    writeOffset,
9779                    size
9780                );
9781            }
9782            let out = call_atomic_ptr_5arg(
9783                "glCopyNamedBufferSubData",
9784                &self.glCopyNamedBufferSubData_p,
9785                readBuffer,
9786                writeBuffer,
9787                readOffset,
9788                writeOffset,
9789                size,
9790            );
9791            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9792            {
9793                self.automatic_glGetError("glCopyNamedBufferSubData");
9794            }
9795            out
9796        }
9797        #[doc(hidden)]
9798        pub unsafe fn CopyNamedBufferSubData_load_with_dyn(
9799            &self,
9800            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9801        ) -> bool {
9802            load_dyn_name_atomic_ptr(
9803                get_proc_address,
9804                b"glCopyNamedBufferSubData\0",
9805                &self.glCopyNamedBufferSubData_p,
9806            )
9807        }
9808        #[inline]
9809        #[doc(hidden)]
9810        pub fn CopyNamedBufferSubData_is_loaded(&self) -> bool {
9811            !self.glCopyNamedBufferSubData_p.load(RELAX).is_null()
9812        }
9813        /// [glCopyTexImage1D](http://docs.gl/gl4/glCopyTexImage1D)(target, level, internalformat, x, y, width, border)
9814        /// * `target` group: TextureTarget
9815        /// * `level` group: CheckedInt32
9816        /// * `internalformat` group: InternalFormat
9817        /// * `x` group: WinCoord
9818        /// * `y` group: WinCoord
9819        /// * `border` group: CheckedInt32
9820        #[cfg_attr(feature = "inline", inline)]
9821        #[cfg_attr(feature = "inline_always", inline(always))]
9822        pub unsafe fn CopyTexImage1D(
9823            &self,
9824            target: GLenum,
9825            level: GLint,
9826            internalformat: GLenum,
9827            x: GLint,
9828            y: GLint,
9829            width: GLsizei,
9830            border: GLint,
9831        ) {
9832            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9833            {
9834                trace!(
9835                    "calling gl.CopyTexImage1D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?});",
9836                    target,
9837                    level,
9838                    internalformat,
9839                    x,
9840                    y,
9841                    width,
9842                    border
9843                );
9844            }
9845            let out = call_atomic_ptr_7arg(
9846                "glCopyTexImage1D",
9847                &self.glCopyTexImage1D_p,
9848                target,
9849                level,
9850                internalformat,
9851                x,
9852                y,
9853                width,
9854                border,
9855            );
9856            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9857            {
9858                self.automatic_glGetError("glCopyTexImage1D");
9859            }
9860            out
9861        }
9862        #[doc(hidden)]
9863        pub unsafe fn CopyTexImage1D_load_with_dyn(
9864            &self,
9865            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9866        ) -> bool {
9867            load_dyn_name_atomic_ptr(
9868                get_proc_address,
9869                b"glCopyTexImage1D\0",
9870                &self.glCopyTexImage1D_p,
9871            )
9872        }
9873        #[inline]
9874        #[doc(hidden)]
9875        pub fn CopyTexImage1D_is_loaded(&self) -> bool {
9876            !self.glCopyTexImage1D_p.load(RELAX).is_null()
9877        }
9878        /// [glCopyTexImage2D](http://docs.gl/gl4/glCopyTexImage2D)(target, level, internalformat, x, y, width, height, border)
9879        /// * `target` group: TextureTarget
9880        /// * `level` group: CheckedInt32
9881        /// * `internalformat` group: InternalFormat
9882        /// * `x` group: WinCoord
9883        /// * `y` group: WinCoord
9884        /// * `border` group: CheckedInt32
9885        #[cfg_attr(feature = "inline", inline)]
9886        #[cfg_attr(feature = "inline_always", inline(always))]
9887        pub unsafe fn CopyTexImage2D(
9888            &self,
9889            target: GLenum,
9890            level: GLint,
9891            internalformat: GLenum,
9892            x: GLint,
9893            y: GLint,
9894            width: GLsizei,
9895            height: GLsizei,
9896            border: GLint,
9897        ) {
9898            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9899            {
9900                trace!(
9901                    "calling gl.CopyTexImage2D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?}, {:?});",
9902                    target,
9903                    level,
9904                    internalformat,
9905                    x,
9906                    y,
9907                    width,
9908                    height,
9909                    border
9910                );
9911            }
9912            let out = call_atomic_ptr_8arg(
9913                "glCopyTexImage2D",
9914                &self.glCopyTexImage2D_p,
9915                target,
9916                level,
9917                internalformat,
9918                x,
9919                y,
9920                width,
9921                height,
9922                border,
9923            );
9924            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9925            {
9926                self.automatic_glGetError("glCopyTexImage2D");
9927            }
9928            out
9929        }
9930        #[doc(hidden)]
9931        pub unsafe fn CopyTexImage2D_load_with_dyn(
9932            &self,
9933            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9934        ) -> bool {
9935            load_dyn_name_atomic_ptr(
9936                get_proc_address,
9937                b"glCopyTexImage2D\0",
9938                &self.glCopyTexImage2D_p,
9939            )
9940        }
9941        #[inline]
9942        #[doc(hidden)]
9943        pub fn CopyTexImage2D_is_loaded(&self) -> bool {
9944            !self.glCopyTexImage2D_p.load(RELAX).is_null()
9945        }
9946        /// [glCopyTexSubImage1D](http://docs.gl/gl4/glCopyTexSubImage1D)(target, level, xoffset, x, y, width)
9947        /// * `target` group: TextureTarget
9948        /// * `level` group: CheckedInt32
9949        /// * `xoffset` group: CheckedInt32
9950        /// * `x` group: WinCoord
9951        /// * `y` group: WinCoord
9952        #[cfg_attr(feature = "inline", inline)]
9953        #[cfg_attr(feature = "inline_always", inline(always))]
9954        pub unsafe fn CopyTexSubImage1D(
9955            &self,
9956            target: GLenum,
9957            level: GLint,
9958            xoffset: GLint,
9959            x: GLint,
9960            y: GLint,
9961            width: GLsizei,
9962        ) {
9963            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
9964            {
9965                trace!(
9966                    "calling gl.CopyTexSubImage1D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?});",
9967                    target,
9968                    level,
9969                    xoffset,
9970                    x,
9971                    y,
9972                    width
9973                );
9974            }
9975            let out = call_atomic_ptr_6arg(
9976                "glCopyTexSubImage1D",
9977                &self.glCopyTexSubImage1D_p,
9978                target,
9979                level,
9980                xoffset,
9981                x,
9982                y,
9983                width,
9984            );
9985            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
9986            {
9987                self.automatic_glGetError("glCopyTexSubImage1D");
9988            }
9989            out
9990        }
9991        #[doc(hidden)]
9992        pub unsafe fn CopyTexSubImage1D_load_with_dyn(
9993            &self,
9994            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
9995        ) -> bool {
9996            load_dyn_name_atomic_ptr(
9997                get_proc_address,
9998                b"glCopyTexSubImage1D\0",
9999                &self.glCopyTexSubImage1D_p,
10000            )
10001        }
10002        #[inline]
10003        #[doc(hidden)]
10004        pub fn CopyTexSubImage1D_is_loaded(&self) -> bool {
10005            !self.glCopyTexSubImage1D_p.load(RELAX).is_null()
10006        }
10007        /// [glCopyTexSubImage2D](http://docs.gl/gl4/glCopyTexSubImage2D)(target, level, xoffset, yoffset, x, y, width, height)
10008        /// * `target` group: TextureTarget
10009        /// * `level` group: CheckedInt32
10010        /// * `xoffset` group: CheckedInt32
10011        /// * `yoffset` group: CheckedInt32
10012        /// * `x` group: WinCoord
10013        /// * `y` group: WinCoord
10014        #[cfg_attr(feature = "inline", inline)]
10015        #[cfg_attr(feature = "inline_always", inline(always))]
10016        pub unsafe fn CopyTexSubImage2D(
10017            &self,
10018            target: GLenum,
10019            level: GLint,
10020            xoffset: GLint,
10021            yoffset: GLint,
10022            x: GLint,
10023            y: GLint,
10024            width: GLsizei,
10025            height: GLsizei,
10026        ) {
10027            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10028            {
10029                trace!("calling gl.CopyTexSubImage2D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", target, level, xoffset, yoffset, x, y, width, height);
10030            }
10031            let out = call_atomic_ptr_8arg(
10032                "glCopyTexSubImage2D",
10033                &self.glCopyTexSubImage2D_p,
10034                target,
10035                level,
10036                xoffset,
10037                yoffset,
10038                x,
10039                y,
10040                width,
10041                height,
10042            );
10043            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10044            {
10045                self.automatic_glGetError("glCopyTexSubImage2D");
10046            }
10047            out
10048        }
10049        #[doc(hidden)]
10050        pub unsafe fn CopyTexSubImage2D_load_with_dyn(
10051            &self,
10052            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10053        ) -> bool {
10054            load_dyn_name_atomic_ptr(
10055                get_proc_address,
10056                b"glCopyTexSubImage2D\0",
10057                &self.glCopyTexSubImage2D_p,
10058            )
10059        }
10060        #[inline]
10061        #[doc(hidden)]
10062        pub fn CopyTexSubImage2D_is_loaded(&self) -> bool {
10063            !self.glCopyTexSubImage2D_p.load(RELAX).is_null()
10064        }
10065        /// [glCopyTexSubImage3D](http://docs.gl/gl4/glCopyTexSubImage3D)(target, level, xoffset, yoffset, zoffset, x, y, width, height)
10066        /// * `target` group: TextureTarget
10067        /// * `level` group: CheckedInt32
10068        /// * `xoffset` group: CheckedInt32
10069        /// * `yoffset` group: CheckedInt32
10070        /// * `zoffset` group: CheckedInt32
10071        /// * `x` group: WinCoord
10072        /// * `y` group: WinCoord
10073        #[cfg_attr(feature = "inline", inline)]
10074        #[cfg_attr(feature = "inline_always", inline(always))]
10075        pub unsafe fn CopyTexSubImage3D(
10076            &self,
10077            target: GLenum,
10078            level: GLint,
10079            xoffset: GLint,
10080            yoffset: GLint,
10081            zoffset: GLint,
10082            x: GLint,
10083            y: GLint,
10084            width: GLsizei,
10085            height: GLsizei,
10086        ) {
10087            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10088            {
10089                trace!("calling gl.CopyTexSubImage3D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", target, level, xoffset, yoffset, zoffset, x, y, width, height);
10090            }
10091            let out = call_atomic_ptr_9arg(
10092                "glCopyTexSubImage3D",
10093                &self.glCopyTexSubImage3D_p,
10094                target,
10095                level,
10096                xoffset,
10097                yoffset,
10098                zoffset,
10099                x,
10100                y,
10101                width,
10102                height,
10103            );
10104            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10105            {
10106                self.automatic_glGetError("glCopyTexSubImage3D");
10107            }
10108            out
10109        }
10110        #[doc(hidden)]
10111        pub unsafe fn CopyTexSubImage3D_load_with_dyn(
10112            &self,
10113            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10114        ) -> bool {
10115            load_dyn_name_atomic_ptr(
10116                get_proc_address,
10117                b"glCopyTexSubImage3D\0",
10118                &self.glCopyTexSubImage3D_p,
10119            )
10120        }
10121        #[inline]
10122        #[doc(hidden)]
10123        pub fn CopyTexSubImage3D_is_loaded(&self) -> bool {
10124            !self.glCopyTexSubImage3D_p.load(RELAX).is_null()
10125        }
10126        /// [glCopyTextureSubImage1D](http://docs.gl/gl4/glCopyTextureSubImage1D)(texture, level, xoffset, x, y, width)
10127        #[cfg_attr(feature = "inline", inline)]
10128        #[cfg_attr(feature = "inline_always", inline(always))]
10129        pub unsafe fn CopyTextureSubImage1D(
10130            &self,
10131            texture: GLuint,
10132            level: GLint,
10133            xoffset: GLint,
10134            x: GLint,
10135            y: GLint,
10136            width: GLsizei,
10137        ) {
10138            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10139            {
10140                trace!(
10141                    "calling gl.CopyTextureSubImage1D({:?}, {:?}, {:?}, {:?}, {:?}, {:?});",
10142                    texture,
10143                    level,
10144                    xoffset,
10145                    x,
10146                    y,
10147                    width
10148                );
10149            }
10150            let out = call_atomic_ptr_6arg(
10151                "glCopyTextureSubImage1D",
10152                &self.glCopyTextureSubImage1D_p,
10153                texture,
10154                level,
10155                xoffset,
10156                x,
10157                y,
10158                width,
10159            );
10160            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10161            {
10162                self.automatic_glGetError("glCopyTextureSubImage1D");
10163            }
10164            out
10165        }
10166        #[doc(hidden)]
10167        pub unsafe fn CopyTextureSubImage1D_load_with_dyn(
10168            &self,
10169            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10170        ) -> bool {
10171            load_dyn_name_atomic_ptr(
10172                get_proc_address,
10173                b"glCopyTextureSubImage1D\0",
10174                &self.glCopyTextureSubImage1D_p,
10175            )
10176        }
10177        #[inline]
10178        #[doc(hidden)]
10179        pub fn CopyTextureSubImage1D_is_loaded(&self) -> bool {
10180            !self.glCopyTextureSubImage1D_p.load(RELAX).is_null()
10181        }
10182        /// [glCopyTextureSubImage2D](http://docs.gl/gl4/glCopyTextureSubImage2D)(texture, level, xoffset, yoffset, x, y, width, height)
10183        #[cfg_attr(feature = "inline", inline)]
10184        #[cfg_attr(feature = "inline_always", inline(always))]
10185        pub unsafe fn CopyTextureSubImage2D(
10186            &self,
10187            texture: GLuint,
10188            level: GLint,
10189            xoffset: GLint,
10190            yoffset: GLint,
10191            x: GLint,
10192            y: GLint,
10193            width: GLsizei,
10194            height: GLsizei,
10195        ) {
10196            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10197            {
10198                trace!("calling gl.CopyTextureSubImage2D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", texture, level, xoffset, yoffset, x, y, width, height);
10199            }
10200            let out = call_atomic_ptr_8arg(
10201                "glCopyTextureSubImage2D",
10202                &self.glCopyTextureSubImage2D_p,
10203                texture,
10204                level,
10205                xoffset,
10206                yoffset,
10207                x,
10208                y,
10209                width,
10210                height,
10211            );
10212            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10213            {
10214                self.automatic_glGetError("glCopyTextureSubImage2D");
10215            }
10216            out
10217        }
10218        #[doc(hidden)]
10219        pub unsafe fn CopyTextureSubImage2D_load_with_dyn(
10220            &self,
10221            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10222        ) -> bool {
10223            load_dyn_name_atomic_ptr(
10224                get_proc_address,
10225                b"glCopyTextureSubImage2D\0",
10226                &self.glCopyTextureSubImage2D_p,
10227            )
10228        }
10229        #[inline]
10230        #[doc(hidden)]
10231        pub fn CopyTextureSubImage2D_is_loaded(&self) -> bool {
10232            !self.glCopyTextureSubImage2D_p.load(RELAX).is_null()
10233        }
10234        /// [glCopyTextureSubImage3D](http://docs.gl/gl4/glCopyTextureSubImage3D)(texture, level, xoffset, yoffset, zoffset, x, y, width, height)
10235        #[cfg_attr(feature = "inline", inline)]
10236        #[cfg_attr(feature = "inline_always", inline(always))]
10237        pub unsafe fn CopyTextureSubImage3D(
10238            &self,
10239            texture: GLuint,
10240            level: GLint,
10241            xoffset: GLint,
10242            yoffset: GLint,
10243            zoffset: GLint,
10244            x: GLint,
10245            y: GLint,
10246            width: GLsizei,
10247            height: GLsizei,
10248        ) {
10249            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10250            {
10251                trace!("calling gl.CopyTextureSubImage3D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", texture, level, xoffset, yoffset, zoffset, x, y, width, height);
10252            }
10253            let out = call_atomic_ptr_9arg(
10254                "glCopyTextureSubImage3D",
10255                &self.glCopyTextureSubImage3D_p,
10256                texture,
10257                level,
10258                xoffset,
10259                yoffset,
10260                zoffset,
10261                x,
10262                y,
10263                width,
10264                height,
10265            );
10266            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10267            {
10268                self.automatic_glGetError("glCopyTextureSubImage3D");
10269            }
10270            out
10271        }
10272        #[doc(hidden)]
10273        pub unsafe fn CopyTextureSubImage3D_load_with_dyn(
10274            &self,
10275            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10276        ) -> bool {
10277            load_dyn_name_atomic_ptr(
10278                get_proc_address,
10279                b"glCopyTextureSubImage3D\0",
10280                &self.glCopyTextureSubImage3D_p,
10281            )
10282        }
10283        #[inline]
10284        #[doc(hidden)]
10285        pub fn CopyTextureSubImage3D_is_loaded(&self) -> bool {
10286            !self.glCopyTextureSubImage3D_p.load(RELAX).is_null()
10287        }
10288        /// [glCreateBuffers](http://docs.gl/gl4/glCreateBuffers)(n, buffers)
10289        /// * `buffers` len: n
10290        #[cfg_attr(feature = "inline", inline)]
10291        #[cfg_attr(feature = "inline_always", inline(always))]
10292        pub unsafe fn CreateBuffers(&self, n: GLsizei, buffers: *mut GLuint) {
10293            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10294            {
10295                trace!("calling gl.CreateBuffers({:?}, {:p});", n, buffers);
10296            }
10297            let out = call_atomic_ptr_2arg("glCreateBuffers", &self.glCreateBuffers_p, n, buffers);
10298            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10299            {
10300                self.automatic_glGetError("glCreateBuffers");
10301            }
10302            out
10303        }
10304        #[doc(hidden)]
10305        pub unsafe fn CreateBuffers_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"glCreateBuffers\0",
10312                &self.glCreateBuffers_p,
10313            )
10314        }
10315        #[inline]
10316        #[doc(hidden)]
10317        pub fn CreateBuffers_is_loaded(&self) -> bool {
10318            !self.glCreateBuffers_p.load(RELAX).is_null()
10319        }
10320        /// [glCreateFramebuffers](http://docs.gl/gl4/glCreateFramebuffers)(n, framebuffers)
10321        /// * `framebuffers` len: n
10322        #[cfg_attr(feature = "inline", inline)]
10323        #[cfg_attr(feature = "inline_always", inline(always))]
10324        pub unsafe fn CreateFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) {
10325            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10326            {
10327                trace!(
10328                    "calling gl.CreateFramebuffers({:?}, {:p});",
10329                    n,
10330                    framebuffers
10331                );
10332            }
10333            let out = call_atomic_ptr_2arg(
10334                "glCreateFramebuffers",
10335                &self.glCreateFramebuffers_p,
10336                n,
10337                framebuffers,
10338            );
10339            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10340            {
10341                self.automatic_glGetError("glCreateFramebuffers");
10342            }
10343            out
10344        }
10345        #[doc(hidden)]
10346        pub unsafe fn CreateFramebuffers_load_with_dyn(
10347            &self,
10348            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10349        ) -> bool {
10350            load_dyn_name_atomic_ptr(
10351                get_proc_address,
10352                b"glCreateFramebuffers\0",
10353                &self.glCreateFramebuffers_p,
10354            )
10355        }
10356        #[inline]
10357        #[doc(hidden)]
10358        pub fn CreateFramebuffers_is_loaded(&self) -> bool {
10359            !self.glCreateFramebuffers_p.load(RELAX).is_null()
10360        }
10361        /// [glCreateProgram](http://docs.gl/gl4/glCreateProgram)()
10362        #[cfg_attr(feature = "inline", inline)]
10363        #[cfg_attr(feature = "inline_always", inline(always))]
10364        pub unsafe fn CreateProgram(&self) -> GLuint {
10365            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10366            {
10367                trace!("calling gl.CreateProgram();",);
10368            }
10369            let out = call_atomic_ptr_0arg("glCreateProgram", &self.glCreateProgram_p);
10370            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10371            {
10372                self.automatic_glGetError("glCreateProgram");
10373            }
10374            out
10375        }
10376        #[doc(hidden)]
10377        pub unsafe fn CreateProgram_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"glCreateProgram\0",
10384                &self.glCreateProgram_p,
10385            )
10386        }
10387        #[inline]
10388        #[doc(hidden)]
10389        pub fn CreateProgram_is_loaded(&self) -> bool {
10390            !self.glCreateProgram_p.load(RELAX).is_null()
10391        }
10392        /// [glCreateProgramPipelines](http://docs.gl/gl4/glCreateProgramPipelines)(n, pipelines)
10393        /// * `pipelines` len: n
10394        #[cfg_attr(feature = "inline", inline)]
10395        #[cfg_attr(feature = "inline_always", inline(always))]
10396        pub unsafe fn CreateProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) {
10397            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10398            {
10399                trace!(
10400                    "calling gl.CreateProgramPipelines({:?}, {:p});",
10401                    n,
10402                    pipelines
10403                );
10404            }
10405            let out = call_atomic_ptr_2arg(
10406                "glCreateProgramPipelines",
10407                &self.glCreateProgramPipelines_p,
10408                n,
10409                pipelines,
10410            );
10411            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10412            {
10413                self.automatic_glGetError("glCreateProgramPipelines");
10414            }
10415            out
10416        }
10417        #[doc(hidden)]
10418        pub unsafe fn CreateProgramPipelines_load_with_dyn(
10419            &self,
10420            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10421        ) -> bool {
10422            load_dyn_name_atomic_ptr(
10423                get_proc_address,
10424                b"glCreateProgramPipelines\0",
10425                &self.glCreateProgramPipelines_p,
10426            )
10427        }
10428        #[inline]
10429        #[doc(hidden)]
10430        pub fn CreateProgramPipelines_is_loaded(&self) -> bool {
10431            !self.glCreateProgramPipelines_p.load(RELAX).is_null()
10432        }
10433        /// [glCreateQueries](http://docs.gl/gl4/glCreateQueries)(target, n, ids)
10434        /// * `target` group: QueryTarget
10435        /// * `ids` len: n
10436        #[cfg_attr(feature = "inline", inline)]
10437        #[cfg_attr(feature = "inline_always", inline(always))]
10438        pub unsafe fn CreateQueries(&self, target: GLenum, n: GLsizei, ids: *mut GLuint) {
10439            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10440            {
10441                trace!(
10442                    "calling gl.CreateQueries({:#X}, {:?}, {:p});",
10443                    target,
10444                    n,
10445                    ids
10446                );
10447            }
10448            let out =
10449                call_atomic_ptr_3arg("glCreateQueries", &self.glCreateQueries_p, target, n, ids);
10450            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10451            {
10452                self.automatic_glGetError("glCreateQueries");
10453            }
10454            out
10455        }
10456        #[doc(hidden)]
10457        pub unsafe fn CreateQueries_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"glCreateQueries\0",
10464                &self.glCreateQueries_p,
10465            )
10466        }
10467        #[inline]
10468        #[doc(hidden)]
10469        pub fn CreateQueries_is_loaded(&self) -> bool {
10470            !self.glCreateQueries_p.load(RELAX).is_null()
10471        }
10472        /// [glCreateRenderbuffers](http://docs.gl/gl4/glCreateRenderbuffers)(n, renderbuffers)
10473        /// * `renderbuffers` len: n
10474        #[cfg_attr(feature = "inline", inline)]
10475        #[cfg_attr(feature = "inline_always", inline(always))]
10476        pub unsafe fn CreateRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) {
10477            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10478            {
10479                trace!(
10480                    "calling gl.CreateRenderbuffers({:?}, {:p});",
10481                    n,
10482                    renderbuffers
10483                );
10484            }
10485            let out = call_atomic_ptr_2arg(
10486                "glCreateRenderbuffers",
10487                &self.glCreateRenderbuffers_p,
10488                n,
10489                renderbuffers,
10490            );
10491            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10492            {
10493                self.automatic_glGetError("glCreateRenderbuffers");
10494            }
10495            out
10496        }
10497        #[doc(hidden)]
10498        pub unsafe fn CreateRenderbuffers_load_with_dyn(
10499            &self,
10500            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10501        ) -> bool {
10502            load_dyn_name_atomic_ptr(
10503                get_proc_address,
10504                b"glCreateRenderbuffers\0",
10505                &self.glCreateRenderbuffers_p,
10506            )
10507        }
10508        #[inline]
10509        #[doc(hidden)]
10510        pub fn CreateRenderbuffers_is_loaded(&self) -> bool {
10511            !self.glCreateRenderbuffers_p.load(RELAX).is_null()
10512        }
10513        /// [glCreateSamplers](http://docs.gl/gl4/glCreateSamplers)(n, samplers)
10514        /// * `samplers` len: n
10515        #[cfg_attr(feature = "inline", inline)]
10516        #[cfg_attr(feature = "inline_always", inline(always))]
10517        pub unsafe fn CreateSamplers(&self, n: GLsizei, samplers: *mut GLuint) {
10518            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10519            {
10520                trace!("calling gl.CreateSamplers({:?}, {:p});", n, samplers);
10521            }
10522            let out =
10523                call_atomic_ptr_2arg("glCreateSamplers", &self.glCreateSamplers_p, n, samplers);
10524            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10525            {
10526                self.automatic_glGetError("glCreateSamplers");
10527            }
10528            out
10529        }
10530        #[doc(hidden)]
10531        pub unsafe fn CreateSamplers_load_with_dyn(
10532            &self,
10533            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10534        ) -> bool {
10535            load_dyn_name_atomic_ptr(
10536                get_proc_address,
10537                b"glCreateSamplers\0",
10538                &self.glCreateSamplers_p,
10539            )
10540        }
10541        #[inline]
10542        #[doc(hidden)]
10543        pub fn CreateSamplers_is_loaded(&self) -> bool {
10544            !self.glCreateSamplers_p.load(RELAX).is_null()
10545        }
10546        /// [glCreateShader](http://docs.gl/gl4/glCreateShader)(type_)
10547        /// * `type_` group: ShaderType
10548        #[cfg_attr(feature = "inline", inline)]
10549        #[cfg_attr(feature = "inline_always", inline(always))]
10550        pub unsafe fn CreateShader(&self, type_: GLenum) -> GLuint {
10551            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10552            {
10553                trace!("calling gl.CreateShader({:#X});", type_);
10554            }
10555            let out = call_atomic_ptr_1arg("glCreateShader", &self.glCreateShader_p, type_);
10556            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10557            {
10558                self.automatic_glGetError("glCreateShader");
10559            }
10560            out
10561        }
10562        #[doc(hidden)]
10563        pub unsafe fn CreateShader_load_with_dyn(
10564            &self,
10565            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10566        ) -> bool {
10567            load_dyn_name_atomic_ptr(
10568                get_proc_address,
10569                b"glCreateShader\0",
10570                &self.glCreateShader_p,
10571            )
10572        }
10573        #[inline]
10574        #[doc(hidden)]
10575        pub fn CreateShader_is_loaded(&self) -> bool {
10576            !self.glCreateShader_p.load(RELAX).is_null()
10577        }
10578        /// [glCreateShaderProgramv](http://docs.gl/gl4/glCreateShaderProgramv)(type_, count, strings)
10579        /// * `type_` group: ShaderType
10580        /// * `strings` len: count
10581        #[cfg_attr(feature = "inline", inline)]
10582        #[cfg_attr(feature = "inline_always", inline(always))]
10583        pub unsafe fn CreateShaderProgramv(
10584            &self,
10585            type_: GLenum,
10586            count: GLsizei,
10587            strings: *const *const GLchar,
10588        ) -> GLuint {
10589            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10590            {
10591                trace!(
10592                    "calling gl.CreateShaderProgramv({:#X}, {:?}, {:p});",
10593                    type_,
10594                    count,
10595                    strings
10596                );
10597            }
10598            let out = call_atomic_ptr_3arg(
10599                "glCreateShaderProgramv",
10600                &self.glCreateShaderProgramv_p,
10601                type_,
10602                count,
10603                strings,
10604            );
10605            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10606            {
10607                self.automatic_glGetError("glCreateShaderProgramv");
10608            }
10609            out
10610        }
10611        #[doc(hidden)]
10612        pub unsafe fn CreateShaderProgramv_load_with_dyn(
10613            &self,
10614            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10615        ) -> bool {
10616            load_dyn_name_atomic_ptr(
10617                get_proc_address,
10618                b"glCreateShaderProgramv\0",
10619                &self.glCreateShaderProgramv_p,
10620            )
10621        }
10622        #[inline]
10623        #[doc(hidden)]
10624        pub fn CreateShaderProgramv_is_loaded(&self) -> bool {
10625            !self.glCreateShaderProgramv_p.load(RELAX).is_null()
10626        }
10627        /// [glCreateTextures](http://docs.gl/gl4/glCreateTextures)(target, n, textures)
10628        /// * `target` group: TextureTarget
10629        /// * `textures` len: n
10630        #[cfg_attr(feature = "inline", inline)]
10631        #[cfg_attr(feature = "inline_always", inline(always))]
10632        pub unsafe fn CreateTextures(&self, target: GLenum, n: GLsizei, textures: *mut GLuint) {
10633            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10634            {
10635                trace!(
10636                    "calling gl.CreateTextures({:#X}, {:?}, {:p});",
10637                    target,
10638                    n,
10639                    textures
10640                );
10641            }
10642            let out = call_atomic_ptr_3arg(
10643                "glCreateTextures",
10644                &self.glCreateTextures_p,
10645                target,
10646                n,
10647                textures,
10648            );
10649            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10650            {
10651                self.automatic_glGetError("glCreateTextures");
10652            }
10653            out
10654        }
10655        #[doc(hidden)]
10656        pub unsafe fn CreateTextures_load_with_dyn(
10657            &self,
10658            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10659        ) -> bool {
10660            load_dyn_name_atomic_ptr(
10661                get_proc_address,
10662                b"glCreateTextures\0",
10663                &self.glCreateTextures_p,
10664            )
10665        }
10666        #[inline]
10667        #[doc(hidden)]
10668        pub fn CreateTextures_is_loaded(&self) -> bool {
10669            !self.glCreateTextures_p.load(RELAX).is_null()
10670        }
10671        /// [glCreateTransformFeedbacks](http://docs.gl/gl4/glCreateTransformFeedbacks)(n, ids)
10672        /// * `ids` len: n
10673        #[cfg_attr(feature = "inline", inline)]
10674        #[cfg_attr(feature = "inline_always", inline(always))]
10675        pub unsafe fn CreateTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) {
10676            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10677            {
10678                trace!("calling gl.CreateTransformFeedbacks({:?}, {:p});", n, ids);
10679            }
10680            let out = call_atomic_ptr_2arg(
10681                "glCreateTransformFeedbacks",
10682                &self.glCreateTransformFeedbacks_p,
10683                n,
10684                ids,
10685            );
10686            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10687            {
10688                self.automatic_glGetError("glCreateTransformFeedbacks");
10689            }
10690            out
10691        }
10692        #[doc(hidden)]
10693        pub unsafe fn CreateTransformFeedbacks_load_with_dyn(
10694            &self,
10695            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10696        ) -> bool {
10697            load_dyn_name_atomic_ptr(
10698                get_proc_address,
10699                b"glCreateTransformFeedbacks\0",
10700                &self.glCreateTransformFeedbacks_p,
10701            )
10702        }
10703        #[inline]
10704        #[doc(hidden)]
10705        pub fn CreateTransformFeedbacks_is_loaded(&self) -> bool {
10706            !self.glCreateTransformFeedbacks_p.load(RELAX).is_null()
10707        }
10708        /// [glCreateVertexArrays](http://docs.gl/gl4/glCreateVertexArrays)(n, arrays)
10709        /// * `arrays` len: n
10710        #[cfg_attr(feature = "inline", inline)]
10711        #[cfg_attr(feature = "inline_always", inline(always))]
10712        pub unsafe fn CreateVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) {
10713            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10714            {
10715                trace!("calling gl.CreateVertexArrays({:?}, {:p});", n, arrays);
10716            }
10717            let out = call_atomic_ptr_2arg(
10718                "glCreateVertexArrays",
10719                &self.glCreateVertexArrays_p,
10720                n,
10721                arrays,
10722            );
10723            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10724            {
10725                self.automatic_glGetError("glCreateVertexArrays");
10726            }
10727            out
10728        }
10729        #[doc(hidden)]
10730        pub unsafe fn CreateVertexArrays_load_with_dyn(
10731            &self,
10732            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10733        ) -> bool {
10734            load_dyn_name_atomic_ptr(
10735                get_proc_address,
10736                b"glCreateVertexArrays\0",
10737                &self.glCreateVertexArrays_p,
10738            )
10739        }
10740        #[inline]
10741        #[doc(hidden)]
10742        pub fn CreateVertexArrays_is_loaded(&self) -> bool {
10743            !self.glCreateVertexArrays_p.load(RELAX).is_null()
10744        }
10745        /// [glCullFace](http://docs.gl/gl4/glCullFace)(mode)
10746        /// * `mode` group: CullFaceMode
10747        #[cfg_attr(feature = "inline", inline)]
10748        #[cfg_attr(feature = "inline_always", inline(always))]
10749        pub unsafe fn CullFace(&self, mode: GLenum) {
10750            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10751            {
10752                trace!("calling gl.CullFace({:#X});", mode);
10753            }
10754            let out = call_atomic_ptr_1arg("glCullFace", &self.glCullFace_p, mode);
10755            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10756            {
10757                self.automatic_glGetError("glCullFace");
10758            }
10759            out
10760        }
10761        #[doc(hidden)]
10762        pub unsafe fn CullFace_load_with_dyn(
10763            &self,
10764            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10765        ) -> bool {
10766            load_dyn_name_atomic_ptr(get_proc_address, b"glCullFace\0", &self.glCullFace_p)
10767        }
10768        #[inline]
10769        #[doc(hidden)]
10770        pub fn CullFace_is_loaded(&self) -> bool {
10771            !self.glCullFace_p.load(RELAX).is_null()
10772        }
10773        /// [glDebugMessageCallback](http://docs.gl/gl4/glDebugMessageCallback)(callback, userParam)
10774        #[cfg_attr(feature = "inline", inline)]
10775        #[cfg_attr(feature = "inline_always", inline(always))]
10776        pub unsafe fn DebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) {
10777            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10778            {
10779                trace!(
10780                    "calling gl.DebugMessageCallback({:?}, {:p});",
10781                    transmute::<_, Option<fn()>>(callback),
10782                    userParam
10783                );
10784            }
10785            let out = call_atomic_ptr_2arg(
10786                "glDebugMessageCallback",
10787                &self.glDebugMessageCallback_p,
10788                callback,
10789                userParam,
10790            );
10791            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10792            {
10793                self.automatic_glGetError("glDebugMessageCallback");
10794            }
10795            out
10796        }
10797        #[doc(hidden)]
10798        pub unsafe fn DebugMessageCallback_load_with_dyn(
10799            &self,
10800            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10801        ) -> bool {
10802            load_dyn_name_atomic_ptr(
10803                get_proc_address,
10804                b"glDebugMessageCallback\0",
10805                &self.glDebugMessageCallback_p,
10806            )
10807        }
10808        #[inline]
10809        #[doc(hidden)]
10810        pub fn DebugMessageCallback_is_loaded(&self) -> bool {
10811            !self.glDebugMessageCallback_p.load(RELAX).is_null()
10812        }
10813        /// [glDebugMessageCallbackARB](http://docs.gl/gl4/glDebugMessageCallbackARB)(callback, userParam)
10814        /// * `userParam` len: COMPSIZE(callback)
10815        /// * alias of: [`glDebugMessageCallback`]
10816        #[cfg_attr(feature = "inline", inline)]
10817        #[cfg_attr(feature = "inline_always", inline(always))]
10818        pub unsafe fn DebugMessageCallbackARB(
10819            &self,
10820            callback: GLDEBUGPROCARB,
10821            userParam: *const c_void,
10822        ) {
10823            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10824            {
10825                trace!(
10826                    "calling gl.DebugMessageCallbackARB({:?}, {:p});",
10827                    transmute::<_, Option<fn()>>(callback),
10828                    userParam
10829                );
10830            }
10831            let out = call_atomic_ptr_2arg(
10832                "glDebugMessageCallbackARB",
10833                &self.glDebugMessageCallbackARB_p,
10834                callback,
10835                userParam,
10836            );
10837            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10838            {
10839                self.automatic_glGetError("glDebugMessageCallbackARB");
10840            }
10841            out
10842        }
10843        #[doc(hidden)]
10844        pub unsafe fn DebugMessageCallbackARB_load_with_dyn(
10845            &self,
10846            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10847        ) -> bool {
10848            load_dyn_name_atomic_ptr(
10849                get_proc_address,
10850                b"glDebugMessageCallbackARB\0",
10851                &self.glDebugMessageCallbackARB_p,
10852            )
10853        }
10854        #[inline]
10855        #[doc(hidden)]
10856        pub fn DebugMessageCallbackARB_is_loaded(&self) -> bool {
10857            !self.glDebugMessageCallbackARB_p.load(RELAX).is_null()
10858        }
10859        /// [glDebugMessageCallbackKHR](http://docs.gl/gl4/glDebugMessageCallbackKHR)(callback, userParam)
10860        /// * alias of: [`glDebugMessageCallback`]
10861        #[cfg_attr(feature = "inline", inline)]
10862        #[cfg_attr(feature = "inline_always", inline(always))]
10863        pub unsafe fn DebugMessageCallbackKHR(
10864            &self,
10865            callback: GLDEBUGPROCKHR,
10866            userParam: *const c_void,
10867        ) {
10868            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10869            {
10870                trace!(
10871                    "calling gl.DebugMessageCallbackKHR({:?}, {:p});",
10872                    transmute::<_, Option<fn()>>(callback),
10873                    userParam
10874                );
10875            }
10876            let out = call_atomic_ptr_2arg(
10877                "glDebugMessageCallbackKHR",
10878                &self.glDebugMessageCallbackKHR_p,
10879                callback,
10880                userParam,
10881            );
10882            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10883            {
10884                self.automatic_glGetError("glDebugMessageCallbackKHR");
10885            }
10886            out
10887        }
10888        #[doc(hidden)]
10889        pub unsafe fn DebugMessageCallbackKHR_load_with_dyn(
10890            &self,
10891            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10892        ) -> bool {
10893            load_dyn_name_atomic_ptr(
10894                get_proc_address,
10895                b"glDebugMessageCallbackKHR\0",
10896                &self.glDebugMessageCallbackKHR_p,
10897            )
10898        }
10899        #[inline]
10900        #[doc(hidden)]
10901        pub fn DebugMessageCallbackKHR_is_loaded(&self) -> bool {
10902            !self.glDebugMessageCallbackKHR_p.load(RELAX).is_null()
10903        }
10904        /// [glDebugMessageControl](http://docs.gl/gl4/glDebugMessageControl)(source, type_, severity, count, ids, enabled)
10905        /// * `source` group: DebugSource
10906        /// * `type_` group: DebugType
10907        /// * `severity` group: DebugSeverity
10908        /// * `ids` len: count
10909        #[cfg_attr(feature = "inline", inline)]
10910        #[cfg_attr(feature = "inline_always", inline(always))]
10911        pub unsafe fn DebugMessageControl(
10912            &self,
10913            source: GLenum,
10914            type_: GLenum,
10915            severity: GLenum,
10916            count: GLsizei,
10917            ids: *const GLuint,
10918            enabled: GLboolean,
10919        ) {
10920            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10921            {
10922                trace!(
10923                    "calling gl.DebugMessageControl({:#X}, {:#X}, {:#X}, {:?}, {:p}, {:?});",
10924                    source,
10925                    type_,
10926                    severity,
10927                    count,
10928                    ids,
10929                    enabled
10930                );
10931            }
10932            let out = call_atomic_ptr_6arg(
10933                "glDebugMessageControl",
10934                &self.glDebugMessageControl_p,
10935                source,
10936                type_,
10937                severity,
10938                count,
10939                ids,
10940                enabled,
10941            );
10942            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
10943            {
10944                self.automatic_glGetError("glDebugMessageControl");
10945            }
10946            out
10947        }
10948        #[doc(hidden)]
10949        pub unsafe fn DebugMessageControl_load_with_dyn(
10950            &self,
10951            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
10952        ) -> bool {
10953            load_dyn_name_atomic_ptr(
10954                get_proc_address,
10955                b"glDebugMessageControl\0",
10956                &self.glDebugMessageControl_p,
10957            )
10958        }
10959        #[inline]
10960        #[doc(hidden)]
10961        pub fn DebugMessageControl_is_loaded(&self) -> bool {
10962            !self.glDebugMessageControl_p.load(RELAX).is_null()
10963        }
10964        /// [glDebugMessageControlARB](http://docs.gl/gl4/glDebugMessageControlARB)(source, type_, severity, count, ids, enabled)
10965        /// * `source` group: DebugSource
10966        /// * `type_` group: DebugType
10967        /// * `severity` group: DebugSeverity
10968        /// * `ids` len: count
10969        /// * alias of: [`glDebugMessageControl`]
10970        #[cfg_attr(feature = "inline", inline)]
10971        #[cfg_attr(feature = "inline_always", inline(always))]
10972        pub unsafe fn DebugMessageControlARB(
10973            &self,
10974            source: GLenum,
10975            type_: GLenum,
10976            severity: GLenum,
10977            count: GLsizei,
10978            ids: *const GLuint,
10979            enabled: GLboolean,
10980        ) {
10981            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
10982            {
10983                trace!(
10984                    "calling gl.DebugMessageControlARB({:#X}, {:#X}, {:#X}, {:?}, {:p}, {:?});",
10985                    source,
10986                    type_,
10987                    severity,
10988                    count,
10989                    ids,
10990                    enabled
10991                );
10992            }
10993            let out = call_atomic_ptr_6arg(
10994                "glDebugMessageControlARB",
10995                &self.glDebugMessageControlARB_p,
10996                source,
10997                type_,
10998                severity,
10999                count,
11000                ids,
11001                enabled,
11002            );
11003            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11004            {
11005                self.automatic_glGetError("glDebugMessageControlARB");
11006            }
11007            out
11008        }
11009        #[doc(hidden)]
11010        pub unsafe fn DebugMessageControlARB_load_with_dyn(
11011            &self,
11012            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11013        ) -> bool {
11014            load_dyn_name_atomic_ptr(
11015                get_proc_address,
11016                b"glDebugMessageControlARB\0",
11017                &self.glDebugMessageControlARB_p,
11018            )
11019        }
11020        #[inline]
11021        #[doc(hidden)]
11022        pub fn DebugMessageControlARB_is_loaded(&self) -> bool {
11023            !self.glDebugMessageControlARB_p.load(RELAX).is_null()
11024        }
11025        /// [glDebugMessageControlKHR](http://docs.gl/gl4/glDebugMessageControlKHR)(source, type_, severity, count, ids, enabled)
11026        /// * `source` group: DebugSource
11027        /// * `type_` group: DebugType
11028        /// * `severity` group: DebugSeverity
11029        /// * alias of: [`glDebugMessageControl`]
11030        #[cfg_attr(feature = "inline", inline)]
11031        #[cfg_attr(feature = "inline_always", inline(always))]
11032        pub unsafe fn DebugMessageControlKHR(
11033            &self,
11034            source: GLenum,
11035            type_: GLenum,
11036            severity: GLenum,
11037            count: GLsizei,
11038            ids: *const GLuint,
11039            enabled: GLboolean,
11040        ) {
11041            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11042            {
11043                trace!(
11044                    "calling gl.DebugMessageControlKHR({:#X}, {:#X}, {:#X}, {:?}, {:p}, {:?});",
11045                    source,
11046                    type_,
11047                    severity,
11048                    count,
11049                    ids,
11050                    enabled
11051                );
11052            }
11053            let out = call_atomic_ptr_6arg(
11054                "glDebugMessageControlKHR",
11055                &self.glDebugMessageControlKHR_p,
11056                source,
11057                type_,
11058                severity,
11059                count,
11060                ids,
11061                enabled,
11062            );
11063            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11064            {
11065                self.automatic_glGetError("glDebugMessageControlKHR");
11066            }
11067            out
11068        }
11069        #[doc(hidden)]
11070        pub unsafe fn DebugMessageControlKHR_load_with_dyn(
11071            &self,
11072            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11073        ) -> bool {
11074            load_dyn_name_atomic_ptr(
11075                get_proc_address,
11076                b"glDebugMessageControlKHR\0",
11077                &self.glDebugMessageControlKHR_p,
11078            )
11079        }
11080        #[inline]
11081        #[doc(hidden)]
11082        pub fn DebugMessageControlKHR_is_loaded(&self) -> bool {
11083            !self.glDebugMessageControlKHR_p.load(RELAX).is_null()
11084        }
11085        /// [glDebugMessageInsert](http://docs.gl/gl4/glDebugMessageInsert)(source, type_, id, severity, length, buf)
11086        /// * `source` group: DebugSource
11087        /// * `type_` group: DebugType
11088        /// * `severity` group: DebugSeverity
11089        /// * `buf` len: COMPSIZE(buf,length)
11090        #[cfg_attr(feature = "inline", inline)]
11091        #[cfg_attr(feature = "inline_always", inline(always))]
11092        pub unsafe fn DebugMessageInsert(
11093            &self,
11094            source: GLenum,
11095            type_: GLenum,
11096            id: GLuint,
11097            severity: GLenum,
11098            length: GLsizei,
11099            buf: *const GLchar,
11100        ) {
11101            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11102            {
11103                trace!(
11104                    "calling gl.DebugMessageInsert({:#X}, {:#X}, {:?}, {:#X}, {:?}, {:p});",
11105                    source,
11106                    type_,
11107                    id,
11108                    severity,
11109                    length,
11110                    buf
11111                );
11112            }
11113            let out = call_atomic_ptr_6arg(
11114                "glDebugMessageInsert",
11115                &self.glDebugMessageInsert_p,
11116                source,
11117                type_,
11118                id,
11119                severity,
11120                length,
11121                buf,
11122            );
11123            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11124            {
11125                self.automatic_glGetError("glDebugMessageInsert");
11126            }
11127            out
11128        }
11129        #[doc(hidden)]
11130        pub unsafe fn DebugMessageInsert_load_with_dyn(
11131            &self,
11132            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11133        ) -> bool {
11134            load_dyn_name_atomic_ptr(
11135                get_proc_address,
11136                b"glDebugMessageInsert\0",
11137                &self.glDebugMessageInsert_p,
11138            )
11139        }
11140        #[inline]
11141        #[doc(hidden)]
11142        pub fn DebugMessageInsert_is_loaded(&self) -> bool {
11143            !self.glDebugMessageInsert_p.load(RELAX).is_null()
11144        }
11145        /// [glDebugMessageInsertARB](http://docs.gl/gl4/glDebugMessageInsertARB)(source, type_, id, severity, length, buf)
11146        /// * `source` group: DebugSource
11147        /// * `type_` group: DebugType
11148        /// * `severity` group: DebugSeverity
11149        /// * `buf` len: length
11150        /// * alias of: [`glDebugMessageInsert`]
11151        #[cfg_attr(feature = "inline", inline)]
11152        #[cfg_attr(feature = "inline_always", inline(always))]
11153        pub unsafe fn DebugMessageInsertARB(
11154            &self,
11155            source: GLenum,
11156            type_: GLenum,
11157            id: GLuint,
11158            severity: GLenum,
11159            length: GLsizei,
11160            buf: *const GLchar,
11161        ) {
11162            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11163            {
11164                trace!(
11165                    "calling gl.DebugMessageInsertARB({:#X}, {:#X}, {:?}, {:#X}, {:?}, {:p});",
11166                    source,
11167                    type_,
11168                    id,
11169                    severity,
11170                    length,
11171                    buf
11172                );
11173            }
11174            let out = call_atomic_ptr_6arg(
11175                "glDebugMessageInsertARB",
11176                &self.glDebugMessageInsertARB_p,
11177                source,
11178                type_,
11179                id,
11180                severity,
11181                length,
11182                buf,
11183            );
11184            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11185            {
11186                self.automatic_glGetError("glDebugMessageInsertARB");
11187            }
11188            out
11189        }
11190        #[doc(hidden)]
11191        pub unsafe fn DebugMessageInsertARB_load_with_dyn(
11192            &self,
11193            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11194        ) -> bool {
11195            load_dyn_name_atomic_ptr(
11196                get_proc_address,
11197                b"glDebugMessageInsertARB\0",
11198                &self.glDebugMessageInsertARB_p,
11199            )
11200        }
11201        #[inline]
11202        #[doc(hidden)]
11203        pub fn DebugMessageInsertARB_is_loaded(&self) -> bool {
11204            !self.glDebugMessageInsertARB_p.load(RELAX).is_null()
11205        }
11206        /// [glDebugMessageInsertKHR](http://docs.gl/gl4/glDebugMessageInsertKHR)(source, type_, id, severity, length, buf)
11207        /// * `source` group: DebugSource
11208        /// * `type_` group: DebugType
11209        /// * `severity` group: DebugSeverity
11210        /// * alias of: [`glDebugMessageInsert`]
11211        #[cfg_attr(feature = "inline", inline)]
11212        #[cfg_attr(feature = "inline_always", inline(always))]
11213        pub unsafe fn DebugMessageInsertKHR(
11214            &self,
11215            source: GLenum,
11216            type_: GLenum,
11217            id: GLuint,
11218            severity: GLenum,
11219            length: GLsizei,
11220            buf: *const GLchar,
11221        ) {
11222            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11223            {
11224                trace!(
11225                    "calling gl.DebugMessageInsertKHR({:#X}, {:#X}, {:?}, {:#X}, {:?}, {:p});",
11226                    source,
11227                    type_,
11228                    id,
11229                    severity,
11230                    length,
11231                    buf
11232                );
11233            }
11234            let out = call_atomic_ptr_6arg(
11235                "glDebugMessageInsertKHR",
11236                &self.glDebugMessageInsertKHR_p,
11237                source,
11238                type_,
11239                id,
11240                severity,
11241                length,
11242                buf,
11243            );
11244            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11245            {
11246                self.automatic_glGetError("glDebugMessageInsertKHR");
11247            }
11248            out
11249        }
11250        #[doc(hidden)]
11251        pub unsafe fn DebugMessageInsertKHR_load_with_dyn(
11252            &self,
11253            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11254        ) -> bool {
11255            load_dyn_name_atomic_ptr(
11256                get_proc_address,
11257                b"glDebugMessageInsertKHR\0",
11258                &self.glDebugMessageInsertKHR_p,
11259            )
11260        }
11261        #[inline]
11262        #[doc(hidden)]
11263        pub fn DebugMessageInsertKHR_is_loaded(&self) -> bool {
11264            !self.glDebugMessageInsertKHR_p.load(RELAX).is_null()
11265        }
11266        /// [glDeleteBuffers](http://docs.gl/gl4/glDeleteBuffers)(n, buffers)
11267        /// * `buffers` len: n
11268        #[cfg_attr(feature = "inline", inline)]
11269        #[cfg_attr(feature = "inline_always", inline(always))]
11270        pub unsafe fn DeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) {
11271            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11272            {
11273                trace!("calling gl.DeleteBuffers({:?}, {:p});", n, buffers);
11274            }
11275            let out = call_atomic_ptr_2arg("glDeleteBuffers", &self.glDeleteBuffers_p, n, buffers);
11276            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11277            {
11278                self.automatic_glGetError("glDeleteBuffers");
11279            }
11280            out
11281        }
11282        #[doc(hidden)]
11283        pub unsafe fn DeleteBuffers_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"glDeleteBuffers\0",
11290                &self.glDeleteBuffers_p,
11291            )
11292        }
11293        #[inline]
11294        #[doc(hidden)]
11295        pub fn DeleteBuffers_is_loaded(&self) -> bool {
11296            !self.glDeleteBuffers_p.load(RELAX).is_null()
11297        }
11298        /// [glDeleteFramebuffers](http://docs.gl/gl4/glDeleteFramebuffers)(n, framebuffers)
11299        /// * `framebuffers` len: n
11300        #[cfg_attr(feature = "inline", inline)]
11301        #[cfg_attr(feature = "inline_always", inline(always))]
11302        pub unsafe fn DeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) {
11303            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11304            {
11305                trace!(
11306                    "calling gl.DeleteFramebuffers({:?}, {:p});",
11307                    n,
11308                    framebuffers
11309                );
11310            }
11311            let out = call_atomic_ptr_2arg(
11312                "glDeleteFramebuffers",
11313                &self.glDeleteFramebuffers_p,
11314                n,
11315                framebuffers,
11316            );
11317            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11318            {
11319                self.automatic_glGetError("glDeleteFramebuffers");
11320            }
11321            out
11322        }
11323        #[doc(hidden)]
11324        pub unsafe fn DeleteFramebuffers_load_with_dyn(
11325            &self,
11326            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11327        ) -> bool {
11328            load_dyn_name_atomic_ptr(
11329                get_proc_address,
11330                b"glDeleteFramebuffers\0",
11331                &self.glDeleteFramebuffers_p,
11332            )
11333        }
11334        #[inline]
11335        #[doc(hidden)]
11336        pub fn DeleteFramebuffers_is_loaded(&self) -> bool {
11337            !self.glDeleteFramebuffers_p.load(RELAX).is_null()
11338        }
11339        /// [glDeleteProgram](http://docs.gl/gl4/glDeleteProgram)(program)
11340        #[cfg_attr(feature = "inline", inline)]
11341        #[cfg_attr(feature = "inline_always", inline(always))]
11342        pub unsafe fn DeleteProgram(&self, program: GLuint) {
11343            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11344            {
11345                trace!("calling gl.DeleteProgram({:?});", program);
11346            }
11347            let out = call_atomic_ptr_1arg("glDeleteProgram", &self.glDeleteProgram_p, program);
11348            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11349            {
11350                self.automatic_glGetError("glDeleteProgram");
11351            }
11352            out
11353        }
11354        #[doc(hidden)]
11355        pub unsafe fn DeleteProgram_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"glDeleteProgram\0",
11362                &self.glDeleteProgram_p,
11363            )
11364        }
11365        #[inline]
11366        #[doc(hidden)]
11367        pub fn DeleteProgram_is_loaded(&self) -> bool {
11368            !self.glDeleteProgram_p.load(RELAX).is_null()
11369        }
11370        /// [glDeleteProgramPipelines](http://docs.gl/gl4/glDeleteProgramPipelines)(n, pipelines)
11371        /// * `pipelines` len: n
11372        #[cfg_attr(feature = "inline", inline)]
11373        #[cfg_attr(feature = "inline_always", inline(always))]
11374        pub unsafe fn DeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) {
11375            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11376            {
11377                trace!(
11378                    "calling gl.DeleteProgramPipelines({:?}, {:p});",
11379                    n,
11380                    pipelines
11381                );
11382            }
11383            let out = call_atomic_ptr_2arg(
11384                "glDeleteProgramPipelines",
11385                &self.glDeleteProgramPipelines_p,
11386                n,
11387                pipelines,
11388            );
11389            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11390            {
11391                self.automatic_glGetError("glDeleteProgramPipelines");
11392            }
11393            out
11394        }
11395        #[doc(hidden)]
11396        pub unsafe fn DeleteProgramPipelines_load_with_dyn(
11397            &self,
11398            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11399        ) -> bool {
11400            load_dyn_name_atomic_ptr(
11401                get_proc_address,
11402                b"glDeleteProgramPipelines\0",
11403                &self.glDeleteProgramPipelines_p,
11404            )
11405        }
11406        #[inline]
11407        #[doc(hidden)]
11408        pub fn DeleteProgramPipelines_is_loaded(&self) -> bool {
11409            !self.glDeleteProgramPipelines_p.load(RELAX).is_null()
11410        }
11411        /// [glDeleteQueries](http://docs.gl/gl4/glDeleteQueries)(n, ids)
11412        /// * `ids` len: n
11413        #[cfg_attr(feature = "inline", inline)]
11414        #[cfg_attr(feature = "inline_always", inline(always))]
11415        pub unsafe fn DeleteQueries(&self, n: GLsizei, ids: *const GLuint) {
11416            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11417            {
11418                trace!("calling gl.DeleteQueries({:?}, {:p});", n, ids);
11419            }
11420            let out = call_atomic_ptr_2arg("glDeleteQueries", &self.glDeleteQueries_p, n, ids);
11421            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11422            {
11423                self.automatic_glGetError("glDeleteQueries");
11424            }
11425            out
11426        }
11427        #[doc(hidden)]
11428        pub unsafe fn DeleteQueries_load_with_dyn(
11429            &self,
11430            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11431        ) -> bool {
11432            load_dyn_name_atomic_ptr(
11433                get_proc_address,
11434                b"glDeleteQueries\0",
11435                &self.glDeleteQueries_p,
11436            )
11437        }
11438        #[inline]
11439        #[doc(hidden)]
11440        pub fn DeleteQueries_is_loaded(&self) -> bool {
11441            !self.glDeleteQueries_p.load(RELAX).is_null()
11442        }
11443        /// [glDeleteQueriesEXT](http://docs.gl/gl4/glDeleteQueriesEXT)(n, ids)
11444        /// * `ids` len: n
11445        #[cfg_attr(feature = "inline", inline)]
11446        #[cfg_attr(feature = "inline_always", inline(always))]
11447        pub unsafe fn DeleteQueriesEXT(&self, n: GLsizei, ids: *const GLuint) {
11448            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11449            {
11450                trace!("calling gl.DeleteQueriesEXT({:?}, {:p});", n, ids);
11451            }
11452            let out =
11453                call_atomic_ptr_2arg("glDeleteQueriesEXT", &self.glDeleteQueriesEXT_p, n, ids);
11454            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11455            {
11456                self.automatic_glGetError("glDeleteQueriesEXT");
11457            }
11458            out
11459        }
11460        #[doc(hidden)]
11461        pub unsafe fn DeleteQueriesEXT_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"glDeleteQueriesEXT\0",
11468                &self.glDeleteQueriesEXT_p,
11469            )
11470        }
11471        #[inline]
11472        #[doc(hidden)]
11473        pub fn DeleteQueriesEXT_is_loaded(&self) -> bool {
11474            !self.glDeleteQueriesEXT_p.load(RELAX).is_null()
11475        }
11476        /// [glDeleteRenderbuffers](http://docs.gl/gl4/glDeleteRenderbuffers)(n, renderbuffers)
11477        /// * `renderbuffers` len: n
11478        #[cfg_attr(feature = "inline", inline)]
11479        #[cfg_attr(feature = "inline_always", inline(always))]
11480        pub unsafe fn DeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) {
11481            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11482            {
11483                trace!(
11484                    "calling gl.DeleteRenderbuffers({:?}, {:p});",
11485                    n,
11486                    renderbuffers
11487                );
11488            }
11489            let out = call_atomic_ptr_2arg(
11490                "glDeleteRenderbuffers",
11491                &self.glDeleteRenderbuffers_p,
11492                n,
11493                renderbuffers,
11494            );
11495            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11496            {
11497                self.automatic_glGetError("glDeleteRenderbuffers");
11498            }
11499            out
11500        }
11501        #[doc(hidden)]
11502        pub unsafe fn DeleteRenderbuffers_load_with_dyn(
11503            &self,
11504            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11505        ) -> bool {
11506            load_dyn_name_atomic_ptr(
11507                get_proc_address,
11508                b"glDeleteRenderbuffers\0",
11509                &self.glDeleteRenderbuffers_p,
11510            )
11511        }
11512        #[inline]
11513        #[doc(hidden)]
11514        pub fn DeleteRenderbuffers_is_loaded(&self) -> bool {
11515            !self.glDeleteRenderbuffers_p.load(RELAX).is_null()
11516        }
11517        /// [glDeleteSamplers](http://docs.gl/gl4/glDeleteSamplers)(count, samplers)
11518        /// * `samplers` len: count
11519        #[cfg_attr(feature = "inline", inline)]
11520        #[cfg_attr(feature = "inline_always", inline(always))]
11521        pub unsafe fn DeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) {
11522            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11523            {
11524                trace!("calling gl.DeleteSamplers({:?}, {:p});", count, samplers);
11525            }
11526            let out = call_atomic_ptr_2arg(
11527                "glDeleteSamplers",
11528                &self.glDeleteSamplers_p,
11529                count,
11530                samplers,
11531            );
11532            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11533            {
11534                self.automatic_glGetError("glDeleteSamplers");
11535            }
11536            out
11537        }
11538        #[doc(hidden)]
11539        pub unsafe fn DeleteSamplers_load_with_dyn(
11540            &self,
11541            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11542        ) -> bool {
11543            load_dyn_name_atomic_ptr(
11544                get_proc_address,
11545                b"glDeleteSamplers\0",
11546                &self.glDeleteSamplers_p,
11547            )
11548        }
11549        #[inline]
11550        #[doc(hidden)]
11551        pub fn DeleteSamplers_is_loaded(&self) -> bool {
11552            !self.glDeleteSamplers_p.load(RELAX).is_null()
11553        }
11554        /// [glDeleteShader](http://docs.gl/gl4/glDeleteShader)(shader)
11555        #[cfg_attr(feature = "inline", inline)]
11556        #[cfg_attr(feature = "inline_always", inline(always))]
11557        pub unsafe fn DeleteShader(&self, shader: GLuint) {
11558            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11559            {
11560                trace!("calling gl.DeleteShader({:?});", shader);
11561            }
11562            let out = call_atomic_ptr_1arg("glDeleteShader", &self.glDeleteShader_p, shader);
11563            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11564            {
11565                self.automatic_glGetError("glDeleteShader");
11566            }
11567            out
11568        }
11569        #[doc(hidden)]
11570        pub unsafe fn DeleteShader_load_with_dyn(
11571            &self,
11572            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11573        ) -> bool {
11574            load_dyn_name_atomic_ptr(
11575                get_proc_address,
11576                b"glDeleteShader\0",
11577                &self.glDeleteShader_p,
11578            )
11579        }
11580        #[inline]
11581        #[doc(hidden)]
11582        pub fn DeleteShader_is_loaded(&self) -> bool {
11583            !self.glDeleteShader_p.load(RELAX).is_null()
11584        }
11585        /// [glDeleteSync](http://docs.gl/gl4/glDeleteSync)(sync)
11586        /// * `sync` group: sync
11587        #[cfg_attr(feature = "inline", inline)]
11588        #[cfg_attr(feature = "inline_always", inline(always))]
11589        pub unsafe fn DeleteSync(&self, sync: GLsync) {
11590            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11591            {
11592                trace!("calling gl.DeleteSync({:p});", sync);
11593            }
11594            let out = call_atomic_ptr_1arg("glDeleteSync", &self.glDeleteSync_p, sync);
11595            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11596            {
11597                self.automatic_glGetError("glDeleteSync");
11598            }
11599            out
11600        }
11601        #[doc(hidden)]
11602        pub unsafe fn DeleteSync_load_with_dyn(
11603            &self,
11604            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11605        ) -> bool {
11606            load_dyn_name_atomic_ptr(get_proc_address, b"glDeleteSync\0", &self.glDeleteSync_p)
11607        }
11608        #[inline]
11609        #[doc(hidden)]
11610        pub fn DeleteSync_is_loaded(&self) -> bool {
11611            !self.glDeleteSync_p.load(RELAX).is_null()
11612        }
11613        /// [glDeleteTextures](http://docs.gl/gl4/glDeleteTextures)(n, textures)
11614        /// * `textures` group: Texture
11615        /// * `textures` len: n
11616        #[cfg_attr(feature = "inline", inline)]
11617        #[cfg_attr(feature = "inline_always", inline(always))]
11618        pub unsafe fn DeleteTextures(&self, n: GLsizei, textures: *const GLuint) {
11619            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11620            {
11621                trace!("calling gl.DeleteTextures({:?}, {:p});", n, textures);
11622            }
11623            let out =
11624                call_atomic_ptr_2arg("glDeleteTextures", &self.glDeleteTextures_p, n, textures);
11625            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11626            {
11627                self.automatic_glGetError("glDeleteTextures");
11628            }
11629            out
11630        }
11631        #[doc(hidden)]
11632        pub unsafe fn DeleteTextures_load_with_dyn(
11633            &self,
11634            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11635        ) -> bool {
11636            load_dyn_name_atomic_ptr(
11637                get_proc_address,
11638                b"glDeleteTextures\0",
11639                &self.glDeleteTextures_p,
11640            )
11641        }
11642        #[inline]
11643        #[doc(hidden)]
11644        pub fn DeleteTextures_is_loaded(&self) -> bool {
11645            !self.glDeleteTextures_p.load(RELAX).is_null()
11646        }
11647        /// [glDeleteTransformFeedbacks](http://docs.gl/gl4/glDeleteTransformFeedbacks)(n, ids)
11648        /// * `ids` len: n
11649        #[cfg_attr(feature = "inline", inline)]
11650        #[cfg_attr(feature = "inline_always", inline(always))]
11651        pub unsafe fn DeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) {
11652            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11653            {
11654                trace!("calling gl.DeleteTransformFeedbacks({:?}, {:p});", n, ids);
11655            }
11656            let out = call_atomic_ptr_2arg(
11657                "glDeleteTransformFeedbacks",
11658                &self.glDeleteTransformFeedbacks_p,
11659                n,
11660                ids,
11661            );
11662            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11663            {
11664                self.automatic_glGetError("glDeleteTransformFeedbacks");
11665            }
11666            out
11667        }
11668        #[doc(hidden)]
11669        pub unsafe fn DeleteTransformFeedbacks_load_with_dyn(
11670            &self,
11671            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11672        ) -> bool {
11673            load_dyn_name_atomic_ptr(
11674                get_proc_address,
11675                b"glDeleteTransformFeedbacks\0",
11676                &self.glDeleteTransformFeedbacks_p,
11677            )
11678        }
11679        #[inline]
11680        #[doc(hidden)]
11681        pub fn DeleteTransformFeedbacks_is_loaded(&self) -> bool {
11682            !self.glDeleteTransformFeedbacks_p.load(RELAX).is_null()
11683        }
11684        /// [glDeleteVertexArrays](http://docs.gl/gl4/glDeleteVertexArrays)(n, arrays)
11685        /// * `arrays` len: n
11686        #[cfg_attr(feature = "inline", inline)]
11687        #[cfg_attr(feature = "inline_always", inline(always))]
11688        pub unsafe fn DeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) {
11689            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11690            {
11691                trace!("calling gl.DeleteVertexArrays({:?}, {:p});", n, arrays);
11692            }
11693            let out = call_atomic_ptr_2arg(
11694                "glDeleteVertexArrays",
11695                &self.glDeleteVertexArrays_p,
11696                n,
11697                arrays,
11698            );
11699            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11700            {
11701                self.automatic_glGetError("glDeleteVertexArrays");
11702            }
11703            out
11704        }
11705        #[doc(hidden)]
11706        pub unsafe fn DeleteVertexArrays_load_with_dyn(
11707            &self,
11708            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11709        ) -> bool {
11710            load_dyn_name_atomic_ptr(
11711                get_proc_address,
11712                b"glDeleteVertexArrays\0",
11713                &self.glDeleteVertexArrays_p,
11714            )
11715        }
11716        #[inline]
11717        #[doc(hidden)]
11718        pub fn DeleteVertexArrays_is_loaded(&self) -> bool {
11719            !self.glDeleteVertexArrays_p.load(RELAX).is_null()
11720        }
11721        /// [glDeleteVertexArraysAPPLE](http://docs.gl/gl4/glDeleteVertexArraysAPPLE)(n, arrays)
11722        /// * `arrays` len: n
11723        /// * alias of: [`glDeleteVertexArrays`]
11724        #[cfg_attr(feature = "inline", inline)]
11725        #[cfg_attr(feature = "inline_always", inline(always))]
11726        pub unsafe fn DeleteVertexArraysAPPLE(&self, n: GLsizei, arrays: *const GLuint) {
11727            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11728            {
11729                trace!("calling gl.DeleteVertexArraysAPPLE({:?}, {:p});", n, arrays);
11730            }
11731            let out = call_atomic_ptr_2arg(
11732                "glDeleteVertexArraysAPPLE",
11733                &self.glDeleteVertexArraysAPPLE_p,
11734                n,
11735                arrays,
11736            );
11737            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11738            {
11739                self.automatic_glGetError("glDeleteVertexArraysAPPLE");
11740            }
11741            out
11742        }
11743        #[doc(hidden)]
11744        pub unsafe fn DeleteVertexArraysAPPLE_load_with_dyn(
11745            &self,
11746            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11747        ) -> bool {
11748            load_dyn_name_atomic_ptr(
11749                get_proc_address,
11750                b"glDeleteVertexArraysAPPLE\0",
11751                &self.glDeleteVertexArraysAPPLE_p,
11752            )
11753        }
11754        #[inline]
11755        #[doc(hidden)]
11756        pub fn DeleteVertexArraysAPPLE_is_loaded(&self) -> bool {
11757            !self.glDeleteVertexArraysAPPLE_p.load(RELAX).is_null()
11758        }
11759        /// [glDeleteVertexArraysOES](http://docs.gl/gl4/glDeleteVertexArraysOES)(n, arrays)
11760        /// * `arrays` len: n
11761        /// * alias of: [`glDeleteVertexArrays`]
11762        #[cfg_attr(feature = "inline", inline)]
11763        #[cfg_attr(feature = "inline_always", inline(always))]
11764        pub unsafe fn DeleteVertexArraysOES(&self, n: GLsizei, arrays: *const GLuint) {
11765            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11766            {
11767                trace!("calling gl.DeleteVertexArraysOES({:?}, {:p});", n, arrays);
11768            }
11769            let out = call_atomic_ptr_2arg(
11770                "glDeleteVertexArraysOES",
11771                &self.glDeleteVertexArraysOES_p,
11772                n,
11773                arrays,
11774            );
11775            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11776            {
11777                self.automatic_glGetError("glDeleteVertexArraysOES");
11778            }
11779            out
11780        }
11781        #[doc(hidden)]
11782        pub unsafe fn DeleteVertexArraysOES_load_with_dyn(
11783            &self,
11784            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11785        ) -> bool {
11786            load_dyn_name_atomic_ptr(
11787                get_proc_address,
11788                b"glDeleteVertexArraysOES\0",
11789                &self.glDeleteVertexArraysOES_p,
11790            )
11791        }
11792        #[inline]
11793        #[doc(hidden)]
11794        pub fn DeleteVertexArraysOES_is_loaded(&self) -> bool {
11795            !self.glDeleteVertexArraysOES_p.load(RELAX).is_null()
11796        }
11797        /// [glDepthFunc](http://docs.gl/gl4/glDepthFunc)(func)
11798        /// * `func` group: DepthFunction
11799        #[cfg_attr(feature = "inline", inline)]
11800        #[cfg_attr(feature = "inline_always", inline(always))]
11801        pub unsafe fn DepthFunc(&self, func: GLenum) {
11802            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11803            {
11804                trace!("calling gl.DepthFunc({:#X});", func);
11805            }
11806            let out = call_atomic_ptr_1arg("glDepthFunc", &self.glDepthFunc_p, func);
11807            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11808            {
11809                self.automatic_glGetError("glDepthFunc");
11810            }
11811            out
11812        }
11813        #[doc(hidden)]
11814        pub unsafe fn DepthFunc_load_with_dyn(
11815            &self,
11816            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11817        ) -> bool {
11818            load_dyn_name_atomic_ptr(get_proc_address, b"glDepthFunc\0", &self.glDepthFunc_p)
11819        }
11820        #[inline]
11821        #[doc(hidden)]
11822        pub fn DepthFunc_is_loaded(&self) -> bool {
11823            !self.glDepthFunc_p.load(RELAX).is_null()
11824        }
11825        /// [glDepthMask](http://docs.gl/gl4/glDepthMask)(flag)
11826        #[cfg_attr(feature = "inline", inline)]
11827        #[cfg_attr(feature = "inline_always", inline(always))]
11828        pub unsafe fn DepthMask(&self, flag: GLboolean) {
11829            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11830            {
11831                trace!("calling gl.DepthMask({:?});", flag);
11832            }
11833            let out = call_atomic_ptr_1arg("glDepthMask", &self.glDepthMask_p, flag);
11834            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11835            {
11836                self.automatic_glGetError("glDepthMask");
11837            }
11838            out
11839        }
11840        #[doc(hidden)]
11841        pub unsafe fn DepthMask_load_with_dyn(
11842            &self,
11843            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11844        ) -> bool {
11845            load_dyn_name_atomic_ptr(get_proc_address, b"glDepthMask\0", &self.glDepthMask_p)
11846        }
11847        #[inline]
11848        #[doc(hidden)]
11849        pub fn DepthMask_is_loaded(&self) -> bool {
11850            !self.glDepthMask_p.load(RELAX).is_null()
11851        }
11852        /// [glDepthRange](http://docs.gl/gl4/glDepthRange)(n, f)
11853        #[cfg_attr(feature = "inline", inline)]
11854        #[cfg_attr(feature = "inline_always", inline(always))]
11855        pub unsafe fn DepthRange(&self, n: GLdouble, f: GLdouble) {
11856            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11857            {
11858                trace!("calling gl.DepthRange({:?}, {:?});", n, f);
11859            }
11860            let out = call_atomic_ptr_2arg("glDepthRange", &self.glDepthRange_p, n, f);
11861            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11862            {
11863                self.automatic_glGetError("glDepthRange");
11864            }
11865            out
11866        }
11867        #[doc(hidden)]
11868        pub unsafe fn DepthRange_load_with_dyn(
11869            &self,
11870            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11871        ) -> bool {
11872            load_dyn_name_atomic_ptr(get_proc_address, b"glDepthRange\0", &self.glDepthRange_p)
11873        }
11874        #[inline]
11875        #[doc(hidden)]
11876        pub fn DepthRange_is_loaded(&self) -> bool {
11877            !self.glDepthRange_p.load(RELAX).is_null()
11878        }
11879        /// [glDepthRangeArrayv](http://docs.gl/gl4/glDepthRangeArrayv)(first, count, v)
11880        /// * `v` len: COMPSIZE(count)
11881        #[cfg_attr(feature = "inline", inline)]
11882        #[cfg_attr(feature = "inline_always", inline(always))]
11883        pub unsafe fn DepthRangeArrayv(&self, first: GLuint, count: GLsizei, v: *const GLdouble) {
11884            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11885            {
11886                trace!(
11887                    "calling gl.DepthRangeArrayv({:?}, {:?}, {:p});",
11888                    first,
11889                    count,
11890                    v
11891                );
11892            }
11893            let out = call_atomic_ptr_3arg(
11894                "glDepthRangeArrayv",
11895                &self.glDepthRangeArrayv_p,
11896                first,
11897                count,
11898                v,
11899            );
11900            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11901            {
11902                self.automatic_glGetError("glDepthRangeArrayv");
11903            }
11904            out
11905        }
11906        #[doc(hidden)]
11907        pub unsafe fn DepthRangeArrayv_load_with_dyn(
11908            &self,
11909            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11910        ) -> bool {
11911            load_dyn_name_atomic_ptr(
11912                get_proc_address,
11913                b"glDepthRangeArrayv\0",
11914                &self.glDepthRangeArrayv_p,
11915            )
11916        }
11917        #[inline]
11918        #[doc(hidden)]
11919        pub fn DepthRangeArrayv_is_loaded(&self) -> bool {
11920            !self.glDepthRangeArrayv_p.load(RELAX).is_null()
11921        }
11922        /// [glDepthRangeIndexed](http://docs.gl/gl4/glDepthRangeIndexed)(index, n, f)
11923        #[cfg_attr(feature = "inline", inline)]
11924        #[cfg_attr(feature = "inline_always", inline(always))]
11925        pub unsafe fn DepthRangeIndexed(&self, index: GLuint, n: GLdouble, f: GLdouble) {
11926            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11927            {
11928                trace!(
11929                    "calling gl.DepthRangeIndexed({:?}, {:?}, {:?});",
11930                    index,
11931                    n,
11932                    f
11933                );
11934            }
11935            let out = call_atomic_ptr_3arg(
11936                "glDepthRangeIndexed",
11937                &self.glDepthRangeIndexed_p,
11938                index,
11939                n,
11940                f,
11941            );
11942            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11943            {
11944                self.automatic_glGetError("glDepthRangeIndexed");
11945            }
11946            out
11947        }
11948        #[doc(hidden)]
11949        pub unsafe fn DepthRangeIndexed_load_with_dyn(
11950            &self,
11951            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11952        ) -> bool {
11953            load_dyn_name_atomic_ptr(
11954                get_proc_address,
11955                b"glDepthRangeIndexed\0",
11956                &self.glDepthRangeIndexed_p,
11957            )
11958        }
11959        #[inline]
11960        #[doc(hidden)]
11961        pub fn DepthRangeIndexed_is_loaded(&self) -> bool {
11962            !self.glDepthRangeIndexed_p.load(RELAX).is_null()
11963        }
11964        /// [glDepthRangef](http://docs.gl/gl4/glDepthRange)(n, f)
11965        #[cfg_attr(feature = "inline", inline)]
11966        #[cfg_attr(feature = "inline_always", inline(always))]
11967        pub unsafe fn DepthRangef(&self, n: GLfloat, f: GLfloat) {
11968            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11969            {
11970                trace!("calling gl.DepthRangef({:?}, {:?});", n, f);
11971            }
11972            let out = call_atomic_ptr_2arg("glDepthRangef", &self.glDepthRangef_p, n, f);
11973            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
11974            {
11975                self.automatic_glGetError("glDepthRangef");
11976            }
11977            out
11978        }
11979        #[doc(hidden)]
11980        pub unsafe fn DepthRangef_load_with_dyn(
11981            &self,
11982            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
11983        ) -> bool {
11984            load_dyn_name_atomic_ptr(get_proc_address, b"glDepthRangef\0", &self.glDepthRangef_p)
11985        }
11986        #[inline]
11987        #[doc(hidden)]
11988        pub fn DepthRangef_is_loaded(&self) -> bool {
11989            !self.glDepthRangef_p.load(RELAX).is_null()
11990        }
11991        /// [glDetachShader](http://docs.gl/gl4/glDetachShader)(program, shader)
11992        #[cfg_attr(feature = "inline", inline)]
11993        #[cfg_attr(feature = "inline_always", inline(always))]
11994        pub unsafe fn DetachShader(&self, program: GLuint, shader: GLuint) {
11995            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
11996            {
11997                trace!("calling gl.DetachShader({:?}, {:?});", program, shader);
11998            }
11999            let out =
12000                call_atomic_ptr_2arg("glDetachShader", &self.glDetachShader_p, program, shader);
12001            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12002            {
12003                self.automatic_glGetError("glDetachShader");
12004            }
12005            out
12006        }
12007        #[doc(hidden)]
12008        pub unsafe fn DetachShader_load_with_dyn(
12009            &self,
12010            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12011        ) -> bool {
12012            load_dyn_name_atomic_ptr(
12013                get_proc_address,
12014                b"glDetachShader\0",
12015                &self.glDetachShader_p,
12016            )
12017        }
12018        #[inline]
12019        #[doc(hidden)]
12020        pub fn DetachShader_is_loaded(&self) -> bool {
12021            !self.glDetachShader_p.load(RELAX).is_null()
12022        }
12023        /// [glDisable](http://docs.gl/gl4/glDisable)(cap)
12024        /// * `cap` group: EnableCap
12025        #[cfg_attr(feature = "inline", inline)]
12026        #[cfg_attr(feature = "inline_always", inline(always))]
12027        pub unsafe fn Disable(&self, cap: GLenum) {
12028            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12029            {
12030                trace!("calling gl.Disable({:#X});", cap);
12031            }
12032            let out = call_atomic_ptr_1arg("glDisable", &self.glDisable_p, cap);
12033            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12034            {
12035                self.automatic_glGetError("glDisable");
12036            }
12037            out
12038        }
12039        #[doc(hidden)]
12040        pub unsafe fn Disable_load_with_dyn(
12041            &self,
12042            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12043        ) -> bool {
12044            load_dyn_name_atomic_ptr(get_proc_address, b"glDisable\0", &self.glDisable_p)
12045        }
12046        #[inline]
12047        #[doc(hidden)]
12048        pub fn Disable_is_loaded(&self) -> bool {
12049            !self.glDisable_p.load(RELAX).is_null()
12050        }
12051        /// [glDisableIndexedEXT](http://docs.gl/gl4/glDisableIndexedEXT)(target, index)
12052        /// * `target` group: EnableCap
12053        /// * alias of: [`glDisablei`]
12054        #[cfg_attr(feature = "inline", inline)]
12055        #[cfg_attr(feature = "inline_always", inline(always))]
12056        pub unsafe fn DisableIndexedEXT(&self, target: GLenum, index: GLuint) {
12057            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12058            {
12059                trace!("calling gl.DisableIndexedEXT({:#X}, {:?});", target, index);
12060            }
12061            let out = call_atomic_ptr_2arg(
12062                "glDisableIndexedEXT",
12063                &self.glDisableIndexedEXT_p,
12064                target,
12065                index,
12066            );
12067            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12068            {
12069                self.automatic_glGetError("glDisableIndexedEXT");
12070            }
12071            out
12072        }
12073        #[doc(hidden)]
12074        pub unsafe fn DisableIndexedEXT_load_with_dyn(
12075            &self,
12076            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12077        ) -> bool {
12078            load_dyn_name_atomic_ptr(
12079                get_proc_address,
12080                b"glDisableIndexedEXT\0",
12081                &self.glDisableIndexedEXT_p,
12082            )
12083        }
12084        #[inline]
12085        #[doc(hidden)]
12086        pub fn DisableIndexedEXT_is_loaded(&self) -> bool {
12087            !self.glDisableIndexedEXT_p.load(RELAX).is_null()
12088        }
12089        /// [glDisableVertexArrayAttrib](http://docs.gl/gl4/glDisableVertexArrayAttrib)(vaobj, index)
12090        #[cfg_attr(feature = "inline", inline)]
12091        #[cfg_attr(feature = "inline_always", inline(always))]
12092        pub unsafe fn DisableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) {
12093            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12094            {
12095                trace!(
12096                    "calling gl.DisableVertexArrayAttrib({:?}, {:?});",
12097                    vaobj,
12098                    index
12099                );
12100            }
12101            let out = call_atomic_ptr_2arg(
12102                "glDisableVertexArrayAttrib",
12103                &self.glDisableVertexArrayAttrib_p,
12104                vaobj,
12105                index,
12106            );
12107            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12108            {
12109                self.automatic_glGetError("glDisableVertexArrayAttrib");
12110            }
12111            out
12112        }
12113        #[doc(hidden)]
12114        pub unsafe fn DisableVertexArrayAttrib_load_with_dyn(
12115            &self,
12116            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12117        ) -> bool {
12118            load_dyn_name_atomic_ptr(
12119                get_proc_address,
12120                b"glDisableVertexArrayAttrib\0",
12121                &self.glDisableVertexArrayAttrib_p,
12122            )
12123        }
12124        #[inline]
12125        #[doc(hidden)]
12126        pub fn DisableVertexArrayAttrib_is_loaded(&self) -> bool {
12127            !self.glDisableVertexArrayAttrib_p.load(RELAX).is_null()
12128        }
12129        /// [glDisableVertexAttribArray](http://docs.gl/gl4/glDisableVertexAttribArray)(index)
12130        #[cfg_attr(feature = "inline", inline)]
12131        #[cfg_attr(feature = "inline_always", inline(always))]
12132        pub unsafe fn DisableVertexAttribArray(&self, index: GLuint) {
12133            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12134            {
12135                trace!("calling gl.DisableVertexAttribArray({:?});", index);
12136            }
12137            let out = call_atomic_ptr_1arg(
12138                "glDisableVertexAttribArray",
12139                &self.glDisableVertexAttribArray_p,
12140                index,
12141            );
12142            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12143            {
12144                self.automatic_glGetError("glDisableVertexAttribArray");
12145            }
12146            out
12147        }
12148        #[doc(hidden)]
12149        pub unsafe fn DisableVertexAttribArray_load_with_dyn(
12150            &self,
12151            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12152        ) -> bool {
12153            load_dyn_name_atomic_ptr(
12154                get_proc_address,
12155                b"glDisableVertexAttribArray\0",
12156                &self.glDisableVertexAttribArray_p,
12157            )
12158        }
12159        #[inline]
12160        #[doc(hidden)]
12161        pub fn DisableVertexAttribArray_is_loaded(&self) -> bool {
12162            !self.glDisableVertexAttribArray_p.load(RELAX).is_null()
12163        }
12164        /// [glDisablei](http://docs.gl/gl4/glDisable)(target, index)
12165        /// * `target` group: EnableCap
12166        #[cfg_attr(feature = "inline", inline)]
12167        #[cfg_attr(feature = "inline_always", inline(always))]
12168        pub unsafe fn Disablei(&self, target: GLenum, index: GLuint) {
12169            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12170            {
12171                trace!("calling gl.Disablei({:#X}, {:?});", target, index);
12172            }
12173            let out = call_atomic_ptr_2arg("glDisablei", &self.glDisablei_p, target, index);
12174            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12175            {
12176                self.automatic_glGetError("glDisablei");
12177            }
12178            out
12179        }
12180        #[doc(hidden)]
12181        pub unsafe fn Disablei_load_with_dyn(
12182            &self,
12183            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12184        ) -> bool {
12185            load_dyn_name_atomic_ptr(get_proc_address, b"glDisablei\0", &self.glDisablei_p)
12186        }
12187        #[inline]
12188        #[doc(hidden)]
12189        pub fn Disablei_is_loaded(&self) -> bool {
12190            !self.glDisablei_p.load(RELAX).is_null()
12191        }
12192        /// [glDispatchCompute](http://docs.gl/gl4/glDispatchCompute)(num_groups_x, num_groups_y, num_groups_z)
12193        #[cfg_attr(feature = "inline", inline)]
12194        #[cfg_attr(feature = "inline_always", inline(always))]
12195        pub unsafe fn DispatchCompute(
12196            &self,
12197            num_groups_x: GLuint,
12198            num_groups_y: GLuint,
12199            num_groups_z: GLuint,
12200        ) {
12201            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12202            {
12203                trace!(
12204                    "calling gl.DispatchCompute({:?}, {:?}, {:?});",
12205                    num_groups_x,
12206                    num_groups_y,
12207                    num_groups_z
12208                );
12209            }
12210            let out = call_atomic_ptr_3arg(
12211                "glDispatchCompute",
12212                &self.glDispatchCompute_p,
12213                num_groups_x,
12214                num_groups_y,
12215                num_groups_z,
12216            );
12217            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12218            {
12219                self.automatic_glGetError("glDispatchCompute");
12220            }
12221            out
12222        }
12223        #[doc(hidden)]
12224        pub unsafe fn DispatchCompute_load_with_dyn(
12225            &self,
12226            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12227        ) -> bool {
12228            load_dyn_name_atomic_ptr(
12229                get_proc_address,
12230                b"glDispatchCompute\0",
12231                &self.glDispatchCompute_p,
12232            )
12233        }
12234        #[inline]
12235        #[doc(hidden)]
12236        pub fn DispatchCompute_is_loaded(&self) -> bool {
12237            !self.glDispatchCompute_p.load(RELAX).is_null()
12238        }
12239        /// [glDispatchComputeIndirect](http://docs.gl/gl4/glDispatchComputeIndirect)(indirect)
12240        /// * `indirect` group: BufferOffset
12241        #[cfg_attr(feature = "inline", inline)]
12242        #[cfg_attr(feature = "inline_always", inline(always))]
12243        pub unsafe fn DispatchComputeIndirect(&self, indirect: GLintptr) {
12244            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12245            {
12246                trace!("calling gl.DispatchComputeIndirect({:?});", indirect);
12247            }
12248            let out = call_atomic_ptr_1arg(
12249                "glDispatchComputeIndirect",
12250                &self.glDispatchComputeIndirect_p,
12251                indirect,
12252            );
12253            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12254            {
12255                self.automatic_glGetError("glDispatchComputeIndirect");
12256            }
12257            out
12258        }
12259        #[doc(hidden)]
12260        pub unsafe fn DispatchComputeIndirect_load_with_dyn(
12261            &self,
12262            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12263        ) -> bool {
12264            load_dyn_name_atomic_ptr(
12265                get_proc_address,
12266                b"glDispatchComputeIndirect\0",
12267                &self.glDispatchComputeIndirect_p,
12268            )
12269        }
12270        #[inline]
12271        #[doc(hidden)]
12272        pub fn DispatchComputeIndirect_is_loaded(&self) -> bool {
12273            !self.glDispatchComputeIndirect_p.load(RELAX).is_null()
12274        }
12275        /// [glDrawArrays](http://docs.gl/gl4/glDrawArrays)(mode, first, count)
12276        /// * `mode` group: PrimitiveType
12277        #[cfg_attr(feature = "inline", inline)]
12278        #[cfg_attr(feature = "inline_always", inline(always))]
12279        pub unsafe fn DrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) {
12280            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12281            {
12282                trace!(
12283                    "calling gl.DrawArrays({:#X}, {:?}, {:?});",
12284                    mode,
12285                    first,
12286                    count
12287                );
12288            }
12289            let out =
12290                call_atomic_ptr_3arg("glDrawArrays", &self.glDrawArrays_p, mode, first, count);
12291            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12292            {
12293                self.automatic_glGetError("glDrawArrays");
12294            }
12295            out
12296        }
12297        #[doc(hidden)]
12298        pub unsafe fn DrawArrays_load_with_dyn(
12299            &self,
12300            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12301        ) -> bool {
12302            load_dyn_name_atomic_ptr(get_proc_address, b"glDrawArrays\0", &self.glDrawArrays_p)
12303        }
12304        #[inline]
12305        #[doc(hidden)]
12306        pub fn DrawArrays_is_loaded(&self) -> bool {
12307            !self.glDrawArrays_p.load(RELAX).is_null()
12308        }
12309        /// [glDrawArraysIndirect](http://docs.gl/gl4/glDrawArraysIndirect)(mode, indirect)
12310        /// * `mode` group: PrimitiveType
12311        #[cfg_attr(feature = "inline", inline)]
12312        #[cfg_attr(feature = "inline_always", inline(always))]
12313        pub unsafe fn DrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) {
12314            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12315            {
12316                trace!(
12317                    "calling gl.DrawArraysIndirect({:#X}, {:p});",
12318                    mode,
12319                    indirect
12320                );
12321            }
12322            let out = call_atomic_ptr_2arg(
12323                "glDrawArraysIndirect",
12324                &self.glDrawArraysIndirect_p,
12325                mode,
12326                indirect,
12327            );
12328            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12329            {
12330                self.automatic_glGetError("glDrawArraysIndirect");
12331            }
12332            out
12333        }
12334        #[doc(hidden)]
12335        pub unsafe fn DrawArraysIndirect_load_with_dyn(
12336            &self,
12337            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12338        ) -> bool {
12339            load_dyn_name_atomic_ptr(
12340                get_proc_address,
12341                b"glDrawArraysIndirect\0",
12342                &self.glDrawArraysIndirect_p,
12343            )
12344        }
12345        #[inline]
12346        #[doc(hidden)]
12347        pub fn DrawArraysIndirect_is_loaded(&self) -> bool {
12348            !self.glDrawArraysIndirect_p.load(RELAX).is_null()
12349        }
12350        /// [glDrawArraysInstanced](http://docs.gl/gl4/glDrawArraysInstanced)(mode, first, count, instancecount)
12351        /// * `mode` group: PrimitiveType
12352        #[cfg_attr(feature = "inline", inline)]
12353        #[cfg_attr(feature = "inline_always", inline(always))]
12354        pub unsafe fn DrawArraysInstanced(
12355            &self,
12356            mode: GLenum,
12357            first: GLint,
12358            count: GLsizei,
12359            instancecount: GLsizei,
12360        ) {
12361            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12362            {
12363                trace!(
12364                    "calling gl.DrawArraysInstanced({:#X}, {:?}, {:?}, {:?});",
12365                    mode,
12366                    first,
12367                    count,
12368                    instancecount
12369                );
12370            }
12371            let out = call_atomic_ptr_4arg(
12372                "glDrawArraysInstanced",
12373                &self.glDrawArraysInstanced_p,
12374                mode,
12375                first,
12376                count,
12377                instancecount,
12378            );
12379            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12380            {
12381                self.automatic_glGetError("glDrawArraysInstanced");
12382            }
12383            out
12384        }
12385        #[doc(hidden)]
12386        pub unsafe fn DrawArraysInstanced_load_with_dyn(
12387            &self,
12388            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12389        ) -> bool {
12390            load_dyn_name_atomic_ptr(
12391                get_proc_address,
12392                b"glDrawArraysInstanced\0",
12393                &self.glDrawArraysInstanced_p,
12394            )
12395        }
12396        #[inline]
12397        #[doc(hidden)]
12398        pub fn DrawArraysInstanced_is_loaded(&self) -> bool {
12399            !self.glDrawArraysInstanced_p.load(RELAX).is_null()
12400        }
12401        /// [glDrawArraysInstancedARB](http://docs.gl/gl4/glDrawArraysInstancedARB)(mode, first, count, primcount)
12402        /// * `mode` group: PrimitiveType
12403        /// * alias of: [`glDrawArraysInstanced`]
12404        #[cfg_attr(feature = "inline", inline)]
12405        #[cfg_attr(feature = "inline_always", inline(always))]
12406        pub unsafe fn DrawArraysInstancedARB(
12407            &self,
12408            mode: GLenum,
12409            first: GLint,
12410            count: GLsizei,
12411            primcount: GLsizei,
12412        ) {
12413            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12414            {
12415                trace!(
12416                    "calling gl.DrawArraysInstancedARB({:#X}, {:?}, {:?}, {:?});",
12417                    mode,
12418                    first,
12419                    count,
12420                    primcount
12421                );
12422            }
12423            let out = call_atomic_ptr_4arg(
12424                "glDrawArraysInstancedARB",
12425                &self.glDrawArraysInstancedARB_p,
12426                mode,
12427                first,
12428                count,
12429                primcount,
12430            );
12431            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12432            {
12433                self.automatic_glGetError("glDrawArraysInstancedARB");
12434            }
12435            out
12436        }
12437        #[doc(hidden)]
12438        pub unsafe fn DrawArraysInstancedARB_load_with_dyn(
12439            &self,
12440            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12441        ) -> bool {
12442            load_dyn_name_atomic_ptr(
12443                get_proc_address,
12444                b"glDrawArraysInstancedARB\0",
12445                &self.glDrawArraysInstancedARB_p,
12446            )
12447        }
12448        #[inline]
12449        #[doc(hidden)]
12450        pub fn DrawArraysInstancedARB_is_loaded(&self) -> bool {
12451            !self.glDrawArraysInstancedARB_p.load(RELAX).is_null()
12452        }
12453        /// [glDrawArraysInstancedBaseInstance](http://docs.gl/gl4/glDrawArraysInstancedBaseInstance)(mode, first, count, instancecount, baseinstance)
12454        /// * `mode` group: PrimitiveType
12455        #[cfg_attr(feature = "inline", inline)]
12456        #[cfg_attr(feature = "inline_always", inline(always))]
12457        pub unsafe fn DrawArraysInstancedBaseInstance(
12458            &self,
12459            mode: GLenum,
12460            first: GLint,
12461            count: GLsizei,
12462            instancecount: GLsizei,
12463            baseinstance: GLuint,
12464        ) {
12465            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12466            {
12467                trace!(
12468                    "calling gl.DrawArraysInstancedBaseInstance({:#X}, {:?}, {:?}, {:?}, {:?});",
12469                    mode,
12470                    first,
12471                    count,
12472                    instancecount,
12473                    baseinstance
12474                );
12475            }
12476            let out = call_atomic_ptr_5arg(
12477                "glDrawArraysInstancedBaseInstance",
12478                &self.glDrawArraysInstancedBaseInstance_p,
12479                mode,
12480                first,
12481                count,
12482                instancecount,
12483                baseinstance,
12484            );
12485            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12486            {
12487                self.automatic_glGetError("glDrawArraysInstancedBaseInstance");
12488            }
12489            out
12490        }
12491        #[doc(hidden)]
12492        pub unsafe fn DrawArraysInstancedBaseInstance_load_with_dyn(
12493            &self,
12494            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12495        ) -> bool {
12496            load_dyn_name_atomic_ptr(
12497                get_proc_address,
12498                b"glDrawArraysInstancedBaseInstance\0",
12499                &self.glDrawArraysInstancedBaseInstance_p,
12500            )
12501        }
12502        #[inline]
12503        #[doc(hidden)]
12504        pub fn DrawArraysInstancedBaseInstance_is_loaded(&self) -> bool {
12505            !self
12506                .glDrawArraysInstancedBaseInstance_p
12507                .load(RELAX)
12508                .is_null()
12509        }
12510        /// [glDrawBuffer](http://docs.gl/gl4/glDrawBuffer)(buf)
12511        /// * `buf` group: DrawBufferMode
12512        #[cfg_attr(feature = "inline", inline)]
12513        #[cfg_attr(feature = "inline_always", inline(always))]
12514        pub unsafe fn DrawBuffer(&self, buf: GLenum) {
12515            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12516            {
12517                trace!("calling gl.DrawBuffer({:#X});", buf);
12518            }
12519            let out = call_atomic_ptr_1arg("glDrawBuffer", &self.glDrawBuffer_p, buf);
12520            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12521            {
12522                self.automatic_glGetError("glDrawBuffer");
12523            }
12524            out
12525        }
12526        #[doc(hidden)]
12527        pub unsafe fn DrawBuffer_load_with_dyn(
12528            &self,
12529            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12530        ) -> bool {
12531            load_dyn_name_atomic_ptr(get_proc_address, b"glDrawBuffer\0", &self.glDrawBuffer_p)
12532        }
12533        #[inline]
12534        #[doc(hidden)]
12535        pub fn DrawBuffer_is_loaded(&self) -> bool {
12536            !self.glDrawBuffer_p.load(RELAX).is_null()
12537        }
12538        /// [glDrawBuffers](http://docs.gl/gl4/glDrawBuffers)(n, bufs)
12539        /// * `bufs` group: DrawBufferMode
12540        /// * `bufs` len: n
12541        #[cfg_attr(feature = "inline", inline)]
12542        #[cfg_attr(feature = "inline_always", inline(always))]
12543        pub unsafe fn DrawBuffers(&self, n: GLsizei, bufs: *const GLenum) {
12544            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12545            {
12546                trace!("calling gl.DrawBuffers({:?}, {:p});", n, bufs);
12547            }
12548            let out = call_atomic_ptr_2arg("glDrawBuffers", &self.glDrawBuffers_p, n, bufs);
12549            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12550            {
12551                self.automatic_glGetError("glDrawBuffers");
12552            }
12553            out
12554        }
12555        #[doc(hidden)]
12556        pub unsafe fn DrawBuffers_load_with_dyn(
12557            &self,
12558            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12559        ) -> bool {
12560            load_dyn_name_atomic_ptr(get_proc_address, b"glDrawBuffers\0", &self.glDrawBuffers_p)
12561        }
12562        #[inline]
12563        #[doc(hidden)]
12564        pub fn DrawBuffers_is_loaded(&self) -> bool {
12565            !self.glDrawBuffers_p.load(RELAX).is_null()
12566        }
12567        /// [glDrawElements](http://docs.gl/gl4/glDrawElements)(mode, count, type_, indices)
12568        /// * `mode` group: PrimitiveType
12569        /// * `type_` group: DrawElementsType
12570        /// * `indices` len: COMPSIZE(count,type)
12571        #[cfg_attr(feature = "inline", inline)]
12572        #[cfg_attr(feature = "inline_always", inline(always))]
12573        pub unsafe fn DrawElements(
12574            &self,
12575            mode: GLenum,
12576            count: GLsizei,
12577            type_: GLenum,
12578            indices: *const c_void,
12579        ) {
12580            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12581            {
12582                trace!(
12583                    "calling gl.DrawElements({:#X}, {:?}, {:#X}, {:p});",
12584                    mode,
12585                    count,
12586                    type_,
12587                    indices
12588                );
12589            }
12590            let out = call_atomic_ptr_4arg(
12591                "glDrawElements",
12592                &self.glDrawElements_p,
12593                mode,
12594                count,
12595                type_,
12596                indices,
12597            );
12598            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12599            {
12600                self.automatic_glGetError("glDrawElements");
12601            }
12602            out
12603        }
12604        #[doc(hidden)]
12605        pub unsafe fn DrawElements_load_with_dyn(
12606            &self,
12607            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12608        ) -> bool {
12609            load_dyn_name_atomic_ptr(
12610                get_proc_address,
12611                b"glDrawElements\0",
12612                &self.glDrawElements_p,
12613            )
12614        }
12615        #[inline]
12616        #[doc(hidden)]
12617        pub fn DrawElements_is_loaded(&self) -> bool {
12618            !self.glDrawElements_p.load(RELAX).is_null()
12619        }
12620        /// [glDrawElementsBaseVertex](http://docs.gl/gl4/glDrawElementsBaseVertex)(mode, count, type_, indices, basevertex)
12621        /// * `mode` group: PrimitiveType
12622        /// * `type_` group: DrawElementsType
12623        /// * `indices` len: COMPSIZE(count,type)
12624        #[cfg_attr(feature = "inline", inline)]
12625        #[cfg_attr(feature = "inline_always", inline(always))]
12626        pub unsafe fn DrawElementsBaseVertex(
12627            &self,
12628            mode: GLenum,
12629            count: GLsizei,
12630            type_: GLenum,
12631            indices: *const c_void,
12632            basevertex: GLint,
12633        ) {
12634            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12635            {
12636                trace!(
12637                    "calling gl.DrawElementsBaseVertex({:#X}, {:?}, {:#X}, {:p}, {:?});",
12638                    mode,
12639                    count,
12640                    type_,
12641                    indices,
12642                    basevertex
12643                );
12644            }
12645            let out = call_atomic_ptr_5arg(
12646                "glDrawElementsBaseVertex",
12647                &self.glDrawElementsBaseVertex_p,
12648                mode,
12649                count,
12650                type_,
12651                indices,
12652                basevertex,
12653            );
12654            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12655            {
12656                self.automatic_glGetError("glDrawElementsBaseVertex");
12657            }
12658            out
12659        }
12660        #[doc(hidden)]
12661        pub unsafe fn DrawElementsBaseVertex_load_with_dyn(
12662            &self,
12663            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12664        ) -> bool {
12665            load_dyn_name_atomic_ptr(
12666                get_proc_address,
12667                b"glDrawElementsBaseVertex\0",
12668                &self.glDrawElementsBaseVertex_p,
12669            )
12670        }
12671        #[inline]
12672        #[doc(hidden)]
12673        pub fn DrawElementsBaseVertex_is_loaded(&self) -> bool {
12674            !self.glDrawElementsBaseVertex_p.load(RELAX).is_null()
12675        }
12676        /// [glDrawElementsIndirect](http://docs.gl/gl4/glDrawElementsIndirect)(mode, type_, indirect)
12677        /// * `mode` group: PrimitiveType
12678        /// * `type_` group: DrawElementsType
12679        #[cfg_attr(feature = "inline", inline)]
12680        #[cfg_attr(feature = "inline_always", inline(always))]
12681        pub unsafe fn DrawElementsIndirect(
12682            &self,
12683            mode: GLenum,
12684            type_: GLenum,
12685            indirect: *const c_void,
12686        ) {
12687            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12688            {
12689                trace!(
12690                    "calling gl.DrawElementsIndirect({:#X}, {:#X}, {:p});",
12691                    mode,
12692                    type_,
12693                    indirect
12694                );
12695            }
12696            let out = call_atomic_ptr_3arg(
12697                "glDrawElementsIndirect",
12698                &self.glDrawElementsIndirect_p,
12699                mode,
12700                type_,
12701                indirect,
12702            );
12703            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12704            {
12705                self.automatic_glGetError("glDrawElementsIndirect");
12706            }
12707            out
12708        }
12709        #[doc(hidden)]
12710        pub unsafe fn DrawElementsIndirect_load_with_dyn(
12711            &self,
12712            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12713        ) -> bool {
12714            load_dyn_name_atomic_ptr(
12715                get_proc_address,
12716                b"glDrawElementsIndirect\0",
12717                &self.glDrawElementsIndirect_p,
12718            )
12719        }
12720        #[inline]
12721        #[doc(hidden)]
12722        pub fn DrawElementsIndirect_is_loaded(&self) -> bool {
12723            !self.glDrawElementsIndirect_p.load(RELAX).is_null()
12724        }
12725        /// [glDrawElementsInstanced](http://docs.gl/gl4/glDrawElementsInstanced)(mode, count, type_, indices, instancecount)
12726        /// * `mode` group: PrimitiveType
12727        /// * `type_` group: DrawElementsType
12728        /// * `indices` len: COMPSIZE(count,type)
12729        #[cfg_attr(feature = "inline", inline)]
12730        #[cfg_attr(feature = "inline_always", inline(always))]
12731        pub unsafe fn DrawElementsInstanced(
12732            &self,
12733            mode: GLenum,
12734            count: GLsizei,
12735            type_: GLenum,
12736            indices: *const c_void,
12737            instancecount: GLsizei,
12738        ) {
12739            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12740            {
12741                trace!(
12742                    "calling gl.DrawElementsInstanced({:#X}, {:?}, {:#X}, {:p}, {:?});",
12743                    mode,
12744                    count,
12745                    type_,
12746                    indices,
12747                    instancecount
12748                );
12749            }
12750            let out = call_atomic_ptr_5arg(
12751                "glDrawElementsInstanced",
12752                &self.glDrawElementsInstanced_p,
12753                mode,
12754                count,
12755                type_,
12756                indices,
12757                instancecount,
12758            );
12759            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12760            {
12761                self.automatic_glGetError("glDrawElementsInstanced");
12762            }
12763            out
12764        }
12765        #[doc(hidden)]
12766        pub unsafe fn DrawElementsInstanced_load_with_dyn(
12767            &self,
12768            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12769        ) -> bool {
12770            load_dyn_name_atomic_ptr(
12771                get_proc_address,
12772                b"glDrawElementsInstanced\0",
12773                &self.glDrawElementsInstanced_p,
12774            )
12775        }
12776        #[inline]
12777        #[doc(hidden)]
12778        pub fn DrawElementsInstanced_is_loaded(&self) -> bool {
12779            !self.glDrawElementsInstanced_p.load(RELAX).is_null()
12780        }
12781        /// [glDrawElementsInstancedARB](http://docs.gl/gl4/glDrawElementsInstancedARB)(mode, count, type_, indices, primcount)
12782        /// * `mode` group: PrimitiveType
12783        /// * `type_` group: DrawElementsType
12784        /// * `indices` len: COMPSIZE(count,type)
12785        /// * alias of: [`glDrawElementsInstanced`]
12786        #[cfg_attr(feature = "inline", inline)]
12787        #[cfg_attr(feature = "inline_always", inline(always))]
12788        pub unsafe fn DrawElementsInstancedARB(
12789            &self,
12790            mode: GLenum,
12791            count: GLsizei,
12792            type_: GLenum,
12793            indices: *const c_void,
12794            primcount: GLsizei,
12795        ) {
12796            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12797            {
12798                trace!(
12799                    "calling gl.DrawElementsInstancedARB({:#X}, {:?}, {:#X}, {:p}, {:?});",
12800                    mode,
12801                    count,
12802                    type_,
12803                    indices,
12804                    primcount
12805                );
12806            }
12807            let out = call_atomic_ptr_5arg(
12808                "glDrawElementsInstancedARB",
12809                &self.glDrawElementsInstancedARB_p,
12810                mode,
12811                count,
12812                type_,
12813                indices,
12814                primcount,
12815            );
12816            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12817            {
12818                self.automatic_glGetError("glDrawElementsInstancedARB");
12819            }
12820            out
12821        }
12822        #[doc(hidden)]
12823        pub unsafe fn DrawElementsInstancedARB_load_with_dyn(
12824            &self,
12825            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12826        ) -> bool {
12827            load_dyn_name_atomic_ptr(
12828                get_proc_address,
12829                b"glDrawElementsInstancedARB\0",
12830                &self.glDrawElementsInstancedARB_p,
12831            )
12832        }
12833        #[inline]
12834        #[doc(hidden)]
12835        pub fn DrawElementsInstancedARB_is_loaded(&self) -> bool {
12836            !self.glDrawElementsInstancedARB_p.load(RELAX).is_null()
12837        }
12838        /// [glDrawElementsInstancedBaseInstance](http://docs.gl/gl4/glDrawElementsInstancedBaseInstance)(mode, count, type_, indices, instancecount, baseinstance)
12839        /// * `mode` group: PrimitiveType
12840        /// * `type_` group: PrimitiveType
12841        /// * `indices` len: count
12842        #[cfg_attr(feature = "inline", inline)]
12843        #[cfg_attr(feature = "inline_always", inline(always))]
12844        pub unsafe fn DrawElementsInstancedBaseInstance(
12845            &self,
12846            mode: GLenum,
12847            count: GLsizei,
12848            type_: GLenum,
12849            indices: *const c_void,
12850            instancecount: GLsizei,
12851            baseinstance: GLuint,
12852        ) {
12853            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12854            {
12855                trace!("calling gl.DrawElementsInstancedBaseInstance({:#X}, {:?}, {:#X}, {:p}, {:?}, {:?});", mode, count, type_, indices, instancecount, baseinstance);
12856            }
12857            let out = call_atomic_ptr_6arg(
12858                "glDrawElementsInstancedBaseInstance",
12859                &self.glDrawElementsInstancedBaseInstance_p,
12860                mode,
12861                count,
12862                type_,
12863                indices,
12864                instancecount,
12865                baseinstance,
12866            );
12867            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12868            {
12869                self.automatic_glGetError("glDrawElementsInstancedBaseInstance");
12870            }
12871            out
12872        }
12873        #[doc(hidden)]
12874        pub unsafe fn DrawElementsInstancedBaseInstance_load_with_dyn(
12875            &self,
12876            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12877        ) -> bool {
12878            load_dyn_name_atomic_ptr(
12879                get_proc_address,
12880                b"glDrawElementsInstancedBaseInstance\0",
12881                &self.glDrawElementsInstancedBaseInstance_p,
12882            )
12883        }
12884        #[inline]
12885        #[doc(hidden)]
12886        pub fn DrawElementsInstancedBaseInstance_is_loaded(&self) -> bool {
12887            !self
12888                .glDrawElementsInstancedBaseInstance_p
12889                .load(RELAX)
12890                .is_null()
12891        }
12892        /// [glDrawElementsInstancedBaseVertex](http://docs.gl/gl4/glDrawElementsInstancedBaseVertex)(mode, count, type_, indices, instancecount, basevertex)
12893        /// * `mode` group: PrimitiveType
12894        /// * `type_` group: DrawElementsType
12895        /// * `indices` len: COMPSIZE(count,type)
12896        #[cfg_attr(feature = "inline", inline)]
12897        #[cfg_attr(feature = "inline_always", inline(always))]
12898        pub unsafe fn DrawElementsInstancedBaseVertex(
12899            &self,
12900            mode: GLenum,
12901            count: GLsizei,
12902            type_: GLenum,
12903            indices: *const c_void,
12904            instancecount: GLsizei,
12905            basevertex: GLint,
12906        ) {
12907            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12908            {
12909                trace!("calling gl.DrawElementsInstancedBaseVertex({:#X}, {:?}, {:#X}, {:p}, {:?}, {:?});", mode, count, type_, indices, instancecount, basevertex);
12910            }
12911            let out = call_atomic_ptr_6arg(
12912                "glDrawElementsInstancedBaseVertex",
12913                &self.glDrawElementsInstancedBaseVertex_p,
12914                mode,
12915                count,
12916                type_,
12917                indices,
12918                instancecount,
12919                basevertex,
12920            );
12921            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12922            {
12923                self.automatic_glGetError("glDrawElementsInstancedBaseVertex");
12924            }
12925            out
12926        }
12927        #[doc(hidden)]
12928        pub unsafe fn DrawElementsInstancedBaseVertex_load_with_dyn(
12929            &self,
12930            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12931        ) -> bool {
12932            load_dyn_name_atomic_ptr(
12933                get_proc_address,
12934                b"glDrawElementsInstancedBaseVertex\0",
12935                &self.glDrawElementsInstancedBaseVertex_p,
12936            )
12937        }
12938        #[inline]
12939        #[doc(hidden)]
12940        pub fn DrawElementsInstancedBaseVertex_is_loaded(&self) -> bool {
12941            !self
12942                .glDrawElementsInstancedBaseVertex_p
12943                .load(RELAX)
12944                .is_null()
12945        }
12946        /// [glDrawElementsInstancedBaseVertexBaseInstance](http://docs.gl/gl4/glDrawElementsInstancedBaseVertexBaseInstance)(mode, count, type_, indices, instancecount, basevertex, baseinstance)
12947        /// * `mode` group: PrimitiveType
12948        /// * `type_` group: DrawElementsType
12949        /// * `indices` len: count
12950        #[cfg_attr(feature = "inline", inline)]
12951        #[cfg_attr(feature = "inline_always", inline(always))]
12952        pub unsafe fn DrawElementsInstancedBaseVertexBaseInstance(
12953            &self,
12954            mode: GLenum,
12955            count: GLsizei,
12956            type_: GLenum,
12957            indices: *const c_void,
12958            instancecount: GLsizei,
12959            basevertex: GLint,
12960            baseinstance: GLuint,
12961        ) {
12962            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
12963            {
12964                trace!("calling gl.DrawElementsInstancedBaseVertexBaseInstance({:#X}, {:?}, {:#X}, {:p}, {:?}, {:?}, {:?});", mode, count, type_, indices, instancecount, basevertex, baseinstance);
12965            }
12966            let out = call_atomic_ptr_7arg(
12967                "glDrawElementsInstancedBaseVertexBaseInstance",
12968                &self.glDrawElementsInstancedBaseVertexBaseInstance_p,
12969                mode,
12970                count,
12971                type_,
12972                indices,
12973                instancecount,
12974                basevertex,
12975                baseinstance,
12976            );
12977            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
12978            {
12979                self.automatic_glGetError("glDrawElementsInstancedBaseVertexBaseInstance");
12980            }
12981            out
12982        }
12983        #[doc(hidden)]
12984        pub unsafe fn DrawElementsInstancedBaseVertexBaseInstance_load_with_dyn(
12985            &self,
12986            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
12987        ) -> bool {
12988            load_dyn_name_atomic_ptr(
12989                get_proc_address,
12990                b"glDrawElementsInstancedBaseVertexBaseInstance\0",
12991                &self.glDrawElementsInstancedBaseVertexBaseInstance_p,
12992            )
12993        }
12994        #[inline]
12995        #[doc(hidden)]
12996        pub fn DrawElementsInstancedBaseVertexBaseInstance_is_loaded(&self) -> bool {
12997            !self
12998                .glDrawElementsInstancedBaseVertexBaseInstance_p
12999                .load(RELAX)
13000                .is_null()
13001        }
13002        /// [glDrawRangeElements](http://docs.gl/gl4/glDrawRangeElements)(mode, start, end, count, type_, indices)
13003        /// * `mode` group: PrimitiveType
13004        /// * `type_` group: DrawElementsType
13005        /// * `indices` len: COMPSIZE(count,type)
13006        #[cfg_attr(feature = "inline", inline)]
13007        #[cfg_attr(feature = "inline_always", inline(always))]
13008        pub unsafe fn DrawRangeElements(
13009            &self,
13010            mode: GLenum,
13011            start: GLuint,
13012            end: GLuint,
13013            count: GLsizei,
13014            type_: GLenum,
13015            indices: *const c_void,
13016        ) {
13017            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13018            {
13019                trace!(
13020                    "calling gl.DrawRangeElements({:#X}, {:?}, {:?}, {:?}, {:#X}, {:p});",
13021                    mode,
13022                    start,
13023                    end,
13024                    count,
13025                    type_,
13026                    indices
13027                );
13028            }
13029            let out = call_atomic_ptr_6arg(
13030                "glDrawRangeElements",
13031                &self.glDrawRangeElements_p,
13032                mode,
13033                start,
13034                end,
13035                count,
13036                type_,
13037                indices,
13038            );
13039            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13040            {
13041                self.automatic_glGetError("glDrawRangeElements");
13042            }
13043            out
13044        }
13045        #[doc(hidden)]
13046        pub unsafe fn DrawRangeElements_load_with_dyn(
13047            &self,
13048            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13049        ) -> bool {
13050            load_dyn_name_atomic_ptr(
13051                get_proc_address,
13052                b"glDrawRangeElements\0",
13053                &self.glDrawRangeElements_p,
13054            )
13055        }
13056        #[inline]
13057        #[doc(hidden)]
13058        pub fn DrawRangeElements_is_loaded(&self) -> bool {
13059            !self.glDrawRangeElements_p.load(RELAX).is_null()
13060        }
13061        /// [glDrawRangeElementsBaseVertex](http://docs.gl/gl4/glDrawRangeElementsBaseVertex)(mode, start, end, count, type_, indices, basevertex)
13062        /// * `mode` group: PrimitiveType
13063        /// * `type_` group: DrawElementsType
13064        /// * `indices` len: COMPSIZE(count,type)
13065        #[cfg_attr(feature = "inline", inline)]
13066        #[cfg_attr(feature = "inline_always", inline(always))]
13067        pub unsafe fn DrawRangeElementsBaseVertex(
13068            &self,
13069            mode: GLenum,
13070            start: GLuint,
13071            end: GLuint,
13072            count: GLsizei,
13073            type_: GLenum,
13074            indices: *const c_void,
13075            basevertex: GLint,
13076        ) {
13077            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13078            {
13079                trace!("calling gl.DrawRangeElementsBaseVertex({:#X}, {:?}, {:?}, {:?}, {:#X}, {:p}, {:?});", mode, start, end, count, type_, indices, basevertex);
13080            }
13081            let out = call_atomic_ptr_7arg(
13082                "glDrawRangeElementsBaseVertex",
13083                &self.glDrawRangeElementsBaseVertex_p,
13084                mode,
13085                start,
13086                end,
13087                count,
13088                type_,
13089                indices,
13090                basevertex,
13091            );
13092            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13093            {
13094                self.automatic_glGetError("glDrawRangeElementsBaseVertex");
13095            }
13096            out
13097        }
13098        #[doc(hidden)]
13099        pub unsafe fn DrawRangeElementsBaseVertex_load_with_dyn(
13100            &self,
13101            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13102        ) -> bool {
13103            load_dyn_name_atomic_ptr(
13104                get_proc_address,
13105                b"glDrawRangeElementsBaseVertex\0",
13106                &self.glDrawRangeElementsBaseVertex_p,
13107            )
13108        }
13109        #[inline]
13110        #[doc(hidden)]
13111        pub fn DrawRangeElementsBaseVertex_is_loaded(&self) -> bool {
13112            !self.glDrawRangeElementsBaseVertex_p.load(RELAX).is_null()
13113        }
13114        /// [glDrawTransformFeedback](http://docs.gl/gl4/glDrawTransformFeedback)(mode, id)
13115        /// * `mode` group: PrimitiveType
13116        #[cfg_attr(feature = "inline", inline)]
13117        #[cfg_attr(feature = "inline_always", inline(always))]
13118        pub unsafe fn DrawTransformFeedback(&self, mode: GLenum, id: GLuint) {
13119            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13120            {
13121                trace!("calling gl.DrawTransformFeedback({:#X}, {:?});", mode, id);
13122            }
13123            let out = call_atomic_ptr_2arg(
13124                "glDrawTransformFeedback",
13125                &self.glDrawTransformFeedback_p,
13126                mode,
13127                id,
13128            );
13129            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13130            {
13131                self.automatic_glGetError("glDrawTransformFeedback");
13132            }
13133            out
13134        }
13135        #[doc(hidden)]
13136        pub unsafe fn DrawTransformFeedback_load_with_dyn(
13137            &self,
13138            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13139        ) -> bool {
13140            load_dyn_name_atomic_ptr(
13141                get_proc_address,
13142                b"glDrawTransformFeedback\0",
13143                &self.glDrawTransformFeedback_p,
13144            )
13145        }
13146        #[inline]
13147        #[doc(hidden)]
13148        pub fn DrawTransformFeedback_is_loaded(&self) -> bool {
13149            !self.glDrawTransformFeedback_p.load(RELAX).is_null()
13150        }
13151        /// [glDrawTransformFeedbackInstanced](http://docs.gl/gl4/glDrawTransformFeedbackInstanced)(mode, id, instancecount)
13152        /// * `mode` group: PrimitiveType
13153        #[cfg_attr(feature = "inline", inline)]
13154        #[cfg_attr(feature = "inline_always", inline(always))]
13155        pub unsafe fn DrawTransformFeedbackInstanced(
13156            &self,
13157            mode: GLenum,
13158            id: GLuint,
13159            instancecount: GLsizei,
13160        ) {
13161            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13162            {
13163                trace!(
13164                    "calling gl.DrawTransformFeedbackInstanced({:#X}, {:?}, {:?});",
13165                    mode,
13166                    id,
13167                    instancecount
13168                );
13169            }
13170            let out = call_atomic_ptr_3arg(
13171                "glDrawTransformFeedbackInstanced",
13172                &self.glDrawTransformFeedbackInstanced_p,
13173                mode,
13174                id,
13175                instancecount,
13176            );
13177            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13178            {
13179                self.automatic_glGetError("glDrawTransformFeedbackInstanced");
13180            }
13181            out
13182        }
13183        #[doc(hidden)]
13184        pub unsafe fn DrawTransformFeedbackInstanced_load_with_dyn(
13185            &self,
13186            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13187        ) -> bool {
13188            load_dyn_name_atomic_ptr(
13189                get_proc_address,
13190                b"glDrawTransformFeedbackInstanced\0",
13191                &self.glDrawTransformFeedbackInstanced_p,
13192            )
13193        }
13194        #[inline]
13195        #[doc(hidden)]
13196        pub fn DrawTransformFeedbackInstanced_is_loaded(&self) -> bool {
13197            !self
13198                .glDrawTransformFeedbackInstanced_p
13199                .load(RELAX)
13200                .is_null()
13201        }
13202        /// [glDrawTransformFeedbackStream](http://docs.gl/gl4/glDrawTransformFeedbackStream)(mode, id, stream)
13203        /// * `mode` group: PrimitiveType
13204        #[cfg_attr(feature = "inline", inline)]
13205        #[cfg_attr(feature = "inline_always", inline(always))]
13206        pub unsafe fn DrawTransformFeedbackStream(&self, mode: GLenum, id: GLuint, stream: GLuint) {
13207            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13208            {
13209                trace!(
13210                    "calling gl.DrawTransformFeedbackStream({:#X}, {:?}, {:?});",
13211                    mode,
13212                    id,
13213                    stream
13214                );
13215            }
13216            let out = call_atomic_ptr_3arg(
13217                "glDrawTransformFeedbackStream",
13218                &self.glDrawTransformFeedbackStream_p,
13219                mode,
13220                id,
13221                stream,
13222            );
13223            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13224            {
13225                self.automatic_glGetError("glDrawTransformFeedbackStream");
13226            }
13227            out
13228        }
13229        #[doc(hidden)]
13230        pub unsafe fn DrawTransformFeedbackStream_load_with_dyn(
13231            &self,
13232            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13233        ) -> bool {
13234            load_dyn_name_atomic_ptr(
13235                get_proc_address,
13236                b"glDrawTransformFeedbackStream\0",
13237                &self.glDrawTransformFeedbackStream_p,
13238            )
13239        }
13240        #[inline]
13241        #[doc(hidden)]
13242        pub fn DrawTransformFeedbackStream_is_loaded(&self) -> bool {
13243            !self.glDrawTransformFeedbackStream_p.load(RELAX).is_null()
13244        }
13245        /// [glDrawTransformFeedbackStreamInstanced](http://docs.gl/gl4/glDrawTransformFeedbackStreamInstanced)(mode, id, stream, instancecount)
13246        /// * `mode` group: PrimitiveType
13247        #[cfg_attr(feature = "inline", inline)]
13248        #[cfg_attr(feature = "inline_always", inline(always))]
13249        pub unsafe fn DrawTransformFeedbackStreamInstanced(
13250            &self,
13251            mode: GLenum,
13252            id: GLuint,
13253            stream: GLuint,
13254            instancecount: GLsizei,
13255        ) {
13256            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13257            {
13258                trace!(
13259                    "calling gl.DrawTransformFeedbackStreamInstanced({:#X}, {:?}, {:?}, {:?});",
13260                    mode,
13261                    id,
13262                    stream,
13263                    instancecount
13264                );
13265            }
13266            let out = call_atomic_ptr_4arg(
13267                "glDrawTransformFeedbackStreamInstanced",
13268                &self.glDrawTransformFeedbackStreamInstanced_p,
13269                mode,
13270                id,
13271                stream,
13272                instancecount,
13273            );
13274            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13275            {
13276                self.automatic_glGetError("glDrawTransformFeedbackStreamInstanced");
13277            }
13278            out
13279        }
13280        #[doc(hidden)]
13281        pub unsafe fn DrawTransformFeedbackStreamInstanced_load_with_dyn(
13282            &self,
13283            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13284        ) -> bool {
13285            load_dyn_name_atomic_ptr(
13286                get_proc_address,
13287                b"glDrawTransformFeedbackStreamInstanced\0",
13288                &self.glDrawTransformFeedbackStreamInstanced_p,
13289            )
13290        }
13291        #[inline]
13292        #[doc(hidden)]
13293        pub fn DrawTransformFeedbackStreamInstanced_is_loaded(&self) -> bool {
13294            !self
13295                .glDrawTransformFeedbackStreamInstanced_p
13296                .load(RELAX)
13297                .is_null()
13298        }
13299        /// [glEnable](http://docs.gl/gl4/glEnable)(cap)
13300        /// * `cap` group: EnableCap
13301        #[cfg_attr(feature = "inline", inline)]
13302        #[cfg_attr(feature = "inline_always", inline(always))]
13303        pub unsafe fn Enable(&self, cap: GLenum) {
13304            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13305            {
13306                trace!("calling gl.Enable({:#X});", cap);
13307            }
13308            let out = call_atomic_ptr_1arg("glEnable", &self.glEnable_p, cap);
13309            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13310            {
13311                self.automatic_glGetError("glEnable");
13312            }
13313            out
13314        }
13315        #[doc(hidden)]
13316        pub unsafe fn Enable_load_with_dyn(
13317            &self,
13318            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13319        ) -> bool {
13320            load_dyn_name_atomic_ptr(get_proc_address, b"glEnable\0", &self.glEnable_p)
13321        }
13322        #[inline]
13323        #[doc(hidden)]
13324        pub fn Enable_is_loaded(&self) -> bool {
13325            !self.glEnable_p.load(RELAX).is_null()
13326        }
13327        /// [glEnableIndexedEXT](http://docs.gl/gl4/glEnableIndexedEXT)(target, index)
13328        /// * `target` group: EnableCap
13329        /// * alias of: [`glEnablei`]
13330        #[cfg_attr(feature = "inline", inline)]
13331        #[cfg_attr(feature = "inline_always", inline(always))]
13332        pub unsafe fn EnableIndexedEXT(&self, target: GLenum, index: GLuint) {
13333            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13334            {
13335                trace!("calling gl.EnableIndexedEXT({:#X}, {:?});", target, index);
13336            }
13337            let out = call_atomic_ptr_2arg(
13338                "glEnableIndexedEXT",
13339                &self.glEnableIndexedEXT_p,
13340                target,
13341                index,
13342            );
13343            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13344            {
13345                self.automatic_glGetError("glEnableIndexedEXT");
13346            }
13347            out
13348        }
13349        #[doc(hidden)]
13350        pub unsafe fn EnableIndexedEXT_load_with_dyn(
13351            &self,
13352            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13353        ) -> bool {
13354            load_dyn_name_atomic_ptr(
13355                get_proc_address,
13356                b"glEnableIndexedEXT\0",
13357                &self.glEnableIndexedEXT_p,
13358            )
13359        }
13360        #[inline]
13361        #[doc(hidden)]
13362        pub fn EnableIndexedEXT_is_loaded(&self) -> bool {
13363            !self.glEnableIndexedEXT_p.load(RELAX).is_null()
13364        }
13365        /// [glEnableVertexArrayAttrib](http://docs.gl/gl4/glEnableVertexArrayAttrib)(vaobj, index)
13366        #[cfg_attr(feature = "inline", inline)]
13367        #[cfg_attr(feature = "inline_always", inline(always))]
13368        pub unsafe fn EnableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) {
13369            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13370            {
13371                trace!(
13372                    "calling gl.EnableVertexArrayAttrib({:?}, {:?});",
13373                    vaobj,
13374                    index
13375                );
13376            }
13377            let out = call_atomic_ptr_2arg(
13378                "glEnableVertexArrayAttrib",
13379                &self.glEnableVertexArrayAttrib_p,
13380                vaobj,
13381                index,
13382            );
13383            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13384            {
13385                self.automatic_glGetError("glEnableVertexArrayAttrib");
13386            }
13387            out
13388        }
13389        #[doc(hidden)]
13390        pub unsafe fn EnableVertexArrayAttrib_load_with_dyn(
13391            &self,
13392            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13393        ) -> bool {
13394            load_dyn_name_atomic_ptr(
13395                get_proc_address,
13396                b"glEnableVertexArrayAttrib\0",
13397                &self.glEnableVertexArrayAttrib_p,
13398            )
13399        }
13400        #[inline]
13401        #[doc(hidden)]
13402        pub fn EnableVertexArrayAttrib_is_loaded(&self) -> bool {
13403            !self.glEnableVertexArrayAttrib_p.load(RELAX).is_null()
13404        }
13405        /// [glEnableVertexAttribArray](http://docs.gl/gl4/glEnableVertexAttribArray)(index)
13406        #[cfg_attr(feature = "inline", inline)]
13407        #[cfg_attr(feature = "inline_always", inline(always))]
13408        pub unsafe fn EnableVertexAttribArray(&self, index: GLuint) {
13409            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13410            {
13411                trace!("calling gl.EnableVertexAttribArray({:?});", index);
13412            }
13413            let out = call_atomic_ptr_1arg(
13414                "glEnableVertexAttribArray",
13415                &self.glEnableVertexAttribArray_p,
13416                index,
13417            );
13418            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13419            {
13420                self.automatic_glGetError("glEnableVertexAttribArray");
13421            }
13422            out
13423        }
13424        #[doc(hidden)]
13425        pub unsafe fn EnableVertexAttribArray_load_with_dyn(
13426            &self,
13427            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13428        ) -> bool {
13429            load_dyn_name_atomic_ptr(
13430                get_proc_address,
13431                b"glEnableVertexAttribArray\0",
13432                &self.glEnableVertexAttribArray_p,
13433            )
13434        }
13435        #[inline]
13436        #[doc(hidden)]
13437        pub fn EnableVertexAttribArray_is_loaded(&self) -> bool {
13438            !self.glEnableVertexAttribArray_p.load(RELAX).is_null()
13439        }
13440        /// [glEnablei](http://docs.gl/gl4/glEnable)(target, index)
13441        /// * `target` group: EnableCap
13442        #[cfg_attr(feature = "inline", inline)]
13443        #[cfg_attr(feature = "inline_always", inline(always))]
13444        pub unsafe fn Enablei(&self, target: GLenum, index: GLuint) {
13445            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13446            {
13447                trace!("calling gl.Enablei({:#X}, {:?});", target, index);
13448            }
13449            let out = call_atomic_ptr_2arg("glEnablei", &self.glEnablei_p, target, index);
13450            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13451            {
13452                self.automatic_glGetError("glEnablei");
13453            }
13454            out
13455        }
13456        #[doc(hidden)]
13457        pub unsafe fn Enablei_load_with_dyn(
13458            &self,
13459            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13460        ) -> bool {
13461            load_dyn_name_atomic_ptr(get_proc_address, b"glEnablei\0", &self.glEnablei_p)
13462        }
13463        #[inline]
13464        #[doc(hidden)]
13465        pub fn Enablei_is_loaded(&self) -> bool {
13466            !self.glEnablei_p.load(RELAX).is_null()
13467        }
13468        /// [glEndConditionalRender](http://docs.gl/gl4/glEndConditionalRender)()
13469        #[cfg_attr(feature = "inline", inline)]
13470        #[cfg_attr(feature = "inline_always", inline(always))]
13471        pub unsafe fn EndConditionalRender(&self) {
13472            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13473            {
13474                trace!("calling gl.EndConditionalRender();",);
13475            }
13476            let out =
13477                call_atomic_ptr_0arg("glEndConditionalRender", &self.glEndConditionalRender_p);
13478            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13479            {
13480                self.automatic_glGetError("glEndConditionalRender");
13481            }
13482            out
13483        }
13484        #[doc(hidden)]
13485        pub unsafe fn EndConditionalRender_load_with_dyn(
13486            &self,
13487            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13488        ) -> bool {
13489            load_dyn_name_atomic_ptr(
13490                get_proc_address,
13491                b"glEndConditionalRender\0",
13492                &self.glEndConditionalRender_p,
13493            )
13494        }
13495        #[inline]
13496        #[doc(hidden)]
13497        pub fn EndConditionalRender_is_loaded(&self) -> bool {
13498            !self.glEndConditionalRender_p.load(RELAX).is_null()
13499        }
13500        /// [glEndQuery](http://docs.gl/gl4/glEndQuery)(target)
13501        /// * `target` group: QueryTarget
13502        #[cfg_attr(feature = "inline", inline)]
13503        #[cfg_attr(feature = "inline_always", inline(always))]
13504        pub unsafe fn EndQuery(&self, target: GLenum) {
13505            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13506            {
13507                trace!("calling gl.EndQuery({:#X});", target);
13508            }
13509            let out = call_atomic_ptr_1arg("glEndQuery", &self.glEndQuery_p, target);
13510            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13511            {
13512                self.automatic_glGetError("glEndQuery");
13513            }
13514            out
13515        }
13516        #[doc(hidden)]
13517        pub unsafe fn EndQuery_load_with_dyn(
13518            &self,
13519            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13520        ) -> bool {
13521            load_dyn_name_atomic_ptr(get_proc_address, b"glEndQuery\0", &self.glEndQuery_p)
13522        }
13523        #[inline]
13524        #[doc(hidden)]
13525        pub fn EndQuery_is_loaded(&self) -> bool {
13526            !self.glEndQuery_p.load(RELAX).is_null()
13527        }
13528        /// [glEndQueryEXT](http://docs.gl/gl4/glEndQueryEXT)(target)
13529        /// * `target` group: QueryTarget
13530        #[cfg_attr(feature = "inline", inline)]
13531        #[cfg_attr(feature = "inline_always", inline(always))]
13532        pub unsafe fn EndQueryEXT(&self, target: GLenum) {
13533            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13534            {
13535                trace!("calling gl.EndQueryEXT({:#X});", target);
13536            }
13537            let out = call_atomic_ptr_1arg("glEndQueryEXT", &self.glEndQueryEXT_p, target);
13538            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13539            {
13540                self.automatic_glGetError("glEndQueryEXT");
13541            }
13542            out
13543        }
13544        #[doc(hidden)]
13545        pub unsafe fn EndQueryEXT_load_with_dyn(
13546            &self,
13547            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13548        ) -> bool {
13549            load_dyn_name_atomic_ptr(get_proc_address, b"glEndQueryEXT\0", &self.glEndQueryEXT_p)
13550        }
13551        #[inline]
13552        #[doc(hidden)]
13553        pub fn EndQueryEXT_is_loaded(&self) -> bool {
13554            !self.glEndQueryEXT_p.load(RELAX).is_null()
13555        }
13556        /// [glEndQueryIndexed](http://docs.gl/gl4/glEndQueryIndexed)(target, index)
13557        /// * `target` group: QueryTarget
13558        #[cfg_attr(feature = "inline", inline)]
13559        #[cfg_attr(feature = "inline_always", inline(always))]
13560        pub unsafe fn EndQueryIndexed(&self, target: GLenum, index: GLuint) {
13561            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13562            {
13563                trace!("calling gl.EndQueryIndexed({:#X}, {:?});", target, index);
13564            }
13565            let out = call_atomic_ptr_2arg(
13566                "glEndQueryIndexed",
13567                &self.glEndQueryIndexed_p,
13568                target,
13569                index,
13570            );
13571            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13572            {
13573                self.automatic_glGetError("glEndQueryIndexed");
13574            }
13575            out
13576        }
13577        #[doc(hidden)]
13578        pub unsafe fn EndQueryIndexed_load_with_dyn(
13579            &self,
13580            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13581        ) -> bool {
13582            load_dyn_name_atomic_ptr(
13583                get_proc_address,
13584                b"glEndQueryIndexed\0",
13585                &self.glEndQueryIndexed_p,
13586            )
13587        }
13588        #[inline]
13589        #[doc(hidden)]
13590        pub fn EndQueryIndexed_is_loaded(&self) -> bool {
13591            !self.glEndQueryIndexed_p.load(RELAX).is_null()
13592        }
13593        /// [glEndTransformFeedback](http://docs.gl/gl4/glEndTransformFeedback)()
13594        #[cfg_attr(feature = "inline", inline)]
13595        #[cfg_attr(feature = "inline_always", inline(always))]
13596        pub unsafe fn EndTransformFeedback(&self) {
13597            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13598            {
13599                trace!("calling gl.EndTransformFeedback();",);
13600            }
13601            let out =
13602                call_atomic_ptr_0arg("glEndTransformFeedback", &self.glEndTransformFeedback_p);
13603            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13604            {
13605                self.automatic_glGetError("glEndTransformFeedback");
13606            }
13607            out
13608        }
13609        #[doc(hidden)]
13610        pub unsafe fn EndTransformFeedback_load_with_dyn(
13611            &self,
13612            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13613        ) -> bool {
13614            load_dyn_name_atomic_ptr(
13615                get_proc_address,
13616                b"glEndTransformFeedback\0",
13617                &self.glEndTransformFeedback_p,
13618            )
13619        }
13620        #[inline]
13621        #[doc(hidden)]
13622        pub fn EndTransformFeedback_is_loaded(&self) -> bool {
13623            !self.glEndTransformFeedback_p.load(RELAX).is_null()
13624        }
13625        /// [glFenceSync](http://docs.gl/gl4/glFenceSync)(condition, flags)
13626        /// * `condition` group: SyncCondition
13627        /// * `flags` group: SyncBehaviorFlags
13628        /// * return value group: sync
13629        #[cfg_attr(feature = "inline", inline)]
13630        #[cfg_attr(feature = "inline_always", inline(always))]
13631        pub unsafe fn FenceSync(&self, condition: GLenum, flags: GLbitfield) -> GLsync {
13632            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13633            {
13634                trace!("calling gl.FenceSync({:#X}, {:?});", condition, flags);
13635            }
13636            let out = call_atomic_ptr_2arg("glFenceSync", &self.glFenceSync_p, condition, flags);
13637            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13638            {
13639                self.automatic_glGetError("glFenceSync");
13640            }
13641            out
13642        }
13643        #[doc(hidden)]
13644        pub unsafe fn FenceSync_load_with_dyn(
13645            &self,
13646            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13647        ) -> bool {
13648            load_dyn_name_atomic_ptr(get_proc_address, b"glFenceSync\0", &self.glFenceSync_p)
13649        }
13650        #[inline]
13651        #[doc(hidden)]
13652        pub fn FenceSync_is_loaded(&self) -> bool {
13653            !self.glFenceSync_p.load(RELAX).is_null()
13654        }
13655        /// [glFinish](http://docs.gl/gl4/glFinish)()
13656        #[cfg_attr(feature = "inline", inline)]
13657        #[cfg_attr(feature = "inline_always", inline(always))]
13658        pub unsafe fn Finish(&self) {
13659            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13660            {
13661                trace!("calling gl.Finish();",);
13662            }
13663            let out = call_atomic_ptr_0arg("glFinish", &self.glFinish_p);
13664            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13665            {
13666                self.automatic_glGetError("glFinish");
13667            }
13668            out
13669        }
13670        #[doc(hidden)]
13671        pub unsafe fn Finish_load_with_dyn(
13672            &self,
13673            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13674        ) -> bool {
13675            load_dyn_name_atomic_ptr(get_proc_address, b"glFinish\0", &self.glFinish_p)
13676        }
13677        #[inline]
13678        #[doc(hidden)]
13679        pub fn Finish_is_loaded(&self) -> bool {
13680            !self.glFinish_p.load(RELAX).is_null()
13681        }
13682        /// [glFlush](http://docs.gl/gl4/glFlush)()
13683        #[cfg_attr(feature = "inline", inline)]
13684        #[cfg_attr(feature = "inline_always", inline(always))]
13685        pub unsafe fn Flush(&self) {
13686            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13687            {
13688                trace!("calling gl.Flush();",);
13689            }
13690            let out = call_atomic_ptr_0arg("glFlush", &self.glFlush_p);
13691            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13692            {
13693                self.automatic_glGetError("glFlush");
13694            }
13695            out
13696        }
13697        #[doc(hidden)]
13698        pub unsafe fn Flush_load_with_dyn(
13699            &self,
13700            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13701        ) -> bool {
13702            load_dyn_name_atomic_ptr(get_proc_address, b"glFlush\0", &self.glFlush_p)
13703        }
13704        #[inline]
13705        #[doc(hidden)]
13706        pub fn Flush_is_loaded(&self) -> bool {
13707            !self.glFlush_p.load(RELAX).is_null()
13708        }
13709        /// [glFlushMappedBufferRange](http://docs.gl/gl4/glFlushMappedBufferRange)(target, offset, length)
13710        /// * `target` group: BufferTargetARB
13711        /// * `offset` group: BufferOffset
13712        /// * `length` group: BufferSize
13713        #[cfg_attr(feature = "inline", inline)]
13714        #[cfg_attr(feature = "inline_always", inline(always))]
13715        pub unsafe fn FlushMappedBufferRange(
13716            &self,
13717            target: GLenum,
13718            offset: GLintptr,
13719            length: GLsizeiptr,
13720        ) {
13721            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13722            {
13723                trace!(
13724                    "calling gl.FlushMappedBufferRange({:#X}, {:?}, {:?});",
13725                    target,
13726                    offset,
13727                    length
13728                );
13729            }
13730            let out = call_atomic_ptr_3arg(
13731                "glFlushMappedBufferRange",
13732                &self.glFlushMappedBufferRange_p,
13733                target,
13734                offset,
13735                length,
13736            );
13737            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13738            {
13739                self.automatic_glGetError("glFlushMappedBufferRange");
13740            }
13741            out
13742        }
13743        #[doc(hidden)]
13744        pub unsafe fn FlushMappedBufferRange_load_with_dyn(
13745            &self,
13746            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13747        ) -> bool {
13748            load_dyn_name_atomic_ptr(
13749                get_proc_address,
13750                b"glFlushMappedBufferRange\0",
13751                &self.glFlushMappedBufferRange_p,
13752            )
13753        }
13754        #[inline]
13755        #[doc(hidden)]
13756        pub fn FlushMappedBufferRange_is_loaded(&self) -> bool {
13757            !self.glFlushMappedBufferRange_p.load(RELAX).is_null()
13758        }
13759        /// [glFlushMappedNamedBufferRange](http://docs.gl/gl4/glFlushMappedNamedBufferRange)(buffer, offset, length)
13760        /// * `length` group: BufferSize
13761        #[cfg_attr(feature = "inline", inline)]
13762        #[cfg_attr(feature = "inline_always", inline(always))]
13763        pub unsafe fn FlushMappedNamedBufferRange(
13764            &self,
13765            buffer: GLuint,
13766            offset: GLintptr,
13767            length: GLsizeiptr,
13768        ) {
13769            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13770            {
13771                trace!(
13772                    "calling gl.FlushMappedNamedBufferRange({:?}, {:?}, {:?});",
13773                    buffer,
13774                    offset,
13775                    length
13776                );
13777            }
13778            let out = call_atomic_ptr_3arg(
13779                "glFlushMappedNamedBufferRange",
13780                &self.glFlushMappedNamedBufferRange_p,
13781                buffer,
13782                offset,
13783                length,
13784            );
13785            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13786            {
13787                self.automatic_glGetError("glFlushMappedNamedBufferRange");
13788            }
13789            out
13790        }
13791        #[doc(hidden)]
13792        pub unsafe fn FlushMappedNamedBufferRange_load_with_dyn(
13793            &self,
13794            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13795        ) -> bool {
13796            load_dyn_name_atomic_ptr(
13797                get_proc_address,
13798                b"glFlushMappedNamedBufferRange\0",
13799                &self.glFlushMappedNamedBufferRange_p,
13800            )
13801        }
13802        #[inline]
13803        #[doc(hidden)]
13804        pub fn FlushMappedNamedBufferRange_is_loaded(&self) -> bool {
13805            !self.glFlushMappedNamedBufferRange_p.load(RELAX).is_null()
13806        }
13807        /// [glFramebufferParameteri](http://docs.gl/gl4/glFramebufferParameter)(target, pname, param)
13808        /// * `target` group: FramebufferTarget
13809        /// * `pname` group: FramebufferParameterName
13810        #[cfg_attr(feature = "inline", inline)]
13811        #[cfg_attr(feature = "inline_always", inline(always))]
13812        pub unsafe fn FramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) {
13813            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13814            {
13815                trace!(
13816                    "calling gl.FramebufferParameteri({:#X}, {:#X}, {:?});",
13817                    target,
13818                    pname,
13819                    param
13820                );
13821            }
13822            let out = call_atomic_ptr_3arg(
13823                "glFramebufferParameteri",
13824                &self.glFramebufferParameteri_p,
13825                target,
13826                pname,
13827                param,
13828            );
13829            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13830            {
13831                self.automatic_glGetError("glFramebufferParameteri");
13832            }
13833            out
13834        }
13835        #[doc(hidden)]
13836        pub unsafe fn FramebufferParameteri_load_with_dyn(
13837            &self,
13838            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13839        ) -> bool {
13840            load_dyn_name_atomic_ptr(
13841                get_proc_address,
13842                b"glFramebufferParameteri\0",
13843                &self.glFramebufferParameteri_p,
13844            )
13845        }
13846        #[inline]
13847        #[doc(hidden)]
13848        pub fn FramebufferParameteri_is_loaded(&self) -> bool {
13849            !self.glFramebufferParameteri_p.load(RELAX).is_null()
13850        }
13851        /// [glFramebufferRenderbuffer](http://docs.gl/gl4/glFramebufferRenderbuffer)(target, attachment, renderbuffertarget, renderbuffer)
13852        /// * `target` group: FramebufferTarget
13853        /// * `attachment` group: FramebufferAttachment
13854        /// * `renderbuffertarget` group: RenderbufferTarget
13855        #[cfg_attr(feature = "inline", inline)]
13856        #[cfg_attr(feature = "inline_always", inline(always))]
13857        pub unsafe fn FramebufferRenderbuffer(
13858            &self,
13859            target: GLenum,
13860            attachment: GLenum,
13861            renderbuffertarget: GLenum,
13862            renderbuffer: GLuint,
13863        ) {
13864            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13865            {
13866                trace!(
13867                    "calling gl.FramebufferRenderbuffer({:#X}, {:#X}, {:#X}, {:?});",
13868                    target,
13869                    attachment,
13870                    renderbuffertarget,
13871                    renderbuffer
13872                );
13873            }
13874            let out = call_atomic_ptr_4arg(
13875                "glFramebufferRenderbuffer",
13876                &self.glFramebufferRenderbuffer_p,
13877                target,
13878                attachment,
13879                renderbuffertarget,
13880                renderbuffer,
13881            );
13882            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13883            {
13884                self.automatic_glGetError("glFramebufferRenderbuffer");
13885            }
13886            out
13887        }
13888        #[doc(hidden)]
13889        pub unsafe fn FramebufferRenderbuffer_load_with_dyn(
13890            &self,
13891            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13892        ) -> bool {
13893            load_dyn_name_atomic_ptr(
13894                get_proc_address,
13895                b"glFramebufferRenderbuffer\0",
13896                &self.glFramebufferRenderbuffer_p,
13897            )
13898        }
13899        #[inline]
13900        #[doc(hidden)]
13901        pub fn FramebufferRenderbuffer_is_loaded(&self) -> bool {
13902            !self.glFramebufferRenderbuffer_p.load(RELAX).is_null()
13903        }
13904        /// [glFramebufferTexture](http://docs.gl/gl4/glFramebufferTexture)(target, attachment, texture, level)
13905        /// * `target` group: FramebufferTarget
13906        /// * `attachment` group: FramebufferAttachment
13907        #[cfg_attr(feature = "inline", inline)]
13908        #[cfg_attr(feature = "inline_always", inline(always))]
13909        pub unsafe fn FramebufferTexture(
13910            &self,
13911            target: GLenum,
13912            attachment: GLenum,
13913            texture: GLuint,
13914            level: GLint,
13915        ) {
13916            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13917            {
13918                trace!(
13919                    "calling gl.FramebufferTexture({:#X}, {:#X}, {:?}, {:?});",
13920                    target,
13921                    attachment,
13922                    texture,
13923                    level
13924                );
13925            }
13926            let out = call_atomic_ptr_4arg(
13927                "glFramebufferTexture",
13928                &self.glFramebufferTexture_p,
13929                target,
13930                attachment,
13931                texture,
13932                level,
13933            );
13934            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13935            {
13936                self.automatic_glGetError("glFramebufferTexture");
13937            }
13938            out
13939        }
13940        #[doc(hidden)]
13941        pub unsafe fn FramebufferTexture_load_with_dyn(
13942            &self,
13943            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
13944        ) -> bool {
13945            load_dyn_name_atomic_ptr(
13946                get_proc_address,
13947                b"glFramebufferTexture\0",
13948                &self.glFramebufferTexture_p,
13949            )
13950        }
13951        #[inline]
13952        #[doc(hidden)]
13953        pub fn FramebufferTexture_is_loaded(&self) -> bool {
13954            !self.glFramebufferTexture_p.load(RELAX).is_null()
13955        }
13956        /// [glFramebufferTexture1D](http://docs.gl/gl4/glFramebufferTexture1D)(target, attachment, textarget, texture, level)
13957        /// * `target` group: FramebufferTarget
13958        /// * `attachment` group: FramebufferAttachment
13959        /// * `textarget` group: TextureTarget
13960        #[cfg_attr(feature = "inline", inline)]
13961        #[cfg_attr(feature = "inline_always", inline(always))]
13962        pub unsafe fn FramebufferTexture1D(
13963            &self,
13964            target: GLenum,
13965            attachment: GLenum,
13966            textarget: GLenum,
13967            texture: GLuint,
13968            level: GLint,
13969        ) {
13970            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
13971            {
13972                trace!(
13973                    "calling gl.FramebufferTexture1D({:#X}, {:#X}, {:#X}, {:?}, {:?});",
13974                    target,
13975                    attachment,
13976                    textarget,
13977                    texture,
13978                    level
13979                );
13980            }
13981            let out = call_atomic_ptr_5arg(
13982                "glFramebufferTexture1D",
13983                &self.glFramebufferTexture1D_p,
13984                target,
13985                attachment,
13986                textarget,
13987                texture,
13988                level,
13989            );
13990            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
13991            {
13992                self.automatic_glGetError("glFramebufferTexture1D");
13993            }
13994            out
13995        }
13996        #[doc(hidden)]
13997        pub unsafe fn FramebufferTexture1D_load_with_dyn(
13998            &self,
13999            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14000        ) -> bool {
14001            load_dyn_name_atomic_ptr(
14002                get_proc_address,
14003                b"glFramebufferTexture1D\0",
14004                &self.glFramebufferTexture1D_p,
14005            )
14006        }
14007        #[inline]
14008        #[doc(hidden)]
14009        pub fn FramebufferTexture1D_is_loaded(&self) -> bool {
14010            !self.glFramebufferTexture1D_p.load(RELAX).is_null()
14011        }
14012        /// [glFramebufferTexture2D](http://docs.gl/gl4/glFramebufferTexture2D)(target, attachment, textarget, texture, level)
14013        /// * `target` group: FramebufferTarget
14014        /// * `attachment` group: FramebufferAttachment
14015        /// * `textarget` group: TextureTarget
14016        #[cfg_attr(feature = "inline", inline)]
14017        #[cfg_attr(feature = "inline_always", inline(always))]
14018        pub unsafe fn FramebufferTexture2D(
14019            &self,
14020            target: GLenum,
14021            attachment: GLenum,
14022            textarget: GLenum,
14023            texture: GLuint,
14024            level: GLint,
14025        ) {
14026            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14027            {
14028                trace!(
14029                    "calling gl.FramebufferTexture2D({:#X}, {:#X}, {:#X}, {:?}, {:?});",
14030                    target,
14031                    attachment,
14032                    textarget,
14033                    texture,
14034                    level
14035                );
14036            }
14037            let out = call_atomic_ptr_5arg(
14038                "glFramebufferTexture2D",
14039                &self.glFramebufferTexture2D_p,
14040                target,
14041                attachment,
14042                textarget,
14043                texture,
14044                level,
14045            );
14046            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14047            {
14048                self.automatic_glGetError("glFramebufferTexture2D");
14049            }
14050            out
14051        }
14052        #[doc(hidden)]
14053        pub unsafe fn FramebufferTexture2D_load_with_dyn(
14054            &self,
14055            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14056        ) -> bool {
14057            load_dyn_name_atomic_ptr(
14058                get_proc_address,
14059                b"glFramebufferTexture2D\0",
14060                &self.glFramebufferTexture2D_p,
14061            )
14062        }
14063        #[inline]
14064        #[doc(hidden)]
14065        pub fn FramebufferTexture2D_is_loaded(&self) -> bool {
14066            !self.glFramebufferTexture2D_p.load(RELAX).is_null()
14067        }
14068        /// [glFramebufferTexture2DMultisampleEXT](http://docs.gl/gl4/glFramebufferTexture2DMultisampleEXT)(target, attachment, textarget, texture, level, samples)
14069        /// * `target` group: FramebufferTarget
14070        /// * `attachment` group: FramebufferAttachment
14071        /// * `textarget` group: TextureTarget
14072        #[cfg_attr(feature = "inline", inline)]
14073        #[cfg_attr(feature = "inline_always", inline(always))]
14074        #[cfg_attr(
14075            docs_rs,
14076            doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
14077        )]
14078        pub unsafe fn FramebufferTexture2DMultisampleEXT(
14079            &self,
14080            target: GLenum,
14081            attachment: GLenum,
14082            textarget: GLenum,
14083            texture: GLuint,
14084            level: GLint,
14085            samples: GLsizei,
14086        ) {
14087            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14088            {
14089                trace!("calling gl.FramebufferTexture2DMultisampleEXT({:#X}, {:#X}, {:#X}, {:?}, {:?}, {:?});", target, attachment, textarget, texture, level, samples);
14090            }
14091            let out = call_atomic_ptr_6arg(
14092                "glFramebufferTexture2DMultisampleEXT",
14093                &self.glFramebufferTexture2DMultisampleEXT_p,
14094                target,
14095                attachment,
14096                textarget,
14097                texture,
14098                level,
14099                samples,
14100            );
14101            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14102            {
14103                self.automatic_glGetError("glFramebufferTexture2DMultisampleEXT");
14104            }
14105            out
14106        }
14107        #[cfg_attr(
14108            docs_rs,
14109            doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
14110        )]
14111        #[doc(hidden)]
14112        pub unsafe fn FramebufferTexture2DMultisampleEXT_load_with_dyn(
14113            &self,
14114            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14115        ) -> bool {
14116            load_dyn_name_atomic_ptr(
14117                get_proc_address,
14118                b"glFramebufferTexture2DMultisampleEXT\0",
14119                &self.glFramebufferTexture2DMultisampleEXT_p,
14120            )
14121        }
14122        #[inline]
14123        #[doc(hidden)]
14124        #[cfg_attr(
14125            docs_rs,
14126            doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
14127        )]
14128        pub fn FramebufferTexture2DMultisampleEXT_is_loaded(&self) -> bool {
14129            !self
14130                .glFramebufferTexture2DMultisampleEXT_p
14131                .load(RELAX)
14132                .is_null()
14133        }
14134        /// [glFramebufferTexture3D](http://docs.gl/gl4/glFramebufferTexture3D)(target, attachment, textarget, texture, level, zoffset)
14135        /// * `target` group: FramebufferTarget
14136        /// * `attachment` group: FramebufferAttachment
14137        /// * `textarget` group: TextureTarget
14138        #[cfg_attr(feature = "inline", inline)]
14139        #[cfg_attr(feature = "inline_always", inline(always))]
14140        pub unsafe fn FramebufferTexture3D(
14141            &self,
14142            target: GLenum,
14143            attachment: GLenum,
14144            textarget: GLenum,
14145            texture: GLuint,
14146            level: GLint,
14147            zoffset: GLint,
14148        ) {
14149            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14150            {
14151                trace!(
14152                    "calling gl.FramebufferTexture3D({:#X}, {:#X}, {:#X}, {:?}, {:?}, {:?});",
14153                    target,
14154                    attachment,
14155                    textarget,
14156                    texture,
14157                    level,
14158                    zoffset
14159                );
14160            }
14161            let out = call_atomic_ptr_6arg(
14162                "glFramebufferTexture3D",
14163                &self.glFramebufferTexture3D_p,
14164                target,
14165                attachment,
14166                textarget,
14167                texture,
14168                level,
14169                zoffset,
14170            );
14171            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14172            {
14173                self.automatic_glGetError("glFramebufferTexture3D");
14174            }
14175            out
14176        }
14177        #[doc(hidden)]
14178        pub unsafe fn FramebufferTexture3D_load_with_dyn(
14179            &self,
14180            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14181        ) -> bool {
14182            load_dyn_name_atomic_ptr(
14183                get_proc_address,
14184                b"glFramebufferTexture3D\0",
14185                &self.glFramebufferTexture3D_p,
14186            )
14187        }
14188        #[inline]
14189        #[doc(hidden)]
14190        pub fn FramebufferTexture3D_is_loaded(&self) -> bool {
14191            !self.glFramebufferTexture3D_p.load(RELAX).is_null()
14192        }
14193        /// [glFramebufferTextureLayer](http://docs.gl/gl4/glFramebufferTextureLayer)(target, attachment, texture, level, layer)
14194        /// * `target` group: FramebufferTarget
14195        /// * `attachment` group: FramebufferAttachment
14196        /// * `texture` group: Texture
14197        /// * `level` group: CheckedInt32
14198        /// * `layer` group: CheckedInt32
14199        #[cfg_attr(feature = "inline", inline)]
14200        #[cfg_attr(feature = "inline_always", inline(always))]
14201        pub unsafe fn FramebufferTextureLayer(
14202            &self,
14203            target: GLenum,
14204            attachment: GLenum,
14205            texture: GLuint,
14206            level: GLint,
14207            layer: GLint,
14208        ) {
14209            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14210            {
14211                trace!(
14212                    "calling gl.FramebufferTextureLayer({:#X}, {:#X}, {:?}, {:?}, {:?});",
14213                    target,
14214                    attachment,
14215                    texture,
14216                    level,
14217                    layer
14218                );
14219            }
14220            let out = call_atomic_ptr_5arg(
14221                "glFramebufferTextureLayer",
14222                &self.glFramebufferTextureLayer_p,
14223                target,
14224                attachment,
14225                texture,
14226                level,
14227                layer,
14228            );
14229            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14230            {
14231                self.automatic_glGetError("glFramebufferTextureLayer");
14232            }
14233            out
14234        }
14235        #[doc(hidden)]
14236        pub unsafe fn FramebufferTextureLayer_load_with_dyn(
14237            &self,
14238            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14239        ) -> bool {
14240            load_dyn_name_atomic_ptr(
14241                get_proc_address,
14242                b"glFramebufferTextureLayer\0",
14243                &self.glFramebufferTextureLayer_p,
14244            )
14245        }
14246        #[inline]
14247        #[doc(hidden)]
14248        pub fn FramebufferTextureLayer_is_loaded(&self) -> bool {
14249            !self.glFramebufferTextureLayer_p.load(RELAX).is_null()
14250        }
14251        /// [glFrontFace](http://docs.gl/gl4/glFrontFace)(mode)
14252        /// * `mode` group: FrontFaceDirection
14253        #[cfg_attr(feature = "inline", inline)]
14254        #[cfg_attr(feature = "inline_always", inline(always))]
14255        pub unsafe fn FrontFace(&self, mode: GLenum) {
14256            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14257            {
14258                trace!("calling gl.FrontFace({:#X});", mode);
14259            }
14260            let out = call_atomic_ptr_1arg("glFrontFace", &self.glFrontFace_p, mode);
14261            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14262            {
14263                self.automatic_glGetError("glFrontFace");
14264            }
14265            out
14266        }
14267        #[doc(hidden)]
14268        pub unsafe fn FrontFace_load_with_dyn(
14269            &self,
14270            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14271        ) -> bool {
14272            load_dyn_name_atomic_ptr(get_proc_address, b"glFrontFace\0", &self.glFrontFace_p)
14273        }
14274        #[inline]
14275        #[doc(hidden)]
14276        pub fn FrontFace_is_loaded(&self) -> bool {
14277            !self.glFrontFace_p.load(RELAX).is_null()
14278        }
14279        /// [glGenBuffers](http://docs.gl/gl4/glGenBuffers)(n, buffers)
14280        /// * `buffers` len: n
14281        #[cfg_attr(feature = "inline", inline)]
14282        #[cfg_attr(feature = "inline_always", inline(always))]
14283        pub unsafe fn GenBuffers(&self, n: GLsizei, buffers: *mut GLuint) {
14284            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14285            {
14286                trace!("calling gl.GenBuffers({:?}, {:p});", n, buffers);
14287            }
14288            let out = call_atomic_ptr_2arg("glGenBuffers", &self.glGenBuffers_p, n, buffers);
14289            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14290            {
14291                self.automatic_glGetError("glGenBuffers");
14292            }
14293            out
14294        }
14295        #[doc(hidden)]
14296        pub unsafe fn GenBuffers_load_with_dyn(
14297            &self,
14298            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14299        ) -> bool {
14300            load_dyn_name_atomic_ptr(get_proc_address, b"glGenBuffers\0", &self.glGenBuffers_p)
14301        }
14302        #[inline]
14303        #[doc(hidden)]
14304        pub fn GenBuffers_is_loaded(&self) -> bool {
14305            !self.glGenBuffers_p.load(RELAX).is_null()
14306        }
14307        /// [glGenFramebuffers](http://docs.gl/gl4/glGenFramebuffers)(n, framebuffers)
14308        /// * `framebuffers` len: n
14309        #[cfg_attr(feature = "inline", inline)]
14310        #[cfg_attr(feature = "inline_always", inline(always))]
14311        pub unsafe fn GenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) {
14312            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14313            {
14314                trace!("calling gl.GenFramebuffers({:?}, {:p});", n, framebuffers);
14315            }
14316            let out = call_atomic_ptr_2arg(
14317                "glGenFramebuffers",
14318                &self.glGenFramebuffers_p,
14319                n,
14320                framebuffers,
14321            );
14322            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14323            {
14324                self.automatic_glGetError("glGenFramebuffers");
14325            }
14326            out
14327        }
14328        #[doc(hidden)]
14329        pub unsafe fn GenFramebuffers_load_with_dyn(
14330            &self,
14331            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14332        ) -> bool {
14333            load_dyn_name_atomic_ptr(
14334                get_proc_address,
14335                b"glGenFramebuffers\0",
14336                &self.glGenFramebuffers_p,
14337            )
14338        }
14339        #[inline]
14340        #[doc(hidden)]
14341        pub fn GenFramebuffers_is_loaded(&self) -> bool {
14342            !self.glGenFramebuffers_p.load(RELAX).is_null()
14343        }
14344        /// [glGenProgramPipelines](http://docs.gl/gl4/glGenProgramPipelines)(n, pipelines)
14345        /// * `pipelines` len: n
14346        #[cfg_attr(feature = "inline", inline)]
14347        #[cfg_attr(feature = "inline_always", inline(always))]
14348        pub unsafe fn GenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) {
14349            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14350            {
14351                trace!("calling gl.GenProgramPipelines({:?}, {:p});", n, pipelines);
14352            }
14353            let out = call_atomic_ptr_2arg(
14354                "glGenProgramPipelines",
14355                &self.glGenProgramPipelines_p,
14356                n,
14357                pipelines,
14358            );
14359            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14360            {
14361                self.automatic_glGetError("glGenProgramPipelines");
14362            }
14363            out
14364        }
14365        #[doc(hidden)]
14366        pub unsafe fn GenProgramPipelines_load_with_dyn(
14367            &self,
14368            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14369        ) -> bool {
14370            load_dyn_name_atomic_ptr(
14371                get_proc_address,
14372                b"glGenProgramPipelines\0",
14373                &self.glGenProgramPipelines_p,
14374            )
14375        }
14376        #[inline]
14377        #[doc(hidden)]
14378        pub fn GenProgramPipelines_is_loaded(&self) -> bool {
14379            !self.glGenProgramPipelines_p.load(RELAX).is_null()
14380        }
14381        /// [glGenQueries](http://docs.gl/gl4/glGenQueries)(n, ids)
14382        /// * `ids` len: n
14383        #[cfg_attr(feature = "inline", inline)]
14384        #[cfg_attr(feature = "inline_always", inline(always))]
14385        pub unsafe fn GenQueries(&self, n: GLsizei, ids: *mut GLuint) {
14386            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14387            {
14388                trace!("calling gl.GenQueries({:?}, {:p});", n, ids);
14389            }
14390            let out = call_atomic_ptr_2arg("glGenQueries", &self.glGenQueries_p, n, ids);
14391            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14392            {
14393                self.automatic_glGetError("glGenQueries");
14394            }
14395            out
14396        }
14397        #[doc(hidden)]
14398        pub unsafe fn GenQueries_load_with_dyn(
14399            &self,
14400            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14401        ) -> bool {
14402            load_dyn_name_atomic_ptr(get_proc_address, b"glGenQueries\0", &self.glGenQueries_p)
14403        }
14404        #[inline]
14405        #[doc(hidden)]
14406        pub fn GenQueries_is_loaded(&self) -> bool {
14407            !self.glGenQueries_p.load(RELAX).is_null()
14408        }
14409        /// [glGenQueriesEXT](http://docs.gl/gl4/glGenQueriesEXT)(n, ids)
14410        /// * `ids` len: n
14411        #[cfg_attr(feature = "inline", inline)]
14412        #[cfg_attr(feature = "inline_always", inline(always))]
14413        pub unsafe fn GenQueriesEXT(&self, n: GLsizei, ids: *mut GLuint) {
14414            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14415            {
14416                trace!("calling gl.GenQueriesEXT({:?}, {:p});", n, ids);
14417            }
14418            let out = call_atomic_ptr_2arg("glGenQueriesEXT", &self.glGenQueriesEXT_p, n, ids);
14419            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14420            {
14421                self.automatic_glGetError("glGenQueriesEXT");
14422            }
14423            out
14424        }
14425        #[doc(hidden)]
14426        pub unsafe fn GenQueriesEXT_load_with_dyn(
14427            &self,
14428            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14429        ) -> bool {
14430            load_dyn_name_atomic_ptr(
14431                get_proc_address,
14432                b"glGenQueriesEXT\0",
14433                &self.glGenQueriesEXT_p,
14434            )
14435        }
14436        #[inline]
14437        #[doc(hidden)]
14438        pub fn GenQueriesEXT_is_loaded(&self) -> bool {
14439            !self.glGenQueriesEXT_p.load(RELAX).is_null()
14440        }
14441        /// [glGenRenderbuffers](http://docs.gl/gl4/glGenRenderbuffers)(n, renderbuffers)
14442        /// * `renderbuffers` len: n
14443        #[cfg_attr(feature = "inline", inline)]
14444        #[cfg_attr(feature = "inline_always", inline(always))]
14445        pub unsafe fn GenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) {
14446            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14447            {
14448                trace!("calling gl.GenRenderbuffers({:?}, {:p});", n, renderbuffers);
14449            }
14450            let out = call_atomic_ptr_2arg(
14451                "glGenRenderbuffers",
14452                &self.glGenRenderbuffers_p,
14453                n,
14454                renderbuffers,
14455            );
14456            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14457            {
14458                self.automatic_glGetError("glGenRenderbuffers");
14459            }
14460            out
14461        }
14462        #[doc(hidden)]
14463        pub unsafe fn GenRenderbuffers_load_with_dyn(
14464            &self,
14465            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14466        ) -> bool {
14467            load_dyn_name_atomic_ptr(
14468                get_proc_address,
14469                b"glGenRenderbuffers\0",
14470                &self.glGenRenderbuffers_p,
14471            )
14472        }
14473        #[inline]
14474        #[doc(hidden)]
14475        pub fn GenRenderbuffers_is_loaded(&self) -> bool {
14476            !self.glGenRenderbuffers_p.load(RELAX).is_null()
14477        }
14478        /// [glGenSamplers](http://docs.gl/gl4/glGenSamplers)(count, samplers)
14479        /// * `samplers` len: count
14480        #[cfg_attr(feature = "inline", inline)]
14481        #[cfg_attr(feature = "inline_always", inline(always))]
14482        pub unsafe fn GenSamplers(&self, count: GLsizei, samplers: *mut GLuint) {
14483            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14484            {
14485                trace!("calling gl.GenSamplers({:?}, {:p});", count, samplers);
14486            }
14487            let out = call_atomic_ptr_2arg("glGenSamplers", &self.glGenSamplers_p, count, samplers);
14488            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14489            {
14490                self.automatic_glGetError("glGenSamplers");
14491            }
14492            out
14493        }
14494        #[doc(hidden)]
14495        pub unsafe fn GenSamplers_load_with_dyn(
14496            &self,
14497            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14498        ) -> bool {
14499            load_dyn_name_atomic_ptr(get_proc_address, b"glGenSamplers\0", &self.glGenSamplers_p)
14500        }
14501        #[inline]
14502        #[doc(hidden)]
14503        pub fn GenSamplers_is_loaded(&self) -> bool {
14504            !self.glGenSamplers_p.load(RELAX).is_null()
14505        }
14506        /// [glGenTextures](http://docs.gl/gl4/glGenTextures)(n, textures)
14507        /// * `textures` group: Texture
14508        /// * `textures` len: n
14509        #[cfg_attr(feature = "inline", inline)]
14510        #[cfg_attr(feature = "inline_always", inline(always))]
14511        pub unsafe fn GenTextures(&self, n: GLsizei, textures: *mut GLuint) {
14512            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14513            {
14514                trace!("calling gl.GenTextures({:?}, {:p});", n, textures);
14515            }
14516            let out = call_atomic_ptr_2arg("glGenTextures", &self.glGenTextures_p, n, textures);
14517            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14518            {
14519                self.automatic_glGetError("glGenTextures");
14520            }
14521            out
14522        }
14523        #[doc(hidden)]
14524        pub unsafe fn GenTextures_load_with_dyn(
14525            &self,
14526            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14527        ) -> bool {
14528            load_dyn_name_atomic_ptr(get_proc_address, b"glGenTextures\0", &self.glGenTextures_p)
14529        }
14530        #[inline]
14531        #[doc(hidden)]
14532        pub fn GenTextures_is_loaded(&self) -> bool {
14533            !self.glGenTextures_p.load(RELAX).is_null()
14534        }
14535        /// [glGenTransformFeedbacks](http://docs.gl/gl4/glGenTransformFeedbacks)(n, ids)
14536        /// * `ids` len: n
14537        #[cfg_attr(feature = "inline", inline)]
14538        #[cfg_attr(feature = "inline_always", inline(always))]
14539        pub unsafe fn GenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) {
14540            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14541            {
14542                trace!("calling gl.GenTransformFeedbacks({:?}, {:p});", n, ids);
14543            }
14544            let out = call_atomic_ptr_2arg(
14545                "glGenTransformFeedbacks",
14546                &self.glGenTransformFeedbacks_p,
14547                n,
14548                ids,
14549            );
14550            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14551            {
14552                self.automatic_glGetError("glGenTransformFeedbacks");
14553            }
14554            out
14555        }
14556        #[doc(hidden)]
14557        pub unsafe fn GenTransformFeedbacks_load_with_dyn(
14558            &self,
14559            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14560        ) -> bool {
14561            load_dyn_name_atomic_ptr(
14562                get_proc_address,
14563                b"glGenTransformFeedbacks\0",
14564                &self.glGenTransformFeedbacks_p,
14565            )
14566        }
14567        #[inline]
14568        #[doc(hidden)]
14569        pub fn GenTransformFeedbacks_is_loaded(&self) -> bool {
14570            !self.glGenTransformFeedbacks_p.load(RELAX).is_null()
14571        }
14572        /// [glGenVertexArrays](http://docs.gl/gl4/glGenVertexArrays)(n, arrays)
14573        /// * `arrays` len: n
14574        #[cfg_attr(feature = "inline", inline)]
14575        #[cfg_attr(feature = "inline_always", inline(always))]
14576        pub unsafe fn GenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) {
14577            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14578            {
14579                trace!("calling gl.GenVertexArrays({:?}, {:p});", n, arrays);
14580            }
14581            let out =
14582                call_atomic_ptr_2arg("glGenVertexArrays", &self.glGenVertexArrays_p, n, arrays);
14583            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14584            {
14585                self.automatic_glGetError("glGenVertexArrays");
14586            }
14587            out
14588        }
14589        #[doc(hidden)]
14590        pub unsafe fn GenVertexArrays_load_with_dyn(
14591            &self,
14592            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14593        ) -> bool {
14594            load_dyn_name_atomic_ptr(
14595                get_proc_address,
14596                b"glGenVertexArrays\0",
14597                &self.glGenVertexArrays_p,
14598            )
14599        }
14600        #[inline]
14601        #[doc(hidden)]
14602        pub fn GenVertexArrays_is_loaded(&self) -> bool {
14603            !self.glGenVertexArrays_p.load(RELAX).is_null()
14604        }
14605        /// [glGenVertexArraysAPPLE](http://docs.gl/gl4/glGenVertexArraysAPPLE)(n, arrays)
14606        /// * `arrays` len: n
14607        /// * alias of: [`glGenVertexArrays`]
14608        #[cfg_attr(feature = "inline", inline)]
14609        #[cfg_attr(feature = "inline_always", inline(always))]
14610        pub unsafe fn GenVertexArraysAPPLE(&self, n: GLsizei, arrays: *mut GLuint) {
14611            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14612            {
14613                trace!("calling gl.GenVertexArraysAPPLE({:?}, {:p});", n, arrays);
14614            }
14615            let out = call_atomic_ptr_2arg(
14616                "glGenVertexArraysAPPLE",
14617                &self.glGenVertexArraysAPPLE_p,
14618                n,
14619                arrays,
14620            );
14621            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14622            {
14623                self.automatic_glGetError("glGenVertexArraysAPPLE");
14624            }
14625            out
14626        }
14627        #[doc(hidden)]
14628        pub unsafe fn GenVertexArraysAPPLE_load_with_dyn(
14629            &self,
14630            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14631        ) -> bool {
14632            load_dyn_name_atomic_ptr(
14633                get_proc_address,
14634                b"glGenVertexArraysAPPLE\0",
14635                &self.glGenVertexArraysAPPLE_p,
14636            )
14637        }
14638        #[inline]
14639        #[doc(hidden)]
14640        pub fn GenVertexArraysAPPLE_is_loaded(&self) -> bool {
14641            !self.glGenVertexArraysAPPLE_p.load(RELAX).is_null()
14642        }
14643        /// [glGenVertexArraysOES](http://docs.gl/gl4/glGenVertexArraysOES)(n, arrays)
14644        /// * `arrays` len: n
14645        /// * alias of: [`glGenVertexArrays`]
14646        #[cfg_attr(feature = "inline", inline)]
14647        #[cfg_attr(feature = "inline_always", inline(always))]
14648        pub unsafe fn GenVertexArraysOES(&self, n: GLsizei, arrays: *mut GLuint) {
14649            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14650            {
14651                trace!("calling gl.GenVertexArraysOES({:?}, {:p});", n, arrays);
14652            }
14653            let out = call_atomic_ptr_2arg(
14654                "glGenVertexArraysOES",
14655                &self.glGenVertexArraysOES_p,
14656                n,
14657                arrays,
14658            );
14659            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14660            {
14661                self.automatic_glGetError("glGenVertexArraysOES");
14662            }
14663            out
14664        }
14665        #[doc(hidden)]
14666        pub unsafe fn GenVertexArraysOES_load_with_dyn(
14667            &self,
14668            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14669        ) -> bool {
14670            load_dyn_name_atomic_ptr(
14671                get_proc_address,
14672                b"glGenVertexArraysOES\0",
14673                &self.glGenVertexArraysOES_p,
14674            )
14675        }
14676        #[inline]
14677        #[doc(hidden)]
14678        pub fn GenVertexArraysOES_is_loaded(&self) -> bool {
14679            !self.glGenVertexArraysOES_p.load(RELAX).is_null()
14680        }
14681        /// [glGenerateMipmap](http://docs.gl/gl4/glGenerateMipmap)(target)
14682        /// * `target` group: TextureTarget
14683        #[cfg_attr(feature = "inline", inline)]
14684        #[cfg_attr(feature = "inline_always", inline(always))]
14685        pub unsafe fn GenerateMipmap(&self, target: GLenum) {
14686            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14687            {
14688                trace!("calling gl.GenerateMipmap({:#X});", target);
14689            }
14690            let out = call_atomic_ptr_1arg("glGenerateMipmap", &self.glGenerateMipmap_p, target);
14691            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14692            {
14693                self.automatic_glGetError("glGenerateMipmap");
14694            }
14695            out
14696        }
14697        #[doc(hidden)]
14698        pub unsafe fn GenerateMipmap_load_with_dyn(
14699            &self,
14700            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14701        ) -> bool {
14702            load_dyn_name_atomic_ptr(
14703                get_proc_address,
14704                b"glGenerateMipmap\0",
14705                &self.glGenerateMipmap_p,
14706            )
14707        }
14708        #[inline]
14709        #[doc(hidden)]
14710        pub fn GenerateMipmap_is_loaded(&self) -> bool {
14711            !self.glGenerateMipmap_p.load(RELAX).is_null()
14712        }
14713        /// [glGenerateTextureMipmap](http://docs.gl/gl4/glGenerateTextureMipmap)(texture)
14714        #[cfg_attr(feature = "inline", inline)]
14715        #[cfg_attr(feature = "inline_always", inline(always))]
14716        pub unsafe fn GenerateTextureMipmap(&self, texture: GLuint) {
14717            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14718            {
14719                trace!("calling gl.GenerateTextureMipmap({:?});", texture);
14720            }
14721            let out = call_atomic_ptr_1arg(
14722                "glGenerateTextureMipmap",
14723                &self.glGenerateTextureMipmap_p,
14724                texture,
14725            );
14726            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14727            {
14728                self.automatic_glGetError("glGenerateTextureMipmap");
14729            }
14730            out
14731        }
14732        #[doc(hidden)]
14733        pub unsafe fn GenerateTextureMipmap_load_with_dyn(
14734            &self,
14735            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14736        ) -> bool {
14737            load_dyn_name_atomic_ptr(
14738                get_proc_address,
14739                b"glGenerateTextureMipmap\0",
14740                &self.glGenerateTextureMipmap_p,
14741            )
14742        }
14743        #[inline]
14744        #[doc(hidden)]
14745        pub fn GenerateTextureMipmap_is_loaded(&self) -> bool {
14746            !self.glGenerateTextureMipmap_p.load(RELAX).is_null()
14747        }
14748        /// [glGetActiveAtomicCounterBufferiv](http://docs.gl/gl4/glGetActiveAtomicCounterBuffer)(program, bufferIndex, pname, params)
14749        /// * `pname` group: AtomicCounterBufferPName
14750        /// * `params` len: COMPSIZE(pname)
14751        #[cfg_attr(feature = "inline", inline)]
14752        #[cfg_attr(feature = "inline_always", inline(always))]
14753        pub unsafe fn GetActiveAtomicCounterBufferiv(
14754            &self,
14755            program: GLuint,
14756            bufferIndex: GLuint,
14757            pname: GLenum,
14758            params: *mut GLint,
14759        ) {
14760            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14761            {
14762                trace!(
14763                    "calling gl.GetActiveAtomicCounterBufferiv({:?}, {:?}, {:#X}, {:p});",
14764                    program,
14765                    bufferIndex,
14766                    pname,
14767                    params
14768                );
14769            }
14770            let out = call_atomic_ptr_4arg(
14771                "glGetActiveAtomicCounterBufferiv",
14772                &self.glGetActiveAtomicCounterBufferiv_p,
14773                program,
14774                bufferIndex,
14775                pname,
14776                params,
14777            );
14778            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14779            {
14780                self.automatic_glGetError("glGetActiveAtomicCounterBufferiv");
14781            }
14782            out
14783        }
14784        #[doc(hidden)]
14785        pub unsafe fn GetActiveAtomicCounterBufferiv_load_with_dyn(
14786            &self,
14787            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14788        ) -> bool {
14789            load_dyn_name_atomic_ptr(
14790                get_proc_address,
14791                b"glGetActiveAtomicCounterBufferiv\0",
14792                &self.glGetActiveAtomicCounterBufferiv_p,
14793            )
14794        }
14795        #[inline]
14796        #[doc(hidden)]
14797        pub fn GetActiveAtomicCounterBufferiv_is_loaded(&self) -> bool {
14798            !self
14799                .glGetActiveAtomicCounterBufferiv_p
14800                .load(RELAX)
14801                .is_null()
14802        }
14803        /// [glGetActiveAttrib](http://docs.gl/gl4/glGetActiveAttrib)(program, index, bufSize, length, size, type_, name)
14804        /// * `length` len: 1
14805        /// * `size` len: 1
14806        /// * `type_` group: AttributeType
14807        /// * `type_` len: 1
14808        /// * `name` len: bufSize
14809        #[cfg_attr(feature = "inline", inline)]
14810        #[cfg_attr(feature = "inline_always", inline(always))]
14811        pub unsafe fn GetActiveAttrib(
14812            &self,
14813            program: GLuint,
14814            index: GLuint,
14815            bufSize: GLsizei,
14816            length: *mut GLsizei,
14817            size: *mut GLint,
14818            type_: *mut GLenum,
14819            name: *mut GLchar,
14820        ) {
14821            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14822            {
14823                trace!(
14824                    "calling gl.GetActiveAttrib({:?}, {:?}, {:?}, {:p}, {:p}, {:p}, {:p});",
14825                    program,
14826                    index,
14827                    bufSize,
14828                    length,
14829                    size,
14830                    type_,
14831                    name
14832                );
14833            }
14834            let out = call_atomic_ptr_7arg(
14835                "glGetActiveAttrib",
14836                &self.glGetActiveAttrib_p,
14837                program,
14838                index,
14839                bufSize,
14840                length,
14841                size,
14842                type_,
14843                name,
14844            );
14845            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14846            {
14847                self.automatic_glGetError("glGetActiveAttrib");
14848            }
14849            out
14850        }
14851        #[doc(hidden)]
14852        pub unsafe fn GetActiveAttrib_load_with_dyn(
14853            &self,
14854            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14855        ) -> bool {
14856            load_dyn_name_atomic_ptr(
14857                get_proc_address,
14858                b"glGetActiveAttrib\0",
14859                &self.glGetActiveAttrib_p,
14860            )
14861        }
14862        #[inline]
14863        #[doc(hidden)]
14864        pub fn GetActiveAttrib_is_loaded(&self) -> bool {
14865            !self.glGetActiveAttrib_p.load(RELAX).is_null()
14866        }
14867        /// [glGetActiveSubroutineName](http://docs.gl/gl4/glGetActiveSubroutineName)(program, shadertype, index, bufSize, length, name)
14868        /// * `shadertype` group: ShaderType
14869        /// * `length` len: 1
14870        /// * `name` len: bufSize
14871        #[cfg_attr(feature = "inline", inline)]
14872        #[cfg_attr(feature = "inline_always", inline(always))]
14873        pub unsafe fn GetActiveSubroutineName(
14874            &self,
14875            program: GLuint,
14876            shadertype: GLenum,
14877            index: GLuint,
14878            bufSize: GLsizei,
14879            length: *mut GLsizei,
14880            name: *mut GLchar,
14881        ) {
14882            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14883            {
14884                trace!(
14885                    "calling gl.GetActiveSubroutineName({:?}, {:#X}, {:?}, {:?}, {:p}, {:p});",
14886                    program,
14887                    shadertype,
14888                    index,
14889                    bufSize,
14890                    length,
14891                    name
14892                );
14893            }
14894            let out = call_atomic_ptr_6arg(
14895                "glGetActiveSubroutineName",
14896                &self.glGetActiveSubroutineName_p,
14897                program,
14898                shadertype,
14899                index,
14900                bufSize,
14901                length,
14902                name,
14903            );
14904            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14905            {
14906                self.automatic_glGetError("glGetActiveSubroutineName");
14907            }
14908            out
14909        }
14910        #[doc(hidden)]
14911        pub unsafe fn GetActiveSubroutineName_load_with_dyn(
14912            &self,
14913            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14914        ) -> bool {
14915            load_dyn_name_atomic_ptr(
14916                get_proc_address,
14917                b"glGetActiveSubroutineName\0",
14918                &self.glGetActiveSubroutineName_p,
14919            )
14920        }
14921        #[inline]
14922        #[doc(hidden)]
14923        pub fn GetActiveSubroutineName_is_loaded(&self) -> bool {
14924            !self.glGetActiveSubroutineName_p.load(RELAX).is_null()
14925        }
14926        /// [glGetActiveSubroutineUniformName](http://docs.gl/gl4/glGetActiveSubroutineUniformName)(program, shadertype, index, bufSize, length, name)
14927        /// * `shadertype` group: ShaderType
14928        /// * `length` len: 1
14929        /// * `name` len: bufSize
14930        #[cfg_attr(feature = "inline", inline)]
14931        #[cfg_attr(feature = "inline_always", inline(always))]
14932        pub unsafe fn GetActiveSubroutineUniformName(
14933            &self,
14934            program: GLuint,
14935            shadertype: GLenum,
14936            index: GLuint,
14937            bufSize: GLsizei,
14938            length: *mut GLsizei,
14939            name: *mut GLchar,
14940        ) {
14941            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14942            {
14943                trace!("calling gl.GetActiveSubroutineUniformName({:?}, {:#X}, {:?}, {:?}, {:p}, {:p});", program, shadertype, index, bufSize, length, name);
14944            }
14945            let out = call_atomic_ptr_6arg(
14946                "glGetActiveSubroutineUniformName",
14947                &self.glGetActiveSubroutineUniformName_p,
14948                program,
14949                shadertype,
14950                index,
14951                bufSize,
14952                length,
14953                name,
14954            );
14955            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
14956            {
14957                self.automatic_glGetError("glGetActiveSubroutineUniformName");
14958            }
14959            out
14960        }
14961        #[doc(hidden)]
14962        pub unsafe fn GetActiveSubroutineUniformName_load_with_dyn(
14963            &self,
14964            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
14965        ) -> bool {
14966            load_dyn_name_atomic_ptr(
14967                get_proc_address,
14968                b"glGetActiveSubroutineUniformName\0",
14969                &self.glGetActiveSubroutineUniformName_p,
14970            )
14971        }
14972        #[inline]
14973        #[doc(hidden)]
14974        pub fn GetActiveSubroutineUniformName_is_loaded(&self) -> bool {
14975            !self
14976                .glGetActiveSubroutineUniformName_p
14977                .load(RELAX)
14978                .is_null()
14979        }
14980        /// [glGetActiveSubroutineUniformiv](http://docs.gl/gl4/glGetActiveSubroutineUniform)(program, shadertype, index, pname, values)
14981        /// * `shadertype` group: ShaderType
14982        /// * `pname` group: SubroutineParameterName
14983        /// * `values` len: COMPSIZE(pname)
14984        #[cfg_attr(feature = "inline", inline)]
14985        #[cfg_attr(feature = "inline_always", inline(always))]
14986        pub unsafe fn GetActiveSubroutineUniformiv(
14987            &self,
14988            program: GLuint,
14989            shadertype: GLenum,
14990            index: GLuint,
14991            pname: GLenum,
14992            values: *mut GLint,
14993        ) {
14994            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
14995            {
14996                trace!(
14997                    "calling gl.GetActiveSubroutineUniformiv({:?}, {:#X}, {:?}, {:#X}, {:p});",
14998                    program,
14999                    shadertype,
15000                    index,
15001                    pname,
15002                    values
15003                );
15004            }
15005            let out = call_atomic_ptr_5arg(
15006                "glGetActiveSubroutineUniformiv",
15007                &self.glGetActiveSubroutineUniformiv_p,
15008                program,
15009                shadertype,
15010                index,
15011                pname,
15012                values,
15013            );
15014            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15015            {
15016                self.automatic_glGetError("glGetActiveSubroutineUniformiv");
15017            }
15018            out
15019        }
15020        #[doc(hidden)]
15021        pub unsafe fn GetActiveSubroutineUniformiv_load_with_dyn(
15022            &self,
15023            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15024        ) -> bool {
15025            load_dyn_name_atomic_ptr(
15026                get_proc_address,
15027                b"glGetActiveSubroutineUniformiv\0",
15028                &self.glGetActiveSubroutineUniformiv_p,
15029            )
15030        }
15031        #[inline]
15032        #[doc(hidden)]
15033        pub fn GetActiveSubroutineUniformiv_is_loaded(&self) -> bool {
15034            !self.glGetActiveSubroutineUniformiv_p.load(RELAX).is_null()
15035        }
15036        /// [glGetActiveUniform](http://docs.gl/gl4/glGetActiveUniform)(program, index, bufSize, length, size, type_, name)
15037        /// * `length` len: 1
15038        /// * `size` len: 1
15039        /// * `type_` group: UniformType
15040        /// * `type_` len: 1
15041        /// * `name` len: bufSize
15042        #[cfg_attr(feature = "inline", inline)]
15043        #[cfg_attr(feature = "inline_always", inline(always))]
15044        pub unsafe fn GetActiveUniform(
15045            &self,
15046            program: GLuint,
15047            index: GLuint,
15048            bufSize: GLsizei,
15049            length: *mut GLsizei,
15050            size: *mut GLint,
15051            type_: *mut GLenum,
15052            name: *mut GLchar,
15053        ) {
15054            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15055            {
15056                trace!(
15057                    "calling gl.GetActiveUniform({:?}, {:?}, {:?}, {:p}, {:p}, {:p}, {:p});",
15058                    program,
15059                    index,
15060                    bufSize,
15061                    length,
15062                    size,
15063                    type_,
15064                    name
15065                );
15066            }
15067            let out = call_atomic_ptr_7arg(
15068                "glGetActiveUniform",
15069                &self.glGetActiveUniform_p,
15070                program,
15071                index,
15072                bufSize,
15073                length,
15074                size,
15075                type_,
15076                name,
15077            );
15078            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15079            {
15080                self.automatic_glGetError("glGetActiveUniform");
15081            }
15082            out
15083        }
15084        #[doc(hidden)]
15085        pub unsafe fn GetActiveUniform_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"glGetActiveUniform\0",
15092                &self.glGetActiveUniform_p,
15093            )
15094        }
15095        #[inline]
15096        #[doc(hidden)]
15097        pub fn GetActiveUniform_is_loaded(&self) -> bool {
15098            !self.glGetActiveUniform_p.load(RELAX).is_null()
15099        }
15100        /// [glGetActiveUniformBlockName](http://docs.gl/gl4/glGetActiveUniformBlockName)(program, uniformBlockIndex, bufSize, length, uniformBlockName)
15101        /// * `length` len: 1
15102        /// * `uniformBlockName` len: bufSize
15103        #[cfg_attr(feature = "inline", inline)]
15104        #[cfg_attr(feature = "inline_always", inline(always))]
15105        pub unsafe fn GetActiveUniformBlockName(
15106            &self,
15107            program: GLuint,
15108            uniformBlockIndex: GLuint,
15109            bufSize: GLsizei,
15110            length: *mut GLsizei,
15111            uniformBlockName: *mut GLchar,
15112        ) {
15113            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15114            {
15115                trace!(
15116                    "calling gl.GetActiveUniformBlockName({:?}, {:?}, {:?}, {:p}, {:p});",
15117                    program,
15118                    uniformBlockIndex,
15119                    bufSize,
15120                    length,
15121                    uniformBlockName
15122                );
15123            }
15124            let out = call_atomic_ptr_5arg(
15125                "glGetActiveUniformBlockName",
15126                &self.glGetActiveUniformBlockName_p,
15127                program,
15128                uniformBlockIndex,
15129                bufSize,
15130                length,
15131                uniformBlockName,
15132            );
15133            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15134            {
15135                self.automatic_glGetError("glGetActiveUniformBlockName");
15136            }
15137            out
15138        }
15139        #[doc(hidden)]
15140        pub unsafe fn GetActiveUniformBlockName_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"glGetActiveUniformBlockName\0",
15147                &self.glGetActiveUniformBlockName_p,
15148            )
15149        }
15150        #[inline]
15151        #[doc(hidden)]
15152        pub fn GetActiveUniformBlockName_is_loaded(&self) -> bool {
15153            !self.glGetActiveUniformBlockName_p.load(RELAX).is_null()
15154        }
15155        /// [glGetActiveUniformBlockiv](http://docs.gl/gl4/glGetActiveUniformBlockiv)(program, uniformBlockIndex, pname, params)
15156        /// * `pname` group: UniformBlockPName
15157        /// * `params` len: COMPSIZE(program,uniformBlockIndex,pname)
15158        #[cfg_attr(feature = "inline", inline)]
15159        #[cfg_attr(feature = "inline_always", inline(always))]
15160        pub unsafe fn GetActiveUniformBlockiv(
15161            &self,
15162            program: GLuint,
15163            uniformBlockIndex: GLuint,
15164            pname: GLenum,
15165            params: *mut GLint,
15166        ) {
15167            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15168            {
15169                trace!(
15170                    "calling gl.GetActiveUniformBlockiv({:?}, {:?}, {:#X}, {:p});",
15171                    program,
15172                    uniformBlockIndex,
15173                    pname,
15174                    params
15175                );
15176            }
15177            let out = call_atomic_ptr_4arg(
15178                "glGetActiveUniformBlockiv",
15179                &self.glGetActiveUniformBlockiv_p,
15180                program,
15181                uniformBlockIndex,
15182                pname,
15183                params,
15184            );
15185            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15186            {
15187                self.automatic_glGetError("glGetActiveUniformBlockiv");
15188            }
15189            out
15190        }
15191        #[doc(hidden)]
15192        pub unsafe fn GetActiveUniformBlockiv_load_with_dyn(
15193            &self,
15194            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15195        ) -> bool {
15196            load_dyn_name_atomic_ptr(
15197                get_proc_address,
15198                b"glGetActiveUniformBlockiv\0",
15199                &self.glGetActiveUniformBlockiv_p,
15200            )
15201        }
15202        #[inline]
15203        #[doc(hidden)]
15204        pub fn GetActiveUniformBlockiv_is_loaded(&self) -> bool {
15205            !self.glGetActiveUniformBlockiv_p.load(RELAX).is_null()
15206        }
15207        /// [glGetActiveUniformName](http://docs.gl/gl4/glGetActiveUniformName)(program, uniformIndex, bufSize, length, uniformName)
15208        /// * `length` len: 1
15209        /// * `uniformName` len: bufSize
15210        #[cfg_attr(feature = "inline", inline)]
15211        #[cfg_attr(feature = "inline_always", inline(always))]
15212        pub unsafe fn GetActiveUniformName(
15213            &self,
15214            program: GLuint,
15215            uniformIndex: GLuint,
15216            bufSize: GLsizei,
15217            length: *mut GLsizei,
15218            uniformName: *mut GLchar,
15219        ) {
15220            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15221            {
15222                trace!(
15223                    "calling gl.GetActiveUniformName({:?}, {:?}, {:?}, {:p}, {:p});",
15224                    program,
15225                    uniformIndex,
15226                    bufSize,
15227                    length,
15228                    uniformName
15229                );
15230            }
15231            let out = call_atomic_ptr_5arg(
15232                "glGetActiveUniformName",
15233                &self.glGetActiveUniformName_p,
15234                program,
15235                uniformIndex,
15236                bufSize,
15237                length,
15238                uniformName,
15239            );
15240            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15241            {
15242                self.automatic_glGetError("glGetActiveUniformName");
15243            }
15244            out
15245        }
15246        #[doc(hidden)]
15247        pub unsafe fn GetActiveUniformName_load_with_dyn(
15248            &self,
15249            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15250        ) -> bool {
15251            load_dyn_name_atomic_ptr(
15252                get_proc_address,
15253                b"glGetActiveUniformName\0",
15254                &self.glGetActiveUniformName_p,
15255            )
15256        }
15257        #[inline]
15258        #[doc(hidden)]
15259        pub fn GetActiveUniformName_is_loaded(&self) -> bool {
15260            !self.glGetActiveUniformName_p.load(RELAX).is_null()
15261        }
15262        /// [glGetActiveUniformsiv](http://docs.gl/gl4/glGetActiveUniformsiv)(program, uniformCount, uniformIndices, pname, params)
15263        /// * `uniformIndices` len: uniformCount
15264        /// * `pname` group: UniformPName
15265        /// * `params` len: COMPSIZE(uniformCount,pname)
15266        #[cfg_attr(feature = "inline", inline)]
15267        #[cfg_attr(feature = "inline_always", inline(always))]
15268        pub unsafe fn GetActiveUniformsiv(
15269            &self,
15270            program: GLuint,
15271            uniformCount: GLsizei,
15272            uniformIndices: *const GLuint,
15273            pname: GLenum,
15274            params: *mut GLint,
15275        ) {
15276            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15277            {
15278                trace!(
15279                    "calling gl.GetActiveUniformsiv({:?}, {:?}, {:p}, {:#X}, {:p});",
15280                    program,
15281                    uniformCount,
15282                    uniformIndices,
15283                    pname,
15284                    params
15285                );
15286            }
15287            let out = call_atomic_ptr_5arg(
15288                "glGetActiveUniformsiv",
15289                &self.glGetActiveUniformsiv_p,
15290                program,
15291                uniformCount,
15292                uniformIndices,
15293                pname,
15294                params,
15295            );
15296            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15297            {
15298                self.automatic_glGetError("glGetActiveUniformsiv");
15299            }
15300            out
15301        }
15302        #[doc(hidden)]
15303        pub unsafe fn GetActiveUniformsiv_load_with_dyn(
15304            &self,
15305            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15306        ) -> bool {
15307            load_dyn_name_atomic_ptr(
15308                get_proc_address,
15309                b"glGetActiveUniformsiv\0",
15310                &self.glGetActiveUniformsiv_p,
15311            )
15312        }
15313        #[inline]
15314        #[doc(hidden)]
15315        pub fn GetActiveUniformsiv_is_loaded(&self) -> bool {
15316            !self.glGetActiveUniformsiv_p.load(RELAX).is_null()
15317        }
15318        /// [glGetAttachedShaders](http://docs.gl/gl4/glGetAttachedShaders)(program, maxCount, count, shaders)
15319        /// * `count` len: 1
15320        /// * `shaders` len: maxCount
15321        #[cfg_attr(feature = "inline", inline)]
15322        #[cfg_attr(feature = "inline_always", inline(always))]
15323        pub unsafe fn GetAttachedShaders(
15324            &self,
15325            program: GLuint,
15326            maxCount: GLsizei,
15327            count: *mut GLsizei,
15328            shaders: *mut GLuint,
15329        ) {
15330            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15331            {
15332                trace!(
15333                    "calling gl.GetAttachedShaders({:?}, {:?}, {:p}, {:p});",
15334                    program,
15335                    maxCount,
15336                    count,
15337                    shaders
15338                );
15339            }
15340            let out = call_atomic_ptr_4arg(
15341                "glGetAttachedShaders",
15342                &self.glGetAttachedShaders_p,
15343                program,
15344                maxCount,
15345                count,
15346                shaders,
15347            );
15348            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15349            {
15350                self.automatic_glGetError("glGetAttachedShaders");
15351            }
15352            out
15353        }
15354        #[doc(hidden)]
15355        pub unsafe fn GetAttachedShaders_load_with_dyn(
15356            &self,
15357            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15358        ) -> bool {
15359            load_dyn_name_atomic_ptr(
15360                get_proc_address,
15361                b"glGetAttachedShaders\0",
15362                &self.glGetAttachedShaders_p,
15363            )
15364        }
15365        #[inline]
15366        #[doc(hidden)]
15367        pub fn GetAttachedShaders_is_loaded(&self) -> bool {
15368            !self.glGetAttachedShaders_p.load(RELAX).is_null()
15369        }
15370        /// [glGetAttribLocation](http://docs.gl/gl4/glGetAttribLocation)(program, name)
15371        #[cfg_attr(feature = "inline", inline)]
15372        #[cfg_attr(feature = "inline_always", inline(always))]
15373        pub unsafe fn GetAttribLocation(&self, program: GLuint, name: *const GLchar) -> GLint {
15374            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15375            {
15376                trace!("calling gl.GetAttribLocation({:?}, {:p});", program, name);
15377            }
15378            let out = call_atomic_ptr_2arg(
15379                "glGetAttribLocation",
15380                &self.glGetAttribLocation_p,
15381                program,
15382                name,
15383            );
15384            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15385            {
15386                self.automatic_glGetError("glGetAttribLocation");
15387            }
15388            out
15389        }
15390        #[doc(hidden)]
15391        pub unsafe fn GetAttribLocation_load_with_dyn(
15392            &self,
15393            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15394        ) -> bool {
15395            load_dyn_name_atomic_ptr(
15396                get_proc_address,
15397                b"glGetAttribLocation\0",
15398                &self.glGetAttribLocation_p,
15399            )
15400        }
15401        #[inline]
15402        #[doc(hidden)]
15403        pub fn GetAttribLocation_is_loaded(&self) -> bool {
15404            !self.glGetAttribLocation_p.load(RELAX).is_null()
15405        }
15406        /// [glGetBooleanIndexedvEXT](http://docs.gl/gl4/glGetBooleanIndexedvEXT)(target, index, data)
15407        /// * `target` group: BufferTargetARB
15408        /// * `data` len: COMPSIZE(target)
15409        /// * alias of: [`glGetBooleani_v`]
15410        #[cfg_attr(feature = "inline", inline)]
15411        #[cfg_attr(feature = "inline_always", inline(always))]
15412        pub unsafe fn GetBooleanIndexedvEXT(
15413            &self,
15414            target: GLenum,
15415            index: GLuint,
15416            data: *mut GLboolean,
15417        ) {
15418            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15419            {
15420                trace!(
15421                    "calling gl.GetBooleanIndexedvEXT({:#X}, {:?}, {:p});",
15422                    target,
15423                    index,
15424                    data
15425                );
15426            }
15427            let out = call_atomic_ptr_3arg(
15428                "glGetBooleanIndexedvEXT",
15429                &self.glGetBooleanIndexedvEXT_p,
15430                target,
15431                index,
15432                data,
15433            );
15434            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15435            {
15436                self.automatic_glGetError("glGetBooleanIndexedvEXT");
15437            }
15438            out
15439        }
15440        #[doc(hidden)]
15441        pub unsafe fn GetBooleanIndexedvEXT_load_with_dyn(
15442            &self,
15443            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15444        ) -> bool {
15445            load_dyn_name_atomic_ptr(
15446                get_proc_address,
15447                b"glGetBooleanIndexedvEXT\0",
15448                &self.glGetBooleanIndexedvEXT_p,
15449            )
15450        }
15451        #[inline]
15452        #[doc(hidden)]
15453        pub fn GetBooleanIndexedvEXT_is_loaded(&self) -> bool {
15454            !self.glGetBooleanIndexedvEXT_p.load(RELAX).is_null()
15455        }
15456        /// [glGetBooleani_v](http://docs.gl/gl4/glGet)(target, index, data)
15457        /// * `target` group: BufferTargetARB
15458        /// * `data` len: COMPSIZE(target)
15459        #[cfg_attr(feature = "inline", inline)]
15460        #[cfg_attr(feature = "inline_always", inline(always))]
15461        pub unsafe fn GetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) {
15462            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15463            {
15464                trace!(
15465                    "calling gl.GetBooleani_v({:#X}, {:?}, {:p});",
15466                    target,
15467                    index,
15468                    data
15469                );
15470            }
15471            let out = call_atomic_ptr_3arg(
15472                "glGetBooleani_v",
15473                &self.glGetBooleani_v_p,
15474                target,
15475                index,
15476                data,
15477            );
15478            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15479            {
15480                self.automatic_glGetError("glGetBooleani_v");
15481            }
15482            out
15483        }
15484        #[doc(hidden)]
15485        pub unsafe fn GetBooleani_v_load_with_dyn(
15486            &self,
15487            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15488        ) -> bool {
15489            load_dyn_name_atomic_ptr(
15490                get_proc_address,
15491                b"glGetBooleani_v\0",
15492                &self.glGetBooleani_v_p,
15493            )
15494        }
15495        #[inline]
15496        #[doc(hidden)]
15497        pub fn GetBooleani_v_is_loaded(&self) -> bool {
15498            !self.glGetBooleani_v_p.load(RELAX).is_null()
15499        }
15500        /// [glGetBooleanv](http://docs.gl/gl4/glGet)(pname, data)
15501        /// * `pname` group: GetPName
15502        /// * `data` len: COMPSIZE(pname)
15503        #[cfg_attr(feature = "inline", inline)]
15504        #[cfg_attr(feature = "inline_always", inline(always))]
15505        pub unsafe fn GetBooleanv(&self, pname: GLenum, data: *mut GLboolean) {
15506            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15507            {
15508                trace!("calling gl.GetBooleanv({:#X}, {:p});", pname, data);
15509            }
15510            let out = call_atomic_ptr_2arg("glGetBooleanv", &self.glGetBooleanv_p, pname, data);
15511            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15512            {
15513                self.automatic_glGetError("glGetBooleanv");
15514            }
15515            out
15516        }
15517        #[doc(hidden)]
15518        pub unsafe fn GetBooleanv_load_with_dyn(
15519            &self,
15520            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15521        ) -> bool {
15522            load_dyn_name_atomic_ptr(get_proc_address, b"glGetBooleanv\0", &self.glGetBooleanv_p)
15523        }
15524        #[inline]
15525        #[doc(hidden)]
15526        pub fn GetBooleanv_is_loaded(&self) -> bool {
15527            !self.glGetBooleanv_p.load(RELAX).is_null()
15528        }
15529        /// [glGetBufferParameteri64v](http://docs.gl/gl4/glGetBufferParameter)(target, pname, params)
15530        /// * `target` group: BufferTargetARB
15531        /// * `pname` group: BufferPNameARB
15532        /// * `params` len: COMPSIZE(pname)
15533        #[cfg_attr(feature = "inline", inline)]
15534        #[cfg_attr(feature = "inline_always", inline(always))]
15535        pub unsafe fn GetBufferParameteri64v(
15536            &self,
15537            target: GLenum,
15538            pname: GLenum,
15539            params: *mut GLint64,
15540        ) {
15541            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15542            {
15543                trace!(
15544                    "calling gl.GetBufferParameteri64v({:#X}, {:#X}, {:p});",
15545                    target,
15546                    pname,
15547                    params
15548                );
15549            }
15550            let out = call_atomic_ptr_3arg(
15551                "glGetBufferParameteri64v",
15552                &self.glGetBufferParameteri64v_p,
15553                target,
15554                pname,
15555                params,
15556            );
15557            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15558            {
15559                self.automatic_glGetError("glGetBufferParameteri64v");
15560            }
15561            out
15562        }
15563        #[doc(hidden)]
15564        pub unsafe fn GetBufferParameteri64v_load_with_dyn(
15565            &self,
15566            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15567        ) -> bool {
15568            load_dyn_name_atomic_ptr(
15569                get_proc_address,
15570                b"glGetBufferParameteri64v\0",
15571                &self.glGetBufferParameteri64v_p,
15572            )
15573        }
15574        #[inline]
15575        #[doc(hidden)]
15576        pub fn GetBufferParameteri64v_is_loaded(&self) -> bool {
15577            !self.glGetBufferParameteri64v_p.load(RELAX).is_null()
15578        }
15579        /// [glGetBufferParameteriv](http://docs.gl/gl4/glGetBufferParameter)(target, pname, params)
15580        /// * `target` group: BufferTargetARB
15581        /// * `pname` group: BufferPNameARB
15582        /// * `params` len: COMPSIZE(pname)
15583        #[cfg_attr(feature = "inline", inline)]
15584        #[cfg_attr(feature = "inline_always", inline(always))]
15585        pub unsafe fn GetBufferParameteriv(
15586            &self,
15587            target: GLenum,
15588            pname: GLenum,
15589            params: *mut GLint,
15590        ) {
15591            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15592            {
15593                trace!(
15594                    "calling gl.GetBufferParameteriv({:#X}, {:#X}, {:p});",
15595                    target,
15596                    pname,
15597                    params
15598                );
15599            }
15600            let out = call_atomic_ptr_3arg(
15601                "glGetBufferParameteriv",
15602                &self.glGetBufferParameteriv_p,
15603                target,
15604                pname,
15605                params,
15606            );
15607            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15608            {
15609                self.automatic_glGetError("glGetBufferParameteriv");
15610            }
15611            out
15612        }
15613        #[doc(hidden)]
15614        pub unsafe fn GetBufferParameteriv_load_with_dyn(
15615            &self,
15616            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15617        ) -> bool {
15618            load_dyn_name_atomic_ptr(
15619                get_proc_address,
15620                b"glGetBufferParameteriv\0",
15621                &self.glGetBufferParameteriv_p,
15622            )
15623        }
15624        #[inline]
15625        #[doc(hidden)]
15626        pub fn GetBufferParameteriv_is_loaded(&self) -> bool {
15627            !self.glGetBufferParameteriv_p.load(RELAX).is_null()
15628        }
15629        /// [glGetBufferPointerv](http://docs.gl/gl4/glGetBufferPointerv)(target, pname, params)
15630        /// * `target` group: BufferTargetARB
15631        /// * `pname` group: BufferPointerNameARB
15632        /// * `params` len: 1
15633        #[cfg_attr(feature = "inline", inline)]
15634        #[cfg_attr(feature = "inline_always", inline(always))]
15635        pub unsafe fn GetBufferPointerv(
15636            &self,
15637            target: GLenum,
15638            pname: GLenum,
15639            params: *mut *mut c_void,
15640        ) {
15641            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15642            {
15643                trace!(
15644                    "calling gl.GetBufferPointerv({:#X}, {:#X}, {:p});",
15645                    target,
15646                    pname,
15647                    params
15648                );
15649            }
15650            let out = call_atomic_ptr_3arg(
15651                "glGetBufferPointerv",
15652                &self.glGetBufferPointerv_p,
15653                target,
15654                pname,
15655                params,
15656            );
15657            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15658            {
15659                self.automatic_glGetError("glGetBufferPointerv");
15660            }
15661            out
15662        }
15663        #[doc(hidden)]
15664        pub unsafe fn GetBufferPointerv_load_with_dyn(
15665            &self,
15666            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15667        ) -> bool {
15668            load_dyn_name_atomic_ptr(
15669                get_proc_address,
15670                b"glGetBufferPointerv\0",
15671                &self.glGetBufferPointerv_p,
15672            )
15673        }
15674        #[inline]
15675        #[doc(hidden)]
15676        pub fn GetBufferPointerv_is_loaded(&self) -> bool {
15677            !self.glGetBufferPointerv_p.load(RELAX).is_null()
15678        }
15679        /// [glGetBufferSubData](http://docs.gl/gl4/glGetBufferSubData)(target, offset, size, data)
15680        /// * `target` group: BufferTargetARB
15681        /// * `offset` group: BufferOffset
15682        /// * `size` group: BufferSize
15683        /// * `data` len: size
15684        #[cfg_attr(feature = "inline", inline)]
15685        #[cfg_attr(feature = "inline_always", inline(always))]
15686        pub unsafe fn GetBufferSubData(
15687            &self,
15688            target: GLenum,
15689            offset: GLintptr,
15690            size: GLsizeiptr,
15691            data: *mut c_void,
15692        ) {
15693            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15694            {
15695                trace!(
15696                    "calling gl.GetBufferSubData({:#X}, {:?}, {:?}, {:p});",
15697                    target,
15698                    offset,
15699                    size,
15700                    data
15701                );
15702            }
15703            let out = call_atomic_ptr_4arg(
15704                "glGetBufferSubData",
15705                &self.glGetBufferSubData_p,
15706                target,
15707                offset,
15708                size,
15709                data,
15710            );
15711            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15712            {
15713                self.automatic_glGetError("glGetBufferSubData");
15714            }
15715            out
15716        }
15717        #[doc(hidden)]
15718        pub unsafe fn GetBufferSubData_load_with_dyn(
15719            &self,
15720            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15721        ) -> bool {
15722            load_dyn_name_atomic_ptr(
15723                get_proc_address,
15724                b"glGetBufferSubData\0",
15725                &self.glGetBufferSubData_p,
15726            )
15727        }
15728        #[inline]
15729        #[doc(hidden)]
15730        pub fn GetBufferSubData_is_loaded(&self) -> bool {
15731            !self.glGetBufferSubData_p.load(RELAX).is_null()
15732        }
15733        /// [glGetCompressedTexImage](http://docs.gl/gl4/glGetCompressedTexImage)(target, level, img)
15734        /// * `target` group: TextureTarget
15735        /// * `level` group: CheckedInt32
15736        /// * `img` group: CompressedTextureARB
15737        /// * `img` len: COMPSIZE(target,level)
15738        #[cfg_attr(feature = "inline", inline)]
15739        #[cfg_attr(feature = "inline_always", inline(always))]
15740        pub unsafe fn GetCompressedTexImage(&self, target: GLenum, level: GLint, img: *mut c_void) {
15741            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15742            {
15743                trace!(
15744                    "calling gl.GetCompressedTexImage({:#X}, {:?}, {:p});",
15745                    target,
15746                    level,
15747                    img
15748                );
15749            }
15750            let out = call_atomic_ptr_3arg(
15751                "glGetCompressedTexImage",
15752                &self.glGetCompressedTexImage_p,
15753                target,
15754                level,
15755                img,
15756            );
15757            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15758            {
15759                self.automatic_glGetError("glGetCompressedTexImage");
15760            }
15761            out
15762        }
15763        #[doc(hidden)]
15764        pub unsafe fn GetCompressedTexImage_load_with_dyn(
15765            &self,
15766            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15767        ) -> bool {
15768            load_dyn_name_atomic_ptr(
15769                get_proc_address,
15770                b"glGetCompressedTexImage\0",
15771                &self.glGetCompressedTexImage_p,
15772            )
15773        }
15774        #[inline]
15775        #[doc(hidden)]
15776        pub fn GetCompressedTexImage_is_loaded(&self) -> bool {
15777            !self.glGetCompressedTexImage_p.load(RELAX).is_null()
15778        }
15779        /// [glGetCompressedTextureImage](http://docs.gl/gl4/glGetCompressedTextureImage)(texture, level, bufSize, pixels)
15780        #[cfg_attr(feature = "inline", inline)]
15781        #[cfg_attr(feature = "inline_always", inline(always))]
15782        pub unsafe fn GetCompressedTextureImage(
15783            &self,
15784            texture: GLuint,
15785            level: GLint,
15786            bufSize: GLsizei,
15787            pixels: *mut c_void,
15788        ) {
15789            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15790            {
15791                trace!(
15792                    "calling gl.GetCompressedTextureImage({:?}, {:?}, {:?}, {:p});",
15793                    texture,
15794                    level,
15795                    bufSize,
15796                    pixels
15797                );
15798            }
15799            let out = call_atomic_ptr_4arg(
15800                "glGetCompressedTextureImage",
15801                &self.glGetCompressedTextureImage_p,
15802                texture,
15803                level,
15804                bufSize,
15805                pixels,
15806            );
15807            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15808            {
15809                self.automatic_glGetError("glGetCompressedTextureImage");
15810            }
15811            out
15812        }
15813        #[doc(hidden)]
15814        pub unsafe fn GetCompressedTextureImage_load_with_dyn(
15815            &self,
15816            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15817        ) -> bool {
15818            load_dyn_name_atomic_ptr(
15819                get_proc_address,
15820                b"glGetCompressedTextureImage\0",
15821                &self.glGetCompressedTextureImage_p,
15822            )
15823        }
15824        #[inline]
15825        #[doc(hidden)]
15826        pub fn GetCompressedTextureImage_is_loaded(&self) -> bool {
15827            !self.glGetCompressedTextureImage_p.load(RELAX).is_null()
15828        }
15829        /// [glGetCompressedTextureSubImage](http://docs.gl/gl4/glGetCompressedTextureSubImage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels)
15830        #[cfg_attr(feature = "inline", inline)]
15831        #[cfg_attr(feature = "inline_always", inline(always))]
15832        pub unsafe fn GetCompressedTextureSubImage(
15833            &self,
15834            texture: GLuint,
15835            level: GLint,
15836            xoffset: GLint,
15837            yoffset: GLint,
15838            zoffset: GLint,
15839            width: GLsizei,
15840            height: GLsizei,
15841            depth: GLsizei,
15842            bufSize: GLsizei,
15843            pixels: *mut c_void,
15844        ) {
15845            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15846            {
15847                trace!("calling gl.GetCompressedTextureSubImage({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:p});", texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels);
15848            }
15849            let out = call_atomic_ptr_10arg(
15850                "glGetCompressedTextureSubImage",
15851                &self.glGetCompressedTextureSubImage_p,
15852                texture,
15853                level,
15854                xoffset,
15855                yoffset,
15856                zoffset,
15857                width,
15858                height,
15859                depth,
15860                bufSize,
15861                pixels,
15862            );
15863            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15864            {
15865                self.automatic_glGetError("glGetCompressedTextureSubImage");
15866            }
15867            out
15868        }
15869        #[doc(hidden)]
15870        pub unsafe fn GetCompressedTextureSubImage_load_with_dyn(
15871            &self,
15872            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15873        ) -> bool {
15874            load_dyn_name_atomic_ptr(
15875                get_proc_address,
15876                b"glGetCompressedTextureSubImage\0",
15877                &self.glGetCompressedTextureSubImage_p,
15878            )
15879        }
15880        #[inline]
15881        #[doc(hidden)]
15882        pub fn GetCompressedTextureSubImage_is_loaded(&self) -> bool {
15883            !self.glGetCompressedTextureSubImage_p.load(RELAX).is_null()
15884        }
15885        /// [glGetDebugMessageLog](http://docs.gl/gl4/glGetDebugMessageLog)(count, bufSize, sources, types, ids, severities, lengths, messageLog)
15886        /// * `sources` group: DebugSource
15887        /// * `sources` len: count
15888        /// * `types` group: DebugType
15889        /// * `types` len: count
15890        /// * `ids` len: count
15891        /// * `severities` group: DebugSeverity
15892        /// * `severities` len: count
15893        /// * `lengths` len: count
15894        /// * `messageLog` len: bufSize
15895        #[cfg_attr(feature = "inline", inline)]
15896        #[cfg_attr(feature = "inline_always", inline(always))]
15897        pub unsafe fn GetDebugMessageLog(
15898            &self,
15899            count: GLuint,
15900            bufSize: GLsizei,
15901            sources: *mut GLenum,
15902            types: *mut GLenum,
15903            ids: *mut GLuint,
15904            severities: *mut GLenum,
15905            lengths: *mut GLsizei,
15906            messageLog: *mut GLchar,
15907        ) -> GLuint {
15908            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15909            {
15910                trace!("calling gl.GetDebugMessageLog({:?}, {:?}, {:p}, {:p}, {:p}, {:p}, {:p}, {:p});", count, bufSize, sources, types, ids, severities, lengths, messageLog);
15911            }
15912            let out = call_atomic_ptr_8arg(
15913                "glGetDebugMessageLog",
15914                &self.glGetDebugMessageLog_p,
15915                count,
15916                bufSize,
15917                sources,
15918                types,
15919                ids,
15920                severities,
15921                lengths,
15922                messageLog,
15923            );
15924            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15925            {
15926                self.automatic_glGetError("glGetDebugMessageLog");
15927            }
15928            out
15929        }
15930        #[doc(hidden)]
15931        pub unsafe fn GetDebugMessageLog_load_with_dyn(
15932            &self,
15933            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15934        ) -> bool {
15935            load_dyn_name_atomic_ptr(
15936                get_proc_address,
15937                b"glGetDebugMessageLog\0",
15938                &self.glGetDebugMessageLog_p,
15939            )
15940        }
15941        #[inline]
15942        #[doc(hidden)]
15943        pub fn GetDebugMessageLog_is_loaded(&self) -> bool {
15944            !self.glGetDebugMessageLog_p.load(RELAX).is_null()
15945        }
15946        /// [glGetDebugMessageLogARB](http://docs.gl/gl4/glGetDebugMessageLogARB)(count, bufSize, sources, types, ids, severities, lengths, messageLog)
15947        /// * `sources` group: DebugSource
15948        /// * `sources` len: count
15949        /// * `types` group: DebugType
15950        /// * `types` len: count
15951        /// * `ids` len: count
15952        /// * `severities` group: DebugSeverity
15953        /// * `severities` len: count
15954        /// * `lengths` len: count
15955        /// * `messageLog` len: bufSize
15956        /// * alias of: [`glGetDebugMessageLog`]
15957        #[cfg_attr(feature = "inline", inline)]
15958        #[cfg_attr(feature = "inline_always", inline(always))]
15959        pub unsafe fn GetDebugMessageLogARB(
15960            &self,
15961            count: GLuint,
15962            bufSize: GLsizei,
15963            sources: *mut GLenum,
15964            types: *mut GLenum,
15965            ids: *mut GLuint,
15966            severities: *mut GLenum,
15967            lengths: *mut GLsizei,
15968            messageLog: *mut GLchar,
15969        ) -> GLuint {
15970            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
15971            {
15972                trace!("calling gl.GetDebugMessageLogARB({:?}, {:?}, {:p}, {:p}, {:p}, {:p}, {:p}, {:p});", count, bufSize, sources, types, ids, severities, lengths, messageLog);
15973            }
15974            let out = call_atomic_ptr_8arg(
15975                "glGetDebugMessageLogARB",
15976                &self.glGetDebugMessageLogARB_p,
15977                count,
15978                bufSize,
15979                sources,
15980                types,
15981                ids,
15982                severities,
15983                lengths,
15984                messageLog,
15985            );
15986            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
15987            {
15988                self.automatic_glGetError("glGetDebugMessageLogARB");
15989            }
15990            out
15991        }
15992        #[doc(hidden)]
15993        pub unsafe fn GetDebugMessageLogARB_load_with_dyn(
15994            &self,
15995            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
15996        ) -> bool {
15997            load_dyn_name_atomic_ptr(
15998                get_proc_address,
15999                b"glGetDebugMessageLogARB\0",
16000                &self.glGetDebugMessageLogARB_p,
16001            )
16002        }
16003        #[inline]
16004        #[doc(hidden)]
16005        pub fn GetDebugMessageLogARB_is_loaded(&self) -> bool {
16006            !self.glGetDebugMessageLogARB_p.load(RELAX).is_null()
16007        }
16008        /// [glGetDebugMessageLogKHR](http://docs.gl/gl4/glGetDebugMessageLogKHR)(count, bufSize, sources, types, ids, severities, lengths, messageLog)
16009        /// * `sources` group: DebugSource
16010        /// * `sources` len: count
16011        /// * `types` group: DebugType
16012        /// * `types` len: count
16013        /// * `ids` len: count
16014        /// * `severities` group: DebugSeverity
16015        /// * `severities` len: count
16016        /// * `lengths` len: count
16017        /// * `messageLog` len: bufSize
16018        /// * alias of: [`glGetDebugMessageLog`]
16019        #[cfg_attr(feature = "inline", inline)]
16020        #[cfg_attr(feature = "inline_always", inline(always))]
16021        pub unsafe fn GetDebugMessageLogKHR(
16022            &self,
16023            count: GLuint,
16024            bufSize: GLsizei,
16025            sources: *mut GLenum,
16026            types: *mut GLenum,
16027            ids: *mut GLuint,
16028            severities: *mut GLenum,
16029            lengths: *mut GLsizei,
16030            messageLog: *mut GLchar,
16031        ) -> GLuint {
16032            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16033            {
16034                trace!("calling gl.GetDebugMessageLogKHR({:?}, {:?}, {:p}, {:p}, {:p}, {:p}, {:p}, {:p});", count, bufSize, sources, types, ids, severities, lengths, messageLog);
16035            }
16036            let out = call_atomic_ptr_8arg(
16037                "glGetDebugMessageLogKHR",
16038                &self.glGetDebugMessageLogKHR_p,
16039                count,
16040                bufSize,
16041                sources,
16042                types,
16043                ids,
16044                severities,
16045                lengths,
16046                messageLog,
16047            );
16048            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16049            {
16050                self.automatic_glGetError("glGetDebugMessageLogKHR");
16051            }
16052            out
16053        }
16054        #[doc(hidden)]
16055        pub unsafe fn GetDebugMessageLogKHR_load_with_dyn(
16056            &self,
16057            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16058        ) -> bool {
16059            load_dyn_name_atomic_ptr(
16060                get_proc_address,
16061                b"glGetDebugMessageLogKHR\0",
16062                &self.glGetDebugMessageLogKHR_p,
16063            )
16064        }
16065        #[inline]
16066        #[doc(hidden)]
16067        pub fn GetDebugMessageLogKHR_is_loaded(&self) -> bool {
16068            !self.glGetDebugMessageLogKHR_p.load(RELAX).is_null()
16069        }
16070        /// [glGetDoublei_v](http://docs.gl/gl4/glGetDoublei_v)(target, index, data)
16071        /// * `target` group: GetPName
16072        /// * `data` len: COMPSIZE(target)
16073        #[cfg_attr(feature = "inline", inline)]
16074        #[cfg_attr(feature = "inline_always", inline(always))]
16075        pub unsafe fn GetDoublei_v(&self, target: GLenum, index: GLuint, data: *mut GLdouble) {
16076            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16077            {
16078                trace!(
16079                    "calling gl.GetDoublei_v({:#X}, {:?}, {:p});",
16080                    target,
16081                    index,
16082                    data
16083                );
16084            }
16085            let out = call_atomic_ptr_3arg(
16086                "glGetDoublei_v",
16087                &self.glGetDoublei_v_p,
16088                target,
16089                index,
16090                data,
16091            );
16092            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16093            {
16094                self.automatic_glGetError("glGetDoublei_v");
16095            }
16096            out
16097        }
16098        #[doc(hidden)]
16099        pub unsafe fn GetDoublei_v_load_with_dyn(
16100            &self,
16101            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16102        ) -> bool {
16103            load_dyn_name_atomic_ptr(
16104                get_proc_address,
16105                b"glGetDoublei_v\0",
16106                &self.glGetDoublei_v_p,
16107            )
16108        }
16109        #[inline]
16110        #[doc(hidden)]
16111        pub fn GetDoublei_v_is_loaded(&self) -> bool {
16112            !self.glGetDoublei_v_p.load(RELAX).is_null()
16113        }
16114        /// [glGetDoublev](http://docs.gl/gl4/glGetDoublev)(pname, data)
16115        /// * `pname` group: GetPName
16116        /// * `data` len: COMPSIZE(pname)
16117        #[cfg_attr(feature = "inline", inline)]
16118        #[cfg_attr(feature = "inline_always", inline(always))]
16119        pub unsafe fn GetDoublev(&self, pname: GLenum, data: *mut GLdouble) {
16120            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16121            {
16122                trace!("calling gl.GetDoublev({:#X}, {:p});", pname, data);
16123            }
16124            let out = call_atomic_ptr_2arg("glGetDoublev", &self.glGetDoublev_p, pname, data);
16125            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16126            {
16127                self.automatic_glGetError("glGetDoublev");
16128            }
16129            out
16130        }
16131        #[doc(hidden)]
16132        pub unsafe fn GetDoublev_load_with_dyn(
16133            &self,
16134            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16135        ) -> bool {
16136            load_dyn_name_atomic_ptr(get_proc_address, b"glGetDoublev\0", &self.glGetDoublev_p)
16137        }
16138        #[inline]
16139        #[doc(hidden)]
16140        pub fn GetDoublev_is_loaded(&self) -> bool {
16141            !self.glGetDoublev_p.load(RELAX).is_null()
16142        }
16143        /// [glGetError](http://docs.gl/gl4/glGetError)()
16144        /// * return value group: ErrorCode
16145        #[cfg_attr(feature = "inline", inline)]
16146        #[cfg_attr(feature = "inline_always", inline(always))]
16147        pub unsafe fn GetError(&self) -> GLenum {
16148            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16149            {
16150                trace!("calling gl.GetError();",);
16151            }
16152            let out = call_atomic_ptr_0arg("glGetError", &self.glGetError_p);
16153
16154            out
16155        }
16156        #[doc(hidden)]
16157        pub unsafe fn GetError_load_with_dyn(
16158            &self,
16159            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16160        ) -> bool {
16161            load_dyn_name_atomic_ptr(get_proc_address, b"glGetError\0", &self.glGetError_p)
16162        }
16163        #[inline]
16164        #[doc(hidden)]
16165        pub fn GetError_is_loaded(&self) -> bool {
16166            !self.glGetError_p.load(RELAX).is_null()
16167        }
16168        /// [glGetFloati_v](http://docs.gl/gl4/glGetFloati_v)(target, index, data)
16169        /// * `target` group: GetPName
16170        /// * `data` len: COMPSIZE(target)
16171        #[cfg_attr(feature = "inline", inline)]
16172        #[cfg_attr(feature = "inline_always", inline(always))]
16173        pub unsafe fn GetFloati_v(&self, target: GLenum, index: GLuint, data: *mut GLfloat) {
16174            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16175            {
16176                trace!(
16177                    "calling gl.GetFloati_v({:#X}, {:?}, {:p});",
16178                    target,
16179                    index,
16180                    data
16181                );
16182            }
16183            let out =
16184                call_atomic_ptr_3arg("glGetFloati_v", &self.glGetFloati_v_p, target, index, data);
16185            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16186            {
16187                self.automatic_glGetError("glGetFloati_v");
16188            }
16189            out
16190        }
16191        #[doc(hidden)]
16192        pub unsafe fn GetFloati_v_load_with_dyn(
16193            &self,
16194            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16195        ) -> bool {
16196            load_dyn_name_atomic_ptr(get_proc_address, b"glGetFloati_v\0", &self.glGetFloati_v_p)
16197        }
16198        #[inline]
16199        #[doc(hidden)]
16200        pub fn GetFloati_v_is_loaded(&self) -> bool {
16201            !self.glGetFloati_v_p.load(RELAX).is_null()
16202        }
16203        /// [glGetFloatv](http://docs.gl/gl4/glGet)(pname, data)
16204        /// * `pname` group: GetPName
16205        /// * `data` len: COMPSIZE(pname)
16206        #[cfg_attr(feature = "inline", inline)]
16207        #[cfg_attr(feature = "inline_always", inline(always))]
16208        pub unsafe fn GetFloatv(&self, pname: GLenum, data: *mut GLfloat) {
16209            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16210            {
16211                trace!("calling gl.GetFloatv({:#X}, {:p});", pname, data);
16212            }
16213            let out = call_atomic_ptr_2arg("glGetFloatv", &self.glGetFloatv_p, pname, data);
16214            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16215            {
16216                self.automatic_glGetError("glGetFloatv");
16217            }
16218            out
16219        }
16220        #[doc(hidden)]
16221        pub unsafe fn GetFloatv_load_with_dyn(
16222            &self,
16223            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16224        ) -> bool {
16225            load_dyn_name_atomic_ptr(get_proc_address, b"glGetFloatv\0", &self.glGetFloatv_p)
16226        }
16227        #[inline]
16228        #[doc(hidden)]
16229        pub fn GetFloatv_is_loaded(&self) -> bool {
16230            !self.glGetFloatv_p.load(RELAX).is_null()
16231        }
16232        /// [glGetFragDataIndex](http://docs.gl/gl4/glGetFragDataIndex)(program, name)
16233        #[cfg_attr(feature = "inline", inline)]
16234        #[cfg_attr(feature = "inline_always", inline(always))]
16235        pub unsafe fn GetFragDataIndex(&self, program: GLuint, name: *const GLchar) -> GLint {
16236            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16237            {
16238                trace!("calling gl.GetFragDataIndex({:?}, {:p});", program, name);
16239            }
16240            let out = call_atomic_ptr_2arg(
16241                "glGetFragDataIndex",
16242                &self.glGetFragDataIndex_p,
16243                program,
16244                name,
16245            );
16246            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16247            {
16248                self.automatic_glGetError("glGetFragDataIndex");
16249            }
16250            out
16251        }
16252        #[doc(hidden)]
16253        pub unsafe fn GetFragDataIndex_load_with_dyn(
16254            &self,
16255            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16256        ) -> bool {
16257            load_dyn_name_atomic_ptr(
16258                get_proc_address,
16259                b"glGetFragDataIndex\0",
16260                &self.glGetFragDataIndex_p,
16261            )
16262        }
16263        #[inline]
16264        #[doc(hidden)]
16265        pub fn GetFragDataIndex_is_loaded(&self) -> bool {
16266            !self.glGetFragDataIndex_p.load(RELAX).is_null()
16267        }
16268        /// [glGetFragDataLocation](http://docs.gl/gl4/glGetFragDataLocation)(program, name)
16269        /// * `name` len: COMPSIZE(name)
16270        #[cfg_attr(feature = "inline", inline)]
16271        #[cfg_attr(feature = "inline_always", inline(always))]
16272        pub unsafe fn GetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> GLint {
16273            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16274            {
16275                trace!("calling gl.GetFragDataLocation({:?}, {:p});", program, name);
16276            }
16277            let out = call_atomic_ptr_2arg(
16278                "glGetFragDataLocation",
16279                &self.glGetFragDataLocation_p,
16280                program,
16281                name,
16282            );
16283            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16284            {
16285                self.automatic_glGetError("glGetFragDataLocation");
16286            }
16287            out
16288        }
16289        #[doc(hidden)]
16290        pub unsafe fn GetFragDataLocation_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"glGetFragDataLocation\0",
16297                &self.glGetFragDataLocation_p,
16298            )
16299        }
16300        #[inline]
16301        #[doc(hidden)]
16302        pub fn GetFragDataLocation_is_loaded(&self) -> bool {
16303            !self.glGetFragDataLocation_p.load(RELAX).is_null()
16304        }
16305        /// [glGetFramebufferAttachmentParameteriv](http://docs.gl/gl4/glGetFramebufferAttachmentParameter)(target, attachment, pname, params)
16306        /// * `target` group: FramebufferTarget
16307        /// * `attachment` group: FramebufferAttachment
16308        /// * `pname` group: FramebufferAttachmentParameterName
16309        /// * `params` len: COMPSIZE(pname)
16310        #[cfg_attr(feature = "inline", inline)]
16311        #[cfg_attr(feature = "inline_always", inline(always))]
16312        pub unsafe fn GetFramebufferAttachmentParameteriv(
16313            &self,
16314            target: GLenum,
16315            attachment: GLenum,
16316            pname: GLenum,
16317            params: *mut GLint,
16318        ) {
16319            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16320            {
16321                trace!(
16322                    "calling gl.GetFramebufferAttachmentParameteriv({:#X}, {:#X}, {:#X}, {:p});",
16323                    target,
16324                    attachment,
16325                    pname,
16326                    params
16327                );
16328            }
16329            let out = call_atomic_ptr_4arg(
16330                "glGetFramebufferAttachmentParameteriv",
16331                &self.glGetFramebufferAttachmentParameteriv_p,
16332                target,
16333                attachment,
16334                pname,
16335                params,
16336            );
16337            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16338            {
16339                self.automatic_glGetError("glGetFramebufferAttachmentParameteriv");
16340            }
16341            out
16342        }
16343        #[doc(hidden)]
16344        pub unsafe fn GetFramebufferAttachmentParameteriv_load_with_dyn(
16345            &self,
16346            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16347        ) -> bool {
16348            load_dyn_name_atomic_ptr(
16349                get_proc_address,
16350                b"glGetFramebufferAttachmentParameteriv\0",
16351                &self.glGetFramebufferAttachmentParameteriv_p,
16352            )
16353        }
16354        #[inline]
16355        #[doc(hidden)]
16356        pub fn GetFramebufferAttachmentParameteriv_is_loaded(&self) -> bool {
16357            !self
16358                .glGetFramebufferAttachmentParameteriv_p
16359                .load(RELAX)
16360                .is_null()
16361        }
16362        /// [glGetFramebufferParameteriv](http://docs.gl/gl4/glGetFramebufferParameter)(target, pname, params)
16363        /// * `target` group: FramebufferTarget
16364        /// * `pname` group: FramebufferAttachmentParameterName
16365        /// * `params` len: COMPSIZE(pname)
16366        #[cfg_attr(feature = "inline", inline)]
16367        #[cfg_attr(feature = "inline_always", inline(always))]
16368        pub unsafe fn GetFramebufferParameteriv(
16369            &self,
16370            target: GLenum,
16371            pname: GLenum,
16372            params: *mut GLint,
16373        ) {
16374            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16375            {
16376                trace!(
16377                    "calling gl.GetFramebufferParameteriv({:#X}, {:#X}, {:p});",
16378                    target,
16379                    pname,
16380                    params
16381                );
16382            }
16383            let out = call_atomic_ptr_3arg(
16384                "glGetFramebufferParameteriv",
16385                &self.glGetFramebufferParameteriv_p,
16386                target,
16387                pname,
16388                params,
16389            );
16390            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16391            {
16392                self.automatic_glGetError("glGetFramebufferParameteriv");
16393            }
16394            out
16395        }
16396        #[doc(hidden)]
16397        pub unsafe fn GetFramebufferParameteriv_load_with_dyn(
16398            &self,
16399            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16400        ) -> bool {
16401            load_dyn_name_atomic_ptr(
16402                get_proc_address,
16403                b"glGetFramebufferParameteriv\0",
16404                &self.glGetFramebufferParameteriv_p,
16405            )
16406        }
16407        #[inline]
16408        #[doc(hidden)]
16409        pub fn GetFramebufferParameteriv_is_loaded(&self) -> bool {
16410            !self.glGetFramebufferParameteriv_p.load(RELAX).is_null()
16411        }
16412        /// [glGetGraphicsResetStatus](http://docs.gl/gl4/glGetGraphicsResetStatus)()
16413        /// * return value group: GraphicsResetStatus
16414        #[cfg_attr(feature = "inline", inline)]
16415        #[cfg_attr(feature = "inline_always", inline(always))]
16416        pub unsafe fn GetGraphicsResetStatus(&self) -> GLenum {
16417            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16418            {
16419                trace!("calling gl.GetGraphicsResetStatus();",);
16420            }
16421            let out =
16422                call_atomic_ptr_0arg("glGetGraphicsResetStatus", &self.glGetGraphicsResetStatus_p);
16423            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16424            {
16425                self.automatic_glGetError("glGetGraphicsResetStatus");
16426            }
16427            out
16428        }
16429        #[doc(hidden)]
16430        pub unsafe fn GetGraphicsResetStatus_load_with_dyn(
16431            &self,
16432            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16433        ) -> bool {
16434            load_dyn_name_atomic_ptr(
16435                get_proc_address,
16436                b"glGetGraphicsResetStatus\0",
16437                &self.glGetGraphicsResetStatus_p,
16438            )
16439        }
16440        #[inline]
16441        #[doc(hidden)]
16442        pub fn GetGraphicsResetStatus_is_loaded(&self) -> bool {
16443            !self.glGetGraphicsResetStatus_p.load(RELAX).is_null()
16444        }
16445        /// [glGetInteger64i_v](http://docs.gl/gl4/glGet)(target, index, data)
16446        /// * `target` group: GetPName
16447        /// * `data` len: COMPSIZE(target)
16448        #[cfg_attr(feature = "inline", inline)]
16449        #[cfg_attr(feature = "inline_always", inline(always))]
16450        pub unsafe fn GetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) {
16451            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16452            {
16453                trace!(
16454                    "calling gl.GetInteger64i_v({:#X}, {:?}, {:p});",
16455                    target,
16456                    index,
16457                    data
16458                );
16459            }
16460            let out = call_atomic_ptr_3arg(
16461                "glGetInteger64i_v",
16462                &self.glGetInteger64i_v_p,
16463                target,
16464                index,
16465                data,
16466            );
16467            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16468            {
16469                self.automatic_glGetError("glGetInteger64i_v");
16470            }
16471            out
16472        }
16473        #[doc(hidden)]
16474        pub unsafe fn GetInteger64i_v_load_with_dyn(
16475            &self,
16476            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16477        ) -> bool {
16478            load_dyn_name_atomic_ptr(
16479                get_proc_address,
16480                b"glGetInteger64i_v\0",
16481                &self.glGetInteger64i_v_p,
16482            )
16483        }
16484        #[inline]
16485        #[doc(hidden)]
16486        pub fn GetInteger64i_v_is_loaded(&self) -> bool {
16487            !self.glGetInteger64i_v_p.load(RELAX).is_null()
16488        }
16489        /// [glGetInteger64v](http://docs.gl/gl4/glGet)(pname, data)
16490        /// * `pname` group: GetPName
16491        /// * `data` len: COMPSIZE(pname)
16492        #[cfg_attr(feature = "inline", inline)]
16493        #[cfg_attr(feature = "inline_always", inline(always))]
16494        pub unsafe fn GetInteger64v(&self, pname: GLenum, data: *mut GLint64) {
16495            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16496            {
16497                trace!("calling gl.GetInteger64v({:#X}, {:p});", pname, data);
16498            }
16499            let out = call_atomic_ptr_2arg("glGetInteger64v", &self.glGetInteger64v_p, pname, data);
16500            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16501            {
16502                self.automatic_glGetError("glGetInteger64v");
16503            }
16504            out
16505        }
16506        #[doc(hidden)]
16507        pub unsafe fn GetInteger64v_load_with_dyn(
16508            &self,
16509            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16510        ) -> bool {
16511            load_dyn_name_atomic_ptr(
16512                get_proc_address,
16513                b"glGetInteger64v\0",
16514                &self.glGetInteger64v_p,
16515            )
16516        }
16517        #[inline]
16518        #[doc(hidden)]
16519        pub fn GetInteger64v_is_loaded(&self) -> bool {
16520            !self.glGetInteger64v_p.load(RELAX).is_null()
16521        }
16522        /// [glGetInteger64vEXT](http://docs.gl/gl4/glGetInteger64vEXT)(pname, data)
16523        /// * `pname` group: GetPName
16524        /// * `data` len: COMPSIZE(pname)
16525        /// * alias of: [`glGetInteger64v`]
16526        #[cfg_attr(feature = "inline", inline)]
16527        #[cfg_attr(feature = "inline_always", inline(always))]
16528        pub unsafe fn GetInteger64vEXT(&self, pname: GLenum, data: *mut GLint64) {
16529            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16530            {
16531                trace!("calling gl.GetInteger64vEXT({:#X}, {:p});", pname, data);
16532            }
16533            let out = call_atomic_ptr_2arg(
16534                "glGetInteger64vEXT",
16535                &self.glGetInteger64vEXT_p,
16536                pname,
16537                data,
16538            );
16539            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16540            {
16541                self.automatic_glGetError("glGetInteger64vEXT");
16542            }
16543            out
16544        }
16545        #[doc(hidden)]
16546        pub unsafe fn GetInteger64vEXT_load_with_dyn(
16547            &self,
16548            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16549        ) -> bool {
16550            load_dyn_name_atomic_ptr(
16551                get_proc_address,
16552                b"glGetInteger64vEXT\0",
16553                &self.glGetInteger64vEXT_p,
16554            )
16555        }
16556        #[inline]
16557        #[doc(hidden)]
16558        pub fn GetInteger64vEXT_is_loaded(&self) -> bool {
16559            !self.glGetInteger64vEXT_p.load(RELAX).is_null()
16560        }
16561        /// [glGetIntegerIndexedvEXT](http://docs.gl/gl4/glGetIntegerIndexedvEXT)(target, index, data)
16562        /// * `target` group: GetPName
16563        /// * `data` len: COMPSIZE(target)
16564        /// * alias of: [`glGetIntegeri_v`]
16565        #[cfg_attr(feature = "inline", inline)]
16566        #[cfg_attr(feature = "inline_always", inline(always))]
16567        pub unsafe fn GetIntegerIndexedvEXT(
16568            &self,
16569            target: GLenum,
16570            index: GLuint,
16571            data: *mut GLint,
16572        ) {
16573            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16574            {
16575                trace!(
16576                    "calling gl.GetIntegerIndexedvEXT({:#X}, {:?}, {:p});",
16577                    target,
16578                    index,
16579                    data
16580                );
16581            }
16582            let out = call_atomic_ptr_3arg(
16583                "glGetIntegerIndexedvEXT",
16584                &self.glGetIntegerIndexedvEXT_p,
16585                target,
16586                index,
16587                data,
16588            );
16589            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16590            {
16591                self.automatic_glGetError("glGetIntegerIndexedvEXT");
16592            }
16593            out
16594        }
16595        #[doc(hidden)]
16596        pub unsafe fn GetIntegerIndexedvEXT_load_with_dyn(
16597            &self,
16598            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16599        ) -> bool {
16600            load_dyn_name_atomic_ptr(
16601                get_proc_address,
16602                b"glGetIntegerIndexedvEXT\0",
16603                &self.glGetIntegerIndexedvEXT_p,
16604            )
16605        }
16606        #[inline]
16607        #[doc(hidden)]
16608        pub fn GetIntegerIndexedvEXT_is_loaded(&self) -> bool {
16609            !self.glGetIntegerIndexedvEXT_p.load(RELAX).is_null()
16610        }
16611        /// [glGetIntegeri_v](http://docs.gl/gl4/glGet)(target, index, data)
16612        /// * `target` group: GetPName
16613        /// * `data` len: COMPSIZE(target)
16614        #[cfg_attr(feature = "inline", inline)]
16615        #[cfg_attr(feature = "inline_always", inline(always))]
16616        pub unsafe fn GetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) {
16617            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16618            {
16619                trace!(
16620                    "calling gl.GetIntegeri_v({:#X}, {:?}, {:p});",
16621                    target,
16622                    index,
16623                    data
16624                );
16625            }
16626            let out = call_atomic_ptr_3arg(
16627                "glGetIntegeri_v",
16628                &self.glGetIntegeri_v_p,
16629                target,
16630                index,
16631                data,
16632            );
16633            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16634            {
16635                self.automatic_glGetError("glGetIntegeri_v");
16636            }
16637            out
16638        }
16639        #[doc(hidden)]
16640        pub unsafe fn GetIntegeri_v_load_with_dyn(
16641            &self,
16642            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16643        ) -> bool {
16644            load_dyn_name_atomic_ptr(
16645                get_proc_address,
16646                b"glGetIntegeri_v\0",
16647                &self.glGetIntegeri_v_p,
16648            )
16649        }
16650        #[inline]
16651        #[doc(hidden)]
16652        pub fn GetIntegeri_v_is_loaded(&self) -> bool {
16653            !self.glGetIntegeri_v_p.load(RELAX).is_null()
16654        }
16655        /// [glGetIntegerv](http://docs.gl/gl4/glGet)(pname, data)
16656        /// * `pname` group: GetPName
16657        /// * `data` len: COMPSIZE(pname)
16658        #[cfg_attr(feature = "inline", inline)]
16659        #[cfg_attr(feature = "inline_always", inline(always))]
16660        pub unsafe fn GetIntegerv(&self, pname: GLenum, data: *mut GLint) {
16661            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16662            {
16663                trace!("calling gl.GetIntegerv({:#X}, {:p});", pname, data);
16664            }
16665            let out = call_atomic_ptr_2arg("glGetIntegerv", &self.glGetIntegerv_p, pname, data);
16666            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16667            {
16668                self.automatic_glGetError("glGetIntegerv");
16669            }
16670            out
16671        }
16672        #[doc(hidden)]
16673        pub unsafe fn GetIntegerv_load_with_dyn(
16674            &self,
16675            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16676        ) -> bool {
16677            load_dyn_name_atomic_ptr(get_proc_address, b"glGetIntegerv\0", &self.glGetIntegerv_p)
16678        }
16679        #[inline]
16680        #[doc(hidden)]
16681        pub fn GetIntegerv_is_loaded(&self) -> bool {
16682            !self.glGetIntegerv_p.load(RELAX).is_null()
16683        }
16684        /// [glGetInternalformati64v](http://docs.gl/gl4/glGetInternalformat)(target, internalformat, pname, count, params)
16685        /// * `target` group: TextureTarget
16686        /// * `internalformat` group: InternalFormat
16687        /// * `pname` group: InternalFormatPName
16688        /// * `params` len: count
16689        #[cfg_attr(feature = "inline", inline)]
16690        #[cfg_attr(feature = "inline_always", inline(always))]
16691        pub unsafe fn GetInternalformati64v(
16692            &self,
16693            target: GLenum,
16694            internalformat: GLenum,
16695            pname: GLenum,
16696            count: GLsizei,
16697            params: *mut GLint64,
16698        ) {
16699            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16700            {
16701                trace!(
16702                    "calling gl.GetInternalformati64v({:#X}, {:#X}, {:#X}, {:?}, {:p});",
16703                    target,
16704                    internalformat,
16705                    pname,
16706                    count,
16707                    params
16708                );
16709            }
16710            let out = call_atomic_ptr_5arg(
16711                "glGetInternalformati64v",
16712                &self.glGetInternalformati64v_p,
16713                target,
16714                internalformat,
16715                pname,
16716                count,
16717                params,
16718            );
16719            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16720            {
16721                self.automatic_glGetError("glGetInternalformati64v");
16722            }
16723            out
16724        }
16725        #[doc(hidden)]
16726        pub unsafe fn GetInternalformati64v_load_with_dyn(
16727            &self,
16728            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16729        ) -> bool {
16730            load_dyn_name_atomic_ptr(
16731                get_proc_address,
16732                b"glGetInternalformati64v\0",
16733                &self.glGetInternalformati64v_p,
16734            )
16735        }
16736        #[inline]
16737        #[doc(hidden)]
16738        pub fn GetInternalformati64v_is_loaded(&self) -> bool {
16739            !self.glGetInternalformati64v_p.load(RELAX).is_null()
16740        }
16741        /// [glGetInternalformativ](http://docs.gl/gl4/glGetInternalformativ)(target, internalformat, pname, count, params)
16742        /// * `target` group: TextureTarget
16743        /// * `internalformat` group: InternalFormat
16744        /// * `pname` group: InternalFormatPName
16745        /// * `params` len: count
16746        #[cfg_attr(feature = "inline", inline)]
16747        #[cfg_attr(feature = "inline_always", inline(always))]
16748        pub unsafe fn GetInternalformativ(
16749            &self,
16750            target: GLenum,
16751            internalformat: GLenum,
16752            pname: GLenum,
16753            count: GLsizei,
16754            params: *mut GLint,
16755        ) {
16756            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16757            {
16758                trace!(
16759                    "calling gl.GetInternalformativ({:#X}, {:#X}, {:#X}, {:?}, {:p});",
16760                    target,
16761                    internalformat,
16762                    pname,
16763                    count,
16764                    params
16765                );
16766            }
16767            let out = call_atomic_ptr_5arg(
16768                "glGetInternalformativ",
16769                &self.glGetInternalformativ_p,
16770                target,
16771                internalformat,
16772                pname,
16773                count,
16774                params,
16775            );
16776            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16777            {
16778                self.automatic_glGetError("glGetInternalformativ");
16779            }
16780            out
16781        }
16782        #[doc(hidden)]
16783        pub unsafe fn GetInternalformativ_load_with_dyn(
16784            &self,
16785            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16786        ) -> bool {
16787            load_dyn_name_atomic_ptr(
16788                get_proc_address,
16789                b"glGetInternalformativ\0",
16790                &self.glGetInternalformativ_p,
16791            )
16792        }
16793        #[inline]
16794        #[doc(hidden)]
16795        pub fn GetInternalformativ_is_loaded(&self) -> bool {
16796            !self.glGetInternalformativ_p.load(RELAX).is_null()
16797        }
16798        /// [glGetMultisamplefv](http://docs.gl/gl4/glGetMultisample)(pname, index, val)
16799        /// * `pname` group: GetMultisamplePNameNV
16800        /// * `val` len: COMPSIZE(pname)
16801        #[cfg_attr(feature = "inline", inline)]
16802        #[cfg_attr(feature = "inline_always", inline(always))]
16803        pub unsafe fn GetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) {
16804            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16805            {
16806                trace!(
16807                    "calling gl.GetMultisamplefv({:#X}, {:?}, {:p});",
16808                    pname,
16809                    index,
16810                    val
16811                );
16812            }
16813            let out = call_atomic_ptr_3arg(
16814                "glGetMultisamplefv",
16815                &self.glGetMultisamplefv_p,
16816                pname,
16817                index,
16818                val,
16819            );
16820            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16821            {
16822                self.automatic_glGetError("glGetMultisamplefv");
16823            }
16824            out
16825        }
16826        #[doc(hidden)]
16827        pub unsafe fn GetMultisamplefv_load_with_dyn(
16828            &self,
16829            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16830        ) -> bool {
16831            load_dyn_name_atomic_ptr(
16832                get_proc_address,
16833                b"glGetMultisamplefv\0",
16834                &self.glGetMultisamplefv_p,
16835            )
16836        }
16837        #[inline]
16838        #[doc(hidden)]
16839        pub fn GetMultisamplefv_is_loaded(&self) -> bool {
16840            !self.glGetMultisamplefv_p.load(RELAX).is_null()
16841        }
16842        /// [glGetNamedBufferParameteri64v](http://docs.gl/gl4/glGetNamedBufferParameter)(buffer, pname, params)
16843        /// * `pname` group: BufferPNameARB
16844        #[cfg_attr(feature = "inline", inline)]
16845        #[cfg_attr(feature = "inline_always", inline(always))]
16846        pub unsafe fn GetNamedBufferParameteri64v(
16847            &self,
16848            buffer: GLuint,
16849            pname: GLenum,
16850            params: *mut GLint64,
16851        ) {
16852            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16853            {
16854                trace!(
16855                    "calling gl.GetNamedBufferParameteri64v({:?}, {:#X}, {:p});",
16856                    buffer,
16857                    pname,
16858                    params
16859                );
16860            }
16861            let out = call_atomic_ptr_3arg(
16862                "glGetNamedBufferParameteri64v",
16863                &self.glGetNamedBufferParameteri64v_p,
16864                buffer,
16865                pname,
16866                params,
16867            );
16868            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16869            {
16870                self.automatic_glGetError("glGetNamedBufferParameteri64v");
16871            }
16872            out
16873        }
16874        #[doc(hidden)]
16875        pub unsafe fn GetNamedBufferParameteri64v_load_with_dyn(
16876            &self,
16877            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16878        ) -> bool {
16879            load_dyn_name_atomic_ptr(
16880                get_proc_address,
16881                b"glGetNamedBufferParameteri64v\0",
16882                &self.glGetNamedBufferParameteri64v_p,
16883            )
16884        }
16885        #[inline]
16886        #[doc(hidden)]
16887        pub fn GetNamedBufferParameteri64v_is_loaded(&self) -> bool {
16888            !self.glGetNamedBufferParameteri64v_p.load(RELAX).is_null()
16889        }
16890        /// [glGetNamedBufferParameteriv](http://docs.gl/gl4/glGetNamedBufferParameter)(buffer, pname, params)
16891        /// * `pname` group: BufferPNameARB
16892        #[cfg_attr(feature = "inline", inline)]
16893        #[cfg_attr(feature = "inline_always", inline(always))]
16894        pub unsafe fn GetNamedBufferParameteriv(
16895            &self,
16896            buffer: GLuint,
16897            pname: GLenum,
16898            params: *mut GLint,
16899        ) {
16900            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16901            {
16902                trace!(
16903                    "calling gl.GetNamedBufferParameteriv({:?}, {:#X}, {:p});",
16904                    buffer,
16905                    pname,
16906                    params
16907                );
16908            }
16909            let out = call_atomic_ptr_3arg(
16910                "glGetNamedBufferParameteriv",
16911                &self.glGetNamedBufferParameteriv_p,
16912                buffer,
16913                pname,
16914                params,
16915            );
16916            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16917            {
16918                self.automatic_glGetError("glGetNamedBufferParameteriv");
16919            }
16920            out
16921        }
16922        #[doc(hidden)]
16923        pub unsafe fn GetNamedBufferParameteriv_load_with_dyn(
16924            &self,
16925            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16926        ) -> bool {
16927            load_dyn_name_atomic_ptr(
16928                get_proc_address,
16929                b"glGetNamedBufferParameteriv\0",
16930                &self.glGetNamedBufferParameteriv_p,
16931            )
16932        }
16933        #[inline]
16934        #[doc(hidden)]
16935        pub fn GetNamedBufferParameteriv_is_loaded(&self) -> bool {
16936            !self.glGetNamedBufferParameteriv_p.load(RELAX).is_null()
16937        }
16938        /// [glGetNamedBufferPointerv](http://docs.gl/gl4/glGetNamedBufferPointerv)(buffer, pname, params)
16939        /// * `pname` group: BufferPointerNameARB
16940        #[cfg_attr(feature = "inline", inline)]
16941        #[cfg_attr(feature = "inline_always", inline(always))]
16942        pub unsafe fn GetNamedBufferPointerv(
16943            &self,
16944            buffer: GLuint,
16945            pname: GLenum,
16946            params: *mut *mut c_void,
16947        ) {
16948            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16949            {
16950                trace!(
16951                    "calling gl.GetNamedBufferPointerv({:?}, {:#X}, {:p});",
16952                    buffer,
16953                    pname,
16954                    params
16955                );
16956            }
16957            let out = call_atomic_ptr_3arg(
16958                "glGetNamedBufferPointerv",
16959                &self.glGetNamedBufferPointerv_p,
16960                buffer,
16961                pname,
16962                params,
16963            );
16964            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
16965            {
16966                self.automatic_glGetError("glGetNamedBufferPointerv");
16967            }
16968            out
16969        }
16970        #[doc(hidden)]
16971        pub unsafe fn GetNamedBufferPointerv_load_with_dyn(
16972            &self,
16973            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
16974        ) -> bool {
16975            load_dyn_name_atomic_ptr(
16976                get_proc_address,
16977                b"glGetNamedBufferPointerv\0",
16978                &self.glGetNamedBufferPointerv_p,
16979            )
16980        }
16981        #[inline]
16982        #[doc(hidden)]
16983        pub fn GetNamedBufferPointerv_is_loaded(&self) -> bool {
16984            !self.glGetNamedBufferPointerv_p.load(RELAX).is_null()
16985        }
16986        /// [glGetNamedBufferSubData](http://docs.gl/gl4/glGetNamedBufferSubData)(buffer, offset, size, data)
16987        /// * `size` group: BufferSize
16988        #[cfg_attr(feature = "inline", inline)]
16989        #[cfg_attr(feature = "inline_always", inline(always))]
16990        pub unsafe fn GetNamedBufferSubData(
16991            &self,
16992            buffer: GLuint,
16993            offset: GLintptr,
16994            size: GLsizeiptr,
16995            data: *mut c_void,
16996        ) {
16997            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
16998            {
16999                trace!(
17000                    "calling gl.GetNamedBufferSubData({:?}, {:?}, {:?}, {:p});",
17001                    buffer,
17002                    offset,
17003                    size,
17004                    data
17005                );
17006            }
17007            let out = call_atomic_ptr_4arg(
17008                "glGetNamedBufferSubData",
17009                &self.glGetNamedBufferSubData_p,
17010                buffer,
17011                offset,
17012                size,
17013                data,
17014            );
17015            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17016            {
17017                self.automatic_glGetError("glGetNamedBufferSubData");
17018            }
17019            out
17020        }
17021        #[doc(hidden)]
17022        pub unsafe fn GetNamedBufferSubData_load_with_dyn(
17023            &self,
17024            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17025        ) -> bool {
17026            load_dyn_name_atomic_ptr(
17027                get_proc_address,
17028                b"glGetNamedBufferSubData\0",
17029                &self.glGetNamedBufferSubData_p,
17030            )
17031        }
17032        #[inline]
17033        #[doc(hidden)]
17034        pub fn GetNamedBufferSubData_is_loaded(&self) -> bool {
17035            !self.glGetNamedBufferSubData_p.load(RELAX).is_null()
17036        }
17037        /// [glGetNamedFramebufferAttachmentParameteriv](http://docs.gl/gl4/glGetNamedFramebufferAttachmentParameter)(framebuffer, attachment, pname, params)
17038        /// * `attachment` group: FramebufferAttachment
17039        /// * `pname` group: FramebufferAttachmentParameterName
17040        #[cfg_attr(feature = "inline", inline)]
17041        #[cfg_attr(feature = "inline_always", inline(always))]
17042        pub unsafe fn GetNamedFramebufferAttachmentParameteriv(
17043            &self,
17044            framebuffer: GLuint,
17045            attachment: GLenum,
17046            pname: GLenum,
17047            params: *mut GLint,
17048        ) {
17049            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17050            {
17051                trace!("calling gl.GetNamedFramebufferAttachmentParameteriv({:?}, {:#X}, {:#X}, {:p});", framebuffer, attachment, pname, params);
17052            }
17053            let out = call_atomic_ptr_4arg(
17054                "glGetNamedFramebufferAttachmentParameteriv",
17055                &self.glGetNamedFramebufferAttachmentParameteriv_p,
17056                framebuffer,
17057                attachment,
17058                pname,
17059                params,
17060            );
17061            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17062            {
17063                self.automatic_glGetError("glGetNamedFramebufferAttachmentParameteriv");
17064            }
17065            out
17066        }
17067        #[doc(hidden)]
17068        pub unsafe fn GetNamedFramebufferAttachmentParameteriv_load_with_dyn(
17069            &self,
17070            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17071        ) -> bool {
17072            load_dyn_name_atomic_ptr(
17073                get_proc_address,
17074                b"glGetNamedFramebufferAttachmentParameteriv\0",
17075                &self.glGetNamedFramebufferAttachmentParameteriv_p,
17076            )
17077        }
17078        #[inline]
17079        #[doc(hidden)]
17080        pub fn GetNamedFramebufferAttachmentParameteriv_is_loaded(&self) -> bool {
17081            !self
17082                .glGetNamedFramebufferAttachmentParameteriv_p
17083                .load(RELAX)
17084                .is_null()
17085        }
17086        /// [glGetNamedFramebufferParameteriv](http://docs.gl/gl4/glGetNamedFramebufferParameter)(framebuffer, pname, param)
17087        /// * `pname` group: GetFramebufferParameter
17088        #[cfg_attr(feature = "inline", inline)]
17089        #[cfg_attr(feature = "inline_always", inline(always))]
17090        pub unsafe fn GetNamedFramebufferParameteriv(
17091            &self,
17092            framebuffer: GLuint,
17093            pname: GLenum,
17094            param: *mut GLint,
17095        ) {
17096            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17097            {
17098                trace!(
17099                    "calling gl.GetNamedFramebufferParameteriv({:?}, {:#X}, {:p});",
17100                    framebuffer,
17101                    pname,
17102                    param
17103                );
17104            }
17105            let out = call_atomic_ptr_3arg(
17106                "glGetNamedFramebufferParameteriv",
17107                &self.glGetNamedFramebufferParameteriv_p,
17108                framebuffer,
17109                pname,
17110                param,
17111            );
17112            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17113            {
17114                self.automatic_glGetError("glGetNamedFramebufferParameteriv");
17115            }
17116            out
17117        }
17118        #[doc(hidden)]
17119        pub unsafe fn GetNamedFramebufferParameteriv_load_with_dyn(
17120            &self,
17121            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17122        ) -> bool {
17123            load_dyn_name_atomic_ptr(
17124                get_proc_address,
17125                b"glGetNamedFramebufferParameteriv\0",
17126                &self.glGetNamedFramebufferParameteriv_p,
17127            )
17128        }
17129        #[inline]
17130        #[doc(hidden)]
17131        pub fn GetNamedFramebufferParameteriv_is_loaded(&self) -> bool {
17132            !self
17133                .glGetNamedFramebufferParameteriv_p
17134                .load(RELAX)
17135                .is_null()
17136        }
17137        /// [glGetNamedRenderbufferParameteriv](http://docs.gl/gl4/glGetNamedRenderbufferParameter)(renderbuffer, pname, params)
17138        /// * `pname` group: RenderbufferParameterName
17139        #[cfg_attr(feature = "inline", inline)]
17140        #[cfg_attr(feature = "inline_always", inline(always))]
17141        pub unsafe fn GetNamedRenderbufferParameteriv(
17142            &self,
17143            renderbuffer: GLuint,
17144            pname: GLenum,
17145            params: *mut GLint,
17146        ) {
17147            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17148            {
17149                trace!(
17150                    "calling gl.GetNamedRenderbufferParameteriv({:?}, {:#X}, {:p});",
17151                    renderbuffer,
17152                    pname,
17153                    params
17154                );
17155            }
17156            let out = call_atomic_ptr_3arg(
17157                "glGetNamedRenderbufferParameteriv",
17158                &self.glGetNamedRenderbufferParameteriv_p,
17159                renderbuffer,
17160                pname,
17161                params,
17162            );
17163            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17164            {
17165                self.automatic_glGetError("glGetNamedRenderbufferParameteriv");
17166            }
17167            out
17168        }
17169        #[doc(hidden)]
17170        pub unsafe fn GetNamedRenderbufferParameteriv_load_with_dyn(
17171            &self,
17172            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17173        ) -> bool {
17174            load_dyn_name_atomic_ptr(
17175                get_proc_address,
17176                b"glGetNamedRenderbufferParameteriv\0",
17177                &self.glGetNamedRenderbufferParameteriv_p,
17178            )
17179        }
17180        #[inline]
17181        #[doc(hidden)]
17182        pub fn GetNamedRenderbufferParameteriv_is_loaded(&self) -> bool {
17183            !self
17184                .glGetNamedRenderbufferParameteriv_p
17185                .load(RELAX)
17186                .is_null()
17187        }
17188        /// [glGetObjectLabel](http://docs.gl/gl4/glGetObjectLabel)(identifier, name, bufSize, length, label)
17189        /// * `identifier` group: ObjectIdentifier
17190        /// * `length` len: 1
17191        /// * `label` len: bufSize
17192        #[cfg_attr(feature = "inline", inline)]
17193        #[cfg_attr(feature = "inline_always", inline(always))]
17194        pub unsafe fn GetObjectLabel(
17195            &self,
17196            identifier: GLenum,
17197            name: GLuint,
17198            bufSize: GLsizei,
17199            length: *mut GLsizei,
17200            label: *mut GLchar,
17201        ) {
17202            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17203            {
17204                trace!(
17205                    "calling gl.GetObjectLabel({:#X}, {:?}, {:?}, {:p}, {:p});",
17206                    identifier,
17207                    name,
17208                    bufSize,
17209                    length,
17210                    label
17211                );
17212            }
17213            let out = call_atomic_ptr_5arg(
17214                "glGetObjectLabel",
17215                &self.glGetObjectLabel_p,
17216                identifier,
17217                name,
17218                bufSize,
17219                length,
17220                label,
17221            );
17222            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17223            {
17224                self.automatic_glGetError("glGetObjectLabel");
17225            }
17226            out
17227        }
17228        #[doc(hidden)]
17229        pub unsafe fn GetObjectLabel_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"glGetObjectLabel\0",
17236                &self.glGetObjectLabel_p,
17237            )
17238        }
17239        #[inline]
17240        #[doc(hidden)]
17241        pub fn GetObjectLabel_is_loaded(&self) -> bool {
17242            !self.glGetObjectLabel_p.load(RELAX).is_null()
17243        }
17244        /// [glGetObjectLabelKHR](http://docs.gl/gl4/glGetObjectLabelKHR)(identifier, name, bufSize, length, label)
17245        /// * `label` len: bufSize
17246        /// * alias of: [`glGetObjectLabel`]
17247        #[cfg_attr(feature = "inline", inline)]
17248        #[cfg_attr(feature = "inline_always", inline(always))]
17249        pub unsafe fn GetObjectLabelKHR(
17250            &self,
17251            identifier: GLenum,
17252            name: GLuint,
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.GetObjectLabelKHR({:#X}, {:?}, {:?}, {:p}, {:p});",
17261                    identifier,
17262                    name,
17263                    bufSize,
17264                    length,
17265                    label
17266                );
17267            }
17268            let out = call_atomic_ptr_5arg(
17269                "glGetObjectLabelKHR",
17270                &self.glGetObjectLabelKHR_p,
17271                identifier,
17272                name,
17273                bufSize,
17274                length,
17275                label,
17276            );
17277            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17278            {
17279                self.automatic_glGetError("glGetObjectLabelKHR");
17280            }
17281            out
17282        }
17283        #[doc(hidden)]
17284        pub unsafe fn GetObjectLabelKHR_load_with_dyn(
17285            &self,
17286            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17287        ) -> bool {
17288            load_dyn_name_atomic_ptr(
17289                get_proc_address,
17290                b"glGetObjectLabelKHR\0",
17291                &self.glGetObjectLabelKHR_p,
17292            )
17293        }
17294        #[inline]
17295        #[doc(hidden)]
17296        pub fn GetObjectLabelKHR_is_loaded(&self) -> bool {
17297            !self.glGetObjectLabelKHR_p.load(RELAX).is_null()
17298        }
17299        /// [glGetObjectPtrLabel](http://docs.gl/gl4/glGetObjectPtrLabel)(ptr, bufSize, length, label)
17300        /// * `length` len: 1
17301        /// * `label` len: bufSize
17302        #[cfg_attr(feature = "inline", inline)]
17303        #[cfg_attr(feature = "inline_always", inline(always))]
17304        pub unsafe fn GetObjectPtrLabel(
17305            &self,
17306            ptr: *const c_void,
17307            bufSize: GLsizei,
17308            length: *mut GLsizei,
17309            label: *mut GLchar,
17310        ) {
17311            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17312            {
17313                trace!(
17314                    "calling gl.GetObjectPtrLabel({:p}, {:?}, {:p}, {:p});",
17315                    ptr,
17316                    bufSize,
17317                    length,
17318                    label
17319                );
17320            }
17321            let out = call_atomic_ptr_4arg(
17322                "glGetObjectPtrLabel",
17323                &self.glGetObjectPtrLabel_p,
17324                ptr,
17325                bufSize,
17326                length,
17327                label,
17328            );
17329            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17330            {
17331                self.automatic_glGetError("glGetObjectPtrLabel");
17332            }
17333            out
17334        }
17335        #[doc(hidden)]
17336        pub unsafe fn GetObjectPtrLabel_load_with_dyn(
17337            &self,
17338            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17339        ) -> bool {
17340            load_dyn_name_atomic_ptr(
17341                get_proc_address,
17342                b"glGetObjectPtrLabel\0",
17343                &self.glGetObjectPtrLabel_p,
17344            )
17345        }
17346        #[inline]
17347        #[doc(hidden)]
17348        pub fn GetObjectPtrLabel_is_loaded(&self) -> bool {
17349            !self.glGetObjectPtrLabel_p.load(RELAX).is_null()
17350        }
17351        /// [glGetObjectPtrLabelKHR](http://docs.gl/gl4/glGetObjectPtrLabelKHR)(ptr, bufSize, length, label)
17352        /// * `length` len: 1
17353        /// * `label` len: bufSize
17354        /// * alias of: [`glGetObjectPtrLabel`]
17355        #[cfg_attr(feature = "inline", inline)]
17356        #[cfg_attr(feature = "inline_always", inline(always))]
17357        pub unsafe fn GetObjectPtrLabelKHR(
17358            &self,
17359            ptr: *const c_void,
17360            bufSize: GLsizei,
17361            length: *mut GLsizei,
17362            label: *mut GLchar,
17363        ) {
17364            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17365            {
17366                trace!(
17367                    "calling gl.GetObjectPtrLabelKHR({:p}, {:?}, {:p}, {:p});",
17368                    ptr,
17369                    bufSize,
17370                    length,
17371                    label
17372                );
17373            }
17374            let out = call_atomic_ptr_4arg(
17375                "glGetObjectPtrLabelKHR",
17376                &self.glGetObjectPtrLabelKHR_p,
17377                ptr,
17378                bufSize,
17379                length,
17380                label,
17381            );
17382            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17383            {
17384                self.automatic_glGetError("glGetObjectPtrLabelKHR");
17385            }
17386            out
17387        }
17388        #[doc(hidden)]
17389        pub unsafe fn GetObjectPtrLabelKHR_load_with_dyn(
17390            &self,
17391            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17392        ) -> bool {
17393            load_dyn_name_atomic_ptr(
17394                get_proc_address,
17395                b"glGetObjectPtrLabelKHR\0",
17396                &self.glGetObjectPtrLabelKHR_p,
17397            )
17398        }
17399        #[inline]
17400        #[doc(hidden)]
17401        pub fn GetObjectPtrLabelKHR_is_loaded(&self) -> bool {
17402            !self.glGetObjectPtrLabelKHR_p.load(RELAX).is_null()
17403        }
17404        /// [glGetPointerv](http://docs.gl/gl4/glGetPointerv)(pname, params)
17405        /// * `pname` group: GetPointervPName
17406        /// * `params` len: 1
17407        #[cfg_attr(feature = "inline", inline)]
17408        #[cfg_attr(feature = "inline_always", inline(always))]
17409        pub unsafe fn GetPointerv(&self, pname: GLenum, params: *mut *mut c_void) {
17410            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17411            {
17412                trace!("calling gl.GetPointerv({:#X}, {:p});", pname, params);
17413            }
17414            let out = call_atomic_ptr_2arg("glGetPointerv", &self.glGetPointerv_p, pname, params);
17415            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17416            {
17417                self.automatic_glGetError("glGetPointerv");
17418            }
17419            out
17420        }
17421        #[doc(hidden)]
17422        pub unsafe fn GetPointerv_load_with_dyn(
17423            &self,
17424            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17425        ) -> bool {
17426            load_dyn_name_atomic_ptr(get_proc_address, b"glGetPointerv\0", &self.glGetPointerv_p)
17427        }
17428        #[inline]
17429        #[doc(hidden)]
17430        pub fn GetPointerv_is_loaded(&self) -> bool {
17431            !self.glGetPointerv_p.load(RELAX).is_null()
17432        }
17433        /// [glGetPointervKHR](http://docs.gl/gl4/glGetPointervKHR)(pname, params)
17434        /// * alias of: [`glGetPointerv`]
17435        #[cfg_attr(feature = "inline", inline)]
17436        #[cfg_attr(feature = "inline_always", inline(always))]
17437        pub unsafe fn GetPointervKHR(&self, pname: GLenum, params: *mut *mut c_void) {
17438            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17439            {
17440                trace!("calling gl.GetPointervKHR({:#X}, {:p});", pname, params);
17441            }
17442            let out =
17443                call_atomic_ptr_2arg("glGetPointervKHR", &self.glGetPointervKHR_p, pname, params);
17444            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17445            {
17446                self.automatic_glGetError("glGetPointervKHR");
17447            }
17448            out
17449        }
17450        #[doc(hidden)]
17451        pub unsafe fn GetPointervKHR_load_with_dyn(
17452            &self,
17453            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17454        ) -> bool {
17455            load_dyn_name_atomic_ptr(
17456                get_proc_address,
17457                b"glGetPointervKHR\0",
17458                &self.glGetPointervKHR_p,
17459            )
17460        }
17461        #[inline]
17462        #[doc(hidden)]
17463        pub fn GetPointervKHR_is_loaded(&self) -> bool {
17464            !self.glGetPointervKHR_p.load(RELAX).is_null()
17465        }
17466        /// [glGetProgramBinary](http://docs.gl/gl4/glGetProgramBinary)(program, bufSize, length, binaryFormat, binary)
17467        /// * `length` len: 1
17468        /// * `binaryFormat` len: 1
17469        /// * `binary` len: bufSize
17470        #[cfg_attr(feature = "inline", inline)]
17471        #[cfg_attr(feature = "inline_always", inline(always))]
17472        pub unsafe fn GetProgramBinary(
17473            &self,
17474            program: GLuint,
17475            bufSize: GLsizei,
17476            length: *mut GLsizei,
17477            binaryFormat: *mut GLenum,
17478            binary: *mut c_void,
17479        ) {
17480            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17481            {
17482                trace!(
17483                    "calling gl.GetProgramBinary({:?}, {:?}, {:p}, {:p}, {:p});",
17484                    program,
17485                    bufSize,
17486                    length,
17487                    binaryFormat,
17488                    binary
17489                );
17490            }
17491            let out = call_atomic_ptr_5arg(
17492                "glGetProgramBinary",
17493                &self.glGetProgramBinary_p,
17494                program,
17495                bufSize,
17496                length,
17497                binaryFormat,
17498                binary,
17499            );
17500            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17501            {
17502                self.automatic_glGetError("glGetProgramBinary");
17503            }
17504            out
17505        }
17506        #[doc(hidden)]
17507        pub unsafe fn GetProgramBinary_load_with_dyn(
17508            &self,
17509            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17510        ) -> bool {
17511            load_dyn_name_atomic_ptr(
17512                get_proc_address,
17513                b"glGetProgramBinary\0",
17514                &self.glGetProgramBinary_p,
17515            )
17516        }
17517        #[inline]
17518        #[doc(hidden)]
17519        pub fn GetProgramBinary_is_loaded(&self) -> bool {
17520            !self.glGetProgramBinary_p.load(RELAX).is_null()
17521        }
17522        /// [glGetProgramInfoLog](http://docs.gl/gl4/glGetProgramInfoLog)(program, bufSize, length, infoLog)
17523        /// * `length` len: 1
17524        /// * `infoLog` len: bufSize
17525        #[cfg_attr(feature = "inline", inline)]
17526        #[cfg_attr(feature = "inline_always", inline(always))]
17527        pub unsafe fn GetProgramInfoLog(
17528            &self,
17529            program: GLuint,
17530            bufSize: GLsizei,
17531            length: *mut GLsizei,
17532            infoLog: *mut GLchar,
17533        ) {
17534            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17535            {
17536                trace!(
17537                    "calling gl.GetProgramInfoLog({:?}, {:?}, {:p}, {:p});",
17538                    program,
17539                    bufSize,
17540                    length,
17541                    infoLog
17542                );
17543            }
17544            let out = call_atomic_ptr_4arg(
17545                "glGetProgramInfoLog",
17546                &self.glGetProgramInfoLog_p,
17547                program,
17548                bufSize,
17549                length,
17550                infoLog,
17551            );
17552            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17553            {
17554                self.automatic_glGetError("glGetProgramInfoLog");
17555            }
17556            out
17557        }
17558        #[doc(hidden)]
17559        pub unsafe fn GetProgramInfoLog_load_with_dyn(
17560            &self,
17561            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17562        ) -> bool {
17563            load_dyn_name_atomic_ptr(
17564                get_proc_address,
17565                b"glGetProgramInfoLog\0",
17566                &self.glGetProgramInfoLog_p,
17567            )
17568        }
17569        #[inline]
17570        #[doc(hidden)]
17571        pub fn GetProgramInfoLog_is_loaded(&self) -> bool {
17572            !self.glGetProgramInfoLog_p.load(RELAX).is_null()
17573        }
17574        /// [glGetProgramInterfaceiv](http://docs.gl/gl4/glGetProgramInterface)(program, programInterface, pname, params)
17575        /// * `programInterface` group: ProgramInterface
17576        /// * `pname` group: ProgramInterfacePName
17577        /// * `params` len: COMPSIZE(pname)
17578        #[cfg_attr(feature = "inline", inline)]
17579        #[cfg_attr(feature = "inline_always", inline(always))]
17580        pub unsafe fn GetProgramInterfaceiv(
17581            &self,
17582            program: GLuint,
17583            programInterface: GLenum,
17584            pname: GLenum,
17585            params: *mut GLint,
17586        ) {
17587            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17588            {
17589                trace!(
17590                    "calling gl.GetProgramInterfaceiv({:?}, {:#X}, {:#X}, {:p});",
17591                    program,
17592                    programInterface,
17593                    pname,
17594                    params
17595                );
17596            }
17597            let out = call_atomic_ptr_4arg(
17598                "glGetProgramInterfaceiv",
17599                &self.glGetProgramInterfaceiv_p,
17600                program,
17601                programInterface,
17602                pname,
17603                params,
17604            );
17605            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17606            {
17607                self.automatic_glGetError("glGetProgramInterfaceiv");
17608            }
17609            out
17610        }
17611        #[doc(hidden)]
17612        pub unsafe fn GetProgramInterfaceiv_load_with_dyn(
17613            &self,
17614            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17615        ) -> bool {
17616            load_dyn_name_atomic_ptr(
17617                get_proc_address,
17618                b"glGetProgramInterfaceiv\0",
17619                &self.glGetProgramInterfaceiv_p,
17620            )
17621        }
17622        #[inline]
17623        #[doc(hidden)]
17624        pub fn GetProgramInterfaceiv_is_loaded(&self) -> bool {
17625            !self.glGetProgramInterfaceiv_p.load(RELAX).is_null()
17626        }
17627        /// [glGetProgramPipelineInfoLog](http://docs.gl/gl4/glGetProgramPipelineInfoLog)(pipeline, bufSize, length, infoLog)
17628        /// * `length` len: 1
17629        /// * `infoLog` len: bufSize
17630        #[cfg_attr(feature = "inline", inline)]
17631        #[cfg_attr(feature = "inline_always", inline(always))]
17632        pub unsafe fn GetProgramPipelineInfoLog(
17633            &self,
17634            pipeline: GLuint,
17635            bufSize: GLsizei,
17636            length: *mut GLsizei,
17637            infoLog: *mut GLchar,
17638        ) {
17639            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17640            {
17641                trace!(
17642                    "calling gl.GetProgramPipelineInfoLog({:?}, {:?}, {:p}, {:p});",
17643                    pipeline,
17644                    bufSize,
17645                    length,
17646                    infoLog
17647                );
17648            }
17649            let out = call_atomic_ptr_4arg(
17650                "glGetProgramPipelineInfoLog",
17651                &self.glGetProgramPipelineInfoLog_p,
17652                pipeline,
17653                bufSize,
17654                length,
17655                infoLog,
17656            );
17657            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17658            {
17659                self.automatic_glGetError("glGetProgramPipelineInfoLog");
17660            }
17661            out
17662        }
17663        #[doc(hidden)]
17664        pub unsafe fn GetProgramPipelineInfoLog_load_with_dyn(
17665            &self,
17666            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17667        ) -> bool {
17668            load_dyn_name_atomic_ptr(
17669                get_proc_address,
17670                b"glGetProgramPipelineInfoLog\0",
17671                &self.glGetProgramPipelineInfoLog_p,
17672            )
17673        }
17674        #[inline]
17675        #[doc(hidden)]
17676        pub fn GetProgramPipelineInfoLog_is_loaded(&self) -> bool {
17677            !self.glGetProgramPipelineInfoLog_p.load(RELAX).is_null()
17678        }
17679        /// [glGetProgramPipelineiv](http://docs.gl/gl4/glGetProgramPipeline)(pipeline, pname, params)
17680        /// * `pname` group: PipelineParameterName
17681        /// * `params` len: COMPSIZE(pname)
17682        #[cfg_attr(feature = "inline", inline)]
17683        #[cfg_attr(feature = "inline_always", inline(always))]
17684        pub unsafe fn GetProgramPipelineiv(
17685            &self,
17686            pipeline: GLuint,
17687            pname: GLenum,
17688            params: *mut GLint,
17689        ) {
17690            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17691            {
17692                trace!(
17693                    "calling gl.GetProgramPipelineiv({:?}, {:#X}, {:p});",
17694                    pipeline,
17695                    pname,
17696                    params
17697                );
17698            }
17699            let out = call_atomic_ptr_3arg(
17700                "glGetProgramPipelineiv",
17701                &self.glGetProgramPipelineiv_p,
17702                pipeline,
17703                pname,
17704                params,
17705            );
17706            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17707            {
17708                self.automatic_glGetError("glGetProgramPipelineiv");
17709            }
17710            out
17711        }
17712        #[doc(hidden)]
17713        pub unsafe fn GetProgramPipelineiv_load_with_dyn(
17714            &self,
17715            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17716        ) -> bool {
17717            load_dyn_name_atomic_ptr(
17718                get_proc_address,
17719                b"glGetProgramPipelineiv\0",
17720                &self.glGetProgramPipelineiv_p,
17721            )
17722        }
17723        #[inline]
17724        #[doc(hidden)]
17725        pub fn GetProgramPipelineiv_is_loaded(&self) -> bool {
17726            !self.glGetProgramPipelineiv_p.load(RELAX).is_null()
17727        }
17728        /// [glGetProgramResourceIndex](http://docs.gl/gl4/glGetProgramResourceIndex)(program, programInterface, name)
17729        /// * `programInterface` group: ProgramInterface
17730        /// * `name` len: COMPSIZE(name)
17731        #[cfg_attr(feature = "inline", inline)]
17732        #[cfg_attr(feature = "inline_always", inline(always))]
17733        pub unsafe fn GetProgramResourceIndex(
17734            &self,
17735            program: GLuint,
17736            programInterface: GLenum,
17737            name: *const GLchar,
17738        ) -> GLuint {
17739            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17740            {
17741                trace!(
17742                    "calling gl.GetProgramResourceIndex({:?}, {:#X}, {:p});",
17743                    program,
17744                    programInterface,
17745                    name
17746                );
17747            }
17748            let out = call_atomic_ptr_3arg(
17749                "glGetProgramResourceIndex",
17750                &self.glGetProgramResourceIndex_p,
17751                program,
17752                programInterface,
17753                name,
17754            );
17755            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17756            {
17757                self.automatic_glGetError("glGetProgramResourceIndex");
17758            }
17759            out
17760        }
17761        #[doc(hidden)]
17762        pub unsafe fn GetProgramResourceIndex_load_with_dyn(
17763            &self,
17764            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17765        ) -> bool {
17766            load_dyn_name_atomic_ptr(
17767                get_proc_address,
17768                b"glGetProgramResourceIndex\0",
17769                &self.glGetProgramResourceIndex_p,
17770            )
17771        }
17772        #[inline]
17773        #[doc(hidden)]
17774        pub fn GetProgramResourceIndex_is_loaded(&self) -> bool {
17775            !self.glGetProgramResourceIndex_p.load(RELAX).is_null()
17776        }
17777        /// [glGetProgramResourceLocation](http://docs.gl/gl4/glGetProgramResourceLocation)(program, programInterface, name)
17778        /// * `programInterface` group: ProgramInterface
17779        /// * `name` len: COMPSIZE(name)
17780        #[cfg_attr(feature = "inline", inline)]
17781        #[cfg_attr(feature = "inline_always", inline(always))]
17782        pub unsafe fn GetProgramResourceLocation(
17783            &self,
17784            program: GLuint,
17785            programInterface: GLenum,
17786            name: *const GLchar,
17787        ) -> GLint {
17788            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17789            {
17790                trace!(
17791                    "calling gl.GetProgramResourceLocation({:?}, {:#X}, {:p});",
17792                    program,
17793                    programInterface,
17794                    name
17795                );
17796            }
17797            let out = call_atomic_ptr_3arg(
17798                "glGetProgramResourceLocation",
17799                &self.glGetProgramResourceLocation_p,
17800                program,
17801                programInterface,
17802                name,
17803            );
17804            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17805            {
17806                self.automatic_glGetError("glGetProgramResourceLocation");
17807            }
17808            out
17809        }
17810        #[doc(hidden)]
17811        pub unsafe fn GetProgramResourceLocation_load_with_dyn(
17812            &self,
17813            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17814        ) -> bool {
17815            load_dyn_name_atomic_ptr(
17816                get_proc_address,
17817                b"glGetProgramResourceLocation\0",
17818                &self.glGetProgramResourceLocation_p,
17819            )
17820        }
17821        #[inline]
17822        #[doc(hidden)]
17823        pub fn GetProgramResourceLocation_is_loaded(&self) -> bool {
17824            !self.glGetProgramResourceLocation_p.load(RELAX).is_null()
17825        }
17826        /// [glGetProgramResourceLocationIndex](http://docs.gl/gl4/glGetProgramResourceLocationIndex)(program, programInterface, name)
17827        /// * `programInterface` group: ProgramInterface
17828        /// * `name` len: COMPSIZE(name)
17829        #[cfg_attr(feature = "inline", inline)]
17830        #[cfg_attr(feature = "inline_always", inline(always))]
17831        pub unsafe fn GetProgramResourceLocationIndex(
17832            &self,
17833            program: GLuint,
17834            programInterface: GLenum,
17835            name: *const GLchar,
17836        ) -> GLint {
17837            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17838            {
17839                trace!(
17840                    "calling gl.GetProgramResourceLocationIndex({:?}, {:#X}, {:p});",
17841                    program,
17842                    programInterface,
17843                    name
17844                );
17845            }
17846            let out = call_atomic_ptr_3arg(
17847                "glGetProgramResourceLocationIndex",
17848                &self.glGetProgramResourceLocationIndex_p,
17849                program,
17850                programInterface,
17851                name,
17852            );
17853            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17854            {
17855                self.automatic_glGetError("glGetProgramResourceLocationIndex");
17856            }
17857            out
17858        }
17859        #[doc(hidden)]
17860        pub unsafe fn GetProgramResourceLocationIndex_load_with_dyn(
17861            &self,
17862            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17863        ) -> bool {
17864            load_dyn_name_atomic_ptr(
17865                get_proc_address,
17866                b"glGetProgramResourceLocationIndex\0",
17867                &self.glGetProgramResourceLocationIndex_p,
17868            )
17869        }
17870        #[inline]
17871        #[doc(hidden)]
17872        pub fn GetProgramResourceLocationIndex_is_loaded(&self) -> bool {
17873            !self
17874                .glGetProgramResourceLocationIndex_p
17875                .load(RELAX)
17876                .is_null()
17877        }
17878        /// [glGetProgramResourceName](http://docs.gl/gl4/glGetProgramResourceName)(program, programInterface, index, bufSize, length, name)
17879        /// * `programInterface` group: ProgramInterface
17880        /// * `length` len: 1
17881        /// * `name` len: bufSize
17882        #[cfg_attr(feature = "inline", inline)]
17883        #[cfg_attr(feature = "inline_always", inline(always))]
17884        pub unsafe fn GetProgramResourceName(
17885            &self,
17886            program: GLuint,
17887            programInterface: GLenum,
17888            index: GLuint,
17889            bufSize: GLsizei,
17890            length: *mut GLsizei,
17891            name: *mut GLchar,
17892        ) {
17893            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17894            {
17895                trace!(
17896                    "calling gl.GetProgramResourceName({:?}, {:#X}, {:?}, {:?}, {:p}, {:p});",
17897                    program,
17898                    programInterface,
17899                    index,
17900                    bufSize,
17901                    length,
17902                    name
17903                );
17904            }
17905            let out = call_atomic_ptr_6arg(
17906                "glGetProgramResourceName",
17907                &self.glGetProgramResourceName_p,
17908                program,
17909                programInterface,
17910                index,
17911                bufSize,
17912                length,
17913                name,
17914            );
17915            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17916            {
17917                self.automatic_glGetError("glGetProgramResourceName");
17918            }
17919            out
17920        }
17921        #[doc(hidden)]
17922        pub unsafe fn GetProgramResourceName_load_with_dyn(
17923            &self,
17924            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17925        ) -> bool {
17926            load_dyn_name_atomic_ptr(
17927                get_proc_address,
17928                b"glGetProgramResourceName\0",
17929                &self.glGetProgramResourceName_p,
17930            )
17931        }
17932        #[inline]
17933        #[doc(hidden)]
17934        pub fn GetProgramResourceName_is_loaded(&self) -> bool {
17935            !self.glGetProgramResourceName_p.load(RELAX).is_null()
17936        }
17937        /// [glGetProgramResourceiv](http://docs.gl/gl4/glGetProgramResource)(program, programInterface, index, propCount, props, count, length, params)
17938        /// * `programInterface` group: ProgramInterface
17939        /// * `props` group: ProgramResourceProperty
17940        /// * `props` len: propCount
17941        /// * `length` len: 1
17942        /// * `params` len: count
17943        #[cfg_attr(feature = "inline", inline)]
17944        #[cfg_attr(feature = "inline_always", inline(always))]
17945        pub unsafe fn GetProgramResourceiv(
17946            &self,
17947            program: GLuint,
17948            programInterface: GLenum,
17949            index: GLuint,
17950            propCount: GLsizei,
17951            props: *const GLenum,
17952            count: GLsizei,
17953            length: *mut GLsizei,
17954            params: *mut GLint,
17955        ) {
17956            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
17957            {
17958                trace!("calling gl.GetProgramResourceiv({:?}, {:#X}, {:?}, {:?}, {:p}, {:?}, {:p}, {:p});", program, programInterface, index, propCount, props, count, length, params);
17959            }
17960            let out = call_atomic_ptr_8arg(
17961                "glGetProgramResourceiv",
17962                &self.glGetProgramResourceiv_p,
17963                program,
17964                programInterface,
17965                index,
17966                propCount,
17967                props,
17968                count,
17969                length,
17970                params,
17971            );
17972            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
17973            {
17974                self.automatic_glGetError("glGetProgramResourceiv");
17975            }
17976            out
17977        }
17978        #[doc(hidden)]
17979        pub unsafe fn GetProgramResourceiv_load_with_dyn(
17980            &self,
17981            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
17982        ) -> bool {
17983            load_dyn_name_atomic_ptr(
17984                get_proc_address,
17985                b"glGetProgramResourceiv\0",
17986                &self.glGetProgramResourceiv_p,
17987            )
17988        }
17989        #[inline]
17990        #[doc(hidden)]
17991        pub fn GetProgramResourceiv_is_loaded(&self) -> bool {
17992            !self.glGetProgramResourceiv_p.load(RELAX).is_null()
17993        }
17994        /// [glGetProgramStageiv](http://docs.gl/gl4/glGetProgramStage)(program, shadertype, pname, values)
17995        /// * `shadertype` group: ShaderType
17996        /// * `pname` group: ProgramStagePName
17997        /// * `values` len: 1
17998        #[cfg_attr(feature = "inline", inline)]
17999        #[cfg_attr(feature = "inline_always", inline(always))]
18000        pub unsafe fn GetProgramStageiv(
18001            &self,
18002            program: GLuint,
18003            shadertype: GLenum,
18004            pname: GLenum,
18005            values: *mut GLint,
18006        ) {
18007            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18008            {
18009                trace!(
18010                    "calling gl.GetProgramStageiv({:?}, {:#X}, {:#X}, {:p});",
18011                    program,
18012                    shadertype,
18013                    pname,
18014                    values
18015                );
18016            }
18017            let out = call_atomic_ptr_4arg(
18018                "glGetProgramStageiv",
18019                &self.glGetProgramStageiv_p,
18020                program,
18021                shadertype,
18022                pname,
18023                values,
18024            );
18025            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18026            {
18027                self.automatic_glGetError("glGetProgramStageiv");
18028            }
18029            out
18030        }
18031        #[doc(hidden)]
18032        pub unsafe fn GetProgramStageiv_load_with_dyn(
18033            &self,
18034            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18035        ) -> bool {
18036            load_dyn_name_atomic_ptr(
18037                get_proc_address,
18038                b"glGetProgramStageiv\0",
18039                &self.glGetProgramStageiv_p,
18040            )
18041        }
18042        #[inline]
18043        #[doc(hidden)]
18044        pub fn GetProgramStageiv_is_loaded(&self) -> bool {
18045            !self.glGetProgramStageiv_p.load(RELAX).is_null()
18046        }
18047        /// [glGetProgramiv](http://docs.gl/gl4/glGetProgram)(program, pname, params)
18048        /// * `pname` group: ProgramPropertyARB
18049        /// * `params` len: COMPSIZE(pname)
18050        #[cfg_attr(feature = "inline", inline)]
18051        #[cfg_attr(feature = "inline_always", inline(always))]
18052        pub unsafe fn GetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) {
18053            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18054            {
18055                trace!(
18056                    "calling gl.GetProgramiv({:?}, {:#X}, {:p});",
18057                    program,
18058                    pname,
18059                    params
18060                );
18061            }
18062            let out = call_atomic_ptr_3arg(
18063                "glGetProgramiv",
18064                &self.glGetProgramiv_p,
18065                program,
18066                pname,
18067                params,
18068            );
18069            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18070            {
18071                self.automatic_glGetError("glGetProgramiv");
18072            }
18073            out
18074        }
18075        #[doc(hidden)]
18076        pub unsafe fn GetProgramiv_load_with_dyn(
18077            &self,
18078            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18079        ) -> bool {
18080            load_dyn_name_atomic_ptr(
18081                get_proc_address,
18082                b"glGetProgramiv\0",
18083                &self.glGetProgramiv_p,
18084            )
18085        }
18086        #[inline]
18087        #[doc(hidden)]
18088        pub fn GetProgramiv_is_loaded(&self) -> bool {
18089            !self.glGetProgramiv_p.load(RELAX).is_null()
18090        }
18091        /// [glGetQueryBufferObjecti64v](http://docs.gl/gl4/glGetQueryBufferObject)(id, buffer, pname, offset)
18092        /// * `pname` group: QueryObjectParameterName
18093        #[cfg_attr(feature = "inline", inline)]
18094        #[cfg_attr(feature = "inline_always", inline(always))]
18095        pub unsafe fn GetQueryBufferObjecti64v(
18096            &self,
18097            id: GLuint,
18098            buffer: GLuint,
18099            pname: GLenum,
18100            offset: GLintptr,
18101        ) {
18102            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18103            {
18104                trace!(
18105                    "calling gl.GetQueryBufferObjecti64v({:?}, {:?}, {:#X}, {:?});",
18106                    id,
18107                    buffer,
18108                    pname,
18109                    offset
18110                );
18111            }
18112            let out = call_atomic_ptr_4arg(
18113                "glGetQueryBufferObjecti64v",
18114                &self.glGetQueryBufferObjecti64v_p,
18115                id,
18116                buffer,
18117                pname,
18118                offset,
18119            );
18120            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18121            {
18122                self.automatic_glGetError("glGetQueryBufferObjecti64v");
18123            }
18124            out
18125        }
18126        #[doc(hidden)]
18127        pub unsafe fn GetQueryBufferObjecti64v_load_with_dyn(
18128            &self,
18129            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18130        ) -> bool {
18131            load_dyn_name_atomic_ptr(
18132                get_proc_address,
18133                b"glGetQueryBufferObjecti64v\0",
18134                &self.glGetQueryBufferObjecti64v_p,
18135            )
18136        }
18137        #[inline]
18138        #[doc(hidden)]
18139        pub fn GetQueryBufferObjecti64v_is_loaded(&self) -> bool {
18140            !self.glGetQueryBufferObjecti64v_p.load(RELAX).is_null()
18141        }
18142        /// [glGetQueryBufferObjectiv](http://docs.gl/gl4/glGetQueryBufferObject)(id, buffer, pname, offset)
18143        /// * `pname` group: QueryObjectParameterName
18144        #[cfg_attr(feature = "inline", inline)]
18145        #[cfg_attr(feature = "inline_always", inline(always))]
18146        pub unsafe fn GetQueryBufferObjectiv(
18147            &self,
18148            id: GLuint,
18149            buffer: GLuint,
18150            pname: GLenum,
18151            offset: GLintptr,
18152        ) {
18153            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18154            {
18155                trace!(
18156                    "calling gl.GetQueryBufferObjectiv({:?}, {:?}, {:#X}, {:?});",
18157                    id,
18158                    buffer,
18159                    pname,
18160                    offset
18161                );
18162            }
18163            let out = call_atomic_ptr_4arg(
18164                "glGetQueryBufferObjectiv",
18165                &self.glGetQueryBufferObjectiv_p,
18166                id,
18167                buffer,
18168                pname,
18169                offset,
18170            );
18171            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18172            {
18173                self.automatic_glGetError("glGetQueryBufferObjectiv");
18174            }
18175            out
18176        }
18177        #[doc(hidden)]
18178        pub unsafe fn GetQueryBufferObjectiv_load_with_dyn(
18179            &self,
18180            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18181        ) -> bool {
18182            load_dyn_name_atomic_ptr(
18183                get_proc_address,
18184                b"glGetQueryBufferObjectiv\0",
18185                &self.glGetQueryBufferObjectiv_p,
18186            )
18187        }
18188        #[inline]
18189        #[doc(hidden)]
18190        pub fn GetQueryBufferObjectiv_is_loaded(&self) -> bool {
18191            !self.glGetQueryBufferObjectiv_p.load(RELAX).is_null()
18192        }
18193        /// [glGetQueryBufferObjectui64v](http://docs.gl/gl4/glGetQueryBufferObjectu)(id, buffer, pname, offset)
18194        /// * `pname` group: QueryObjectParameterName
18195        #[cfg_attr(feature = "inline", inline)]
18196        #[cfg_attr(feature = "inline_always", inline(always))]
18197        pub unsafe fn GetQueryBufferObjectui64v(
18198            &self,
18199            id: GLuint,
18200            buffer: GLuint,
18201            pname: GLenum,
18202            offset: GLintptr,
18203        ) {
18204            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18205            {
18206                trace!(
18207                    "calling gl.GetQueryBufferObjectui64v({:?}, {:?}, {:#X}, {:?});",
18208                    id,
18209                    buffer,
18210                    pname,
18211                    offset
18212                );
18213            }
18214            let out = call_atomic_ptr_4arg(
18215                "glGetQueryBufferObjectui64v",
18216                &self.glGetQueryBufferObjectui64v_p,
18217                id,
18218                buffer,
18219                pname,
18220                offset,
18221            );
18222            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18223            {
18224                self.automatic_glGetError("glGetQueryBufferObjectui64v");
18225            }
18226            out
18227        }
18228        #[doc(hidden)]
18229        pub unsafe fn GetQueryBufferObjectui64v_load_with_dyn(
18230            &self,
18231            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18232        ) -> bool {
18233            load_dyn_name_atomic_ptr(
18234                get_proc_address,
18235                b"glGetQueryBufferObjectui64v\0",
18236                &self.glGetQueryBufferObjectui64v_p,
18237            )
18238        }
18239        #[inline]
18240        #[doc(hidden)]
18241        pub fn GetQueryBufferObjectui64v_is_loaded(&self) -> bool {
18242            !self.glGetQueryBufferObjectui64v_p.load(RELAX).is_null()
18243        }
18244        /// [glGetQueryBufferObjectuiv](http://docs.gl/gl4/glGetQueryBufferObject)(id, buffer, pname, offset)
18245        /// * `pname` group: QueryObjectParameterName
18246        #[cfg_attr(feature = "inline", inline)]
18247        #[cfg_attr(feature = "inline_always", inline(always))]
18248        pub unsafe fn GetQueryBufferObjectuiv(
18249            &self,
18250            id: GLuint,
18251            buffer: GLuint,
18252            pname: GLenum,
18253            offset: GLintptr,
18254        ) {
18255            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18256            {
18257                trace!(
18258                    "calling gl.GetQueryBufferObjectuiv({:?}, {:?}, {:#X}, {:?});",
18259                    id,
18260                    buffer,
18261                    pname,
18262                    offset
18263                );
18264            }
18265            let out = call_atomic_ptr_4arg(
18266                "glGetQueryBufferObjectuiv",
18267                &self.glGetQueryBufferObjectuiv_p,
18268                id,
18269                buffer,
18270                pname,
18271                offset,
18272            );
18273            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18274            {
18275                self.automatic_glGetError("glGetQueryBufferObjectuiv");
18276            }
18277            out
18278        }
18279        #[doc(hidden)]
18280        pub unsafe fn GetQueryBufferObjectuiv_load_with_dyn(
18281            &self,
18282            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18283        ) -> bool {
18284            load_dyn_name_atomic_ptr(
18285                get_proc_address,
18286                b"glGetQueryBufferObjectuiv\0",
18287                &self.glGetQueryBufferObjectuiv_p,
18288            )
18289        }
18290        #[inline]
18291        #[doc(hidden)]
18292        pub fn GetQueryBufferObjectuiv_is_loaded(&self) -> bool {
18293            !self.glGetQueryBufferObjectuiv_p.load(RELAX).is_null()
18294        }
18295        /// [glGetQueryIndexediv](http://docs.gl/gl4/glGetQueryIndexed)(target, index, pname, params)
18296        /// * `target` group: QueryTarget
18297        /// * `pname` group: QueryParameterName
18298        /// * `params` len: COMPSIZE(pname)
18299        #[cfg_attr(feature = "inline", inline)]
18300        #[cfg_attr(feature = "inline_always", inline(always))]
18301        pub unsafe fn GetQueryIndexediv(
18302            &self,
18303            target: GLenum,
18304            index: GLuint,
18305            pname: GLenum,
18306            params: *mut GLint,
18307        ) {
18308            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18309            {
18310                trace!(
18311                    "calling gl.GetQueryIndexediv({:#X}, {:?}, {:#X}, {:p});",
18312                    target,
18313                    index,
18314                    pname,
18315                    params
18316                );
18317            }
18318            let out = call_atomic_ptr_4arg(
18319                "glGetQueryIndexediv",
18320                &self.glGetQueryIndexediv_p,
18321                target,
18322                index,
18323                pname,
18324                params,
18325            );
18326            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18327            {
18328                self.automatic_glGetError("glGetQueryIndexediv");
18329            }
18330            out
18331        }
18332        #[doc(hidden)]
18333        pub unsafe fn GetQueryIndexediv_load_with_dyn(
18334            &self,
18335            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18336        ) -> bool {
18337            load_dyn_name_atomic_ptr(
18338                get_proc_address,
18339                b"glGetQueryIndexediv\0",
18340                &self.glGetQueryIndexediv_p,
18341            )
18342        }
18343        #[inline]
18344        #[doc(hidden)]
18345        pub fn GetQueryIndexediv_is_loaded(&self) -> bool {
18346            !self.glGetQueryIndexediv_p.load(RELAX).is_null()
18347        }
18348        /// [glGetQueryObjecti64v](http://docs.gl/gl4/glGetQueryObject)(id, pname, params)
18349        /// * `pname` group: QueryObjectParameterName
18350        /// * `params` len: COMPSIZE(pname)
18351        #[cfg_attr(feature = "inline", inline)]
18352        #[cfg_attr(feature = "inline_always", inline(always))]
18353        pub unsafe fn GetQueryObjecti64v(&self, id: GLuint, pname: GLenum, params: *mut GLint64) {
18354            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18355            {
18356                trace!(
18357                    "calling gl.GetQueryObjecti64v({:?}, {:#X}, {:p});",
18358                    id,
18359                    pname,
18360                    params
18361                );
18362            }
18363            let out = call_atomic_ptr_3arg(
18364                "glGetQueryObjecti64v",
18365                &self.glGetQueryObjecti64v_p,
18366                id,
18367                pname,
18368                params,
18369            );
18370            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18371            {
18372                self.automatic_glGetError("glGetQueryObjecti64v");
18373            }
18374            out
18375        }
18376        #[doc(hidden)]
18377        pub unsafe fn GetQueryObjecti64v_load_with_dyn(
18378            &self,
18379            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18380        ) -> bool {
18381            load_dyn_name_atomic_ptr(
18382                get_proc_address,
18383                b"glGetQueryObjecti64v\0",
18384                &self.glGetQueryObjecti64v_p,
18385            )
18386        }
18387        #[inline]
18388        #[doc(hidden)]
18389        pub fn GetQueryObjecti64v_is_loaded(&self) -> bool {
18390            !self.glGetQueryObjecti64v_p.load(RELAX).is_null()
18391        }
18392        /// [glGetQueryObjecti64vEXT](http://docs.gl/gl4/glGetQueryObjecti64vEXT)(id, pname, params)
18393        /// * `pname` group: QueryObjectParameterName
18394        /// * `params` len: COMPSIZE(pname)
18395        /// * alias of: [`glGetQueryObjecti64v`]
18396        #[cfg_attr(feature = "inline", inline)]
18397        #[cfg_attr(feature = "inline_always", inline(always))]
18398        pub unsafe fn GetQueryObjecti64vEXT(
18399            &self,
18400            id: GLuint,
18401            pname: GLenum,
18402            params: *mut GLint64,
18403        ) {
18404            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18405            {
18406                trace!(
18407                    "calling gl.GetQueryObjecti64vEXT({:?}, {:#X}, {:p});",
18408                    id,
18409                    pname,
18410                    params
18411                );
18412            }
18413            let out = call_atomic_ptr_3arg(
18414                "glGetQueryObjecti64vEXT",
18415                &self.glGetQueryObjecti64vEXT_p,
18416                id,
18417                pname,
18418                params,
18419            );
18420            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18421            {
18422                self.automatic_glGetError("glGetQueryObjecti64vEXT");
18423            }
18424            out
18425        }
18426        #[doc(hidden)]
18427        pub unsafe fn GetQueryObjecti64vEXT_load_with_dyn(
18428            &self,
18429            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18430        ) -> bool {
18431            load_dyn_name_atomic_ptr(
18432                get_proc_address,
18433                b"glGetQueryObjecti64vEXT\0",
18434                &self.glGetQueryObjecti64vEXT_p,
18435            )
18436        }
18437        #[inline]
18438        #[doc(hidden)]
18439        pub fn GetQueryObjecti64vEXT_is_loaded(&self) -> bool {
18440            !self.glGetQueryObjecti64vEXT_p.load(RELAX).is_null()
18441        }
18442        /// [glGetQueryObjectiv](http://docs.gl/gl4/glGetQueryObject)(id, pname, params)
18443        /// * `pname` group: QueryObjectParameterName
18444        /// * `params` len: COMPSIZE(pname)
18445        #[cfg_attr(feature = "inline", inline)]
18446        #[cfg_attr(feature = "inline_always", inline(always))]
18447        pub unsafe fn GetQueryObjectiv(&self, id: GLuint, pname: GLenum, params: *mut GLint) {
18448            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18449            {
18450                trace!(
18451                    "calling gl.GetQueryObjectiv({:?}, {:#X}, {:p});",
18452                    id,
18453                    pname,
18454                    params
18455                );
18456            }
18457            let out = call_atomic_ptr_3arg(
18458                "glGetQueryObjectiv",
18459                &self.glGetQueryObjectiv_p,
18460                id,
18461                pname,
18462                params,
18463            );
18464            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18465            {
18466                self.automatic_glGetError("glGetQueryObjectiv");
18467            }
18468            out
18469        }
18470        #[doc(hidden)]
18471        pub unsafe fn GetQueryObjectiv_load_with_dyn(
18472            &self,
18473            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18474        ) -> bool {
18475            load_dyn_name_atomic_ptr(
18476                get_proc_address,
18477                b"glGetQueryObjectiv\0",
18478                &self.glGetQueryObjectiv_p,
18479            )
18480        }
18481        #[inline]
18482        #[doc(hidden)]
18483        pub fn GetQueryObjectiv_is_loaded(&self) -> bool {
18484            !self.glGetQueryObjectiv_p.load(RELAX).is_null()
18485        }
18486        /// [glGetQueryObjectivEXT](http://docs.gl/gl4/glGetQueryObjectivEXT)(id, pname, params)
18487        /// * `pname` group: QueryObjectParameterName
18488        /// * `params` len: COMPSIZE(pname)
18489        /// * alias of: [`glGetQueryObjectiv`]
18490        #[cfg_attr(feature = "inline", inline)]
18491        #[cfg_attr(feature = "inline_always", inline(always))]
18492        pub unsafe fn GetQueryObjectivEXT(&self, id: GLuint, pname: GLenum, params: *mut GLint) {
18493            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18494            {
18495                trace!(
18496                    "calling gl.GetQueryObjectivEXT({:?}, {:#X}, {:p});",
18497                    id,
18498                    pname,
18499                    params
18500                );
18501            }
18502            let out = call_atomic_ptr_3arg(
18503                "glGetQueryObjectivEXT",
18504                &self.glGetQueryObjectivEXT_p,
18505                id,
18506                pname,
18507                params,
18508            );
18509            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18510            {
18511                self.automatic_glGetError("glGetQueryObjectivEXT");
18512            }
18513            out
18514        }
18515        #[doc(hidden)]
18516        pub unsafe fn GetQueryObjectivEXT_load_with_dyn(
18517            &self,
18518            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18519        ) -> bool {
18520            load_dyn_name_atomic_ptr(
18521                get_proc_address,
18522                b"glGetQueryObjectivEXT\0",
18523                &self.glGetQueryObjectivEXT_p,
18524            )
18525        }
18526        #[inline]
18527        #[doc(hidden)]
18528        pub fn GetQueryObjectivEXT_is_loaded(&self) -> bool {
18529            !self.glGetQueryObjectivEXT_p.load(RELAX).is_null()
18530        }
18531        /// [glGetQueryObjectui64v](http://docs.gl/gl4/glGetQueryObjectu)(id, pname, params)
18532        /// * `pname` group: QueryObjectParameterName
18533        /// * `params` len: COMPSIZE(pname)
18534        #[cfg_attr(feature = "inline", inline)]
18535        #[cfg_attr(feature = "inline_always", inline(always))]
18536        pub unsafe fn GetQueryObjectui64v(&self, id: GLuint, pname: GLenum, params: *mut GLuint64) {
18537            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18538            {
18539                trace!(
18540                    "calling gl.GetQueryObjectui64v({:?}, {:#X}, {:p});",
18541                    id,
18542                    pname,
18543                    params
18544                );
18545            }
18546            let out = call_atomic_ptr_3arg(
18547                "glGetQueryObjectui64v",
18548                &self.glGetQueryObjectui64v_p,
18549                id,
18550                pname,
18551                params,
18552            );
18553            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18554            {
18555                self.automatic_glGetError("glGetQueryObjectui64v");
18556            }
18557            out
18558        }
18559        #[doc(hidden)]
18560        pub unsafe fn GetQueryObjectui64v_load_with_dyn(
18561            &self,
18562            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18563        ) -> bool {
18564            load_dyn_name_atomic_ptr(
18565                get_proc_address,
18566                b"glGetQueryObjectui64v\0",
18567                &self.glGetQueryObjectui64v_p,
18568            )
18569        }
18570        #[inline]
18571        #[doc(hidden)]
18572        pub fn GetQueryObjectui64v_is_loaded(&self) -> bool {
18573            !self.glGetQueryObjectui64v_p.load(RELAX).is_null()
18574        }
18575        /// [glGetQueryObjectui64vEXT](http://docs.gl/gl4/glGetQueryObjectui64vEXT)(id, pname, params)
18576        /// * `pname` group: QueryObjectParameterName
18577        /// * `params` len: COMPSIZE(pname)
18578        /// * alias of: [`glGetQueryObjectui64v`]
18579        #[cfg_attr(feature = "inline", inline)]
18580        #[cfg_attr(feature = "inline_always", inline(always))]
18581        pub unsafe fn GetQueryObjectui64vEXT(
18582            &self,
18583            id: GLuint,
18584            pname: GLenum,
18585            params: *mut GLuint64,
18586        ) {
18587            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18588            {
18589                trace!(
18590                    "calling gl.GetQueryObjectui64vEXT({:?}, {:#X}, {:p});",
18591                    id,
18592                    pname,
18593                    params
18594                );
18595            }
18596            let out = call_atomic_ptr_3arg(
18597                "glGetQueryObjectui64vEXT",
18598                &self.glGetQueryObjectui64vEXT_p,
18599                id,
18600                pname,
18601                params,
18602            );
18603            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18604            {
18605                self.automatic_glGetError("glGetQueryObjectui64vEXT");
18606            }
18607            out
18608        }
18609        #[doc(hidden)]
18610        pub unsafe fn GetQueryObjectui64vEXT_load_with_dyn(
18611            &self,
18612            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18613        ) -> bool {
18614            load_dyn_name_atomic_ptr(
18615                get_proc_address,
18616                b"glGetQueryObjectui64vEXT\0",
18617                &self.glGetQueryObjectui64vEXT_p,
18618            )
18619        }
18620        #[inline]
18621        #[doc(hidden)]
18622        pub fn GetQueryObjectui64vEXT_is_loaded(&self) -> bool {
18623            !self.glGetQueryObjectui64vEXT_p.load(RELAX).is_null()
18624        }
18625        /// [glGetQueryObjectuiv](http://docs.gl/gl4/glGetQueryObject)(id, pname, params)
18626        /// * `pname` group: QueryObjectParameterName
18627        /// * `params` len: COMPSIZE(pname)
18628        #[cfg_attr(feature = "inline", inline)]
18629        #[cfg_attr(feature = "inline_always", inline(always))]
18630        pub unsafe fn GetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) {
18631            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18632            {
18633                trace!(
18634                    "calling gl.GetQueryObjectuiv({:?}, {:#X}, {:p});",
18635                    id,
18636                    pname,
18637                    params
18638                );
18639            }
18640            let out = call_atomic_ptr_3arg(
18641                "glGetQueryObjectuiv",
18642                &self.glGetQueryObjectuiv_p,
18643                id,
18644                pname,
18645                params,
18646            );
18647            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18648            {
18649                self.automatic_glGetError("glGetQueryObjectuiv");
18650            }
18651            out
18652        }
18653        #[doc(hidden)]
18654        pub unsafe fn GetQueryObjectuiv_load_with_dyn(
18655            &self,
18656            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18657        ) -> bool {
18658            load_dyn_name_atomic_ptr(
18659                get_proc_address,
18660                b"glGetQueryObjectuiv\0",
18661                &self.glGetQueryObjectuiv_p,
18662            )
18663        }
18664        #[inline]
18665        #[doc(hidden)]
18666        pub fn GetQueryObjectuiv_is_loaded(&self) -> bool {
18667            !self.glGetQueryObjectuiv_p.load(RELAX).is_null()
18668        }
18669        /// [glGetQueryObjectuivEXT](http://docs.gl/gl4/glGetQueryObjectuivEXT)(id, pname, params)
18670        /// * `pname` group: QueryObjectParameterName
18671        /// * `params` len: COMPSIZE(pname)
18672        #[cfg_attr(feature = "inline", inline)]
18673        #[cfg_attr(feature = "inline_always", inline(always))]
18674        pub unsafe fn GetQueryObjectuivEXT(&self, id: GLuint, pname: GLenum, params: *mut GLuint) {
18675            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18676            {
18677                trace!(
18678                    "calling gl.GetQueryObjectuivEXT({:?}, {:#X}, {:p});",
18679                    id,
18680                    pname,
18681                    params
18682                );
18683            }
18684            let out = call_atomic_ptr_3arg(
18685                "glGetQueryObjectuivEXT",
18686                &self.glGetQueryObjectuivEXT_p,
18687                id,
18688                pname,
18689                params,
18690            );
18691            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18692            {
18693                self.automatic_glGetError("glGetQueryObjectuivEXT");
18694            }
18695            out
18696        }
18697        #[doc(hidden)]
18698        pub unsafe fn GetQueryObjectuivEXT_load_with_dyn(
18699            &self,
18700            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18701        ) -> bool {
18702            load_dyn_name_atomic_ptr(
18703                get_proc_address,
18704                b"glGetQueryObjectuivEXT\0",
18705                &self.glGetQueryObjectuivEXT_p,
18706            )
18707        }
18708        #[inline]
18709        #[doc(hidden)]
18710        pub fn GetQueryObjectuivEXT_is_loaded(&self) -> bool {
18711            !self.glGetQueryObjectuivEXT_p.load(RELAX).is_null()
18712        }
18713        /// [glGetQueryiv](http://docs.gl/gl4/glGetQuery)(target, pname, params)
18714        /// * `target` group: QueryTarget
18715        /// * `pname` group: QueryParameterName
18716        /// * `params` len: COMPSIZE(pname)
18717        #[cfg_attr(feature = "inline", inline)]
18718        #[cfg_attr(feature = "inline_always", inline(always))]
18719        pub unsafe fn GetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) {
18720            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18721            {
18722                trace!(
18723                    "calling gl.GetQueryiv({:#X}, {:#X}, {:p});",
18724                    target,
18725                    pname,
18726                    params
18727                );
18728            }
18729            let out =
18730                call_atomic_ptr_3arg("glGetQueryiv", &self.glGetQueryiv_p, target, pname, params);
18731            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18732            {
18733                self.automatic_glGetError("glGetQueryiv");
18734            }
18735            out
18736        }
18737        #[doc(hidden)]
18738        pub unsafe fn GetQueryiv_load_with_dyn(
18739            &self,
18740            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18741        ) -> bool {
18742            load_dyn_name_atomic_ptr(get_proc_address, b"glGetQueryiv\0", &self.glGetQueryiv_p)
18743        }
18744        #[inline]
18745        #[doc(hidden)]
18746        pub fn GetQueryiv_is_loaded(&self) -> bool {
18747            !self.glGetQueryiv_p.load(RELAX).is_null()
18748        }
18749        /// [glGetQueryivEXT](http://docs.gl/gl4/glGetQueryivEXT)(target, pname, params)
18750        /// * `target` group: QueryTarget
18751        /// * `pname` group: QueryParameterName
18752        /// * `params` len: COMPSIZE(pname)
18753        #[cfg_attr(feature = "inline", inline)]
18754        #[cfg_attr(feature = "inline_always", inline(always))]
18755        pub unsafe fn GetQueryivEXT(&self, target: GLenum, pname: GLenum, params: *mut GLint) {
18756            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18757            {
18758                trace!(
18759                    "calling gl.GetQueryivEXT({:#X}, {:#X}, {:p});",
18760                    target,
18761                    pname,
18762                    params
18763                );
18764            }
18765            let out = call_atomic_ptr_3arg(
18766                "glGetQueryivEXT",
18767                &self.glGetQueryivEXT_p,
18768                target,
18769                pname,
18770                params,
18771            );
18772            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18773            {
18774                self.automatic_glGetError("glGetQueryivEXT");
18775            }
18776            out
18777        }
18778        #[doc(hidden)]
18779        pub unsafe fn GetQueryivEXT_load_with_dyn(
18780            &self,
18781            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18782        ) -> bool {
18783            load_dyn_name_atomic_ptr(
18784                get_proc_address,
18785                b"glGetQueryivEXT\0",
18786                &self.glGetQueryivEXT_p,
18787            )
18788        }
18789        #[inline]
18790        #[doc(hidden)]
18791        pub fn GetQueryivEXT_is_loaded(&self) -> bool {
18792            !self.glGetQueryivEXT_p.load(RELAX).is_null()
18793        }
18794        /// [glGetRenderbufferParameteriv](http://docs.gl/gl4/glGetRenderbufferParameter)(target, pname, params)
18795        /// * `target` group: RenderbufferTarget
18796        /// * `pname` group: RenderbufferParameterName
18797        /// * `params` len: COMPSIZE(pname)
18798        #[cfg_attr(feature = "inline", inline)]
18799        #[cfg_attr(feature = "inline_always", inline(always))]
18800        pub unsafe fn GetRenderbufferParameteriv(
18801            &self,
18802            target: GLenum,
18803            pname: GLenum,
18804            params: *mut GLint,
18805        ) {
18806            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18807            {
18808                trace!(
18809                    "calling gl.GetRenderbufferParameteriv({:#X}, {:#X}, {:p});",
18810                    target,
18811                    pname,
18812                    params
18813                );
18814            }
18815            let out = call_atomic_ptr_3arg(
18816                "glGetRenderbufferParameteriv",
18817                &self.glGetRenderbufferParameteriv_p,
18818                target,
18819                pname,
18820                params,
18821            );
18822            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18823            {
18824                self.automatic_glGetError("glGetRenderbufferParameteriv");
18825            }
18826            out
18827        }
18828        #[doc(hidden)]
18829        pub unsafe fn GetRenderbufferParameteriv_load_with_dyn(
18830            &self,
18831            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18832        ) -> bool {
18833            load_dyn_name_atomic_ptr(
18834                get_proc_address,
18835                b"glGetRenderbufferParameteriv\0",
18836                &self.glGetRenderbufferParameteriv_p,
18837            )
18838        }
18839        #[inline]
18840        #[doc(hidden)]
18841        pub fn GetRenderbufferParameteriv_is_loaded(&self) -> bool {
18842            !self.glGetRenderbufferParameteriv_p.load(RELAX).is_null()
18843        }
18844        /// [glGetSamplerParameterIiv](http://docs.gl/gl4/glGetSamplerParameter)(sampler, pname, params)
18845        /// * `pname` group: SamplerParameterI
18846        /// * `params` len: COMPSIZE(pname)
18847        #[cfg_attr(feature = "inline", inline)]
18848        #[cfg_attr(feature = "inline_always", inline(always))]
18849        pub unsafe fn GetSamplerParameterIiv(
18850            &self,
18851            sampler: GLuint,
18852            pname: GLenum,
18853            params: *mut GLint,
18854        ) {
18855            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18856            {
18857                trace!(
18858                    "calling gl.GetSamplerParameterIiv({:?}, {:#X}, {:p});",
18859                    sampler,
18860                    pname,
18861                    params
18862                );
18863            }
18864            let out = call_atomic_ptr_3arg(
18865                "glGetSamplerParameterIiv",
18866                &self.glGetSamplerParameterIiv_p,
18867                sampler,
18868                pname,
18869                params,
18870            );
18871            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18872            {
18873                self.automatic_glGetError("glGetSamplerParameterIiv");
18874            }
18875            out
18876        }
18877        #[doc(hidden)]
18878        pub unsafe fn GetSamplerParameterIiv_load_with_dyn(
18879            &self,
18880            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18881        ) -> bool {
18882            load_dyn_name_atomic_ptr(
18883                get_proc_address,
18884                b"glGetSamplerParameterIiv\0",
18885                &self.glGetSamplerParameterIiv_p,
18886            )
18887        }
18888        #[inline]
18889        #[doc(hidden)]
18890        pub fn GetSamplerParameterIiv_is_loaded(&self) -> bool {
18891            !self.glGetSamplerParameterIiv_p.load(RELAX).is_null()
18892        }
18893        /// [glGetSamplerParameterIuiv](http://docs.gl/gl4/glGetSamplerParameter)(sampler, pname, params)
18894        /// * `pname` group: SamplerParameterI
18895        /// * `params` len: COMPSIZE(pname)
18896        #[cfg_attr(feature = "inline", inline)]
18897        #[cfg_attr(feature = "inline_always", inline(always))]
18898        pub unsafe fn GetSamplerParameterIuiv(
18899            &self,
18900            sampler: GLuint,
18901            pname: GLenum,
18902            params: *mut GLuint,
18903        ) {
18904            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18905            {
18906                trace!(
18907                    "calling gl.GetSamplerParameterIuiv({:?}, {:#X}, {:p});",
18908                    sampler,
18909                    pname,
18910                    params
18911                );
18912            }
18913            let out = call_atomic_ptr_3arg(
18914                "glGetSamplerParameterIuiv",
18915                &self.glGetSamplerParameterIuiv_p,
18916                sampler,
18917                pname,
18918                params,
18919            );
18920            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18921            {
18922                self.automatic_glGetError("glGetSamplerParameterIuiv");
18923            }
18924            out
18925        }
18926        #[doc(hidden)]
18927        pub unsafe fn GetSamplerParameterIuiv_load_with_dyn(
18928            &self,
18929            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18930        ) -> bool {
18931            load_dyn_name_atomic_ptr(
18932                get_proc_address,
18933                b"glGetSamplerParameterIuiv\0",
18934                &self.glGetSamplerParameterIuiv_p,
18935            )
18936        }
18937        #[inline]
18938        #[doc(hidden)]
18939        pub fn GetSamplerParameterIuiv_is_loaded(&self) -> bool {
18940            !self.glGetSamplerParameterIuiv_p.load(RELAX).is_null()
18941        }
18942        /// [glGetSamplerParameterfv](http://docs.gl/gl4/glGetSamplerParameter)(sampler, pname, params)
18943        /// * `pname` group: SamplerParameterF
18944        /// * `params` len: COMPSIZE(pname)
18945        #[cfg_attr(feature = "inline", inline)]
18946        #[cfg_attr(feature = "inline_always", inline(always))]
18947        pub unsafe fn GetSamplerParameterfv(
18948            &self,
18949            sampler: GLuint,
18950            pname: GLenum,
18951            params: *mut GLfloat,
18952        ) {
18953            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
18954            {
18955                trace!(
18956                    "calling gl.GetSamplerParameterfv({:?}, {:#X}, {:p});",
18957                    sampler,
18958                    pname,
18959                    params
18960                );
18961            }
18962            let out = call_atomic_ptr_3arg(
18963                "glGetSamplerParameterfv",
18964                &self.glGetSamplerParameterfv_p,
18965                sampler,
18966                pname,
18967                params,
18968            );
18969            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
18970            {
18971                self.automatic_glGetError("glGetSamplerParameterfv");
18972            }
18973            out
18974        }
18975        #[doc(hidden)]
18976        pub unsafe fn GetSamplerParameterfv_load_with_dyn(
18977            &self,
18978            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
18979        ) -> bool {
18980            load_dyn_name_atomic_ptr(
18981                get_proc_address,
18982                b"glGetSamplerParameterfv\0",
18983                &self.glGetSamplerParameterfv_p,
18984            )
18985        }
18986        #[inline]
18987        #[doc(hidden)]
18988        pub fn GetSamplerParameterfv_is_loaded(&self) -> bool {
18989            !self.glGetSamplerParameterfv_p.load(RELAX).is_null()
18990        }
18991        /// [glGetSamplerParameteriv](http://docs.gl/gl4/glGetSamplerParameter)(sampler, pname, params)
18992        /// * `pname` group: SamplerParameterI
18993        /// * `params` len: COMPSIZE(pname)
18994        #[cfg_attr(feature = "inline", inline)]
18995        #[cfg_attr(feature = "inline_always", inline(always))]
18996        pub unsafe fn GetSamplerParameteriv(
18997            &self,
18998            sampler: GLuint,
18999            pname: GLenum,
19000            params: *mut GLint,
19001        ) {
19002            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19003            {
19004                trace!(
19005                    "calling gl.GetSamplerParameteriv({:?}, {:#X}, {:p});",
19006                    sampler,
19007                    pname,
19008                    params
19009                );
19010            }
19011            let out = call_atomic_ptr_3arg(
19012                "glGetSamplerParameteriv",
19013                &self.glGetSamplerParameteriv_p,
19014                sampler,
19015                pname,
19016                params,
19017            );
19018            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19019            {
19020                self.automatic_glGetError("glGetSamplerParameteriv");
19021            }
19022            out
19023        }
19024        #[doc(hidden)]
19025        pub unsafe fn GetSamplerParameteriv_load_with_dyn(
19026            &self,
19027            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19028        ) -> bool {
19029            load_dyn_name_atomic_ptr(
19030                get_proc_address,
19031                b"glGetSamplerParameteriv\0",
19032                &self.glGetSamplerParameteriv_p,
19033            )
19034        }
19035        #[inline]
19036        #[doc(hidden)]
19037        pub fn GetSamplerParameteriv_is_loaded(&self) -> bool {
19038            !self.glGetSamplerParameteriv_p.load(RELAX).is_null()
19039        }
19040        /// [glGetShaderInfoLog](http://docs.gl/gl4/glGetShaderInfoLog)(shader, bufSize, length, infoLog)
19041        /// * `length` len: 1
19042        /// * `infoLog` len: bufSize
19043        #[cfg_attr(feature = "inline", inline)]
19044        #[cfg_attr(feature = "inline_always", inline(always))]
19045        pub unsafe fn GetShaderInfoLog(
19046            &self,
19047            shader: GLuint,
19048            bufSize: GLsizei,
19049            length: *mut GLsizei,
19050            infoLog: *mut GLchar,
19051        ) {
19052            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19053            {
19054                trace!(
19055                    "calling gl.GetShaderInfoLog({:?}, {:?}, {:p}, {:p});",
19056                    shader,
19057                    bufSize,
19058                    length,
19059                    infoLog
19060                );
19061            }
19062            let out = call_atomic_ptr_4arg(
19063                "glGetShaderInfoLog",
19064                &self.glGetShaderInfoLog_p,
19065                shader,
19066                bufSize,
19067                length,
19068                infoLog,
19069            );
19070            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19071            {
19072                self.automatic_glGetError("glGetShaderInfoLog");
19073            }
19074            out
19075        }
19076        #[doc(hidden)]
19077        pub unsafe fn GetShaderInfoLog_load_with_dyn(
19078            &self,
19079            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19080        ) -> bool {
19081            load_dyn_name_atomic_ptr(
19082                get_proc_address,
19083                b"glGetShaderInfoLog\0",
19084                &self.glGetShaderInfoLog_p,
19085            )
19086        }
19087        #[inline]
19088        #[doc(hidden)]
19089        pub fn GetShaderInfoLog_is_loaded(&self) -> bool {
19090            !self.glGetShaderInfoLog_p.load(RELAX).is_null()
19091        }
19092        /// [glGetShaderPrecisionFormat](http://docs.gl/gl4/glGetShaderPrecisionFormat)(shadertype, precisiontype, range, precision)
19093        /// * `shadertype` group: ShaderType
19094        /// * `precisiontype` group: PrecisionType
19095        /// * `range` len: 2
19096        /// * `precision` len: 1
19097        #[cfg_attr(feature = "inline", inline)]
19098        #[cfg_attr(feature = "inline_always", inline(always))]
19099        pub unsafe fn GetShaderPrecisionFormat(
19100            &self,
19101            shadertype: GLenum,
19102            precisiontype: GLenum,
19103            range: *mut GLint,
19104            precision: *mut GLint,
19105        ) {
19106            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19107            {
19108                trace!(
19109                    "calling gl.GetShaderPrecisionFormat({:#X}, {:#X}, {:p}, {:p});",
19110                    shadertype,
19111                    precisiontype,
19112                    range,
19113                    precision
19114                );
19115            }
19116            let out = call_atomic_ptr_4arg(
19117                "glGetShaderPrecisionFormat",
19118                &self.glGetShaderPrecisionFormat_p,
19119                shadertype,
19120                precisiontype,
19121                range,
19122                precision,
19123            );
19124            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19125            {
19126                self.automatic_glGetError("glGetShaderPrecisionFormat");
19127            }
19128            out
19129        }
19130        #[doc(hidden)]
19131        pub unsafe fn GetShaderPrecisionFormat_load_with_dyn(
19132            &self,
19133            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19134        ) -> bool {
19135            load_dyn_name_atomic_ptr(
19136                get_proc_address,
19137                b"glGetShaderPrecisionFormat\0",
19138                &self.glGetShaderPrecisionFormat_p,
19139            )
19140        }
19141        #[inline]
19142        #[doc(hidden)]
19143        pub fn GetShaderPrecisionFormat_is_loaded(&self) -> bool {
19144            !self.glGetShaderPrecisionFormat_p.load(RELAX).is_null()
19145        }
19146        /// [glGetShaderSource](http://docs.gl/gl4/glGetShaderSource)(shader, bufSize, length, source)
19147        /// * `length` len: 1
19148        /// * `source` len: bufSize
19149        #[cfg_attr(feature = "inline", inline)]
19150        #[cfg_attr(feature = "inline_always", inline(always))]
19151        pub unsafe fn GetShaderSource(
19152            &self,
19153            shader: GLuint,
19154            bufSize: GLsizei,
19155            length: *mut GLsizei,
19156            source: *mut GLchar,
19157        ) {
19158            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19159            {
19160                trace!(
19161                    "calling gl.GetShaderSource({:?}, {:?}, {:p}, {:p});",
19162                    shader,
19163                    bufSize,
19164                    length,
19165                    source
19166                );
19167            }
19168            let out = call_atomic_ptr_4arg(
19169                "glGetShaderSource",
19170                &self.glGetShaderSource_p,
19171                shader,
19172                bufSize,
19173                length,
19174                source,
19175            );
19176            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19177            {
19178                self.automatic_glGetError("glGetShaderSource");
19179            }
19180            out
19181        }
19182        #[doc(hidden)]
19183        pub unsafe fn GetShaderSource_load_with_dyn(
19184            &self,
19185            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19186        ) -> bool {
19187            load_dyn_name_atomic_ptr(
19188                get_proc_address,
19189                b"glGetShaderSource\0",
19190                &self.glGetShaderSource_p,
19191            )
19192        }
19193        #[inline]
19194        #[doc(hidden)]
19195        pub fn GetShaderSource_is_loaded(&self) -> bool {
19196            !self.glGetShaderSource_p.load(RELAX).is_null()
19197        }
19198        /// [glGetShaderiv](http://docs.gl/gl4/glGetShaderiv)(shader, pname, params)
19199        /// * `pname` group: ShaderParameterName
19200        /// * `params` len: COMPSIZE(pname)
19201        #[cfg_attr(feature = "inline", inline)]
19202        #[cfg_attr(feature = "inline_always", inline(always))]
19203        pub unsafe fn GetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) {
19204            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19205            {
19206                trace!(
19207                    "calling gl.GetShaderiv({:?}, {:#X}, {:p});",
19208                    shader,
19209                    pname,
19210                    params
19211                );
19212            }
19213            let out = call_atomic_ptr_3arg(
19214                "glGetShaderiv",
19215                &self.glGetShaderiv_p,
19216                shader,
19217                pname,
19218                params,
19219            );
19220            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19221            {
19222                self.automatic_glGetError("glGetShaderiv");
19223            }
19224            out
19225        }
19226        #[doc(hidden)]
19227        pub unsafe fn GetShaderiv_load_with_dyn(
19228            &self,
19229            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19230        ) -> bool {
19231            load_dyn_name_atomic_ptr(get_proc_address, b"glGetShaderiv\0", &self.glGetShaderiv_p)
19232        }
19233        #[inline]
19234        #[doc(hidden)]
19235        pub fn GetShaderiv_is_loaded(&self) -> bool {
19236            !self.glGetShaderiv_p.load(RELAX).is_null()
19237        }
19238        /// [glGetString](http://docs.gl/gl4/glGetString)(name)
19239        /// * `name` group: StringName
19240        /// * return value group: String
19241        #[cfg_attr(feature = "inline", inline)]
19242        #[cfg_attr(feature = "inline_always", inline(always))]
19243        pub unsafe fn GetString(&self, name: GLenum) -> *const GLubyte {
19244            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19245            {
19246                trace!("calling gl.GetString({:#X});", name);
19247            }
19248            let out = call_atomic_ptr_1arg("glGetString", &self.glGetString_p, name);
19249            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19250            {
19251                self.automatic_glGetError("glGetString");
19252            }
19253            out
19254        }
19255        #[doc(hidden)]
19256        pub unsafe fn GetString_load_with_dyn(
19257            &self,
19258            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19259        ) -> bool {
19260            load_dyn_name_atomic_ptr(get_proc_address, b"glGetString\0", &self.glGetString_p)
19261        }
19262        #[inline]
19263        #[doc(hidden)]
19264        pub fn GetString_is_loaded(&self) -> bool {
19265            !self.glGetString_p.load(RELAX).is_null()
19266        }
19267        /// [glGetStringi](http://docs.gl/gl4/glGetString)(name, index)
19268        /// * `name` group: StringName
19269        /// * return value group: String
19270        #[cfg_attr(feature = "inline", inline)]
19271        #[cfg_attr(feature = "inline_always", inline(always))]
19272        pub unsafe fn GetStringi(&self, name: GLenum, index: GLuint) -> *const GLubyte {
19273            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19274            {
19275                trace!("calling gl.GetStringi({:#X}, {:?});", name, index);
19276            }
19277            let out = call_atomic_ptr_2arg("glGetStringi", &self.glGetStringi_p, name, index);
19278            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19279            {
19280                self.automatic_glGetError("glGetStringi");
19281            }
19282            out
19283        }
19284        #[doc(hidden)]
19285        pub unsafe fn GetStringi_load_with_dyn(
19286            &self,
19287            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19288        ) -> bool {
19289            load_dyn_name_atomic_ptr(get_proc_address, b"glGetStringi\0", &self.glGetStringi_p)
19290        }
19291        #[inline]
19292        #[doc(hidden)]
19293        pub fn GetStringi_is_loaded(&self) -> bool {
19294            !self.glGetStringi_p.load(RELAX).is_null()
19295        }
19296        /// [glGetSubroutineIndex](http://docs.gl/gl4/glGetSubroutineIndex)(program, shadertype, name)
19297        /// * `shadertype` group: ShaderType
19298        #[cfg_attr(feature = "inline", inline)]
19299        #[cfg_attr(feature = "inline_always", inline(always))]
19300        pub unsafe fn GetSubroutineIndex(
19301            &self,
19302            program: GLuint,
19303            shadertype: GLenum,
19304            name: *const GLchar,
19305        ) -> GLuint {
19306            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19307            {
19308                trace!(
19309                    "calling gl.GetSubroutineIndex({:?}, {:#X}, {:p});",
19310                    program,
19311                    shadertype,
19312                    name
19313                );
19314            }
19315            let out = call_atomic_ptr_3arg(
19316                "glGetSubroutineIndex",
19317                &self.glGetSubroutineIndex_p,
19318                program,
19319                shadertype,
19320                name,
19321            );
19322            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19323            {
19324                self.automatic_glGetError("glGetSubroutineIndex");
19325            }
19326            out
19327        }
19328        #[doc(hidden)]
19329        pub unsafe fn GetSubroutineIndex_load_with_dyn(
19330            &self,
19331            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19332        ) -> bool {
19333            load_dyn_name_atomic_ptr(
19334                get_proc_address,
19335                b"glGetSubroutineIndex\0",
19336                &self.glGetSubroutineIndex_p,
19337            )
19338        }
19339        #[inline]
19340        #[doc(hidden)]
19341        pub fn GetSubroutineIndex_is_loaded(&self) -> bool {
19342            !self.glGetSubroutineIndex_p.load(RELAX).is_null()
19343        }
19344        /// [glGetSubroutineUniformLocation](http://docs.gl/gl4/glGetSubroutineUniformLocation)(program, shadertype, name)
19345        /// * `shadertype` group: ShaderType
19346        #[cfg_attr(feature = "inline", inline)]
19347        #[cfg_attr(feature = "inline_always", inline(always))]
19348        pub unsafe fn GetSubroutineUniformLocation(
19349            &self,
19350            program: GLuint,
19351            shadertype: GLenum,
19352            name: *const GLchar,
19353        ) -> GLint {
19354            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19355            {
19356                trace!(
19357                    "calling gl.GetSubroutineUniformLocation({:?}, {:#X}, {:p});",
19358                    program,
19359                    shadertype,
19360                    name
19361                );
19362            }
19363            let out = call_atomic_ptr_3arg(
19364                "glGetSubroutineUniformLocation",
19365                &self.glGetSubroutineUniformLocation_p,
19366                program,
19367                shadertype,
19368                name,
19369            );
19370            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19371            {
19372                self.automatic_glGetError("glGetSubroutineUniformLocation");
19373            }
19374            out
19375        }
19376        #[doc(hidden)]
19377        pub unsafe fn GetSubroutineUniformLocation_load_with_dyn(
19378            &self,
19379            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19380        ) -> bool {
19381            load_dyn_name_atomic_ptr(
19382                get_proc_address,
19383                b"glGetSubroutineUniformLocation\0",
19384                &self.glGetSubroutineUniformLocation_p,
19385            )
19386        }
19387        #[inline]
19388        #[doc(hidden)]
19389        pub fn GetSubroutineUniformLocation_is_loaded(&self) -> bool {
19390            !self.glGetSubroutineUniformLocation_p.load(RELAX).is_null()
19391        }
19392        /// [glGetSynciv](http://docs.gl/gl4/glGetSync)(sync, pname, count, length, values)
19393        /// * `sync` group: sync
19394        /// * `pname` group: SyncParameterName
19395        /// * `length` len: 1
19396        /// * `values` len: count
19397        #[cfg_attr(feature = "inline", inline)]
19398        #[cfg_attr(feature = "inline_always", inline(always))]
19399        pub unsafe fn GetSynciv(
19400            &self,
19401            sync: GLsync,
19402            pname: GLenum,
19403            count: GLsizei,
19404            length: *mut GLsizei,
19405            values: *mut GLint,
19406        ) {
19407            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19408            {
19409                trace!(
19410                    "calling gl.GetSynciv({:p}, {:#X}, {:?}, {:p}, {:p});",
19411                    sync,
19412                    pname,
19413                    count,
19414                    length,
19415                    values
19416                );
19417            }
19418            let out = call_atomic_ptr_5arg(
19419                "glGetSynciv",
19420                &self.glGetSynciv_p,
19421                sync,
19422                pname,
19423                count,
19424                length,
19425                values,
19426            );
19427            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19428            {
19429                self.automatic_glGetError("glGetSynciv");
19430            }
19431            out
19432        }
19433        #[doc(hidden)]
19434        pub unsafe fn GetSynciv_load_with_dyn(
19435            &self,
19436            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19437        ) -> bool {
19438            load_dyn_name_atomic_ptr(get_proc_address, b"glGetSynciv\0", &self.glGetSynciv_p)
19439        }
19440        #[inline]
19441        #[doc(hidden)]
19442        pub fn GetSynciv_is_loaded(&self) -> bool {
19443            !self.glGetSynciv_p.load(RELAX).is_null()
19444        }
19445        /// [glGetTexImage](http://docs.gl/gl4/glGetTexImage)(target, level, format, type_, pixels)
19446        /// * `target` group: TextureTarget
19447        /// * `level` group: CheckedInt32
19448        /// * `format` group: PixelFormat
19449        /// * `type_` group: PixelType
19450        /// * `pixels` len: COMPSIZE(target,level,format,type)
19451        #[cfg_attr(feature = "inline", inline)]
19452        #[cfg_attr(feature = "inline_always", inline(always))]
19453        pub unsafe fn GetTexImage(
19454            &self,
19455            target: GLenum,
19456            level: GLint,
19457            format: GLenum,
19458            type_: GLenum,
19459            pixels: *mut c_void,
19460        ) {
19461            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19462            {
19463                trace!(
19464                    "calling gl.GetTexImage({:#X}, {:?}, {:#X}, {:#X}, {:p});",
19465                    target,
19466                    level,
19467                    format,
19468                    type_,
19469                    pixels
19470                );
19471            }
19472            let out = call_atomic_ptr_5arg(
19473                "glGetTexImage",
19474                &self.glGetTexImage_p,
19475                target,
19476                level,
19477                format,
19478                type_,
19479                pixels,
19480            );
19481            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19482            {
19483                self.automatic_glGetError("glGetTexImage");
19484            }
19485            out
19486        }
19487        #[doc(hidden)]
19488        pub unsafe fn GetTexImage_load_with_dyn(
19489            &self,
19490            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19491        ) -> bool {
19492            load_dyn_name_atomic_ptr(get_proc_address, b"glGetTexImage\0", &self.glGetTexImage_p)
19493        }
19494        #[inline]
19495        #[doc(hidden)]
19496        pub fn GetTexImage_is_loaded(&self) -> bool {
19497            !self.glGetTexImage_p.load(RELAX).is_null()
19498        }
19499        /// [glGetTexLevelParameterfv](http://docs.gl/gl4/glGetTexLevelParameter)(target, level, pname, params)
19500        /// * `target` group: TextureTarget
19501        /// * `level` group: CheckedInt32
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 GetTexLevelParameterfv(
19507            &self,
19508            target: GLenum,
19509            level: GLint,
19510            pname: GLenum,
19511            params: *mut GLfloat,
19512        ) {
19513            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19514            {
19515                trace!(
19516                    "calling gl.GetTexLevelParameterfv({:#X}, {:?}, {:#X}, {:p});",
19517                    target,
19518                    level,
19519                    pname,
19520                    params
19521                );
19522            }
19523            let out = call_atomic_ptr_4arg(
19524                "glGetTexLevelParameterfv",
19525                &self.glGetTexLevelParameterfv_p,
19526                target,
19527                level,
19528                pname,
19529                params,
19530            );
19531            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19532            {
19533                self.automatic_glGetError("glGetTexLevelParameterfv");
19534            }
19535            out
19536        }
19537        #[doc(hidden)]
19538        pub unsafe fn GetTexLevelParameterfv_load_with_dyn(
19539            &self,
19540            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19541        ) -> bool {
19542            load_dyn_name_atomic_ptr(
19543                get_proc_address,
19544                b"glGetTexLevelParameterfv\0",
19545                &self.glGetTexLevelParameterfv_p,
19546            )
19547        }
19548        #[inline]
19549        #[doc(hidden)]
19550        pub fn GetTexLevelParameterfv_is_loaded(&self) -> bool {
19551            !self.glGetTexLevelParameterfv_p.load(RELAX).is_null()
19552        }
19553        /// [glGetTexLevelParameteriv](http://docs.gl/gl4/glGetTexLevelParameter)(target, level, pname, params)
19554        /// * `target` group: TextureTarget
19555        /// * `level` group: CheckedInt32
19556        /// * `pname` group: GetTextureParameter
19557        /// * `params` len: COMPSIZE(pname)
19558        #[cfg_attr(feature = "inline", inline)]
19559        #[cfg_attr(feature = "inline_always", inline(always))]
19560        pub unsafe fn GetTexLevelParameteriv(
19561            &self,
19562            target: GLenum,
19563            level: GLint,
19564            pname: GLenum,
19565            params: *mut GLint,
19566        ) {
19567            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19568            {
19569                trace!(
19570                    "calling gl.GetTexLevelParameteriv({:#X}, {:?}, {:#X}, {:p});",
19571                    target,
19572                    level,
19573                    pname,
19574                    params
19575                );
19576            }
19577            let out = call_atomic_ptr_4arg(
19578                "glGetTexLevelParameteriv",
19579                &self.glGetTexLevelParameteriv_p,
19580                target,
19581                level,
19582                pname,
19583                params,
19584            );
19585            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19586            {
19587                self.automatic_glGetError("glGetTexLevelParameteriv");
19588            }
19589            out
19590        }
19591        #[doc(hidden)]
19592        pub unsafe fn GetTexLevelParameteriv_load_with_dyn(
19593            &self,
19594            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19595        ) -> bool {
19596            load_dyn_name_atomic_ptr(
19597                get_proc_address,
19598                b"glGetTexLevelParameteriv\0",
19599                &self.glGetTexLevelParameteriv_p,
19600            )
19601        }
19602        #[inline]
19603        #[doc(hidden)]
19604        pub fn GetTexLevelParameteriv_is_loaded(&self) -> bool {
19605            !self.glGetTexLevelParameteriv_p.load(RELAX).is_null()
19606        }
19607        /// [glGetTexParameterIiv](http://docs.gl/gl4/glGetTexParameter)(target, pname, params)
19608        /// * `target` group: TextureTarget
19609        /// * `pname` group: GetTextureParameter
19610        /// * `params` len: COMPSIZE(pname)
19611        #[cfg_attr(feature = "inline", inline)]
19612        #[cfg_attr(feature = "inline_always", inline(always))]
19613        pub unsafe fn GetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) {
19614            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19615            {
19616                trace!(
19617                    "calling gl.GetTexParameterIiv({:#X}, {:#X}, {:p});",
19618                    target,
19619                    pname,
19620                    params
19621                );
19622            }
19623            let out = call_atomic_ptr_3arg(
19624                "glGetTexParameterIiv",
19625                &self.glGetTexParameterIiv_p,
19626                target,
19627                pname,
19628                params,
19629            );
19630            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19631            {
19632                self.automatic_glGetError("glGetTexParameterIiv");
19633            }
19634            out
19635        }
19636        #[doc(hidden)]
19637        pub unsafe fn GetTexParameterIiv_load_with_dyn(
19638            &self,
19639            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19640        ) -> bool {
19641            load_dyn_name_atomic_ptr(
19642                get_proc_address,
19643                b"glGetTexParameterIiv\0",
19644                &self.glGetTexParameterIiv_p,
19645            )
19646        }
19647        #[inline]
19648        #[doc(hidden)]
19649        pub fn GetTexParameterIiv_is_loaded(&self) -> bool {
19650            !self.glGetTexParameterIiv_p.load(RELAX).is_null()
19651        }
19652        /// [glGetTexParameterIuiv](http://docs.gl/gl4/glGetTexParameter)(target, pname, params)
19653        /// * `target` group: TextureTarget
19654        /// * `pname` group: GetTextureParameter
19655        /// * `params` len: COMPSIZE(pname)
19656        #[cfg_attr(feature = "inline", inline)]
19657        #[cfg_attr(feature = "inline_always", inline(always))]
19658        pub unsafe fn GetTexParameterIuiv(
19659            &self,
19660            target: GLenum,
19661            pname: GLenum,
19662            params: *mut GLuint,
19663        ) {
19664            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19665            {
19666                trace!(
19667                    "calling gl.GetTexParameterIuiv({:#X}, {:#X}, {:p});",
19668                    target,
19669                    pname,
19670                    params
19671                );
19672            }
19673            let out = call_atomic_ptr_3arg(
19674                "glGetTexParameterIuiv",
19675                &self.glGetTexParameterIuiv_p,
19676                target,
19677                pname,
19678                params,
19679            );
19680            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19681            {
19682                self.automatic_glGetError("glGetTexParameterIuiv");
19683            }
19684            out
19685        }
19686        #[doc(hidden)]
19687        pub unsafe fn GetTexParameterIuiv_load_with_dyn(
19688            &self,
19689            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19690        ) -> bool {
19691            load_dyn_name_atomic_ptr(
19692                get_proc_address,
19693                b"glGetTexParameterIuiv\0",
19694                &self.glGetTexParameterIuiv_p,
19695            )
19696        }
19697        #[inline]
19698        #[doc(hidden)]
19699        pub fn GetTexParameterIuiv_is_loaded(&self) -> bool {
19700            !self.glGetTexParameterIuiv_p.load(RELAX).is_null()
19701        }
19702        /// [glGetTexParameterfv](http://docs.gl/gl4/glGetTexParameter)(target, pname, params)
19703        /// * `target` group: TextureTarget
19704        /// * `pname` group: GetTextureParameter
19705        /// * `params` len: COMPSIZE(pname)
19706        #[cfg_attr(feature = "inline", inline)]
19707        #[cfg_attr(feature = "inline_always", inline(always))]
19708        pub unsafe fn GetTexParameterfv(
19709            &self,
19710            target: GLenum,
19711            pname: GLenum,
19712            params: *mut GLfloat,
19713        ) {
19714            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19715            {
19716                trace!(
19717                    "calling gl.GetTexParameterfv({:#X}, {:#X}, {:p});",
19718                    target,
19719                    pname,
19720                    params
19721                );
19722            }
19723            let out = call_atomic_ptr_3arg(
19724                "glGetTexParameterfv",
19725                &self.glGetTexParameterfv_p,
19726                target,
19727                pname,
19728                params,
19729            );
19730            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19731            {
19732                self.automatic_glGetError("glGetTexParameterfv");
19733            }
19734            out
19735        }
19736        #[doc(hidden)]
19737        pub unsafe fn GetTexParameterfv_load_with_dyn(
19738            &self,
19739            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19740        ) -> bool {
19741            load_dyn_name_atomic_ptr(
19742                get_proc_address,
19743                b"glGetTexParameterfv\0",
19744                &self.glGetTexParameterfv_p,
19745            )
19746        }
19747        #[inline]
19748        #[doc(hidden)]
19749        pub fn GetTexParameterfv_is_loaded(&self) -> bool {
19750            !self.glGetTexParameterfv_p.load(RELAX).is_null()
19751        }
19752        /// [glGetTexParameteriv](http://docs.gl/gl4/glGetTexParameter)(target, pname, params)
19753        /// * `target` group: TextureTarget
19754        /// * `pname` group: GetTextureParameter
19755        /// * `params` len: COMPSIZE(pname)
19756        #[cfg_attr(feature = "inline", inline)]
19757        #[cfg_attr(feature = "inline_always", inline(always))]
19758        pub unsafe fn GetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) {
19759            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19760            {
19761                trace!(
19762                    "calling gl.GetTexParameteriv({:#X}, {:#X}, {:p});",
19763                    target,
19764                    pname,
19765                    params
19766                );
19767            }
19768            let out = call_atomic_ptr_3arg(
19769                "glGetTexParameteriv",
19770                &self.glGetTexParameteriv_p,
19771                target,
19772                pname,
19773                params,
19774            );
19775            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19776            {
19777                self.automatic_glGetError("glGetTexParameteriv");
19778            }
19779            out
19780        }
19781        #[doc(hidden)]
19782        pub unsafe fn GetTexParameteriv_load_with_dyn(
19783            &self,
19784            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19785        ) -> bool {
19786            load_dyn_name_atomic_ptr(
19787                get_proc_address,
19788                b"glGetTexParameteriv\0",
19789                &self.glGetTexParameteriv_p,
19790            )
19791        }
19792        #[inline]
19793        #[doc(hidden)]
19794        pub fn GetTexParameteriv_is_loaded(&self) -> bool {
19795            !self.glGetTexParameteriv_p.load(RELAX).is_null()
19796        }
19797        /// [glGetTextureImage](http://docs.gl/gl4/glGetTextureImage)(texture, level, format, type_, bufSize, pixels)
19798        /// * `format` group: PixelFormat
19799        /// * `type_` group: PixelType
19800        #[cfg_attr(feature = "inline", inline)]
19801        #[cfg_attr(feature = "inline_always", inline(always))]
19802        pub unsafe fn GetTextureImage(
19803            &self,
19804            texture: GLuint,
19805            level: GLint,
19806            format: GLenum,
19807            type_: GLenum,
19808            bufSize: GLsizei,
19809            pixels: *mut c_void,
19810        ) {
19811            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19812            {
19813                trace!(
19814                    "calling gl.GetTextureImage({:?}, {:?}, {:#X}, {:#X}, {:?}, {:p});",
19815                    texture,
19816                    level,
19817                    format,
19818                    type_,
19819                    bufSize,
19820                    pixels
19821                );
19822            }
19823            let out = call_atomic_ptr_6arg(
19824                "glGetTextureImage",
19825                &self.glGetTextureImage_p,
19826                texture,
19827                level,
19828                format,
19829                type_,
19830                bufSize,
19831                pixels,
19832            );
19833            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19834            {
19835                self.automatic_glGetError("glGetTextureImage");
19836            }
19837            out
19838        }
19839        #[doc(hidden)]
19840        pub unsafe fn GetTextureImage_load_with_dyn(
19841            &self,
19842            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19843        ) -> bool {
19844            load_dyn_name_atomic_ptr(
19845                get_proc_address,
19846                b"glGetTextureImage\0",
19847                &self.glGetTextureImage_p,
19848            )
19849        }
19850        #[inline]
19851        #[doc(hidden)]
19852        pub fn GetTextureImage_is_loaded(&self) -> bool {
19853            !self.glGetTextureImage_p.load(RELAX).is_null()
19854        }
19855        /// [glGetTextureLevelParameterfv](http://docs.gl/gl4/glGetTextureLevelParameter)(texture, level, pname, params)
19856        /// * `pname` group: GetTextureParameter
19857        #[cfg_attr(feature = "inline", inline)]
19858        #[cfg_attr(feature = "inline_always", inline(always))]
19859        pub unsafe fn GetTextureLevelParameterfv(
19860            &self,
19861            texture: GLuint,
19862            level: GLint,
19863            pname: GLenum,
19864            params: *mut GLfloat,
19865        ) {
19866            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19867            {
19868                trace!(
19869                    "calling gl.GetTextureLevelParameterfv({:?}, {:?}, {:#X}, {:p});",
19870                    texture,
19871                    level,
19872                    pname,
19873                    params
19874                );
19875            }
19876            let out = call_atomic_ptr_4arg(
19877                "glGetTextureLevelParameterfv",
19878                &self.glGetTextureLevelParameterfv_p,
19879                texture,
19880                level,
19881                pname,
19882                params,
19883            );
19884            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19885            {
19886                self.automatic_glGetError("glGetTextureLevelParameterfv");
19887            }
19888            out
19889        }
19890        #[doc(hidden)]
19891        pub unsafe fn GetTextureLevelParameterfv_load_with_dyn(
19892            &self,
19893            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19894        ) -> bool {
19895            load_dyn_name_atomic_ptr(
19896                get_proc_address,
19897                b"glGetTextureLevelParameterfv\0",
19898                &self.glGetTextureLevelParameterfv_p,
19899            )
19900        }
19901        #[inline]
19902        #[doc(hidden)]
19903        pub fn GetTextureLevelParameterfv_is_loaded(&self) -> bool {
19904            !self.glGetTextureLevelParameterfv_p.load(RELAX).is_null()
19905        }
19906        /// [glGetTextureLevelParameteriv](http://docs.gl/gl4/glGetTextureLevelParameter)(texture, level, pname, params)
19907        /// * `pname` group: GetTextureParameter
19908        #[cfg_attr(feature = "inline", inline)]
19909        #[cfg_attr(feature = "inline_always", inline(always))]
19910        pub unsafe fn GetTextureLevelParameteriv(
19911            &self,
19912            texture: GLuint,
19913            level: GLint,
19914            pname: GLenum,
19915            params: *mut GLint,
19916        ) {
19917            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19918            {
19919                trace!(
19920                    "calling gl.GetTextureLevelParameteriv({:?}, {:?}, {:#X}, {:p});",
19921                    texture,
19922                    level,
19923                    pname,
19924                    params
19925                );
19926            }
19927            let out = call_atomic_ptr_4arg(
19928                "glGetTextureLevelParameteriv",
19929                &self.glGetTextureLevelParameteriv_p,
19930                texture,
19931                level,
19932                pname,
19933                params,
19934            );
19935            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19936            {
19937                self.automatic_glGetError("glGetTextureLevelParameteriv");
19938            }
19939            out
19940        }
19941        #[doc(hidden)]
19942        pub unsafe fn GetTextureLevelParameteriv_load_with_dyn(
19943            &self,
19944            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19945        ) -> bool {
19946            load_dyn_name_atomic_ptr(
19947                get_proc_address,
19948                b"glGetTextureLevelParameteriv\0",
19949                &self.glGetTextureLevelParameteriv_p,
19950            )
19951        }
19952        #[inline]
19953        #[doc(hidden)]
19954        pub fn GetTextureLevelParameteriv_is_loaded(&self) -> bool {
19955            !self.glGetTextureLevelParameteriv_p.load(RELAX).is_null()
19956        }
19957        /// [glGetTextureParameterIiv](http://docs.gl/gl4/glGetTextureParameter)(texture, pname, params)
19958        /// * `pname` group: GetTextureParameter
19959        #[cfg_attr(feature = "inline", inline)]
19960        #[cfg_attr(feature = "inline_always", inline(always))]
19961        pub unsafe fn GetTextureParameterIiv(
19962            &self,
19963            texture: GLuint,
19964            pname: GLenum,
19965            params: *mut GLint,
19966        ) {
19967            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
19968            {
19969                trace!(
19970                    "calling gl.GetTextureParameterIiv({:?}, {:#X}, {:p});",
19971                    texture,
19972                    pname,
19973                    params
19974                );
19975            }
19976            let out = call_atomic_ptr_3arg(
19977                "glGetTextureParameterIiv",
19978                &self.glGetTextureParameterIiv_p,
19979                texture,
19980                pname,
19981                params,
19982            );
19983            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
19984            {
19985                self.automatic_glGetError("glGetTextureParameterIiv");
19986            }
19987            out
19988        }
19989        #[doc(hidden)]
19990        pub unsafe fn GetTextureParameterIiv_load_with_dyn(
19991            &self,
19992            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
19993        ) -> bool {
19994            load_dyn_name_atomic_ptr(
19995                get_proc_address,
19996                b"glGetTextureParameterIiv\0",
19997                &self.glGetTextureParameterIiv_p,
19998            )
19999        }
20000        #[inline]
20001        #[doc(hidden)]
20002        pub fn GetTextureParameterIiv_is_loaded(&self) -> bool {
20003            !self.glGetTextureParameterIiv_p.load(RELAX).is_null()
20004        }
20005        /// [glGetTextureParameterIuiv](http://docs.gl/gl4/glGetTextureParameter)(texture, pname, params)
20006        /// * `pname` group: GetTextureParameter
20007        #[cfg_attr(feature = "inline", inline)]
20008        #[cfg_attr(feature = "inline_always", inline(always))]
20009        pub unsafe fn GetTextureParameterIuiv(
20010            &self,
20011            texture: GLuint,
20012            pname: GLenum,
20013            params: *mut GLuint,
20014        ) {
20015            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20016            {
20017                trace!(
20018                    "calling gl.GetTextureParameterIuiv({:?}, {:#X}, {:p});",
20019                    texture,
20020                    pname,
20021                    params
20022                );
20023            }
20024            let out = call_atomic_ptr_3arg(
20025                "glGetTextureParameterIuiv",
20026                &self.glGetTextureParameterIuiv_p,
20027                texture,
20028                pname,
20029                params,
20030            );
20031            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20032            {
20033                self.automatic_glGetError("glGetTextureParameterIuiv");
20034            }
20035            out
20036        }
20037        #[doc(hidden)]
20038        pub unsafe fn GetTextureParameterIuiv_load_with_dyn(
20039            &self,
20040            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20041        ) -> bool {
20042            load_dyn_name_atomic_ptr(
20043                get_proc_address,
20044                b"glGetTextureParameterIuiv\0",
20045                &self.glGetTextureParameterIuiv_p,
20046            )
20047        }
20048        #[inline]
20049        #[doc(hidden)]
20050        pub fn GetTextureParameterIuiv_is_loaded(&self) -> bool {
20051            !self.glGetTextureParameterIuiv_p.load(RELAX).is_null()
20052        }
20053        /// [glGetTextureParameterfv](http://docs.gl/gl4/glGetTextureParameter)(texture, pname, params)
20054        /// * `pname` group: GetTextureParameter
20055        #[cfg_attr(feature = "inline", inline)]
20056        #[cfg_attr(feature = "inline_always", inline(always))]
20057        pub unsafe fn GetTextureParameterfv(
20058            &self,
20059            texture: GLuint,
20060            pname: GLenum,
20061            params: *mut GLfloat,
20062        ) {
20063            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20064            {
20065                trace!(
20066                    "calling gl.GetTextureParameterfv({:?}, {:#X}, {:p});",
20067                    texture,
20068                    pname,
20069                    params
20070                );
20071            }
20072            let out = call_atomic_ptr_3arg(
20073                "glGetTextureParameterfv",
20074                &self.glGetTextureParameterfv_p,
20075                texture,
20076                pname,
20077                params,
20078            );
20079            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20080            {
20081                self.automatic_glGetError("glGetTextureParameterfv");
20082            }
20083            out
20084        }
20085        #[doc(hidden)]
20086        pub unsafe fn GetTextureParameterfv_load_with_dyn(
20087            &self,
20088            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20089        ) -> bool {
20090            load_dyn_name_atomic_ptr(
20091                get_proc_address,
20092                b"glGetTextureParameterfv\0",
20093                &self.glGetTextureParameterfv_p,
20094            )
20095        }
20096        #[inline]
20097        #[doc(hidden)]
20098        pub fn GetTextureParameterfv_is_loaded(&self) -> bool {
20099            !self.glGetTextureParameterfv_p.load(RELAX).is_null()
20100        }
20101        /// [glGetTextureParameteriv](http://docs.gl/gl4/glGetTextureParameter)(texture, pname, params)
20102        /// * `pname` group: GetTextureParameter
20103        #[cfg_attr(feature = "inline", inline)]
20104        #[cfg_attr(feature = "inline_always", inline(always))]
20105        pub unsafe fn GetTextureParameteriv(
20106            &self,
20107            texture: GLuint,
20108            pname: GLenum,
20109            params: *mut GLint,
20110        ) {
20111            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20112            {
20113                trace!(
20114                    "calling gl.GetTextureParameteriv({:?}, {:#X}, {:p});",
20115                    texture,
20116                    pname,
20117                    params
20118                );
20119            }
20120            let out = call_atomic_ptr_3arg(
20121                "glGetTextureParameteriv",
20122                &self.glGetTextureParameteriv_p,
20123                texture,
20124                pname,
20125                params,
20126            );
20127            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20128            {
20129                self.automatic_glGetError("glGetTextureParameteriv");
20130            }
20131            out
20132        }
20133        #[doc(hidden)]
20134        pub unsafe fn GetTextureParameteriv_load_with_dyn(
20135            &self,
20136            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20137        ) -> bool {
20138            load_dyn_name_atomic_ptr(
20139                get_proc_address,
20140                b"glGetTextureParameteriv\0",
20141                &self.glGetTextureParameteriv_p,
20142            )
20143        }
20144        #[inline]
20145        #[doc(hidden)]
20146        pub fn GetTextureParameteriv_is_loaded(&self) -> bool {
20147            !self.glGetTextureParameteriv_p.load(RELAX).is_null()
20148        }
20149        /// [glGetTextureSubImage](http://docs.gl/gl4/glGetTextureSubImage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, bufSize, pixels)
20150        /// * `format` group: PixelFormat
20151        /// * `type_` group: PixelType
20152        #[cfg_attr(feature = "inline", inline)]
20153        #[cfg_attr(feature = "inline_always", inline(always))]
20154        pub unsafe fn GetTextureSubImage(
20155            &self,
20156            texture: GLuint,
20157            level: GLint,
20158            xoffset: GLint,
20159            yoffset: GLint,
20160            zoffset: GLint,
20161            width: GLsizei,
20162            height: GLsizei,
20163            depth: GLsizei,
20164            format: GLenum,
20165            type_: GLenum,
20166            bufSize: GLsizei,
20167            pixels: *mut c_void,
20168        ) {
20169            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20170            {
20171                trace!("calling gl.GetTextureSubImage({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:?}, {:p});", texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, bufSize, pixels);
20172            }
20173            let out = call_atomic_ptr_12arg(
20174                "glGetTextureSubImage",
20175                &self.glGetTextureSubImage_p,
20176                texture,
20177                level,
20178                xoffset,
20179                yoffset,
20180                zoffset,
20181                width,
20182                height,
20183                depth,
20184                format,
20185                type_,
20186                bufSize,
20187                pixels,
20188            );
20189            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20190            {
20191                self.automatic_glGetError("glGetTextureSubImage");
20192            }
20193            out
20194        }
20195        #[doc(hidden)]
20196        pub unsafe fn GetTextureSubImage_load_with_dyn(
20197            &self,
20198            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20199        ) -> bool {
20200            load_dyn_name_atomic_ptr(
20201                get_proc_address,
20202                b"glGetTextureSubImage\0",
20203                &self.glGetTextureSubImage_p,
20204            )
20205        }
20206        #[inline]
20207        #[doc(hidden)]
20208        pub fn GetTextureSubImage_is_loaded(&self) -> bool {
20209            !self.glGetTextureSubImage_p.load(RELAX).is_null()
20210        }
20211        /// [glGetTransformFeedbackVarying](http://docs.gl/gl4/glGetTransformFeedbackVarying)(program, index, bufSize, length, size, type_, name)
20212        /// * `length` len: 1
20213        /// * `size` len: 1
20214        /// * `type_` group: AttributeType
20215        /// * `type_` len: 1
20216        /// * `name` len: bufSize
20217        #[cfg_attr(feature = "inline", inline)]
20218        #[cfg_attr(feature = "inline_always", inline(always))]
20219        pub unsafe fn GetTransformFeedbackVarying(
20220            &self,
20221            program: GLuint,
20222            index: GLuint,
20223            bufSize: GLsizei,
20224            length: *mut GLsizei,
20225            size: *mut GLsizei,
20226            type_: *mut GLenum,
20227            name: *mut GLchar,
20228        ) {
20229            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20230            {
20231                trace!("calling gl.GetTransformFeedbackVarying({:?}, {:?}, {:?}, {:p}, {:p}, {:p}, {:p});", program, index, bufSize, length, size, type_, name);
20232            }
20233            let out = call_atomic_ptr_7arg(
20234                "glGetTransformFeedbackVarying",
20235                &self.glGetTransformFeedbackVarying_p,
20236                program,
20237                index,
20238                bufSize,
20239                length,
20240                size,
20241                type_,
20242                name,
20243            );
20244            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20245            {
20246                self.automatic_glGetError("glGetTransformFeedbackVarying");
20247            }
20248            out
20249        }
20250        #[doc(hidden)]
20251        pub unsafe fn GetTransformFeedbackVarying_load_with_dyn(
20252            &self,
20253            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20254        ) -> bool {
20255            load_dyn_name_atomic_ptr(
20256                get_proc_address,
20257                b"glGetTransformFeedbackVarying\0",
20258                &self.glGetTransformFeedbackVarying_p,
20259            )
20260        }
20261        #[inline]
20262        #[doc(hidden)]
20263        pub fn GetTransformFeedbackVarying_is_loaded(&self) -> bool {
20264            !self.glGetTransformFeedbackVarying_p.load(RELAX).is_null()
20265        }
20266        /// [glGetTransformFeedbacki64_v](http://docs.gl/gl4/glGetTransformFeedbacki64_v)(xfb, pname, index, param)
20267        /// * `pname` group: TransformFeedbackPName
20268        #[cfg_attr(feature = "inline", inline)]
20269        #[cfg_attr(feature = "inline_always", inline(always))]
20270        pub unsafe fn GetTransformFeedbacki64_v(
20271            &self,
20272            xfb: GLuint,
20273            pname: GLenum,
20274            index: GLuint,
20275            param: *mut GLint64,
20276        ) {
20277            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20278            {
20279                trace!(
20280                    "calling gl.GetTransformFeedbacki64_v({:?}, {:#X}, {:?}, {:p});",
20281                    xfb,
20282                    pname,
20283                    index,
20284                    param
20285                );
20286            }
20287            let out = call_atomic_ptr_4arg(
20288                "glGetTransformFeedbacki64_v",
20289                &self.glGetTransformFeedbacki64_v_p,
20290                xfb,
20291                pname,
20292                index,
20293                param,
20294            );
20295            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20296            {
20297                self.automatic_glGetError("glGetTransformFeedbacki64_v");
20298            }
20299            out
20300        }
20301        #[doc(hidden)]
20302        pub unsafe fn GetTransformFeedbacki64_v_load_with_dyn(
20303            &self,
20304            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20305        ) -> bool {
20306            load_dyn_name_atomic_ptr(
20307                get_proc_address,
20308                b"glGetTransformFeedbacki64_v\0",
20309                &self.glGetTransformFeedbacki64_v_p,
20310            )
20311        }
20312        #[inline]
20313        #[doc(hidden)]
20314        pub fn GetTransformFeedbacki64_v_is_loaded(&self) -> bool {
20315            !self.glGetTransformFeedbacki64_v_p.load(RELAX).is_null()
20316        }
20317        /// [glGetTransformFeedbacki_v](http://docs.gl/gl4/glGetTransformFeedbacki_v)(xfb, pname, index, param)
20318        /// * `pname` group: TransformFeedbackPName
20319        #[cfg_attr(feature = "inline", inline)]
20320        #[cfg_attr(feature = "inline_always", inline(always))]
20321        pub unsafe fn GetTransformFeedbacki_v(
20322            &self,
20323            xfb: GLuint,
20324            pname: GLenum,
20325            index: GLuint,
20326            param: *mut GLint,
20327        ) {
20328            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20329            {
20330                trace!(
20331                    "calling gl.GetTransformFeedbacki_v({:?}, {:#X}, {:?}, {:p});",
20332                    xfb,
20333                    pname,
20334                    index,
20335                    param
20336                );
20337            }
20338            let out = call_atomic_ptr_4arg(
20339                "glGetTransformFeedbacki_v",
20340                &self.glGetTransformFeedbacki_v_p,
20341                xfb,
20342                pname,
20343                index,
20344                param,
20345            );
20346            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20347            {
20348                self.automatic_glGetError("glGetTransformFeedbacki_v");
20349            }
20350            out
20351        }
20352        #[doc(hidden)]
20353        pub unsafe fn GetTransformFeedbacki_v_load_with_dyn(
20354            &self,
20355            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20356        ) -> bool {
20357            load_dyn_name_atomic_ptr(
20358                get_proc_address,
20359                b"glGetTransformFeedbacki_v\0",
20360                &self.glGetTransformFeedbacki_v_p,
20361            )
20362        }
20363        #[inline]
20364        #[doc(hidden)]
20365        pub fn GetTransformFeedbacki_v_is_loaded(&self) -> bool {
20366            !self.glGetTransformFeedbacki_v_p.load(RELAX).is_null()
20367        }
20368        /// [glGetTransformFeedbackiv](http://docs.gl/gl4/glGetTransformFeedback)(xfb, pname, param)
20369        /// * `pname` group: TransformFeedbackPName
20370        #[cfg_attr(feature = "inline", inline)]
20371        #[cfg_attr(feature = "inline_always", inline(always))]
20372        pub unsafe fn GetTransformFeedbackiv(&self, xfb: GLuint, pname: GLenum, param: *mut GLint) {
20373            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20374            {
20375                trace!(
20376                    "calling gl.GetTransformFeedbackiv({:?}, {:#X}, {:p});",
20377                    xfb,
20378                    pname,
20379                    param
20380                );
20381            }
20382            let out = call_atomic_ptr_3arg(
20383                "glGetTransformFeedbackiv",
20384                &self.glGetTransformFeedbackiv_p,
20385                xfb,
20386                pname,
20387                param,
20388            );
20389            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20390            {
20391                self.automatic_glGetError("glGetTransformFeedbackiv");
20392            }
20393            out
20394        }
20395        #[doc(hidden)]
20396        pub unsafe fn GetTransformFeedbackiv_load_with_dyn(
20397            &self,
20398            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20399        ) -> bool {
20400            load_dyn_name_atomic_ptr(
20401                get_proc_address,
20402                b"glGetTransformFeedbackiv\0",
20403                &self.glGetTransformFeedbackiv_p,
20404            )
20405        }
20406        #[inline]
20407        #[doc(hidden)]
20408        pub fn GetTransformFeedbackiv_is_loaded(&self) -> bool {
20409            !self.glGetTransformFeedbackiv_p.load(RELAX).is_null()
20410        }
20411        /// [glGetUniformBlockIndex](http://docs.gl/gl4/glGetUniformBlockIndex)(program, uniformBlockName)
20412        /// * `uniformBlockName` len: COMPSIZE()
20413        #[cfg_attr(feature = "inline", inline)]
20414        #[cfg_attr(feature = "inline_always", inline(always))]
20415        pub unsafe fn GetUniformBlockIndex(
20416            &self,
20417            program: GLuint,
20418            uniformBlockName: *const GLchar,
20419        ) -> GLuint {
20420            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20421            {
20422                trace!(
20423                    "calling gl.GetUniformBlockIndex({:?}, {:p});",
20424                    program,
20425                    uniformBlockName
20426                );
20427            }
20428            let out = call_atomic_ptr_2arg(
20429                "glGetUniformBlockIndex",
20430                &self.glGetUniformBlockIndex_p,
20431                program,
20432                uniformBlockName,
20433            );
20434            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20435            {
20436                self.automatic_glGetError("glGetUniformBlockIndex");
20437            }
20438            out
20439        }
20440        #[doc(hidden)]
20441        pub unsafe fn GetUniformBlockIndex_load_with_dyn(
20442            &self,
20443            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20444        ) -> bool {
20445            load_dyn_name_atomic_ptr(
20446                get_proc_address,
20447                b"glGetUniformBlockIndex\0",
20448                &self.glGetUniformBlockIndex_p,
20449            )
20450        }
20451        #[inline]
20452        #[doc(hidden)]
20453        pub fn GetUniformBlockIndex_is_loaded(&self) -> bool {
20454            !self.glGetUniformBlockIndex_p.load(RELAX).is_null()
20455        }
20456        /// [glGetUniformIndices](http://docs.gl/gl4/glGetUniformIndices)(program, uniformCount, uniformNames, uniformIndices)
20457        /// * `uniformNames` len: COMPSIZE(uniformCount)
20458        /// * `uniformIndices` len: COMPSIZE(uniformCount)
20459        #[cfg_attr(feature = "inline", inline)]
20460        #[cfg_attr(feature = "inline_always", inline(always))]
20461        pub unsafe fn GetUniformIndices(
20462            &self,
20463            program: GLuint,
20464            uniformCount: GLsizei,
20465            uniformNames: *const *const GLchar,
20466            uniformIndices: *mut GLuint,
20467        ) {
20468            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20469            {
20470                trace!(
20471                    "calling gl.GetUniformIndices({:?}, {:?}, {:p}, {:p});",
20472                    program,
20473                    uniformCount,
20474                    uniformNames,
20475                    uniformIndices
20476                );
20477            }
20478            let out = call_atomic_ptr_4arg(
20479                "glGetUniformIndices",
20480                &self.glGetUniformIndices_p,
20481                program,
20482                uniformCount,
20483                uniformNames,
20484                uniformIndices,
20485            );
20486            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20487            {
20488                self.automatic_glGetError("glGetUniformIndices");
20489            }
20490            out
20491        }
20492        #[doc(hidden)]
20493        pub unsafe fn GetUniformIndices_load_with_dyn(
20494            &self,
20495            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20496        ) -> bool {
20497            load_dyn_name_atomic_ptr(
20498                get_proc_address,
20499                b"glGetUniformIndices\0",
20500                &self.glGetUniformIndices_p,
20501            )
20502        }
20503        #[inline]
20504        #[doc(hidden)]
20505        pub fn GetUniformIndices_is_loaded(&self) -> bool {
20506            !self.glGetUniformIndices_p.load(RELAX).is_null()
20507        }
20508        /// [glGetUniformLocation](http://docs.gl/gl4/glGetUniformLocation)(program, name)
20509        #[cfg_attr(feature = "inline", inline)]
20510        #[cfg_attr(feature = "inline_always", inline(always))]
20511        pub unsafe fn GetUniformLocation(&self, program: GLuint, name: *const GLchar) -> GLint {
20512            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20513            {
20514                trace!("calling gl.GetUniformLocation({:?}, {:p});", program, name);
20515            }
20516            let out = call_atomic_ptr_2arg(
20517                "glGetUniformLocation",
20518                &self.glGetUniformLocation_p,
20519                program,
20520                name,
20521            );
20522            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20523            {
20524                self.automatic_glGetError("glGetUniformLocation");
20525            }
20526            out
20527        }
20528        #[doc(hidden)]
20529        pub unsafe fn GetUniformLocation_load_with_dyn(
20530            &self,
20531            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20532        ) -> bool {
20533            load_dyn_name_atomic_ptr(
20534                get_proc_address,
20535                b"glGetUniformLocation\0",
20536                &self.glGetUniformLocation_p,
20537            )
20538        }
20539        #[inline]
20540        #[doc(hidden)]
20541        pub fn GetUniformLocation_is_loaded(&self) -> bool {
20542            !self.glGetUniformLocation_p.load(RELAX).is_null()
20543        }
20544        /// [glGetUniformSubroutineuiv](http://docs.gl/gl4/glGetUniformSubroutine)(shadertype, location, params)
20545        /// * `shadertype` group: ShaderType
20546        /// * `params` len: 1
20547        #[cfg_attr(feature = "inline", inline)]
20548        #[cfg_attr(feature = "inline_always", inline(always))]
20549        pub unsafe fn GetUniformSubroutineuiv(
20550            &self,
20551            shadertype: GLenum,
20552            location: GLint,
20553            params: *mut GLuint,
20554        ) {
20555            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20556            {
20557                trace!(
20558                    "calling gl.GetUniformSubroutineuiv({:#X}, {:?}, {:p});",
20559                    shadertype,
20560                    location,
20561                    params
20562                );
20563            }
20564            let out = call_atomic_ptr_3arg(
20565                "glGetUniformSubroutineuiv",
20566                &self.glGetUniformSubroutineuiv_p,
20567                shadertype,
20568                location,
20569                params,
20570            );
20571            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20572            {
20573                self.automatic_glGetError("glGetUniformSubroutineuiv");
20574            }
20575            out
20576        }
20577        #[doc(hidden)]
20578        pub unsafe fn GetUniformSubroutineuiv_load_with_dyn(
20579            &self,
20580            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20581        ) -> bool {
20582            load_dyn_name_atomic_ptr(
20583                get_proc_address,
20584                b"glGetUniformSubroutineuiv\0",
20585                &self.glGetUniformSubroutineuiv_p,
20586            )
20587        }
20588        #[inline]
20589        #[doc(hidden)]
20590        pub fn GetUniformSubroutineuiv_is_loaded(&self) -> bool {
20591            !self.glGetUniformSubroutineuiv_p.load(RELAX).is_null()
20592        }
20593        /// [glGetUniformdv](http://docs.gl/gl4/glGetUniformdv)(program, location, params)
20594        /// * `params` len: COMPSIZE(program,location)
20595        #[cfg_attr(feature = "inline", inline)]
20596        #[cfg_attr(feature = "inline_always", inline(always))]
20597        pub unsafe fn GetUniformdv(&self, program: GLuint, location: GLint, params: *mut GLdouble) {
20598            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20599            {
20600                trace!(
20601                    "calling gl.GetUniformdv({:?}, {:?}, {:p});",
20602                    program,
20603                    location,
20604                    params
20605                );
20606            }
20607            let out = call_atomic_ptr_3arg(
20608                "glGetUniformdv",
20609                &self.glGetUniformdv_p,
20610                program,
20611                location,
20612                params,
20613            );
20614            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20615            {
20616                self.automatic_glGetError("glGetUniformdv");
20617            }
20618            out
20619        }
20620        #[doc(hidden)]
20621        pub unsafe fn GetUniformdv_load_with_dyn(
20622            &self,
20623            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20624        ) -> bool {
20625            load_dyn_name_atomic_ptr(
20626                get_proc_address,
20627                b"glGetUniformdv\0",
20628                &self.glGetUniformdv_p,
20629            )
20630        }
20631        #[inline]
20632        #[doc(hidden)]
20633        pub fn GetUniformdv_is_loaded(&self) -> bool {
20634            !self.glGetUniformdv_p.load(RELAX).is_null()
20635        }
20636        /// [glGetUniformfv](http://docs.gl/gl4/glGetUniform)(program, location, params)
20637        /// * `params` len: COMPSIZE(program,location)
20638        #[cfg_attr(feature = "inline", inline)]
20639        #[cfg_attr(feature = "inline_always", inline(always))]
20640        pub unsafe fn GetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) {
20641            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20642            {
20643                trace!(
20644                    "calling gl.GetUniformfv({:?}, {:?}, {:p});",
20645                    program,
20646                    location,
20647                    params
20648                );
20649            }
20650            let out = call_atomic_ptr_3arg(
20651                "glGetUniformfv",
20652                &self.glGetUniformfv_p,
20653                program,
20654                location,
20655                params,
20656            );
20657            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20658            {
20659                self.automatic_glGetError("glGetUniformfv");
20660            }
20661            out
20662        }
20663        #[doc(hidden)]
20664        pub unsafe fn GetUniformfv_load_with_dyn(
20665            &self,
20666            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20667        ) -> bool {
20668            load_dyn_name_atomic_ptr(
20669                get_proc_address,
20670                b"glGetUniformfv\0",
20671                &self.glGetUniformfv_p,
20672            )
20673        }
20674        #[inline]
20675        #[doc(hidden)]
20676        pub fn GetUniformfv_is_loaded(&self) -> bool {
20677            !self.glGetUniformfv_p.load(RELAX).is_null()
20678        }
20679        /// [glGetUniformiv](http://docs.gl/gl4/glGetUniform)(program, location, params)
20680        /// * `params` len: COMPSIZE(program,location)
20681        #[cfg_attr(feature = "inline", inline)]
20682        #[cfg_attr(feature = "inline_always", inline(always))]
20683        pub unsafe fn GetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) {
20684            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20685            {
20686                trace!(
20687                    "calling gl.GetUniformiv({:?}, {:?}, {:p});",
20688                    program,
20689                    location,
20690                    params
20691                );
20692            }
20693            let out = call_atomic_ptr_3arg(
20694                "glGetUniformiv",
20695                &self.glGetUniformiv_p,
20696                program,
20697                location,
20698                params,
20699            );
20700            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20701            {
20702                self.automatic_glGetError("glGetUniformiv");
20703            }
20704            out
20705        }
20706        #[doc(hidden)]
20707        pub unsafe fn GetUniformiv_load_with_dyn(
20708            &self,
20709            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20710        ) -> bool {
20711            load_dyn_name_atomic_ptr(
20712                get_proc_address,
20713                b"glGetUniformiv\0",
20714                &self.glGetUniformiv_p,
20715            )
20716        }
20717        #[inline]
20718        #[doc(hidden)]
20719        pub fn GetUniformiv_is_loaded(&self) -> bool {
20720            !self.glGetUniformiv_p.load(RELAX).is_null()
20721        }
20722        /// [glGetUniformuiv](http://docs.gl/gl4/glGetUniform)(program, location, params)
20723        /// * `params` len: COMPSIZE(program,location)
20724        #[cfg_attr(feature = "inline", inline)]
20725        #[cfg_attr(feature = "inline_always", inline(always))]
20726        pub unsafe fn GetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) {
20727            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20728            {
20729                trace!(
20730                    "calling gl.GetUniformuiv({:?}, {:?}, {:p});",
20731                    program,
20732                    location,
20733                    params
20734                );
20735            }
20736            let out = call_atomic_ptr_3arg(
20737                "glGetUniformuiv",
20738                &self.glGetUniformuiv_p,
20739                program,
20740                location,
20741                params,
20742            );
20743            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20744            {
20745                self.automatic_glGetError("glGetUniformuiv");
20746            }
20747            out
20748        }
20749        #[doc(hidden)]
20750        pub unsafe fn GetUniformuiv_load_with_dyn(
20751            &self,
20752            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20753        ) -> bool {
20754            load_dyn_name_atomic_ptr(
20755                get_proc_address,
20756                b"glGetUniformuiv\0",
20757                &self.glGetUniformuiv_p,
20758            )
20759        }
20760        #[inline]
20761        #[doc(hidden)]
20762        pub fn GetUniformuiv_is_loaded(&self) -> bool {
20763            !self.glGetUniformuiv_p.load(RELAX).is_null()
20764        }
20765        /// [glGetVertexArrayIndexed64iv](http://docs.gl/gl4/glGetVertexArrayIndexed6)(vaobj, index, pname, param)
20766        /// * `pname` group: VertexArrayPName
20767        #[cfg_attr(feature = "inline", inline)]
20768        #[cfg_attr(feature = "inline_always", inline(always))]
20769        pub unsafe fn GetVertexArrayIndexed64iv(
20770            &self,
20771            vaobj: GLuint,
20772            index: GLuint,
20773            pname: GLenum,
20774            param: *mut GLint64,
20775        ) {
20776            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20777            {
20778                trace!(
20779                    "calling gl.GetVertexArrayIndexed64iv({:?}, {:?}, {:#X}, {:p});",
20780                    vaobj,
20781                    index,
20782                    pname,
20783                    param
20784                );
20785            }
20786            let out = call_atomic_ptr_4arg(
20787                "glGetVertexArrayIndexed64iv",
20788                &self.glGetVertexArrayIndexed64iv_p,
20789                vaobj,
20790                index,
20791                pname,
20792                param,
20793            );
20794            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20795            {
20796                self.automatic_glGetError("glGetVertexArrayIndexed64iv");
20797            }
20798            out
20799        }
20800        #[doc(hidden)]
20801        pub unsafe fn GetVertexArrayIndexed64iv_load_with_dyn(
20802            &self,
20803            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20804        ) -> bool {
20805            load_dyn_name_atomic_ptr(
20806                get_proc_address,
20807                b"glGetVertexArrayIndexed64iv\0",
20808                &self.glGetVertexArrayIndexed64iv_p,
20809            )
20810        }
20811        #[inline]
20812        #[doc(hidden)]
20813        pub fn GetVertexArrayIndexed64iv_is_loaded(&self) -> bool {
20814            !self.glGetVertexArrayIndexed64iv_p.load(RELAX).is_null()
20815        }
20816        /// [glGetVertexArrayIndexediv](http://docs.gl/gl4/glGetVertexArrayIndexed)(vaobj, index, pname, param)
20817        /// * `pname` group: VertexArrayPName
20818        #[cfg_attr(feature = "inline", inline)]
20819        #[cfg_attr(feature = "inline_always", inline(always))]
20820        pub unsafe fn GetVertexArrayIndexediv(
20821            &self,
20822            vaobj: GLuint,
20823            index: GLuint,
20824            pname: GLenum,
20825            param: *mut GLint,
20826        ) {
20827            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20828            {
20829                trace!(
20830                    "calling gl.GetVertexArrayIndexediv({:?}, {:?}, {:#X}, {:p});",
20831                    vaobj,
20832                    index,
20833                    pname,
20834                    param
20835                );
20836            }
20837            let out = call_atomic_ptr_4arg(
20838                "glGetVertexArrayIndexediv",
20839                &self.glGetVertexArrayIndexediv_p,
20840                vaobj,
20841                index,
20842                pname,
20843                param,
20844            );
20845            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20846            {
20847                self.automatic_glGetError("glGetVertexArrayIndexediv");
20848            }
20849            out
20850        }
20851        #[doc(hidden)]
20852        pub unsafe fn GetVertexArrayIndexediv_load_with_dyn(
20853            &self,
20854            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20855        ) -> bool {
20856            load_dyn_name_atomic_ptr(
20857                get_proc_address,
20858                b"glGetVertexArrayIndexediv\0",
20859                &self.glGetVertexArrayIndexediv_p,
20860            )
20861        }
20862        #[inline]
20863        #[doc(hidden)]
20864        pub fn GetVertexArrayIndexediv_is_loaded(&self) -> bool {
20865            !self.glGetVertexArrayIndexediv_p.load(RELAX).is_null()
20866        }
20867        /// [glGetVertexArrayiv](http://docs.gl/gl4/glGetVertexArray)(vaobj, pname, param)
20868        /// * `pname` group: VertexArrayPName
20869        #[cfg_attr(feature = "inline", inline)]
20870        #[cfg_attr(feature = "inline_always", inline(always))]
20871        pub unsafe fn GetVertexArrayiv(&self, vaobj: GLuint, pname: GLenum, param: *mut GLint) {
20872            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20873            {
20874                trace!(
20875                    "calling gl.GetVertexArrayiv({:?}, {:#X}, {:p});",
20876                    vaobj,
20877                    pname,
20878                    param
20879                );
20880            }
20881            let out = call_atomic_ptr_3arg(
20882                "glGetVertexArrayiv",
20883                &self.glGetVertexArrayiv_p,
20884                vaobj,
20885                pname,
20886                param,
20887            );
20888            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20889            {
20890                self.automatic_glGetError("glGetVertexArrayiv");
20891            }
20892            out
20893        }
20894        #[doc(hidden)]
20895        pub unsafe fn GetVertexArrayiv_load_with_dyn(
20896            &self,
20897            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20898        ) -> bool {
20899            load_dyn_name_atomic_ptr(
20900                get_proc_address,
20901                b"glGetVertexArrayiv\0",
20902                &self.glGetVertexArrayiv_p,
20903            )
20904        }
20905        #[inline]
20906        #[doc(hidden)]
20907        pub fn GetVertexArrayiv_is_loaded(&self) -> bool {
20908            !self.glGetVertexArrayiv_p.load(RELAX).is_null()
20909        }
20910        /// [glGetVertexAttribIiv](http://docs.gl/gl4/glGetVertexAttrib)(index, pname, params)
20911        /// * `pname` group: VertexAttribEnum
20912        /// * `params` len: 1
20913        #[cfg_attr(feature = "inline", inline)]
20914        #[cfg_attr(feature = "inline_always", inline(always))]
20915        pub unsafe fn GetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) {
20916            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20917            {
20918                trace!(
20919                    "calling gl.GetVertexAttribIiv({:?}, {:#X}, {:p});",
20920                    index,
20921                    pname,
20922                    params
20923                );
20924            }
20925            let out = call_atomic_ptr_3arg(
20926                "glGetVertexAttribIiv",
20927                &self.glGetVertexAttribIiv_p,
20928                index,
20929                pname,
20930                params,
20931            );
20932            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20933            {
20934                self.automatic_glGetError("glGetVertexAttribIiv");
20935            }
20936            out
20937        }
20938        #[doc(hidden)]
20939        pub unsafe fn GetVertexAttribIiv_load_with_dyn(
20940            &self,
20941            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20942        ) -> bool {
20943            load_dyn_name_atomic_ptr(
20944                get_proc_address,
20945                b"glGetVertexAttribIiv\0",
20946                &self.glGetVertexAttribIiv_p,
20947            )
20948        }
20949        #[inline]
20950        #[doc(hidden)]
20951        pub fn GetVertexAttribIiv_is_loaded(&self) -> bool {
20952            !self.glGetVertexAttribIiv_p.load(RELAX).is_null()
20953        }
20954        /// [glGetVertexAttribIuiv](http://docs.gl/gl4/glGetVertexAttrib)(index, pname, params)
20955        /// * `pname` group: VertexAttribEnum
20956        /// * `params` len: 1
20957        #[cfg_attr(feature = "inline", inline)]
20958        #[cfg_attr(feature = "inline_always", inline(always))]
20959        pub unsafe fn GetVertexAttribIuiv(
20960            &self,
20961            index: GLuint,
20962            pname: GLenum,
20963            params: *mut GLuint,
20964        ) {
20965            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
20966            {
20967                trace!(
20968                    "calling gl.GetVertexAttribIuiv({:?}, {:#X}, {:p});",
20969                    index,
20970                    pname,
20971                    params
20972                );
20973            }
20974            let out = call_atomic_ptr_3arg(
20975                "glGetVertexAttribIuiv",
20976                &self.glGetVertexAttribIuiv_p,
20977                index,
20978                pname,
20979                params,
20980            );
20981            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
20982            {
20983                self.automatic_glGetError("glGetVertexAttribIuiv");
20984            }
20985            out
20986        }
20987        #[doc(hidden)]
20988        pub unsafe fn GetVertexAttribIuiv_load_with_dyn(
20989            &self,
20990            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
20991        ) -> bool {
20992            load_dyn_name_atomic_ptr(
20993                get_proc_address,
20994                b"glGetVertexAttribIuiv\0",
20995                &self.glGetVertexAttribIuiv_p,
20996            )
20997        }
20998        #[inline]
20999        #[doc(hidden)]
21000        pub fn GetVertexAttribIuiv_is_loaded(&self) -> bool {
21001            !self.glGetVertexAttribIuiv_p.load(RELAX).is_null()
21002        }
21003        /// [glGetVertexAttribLdv](http://docs.gl/gl4/glGetVertexAttribLdv)(index, pname, params)
21004        /// * `pname` group: VertexAttribEnum
21005        /// * `params` len: COMPSIZE(pname)
21006        #[cfg_attr(feature = "inline", inline)]
21007        #[cfg_attr(feature = "inline_always", inline(always))]
21008        pub unsafe fn GetVertexAttribLdv(
21009            &self,
21010            index: GLuint,
21011            pname: GLenum,
21012            params: *mut GLdouble,
21013        ) {
21014            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21015            {
21016                trace!(
21017                    "calling gl.GetVertexAttribLdv({:?}, {:#X}, {:p});",
21018                    index,
21019                    pname,
21020                    params
21021                );
21022            }
21023            let out = call_atomic_ptr_3arg(
21024                "glGetVertexAttribLdv",
21025                &self.glGetVertexAttribLdv_p,
21026                index,
21027                pname,
21028                params,
21029            );
21030            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21031            {
21032                self.automatic_glGetError("glGetVertexAttribLdv");
21033            }
21034            out
21035        }
21036        #[doc(hidden)]
21037        pub unsafe fn GetVertexAttribLdv_load_with_dyn(
21038            &self,
21039            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21040        ) -> bool {
21041            load_dyn_name_atomic_ptr(
21042                get_proc_address,
21043                b"glGetVertexAttribLdv\0",
21044                &self.glGetVertexAttribLdv_p,
21045            )
21046        }
21047        #[inline]
21048        #[doc(hidden)]
21049        pub fn GetVertexAttribLdv_is_loaded(&self) -> bool {
21050            !self.glGetVertexAttribLdv_p.load(RELAX).is_null()
21051        }
21052        /// [glGetVertexAttribPointerv](http://docs.gl/gl4/glGetVertexAttribPointerv)(index, pname, pointer)
21053        /// * `pname` group: VertexAttribPointerPropertyARB
21054        /// * `pointer` len: 1
21055        #[cfg_attr(feature = "inline", inline)]
21056        #[cfg_attr(feature = "inline_always", inline(always))]
21057        pub unsafe fn GetVertexAttribPointerv(
21058            &self,
21059            index: GLuint,
21060            pname: GLenum,
21061            pointer: *mut *mut c_void,
21062        ) {
21063            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21064            {
21065                trace!(
21066                    "calling gl.GetVertexAttribPointerv({:?}, {:#X}, {:p});",
21067                    index,
21068                    pname,
21069                    pointer
21070                );
21071            }
21072            let out = call_atomic_ptr_3arg(
21073                "glGetVertexAttribPointerv",
21074                &self.glGetVertexAttribPointerv_p,
21075                index,
21076                pname,
21077                pointer,
21078            );
21079            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21080            {
21081                self.automatic_glGetError("glGetVertexAttribPointerv");
21082            }
21083            out
21084        }
21085        #[doc(hidden)]
21086        pub unsafe fn GetVertexAttribPointerv_load_with_dyn(
21087            &self,
21088            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21089        ) -> bool {
21090            load_dyn_name_atomic_ptr(
21091                get_proc_address,
21092                b"glGetVertexAttribPointerv\0",
21093                &self.glGetVertexAttribPointerv_p,
21094            )
21095        }
21096        #[inline]
21097        #[doc(hidden)]
21098        pub fn GetVertexAttribPointerv_is_loaded(&self) -> bool {
21099            !self.glGetVertexAttribPointerv_p.load(RELAX).is_null()
21100        }
21101        /// [glGetVertexAttribdv](http://docs.gl/gl4/glGetVertexAttribdv)(index, pname, params)
21102        /// * `pname` group: VertexAttribPropertyARB
21103        /// * `params` len: 4
21104        #[cfg_attr(feature = "inline", inline)]
21105        #[cfg_attr(feature = "inline_always", inline(always))]
21106        pub unsafe fn GetVertexAttribdv(
21107            &self,
21108            index: GLuint,
21109            pname: GLenum,
21110            params: *mut GLdouble,
21111        ) {
21112            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21113            {
21114                trace!(
21115                    "calling gl.GetVertexAttribdv({:?}, {:#X}, {:p});",
21116                    index,
21117                    pname,
21118                    params
21119                );
21120            }
21121            let out = call_atomic_ptr_3arg(
21122                "glGetVertexAttribdv",
21123                &self.glGetVertexAttribdv_p,
21124                index,
21125                pname,
21126                params,
21127            );
21128            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21129            {
21130                self.automatic_glGetError("glGetVertexAttribdv");
21131            }
21132            out
21133        }
21134        #[doc(hidden)]
21135        pub unsafe fn GetVertexAttribdv_load_with_dyn(
21136            &self,
21137            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21138        ) -> bool {
21139            load_dyn_name_atomic_ptr(
21140                get_proc_address,
21141                b"glGetVertexAttribdv\0",
21142                &self.glGetVertexAttribdv_p,
21143            )
21144        }
21145        #[inline]
21146        #[doc(hidden)]
21147        pub fn GetVertexAttribdv_is_loaded(&self) -> bool {
21148            !self.glGetVertexAttribdv_p.load(RELAX).is_null()
21149        }
21150        /// [glGetVertexAttribfv](http://docs.gl/gl4/glGetVertexAttrib)(index, pname, params)
21151        /// * `pname` group: VertexAttribPropertyARB
21152        /// * `params` len: 4
21153        #[cfg_attr(feature = "inline", inline)]
21154        #[cfg_attr(feature = "inline_always", inline(always))]
21155        pub unsafe fn GetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) {
21156            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21157            {
21158                trace!(
21159                    "calling gl.GetVertexAttribfv({:?}, {:#X}, {:p});",
21160                    index,
21161                    pname,
21162                    params
21163                );
21164            }
21165            let out = call_atomic_ptr_3arg(
21166                "glGetVertexAttribfv",
21167                &self.glGetVertexAttribfv_p,
21168                index,
21169                pname,
21170                params,
21171            );
21172            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21173            {
21174                self.automatic_glGetError("glGetVertexAttribfv");
21175            }
21176            out
21177        }
21178        #[doc(hidden)]
21179        pub unsafe fn GetVertexAttribfv_load_with_dyn(
21180            &self,
21181            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21182        ) -> bool {
21183            load_dyn_name_atomic_ptr(
21184                get_proc_address,
21185                b"glGetVertexAttribfv\0",
21186                &self.glGetVertexAttribfv_p,
21187            )
21188        }
21189        #[inline]
21190        #[doc(hidden)]
21191        pub fn GetVertexAttribfv_is_loaded(&self) -> bool {
21192            !self.glGetVertexAttribfv_p.load(RELAX).is_null()
21193        }
21194        /// [glGetVertexAttribiv](http://docs.gl/gl4/glGetVertexAttrib)(index, pname, params)
21195        /// * `pname` group: VertexAttribPropertyARB
21196        /// * `params` len: 4
21197        #[cfg_attr(feature = "inline", inline)]
21198        #[cfg_attr(feature = "inline_always", inline(always))]
21199        pub unsafe fn GetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) {
21200            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21201            {
21202                trace!(
21203                    "calling gl.GetVertexAttribiv({:?}, {:#X}, {:p});",
21204                    index,
21205                    pname,
21206                    params
21207                );
21208            }
21209            let out = call_atomic_ptr_3arg(
21210                "glGetVertexAttribiv",
21211                &self.glGetVertexAttribiv_p,
21212                index,
21213                pname,
21214                params,
21215            );
21216            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21217            {
21218                self.automatic_glGetError("glGetVertexAttribiv");
21219            }
21220            out
21221        }
21222        #[doc(hidden)]
21223        pub unsafe fn GetVertexAttribiv_load_with_dyn(
21224            &self,
21225            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21226        ) -> bool {
21227            load_dyn_name_atomic_ptr(
21228                get_proc_address,
21229                b"glGetVertexAttribiv\0",
21230                &self.glGetVertexAttribiv_p,
21231            )
21232        }
21233        #[inline]
21234        #[doc(hidden)]
21235        pub fn GetVertexAttribiv_is_loaded(&self) -> bool {
21236            !self.glGetVertexAttribiv_p.load(RELAX).is_null()
21237        }
21238        /// [glGetnCompressedTexImage](http://docs.gl/gl4/glGetnCompressedTexImage)(target, lod, bufSize, pixels)
21239        /// * `target` group: TextureTarget
21240        #[cfg_attr(feature = "inline", inline)]
21241        #[cfg_attr(feature = "inline_always", inline(always))]
21242        pub unsafe fn GetnCompressedTexImage(
21243            &self,
21244            target: GLenum,
21245            lod: GLint,
21246            bufSize: GLsizei,
21247            pixels: *mut c_void,
21248        ) {
21249            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21250            {
21251                trace!(
21252                    "calling gl.GetnCompressedTexImage({:#X}, {:?}, {:?}, {:p});",
21253                    target,
21254                    lod,
21255                    bufSize,
21256                    pixels
21257                );
21258            }
21259            let out = call_atomic_ptr_4arg(
21260                "glGetnCompressedTexImage",
21261                &self.glGetnCompressedTexImage_p,
21262                target,
21263                lod,
21264                bufSize,
21265                pixels,
21266            );
21267            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21268            {
21269                self.automatic_glGetError("glGetnCompressedTexImage");
21270            }
21271            out
21272        }
21273        #[doc(hidden)]
21274        pub unsafe fn GetnCompressedTexImage_load_with_dyn(
21275            &self,
21276            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21277        ) -> bool {
21278            load_dyn_name_atomic_ptr(
21279                get_proc_address,
21280                b"glGetnCompressedTexImage\0",
21281                &self.glGetnCompressedTexImage_p,
21282            )
21283        }
21284        #[inline]
21285        #[doc(hidden)]
21286        pub fn GetnCompressedTexImage_is_loaded(&self) -> bool {
21287            !self.glGetnCompressedTexImage_p.load(RELAX).is_null()
21288        }
21289        /// [glGetnTexImage](http://docs.gl/gl4/glGetnTexImage)(target, level, format, type_, bufSize, pixels)
21290        /// * `target` group: TextureTarget
21291        /// * `format` group: PixelFormat
21292        /// * `type_` group: PixelType
21293        /// * `pixels` len: bufSize
21294        #[cfg_attr(feature = "inline", inline)]
21295        #[cfg_attr(feature = "inline_always", inline(always))]
21296        pub unsafe fn GetnTexImage(
21297            &self,
21298            target: GLenum,
21299            level: GLint,
21300            format: GLenum,
21301            type_: GLenum,
21302            bufSize: GLsizei,
21303            pixels: *mut c_void,
21304        ) {
21305            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21306            {
21307                trace!(
21308                    "calling gl.GetnTexImage({:#X}, {:?}, {:#X}, {:#X}, {:?}, {:p});",
21309                    target,
21310                    level,
21311                    format,
21312                    type_,
21313                    bufSize,
21314                    pixels
21315                );
21316            }
21317            let out = call_atomic_ptr_6arg(
21318                "glGetnTexImage",
21319                &self.glGetnTexImage_p,
21320                target,
21321                level,
21322                format,
21323                type_,
21324                bufSize,
21325                pixels,
21326            );
21327            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21328            {
21329                self.automatic_glGetError("glGetnTexImage");
21330            }
21331            out
21332        }
21333        #[doc(hidden)]
21334        pub unsafe fn GetnTexImage_load_with_dyn(
21335            &self,
21336            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21337        ) -> bool {
21338            load_dyn_name_atomic_ptr(
21339                get_proc_address,
21340                b"glGetnTexImage\0",
21341                &self.glGetnTexImage_p,
21342            )
21343        }
21344        #[inline]
21345        #[doc(hidden)]
21346        pub fn GetnTexImage_is_loaded(&self) -> bool {
21347            !self.glGetnTexImage_p.load(RELAX).is_null()
21348        }
21349        /// [glGetnUniformdv](http://docs.gl/gl4/glGetnUniformdv)(program, location, bufSize, params)
21350        /// * `params` len: bufSize
21351        #[cfg_attr(feature = "inline", inline)]
21352        #[cfg_attr(feature = "inline_always", inline(always))]
21353        pub unsafe fn GetnUniformdv(
21354            &self,
21355            program: GLuint,
21356            location: GLint,
21357            bufSize: GLsizei,
21358            params: *mut GLdouble,
21359        ) {
21360            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21361            {
21362                trace!(
21363                    "calling gl.GetnUniformdv({:?}, {:?}, {:?}, {:p});",
21364                    program,
21365                    location,
21366                    bufSize,
21367                    params
21368                );
21369            }
21370            let out = call_atomic_ptr_4arg(
21371                "glGetnUniformdv",
21372                &self.glGetnUniformdv_p,
21373                program,
21374                location,
21375                bufSize,
21376                params,
21377            );
21378            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21379            {
21380                self.automatic_glGetError("glGetnUniformdv");
21381            }
21382            out
21383        }
21384        #[doc(hidden)]
21385        pub unsafe fn GetnUniformdv_load_with_dyn(
21386            &self,
21387            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21388        ) -> bool {
21389            load_dyn_name_atomic_ptr(
21390                get_proc_address,
21391                b"glGetnUniformdv\0",
21392                &self.glGetnUniformdv_p,
21393            )
21394        }
21395        #[inline]
21396        #[doc(hidden)]
21397        pub fn GetnUniformdv_is_loaded(&self) -> bool {
21398            !self.glGetnUniformdv_p.load(RELAX).is_null()
21399        }
21400        /// [glGetnUniformfv](http://docs.gl/gl4/glGetnUniform)(program, location, bufSize, params)
21401        /// * `params` len: bufSize
21402        #[cfg_attr(feature = "inline", inline)]
21403        #[cfg_attr(feature = "inline_always", inline(always))]
21404        pub unsafe fn GetnUniformfv(
21405            &self,
21406            program: GLuint,
21407            location: GLint,
21408            bufSize: GLsizei,
21409            params: *mut GLfloat,
21410        ) {
21411            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21412            {
21413                trace!(
21414                    "calling gl.GetnUniformfv({:?}, {:?}, {:?}, {:p});",
21415                    program,
21416                    location,
21417                    bufSize,
21418                    params
21419                );
21420            }
21421            let out = call_atomic_ptr_4arg(
21422                "glGetnUniformfv",
21423                &self.glGetnUniformfv_p,
21424                program,
21425                location,
21426                bufSize,
21427                params,
21428            );
21429            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21430            {
21431                self.automatic_glGetError("glGetnUniformfv");
21432            }
21433            out
21434        }
21435        #[doc(hidden)]
21436        pub unsafe fn GetnUniformfv_load_with_dyn(
21437            &self,
21438            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21439        ) -> bool {
21440            load_dyn_name_atomic_ptr(
21441                get_proc_address,
21442                b"glGetnUniformfv\0",
21443                &self.glGetnUniformfv_p,
21444            )
21445        }
21446        #[inline]
21447        #[doc(hidden)]
21448        pub fn GetnUniformfv_is_loaded(&self) -> bool {
21449            !self.glGetnUniformfv_p.load(RELAX).is_null()
21450        }
21451        /// [glGetnUniformiv](http://docs.gl/gl4/glGetnUniform)(program, location, bufSize, params)
21452        /// * `params` len: bufSize
21453        #[cfg_attr(feature = "inline", inline)]
21454        #[cfg_attr(feature = "inline_always", inline(always))]
21455        pub unsafe fn GetnUniformiv(
21456            &self,
21457            program: GLuint,
21458            location: GLint,
21459            bufSize: GLsizei,
21460            params: *mut GLint,
21461        ) {
21462            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21463            {
21464                trace!(
21465                    "calling gl.GetnUniformiv({:?}, {:?}, {:?}, {:p});",
21466                    program,
21467                    location,
21468                    bufSize,
21469                    params
21470                );
21471            }
21472            let out = call_atomic_ptr_4arg(
21473                "glGetnUniformiv",
21474                &self.glGetnUniformiv_p,
21475                program,
21476                location,
21477                bufSize,
21478                params,
21479            );
21480            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21481            {
21482                self.automatic_glGetError("glGetnUniformiv");
21483            }
21484            out
21485        }
21486        #[doc(hidden)]
21487        pub unsafe fn GetnUniformiv_load_with_dyn(
21488            &self,
21489            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21490        ) -> bool {
21491            load_dyn_name_atomic_ptr(
21492                get_proc_address,
21493                b"glGetnUniformiv\0",
21494                &self.glGetnUniformiv_p,
21495            )
21496        }
21497        #[inline]
21498        #[doc(hidden)]
21499        pub fn GetnUniformiv_is_loaded(&self) -> bool {
21500            !self.glGetnUniformiv_p.load(RELAX).is_null()
21501        }
21502        /// [glGetnUniformuiv](http://docs.gl/gl4/glGetnUniform)(program, location, bufSize, params)
21503        /// * `params` len: bufSize
21504        #[cfg_attr(feature = "inline", inline)]
21505        #[cfg_attr(feature = "inline_always", inline(always))]
21506        pub unsafe fn GetnUniformuiv(
21507            &self,
21508            program: GLuint,
21509            location: GLint,
21510            bufSize: GLsizei,
21511            params: *mut GLuint,
21512        ) {
21513            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21514            {
21515                trace!(
21516                    "calling gl.GetnUniformuiv({:?}, {:?}, {:?}, {:p});",
21517                    program,
21518                    location,
21519                    bufSize,
21520                    params
21521                );
21522            }
21523            let out = call_atomic_ptr_4arg(
21524                "glGetnUniformuiv",
21525                &self.glGetnUniformuiv_p,
21526                program,
21527                location,
21528                bufSize,
21529                params,
21530            );
21531            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21532            {
21533                self.automatic_glGetError("glGetnUniformuiv");
21534            }
21535            out
21536        }
21537        #[doc(hidden)]
21538        pub unsafe fn GetnUniformuiv_load_with_dyn(
21539            &self,
21540            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21541        ) -> bool {
21542            load_dyn_name_atomic_ptr(
21543                get_proc_address,
21544                b"glGetnUniformuiv\0",
21545                &self.glGetnUniformuiv_p,
21546            )
21547        }
21548        #[inline]
21549        #[doc(hidden)]
21550        pub fn GetnUniformuiv_is_loaded(&self) -> bool {
21551            !self.glGetnUniformuiv_p.load(RELAX).is_null()
21552        }
21553        /// [glHint](http://docs.gl/gl4/glHint)(target, mode)
21554        /// * `target` group: HintTarget
21555        /// * `mode` group: HintMode
21556        #[cfg_attr(feature = "inline", inline)]
21557        #[cfg_attr(feature = "inline_always", inline(always))]
21558        pub unsafe fn Hint(&self, target: GLenum, mode: GLenum) {
21559            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21560            {
21561                trace!("calling gl.Hint({:#X}, {:#X});", target, mode);
21562            }
21563            let out = call_atomic_ptr_2arg("glHint", &self.glHint_p, target, mode);
21564            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21565            {
21566                self.automatic_glGetError("glHint");
21567            }
21568            out
21569        }
21570        #[doc(hidden)]
21571        pub unsafe fn Hint_load_with_dyn(
21572            &self,
21573            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21574        ) -> bool {
21575            load_dyn_name_atomic_ptr(get_proc_address, b"glHint\0", &self.glHint_p)
21576        }
21577        #[inline]
21578        #[doc(hidden)]
21579        pub fn Hint_is_loaded(&self) -> bool {
21580            !self.glHint_p.load(RELAX).is_null()
21581        }
21582        /// [glInvalidateBufferData](http://docs.gl/gl4/glInvalidateBufferData)(buffer)
21583        #[cfg_attr(feature = "inline", inline)]
21584        #[cfg_attr(feature = "inline_always", inline(always))]
21585        pub unsafe fn InvalidateBufferData(&self, buffer: GLuint) {
21586            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21587            {
21588                trace!("calling gl.InvalidateBufferData({:?});", buffer);
21589            }
21590            let out = call_atomic_ptr_1arg(
21591                "glInvalidateBufferData",
21592                &self.glInvalidateBufferData_p,
21593                buffer,
21594            );
21595            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21596            {
21597                self.automatic_glGetError("glInvalidateBufferData");
21598            }
21599            out
21600        }
21601        #[doc(hidden)]
21602        pub unsafe fn InvalidateBufferData_load_with_dyn(
21603            &self,
21604            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21605        ) -> bool {
21606            load_dyn_name_atomic_ptr(
21607                get_proc_address,
21608                b"glInvalidateBufferData\0",
21609                &self.glInvalidateBufferData_p,
21610            )
21611        }
21612        #[inline]
21613        #[doc(hidden)]
21614        pub fn InvalidateBufferData_is_loaded(&self) -> bool {
21615            !self.glInvalidateBufferData_p.load(RELAX).is_null()
21616        }
21617        /// [glInvalidateBufferSubData](http://docs.gl/gl4/glInvalidateBufferSubData)(buffer, offset, length)
21618        /// * `offset` group: BufferOffset
21619        /// * `length` group: BufferSize
21620        #[cfg_attr(feature = "inline", inline)]
21621        #[cfg_attr(feature = "inline_always", inline(always))]
21622        pub unsafe fn InvalidateBufferSubData(
21623            &self,
21624            buffer: GLuint,
21625            offset: GLintptr,
21626            length: GLsizeiptr,
21627        ) {
21628            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21629            {
21630                trace!(
21631                    "calling gl.InvalidateBufferSubData({:?}, {:?}, {:?});",
21632                    buffer,
21633                    offset,
21634                    length
21635                );
21636            }
21637            let out = call_atomic_ptr_3arg(
21638                "glInvalidateBufferSubData",
21639                &self.glInvalidateBufferSubData_p,
21640                buffer,
21641                offset,
21642                length,
21643            );
21644            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21645            {
21646                self.automatic_glGetError("glInvalidateBufferSubData");
21647            }
21648            out
21649        }
21650        #[doc(hidden)]
21651        pub unsafe fn InvalidateBufferSubData_load_with_dyn(
21652            &self,
21653            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21654        ) -> bool {
21655            load_dyn_name_atomic_ptr(
21656                get_proc_address,
21657                b"glInvalidateBufferSubData\0",
21658                &self.glInvalidateBufferSubData_p,
21659            )
21660        }
21661        #[inline]
21662        #[doc(hidden)]
21663        pub fn InvalidateBufferSubData_is_loaded(&self) -> bool {
21664            !self.glInvalidateBufferSubData_p.load(RELAX).is_null()
21665        }
21666        /// [glInvalidateFramebuffer](http://docs.gl/gl4/glInvalidateFramebuffer)(target, numAttachments, attachments)
21667        /// * `target` group: FramebufferTarget
21668        /// * `attachments` group: InvalidateFramebufferAttachment
21669        /// * `attachments` len: numAttachments
21670        #[cfg_attr(feature = "inline", inline)]
21671        #[cfg_attr(feature = "inline_always", inline(always))]
21672        pub unsafe fn InvalidateFramebuffer(
21673            &self,
21674            target: GLenum,
21675            numAttachments: GLsizei,
21676            attachments: *const GLenum,
21677        ) {
21678            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21679            {
21680                trace!(
21681                    "calling gl.InvalidateFramebuffer({:#X}, {:?}, {:p});",
21682                    target,
21683                    numAttachments,
21684                    attachments
21685                );
21686            }
21687            let out = call_atomic_ptr_3arg(
21688                "glInvalidateFramebuffer",
21689                &self.glInvalidateFramebuffer_p,
21690                target,
21691                numAttachments,
21692                attachments,
21693            );
21694            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21695            {
21696                self.automatic_glGetError("glInvalidateFramebuffer");
21697            }
21698            out
21699        }
21700        #[doc(hidden)]
21701        pub unsafe fn InvalidateFramebuffer_load_with_dyn(
21702            &self,
21703            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21704        ) -> bool {
21705            load_dyn_name_atomic_ptr(
21706                get_proc_address,
21707                b"glInvalidateFramebuffer\0",
21708                &self.glInvalidateFramebuffer_p,
21709            )
21710        }
21711        #[inline]
21712        #[doc(hidden)]
21713        pub fn InvalidateFramebuffer_is_loaded(&self) -> bool {
21714            !self.glInvalidateFramebuffer_p.load(RELAX).is_null()
21715        }
21716        /// [glInvalidateNamedFramebufferData](http://docs.gl/gl4/glInvalidateNamedFramebufferData)(framebuffer, numAttachments, attachments)
21717        /// * `attachments` group: FramebufferAttachment
21718        #[cfg_attr(feature = "inline", inline)]
21719        #[cfg_attr(feature = "inline_always", inline(always))]
21720        pub unsafe fn InvalidateNamedFramebufferData(
21721            &self,
21722            framebuffer: GLuint,
21723            numAttachments: GLsizei,
21724            attachments: *const GLenum,
21725        ) {
21726            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21727            {
21728                trace!(
21729                    "calling gl.InvalidateNamedFramebufferData({:?}, {:?}, {:p});",
21730                    framebuffer,
21731                    numAttachments,
21732                    attachments
21733                );
21734            }
21735            let out = call_atomic_ptr_3arg(
21736                "glInvalidateNamedFramebufferData",
21737                &self.glInvalidateNamedFramebufferData_p,
21738                framebuffer,
21739                numAttachments,
21740                attachments,
21741            );
21742            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21743            {
21744                self.automatic_glGetError("glInvalidateNamedFramebufferData");
21745            }
21746            out
21747        }
21748        #[doc(hidden)]
21749        pub unsafe fn InvalidateNamedFramebufferData_load_with_dyn(
21750            &self,
21751            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21752        ) -> bool {
21753            load_dyn_name_atomic_ptr(
21754                get_proc_address,
21755                b"glInvalidateNamedFramebufferData\0",
21756                &self.glInvalidateNamedFramebufferData_p,
21757            )
21758        }
21759        #[inline]
21760        #[doc(hidden)]
21761        pub fn InvalidateNamedFramebufferData_is_loaded(&self) -> bool {
21762            !self
21763                .glInvalidateNamedFramebufferData_p
21764                .load(RELAX)
21765                .is_null()
21766        }
21767        /// [glInvalidateNamedFramebufferSubData](http://docs.gl/gl4/glInvalidateNamedFramebufferSubData)(framebuffer, numAttachments, attachments, x, y, width, height)
21768        /// * `attachments` group: FramebufferAttachment
21769        #[cfg_attr(feature = "inline", inline)]
21770        #[cfg_attr(feature = "inline_always", inline(always))]
21771        pub unsafe fn InvalidateNamedFramebufferSubData(
21772            &self,
21773            framebuffer: GLuint,
21774            numAttachments: GLsizei,
21775            attachments: *const GLenum,
21776            x: GLint,
21777            y: GLint,
21778            width: GLsizei,
21779            height: GLsizei,
21780        ) {
21781            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21782            {
21783                trace!("calling gl.InvalidateNamedFramebufferSubData({:?}, {:?}, {:p}, {:?}, {:?}, {:?}, {:?});", framebuffer, numAttachments, attachments, x, y, width, height);
21784            }
21785            let out = call_atomic_ptr_7arg(
21786                "glInvalidateNamedFramebufferSubData",
21787                &self.glInvalidateNamedFramebufferSubData_p,
21788                framebuffer,
21789                numAttachments,
21790                attachments,
21791                x,
21792                y,
21793                width,
21794                height,
21795            );
21796            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21797            {
21798                self.automatic_glGetError("glInvalidateNamedFramebufferSubData");
21799            }
21800            out
21801        }
21802        #[doc(hidden)]
21803        pub unsafe fn InvalidateNamedFramebufferSubData_load_with_dyn(
21804            &self,
21805            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21806        ) -> bool {
21807            load_dyn_name_atomic_ptr(
21808                get_proc_address,
21809                b"glInvalidateNamedFramebufferSubData\0",
21810                &self.glInvalidateNamedFramebufferSubData_p,
21811            )
21812        }
21813        #[inline]
21814        #[doc(hidden)]
21815        pub fn InvalidateNamedFramebufferSubData_is_loaded(&self) -> bool {
21816            !self
21817                .glInvalidateNamedFramebufferSubData_p
21818                .load(RELAX)
21819                .is_null()
21820        }
21821        /// [glInvalidateSubFramebuffer](http://docs.gl/gl4/glInvalidateSubFramebuffer)(target, numAttachments, attachments, x, y, width, height)
21822        /// * `target` group: FramebufferTarget
21823        /// * `attachments` group: InvalidateFramebufferAttachment
21824        /// * `attachments` len: numAttachments
21825        #[cfg_attr(feature = "inline", inline)]
21826        #[cfg_attr(feature = "inline_always", inline(always))]
21827        pub unsafe fn InvalidateSubFramebuffer(
21828            &self,
21829            target: GLenum,
21830            numAttachments: GLsizei,
21831            attachments: *const GLenum,
21832            x: GLint,
21833            y: GLint,
21834            width: GLsizei,
21835            height: GLsizei,
21836        ) {
21837            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21838            {
21839                trace!("calling gl.InvalidateSubFramebuffer({:#X}, {:?}, {:p}, {:?}, {:?}, {:?}, {:?});", target, numAttachments, attachments, x, y, width, height);
21840            }
21841            let out = call_atomic_ptr_7arg(
21842                "glInvalidateSubFramebuffer",
21843                &self.glInvalidateSubFramebuffer_p,
21844                target,
21845                numAttachments,
21846                attachments,
21847                x,
21848                y,
21849                width,
21850                height,
21851            );
21852            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21853            {
21854                self.automatic_glGetError("glInvalidateSubFramebuffer");
21855            }
21856            out
21857        }
21858        #[doc(hidden)]
21859        pub unsafe fn InvalidateSubFramebuffer_load_with_dyn(
21860            &self,
21861            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21862        ) -> bool {
21863            load_dyn_name_atomic_ptr(
21864                get_proc_address,
21865                b"glInvalidateSubFramebuffer\0",
21866                &self.glInvalidateSubFramebuffer_p,
21867            )
21868        }
21869        #[inline]
21870        #[doc(hidden)]
21871        pub fn InvalidateSubFramebuffer_is_loaded(&self) -> bool {
21872            !self.glInvalidateSubFramebuffer_p.load(RELAX).is_null()
21873        }
21874        /// [glInvalidateTexImage](http://docs.gl/gl4/glInvalidateTexImage)(texture, level)
21875        #[cfg_attr(feature = "inline", inline)]
21876        #[cfg_attr(feature = "inline_always", inline(always))]
21877        pub unsafe fn InvalidateTexImage(&self, texture: GLuint, level: GLint) {
21878            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21879            {
21880                trace!("calling gl.InvalidateTexImage({:?}, {:?});", texture, level);
21881            }
21882            let out = call_atomic_ptr_2arg(
21883                "glInvalidateTexImage",
21884                &self.glInvalidateTexImage_p,
21885                texture,
21886                level,
21887            );
21888            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21889            {
21890                self.automatic_glGetError("glInvalidateTexImage");
21891            }
21892            out
21893        }
21894        #[doc(hidden)]
21895        pub unsafe fn InvalidateTexImage_load_with_dyn(
21896            &self,
21897            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21898        ) -> bool {
21899            load_dyn_name_atomic_ptr(
21900                get_proc_address,
21901                b"glInvalidateTexImage\0",
21902                &self.glInvalidateTexImage_p,
21903            )
21904        }
21905        #[inline]
21906        #[doc(hidden)]
21907        pub fn InvalidateTexImage_is_loaded(&self) -> bool {
21908            !self.glInvalidateTexImage_p.load(RELAX).is_null()
21909        }
21910        /// [glInvalidateTexSubImage](http://docs.gl/gl4/glInvalidateTexSubImage)(texture, level, xoffset, yoffset, zoffset, width, height, depth)
21911        #[cfg_attr(feature = "inline", inline)]
21912        #[cfg_attr(feature = "inline_always", inline(always))]
21913        pub unsafe fn InvalidateTexSubImage(
21914            &self,
21915            texture: GLuint,
21916            level: GLint,
21917            xoffset: GLint,
21918            yoffset: GLint,
21919            zoffset: GLint,
21920            width: GLsizei,
21921            height: GLsizei,
21922            depth: GLsizei,
21923        ) {
21924            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21925            {
21926                trace!("calling gl.InvalidateTexSubImage({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", texture, level, xoffset, yoffset, zoffset, width, height, depth);
21927            }
21928            let out = call_atomic_ptr_8arg(
21929                "glInvalidateTexSubImage",
21930                &self.glInvalidateTexSubImage_p,
21931                texture,
21932                level,
21933                xoffset,
21934                yoffset,
21935                zoffset,
21936                width,
21937                height,
21938                depth,
21939            );
21940            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21941            {
21942                self.automatic_glGetError("glInvalidateTexSubImage");
21943            }
21944            out
21945        }
21946        #[doc(hidden)]
21947        pub unsafe fn InvalidateTexSubImage_load_with_dyn(
21948            &self,
21949            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21950        ) -> bool {
21951            load_dyn_name_atomic_ptr(
21952                get_proc_address,
21953                b"glInvalidateTexSubImage\0",
21954                &self.glInvalidateTexSubImage_p,
21955            )
21956        }
21957        #[inline]
21958        #[doc(hidden)]
21959        pub fn InvalidateTexSubImage_is_loaded(&self) -> bool {
21960            !self.glInvalidateTexSubImage_p.load(RELAX).is_null()
21961        }
21962        /// [glIsBuffer](http://docs.gl/gl4/glIsBuffer)(buffer)
21963        #[cfg_attr(feature = "inline", inline)]
21964        #[cfg_attr(feature = "inline_always", inline(always))]
21965        pub unsafe fn IsBuffer(&self, buffer: GLuint) -> GLboolean {
21966            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21967            {
21968                trace!("calling gl.IsBuffer({:?});", buffer);
21969            }
21970            let out = call_atomic_ptr_1arg("glIsBuffer", &self.glIsBuffer_p, buffer);
21971            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
21972            {
21973                self.automatic_glGetError("glIsBuffer");
21974            }
21975            out
21976        }
21977        #[doc(hidden)]
21978        pub unsafe fn IsBuffer_load_with_dyn(
21979            &self,
21980            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
21981        ) -> bool {
21982            load_dyn_name_atomic_ptr(get_proc_address, b"glIsBuffer\0", &self.glIsBuffer_p)
21983        }
21984        #[inline]
21985        #[doc(hidden)]
21986        pub fn IsBuffer_is_loaded(&self) -> bool {
21987            !self.glIsBuffer_p.load(RELAX).is_null()
21988        }
21989        /// [glIsEnabled](http://docs.gl/gl4/glIsEnabled)(cap)
21990        /// * `cap` group: EnableCap
21991        #[cfg_attr(feature = "inline", inline)]
21992        #[cfg_attr(feature = "inline_always", inline(always))]
21993        pub unsafe fn IsEnabled(&self, cap: GLenum) -> GLboolean {
21994            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
21995            {
21996                trace!("calling gl.IsEnabled({:#X});", cap);
21997            }
21998            let out = call_atomic_ptr_1arg("glIsEnabled", &self.glIsEnabled_p, cap);
21999            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22000            {
22001                self.automatic_glGetError("glIsEnabled");
22002            }
22003            out
22004        }
22005        #[doc(hidden)]
22006        pub unsafe fn IsEnabled_load_with_dyn(
22007            &self,
22008            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22009        ) -> bool {
22010            load_dyn_name_atomic_ptr(get_proc_address, b"glIsEnabled\0", &self.glIsEnabled_p)
22011        }
22012        #[inline]
22013        #[doc(hidden)]
22014        pub fn IsEnabled_is_loaded(&self) -> bool {
22015            !self.glIsEnabled_p.load(RELAX).is_null()
22016        }
22017        /// [glIsEnabledIndexedEXT](http://docs.gl/gl4/glIsEnabledIndexedEXT)(target, index)
22018        /// * `target` group: EnableCap
22019        /// * alias of: [`glIsEnabledi`]
22020        #[cfg_attr(feature = "inline", inline)]
22021        #[cfg_attr(feature = "inline_always", inline(always))]
22022        pub unsafe fn IsEnabledIndexedEXT(&self, target: GLenum, index: GLuint) -> GLboolean {
22023            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22024            {
22025                trace!(
22026                    "calling gl.IsEnabledIndexedEXT({:#X}, {:?});",
22027                    target,
22028                    index
22029                );
22030            }
22031            let out = call_atomic_ptr_2arg(
22032                "glIsEnabledIndexedEXT",
22033                &self.glIsEnabledIndexedEXT_p,
22034                target,
22035                index,
22036            );
22037            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22038            {
22039                self.automatic_glGetError("glIsEnabledIndexedEXT");
22040            }
22041            out
22042        }
22043        #[doc(hidden)]
22044        pub unsafe fn IsEnabledIndexedEXT_load_with_dyn(
22045            &self,
22046            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22047        ) -> bool {
22048            load_dyn_name_atomic_ptr(
22049                get_proc_address,
22050                b"glIsEnabledIndexedEXT\0",
22051                &self.glIsEnabledIndexedEXT_p,
22052            )
22053        }
22054        #[inline]
22055        #[doc(hidden)]
22056        pub fn IsEnabledIndexedEXT_is_loaded(&self) -> bool {
22057            !self.glIsEnabledIndexedEXT_p.load(RELAX).is_null()
22058        }
22059        /// [glIsEnabledi](http://docs.gl/gl4/glIsEnabled)(target, index)
22060        /// * `target` group: EnableCap
22061        #[cfg_attr(feature = "inline", inline)]
22062        #[cfg_attr(feature = "inline_always", inline(always))]
22063        pub unsafe fn IsEnabledi(&self, target: GLenum, index: GLuint) -> GLboolean {
22064            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22065            {
22066                trace!("calling gl.IsEnabledi({:#X}, {:?});", target, index);
22067            }
22068            let out = call_atomic_ptr_2arg("glIsEnabledi", &self.glIsEnabledi_p, target, index);
22069            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22070            {
22071                self.automatic_glGetError("glIsEnabledi");
22072            }
22073            out
22074        }
22075        #[doc(hidden)]
22076        pub unsafe fn IsEnabledi_load_with_dyn(
22077            &self,
22078            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22079        ) -> bool {
22080            load_dyn_name_atomic_ptr(get_proc_address, b"glIsEnabledi\0", &self.glIsEnabledi_p)
22081        }
22082        #[inline]
22083        #[doc(hidden)]
22084        pub fn IsEnabledi_is_loaded(&self) -> bool {
22085            !self.glIsEnabledi_p.load(RELAX).is_null()
22086        }
22087        /// [glIsFramebuffer](http://docs.gl/gl4/glIsFramebuffer)(framebuffer)
22088        #[cfg_attr(feature = "inline", inline)]
22089        #[cfg_attr(feature = "inline_always", inline(always))]
22090        pub unsafe fn IsFramebuffer(&self, framebuffer: GLuint) -> GLboolean {
22091            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22092            {
22093                trace!("calling gl.IsFramebuffer({:?});", framebuffer);
22094            }
22095            let out = call_atomic_ptr_1arg("glIsFramebuffer", &self.glIsFramebuffer_p, framebuffer);
22096            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22097            {
22098                self.automatic_glGetError("glIsFramebuffer");
22099            }
22100            out
22101        }
22102        #[doc(hidden)]
22103        pub unsafe fn IsFramebuffer_load_with_dyn(
22104            &self,
22105            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22106        ) -> bool {
22107            load_dyn_name_atomic_ptr(
22108                get_proc_address,
22109                b"glIsFramebuffer\0",
22110                &self.glIsFramebuffer_p,
22111            )
22112        }
22113        #[inline]
22114        #[doc(hidden)]
22115        pub fn IsFramebuffer_is_loaded(&self) -> bool {
22116            !self.glIsFramebuffer_p.load(RELAX).is_null()
22117        }
22118        /// [glIsProgram](http://docs.gl/gl4/glIsProgram)(program)
22119        #[cfg_attr(feature = "inline", inline)]
22120        #[cfg_attr(feature = "inline_always", inline(always))]
22121        pub unsafe fn IsProgram(&self, program: GLuint) -> GLboolean {
22122            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22123            {
22124                trace!("calling gl.IsProgram({:?});", program);
22125            }
22126            let out = call_atomic_ptr_1arg("glIsProgram", &self.glIsProgram_p, program);
22127            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22128            {
22129                self.automatic_glGetError("glIsProgram");
22130            }
22131            out
22132        }
22133        #[doc(hidden)]
22134        pub unsafe fn IsProgram_load_with_dyn(
22135            &self,
22136            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22137        ) -> bool {
22138            load_dyn_name_atomic_ptr(get_proc_address, b"glIsProgram\0", &self.glIsProgram_p)
22139        }
22140        #[inline]
22141        #[doc(hidden)]
22142        pub fn IsProgram_is_loaded(&self) -> bool {
22143            !self.glIsProgram_p.load(RELAX).is_null()
22144        }
22145        /// [glIsProgramPipeline](http://docs.gl/gl4/glIsProgramPipeline)(pipeline)
22146        #[cfg_attr(feature = "inline", inline)]
22147        #[cfg_attr(feature = "inline_always", inline(always))]
22148        pub unsafe fn IsProgramPipeline(&self, pipeline: GLuint) -> GLboolean {
22149            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22150            {
22151                trace!("calling gl.IsProgramPipeline({:?});", pipeline);
22152            }
22153            let out =
22154                call_atomic_ptr_1arg("glIsProgramPipeline", &self.glIsProgramPipeline_p, pipeline);
22155            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22156            {
22157                self.automatic_glGetError("glIsProgramPipeline");
22158            }
22159            out
22160        }
22161        #[doc(hidden)]
22162        pub unsafe fn IsProgramPipeline_load_with_dyn(
22163            &self,
22164            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22165        ) -> bool {
22166            load_dyn_name_atomic_ptr(
22167                get_proc_address,
22168                b"glIsProgramPipeline\0",
22169                &self.glIsProgramPipeline_p,
22170            )
22171        }
22172        #[inline]
22173        #[doc(hidden)]
22174        pub fn IsProgramPipeline_is_loaded(&self) -> bool {
22175            !self.glIsProgramPipeline_p.load(RELAX).is_null()
22176        }
22177        /// [glIsQuery](http://docs.gl/gl4/glIsQuery)(id)
22178        #[cfg_attr(feature = "inline", inline)]
22179        #[cfg_attr(feature = "inline_always", inline(always))]
22180        pub unsafe fn IsQuery(&self, id: GLuint) -> GLboolean {
22181            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22182            {
22183                trace!("calling gl.IsQuery({:?});", id);
22184            }
22185            let out = call_atomic_ptr_1arg("glIsQuery", &self.glIsQuery_p, id);
22186            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22187            {
22188                self.automatic_glGetError("glIsQuery");
22189            }
22190            out
22191        }
22192        #[doc(hidden)]
22193        pub unsafe fn IsQuery_load_with_dyn(
22194            &self,
22195            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22196        ) -> bool {
22197            load_dyn_name_atomic_ptr(get_proc_address, b"glIsQuery\0", &self.glIsQuery_p)
22198        }
22199        #[inline]
22200        #[doc(hidden)]
22201        pub fn IsQuery_is_loaded(&self) -> bool {
22202            !self.glIsQuery_p.load(RELAX).is_null()
22203        }
22204        /// [glIsQueryEXT](http://docs.gl/gl4/glIsQueryEXT)(id)
22205        #[cfg_attr(feature = "inline", inline)]
22206        #[cfg_attr(feature = "inline_always", inline(always))]
22207        pub unsafe fn IsQueryEXT(&self, id: GLuint) -> GLboolean {
22208            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22209            {
22210                trace!("calling gl.IsQueryEXT({:?});", id);
22211            }
22212            let out = call_atomic_ptr_1arg("glIsQueryEXT", &self.glIsQueryEXT_p, id);
22213            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22214            {
22215                self.automatic_glGetError("glIsQueryEXT");
22216            }
22217            out
22218        }
22219        #[doc(hidden)]
22220        pub unsafe fn IsQueryEXT_load_with_dyn(
22221            &self,
22222            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22223        ) -> bool {
22224            load_dyn_name_atomic_ptr(get_proc_address, b"glIsQueryEXT\0", &self.glIsQueryEXT_p)
22225        }
22226        #[inline]
22227        #[doc(hidden)]
22228        pub fn IsQueryEXT_is_loaded(&self) -> bool {
22229            !self.glIsQueryEXT_p.load(RELAX).is_null()
22230        }
22231        /// [glIsRenderbuffer](http://docs.gl/gl4/glIsRenderbuffer)(renderbuffer)
22232        #[cfg_attr(feature = "inline", inline)]
22233        #[cfg_attr(feature = "inline_always", inline(always))]
22234        pub unsafe fn IsRenderbuffer(&self, renderbuffer: GLuint) -> GLboolean {
22235            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22236            {
22237                trace!("calling gl.IsRenderbuffer({:?});", renderbuffer);
22238            }
22239            let out =
22240                call_atomic_ptr_1arg("glIsRenderbuffer", &self.glIsRenderbuffer_p, renderbuffer);
22241            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22242            {
22243                self.automatic_glGetError("glIsRenderbuffer");
22244            }
22245            out
22246        }
22247        #[doc(hidden)]
22248        pub unsafe fn IsRenderbuffer_load_with_dyn(
22249            &self,
22250            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22251        ) -> bool {
22252            load_dyn_name_atomic_ptr(
22253                get_proc_address,
22254                b"glIsRenderbuffer\0",
22255                &self.glIsRenderbuffer_p,
22256            )
22257        }
22258        #[inline]
22259        #[doc(hidden)]
22260        pub fn IsRenderbuffer_is_loaded(&self) -> bool {
22261            !self.glIsRenderbuffer_p.load(RELAX).is_null()
22262        }
22263        /// [glIsSampler](http://docs.gl/gl4/glIsSampler)(sampler)
22264        #[cfg_attr(feature = "inline", inline)]
22265        #[cfg_attr(feature = "inline_always", inline(always))]
22266        pub unsafe fn IsSampler(&self, sampler: GLuint) -> GLboolean {
22267            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22268            {
22269                trace!("calling gl.IsSampler({:?});", sampler);
22270            }
22271            let out = call_atomic_ptr_1arg("glIsSampler", &self.glIsSampler_p, sampler);
22272            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22273            {
22274                self.automatic_glGetError("glIsSampler");
22275            }
22276            out
22277        }
22278        #[doc(hidden)]
22279        pub unsafe fn IsSampler_load_with_dyn(
22280            &self,
22281            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22282        ) -> bool {
22283            load_dyn_name_atomic_ptr(get_proc_address, b"glIsSampler\0", &self.glIsSampler_p)
22284        }
22285        #[inline]
22286        #[doc(hidden)]
22287        pub fn IsSampler_is_loaded(&self) -> bool {
22288            !self.glIsSampler_p.load(RELAX).is_null()
22289        }
22290        /// [glIsShader](http://docs.gl/gl4/glIsShader)(shader)
22291        #[cfg_attr(feature = "inline", inline)]
22292        #[cfg_attr(feature = "inline_always", inline(always))]
22293        pub unsafe fn IsShader(&self, shader: GLuint) -> GLboolean {
22294            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22295            {
22296                trace!("calling gl.IsShader({:?});", shader);
22297            }
22298            let out = call_atomic_ptr_1arg("glIsShader", &self.glIsShader_p, shader);
22299            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22300            {
22301                self.automatic_glGetError("glIsShader");
22302            }
22303            out
22304        }
22305        #[doc(hidden)]
22306        pub unsafe fn IsShader_load_with_dyn(
22307            &self,
22308            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22309        ) -> bool {
22310            load_dyn_name_atomic_ptr(get_proc_address, b"glIsShader\0", &self.glIsShader_p)
22311        }
22312        #[inline]
22313        #[doc(hidden)]
22314        pub fn IsShader_is_loaded(&self) -> bool {
22315            !self.glIsShader_p.load(RELAX).is_null()
22316        }
22317        /// [glIsSync](http://docs.gl/gl4/glIsSync)(sync)
22318        /// * `sync` group: sync
22319        #[cfg_attr(feature = "inline", inline)]
22320        #[cfg_attr(feature = "inline_always", inline(always))]
22321        pub unsafe fn IsSync(&self, sync: GLsync) -> GLboolean {
22322            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22323            {
22324                trace!("calling gl.IsSync({:p});", sync);
22325            }
22326            let out = call_atomic_ptr_1arg("glIsSync", &self.glIsSync_p, sync);
22327            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22328            {
22329                self.automatic_glGetError("glIsSync");
22330            }
22331            out
22332        }
22333        #[doc(hidden)]
22334        pub unsafe fn IsSync_load_with_dyn(
22335            &self,
22336            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22337        ) -> bool {
22338            load_dyn_name_atomic_ptr(get_proc_address, b"glIsSync\0", &self.glIsSync_p)
22339        }
22340        #[inline]
22341        #[doc(hidden)]
22342        pub fn IsSync_is_loaded(&self) -> bool {
22343            !self.glIsSync_p.load(RELAX).is_null()
22344        }
22345        /// [glIsTexture](http://docs.gl/gl4/glIsTexture)(texture)
22346        /// * `texture` group: Texture
22347        #[cfg_attr(feature = "inline", inline)]
22348        #[cfg_attr(feature = "inline_always", inline(always))]
22349        pub unsafe fn IsTexture(&self, texture: GLuint) -> GLboolean {
22350            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22351            {
22352                trace!("calling gl.IsTexture({:?});", texture);
22353            }
22354            let out = call_atomic_ptr_1arg("glIsTexture", &self.glIsTexture_p, texture);
22355            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22356            {
22357                self.automatic_glGetError("glIsTexture");
22358            }
22359            out
22360        }
22361        #[doc(hidden)]
22362        pub unsafe fn IsTexture_load_with_dyn(
22363            &self,
22364            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22365        ) -> bool {
22366            load_dyn_name_atomic_ptr(get_proc_address, b"glIsTexture\0", &self.glIsTexture_p)
22367        }
22368        #[inline]
22369        #[doc(hidden)]
22370        pub fn IsTexture_is_loaded(&self) -> bool {
22371            !self.glIsTexture_p.load(RELAX).is_null()
22372        }
22373        /// [glIsTransformFeedback](http://docs.gl/gl4/glIsTransformFeedback)(id)
22374        #[cfg_attr(feature = "inline", inline)]
22375        #[cfg_attr(feature = "inline_always", inline(always))]
22376        pub unsafe fn IsTransformFeedback(&self, id: GLuint) -> GLboolean {
22377            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22378            {
22379                trace!("calling gl.IsTransformFeedback({:?});", id);
22380            }
22381            let out =
22382                call_atomic_ptr_1arg("glIsTransformFeedback", &self.glIsTransformFeedback_p, id);
22383            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22384            {
22385                self.automatic_glGetError("glIsTransformFeedback");
22386            }
22387            out
22388        }
22389        #[doc(hidden)]
22390        pub unsafe fn IsTransformFeedback_load_with_dyn(
22391            &self,
22392            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22393        ) -> bool {
22394            load_dyn_name_atomic_ptr(
22395                get_proc_address,
22396                b"glIsTransformFeedback\0",
22397                &self.glIsTransformFeedback_p,
22398            )
22399        }
22400        #[inline]
22401        #[doc(hidden)]
22402        pub fn IsTransformFeedback_is_loaded(&self) -> bool {
22403            !self.glIsTransformFeedback_p.load(RELAX).is_null()
22404        }
22405        /// [glIsVertexArray](http://docs.gl/gl4/glIsVertexArray)(array)
22406        #[cfg_attr(feature = "inline", inline)]
22407        #[cfg_attr(feature = "inline_always", inline(always))]
22408        pub unsafe fn IsVertexArray(&self, array: GLuint) -> GLboolean {
22409            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22410            {
22411                trace!("calling gl.IsVertexArray({:?});", array);
22412            }
22413            let out = call_atomic_ptr_1arg("glIsVertexArray", &self.glIsVertexArray_p, array);
22414            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22415            {
22416                self.automatic_glGetError("glIsVertexArray");
22417            }
22418            out
22419        }
22420        #[doc(hidden)]
22421        pub unsafe fn IsVertexArray_load_with_dyn(
22422            &self,
22423            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22424        ) -> bool {
22425            load_dyn_name_atomic_ptr(
22426                get_proc_address,
22427                b"glIsVertexArray\0",
22428                &self.glIsVertexArray_p,
22429            )
22430        }
22431        #[inline]
22432        #[doc(hidden)]
22433        pub fn IsVertexArray_is_loaded(&self) -> bool {
22434            !self.glIsVertexArray_p.load(RELAX).is_null()
22435        }
22436        /// [glIsVertexArrayAPPLE](http://docs.gl/gl4/glIsVertexArrayAPPLE)(array)
22437        /// * alias of: [`glIsVertexArray`]
22438        #[cfg_attr(feature = "inline", inline)]
22439        #[cfg_attr(feature = "inline_always", inline(always))]
22440        pub unsafe fn IsVertexArrayAPPLE(&self, array: GLuint) -> GLboolean {
22441            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22442            {
22443                trace!("calling gl.IsVertexArrayAPPLE({:?});", array);
22444            }
22445            let out =
22446                call_atomic_ptr_1arg("glIsVertexArrayAPPLE", &self.glIsVertexArrayAPPLE_p, array);
22447            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22448            {
22449                self.automatic_glGetError("glIsVertexArrayAPPLE");
22450            }
22451            out
22452        }
22453        #[doc(hidden)]
22454        pub unsafe fn IsVertexArrayAPPLE_load_with_dyn(
22455            &self,
22456            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22457        ) -> bool {
22458            load_dyn_name_atomic_ptr(
22459                get_proc_address,
22460                b"glIsVertexArrayAPPLE\0",
22461                &self.glIsVertexArrayAPPLE_p,
22462            )
22463        }
22464        #[inline]
22465        #[doc(hidden)]
22466        pub fn IsVertexArrayAPPLE_is_loaded(&self) -> bool {
22467            !self.glIsVertexArrayAPPLE_p.load(RELAX).is_null()
22468        }
22469        /// [glIsVertexArrayOES](http://docs.gl/gl4/glIsVertexArrayOES)(array)
22470        /// * alias of: [`glIsVertexArray`]
22471        #[cfg_attr(feature = "inline", inline)]
22472        #[cfg_attr(feature = "inline_always", inline(always))]
22473        pub unsafe fn IsVertexArrayOES(&self, array: GLuint) -> GLboolean {
22474            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22475            {
22476                trace!("calling gl.IsVertexArrayOES({:?});", array);
22477            }
22478            let out = call_atomic_ptr_1arg("glIsVertexArrayOES", &self.glIsVertexArrayOES_p, array);
22479            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22480            {
22481                self.automatic_glGetError("glIsVertexArrayOES");
22482            }
22483            out
22484        }
22485        #[doc(hidden)]
22486        pub unsafe fn IsVertexArrayOES_load_with_dyn(
22487            &self,
22488            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22489        ) -> bool {
22490            load_dyn_name_atomic_ptr(
22491                get_proc_address,
22492                b"glIsVertexArrayOES\0",
22493                &self.glIsVertexArrayOES_p,
22494            )
22495        }
22496        #[inline]
22497        #[doc(hidden)]
22498        pub fn IsVertexArrayOES_is_loaded(&self) -> bool {
22499            !self.glIsVertexArrayOES_p.load(RELAX).is_null()
22500        }
22501        /// [glLineWidth](http://docs.gl/gl4/glLineWidth)(width)
22502        /// * `width` group: CheckedFloat32
22503        #[cfg_attr(feature = "inline", inline)]
22504        #[cfg_attr(feature = "inline_always", inline(always))]
22505        pub unsafe fn LineWidth(&self, width: GLfloat) {
22506            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22507            {
22508                trace!("calling gl.LineWidth({:?});", width);
22509            }
22510            let out = call_atomic_ptr_1arg("glLineWidth", &self.glLineWidth_p, width);
22511            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22512            {
22513                self.automatic_glGetError("glLineWidth");
22514            }
22515            out
22516        }
22517        #[doc(hidden)]
22518        pub unsafe fn LineWidth_load_with_dyn(
22519            &self,
22520            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22521        ) -> bool {
22522            load_dyn_name_atomic_ptr(get_proc_address, b"glLineWidth\0", &self.glLineWidth_p)
22523        }
22524        #[inline]
22525        #[doc(hidden)]
22526        pub fn LineWidth_is_loaded(&self) -> bool {
22527            !self.glLineWidth_p.load(RELAX).is_null()
22528        }
22529        /// [glLinkProgram](http://docs.gl/gl4/glLinkProgram)(program)
22530        #[cfg_attr(feature = "inline", inline)]
22531        #[cfg_attr(feature = "inline_always", inline(always))]
22532        pub unsafe fn LinkProgram(&self, program: GLuint) {
22533            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22534            {
22535                trace!("calling gl.LinkProgram({:?});", program);
22536            }
22537            let out = call_atomic_ptr_1arg("glLinkProgram", &self.glLinkProgram_p, program);
22538            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22539            {
22540                self.automatic_glGetError("glLinkProgram");
22541            }
22542            out
22543        }
22544        #[doc(hidden)]
22545        pub unsafe fn LinkProgram_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(get_proc_address, b"glLinkProgram\0", &self.glLinkProgram_p)
22550        }
22551        #[inline]
22552        #[doc(hidden)]
22553        pub fn LinkProgram_is_loaded(&self) -> bool {
22554            !self.glLinkProgram_p.load(RELAX).is_null()
22555        }
22556        /// [glLogicOp](http://docs.gl/gl4/glLogicOp)(opcode)
22557        /// * `opcode` group: LogicOp
22558        #[cfg_attr(feature = "inline", inline)]
22559        #[cfg_attr(feature = "inline_always", inline(always))]
22560        pub unsafe fn LogicOp(&self, opcode: GLenum) {
22561            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22562            {
22563                trace!("calling gl.LogicOp({:#X});", opcode);
22564            }
22565            let out = call_atomic_ptr_1arg("glLogicOp", &self.glLogicOp_p, opcode);
22566            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22567            {
22568                self.automatic_glGetError("glLogicOp");
22569            }
22570            out
22571        }
22572        #[doc(hidden)]
22573        pub unsafe fn LogicOp_load_with_dyn(
22574            &self,
22575            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22576        ) -> bool {
22577            load_dyn_name_atomic_ptr(get_proc_address, b"glLogicOp\0", &self.glLogicOp_p)
22578        }
22579        #[inline]
22580        #[doc(hidden)]
22581        pub fn LogicOp_is_loaded(&self) -> bool {
22582            !self.glLogicOp_p.load(RELAX).is_null()
22583        }
22584        /// [glMapBuffer](http://docs.gl/gl4/glMapBuffer)(target, access)
22585        /// * `target` group: BufferTargetARB
22586        /// * `access` group: BufferAccessARB
22587        #[cfg_attr(feature = "inline", inline)]
22588        #[cfg_attr(feature = "inline_always", inline(always))]
22589        pub unsafe fn MapBuffer(&self, target: GLenum, access: GLenum) -> *mut c_void {
22590            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22591            {
22592                trace!("calling gl.MapBuffer({:#X}, {:#X});", target, access);
22593            }
22594            let out = call_atomic_ptr_2arg("glMapBuffer", &self.glMapBuffer_p, target, access);
22595            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22596            {
22597                self.automatic_glGetError("glMapBuffer");
22598            }
22599            out
22600        }
22601        #[doc(hidden)]
22602        pub unsafe fn MapBuffer_load_with_dyn(
22603            &self,
22604            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22605        ) -> bool {
22606            load_dyn_name_atomic_ptr(get_proc_address, b"glMapBuffer\0", &self.glMapBuffer_p)
22607        }
22608        #[inline]
22609        #[doc(hidden)]
22610        pub fn MapBuffer_is_loaded(&self) -> bool {
22611            !self.glMapBuffer_p.load(RELAX).is_null()
22612        }
22613        /// [glMapBufferRange](http://docs.gl/gl4/glMapBufferRange)(target, offset, length, access)
22614        /// * `target` group: BufferTargetARB
22615        /// * `offset` group: BufferOffset
22616        /// * `length` group: BufferSize
22617        /// * `access` group: MapBufferAccessMask
22618        #[cfg_attr(feature = "inline", inline)]
22619        #[cfg_attr(feature = "inline_always", inline(always))]
22620        pub unsafe fn MapBufferRange(
22621            &self,
22622            target: GLenum,
22623            offset: GLintptr,
22624            length: GLsizeiptr,
22625            access: GLbitfield,
22626        ) -> *mut c_void {
22627            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22628            {
22629                trace!(
22630                    "calling gl.MapBufferRange({:#X}, {:?}, {:?}, {:?});",
22631                    target,
22632                    offset,
22633                    length,
22634                    access
22635                );
22636            }
22637            let out = call_atomic_ptr_4arg(
22638                "glMapBufferRange",
22639                &self.glMapBufferRange_p,
22640                target,
22641                offset,
22642                length,
22643                access,
22644            );
22645            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22646            {
22647                self.automatic_glGetError("glMapBufferRange");
22648            }
22649            out
22650        }
22651        #[doc(hidden)]
22652        pub unsafe fn MapBufferRange_load_with_dyn(
22653            &self,
22654            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22655        ) -> bool {
22656            load_dyn_name_atomic_ptr(
22657                get_proc_address,
22658                b"glMapBufferRange\0",
22659                &self.glMapBufferRange_p,
22660            )
22661        }
22662        #[inline]
22663        #[doc(hidden)]
22664        pub fn MapBufferRange_is_loaded(&self) -> bool {
22665            !self.glMapBufferRange_p.load(RELAX).is_null()
22666        }
22667        /// [glMapNamedBuffer](http://docs.gl/gl4/glMapNamedBuffer)(buffer, access)
22668        /// * `access` group: BufferAccessARB
22669        #[cfg_attr(feature = "inline", inline)]
22670        #[cfg_attr(feature = "inline_always", inline(always))]
22671        pub unsafe fn MapNamedBuffer(&self, buffer: GLuint, access: GLenum) -> *mut c_void {
22672            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22673            {
22674                trace!("calling gl.MapNamedBuffer({:?}, {:#X});", buffer, access);
22675            }
22676            let out =
22677                call_atomic_ptr_2arg("glMapNamedBuffer", &self.glMapNamedBuffer_p, buffer, access);
22678            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22679            {
22680                self.automatic_glGetError("glMapNamedBuffer");
22681            }
22682            out
22683        }
22684        #[doc(hidden)]
22685        pub unsafe fn MapNamedBuffer_load_with_dyn(
22686            &self,
22687            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22688        ) -> bool {
22689            load_dyn_name_atomic_ptr(
22690                get_proc_address,
22691                b"glMapNamedBuffer\0",
22692                &self.glMapNamedBuffer_p,
22693            )
22694        }
22695        #[inline]
22696        #[doc(hidden)]
22697        pub fn MapNamedBuffer_is_loaded(&self) -> bool {
22698            !self.glMapNamedBuffer_p.load(RELAX).is_null()
22699        }
22700        /// [glMapNamedBufferRange](http://docs.gl/gl4/glMapNamedBufferRange)(buffer, offset, length, access)
22701        /// * `length` group: BufferSize
22702        /// * `access` group: MapBufferAccessMask
22703        #[cfg_attr(feature = "inline", inline)]
22704        #[cfg_attr(feature = "inline_always", inline(always))]
22705        pub unsafe fn MapNamedBufferRange(
22706            &self,
22707            buffer: GLuint,
22708            offset: GLintptr,
22709            length: GLsizeiptr,
22710            access: GLbitfield,
22711        ) -> *mut c_void {
22712            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22713            {
22714                trace!(
22715                    "calling gl.MapNamedBufferRange({:?}, {:?}, {:?}, {:?});",
22716                    buffer,
22717                    offset,
22718                    length,
22719                    access
22720                );
22721            }
22722            let out = call_atomic_ptr_4arg(
22723                "glMapNamedBufferRange",
22724                &self.glMapNamedBufferRange_p,
22725                buffer,
22726                offset,
22727                length,
22728                access,
22729            );
22730            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22731            {
22732                self.automatic_glGetError("glMapNamedBufferRange");
22733            }
22734            out
22735        }
22736        #[doc(hidden)]
22737        pub unsafe fn MapNamedBufferRange_load_with_dyn(
22738            &self,
22739            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22740        ) -> bool {
22741            load_dyn_name_atomic_ptr(
22742                get_proc_address,
22743                b"glMapNamedBufferRange\0",
22744                &self.glMapNamedBufferRange_p,
22745            )
22746        }
22747        #[inline]
22748        #[doc(hidden)]
22749        pub fn MapNamedBufferRange_is_loaded(&self) -> bool {
22750            !self.glMapNamedBufferRange_p.load(RELAX).is_null()
22751        }
22752        /// [glMaxShaderCompilerThreadsARB](http://docs.gl/gl4/glMaxShaderCompilerThreadsARB)(count)
22753        /// * alias of: [`glMaxShaderCompilerThreadsKHR`]
22754        #[cfg_attr(feature = "inline", inline)]
22755        #[cfg_attr(feature = "inline_always", inline(always))]
22756        pub unsafe fn MaxShaderCompilerThreadsARB(&self, count: GLuint) {
22757            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22758            {
22759                trace!("calling gl.MaxShaderCompilerThreadsARB({:?});", count);
22760            }
22761            let out = call_atomic_ptr_1arg(
22762                "glMaxShaderCompilerThreadsARB",
22763                &self.glMaxShaderCompilerThreadsARB_p,
22764                count,
22765            );
22766            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22767            {
22768                self.automatic_glGetError("glMaxShaderCompilerThreadsARB");
22769            }
22770            out
22771        }
22772        #[doc(hidden)]
22773        pub unsafe fn MaxShaderCompilerThreadsARB_load_with_dyn(
22774            &self,
22775            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22776        ) -> bool {
22777            load_dyn_name_atomic_ptr(
22778                get_proc_address,
22779                b"glMaxShaderCompilerThreadsARB\0",
22780                &self.glMaxShaderCompilerThreadsARB_p,
22781            )
22782        }
22783        #[inline]
22784        #[doc(hidden)]
22785        pub fn MaxShaderCompilerThreadsARB_is_loaded(&self) -> bool {
22786            !self.glMaxShaderCompilerThreadsARB_p.load(RELAX).is_null()
22787        }
22788        /// [glMaxShaderCompilerThreadsKHR](http://docs.gl/gl4/glMaxShaderCompilerThreadsKHR)(count)
22789        #[cfg_attr(feature = "inline", inline)]
22790        #[cfg_attr(feature = "inline_always", inline(always))]
22791        pub unsafe fn MaxShaderCompilerThreadsKHR(&self, count: GLuint) {
22792            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22793            {
22794                trace!("calling gl.MaxShaderCompilerThreadsKHR({:?});", count);
22795            }
22796            let out = call_atomic_ptr_1arg(
22797                "glMaxShaderCompilerThreadsKHR",
22798                &self.glMaxShaderCompilerThreadsKHR_p,
22799                count,
22800            );
22801            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22802            {
22803                self.automatic_glGetError("glMaxShaderCompilerThreadsKHR");
22804            }
22805            out
22806        }
22807        #[doc(hidden)]
22808        pub unsafe fn MaxShaderCompilerThreadsKHR_load_with_dyn(
22809            &self,
22810            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22811        ) -> bool {
22812            load_dyn_name_atomic_ptr(
22813                get_proc_address,
22814                b"glMaxShaderCompilerThreadsKHR\0",
22815                &self.glMaxShaderCompilerThreadsKHR_p,
22816            )
22817        }
22818        #[inline]
22819        #[doc(hidden)]
22820        pub fn MaxShaderCompilerThreadsKHR_is_loaded(&self) -> bool {
22821            !self.glMaxShaderCompilerThreadsKHR_p.load(RELAX).is_null()
22822        }
22823        /// [glMemoryBarrier](http://docs.gl/gl4/glMemoryBarrier)(barriers)
22824        /// * `barriers` group: MemoryBarrierMask
22825        #[cfg_attr(feature = "inline", inline)]
22826        #[cfg_attr(feature = "inline_always", inline(always))]
22827        pub unsafe fn MemoryBarrier(&self, barriers: GLbitfield) {
22828            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22829            {
22830                trace!("calling gl.MemoryBarrier({:?});", barriers);
22831            }
22832            let out = call_atomic_ptr_1arg("glMemoryBarrier", &self.glMemoryBarrier_p, barriers);
22833            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22834            {
22835                self.automatic_glGetError("glMemoryBarrier");
22836            }
22837            out
22838        }
22839        #[doc(hidden)]
22840        pub unsafe fn MemoryBarrier_load_with_dyn(
22841            &self,
22842            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22843        ) -> bool {
22844            load_dyn_name_atomic_ptr(
22845                get_proc_address,
22846                b"glMemoryBarrier\0",
22847                &self.glMemoryBarrier_p,
22848            )
22849        }
22850        #[inline]
22851        #[doc(hidden)]
22852        pub fn MemoryBarrier_is_loaded(&self) -> bool {
22853            !self.glMemoryBarrier_p.load(RELAX).is_null()
22854        }
22855        /// [glMemoryBarrierByRegion](http://docs.gl/gl4/glMemoryBarrierByRegion)(barriers)
22856        /// * `barriers` group: MemoryBarrierMask
22857        #[cfg_attr(feature = "inline", inline)]
22858        #[cfg_attr(feature = "inline_always", inline(always))]
22859        pub unsafe fn MemoryBarrierByRegion(&self, barriers: GLbitfield) {
22860            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22861            {
22862                trace!("calling gl.MemoryBarrierByRegion({:?});", barriers);
22863            }
22864            let out = call_atomic_ptr_1arg(
22865                "glMemoryBarrierByRegion",
22866                &self.glMemoryBarrierByRegion_p,
22867                barriers,
22868            );
22869            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22870            {
22871                self.automatic_glGetError("glMemoryBarrierByRegion");
22872            }
22873            out
22874        }
22875        #[doc(hidden)]
22876        pub unsafe fn MemoryBarrierByRegion_load_with_dyn(
22877            &self,
22878            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22879        ) -> bool {
22880            load_dyn_name_atomic_ptr(
22881                get_proc_address,
22882                b"glMemoryBarrierByRegion\0",
22883                &self.glMemoryBarrierByRegion_p,
22884            )
22885        }
22886        #[inline]
22887        #[doc(hidden)]
22888        pub fn MemoryBarrierByRegion_is_loaded(&self) -> bool {
22889            !self.glMemoryBarrierByRegion_p.load(RELAX).is_null()
22890        }
22891        /// [glMinSampleShading](http://docs.gl/gl4/glMinSampleShading)(value)
22892        /// * `value` group: ColorF
22893        #[cfg_attr(feature = "inline", inline)]
22894        #[cfg_attr(feature = "inline_always", inline(always))]
22895        pub unsafe fn MinSampleShading(&self, value: GLfloat) {
22896            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22897            {
22898                trace!("calling gl.MinSampleShading({:?});", value);
22899            }
22900            let out = call_atomic_ptr_1arg("glMinSampleShading", &self.glMinSampleShading_p, value);
22901            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22902            {
22903                self.automatic_glGetError("glMinSampleShading");
22904            }
22905            out
22906        }
22907        #[doc(hidden)]
22908        pub unsafe fn MinSampleShading_load_with_dyn(
22909            &self,
22910            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22911        ) -> bool {
22912            load_dyn_name_atomic_ptr(
22913                get_proc_address,
22914                b"glMinSampleShading\0",
22915                &self.glMinSampleShading_p,
22916            )
22917        }
22918        #[inline]
22919        #[doc(hidden)]
22920        pub fn MinSampleShading_is_loaded(&self) -> bool {
22921            !self.glMinSampleShading_p.load(RELAX).is_null()
22922        }
22923        /// [glMultiDrawArrays](http://docs.gl/gl4/glMultiDrawArrays)(mode, first, count, drawcount)
22924        /// * `mode` group: PrimitiveType
22925        /// * `first` len: COMPSIZE(drawcount)
22926        /// * `count` len: COMPSIZE(drawcount)
22927        #[cfg_attr(feature = "inline", inline)]
22928        #[cfg_attr(feature = "inline_always", inline(always))]
22929        pub unsafe fn MultiDrawArrays(
22930            &self,
22931            mode: GLenum,
22932            first: *const GLint,
22933            count: *const GLsizei,
22934            drawcount: GLsizei,
22935        ) {
22936            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22937            {
22938                trace!(
22939                    "calling gl.MultiDrawArrays({:#X}, {:p}, {:p}, {:?});",
22940                    mode,
22941                    first,
22942                    count,
22943                    drawcount
22944                );
22945            }
22946            let out = call_atomic_ptr_4arg(
22947                "glMultiDrawArrays",
22948                &self.glMultiDrawArrays_p,
22949                mode,
22950                first,
22951                count,
22952                drawcount,
22953            );
22954            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
22955            {
22956                self.automatic_glGetError("glMultiDrawArrays");
22957            }
22958            out
22959        }
22960        #[doc(hidden)]
22961        pub unsafe fn MultiDrawArrays_load_with_dyn(
22962            &self,
22963            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
22964        ) -> bool {
22965            load_dyn_name_atomic_ptr(
22966                get_proc_address,
22967                b"glMultiDrawArrays\0",
22968                &self.glMultiDrawArrays_p,
22969            )
22970        }
22971        #[inline]
22972        #[doc(hidden)]
22973        pub fn MultiDrawArrays_is_loaded(&self) -> bool {
22974            !self.glMultiDrawArrays_p.load(RELAX).is_null()
22975        }
22976        /// [glMultiDrawArraysIndirect](http://docs.gl/gl4/glMultiDrawArraysIndirect)(mode, indirect, drawcount, stride)
22977        /// * `mode` group: PrimitiveType
22978        /// * `indirect` len: COMPSIZE(drawcount,stride)
22979        #[cfg_attr(feature = "inline", inline)]
22980        #[cfg_attr(feature = "inline_always", inline(always))]
22981        pub unsafe fn MultiDrawArraysIndirect(
22982            &self,
22983            mode: GLenum,
22984            indirect: *const c_void,
22985            drawcount: GLsizei,
22986            stride: GLsizei,
22987        ) {
22988            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
22989            {
22990                trace!(
22991                    "calling gl.MultiDrawArraysIndirect({:#X}, {:p}, {:?}, {:?});",
22992                    mode,
22993                    indirect,
22994                    drawcount,
22995                    stride
22996                );
22997            }
22998            let out = call_atomic_ptr_4arg(
22999                "glMultiDrawArraysIndirect",
23000                &self.glMultiDrawArraysIndirect_p,
23001                mode,
23002                indirect,
23003                drawcount,
23004                stride,
23005            );
23006            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23007            {
23008                self.automatic_glGetError("glMultiDrawArraysIndirect");
23009            }
23010            out
23011        }
23012        #[doc(hidden)]
23013        pub unsafe fn MultiDrawArraysIndirect_load_with_dyn(
23014            &self,
23015            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23016        ) -> bool {
23017            load_dyn_name_atomic_ptr(
23018                get_proc_address,
23019                b"glMultiDrawArraysIndirect\0",
23020                &self.glMultiDrawArraysIndirect_p,
23021            )
23022        }
23023        #[inline]
23024        #[doc(hidden)]
23025        pub fn MultiDrawArraysIndirect_is_loaded(&self) -> bool {
23026            !self.glMultiDrawArraysIndirect_p.load(RELAX).is_null()
23027        }
23028        /// [glMultiDrawArraysIndirectCount](http://docs.gl/gl4/glMultiDrawArraysIndirectCount)(mode, indirect, drawcount, maxdrawcount, stride)
23029        /// * `mode` group: PrimitiveType
23030        #[cfg_attr(feature = "inline", inline)]
23031        #[cfg_attr(feature = "inline_always", inline(always))]
23032        pub unsafe fn MultiDrawArraysIndirectCount(
23033            &self,
23034            mode: GLenum,
23035            indirect: *const c_void,
23036            drawcount: GLintptr,
23037            maxdrawcount: GLsizei,
23038            stride: GLsizei,
23039        ) {
23040            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23041            {
23042                trace!(
23043                    "calling gl.MultiDrawArraysIndirectCount({:#X}, {:p}, {:?}, {:?}, {:?});",
23044                    mode,
23045                    indirect,
23046                    drawcount,
23047                    maxdrawcount,
23048                    stride
23049                );
23050            }
23051            let out = call_atomic_ptr_5arg(
23052                "glMultiDrawArraysIndirectCount",
23053                &self.glMultiDrawArraysIndirectCount_p,
23054                mode,
23055                indirect,
23056                drawcount,
23057                maxdrawcount,
23058                stride,
23059            );
23060            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23061            {
23062                self.automatic_glGetError("glMultiDrawArraysIndirectCount");
23063            }
23064            out
23065        }
23066        #[doc(hidden)]
23067        pub unsafe fn MultiDrawArraysIndirectCount_load_with_dyn(
23068            &self,
23069            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23070        ) -> bool {
23071            load_dyn_name_atomic_ptr(
23072                get_proc_address,
23073                b"glMultiDrawArraysIndirectCount\0",
23074                &self.glMultiDrawArraysIndirectCount_p,
23075            )
23076        }
23077        #[inline]
23078        #[doc(hidden)]
23079        pub fn MultiDrawArraysIndirectCount_is_loaded(&self) -> bool {
23080            !self.glMultiDrawArraysIndirectCount_p.load(RELAX).is_null()
23081        }
23082        /// [glMultiDrawElements](http://docs.gl/gl4/glMultiDrawElements)(mode, count, type_, indices, drawcount)
23083        /// * `mode` group: PrimitiveType
23084        /// * `count` len: COMPSIZE(drawcount)
23085        /// * `type_` group: DrawElementsType
23086        /// * `indices` len: COMPSIZE(drawcount)
23087        #[cfg_attr(feature = "inline", inline)]
23088        #[cfg_attr(feature = "inline_always", inline(always))]
23089        pub unsafe fn MultiDrawElements(
23090            &self,
23091            mode: GLenum,
23092            count: *const GLsizei,
23093            type_: GLenum,
23094            indices: *const *const c_void,
23095            drawcount: GLsizei,
23096        ) {
23097            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23098            {
23099                trace!(
23100                    "calling gl.MultiDrawElements({:#X}, {:p}, {:#X}, {:p}, {:?});",
23101                    mode,
23102                    count,
23103                    type_,
23104                    indices,
23105                    drawcount
23106                );
23107            }
23108            let out = call_atomic_ptr_5arg(
23109                "glMultiDrawElements",
23110                &self.glMultiDrawElements_p,
23111                mode,
23112                count,
23113                type_,
23114                indices,
23115                drawcount,
23116            );
23117            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23118            {
23119                self.automatic_glGetError("glMultiDrawElements");
23120            }
23121            out
23122        }
23123        #[doc(hidden)]
23124        pub unsafe fn MultiDrawElements_load_with_dyn(
23125            &self,
23126            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23127        ) -> bool {
23128            load_dyn_name_atomic_ptr(
23129                get_proc_address,
23130                b"glMultiDrawElements\0",
23131                &self.glMultiDrawElements_p,
23132            )
23133        }
23134        #[inline]
23135        #[doc(hidden)]
23136        pub fn MultiDrawElements_is_loaded(&self) -> bool {
23137            !self.glMultiDrawElements_p.load(RELAX).is_null()
23138        }
23139        /// [glMultiDrawElementsBaseVertex](http://docs.gl/gl4/glMultiDrawElementsBaseVertex)(mode, count, type_, indices, drawcount, basevertex)
23140        /// * `mode` group: PrimitiveType
23141        /// * `count` len: COMPSIZE(drawcount)
23142        /// * `type_` group: DrawElementsType
23143        /// * `indices` len: COMPSIZE(drawcount)
23144        /// * `basevertex` len: COMPSIZE(drawcount)
23145        #[cfg_attr(feature = "inline", inline)]
23146        #[cfg_attr(feature = "inline_always", inline(always))]
23147        pub unsafe fn MultiDrawElementsBaseVertex(
23148            &self,
23149            mode: GLenum,
23150            count: *const GLsizei,
23151            type_: GLenum,
23152            indices: *const *const c_void,
23153            drawcount: GLsizei,
23154            basevertex: *const GLint,
23155        ) {
23156            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23157            {
23158                trace!(
23159                    "calling gl.MultiDrawElementsBaseVertex({:#X}, {:p}, {:#X}, {:p}, {:?}, {:p});",
23160                    mode,
23161                    count,
23162                    type_,
23163                    indices,
23164                    drawcount,
23165                    basevertex
23166                );
23167            }
23168            let out = call_atomic_ptr_6arg(
23169                "glMultiDrawElementsBaseVertex",
23170                &self.glMultiDrawElementsBaseVertex_p,
23171                mode,
23172                count,
23173                type_,
23174                indices,
23175                drawcount,
23176                basevertex,
23177            );
23178            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23179            {
23180                self.automatic_glGetError("glMultiDrawElementsBaseVertex");
23181            }
23182            out
23183        }
23184        #[doc(hidden)]
23185        pub unsafe fn MultiDrawElementsBaseVertex_load_with_dyn(
23186            &self,
23187            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23188        ) -> bool {
23189            load_dyn_name_atomic_ptr(
23190                get_proc_address,
23191                b"glMultiDrawElementsBaseVertex\0",
23192                &self.glMultiDrawElementsBaseVertex_p,
23193            )
23194        }
23195        #[inline]
23196        #[doc(hidden)]
23197        pub fn MultiDrawElementsBaseVertex_is_loaded(&self) -> bool {
23198            !self.glMultiDrawElementsBaseVertex_p.load(RELAX).is_null()
23199        }
23200        /// [glMultiDrawElementsIndirect](http://docs.gl/gl4/glMultiDrawElementsIndirect)(mode, type_, indirect, drawcount, stride)
23201        /// * `mode` group: PrimitiveType
23202        /// * `type_` group: DrawElementsType
23203        /// * `indirect` len: COMPSIZE(drawcount,stride)
23204        #[cfg_attr(feature = "inline", inline)]
23205        #[cfg_attr(feature = "inline_always", inline(always))]
23206        pub unsafe fn MultiDrawElementsIndirect(
23207            &self,
23208            mode: GLenum,
23209            type_: GLenum,
23210            indirect: *const c_void,
23211            drawcount: GLsizei,
23212            stride: GLsizei,
23213        ) {
23214            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23215            {
23216                trace!(
23217                    "calling gl.MultiDrawElementsIndirect({:#X}, {:#X}, {:p}, {:?}, {:?});",
23218                    mode,
23219                    type_,
23220                    indirect,
23221                    drawcount,
23222                    stride
23223                );
23224            }
23225            let out = call_atomic_ptr_5arg(
23226                "glMultiDrawElementsIndirect",
23227                &self.glMultiDrawElementsIndirect_p,
23228                mode,
23229                type_,
23230                indirect,
23231                drawcount,
23232                stride,
23233            );
23234            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23235            {
23236                self.automatic_glGetError("glMultiDrawElementsIndirect");
23237            }
23238            out
23239        }
23240        #[doc(hidden)]
23241        pub unsafe fn MultiDrawElementsIndirect_load_with_dyn(
23242            &self,
23243            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23244        ) -> bool {
23245            load_dyn_name_atomic_ptr(
23246                get_proc_address,
23247                b"glMultiDrawElementsIndirect\0",
23248                &self.glMultiDrawElementsIndirect_p,
23249            )
23250        }
23251        #[inline]
23252        #[doc(hidden)]
23253        pub fn MultiDrawElementsIndirect_is_loaded(&self) -> bool {
23254            !self.glMultiDrawElementsIndirect_p.load(RELAX).is_null()
23255        }
23256        /// [glMultiDrawElementsIndirectCount](http://docs.gl/gl4/glMultiDrawElementsIndirectCount)(mode, type_, indirect, drawcount, maxdrawcount, stride)
23257        /// * `mode` group: PrimitiveType
23258        /// * `type_` group: DrawElementsType
23259        #[cfg_attr(feature = "inline", inline)]
23260        #[cfg_attr(feature = "inline_always", inline(always))]
23261        pub unsafe fn MultiDrawElementsIndirectCount(
23262            &self,
23263            mode: GLenum,
23264            type_: GLenum,
23265            indirect: *const c_void,
23266            drawcount: GLintptr,
23267            maxdrawcount: GLsizei,
23268            stride: GLsizei,
23269        ) {
23270            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23271            {
23272                trace!("calling gl.MultiDrawElementsIndirectCount({:#X}, {:#X}, {:p}, {:?}, {:?}, {:?});", mode, type_, indirect, drawcount, maxdrawcount, stride);
23273            }
23274            let out = call_atomic_ptr_6arg(
23275                "glMultiDrawElementsIndirectCount",
23276                &self.glMultiDrawElementsIndirectCount_p,
23277                mode,
23278                type_,
23279                indirect,
23280                drawcount,
23281                maxdrawcount,
23282                stride,
23283            );
23284            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23285            {
23286                self.automatic_glGetError("glMultiDrawElementsIndirectCount");
23287            }
23288            out
23289        }
23290        #[doc(hidden)]
23291        pub unsafe fn MultiDrawElementsIndirectCount_load_with_dyn(
23292            &self,
23293            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23294        ) -> bool {
23295            load_dyn_name_atomic_ptr(
23296                get_proc_address,
23297                b"glMultiDrawElementsIndirectCount\0",
23298                &self.glMultiDrawElementsIndirectCount_p,
23299            )
23300        }
23301        #[inline]
23302        #[doc(hidden)]
23303        pub fn MultiDrawElementsIndirectCount_is_loaded(&self) -> bool {
23304            !self
23305                .glMultiDrawElementsIndirectCount_p
23306                .load(RELAX)
23307                .is_null()
23308        }
23309        /// [glNamedBufferData](http://docs.gl/gl4/glNamedBufferData)(buffer, size, data, usage)
23310        /// * `size` group: BufferSize
23311        /// * `usage` group: VertexBufferObjectUsage
23312        #[cfg_attr(feature = "inline", inline)]
23313        #[cfg_attr(feature = "inline_always", inline(always))]
23314        pub unsafe fn NamedBufferData(
23315            &self,
23316            buffer: GLuint,
23317            size: GLsizeiptr,
23318            data: *const c_void,
23319            usage: GLenum,
23320        ) {
23321            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23322            {
23323                trace!(
23324                    "calling gl.NamedBufferData({:?}, {:?}, {:p}, {:#X});",
23325                    buffer,
23326                    size,
23327                    data,
23328                    usage
23329                );
23330            }
23331            let out = call_atomic_ptr_4arg(
23332                "glNamedBufferData",
23333                &self.glNamedBufferData_p,
23334                buffer,
23335                size,
23336                data,
23337                usage,
23338            );
23339            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23340            {
23341                self.automatic_glGetError("glNamedBufferData");
23342            }
23343            out
23344        }
23345        #[doc(hidden)]
23346        pub unsafe fn NamedBufferData_load_with_dyn(
23347            &self,
23348            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23349        ) -> bool {
23350            load_dyn_name_atomic_ptr(
23351                get_proc_address,
23352                b"glNamedBufferData\0",
23353                &self.glNamedBufferData_p,
23354            )
23355        }
23356        #[inline]
23357        #[doc(hidden)]
23358        pub fn NamedBufferData_is_loaded(&self) -> bool {
23359            !self.glNamedBufferData_p.load(RELAX).is_null()
23360        }
23361        /// [glNamedBufferStorage](http://docs.gl/gl4/glNamedBufferStorage)(buffer, size, data, flags)
23362        /// * `size` group: BufferSize
23363        /// * `data` len: size
23364        /// * `flags` group: BufferStorageMask
23365        #[cfg_attr(feature = "inline", inline)]
23366        #[cfg_attr(feature = "inline_always", inline(always))]
23367        pub unsafe fn NamedBufferStorage(
23368            &self,
23369            buffer: GLuint,
23370            size: GLsizeiptr,
23371            data: *const c_void,
23372            flags: GLbitfield,
23373        ) {
23374            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23375            {
23376                trace!(
23377                    "calling gl.NamedBufferStorage({:?}, {:?}, {:p}, {:?});",
23378                    buffer,
23379                    size,
23380                    data,
23381                    flags
23382                );
23383            }
23384            let out = call_atomic_ptr_4arg(
23385                "glNamedBufferStorage",
23386                &self.glNamedBufferStorage_p,
23387                buffer,
23388                size,
23389                data,
23390                flags,
23391            );
23392            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23393            {
23394                self.automatic_glGetError("glNamedBufferStorage");
23395            }
23396            out
23397        }
23398        #[doc(hidden)]
23399        pub unsafe fn NamedBufferStorage_load_with_dyn(
23400            &self,
23401            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23402        ) -> bool {
23403            load_dyn_name_atomic_ptr(
23404                get_proc_address,
23405                b"glNamedBufferStorage\0",
23406                &self.glNamedBufferStorage_p,
23407            )
23408        }
23409        #[inline]
23410        #[doc(hidden)]
23411        pub fn NamedBufferStorage_is_loaded(&self) -> bool {
23412            !self.glNamedBufferStorage_p.load(RELAX).is_null()
23413        }
23414        /// [glNamedBufferSubData](http://docs.gl/gl4/glNamedBufferSubData)(buffer, offset, size, data)
23415        /// * `size` group: BufferSize
23416        /// * `data` len: COMPSIZE(size)
23417        #[cfg_attr(feature = "inline", inline)]
23418        #[cfg_attr(feature = "inline_always", inline(always))]
23419        pub unsafe fn NamedBufferSubData(
23420            &self,
23421            buffer: GLuint,
23422            offset: GLintptr,
23423            size: GLsizeiptr,
23424            data: *const c_void,
23425        ) {
23426            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23427            {
23428                trace!(
23429                    "calling gl.NamedBufferSubData({:?}, {:?}, {:?}, {:p});",
23430                    buffer,
23431                    offset,
23432                    size,
23433                    data
23434                );
23435            }
23436            let out = call_atomic_ptr_4arg(
23437                "glNamedBufferSubData",
23438                &self.glNamedBufferSubData_p,
23439                buffer,
23440                offset,
23441                size,
23442                data,
23443            );
23444            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23445            {
23446                self.automatic_glGetError("glNamedBufferSubData");
23447            }
23448            out
23449        }
23450        #[doc(hidden)]
23451        pub unsafe fn NamedBufferSubData_load_with_dyn(
23452            &self,
23453            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23454        ) -> bool {
23455            load_dyn_name_atomic_ptr(
23456                get_proc_address,
23457                b"glNamedBufferSubData\0",
23458                &self.glNamedBufferSubData_p,
23459            )
23460        }
23461        #[inline]
23462        #[doc(hidden)]
23463        pub fn NamedBufferSubData_is_loaded(&self) -> bool {
23464            !self.glNamedBufferSubData_p.load(RELAX).is_null()
23465        }
23466        /// [glNamedFramebufferDrawBuffer](http://docs.gl/gl4/glNamedFramebufferDrawBuffer)(framebuffer, buf)
23467        /// * `buf` group: ColorBuffer
23468        #[cfg_attr(feature = "inline", inline)]
23469        #[cfg_attr(feature = "inline_always", inline(always))]
23470        pub unsafe fn NamedFramebufferDrawBuffer(&self, framebuffer: GLuint, buf: GLenum) {
23471            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23472            {
23473                trace!(
23474                    "calling gl.NamedFramebufferDrawBuffer({:?}, {:#X});",
23475                    framebuffer,
23476                    buf
23477                );
23478            }
23479            let out = call_atomic_ptr_2arg(
23480                "glNamedFramebufferDrawBuffer",
23481                &self.glNamedFramebufferDrawBuffer_p,
23482                framebuffer,
23483                buf,
23484            );
23485            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23486            {
23487                self.automatic_glGetError("glNamedFramebufferDrawBuffer");
23488            }
23489            out
23490        }
23491        #[doc(hidden)]
23492        pub unsafe fn NamedFramebufferDrawBuffer_load_with_dyn(
23493            &self,
23494            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23495        ) -> bool {
23496            load_dyn_name_atomic_ptr(
23497                get_proc_address,
23498                b"glNamedFramebufferDrawBuffer\0",
23499                &self.glNamedFramebufferDrawBuffer_p,
23500            )
23501        }
23502        #[inline]
23503        #[doc(hidden)]
23504        pub fn NamedFramebufferDrawBuffer_is_loaded(&self) -> bool {
23505            !self.glNamedFramebufferDrawBuffer_p.load(RELAX).is_null()
23506        }
23507        /// [glNamedFramebufferDrawBuffers](http://docs.gl/gl4/glNamedFramebufferDrawBuffers)(framebuffer, n, bufs)
23508        /// * `bufs` group: ColorBuffer
23509        #[cfg_attr(feature = "inline", inline)]
23510        #[cfg_attr(feature = "inline_always", inline(always))]
23511        pub unsafe fn NamedFramebufferDrawBuffers(
23512            &self,
23513            framebuffer: GLuint,
23514            n: GLsizei,
23515            bufs: *const GLenum,
23516        ) {
23517            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23518            {
23519                trace!(
23520                    "calling gl.NamedFramebufferDrawBuffers({:?}, {:?}, {:p});",
23521                    framebuffer,
23522                    n,
23523                    bufs
23524                );
23525            }
23526            let out = call_atomic_ptr_3arg(
23527                "glNamedFramebufferDrawBuffers",
23528                &self.glNamedFramebufferDrawBuffers_p,
23529                framebuffer,
23530                n,
23531                bufs,
23532            );
23533            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23534            {
23535                self.automatic_glGetError("glNamedFramebufferDrawBuffers");
23536            }
23537            out
23538        }
23539        #[doc(hidden)]
23540        pub unsafe fn NamedFramebufferDrawBuffers_load_with_dyn(
23541            &self,
23542            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23543        ) -> bool {
23544            load_dyn_name_atomic_ptr(
23545                get_proc_address,
23546                b"glNamedFramebufferDrawBuffers\0",
23547                &self.glNamedFramebufferDrawBuffers_p,
23548            )
23549        }
23550        #[inline]
23551        #[doc(hidden)]
23552        pub fn NamedFramebufferDrawBuffers_is_loaded(&self) -> bool {
23553            !self.glNamedFramebufferDrawBuffers_p.load(RELAX).is_null()
23554        }
23555        /// [glNamedFramebufferParameteri](http://docs.gl/gl4/glNamedFramebufferParameter)(framebuffer, pname, param)
23556        /// * `pname` group: FramebufferParameterName
23557        #[cfg_attr(feature = "inline", inline)]
23558        #[cfg_attr(feature = "inline_always", inline(always))]
23559        pub unsafe fn NamedFramebufferParameteri(
23560            &self,
23561            framebuffer: GLuint,
23562            pname: GLenum,
23563            param: GLint,
23564        ) {
23565            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23566            {
23567                trace!(
23568                    "calling gl.NamedFramebufferParameteri({:?}, {:#X}, {:?});",
23569                    framebuffer,
23570                    pname,
23571                    param
23572                );
23573            }
23574            let out = call_atomic_ptr_3arg(
23575                "glNamedFramebufferParameteri",
23576                &self.glNamedFramebufferParameteri_p,
23577                framebuffer,
23578                pname,
23579                param,
23580            );
23581            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23582            {
23583                self.automatic_glGetError("glNamedFramebufferParameteri");
23584            }
23585            out
23586        }
23587        #[doc(hidden)]
23588        pub unsafe fn NamedFramebufferParameteri_load_with_dyn(
23589            &self,
23590            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23591        ) -> bool {
23592            load_dyn_name_atomic_ptr(
23593                get_proc_address,
23594                b"glNamedFramebufferParameteri\0",
23595                &self.glNamedFramebufferParameteri_p,
23596            )
23597        }
23598        #[inline]
23599        #[doc(hidden)]
23600        pub fn NamedFramebufferParameteri_is_loaded(&self) -> bool {
23601            !self.glNamedFramebufferParameteri_p.load(RELAX).is_null()
23602        }
23603        /// [glNamedFramebufferReadBuffer](http://docs.gl/gl4/glNamedFramebufferReadBuffer)(framebuffer, src)
23604        /// * `src` group: ColorBuffer
23605        #[cfg_attr(feature = "inline", inline)]
23606        #[cfg_attr(feature = "inline_always", inline(always))]
23607        pub unsafe fn NamedFramebufferReadBuffer(&self, framebuffer: GLuint, src: GLenum) {
23608            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23609            {
23610                trace!(
23611                    "calling gl.NamedFramebufferReadBuffer({:?}, {:#X});",
23612                    framebuffer,
23613                    src
23614                );
23615            }
23616            let out = call_atomic_ptr_2arg(
23617                "glNamedFramebufferReadBuffer",
23618                &self.glNamedFramebufferReadBuffer_p,
23619                framebuffer,
23620                src,
23621            );
23622            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23623            {
23624                self.automatic_glGetError("glNamedFramebufferReadBuffer");
23625            }
23626            out
23627        }
23628        #[doc(hidden)]
23629        pub unsafe fn NamedFramebufferReadBuffer_load_with_dyn(
23630            &self,
23631            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23632        ) -> bool {
23633            load_dyn_name_atomic_ptr(
23634                get_proc_address,
23635                b"glNamedFramebufferReadBuffer\0",
23636                &self.glNamedFramebufferReadBuffer_p,
23637            )
23638        }
23639        #[inline]
23640        #[doc(hidden)]
23641        pub fn NamedFramebufferReadBuffer_is_loaded(&self) -> bool {
23642            !self.glNamedFramebufferReadBuffer_p.load(RELAX).is_null()
23643        }
23644        /// [glNamedFramebufferRenderbuffer](http://docs.gl/gl4/glNamedFramebufferRenderbuffer)(framebuffer, attachment, renderbuffertarget, renderbuffer)
23645        /// * `attachment` group: FramebufferAttachment
23646        /// * `renderbuffertarget` group: RenderbufferTarget
23647        #[cfg_attr(feature = "inline", inline)]
23648        #[cfg_attr(feature = "inline_always", inline(always))]
23649        pub unsafe fn NamedFramebufferRenderbuffer(
23650            &self,
23651            framebuffer: GLuint,
23652            attachment: GLenum,
23653            renderbuffertarget: GLenum,
23654            renderbuffer: GLuint,
23655        ) {
23656            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23657            {
23658                trace!(
23659                    "calling gl.NamedFramebufferRenderbuffer({:?}, {:#X}, {:#X}, {:?});",
23660                    framebuffer,
23661                    attachment,
23662                    renderbuffertarget,
23663                    renderbuffer
23664                );
23665            }
23666            let out = call_atomic_ptr_4arg(
23667                "glNamedFramebufferRenderbuffer",
23668                &self.glNamedFramebufferRenderbuffer_p,
23669                framebuffer,
23670                attachment,
23671                renderbuffertarget,
23672                renderbuffer,
23673            );
23674            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23675            {
23676                self.automatic_glGetError("glNamedFramebufferRenderbuffer");
23677            }
23678            out
23679        }
23680        #[doc(hidden)]
23681        pub unsafe fn NamedFramebufferRenderbuffer_load_with_dyn(
23682            &self,
23683            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23684        ) -> bool {
23685            load_dyn_name_atomic_ptr(
23686                get_proc_address,
23687                b"glNamedFramebufferRenderbuffer\0",
23688                &self.glNamedFramebufferRenderbuffer_p,
23689            )
23690        }
23691        #[inline]
23692        #[doc(hidden)]
23693        pub fn NamedFramebufferRenderbuffer_is_loaded(&self) -> bool {
23694            !self.glNamedFramebufferRenderbuffer_p.load(RELAX).is_null()
23695        }
23696        /// [glNamedFramebufferTexture](http://docs.gl/gl4/glNamedFramebufferTexture)(framebuffer, attachment, texture, level)
23697        /// * `attachment` group: FramebufferAttachment
23698        #[cfg_attr(feature = "inline", inline)]
23699        #[cfg_attr(feature = "inline_always", inline(always))]
23700        pub unsafe fn NamedFramebufferTexture(
23701            &self,
23702            framebuffer: GLuint,
23703            attachment: GLenum,
23704            texture: GLuint,
23705            level: GLint,
23706        ) {
23707            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23708            {
23709                trace!(
23710                    "calling gl.NamedFramebufferTexture({:?}, {:#X}, {:?}, {:?});",
23711                    framebuffer,
23712                    attachment,
23713                    texture,
23714                    level
23715                );
23716            }
23717            let out = call_atomic_ptr_4arg(
23718                "glNamedFramebufferTexture",
23719                &self.glNamedFramebufferTexture_p,
23720                framebuffer,
23721                attachment,
23722                texture,
23723                level,
23724            );
23725            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23726            {
23727                self.automatic_glGetError("glNamedFramebufferTexture");
23728            }
23729            out
23730        }
23731        #[doc(hidden)]
23732        pub unsafe fn NamedFramebufferTexture_load_with_dyn(
23733            &self,
23734            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23735        ) -> bool {
23736            load_dyn_name_atomic_ptr(
23737                get_proc_address,
23738                b"glNamedFramebufferTexture\0",
23739                &self.glNamedFramebufferTexture_p,
23740            )
23741        }
23742        #[inline]
23743        #[doc(hidden)]
23744        pub fn NamedFramebufferTexture_is_loaded(&self) -> bool {
23745            !self.glNamedFramebufferTexture_p.load(RELAX).is_null()
23746        }
23747        /// [glNamedFramebufferTextureLayer](http://docs.gl/gl4/glNamedFramebufferTextureLayer)(framebuffer, attachment, texture, level, layer)
23748        /// * `attachment` group: FramebufferAttachment
23749        #[cfg_attr(feature = "inline", inline)]
23750        #[cfg_attr(feature = "inline_always", inline(always))]
23751        pub unsafe fn NamedFramebufferTextureLayer(
23752            &self,
23753            framebuffer: GLuint,
23754            attachment: GLenum,
23755            texture: GLuint,
23756            level: GLint,
23757            layer: GLint,
23758        ) {
23759            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23760            {
23761                trace!(
23762                    "calling gl.NamedFramebufferTextureLayer({:?}, {:#X}, {:?}, {:?}, {:?});",
23763                    framebuffer,
23764                    attachment,
23765                    texture,
23766                    level,
23767                    layer
23768                );
23769            }
23770            let out = call_atomic_ptr_5arg(
23771                "glNamedFramebufferTextureLayer",
23772                &self.glNamedFramebufferTextureLayer_p,
23773                framebuffer,
23774                attachment,
23775                texture,
23776                level,
23777                layer,
23778            );
23779            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23780            {
23781                self.automatic_glGetError("glNamedFramebufferTextureLayer");
23782            }
23783            out
23784        }
23785        #[doc(hidden)]
23786        pub unsafe fn NamedFramebufferTextureLayer_load_with_dyn(
23787            &self,
23788            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23789        ) -> bool {
23790            load_dyn_name_atomic_ptr(
23791                get_proc_address,
23792                b"glNamedFramebufferTextureLayer\0",
23793                &self.glNamedFramebufferTextureLayer_p,
23794            )
23795        }
23796        #[inline]
23797        #[doc(hidden)]
23798        pub fn NamedFramebufferTextureLayer_is_loaded(&self) -> bool {
23799            !self.glNamedFramebufferTextureLayer_p.load(RELAX).is_null()
23800        }
23801        /// [glNamedRenderbufferStorage](http://docs.gl/gl4/glNamedRenderbufferStorage)(renderbuffer, internalformat, width, height)
23802        /// * `internalformat` group: InternalFormat
23803        #[cfg_attr(feature = "inline", inline)]
23804        #[cfg_attr(feature = "inline_always", inline(always))]
23805        pub unsafe fn NamedRenderbufferStorage(
23806            &self,
23807            renderbuffer: GLuint,
23808            internalformat: GLenum,
23809            width: GLsizei,
23810            height: GLsizei,
23811        ) {
23812            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23813            {
23814                trace!(
23815                    "calling gl.NamedRenderbufferStorage({:?}, {:#X}, {:?}, {:?});",
23816                    renderbuffer,
23817                    internalformat,
23818                    width,
23819                    height
23820                );
23821            }
23822            let out = call_atomic_ptr_4arg(
23823                "glNamedRenderbufferStorage",
23824                &self.glNamedRenderbufferStorage_p,
23825                renderbuffer,
23826                internalformat,
23827                width,
23828                height,
23829            );
23830            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23831            {
23832                self.automatic_glGetError("glNamedRenderbufferStorage");
23833            }
23834            out
23835        }
23836        #[doc(hidden)]
23837        pub unsafe fn NamedRenderbufferStorage_load_with_dyn(
23838            &self,
23839            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23840        ) -> bool {
23841            load_dyn_name_atomic_ptr(
23842                get_proc_address,
23843                b"glNamedRenderbufferStorage\0",
23844                &self.glNamedRenderbufferStorage_p,
23845            )
23846        }
23847        #[inline]
23848        #[doc(hidden)]
23849        pub fn NamedRenderbufferStorage_is_loaded(&self) -> bool {
23850            !self.glNamedRenderbufferStorage_p.load(RELAX).is_null()
23851        }
23852        /// [glNamedRenderbufferStorageMultisample](http://docs.gl/gl4/glNamedRenderbufferStorageMultisample)(renderbuffer, samples, internalformat, width, height)
23853        /// * `internalformat` group: InternalFormat
23854        #[cfg_attr(feature = "inline", inline)]
23855        #[cfg_attr(feature = "inline_always", inline(always))]
23856        pub unsafe fn NamedRenderbufferStorageMultisample(
23857            &self,
23858            renderbuffer: GLuint,
23859            samples: GLsizei,
23860            internalformat: GLenum,
23861            width: GLsizei,
23862            height: GLsizei,
23863        ) {
23864            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23865            {
23866                trace!("calling gl.NamedRenderbufferStorageMultisample({:?}, {:?}, {:#X}, {:?}, {:?});", renderbuffer, samples, internalformat, width, height);
23867            }
23868            let out = call_atomic_ptr_5arg(
23869                "glNamedRenderbufferStorageMultisample",
23870                &self.glNamedRenderbufferStorageMultisample_p,
23871                renderbuffer,
23872                samples,
23873                internalformat,
23874                width,
23875                height,
23876            );
23877            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23878            {
23879                self.automatic_glGetError("glNamedRenderbufferStorageMultisample");
23880            }
23881            out
23882        }
23883        #[doc(hidden)]
23884        pub unsafe fn NamedRenderbufferStorageMultisample_load_with_dyn(
23885            &self,
23886            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23887        ) -> bool {
23888            load_dyn_name_atomic_ptr(
23889                get_proc_address,
23890                b"glNamedRenderbufferStorageMultisample\0",
23891                &self.glNamedRenderbufferStorageMultisample_p,
23892            )
23893        }
23894        #[inline]
23895        #[doc(hidden)]
23896        pub fn NamedRenderbufferStorageMultisample_is_loaded(&self) -> bool {
23897            !self
23898                .glNamedRenderbufferStorageMultisample_p
23899                .load(RELAX)
23900                .is_null()
23901        }
23902        /// [glObjectLabel](http://docs.gl/gl4/glObjectLabel)(identifier, name, length, label)
23903        /// * `identifier` group: ObjectIdentifier
23904        /// * `label` len: COMPSIZE(label,length)
23905        #[cfg_attr(feature = "inline", inline)]
23906        #[cfg_attr(feature = "inline_always", inline(always))]
23907        pub unsafe fn ObjectLabel(
23908            &self,
23909            identifier: GLenum,
23910            name: GLuint,
23911            length: GLsizei,
23912            label: *const GLchar,
23913        ) {
23914            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23915            {
23916                trace!(
23917                    "calling gl.ObjectLabel({:#X}, {:?}, {:?}, {:p});",
23918                    identifier,
23919                    name,
23920                    length,
23921                    label
23922                );
23923            }
23924            let out = call_atomic_ptr_4arg(
23925                "glObjectLabel",
23926                &self.glObjectLabel_p,
23927                identifier,
23928                name,
23929                length,
23930                label,
23931            );
23932            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23933            {
23934                self.automatic_glGetError("glObjectLabel");
23935            }
23936            out
23937        }
23938        #[doc(hidden)]
23939        pub unsafe fn ObjectLabel_load_with_dyn(
23940            &self,
23941            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23942        ) -> bool {
23943            load_dyn_name_atomic_ptr(get_proc_address, b"glObjectLabel\0", &self.glObjectLabel_p)
23944        }
23945        #[inline]
23946        #[doc(hidden)]
23947        pub fn ObjectLabel_is_loaded(&self) -> bool {
23948            !self.glObjectLabel_p.load(RELAX).is_null()
23949        }
23950        /// [glObjectLabelKHR](http://docs.gl/gl4/glObjectLabelKHR)(identifier, name, length, label)
23951        /// * `identifier` group: ObjectIdentifier
23952        /// * alias of: [`glObjectLabel`]
23953        #[cfg_attr(feature = "inline", inline)]
23954        #[cfg_attr(feature = "inline_always", inline(always))]
23955        pub unsafe fn ObjectLabelKHR(
23956            &self,
23957            identifier: GLenum,
23958            name: GLuint,
23959            length: GLsizei,
23960            label: *const GLchar,
23961        ) {
23962            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
23963            {
23964                trace!(
23965                    "calling gl.ObjectLabelKHR({:#X}, {:?}, {:?}, {:p});",
23966                    identifier,
23967                    name,
23968                    length,
23969                    label
23970                );
23971            }
23972            let out = call_atomic_ptr_4arg(
23973                "glObjectLabelKHR",
23974                &self.glObjectLabelKHR_p,
23975                identifier,
23976                name,
23977                length,
23978                label,
23979            );
23980            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
23981            {
23982                self.automatic_glGetError("glObjectLabelKHR");
23983            }
23984            out
23985        }
23986        #[doc(hidden)]
23987        pub unsafe fn ObjectLabelKHR_load_with_dyn(
23988            &self,
23989            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
23990        ) -> bool {
23991            load_dyn_name_atomic_ptr(
23992                get_proc_address,
23993                b"glObjectLabelKHR\0",
23994                &self.glObjectLabelKHR_p,
23995            )
23996        }
23997        #[inline]
23998        #[doc(hidden)]
23999        pub fn ObjectLabelKHR_is_loaded(&self) -> bool {
24000            !self.glObjectLabelKHR_p.load(RELAX).is_null()
24001        }
24002        /// [glObjectPtrLabel](http://docs.gl/gl4/glObjectPtrLabel)(ptr, length, label)
24003        /// * `label` len: COMPSIZE(label,length)
24004        #[cfg_attr(feature = "inline", inline)]
24005        #[cfg_attr(feature = "inline_always", inline(always))]
24006        pub unsafe fn ObjectPtrLabel(
24007            &self,
24008            ptr: *const c_void,
24009            length: GLsizei,
24010            label: *const GLchar,
24011        ) {
24012            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24013            {
24014                trace!(
24015                    "calling gl.ObjectPtrLabel({:p}, {:?}, {:p});",
24016                    ptr,
24017                    length,
24018                    label
24019                );
24020            }
24021            let out = call_atomic_ptr_3arg(
24022                "glObjectPtrLabel",
24023                &self.glObjectPtrLabel_p,
24024                ptr,
24025                length,
24026                label,
24027            );
24028            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24029            {
24030                self.automatic_glGetError("glObjectPtrLabel");
24031            }
24032            out
24033        }
24034        #[doc(hidden)]
24035        pub unsafe fn ObjectPtrLabel_load_with_dyn(
24036            &self,
24037            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24038        ) -> bool {
24039            load_dyn_name_atomic_ptr(
24040                get_proc_address,
24041                b"glObjectPtrLabel\0",
24042                &self.glObjectPtrLabel_p,
24043            )
24044        }
24045        #[inline]
24046        #[doc(hidden)]
24047        pub fn ObjectPtrLabel_is_loaded(&self) -> bool {
24048            !self.glObjectPtrLabel_p.load(RELAX).is_null()
24049        }
24050        /// [glObjectPtrLabelKHR](http://docs.gl/gl4/glObjectPtrLabelKHR)(ptr, length, label)
24051        /// * alias of: [`glObjectPtrLabel`]
24052        #[cfg_attr(feature = "inline", inline)]
24053        #[cfg_attr(feature = "inline_always", inline(always))]
24054        pub unsafe fn ObjectPtrLabelKHR(
24055            &self,
24056            ptr: *const c_void,
24057            length: GLsizei,
24058            label: *const GLchar,
24059        ) {
24060            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24061            {
24062                trace!(
24063                    "calling gl.ObjectPtrLabelKHR({:p}, {:?}, {:p});",
24064                    ptr,
24065                    length,
24066                    label
24067                );
24068            }
24069            let out = call_atomic_ptr_3arg(
24070                "glObjectPtrLabelKHR",
24071                &self.glObjectPtrLabelKHR_p,
24072                ptr,
24073                length,
24074                label,
24075            );
24076            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24077            {
24078                self.automatic_glGetError("glObjectPtrLabelKHR");
24079            }
24080            out
24081        }
24082        #[doc(hidden)]
24083        pub unsafe fn ObjectPtrLabelKHR_load_with_dyn(
24084            &self,
24085            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24086        ) -> bool {
24087            load_dyn_name_atomic_ptr(
24088                get_proc_address,
24089                b"glObjectPtrLabelKHR\0",
24090                &self.glObjectPtrLabelKHR_p,
24091            )
24092        }
24093        #[inline]
24094        #[doc(hidden)]
24095        pub fn ObjectPtrLabelKHR_is_loaded(&self) -> bool {
24096            !self.glObjectPtrLabelKHR_p.load(RELAX).is_null()
24097        }
24098        /// [glPatchParameterfv](http://docs.gl/gl4/glPatchParameter)(pname, values)
24099        /// * `pname` group: PatchParameterName
24100        /// * `values` len: COMPSIZE(pname)
24101        #[cfg_attr(feature = "inline", inline)]
24102        #[cfg_attr(feature = "inline_always", inline(always))]
24103        pub unsafe fn PatchParameterfv(&self, pname: GLenum, values: *const GLfloat) {
24104            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24105            {
24106                trace!("calling gl.PatchParameterfv({:#X}, {:p});", pname, values);
24107            }
24108            let out = call_atomic_ptr_2arg(
24109                "glPatchParameterfv",
24110                &self.glPatchParameterfv_p,
24111                pname,
24112                values,
24113            );
24114            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24115            {
24116                self.automatic_glGetError("glPatchParameterfv");
24117            }
24118            out
24119        }
24120        #[doc(hidden)]
24121        pub unsafe fn PatchParameterfv_load_with_dyn(
24122            &self,
24123            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24124        ) -> bool {
24125            load_dyn_name_atomic_ptr(
24126                get_proc_address,
24127                b"glPatchParameterfv\0",
24128                &self.glPatchParameterfv_p,
24129            )
24130        }
24131        #[inline]
24132        #[doc(hidden)]
24133        pub fn PatchParameterfv_is_loaded(&self) -> bool {
24134            !self.glPatchParameterfv_p.load(RELAX).is_null()
24135        }
24136        /// [glPatchParameteri](http://docs.gl/gl4/glPatchParameter)(pname, value)
24137        /// * `pname` group: PatchParameterName
24138        #[cfg_attr(feature = "inline", inline)]
24139        #[cfg_attr(feature = "inline_always", inline(always))]
24140        pub unsafe fn PatchParameteri(&self, pname: GLenum, value: GLint) {
24141            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24142            {
24143                trace!("calling gl.PatchParameteri({:#X}, {:?});", pname, value);
24144            }
24145            let out =
24146                call_atomic_ptr_2arg("glPatchParameteri", &self.glPatchParameteri_p, pname, value);
24147            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24148            {
24149                self.automatic_glGetError("glPatchParameteri");
24150            }
24151            out
24152        }
24153        #[doc(hidden)]
24154        pub unsafe fn PatchParameteri_load_with_dyn(
24155            &self,
24156            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24157        ) -> bool {
24158            load_dyn_name_atomic_ptr(
24159                get_proc_address,
24160                b"glPatchParameteri\0",
24161                &self.glPatchParameteri_p,
24162            )
24163        }
24164        #[inline]
24165        #[doc(hidden)]
24166        pub fn PatchParameteri_is_loaded(&self) -> bool {
24167            !self.glPatchParameteri_p.load(RELAX).is_null()
24168        }
24169        /// [glPauseTransformFeedback](http://docs.gl/gl4/glPauseTransformFeedback)()
24170        #[cfg_attr(feature = "inline", inline)]
24171        #[cfg_attr(feature = "inline_always", inline(always))]
24172        pub unsafe fn PauseTransformFeedback(&self) {
24173            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24174            {
24175                trace!("calling gl.PauseTransformFeedback();",);
24176            }
24177            let out =
24178                call_atomic_ptr_0arg("glPauseTransformFeedback", &self.glPauseTransformFeedback_p);
24179            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24180            {
24181                self.automatic_glGetError("glPauseTransformFeedback");
24182            }
24183            out
24184        }
24185        #[doc(hidden)]
24186        pub unsafe fn PauseTransformFeedback_load_with_dyn(
24187            &self,
24188            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24189        ) -> bool {
24190            load_dyn_name_atomic_ptr(
24191                get_proc_address,
24192                b"glPauseTransformFeedback\0",
24193                &self.glPauseTransformFeedback_p,
24194            )
24195        }
24196        #[inline]
24197        #[doc(hidden)]
24198        pub fn PauseTransformFeedback_is_loaded(&self) -> bool {
24199            !self.glPauseTransformFeedback_p.load(RELAX).is_null()
24200        }
24201        /// [glPixelStoref](http://docs.gl/gl4/glPixelStore)(pname, param)
24202        /// * `pname` group: PixelStoreParameter
24203        /// * `param` group: CheckedFloat32
24204        #[cfg_attr(feature = "inline", inline)]
24205        #[cfg_attr(feature = "inline_always", inline(always))]
24206        pub unsafe fn PixelStoref(&self, pname: GLenum, param: GLfloat) {
24207            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24208            {
24209                trace!("calling gl.PixelStoref({:#X}, {:?});", pname, param);
24210            }
24211            let out = call_atomic_ptr_2arg("glPixelStoref", &self.glPixelStoref_p, pname, param);
24212            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24213            {
24214                self.automatic_glGetError("glPixelStoref");
24215            }
24216            out
24217        }
24218        #[doc(hidden)]
24219        pub unsafe fn PixelStoref_load_with_dyn(
24220            &self,
24221            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24222        ) -> bool {
24223            load_dyn_name_atomic_ptr(get_proc_address, b"glPixelStoref\0", &self.glPixelStoref_p)
24224        }
24225        #[inline]
24226        #[doc(hidden)]
24227        pub fn PixelStoref_is_loaded(&self) -> bool {
24228            !self.glPixelStoref_p.load(RELAX).is_null()
24229        }
24230        /// [glPixelStorei](http://docs.gl/gl4/glPixelStore)(pname, param)
24231        /// * `pname` group: PixelStoreParameter
24232        /// * `param` group: CheckedInt32
24233        #[cfg_attr(feature = "inline", inline)]
24234        #[cfg_attr(feature = "inline_always", inline(always))]
24235        pub unsafe fn PixelStorei(&self, pname: GLenum, param: GLint) {
24236            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24237            {
24238                trace!("calling gl.PixelStorei({:#X}, {:?});", pname, param);
24239            }
24240            let out = call_atomic_ptr_2arg("glPixelStorei", &self.glPixelStorei_p, pname, param);
24241            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24242            {
24243                self.automatic_glGetError("glPixelStorei");
24244            }
24245            out
24246        }
24247        #[doc(hidden)]
24248        pub unsafe fn PixelStorei_load_with_dyn(
24249            &self,
24250            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24251        ) -> bool {
24252            load_dyn_name_atomic_ptr(get_proc_address, b"glPixelStorei\0", &self.glPixelStorei_p)
24253        }
24254        #[inline]
24255        #[doc(hidden)]
24256        pub fn PixelStorei_is_loaded(&self) -> bool {
24257            !self.glPixelStorei_p.load(RELAX).is_null()
24258        }
24259        /// [glPointParameterf](http://docs.gl/gl4/glPointParameter)(pname, param)
24260        /// * `pname` group: PointParameterNameARB
24261        /// * `param` group: CheckedFloat32
24262        #[cfg_attr(feature = "inline", inline)]
24263        #[cfg_attr(feature = "inline_always", inline(always))]
24264        pub unsafe fn PointParameterf(&self, pname: GLenum, param: GLfloat) {
24265            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24266            {
24267                trace!("calling gl.PointParameterf({:#X}, {:?});", pname, param);
24268            }
24269            let out =
24270                call_atomic_ptr_2arg("glPointParameterf", &self.glPointParameterf_p, pname, param);
24271            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24272            {
24273                self.automatic_glGetError("glPointParameterf");
24274            }
24275            out
24276        }
24277        #[doc(hidden)]
24278        pub unsafe fn PointParameterf_load_with_dyn(
24279            &self,
24280            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24281        ) -> bool {
24282            load_dyn_name_atomic_ptr(
24283                get_proc_address,
24284                b"glPointParameterf\0",
24285                &self.glPointParameterf_p,
24286            )
24287        }
24288        #[inline]
24289        #[doc(hidden)]
24290        pub fn PointParameterf_is_loaded(&self) -> bool {
24291            !self.glPointParameterf_p.load(RELAX).is_null()
24292        }
24293        /// [glPointParameterfv](http://docs.gl/gl4/glPointParameter)(pname, params)
24294        /// * `pname` group: PointParameterNameARB
24295        /// * `params` group: CheckedFloat32
24296        /// * `params` len: COMPSIZE(pname)
24297        #[cfg_attr(feature = "inline", inline)]
24298        #[cfg_attr(feature = "inline_always", inline(always))]
24299        pub unsafe fn PointParameterfv(&self, pname: GLenum, params: *const GLfloat) {
24300            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24301            {
24302                trace!("calling gl.PointParameterfv({:#X}, {:p});", pname, params);
24303            }
24304            let out = call_atomic_ptr_2arg(
24305                "glPointParameterfv",
24306                &self.glPointParameterfv_p,
24307                pname,
24308                params,
24309            );
24310            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24311            {
24312                self.automatic_glGetError("glPointParameterfv");
24313            }
24314            out
24315        }
24316        #[doc(hidden)]
24317        pub unsafe fn PointParameterfv_load_with_dyn(
24318            &self,
24319            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24320        ) -> bool {
24321            load_dyn_name_atomic_ptr(
24322                get_proc_address,
24323                b"glPointParameterfv\0",
24324                &self.glPointParameterfv_p,
24325            )
24326        }
24327        #[inline]
24328        #[doc(hidden)]
24329        pub fn PointParameterfv_is_loaded(&self) -> bool {
24330            !self.glPointParameterfv_p.load(RELAX).is_null()
24331        }
24332        /// [glPointParameteri](http://docs.gl/gl4/glPointParameter)(pname, param)
24333        /// * `pname` group: PointParameterNameARB
24334        #[cfg_attr(feature = "inline", inline)]
24335        #[cfg_attr(feature = "inline_always", inline(always))]
24336        pub unsafe fn PointParameteri(&self, pname: GLenum, param: GLint) {
24337            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24338            {
24339                trace!("calling gl.PointParameteri({:#X}, {:?});", pname, param);
24340            }
24341            let out =
24342                call_atomic_ptr_2arg("glPointParameteri", &self.glPointParameteri_p, pname, param);
24343            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24344            {
24345                self.automatic_glGetError("glPointParameteri");
24346            }
24347            out
24348        }
24349        #[doc(hidden)]
24350        pub unsafe fn PointParameteri_load_with_dyn(
24351            &self,
24352            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24353        ) -> bool {
24354            load_dyn_name_atomic_ptr(
24355                get_proc_address,
24356                b"glPointParameteri\0",
24357                &self.glPointParameteri_p,
24358            )
24359        }
24360        #[inline]
24361        #[doc(hidden)]
24362        pub fn PointParameteri_is_loaded(&self) -> bool {
24363            !self.glPointParameteri_p.load(RELAX).is_null()
24364        }
24365        /// [glPointParameteriv](http://docs.gl/gl4/glPointParameter)(pname, params)
24366        /// * `pname` group: PointParameterNameARB
24367        /// * `params` len: COMPSIZE(pname)
24368        #[cfg_attr(feature = "inline", inline)]
24369        #[cfg_attr(feature = "inline_always", inline(always))]
24370        pub unsafe fn PointParameteriv(&self, pname: GLenum, params: *const GLint) {
24371            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24372            {
24373                trace!("calling gl.PointParameteriv({:#X}, {:p});", pname, params);
24374            }
24375            let out = call_atomic_ptr_2arg(
24376                "glPointParameteriv",
24377                &self.glPointParameteriv_p,
24378                pname,
24379                params,
24380            );
24381            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24382            {
24383                self.automatic_glGetError("glPointParameteriv");
24384            }
24385            out
24386        }
24387        #[doc(hidden)]
24388        pub unsafe fn PointParameteriv_load_with_dyn(
24389            &self,
24390            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24391        ) -> bool {
24392            load_dyn_name_atomic_ptr(
24393                get_proc_address,
24394                b"glPointParameteriv\0",
24395                &self.glPointParameteriv_p,
24396            )
24397        }
24398        #[inline]
24399        #[doc(hidden)]
24400        pub fn PointParameteriv_is_loaded(&self) -> bool {
24401            !self.glPointParameteriv_p.load(RELAX).is_null()
24402        }
24403        /// [glPointSize](http://docs.gl/gl4/glPointSize)(size)
24404        /// * `size` group: CheckedFloat32
24405        #[cfg_attr(feature = "inline", inline)]
24406        #[cfg_attr(feature = "inline_always", inline(always))]
24407        pub unsafe fn PointSize(&self, size: GLfloat) {
24408            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24409            {
24410                trace!("calling gl.PointSize({:?});", size);
24411            }
24412            let out = call_atomic_ptr_1arg("glPointSize", &self.glPointSize_p, size);
24413            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24414            {
24415                self.automatic_glGetError("glPointSize");
24416            }
24417            out
24418        }
24419        #[doc(hidden)]
24420        pub unsafe fn PointSize_load_with_dyn(
24421            &self,
24422            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24423        ) -> bool {
24424            load_dyn_name_atomic_ptr(get_proc_address, b"glPointSize\0", &self.glPointSize_p)
24425        }
24426        #[inline]
24427        #[doc(hidden)]
24428        pub fn PointSize_is_loaded(&self) -> bool {
24429            !self.glPointSize_p.load(RELAX).is_null()
24430        }
24431        /// [glPolygonMode](http://docs.gl/gl4/glPolygonMode)(face, mode)
24432        /// * `face` group: MaterialFace
24433        /// * `mode` group: PolygonMode
24434        #[cfg_attr(feature = "inline", inline)]
24435        #[cfg_attr(feature = "inline_always", inline(always))]
24436        pub unsafe fn PolygonMode(&self, face: GLenum, mode: GLenum) {
24437            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24438            {
24439                trace!("calling gl.PolygonMode({:#X}, {:#X});", face, mode);
24440            }
24441            let out = call_atomic_ptr_2arg("glPolygonMode", &self.glPolygonMode_p, face, mode);
24442            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24443            {
24444                self.automatic_glGetError("glPolygonMode");
24445            }
24446            out
24447        }
24448        #[doc(hidden)]
24449        pub unsafe fn PolygonMode_load_with_dyn(
24450            &self,
24451            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24452        ) -> bool {
24453            load_dyn_name_atomic_ptr(get_proc_address, b"glPolygonMode\0", &self.glPolygonMode_p)
24454        }
24455        #[inline]
24456        #[doc(hidden)]
24457        pub fn PolygonMode_is_loaded(&self) -> bool {
24458            !self.glPolygonMode_p.load(RELAX).is_null()
24459        }
24460        /// [glPolygonOffset](http://docs.gl/gl4/glPolygonOffset)(factor, units)
24461        #[cfg_attr(feature = "inline", inline)]
24462        #[cfg_attr(feature = "inline_always", inline(always))]
24463        pub unsafe fn PolygonOffset(&self, factor: GLfloat, units: GLfloat) {
24464            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24465            {
24466                trace!("calling gl.PolygonOffset({:?}, {:?});", factor, units);
24467            }
24468            let out =
24469                call_atomic_ptr_2arg("glPolygonOffset", &self.glPolygonOffset_p, factor, units);
24470            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24471            {
24472                self.automatic_glGetError("glPolygonOffset");
24473            }
24474            out
24475        }
24476        #[doc(hidden)]
24477        pub unsafe fn PolygonOffset_load_with_dyn(
24478            &self,
24479            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24480        ) -> bool {
24481            load_dyn_name_atomic_ptr(
24482                get_proc_address,
24483                b"glPolygonOffset\0",
24484                &self.glPolygonOffset_p,
24485            )
24486        }
24487        #[inline]
24488        #[doc(hidden)]
24489        pub fn PolygonOffset_is_loaded(&self) -> bool {
24490            !self.glPolygonOffset_p.load(RELAX).is_null()
24491        }
24492        /// [glPolygonOffsetClamp](http://docs.gl/gl4/glPolygonOffsetClamp)(factor, units, clamp)
24493        #[cfg_attr(feature = "inline", inline)]
24494        #[cfg_attr(feature = "inline_always", inline(always))]
24495        pub unsafe fn PolygonOffsetClamp(&self, factor: GLfloat, units: GLfloat, clamp: GLfloat) {
24496            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24497            {
24498                trace!(
24499                    "calling gl.PolygonOffsetClamp({:?}, {:?}, {:?});",
24500                    factor,
24501                    units,
24502                    clamp
24503                );
24504            }
24505            let out = call_atomic_ptr_3arg(
24506                "glPolygonOffsetClamp",
24507                &self.glPolygonOffsetClamp_p,
24508                factor,
24509                units,
24510                clamp,
24511            );
24512            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24513            {
24514                self.automatic_glGetError("glPolygonOffsetClamp");
24515            }
24516            out
24517        }
24518        #[doc(hidden)]
24519        pub unsafe fn PolygonOffsetClamp_load_with_dyn(
24520            &self,
24521            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24522        ) -> bool {
24523            load_dyn_name_atomic_ptr(
24524                get_proc_address,
24525                b"glPolygonOffsetClamp\0",
24526                &self.glPolygonOffsetClamp_p,
24527            )
24528        }
24529        #[inline]
24530        #[doc(hidden)]
24531        pub fn PolygonOffsetClamp_is_loaded(&self) -> bool {
24532            !self.glPolygonOffsetClamp_p.load(RELAX).is_null()
24533        }
24534        /// [glPopDebugGroup](http://docs.gl/gl4/glPopDebugGroup)()
24535        #[cfg_attr(feature = "inline", inline)]
24536        #[cfg_attr(feature = "inline_always", inline(always))]
24537        pub unsafe fn PopDebugGroup(&self) {
24538            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24539            {
24540                trace!("calling gl.PopDebugGroup();",);
24541            }
24542            let out = call_atomic_ptr_0arg("glPopDebugGroup", &self.glPopDebugGroup_p);
24543            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24544            {
24545                self.automatic_glGetError("glPopDebugGroup");
24546            }
24547            out
24548        }
24549        #[doc(hidden)]
24550        pub unsafe fn PopDebugGroup_load_with_dyn(
24551            &self,
24552            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24553        ) -> bool {
24554            load_dyn_name_atomic_ptr(
24555                get_proc_address,
24556                b"glPopDebugGroup\0",
24557                &self.glPopDebugGroup_p,
24558            )
24559        }
24560        #[inline]
24561        #[doc(hidden)]
24562        pub fn PopDebugGroup_is_loaded(&self) -> bool {
24563            !self.glPopDebugGroup_p.load(RELAX).is_null()
24564        }
24565        /// [glPopDebugGroupKHR](http://docs.gl/gl4/glPopDebugGroupKHR)()
24566        /// * alias of: [`glPopDebugGroup`]
24567        #[cfg_attr(feature = "inline", inline)]
24568        #[cfg_attr(feature = "inline_always", inline(always))]
24569        pub unsafe fn PopDebugGroupKHR(&self) {
24570            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24571            {
24572                trace!("calling gl.PopDebugGroupKHR();",);
24573            }
24574            let out = call_atomic_ptr_0arg("glPopDebugGroupKHR", &self.glPopDebugGroupKHR_p);
24575            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24576            {
24577                self.automatic_glGetError("glPopDebugGroupKHR");
24578            }
24579            out
24580        }
24581        #[doc(hidden)]
24582        pub unsafe fn PopDebugGroupKHR_load_with_dyn(
24583            &self,
24584            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24585        ) -> bool {
24586            load_dyn_name_atomic_ptr(
24587                get_proc_address,
24588                b"glPopDebugGroupKHR\0",
24589                &self.glPopDebugGroupKHR_p,
24590            )
24591        }
24592        #[inline]
24593        #[doc(hidden)]
24594        pub fn PopDebugGroupKHR_is_loaded(&self) -> bool {
24595            !self.glPopDebugGroupKHR_p.load(RELAX).is_null()
24596        }
24597        /// [glPrimitiveBoundingBox](http://docs.gl/gl4/glPrimitiveBoundingBox)(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW)
24598        #[cfg_attr(feature = "inline", inline)]
24599        #[cfg_attr(feature = "inline_always", inline(always))]
24600        pub unsafe fn PrimitiveBoundingBox(
24601            &self,
24602            minX: GLfloat,
24603            minY: GLfloat,
24604            minZ: GLfloat,
24605            minW: GLfloat,
24606            maxX: GLfloat,
24607            maxY: GLfloat,
24608            maxZ: GLfloat,
24609            maxW: GLfloat,
24610        ) {
24611            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24612            {
24613                trace!("calling gl.PrimitiveBoundingBox({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?});", minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
24614            }
24615            let out = call_atomic_ptr_8arg(
24616                "glPrimitiveBoundingBox",
24617                &self.glPrimitiveBoundingBox_p,
24618                minX,
24619                minY,
24620                minZ,
24621                minW,
24622                maxX,
24623                maxY,
24624                maxZ,
24625                maxW,
24626            );
24627            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24628            {
24629                self.automatic_glGetError("glPrimitiveBoundingBox");
24630            }
24631            out
24632        }
24633        #[doc(hidden)]
24634        pub unsafe fn PrimitiveBoundingBox_load_with_dyn(
24635            &self,
24636            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24637        ) -> bool {
24638            load_dyn_name_atomic_ptr(
24639                get_proc_address,
24640                b"glPrimitiveBoundingBox\0",
24641                &self.glPrimitiveBoundingBox_p,
24642            )
24643        }
24644        #[inline]
24645        #[doc(hidden)]
24646        pub fn PrimitiveBoundingBox_is_loaded(&self) -> bool {
24647            !self.glPrimitiveBoundingBox_p.load(RELAX).is_null()
24648        }
24649        /// [glPrimitiveRestartIndex](http://docs.gl/gl4/glPrimitiveRestartIndex)(index)
24650        #[cfg_attr(feature = "inline", inline)]
24651        #[cfg_attr(feature = "inline_always", inline(always))]
24652        pub unsafe fn PrimitiveRestartIndex(&self, index: GLuint) {
24653            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24654            {
24655                trace!("calling gl.PrimitiveRestartIndex({:?});", index);
24656            }
24657            let out = call_atomic_ptr_1arg(
24658                "glPrimitiveRestartIndex",
24659                &self.glPrimitiveRestartIndex_p,
24660                index,
24661            );
24662            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24663            {
24664                self.automatic_glGetError("glPrimitiveRestartIndex");
24665            }
24666            out
24667        }
24668        #[doc(hidden)]
24669        pub unsafe fn PrimitiveRestartIndex_load_with_dyn(
24670            &self,
24671            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24672        ) -> bool {
24673            load_dyn_name_atomic_ptr(
24674                get_proc_address,
24675                b"glPrimitiveRestartIndex\0",
24676                &self.glPrimitiveRestartIndex_p,
24677            )
24678        }
24679        #[inline]
24680        #[doc(hidden)]
24681        pub fn PrimitiveRestartIndex_is_loaded(&self) -> bool {
24682            !self.glPrimitiveRestartIndex_p.load(RELAX).is_null()
24683        }
24684        /// [glProgramBinary](http://docs.gl/gl4/glProgramBinary)(program, binaryFormat, binary, length)
24685        /// * `binary` len: length
24686        #[cfg_attr(feature = "inline", inline)]
24687        #[cfg_attr(feature = "inline_always", inline(always))]
24688        pub unsafe fn ProgramBinary(
24689            &self,
24690            program: GLuint,
24691            binaryFormat: GLenum,
24692            binary: *const c_void,
24693            length: GLsizei,
24694        ) {
24695            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24696            {
24697                trace!(
24698                    "calling gl.ProgramBinary({:?}, {:#X}, {:p}, {:?});",
24699                    program,
24700                    binaryFormat,
24701                    binary,
24702                    length
24703                );
24704            }
24705            let out = call_atomic_ptr_4arg(
24706                "glProgramBinary",
24707                &self.glProgramBinary_p,
24708                program,
24709                binaryFormat,
24710                binary,
24711                length,
24712            );
24713            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24714            {
24715                self.automatic_glGetError("glProgramBinary");
24716            }
24717            out
24718        }
24719        #[doc(hidden)]
24720        pub unsafe fn ProgramBinary_load_with_dyn(
24721            &self,
24722            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24723        ) -> bool {
24724            load_dyn_name_atomic_ptr(
24725                get_proc_address,
24726                b"glProgramBinary\0",
24727                &self.glProgramBinary_p,
24728            )
24729        }
24730        #[inline]
24731        #[doc(hidden)]
24732        pub fn ProgramBinary_is_loaded(&self) -> bool {
24733            !self.glProgramBinary_p.load(RELAX).is_null()
24734        }
24735        /// [glProgramParameteri](http://docs.gl/gl4/glProgramParameteri)(program, pname, value)
24736        /// * `pname` group: ProgramParameterPName
24737        #[cfg_attr(feature = "inline", inline)]
24738        #[cfg_attr(feature = "inline_always", inline(always))]
24739        pub unsafe fn ProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) {
24740            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24741            {
24742                trace!(
24743                    "calling gl.ProgramParameteri({:?}, {:#X}, {:?});",
24744                    program,
24745                    pname,
24746                    value
24747                );
24748            }
24749            let out = call_atomic_ptr_3arg(
24750                "glProgramParameteri",
24751                &self.glProgramParameteri_p,
24752                program,
24753                pname,
24754                value,
24755            );
24756            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24757            {
24758                self.automatic_glGetError("glProgramParameteri");
24759            }
24760            out
24761        }
24762        #[doc(hidden)]
24763        pub unsafe fn ProgramParameteri_load_with_dyn(
24764            &self,
24765            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24766        ) -> bool {
24767            load_dyn_name_atomic_ptr(
24768                get_proc_address,
24769                b"glProgramParameteri\0",
24770                &self.glProgramParameteri_p,
24771            )
24772        }
24773        #[inline]
24774        #[doc(hidden)]
24775        pub fn ProgramParameteri_is_loaded(&self) -> bool {
24776            !self.glProgramParameteri_p.load(RELAX).is_null()
24777        }
24778        /// [glProgramUniform1d](http://docs.gl/gl4/glProgramUniform1d)(program, location, v0)
24779        #[cfg_attr(feature = "inline", inline)]
24780        #[cfg_attr(feature = "inline_always", inline(always))]
24781        pub unsafe fn ProgramUniform1d(&self, program: GLuint, location: GLint, v0: GLdouble) {
24782            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24783            {
24784                trace!(
24785                    "calling gl.ProgramUniform1d({:?}, {:?}, {:?});",
24786                    program,
24787                    location,
24788                    v0
24789                );
24790            }
24791            let out = call_atomic_ptr_3arg(
24792                "glProgramUniform1d",
24793                &self.glProgramUniform1d_p,
24794                program,
24795                location,
24796                v0,
24797            );
24798            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24799            {
24800                self.automatic_glGetError("glProgramUniform1d");
24801            }
24802            out
24803        }
24804        #[doc(hidden)]
24805        pub unsafe fn ProgramUniform1d_load_with_dyn(
24806            &self,
24807            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24808        ) -> bool {
24809            load_dyn_name_atomic_ptr(
24810                get_proc_address,
24811                b"glProgramUniform1d\0",
24812                &self.glProgramUniform1d_p,
24813            )
24814        }
24815        #[inline]
24816        #[doc(hidden)]
24817        pub fn ProgramUniform1d_is_loaded(&self) -> bool {
24818            !self.glProgramUniform1d_p.load(RELAX).is_null()
24819        }
24820        /// [glProgramUniform1dv](http://docs.gl/gl4/glProgramUniform1dv)(program, location, count, value)
24821        /// * `value` len: count
24822        #[cfg_attr(feature = "inline", inline)]
24823        #[cfg_attr(feature = "inline_always", inline(always))]
24824        pub unsafe fn ProgramUniform1dv(
24825            &self,
24826            program: GLuint,
24827            location: GLint,
24828            count: GLsizei,
24829            value: *const GLdouble,
24830        ) {
24831            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24832            {
24833                trace!(
24834                    "calling gl.ProgramUniform1dv({:?}, {:?}, {:?}, {:p});",
24835                    program,
24836                    location,
24837                    count,
24838                    value
24839                );
24840            }
24841            let out = call_atomic_ptr_4arg(
24842                "glProgramUniform1dv",
24843                &self.glProgramUniform1dv_p,
24844                program,
24845                location,
24846                count,
24847                value,
24848            );
24849            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24850            {
24851                self.automatic_glGetError("glProgramUniform1dv");
24852            }
24853            out
24854        }
24855        #[doc(hidden)]
24856        pub unsafe fn ProgramUniform1dv_load_with_dyn(
24857            &self,
24858            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24859        ) -> bool {
24860            load_dyn_name_atomic_ptr(
24861                get_proc_address,
24862                b"glProgramUniform1dv\0",
24863                &self.glProgramUniform1dv_p,
24864            )
24865        }
24866        #[inline]
24867        #[doc(hidden)]
24868        pub fn ProgramUniform1dv_is_loaded(&self) -> bool {
24869            !self.glProgramUniform1dv_p.load(RELAX).is_null()
24870        }
24871        /// [glProgramUniform1f](http://docs.gl/gl4/glProgramUniform)(program, location, v0)
24872        #[cfg_attr(feature = "inline", inline)]
24873        #[cfg_attr(feature = "inline_always", inline(always))]
24874        pub unsafe fn ProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) {
24875            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24876            {
24877                trace!(
24878                    "calling gl.ProgramUniform1f({:?}, {:?}, {:?});",
24879                    program,
24880                    location,
24881                    v0
24882                );
24883            }
24884            let out = call_atomic_ptr_3arg(
24885                "glProgramUniform1f",
24886                &self.glProgramUniform1f_p,
24887                program,
24888                location,
24889                v0,
24890            );
24891            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24892            {
24893                self.automatic_glGetError("glProgramUniform1f");
24894            }
24895            out
24896        }
24897        #[doc(hidden)]
24898        pub unsafe fn ProgramUniform1f_load_with_dyn(
24899            &self,
24900            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24901        ) -> bool {
24902            load_dyn_name_atomic_ptr(
24903                get_proc_address,
24904                b"glProgramUniform1f\0",
24905                &self.glProgramUniform1f_p,
24906            )
24907        }
24908        #[inline]
24909        #[doc(hidden)]
24910        pub fn ProgramUniform1f_is_loaded(&self) -> bool {
24911            !self.glProgramUniform1f_p.load(RELAX).is_null()
24912        }
24913        /// [glProgramUniform1fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
24914        /// * `value` len: count
24915        #[cfg_attr(feature = "inline", inline)]
24916        #[cfg_attr(feature = "inline_always", inline(always))]
24917        pub unsafe fn ProgramUniform1fv(
24918            &self,
24919            program: GLuint,
24920            location: GLint,
24921            count: GLsizei,
24922            value: *const GLfloat,
24923        ) {
24924            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24925            {
24926                trace!(
24927                    "calling gl.ProgramUniform1fv({:?}, {:?}, {:?}, {:p});",
24928                    program,
24929                    location,
24930                    count,
24931                    value
24932                );
24933            }
24934            let out = call_atomic_ptr_4arg(
24935                "glProgramUniform1fv",
24936                &self.glProgramUniform1fv_p,
24937                program,
24938                location,
24939                count,
24940                value,
24941            );
24942            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24943            {
24944                self.automatic_glGetError("glProgramUniform1fv");
24945            }
24946            out
24947        }
24948        #[doc(hidden)]
24949        pub unsafe fn ProgramUniform1fv_load_with_dyn(
24950            &self,
24951            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24952        ) -> bool {
24953            load_dyn_name_atomic_ptr(
24954                get_proc_address,
24955                b"glProgramUniform1fv\0",
24956                &self.glProgramUniform1fv_p,
24957            )
24958        }
24959        #[inline]
24960        #[doc(hidden)]
24961        pub fn ProgramUniform1fv_is_loaded(&self) -> bool {
24962            !self.glProgramUniform1fv_p.load(RELAX).is_null()
24963        }
24964        /// [glProgramUniform1i](http://docs.gl/gl4/glProgramUniform)(program, location, v0)
24965        #[cfg_attr(feature = "inline", inline)]
24966        #[cfg_attr(feature = "inline_always", inline(always))]
24967        pub unsafe fn ProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) {
24968            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
24969            {
24970                trace!(
24971                    "calling gl.ProgramUniform1i({:?}, {:?}, {:?});",
24972                    program,
24973                    location,
24974                    v0
24975                );
24976            }
24977            let out = call_atomic_ptr_3arg(
24978                "glProgramUniform1i",
24979                &self.glProgramUniform1i_p,
24980                program,
24981                location,
24982                v0,
24983            );
24984            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
24985            {
24986                self.automatic_glGetError("glProgramUniform1i");
24987            }
24988            out
24989        }
24990        #[doc(hidden)]
24991        pub unsafe fn ProgramUniform1i_load_with_dyn(
24992            &self,
24993            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
24994        ) -> bool {
24995            load_dyn_name_atomic_ptr(
24996                get_proc_address,
24997                b"glProgramUniform1i\0",
24998                &self.glProgramUniform1i_p,
24999            )
25000        }
25001        #[inline]
25002        #[doc(hidden)]
25003        pub fn ProgramUniform1i_is_loaded(&self) -> bool {
25004            !self.glProgramUniform1i_p.load(RELAX).is_null()
25005        }
25006        /// [glProgramUniform1iv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25007        /// * `value` len: count
25008        #[cfg_attr(feature = "inline", inline)]
25009        #[cfg_attr(feature = "inline_always", inline(always))]
25010        pub unsafe fn ProgramUniform1iv(
25011            &self,
25012            program: GLuint,
25013            location: GLint,
25014            count: GLsizei,
25015            value: *const GLint,
25016        ) {
25017            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25018            {
25019                trace!(
25020                    "calling gl.ProgramUniform1iv({:?}, {:?}, {:?}, {:p});",
25021                    program,
25022                    location,
25023                    count,
25024                    value
25025                );
25026            }
25027            let out = call_atomic_ptr_4arg(
25028                "glProgramUniform1iv",
25029                &self.glProgramUniform1iv_p,
25030                program,
25031                location,
25032                count,
25033                value,
25034            );
25035            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25036            {
25037                self.automatic_glGetError("glProgramUniform1iv");
25038            }
25039            out
25040        }
25041        #[doc(hidden)]
25042        pub unsafe fn ProgramUniform1iv_load_with_dyn(
25043            &self,
25044            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25045        ) -> bool {
25046            load_dyn_name_atomic_ptr(
25047                get_proc_address,
25048                b"glProgramUniform1iv\0",
25049                &self.glProgramUniform1iv_p,
25050            )
25051        }
25052        #[inline]
25053        #[doc(hidden)]
25054        pub fn ProgramUniform1iv_is_loaded(&self) -> bool {
25055            !self.glProgramUniform1iv_p.load(RELAX).is_null()
25056        }
25057        /// [glProgramUniform1ui](http://docs.gl/gl4/glProgramUniform)(program, location, v0)
25058        #[cfg_attr(feature = "inline", inline)]
25059        #[cfg_attr(feature = "inline_always", inline(always))]
25060        pub unsafe fn ProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) {
25061            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25062            {
25063                trace!(
25064                    "calling gl.ProgramUniform1ui({:?}, {:?}, {:?});",
25065                    program,
25066                    location,
25067                    v0
25068                );
25069            }
25070            let out = call_atomic_ptr_3arg(
25071                "glProgramUniform1ui",
25072                &self.glProgramUniform1ui_p,
25073                program,
25074                location,
25075                v0,
25076            );
25077            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25078            {
25079                self.automatic_glGetError("glProgramUniform1ui");
25080            }
25081            out
25082        }
25083        #[doc(hidden)]
25084        pub unsafe fn ProgramUniform1ui_load_with_dyn(
25085            &self,
25086            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25087        ) -> bool {
25088            load_dyn_name_atomic_ptr(
25089                get_proc_address,
25090                b"glProgramUniform1ui\0",
25091                &self.glProgramUniform1ui_p,
25092            )
25093        }
25094        #[inline]
25095        #[doc(hidden)]
25096        pub fn ProgramUniform1ui_is_loaded(&self) -> bool {
25097            !self.glProgramUniform1ui_p.load(RELAX).is_null()
25098        }
25099        /// [glProgramUniform1uiv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25100        /// * `value` len: count
25101        #[cfg_attr(feature = "inline", inline)]
25102        #[cfg_attr(feature = "inline_always", inline(always))]
25103        pub unsafe fn ProgramUniform1uiv(
25104            &self,
25105            program: GLuint,
25106            location: GLint,
25107            count: GLsizei,
25108            value: *const GLuint,
25109        ) {
25110            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25111            {
25112                trace!(
25113                    "calling gl.ProgramUniform1uiv({:?}, {:?}, {:?}, {:p});",
25114                    program,
25115                    location,
25116                    count,
25117                    value
25118                );
25119            }
25120            let out = call_atomic_ptr_4arg(
25121                "glProgramUniform1uiv",
25122                &self.glProgramUniform1uiv_p,
25123                program,
25124                location,
25125                count,
25126                value,
25127            );
25128            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25129            {
25130                self.automatic_glGetError("glProgramUniform1uiv");
25131            }
25132            out
25133        }
25134        #[doc(hidden)]
25135        pub unsafe fn ProgramUniform1uiv_load_with_dyn(
25136            &self,
25137            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25138        ) -> bool {
25139            load_dyn_name_atomic_ptr(
25140                get_proc_address,
25141                b"glProgramUniform1uiv\0",
25142                &self.glProgramUniform1uiv_p,
25143            )
25144        }
25145        #[inline]
25146        #[doc(hidden)]
25147        pub fn ProgramUniform1uiv_is_loaded(&self) -> bool {
25148            !self.glProgramUniform1uiv_p.load(RELAX).is_null()
25149        }
25150        /// [glProgramUniform2d](http://docs.gl/gl4/glProgramUniform2d)(program, location, v0, v1)
25151        #[cfg_attr(feature = "inline", inline)]
25152        #[cfg_attr(feature = "inline_always", inline(always))]
25153        pub unsafe fn ProgramUniform2d(
25154            &self,
25155            program: GLuint,
25156            location: GLint,
25157            v0: GLdouble,
25158            v1: GLdouble,
25159        ) {
25160            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25161            {
25162                trace!(
25163                    "calling gl.ProgramUniform2d({:?}, {:?}, {:?}, {:?});",
25164                    program,
25165                    location,
25166                    v0,
25167                    v1
25168                );
25169            }
25170            let out = call_atomic_ptr_4arg(
25171                "glProgramUniform2d",
25172                &self.glProgramUniform2d_p,
25173                program,
25174                location,
25175                v0,
25176                v1,
25177            );
25178            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25179            {
25180                self.automatic_glGetError("glProgramUniform2d");
25181            }
25182            out
25183        }
25184        #[doc(hidden)]
25185        pub unsafe fn ProgramUniform2d_load_with_dyn(
25186            &self,
25187            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25188        ) -> bool {
25189            load_dyn_name_atomic_ptr(
25190                get_proc_address,
25191                b"glProgramUniform2d\0",
25192                &self.glProgramUniform2d_p,
25193            )
25194        }
25195        #[inline]
25196        #[doc(hidden)]
25197        pub fn ProgramUniform2d_is_loaded(&self) -> bool {
25198            !self.glProgramUniform2d_p.load(RELAX).is_null()
25199        }
25200        /// [glProgramUniform2dv](http://docs.gl/gl4/glProgramUniform2dv)(program, location, count, value)
25201        /// * `value` len: count*2
25202        #[cfg_attr(feature = "inline", inline)]
25203        #[cfg_attr(feature = "inline_always", inline(always))]
25204        pub unsafe fn ProgramUniform2dv(
25205            &self,
25206            program: GLuint,
25207            location: GLint,
25208            count: GLsizei,
25209            value: *const GLdouble,
25210        ) {
25211            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25212            {
25213                trace!(
25214                    "calling gl.ProgramUniform2dv({:?}, {:?}, {:?}, {:p});",
25215                    program,
25216                    location,
25217                    count,
25218                    value
25219                );
25220            }
25221            let out = call_atomic_ptr_4arg(
25222                "glProgramUniform2dv",
25223                &self.glProgramUniform2dv_p,
25224                program,
25225                location,
25226                count,
25227                value,
25228            );
25229            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25230            {
25231                self.automatic_glGetError("glProgramUniform2dv");
25232            }
25233            out
25234        }
25235        #[doc(hidden)]
25236        pub unsafe fn ProgramUniform2dv_load_with_dyn(
25237            &self,
25238            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25239        ) -> bool {
25240            load_dyn_name_atomic_ptr(
25241                get_proc_address,
25242                b"glProgramUniform2dv\0",
25243                &self.glProgramUniform2dv_p,
25244            )
25245        }
25246        #[inline]
25247        #[doc(hidden)]
25248        pub fn ProgramUniform2dv_is_loaded(&self) -> bool {
25249            !self.glProgramUniform2dv_p.load(RELAX).is_null()
25250        }
25251        /// [glProgramUniform2f](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1)
25252        #[cfg_attr(feature = "inline", inline)]
25253        #[cfg_attr(feature = "inline_always", inline(always))]
25254        pub unsafe fn ProgramUniform2f(
25255            &self,
25256            program: GLuint,
25257            location: GLint,
25258            v0: GLfloat,
25259            v1: GLfloat,
25260        ) {
25261            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25262            {
25263                trace!(
25264                    "calling gl.ProgramUniform2f({:?}, {:?}, {:?}, {:?});",
25265                    program,
25266                    location,
25267                    v0,
25268                    v1
25269                );
25270            }
25271            let out = call_atomic_ptr_4arg(
25272                "glProgramUniform2f",
25273                &self.glProgramUniform2f_p,
25274                program,
25275                location,
25276                v0,
25277                v1,
25278            );
25279            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25280            {
25281                self.automatic_glGetError("glProgramUniform2f");
25282            }
25283            out
25284        }
25285        #[doc(hidden)]
25286        pub unsafe fn ProgramUniform2f_load_with_dyn(
25287            &self,
25288            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25289        ) -> bool {
25290            load_dyn_name_atomic_ptr(
25291                get_proc_address,
25292                b"glProgramUniform2f\0",
25293                &self.glProgramUniform2f_p,
25294            )
25295        }
25296        #[inline]
25297        #[doc(hidden)]
25298        pub fn ProgramUniform2f_is_loaded(&self) -> bool {
25299            !self.glProgramUniform2f_p.load(RELAX).is_null()
25300        }
25301        /// [glProgramUniform2fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25302        /// * `value` len: count*2
25303        #[cfg_attr(feature = "inline", inline)]
25304        #[cfg_attr(feature = "inline_always", inline(always))]
25305        pub unsafe fn ProgramUniform2fv(
25306            &self,
25307            program: GLuint,
25308            location: GLint,
25309            count: GLsizei,
25310            value: *const GLfloat,
25311        ) {
25312            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25313            {
25314                trace!(
25315                    "calling gl.ProgramUniform2fv({:?}, {:?}, {:?}, {:p});",
25316                    program,
25317                    location,
25318                    count,
25319                    value
25320                );
25321            }
25322            let out = call_atomic_ptr_4arg(
25323                "glProgramUniform2fv",
25324                &self.glProgramUniform2fv_p,
25325                program,
25326                location,
25327                count,
25328                value,
25329            );
25330            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25331            {
25332                self.automatic_glGetError("glProgramUniform2fv");
25333            }
25334            out
25335        }
25336        #[doc(hidden)]
25337        pub unsafe fn ProgramUniform2fv_load_with_dyn(
25338            &self,
25339            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25340        ) -> bool {
25341            load_dyn_name_atomic_ptr(
25342                get_proc_address,
25343                b"glProgramUniform2fv\0",
25344                &self.glProgramUniform2fv_p,
25345            )
25346        }
25347        #[inline]
25348        #[doc(hidden)]
25349        pub fn ProgramUniform2fv_is_loaded(&self) -> bool {
25350            !self.glProgramUniform2fv_p.load(RELAX).is_null()
25351        }
25352        /// [glProgramUniform2i](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1)
25353        #[cfg_attr(feature = "inline", inline)]
25354        #[cfg_attr(feature = "inline_always", inline(always))]
25355        pub unsafe fn ProgramUniform2i(
25356            &self,
25357            program: GLuint,
25358            location: GLint,
25359            v0: GLint,
25360            v1: GLint,
25361        ) {
25362            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25363            {
25364                trace!(
25365                    "calling gl.ProgramUniform2i({:?}, {:?}, {:?}, {:?});",
25366                    program,
25367                    location,
25368                    v0,
25369                    v1
25370                );
25371            }
25372            let out = call_atomic_ptr_4arg(
25373                "glProgramUniform2i",
25374                &self.glProgramUniform2i_p,
25375                program,
25376                location,
25377                v0,
25378                v1,
25379            );
25380            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25381            {
25382                self.automatic_glGetError("glProgramUniform2i");
25383            }
25384            out
25385        }
25386        #[doc(hidden)]
25387        pub unsafe fn ProgramUniform2i_load_with_dyn(
25388            &self,
25389            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25390        ) -> bool {
25391            load_dyn_name_atomic_ptr(
25392                get_proc_address,
25393                b"glProgramUniform2i\0",
25394                &self.glProgramUniform2i_p,
25395            )
25396        }
25397        #[inline]
25398        #[doc(hidden)]
25399        pub fn ProgramUniform2i_is_loaded(&self) -> bool {
25400            !self.glProgramUniform2i_p.load(RELAX).is_null()
25401        }
25402        /// [glProgramUniform2iv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25403        /// * `value` len: count*2
25404        #[cfg_attr(feature = "inline", inline)]
25405        #[cfg_attr(feature = "inline_always", inline(always))]
25406        pub unsafe fn ProgramUniform2iv(
25407            &self,
25408            program: GLuint,
25409            location: GLint,
25410            count: GLsizei,
25411            value: *const GLint,
25412        ) {
25413            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25414            {
25415                trace!(
25416                    "calling gl.ProgramUniform2iv({:?}, {:?}, {:?}, {:p});",
25417                    program,
25418                    location,
25419                    count,
25420                    value
25421                );
25422            }
25423            let out = call_atomic_ptr_4arg(
25424                "glProgramUniform2iv",
25425                &self.glProgramUniform2iv_p,
25426                program,
25427                location,
25428                count,
25429                value,
25430            );
25431            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25432            {
25433                self.automatic_glGetError("glProgramUniform2iv");
25434            }
25435            out
25436        }
25437        #[doc(hidden)]
25438        pub unsafe fn ProgramUniform2iv_load_with_dyn(
25439            &self,
25440            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25441        ) -> bool {
25442            load_dyn_name_atomic_ptr(
25443                get_proc_address,
25444                b"glProgramUniform2iv\0",
25445                &self.glProgramUniform2iv_p,
25446            )
25447        }
25448        #[inline]
25449        #[doc(hidden)]
25450        pub fn ProgramUniform2iv_is_loaded(&self) -> bool {
25451            !self.glProgramUniform2iv_p.load(RELAX).is_null()
25452        }
25453        /// [glProgramUniform2ui](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1)
25454        #[cfg_attr(feature = "inline", inline)]
25455        #[cfg_attr(feature = "inline_always", inline(always))]
25456        pub unsafe fn ProgramUniform2ui(
25457            &self,
25458            program: GLuint,
25459            location: GLint,
25460            v0: GLuint,
25461            v1: GLuint,
25462        ) {
25463            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25464            {
25465                trace!(
25466                    "calling gl.ProgramUniform2ui({:?}, {:?}, {:?}, {:?});",
25467                    program,
25468                    location,
25469                    v0,
25470                    v1
25471                );
25472            }
25473            let out = call_atomic_ptr_4arg(
25474                "glProgramUniform2ui",
25475                &self.glProgramUniform2ui_p,
25476                program,
25477                location,
25478                v0,
25479                v1,
25480            );
25481            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25482            {
25483                self.automatic_glGetError("glProgramUniform2ui");
25484            }
25485            out
25486        }
25487        #[doc(hidden)]
25488        pub unsafe fn ProgramUniform2ui_load_with_dyn(
25489            &self,
25490            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25491        ) -> bool {
25492            load_dyn_name_atomic_ptr(
25493                get_proc_address,
25494                b"glProgramUniform2ui\0",
25495                &self.glProgramUniform2ui_p,
25496            )
25497        }
25498        #[inline]
25499        #[doc(hidden)]
25500        pub fn ProgramUniform2ui_is_loaded(&self) -> bool {
25501            !self.glProgramUniform2ui_p.load(RELAX).is_null()
25502        }
25503        /// [glProgramUniform2uiv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25504        /// * `value` len: count*2
25505        #[cfg_attr(feature = "inline", inline)]
25506        #[cfg_attr(feature = "inline_always", inline(always))]
25507        pub unsafe fn ProgramUniform2uiv(
25508            &self,
25509            program: GLuint,
25510            location: GLint,
25511            count: GLsizei,
25512            value: *const GLuint,
25513        ) {
25514            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25515            {
25516                trace!(
25517                    "calling gl.ProgramUniform2uiv({:?}, {:?}, {:?}, {:p});",
25518                    program,
25519                    location,
25520                    count,
25521                    value
25522                );
25523            }
25524            let out = call_atomic_ptr_4arg(
25525                "glProgramUniform2uiv",
25526                &self.glProgramUniform2uiv_p,
25527                program,
25528                location,
25529                count,
25530                value,
25531            );
25532            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25533            {
25534                self.automatic_glGetError("glProgramUniform2uiv");
25535            }
25536            out
25537        }
25538        #[doc(hidden)]
25539        pub unsafe fn ProgramUniform2uiv_load_with_dyn(
25540            &self,
25541            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25542        ) -> bool {
25543            load_dyn_name_atomic_ptr(
25544                get_proc_address,
25545                b"glProgramUniform2uiv\0",
25546                &self.glProgramUniform2uiv_p,
25547            )
25548        }
25549        #[inline]
25550        #[doc(hidden)]
25551        pub fn ProgramUniform2uiv_is_loaded(&self) -> bool {
25552            !self.glProgramUniform2uiv_p.load(RELAX).is_null()
25553        }
25554        /// [glProgramUniform3d](http://docs.gl/gl4/glProgramUniform3d)(program, location, v0, v1, v2)
25555        #[cfg_attr(feature = "inline", inline)]
25556        #[cfg_attr(feature = "inline_always", inline(always))]
25557        pub unsafe fn ProgramUniform3d(
25558            &self,
25559            program: GLuint,
25560            location: GLint,
25561            v0: GLdouble,
25562            v1: GLdouble,
25563            v2: GLdouble,
25564        ) {
25565            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25566            {
25567                trace!(
25568                    "calling gl.ProgramUniform3d({:?}, {:?}, {:?}, {:?}, {:?});",
25569                    program,
25570                    location,
25571                    v0,
25572                    v1,
25573                    v2
25574                );
25575            }
25576            let out = call_atomic_ptr_5arg(
25577                "glProgramUniform3d",
25578                &self.glProgramUniform3d_p,
25579                program,
25580                location,
25581                v0,
25582                v1,
25583                v2,
25584            );
25585            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25586            {
25587                self.automatic_glGetError("glProgramUniform3d");
25588            }
25589            out
25590        }
25591        #[doc(hidden)]
25592        pub unsafe fn ProgramUniform3d_load_with_dyn(
25593            &self,
25594            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25595        ) -> bool {
25596            load_dyn_name_atomic_ptr(
25597                get_proc_address,
25598                b"glProgramUniform3d\0",
25599                &self.glProgramUniform3d_p,
25600            )
25601        }
25602        #[inline]
25603        #[doc(hidden)]
25604        pub fn ProgramUniform3d_is_loaded(&self) -> bool {
25605            !self.glProgramUniform3d_p.load(RELAX).is_null()
25606        }
25607        /// [glProgramUniform3dv](http://docs.gl/gl4/glProgramUniform3dv)(program, location, count, value)
25608        /// * `value` len: count*3
25609        #[cfg_attr(feature = "inline", inline)]
25610        #[cfg_attr(feature = "inline_always", inline(always))]
25611        pub unsafe fn ProgramUniform3dv(
25612            &self,
25613            program: GLuint,
25614            location: GLint,
25615            count: GLsizei,
25616            value: *const GLdouble,
25617        ) {
25618            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25619            {
25620                trace!(
25621                    "calling gl.ProgramUniform3dv({:?}, {:?}, {:?}, {:p});",
25622                    program,
25623                    location,
25624                    count,
25625                    value
25626                );
25627            }
25628            let out = call_atomic_ptr_4arg(
25629                "glProgramUniform3dv",
25630                &self.glProgramUniform3dv_p,
25631                program,
25632                location,
25633                count,
25634                value,
25635            );
25636            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25637            {
25638                self.automatic_glGetError("glProgramUniform3dv");
25639            }
25640            out
25641        }
25642        #[doc(hidden)]
25643        pub unsafe fn ProgramUniform3dv_load_with_dyn(
25644            &self,
25645            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25646        ) -> bool {
25647            load_dyn_name_atomic_ptr(
25648                get_proc_address,
25649                b"glProgramUniform3dv\0",
25650                &self.glProgramUniform3dv_p,
25651            )
25652        }
25653        #[inline]
25654        #[doc(hidden)]
25655        pub fn ProgramUniform3dv_is_loaded(&self) -> bool {
25656            !self.glProgramUniform3dv_p.load(RELAX).is_null()
25657        }
25658        /// [glProgramUniform3f](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1, v2)
25659        #[cfg_attr(feature = "inline", inline)]
25660        #[cfg_attr(feature = "inline_always", inline(always))]
25661        pub unsafe fn ProgramUniform3f(
25662            &self,
25663            program: GLuint,
25664            location: GLint,
25665            v0: GLfloat,
25666            v1: GLfloat,
25667            v2: GLfloat,
25668        ) {
25669            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25670            {
25671                trace!(
25672                    "calling gl.ProgramUniform3f({:?}, {:?}, {:?}, {:?}, {:?});",
25673                    program,
25674                    location,
25675                    v0,
25676                    v1,
25677                    v2
25678                );
25679            }
25680            let out = call_atomic_ptr_5arg(
25681                "glProgramUniform3f",
25682                &self.glProgramUniform3f_p,
25683                program,
25684                location,
25685                v0,
25686                v1,
25687                v2,
25688            );
25689            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25690            {
25691                self.automatic_glGetError("glProgramUniform3f");
25692            }
25693            out
25694        }
25695        #[doc(hidden)]
25696        pub unsafe fn ProgramUniform3f_load_with_dyn(
25697            &self,
25698            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25699        ) -> bool {
25700            load_dyn_name_atomic_ptr(
25701                get_proc_address,
25702                b"glProgramUniform3f\0",
25703                &self.glProgramUniform3f_p,
25704            )
25705        }
25706        #[inline]
25707        #[doc(hidden)]
25708        pub fn ProgramUniform3f_is_loaded(&self) -> bool {
25709            !self.glProgramUniform3f_p.load(RELAX).is_null()
25710        }
25711        /// [glProgramUniform3fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25712        /// * `value` len: count*3
25713        #[cfg_attr(feature = "inline", inline)]
25714        #[cfg_attr(feature = "inline_always", inline(always))]
25715        pub unsafe fn ProgramUniform3fv(
25716            &self,
25717            program: GLuint,
25718            location: GLint,
25719            count: GLsizei,
25720            value: *const GLfloat,
25721        ) {
25722            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25723            {
25724                trace!(
25725                    "calling gl.ProgramUniform3fv({:?}, {:?}, {:?}, {:p});",
25726                    program,
25727                    location,
25728                    count,
25729                    value
25730                );
25731            }
25732            let out = call_atomic_ptr_4arg(
25733                "glProgramUniform3fv",
25734                &self.glProgramUniform3fv_p,
25735                program,
25736                location,
25737                count,
25738                value,
25739            );
25740            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25741            {
25742                self.automatic_glGetError("glProgramUniform3fv");
25743            }
25744            out
25745        }
25746        #[doc(hidden)]
25747        pub unsafe fn ProgramUniform3fv_load_with_dyn(
25748            &self,
25749            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25750        ) -> bool {
25751            load_dyn_name_atomic_ptr(
25752                get_proc_address,
25753                b"glProgramUniform3fv\0",
25754                &self.glProgramUniform3fv_p,
25755            )
25756        }
25757        #[inline]
25758        #[doc(hidden)]
25759        pub fn ProgramUniform3fv_is_loaded(&self) -> bool {
25760            !self.glProgramUniform3fv_p.load(RELAX).is_null()
25761        }
25762        /// [glProgramUniform3i](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1, v2)
25763        #[cfg_attr(feature = "inline", inline)]
25764        #[cfg_attr(feature = "inline_always", inline(always))]
25765        pub unsafe fn ProgramUniform3i(
25766            &self,
25767            program: GLuint,
25768            location: GLint,
25769            v0: GLint,
25770            v1: GLint,
25771            v2: GLint,
25772        ) {
25773            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25774            {
25775                trace!(
25776                    "calling gl.ProgramUniform3i({:?}, {:?}, {:?}, {:?}, {:?});",
25777                    program,
25778                    location,
25779                    v0,
25780                    v1,
25781                    v2
25782                );
25783            }
25784            let out = call_atomic_ptr_5arg(
25785                "glProgramUniform3i",
25786                &self.glProgramUniform3i_p,
25787                program,
25788                location,
25789                v0,
25790                v1,
25791                v2,
25792            );
25793            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25794            {
25795                self.automatic_glGetError("glProgramUniform3i");
25796            }
25797            out
25798        }
25799        #[doc(hidden)]
25800        pub unsafe fn ProgramUniform3i_load_with_dyn(
25801            &self,
25802            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25803        ) -> bool {
25804            load_dyn_name_atomic_ptr(
25805                get_proc_address,
25806                b"glProgramUniform3i\0",
25807                &self.glProgramUniform3i_p,
25808            )
25809        }
25810        #[inline]
25811        #[doc(hidden)]
25812        pub fn ProgramUniform3i_is_loaded(&self) -> bool {
25813            !self.glProgramUniform3i_p.load(RELAX).is_null()
25814        }
25815        /// [glProgramUniform3iv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25816        /// * `value` len: count*3
25817        #[cfg_attr(feature = "inline", inline)]
25818        #[cfg_attr(feature = "inline_always", inline(always))]
25819        pub unsafe fn ProgramUniform3iv(
25820            &self,
25821            program: GLuint,
25822            location: GLint,
25823            count: GLsizei,
25824            value: *const GLint,
25825        ) {
25826            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25827            {
25828                trace!(
25829                    "calling gl.ProgramUniform3iv({:?}, {:?}, {:?}, {:p});",
25830                    program,
25831                    location,
25832                    count,
25833                    value
25834                );
25835            }
25836            let out = call_atomic_ptr_4arg(
25837                "glProgramUniform3iv",
25838                &self.glProgramUniform3iv_p,
25839                program,
25840                location,
25841                count,
25842                value,
25843            );
25844            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25845            {
25846                self.automatic_glGetError("glProgramUniform3iv");
25847            }
25848            out
25849        }
25850        #[doc(hidden)]
25851        pub unsafe fn ProgramUniform3iv_load_with_dyn(
25852            &self,
25853            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
25854        ) -> bool {
25855            load_dyn_name_atomic_ptr(
25856                get_proc_address,
25857                b"glProgramUniform3iv\0",
25858                &self.glProgramUniform3iv_p,
25859            )
25860        }
25861        #[inline]
25862        #[doc(hidden)]
25863        pub fn ProgramUniform3iv_is_loaded(&self) -> bool {
25864            !self.glProgramUniform3iv_p.load(RELAX).is_null()
25865        }
25866        /// [glProgramUniform3ui](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1, v2)
25867        #[cfg_attr(feature = "inline", inline)]
25868        #[cfg_attr(feature = "inline_always", inline(always))]
25869        pub unsafe fn ProgramUniform3ui(
25870            &self,
25871            program: GLuint,
25872            location: GLint,
25873            v0: GLuint,
25874            v1: GLuint,
25875            v2: GLuint,
25876        ) {
25877            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25878            {
25879                trace!(
25880                    "calling gl.ProgramUniform3ui({:?}, {:?}, {:?}, {:?}, {:?});",
25881                    program,
25882                    location,
25883                    v0,
25884                    v1,
25885                    v2
25886                );
25887            }
25888            let out = call_atomic_ptr_5arg(
25889                "glProgramUniform3ui",
25890                &self.glProgramUniform3ui_p,
25891                program,
25892                location,
25893                v0,
25894                v1,
25895                v2,
25896            );
25897            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25898            {
25899                self.automatic_glGetError("glProgramUniform3ui");
25900            }
25901            out
25902        }
25903        #[doc(hidden)]
25904        pub unsafe fn ProgramUniform3ui_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"glProgramUniform3ui\0",
25911                &self.glProgramUniform3ui_p,
25912            )
25913        }
25914        #[inline]
25915        #[doc(hidden)]
25916        pub fn ProgramUniform3ui_is_loaded(&self) -> bool {
25917            !self.glProgramUniform3ui_p.load(RELAX).is_null()
25918        }
25919        /// [glProgramUniform3uiv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
25920        /// * `value` len: count*3
25921        #[cfg_attr(feature = "inline", inline)]
25922        #[cfg_attr(feature = "inline_always", inline(always))]
25923        pub unsafe fn ProgramUniform3uiv(
25924            &self,
25925            program: GLuint,
25926            location: GLint,
25927            count: GLsizei,
25928            value: *const GLuint,
25929        ) {
25930            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25931            {
25932                trace!(
25933                    "calling gl.ProgramUniform3uiv({:?}, {:?}, {:?}, {:p});",
25934                    program,
25935                    location,
25936                    count,
25937                    value
25938                );
25939            }
25940            let out = call_atomic_ptr_4arg(
25941                "glProgramUniform3uiv",
25942                &self.glProgramUniform3uiv_p,
25943                program,
25944                location,
25945                count,
25946                value,
25947            );
25948            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
25949            {
25950                self.automatic_glGetError("glProgramUniform3uiv");
25951            }
25952            out
25953        }
25954        #[doc(hidden)]
25955        pub unsafe fn ProgramUniform3uiv_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"glProgramUniform3uiv\0",
25962                &self.glProgramUniform3uiv_p,
25963            )
25964        }
25965        #[inline]
25966        #[doc(hidden)]
25967        pub fn ProgramUniform3uiv_is_loaded(&self) -> bool {
25968            !self.glProgramUniform3uiv_p.load(RELAX).is_null()
25969        }
25970        /// [glProgramUniform4d](http://docs.gl/gl4/glProgramUniform4d)(program, location, v0, v1, v2, v3)
25971        #[cfg_attr(feature = "inline", inline)]
25972        #[cfg_attr(feature = "inline_always", inline(always))]
25973        pub unsafe fn ProgramUniform4d(
25974            &self,
25975            program: GLuint,
25976            location: GLint,
25977            v0: GLdouble,
25978            v1: GLdouble,
25979            v2: GLdouble,
25980            v3: GLdouble,
25981        ) {
25982            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
25983            {
25984                trace!(
25985                    "calling gl.ProgramUniform4d({:?}, {:?}, {:?}, {:?}, {:?}, {:?});",
25986                    program,
25987                    location,
25988                    v0,
25989                    v1,
25990                    v2,
25991                    v3
25992                );
25993            }
25994            let out = call_atomic_ptr_6arg(
25995                "glProgramUniform4d",
25996                &self.glProgramUniform4d_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("glProgramUniform4d");
26007            }
26008            out
26009        }
26010        #[doc(hidden)]
26011        pub unsafe fn ProgramUniform4d_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"glProgramUniform4d\0",
26018                &self.glProgramUniform4d_p,
26019            )
26020        }
26021        #[inline]
26022        #[doc(hidden)]
26023        pub fn ProgramUniform4d_is_loaded(&self) -> bool {
26024            !self.glProgramUniform4d_p.load(RELAX).is_null()
26025        }
26026        /// [glProgramUniform4dv](http://docs.gl/gl4/glProgramUniform4dv)(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 ProgramUniform4dv(
26031            &self,
26032            program: GLuint,
26033            location: GLint,
26034            count: GLsizei,
26035            value: *const GLdouble,
26036        ) {
26037            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26038            {
26039                trace!(
26040                    "calling gl.ProgramUniform4dv({:?}, {:?}, {:?}, {:p});",
26041                    program,
26042                    location,
26043                    count,
26044                    value
26045                );
26046            }
26047            let out = call_atomic_ptr_4arg(
26048                "glProgramUniform4dv",
26049                &self.glProgramUniform4dv_p,
26050                program,
26051                location,
26052                count,
26053                value,
26054            );
26055            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26056            {
26057                self.automatic_glGetError("glProgramUniform4dv");
26058            }
26059            out
26060        }
26061        #[doc(hidden)]
26062        pub unsafe fn ProgramUniform4dv_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"glProgramUniform4dv\0",
26069                &self.glProgramUniform4dv_p,
26070            )
26071        }
26072        #[inline]
26073        #[doc(hidden)]
26074        pub fn ProgramUniform4dv_is_loaded(&self) -> bool {
26075            !self.glProgramUniform4dv_p.load(RELAX).is_null()
26076        }
26077        /// [glProgramUniform4f](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 ProgramUniform4f(
26081            &self,
26082            program: GLuint,
26083            location: GLint,
26084            v0: GLfloat,
26085            v1: GLfloat,
26086            v2: GLfloat,
26087            v3: GLfloat,
26088        ) {
26089            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26090            {
26091                trace!(
26092                    "calling gl.ProgramUniform4f({:?}, {:?}, {:?}, {:?}, {:?}, {:?});",
26093                    program,
26094                    location,
26095                    v0,
26096                    v1,
26097                    v2,
26098                    v3
26099                );
26100            }
26101            let out = call_atomic_ptr_6arg(
26102                "glProgramUniform4f",
26103                &self.glProgramUniform4f_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("glProgramUniform4f");
26114            }
26115            out
26116        }
26117        #[doc(hidden)]
26118        pub unsafe fn ProgramUniform4f_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"glProgramUniform4f\0",
26125                &self.glProgramUniform4f_p,
26126            )
26127        }
26128        #[inline]
26129        #[doc(hidden)]
26130        pub fn ProgramUniform4f_is_loaded(&self) -> bool {
26131            !self.glProgramUniform4f_p.load(RELAX).is_null()
26132        }
26133        /// [glProgramUniform4fv](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 ProgramUniform4fv(
26138            &self,
26139            program: GLuint,
26140            location: GLint,
26141            count: GLsizei,
26142            value: *const GLfloat,
26143        ) {
26144            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26145            {
26146                trace!(
26147                    "calling gl.ProgramUniform4fv({:?}, {:?}, {:?}, {:p});",
26148                    program,
26149                    location,
26150                    count,
26151                    value
26152                );
26153            }
26154            let out = call_atomic_ptr_4arg(
26155                "glProgramUniform4fv",
26156                &self.glProgramUniform4fv_p,
26157                program,
26158                location,
26159                count,
26160                value,
26161            );
26162            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26163            {
26164                self.automatic_glGetError("glProgramUniform4fv");
26165            }
26166            out
26167        }
26168        #[doc(hidden)]
26169        pub unsafe fn ProgramUniform4fv_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"glProgramUniform4fv\0",
26176                &self.glProgramUniform4fv_p,
26177            )
26178        }
26179        #[inline]
26180        #[doc(hidden)]
26181        pub fn ProgramUniform4fv_is_loaded(&self) -> bool {
26182            !self.glProgramUniform4fv_p.load(RELAX).is_null()
26183        }
26184        /// [glProgramUniform4i](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 ProgramUniform4i(
26188            &self,
26189            program: GLuint,
26190            location: GLint,
26191            v0: GLint,
26192            v1: GLint,
26193            v2: GLint,
26194            v3: GLint,
26195        ) {
26196            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26197            {
26198                trace!(
26199                    "calling gl.ProgramUniform4i({:?}, {:?}, {:?}, {:?}, {:?}, {:?});",
26200                    program,
26201                    location,
26202                    v0,
26203                    v1,
26204                    v2,
26205                    v3
26206                );
26207            }
26208            let out = call_atomic_ptr_6arg(
26209                "glProgramUniform4i",
26210                &self.glProgramUniform4i_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("glProgramUniform4i");
26221            }
26222            out
26223        }
26224        #[doc(hidden)]
26225        pub unsafe fn ProgramUniform4i_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"glProgramUniform4i\0",
26232                &self.glProgramUniform4i_p,
26233            )
26234        }
26235        #[inline]
26236        #[doc(hidden)]
26237        pub fn ProgramUniform4i_is_loaded(&self) -> bool {
26238            !self.glProgramUniform4i_p.load(RELAX).is_null()
26239        }
26240        /// [glProgramUniform4iv](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 ProgramUniform4iv(
26245            &self,
26246            program: GLuint,
26247            location: GLint,
26248            count: GLsizei,
26249            value: *const GLint,
26250        ) {
26251            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26252            {
26253                trace!(
26254                    "calling gl.ProgramUniform4iv({:?}, {:?}, {:?}, {:p});",
26255                    program,
26256                    location,
26257                    count,
26258                    value
26259                );
26260            }
26261            let out = call_atomic_ptr_4arg(
26262                "glProgramUniform4iv",
26263                &self.glProgramUniform4iv_p,
26264                program,
26265                location,
26266                count,
26267                value,
26268            );
26269            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26270            {
26271                self.automatic_glGetError("glProgramUniform4iv");
26272            }
26273            out
26274        }
26275        #[doc(hidden)]
26276        pub unsafe fn ProgramUniform4iv_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"glProgramUniform4iv\0",
26283                &self.glProgramUniform4iv_p,
26284            )
26285        }
26286        #[inline]
26287        #[doc(hidden)]
26288        pub fn ProgramUniform4iv_is_loaded(&self) -> bool {
26289            !self.glProgramUniform4iv_p.load(RELAX).is_null()
26290        }
26291        /// [glProgramUniform4ui](http://docs.gl/gl4/glProgramUniform)(program, location, v0, v1, v2, v3)
26292        #[cfg_attr(feature = "inline", inline)]
26293        #[cfg_attr(feature = "inline_always", inline(always))]
26294        pub unsafe fn ProgramUniform4ui(
26295            &self,
26296            program: GLuint,
26297            location: GLint,
26298            v0: GLuint,
26299            v1: GLuint,
26300            v2: GLuint,
26301            v3: GLuint,
26302        ) {
26303            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26304            {
26305                trace!(
26306                    "calling gl.ProgramUniform4ui({:?}, {:?}, {:?}, {:?}, {:?}, {:?});",
26307                    program,
26308                    location,
26309                    v0,
26310                    v1,
26311                    v2,
26312                    v3
26313                );
26314            }
26315            let out = call_atomic_ptr_6arg(
26316                "glProgramUniform4ui",
26317                &self.glProgramUniform4ui_p,
26318                program,
26319                location,
26320                v0,
26321                v1,
26322                v2,
26323                v3,
26324            );
26325            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26326            {
26327                self.automatic_glGetError("glProgramUniform4ui");
26328            }
26329            out
26330        }
26331        #[doc(hidden)]
26332        pub unsafe fn ProgramUniform4ui_load_with_dyn(
26333            &self,
26334            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26335        ) -> bool {
26336            load_dyn_name_atomic_ptr(
26337                get_proc_address,
26338                b"glProgramUniform4ui\0",
26339                &self.glProgramUniform4ui_p,
26340            )
26341        }
26342        #[inline]
26343        #[doc(hidden)]
26344        pub fn ProgramUniform4ui_is_loaded(&self) -> bool {
26345            !self.glProgramUniform4ui_p.load(RELAX).is_null()
26346        }
26347        /// [glProgramUniform4uiv](http://docs.gl/gl4/glProgramUniform)(program, location, count, value)
26348        /// * `value` len: count*4
26349        #[cfg_attr(feature = "inline", inline)]
26350        #[cfg_attr(feature = "inline_always", inline(always))]
26351        pub unsafe fn ProgramUniform4uiv(
26352            &self,
26353            program: GLuint,
26354            location: GLint,
26355            count: GLsizei,
26356            value: *const GLuint,
26357        ) {
26358            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26359            {
26360                trace!(
26361                    "calling gl.ProgramUniform4uiv({:?}, {:?}, {:?}, {:p});",
26362                    program,
26363                    location,
26364                    count,
26365                    value
26366                );
26367            }
26368            let out = call_atomic_ptr_4arg(
26369                "glProgramUniform4uiv",
26370                &self.glProgramUniform4uiv_p,
26371                program,
26372                location,
26373                count,
26374                value,
26375            );
26376            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26377            {
26378                self.automatic_glGetError("glProgramUniform4uiv");
26379            }
26380            out
26381        }
26382        #[doc(hidden)]
26383        pub unsafe fn ProgramUniform4uiv_load_with_dyn(
26384            &self,
26385            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26386        ) -> bool {
26387            load_dyn_name_atomic_ptr(
26388                get_proc_address,
26389                b"glProgramUniform4uiv\0",
26390                &self.glProgramUniform4uiv_p,
26391            )
26392        }
26393        #[inline]
26394        #[doc(hidden)]
26395        pub fn ProgramUniform4uiv_is_loaded(&self) -> bool {
26396            !self.glProgramUniform4uiv_p.load(RELAX).is_null()
26397        }
26398        /// [glProgramUniformMatrix2dv](http://docs.gl/gl4/glProgramUniformMatrix2dv)(program, location, count, transpose, value)
26399        /// * `value` len: count*4
26400        #[cfg_attr(feature = "inline", inline)]
26401        #[cfg_attr(feature = "inline_always", inline(always))]
26402        pub unsafe fn ProgramUniformMatrix2dv(
26403            &self,
26404            program: GLuint,
26405            location: GLint,
26406            count: GLsizei,
26407            transpose: GLboolean,
26408            value: *const GLdouble,
26409        ) {
26410            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26411            {
26412                trace!(
26413                    "calling gl.ProgramUniformMatrix2dv({:?}, {:?}, {:?}, {:?}, {:p});",
26414                    program,
26415                    location,
26416                    count,
26417                    transpose,
26418                    value
26419                );
26420            }
26421            let out = call_atomic_ptr_5arg(
26422                "glProgramUniformMatrix2dv",
26423                &self.glProgramUniformMatrix2dv_p,
26424                program,
26425                location,
26426                count,
26427                transpose,
26428                value,
26429            );
26430            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26431            {
26432                self.automatic_glGetError("glProgramUniformMatrix2dv");
26433            }
26434            out
26435        }
26436        #[doc(hidden)]
26437        pub unsafe fn ProgramUniformMatrix2dv_load_with_dyn(
26438            &self,
26439            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26440        ) -> bool {
26441            load_dyn_name_atomic_ptr(
26442                get_proc_address,
26443                b"glProgramUniformMatrix2dv\0",
26444                &self.glProgramUniformMatrix2dv_p,
26445            )
26446        }
26447        #[inline]
26448        #[doc(hidden)]
26449        pub fn ProgramUniformMatrix2dv_is_loaded(&self) -> bool {
26450            !self.glProgramUniformMatrix2dv_p.load(RELAX).is_null()
26451        }
26452        /// [glProgramUniformMatrix2fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26453        /// * `value` len: count*4
26454        #[cfg_attr(feature = "inline", inline)]
26455        #[cfg_attr(feature = "inline_always", inline(always))]
26456        pub unsafe fn ProgramUniformMatrix2fv(
26457            &self,
26458            program: GLuint,
26459            location: GLint,
26460            count: GLsizei,
26461            transpose: GLboolean,
26462            value: *const GLfloat,
26463        ) {
26464            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26465            {
26466                trace!(
26467                    "calling gl.ProgramUniformMatrix2fv({:?}, {:?}, {:?}, {:?}, {:p});",
26468                    program,
26469                    location,
26470                    count,
26471                    transpose,
26472                    value
26473                );
26474            }
26475            let out = call_atomic_ptr_5arg(
26476                "glProgramUniformMatrix2fv",
26477                &self.glProgramUniformMatrix2fv_p,
26478                program,
26479                location,
26480                count,
26481                transpose,
26482                value,
26483            );
26484            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26485            {
26486                self.automatic_glGetError("glProgramUniformMatrix2fv");
26487            }
26488            out
26489        }
26490        #[doc(hidden)]
26491        pub unsafe fn ProgramUniformMatrix2fv_load_with_dyn(
26492            &self,
26493            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26494        ) -> bool {
26495            load_dyn_name_atomic_ptr(
26496                get_proc_address,
26497                b"glProgramUniformMatrix2fv\0",
26498                &self.glProgramUniformMatrix2fv_p,
26499            )
26500        }
26501        #[inline]
26502        #[doc(hidden)]
26503        pub fn ProgramUniformMatrix2fv_is_loaded(&self) -> bool {
26504            !self.glProgramUniformMatrix2fv_p.load(RELAX).is_null()
26505        }
26506        /// [glProgramUniformMatrix2x3dv](http://docs.gl/gl4/glProgramUniformMatrix2x3dv)(program, location, count, transpose, value)
26507        /// * `value` len: count*6
26508        #[cfg_attr(feature = "inline", inline)]
26509        #[cfg_attr(feature = "inline_always", inline(always))]
26510        pub unsafe fn ProgramUniformMatrix2x3dv(
26511            &self,
26512            program: GLuint,
26513            location: GLint,
26514            count: GLsizei,
26515            transpose: GLboolean,
26516            value: *const GLdouble,
26517        ) {
26518            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26519            {
26520                trace!(
26521                    "calling gl.ProgramUniformMatrix2x3dv({:?}, {:?}, {:?}, {:?}, {:p});",
26522                    program,
26523                    location,
26524                    count,
26525                    transpose,
26526                    value
26527                );
26528            }
26529            let out = call_atomic_ptr_5arg(
26530                "glProgramUniformMatrix2x3dv",
26531                &self.glProgramUniformMatrix2x3dv_p,
26532                program,
26533                location,
26534                count,
26535                transpose,
26536                value,
26537            );
26538            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26539            {
26540                self.automatic_glGetError("glProgramUniformMatrix2x3dv");
26541            }
26542            out
26543        }
26544        #[doc(hidden)]
26545        pub unsafe fn ProgramUniformMatrix2x3dv_load_with_dyn(
26546            &self,
26547            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26548        ) -> bool {
26549            load_dyn_name_atomic_ptr(
26550                get_proc_address,
26551                b"glProgramUniformMatrix2x3dv\0",
26552                &self.glProgramUniformMatrix2x3dv_p,
26553            )
26554        }
26555        #[inline]
26556        #[doc(hidden)]
26557        pub fn ProgramUniformMatrix2x3dv_is_loaded(&self) -> bool {
26558            !self.glProgramUniformMatrix2x3dv_p.load(RELAX).is_null()
26559        }
26560        /// [glProgramUniformMatrix2x3fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26561        /// * `value` len: count*6
26562        #[cfg_attr(feature = "inline", inline)]
26563        #[cfg_attr(feature = "inline_always", inline(always))]
26564        pub unsafe fn ProgramUniformMatrix2x3fv(
26565            &self,
26566            program: GLuint,
26567            location: GLint,
26568            count: GLsizei,
26569            transpose: GLboolean,
26570            value: *const GLfloat,
26571        ) {
26572            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26573            {
26574                trace!(
26575                    "calling gl.ProgramUniformMatrix2x3fv({:?}, {:?}, {:?}, {:?}, {:p});",
26576                    program,
26577                    location,
26578                    count,
26579                    transpose,
26580                    value
26581                );
26582            }
26583            let out = call_atomic_ptr_5arg(
26584                "glProgramUniformMatrix2x3fv",
26585                &self.glProgramUniformMatrix2x3fv_p,
26586                program,
26587                location,
26588                count,
26589                transpose,
26590                value,
26591            );
26592            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26593            {
26594                self.automatic_glGetError("glProgramUniformMatrix2x3fv");
26595            }
26596            out
26597        }
26598        #[doc(hidden)]
26599        pub unsafe fn ProgramUniformMatrix2x3fv_load_with_dyn(
26600            &self,
26601            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26602        ) -> bool {
26603            load_dyn_name_atomic_ptr(
26604                get_proc_address,
26605                b"glProgramUniformMatrix2x3fv\0",
26606                &self.glProgramUniformMatrix2x3fv_p,
26607            )
26608        }
26609        #[inline]
26610        #[doc(hidden)]
26611        pub fn ProgramUniformMatrix2x3fv_is_loaded(&self) -> bool {
26612            !self.glProgramUniformMatrix2x3fv_p.load(RELAX).is_null()
26613        }
26614        /// [glProgramUniformMatrix2x4dv](http://docs.gl/gl4/glProgramUniformMatrix2x4dv)(program, location, count, transpose, value)
26615        /// * `value` len: count*8
26616        #[cfg_attr(feature = "inline", inline)]
26617        #[cfg_attr(feature = "inline_always", inline(always))]
26618        pub unsafe fn ProgramUniformMatrix2x4dv(
26619            &self,
26620            program: GLuint,
26621            location: GLint,
26622            count: GLsizei,
26623            transpose: GLboolean,
26624            value: *const GLdouble,
26625        ) {
26626            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26627            {
26628                trace!(
26629                    "calling gl.ProgramUniformMatrix2x4dv({:?}, {:?}, {:?}, {:?}, {:p});",
26630                    program,
26631                    location,
26632                    count,
26633                    transpose,
26634                    value
26635                );
26636            }
26637            let out = call_atomic_ptr_5arg(
26638                "glProgramUniformMatrix2x4dv",
26639                &self.glProgramUniformMatrix2x4dv_p,
26640                program,
26641                location,
26642                count,
26643                transpose,
26644                value,
26645            );
26646            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26647            {
26648                self.automatic_glGetError("glProgramUniformMatrix2x4dv");
26649            }
26650            out
26651        }
26652        #[doc(hidden)]
26653        pub unsafe fn ProgramUniformMatrix2x4dv_load_with_dyn(
26654            &self,
26655            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26656        ) -> bool {
26657            load_dyn_name_atomic_ptr(
26658                get_proc_address,
26659                b"glProgramUniformMatrix2x4dv\0",
26660                &self.glProgramUniformMatrix2x4dv_p,
26661            )
26662        }
26663        #[inline]
26664        #[doc(hidden)]
26665        pub fn ProgramUniformMatrix2x4dv_is_loaded(&self) -> bool {
26666            !self.glProgramUniformMatrix2x4dv_p.load(RELAX).is_null()
26667        }
26668        /// [glProgramUniformMatrix2x4fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26669        /// * `value` len: count*8
26670        #[cfg_attr(feature = "inline", inline)]
26671        #[cfg_attr(feature = "inline_always", inline(always))]
26672        pub unsafe fn ProgramUniformMatrix2x4fv(
26673            &self,
26674            program: GLuint,
26675            location: GLint,
26676            count: GLsizei,
26677            transpose: GLboolean,
26678            value: *const GLfloat,
26679        ) {
26680            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26681            {
26682                trace!(
26683                    "calling gl.ProgramUniformMatrix2x4fv({:?}, {:?}, {:?}, {:?}, {:p});",
26684                    program,
26685                    location,
26686                    count,
26687                    transpose,
26688                    value
26689                );
26690            }
26691            let out = call_atomic_ptr_5arg(
26692                "glProgramUniformMatrix2x4fv",
26693                &self.glProgramUniformMatrix2x4fv_p,
26694                program,
26695                location,
26696                count,
26697                transpose,
26698                value,
26699            );
26700            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26701            {
26702                self.automatic_glGetError("glProgramUniformMatrix2x4fv");
26703            }
26704            out
26705        }
26706        #[doc(hidden)]
26707        pub unsafe fn ProgramUniformMatrix2x4fv_load_with_dyn(
26708            &self,
26709            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26710        ) -> bool {
26711            load_dyn_name_atomic_ptr(
26712                get_proc_address,
26713                b"glProgramUniformMatrix2x4fv\0",
26714                &self.glProgramUniformMatrix2x4fv_p,
26715            )
26716        }
26717        #[inline]
26718        #[doc(hidden)]
26719        pub fn ProgramUniformMatrix2x4fv_is_loaded(&self) -> bool {
26720            !self.glProgramUniformMatrix2x4fv_p.load(RELAX).is_null()
26721        }
26722        /// [glProgramUniformMatrix3dv](http://docs.gl/gl4/glProgramUniformMatrix3dv)(program, location, count, transpose, value)
26723        /// * `value` len: count*9
26724        #[cfg_attr(feature = "inline", inline)]
26725        #[cfg_attr(feature = "inline_always", inline(always))]
26726        pub unsafe fn ProgramUniformMatrix3dv(
26727            &self,
26728            program: GLuint,
26729            location: GLint,
26730            count: GLsizei,
26731            transpose: GLboolean,
26732            value: *const GLdouble,
26733        ) {
26734            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26735            {
26736                trace!(
26737                    "calling gl.ProgramUniformMatrix3dv({:?}, {:?}, {:?}, {:?}, {:p});",
26738                    program,
26739                    location,
26740                    count,
26741                    transpose,
26742                    value
26743                );
26744            }
26745            let out = call_atomic_ptr_5arg(
26746                "glProgramUniformMatrix3dv",
26747                &self.glProgramUniformMatrix3dv_p,
26748                program,
26749                location,
26750                count,
26751                transpose,
26752                value,
26753            );
26754            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26755            {
26756                self.automatic_glGetError("glProgramUniformMatrix3dv");
26757            }
26758            out
26759        }
26760        #[doc(hidden)]
26761        pub unsafe fn ProgramUniformMatrix3dv_load_with_dyn(
26762            &self,
26763            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26764        ) -> bool {
26765            load_dyn_name_atomic_ptr(
26766                get_proc_address,
26767                b"glProgramUniformMatrix3dv\0",
26768                &self.glProgramUniformMatrix3dv_p,
26769            )
26770        }
26771        #[inline]
26772        #[doc(hidden)]
26773        pub fn ProgramUniformMatrix3dv_is_loaded(&self) -> bool {
26774            !self.glProgramUniformMatrix3dv_p.load(RELAX).is_null()
26775        }
26776        /// [glProgramUniformMatrix3fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26777        /// * `value` len: count*9
26778        #[cfg_attr(feature = "inline", inline)]
26779        #[cfg_attr(feature = "inline_always", inline(always))]
26780        pub unsafe fn ProgramUniformMatrix3fv(
26781            &self,
26782            program: GLuint,
26783            location: GLint,
26784            count: GLsizei,
26785            transpose: GLboolean,
26786            value: *const GLfloat,
26787        ) {
26788            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26789            {
26790                trace!(
26791                    "calling gl.ProgramUniformMatrix3fv({:?}, {:?}, {:?}, {:?}, {:p});",
26792                    program,
26793                    location,
26794                    count,
26795                    transpose,
26796                    value
26797                );
26798            }
26799            let out = call_atomic_ptr_5arg(
26800                "glProgramUniformMatrix3fv",
26801                &self.glProgramUniformMatrix3fv_p,
26802                program,
26803                location,
26804                count,
26805                transpose,
26806                value,
26807            );
26808            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26809            {
26810                self.automatic_glGetError("glProgramUniformMatrix3fv");
26811            }
26812            out
26813        }
26814        #[doc(hidden)]
26815        pub unsafe fn ProgramUniformMatrix3fv_load_with_dyn(
26816            &self,
26817            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26818        ) -> bool {
26819            load_dyn_name_atomic_ptr(
26820                get_proc_address,
26821                b"glProgramUniformMatrix3fv\0",
26822                &self.glProgramUniformMatrix3fv_p,
26823            )
26824        }
26825        #[inline]
26826        #[doc(hidden)]
26827        pub fn ProgramUniformMatrix3fv_is_loaded(&self) -> bool {
26828            !self.glProgramUniformMatrix3fv_p.load(RELAX).is_null()
26829        }
26830        /// [glProgramUniformMatrix3x2dv](http://docs.gl/gl4/glProgramUniformMatrix3x2dv)(program, location, count, transpose, value)
26831        /// * `value` len: count*6
26832        #[cfg_attr(feature = "inline", inline)]
26833        #[cfg_attr(feature = "inline_always", inline(always))]
26834        pub unsafe fn ProgramUniformMatrix3x2dv(
26835            &self,
26836            program: GLuint,
26837            location: GLint,
26838            count: GLsizei,
26839            transpose: GLboolean,
26840            value: *const GLdouble,
26841        ) {
26842            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26843            {
26844                trace!(
26845                    "calling gl.ProgramUniformMatrix3x2dv({:?}, {:?}, {:?}, {:?}, {:p});",
26846                    program,
26847                    location,
26848                    count,
26849                    transpose,
26850                    value
26851                );
26852            }
26853            let out = call_atomic_ptr_5arg(
26854                "glProgramUniformMatrix3x2dv",
26855                &self.glProgramUniformMatrix3x2dv_p,
26856                program,
26857                location,
26858                count,
26859                transpose,
26860                value,
26861            );
26862            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26863            {
26864                self.automatic_glGetError("glProgramUniformMatrix3x2dv");
26865            }
26866            out
26867        }
26868        #[doc(hidden)]
26869        pub unsafe fn ProgramUniformMatrix3x2dv_load_with_dyn(
26870            &self,
26871            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26872        ) -> bool {
26873            load_dyn_name_atomic_ptr(
26874                get_proc_address,
26875                b"glProgramUniformMatrix3x2dv\0",
26876                &self.glProgramUniformMatrix3x2dv_p,
26877            )
26878        }
26879        #[inline]
26880        #[doc(hidden)]
26881        pub fn ProgramUniformMatrix3x2dv_is_loaded(&self) -> bool {
26882            !self.glProgramUniformMatrix3x2dv_p.load(RELAX).is_null()
26883        }
26884        /// [glProgramUniformMatrix3x2fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26885        /// * `value` len: count*6
26886        #[cfg_attr(feature = "inline", inline)]
26887        #[cfg_attr(feature = "inline_always", inline(always))]
26888        pub unsafe fn ProgramUniformMatrix3x2fv(
26889            &self,
26890            program: GLuint,
26891            location: GLint,
26892            count: GLsizei,
26893            transpose: GLboolean,
26894            value: *const GLfloat,
26895        ) {
26896            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26897            {
26898                trace!(
26899                    "calling gl.ProgramUniformMatrix3x2fv({:?}, {:?}, {:?}, {:?}, {:p});",
26900                    program,
26901                    location,
26902                    count,
26903                    transpose,
26904                    value
26905                );
26906            }
26907            let out = call_atomic_ptr_5arg(
26908                "glProgramUniformMatrix3x2fv",
26909                &self.glProgramUniformMatrix3x2fv_p,
26910                program,
26911                location,
26912                count,
26913                transpose,
26914                value,
26915            );
26916            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26917            {
26918                self.automatic_glGetError("glProgramUniformMatrix3x2fv");
26919            }
26920            out
26921        }
26922        #[doc(hidden)]
26923        pub unsafe fn ProgramUniformMatrix3x2fv_load_with_dyn(
26924            &self,
26925            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26926        ) -> bool {
26927            load_dyn_name_atomic_ptr(
26928                get_proc_address,
26929                b"glProgramUniformMatrix3x2fv\0",
26930                &self.glProgramUniformMatrix3x2fv_p,
26931            )
26932        }
26933        #[inline]
26934        #[doc(hidden)]
26935        pub fn ProgramUniformMatrix3x2fv_is_loaded(&self) -> bool {
26936            !self.glProgramUniformMatrix3x2fv_p.load(RELAX).is_null()
26937        }
26938        /// [glProgramUniformMatrix3x4dv](http://docs.gl/gl4/glProgramUniformMatrix3x4dv)(program, location, count, transpose, value)
26939        /// * `value` len: count*12
26940        #[cfg_attr(feature = "inline", inline)]
26941        #[cfg_attr(feature = "inline_always", inline(always))]
26942        pub unsafe fn ProgramUniformMatrix3x4dv(
26943            &self,
26944            program: GLuint,
26945            location: GLint,
26946            count: GLsizei,
26947            transpose: GLboolean,
26948            value: *const GLdouble,
26949        ) {
26950            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
26951            {
26952                trace!(
26953                    "calling gl.ProgramUniformMatrix3x4dv({:?}, {:?}, {:?}, {:?}, {:p});",
26954                    program,
26955                    location,
26956                    count,
26957                    transpose,
26958                    value
26959                );
26960            }
26961            let out = call_atomic_ptr_5arg(
26962                "glProgramUniformMatrix3x4dv",
26963                &self.glProgramUniformMatrix3x4dv_p,
26964                program,
26965                location,
26966                count,
26967                transpose,
26968                value,
26969            );
26970            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
26971            {
26972                self.automatic_glGetError("glProgramUniformMatrix3x4dv");
26973            }
26974            out
26975        }
26976        #[doc(hidden)]
26977        pub unsafe fn ProgramUniformMatrix3x4dv_load_with_dyn(
26978            &self,
26979            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
26980        ) -> bool {
26981            load_dyn_name_atomic_ptr(
26982                get_proc_address,
26983                b"glProgramUniformMatrix3x4dv\0",
26984                &self.glProgramUniformMatrix3x4dv_p,
26985            )
26986        }
26987        #[inline]
26988        #[doc(hidden)]
26989        pub fn ProgramUniformMatrix3x4dv_is_loaded(&self) -> bool {
26990            !self.glProgramUniformMatrix3x4dv_p.load(RELAX).is_null()
26991        }
26992        /// [glProgramUniformMatrix3x4fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
26993        /// * `value` len: count*12
26994        #[cfg_attr(feature = "inline", inline)]
26995        #[cfg_attr(feature = "inline_always", inline(always))]
26996        pub unsafe fn ProgramUniformMatrix3x4fv(
26997            &self,
26998            program: GLuint,
26999            location: GLint,
27000            count: GLsizei,
27001            transpose: GLboolean,
27002            value: *const GLfloat,
27003        ) {
27004            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27005            {
27006                trace!(
27007                    "calling gl.ProgramUniformMatrix3x4fv({:?}, {:?}, {:?}, {:?}, {:p});",
27008                    program,
27009                    location,
27010                    count,
27011                    transpose,
27012                    value
27013                );
27014            }
27015            let out = call_atomic_ptr_5arg(
27016                "glProgramUniformMatrix3x4fv",
27017                &self.glProgramUniformMatrix3x4fv_p,
27018                program,
27019                location,
27020                count,
27021                transpose,
27022                value,
27023            );
27024            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27025            {
27026                self.automatic_glGetError("glProgramUniformMatrix3x4fv");
27027            }
27028            out
27029        }
27030        #[doc(hidden)]
27031        pub unsafe fn ProgramUniformMatrix3x4fv_load_with_dyn(
27032            &self,
27033            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27034        ) -> bool {
27035            load_dyn_name_atomic_ptr(
27036                get_proc_address,
27037                b"glProgramUniformMatrix3x4fv\0",
27038                &self.glProgramUniformMatrix3x4fv_p,
27039            )
27040        }
27041        #[inline]
27042        #[doc(hidden)]
27043        pub fn ProgramUniformMatrix3x4fv_is_loaded(&self) -> bool {
27044            !self.glProgramUniformMatrix3x4fv_p.load(RELAX).is_null()
27045        }
27046        /// [glProgramUniformMatrix4dv](http://docs.gl/gl4/glProgramUniformMatrix4dv)(program, location, count, transpose, value)
27047        /// * `value` len: count*16
27048        #[cfg_attr(feature = "inline", inline)]
27049        #[cfg_attr(feature = "inline_always", inline(always))]
27050        pub unsafe fn ProgramUniformMatrix4dv(
27051            &self,
27052            program: GLuint,
27053            location: GLint,
27054            count: GLsizei,
27055            transpose: GLboolean,
27056            value: *const GLdouble,
27057        ) {
27058            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27059            {
27060                trace!(
27061                    "calling gl.ProgramUniformMatrix4dv({:?}, {:?}, {:?}, {:?}, {:p});",
27062                    program,
27063                    location,
27064                    count,
27065                    transpose,
27066                    value
27067                );
27068            }
27069            let out = call_atomic_ptr_5arg(
27070                "glProgramUniformMatrix4dv",
27071                &self.glProgramUniformMatrix4dv_p,
27072                program,
27073                location,
27074                count,
27075                transpose,
27076                value,
27077            );
27078            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27079            {
27080                self.automatic_glGetError("glProgramUniformMatrix4dv");
27081            }
27082            out
27083        }
27084        #[doc(hidden)]
27085        pub unsafe fn ProgramUniformMatrix4dv_load_with_dyn(
27086            &self,
27087            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27088        ) -> bool {
27089            load_dyn_name_atomic_ptr(
27090                get_proc_address,
27091                b"glProgramUniformMatrix4dv\0",
27092                &self.glProgramUniformMatrix4dv_p,
27093            )
27094        }
27095        #[inline]
27096        #[doc(hidden)]
27097        pub fn ProgramUniformMatrix4dv_is_loaded(&self) -> bool {
27098            !self.glProgramUniformMatrix4dv_p.load(RELAX).is_null()
27099        }
27100        /// [glProgramUniformMatrix4fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
27101        /// * `value` len: count*16
27102        #[cfg_attr(feature = "inline", inline)]
27103        #[cfg_attr(feature = "inline_always", inline(always))]
27104        pub unsafe fn ProgramUniformMatrix4fv(
27105            &self,
27106            program: GLuint,
27107            location: GLint,
27108            count: GLsizei,
27109            transpose: GLboolean,
27110            value: *const GLfloat,
27111        ) {
27112            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27113            {
27114                trace!(
27115                    "calling gl.ProgramUniformMatrix4fv({:?}, {:?}, {:?}, {:?}, {:p});",
27116                    program,
27117                    location,
27118                    count,
27119                    transpose,
27120                    value
27121                );
27122            }
27123            let out = call_atomic_ptr_5arg(
27124                "glProgramUniformMatrix4fv",
27125                &self.glProgramUniformMatrix4fv_p,
27126                program,
27127                location,
27128                count,
27129                transpose,
27130                value,
27131            );
27132            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27133            {
27134                self.automatic_glGetError("glProgramUniformMatrix4fv");
27135            }
27136            out
27137        }
27138        #[doc(hidden)]
27139        pub unsafe fn ProgramUniformMatrix4fv_load_with_dyn(
27140            &self,
27141            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27142        ) -> bool {
27143            load_dyn_name_atomic_ptr(
27144                get_proc_address,
27145                b"glProgramUniformMatrix4fv\0",
27146                &self.glProgramUniformMatrix4fv_p,
27147            )
27148        }
27149        #[inline]
27150        #[doc(hidden)]
27151        pub fn ProgramUniformMatrix4fv_is_loaded(&self) -> bool {
27152            !self.glProgramUniformMatrix4fv_p.load(RELAX).is_null()
27153        }
27154        /// [glProgramUniformMatrix4x2dv](http://docs.gl/gl4/glProgramUniformMatrix4x2dv)(program, location, count, transpose, value)
27155        /// * `value` len: count*8
27156        #[cfg_attr(feature = "inline", inline)]
27157        #[cfg_attr(feature = "inline_always", inline(always))]
27158        pub unsafe fn ProgramUniformMatrix4x2dv(
27159            &self,
27160            program: GLuint,
27161            location: GLint,
27162            count: GLsizei,
27163            transpose: GLboolean,
27164            value: *const GLdouble,
27165        ) {
27166            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27167            {
27168                trace!(
27169                    "calling gl.ProgramUniformMatrix4x2dv({:?}, {:?}, {:?}, {:?}, {:p});",
27170                    program,
27171                    location,
27172                    count,
27173                    transpose,
27174                    value
27175                );
27176            }
27177            let out = call_atomic_ptr_5arg(
27178                "glProgramUniformMatrix4x2dv",
27179                &self.glProgramUniformMatrix4x2dv_p,
27180                program,
27181                location,
27182                count,
27183                transpose,
27184                value,
27185            );
27186            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27187            {
27188                self.automatic_glGetError("glProgramUniformMatrix4x2dv");
27189            }
27190            out
27191        }
27192        #[doc(hidden)]
27193        pub unsafe fn ProgramUniformMatrix4x2dv_load_with_dyn(
27194            &self,
27195            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27196        ) -> bool {
27197            load_dyn_name_atomic_ptr(
27198                get_proc_address,
27199                b"glProgramUniformMatrix4x2dv\0",
27200                &self.glProgramUniformMatrix4x2dv_p,
27201            )
27202        }
27203        #[inline]
27204        #[doc(hidden)]
27205        pub fn ProgramUniformMatrix4x2dv_is_loaded(&self) -> bool {
27206            !self.glProgramUniformMatrix4x2dv_p.load(RELAX).is_null()
27207        }
27208        /// [glProgramUniformMatrix4x2fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
27209        /// * `value` len: count*8
27210        #[cfg_attr(feature = "inline", inline)]
27211        #[cfg_attr(feature = "inline_always", inline(always))]
27212        pub unsafe fn ProgramUniformMatrix4x2fv(
27213            &self,
27214            program: GLuint,
27215            location: GLint,
27216            count: GLsizei,
27217            transpose: GLboolean,
27218            value: *const GLfloat,
27219        ) {
27220            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27221            {
27222                trace!(
27223                    "calling gl.ProgramUniformMatrix4x2fv({:?}, {:?}, {:?}, {:?}, {:p});",
27224                    program,
27225                    location,
27226                    count,
27227                    transpose,
27228                    value
27229                );
27230            }
27231            let out = call_atomic_ptr_5arg(
27232                "glProgramUniformMatrix4x2fv",
27233                &self.glProgramUniformMatrix4x2fv_p,
27234                program,
27235                location,
27236                count,
27237                transpose,
27238                value,
27239            );
27240            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27241            {
27242                self.automatic_glGetError("glProgramUniformMatrix4x2fv");
27243            }
27244            out
27245        }
27246        #[doc(hidden)]
27247        pub unsafe fn ProgramUniformMatrix4x2fv_load_with_dyn(
27248            &self,
27249            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27250        ) -> bool {
27251            load_dyn_name_atomic_ptr(
27252                get_proc_address,
27253                b"glProgramUniformMatrix4x2fv\0",
27254                &self.glProgramUniformMatrix4x2fv_p,
27255            )
27256        }
27257        #[inline]
27258        #[doc(hidden)]
27259        pub fn ProgramUniformMatrix4x2fv_is_loaded(&self) -> bool {
27260            !self.glProgramUniformMatrix4x2fv_p.load(RELAX).is_null()
27261        }
27262        /// [glProgramUniformMatrix4x3dv](http://docs.gl/gl4/glProgramUniformMatrix4x3dv)(program, location, count, transpose, value)
27263        /// * `value` len: count*12
27264        #[cfg_attr(feature = "inline", inline)]
27265        #[cfg_attr(feature = "inline_always", inline(always))]
27266        pub unsafe fn ProgramUniformMatrix4x3dv(
27267            &self,
27268            program: GLuint,
27269            location: GLint,
27270            count: GLsizei,
27271            transpose: GLboolean,
27272            value: *const GLdouble,
27273        ) {
27274            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27275            {
27276                trace!(
27277                    "calling gl.ProgramUniformMatrix4x3dv({:?}, {:?}, {:?}, {:?}, {:p});",
27278                    program,
27279                    location,
27280                    count,
27281                    transpose,
27282                    value
27283                );
27284            }
27285            let out = call_atomic_ptr_5arg(
27286                "glProgramUniformMatrix4x3dv",
27287                &self.glProgramUniformMatrix4x3dv_p,
27288                program,
27289                location,
27290                count,
27291                transpose,
27292                value,
27293            );
27294            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27295            {
27296                self.automatic_glGetError("glProgramUniformMatrix4x3dv");
27297            }
27298            out
27299        }
27300        #[doc(hidden)]
27301        pub unsafe fn ProgramUniformMatrix4x3dv_load_with_dyn(
27302            &self,
27303            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27304        ) -> bool {
27305            load_dyn_name_atomic_ptr(
27306                get_proc_address,
27307                b"glProgramUniformMatrix4x3dv\0",
27308                &self.glProgramUniformMatrix4x3dv_p,
27309            )
27310        }
27311        #[inline]
27312        #[doc(hidden)]
27313        pub fn ProgramUniformMatrix4x3dv_is_loaded(&self) -> bool {
27314            !self.glProgramUniformMatrix4x3dv_p.load(RELAX).is_null()
27315        }
27316        /// [glProgramUniformMatrix4x3fv](http://docs.gl/gl4/glProgramUniform)(program, location, count, transpose, value)
27317        /// * `value` len: count*12
27318        #[cfg_attr(feature = "inline", inline)]
27319        #[cfg_attr(feature = "inline_always", inline(always))]
27320        pub unsafe fn ProgramUniformMatrix4x3fv(
27321            &self,
27322            program: GLuint,
27323            location: GLint,
27324            count: GLsizei,
27325            transpose: GLboolean,
27326            value: *const GLfloat,
27327        ) {
27328            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27329            {
27330                trace!(
27331                    "calling gl.ProgramUniformMatrix4x3fv({:?}, {:?}, {:?}, {:?}, {:p});",
27332                    program,
27333                    location,
27334                    count,
27335                    transpose,
27336                    value
27337                );
27338            }
27339            let out = call_atomic_ptr_5arg(
27340                "glProgramUniformMatrix4x3fv",
27341                &self.glProgramUniformMatrix4x3fv_p,
27342                program,
27343                location,
27344                count,
27345                transpose,
27346                value,
27347            );
27348            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27349            {
27350                self.automatic_glGetError("glProgramUniformMatrix4x3fv");
27351            }
27352            out
27353        }
27354        #[doc(hidden)]
27355        pub unsafe fn ProgramUniformMatrix4x3fv_load_with_dyn(
27356            &self,
27357            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27358        ) -> bool {
27359            load_dyn_name_atomic_ptr(
27360                get_proc_address,
27361                b"glProgramUniformMatrix4x3fv\0",
27362                &self.glProgramUniformMatrix4x3fv_p,
27363            )
27364        }
27365        #[inline]
27366        #[doc(hidden)]
27367        pub fn ProgramUniformMatrix4x3fv_is_loaded(&self) -> bool {
27368            !self.glProgramUniformMatrix4x3fv_p.load(RELAX).is_null()
27369        }
27370        /// [glProvokingVertex](http://docs.gl/gl4/glProvokingVertex)(mode)
27371        /// * `mode` group: VertexProvokingMode
27372        #[cfg_attr(feature = "inline", inline)]
27373        #[cfg_attr(feature = "inline_always", inline(always))]
27374        pub unsafe fn ProvokingVertex(&self, mode: GLenum) {
27375            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27376            {
27377                trace!("calling gl.ProvokingVertex({:#X});", mode);
27378            }
27379            let out = call_atomic_ptr_1arg("glProvokingVertex", &self.glProvokingVertex_p, mode);
27380            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27381            {
27382                self.automatic_glGetError("glProvokingVertex");
27383            }
27384            out
27385        }
27386        #[doc(hidden)]
27387        pub unsafe fn ProvokingVertex_load_with_dyn(
27388            &self,
27389            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27390        ) -> bool {
27391            load_dyn_name_atomic_ptr(
27392                get_proc_address,
27393                b"glProvokingVertex\0",
27394                &self.glProvokingVertex_p,
27395            )
27396        }
27397        #[inline]
27398        #[doc(hidden)]
27399        pub fn ProvokingVertex_is_loaded(&self) -> bool {
27400            !self.glProvokingVertex_p.load(RELAX).is_null()
27401        }
27402        /// [glPushDebugGroup](http://docs.gl/gl4/glPushDebugGroup)(source, id, length, message)
27403        /// * `source` group: DebugSource
27404        /// * `message` len: COMPSIZE(message,length)
27405        #[cfg_attr(feature = "inline", inline)]
27406        #[cfg_attr(feature = "inline_always", inline(always))]
27407        pub unsafe fn PushDebugGroup(
27408            &self,
27409            source: GLenum,
27410            id: GLuint,
27411            length: GLsizei,
27412            message: *const GLchar,
27413        ) {
27414            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27415            {
27416                trace!(
27417                    "calling gl.PushDebugGroup({:#X}, {:?}, {:?}, {:p});",
27418                    source,
27419                    id,
27420                    length,
27421                    message
27422                );
27423            }
27424            let out = call_atomic_ptr_4arg(
27425                "glPushDebugGroup",
27426                &self.glPushDebugGroup_p,
27427                source,
27428                id,
27429                length,
27430                message,
27431            );
27432            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27433            {
27434                self.automatic_glGetError("glPushDebugGroup");
27435            }
27436            out
27437        }
27438        #[doc(hidden)]
27439        pub unsafe fn PushDebugGroup_load_with_dyn(
27440            &self,
27441            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27442        ) -> bool {
27443            load_dyn_name_atomic_ptr(
27444                get_proc_address,
27445                b"glPushDebugGroup\0",
27446                &self.glPushDebugGroup_p,
27447            )
27448        }
27449        #[inline]
27450        #[doc(hidden)]
27451        pub fn PushDebugGroup_is_loaded(&self) -> bool {
27452            !self.glPushDebugGroup_p.load(RELAX).is_null()
27453        }
27454        /// [glPushDebugGroupKHR](http://docs.gl/gl4/glPushDebugGroupKHR)(source, id, length, message)
27455        /// * `source` group: DebugSource
27456        /// * alias of: [`glPushDebugGroup`]
27457        #[cfg_attr(feature = "inline", inline)]
27458        #[cfg_attr(feature = "inline_always", inline(always))]
27459        pub unsafe fn PushDebugGroupKHR(
27460            &self,
27461            source: GLenum,
27462            id: GLuint,
27463            length: GLsizei,
27464            message: *const GLchar,
27465        ) {
27466            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27467            {
27468                trace!(
27469                    "calling gl.PushDebugGroupKHR({:#X}, {:?}, {:?}, {:p});",
27470                    source,
27471                    id,
27472                    length,
27473                    message
27474                );
27475            }
27476            let out = call_atomic_ptr_4arg(
27477                "glPushDebugGroupKHR",
27478                &self.glPushDebugGroupKHR_p,
27479                source,
27480                id,
27481                length,
27482                message,
27483            );
27484            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27485            {
27486                self.automatic_glGetError("glPushDebugGroupKHR");
27487            }
27488            out
27489        }
27490        #[doc(hidden)]
27491        pub unsafe fn PushDebugGroupKHR_load_with_dyn(
27492            &self,
27493            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27494        ) -> bool {
27495            load_dyn_name_atomic_ptr(
27496                get_proc_address,
27497                b"glPushDebugGroupKHR\0",
27498                &self.glPushDebugGroupKHR_p,
27499            )
27500        }
27501        #[inline]
27502        #[doc(hidden)]
27503        pub fn PushDebugGroupKHR_is_loaded(&self) -> bool {
27504            !self.glPushDebugGroupKHR_p.load(RELAX).is_null()
27505        }
27506        /// [glQueryCounter](http://docs.gl/gl4/glQueryCounter)(id, target)
27507        /// * `target` group: QueryCounterTarget
27508        #[cfg_attr(feature = "inline", inline)]
27509        #[cfg_attr(feature = "inline_always", inline(always))]
27510        pub unsafe fn QueryCounter(&self, id: GLuint, target: GLenum) {
27511            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27512            {
27513                trace!("calling gl.QueryCounter({:?}, {:#X});", id, target);
27514            }
27515            let out = call_atomic_ptr_2arg("glQueryCounter", &self.glQueryCounter_p, id, target);
27516            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27517            {
27518                self.automatic_glGetError("glQueryCounter");
27519            }
27520            out
27521        }
27522        #[doc(hidden)]
27523        pub unsafe fn QueryCounter_load_with_dyn(
27524            &self,
27525            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27526        ) -> bool {
27527            load_dyn_name_atomic_ptr(
27528                get_proc_address,
27529                b"glQueryCounter\0",
27530                &self.glQueryCounter_p,
27531            )
27532        }
27533        #[inline]
27534        #[doc(hidden)]
27535        pub fn QueryCounter_is_loaded(&self) -> bool {
27536            !self.glQueryCounter_p.load(RELAX).is_null()
27537        }
27538        /// [glQueryCounterEXT](http://docs.gl/gl4/glQueryCounterEXT)(id, target)
27539        /// * `target` group: QueryCounterTarget
27540        /// * alias of: [`glQueryCounter`]
27541        #[cfg_attr(feature = "inline", inline)]
27542        #[cfg_attr(feature = "inline_always", inline(always))]
27543        pub unsafe fn QueryCounterEXT(&self, id: GLuint, target: GLenum) {
27544            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27545            {
27546                trace!("calling gl.QueryCounterEXT({:?}, {:#X});", id, target);
27547            }
27548            let out =
27549                call_atomic_ptr_2arg("glQueryCounterEXT", &self.glQueryCounterEXT_p, id, target);
27550            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27551            {
27552                self.automatic_glGetError("glQueryCounterEXT");
27553            }
27554            out
27555        }
27556        #[doc(hidden)]
27557        pub unsafe fn QueryCounterEXT_load_with_dyn(
27558            &self,
27559            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27560        ) -> bool {
27561            load_dyn_name_atomic_ptr(
27562                get_proc_address,
27563                b"glQueryCounterEXT\0",
27564                &self.glQueryCounterEXT_p,
27565            )
27566        }
27567        #[inline]
27568        #[doc(hidden)]
27569        pub fn QueryCounterEXT_is_loaded(&self) -> bool {
27570            !self.glQueryCounterEXT_p.load(RELAX).is_null()
27571        }
27572        /// [glReadBuffer](http://docs.gl/gl4/glReadBuffer)(src)
27573        /// * `src` group: ReadBufferMode
27574        #[cfg_attr(feature = "inline", inline)]
27575        #[cfg_attr(feature = "inline_always", inline(always))]
27576        pub unsafe fn ReadBuffer(&self, src: GLenum) {
27577            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27578            {
27579                trace!("calling gl.ReadBuffer({:#X});", src);
27580            }
27581            let out = call_atomic_ptr_1arg("glReadBuffer", &self.glReadBuffer_p, src);
27582            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27583            {
27584                self.automatic_glGetError("glReadBuffer");
27585            }
27586            out
27587        }
27588        #[doc(hidden)]
27589        pub unsafe fn ReadBuffer_load_with_dyn(
27590            &self,
27591            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27592        ) -> bool {
27593            load_dyn_name_atomic_ptr(get_proc_address, b"glReadBuffer\0", &self.glReadBuffer_p)
27594        }
27595        #[inline]
27596        #[doc(hidden)]
27597        pub fn ReadBuffer_is_loaded(&self) -> bool {
27598            !self.glReadBuffer_p.load(RELAX).is_null()
27599        }
27600        /// [glReadPixels](http://docs.gl/gl4/glReadPixels)(x, y, width, height, format, type_, pixels)
27601        /// * `x` group: WinCoord
27602        /// * `y` group: WinCoord
27603        /// * `format` group: PixelFormat
27604        /// * `type_` group: PixelType
27605        /// * `pixels` len: COMPSIZE(format,type,width,height)
27606        #[cfg_attr(feature = "inline", inline)]
27607        #[cfg_attr(feature = "inline_always", inline(always))]
27608        pub unsafe fn ReadPixels(
27609            &self,
27610            x: GLint,
27611            y: GLint,
27612            width: GLsizei,
27613            height: GLsizei,
27614            format: GLenum,
27615            type_: GLenum,
27616            pixels: *mut c_void,
27617        ) {
27618            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27619            {
27620                trace!(
27621                    "calling gl.ReadPixels({:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});",
27622                    x,
27623                    y,
27624                    width,
27625                    height,
27626                    format,
27627                    type_,
27628                    pixels
27629                );
27630            }
27631            let out = call_atomic_ptr_7arg(
27632                "glReadPixels",
27633                &self.glReadPixels_p,
27634                x,
27635                y,
27636                width,
27637                height,
27638                format,
27639                type_,
27640                pixels,
27641            );
27642            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27643            {
27644                self.automatic_glGetError("glReadPixels");
27645            }
27646            out
27647        }
27648        #[doc(hidden)]
27649        pub unsafe fn ReadPixels_load_with_dyn(
27650            &self,
27651            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27652        ) -> bool {
27653            load_dyn_name_atomic_ptr(get_proc_address, b"glReadPixels\0", &self.glReadPixels_p)
27654        }
27655        #[inline]
27656        #[doc(hidden)]
27657        pub fn ReadPixels_is_loaded(&self) -> bool {
27658            !self.glReadPixels_p.load(RELAX).is_null()
27659        }
27660        /// [glReadnPixels](http://docs.gl/gl4/glReadnPixels)(x, y, width, height, format, type_, bufSize, data)
27661        /// * `format` group: PixelFormat
27662        /// * `type_` group: PixelType
27663        /// * `data` len: bufSize
27664        #[cfg_attr(feature = "inline", inline)]
27665        #[cfg_attr(feature = "inline_always", inline(always))]
27666        pub unsafe fn ReadnPixels(
27667            &self,
27668            x: GLint,
27669            y: GLint,
27670            width: GLsizei,
27671            height: GLsizei,
27672            format: GLenum,
27673            type_: GLenum,
27674            bufSize: GLsizei,
27675            data: *mut c_void,
27676        ) {
27677            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27678            {
27679                trace!(
27680                    "calling gl.ReadnPixels({:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:?}, {:p});",
27681                    x,
27682                    y,
27683                    width,
27684                    height,
27685                    format,
27686                    type_,
27687                    bufSize,
27688                    data
27689                );
27690            }
27691            let out = call_atomic_ptr_8arg(
27692                "glReadnPixels",
27693                &self.glReadnPixels_p,
27694                x,
27695                y,
27696                width,
27697                height,
27698                format,
27699                type_,
27700                bufSize,
27701                data,
27702            );
27703            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27704            {
27705                self.automatic_glGetError("glReadnPixels");
27706            }
27707            out
27708        }
27709        #[doc(hidden)]
27710        pub unsafe fn ReadnPixels_load_with_dyn(
27711            &self,
27712            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27713        ) -> bool {
27714            load_dyn_name_atomic_ptr(get_proc_address, b"glReadnPixels\0", &self.glReadnPixels_p)
27715        }
27716        #[inline]
27717        #[doc(hidden)]
27718        pub fn ReadnPixels_is_loaded(&self) -> bool {
27719            !self.glReadnPixels_p.load(RELAX).is_null()
27720        }
27721        /// [glReleaseShaderCompiler](http://docs.gl/gl4/glReleaseShaderCompiler)()
27722        #[cfg_attr(feature = "inline", inline)]
27723        #[cfg_attr(feature = "inline_always", inline(always))]
27724        pub unsafe fn ReleaseShaderCompiler(&self) {
27725            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27726            {
27727                trace!("calling gl.ReleaseShaderCompiler();",);
27728            }
27729            let out =
27730                call_atomic_ptr_0arg("glReleaseShaderCompiler", &self.glReleaseShaderCompiler_p);
27731            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27732            {
27733                self.automatic_glGetError("glReleaseShaderCompiler");
27734            }
27735            out
27736        }
27737        #[doc(hidden)]
27738        pub unsafe fn ReleaseShaderCompiler_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"glReleaseShaderCompiler\0",
27745                &self.glReleaseShaderCompiler_p,
27746            )
27747        }
27748        #[inline]
27749        #[doc(hidden)]
27750        pub fn ReleaseShaderCompiler_is_loaded(&self) -> bool {
27751            !self.glReleaseShaderCompiler_p.load(RELAX).is_null()
27752        }
27753        /// [glRenderbufferStorage](http://docs.gl/gl4/glRenderbufferStorage)(target, internalformat, width, height)
27754        /// * `target` group: RenderbufferTarget
27755        /// * `internalformat` group: InternalFormat
27756        #[cfg_attr(feature = "inline", inline)]
27757        #[cfg_attr(feature = "inline_always", inline(always))]
27758        pub unsafe fn RenderbufferStorage(
27759            &self,
27760            target: GLenum,
27761            internalformat: GLenum,
27762            width: GLsizei,
27763            height: GLsizei,
27764        ) {
27765            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27766            {
27767                trace!(
27768                    "calling gl.RenderbufferStorage({:#X}, {:#X}, {:?}, {:?});",
27769                    target,
27770                    internalformat,
27771                    width,
27772                    height
27773                );
27774            }
27775            let out = call_atomic_ptr_4arg(
27776                "glRenderbufferStorage",
27777                &self.glRenderbufferStorage_p,
27778                target,
27779                internalformat,
27780                width,
27781                height,
27782            );
27783            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27784            {
27785                self.automatic_glGetError("glRenderbufferStorage");
27786            }
27787            out
27788        }
27789        #[doc(hidden)]
27790        pub unsafe fn RenderbufferStorage_load_with_dyn(
27791            &self,
27792            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27793        ) -> bool {
27794            load_dyn_name_atomic_ptr(
27795                get_proc_address,
27796                b"glRenderbufferStorage\0",
27797                &self.glRenderbufferStorage_p,
27798            )
27799        }
27800        #[inline]
27801        #[doc(hidden)]
27802        pub fn RenderbufferStorage_is_loaded(&self) -> bool {
27803            !self.glRenderbufferStorage_p.load(RELAX).is_null()
27804        }
27805        /// [glRenderbufferStorageMultisample](http://docs.gl/gl4/glRenderbufferStorageMultisample)(target, samples, internalformat, width, height)
27806        /// * `target` group: RenderbufferTarget
27807        /// * `internalformat` group: InternalFormat
27808        #[cfg_attr(feature = "inline", inline)]
27809        #[cfg_attr(feature = "inline_always", inline(always))]
27810        pub unsafe fn RenderbufferStorageMultisample(
27811            &self,
27812            target: GLenum,
27813            samples: GLsizei,
27814            internalformat: GLenum,
27815            width: GLsizei,
27816            height: GLsizei,
27817        ) {
27818            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27819            {
27820                trace!(
27821                    "calling gl.RenderbufferStorageMultisample({:#X}, {:?}, {:#X}, {:?}, {:?});",
27822                    target,
27823                    samples,
27824                    internalformat,
27825                    width,
27826                    height
27827                );
27828            }
27829            let out = call_atomic_ptr_5arg(
27830                "glRenderbufferStorageMultisample",
27831                &self.glRenderbufferStorageMultisample_p,
27832                target,
27833                samples,
27834                internalformat,
27835                width,
27836                height,
27837            );
27838            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27839            {
27840                self.automatic_glGetError("glRenderbufferStorageMultisample");
27841            }
27842            out
27843        }
27844        #[doc(hidden)]
27845        pub unsafe fn RenderbufferStorageMultisample_load_with_dyn(
27846            &self,
27847            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27848        ) -> bool {
27849            load_dyn_name_atomic_ptr(
27850                get_proc_address,
27851                b"glRenderbufferStorageMultisample\0",
27852                &self.glRenderbufferStorageMultisample_p,
27853            )
27854        }
27855        #[inline]
27856        #[doc(hidden)]
27857        pub fn RenderbufferStorageMultisample_is_loaded(&self) -> bool {
27858            !self
27859                .glRenderbufferStorageMultisample_p
27860                .load(RELAX)
27861                .is_null()
27862        }
27863        /// [glRenderbufferStorageMultisampleEXT](http://docs.gl/gl4/glRenderbufferStorageMultisampleEXT)(target, samples, internalformat, width, height)
27864        /// * `target` group: RenderbufferTarget
27865        /// * `internalformat` group: InternalFormat
27866        /// * alias of: [`glRenderbufferStorageMultisample`]
27867        #[cfg_attr(feature = "inline", inline)]
27868        #[cfg_attr(feature = "inline_always", inline(always))]
27869        #[cfg_attr(
27870            docs_rs,
27871            doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
27872        )]
27873        pub unsafe fn RenderbufferStorageMultisampleEXT(
27874            &self,
27875            target: GLenum,
27876            samples: GLsizei,
27877            internalformat: GLenum,
27878            width: GLsizei,
27879            height: GLsizei,
27880        ) {
27881            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27882            {
27883                trace!(
27884                    "calling gl.RenderbufferStorageMultisampleEXT({:#X}, {:?}, {:#X}, {:?}, {:?});",
27885                    target,
27886                    samples,
27887                    internalformat,
27888                    width,
27889                    height
27890                );
27891            }
27892            let out = call_atomic_ptr_5arg(
27893                "glRenderbufferStorageMultisampleEXT",
27894                &self.glRenderbufferStorageMultisampleEXT_p,
27895                target,
27896                samples,
27897                internalformat,
27898                width,
27899                height,
27900            );
27901            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27902            {
27903                self.automatic_glGetError("glRenderbufferStorageMultisampleEXT");
27904            }
27905            out
27906        }
27907        #[cfg_attr(
27908            docs_rs,
27909            doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
27910        )]
27911        #[doc(hidden)]
27912        pub unsafe fn RenderbufferStorageMultisampleEXT_load_with_dyn(
27913            &self,
27914            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27915        ) -> bool {
27916            load_dyn_name_atomic_ptr(
27917                get_proc_address,
27918                b"glRenderbufferStorageMultisampleEXT\0",
27919                &self.glRenderbufferStorageMultisampleEXT_p,
27920            )
27921        }
27922        #[inline]
27923        #[doc(hidden)]
27924        #[cfg_attr(
27925            docs_rs,
27926            doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
27927        )]
27928        pub fn RenderbufferStorageMultisampleEXT_is_loaded(&self) -> bool {
27929            !self
27930                .glRenderbufferStorageMultisampleEXT_p
27931                .load(RELAX)
27932                .is_null()
27933        }
27934        /// [glResumeTransformFeedback](http://docs.gl/gl4/glResumeTransformFeedback)()
27935        #[cfg_attr(feature = "inline", inline)]
27936        #[cfg_attr(feature = "inline_always", inline(always))]
27937        pub unsafe fn ResumeTransformFeedback(&self) {
27938            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27939            {
27940                trace!("calling gl.ResumeTransformFeedback();",);
27941            }
27942            let out = call_atomic_ptr_0arg(
27943                "glResumeTransformFeedback",
27944                &self.glResumeTransformFeedback_p,
27945            );
27946            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27947            {
27948                self.automatic_glGetError("glResumeTransformFeedback");
27949            }
27950            out
27951        }
27952        #[doc(hidden)]
27953        pub unsafe fn ResumeTransformFeedback_load_with_dyn(
27954            &self,
27955            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27956        ) -> bool {
27957            load_dyn_name_atomic_ptr(
27958                get_proc_address,
27959                b"glResumeTransformFeedback\0",
27960                &self.glResumeTransformFeedback_p,
27961            )
27962        }
27963        #[inline]
27964        #[doc(hidden)]
27965        pub fn ResumeTransformFeedback_is_loaded(&self) -> bool {
27966            !self.glResumeTransformFeedback_p.load(RELAX).is_null()
27967        }
27968        /// [glSampleCoverage](http://docs.gl/gl4/glSampleCoverage)(value, invert)
27969        #[cfg_attr(feature = "inline", inline)]
27970        #[cfg_attr(feature = "inline_always", inline(always))]
27971        pub unsafe fn SampleCoverage(&self, value: GLfloat, invert: GLboolean) {
27972            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
27973            {
27974                trace!("calling gl.SampleCoverage({:?}, {:?});", value, invert);
27975            }
27976            let out =
27977                call_atomic_ptr_2arg("glSampleCoverage", &self.glSampleCoverage_p, value, invert);
27978            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
27979            {
27980                self.automatic_glGetError("glSampleCoverage");
27981            }
27982            out
27983        }
27984        #[doc(hidden)]
27985        pub unsafe fn SampleCoverage_load_with_dyn(
27986            &self,
27987            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
27988        ) -> bool {
27989            load_dyn_name_atomic_ptr(
27990                get_proc_address,
27991                b"glSampleCoverage\0",
27992                &self.glSampleCoverage_p,
27993            )
27994        }
27995        #[inline]
27996        #[doc(hidden)]
27997        pub fn SampleCoverage_is_loaded(&self) -> bool {
27998            !self.glSampleCoverage_p.load(RELAX).is_null()
27999        }
28000        /// [glSampleMaski](http://docs.gl/gl4/glSampleMask)(maskNumber, mask)
28001        #[cfg_attr(feature = "inline", inline)]
28002        #[cfg_attr(feature = "inline_always", inline(always))]
28003        pub unsafe fn SampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) {
28004            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28005            {
28006                trace!("calling gl.SampleMaski({:?}, {:?});", maskNumber, mask);
28007            }
28008            let out =
28009                call_atomic_ptr_2arg("glSampleMaski", &self.glSampleMaski_p, maskNumber, mask);
28010            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28011            {
28012                self.automatic_glGetError("glSampleMaski");
28013            }
28014            out
28015        }
28016        #[doc(hidden)]
28017        pub unsafe fn SampleMaski_load_with_dyn(
28018            &self,
28019            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28020        ) -> bool {
28021            load_dyn_name_atomic_ptr(get_proc_address, b"glSampleMaski\0", &self.glSampleMaski_p)
28022        }
28023        #[inline]
28024        #[doc(hidden)]
28025        pub fn SampleMaski_is_loaded(&self) -> bool {
28026            !self.glSampleMaski_p.load(RELAX).is_null()
28027        }
28028        /// [glSamplerParameterIiv](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
28029        /// * `pname` group: SamplerParameterI
28030        /// * `param` len: COMPSIZE(pname)
28031        #[cfg_attr(feature = "inline", inline)]
28032        #[cfg_attr(feature = "inline_always", inline(always))]
28033        pub unsafe fn SamplerParameterIiv(
28034            &self,
28035            sampler: GLuint,
28036            pname: GLenum,
28037            param: *const GLint,
28038        ) {
28039            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28040            {
28041                trace!(
28042                    "calling gl.SamplerParameterIiv({:?}, {:#X}, {:p});",
28043                    sampler,
28044                    pname,
28045                    param
28046                );
28047            }
28048            let out = call_atomic_ptr_3arg(
28049                "glSamplerParameterIiv",
28050                &self.glSamplerParameterIiv_p,
28051                sampler,
28052                pname,
28053                param,
28054            );
28055            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28056            {
28057                self.automatic_glGetError("glSamplerParameterIiv");
28058            }
28059            out
28060        }
28061        #[doc(hidden)]
28062        pub unsafe fn SamplerParameterIiv_load_with_dyn(
28063            &self,
28064            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28065        ) -> bool {
28066            load_dyn_name_atomic_ptr(
28067                get_proc_address,
28068                b"glSamplerParameterIiv\0",
28069                &self.glSamplerParameterIiv_p,
28070            )
28071        }
28072        #[inline]
28073        #[doc(hidden)]
28074        pub fn SamplerParameterIiv_is_loaded(&self) -> bool {
28075            !self.glSamplerParameterIiv_p.load(RELAX).is_null()
28076        }
28077        /// [glSamplerParameterIuiv](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
28078        /// * `pname` group: SamplerParameterI
28079        /// * `param` len: COMPSIZE(pname)
28080        #[cfg_attr(feature = "inline", inline)]
28081        #[cfg_attr(feature = "inline_always", inline(always))]
28082        pub unsafe fn SamplerParameterIuiv(
28083            &self,
28084            sampler: GLuint,
28085            pname: GLenum,
28086            param: *const GLuint,
28087        ) {
28088            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28089            {
28090                trace!(
28091                    "calling gl.SamplerParameterIuiv({:?}, {:#X}, {:p});",
28092                    sampler,
28093                    pname,
28094                    param
28095                );
28096            }
28097            let out = call_atomic_ptr_3arg(
28098                "glSamplerParameterIuiv",
28099                &self.glSamplerParameterIuiv_p,
28100                sampler,
28101                pname,
28102                param,
28103            );
28104            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28105            {
28106                self.automatic_glGetError("glSamplerParameterIuiv");
28107            }
28108            out
28109        }
28110        #[doc(hidden)]
28111        pub unsafe fn SamplerParameterIuiv_load_with_dyn(
28112            &self,
28113            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28114        ) -> bool {
28115            load_dyn_name_atomic_ptr(
28116                get_proc_address,
28117                b"glSamplerParameterIuiv\0",
28118                &self.glSamplerParameterIuiv_p,
28119            )
28120        }
28121        #[inline]
28122        #[doc(hidden)]
28123        pub fn SamplerParameterIuiv_is_loaded(&self) -> bool {
28124            !self.glSamplerParameterIuiv_p.load(RELAX).is_null()
28125        }
28126        /// [glSamplerParameterf](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
28127        /// * `pname` group: SamplerParameterF
28128        #[cfg_attr(feature = "inline", inline)]
28129        #[cfg_attr(feature = "inline_always", inline(always))]
28130        pub unsafe fn SamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) {
28131            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28132            {
28133                trace!(
28134                    "calling gl.SamplerParameterf({:?}, {:#X}, {:?});",
28135                    sampler,
28136                    pname,
28137                    param
28138                );
28139            }
28140            let out = call_atomic_ptr_3arg(
28141                "glSamplerParameterf",
28142                &self.glSamplerParameterf_p,
28143                sampler,
28144                pname,
28145                param,
28146            );
28147            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28148            {
28149                self.automatic_glGetError("glSamplerParameterf");
28150            }
28151            out
28152        }
28153        #[doc(hidden)]
28154        pub unsafe fn SamplerParameterf_load_with_dyn(
28155            &self,
28156            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28157        ) -> bool {
28158            load_dyn_name_atomic_ptr(
28159                get_proc_address,
28160                b"glSamplerParameterf\0",
28161                &self.glSamplerParameterf_p,
28162            )
28163        }
28164        #[inline]
28165        #[doc(hidden)]
28166        pub fn SamplerParameterf_is_loaded(&self) -> bool {
28167            !self.glSamplerParameterf_p.load(RELAX).is_null()
28168        }
28169        /// [glSamplerParameterfv](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
28170        /// * `pname` group: SamplerParameterF
28171        /// * `param` len: COMPSIZE(pname)
28172        #[cfg_attr(feature = "inline", inline)]
28173        #[cfg_attr(feature = "inline_always", inline(always))]
28174        pub unsafe fn SamplerParameterfv(
28175            &self,
28176            sampler: GLuint,
28177            pname: GLenum,
28178            param: *const GLfloat,
28179        ) {
28180            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28181            {
28182                trace!(
28183                    "calling gl.SamplerParameterfv({:?}, {:#X}, {:p});",
28184                    sampler,
28185                    pname,
28186                    param
28187                );
28188            }
28189            let out = call_atomic_ptr_3arg(
28190                "glSamplerParameterfv",
28191                &self.glSamplerParameterfv_p,
28192                sampler,
28193                pname,
28194                param,
28195            );
28196            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28197            {
28198                self.automatic_glGetError("glSamplerParameterfv");
28199            }
28200            out
28201        }
28202        #[doc(hidden)]
28203        pub unsafe fn SamplerParameterfv_load_with_dyn(
28204            &self,
28205            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28206        ) -> bool {
28207            load_dyn_name_atomic_ptr(
28208                get_proc_address,
28209                b"glSamplerParameterfv\0",
28210                &self.glSamplerParameterfv_p,
28211            )
28212        }
28213        #[inline]
28214        #[doc(hidden)]
28215        pub fn SamplerParameterfv_is_loaded(&self) -> bool {
28216            !self.glSamplerParameterfv_p.load(RELAX).is_null()
28217        }
28218        /// [glSamplerParameteri](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
28219        /// * `pname` group: SamplerParameterI
28220        #[cfg_attr(feature = "inline", inline)]
28221        #[cfg_attr(feature = "inline_always", inline(always))]
28222        pub unsafe fn SamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) {
28223            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28224            {
28225                trace!(
28226                    "calling gl.SamplerParameteri({:?}, {:#X}, {:?});",
28227                    sampler,
28228                    pname,
28229                    param
28230                );
28231            }
28232            let out = call_atomic_ptr_3arg(
28233                "glSamplerParameteri",
28234                &self.glSamplerParameteri_p,
28235                sampler,
28236                pname,
28237                param,
28238            );
28239            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28240            {
28241                self.automatic_glGetError("glSamplerParameteri");
28242            }
28243            out
28244        }
28245        #[doc(hidden)]
28246        pub unsafe fn SamplerParameteri_load_with_dyn(
28247            &self,
28248            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28249        ) -> bool {
28250            load_dyn_name_atomic_ptr(
28251                get_proc_address,
28252                b"glSamplerParameteri\0",
28253                &self.glSamplerParameteri_p,
28254            )
28255        }
28256        #[inline]
28257        #[doc(hidden)]
28258        pub fn SamplerParameteri_is_loaded(&self) -> bool {
28259            !self.glSamplerParameteri_p.load(RELAX).is_null()
28260        }
28261        /// [glSamplerParameteriv](http://docs.gl/gl4/glSamplerParameter)(sampler, pname, param)
28262        /// * `pname` group: SamplerParameterI
28263        /// * `param` len: COMPSIZE(pname)
28264        #[cfg_attr(feature = "inline", inline)]
28265        #[cfg_attr(feature = "inline_always", inline(always))]
28266        pub unsafe fn SamplerParameteriv(
28267            &self,
28268            sampler: GLuint,
28269            pname: GLenum,
28270            param: *const GLint,
28271        ) {
28272            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28273            {
28274                trace!(
28275                    "calling gl.SamplerParameteriv({:?}, {:#X}, {:p});",
28276                    sampler,
28277                    pname,
28278                    param
28279                );
28280            }
28281            let out = call_atomic_ptr_3arg(
28282                "glSamplerParameteriv",
28283                &self.glSamplerParameteriv_p,
28284                sampler,
28285                pname,
28286                param,
28287            );
28288            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28289            {
28290                self.automatic_glGetError("glSamplerParameteriv");
28291            }
28292            out
28293        }
28294        #[doc(hidden)]
28295        pub unsafe fn SamplerParameteriv_load_with_dyn(
28296            &self,
28297            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28298        ) -> bool {
28299            load_dyn_name_atomic_ptr(
28300                get_proc_address,
28301                b"glSamplerParameteriv\0",
28302                &self.glSamplerParameteriv_p,
28303            )
28304        }
28305        #[inline]
28306        #[doc(hidden)]
28307        pub fn SamplerParameteriv_is_loaded(&self) -> bool {
28308            !self.glSamplerParameteriv_p.load(RELAX).is_null()
28309        }
28310        /// [glScissor](http://docs.gl/gl4/glScissor)(x, y, width, height)
28311        /// * `x` group: WinCoord
28312        /// * `y` group: WinCoord
28313        #[cfg_attr(feature = "inline", inline)]
28314        #[cfg_attr(feature = "inline_always", inline(always))]
28315        pub unsafe fn Scissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) {
28316            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28317            {
28318                trace!(
28319                    "calling gl.Scissor({:?}, {:?}, {:?}, {:?});",
28320                    x,
28321                    y,
28322                    width,
28323                    height
28324                );
28325            }
28326            let out = call_atomic_ptr_4arg("glScissor", &self.glScissor_p, x, y, width, height);
28327            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28328            {
28329                self.automatic_glGetError("glScissor");
28330            }
28331            out
28332        }
28333        #[doc(hidden)]
28334        pub unsafe fn Scissor_load_with_dyn(
28335            &self,
28336            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28337        ) -> bool {
28338            load_dyn_name_atomic_ptr(get_proc_address, b"glScissor\0", &self.glScissor_p)
28339        }
28340        #[inline]
28341        #[doc(hidden)]
28342        pub fn Scissor_is_loaded(&self) -> bool {
28343            !self.glScissor_p.load(RELAX).is_null()
28344        }
28345        /// [glScissorArrayv](http://docs.gl/gl4/glScissorArrayv)(first, count, v)
28346        /// * `v` len: COMPSIZE(count)
28347        #[cfg_attr(feature = "inline", inline)]
28348        #[cfg_attr(feature = "inline_always", inline(always))]
28349        pub unsafe fn ScissorArrayv(&self, first: GLuint, count: GLsizei, v: *const GLint) {
28350            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28351            {
28352                trace!(
28353                    "calling gl.ScissorArrayv({:?}, {:?}, {:p});",
28354                    first,
28355                    count,
28356                    v
28357                );
28358            }
28359            let out =
28360                call_atomic_ptr_3arg("glScissorArrayv", &self.glScissorArrayv_p, first, count, v);
28361            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28362            {
28363                self.automatic_glGetError("glScissorArrayv");
28364            }
28365            out
28366        }
28367        #[doc(hidden)]
28368        pub unsafe fn ScissorArrayv_load_with_dyn(
28369            &self,
28370            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28371        ) -> bool {
28372            load_dyn_name_atomic_ptr(
28373                get_proc_address,
28374                b"glScissorArrayv\0",
28375                &self.glScissorArrayv_p,
28376            )
28377        }
28378        #[inline]
28379        #[doc(hidden)]
28380        pub fn ScissorArrayv_is_loaded(&self) -> bool {
28381            !self.glScissorArrayv_p.load(RELAX).is_null()
28382        }
28383        /// [glScissorIndexed](http://docs.gl/gl4/glScissorIndexed)(index, left, bottom, width, height)
28384        #[cfg_attr(feature = "inline", inline)]
28385        #[cfg_attr(feature = "inline_always", inline(always))]
28386        pub unsafe fn ScissorIndexed(
28387            &self,
28388            index: GLuint,
28389            left: GLint,
28390            bottom: GLint,
28391            width: GLsizei,
28392            height: GLsizei,
28393        ) {
28394            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28395            {
28396                trace!(
28397                    "calling gl.ScissorIndexed({:?}, {:?}, {:?}, {:?}, {:?});",
28398                    index,
28399                    left,
28400                    bottom,
28401                    width,
28402                    height
28403                );
28404            }
28405            let out = call_atomic_ptr_5arg(
28406                "glScissorIndexed",
28407                &self.glScissorIndexed_p,
28408                index,
28409                left,
28410                bottom,
28411                width,
28412                height,
28413            );
28414            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28415            {
28416                self.automatic_glGetError("glScissorIndexed");
28417            }
28418            out
28419        }
28420        #[doc(hidden)]
28421        pub unsafe fn ScissorIndexed_load_with_dyn(
28422            &self,
28423            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28424        ) -> bool {
28425            load_dyn_name_atomic_ptr(
28426                get_proc_address,
28427                b"glScissorIndexed\0",
28428                &self.glScissorIndexed_p,
28429            )
28430        }
28431        #[inline]
28432        #[doc(hidden)]
28433        pub fn ScissorIndexed_is_loaded(&self) -> bool {
28434            !self.glScissorIndexed_p.load(RELAX).is_null()
28435        }
28436        /// [glScissorIndexedv](http://docs.gl/gl4/glScissorIndexedv)(index, v)
28437        /// * `v` len: 4
28438        #[cfg_attr(feature = "inline", inline)]
28439        #[cfg_attr(feature = "inline_always", inline(always))]
28440        pub unsafe fn ScissorIndexedv(&self, index: GLuint, v: *const GLint) {
28441            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28442            {
28443                trace!("calling gl.ScissorIndexedv({:?}, {:p});", index, v);
28444            }
28445            let out =
28446                call_atomic_ptr_2arg("glScissorIndexedv", &self.glScissorIndexedv_p, index, v);
28447            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28448            {
28449                self.automatic_glGetError("glScissorIndexedv");
28450            }
28451            out
28452        }
28453        #[doc(hidden)]
28454        pub unsafe fn ScissorIndexedv_load_with_dyn(
28455            &self,
28456            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28457        ) -> bool {
28458            load_dyn_name_atomic_ptr(
28459                get_proc_address,
28460                b"glScissorIndexedv\0",
28461                &self.glScissorIndexedv_p,
28462            )
28463        }
28464        #[inline]
28465        #[doc(hidden)]
28466        pub fn ScissorIndexedv_is_loaded(&self) -> bool {
28467            !self.glScissorIndexedv_p.load(RELAX).is_null()
28468        }
28469        /// [glShaderBinary](http://docs.gl/gl4/glShaderBinary)(count, shaders, binaryFormat, binary, length)
28470        /// * `shaders` len: count
28471        /// * `binaryFormat` group: ShaderBinaryFormat
28472        /// * `binary` len: length
28473        #[cfg_attr(feature = "inline", inline)]
28474        #[cfg_attr(feature = "inline_always", inline(always))]
28475        pub unsafe fn ShaderBinary(
28476            &self,
28477            count: GLsizei,
28478            shaders: *const GLuint,
28479            binaryFormat: GLenum,
28480            binary: *const c_void,
28481            length: GLsizei,
28482        ) {
28483            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28484            {
28485                trace!(
28486                    "calling gl.ShaderBinary({:?}, {:p}, {:#X}, {:p}, {:?});",
28487                    count,
28488                    shaders,
28489                    binaryFormat,
28490                    binary,
28491                    length
28492                );
28493            }
28494            let out = call_atomic_ptr_5arg(
28495                "glShaderBinary",
28496                &self.glShaderBinary_p,
28497                count,
28498                shaders,
28499                binaryFormat,
28500                binary,
28501                length,
28502            );
28503            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28504            {
28505                self.automatic_glGetError("glShaderBinary");
28506            }
28507            out
28508        }
28509        #[doc(hidden)]
28510        pub unsafe fn ShaderBinary_load_with_dyn(
28511            &self,
28512            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28513        ) -> bool {
28514            load_dyn_name_atomic_ptr(
28515                get_proc_address,
28516                b"glShaderBinary\0",
28517                &self.glShaderBinary_p,
28518            )
28519        }
28520        #[inline]
28521        #[doc(hidden)]
28522        pub fn ShaderBinary_is_loaded(&self) -> bool {
28523            !self.glShaderBinary_p.load(RELAX).is_null()
28524        }
28525        /// [glShaderSource](http://docs.gl/gl4/glShaderSource)(shader, count, string, length)
28526        /// * `string` len: count
28527        /// * `length` len: count
28528        #[cfg_attr(feature = "inline", inline)]
28529        #[cfg_attr(feature = "inline_always", inline(always))]
28530        pub unsafe fn ShaderSource(
28531            &self,
28532            shader: GLuint,
28533            count: GLsizei,
28534            string: *const *const GLchar,
28535            length: *const GLint,
28536        ) {
28537            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28538            {
28539                trace!(
28540                    "calling gl.ShaderSource({:?}, {:?}, {:p}, {:p});",
28541                    shader,
28542                    count,
28543                    string,
28544                    length
28545                );
28546            }
28547            let out = call_atomic_ptr_4arg(
28548                "glShaderSource",
28549                &self.glShaderSource_p,
28550                shader,
28551                count,
28552                string,
28553                length,
28554            );
28555            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28556            {
28557                self.automatic_glGetError("glShaderSource");
28558            }
28559            out
28560        }
28561        #[doc(hidden)]
28562        pub unsafe fn ShaderSource_load_with_dyn(
28563            &self,
28564            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28565        ) -> bool {
28566            load_dyn_name_atomic_ptr(
28567                get_proc_address,
28568                b"glShaderSource\0",
28569                &self.glShaderSource_p,
28570            )
28571        }
28572        #[inline]
28573        #[doc(hidden)]
28574        pub fn ShaderSource_is_loaded(&self) -> bool {
28575            !self.glShaderSource_p.load(RELAX).is_null()
28576        }
28577        /// [glShaderStorageBlockBinding](http://docs.gl/gl4/glShaderStorageBlockBinding)(program, storageBlockIndex, storageBlockBinding)
28578        #[cfg_attr(feature = "inline", inline)]
28579        #[cfg_attr(feature = "inline_always", inline(always))]
28580        pub unsafe fn ShaderStorageBlockBinding(
28581            &self,
28582            program: GLuint,
28583            storageBlockIndex: GLuint,
28584            storageBlockBinding: GLuint,
28585        ) {
28586            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28587            {
28588                trace!(
28589                    "calling gl.ShaderStorageBlockBinding({:?}, {:?}, {:?});",
28590                    program,
28591                    storageBlockIndex,
28592                    storageBlockBinding
28593                );
28594            }
28595            let out = call_atomic_ptr_3arg(
28596                "glShaderStorageBlockBinding",
28597                &self.glShaderStorageBlockBinding_p,
28598                program,
28599                storageBlockIndex,
28600                storageBlockBinding,
28601            );
28602            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28603            {
28604                self.automatic_glGetError("glShaderStorageBlockBinding");
28605            }
28606            out
28607        }
28608        #[doc(hidden)]
28609        pub unsafe fn ShaderStorageBlockBinding_load_with_dyn(
28610            &self,
28611            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28612        ) -> bool {
28613            load_dyn_name_atomic_ptr(
28614                get_proc_address,
28615                b"glShaderStorageBlockBinding\0",
28616                &self.glShaderStorageBlockBinding_p,
28617            )
28618        }
28619        #[inline]
28620        #[doc(hidden)]
28621        pub fn ShaderStorageBlockBinding_is_loaded(&self) -> bool {
28622            !self.glShaderStorageBlockBinding_p.load(RELAX).is_null()
28623        }
28624        /// [glSpecializeShader](http://docs.gl/gl4/glSpecializeShader)(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue)
28625        #[cfg_attr(feature = "inline", inline)]
28626        #[cfg_attr(feature = "inline_always", inline(always))]
28627        pub unsafe fn SpecializeShader(
28628            &self,
28629            shader: GLuint,
28630            pEntryPoint: *const GLchar,
28631            numSpecializationConstants: GLuint,
28632            pConstantIndex: *const GLuint,
28633            pConstantValue: *const GLuint,
28634        ) {
28635            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28636            {
28637                trace!(
28638                    "calling gl.SpecializeShader({:?}, {:p}, {:?}, {:p}, {:p});",
28639                    shader,
28640                    pEntryPoint,
28641                    numSpecializationConstants,
28642                    pConstantIndex,
28643                    pConstantValue
28644                );
28645            }
28646            let out = call_atomic_ptr_5arg(
28647                "glSpecializeShader",
28648                &self.glSpecializeShader_p,
28649                shader,
28650                pEntryPoint,
28651                numSpecializationConstants,
28652                pConstantIndex,
28653                pConstantValue,
28654            );
28655            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28656            {
28657                self.automatic_glGetError("glSpecializeShader");
28658            }
28659            out
28660        }
28661        #[doc(hidden)]
28662        pub unsafe fn SpecializeShader_load_with_dyn(
28663            &self,
28664            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28665        ) -> bool {
28666            load_dyn_name_atomic_ptr(
28667                get_proc_address,
28668                b"glSpecializeShader\0",
28669                &self.glSpecializeShader_p,
28670            )
28671        }
28672        #[inline]
28673        #[doc(hidden)]
28674        pub fn SpecializeShader_is_loaded(&self) -> bool {
28675            !self.glSpecializeShader_p.load(RELAX).is_null()
28676        }
28677        /// [glStencilFunc](http://docs.gl/gl4/glStencilFunc)(func, ref_, mask)
28678        /// * `func` group: StencilFunction
28679        /// * `ref_` group: StencilValue
28680        /// * `mask` group: MaskedStencilValue
28681        #[cfg_attr(feature = "inline", inline)]
28682        #[cfg_attr(feature = "inline_always", inline(always))]
28683        pub unsafe fn StencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) {
28684            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28685            {
28686                trace!(
28687                    "calling gl.StencilFunc({:#X}, {:?}, {:?});",
28688                    func,
28689                    ref_,
28690                    mask
28691                );
28692            }
28693            let out =
28694                call_atomic_ptr_3arg("glStencilFunc", &self.glStencilFunc_p, func, ref_, mask);
28695            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28696            {
28697                self.automatic_glGetError("glStencilFunc");
28698            }
28699            out
28700        }
28701        #[doc(hidden)]
28702        pub unsafe fn StencilFunc_load_with_dyn(
28703            &self,
28704            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28705        ) -> bool {
28706            load_dyn_name_atomic_ptr(get_proc_address, b"glStencilFunc\0", &self.glStencilFunc_p)
28707        }
28708        #[inline]
28709        #[doc(hidden)]
28710        pub fn StencilFunc_is_loaded(&self) -> bool {
28711            !self.glStencilFunc_p.load(RELAX).is_null()
28712        }
28713        /// [glStencilFuncSeparate](http://docs.gl/gl4/glStencilFuncSeparate)(face, func, ref_, mask)
28714        /// * `face` group: StencilFaceDirection
28715        /// * `func` group: StencilFunction
28716        /// * `ref_` group: StencilValue
28717        /// * `mask` group: MaskedStencilValue
28718        #[cfg_attr(feature = "inline", inline)]
28719        #[cfg_attr(feature = "inline_always", inline(always))]
28720        pub unsafe fn StencilFuncSeparate(
28721            &self,
28722            face: GLenum,
28723            func: GLenum,
28724            ref_: GLint,
28725            mask: GLuint,
28726        ) {
28727            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28728            {
28729                trace!(
28730                    "calling gl.StencilFuncSeparate({:#X}, {:#X}, {:?}, {:?});",
28731                    face,
28732                    func,
28733                    ref_,
28734                    mask
28735                );
28736            }
28737            let out = call_atomic_ptr_4arg(
28738                "glStencilFuncSeparate",
28739                &self.glStencilFuncSeparate_p,
28740                face,
28741                func,
28742                ref_,
28743                mask,
28744            );
28745            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28746            {
28747                self.automatic_glGetError("glStencilFuncSeparate");
28748            }
28749            out
28750        }
28751        #[doc(hidden)]
28752        pub unsafe fn StencilFuncSeparate_load_with_dyn(
28753            &self,
28754            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28755        ) -> bool {
28756            load_dyn_name_atomic_ptr(
28757                get_proc_address,
28758                b"glStencilFuncSeparate\0",
28759                &self.glStencilFuncSeparate_p,
28760            )
28761        }
28762        #[inline]
28763        #[doc(hidden)]
28764        pub fn StencilFuncSeparate_is_loaded(&self) -> bool {
28765            !self.glStencilFuncSeparate_p.load(RELAX).is_null()
28766        }
28767        /// [glStencilMask](http://docs.gl/gl4/glStencilMask)(mask)
28768        /// * `mask` group: MaskedStencilValue
28769        #[cfg_attr(feature = "inline", inline)]
28770        #[cfg_attr(feature = "inline_always", inline(always))]
28771        pub unsafe fn StencilMask(&self, mask: GLuint) {
28772            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28773            {
28774                trace!("calling gl.StencilMask({:?});", mask);
28775            }
28776            let out = call_atomic_ptr_1arg("glStencilMask", &self.glStencilMask_p, mask);
28777            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28778            {
28779                self.automatic_glGetError("glStencilMask");
28780            }
28781            out
28782        }
28783        #[doc(hidden)]
28784        pub unsafe fn StencilMask_load_with_dyn(
28785            &self,
28786            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28787        ) -> bool {
28788            load_dyn_name_atomic_ptr(get_proc_address, b"glStencilMask\0", &self.glStencilMask_p)
28789        }
28790        #[inline]
28791        #[doc(hidden)]
28792        pub fn StencilMask_is_loaded(&self) -> bool {
28793            !self.glStencilMask_p.load(RELAX).is_null()
28794        }
28795        /// [glStencilMaskSeparate](http://docs.gl/gl4/glStencilMaskSeparate)(face, mask)
28796        /// * `face` group: StencilFaceDirection
28797        /// * `mask` group: MaskedStencilValue
28798        #[cfg_attr(feature = "inline", inline)]
28799        #[cfg_attr(feature = "inline_always", inline(always))]
28800        pub unsafe fn StencilMaskSeparate(&self, face: GLenum, mask: GLuint) {
28801            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28802            {
28803                trace!("calling gl.StencilMaskSeparate({:#X}, {:?});", face, mask);
28804            }
28805            let out = call_atomic_ptr_2arg(
28806                "glStencilMaskSeparate",
28807                &self.glStencilMaskSeparate_p,
28808                face,
28809                mask,
28810            );
28811            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28812            {
28813                self.automatic_glGetError("glStencilMaskSeparate");
28814            }
28815            out
28816        }
28817        #[doc(hidden)]
28818        pub unsafe fn StencilMaskSeparate_load_with_dyn(
28819            &self,
28820            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28821        ) -> bool {
28822            load_dyn_name_atomic_ptr(
28823                get_proc_address,
28824                b"glStencilMaskSeparate\0",
28825                &self.glStencilMaskSeparate_p,
28826            )
28827        }
28828        #[inline]
28829        #[doc(hidden)]
28830        pub fn StencilMaskSeparate_is_loaded(&self) -> bool {
28831            !self.glStencilMaskSeparate_p.load(RELAX).is_null()
28832        }
28833        /// [glStencilOp](http://docs.gl/gl4/glStencilOp)(fail, zfail, zpass)
28834        /// * `fail` group: StencilOp
28835        /// * `zfail` group: StencilOp
28836        /// * `zpass` group: StencilOp
28837        #[cfg_attr(feature = "inline", inline)]
28838        #[cfg_attr(feature = "inline_always", inline(always))]
28839        pub unsafe fn StencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) {
28840            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28841            {
28842                trace!(
28843                    "calling gl.StencilOp({:#X}, {:#X}, {:#X});",
28844                    fail,
28845                    zfail,
28846                    zpass
28847                );
28848            }
28849            let out = call_atomic_ptr_3arg("glStencilOp", &self.glStencilOp_p, fail, zfail, zpass);
28850            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28851            {
28852                self.automatic_glGetError("glStencilOp");
28853            }
28854            out
28855        }
28856        #[doc(hidden)]
28857        pub unsafe fn StencilOp_load_with_dyn(
28858            &self,
28859            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28860        ) -> bool {
28861            load_dyn_name_atomic_ptr(get_proc_address, b"glStencilOp\0", &self.glStencilOp_p)
28862        }
28863        #[inline]
28864        #[doc(hidden)]
28865        pub fn StencilOp_is_loaded(&self) -> bool {
28866            !self.glStencilOp_p.load(RELAX).is_null()
28867        }
28868        /// [glStencilOpSeparate](http://docs.gl/gl4/glStencilOpSeparate)(face, sfail, dpfail, dppass)
28869        /// * `face` group: StencilFaceDirection
28870        /// * `sfail` group: StencilOp
28871        /// * `dpfail` group: StencilOp
28872        /// * `dppass` group: StencilOp
28873        #[cfg_attr(feature = "inline", inline)]
28874        #[cfg_attr(feature = "inline_always", inline(always))]
28875        pub unsafe fn StencilOpSeparate(
28876            &self,
28877            face: GLenum,
28878            sfail: GLenum,
28879            dpfail: GLenum,
28880            dppass: GLenum,
28881        ) {
28882            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28883            {
28884                trace!(
28885                    "calling gl.StencilOpSeparate({:#X}, {:#X}, {:#X}, {:#X});",
28886                    face,
28887                    sfail,
28888                    dpfail,
28889                    dppass
28890                );
28891            }
28892            let out = call_atomic_ptr_4arg(
28893                "glStencilOpSeparate",
28894                &self.glStencilOpSeparate_p,
28895                face,
28896                sfail,
28897                dpfail,
28898                dppass,
28899            );
28900            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28901            {
28902                self.automatic_glGetError("glStencilOpSeparate");
28903            }
28904            out
28905        }
28906        #[doc(hidden)]
28907        pub unsafe fn StencilOpSeparate_load_with_dyn(
28908            &self,
28909            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28910        ) -> bool {
28911            load_dyn_name_atomic_ptr(
28912                get_proc_address,
28913                b"glStencilOpSeparate\0",
28914                &self.glStencilOpSeparate_p,
28915            )
28916        }
28917        #[inline]
28918        #[doc(hidden)]
28919        pub fn StencilOpSeparate_is_loaded(&self) -> bool {
28920            !self.glStencilOpSeparate_p.load(RELAX).is_null()
28921        }
28922        /// [glTexBuffer](http://docs.gl/gl4/glTexBuffer)(target, internalformat, buffer)
28923        /// * `target` group: TextureTarget
28924        /// * `internalformat` group: InternalFormat
28925        #[cfg_attr(feature = "inline", inline)]
28926        #[cfg_attr(feature = "inline_always", inline(always))]
28927        pub unsafe fn TexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) {
28928            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28929            {
28930                trace!(
28931                    "calling gl.TexBuffer({:#X}, {:#X}, {:?});",
28932                    target,
28933                    internalformat,
28934                    buffer
28935                );
28936            }
28937            let out = call_atomic_ptr_3arg(
28938                "glTexBuffer",
28939                &self.glTexBuffer_p,
28940                target,
28941                internalformat,
28942                buffer,
28943            );
28944            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28945            {
28946                self.automatic_glGetError("glTexBuffer");
28947            }
28948            out
28949        }
28950        #[doc(hidden)]
28951        pub unsafe fn TexBuffer_load_with_dyn(
28952            &self,
28953            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
28954        ) -> bool {
28955            load_dyn_name_atomic_ptr(get_proc_address, b"glTexBuffer\0", &self.glTexBuffer_p)
28956        }
28957        #[inline]
28958        #[doc(hidden)]
28959        pub fn TexBuffer_is_loaded(&self) -> bool {
28960            !self.glTexBuffer_p.load(RELAX).is_null()
28961        }
28962        /// [glTexBufferRange](http://docs.gl/gl4/glTexBufferRange)(target, internalformat, buffer, offset, size)
28963        /// * `target` group: TextureTarget
28964        /// * `internalformat` group: InternalFormat
28965        /// * `offset` group: BufferOffset
28966        /// * `size` group: BufferSize
28967        #[cfg_attr(feature = "inline", inline)]
28968        #[cfg_attr(feature = "inline_always", inline(always))]
28969        pub unsafe fn TexBufferRange(
28970            &self,
28971            target: GLenum,
28972            internalformat: GLenum,
28973            buffer: GLuint,
28974            offset: GLintptr,
28975            size: GLsizeiptr,
28976        ) {
28977            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
28978            {
28979                trace!(
28980                    "calling gl.TexBufferRange({:#X}, {:#X}, {:?}, {:?}, {:?});",
28981                    target,
28982                    internalformat,
28983                    buffer,
28984                    offset,
28985                    size
28986                );
28987            }
28988            let out = call_atomic_ptr_5arg(
28989                "glTexBufferRange",
28990                &self.glTexBufferRange_p,
28991                target,
28992                internalformat,
28993                buffer,
28994                offset,
28995                size,
28996            );
28997            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
28998            {
28999                self.automatic_glGetError("glTexBufferRange");
29000            }
29001            out
29002        }
29003        #[doc(hidden)]
29004        pub unsafe fn TexBufferRange_load_with_dyn(
29005            &self,
29006            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29007        ) -> bool {
29008            load_dyn_name_atomic_ptr(
29009                get_proc_address,
29010                b"glTexBufferRange\0",
29011                &self.glTexBufferRange_p,
29012            )
29013        }
29014        #[inline]
29015        #[doc(hidden)]
29016        pub fn TexBufferRange_is_loaded(&self) -> bool {
29017            !self.glTexBufferRange_p.load(RELAX).is_null()
29018        }
29019        /// [glTexImage1D](http://docs.gl/gl4/glTexImage1D)(target, level, internalformat, width, border, format, type_, pixels)
29020        /// * `target` group: TextureTarget
29021        /// * `level` group: CheckedInt32
29022        /// * `internalformat` group: InternalFormat
29023        /// * `border` group: CheckedInt32
29024        /// * `format` group: PixelFormat
29025        /// * `type_` group: PixelType
29026        /// * `pixels` len: COMPSIZE(format,type,width)
29027        #[cfg_attr(feature = "inline", inline)]
29028        #[cfg_attr(feature = "inline_always", inline(always))]
29029        pub unsafe fn TexImage1D(
29030            &self,
29031            target: GLenum,
29032            level: GLint,
29033            internalformat: GLint,
29034            width: GLsizei,
29035            border: GLint,
29036            format: GLenum,
29037            type_: GLenum,
29038            pixels: *const c_void,
29039        ) {
29040            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29041            {
29042                trace!(
29043                    "calling gl.TexImage1D({:#X}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});",
29044                    target,
29045                    level,
29046                    internalformat,
29047                    width,
29048                    border,
29049                    format,
29050                    type_,
29051                    pixels
29052                );
29053            }
29054            let out = call_atomic_ptr_8arg(
29055                "glTexImage1D",
29056                &self.glTexImage1D_p,
29057                target,
29058                level,
29059                internalformat,
29060                width,
29061                border,
29062                format,
29063                type_,
29064                pixels,
29065            );
29066            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29067            {
29068                self.automatic_glGetError("glTexImage1D");
29069            }
29070            out
29071        }
29072        #[doc(hidden)]
29073        pub unsafe fn TexImage1D_load_with_dyn(
29074            &self,
29075            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29076        ) -> bool {
29077            load_dyn_name_atomic_ptr(get_proc_address, b"glTexImage1D\0", &self.glTexImage1D_p)
29078        }
29079        #[inline]
29080        #[doc(hidden)]
29081        pub fn TexImage1D_is_loaded(&self) -> bool {
29082            !self.glTexImage1D_p.load(RELAX).is_null()
29083        }
29084        /// [glTexImage2D](http://docs.gl/gl4/glTexImage2D)(target, level, internalformat, width, height, border, format, type_, pixels)
29085        /// * `target` group: TextureTarget
29086        /// * `level` group: CheckedInt32
29087        /// * `internalformat` group: InternalFormat
29088        /// * `border` group: CheckedInt32
29089        /// * `format` group: PixelFormat
29090        /// * `type_` group: PixelType
29091        /// * `pixels` len: COMPSIZE(format,type,width,height)
29092        #[cfg_attr(feature = "inline", inline)]
29093        #[cfg_attr(feature = "inline_always", inline(always))]
29094        pub unsafe fn TexImage2D(
29095            &self,
29096            target: GLenum,
29097            level: GLint,
29098            internalformat: GLint,
29099            width: GLsizei,
29100            height: GLsizei,
29101            border: GLint,
29102            format: GLenum,
29103            type_: GLenum,
29104            pixels: *const c_void,
29105        ) {
29106            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29107            {
29108                trace!("calling gl.TexImage2D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", target, level, internalformat, width, height, border, format, type_, pixels);
29109            }
29110            let out = call_atomic_ptr_9arg(
29111                "glTexImage2D",
29112                &self.glTexImage2D_p,
29113                target,
29114                level,
29115                internalformat,
29116                width,
29117                height,
29118                border,
29119                format,
29120                type_,
29121                pixels,
29122            );
29123            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29124            {
29125                self.automatic_glGetError("glTexImage2D");
29126            }
29127            out
29128        }
29129        #[doc(hidden)]
29130        pub unsafe fn TexImage2D_load_with_dyn(
29131            &self,
29132            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29133        ) -> bool {
29134            load_dyn_name_atomic_ptr(get_proc_address, b"glTexImage2D\0", &self.glTexImage2D_p)
29135        }
29136        #[inline]
29137        #[doc(hidden)]
29138        pub fn TexImage2D_is_loaded(&self) -> bool {
29139            !self.glTexImage2D_p.load(RELAX).is_null()
29140        }
29141        /// [glTexImage2DMultisample](http://docs.gl/gl4/glTexImage2DMultisample)(target, samples, internalformat, width, height, fixedsamplelocations)
29142        /// * `target` group: TextureTarget
29143        /// * `internalformat` group: InternalFormat
29144        #[cfg_attr(feature = "inline", inline)]
29145        #[cfg_attr(feature = "inline_always", inline(always))]
29146        pub unsafe fn TexImage2DMultisample(
29147            &self,
29148            target: GLenum,
29149            samples: GLsizei,
29150            internalformat: GLenum,
29151            width: GLsizei,
29152            height: GLsizei,
29153            fixedsamplelocations: GLboolean,
29154        ) {
29155            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29156            {
29157                trace!(
29158                    "calling gl.TexImage2DMultisample({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?});",
29159                    target,
29160                    samples,
29161                    internalformat,
29162                    width,
29163                    height,
29164                    fixedsamplelocations
29165                );
29166            }
29167            let out = call_atomic_ptr_6arg(
29168                "glTexImage2DMultisample",
29169                &self.glTexImage2DMultisample_p,
29170                target,
29171                samples,
29172                internalformat,
29173                width,
29174                height,
29175                fixedsamplelocations,
29176            );
29177            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29178            {
29179                self.automatic_glGetError("glTexImage2DMultisample");
29180            }
29181            out
29182        }
29183        #[doc(hidden)]
29184        pub unsafe fn TexImage2DMultisample_load_with_dyn(
29185            &self,
29186            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29187        ) -> bool {
29188            load_dyn_name_atomic_ptr(
29189                get_proc_address,
29190                b"glTexImage2DMultisample\0",
29191                &self.glTexImage2DMultisample_p,
29192            )
29193        }
29194        #[inline]
29195        #[doc(hidden)]
29196        pub fn TexImage2DMultisample_is_loaded(&self) -> bool {
29197            !self.glTexImage2DMultisample_p.load(RELAX).is_null()
29198        }
29199        /// [glTexImage3D](http://docs.gl/gl4/glTexImage3D)(target, level, internalformat, width, height, depth, border, format, type_, pixels)
29200        /// * `target` group: TextureTarget
29201        /// * `level` group: CheckedInt32
29202        /// * `internalformat` group: InternalFormat
29203        /// * `border` group: CheckedInt32
29204        /// * `format` group: PixelFormat
29205        /// * `type_` group: PixelType
29206        /// * `pixels` len: COMPSIZE(format,type,width,height,depth)
29207        #[cfg_attr(feature = "inline", inline)]
29208        #[cfg_attr(feature = "inline_always", inline(always))]
29209        pub unsafe fn TexImage3D(
29210            &self,
29211            target: GLenum,
29212            level: GLint,
29213            internalformat: GLint,
29214            width: GLsizei,
29215            height: GLsizei,
29216            depth: GLsizei,
29217            border: GLint,
29218            format: GLenum,
29219            type_: GLenum,
29220            pixels: *const c_void,
29221        ) {
29222            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29223            {
29224                trace!("calling gl.TexImage3D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", target, level, internalformat, width, height, depth, border, format, type_, pixels);
29225            }
29226            let out = call_atomic_ptr_10arg(
29227                "glTexImage3D",
29228                &self.glTexImage3D_p,
29229                target,
29230                level,
29231                internalformat,
29232                width,
29233                height,
29234                depth,
29235                border,
29236                format,
29237                type_,
29238                pixels,
29239            );
29240            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29241            {
29242                self.automatic_glGetError("glTexImage3D");
29243            }
29244            out
29245        }
29246        #[doc(hidden)]
29247        pub unsafe fn TexImage3D_load_with_dyn(
29248            &self,
29249            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29250        ) -> bool {
29251            load_dyn_name_atomic_ptr(get_proc_address, b"glTexImage3D\0", &self.glTexImage3D_p)
29252        }
29253        #[inline]
29254        #[doc(hidden)]
29255        pub fn TexImage3D_is_loaded(&self) -> bool {
29256            !self.glTexImage3D_p.load(RELAX).is_null()
29257        }
29258        /// [glTexImage3DMultisample](http://docs.gl/gl4/glTexImage3DMultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)
29259        /// * `target` group: TextureTarget
29260        /// * `internalformat` group: InternalFormat
29261        #[cfg_attr(feature = "inline", inline)]
29262        #[cfg_attr(feature = "inline_always", inline(always))]
29263        pub unsafe fn TexImage3DMultisample(
29264            &self,
29265            target: GLenum,
29266            samples: GLsizei,
29267            internalformat: GLenum,
29268            width: GLsizei,
29269            height: GLsizei,
29270            depth: GLsizei,
29271            fixedsamplelocations: GLboolean,
29272        ) {
29273            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29274            {
29275                trace!(
29276                    "calling gl.TexImage3DMultisample({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?});",
29277                    target,
29278                    samples,
29279                    internalformat,
29280                    width,
29281                    height,
29282                    depth,
29283                    fixedsamplelocations
29284                );
29285            }
29286            let out = call_atomic_ptr_7arg(
29287                "glTexImage3DMultisample",
29288                &self.glTexImage3DMultisample_p,
29289                target,
29290                samples,
29291                internalformat,
29292                width,
29293                height,
29294                depth,
29295                fixedsamplelocations,
29296            );
29297            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29298            {
29299                self.automatic_glGetError("glTexImage3DMultisample");
29300            }
29301            out
29302        }
29303        #[doc(hidden)]
29304        pub unsafe fn TexImage3DMultisample_load_with_dyn(
29305            &self,
29306            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29307        ) -> bool {
29308            load_dyn_name_atomic_ptr(
29309                get_proc_address,
29310                b"glTexImage3DMultisample\0",
29311                &self.glTexImage3DMultisample_p,
29312            )
29313        }
29314        #[inline]
29315        #[doc(hidden)]
29316        pub fn TexImage3DMultisample_is_loaded(&self) -> bool {
29317            !self.glTexImage3DMultisample_p.load(RELAX).is_null()
29318        }
29319        /// [glTexParameterIiv](http://docs.gl/gl4/glTexParameter)(target, pname, params)
29320        /// * `target` group: TextureTarget
29321        /// * `pname` group: TextureParameterName
29322        /// * `params` len: COMPSIZE(pname)
29323        #[cfg_attr(feature = "inline", inline)]
29324        #[cfg_attr(feature = "inline_always", inline(always))]
29325        pub unsafe fn TexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) {
29326            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29327            {
29328                trace!(
29329                    "calling gl.TexParameterIiv({:#X}, {:#X}, {:p});",
29330                    target,
29331                    pname,
29332                    params
29333                );
29334            }
29335            let out = call_atomic_ptr_3arg(
29336                "glTexParameterIiv",
29337                &self.glTexParameterIiv_p,
29338                target,
29339                pname,
29340                params,
29341            );
29342            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29343            {
29344                self.automatic_glGetError("glTexParameterIiv");
29345            }
29346            out
29347        }
29348        #[doc(hidden)]
29349        pub unsafe fn TexParameterIiv_load_with_dyn(
29350            &self,
29351            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29352        ) -> bool {
29353            load_dyn_name_atomic_ptr(
29354                get_proc_address,
29355                b"glTexParameterIiv\0",
29356                &self.glTexParameterIiv_p,
29357            )
29358        }
29359        #[inline]
29360        #[doc(hidden)]
29361        pub fn TexParameterIiv_is_loaded(&self) -> bool {
29362            !self.glTexParameterIiv_p.load(RELAX).is_null()
29363        }
29364        /// [glTexParameterIuiv](http://docs.gl/gl4/glTexParameter)(target, pname, params)
29365        /// * `target` group: TextureTarget
29366        /// * `pname` group: TextureParameterName
29367        /// * `params` len: COMPSIZE(pname)
29368        #[cfg_attr(feature = "inline", inline)]
29369        #[cfg_attr(feature = "inline_always", inline(always))]
29370        pub unsafe fn TexParameterIuiv(
29371            &self,
29372            target: GLenum,
29373            pname: GLenum,
29374            params: *const GLuint,
29375        ) {
29376            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29377            {
29378                trace!(
29379                    "calling gl.TexParameterIuiv({:#X}, {:#X}, {:p});",
29380                    target,
29381                    pname,
29382                    params
29383                );
29384            }
29385            let out = call_atomic_ptr_3arg(
29386                "glTexParameterIuiv",
29387                &self.glTexParameterIuiv_p,
29388                target,
29389                pname,
29390                params,
29391            );
29392            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29393            {
29394                self.automatic_glGetError("glTexParameterIuiv");
29395            }
29396            out
29397        }
29398        #[doc(hidden)]
29399        pub unsafe fn TexParameterIuiv_load_with_dyn(
29400            &self,
29401            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29402        ) -> bool {
29403            load_dyn_name_atomic_ptr(
29404                get_proc_address,
29405                b"glTexParameterIuiv\0",
29406                &self.glTexParameterIuiv_p,
29407            )
29408        }
29409        #[inline]
29410        #[doc(hidden)]
29411        pub fn TexParameterIuiv_is_loaded(&self) -> bool {
29412            !self.glTexParameterIuiv_p.load(RELAX).is_null()
29413        }
29414        /// [glTexParameterf](http://docs.gl/gl4/glTexParameter)(target, pname, param)
29415        /// * `target` group: TextureTarget
29416        /// * `pname` group: TextureParameterName
29417        /// * `param` group: CheckedFloat32
29418        #[cfg_attr(feature = "inline", inline)]
29419        #[cfg_attr(feature = "inline_always", inline(always))]
29420        pub unsafe fn TexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) {
29421            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29422            {
29423                trace!(
29424                    "calling gl.TexParameterf({:#X}, {:#X}, {:?});",
29425                    target,
29426                    pname,
29427                    param
29428                );
29429            }
29430            let out = call_atomic_ptr_3arg(
29431                "glTexParameterf",
29432                &self.glTexParameterf_p,
29433                target,
29434                pname,
29435                param,
29436            );
29437            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29438            {
29439                self.automatic_glGetError("glTexParameterf");
29440            }
29441            out
29442        }
29443        #[doc(hidden)]
29444        pub unsafe fn TexParameterf_load_with_dyn(
29445            &self,
29446            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29447        ) -> bool {
29448            load_dyn_name_atomic_ptr(
29449                get_proc_address,
29450                b"glTexParameterf\0",
29451                &self.glTexParameterf_p,
29452            )
29453        }
29454        #[inline]
29455        #[doc(hidden)]
29456        pub fn TexParameterf_is_loaded(&self) -> bool {
29457            !self.glTexParameterf_p.load(RELAX).is_null()
29458        }
29459        /// [glTexParameterfv](http://docs.gl/gl4/glTexParameter)(target, pname, params)
29460        /// * `target` group: TextureTarget
29461        /// * `pname` group: TextureParameterName
29462        /// * `params` group: CheckedFloat32
29463        /// * `params` len: COMPSIZE(pname)
29464        #[cfg_attr(feature = "inline", inline)]
29465        #[cfg_attr(feature = "inline_always", inline(always))]
29466        pub unsafe fn TexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) {
29467            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29468            {
29469                trace!(
29470                    "calling gl.TexParameterfv({:#X}, {:#X}, {:p});",
29471                    target,
29472                    pname,
29473                    params
29474                );
29475            }
29476            let out = call_atomic_ptr_3arg(
29477                "glTexParameterfv",
29478                &self.glTexParameterfv_p,
29479                target,
29480                pname,
29481                params,
29482            );
29483            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29484            {
29485                self.automatic_glGetError("glTexParameterfv");
29486            }
29487            out
29488        }
29489        #[doc(hidden)]
29490        pub unsafe fn TexParameterfv_load_with_dyn(
29491            &self,
29492            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29493        ) -> bool {
29494            load_dyn_name_atomic_ptr(
29495                get_proc_address,
29496                b"glTexParameterfv\0",
29497                &self.glTexParameterfv_p,
29498            )
29499        }
29500        #[inline]
29501        #[doc(hidden)]
29502        pub fn TexParameterfv_is_loaded(&self) -> bool {
29503            !self.glTexParameterfv_p.load(RELAX).is_null()
29504        }
29505        /// [glTexParameteri](http://docs.gl/gl4/glTexParameter)(target, pname, param)
29506        /// * `target` group: TextureTarget
29507        /// * `pname` group: TextureParameterName
29508        /// * `param` group: CheckedInt32
29509        #[cfg_attr(feature = "inline", inline)]
29510        #[cfg_attr(feature = "inline_always", inline(always))]
29511        pub unsafe fn TexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) {
29512            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29513            {
29514                trace!(
29515                    "calling gl.TexParameteri({:#X}, {:#X}, {:?});",
29516                    target,
29517                    pname,
29518                    param
29519                );
29520            }
29521            let out = call_atomic_ptr_3arg(
29522                "glTexParameteri",
29523                &self.glTexParameteri_p,
29524                target,
29525                pname,
29526                param,
29527            );
29528            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29529            {
29530                self.automatic_glGetError("glTexParameteri");
29531            }
29532            out
29533        }
29534        #[doc(hidden)]
29535        pub unsafe fn TexParameteri_load_with_dyn(
29536            &self,
29537            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29538        ) -> bool {
29539            load_dyn_name_atomic_ptr(
29540                get_proc_address,
29541                b"glTexParameteri\0",
29542                &self.glTexParameteri_p,
29543            )
29544        }
29545        #[inline]
29546        #[doc(hidden)]
29547        pub fn TexParameteri_is_loaded(&self) -> bool {
29548            !self.glTexParameteri_p.load(RELAX).is_null()
29549        }
29550        /// [glTexParameteriv](http://docs.gl/gl4/glTexParameter)(target, pname, params)
29551        /// * `target` group: TextureTarget
29552        /// * `pname` group: TextureParameterName
29553        /// * `params` group: CheckedInt32
29554        /// * `params` len: COMPSIZE(pname)
29555        #[cfg_attr(feature = "inline", inline)]
29556        #[cfg_attr(feature = "inline_always", inline(always))]
29557        pub unsafe fn TexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) {
29558            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29559            {
29560                trace!(
29561                    "calling gl.TexParameteriv({:#X}, {:#X}, {:p});",
29562                    target,
29563                    pname,
29564                    params
29565                );
29566            }
29567            let out = call_atomic_ptr_3arg(
29568                "glTexParameteriv",
29569                &self.glTexParameteriv_p,
29570                target,
29571                pname,
29572                params,
29573            );
29574            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29575            {
29576                self.automatic_glGetError("glTexParameteriv");
29577            }
29578            out
29579        }
29580        #[doc(hidden)]
29581        pub unsafe fn TexParameteriv_load_with_dyn(
29582            &self,
29583            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29584        ) -> bool {
29585            load_dyn_name_atomic_ptr(
29586                get_proc_address,
29587                b"glTexParameteriv\0",
29588                &self.glTexParameteriv_p,
29589            )
29590        }
29591        #[inline]
29592        #[doc(hidden)]
29593        pub fn TexParameteriv_is_loaded(&self) -> bool {
29594            !self.glTexParameteriv_p.load(RELAX).is_null()
29595        }
29596        /// [glTexStorage1D](http://docs.gl/gl4/glTexStorage1D)(target, levels, internalformat, width)
29597        /// * `target` group: TextureTarget
29598        /// * `internalformat` group: InternalFormat
29599        #[cfg_attr(feature = "inline", inline)]
29600        #[cfg_attr(feature = "inline_always", inline(always))]
29601        pub unsafe fn TexStorage1D(
29602            &self,
29603            target: GLenum,
29604            levels: GLsizei,
29605            internalformat: GLenum,
29606            width: GLsizei,
29607        ) {
29608            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29609            {
29610                trace!(
29611                    "calling gl.TexStorage1D({:#X}, {:?}, {:#X}, {:?});",
29612                    target,
29613                    levels,
29614                    internalformat,
29615                    width
29616                );
29617            }
29618            let out = call_atomic_ptr_4arg(
29619                "glTexStorage1D",
29620                &self.glTexStorage1D_p,
29621                target,
29622                levels,
29623                internalformat,
29624                width,
29625            );
29626            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29627            {
29628                self.automatic_glGetError("glTexStorage1D");
29629            }
29630            out
29631        }
29632        #[doc(hidden)]
29633        pub unsafe fn TexStorage1D_load_with_dyn(
29634            &self,
29635            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29636        ) -> bool {
29637            load_dyn_name_atomic_ptr(
29638                get_proc_address,
29639                b"glTexStorage1D\0",
29640                &self.glTexStorage1D_p,
29641            )
29642        }
29643        #[inline]
29644        #[doc(hidden)]
29645        pub fn TexStorage1D_is_loaded(&self) -> bool {
29646            !self.glTexStorage1D_p.load(RELAX).is_null()
29647        }
29648        /// [glTexStorage2D](http://docs.gl/gl4/glTexStorage2D)(target, levels, internalformat, width, height)
29649        /// * `target` group: TextureTarget
29650        /// * `internalformat` group: InternalFormat
29651        #[cfg_attr(feature = "inline", inline)]
29652        #[cfg_attr(feature = "inline_always", inline(always))]
29653        pub unsafe fn TexStorage2D(
29654            &self,
29655            target: GLenum,
29656            levels: GLsizei,
29657            internalformat: GLenum,
29658            width: GLsizei,
29659            height: GLsizei,
29660        ) {
29661            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29662            {
29663                trace!(
29664                    "calling gl.TexStorage2D({:#X}, {:?}, {:#X}, {:?}, {:?});",
29665                    target,
29666                    levels,
29667                    internalformat,
29668                    width,
29669                    height
29670                );
29671            }
29672            let out = call_atomic_ptr_5arg(
29673                "glTexStorage2D",
29674                &self.glTexStorage2D_p,
29675                target,
29676                levels,
29677                internalformat,
29678                width,
29679                height,
29680            );
29681            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29682            {
29683                self.automatic_glGetError("glTexStorage2D");
29684            }
29685            out
29686        }
29687        #[doc(hidden)]
29688        pub unsafe fn TexStorage2D_load_with_dyn(
29689            &self,
29690            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29691        ) -> bool {
29692            load_dyn_name_atomic_ptr(
29693                get_proc_address,
29694                b"glTexStorage2D\0",
29695                &self.glTexStorage2D_p,
29696            )
29697        }
29698        #[inline]
29699        #[doc(hidden)]
29700        pub fn TexStorage2D_is_loaded(&self) -> bool {
29701            !self.glTexStorage2D_p.load(RELAX).is_null()
29702        }
29703        /// [glTexStorage2DMultisample](http://docs.gl/gl4/glTexStorage2DMultisample)(target, samples, internalformat, width, height, fixedsamplelocations)
29704        /// * `target` group: TextureTarget
29705        /// * `internalformat` group: InternalFormat
29706        #[cfg_attr(feature = "inline", inline)]
29707        #[cfg_attr(feature = "inline_always", inline(always))]
29708        pub unsafe fn TexStorage2DMultisample(
29709            &self,
29710            target: GLenum,
29711            samples: GLsizei,
29712            internalformat: GLenum,
29713            width: GLsizei,
29714            height: GLsizei,
29715            fixedsamplelocations: GLboolean,
29716        ) {
29717            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29718            {
29719                trace!(
29720                    "calling gl.TexStorage2DMultisample({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?});",
29721                    target,
29722                    samples,
29723                    internalformat,
29724                    width,
29725                    height,
29726                    fixedsamplelocations
29727                );
29728            }
29729            let out = call_atomic_ptr_6arg(
29730                "glTexStorage2DMultisample",
29731                &self.glTexStorage2DMultisample_p,
29732                target,
29733                samples,
29734                internalformat,
29735                width,
29736                height,
29737                fixedsamplelocations,
29738            );
29739            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29740            {
29741                self.automatic_glGetError("glTexStorage2DMultisample");
29742            }
29743            out
29744        }
29745        #[doc(hidden)]
29746        pub unsafe fn TexStorage2DMultisample_load_with_dyn(
29747            &self,
29748            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29749        ) -> bool {
29750            load_dyn_name_atomic_ptr(
29751                get_proc_address,
29752                b"glTexStorage2DMultisample\0",
29753                &self.glTexStorage2DMultisample_p,
29754            )
29755        }
29756        #[inline]
29757        #[doc(hidden)]
29758        pub fn TexStorage2DMultisample_is_loaded(&self) -> bool {
29759            !self.glTexStorage2DMultisample_p.load(RELAX).is_null()
29760        }
29761        /// [glTexStorage3D](http://docs.gl/gl4/glTexStorage3D)(target, levels, internalformat, width, height, depth)
29762        /// * `target` group: TextureTarget
29763        /// * `internalformat` group: InternalFormat
29764        #[cfg_attr(feature = "inline", inline)]
29765        #[cfg_attr(feature = "inline_always", inline(always))]
29766        pub unsafe fn TexStorage3D(
29767            &self,
29768            target: GLenum,
29769            levels: GLsizei,
29770            internalformat: GLenum,
29771            width: GLsizei,
29772            height: GLsizei,
29773            depth: GLsizei,
29774        ) {
29775            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29776            {
29777                trace!(
29778                    "calling gl.TexStorage3D({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?});",
29779                    target,
29780                    levels,
29781                    internalformat,
29782                    width,
29783                    height,
29784                    depth
29785                );
29786            }
29787            let out = call_atomic_ptr_6arg(
29788                "glTexStorage3D",
29789                &self.glTexStorage3D_p,
29790                target,
29791                levels,
29792                internalformat,
29793                width,
29794                height,
29795                depth,
29796            );
29797            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29798            {
29799                self.automatic_glGetError("glTexStorage3D");
29800            }
29801            out
29802        }
29803        #[doc(hidden)]
29804        pub unsafe fn TexStorage3D_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"glTexStorage3D\0",
29811                &self.glTexStorage3D_p,
29812            )
29813        }
29814        #[inline]
29815        #[doc(hidden)]
29816        pub fn TexStorage3D_is_loaded(&self) -> bool {
29817            !self.glTexStorage3D_p.load(RELAX).is_null()
29818        }
29819        /// [glTexStorage3DMultisample](http://docs.gl/gl4/glTexStorage3DMultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)
29820        /// * `target` group: TextureTarget
29821        /// * `internalformat` group: InternalFormat
29822        #[cfg_attr(feature = "inline", inline)]
29823        #[cfg_attr(feature = "inline_always", inline(always))]
29824        pub unsafe fn TexStorage3DMultisample(
29825            &self,
29826            target: GLenum,
29827            samples: GLsizei,
29828            internalformat: GLenum,
29829            width: GLsizei,
29830            height: GLsizei,
29831            depth: GLsizei,
29832            fixedsamplelocations: GLboolean,
29833        ) {
29834            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29835            {
29836                trace!("calling gl.TexStorage3DMultisample({:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?});", target, samples, internalformat, width, height, depth, fixedsamplelocations);
29837            }
29838            let out = call_atomic_ptr_7arg(
29839                "glTexStorage3DMultisample",
29840                &self.glTexStorage3DMultisample_p,
29841                target,
29842                samples,
29843                internalformat,
29844                width,
29845                height,
29846                depth,
29847                fixedsamplelocations,
29848            );
29849            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29850            {
29851                self.automatic_glGetError("glTexStorage3DMultisample");
29852            }
29853            out
29854        }
29855        #[doc(hidden)]
29856        pub unsafe fn TexStorage3DMultisample_load_with_dyn(
29857            &self,
29858            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29859        ) -> bool {
29860            load_dyn_name_atomic_ptr(
29861                get_proc_address,
29862                b"glTexStorage3DMultisample\0",
29863                &self.glTexStorage3DMultisample_p,
29864            )
29865        }
29866        #[inline]
29867        #[doc(hidden)]
29868        pub fn TexStorage3DMultisample_is_loaded(&self) -> bool {
29869            !self.glTexStorage3DMultisample_p.load(RELAX).is_null()
29870        }
29871        /// [glTexSubImage1D](http://docs.gl/gl4/glTexSubImage1D)(target, level, xoffset, width, format, type_, pixels)
29872        /// * `target` group: TextureTarget
29873        /// * `level` group: CheckedInt32
29874        /// * `xoffset` group: CheckedInt32
29875        /// * `format` group: PixelFormat
29876        /// * `type_` group: PixelType
29877        /// * `pixels` len: COMPSIZE(format,type,width)
29878        #[cfg_attr(feature = "inline", inline)]
29879        #[cfg_attr(feature = "inline_always", inline(always))]
29880        pub unsafe fn TexSubImage1D(
29881            &self,
29882            target: GLenum,
29883            level: GLint,
29884            xoffset: GLint,
29885            width: GLsizei,
29886            format: GLenum,
29887            type_: GLenum,
29888            pixels: *const c_void,
29889        ) {
29890            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29891            {
29892                trace!(
29893                    "calling gl.TexSubImage1D({:#X}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});",
29894                    target,
29895                    level,
29896                    xoffset,
29897                    width,
29898                    format,
29899                    type_,
29900                    pixels
29901                );
29902            }
29903            let out = call_atomic_ptr_7arg(
29904                "glTexSubImage1D",
29905                &self.glTexSubImage1D_p,
29906                target,
29907                level,
29908                xoffset,
29909                width,
29910                format,
29911                type_,
29912                pixels,
29913            );
29914            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29915            {
29916                self.automatic_glGetError("glTexSubImage1D");
29917            }
29918            out
29919        }
29920        #[doc(hidden)]
29921        pub unsafe fn TexSubImage1D_load_with_dyn(
29922            &self,
29923            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29924        ) -> bool {
29925            load_dyn_name_atomic_ptr(
29926                get_proc_address,
29927                b"glTexSubImage1D\0",
29928                &self.glTexSubImage1D_p,
29929            )
29930        }
29931        #[inline]
29932        #[doc(hidden)]
29933        pub fn TexSubImage1D_is_loaded(&self) -> bool {
29934            !self.glTexSubImage1D_p.load(RELAX).is_null()
29935        }
29936        /// [glTexSubImage2D](http://docs.gl/gl4/glTexSubImage2D)(target, level, xoffset, yoffset, width, height, format, type_, pixels)
29937        /// * `target` group: TextureTarget
29938        /// * `level` group: CheckedInt32
29939        /// * `xoffset` group: CheckedInt32
29940        /// * `yoffset` group: CheckedInt32
29941        /// * `format` group: PixelFormat
29942        /// * `type_` group: PixelType
29943        /// * `pixels` len: COMPSIZE(format,type,width,height)
29944        #[cfg_attr(feature = "inline", inline)]
29945        #[cfg_attr(feature = "inline_always", inline(always))]
29946        pub unsafe fn TexSubImage2D(
29947            &self,
29948            target: GLenum,
29949            level: GLint,
29950            xoffset: GLint,
29951            yoffset: GLint,
29952            width: GLsizei,
29953            height: GLsizei,
29954            format: GLenum,
29955            type_: GLenum,
29956            pixels: *const c_void,
29957        ) {
29958            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
29959            {
29960                trace!("calling gl.TexSubImage2D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", target, level, xoffset, yoffset, width, height, format, type_, pixels);
29961            }
29962            let out = call_atomic_ptr_9arg(
29963                "glTexSubImage2D",
29964                &self.glTexSubImage2D_p,
29965                target,
29966                level,
29967                xoffset,
29968                yoffset,
29969                width,
29970                height,
29971                format,
29972                type_,
29973                pixels,
29974            );
29975            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
29976            {
29977                self.automatic_glGetError("glTexSubImage2D");
29978            }
29979            out
29980        }
29981        #[doc(hidden)]
29982        pub unsafe fn TexSubImage2D_load_with_dyn(
29983            &self,
29984            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
29985        ) -> bool {
29986            load_dyn_name_atomic_ptr(
29987                get_proc_address,
29988                b"glTexSubImage2D\0",
29989                &self.glTexSubImage2D_p,
29990            )
29991        }
29992        #[inline]
29993        #[doc(hidden)]
29994        pub fn TexSubImage2D_is_loaded(&self) -> bool {
29995            !self.glTexSubImage2D_p.load(RELAX).is_null()
29996        }
29997        /// [glTexSubImage3D](http://docs.gl/gl4/glTexSubImage3D)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)
29998        /// * `target` group: TextureTarget
29999        /// * `level` group: CheckedInt32
30000        /// * `xoffset` group: CheckedInt32
30001        /// * `yoffset` group: CheckedInt32
30002        /// * `zoffset` group: CheckedInt32
30003        /// * `format` group: PixelFormat
30004        /// * `type_` group: PixelType
30005        /// * `pixels` len: COMPSIZE(format,type,width,height,depth)
30006        #[cfg_attr(feature = "inline", inline)]
30007        #[cfg_attr(feature = "inline_always", inline(always))]
30008        pub unsafe fn TexSubImage3D(
30009            &self,
30010            target: GLenum,
30011            level: GLint,
30012            xoffset: GLint,
30013            yoffset: GLint,
30014            zoffset: GLint,
30015            width: GLsizei,
30016            height: GLsizei,
30017            depth: GLsizei,
30018            format: GLenum,
30019            type_: GLenum,
30020            pixels: *const c_void,
30021        ) {
30022            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30023            {
30024                trace!("calling gl.TexSubImage3D({:#X}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels);
30025            }
30026            let out = call_atomic_ptr_11arg(
30027                "glTexSubImage3D",
30028                &self.glTexSubImage3D_p,
30029                target,
30030                level,
30031                xoffset,
30032                yoffset,
30033                zoffset,
30034                width,
30035                height,
30036                depth,
30037                format,
30038                type_,
30039                pixels,
30040            );
30041            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30042            {
30043                self.automatic_glGetError("glTexSubImage3D");
30044            }
30045            out
30046        }
30047        #[doc(hidden)]
30048        pub unsafe fn TexSubImage3D_load_with_dyn(
30049            &self,
30050            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30051        ) -> bool {
30052            load_dyn_name_atomic_ptr(
30053                get_proc_address,
30054                b"glTexSubImage3D\0",
30055                &self.glTexSubImage3D_p,
30056            )
30057        }
30058        #[inline]
30059        #[doc(hidden)]
30060        pub fn TexSubImage3D_is_loaded(&self) -> bool {
30061            !self.glTexSubImage3D_p.load(RELAX).is_null()
30062        }
30063        /// [glTextureBarrier](http://docs.gl/gl4/glTextureBarrier)()
30064        #[cfg_attr(feature = "inline", inline)]
30065        #[cfg_attr(feature = "inline_always", inline(always))]
30066        pub unsafe fn TextureBarrier(&self) {
30067            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30068            {
30069                trace!("calling gl.TextureBarrier();",);
30070            }
30071            let out = call_atomic_ptr_0arg("glTextureBarrier", &self.glTextureBarrier_p);
30072            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30073            {
30074                self.automatic_glGetError("glTextureBarrier");
30075            }
30076            out
30077        }
30078        #[doc(hidden)]
30079        pub unsafe fn TextureBarrier_load_with_dyn(
30080            &self,
30081            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30082        ) -> bool {
30083            load_dyn_name_atomic_ptr(
30084                get_proc_address,
30085                b"glTextureBarrier\0",
30086                &self.glTextureBarrier_p,
30087            )
30088        }
30089        #[inline]
30090        #[doc(hidden)]
30091        pub fn TextureBarrier_is_loaded(&self) -> bool {
30092            !self.glTextureBarrier_p.load(RELAX).is_null()
30093        }
30094        /// [glTextureBuffer](http://docs.gl/gl4/glTextureBuffer)(texture, internalformat, buffer)
30095        /// * `internalformat` group: InternalFormat
30096        #[cfg_attr(feature = "inline", inline)]
30097        #[cfg_attr(feature = "inline_always", inline(always))]
30098        pub unsafe fn TextureBuffer(
30099            &self,
30100            texture: GLuint,
30101            internalformat: GLenum,
30102            buffer: GLuint,
30103        ) {
30104            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30105            {
30106                trace!(
30107                    "calling gl.TextureBuffer({:?}, {:#X}, {:?});",
30108                    texture,
30109                    internalformat,
30110                    buffer
30111                );
30112            }
30113            let out = call_atomic_ptr_3arg(
30114                "glTextureBuffer",
30115                &self.glTextureBuffer_p,
30116                texture,
30117                internalformat,
30118                buffer,
30119            );
30120            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30121            {
30122                self.automatic_glGetError("glTextureBuffer");
30123            }
30124            out
30125        }
30126        #[doc(hidden)]
30127        pub unsafe fn TextureBuffer_load_with_dyn(
30128            &self,
30129            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30130        ) -> bool {
30131            load_dyn_name_atomic_ptr(
30132                get_proc_address,
30133                b"glTextureBuffer\0",
30134                &self.glTextureBuffer_p,
30135            )
30136        }
30137        #[inline]
30138        #[doc(hidden)]
30139        pub fn TextureBuffer_is_loaded(&self) -> bool {
30140            !self.glTextureBuffer_p.load(RELAX).is_null()
30141        }
30142        /// [glTextureBufferRange](http://docs.gl/gl4/glTextureBufferRange)(texture, internalformat, buffer, offset, size)
30143        /// * `internalformat` group: InternalFormat
30144        /// * `size` group: BufferSize
30145        #[cfg_attr(feature = "inline", inline)]
30146        #[cfg_attr(feature = "inline_always", inline(always))]
30147        pub unsafe fn TextureBufferRange(
30148            &self,
30149            texture: GLuint,
30150            internalformat: GLenum,
30151            buffer: GLuint,
30152            offset: GLintptr,
30153            size: GLsizeiptr,
30154        ) {
30155            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30156            {
30157                trace!(
30158                    "calling gl.TextureBufferRange({:?}, {:#X}, {:?}, {:?}, {:?});",
30159                    texture,
30160                    internalformat,
30161                    buffer,
30162                    offset,
30163                    size
30164                );
30165            }
30166            let out = call_atomic_ptr_5arg(
30167                "glTextureBufferRange",
30168                &self.glTextureBufferRange_p,
30169                texture,
30170                internalformat,
30171                buffer,
30172                offset,
30173                size,
30174            );
30175            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30176            {
30177                self.automatic_glGetError("glTextureBufferRange");
30178            }
30179            out
30180        }
30181        #[doc(hidden)]
30182        pub unsafe fn TextureBufferRange_load_with_dyn(
30183            &self,
30184            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30185        ) -> bool {
30186            load_dyn_name_atomic_ptr(
30187                get_proc_address,
30188                b"glTextureBufferRange\0",
30189                &self.glTextureBufferRange_p,
30190            )
30191        }
30192        #[inline]
30193        #[doc(hidden)]
30194        pub fn TextureBufferRange_is_loaded(&self) -> bool {
30195            !self.glTextureBufferRange_p.load(RELAX).is_null()
30196        }
30197        /// [glTextureParameterIiv](http://docs.gl/gl4/glTextureParameter)(texture, pname, params)
30198        /// * `pname` group: TextureParameterName
30199        #[cfg_attr(feature = "inline", inline)]
30200        #[cfg_attr(feature = "inline_always", inline(always))]
30201        pub unsafe fn TextureParameterIiv(
30202            &self,
30203            texture: GLuint,
30204            pname: GLenum,
30205            params: *const GLint,
30206        ) {
30207            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30208            {
30209                trace!(
30210                    "calling gl.TextureParameterIiv({:?}, {:#X}, {:p});",
30211                    texture,
30212                    pname,
30213                    params
30214                );
30215            }
30216            let out = call_atomic_ptr_3arg(
30217                "glTextureParameterIiv",
30218                &self.glTextureParameterIiv_p,
30219                texture,
30220                pname,
30221                params,
30222            );
30223            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30224            {
30225                self.automatic_glGetError("glTextureParameterIiv");
30226            }
30227            out
30228        }
30229        #[doc(hidden)]
30230        pub unsafe fn TextureParameterIiv_load_with_dyn(
30231            &self,
30232            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30233        ) -> bool {
30234            load_dyn_name_atomic_ptr(
30235                get_proc_address,
30236                b"glTextureParameterIiv\0",
30237                &self.glTextureParameterIiv_p,
30238            )
30239        }
30240        #[inline]
30241        #[doc(hidden)]
30242        pub fn TextureParameterIiv_is_loaded(&self) -> bool {
30243            !self.glTextureParameterIiv_p.load(RELAX).is_null()
30244        }
30245        /// [glTextureParameterIuiv](http://docs.gl/gl4/glTextureParameter)(texture, pname, params)
30246        /// * `pname` group: TextureParameterName
30247        #[cfg_attr(feature = "inline", inline)]
30248        #[cfg_attr(feature = "inline_always", inline(always))]
30249        pub unsafe fn TextureParameterIuiv(
30250            &self,
30251            texture: GLuint,
30252            pname: GLenum,
30253            params: *const GLuint,
30254        ) {
30255            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30256            {
30257                trace!(
30258                    "calling gl.TextureParameterIuiv({:?}, {:#X}, {:p});",
30259                    texture,
30260                    pname,
30261                    params
30262                );
30263            }
30264            let out = call_atomic_ptr_3arg(
30265                "glTextureParameterIuiv",
30266                &self.glTextureParameterIuiv_p,
30267                texture,
30268                pname,
30269                params,
30270            );
30271            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30272            {
30273                self.automatic_glGetError("glTextureParameterIuiv");
30274            }
30275            out
30276        }
30277        #[doc(hidden)]
30278        pub unsafe fn TextureParameterIuiv_load_with_dyn(
30279            &self,
30280            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30281        ) -> bool {
30282            load_dyn_name_atomic_ptr(
30283                get_proc_address,
30284                b"glTextureParameterIuiv\0",
30285                &self.glTextureParameterIuiv_p,
30286            )
30287        }
30288        #[inline]
30289        #[doc(hidden)]
30290        pub fn TextureParameterIuiv_is_loaded(&self) -> bool {
30291            !self.glTextureParameterIuiv_p.load(RELAX).is_null()
30292        }
30293        /// [glTextureParameterf](http://docs.gl/gl4/glTextureParameter)(texture, pname, param)
30294        /// * `pname` group: TextureParameterName
30295        #[cfg_attr(feature = "inline", inline)]
30296        #[cfg_attr(feature = "inline_always", inline(always))]
30297        pub unsafe fn TextureParameterf(&self, texture: GLuint, pname: GLenum, param: GLfloat) {
30298            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30299            {
30300                trace!(
30301                    "calling gl.TextureParameterf({:?}, {:#X}, {:?});",
30302                    texture,
30303                    pname,
30304                    param
30305                );
30306            }
30307            let out = call_atomic_ptr_3arg(
30308                "glTextureParameterf",
30309                &self.glTextureParameterf_p,
30310                texture,
30311                pname,
30312                param,
30313            );
30314            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30315            {
30316                self.automatic_glGetError("glTextureParameterf");
30317            }
30318            out
30319        }
30320        #[doc(hidden)]
30321        pub unsafe fn TextureParameterf_load_with_dyn(
30322            &self,
30323            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30324        ) -> bool {
30325            load_dyn_name_atomic_ptr(
30326                get_proc_address,
30327                b"glTextureParameterf\0",
30328                &self.glTextureParameterf_p,
30329            )
30330        }
30331        #[inline]
30332        #[doc(hidden)]
30333        pub fn TextureParameterf_is_loaded(&self) -> bool {
30334            !self.glTextureParameterf_p.load(RELAX).is_null()
30335        }
30336        /// [glTextureParameterfv](http://docs.gl/gl4/glTextureParameter)(texture, pname, param)
30337        /// * `pname` group: TextureParameterName
30338        #[cfg_attr(feature = "inline", inline)]
30339        #[cfg_attr(feature = "inline_always", inline(always))]
30340        pub unsafe fn TextureParameterfv(
30341            &self,
30342            texture: GLuint,
30343            pname: GLenum,
30344            param: *const GLfloat,
30345        ) {
30346            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30347            {
30348                trace!(
30349                    "calling gl.TextureParameterfv({:?}, {:#X}, {:p});",
30350                    texture,
30351                    pname,
30352                    param
30353                );
30354            }
30355            let out = call_atomic_ptr_3arg(
30356                "glTextureParameterfv",
30357                &self.glTextureParameterfv_p,
30358                texture,
30359                pname,
30360                param,
30361            );
30362            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30363            {
30364                self.automatic_glGetError("glTextureParameterfv");
30365            }
30366            out
30367        }
30368        #[doc(hidden)]
30369        pub unsafe fn TextureParameterfv_load_with_dyn(
30370            &self,
30371            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30372        ) -> bool {
30373            load_dyn_name_atomic_ptr(
30374                get_proc_address,
30375                b"glTextureParameterfv\0",
30376                &self.glTextureParameterfv_p,
30377            )
30378        }
30379        #[inline]
30380        #[doc(hidden)]
30381        pub fn TextureParameterfv_is_loaded(&self) -> bool {
30382            !self.glTextureParameterfv_p.load(RELAX).is_null()
30383        }
30384        /// [glTextureParameteri](http://docs.gl/gl4/glTextureParameter)(texture, pname, param)
30385        /// * `pname` group: TextureParameterName
30386        #[cfg_attr(feature = "inline", inline)]
30387        #[cfg_attr(feature = "inline_always", inline(always))]
30388        pub unsafe fn TextureParameteri(&self, texture: GLuint, pname: GLenum, param: GLint) {
30389            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30390            {
30391                trace!(
30392                    "calling gl.TextureParameteri({:?}, {:#X}, {:?});",
30393                    texture,
30394                    pname,
30395                    param
30396                );
30397            }
30398            let out = call_atomic_ptr_3arg(
30399                "glTextureParameteri",
30400                &self.glTextureParameteri_p,
30401                texture,
30402                pname,
30403                param,
30404            );
30405            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30406            {
30407                self.automatic_glGetError("glTextureParameteri");
30408            }
30409            out
30410        }
30411        #[doc(hidden)]
30412        pub unsafe fn TextureParameteri_load_with_dyn(
30413            &self,
30414            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30415        ) -> bool {
30416            load_dyn_name_atomic_ptr(
30417                get_proc_address,
30418                b"glTextureParameteri\0",
30419                &self.glTextureParameteri_p,
30420            )
30421        }
30422        #[inline]
30423        #[doc(hidden)]
30424        pub fn TextureParameteri_is_loaded(&self) -> bool {
30425            !self.glTextureParameteri_p.load(RELAX).is_null()
30426        }
30427        /// [glTextureParameteriv](http://docs.gl/gl4/glTextureParameter)(texture, pname, param)
30428        /// * `pname` group: TextureParameterName
30429        #[cfg_attr(feature = "inline", inline)]
30430        #[cfg_attr(feature = "inline_always", inline(always))]
30431        pub unsafe fn TextureParameteriv(
30432            &self,
30433            texture: GLuint,
30434            pname: GLenum,
30435            param: *const GLint,
30436        ) {
30437            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30438            {
30439                trace!(
30440                    "calling gl.TextureParameteriv({:?}, {:#X}, {:p});",
30441                    texture,
30442                    pname,
30443                    param
30444                );
30445            }
30446            let out = call_atomic_ptr_3arg(
30447                "glTextureParameteriv",
30448                &self.glTextureParameteriv_p,
30449                texture,
30450                pname,
30451                param,
30452            );
30453            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30454            {
30455                self.automatic_glGetError("glTextureParameteriv");
30456            }
30457            out
30458        }
30459        #[doc(hidden)]
30460        pub unsafe fn TextureParameteriv_load_with_dyn(
30461            &self,
30462            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30463        ) -> bool {
30464            load_dyn_name_atomic_ptr(
30465                get_proc_address,
30466                b"glTextureParameteriv\0",
30467                &self.glTextureParameteriv_p,
30468            )
30469        }
30470        #[inline]
30471        #[doc(hidden)]
30472        pub fn TextureParameteriv_is_loaded(&self) -> bool {
30473            !self.glTextureParameteriv_p.load(RELAX).is_null()
30474        }
30475        /// [glTextureStorage1D](http://docs.gl/gl4/glTextureStorage1D)(texture, levels, internalformat, width)
30476        /// * `internalformat` group: InternalFormat
30477        #[cfg_attr(feature = "inline", inline)]
30478        #[cfg_attr(feature = "inline_always", inline(always))]
30479        pub unsafe fn TextureStorage1D(
30480            &self,
30481            texture: GLuint,
30482            levels: GLsizei,
30483            internalformat: GLenum,
30484            width: GLsizei,
30485        ) {
30486            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30487            {
30488                trace!(
30489                    "calling gl.TextureStorage1D({:?}, {:?}, {:#X}, {:?});",
30490                    texture,
30491                    levels,
30492                    internalformat,
30493                    width
30494                );
30495            }
30496            let out = call_atomic_ptr_4arg(
30497                "glTextureStorage1D",
30498                &self.glTextureStorage1D_p,
30499                texture,
30500                levels,
30501                internalformat,
30502                width,
30503            );
30504            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30505            {
30506                self.automatic_glGetError("glTextureStorage1D");
30507            }
30508            out
30509        }
30510        #[doc(hidden)]
30511        pub unsafe fn TextureStorage1D_load_with_dyn(
30512            &self,
30513            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30514        ) -> bool {
30515            load_dyn_name_atomic_ptr(
30516                get_proc_address,
30517                b"glTextureStorage1D\0",
30518                &self.glTextureStorage1D_p,
30519            )
30520        }
30521        #[inline]
30522        #[doc(hidden)]
30523        pub fn TextureStorage1D_is_loaded(&self) -> bool {
30524            !self.glTextureStorage1D_p.load(RELAX).is_null()
30525        }
30526        /// [glTextureStorage2D](http://docs.gl/gl4/glTextureStorage2D)(texture, levels, internalformat, width, height)
30527        /// * `internalformat` group: InternalFormat
30528        #[cfg_attr(feature = "inline", inline)]
30529        #[cfg_attr(feature = "inline_always", inline(always))]
30530        pub unsafe fn TextureStorage2D(
30531            &self,
30532            texture: GLuint,
30533            levels: GLsizei,
30534            internalformat: GLenum,
30535            width: GLsizei,
30536            height: GLsizei,
30537        ) {
30538            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30539            {
30540                trace!(
30541                    "calling gl.TextureStorage2D({:?}, {:?}, {:#X}, {:?}, {:?});",
30542                    texture,
30543                    levels,
30544                    internalformat,
30545                    width,
30546                    height
30547                );
30548            }
30549            let out = call_atomic_ptr_5arg(
30550                "glTextureStorage2D",
30551                &self.glTextureStorage2D_p,
30552                texture,
30553                levels,
30554                internalformat,
30555                width,
30556                height,
30557            );
30558            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30559            {
30560                self.automatic_glGetError("glTextureStorage2D");
30561            }
30562            out
30563        }
30564        #[doc(hidden)]
30565        pub unsafe fn TextureStorage2D_load_with_dyn(
30566            &self,
30567            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30568        ) -> bool {
30569            load_dyn_name_atomic_ptr(
30570                get_proc_address,
30571                b"glTextureStorage2D\0",
30572                &self.glTextureStorage2D_p,
30573            )
30574        }
30575        #[inline]
30576        #[doc(hidden)]
30577        pub fn TextureStorage2D_is_loaded(&self) -> bool {
30578            !self.glTextureStorage2D_p.load(RELAX).is_null()
30579        }
30580        /// [glTextureStorage2DMultisample](http://docs.gl/gl4/glTextureStorage2DMultisample)(texture, samples, internalformat, width, height, fixedsamplelocations)
30581        /// * `internalformat` group: InternalFormat
30582        #[cfg_attr(feature = "inline", inline)]
30583        #[cfg_attr(feature = "inline_always", inline(always))]
30584        pub unsafe fn TextureStorage2DMultisample(
30585            &self,
30586            texture: GLuint,
30587            samples: GLsizei,
30588            internalformat: GLenum,
30589            width: GLsizei,
30590            height: GLsizei,
30591            fixedsamplelocations: GLboolean,
30592        ) {
30593            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30594            {
30595                trace!(
30596                    "calling gl.TextureStorage2DMultisample({:?}, {:?}, {:#X}, {:?}, {:?}, {:?});",
30597                    texture,
30598                    samples,
30599                    internalformat,
30600                    width,
30601                    height,
30602                    fixedsamplelocations
30603                );
30604            }
30605            let out = call_atomic_ptr_6arg(
30606                "glTextureStorage2DMultisample",
30607                &self.glTextureStorage2DMultisample_p,
30608                texture,
30609                samples,
30610                internalformat,
30611                width,
30612                height,
30613                fixedsamplelocations,
30614            );
30615            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30616            {
30617                self.automatic_glGetError("glTextureStorage2DMultisample");
30618            }
30619            out
30620        }
30621        #[doc(hidden)]
30622        pub unsafe fn TextureStorage2DMultisample_load_with_dyn(
30623            &self,
30624            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30625        ) -> bool {
30626            load_dyn_name_atomic_ptr(
30627                get_proc_address,
30628                b"glTextureStorage2DMultisample\0",
30629                &self.glTextureStorage2DMultisample_p,
30630            )
30631        }
30632        #[inline]
30633        #[doc(hidden)]
30634        pub fn TextureStorage2DMultisample_is_loaded(&self) -> bool {
30635            !self.glTextureStorage2DMultisample_p.load(RELAX).is_null()
30636        }
30637        /// [glTextureStorage3D](http://docs.gl/gl4/glTextureStorage3D)(texture, levels, internalformat, width, height, depth)
30638        /// * `internalformat` group: InternalFormat
30639        #[cfg_attr(feature = "inline", inline)]
30640        #[cfg_attr(feature = "inline_always", inline(always))]
30641        pub unsafe fn TextureStorage3D(
30642            &self,
30643            texture: GLuint,
30644            levels: GLsizei,
30645            internalformat: GLenum,
30646            width: GLsizei,
30647            height: GLsizei,
30648            depth: GLsizei,
30649        ) {
30650            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30651            {
30652                trace!(
30653                    "calling gl.TextureStorage3D({:?}, {:?}, {:#X}, {:?}, {:?}, {:?});",
30654                    texture,
30655                    levels,
30656                    internalformat,
30657                    width,
30658                    height,
30659                    depth
30660                );
30661            }
30662            let out = call_atomic_ptr_6arg(
30663                "glTextureStorage3D",
30664                &self.glTextureStorage3D_p,
30665                texture,
30666                levels,
30667                internalformat,
30668                width,
30669                height,
30670                depth,
30671            );
30672            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30673            {
30674                self.automatic_glGetError("glTextureStorage3D");
30675            }
30676            out
30677        }
30678        #[doc(hidden)]
30679        pub unsafe fn TextureStorage3D_load_with_dyn(
30680            &self,
30681            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30682        ) -> bool {
30683            load_dyn_name_atomic_ptr(
30684                get_proc_address,
30685                b"glTextureStorage3D\0",
30686                &self.glTextureStorage3D_p,
30687            )
30688        }
30689        #[inline]
30690        #[doc(hidden)]
30691        pub fn TextureStorage3D_is_loaded(&self) -> bool {
30692            !self.glTextureStorage3D_p.load(RELAX).is_null()
30693        }
30694        /// [glTextureStorage3DMultisample](http://docs.gl/gl4/glTextureStorage3DMultisample)(texture, samples, internalformat, width, height, depth, fixedsamplelocations)
30695        /// * `internalformat` group: InternalFormat
30696        #[cfg_attr(feature = "inline", inline)]
30697        #[cfg_attr(feature = "inline_always", inline(always))]
30698        pub unsafe fn TextureStorage3DMultisample(
30699            &self,
30700            texture: GLuint,
30701            samples: GLsizei,
30702            internalformat: GLenum,
30703            width: GLsizei,
30704            height: GLsizei,
30705            depth: GLsizei,
30706            fixedsamplelocations: GLboolean,
30707        ) {
30708            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30709            {
30710                trace!("calling gl.TextureStorage3DMultisample({:?}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?});", texture, samples, internalformat, width, height, depth, fixedsamplelocations);
30711            }
30712            let out = call_atomic_ptr_7arg(
30713                "glTextureStorage3DMultisample",
30714                &self.glTextureStorage3DMultisample_p,
30715                texture,
30716                samples,
30717                internalformat,
30718                width,
30719                height,
30720                depth,
30721                fixedsamplelocations,
30722            );
30723            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30724            {
30725                self.automatic_glGetError("glTextureStorage3DMultisample");
30726            }
30727            out
30728        }
30729        #[doc(hidden)]
30730        pub unsafe fn TextureStorage3DMultisample_load_with_dyn(
30731            &self,
30732            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30733        ) -> bool {
30734            load_dyn_name_atomic_ptr(
30735                get_proc_address,
30736                b"glTextureStorage3DMultisample\0",
30737                &self.glTextureStorage3DMultisample_p,
30738            )
30739        }
30740        #[inline]
30741        #[doc(hidden)]
30742        pub fn TextureStorage3DMultisample_is_loaded(&self) -> bool {
30743            !self.glTextureStorage3DMultisample_p.load(RELAX).is_null()
30744        }
30745        /// [glTextureSubImage1D](http://docs.gl/gl4/glTextureSubImage1D)(texture, level, xoffset, width, format, type_, pixels)
30746        /// * `format` group: PixelFormat
30747        /// * `type_` group: PixelType
30748        #[cfg_attr(feature = "inline", inline)]
30749        #[cfg_attr(feature = "inline_always", inline(always))]
30750        pub unsafe fn TextureSubImage1D(
30751            &self,
30752            texture: GLuint,
30753            level: GLint,
30754            xoffset: GLint,
30755            width: GLsizei,
30756            format: GLenum,
30757            type_: GLenum,
30758            pixels: *const c_void,
30759        ) {
30760            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30761            {
30762                trace!(
30763                    "calling gl.TextureSubImage1D({:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});",
30764                    texture,
30765                    level,
30766                    xoffset,
30767                    width,
30768                    format,
30769                    type_,
30770                    pixels
30771                );
30772            }
30773            let out = call_atomic_ptr_7arg(
30774                "glTextureSubImage1D",
30775                &self.glTextureSubImage1D_p,
30776                texture,
30777                level,
30778                xoffset,
30779                width,
30780                format,
30781                type_,
30782                pixels,
30783            );
30784            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30785            {
30786                self.automatic_glGetError("glTextureSubImage1D");
30787            }
30788            out
30789        }
30790        #[doc(hidden)]
30791        pub unsafe fn TextureSubImage1D_load_with_dyn(
30792            &self,
30793            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30794        ) -> bool {
30795            load_dyn_name_atomic_ptr(
30796                get_proc_address,
30797                b"glTextureSubImage1D\0",
30798                &self.glTextureSubImage1D_p,
30799            )
30800        }
30801        #[inline]
30802        #[doc(hidden)]
30803        pub fn TextureSubImage1D_is_loaded(&self) -> bool {
30804            !self.glTextureSubImage1D_p.load(RELAX).is_null()
30805        }
30806        /// [glTextureSubImage2D](http://docs.gl/gl4/glTextureSubImage2D)(texture, level, xoffset, yoffset, width, height, format, type_, pixels)
30807        /// * `format` group: PixelFormat
30808        /// * `type_` group: PixelType
30809        #[cfg_attr(feature = "inline", inline)]
30810        #[cfg_attr(feature = "inline_always", inline(always))]
30811        pub unsafe fn TextureSubImage2D(
30812            &self,
30813            texture: GLuint,
30814            level: GLint,
30815            xoffset: GLint,
30816            yoffset: GLint,
30817            width: GLsizei,
30818            height: GLsizei,
30819            format: GLenum,
30820            type_: GLenum,
30821            pixels: *const c_void,
30822        ) {
30823            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30824            {
30825                trace!("calling gl.TextureSubImage2D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", texture, level, xoffset, yoffset, width, height, format, type_, pixels);
30826            }
30827            let out = call_atomic_ptr_9arg(
30828                "glTextureSubImage2D",
30829                &self.glTextureSubImage2D_p,
30830                texture,
30831                level,
30832                xoffset,
30833                yoffset,
30834                width,
30835                height,
30836                format,
30837                type_,
30838                pixels,
30839            );
30840            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30841            {
30842                self.automatic_glGetError("glTextureSubImage2D");
30843            }
30844            out
30845        }
30846        #[doc(hidden)]
30847        pub unsafe fn TextureSubImage2D_load_with_dyn(
30848            &self,
30849            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30850        ) -> bool {
30851            load_dyn_name_atomic_ptr(
30852                get_proc_address,
30853                b"glTextureSubImage2D\0",
30854                &self.glTextureSubImage2D_p,
30855            )
30856        }
30857        #[inline]
30858        #[doc(hidden)]
30859        pub fn TextureSubImage2D_is_loaded(&self) -> bool {
30860            !self.glTextureSubImage2D_p.load(RELAX).is_null()
30861        }
30862        /// [glTextureSubImage3D](http://docs.gl/gl4/glTextureSubImage3D)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)
30863        /// * `format` group: PixelFormat
30864        /// * `type_` group: PixelType
30865        #[cfg_attr(feature = "inline", inline)]
30866        #[cfg_attr(feature = "inline_always", inline(always))]
30867        pub unsafe fn TextureSubImage3D(
30868            &self,
30869            texture: GLuint,
30870            level: GLint,
30871            xoffset: GLint,
30872            yoffset: GLint,
30873            zoffset: GLint,
30874            width: GLsizei,
30875            height: GLsizei,
30876            depth: GLsizei,
30877            format: GLenum,
30878            type_: GLenum,
30879            pixels: *const c_void,
30880        ) {
30881            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30882            {
30883                trace!("calling gl.TextureSubImage3D({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:#X}, {:#X}, {:p});", texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels);
30884            }
30885            let out = call_atomic_ptr_11arg(
30886                "glTextureSubImage3D",
30887                &self.glTextureSubImage3D_p,
30888                texture,
30889                level,
30890                xoffset,
30891                yoffset,
30892                zoffset,
30893                width,
30894                height,
30895                depth,
30896                format,
30897                type_,
30898                pixels,
30899            );
30900            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30901            {
30902                self.automatic_glGetError("glTextureSubImage3D");
30903            }
30904            out
30905        }
30906        #[doc(hidden)]
30907        pub unsafe fn TextureSubImage3D_load_with_dyn(
30908            &self,
30909            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30910        ) -> bool {
30911            load_dyn_name_atomic_ptr(
30912                get_proc_address,
30913                b"glTextureSubImage3D\0",
30914                &self.glTextureSubImage3D_p,
30915            )
30916        }
30917        #[inline]
30918        #[doc(hidden)]
30919        pub fn TextureSubImage3D_is_loaded(&self) -> bool {
30920            !self.glTextureSubImage3D_p.load(RELAX).is_null()
30921        }
30922        /// [glTextureView](http://docs.gl/gl4/glTextureView)(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers)
30923        /// * `target` group: TextureTarget
30924        /// * `internalformat` group: InternalFormat
30925        #[cfg_attr(feature = "inline", inline)]
30926        #[cfg_attr(feature = "inline_always", inline(always))]
30927        pub unsafe fn TextureView(
30928            &self,
30929            texture: GLuint,
30930            target: GLenum,
30931            origtexture: GLuint,
30932            internalformat: GLenum,
30933            minlevel: GLuint,
30934            numlevels: GLuint,
30935            minlayer: GLuint,
30936            numlayers: GLuint,
30937        ) {
30938            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30939            {
30940                trace!(
30941                    "calling gl.TextureView({:?}, {:#X}, {:?}, {:#X}, {:?}, {:?}, {:?}, {:?});",
30942                    texture,
30943                    target,
30944                    origtexture,
30945                    internalformat,
30946                    minlevel,
30947                    numlevels,
30948                    minlayer,
30949                    numlayers
30950                );
30951            }
30952            let out = call_atomic_ptr_8arg(
30953                "glTextureView",
30954                &self.glTextureView_p,
30955                texture,
30956                target,
30957                origtexture,
30958                internalformat,
30959                minlevel,
30960                numlevels,
30961                minlayer,
30962                numlayers,
30963            );
30964            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
30965            {
30966                self.automatic_glGetError("glTextureView");
30967            }
30968            out
30969        }
30970        #[doc(hidden)]
30971        pub unsafe fn TextureView_load_with_dyn(
30972            &self,
30973            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
30974        ) -> bool {
30975            load_dyn_name_atomic_ptr(get_proc_address, b"glTextureView\0", &self.glTextureView_p)
30976        }
30977        #[inline]
30978        #[doc(hidden)]
30979        pub fn TextureView_is_loaded(&self) -> bool {
30980            !self.glTextureView_p.load(RELAX).is_null()
30981        }
30982        /// [glTransformFeedbackBufferBase](http://docs.gl/gl4/glTransformFeedbackBufferBase)(xfb, index, buffer)
30983        #[cfg_attr(feature = "inline", inline)]
30984        #[cfg_attr(feature = "inline_always", inline(always))]
30985        pub unsafe fn TransformFeedbackBufferBase(
30986            &self,
30987            xfb: GLuint,
30988            index: GLuint,
30989            buffer: GLuint,
30990        ) {
30991            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
30992            {
30993                trace!(
30994                    "calling gl.TransformFeedbackBufferBase({:?}, {:?}, {:?});",
30995                    xfb,
30996                    index,
30997                    buffer
30998                );
30999            }
31000            let out = call_atomic_ptr_3arg(
31001                "glTransformFeedbackBufferBase",
31002                &self.glTransformFeedbackBufferBase_p,
31003                xfb,
31004                index,
31005                buffer,
31006            );
31007            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31008            {
31009                self.automatic_glGetError("glTransformFeedbackBufferBase");
31010            }
31011            out
31012        }
31013        #[doc(hidden)]
31014        pub unsafe fn TransformFeedbackBufferBase_load_with_dyn(
31015            &self,
31016            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31017        ) -> bool {
31018            load_dyn_name_atomic_ptr(
31019                get_proc_address,
31020                b"glTransformFeedbackBufferBase\0",
31021                &self.glTransformFeedbackBufferBase_p,
31022            )
31023        }
31024        #[inline]
31025        #[doc(hidden)]
31026        pub fn TransformFeedbackBufferBase_is_loaded(&self) -> bool {
31027            !self.glTransformFeedbackBufferBase_p.load(RELAX).is_null()
31028        }
31029        /// [glTransformFeedbackBufferRange](http://docs.gl/gl4/glTransformFeedbackBufferRange)(xfb, index, buffer, offset, size)
31030        /// * `size` group: BufferSize
31031        #[cfg_attr(feature = "inline", inline)]
31032        #[cfg_attr(feature = "inline_always", inline(always))]
31033        pub unsafe fn TransformFeedbackBufferRange(
31034            &self,
31035            xfb: GLuint,
31036            index: GLuint,
31037            buffer: GLuint,
31038            offset: GLintptr,
31039            size: GLsizeiptr,
31040        ) {
31041            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31042            {
31043                trace!(
31044                    "calling gl.TransformFeedbackBufferRange({:?}, {:?}, {:?}, {:?}, {:?});",
31045                    xfb,
31046                    index,
31047                    buffer,
31048                    offset,
31049                    size
31050                );
31051            }
31052            let out = call_atomic_ptr_5arg(
31053                "glTransformFeedbackBufferRange",
31054                &self.glTransformFeedbackBufferRange_p,
31055                xfb,
31056                index,
31057                buffer,
31058                offset,
31059                size,
31060            );
31061            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31062            {
31063                self.automatic_glGetError("glTransformFeedbackBufferRange");
31064            }
31065            out
31066        }
31067        #[doc(hidden)]
31068        pub unsafe fn TransformFeedbackBufferRange_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(
31073                get_proc_address,
31074                b"glTransformFeedbackBufferRange\0",
31075                &self.glTransformFeedbackBufferRange_p,
31076            )
31077        }
31078        #[inline]
31079        #[doc(hidden)]
31080        pub fn TransformFeedbackBufferRange_is_loaded(&self) -> bool {
31081            !self.glTransformFeedbackBufferRange_p.load(RELAX).is_null()
31082        }
31083        /// [glTransformFeedbackVaryings](http://docs.gl/gl4/glTransformFeedbackVaryings)(program, count, varyings, bufferMode)
31084        /// * `varyings` len: count
31085        /// * `bufferMode` group: TransformFeedbackBufferMode
31086        #[cfg_attr(feature = "inline", inline)]
31087        #[cfg_attr(feature = "inline_always", inline(always))]
31088        pub unsafe fn TransformFeedbackVaryings(
31089            &self,
31090            program: GLuint,
31091            count: GLsizei,
31092            varyings: *const *const GLchar,
31093            bufferMode: GLenum,
31094        ) {
31095            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31096            {
31097                trace!(
31098                    "calling gl.TransformFeedbackVaryings({:?}, {:?}, {:p}, {:#X});",
31099                    program,
31100                    count,
31101                    varyings,
31102                    bufferMode
31103                );
31104            }
31105            let out = call_atomic_ptr_4arg(
31106                "glTransformFeedbackVaryings",
31107                &self.glTransformFeedbackVaryings_p,
31108                program,
31109                count,
31110                varyings,
31111                bufferMode,
31112            );
31113            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31114            {
31115                self.automatic_glGetError("glTransformFeedbackVaryings");
31116            }
31117            out
31118        }
31119        #[doc(hidden)]
31120        pub unsafe fn TransformFeedbackVaryings_load_with_dyn(
31121            &self,
31122            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31123        ) -> bool {
31124            load_dyn_name_atomic_ptr(
31125                get_proc_address,
31126                b"glTransformFeedbackVaryings\0",
31127                &self.glTransformFeedbackVaryings_p,
31128            )
31129        }
31130        #[inline]
31131        #[doc(hidden)]
31132        pub fn TransformFeedbackVaryings_is_loaded(&self) -> bool {
31133            !self.glTransformFeedbackVaryings_p.load(RELAX).is_null()
31134        }
31135        /// [glUniform1d](http://docs.gl/gl4/glUniform1d)(location, x)
31136        #[cfg_attr(feature = "inline", inline)]
31137        #[cfg_attr(feature = "inline_always", inline(always))]
31138        pub unsafe fn Uniform1d(&self, location: GLint, x: GLdouble) {
31139            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31140            {
31141                trace!("calling gl.Uniform1d({:?}, {:?});", location, x);
31142            }
31143            let out = call_atomic_ptr_2arg("glUniform1d", &self.glUniform1d_p, location, x);
31144            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31145            {
31146                self.automatic_glGetError("glUniform1d");
31147            }
31148            out
31149        }
31150        #[doc(hidden)]
31151        pub unsafe fn Uniform1d_load_with_dyn(
31152            &self,
31153            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31154        ) -> bool {
31155            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1d\0", &self.glUniform1d_p)
31156        }
31157        #[inline]
31158        #[doc(hidden)]
31159        pub fn Uniform1d_is_loaded(&self) -> bool {
31160            !self.glUniform1d_p.load(RELAX).is_null()
31161        }
31162        /// [glUniform1dv](http://docs.gl/gl4/glUniform1dv)(location, count, value)
31163        /// * `value` len: count*1
31164        #[cfg_attr(feature = "inline", inline)]
31165        #[cfg_attr(feature = "inline_always", inline(always))]
31166        pub unsafe fn Uniform1dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) {
31167            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31168            {
31169                trace!(
31170                    "calling gl.Uniform1dv({:?}, {:?}, {:p});",
31171                    location,
31172                    count,
31173                    value
31174                );
31175            }
31176            let out =
31177                call_atomic_ptr_3arg("glUniform1dv", &self.glUniform1dv_p, location, count, value);
31178            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31179            {
31180                self.automatic_glGetError("glUniform1dv");
31181            }
31182            out
31183        }
31184        #[doc(hidden)]
31185        pub unsafe fn Uniform1dv_load_with_dyn(
31186            &self,
31187            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31188        ) -> bool {
31189            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1dv\0", &self.glUniform1dv_p)
31190        }
31191        #[inline]
31192        #[doc(hidden)]
31193        pub fn Uniform1dv_is_loaded(&self) -> bool {
31194            !self.glUniform1dv_p.load(RELAX).is_null()
31195        }
31196        /// [glUniform1f](http://docs.gl/gl4/glUniform)(location, v0)
31197        #[cfg_attr(feature = "inline", inline)]
31198        #[cfg_attr(feature = "inline_always", inline(always))]
31199        pub unsafe fn Uniform1f(&self, location: GLint, v0: GLfloat) {
31200            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31201            {
31202                trace!("calling gl.Uniform1f({:?}, {:?});", location, v0);
31203            }
31204            let out = call_atomic_ptr_2arg("glUniform1f", &self.glUniform1f_p, location, v0);
31205            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31206            {
31207                self.automatic_glGetError("glUniform1f");
31208            }
31209            out
31210        }
31211        #[doc(hidden)]
31212        pub unsafe fn Uniform1f_load_with_dyn(
31213            &self,
31214            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31215        ) -> bool {
31216            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1f\0", &self.glUniform1f_p)
31217        }
31218        #[inline]
31219        #[doc(hidden)]
31220        pub fn Uniform1f_is_loaded(&self) -> bool {
31221            !self.glUniform1f_p.load(RELAX).is_null()
31222        }
31223        /// [glUniform1fv](http://docs.gl/gl4/glUniform)(location, count, value)
31224        /// * `value` len: count*1
31225        #[cfg_attr(feature = "inline", inline)]
31226        #[cfg_attr(feature = "inline_always", inline(always))]
31227        pub unsafe fn Uniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) {
31228            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31229            {
31230                trace!(
31231                    "calling gl.Uniform1fv({:?}, {:?}, {:p});",
31232                    location,
31233                    count,
31234                    value
31235                );
31236            }
31237            let out =
31238                call_atomic_ptr_3arg("glUniform1fv", &self.glUniform1fv_p, location, count, value);
31239            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31240            {
31241                self.automatic_glGetError("glUniform1fv");
31242            }
31243            out
31244        }
31245        #[doc(hidden)]
31246        pub unsafe fn Uniform1fv_load_with_dyn(
31247            &self,
31248            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31249        ) -> bool {
31250            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1fv\0", &self.glUniform1fv_p)
31251        }
31252        #[inline]
31253        #[doc(hidden)]
31254        pub fn Uniform1fv_is_loaded(&self) -> bool {
31255            !self.glUniform1fv_p.load(RELAX).is_null()
31256        }
31257        /// [glUniform1i](http://docs.gl/gl4/glUniform)(location, v0)
31258        #[cfg_attr(feature = "inline", inline)]
31259        #[cfg_attr(feature = "inline_always", inline(always))]
31260        pub unsafe fn Uniform1i(&self, location: GLint, v0: GLint) {
31261            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31262            {
31263                trace!("calling gl.Uniform1i({:?}, {:?});", location, v0);
31264            }
31265            let out = call_atomic_ptr_2arg("glUniform1i", &self.glUniform1i_p, location, v0);
31266            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31267            {
31268                self.automatic_glGetError("glUniform1i");
31269            }
31270            out
31271        }
31272        #[doc(hidden)]
31273        pub unsafe fn Uniform1i_load_with_dyn(
31274            &self,
31275            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31276        ) -> bool {
31277            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1i\0", &self.glUniform1i_p)
31278        }
31279        #[inline]
31280        #[doc(hidden)]
31281        pub fn Uniform1i_is_loaded(&self) -> bool {
31282            !self.glUniform1i_p.load(RELAX).is_null()
31283        }
31284        /// [glUniform1iv](http://docs.gl/gl4/glUniform)(location, count, value)
31285        /// * `value` len: count*1
31286        #[cfg_attr(feature = "inline", inline)]
31287        #[cfg_attr(feature = "inline_always", inline(always))]
31288        pub unsafe fn Uniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) {
31289            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31290            {
31291                trace!(
31292                    "calling gl.Uniform1iv({:?}, {:?}, {:p});",
31293                    location,
31294                    count,
31295                    value
31296                );
31297            }
31298            let out =
31299                call_atomic_ptr_3arg("glUniform1iv", &self.glUniform1iv_p, location, count, value);
31300            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31301            {
31302                self.automatic_glGetError("glUniform1iv");
31303            }
31304            out
31305        }
31306        #[doc(hidden)]
31307        pub unsafe fn Uniform1iv_load_with_dyn(
31308            &self,
31309            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31310        ) -> bool {
31311            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1iv\0", &self.glUniform1iv_p)
31312        }
31313        #[inline]
31314        #[doc(hidden)]
31315        pub fn Uniform1iv_is_loaded(&self) -> bool {
31316            !self.glUniform1iv_p.load(RELAX).is_null()
31317        }
31318        /// [glUniform1ui](http://docs.gl/gl4/glUniform)(location, v0)
31319        #[cfg_attr(feature = "inline", inline)]
31320        #[cfg_attr(feature = "inline_always", inline(always))]
31321        pub unsafe fn Uniform1ui(&self, location: GLint, v0: GLuint) {
31322            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31323            {
31324                trace!("calling gl.Uniform1ui({:?}, {:?});", location, v0);
31325            }
31326            let out = call_atomic_ptr_2arg("glUniform1ui", &self.glUniform1ui_p, location, v0);
31327            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31328            {
31329                self.automatic_glGetError("glUniform1ui");
31330            }
31331            out
31332        }
31333        #[doc(hidden)]
31334        pub unsafe fn Uniform1ui_load_with_dyn(
31335            &self,
31336            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31337        ) -> bool {
31338            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1ui\0", &self.glUniform1ui_p)
31339        }
31340        #[inline]
31341        #[doc(hidden)]
31342        pub fn Uniform1ui_is_loaded(&self) -> bool {
31343            !self.glUniform1ui_p.load(RELAX).is_null()
31344        }
31345        /// [glUniform1uiv](http://docs.gl/gl4/glUniform)(location, count, value)
31346        /// * `value` len: count*1
31347        #[cfg_attr(feature = "inline", inline)]
31348        #[cfg_attr(feature = "inline_always", inline(always))]
31349        pub unsafe fn Uniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) {
31350            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31351            {
31352                trace!(
31353                    "calling gl.Uniform1uiv({:?}, {:?}, {:p});",
31354                    location,
31355                    count,
31356                    value
31357                );
31358            }
31359            let out = call_atomic_ptr_3arg(
31360                "glUniform1uiv",
31361                &self.glUniform1uiv_p,
31362                location,
31363                count,
31364                value,
31365            );
31366            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31367            {
31368                self.automatic_glGetError("glUniform1uiv");
31369            }
31370            out
31371        }
31372        #[doc(hidden)]
31373        pub unsafe fn Uniform1uiv_load_with_dyn(
31374            &self,
31375            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31376        ) -> bool {
31377            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform1uiv\0", &self.glUniform1uiv_p)
31378        }
31379        #[inline]
31380        #[doc(hidden)]
31381        pub fn Uniform1uiv_is_loaded(&self) -> bool {
31382            !self.glUniform1uiv_p.load(RELAX).is_null()
31383        }
31384        /// [glUniform2d](http://docs.gl/gl4/glUniform2d)(location, x, y)
31385        #[cfg_attr(feature = "inline", inline)]
31386        #[cfg_attr(feature = "inline_always", inline(always))]
31387        pub unsafe fn Uniform2d(&self, location: GLint, x: GLdouble, y: GLdouble) {
31388            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31389            {
31390                trace!("calling gl.Uniform2d({:?}, {:?}, {:?});", location, x, y);
31391            }
31392            let out = call_atomic_ptr_3arg("glUniform2d", &self.glUniform2d_p, location, x, y);
31393            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31394            {
31395                self.automatic_glGetError("glUniform2d");
31396            }
31397            out
31398        }
31399        #[doc(hidden)]
31400        pub unsafe fn Uniform2d_load_with_dyn(
31401            &self,
31402            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31403        ) -> bool {
31404            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2d\0", &self.glUniform2d_p)
31405        }
31406        #[inline]
31407        #[doc(hidden)]
31408        pub fn Uniform2d_is_loaded(&self) -> bool {
31409            !self.glUniform2d_p.load(RELAX).is_null()
31410        }
31411        /// [glUniform2dv](http://docs.gl/gl4/glUniform2dv)(location, count, value)
31412        /// * `value` len: count*2
31413        #[cfg_attr(feature = "inline", inline)]
31414        #[cfg_attr(feature = "inline_always", inline(always))]
31415        pub unsafe fn Uniform2dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) {
31416            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31417            {
31418                trace!(
31419                    "calling gl.Uniform2dv({:?}, {:?}, {:p});",
31420                    location,
31421                    count,
31422                    value
31423                );
31424            }
31425            let out =
31426                call_atomic_ptr_3arg("glUniform2dv", &self.glUniform2dv_p, location, count, value);
31427            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31428            {
31429                self.automatic_glGetError("glUniform2dv");
31430            }
31431            out
31432        }
31433        #[doc(hidden)]
31434        pub unsafe fn Uniform2dv_load_with_dyn(
31435            &self,
31436            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31437        ) -> bool {
31438            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2dv\0", &self.glUniform2dv_p)
31439        }
31440        #[inline]
31441        #[doc(hidden)]
31442        pub fn Uniform2dv_is_loaded(&self) -> bool {
31443            !self.glUniform2dv_p.load(RELAX).is_null()
31444        }
31445        /// [glUniform2f](http://docs.gl/gl4/glUniform)(location, v0, v1)
31446        #[cfg_attr(feature = "inline", inline)]
31447        #[cfg_attr(feature = "inline_always", inline(always))]
31448        pub unsafe fn Uniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) {
31449            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31450            {
31451                trace!("calling gl.Uniform2f({:?}, {:?}, {:?});", location, v0, v1);
31452            }
31453            let out = call_atomic_ptr_3arg("glUniform2f", &self.glUniform2f_p, location, v0, v1);
31454            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31455            {
31456                self.automatic_glGetError("glUniform2f");
31457            }
31458            out
31459        }
31460        #[doc(hidden)]
31461        pub unsafe fn Uniform2f_load_with_dyn(
31462            &self,
31463            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31464        ) -> bool {
31465            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2f\0", &self.glUniform2f_p)
31466        }
31467        #[inline]
31468        #[doc(hidden)]
31469        pub fn Uniform2f_is_loaded(&self) -> bool {
31470            !self.glUniform2f_p.load(RELAX).is_null()
31471        }
31472        /// [glUniform2fv](http://docs.gl/gl4/glUniform)(location, count, value)
31473        /// * `value` len: count*2
31474        #[cfg_attr(feature = "inline", inline)]
31475        #[cfg_attr(feature = "inline_always", inline(always))]
31476        pub unsafe fn Uniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) {
31477            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31478            {
31479                trace!(
31480                    "calling gl.Uniform2fv({:?}, {:?}, {:p});",
31481                    location,
31482                    count,
31483                    value
31484                );
31485            }
31486            let out =
31487                call_atomic_ptr_3arg("glUniform2fv", &self.glUniform2fv_p, location, count, value);
31488            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31489            {
31490                self.automatic_glGetError("glUniform2fv");
31491            }
31492            out
31493        }
31494        #[doc(hidden)]
31495        pub unsafe fn Uniform2fv_load_with_dyn(
31496            &self,
31497            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31498        ) -> bool {
31499            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2fv\0", &self.glUniform2fv_p)
31500        }
31501        #[inline]
31502        #[doc(hidden)]
31503        pub fn Uniform2fv_is_loaded(&self) -> bool {
31504            !self.glUniform2fv_p.load(RELAX).is_null()
31505        }
31506        /// [glUniform2i](http://docs.gl/gl4/glUniform)(location, v0, v1)
31507        #[cfg_attr(feature = "inline", inline)]
31508        #[cfg_attr(feature = "inline_always", inline(always))]
31509        pub unsafe fn Uniform2i(&self, location: GLint, v0: GLint, v1: GLint) {
31510            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31511            {
31512                trace!("calling gl.Uniform2i({:?}, {:?}, {:?});", location, v0, v1);
31513            }
31514            let out = call_atomic_ptr_3arg("glUniform2i", &self.glUniform2i_p, location, v0, v1);
31515            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31516            {
31517                self.automatic_glGetError("glUniform2i");
31518            }
31519            out
31520        }
31521        #[doc(hidden)]
31522        pub unsafe fn Uniform2i_load_with_dyn(
31523            &self,
31524            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31525        ) -> bool {
31526            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2i\0", &self.glUniform2i_p)
31527        }
31528        #[inline]
31529        #[doc(hidden)]
31530        pub fn Uniform2i_is_loaded(&self) -> bool {
31531            !self.glUniform2i_p.load(RELAX).is_null()
31532        }
31533        /// [glUniform2iv](http://docs.gl/gl4/glUniform)(location, count, value)
31534        /// * `value` len: count*2
31535        #[cfg_attr(feature = "inline", inline)]
31536        #[cfg_attr(feature = "inline_always", inline(always))]
31537        pub unsafe fn Uniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) {
31538            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31539            {
31540                trace!(
31541                    "calling gl.Uniform2iv({:?}, {:?}, {:p});",
31542                    location,
31543                    count,
31544                    value
31545                );
31546            }
31547            let out =
31548                call_atomic_ptr_3arg("glUniform2iv", &self.glUniform2iv_p, location, count, value);
31549            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31550            {
31551                self.automatic_glGetError("glUniform2iv");
31552            }
31553            out
31554        }
31555        #[doc(hidden)]
31556        pub unsafe fn Uniform2iv_load_with_dyn(
31557            &self,
31558            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31559        ) -> bool {
31560            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2iv\0", &self.glUniform2iv_p)
31561        }
31562        #[inline]
31563        #[doc(hidden)]
31564        pub fn Uniform2iv_is_loaded(&self) -> bool {
31565            !self.glUniform2iv_p.load(RELAX).is_null()
31566        }
31567        /// [glUniform2ui](http://docs.gl/gl4/glUniform)(location, v0, v1)
31568        #[cfg_attr(feature = "inline", inline)]
31569        #[cfg_attr(feature = "inline_always", inline(always))]
31570        pub unsafe fn Uniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) {
31571            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31572            {
31573                trace!("calling gl.Uniform2ui({:?}, {:?}, {:?});", location, v0, v1);
31574            }
31575            let out = call_atomic_ptr_3arg("glUniform2ui", &self.glUniform2ui_p, location, v0, v1);
31576            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31577            {
31578                self.automatic_glGetError("glUniform2ui");
31579            }
31580            out
31581        }
31582        #[doc(hidden)]
31583        pub unsafe fn Uniform2ui_load_with_dyn(
31584            &self,
31585            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31586        ) -> bool {
31587            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2ui\0", &self.glUniform2ui_p)
31588        }
31589        #[inline]
31590        #[doc(hidden)]
31591        pub fn Uniform2ui_is_loaded(&self) -> bool {
31592            !self.glUniform2ui_p.load(RELAX).is_null()
31593        }
31594        /// [glUniform2uiv](http://docs.gl/gl4/glUniform)(location, count, value)
31595        /// * `value` len: count*2
31596        #[cfg_attr(feature = "inline", inline)]
31597        #[cfg_attr(feature = "inline_always", inline(always))]
31598        pub unsafe fn Uniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) {
31599            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31600            {
31601                trace!(
31602                    "calling gl.Uniform2uiv({:?}, {:?}, {:p});",
31603                    location,
31604                    count,
31605                    value
31606                );
31607            }
31608            let out = call_atomic_ptr_3arg(
31609                "glUniform2uiv",
31610                &self.glUniform2uiv_p,
31611                location,
31612                count,
31613                value,
31614            );
31615            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31616            {
31617                self.automatic_glGetError("glUniform2uiv");
31618            }
31619            out
31620        }
31621        #[doc(hidden)]
31622        pub unsafe fn Uniform2uiv_load_with_dyn(
31623            &self,
31624            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31625        ) -> bool {
31626            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform2uiv\0", &self.glUniform2uiv_p)
31627        }
31628        #[inline]
31629        #[doc(hidden)]
31630        pub fn Uniform2uiv_is_loaded(&self) -> bool {
31631            !self.glUniform2uiv_p.load(RELAX).is_null()
31632        }
31633        /// [glUniform3d](http://docs.gl/gl4/glUniform3d)(location, x, y, z)
31634        #[cfg_attr(feature = "inline", inline)]
31635        #[cfg_attr(feature = "inline_always", inline(always))]
31636        pub unsafe fn Uniform3d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble) {
31637            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31638            {
31639                trace!(
31640                    "calling gl.Uniform3d({:?}, {:?}, {:?}, {:?});",
31641                    location,
31642                    x,
31643                    y,
31644                    z
31645                );
31646            }
31647            let out = call_atomic_ptr_4arg("glUniform3d", &self.glUniform3d_p, location, x, y, z);
31648            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31649            {
31650                self.automatic_glGetError("glUniform3d");
31651            }
31652            out
31653        }
31654        #[doc(hidden)]
31655        pub unsafe fn Uniform3d_load_with_dyn(
31656            &self,
31657            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31658        ) -> bool {
31659            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3d\0", &self.glUniform3d_p)
31660        }
31661        #[inline]
31662        #[doc(hidden)]
31663        pub fn Uniform3d_is_loaded(&self) -> bool {
31664            !self.glUniform3d_p.load(RELAX).is_null()
31665        }
31666        /// [glUniform3dv](http://docs.gl/gl4/glUniform3dv)(location, count, value)
31667        /// * `value` len: count*3
31668        #[cfg_attr(feature = "inline", inline)]
31669        #[cfg_attr(feature = "inline_always", inline(always))]
31670        pub unsafe fn Uniform3dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) {
31671            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31672            {
31673                trace!(
31674                    "calling gl.Uniform3dv({:?}, {:?}, {:p});",
31675                    location,
31676                    count,
31677                    value
31678                );
31679            }
31680            let out =
31681                call_atomic_ptr_3arg("glUniform3dv", &self.glUniform3dv_p, location, count, value);
31682            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31683            {
31684                self.automatic_glGetError("glUniform3dv");
31685            }
31686            out
31687        }
31688        #[doc(hidden)]
31689        pub unsafe fn Uniform3dv_load_with_dyn(
31690            &self,
31691            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31692        ) -> bool {
31693            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3dv\0", &self.glUniform3dv_p)
31694        }
31695        #[inline]
31696        #[doc(hidden)]
31697        pub fn Uniform3dv_is_loaded(&self) -> bool {
31698            !self.glUniform3dv_p.load(RELAX).is_null()
31699        }
31700        /// [glUniform3f](http://docs.gl/gl4/glUniform)(location, v0, v1, v2)
31701        #[cfg_attr(feature = "inline", inline)]
31702        #[cfg_attr(feature = "inline_always", inline(always))]
31703        pub unsafe fn Uniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) {
31704            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31705            {
31706                trace!(
31707                    "calling gl.Uniform3f({:?}, {:?}, {:?}, {:?});",
31708                    location,
31709                    v0,
31710                    v1,
31711                    v2
31712                );
31713            }
31714            let out =
31715                call_atomic_ptr_4arg("glUniform3f", &self.glUniform3f_p, location, v0, v1, v2);
31716            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31717            {
31718                self.automatic_glGetError("glUniform3f");
31719            }
31720            out
31721        }
31722        #[doc(hidden)]
31723        pub unsafe fn Uniform3f_load_with_dyn(
31724            &self,
31725            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31726        ) -> bool {
31727            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3f\0", &self.glUniform3f_p)
31728        }
31729        #[inline]
31730        #[doc(hidden)]
31731        pub fn Uniform3f_is_loaded(&self) -> bool {
31732            !self.glUniform3f_p.load(RELAX).is_null()
31733        }
31734        /// [glUniform3fv](http://docs.gl/gl4/glUniform)(location, count, value)
31735        /// * `value` len: count*3
31736        #[cfg_attr(feature = "inline", inline)]
31737        #[cfg_attr(feature = "inline_always", inline(always))]
31738        pub unsafe fn Uniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) {
31739            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31740            {
31741                trace!(
31742                    "calling gl.Uniform3fv({:?}, {:?}, {:p});",
31743                    location,
31744                    count,
31745                    value
31746                );
31747            }
31748            let out =
31749                call_atomic_ptr_3arg("glUniform3fv", &self.glUniform3fv_p, location, count, value);
31750            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31751            {
31752                self.automatic_glGetError("glUniform3fv");
31753            }
31754            out
31755        }
31756        #[doc(hidden)]
31757        pub unsafe fn Uniform3fv_load_with_dyn(
31758            &self,
31759            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31760        ) -> bool {
31761            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3fv\0", &self.glUniform3fv_p)
31762        }
31763        #[inline]
31764        #[doc(hidden)]
31765        pub fn Uniform3fv_is_loaded(&self) -> bool {
31766            !self.glUniform3fv_p.load(RELAX).is_null()
31767        }
31768        /// [glUniform3i](http://docs.gl/gl4/glUniform)(location, v0, v1, v2)
31769        #[cfg_attr(feature = "inline", inline)]
31770        #[cfg_attr(feature = "inline_always", inline(always))]
31771        pub unsafe fn Uniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) {
31772            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31773            {
31774                trace!(
31775                    "calling gl.Uniform3i({:?}, {:?}, {:?}, {:?});",
31776                    location,
31777                    v0,
31778                    v1,
31779                    v2
31780                );
31781            }
31782            let out =
31783                call_atomic_ptr_4arg("glUniform3i", &self.glUniform3i_p, location, v0, v1, v2);
31784            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31785            {
31786                self.automatic_glGetError("glUniform3i");
31787            }
31788            out
31789        }
31790        #[doc(hidden)]
31791        pub unsafe fn Uniform3i_load_with_dyn(
31792            &self,
31793            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31794        ) -> bool {
31795            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3i\0", &self.glUniform3i_p)
31796        }
31797        #[inline]
31798        #[doc(hidden)]
31799        pub fn Uniform3i_is_loaded(&self) -> bool {
31800            !self.glUniform3i_p.load(RELAX).is_null()
31801        }
31802        /// [glUniform3iv](http://docs.gl/gl4/glUniform)(location, count, value)
31803        /// * `value` len: count*3
31804        #[cfg_attr(feature = "inline", inline)]
31805        #[cfg_attr(feature = "inline_always", inline(always))]
31806        pub unsafe fn Uniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) {
31807            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31808            {
31809                trace!(
31810                    "calling gl.Uniform3iv({:?}, {:?}, {:p});",
31811                    location,
31812                    count,
31813                    value
31814                );
31815            }
31816            let out =
31817                call_atomic_ptr_3arg("glUniform3iv", &self.glUniform3iv_p, location, count, value);
31818            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31819            {
31820                self.automatic_glGetError("glUniform3iv");
31821            }
31822            out
31823        }
31824        #[doc(hidden)]
31825        pub unsafe fn Uniform3iv_load_with_dyn(
31826            &self,
31827            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31828        ) -> bool {
31829            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3iv\0", &self.glUniform3iv_p)
31830        }
31831        #[inline]
31832        #[doc(hidden)]
31833        pub fn Uniform3iv_is_loaded(&self) -> bool {
31834            !self.glUniform3iv_p.load(RELAX).is_null()
31835        }
31836        /// [glUniform3ui](http://docs.gl/gl4/glUniform)(location, v0, v1, v2)
31837        #[cfg_attr(feature = "inline", inline)]
31838        #[cfg_attr(feature = "inline_always", inline(always))]
31839        pub unsafe fn Uniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) {
31840            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31841            {
31842                trace!(
31843                    "calling gl.Uniform3ui({:?}, {:?}, {:?}, {:?});",
31844                    location,
31845                    v0,
31846                    v1,
31847                    v2
31848                );
31849            }
31850            let out =
31851                call_atomic_ptr_4arg("glUniform3ui", &self.glUniform3ui_p, location, v0, v1, v2);
31852            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31853            {
31854                self.automatic_glGetError("glUniform3ui");
31855            }
31856            out
31857        }
31858        #[doc(hidden)]
31859        pub unsafe fn Uniform3ui_load_with_dyn(
31860            &self,
31861            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31862        ) -> bool {
31863            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3ui\0", &self.glUniform3ui_p)
31864        }
31865        #[inline]
31866        #[doc(hidden)]
31867        pub fn Uniform3ui_is_loaded(&self) -> bool {
31868            !self.glUniform3ui_p.load(RELAX).is_null()
31869        }
31870        /// [glUniform3uiv](http://docs.gl/gl4/glUniform)(location, count, value)
31871        /// * `value` len: count*3
31872        #[cfg_attr(feature = "inline", inline)]
31873        #[cfg_attr(feature = "inline_always", inline(always))]
31874        pub unsafe fn Uniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) {
31875            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31876            {
31877                trace!(
31878                    "calling gl.Uniform3uiv({:?}, {:?}, {:p});",
31879                    location,
31880                    count,
31881                    value
31882                );
31883            }
31884            let out = call_atomic_ptr_3arg(
31885                "glUniform3uiv",
31886                &self.glUniform3uiv_p,
31887                location,
31888                count,
31889                value,
31890            );
31891            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31892            {
31893                self.automatic_glGetError("glUniform3uiv");
31894            }
31895            out
31896        }
31897        #[doc(hidden)]
31898        pub unsafe fn Uniform3uiv_load_with_dyn(
31899            &self,
31900            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31901        ) -> bool {
31902            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform3uiv\0", &self.glUniform3uiv_p)
31903        }
31904        #[inline]
31905        #[doc(hidden)]
31906        pub fn Uniform3uiv_is_loaded(&self) -> bool {
31907            !self.glUniform3uiv_p.load(RELAX).is_null()
31908        }
31909        /// [glUniform4d](http://docs.gl/gl4/glUniform4d)(location, x, y, z, w)
31910        #[cfg_attr(feature = "inline", inline)]
31911        #[cfg_attr(feature = "inline_always", inline(always))]
31912        pub unsafe fn Uniform4d(
31913            &self,
31914            location: GLint,
31915            x: GLdouble,
31916            y: GLdouble,
31917            z: GLdouble,
31918            w: GLdouble,
31919        ) {
31920            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31921            {
31922                trace!(
31923                    "calling gl.Uniform4d({:?}, {:?}, {:?}, {:?}, {:?});",
31924                    location,
31925                    x,
31926                    y,
31927                    z,
31928                    w
31929                );
31930            }
31931            let out =
31932                call_atomic_ptr_5arg("glUniform4d", &self.glUniform4d_p, location, x, y, z, w);
31933            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31934            {
31935                self.automatic_glGetError("glUniform4d");
31936            }
31937            out
31938        }
31939        #[doc(hidden)]
31940        pub unsafe fn Uniform4d_load_with_dyn(
31941            &self,
31942            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31943        ) -> bool {
31944            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4d\0", &self.glUniform4d_p)
31945        }
31946        #[inline]
31947        #[doc(hidden)]
31948        pub fn Uniform4d_is_loaded(&self) -> bool {
31949            !self.glUniform4d_p.load(RELAX).is_null()
31950        }
31951        /// [glUniform4dv](http://docs.gl/gl4/glUniform4dv)(location, count, value)
31952        /// * `value` len: count*4
31953        #[cfg_attr(feature = "inline", inline)]
31954        #[cfg_attr(feature = "inline_always", inline(always))]
31955        pub unsafe fn Uniform4dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) {
31956            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31957            {
31958                trace!(
31959                    "calling gl.Uniform4dv({:?}, {:?}, {:p});",
31960                    location,
31961                    count,
31962                    value
31963                );
31964            }
31965            let out =
31966                call_atomic_ptr_3arg("glUniform4dv", &self.glUniform4dv_p, location, count, value);
31967            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
31968            {
31969                self.automatic_glGetError("glUniform4dv");
31970            }
31971            out
31972        }
31973        #[doc(hidden)]
31974        pub unsafe fn Uniform4dv_load_with_dyn(
31975            &self,
31976            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
31977        ) -> bool {
31978            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4dv\0", &self.glUniform4dv_p)
31979        }
31980        #[inline]
31981        #[doc(hidden)]
31982        pub fn Uniform4dv_is_loaded(&self) -> bool {
31983            !self.glUniform4dv_p.load(RELAX).is_null()
31984        }
31985        /// [glUniform4f](http://docs.gl/gl4/glUniform)(location, v0, v1, v2, v3)
31986        #[cfg_attr(feature = "inline", inline)]
31987        #[cfg_attr(feature = "inline_always", inline(always))]
31988        pub unsafe fn Uniform4f(
31989            &self,
31990            location: GLint,
31991            v0: GLfloat,
31992            v1: GLfloat,
31993            v2: GLfloat,
31994            v3: GLfloat,
31995        ) {
31996            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
31997            {
31998                trace!(
31999                    "calling gl.Uniform4f({:?}, {:?}, {:?}, {:?}, {:?});",
32000                    location,
32001                    v0,
32002                    v1,
32003                    v2,
32004                    v3
32005                );
32006            }
32007            let out =
32008                call_atomic_ptr_5arg("glUniform4f", &self.glUniform4f_p, location, v0, v1, v2, v3);
32009            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32010            {
32011                self.automatic_glGetError("glUniform4f");
32012            }
32013            out
32014        }
32015        #[doc(hidden)]
32016        pub unsafe fn Uniform4f_load_with_dyn(
32017            &self,
32018            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32019        ) -> bool {
32020            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4f\0", &self.glUniform4f_p)
32021        }
32022        #[inline]
32023        #[doc(hidden)]
32024        pub fn Uniform4f_is_loaded(&self) -> bool {
32025            !self.glUniform4f_p.load(RELAX).is_null()
32026        }
32027        /// [glUniform4fv](http://docs.gl/gl4/glUniform)(location, count, value)
32028        /// * `value` len: count*4
32029        #[cfg_attr(feature = "inline", inline)]
32030        #[cfg_attr(feature = "inline_always", inline(always))]
32031        pub unsafe fn Uniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) {
32032            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32033            {
32034                trace!(
32035                    "calling gl.Uniform4fv({:?}, {:?}, {:p});",
32036                    location,
32037                    count,
32038                    value
32039                );
32040            }
32041            let out =
32042                call_atomic_ptr_3arg("glUniform4fv", &self.glUniform4fv_p, location, count, value);
32043            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32044            {
32045                self.automatic_glGetError("glUniform4fv");
32046            }
32047            out
32048        }
32049        #[doc(hidden)]
32050        pub unsafe fn Uniform4fv_load_with_dyn(
32051            &self,
32052            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32053        ) -> bool {
32054            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4fv\0", &self.glUniform4fv_p)
32055        }
32056        #[inline]
32057        #[doc(hidden)]
32058        pub fn Uniform4fv_is_loaded(&self) -> bool {
32059            !self.glUniform4fv_p.load(RELAX).is_null()
32060        }
32061        /// [glUniform4i](http://docs.gl/gl4/glUniform)(location, v0, v1, v2, v3)
32062        #[cfg_attr(feature = "inline", inline)]
32063        #[cfg_attr(feature = "inline_always", inline(always))]
32064        pub unsafe fn Uniform4i(
32065            &self,
32066            location: GLint,
32067            v0: GLint,
32068            v1: GLint,
32069            v2: GLint,
32070            v3: GLint,
32071        ) {
32072            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32073            {
32074                trace!(
32075                    "calling gl.Uniform4i({:?}, {:?}, {:?}, {:?}, {:?});",
32076                    location,
32077                    v0,
32078                    v1,
32079                    v2,
32080                    v3
32081                );
32082            }
32083            let out =
32084                call_atomic_ptr_5arg("glUniform4i", &self.glUniform4i_p, location, v0, v1, v2, v3);
32085            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32086            {
32087                self.automatic_glGetError("glUniform4i");
32088            }
32089            out
32090        }
32091        #[doc(hidden)]
32092        pub unsafe fn Uniform4i_load_with_dyn(
32093            &self,
32094            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32095        ) -> bool {
32096            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4i\0", &self.glUniform4i_p)
32097        }
32098        #[inline]
32099        #[doc(hidden)]
32100        pub fn Uniform4i_is_loaded(&self) -> bool {
32101            !self.glUniform4i_p.load(RELAX).is_null()
32102        }
32103        /// [glUniform4iv](http://docs.gl/gl4/glUniform)(location, count, value)
32104        /// * `value` len: count*4
32105        #[cfg_attr(feature = "inline", inline)]
32106        #[cfg_attr(feature = "inline_always", inline(always))]
32107        pub unsafe fn Uniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) {
32108            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32109            {
32110                trace!(
32111                    "calling gl.Uniform4iv({:?}, {:?}, {:p});",
32112                    location,
32113                    count,
32114                    value
32115                );
32116            }
32117            let out =
32118                call_atomic_ptr_3arg("glUniform4iv", &self.glUniform4iv_p, location, count, value);
32119            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32120            {
32121                self.automatic_glGetError("glUniform4iv");
32122            }
32123            out
32124        }
32125        #[doc(hidden)]
32126        pub unsafe fn Uniform4iv_load_with_dyn(
32127            &self,
32128            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32129        ) -> bool {
32130            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4iv\0", &self.glUniform4iv_p)
32131        }
32132        #[inline]
32133        #[doc(hidden)]
32134        pub fn Uniform4iv_is_loaded(&self) -> bool {
32135            !self.glUniform4iv_p.load(RELAX).is_null()
32136        }
32137        /// [glUniform4ui](http://docs.gl/gl4/glUniform)(location, v0, v1, v2, v3)
32138        #[cfg_attr(feature = "inline", inline)]
32139        #[cfg_attr(feature = "inline_always", inline(always))]
32140        pub unsafe fn Uniform4ui(
32141            &self,
32142            location: GLint,
32143            v0: GLuint,
32144            v1: GLuint,
32145            v2: GLuint,
32146            v3: GLuint,
32147        ) {
32148            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32149            {
32150                trace!(
32151                    "calling gl.Uniform4ui({:?}, {:?}, {:?}, {:?}, {:?});",
32152                    location,
32153                    v0,
32154                    v1,
32155                    v2,
32156                    v3
32157                );
32158            }
32159            let out = call_atomic_ptr_5arg(
32160                "glUniform4ui",
32161                &self.glUniform4ui_p,
32162                location,
32163                v0,
32164                v1,
32165                v2,
32166                v3,
32167            );
32168            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32169            {
32170                self.automatic_glGetError("glUniform4ui");
32171            }
32172            out
32173        }
32174        #[doc(hidden)]
32175        pub unsafe fn Uniform4ui_load_with_dyn(
32176            &self,
32177            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32178        ) -> bool {
32179            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4ui\0", &self.glUniform4ui_p)
32180        }
32181        #[inline]
32182        #[doc(hidden)]
32183        pub fn Uniform4ui_is_loaded(&self) -> bool {
32184            !self.glUniform4ui_p.load(RELAX).is_null()
32185        }
32186        /// [glUniform4uiv](http://docs.gl/gl4/glUniform)(location, count, value)
32187        /// * `value` len: count*4
32188        #[cfg_attr(feature = "inline", inline)]
32189        #[cfg_attr(feature = "inline_always", inline(always))]
32190        pub unsafe fn Uniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) {
32191            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32192            {
32193                trace!(
32194                    "calling gl.Uniform4uiv({:?}, {:?}, {:p});",
32195                    location,
32196                    count,
32197                    value
32198                );
32199            }
32200            let out = call_atomic_ptr_3arg(
32201                "glUniform4uiv",
32202                &self.glUniform4uiv_p,
32203                location,
32204                count,
32205                value,
32206            );
32207            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32208            {
32209                self.automatic_glGetError("glUniform4uiv");
32210            }
32211            out
32212        }
32213        #[doc(hidden)]
32214        pub unsafe fn Uniform4uiv_load_with_dyn(
32215            &self,
32216            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32217        ) -> bool {
32218            load_dyn_name_atomic_ptr(get_proc_address, b"glUniform4uiv\0", &self.glUniform4uiv_p)
32219        }
32220        #[inline]
32221        #[doc(hidden)]
32222        pub fn Uniform4uiv_is_loaded(&self) -> bool {
32223            !self.glUniform4uiv_p.load(RELAX).is_null()
32224        }
32225        /// [glUniformBlockBinding](http://docs.gl/gl4/glUniformBlockBinding)(program, uniformBlockIndex, uniformBlockBinding)
32226        #[cfg_attr(feature = "inline", inline)]
32227        #[cfg_attr(feature = "inline_always", inline(always))]
32228        pub unsafe fn UniformBlockBinding(
32229            &self,
32230            program: GLuint,
32231            uniformBlockIndex: GLuint,
32232            uniformBlockBinding: GLuint,
32233        ) {
32234            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32235            {
32236                trace!(
32237                    "calling gl.UniformBlockBinding({:?}, {:?}, {:?});",
32238                    program,
32239                    uniformBlockIndex,
32240                    uniformBlockBinding
32241                );
32242            }
32243            let out = call_atomic_ptr_3arg(
32244                "glUniformBlockBinding",
32245                &self.glUniformBlockBinding_p,
32246                program,
32247                uniformBlockIndex,
32248                uniformBlockBinding,
32249            );
32250            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32251            {
32252                self.automatic_glGetError("glUniformBlockBinding");
32253            }
32254            out
32255        }
32256        #[doc(hidden)]
32257        pub unsafe fn UniformBlockBinding_load_with_dyn(
32258            &self,
32259            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32260        ) -> bool {
32261            load_dyn_name_atomic_ptr(
32262                get_proc_address,
32263                b"glUniformBlockBinding\0",
32264                &self.glUniformBlockBinding_p,
32265            )
32266        }
32267        #[inline]
32268        #[doc(hidden)]
32269        pub fn UniformBlockBinding_is_loaded(&self) -> bool {
32270            !self.glUniformBlockBinding_p.load(RELAX).is_null()
32271        }
32272        /// [glUniformMatrix2dv](http://docs.gl/gl4/glUniformMatrix2dv)(location, count, transpose, value)
32273        /// * `value` len: count*4
32274        #[cfg_attr(feature = "inline", inline)]
32275        #[cfg_attr(feature = "inline_always", inline(always))]
32276        pub unsafe fn UniformMatrix2dv(
32277            &self,
32278            location: GLint,
32279            count: GLsizei,
32280            transpose: GLboolean,
32281            value: *const GLdouble,
32282        ) {
32283            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32284            {
32285                trace!(
32286                    "calling gl.UniformMatrix2dv({:?}, {:?}, {:?}, {:p});",
32287                    location,
32288                    count,
32289                    transpose,
32290                    value
32291                );
32292            }
32293            let out = call_atomic_ptr_4arg(
32294                "glUniformMatrix2dv",
32295                &self.glUniformMatrix2dv_p,
32296                location,
32297                count,
32298                transpose,
32299                value,
32300            );
32301            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32302            {
32303                self.automatic_glGetError("glUniformMatrix2dv");
32304            }
32305            out
32306        }
32307        #[doc(hidden)]
32308        pub unsafe fn UniformMatrix2dv_load_with_dyn(
32309            &self,
32310            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32311        ) -> bool {
32312            load_dyn_name_atomic_ptr(
32313                get_proc_address,
32314                b"glUniformMatrix2dv\0",
32315                &self.glUniformMatrix2dv_p,
32316            )
32317        }
32318        #[inline]
32319        #[doc(hidden)]
32320        pub fn UniformMatrix2dv_is_loaded(&self) -> bool {
32321            !self.glUniformMatrix2dv_p.load(RELAX).is_null()
32322        }
32323        /// [glUniformMatrix2fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32324        /// * `value` len: count*4
32325        #[cfg_attr(feature = "inline", inline)]
32326        #[cfg_attr(feature = "inline_always", inline(always))]
32327        pub unsafe fn UniformMatrix2fv(
32328            &self,
32329            location: GLint,
32330            count: GLsizei,
32331            transpose: GLboolean,
32332            value: *const GLfloat,
32333        ) {
32334            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32335            {
32336                trace!(
32337                    "calling gl.UniformMatrix2fv({:?}, {:?}, {:?}, {:p});",
32338                    location,
32339                    count,
32340                    transpose,
32341                    value
32342                );
32343            }
32344            let out = call_atomic_ptr_4arg(
32345                "glUniformMatrix2fv",
32346                &self.glUniformMatrix2fv_p,
32347                location,
32348                count,
32349                transpose,
32350                value,
32351            );
32352            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32353            {
32354                self.automatic_glGetError("glUniformMatrix2fv");
32355            }
32356            out
32357        }
32358        #[doc(hidden)]
32359        pub unsafe fn UniformMatrix2fv_load_with_dyn(
32360            &self,
32361            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32362        ) -> bool {
32363            load_dyn_name_atomic_ptr(
32364                get_proc_address,
32365                b"glUniformMatrix2fv\0",
32366                &self.glUniformMatrix2fv_p,
32367            )
32368        }
32369        #[inline]
32370        #[doc(hidden)]
32371        pub fn UniformMatrix2fv_is_loaded(&self) -> bool {
32372            !self.glUniformMatrix2fv_p.load(RELAX).is_null()
32373        }
32374        /// [glUniformMatrix2x3dv](http://docs.gl/gl4/glUniformMatrix2x3dv)(location, count, transpose, value)
32375        /// * `value` len: count*6
32376        #[cfg_attr(feature = "inline", inline)]
32377        #[cfg_attr(feature = "inline_always", inline(always))]
32378        pub unsafe fn UniformMatrix2x3dv(
32379            &self,
32380            location: GLint,
32381            count: GLsizei,
32382            transpose: GLboolean,
32383            value: *const GLdouble,
32384        ) {
32385            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32386            {
32387                trace!(
32388                    "calling gl.UniformMatrix2x3dv({:?}, {:?}, {:?}, {:p});",
32389                    location,
32390                    count,
32391                    transpose,
32392                    value
32393                );
32394            }
32395            let out = call_atomic_ptr_4arg(
32396                "glUniformMatrix2x3dv",
32397                &self.glUniformMatrix2x3dv_p,
32398                location,
32399                count,
32400                transpose,
32401                value,
32402            );
32403            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32404            {
32405                self.automatic_glGetError("glUniformMatrix2x3dv");
32406            }
32407            out
32408        }
32409        #[doc(hidden)]
32410        pub unsafe fn UniformMatrix2x3dv_load_with_dyn(
32411            &self,
32412            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32413        ) -> bool {
32414            load_dyn_name_atomic_ptr(
32415                get_proc_address,
32416                b"glUniformMatrix2x3dv\0",
32417                &self.glUniformMatrix2x3dv_p,
32418            )
32419        }
32420        #[inline]
32421        #[doc(hidden)]
32422        pub fn UniformMatrix2x3dv_is_loaded(&self) -> bool {
32423            !self.glUniformMatrix2x3dv_p.load(RELAX).is_null()
32424        }
32425        /// [glUniformMatrix2x3fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32426        /// * `value` len: count*6
32427        #[cfg_attr(feature = "inline", inline)]
32428        #[cfg_attr(feature = "inline_always", inline(always))]
32429        pub unsafe fn UniformMatrix2x3fv(
32430            &self,
32431            location: GLint,
32432            count: GLsizei,
32433            transpose: GLboolean,
32434            value: *const GLfloat,
32435        ) {
32436            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32437            {
32438                trace!(
32439                    "calling gl.UniformMatrix2x3fv({:?}, {:?}, {:?}, {:p});",
32440                    location,
32441                    count,
32442                    transpose,
32443                    value
32444                );
32445            }
32446            let out = call_atomic_ptr_4arg(
32447                "glUniformMatrix2x3fv",
32448                &self.glUniformMatrix2x3fv_p,
32449                location,
32450                count,
32451                transpose,
32452                value,
32453            );
32454            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32455            {
32456                self.automatic_glGetError("glUniformMatrix2x3fv");
32457            }
32458            out
32459        }
32460        #[doc(hidden)]
32461        pub unsafe fn UniformMatrix2x3fv_load_with_dyn(
32462            &self,
32463            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32464        ) -> bool {
32465            load_dyn_name_atomic_ptr(
32466                get_proc_address,
32467                b"glUniformMatrix2x3fv\0",
32468                &self.glUniformMatrix2x3fv_p,
32469            )
32470        }
32471        #[inline]
32472        #[doc(hidden)]
32473        pub fn UniformMatrix2x3fv_is_loaded(&self) -> bool {
32474            !self.glUniformMatrix2x3fv_p.load(RELAX).is_null()
32475        }
32476        /// [glUniformMatrix2x4dv](http://docs.gl/gl4/glUniformMatrix2x4dv)(location, count, transpose, value)
32477        /// * `value` len: count*8
32478        #[cfg_attr(feature = "inline", inline)]
32479        #[cfg_attr(feature = "inline_always", inline(always))]
32480        pub unsafe fn UniformMatrix2x4dv(
32481            &self,
32482            location: GLint,
32483            count: GLsizei,
32484            transpose: GLboolean,
32485            value: *const GLdouble,
32486        ) {
32487            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32488            {
32489                trace!(
32490                    "calling gl.UniformMatrix2x4dv({:?}, {:?}, {:?}, {:p});",
32491                    location,
32492                    count,
32493                    transpose,
32494                    value
32495                );
32496            }
32497            let out = call_atomic_ptr_4arg(
32498                "glUniformMatrix2x4dv",
32499                &self.glUniformMatrix2x4dv_p,
32500                location,
32501                count,
32502                transpose,
32503                value,
32504            );
32505            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32506            {
32507                self.automatic_glGetError("glUniformMatrix2x4dv");
32508            }
32509            out
32510        }
32511        #[doc(hidden)]
32512        pub unsafe fn UniformMatrix2x4dv_load_with_dyn(
32513            &self,
32514            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32515        ) -> bool {
32516            load_dyn_name_atomic_ptr(
32517                get_proc_address,
32518                b"glUniformMatrix2x4dv\0",
32519                &self.glUniformMatrix2x4dv_p,
32520            )
32521        }
32522        #[inline]
32523        #[doc(hidden)]
32524        pub fn UniformMatrix2x4dv_is_loaded(&self) -> bool {
32525            !self.glUniformMatrix2x4dv_p.load(RELAX).is_null()
32526        }
32527        /// [glUniformMatrix2x4fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32528        /// * `value` len: count*8
32529        #[cfg_attr(feature = "inline", inline)]
32530        #[cfg_attr(feature = "inline_always", inline(always))]
32531        pub unsafe fn UniformMatrix2x4fv(
32532            &self,
32533            location: GLint,
32534            count: GLsizei,
32535            transpose: GLboolean,
32536            value: *const GLfloat,
32537        ) {
32538            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32539            {
32540                trace!(
32541                    "calling gl.UniformMatrix2x4fv({:?}, {:?}, {:?}, {:p});",
32542                    location,
32543                    count,
32544                    transpose,
32545                    value
32546                );
32547            }
32548            let out = call_atomic_ptr_4arg(
32549                "glUniformMatrix2x4fv",
32550                &self.glUniformMatrix2x4fv_p,
32551                location,
32552                count,
32553                transpose,
32554                value,
32555            );
32556            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32557            {
32558                self.automatic_glGetError("glUniformMatrix2x4fv");
32559            }
32560            out
32561        }
32562        #[doc(hidden)]
32563        pub unsafe fn UniformMatrix2x4fv_load_with_dyn(
32564            &self,
32565            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32566        ) -> bool {
32567            load_dyn_name_atomic_ptr(
32568                get_proc_address,
32569                b"glUniformMatrix2x4fv\0",
32570                &self.glUniformMatrix2x4fv_p,
32571            )
32572        }
32573        #[inline]
32574        #[doc(hidden)]
32575        pub fn UniformMatrix2x4fv_is_loaded(&self) -> bool {
32576            !self.glUniformMatrix2x4fv_p.load(RELAX).is_null()
32577        }
32578        /// [glUniformMatrix3dv](http://docs.gl/gl4/glUniformMatrix3dv)(location, count, transpose, value)
32579        /// * `value` len: count*9
32580        #[cfg_attr(feature = "inline", inline)]
32581        #[cfg_attr(feature = "inline_always", inline(always))]
32582        pub unsafe fn UniformMatrix3dv(
32583            &self,
32584            location: GLint,
32585            count: GLsizei,
32586            transpose: GLboolean,
32587            value: *const GLdouble,
32588        ) {
32589            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32590            {
32591                trace!(
32592                    "calling gl.UniformMatrix3dv({:?}, {:?}, {:?}, {:p});",
32593                    location,
32594                    count,
32595                    transpose,
32596                    value
32597                );
32598            }
32599            let out = call_atomic_ptr_4arg(
32600                "glUniformMatrix3dv",
32601                &self.glUniformMatrix3dv_p,
32602                location,
32603                count,
32604                transpose,
32605                value,
32606            );
32607            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32608            {
32609                self.automatic_glGetError("glUniformMatrix3dv");
32610            }
32611            out
32612        }
32613        #[doc(hidden)]
32614        pub unsafe fn UniformMatrix3dv_load_with_dyn(
32615            &self,
32616            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32617        ) -> bool {
32618            load_dyn_name_atomic_ptr(
32619                get_proc_address,
32620                b"glUniformMatrix3dv\0",
32621                &self.glUniformMatrix3dv_p,
32622            )
32623        }
32624        #[inline]
32625        #[doc(hidden)]
32626        pub fn UniformMatrix3dv_is_loaded(&self) -> bool {
32627            !self.glUniformMatrix3dv_p.load(RELAX).is_null()
32628        }
32629        /// [glUniformMatrix3fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32630        /// * `value` len: count*9
32631        #[cfg_attr(feature = "inline", inline)]
32632        #[cfg_attr(feature = "inline_always", inline(always))]
32633        pub unsafe fn UniformMatrix3fv(
32634            &self,
32635            location: GLint,
32636            count: GLsizei,
32637            transpose: GLboolean,
32638            value: *const GLfloat,
32639        ) {
32640            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32641            {
32642                trace!(
32643                    "calling gl.UniformMatrix3fv({:?}, {:?}, {:?}, {:p});",
32644                    location,
32645                    count,
32646                    transpose,
32647                    value
32648                );
32649            }
32650            let out = call_atomic_ptr_4arg(
32651                "glUniformMatrix3fv",
32652                &self.glUniformMatrix3fv_p,
32653                location,
32654                count,
32655                transpose,
32656                value,
32657            );
32658            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32659            {
32660                self.automatic_glGetError("glUniformMatrix3fv");
32661            }
32662            out
32663        }
32664        #[doc(hidden)]
32665        pub unsafe fn UniformMatrix3fv_load_with_dyn(
32666            &self,
32667            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32668        ) -> bool {
32669            load_dyn_name_atomic_ptr(
32670                get_proc_address,
32671                b"glUniformMatrix3fv\0",
32672                &self.glUniformMatrix3fv_p,
32673            )
32674        }
32675        #[inline]
32676        #[doc(hidden)]
32677        pub fn UniformMatrix3fv_is_loaded(&self) -> bool {
32678            !self.glUniformMatrix3fv_p.load(RELAX).is_null()
32679        }
32680        /// [glUniformMatrix3x2dv](http://docs.gl/gl4/glUniformMatrix3x2dv)(location, count, transpose, value)
32681        /// * `value` len: count*6
32682        #[cfg_attr(feature = "inline", inline)]
32683        #[cfg_attr(feature = "inline_always", inline(always))]
32684        pub unsafe fn UniformMatrix3x2dv(
32685            &self,
32686            location: GLint,
32687            count: GLsizei,
32688            transpose: GLboolean,
32689            value: *const GLdouble,
32690        ) {
32691            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32692            {
32693                trace!(
32694                    "calling gl.UniformMatrix3x2dv({:?}, {:?}, {:?}, {:p});",
32695                    location,
32696                    count,
32697                    transpose,
32698                    value
32699                );
32700            }
32701            let out = call_atomic_ptr_4arg(
32702                "glUniformMatrix3x2dv",
32703                &self.glUniformMatrix3x2dv_p,
32704                location,
32705                count,
32706                transpose,
32707                value,
32708            );
32709            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32710            {
32711                self.automatic_glGetError("glUniformMatrix3x2dv");
32712            }
32713            out
32714        }
32715        #[doc(hidden)]
32716        pub unsafe fn UniformMatrix3x2dv_load_with_dyn(
32717            &self,
32718            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32719        ) -> bool {
32720            load_dyn_name_atomic_ptr(
32721                get_proc_address,
32722                b"glUniformMatrix3x2dv\0",
32723                &self.glUniformMatrix3x2dv_p,
32724            )
32725        }
32726        #[inline]
32727        #[doc(hidden)]
32728        pub fn UniformMatrix3x2dv_is_loaded(&self) -> bool {
32729            !self.glUniformMatrix3x2dv_p.load(RELAX).is_null()
32730        }
32731        /// [glUniformMatrix3x2fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32732        /// * `value` len: count*6
32733        #[cfg_attr(feature = "inline", inline)]
32734        #[cfg_attr(feature = "inline_always", inline(always))]
32735        pub unsafe fn UniformMatrix3x2fv(
32736            &self,
32737            location: GLint,
32738            count: GLsizei,
32739            transpose: GLboolean,
32740            value: *const GLfloat,
32741        ) {
32742            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32743            {
32744                trace!(
32745                    "calling gl.UniformMatrix3x2fv({:?}, {:?}, {:?}, {:p});",
32746                    location,
32747                    count,
32748                    transpose,
32749                    value
32750                );
32751            }
32752            let out = call_atomic_ptr_4arg(
32753                "glUniformMatrix3x2fv",
32754                &self.glUniformMatrix3x2fv_p,
32755                location,
32756                count,
32757                transpose,
32758                value,
32759            );
32760            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32761            {
32762                self.automatic_glGetError("glUniformMatrix3x2fv");
32763            }
32764            out
32765        }
32766        #[doc(hidden)]
32767        pub unsafe fn UniformMatrix3x2fv_load_with_dyn(
32768            &self,
32769            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32770        ) -> bool {
32771            load_dyn_name_atomic_ptr(
32772                get_proc_address,
32773                b"glUniformMatrix3x2fv\0",
32774                &self.glUniformMatrix3x2fv_p,
32775            )
32776        }
32777        #[inline]
32778        #[doc(hidden)]
32779        pub fn UniformMatrix3x2fv_is_loaded(&self) -> bool {
32780            !self.glUniformMatrix3x2fv_p.load(RELAX).is_null()
32781        }
32782        /// [glUniformMatrix3x4dv](http://docs.gl/gl4/glUniformMatrix3x4dv)(location, count, transpose, value)
32783        /// * `value` len: count*12
32784        #[cfg_attr(feature = "inline", inline)]
32785        #[cfg_attr(feature = "inline_always", inline(always))]
32786        pub unsafe fn UniformMatrix3x4dv(
32787            &self,
32788            location: GLint,
32789            count: GLsizei,
32790            transpose: GLboolean,
32791            value: *const GLdouble,
32792        ) {
32793            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32794            {
32795                trace!(
32796                    "calling gl.UniformMatrix3x4dv({:?}, {:?}, {:?}, {:p});",
32797                    location,
32798                    count,
32799                    transpose,
32800                    value
32801                );
32802            }
32803            let out = call_atomic_ptr_4arg(
32804                "glUniformMatrix3x4dv",
32805                &self.glUniformMatrix3x4dv_p,
32806                location,
32807                count,
32808                transpose,
32809                value,
32810            );
32811            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32812            {
32813                self.automatic_glGetError("glUniformMatrix3x4dv");
32814            }
32815            out
32816        }
32817        #[doc(hidden)]
32818        pub unsafe fn UniformMatrix3x4dv_load_with_dyn(
32819            &self,
32820            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32821        ) -> bool {
32822            load_dyn_name_atomic_ptr(
32823                get_proc_address,
32824                b"glUniformMatrix3x4dv\0",
32825                &self.glUniformMatrix3x4dv_p,
32826            )
32827        }
32828        #[inline]
32829        #[doc(hidden)]
32830        pub fn UniformMatrix3x4dv_is_loaded(&self) -> bool {
32831            !self.glUniformMatrix3x4dv_p.load(RELAX).is_null()
32832        }
32833        /// [glUniformMatrix3x4fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32834        /// * `value` len: count*12
32835        #[cfg_attr(feature = "inline", inline)]
32836        #[cfg_attr(feature = "inline_always", inline(always))]
32837        pub unsafe fn UniformMatrix3x4fv(
32838            &self,
32839            location: GLint,
32840            count: GLsizei,
32841            transpose: GLboolean,
32842            value: *const GLfloat,
32843        ) {
32844            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32845            {
32846                trace!(
32847                    "calling gl.UniformMatrix3x4fv({:?}, {:?}, {:?}, {:p});",
32848                    location,
32849                    count,
32850                    transpose,
32851                    value
32852                );
32853            }
32854            let out = call_atomic_ptr_4arg(
32855                "glUniformMatrix3x4fv",
32856                &self.glUniformMatrix3x4fv_p,
32857                location,
32858                count,
32859                transpose,
32860                value,
32861            );
32862            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32863            {
32864                self.automatic_glGetError("glUniformMatrix3x4fv");
32865            }
32866            out
32867        }
32868        #[doc(hidden)]
32869        pub unsafe fn UniformMatrix3x4fv_load_with_dyn(
32870            &self,
32871            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32872        ) -> bool {
32873            load_dyn_name_atomic_ptr(
32874                get_proc_address,
32875                b"glUniformMatrix3x4fv\0",
32876                &self.glUniformMatrix3x4fv_p,
32877            )
32878        }
32879        #[inline]
32880        #[doc(hidden)]
32881        pub fn UniformMatrix3x4fv_is_loaded(&self) -> bool {
32882            !self.glUniformMatrix3x4fv_p.load(RELAX).is_null()
32883        }
32884        /// [glUniformMatrix4dv](http://docs.gl/gl4/glUniformMatrix4dv)(location, count, transpose, value)
32885        /// * `value` len: count*16
32886        #[cfg_attr(feature = "inline", inline)]
32887        #[cfg_attr(feature = "inline_always", inline(always))]
32888        pub unsafe fn UniformMatrix4dv(
32889            &self,
32890            location: GLint,
32891            count: GLsizei,
32892            transpose: GLboolean,
32893            value: *const GLdouble,
32894        ) {
32895            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32896            {
32897                trace!(
32898                    "calling gl.UniformMatrix4dv({:?}, {:?}, {:?}, {:p});",
32899                    location,
32900                    count,
32901                    transpose,
32902                    value
32903                );
32904            }
32905            let out = call_atomic_ptr_4arg(
32906                "glUniformMatrix4dv",
32907                &self.glUniformMatrix4dv_p,
32908                location,
32909                count,
32910                transpose,
32911                value,
32912            );
32913            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32914            {
32915                self.automatic_glGetError("glUniformMatrix4dv");
32916            }
32917            out
32918        }
32919        #[doc(hidden)]
32920        pub unsafe fn UniformMatrix4dv_load_with_dyn(
32921            &self,
32922            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32923        ) -> bool {
32924            load_dyn_name_atomic_ptr(
32925                get_proc_address,
32926                b"glUniformMatrix4dv\0",
32927                &self.glUniformMatrix4dv_p,
32928            )
32929        }
32930        #[inline]
32931        #[doc(hidden)]
32932        pub fn UniformMatrix4dv_is_loaded(&self) -> bool {
32933            !self.glUniformMatrix4dv_p.load(RELAX).is_null()
32934        }
32935        /// [glUniformMatrix4fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
32936        /// * `value` len: count*16
32937        #[cfg_attr(feature = "inline", inline)]
32938        #[cfg_attr(feature = "inline_always", inline(always))]
32939        pub unsafe fn UniformMatrix4fv(
32940            &self,
32941            location: GLint,
32942            count: GLsizei,
32943            transpose: GLboolean,
32944            value: *const GLfloat,
32945        ) {
32946            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32947            {
32948                trace!(
32949                    "calling gl.UniformMatrix4fv({:?}, {:?}, {:?}, {:p});",
32950                    location,
32951                    count,
32952                    transpose,
32953                    value
32954                );
32955            }
32956            let out = call_atomic_ptr_4arg(
32957                "glUniformMatrix4fv",
32958                &self.glUniformMatrix4fv_p,
32959                location,
32960                count,
32961                transpose,
32962                value,
32963            );
32964            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
32965            {
32966                self.automatic_glGetError("glUniformMatrix4fv");
32967            }
32968            out
32969        }
32970        #[doc(hidden)]
32971        pub unsafe fn UniformMatrix4fv_load_with_dyn(
32972            &self,
32973            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
32974        ) -> bool {
32975            load_dyn_name_atomic_ptr(
32976                get_proc_address,
32977                b"glUniformMatrix4fv\0",
32978                &self.glUniformMatrix4fv_p,
32979            )
32980        }
32981        #[inline]
32982        #[doc(hidden)]
32983        pub fn UniformMatrix4fv_is_loaded(&self) -> bool {
32984            !self.glUniformMatrix4fv_p.load(RELAX).is_null()
32985        }
32986        /// [glUniformMatrix4x2dv](http://docs.gl/gl4/glUniformMatrix4x2dv)(location, count, transpose, value)
32987        /// * `value` len: count*8
32988        #[cfg_attr(feature = "inline", inline)]
32989        #[cfg_attr(feature = "inline_always", inline(always))]
32990        pub unsafe fn UniformMatrix4x2dv(
32991            &self,
32992            location: GLint,
32993            count: GLsizei,
32994            transpose: GLboolean,
32995            value: *const GLdouble,
32996        ) {
32997            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
32998            {
32999                trace!(
33000                    "calling gl.UniformMatrix4x2dv({:?}, {:?}, {:?}, {:p});",
33001                    location,
33002                    count,
33003                    transpose,
33004                    value
33005                );
33006            }
33007            let out = call_atomic_ptr_4arg(
33008                "glUniformMatrix4x2dv",
33009                &self.glUniformMatrix4x2dv_p,
33010                location,
33011                count,
33012                transpose,
33013                value,
33014            );
33015            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33016            {
33017                self.automatic_glGetError("glUniformMatrix4x2dv");
33018            }
33019            out
33020        }
33021        #[doc(hidden)]
33022        pub unsafe fn UniformMatrix4x2dv_load_with_dyn(
33023            &self,
33024            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33025        ) -> bool {
33026            load_dyn_name_atomic_ptr(
33027                get_proc_address,
33028                b"glUniformMatrix4x2dv\0",
33029                &self.glUniformMatrix4x2dv_p,
33030            )
33031        }
33032        #[inline]
33033        #[doc(hidden)]
33034        pub fn UniformMatrix4x2dv_is_loaded(&self) -> bool {
33035            !self.glUniformMatrix4x2dv_p.load(RELAX).is_null()
33036        }
33037        /// [glUniformMatrix4x2fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
33038        /// * `value` len: count*8
33039        #[cfg_attr(feature = "inline", inline)]
33040        #[cfg_attr(feature = "inline_always", inline(always))]
33041        pub unsafe fn UniformMatrix4x2fv(
33042            &self,
33043            location: GLint,
33044            count: GLsizei,
33045            transpose: GLboolean,
33046            value: *const GLfloat,
33047        ) {
33048            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33049            {
33050                trace!(
33051                    "calling gl.UniformMatrix4x2fv({:?}, {:?}, {:?}, {:p});",
33052                    location,
33053                    count,
33054                    transpose,
33055                    value
33056                );
33057            }
33058            let out = call_atomic_ptr_4arg(
33059                "glUniformMatrix4x2fv",
33060                &self.glUniformMatrix4x2fv_p,
33061                location,
33062                count,
33063                transpose,
33064                value,
33065            );
33066            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33067            {
33068                self.automatic_glGetError("glUniformMatrix4x2fv");
33069            }
33070            out
33071        }
33072        #[doc(hidden)]
33073        pub unsafe fn UniformMatrix4x2fv_load_with_dyn(
33074            &self,
33075            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33076        ) -> bool {
33077            load_dyn_name_atomic_ptr(
33078                get_proc_address,
33079                b"glUniformMatrix4x2fv\0",
33080                &self.glUniformMatrix4x2fv_p,
33081            )
33082        }
33083        #[inline]
33084        #[doc(hidden)]
33085        pub fn UniformMatrix4x2fv_is_loaded(&self) -> bool {
33086            !self.glUniformMatrix4x2fv_p.load(RELAX).is_null()
33087        }
33088        /// [glUniformMatrix4x3dv](http://docs.gl/gl4/glUniformMatrix4x3dv)(location, count, transpose, value)
33089        /// * `value` len: count*12
33090        #[cfg_attr(feature = "inline", inline)]
33091        #[cfg_attr(feature = "inline_always", inline(always))]
33092        pub unsafe fn UniformMatrix4x3dv(
33093            &self,
33094            location: GLint,
33095            count: GLsizei,
33096            transpose: GLboolean,
33097            value: *const GLdouble,
33098        ) {
33099            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33100            {
33101                trace!(
33102                    "calling gl.UniformMatrix4x3dv({:?}, {:?}, {:?}, {:p});",
33103                    location,
33104                    count,
33105                    transpose,
33106                    value
33107                );
33108            }
33109            let out = call_atomic_ptr_4arg(
33110                "glUniformMatrix4x3dv",
33111                &self.glUniformMatrix4x3dv_p,
33112                location,
33113                count,
33114                transpose,
33115                value,
33116            );
33117            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33118            {
33119                self.automatic_glGetError("glUniformMatrix4x3dv");
33120            }
33121            out
33122        }
33123        #[doc(hidden)]
33124        pub unsafe fn UniformMatrix4x3dv_load_with_dyn(
33125            &self,
33126            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33127        ) -> bool {
33128            load_dyn_name_atomic_ptr(
33129                get_proc_address,
33130                b"glUniformMatrix4x3dv\0",
33131                &self.glUniformMatrix4x3dv_p,
33132            )
33133        }
33134        #[inline]
33135        #[doc(hidden)]
33136        pub fn UniformMatrix4x3dv_is_loaded(&self) -> bool {
33137            !self.glUniformMatrix4x3dv_p.load(RELAX).is_null()
33138        }
33139        /// [glUniformMatrix4x3fv](http://docs.gl/gl4/glUniform)(location, count, transpose, value)
33140        /// * `value` len: count*12
33141        #[cfg_attr(feature = "inline", inline)]
33142        #[cfg_attr(feature = "inline_always", inline(always))]
33143        pub unsafe fn UniformMatrix4x3fv(
33144            &self,
33145            location: GLint,
33146            count: GLsizei,
33147            transpose: GLboolean,
33148            value: *const GLfloat,
33149        ) {
33150            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33151            {
33152                trace!(
33153                    "calling gl.UniformMatrix4x3fv({:?}, {:?}, {:?}, {:p});",
33154                    location,
33155                    count,
33156                    transpose,
33157                    value
33158                );
33159            }
33160            let out = call_atomic_ptr_4arg(
33161                "glUniformMatrix4x3fv",
33162                &self.glUniformMatrix4x3fv_p,
33163                location,
33164                count,
33165                transpose,
33166                value,
33167            );
33168            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33169            {
33170                self.automatic_glGetError("glUniformMatrix4x3fv");
33171            }
33172            out
33173        }
33174        #[doc(hidden)]
33175        pub unsafe fn UniformMatrix4x3fv_load_with_dyn(
33176            &self,
33177            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33178        ) -> bool {
33179            load_dyn_name_atomic_ptr(
33180                get_proc_address,
33181                b"glUniformMatrix4x3fv\0",
33182                &self.glUniformMatrix4x3fv_p,
33183            )
33184        }
33185        #[inline]
33186        #[doc(hidden)]
33187        pub fn UniformMatrix4x3fv_is_loaded(&self) -> bool {
33188            !self.glUniformMatrix4x3fv_p.load(RELAX).is_null()
33189        }
33190        /// [glUniformSubroutinesuiv](http://docs.gl/gl4/glUniformSubroutines)(shadertype, count, indices)
33191        /// * `shadertype` group: ShaderType
33192        /// * `indices` len: count
33193        #[cfg_attr(feature = "inline", inline)]
33194        #[cfg_attr(feature = "inline_always", inline(always))]
33195        pub unsafe fn UniformSubroutinesuiv(
33196            &self,
33197            shadertype: GLenum,
33198            count: GLsizei,
33199            indices: *const GLuint,
33200        ) {
33201            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33202            {
33203                trace!(
33204                    "calling gl.UniformSubroutinesuiv({:#X}, {:?}, {:p});",
33205                    shadertype,
33206                    count,
33207                    indices
33208                );
33209            }
33210            let out = call_atomic_ptr_3arg(
33211                "glUniformSubroutinesuiv",
33212                &self.glUniformSubroutinesuiv_p,
33213                shadertype,
33214                count,
33215                indices,
33216            );
33217            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33218            {
33219                self.automatic_glGetError("glUniformSubroutinesuiv");
33220            }
33221            out
33222        }
33223        #[doc(hidden)]
33224        pub unsafe fn UniformSubroutinesuiv_load_with_dyn(
33225            &self,
33226            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33227        ) -> bool {
33228            load_dyn_name_atomic_ptr(
33229                get_proc_address,
33230                b"glUniformSubroutinesuiv\0",
33231                &self.glUniformSubroutinesuiv_p,
33232            )
33233        }
33234        #[inline]
33235        #[doc(hidden)]
33236        pub fn UniformSubroutinesuiv_is_loaded(&self) -> bool {
33237            !self.glUniformSubroutinesuiv_p.load(RELAX).is_null()
33238        }
33239        /// [glUnmapBuffer](http://docs.gl/gl4/glUnmapBuffer)(target)
33240        /// * `target` group: BufferTargetARB
33241        #[cfg_attr(feature = "inline", inline)]
33242        #[cfg_attr(feature = "inline_always", inline(always))]
33243        pub unsafe fn UnmapBuffer(&self, target: GLenum) -> GLboolean {
33244            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33245            {
33246                trace!("calling gl.UnmapBuffer({:#X});", target);
33247            }
33248            let out = call_atomic_ptr_1arg("glUnmapBuffer", &self.glUnmapBuffer_p, target);
33249            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33250            {
33251                self.automatic_glGetError("glUnmapBuffer");
33252            }
33253            out
33254        }
33255        #[doc(hidden)]
33256        pub unsafe fn UnmapBuffer_load_with_dyn(
33257            &self,
33258            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33259        ) -> bool {
33260            load_dyn_name_atomic_ptr(get_proc_address, b"glUnmapBuffer\0", &self.glUnmapBuffer_p)
33261        }
33262        #[inline]
33263        #[doc(hidden)]
33264        pub fn UnmapBuffer_is_loaded(&self) -> bool {
33265            !self.glUnmapBuffer_p.load(RELAX).is_null()
33266        }
33267        /// [glUnmapNamedBuffer](http://docs.gl/gl4/glUnmapNamedBuffer)(buffer)
33268        #[cfg_attr(feature = "inline", inline)]
33269        #[cfg_attr(feature = "inline_always", inline(always))]
33270        pub unsafe fn UnmapNamedBuffer(&self, buffer: GLuint) -> GLboolean {
33271            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33272            {
33273                trace!("calling gl.UnmapNamedBuffer({:?});", buffer);
33274            }
33275            let out =
33276                call_atomic_ptr_1arg("glUnmapNamedBuffer", &self.glUnmapNamedBuffer_p, buffer);
33277            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33278            {
33279                self.automatic_glGetError("glUnmapNamedBuffer");
33280            }
33281            out
33282        }
33283        #[doc(hidden)]
33284        pub unsafe fn UnmapNamedBuffer_load_with_dyn(
33285            &self,
33286            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33287        ) -> bool {
33288            load_dyn_name_atomic_ptr(
33289                get_proc_address,
33290                b"glUnmapNamedBuffer\0",
33291                &self.glUnmapNamedBuffer_p,
33292            )
33293        }
33294        #[inline]
33295        #[doc(hidden)]
33296        pub fn UnmapNamedBuffer_is_loaded(&self) -> bool {
33297            !self.glUnmapNamedBuffer_p.load(RELAX).is_null()
33298        }
33299        /// [glUseProgram](http://docs.gl/gl4/glUseProgram)(program)
33300        #[cfg_attr(feature = "inline", inline)]
33301        #[cfg_attr(feature = "inline_always", inline(always))]
33302        pub unsafe fn UseProgram(&self, program: GLuint) {
33303            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33304            {
33305                trace!("calling gl.UseProgram({:?});", program);
33306            }
33307            let out = call_atomic_ptr_1arg("glUseProgram", &self.glUseProgram_p, program);
33308            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33309            {
33310                self.automatic_glGetError("glUseProgram");
33311            }
33312            out
33313        }
33314        #[doc(hidden)]
33315        pub unsafe fn UseProgram_load_with_dyn(
33316            &self,
33317            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33318        ) -> bool {
33319            load_dyn_name_atomic_ptr(get_proc_address, b"glUseProgram\0", &self.glUseProgram_p)
33320        }
33321        #[inline]
33322        #[doc(hidden)]
33323        pub fn UseProgram_is_loaded(&self) -> bool {
33324            !self.glUseProgram_p.load(RELAX).is_null()
33325        }
33326        /// [glUseProgramStages](http://docs.gl/gl4/glUseProgramStages)(pipeline, stages, program)
33327        /// * `stages` group: UseProgramStageMask
33328        #[cfg_attr(feature = "inline", inline)]
33329        #[cfg_attr(feature = "inline_always", inline(always))]
33330        pub unsafe fn UseProgramStages(
33331            &self,
33332            pipeline: GLuint,
33333            stages: GLbitfield,
33334            program: GLuint,
33335        ) {
33336            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33337            {
33338                trace!(
33339                    "calling gl.UseProgramStages({:?}, {:?}, {:?});",
33340                    pipeline,
33341                    stages,
33342                    program
33343                );
33344            }
33345            let out = call_atomic_ptr_3arg(
33346                "glUseProgramStages",
33347                &self.glUseProgramStages_p,
33348                pipeline,
33349                stages,
33350                program,
33351            );
33352            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33353            {
33354                self.automatic_glGetError("glUseProgramStages");
33355            }
33356            out
33357        }
33358        #[doc(hidden)]
33359        pub unsafe fn UseProgramStages_load_with_dyn(
33360            &self,
33361            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33362        ) -> bool {
33363            load_dyn_name_atomic_ptr(
33364                get_proc_address,
33365                b"glUseProgramStages\0",
33366                &self.glUseProgramStages_p,
33367            )
33368        }
33369        #[inline]
33370        #[doc(hidden)]
33371        pub fn UseProgramStages_is_loaded(&self) -> bool {
33372            !self.glUseProgramStages_p.load(RELAX).is_null()
33373        }
33374        /// [glValidateProgram](http://docs.gl/gl4/glValidateProgram)(program)
33375        #[cfg_attr(feature = "inline", inline)]
33376        #[cfg_attr(feature = "inline_always", inline(always))]
33377        pub unsafe fn ValidateProgram(&self, program: GLuint) {
33378            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33379            {
33380                trace!("calling gl.ValidateProgram({:?});", program);
33381            }
33382            let out = call_atomic_ptr_1arg("glValidateProgram", &self.glValidateProgram_p, program);
33383            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33384            {
33385                self.automatic_glGetError("glValidateProgram");
33386            }
33387            out
33388        }
33389        #[doc(hidden)]
33390        pub unsafe fn ValidateProgram_load_with_dyn(
33391            &self,
33392            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33393        ) -> bool {
33394            load_dyn_name_atomic_ptr(
33395                get_proc_address,
33396                b"glValidateProgram\0",
33397                &self.glValidateProgram_p,
33398            )
33399        }
33400        #[inline]
33401        #[doc(hidden)]
33402        pub fn ValidateProgram_is_loaded(&self) -> bool {
33403            !self.glValidateProgram_p.load(RELAX).is_null()
33404        }
33405        /// [glValidateProgramPipeline](http://docs.gl/gl4/glValidateProgramPipeline)(pipeline)
33406        #[cfg_attr(feature = "inline", inline)]
33407        #[cfg_attr(feature = "inline_always", inline(always))]
33408        pub unsafe fn ValidateProgramPipeline(&self, pipeline: GLuint) {
33409            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33410            {
33411                trace!("calling gl.ValidateProgramPipeline({:?});", pipeline);
33412            }
33413            let out = call_atomic_ptr_1arg(
33414                "glValidateProgramPipeline",
33415                &self.glValidateProgramPipeline_p,
33416                pipeline,
33417            );
33418            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33419            {
33420                self.automatic_glGetError("glValidateProgramPipeline");
33421            }
33422            out
33423        }
33424        #[doc(hidden)]
33425        pub unsafe fn ValidateProgramPipeline_load_with_dyn(
33426            &self,
33427            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33428        ) -> bool {
33429            load_dyn_name_atomic_ptr(
33430                get_proc_address,
33431                b"glValidateProgramPipeline\0",
33432                &self.glValidateProgramPipeline_p,
33433            )
33434        }
33435        #[inline]
33436        #[doc(hidden)]
33437        pub fn ValidateProgramPipeline_is_loaded(&self) -> bool {
33438            !self.glValidateProgramPipeline_p.load(RELAX).is_null()
33439        }
33440        /// [glVertexArrayAttribBinding](http://docs.gl/gl4/glVertexArrayAttribBinding)(vaobj, attribindex, bindingindex)
33441        #[cfg_attr(feature = "inline", inline)]
33442        #[cfg_attr(feature = "inline_always", inline(always))]
33443        pub unsafe fn VertexArrayAttribBinding(
33444            &self,
33445            vaobj: GLuint,
33446            attribindex: GLuint,
33447            bindingindex: GLuint,
33448        ) {
33449            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33450            {
33451                trace!(
33452                    "calling gl.VertexArrayAttribBinding({:?}, {:?}, {:?});",
33453                    vaobj,
33454                    attribindex,
33455                    bindingindex
33456                );
33457            }
33458            let out = call_atomic_ptr_3arg(
33459                "glVertexArrayAttribBinding",
33460                &self.glVertexArrayAttribBinding_p,
33461                vaobj,
33462                attribindex,
33463                bindingindex,
33464            );
33465            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33466            {
33467                self.automatic_glGetError("glVertexArrayAttribBinding");
33468            }
33469            out
33470        }
33471        #[doc(hidden)]
33472        pub unsafe fn VertexArrayAttribBinding_load_with_dyn(
33473            &self,
33474            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33475        ) -> bool {
33476            load_dyn_name_atomic_ptr(
33477                get_proc_address,
33478                b"glVertexArrayAttribBinding\0",
33479                &self.glVertexArrayAttribBinding_p,
33480            )
33481        }
33482        #[inline]
33483        #[doc(hidden)]
33484        pub fn VertexArrayAttribBinding_is_loaded(&self) -> bool {
33485            !self.glVertexArrayAttribBinding_p.load(RELAX).is_null()
33486        }
33487        /// [glVertexArrayAttribFormat](http://docs.gl/gl4/glVertexArrayAttribFormat)(vaobj, attribindex, size, type_, normalized, relativeoffset)
33488        /// * `type_` group: VertexAttribType
33489        #[cfg_attr(feature = "inline", inline)]
33490        #[cfg_attr(feature = "inline_always", inline(always))]
33491        pub unsafe fn VertexArrayAttribFormat(
33492            &self,
33493            vaobj: GLuint,
33494            attribindex: GLuint,
33495            size: GLint,
33496            type_: GLenum,
33497            normalized: GLboolean,
33498            relativeoffset: GLuint,
33499        ) {
33500            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33501            {
33502                trace!(
33503                    "calling gl.VertexArrayAttribFormat({:?}, {:?}, {:?}, {:#X}, {:?}, {:?});",
33504                    vaobj,
33505                    attribindex,
33506                    size,
33507                    type_,
33508                    normalized,
33509                    relativeoffset
33510                );
33511            }
33512            let out = call_atomic_ptr_6arg(
33513                "glVertexArrayAttribFormat",
33514                &self.glVertexArrayAttribFormat_p,
33515                vaobj,
33516                attribindex,
33517                size,
33518                type_,
33519                normalized,
33520                relativeoffset,
33521            );
33522            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33523            {
33524                self.automatic_glGetError("glVertexArrayAttribFormat");
33525            }
33526            out
33527        }
33528        #[doc(hidden)]
33529        pub unsafe fn VertexArrayAttribFormat_load_with_dyn(
33530            &self,
33531            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33532        ) -> bool {
33533            load_dyn_name_atomic_ptr(
33534                get_proc_address,
33535                b"glVertexArrayAttribFormat\0",
33536                &self.glVertexArrayAttribFormat_p,
33537            )
33538        }
33539        #[inline]
33540        #[doc(hidden)]
33541        pub fn VertexArrayAttribFormat_is_loaded(&self) -> bool {
33542            !self.glVertexArrayAttribFormat_p.load(RELAX).is_null()
33543        }
33544        /// [glVertexArrayAttribIFormat](http://docs.gl/gl4/glVertexArrayAttribIFormat)(vaobj, attribindex, size, type_, relativeoffset)
33545        /// * `type_` group: VertexAttribIType
33546        #[cfg_attr(feature = "inline", inline)]
33547        #[cfg_attr(feature = "inline_always", inline(always))]
33548        pub unsafe fn VertexArrayAttribIFormat(
33549            &self,
33550            vaobj: GLuint,
33551            attribindex: GLuint,
33552            size: GLint,
33553            type_: GLenum,
33554            relativeoffset: GLuint,
33555        ) {
33556            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33557            {
33558                trace!(
33559                    "calling gl.VertexArrayAttribIFormat({:?}, {:?}, {:?}, {:#X}, {:?});",
33560                    vaobj,
33561                    attribindex,
33562                    size,
33563                    type_,
33564                    relativeoffset
33565                );
33566            }
33567            let out = call_atomic_ptr_5arg(
33568                "glVertexArrayAttribIFormat",
33569                &self.glVertexArrayAttribIFormat_p,
33570                vaobj,
33571                attribindex,
33572                size,
33573                type_,
33574                relativeoffset,
33575            );
33576            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33577            {
33578                self.automatic_glGetError("glVertexArrayAttribIFormat");
33579            }
33580            out
33581        }
33582        #[doc(hidden)]
33583        pub unsafe fn VertexArrayAttribIFormat_load_with_dyn(
33584            &self,
33585            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33586        ) -> bool {
33587            load_dyn_name_atomic_ptr(
33588                get_proc_address,
33589                b"glVertexArrayAttribIFormat\0",
33590                &self.glVertexArrayAttribIFormat_p,
33591            )
33592        }
33593        #[inline]
33594        #[doc(hidden)]
33595        pub fn VertexArrayAttribIFormat_is_loaded(&self) -> bool {
33596            !self.glVertexArrayAttribIFormat_p.load(RELAX).is_null()
33597        }
33598        /// [glVertexArrayAttribLFormat](http://docs.gl/gl4/glVertexArrayAttribLFormat)(vaobj, attribindex, size, type_, relativeoffset)
33599        /// * `type_` group: VertexAttribLType
33600        #[cfg_attr(feature = "inline", inline)]
33601        #[cfg_attr(feature = "inline_always", inline(always))]
33602        pub unsafe fn VertexArrayAttribLFormat(
33603            &self,
33604            vaobj: GLuint,
33605            attribindex: GLuint,
33606            size: GLint,
33607            type_: GLenum,
33608            relativeoffset: GLuint,
33609        ) {
33610            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33611            {
33612                trace!(
33613                    "calling gl.VertexArrayAttribLFormat({:?}, {:?}, {:?}, {:#X}, {:?});",
33614                    vaobj,
33615                    attribindex,
33616                    size,
33617                    type_,
33618                    relativeoffset
33619                );
33620            }
33621            let out = call_atomic_ptr_5arg(
33622                "glVertexArrayAttribLFormat",
33623                &self.glVertexArrayAttribLFormat_p,
33624                vaobj,
33625                attribindex,
33626                size,
33627                type_,
33628                relativeoffset,
33629            );
33630            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33631            {
33632                self.automatic_glGetError("glVertexArrayAttribLFormat");
33633            }
33634            out
33635        }
33636        #[doc(hidden)]
33637        pub unsafe fn VertexArrayAttribLFormat_load_with_dyn(
33638            &self,
33639            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33640        ) -> bool {
33641            load_dyn_name_atomic_ptr(
33642                get_proc_address,
33643                b"glVertexArrayAttribLFormat\0",
33644                &self.glVertexArrayAttribLFormat_p,
33645            )
33646        }
33647        #[inline]
33648        #[doc(hidden)]
33649        pub fn VertexArrayAttribLFormat_is_loaded(&self) -> bool {
33650            !self.glVertexArrayAttribLFormat_p.load(RELAX).is_null()
33651        }
33652        /// [glVertexArrayBindingDivisor](http://docs.gl/gl4/glVertexArrayBindingDivisor)(vaobj, bindingindex, divisor)
33653        #[cfg_attr(feature = "inline", inline)]
33654        #[cfg_attr(feature = "inline_always", inline(always))]
33655        pub unsafe fn VertexArrayBindingDivisor(
33656            &self,
33657            vaobj: GLuint,
33658            bindingindex: GLuint,
33659            divisor: GLuint,
33660        ) {
33661            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33662            {
33663                trace!(
33664                    "calling gl.VertexArrayBindingDivisor({:?}, {:?}, {:?});",
33665                    vaobj,
33666                    bindingindex,
33667                    divisor
33668                );
33669            }
33670            let out = call_atomic_ptr_3arg(
33671                "glVertexArrayBindingDivisor",
33672                &self.glVertexArrayBindingDivisor_p,
33673                vaobj,
33674                bindingindex,
33675                divisor,
33676            );
33677            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33678            {
33679                self.automatic_glGetError("glVertexArrayBindingDivisor");
33680            }
33681            out
33682        }
33683        #[doc(hidden)]
33684        pub unsafe fn VertexArrayBindingDivisor_load_with_dyn(
33685            &self,
33686            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33687        ) -> bool {
33688            load_dyn_name_atomic_ptr(
33689                get_proc_address,
33690                b"glVertexArrayBindingDivisor\0",
33691                &self.glVertexArrayBindingDivisor_p,
33692            )
33693        }
33694        #[inline]
33695        #[doc(hidden)]
33696        pub fn VertexArrayBindingDivisor_is_loaded(&self) -> bool {
33697            !self.glVertexArrayBindingDivisor_p.load(RELAX).is_null()
33698        }
33699        /// [glVertexArrayElementBuffer](http://docs.gl/gl4/glVertexArrayElementBuffer)(vaobj, buffer)
33700        #[cfg_attr(feature = "inline", inline)]
33701        #[cfg_attr(feature = "inline_always", inline(always))]
33702        pub unsafe fn VertexArrayElementBuffer(&self, vaobj: GLuint, buffer: GLuint) {
33703            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33704            {
33705                trace!(
33706                    "calling gl.VertexArrayElementBuffer({:?}, {:?});",
33707                    vaobj,
33708                    buffer
33709                );
33710            }
33711            let out = call_atomic_ptr_2arg(
33712                "glVertexArrayElementBuffer",
33713                &self.glVertexArrayElementBuffer_p,
33714                vaobj,
33715                buffer,
33716            );
33717            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33718            {
33719                self.automatic_glGetError("glVertexArrayElementBuffer");
33720            }
33721            out
33722        }
33723        #[doc(hidden)]
33724        pub unsafe fn VertexArrayElementBuffer_load_with_dyn(
33725            &self,
33726            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33727        ) -> bool {
33728            load_dyn_name_atomic_ptr(
33729                get_proc_address,
33730                b"glVertexArrayElementBuffer\0",
33731                &self.glVertexArrayElementBuffer_p,
33732            )
33733        }
33734        #[inline]
33735        #[doc(hidden)]
33736        pub fn VertexArrayElementBuffer_is_loaded(&self) -> bool {
33737            !self.glVertexArrayElementBuffer_p.load(RELAX).is_null()
33738        }
33739        /// [glVertexArrayVertexBuffer](http://docs.gl/gl4/glVertexArrayVertexBuffer)(vaobj, bindingindex, buffer, offset, stride)
33740        #[cfg_attr(feature = "inline", inline)]
33741        #[cfg_attr(feature = "inline_always", inline(always))]
33742        pub unsafe fn VertexArrayVertexBuffer(
33743            &self,
33744            vaobj: GLuint,
33745            bindingindex: GLuint,
33746            buffer: GLuint,
33747            offset: GLintptr,
33748            stride: GLsizei,
33749        ) {
33750            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33751            {
33752                trace!(
33753                    "calling gl.VertexArrayVertexBuffer({:?}, {:?}, {:?}, {:?}, {:?});",
33754                    vaobj,
33755                    bindingindex,
33756                    buffer,
33757                    offset,
33758                    stride
33759                );
33760            }
33761            let out = call_atomic_ptr_5arg(
33762                "glVertexArrayVertexBuffer",
33763                &self.glVertexArrayVertexBuffer_p,
33764                vaobj,
33765                bindingindex,
33766                buffer,
33767                offset,
33768                stride,
33769            );
33770            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33771            {
33772                self.automatic_glGetError("glVertexArrayVertexBuffer");
33773            }
33774            out
33775        }
33776        #[doc(hidden)]
33777        pub unsafe fn VertexArrayVertexBuffer_load_with_dyn(
33778            &self,
33779            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33780        ) -> bool {
33781            load_dyn_name_atomic_ptr(
33782                get_proc_address,
33783                b"glVertexArrayVertexBuffer\0",
33784                &self.glVertexArrayVertexBuffer_p,
33785            )
33786        }
33787        #[inline]
33788        #[doc(hidden)]
33789        pub fn VertexArrayVertexBuffer_is_loaded(&self) -> bool {
33790            !self.glVertexArrayVertexBuffer_p.load(RELAX).is_null()
33791        }
33792        /// [glVertexArrayVertexBuffers](http://docs.gl/gl4/glVertexArrayVertexBuffers)(vaobj, first, count, buffers, offsets, strides)
33793        #[cfg_attr(feature = "inline", inline)]
33794        #[cfg_attr(feature = "inline_always", inline(always))]
33795        pub unsafe fn VertexArrayVertexBuffers(
33796            &self,
33797            vaobj: GLuint,
33798            first: GLuint,
33799            count: GLsizei,
33800            buffers: *const GLuint,
33801            offsets: *const GLintptr,
33802            strides: *const GLsizei,
33803        ) {
33804            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33805            {
33806                trace!(
33807                    "calling gl.VertexArrayVertexBuffers({:?}, {:?}, {:?}, {:p}, {:p}, {:p});",
33808                    vaobj,
33809                    first,
33810                    count,
33811                    buffers,
33812                    offsets,
33813                    strides
33814                );
33815            }
33816            let out = call_atomic_ptr_6arg(
33817                "glVertexArrayVertexBuffers",
33818                &self.glVertexArrayVertexBuffers_p,
33819                vaobj,
33820                first,
33821                count,
33822                buffers,
33823                offsets,
33824                strides,
33825            );
33826            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33827            {
33828                self.automatic_glGetError("glVertexArrayVertexBuffers");
33829            }
33830            out
33831        }
33832        #[doc(hidden)]
33833        pub unsafe fn VertexArrayVertexBuffers_load_with_dyn(
33834            &self,
33835            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33836        ) -> bool {
33837            load_dyn_name_atomic_ptr(
33838                get_proc_address,
33839                b"glVertexArrayVertexBuffers\0",
33840                &self.glVertexArrayVertexBuffers_p,
33841            )
33842        }
33843        #[inline]
33844        #[doc(hidden)]
33845        pub fn VertexArrayVertexBuffers_is_loaded(&self) -> bool {
33846            !self.glVertexArrayVertexBuffers_p.load(RELAX).is_null()
33847        }
33848        /// [glVertexAttrib1d](http://docs.gl/gl4/glVertexAttrib1d)(index, x)
33849        /// * vector equivalent: [`glVertexAttrib1dv`]
33850        #[cfg_attr(feature = "inline", inline)]
33851        #[cfg_attr(feature = "inline_always", inline(always))]
33852        pub unsafe fn VertexAttrib1d(&self, index: GLuint, x: GLdouble) {
33853            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33854            {
33855                trace!("calling gl.VertexAttrib1d({:?}, {:?});", index, x);
33856            }
33857            let out = call_atomic_ptr_2arg("glVertexAttrib1d", &self.glVertexAttrib1d_p, index, x);
33858            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33859            {
33860                self.automatic_glGetError("glVertexAttrib1d");
33861            }
33862            out
33863        }
33864        #[doc(hidden)]
33865        pub unsafe fn VertexAttrib1d_load_with_dyn(
33866            &self,
33867            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33868        ) -> bool {
33869            load_dyn_name_atomic_ptr(
33870                get_proc_address,
33871                b"glVertexAttrib1d\0",
33872                &self.glVertexAttrib1d_p,
33873            )
33874        }
33875        #[inline]
33876        #[doc(hidden)]
33877        pub fn VertexAttrib1d_is_loaded(&self) -> bool {
33878            !self.glVertexAttrib1d_p.load(RELAX).is_null()
33879        }
33880        /// [glVertexAttrib1dv](http://docs.gl/gl4/glVertexAttrib1dv)(index, v)
33881        /// * `v` len: 1
33882        #[cfg_attr(feature = "inline", inline)]
33883        #[cfg_attr(feature = "inline_always", inline(always))]
33884        pub unsafe fn VertexAttrib1dv(&self, index: GLuint, v: *const GLdouble) {
33885            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33886            {
33887                trace!("calling gl.VertexAttrib1dv({:?}, {:p});", index, v);
33888            }
33889            let out =
33890                call_atomic_ptr_2arg("glVertexAttrib1dv", &self.glVertexAttrib1dv_p, index, v);
33891            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33892            {
33893                self.automatic_glGetError("glVertexAttrib1dv");
33894            }
33895            out
33896        }
33897        #[doc(hidden)]
33898        pub unsafe fn VertexAttrib1dv_load_with_dyn(
33899            &self,
33900            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33901        ) -> bool {
33902            load_dyn_name_atomic_ptr(
33903                get_proc_address,
33904                b"glVertexAttrib1dv\0",
33905                &self.glVertexAttrib1dv_p,
33906            )
33907        }
33908        #[inline]
33909        #[doc(hidden)]
33910        pub fn VertexAttrib1dv_is_loaded(&self) -> bool {
33911            !self.glVertexAttrib1dv_p.load(RELAX).is_null()
33912        }
33913        /// [glVertexAttrib1f](http://docs.gl/gl4/glVertexAttrib)(index, x)
33914        /// * vector equivalent: [`glVertexAttrib1fv`]
33915        #[cfg_attr(feature = "inline", inline)]
33916        #[cfg_attr(feature = "inline_always", inline(always))]
33917        pub unsafe fn VertexAttrib1f(&self, index: GLuint, x: GLfloat) {
33918            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33919            {
33920                trace!("calling gl.VertexAttrib1f({:?}, {:?});", index, x);
33921            }
33922            let out = call_atomic_ptr_2arg("glVertexAttrib1f", &self.glVertexAttrib1f_p, index, x);
33923            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33924            {
33925                self.automatic_glGetError("glVertexAttrib1f");
33926            }
33927            out
33928        }
33929        #[doc(hidden)]
33930        pub unsafe fn VertexAttrib1f_load_with_dyn(
33931            &self,
33932            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33933        ) -> bool {
33934            load_dyn_name_atomic_ptr(
33935                get_proc_address,
33936                b"glVertexAttrib1f\0",
33937                &self.glVertexAttrib1f_p,
33938            )
33939        }
33940        #[inline]
33941        #[doc(hidden)]
33942        pub fn VertexAttrib1f_is_loaded(&self) -> bool {
33943            !self.glVertexAttrib1f_p.load(RELAX).is_null()
33944        }
33945        /// [glVertexAttrib1fv](http://docs.gl/gl4/glVertexAttrib)(index, v)
33946        /// * `v` len: 1
33947        #[cfg_attr(feature = "inline", inline)]
33948        #[cfg_attr(feature = "inline_always", inline(always))]
33949        pub unsafe fn VertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) {
33950            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33951            {
33952                trace!("calling gl.VertexAttrib1fv({:?}, {:p});", index, v);
33953            }
33954            let out =
33955                call_atomic_ptr_2arg("glVertexAttrib1fv", &self.glVertexAttrib1fv_p, index, v);
33956            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33957            {
33958                self.automatic_glGetError("glVertexAttrib1fv");
33959            }
33960            out
33961        }
33962        #[doc(hidden)]
33963        pub unsafe fn VertexAttrib1fv_load_with_dyn(
33964            &self,
33965            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33966        ) -> bool {
33967            load_dyn_name_atomic_ptr(
33968                get_proc_address,
33969                b"glVertexAttrib1fv\0",
33970                &self.glVertexAttrib1fv_p,
33971            )
33972        }
33973        #[inline]
33974        #[doc(hidden)]
33975        pub fn VertexAttrib1fv_is_loaded(&self) -> bool {
33976            !self.glVertexAttrib1fv_p.load(RELAX).is_null()
33977        }
33978        /// [glVertexAttrib1s](http://docs.gl/gl4/glVertexAttrib1s)(index, x)
33979        /// * vector equivalent: [`glVertexAttrib1sv`]
33980        #[cfg_attr(feature = "inline", inline)]
33981        #[cfg_attr(feature = "inline_always", inline(always))]
33982        pub unsafe fn VertexAttrib1s(&self, index: GLuint, x: GLshort) {
33983            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
33984            {
33985                trace!("calling gl.VertexAttrib1s({:?}, {:?});", index, x);
33986            }
33987            let out = call_atomic_ptr_2arg("glVertexAttrib1s", &self.glVertexAttrib1s_p, index, x);
33988            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
33989            {
33990                self.automatic_glGetError("glVertexAttrib1s");
33991            }
33992            out
33993        }
33994        #[doc(hidden)]
33995        pub unsafe fn VertexAttrib1s_load_with_dyn(
33996            &self,
33997            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
33998        ) -> bool {
33999            load_dyn_name_atomic_ptr(
34000                get_proc_address,
34001                b"glVertexAttrib1s\0",
34002                &self.glVertexAttrib1s_p,
34003            )
34004        }
34005        #[inline]
34006        #[doc(hidden)]
34007        pub fn VertexAttrib1s_is_loaded(&self) -> bool {
34008            !self.glVertexAttrib1s_p.load(RELAX).is_null()
34009        }
34010        /// [glVertexAttrib1sv](http://docs.gl/gl4/glVertexAttrib1sv)(index, v)
34011        /// * `v` len: 1
34012        #[cfg_attr(feature = "inline", inline)]
34013        #[cfg_attr(feature = "inline_always", inline(always))]
34014        pub unsafe fn VertexAttrib1sv(&self, index: GLuint, v: *const GLshort) {
34015            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34016            {
34017                trace!("calling gl.VertexAttrib1sv({:?}, {:p});", index, v);
34018            }
34019            let out =
34020                call_atomic_ptr_2arg("glVertexAttrib1sv", &self.glVertexAttrib1sv_p, index, v);
34021            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34022            {
34023                self.automatic_glGetError("glVertexAttrib1sv");
34024            }
34025            out
34026        }
34027        #[doc(hidden)]
34028        pub unsafe fn VertexAttrib1sv_load_with_dyn(
34029            &self,
34030            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34031        ) -> bool {
34032            load_dyn_name_atomic_ptr(
34033                get_proc_address,
34034                b"glVertexAttrib1sv\0",
34035                &self.glVertexAttrib1sv_p,
34036            )
34037        }
34038        #[inline]
34039        #[doc(hidden)]
34040        pub fn VertexAttrib1sv_is_loaded(&self) -> bool {
34041            !self.glVertexAttrib1sv_p.load(RELAX).is_null()
34042        }
34043        /// [glVertexAttrib2d](http://docs.gl/gl4/glVertexAttrib2d)(index, x, y)
34044        /// * vector equivalent: [`glVertexAttrib2dv`]
34045        #[cfg_attr(feature = "inline", inline)]
34046        #[cfg_attr(feature = "inline_always", inline(always))]
34047        pub unsafe fn VertexAttrib2d(&self, index: GLuint, x: GLdouble, y: GLdouble) {
34048            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34049            {
34050                trace!("calling gl.VertexAttrib2d({:?}, {:?}, {:?});", index, x, y);
34051            }
34052            let out =
34053                call_atomic_ptr_3arg("glVertexAttrib2d", &self.glVertexAttrib2d_p, index, x, y);
34054            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34055            {
34056                self.automatic_glGetError("glVertexAttrib2d");
34057            }
34058            out
34059        }
34060        #[doc(hidden)]
34061        pub unsafe fn VertexAttrib2d_load_with_dyn(
34062            &self,
34063            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34064        ) -> bool {
34065            load_dyn_name_atomic_ptr(
34066                get_proc_address,
34067                b"glVertexAttrib2d\0",
34068                &self.glVertexAttrib2d_p,
34069            )
34070        }
34071        #[inline]
34072        #[doc(hidden)]
34073        pub fn VertexAttrib2d_is_loaded(&self) -> bool {
34074            !self.glVertexAttrib2d_p.load(RELAX).is_null()
34075        }
34076        /// [glVertexAttrib2dv](http://docs.gl/gl4/glVertexAttrib2dv)(index, v)
34077        /// * `v` len: 2
34078        #[cfg_attr(feature = "inline", inline)]
34079        #[cfg_attr(feature = "inline_always", inline(always))]
34080        pub unsafe fn VertexAttrib2dv(&self, index: GLuint, v: *const GLdouble) {
34081            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34082            {
34083                trace!("calling gl.VertexAttrib2dv({:?}, {:p});", index, v);
34084            }
34085            let out =
34086                call_atomic_ptr_2arg("glVertexAttrib2dv", &self.glVertexAttrib2dv_p, index, v);
34087            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34088            {
34089                self.automatic_glGetError("glVertexAttrib2dv");
34090            }
34091            out
34092        }
34093        #[doc(hidden)]
34094        pub unsafe fn VertexAttrib2dv_load_with_dyn(
34095            &self,
34096            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34097        ) -> bool {
34098            load_dyn_name_atomic_ptr(
34099                get_proc_address,
34100                b"glVertexAttrib2dv\0",
34101                &self.glVertexAttrib2dv_p,
34102            )
34103        }
34104        #[inline]
34105        #[doc(hidden)]
34106        pub fn VertexAttrib2dv_is_loaded(&self) -> bool {
34107            !self.glVertexAttrib2dv_p.load(RELAX).is_null()
34108        }
34109        /// [glVertexAttrib2f](http://docs.gl/gl4/glVertexAttrib)(index, x, y)
34110        /// * vector equivalent: [`glVertexAttrib2fv`]
34111        #[cfg_attr(feature = "inline", inline)]
34112        #[cfg_attr(feature = "inline_always", inline(always))]
34113        pub unsafe fn VertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) {
34114            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34115            {
34116                trace!("calling gl.VertexAttrib2f({:?}, {:?}, {:?});", index, x, y);
34117            }
34118            let out =
34119                call_atomic_ptr_3arg("glVertexAttrib2f", &self.glVertexAttrib2f_p, index, x, y);
34120            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34121            {
34122                self.automatic_glGetError("glVertexAttrib2f");
34123            }
34124            out
34125        }
34126        #[doc(hidden)]
34127        pub unsafe fn VertexAttrib2f_load_with_dyn(
34128            &self,
34129            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34130        ) -> bool {
34131            load_dyn_name_atomic_ptr(
34132                get_proc_address,
34133                b"glVertexAttrib2f\0",
34134                &self.glVertexAttrib2f_p,
34135            )
34136        }
34137        #[inline]
34138        #[doc(hidden)]
34139        pub fn VertexAttrib2f_is_loaded(&self) -> bool {
34140            !self.glVertexAttrib2f_p.load(RELAX).is_null()
34141        }
34142        /// [glVertexAttrib2fv](http://docs.gl/gl4/glVertexAttrib)(index, v)
34143        /// * `v` len: 2
34144        #[cfg_attr(feature = "inline", inline)]
34145        #[cfg_attr(feature = "inline_always", inline(always))]
34146        pub unsafe fn VertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) {
34147            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34148            {
34149                trace!("calling gl.VertexAttrib2fv({:?}, {:p});", index, v);
34150            }
34151            let out =
34152                call_atomic_ptr_2arg("glVertexAttrib2fv", &self.glVertexAttrib2fv_p, index, v);
34153            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34154            {
34155                self.automatic_glGetError("glVertexAttrib2fv");
34156            }
34157            out
34158        }
34159        #[doc(hidden)]
34160        pub unsafe fn VertexAttrib2fv_load_with_dyn(
34161            &self,
34162            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34163        ) -> bool {
34164            load_dyn_name_atomic_ptr(
34165                get_proc_address,
34166                b"glVertexAttrib2fv\0",
34167                &self.glVertexAttrib2fv_p,
34168            )
34169        }
34170        #[inline]
34171        #[doc(hidden)]
34172        pub fn VertexAttrib2fv_is_loaded(&self) -> bool {
34173            !self.glVertexAttrib2fv_p.load(RELAX).is_null()
34174        }
34175        /// [glVertexAttrib2s](http://docs.gl/gl4/glVertexAttrib2s)(index, x, y)
34176        /// * vector equivalent: [`glVertexAttrib2sv`]
34177        #[cfg_attr(feature = "inline", inline)]
34178        #[cfg_attr(feature = "inline_always", inline(always))]
34179        pub unsafe fn VertexAttrib2s(&self, index: GLuint, x: GLshort, y: GLshort) {
34180            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34181            {
34182                trace!("calling gl.VertexAttrib2s({:?}, {:?}, {:?});", index, x, y);
34183            }
34184            let out =
34185                call_atomic_ptr_3arg("glVertexAttrib2s", &self.glVertexAttrib2s_p, index, x, y);
34186            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34187            {
34188                self.automatic_glGetError("glVertexAttrib2s");
34189            }
34190            out
34191        }
34192        #[doc(hidden)]
34193        pub unsafe fn VertexAttrib2s_load_with_dyn(
34194            &self,
34195            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34196        ) -> bool {
34197            load_dyn_name_atomic_ptr(
34198                get_proc_address,
34199                b"glVertexAttrib2s\0",
34200                &self.glVertexAttrib2s_p,
34201            )
34202        }
34203        #[inline]
34204        #[doc(hidden)]
34205        pub fn VertexAttrib2s_is_loaded(&self) -> bool {
34206            !self.glVertexAttrib2s_p.load(RELAX).is_null()
34207        }
34208        /// [glVertexAttrib2sv](http://docs.gl/gl4/glVertexAttrib2sv)(index, v)
34209        /// * `v` len: 2
34210        #[cfg_attr(feature = "inline", inline)]
34211        #[cfg_attr(feature = "inline_always", inline(always))]
34212        pub unsafe fn VertexAttrib2sv(&self, index: GLuint, v: *const GLshort) {
34213            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34214            {
34215                trace!("calling gl.VertexAttrib2sv({:?}, {:p});", index, v);
34216            }
34217            let out =
34218                call_atomic_ptr_2arg("glVertexAttrib2sv", &self.glVertexAttrib2sv_p, index, v);
34219            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34220            {
34221                self.automatic_glGetError("glVertexAttrib2sv");
34222            }
34223            out
34224        }
34225        #[doc(hidden)]
34226        pub unsafe fn VertexAttrib2sv_load_with_dyn(
34227            &self,
34228            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34229        ) -> bool {
34230            load_dyn_name_atomic_ptr(
34231                get_proc_address,
34232                b"glVertexAttrib2sv\0",
34233                &self.glVertexAttrib2sv_p,
34234            )
34235        }
34236        #[inline]
34237        #[doc(hidden)]
34238        pub fn VertexAttrib2sv_is_loaded(&self) -> bool {
34239            !self.glVertexAttrib2sv_p.load(RELAX).is_null()
34240        }
34241        /// [glVertexAttrib3d](http://docs.gl/gl4/glVertexAttrib3d)(index, x, y, z)
34242        /// * vector equivalent: [`glVertexAttrib3dv`]
34243        #[cfg_attr(feature = "inline", inline)]
34244        #[cfg_attr(feature = "inline_always", inline(always))]
34245        pub unsafe fn VertexAttrib3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) {
34246            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34247            {
34248                trace!(
34249                    "calling gl.VertexAttrib3d({:?}, {:?}, {:?}, {:?});",
34250                    index,
34251                    x,
34252                    y,
34253                    z
34254                );
34255            }
34256            let out =
34257                call_atomic_ptr_4arg("glVertexAttrib3d", &self.glVertexAttrib3d_p, index, x, y, z);
34258            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34259            {
34260                self.automatic_glGetError("glVertexAttrib3d");
34261            }
34262            out
34263        }
34264        #[doc(hidden)]
34265        pub unsafe fn VertexAttrib3d_load_with_dyn(
34266            &self,
34267            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34268        ) -> bool {
34269            load_dyn_name_atomic_ptr(
34270                get_proc_address,
34271                b"glVertexAttrib3d\0",
34272                &self.glVertexAttrib3d_p,
34273            )
34274        }
34275        #[inline]
34276        #[doc(hidden)]
34277        pub fn VertexAttrib3d_is_loaded(&self) -> bool {
34278            !self.glVertexAttrib3d_p.load(RELAX).is_null()
34279        }
34280        /// [glVertexAttrib3dv](http://docs.gl/gl4/glVertexAttrib3dv)(index, v)
34281        /// * `v` len: 3
34282        #[cfg_attr(feature = "inline", inline)]
34283        #[cfg_attr(feature = "inline_always", inline(always))]
34284        pub unsafe fn VertexAttrib3dv(&self, index: GLuint, v: *const GLdouble) {
34285            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34286            {
34287                trace!("calling gl.VertexAttrib3dv({:?}, {:p});", index, v);
34288            }
34289            let out =
34290                call_atomic_ptr_2arg("glVertexAttrib3dv", &self.glVertexAttrib3dv_p, index, v);
34291            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34292            {
34293                self.automatic_glGetError("glVertexAttrib3dv");
34294            }
34295            out
34296        }
34297        #[doc(hidden)]
34298        pub unsafe fn VertexAttrib3dv_load_with_dyn(
34299            &self,
34300            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34301        ) -> bool {
34302            load_dyn_name_atomic_ptr(
34303                get_proc_address,
34304                b"glVertexAttrib3dv\0",
34305                &self.glVertexAttrib3dv_p,
34306            )
34307        }
34308        #[inline]
34309        #[doc(hidden)]
34310        pub fn VertexAttrib3dv_is_loaded(&self) -> bool {
34311            !self.glVertexAttrib3dv_p.load(RELAX).is_null()
34312        }
34313        /// [glVertexAttrib3f](http://docs.gl/gl4/glVertexAttrib)(index, x, y, z)
34314        /// * vector equivalent: [`glVertexAttrib3fv`]
34315        #[cfg_attr(feature = "inline", inline)]
34316        #[cfg_attr(feature = "inline_always", inline(always))]
34317        pub unsafe fn VertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) {
34318            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34319            {
34320                trace!(
34321                    "calling gl.VertexAttrib3f({:?}, {:?}, {:?}, {:?});",
34322                    index,
34323                    x,
34324                    y,
34325                    z
34326                );
34327            }
34328            let out =
34329                call_atomic_ptr_4arg("glVertexAttrib3f", &self.glVertexAttrib3f_p, index, x, y, z);
34330            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34331            {
34332                self.automatic_glGetError("glVertexAttrib3f");
34333            }
34334            out
34335        }
34336        #[doc(hidden)]
34337        pub unsafe fn VertexAttrib3f_load_with_dyn(
34338            &self,
34339            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34340        ) -> bool {
34341            load_dyn_name_atomic_ptr(
34342                get_proc_address,
34343                b"glVertexAttrib3f\0",
34344                &self.glVertexAttrib3f_p,
34345            )
34346        }
34347        #[inline]
34348        #[doc(hidden)]
34349        pub fn VertexAttrib3f_is_loaded(&self) -> bool {
34350            !self.glVertexAttrib3f_p.load(RELAX).is_null()
34351        }
34352        /// [glVertexAttrib3fv](http://docs.gl/gl4/glVertexAttrib)(index, v)
34353        /// * `v` len: 3
34354        #[cfg_attr(feature = "inline", inline)]
34355        #[cfg_attr(feature = "inline_always", inline(always))]
34356        pub unsafe fn VertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) {
34357            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34358            {
34359                trace!("calling gl.VertexAttrib3fv({:?}, {:p});", index, v);
34360            }
34361            let out =
34362                call_atomic_ptr_2arg("glVertexAttrib3fv", &self.glVertexAttrib3fv_p, index, v);
34363            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34364            {
34365                self.automatic_glGetError("glVertexAttrib3fv");
34366            }
34367            out
34368        }
34369        #[doc(hidden)]
34370        pub unsafe fn VertexAttrib3fv_load_with_dyn(
34371            &self,
34372            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34373        ) -> bool {
34374            load_dyn_name_atomic_ptr(
34375                get_proc_address,
34376                b"glVertexAttrib3fv\0",
34377                &self.glVertexAttrib3fv_p,
34378            )
34379        }
34380        #[inline]
34381        #[doc(hidden)]
34382        pub fn VertexAttrib3fv_is_loaded(&self) -> bool {
34383            !self.glVertexAttrib3fv_p.load(RELAX).is_null()
34384        }
34385        /// [glVertexAttrib3s](http://docs.gl/gl4/glVertexAttrib3s)(index, x, y, z)
34386        /// * vector equivalent: [`glVertexAttrib3sv`]
34387        #[cfg_attr(feature = "inline", inline)]
34388        #[cfg_attr(feature = "inline_always", inline(always))]
34389        pub unsafe fn VertexAttrib3s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort) {
34390            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34391            {
34392                trace!(
34393                    "calling gl.VertexAttrib3s({:?}, {:?}, {:?}, {:?});",
34394                    index,
34395                    x,
34396                    y,
34397                    z
34398                );
34399            }
34400            let out =
34401                call_atomic_ptr_4arg("glVertexAttrib3s", &self.glVertexAttrib3s_p, index, x, y, z);
34402            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34403            {
34404                self.automatic_glGetError("glVertexAttrib3s");
34405            }
34406            out
34407        }
34408        #[doc(hidden)]
34409        pub unsafe fn VertexAttrib3s_load_with_dyn(
34410            &self,
34411            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34412        ) -> bool {
34413            load_dyn_name_atomic_ptr(
34414                get_proc_address,
34415                b"glVertexAttrib3s\0",
34416                &self.glVertexAttrib3s_p,
34417            )
34418        }
34419        #[inline]
34420        #[doc(hidden)]
34421        pub fn VertexAttrib3s_is_loaded(&self) -> bool {
34422            !self.glVertexAttrib3s_p.load(RELAX).is_null()
34423        }
34424        /// [glVertexAttrib3sv](http://docs.gl/gl4/glVertexAttrib3sv)(index, v)
34425        /// * `v` len: 3
34426        #[cfg_attr(feature = "inline", inline)]
34427        #[cfg_attr(feature = "inline_always", inline(always))]
34428        pub unsafe fn VertexAttrib3sv(&self, index: GLuint, v: *const GLshort) {
34429            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34430            {
34431                trace!("calling gl.VertexAttrib3sv({:?}, {:p});", index, v);
34432            }
34433            let out =
34434                call_atomic_ptr_2arg("glVertexAttrib3sv", &self.glVertexAttrib3sv_p, index, v);
34435            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34436            {
34437                self.automatic_glGetError("glVertexAttrib3sv");
34438            }
34439            out
34440        }
34441        #[doc(hidden)]
34442        pub unsafe fn VertexAttrib3sv_load_with_dyn(
34443            &self,
34444            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34445        ) -> bool {
34446            load_dyn_name_atomic_ptr(
34447                get_proc_address,
34448                b"glVertexAttrib3sv\0",
34449                &self.glVertexAttrib3sv_p,
34450            )
34451        }
34452        #[inline]
34453        #[doc(hidden)]
34454        pub fn VertexAttrib3sv_is_loaded(&self) -> bool {
34455            !self.glVertexAttrib3sv_p.load(RELAX).is_null()
34456        }
34457        /// [glVertexAttrib4Nbv](http://docs.gl/gl4/glVertexAttrib4Nbv)(index, v)
34458        /// * `v` len: 4
34459        #[cfg_attr(feature = "inline", inline)]
34460        #[cfg_attr(feature = "inline_always", inline(always))]
34461        pub unsafe fn VertexAttrib4Nbv(&self, index: GLuint, v: *const GLbyte) {
34462            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34463            {
34464                trace!("calling gl.VertexAttrib4Nbv({:?}, {:p});", index, v);
34465            }
34466            let out =
34467                call_atomic_ptr_2arg("glVertexAttrib4Nbv", &self.glVertexAttrib4Nbv_p, index, v);
34468            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34469            {
34470                self.automatic_glGetError("glVertexAttrib4Nbv");
34471            }
34472            out
34473        }
34474        #[doc(hidden)]
34475        pub unsafe fn VertexAttrib4Nbv_load_with_dyn(
34476            &self,
34477            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34478        ) -> bool {
34479            load_dyn_name_atomic_ptr(
34480                get_proc_address,
34481                b"glVertexAttrib4Nbv\0",
34482                &self.glVertexAttrib4Nbv_p,
34483            )
34484        }
34485        #[inline]
34486        #[doc(hidden)]
34487        pub fn VertexAttrib4Nbv_is_loaded(&self) -> bool {
34488            !self.glVertexAttrib4Nbv_p.load(RELAX).is_null()
34489        }
34490        /// [glVertexAttrib4Niv](http://docs.gl/gl4/glVertexAttrib4N)(index, v)
34491        /// * `v` len: 4
34492        #[cfg_attr(feature = "inline", inline)]
34493        #[cfg_attr(feature = "inline_always", inline(always))]
34494        pub unsafe fn VertexAttrib4Niv(&self, index: GLuint, v: *const GLint) {
34495            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34496            {
34497                trace!("calling gl.VertexAttrib4Niv({:?}, {:p});", index, v);
34498            }
34499            let out =
34500                call_atomic_ptr_2arg("glVertexAttrib4Niv", &self.glVertexAttrib4Niv_p, index, v);
34501            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34502            {
34503                self.automatic_glGetError("glVertexAttrib4Niv");
34504            }
34505            out
34506        }
34507        #[doc(hidden)]
34508        pub unsafe fn VertexAttrib4Niv_load_with_dyn(
34509            &self,
34510            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34511        ) -> bool {
34512            load_dyn_name_atomic_ptr(
34513                get_proc_address,
34514                b"glVertexAttrib4Niv\0",
34515                &self.glVertexAttrib4Niv_p,
34516            )
34517        }
34518        #[inline]
34519        #[doc(hidden)]
34520        pub fn VertexAttrib4Niv_is_loaded(&self) -> bool {
34521            !self.glVertexAttrib4Niv_p.load(RELAX).is_null()
34522        }
34523        /// [glVertexAttrib4Nsv](http://docs.gl/gl4/glVertexAttrib4Nsv)(index, v)
34524        /// * `v` len: 4
34525        #[cfg_attr(feature = "inline", inline)]
34526        #[cfg_attr(feature = "inline_always", inline(always))]
34527        pub unsafe fn VertexAttrib4Nsv(&self, index: GLuint, v: *const GLshort) {
34528            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34529            {
34530                trace!("calling gl.VertexAttrib4Nsv({:?}, {:p});", index, v);
34531            }
34532            let out =
34533                call_atomic_ptr_2arg("glVertexAttrib4Nsv", &self.glVertexAttrib4Nsv_p, index, v);
34534            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34535            {
34536                self.automatic_glGetError("glVertexAttrib4Nsv");
34537            }
34538            out
34539        }
34540        #[doc(hidden)]
34541        pub unsafe fn VertexAttrib4Nsv_load_with_dyn(
34542            &self,
34543            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34544        ) -> bool {
34545            load_dyn_name_atomic_ptr(
34546                get_proc_address,
34547                b"glVertexAttrib4Nsv\0",
34548                &self.glVertexAttrib4Nsv_p,
34549            )
34550        }
34551        #[inline]
34552        #[doc(hidden)]
34553        pub fn VertexAttrib4Nsv_is_loaded(&self) -> bool {
34554            !self.glVertexAttrib4Nsv_p.load(RELAX).is_null()
34555        }
34556        /// [glVertexAttrib4Nub](http://docs.gl/gl4/glVertexAttrib4Nub)(index, x, y, z, w)
34557        #[cfg_attr(feature = "inline", inline)]
34558        #[cfg_attr(feature = "inline_always", inline(always))]
34559        pub unsafe fn VertexAttrib4Nub(
34560            &self,
34561            index: GLuint,
34562            x: GLubyte,
34563            y: GLubyte,
34564            z: GLubyte,
34565            w: GLubyte,
34566        ) {
34567            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34568            {
34569                trace!(
34570                    "calling gl.VertexAttrib4Nub({:?}, {:?}, {:?}, {:?}, {:?});",
34571                    index,
34572                    x,
34573                    y,
34574                    z,
34575                    w
34576                );
34577            }
34578            let out = call_atomic_ptr_5arg(
34579                "glVertexAttrib4Nub",
34580                &self.glVertexAttrib4Nub_p,
34581                index,
34582                x,
34583                y,
34584                z,
34585                w,
34586            );
34587            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34588            {
34589                self.automatic_glGetError("glVertexAttrib4Nub");
34590            }
34591            out
34592        }
34593        #[doc(hidden)]
34594        pub unsafe fn VertexAttrib4Nub_load_with_dyn(
34595            &self,
34596            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34597        ) -> bool {
34598            load_dyn_name_atomic_ptr(
34599                get_proc_address,
34600                b"glVertexAttrib4Nub\0",
34601                &self.glVertexAttrib4Nub_p,
34602            )
34603        }
34604        #[inline]
34605        #[doc(hidden)]
34606        pub fn VertexAttrib4Nub_is_loaded(&self) -> bool {
34607            !self.glVertexAttrib4Nub_p.load(RELAX).is_null()
34608        }
34609        /// [glVertexAttrib4Nubv](http://docs.gl/gl4/glVertexAttrib4Nubv)(index, v)
34610        /// * `v` len: 4
34611        #[cfg_attr(feature = "inline", inline)]
34612        #[cfg_attr(feature = "inline_always", inline(always))]
34613        pub unsafe fn VertexAttrib4Nubv(&self, index: GLuint, v: *const GLubyte) {
34614            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34615            {
34616                trace!("calling gl.VertexAttrib4Nubv({:?}, {:p});", index, v);
34617            }
34618            let out =
34619                call_atomic_ptr_2arg("glVertexAttrib4Nubv", &self.glVertexAttrib4Nubv_p, index, v);
34620            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34621            {
34622                self.automatic_glGetError("glVertexAttrib4Nubv");
34623            }
34624            out
34625        }
34626        #[doc(hidden)]
34627        pub unsafe fn VertexAttrib4Nubv_load_with_dyn(
34628            &self,
34629            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34630        ) -> bool {
34631            load_dyn_name_atomic_ptr(
34632                get_proc_address,
34633                b"glVertexAttrib4Nubv\0",
34634                &self.glVertexAttrib4Nubv_p,
34635            )
34636        }
34637        #[inline]
34638        #[doc(hidden)]
34639        pub fn VertexAttrib4Nubv_is_loaded(&self) -> bool {
34640            !self.glVertexAttrib4Nubv_p.load(RELAX).is_null()
34641        }
34642        /// [glVertexAttrib4Nuiv](http://docs.gl/gl4/glVertexAttrib4N)(index, v)
34643        /// * `v` len: 4
34644        #[cfg_attr(feature = "inline", inline)]
34645        #[cfg_attr(feature = "inline_always", inline(always))]
34646        pub unsafe fn VertexAttrib4Nuiv(&self, index: GLuint, v: *const GLuint) {
34647            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34648            {
34649                trace!("calling gl.VertexAttrib4Nuiv({:?}, {:p});", index, v);
34650            }
34651            let out =
34652                call_atomic_ptr_2arg("glVertexAttrib4Nuiv", &self.glVertexAttrib4Nuiv_p, index, v);
34653            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34654            {
34655                self.automatic_glGetError("glVertexAttrib4Nuiv");
34656            }
34657            out
34658        }
34659        #[doc(hidden)]
34660        pub unsafe fn VertexAttrib4Nuiv_load_with_dyn(
34661            &self,
34662            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34663        ) -> bool {
34664            load_dyn_name_atomic_ptr(
34665                get_proc_address,
34666                b"glVertexAttrib4Nuiv\0",
34667                &self.glVertexAttrib4Nuiv_p,
34668            )
34669        }
34670        #[inline]
34671        #[doc(hidden)]
34672        pub fn VertexAttrib4Nuiv_is_loaded(&self) -> bool {
34673            !self.glVertexAttrib4Nuiv_p.load(RELAX).is_null()
34674        }
34675        /// [glVertexAttrib4Nusv](http://docs.gl/gl4/glVertexAttrib4Nusv)(index, v)
34676        /// * `v` len: 4
34677        #[cfg_attr(feature = "inline", inline)]
34678        #[cfg_attr(feature = "inline_always", inline(always))]
34679        pub unsafe fn VertexAttrib4Nusv(&self, index: GLuint, v: *const GLushort) {
34680            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34681            {
34682                trace!("calling gl.VertexAttrib4Nusv({:?}, {:p});", index, v);
34683            }
34684            let out =
34685                call_atomic_ptr_2arg("glVertexAttrib4Nusv", &self.glVertexAttrib4Nusv_p, index, v);
34686            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34687            {
34688                self.automatic_glGetError("glVertexAttrib4Nusv");
34689            }
34690            out
34691        }
34692        #[doc(hidden)]
34693        pub unsafe fn VertexAttrib4Nusv_load_with_dyn(
34694            &self,
34695            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34696        ) -> bool {
34697            load_dyn_name_atomic_ptr(
34698                get_proc_address,
34699                b"glVertexAttrib4Nusv\0",
34700                &self.glVertexAttrib4Nusv_p,
34701            )
34702        }
34703        #[inline]
34704        #[doc(hidden)]
34705        pub fn VertexAttrib4Nusv_is_loaded(&self) -> bool {
34706            !self.glVertexAttrib4Nusv_p.load(RELAX).is_null()
34707        }
34708        /// [glVertexAttrib4bv](http://docs.gl/gl4/glVertexAttrib4bv)(index, v)
34709        /// * `v` len: 4
34710        #[cfg_attr(feature = "inline", inline)]
34711        #[cfg_attr(feature = "inline_always", inline(always))]
34712        pub unsafe fn VertexAttrib4bv(&self, index: GLuint, v: *const GLbyte) {
34713            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34714            {
34715                trace!("calling gl.VertexAttrib4bv({:?}, {:p});", index, v);
34716            }
34717            let out =
34718                call_atomic_ptr_2arg("glVertexAttrib4bv", &self.glVertexAttrib4bv_p, index, v);
34719            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34720            {
34721                self.automatic_glGetError("glVertexAttrib4bv");
34722            }
34723            out
34724        }
34725        #[doc(hidden)]
34726        pub unsafe fn VertexAttrib4bv_load_with_dyn(
34727            &self,
34728            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34729        ) -> bool {
34730            load_dyn_name_atomic_ptr(
34731                get_proc_address,
34732                b"glVertexAttrib4bv\0",
34733                &self.glVertexAttrib4bv_p,
34734            )
34735        }
34736        #[inline]
34737        #[doc(hidden)]
34738        pub fn VertexAttrib4bv_is_loaded(&self) -> bool {
34739            !self.glVertexAttrib4bv_p.load(RELAX).is_null()
34740        }
34741        /// [glVertexAttrib4d](http://docs.gl/gl4/glVertexAttrib4d)(index, x, y, z, w)
34742        /// * vector equivalent: [`glVertexAttrib4dv`]
34743        #[cfg_attr(feature = "inline", inline)]
34744        #[cfg_attr(feature = "inline_always", inline(always))]
34745        pub unsafe fn VertexAttrib4d(
34746            &self,
34747            index: GLuint,
34748            x: GLdouble,
34749            y: GLdouble,
34750            z: GLdouble,
34751            w: GLdouble,
34752        ) {
34753            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34754            {
34755                trace!(
34756                    "calling gl.VertexAttrib4d({:?}, {:?}, {:?}, {:?}, {:?});",
34757                    index,
34758                    x,
34759                    y,
34760                    z,
34761                    w
34762                );
34763            }
34764            let out = call_atomic_ptr_5arg(
34765                "glVertexAttrib4d",
34766                &self.glVertexAttrib4d_p,
34767                index,
34768                x,
34769                y,
34770                z,
34771                w,
34772            );
34773            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34774            {
34775                self.automatic_glGetError("glVertexAttrib4d");
34776            }
34777            out
34778        }
34779        #[doc(hidden)]
34780        pub unsafe fn VertexAttrib4d_load_with_dyn(
34781            &self,
34782            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34783        ) -> bool {
34784            load_dyn_name_atomic_ptr(
34785                get_proc_address,
34786                b"glVertexAttrib4d\0",
34787                &self.glVertexAttrib4d_p,
34788            )
34789        }
34790        #[inline]
34791        #[doc(hidden)]
34792        pub fn VertexAttrib4d_is_loaded(&self) -> bool {
34793            !self.glVertexAttrib4d_p.load(RELAX).is_null()
34794        }
34795        /// [glVertexAttrib4dv](http://docs.gl/gl4/glVertexAttrib4dv)(index, v)
34796        /// * `v` len: 4
34797        #[cfg_attr(feature = "inline", inline)]
34798        #[cfg_attr(feature = "inline_always", inline(always))]
34799        pub unsafe fn VertexAttrib4dv(&self, index: GLuint, v: *const GLdouble) {
34800            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34801            {
34802                trace!("calling gl.VertexAttrib4dv({:?}, {:p});", index, v);
34803            }
34804            let out =
34805                call_atomic_ptr_2arg("glVertexAttrib4dv", &self.glVertexAttrib4dv_p, index, v);
34806            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34807            {
34808                self.automatic_glGetError("glVertexAttrib4dv");
34809            }
34810            out
34811        }
34812        #[doc(hidden)]
34813        pub unsafe fn VertexAttrib4dv_load_with_dyn(
34814            &self,
34815            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34816        ) -> bool {
34817            load_dyn_name_atomic_ptr(
34818                get_proc_address,
34819                b"glVertexAttrib4dv\0",
34820                &self.glVertexAttrib4dv_p,
34821            )
34822        }
34823        #[inline]
34824        #[doc(hidden)]
34825        pub fn VertexAttrib4dv_is_loaded(&self) -> bool {
34826            !self.glVertexAttrib4dv_p.load(RELAX).is_null()
34827        }
34828        /// [glVertexAttrib4f](http://docs.gl/gl4/glVertexAttrib)(index, x, y, z, w)
34829        /// * vector equivalent: [`glVertexAttrib4fv`]
34830        #[cfg_attr(feature = "inline", inline)]
34831        #[cfg_attr(feature = "inline_always", inline(always))]
34832        pub unsafe fn VertexAttrib4f(
34833            &self,
34834            index: GLuint,
34835            x: GLfloat,
34836            y: GLfloat,
34837            z: GLfloat,
34838            w: GLfloat,
34839        ) {
34840            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34841            {
34842                trace!(
34843                    "calling gl.VertexAttrib4f({:?}, {:?}, {:?}, {:?}, {:?});",
34844                    index,
34845                    x,
34846                    y,
34847                    z,
34848                    w
34849                );
34850            }
34851            let out = call_atomic_ptr_5arg(
34852                "glVertexAttrib4f",
34853                &self.glVertexAttrib4f_p,
34854                index,
34855                x,
34856                y,
34857                z,
34858                w,
34859            );
34860            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34861            {
34862                self.automatic_glGetError("glVertexAttrib4f");
34863            }
34864            out
34865        }
34866        #[doc(hidden)]
34867        pub unsafe fn VertexAttrib4f_load_with_dyn(
34868            &self,
34869            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34870        ) -> bool {
34871            load_dyn_name_atomic_ptr(
34872                get_proc_address,
34873                b"glVertexAttrib4f\0",
34874                &self.glVertexAttrib4f_p,
34875            )
34876        }
34877        #[inline]
34878        #[doc(hidden)]
34879        pub fn VertexAttrib4f_is_loaded(&self) -> bool {
34880            !self.glVertexAttrib4f_p.load(RELAX).is_null()
34881        }
34882        /// [glVertexAttrib4fv](http://docs.gl/gl4/glVertexAttrib)(index, v)
34883        /// * `v` len: 4
34884        #[cfg_attr(feature = "inline", inline)]
34885        #[cfg_attr(feature = "inline_always", inline(always))]
34886        pub unsafe fn VertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) {
34887            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34888            {
34889                trace!("calling gl.VertexAttrib4fv({:?}, {:p});", index, v);
34890            }
34891            let out =
34892                call_atomic_ptr_2arg("glVertexAttrib4fv", &self.glVertexAttrib4fv_p, index, v);
34893            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34894            {
34895                self.automatic_glGetError("glVertexAttrib4fv");
34896            }
34897            out
34898        }
34899        #[doc(hidden)]
34900        pub unsafe fn VertexAttrib4fv_load_with_dyn(
34901            &self,
34902            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34903        ) -> bool {
34904            load_dyn_name_atomic_ptr(
34905                get_proc_address,
34906                b"glVertexAttrib4fv\0",
34907                &self.glVertexAttrib4fv_p,
34908            )
34909        }
34910        #[inline]
34911        #[doc(hidden)]
34912        pub fn VertexAttrib4fv_is_loaded(&self) -> bool {
34913            !self.glVertexAttrib4fv_p.load(RELAX).is_null()
34914        }
34915        /// [glVertexAttrib4iv](http://docs.gl/gl4/glVertexAttrib)(index, v)
34916        /// * `v` len: 4
34917        #[cfg_attr(feature = "inline", inline)]
34918        #[cfg_attr(feature = "inline_always", inline(always))]
34919        pub unsafe fn VertexAttrib4iv(&self, index: GLuint, v: *const GLint) {
34920            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34921            {
34922                trace!("calling gl.VertexAttrib4iv({:?}, {:p});", index, v);
34923            }
34924            let out =
34925                call_atomic_ptr_2arg("glVertexAttrib4iv", &self.glVertexAttrib4iv_p, index, v);
34926            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34927            {
34928                self.automatic_glGetError("glVertexAttrib4iv");
34929            }
34930            out
34931        }
34932        #[doc(hidden)]
34933        pub unsafe fn VertexAttrib4iv_load_with_dyn(
34934            &self,
34935            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34936        ) -> bool {
34937            load_dyn_name_atomic_ptr(
34938                get_proc_address,
34939                b"glVertexAttrib4iv\0",
34940                &self.glVertexAttrib4iv_p,
34941            )
34942        }
34943        #[inline]
34944        #[doc(hidden)]
34945        pub fn VertexAttrib4iv_is_loaded(&self) -> bool {
34946            !self.glVertexAttrib4iv_p.load(RELAX).is_null()
34947        }
34948        /// [glVertexAttrib4s](http://docs.gl/gl4/glVertexAttrib4s)(index, x, y, z, w)
34949        /// * vector equivalent: [`glVertexAttrib4sv`]
34950        #[cfg_attr(feature = "inline", inline)]
34951        #[cfg_attr(feature = "inline_always", inline(always))]
34952        pub unsafe fn VertexAttrib4s(
34953            &self,
34954            index: GLuint,
34955            x: GLshort,
34956            y: GLshort,
34957            z: GLshort,
34958            w: GLshort,
34959        ) {
34960            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
34961            {
34962                trace!(
34963                    "calling gl.VertexAttrib4s({:?}, {:?}, {:?}, {:?}, {:?});",
34964                    index,
34965                    x,
34966                    y,
34967                    z,
34968                    w
34969                );
34970            }
34971            let out = call_atomic_ptr_5arg(
34972                "glVertexAttrib4s",
34973                &self.glVertexAttrib4s_p,
34974                index,
34975                x,
34976                y,
34977                z,
34978                w,
34979            );
34980            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
34981            {
34982                self.automatic_glGetError("glVertexAttrib4s");
34983            }
34984            out
34985        }
34986        #[doc(hidden)]
34987        pub unsafe fn VertexAttrib4s_load_with_dyn(
34988            &self,
34989            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
34990        ) -> bool {
34991            load_dyn_name_atomic_ptr(
34992                get_proc_address,
34993                b"glVertexAttrib4s\0",
34994                &self.glVertexAttrib4s_p,
34995            )
34996        }
34997        #[inline]
34998        #[doc(hidden)]
34999        pub fn VertexAttrib4s_is_loaded(&self) -> bool {
35000            !self.glVertexAttrib4s_p.load(RELAX).is_null()
35001        }
35002        /// [glVertexAttrib4sv](http://docs.gl/gl4/glVertexAttrib4sv)(index, v)
35003        /// * `v` len: 4
35004        #[cfg_attr(feature = "inline", inline)]
35005        #[cfg_attr(feature = "inline_always", inline(always))]
35006        pub unsafe fn VertexAttrib4sv(&self, index: GLuint, v: *const GLshort) {
35007            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35008            {
35009                trace!("calling gl.VertexAttrib4sv({:?}, {:p});", index, v);
35010            }
35011            let out =
35012                call_atomic_ptr_2arg("glVertexAttrib4sv", &self.glVertexAttrib4sv_p, index, v);
35013            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35014            {
35015                self.automatic_glGetError("glVertexAttrib4sv");
35016            }
35017            out
35018        }
35019        #[doc(hidden)]
35020        pub unsafe fn VertexAttrib4sv_load_with_dyn(
35021            &self,
35022            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35023        ) -> bool {
35024            load_dyn_name_atomic_ptr(
35025                get_proc_address,
35026                b"glVertexAttrib4sv\0",
35027                &self.glVertexAttrib4sv_p,
35028            )
35029        }
35030        #[inline]
35031        #[doc(hidden)]
35032        pub fn VertexAttrib4sv_is_loaded(&self) -> bool {
35033            !self.glVertexAttrib4sv_p.load(RELAX).is_null()
35034        }
35035        /// [glVertexAttrib4ubv](http://docs.gl/gl4/glVertexAttrib4ubv)(index, v)
35036        /// * `v` len: 4
35037        #[cfg_attr(feature = "inline", inline)]
35038        #[cfg_attr(feature = "inline_always", inline(always))]
35039        pub unsafe fn VertexAttrib4ubv(&self, index: GLuint, v: *const GLubyte) {
35040            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35041            {
35042                trace!("calling gl.VertexAttrib4ubv({:?}, {:p});", index, v);
35043            }
35044            let out =
35045                call_atomic_ptr_2arg("glVertexAttrib4ubv", &self.glVertexAttrib4ubv_p, index, v);
35046            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35047            {
35048                self.automatic_glGetError("glVertexAttrib4ubv");
35049            }
35050            out
35051        }
35052        #[doc(hidden)]
35053        pub unsafe fn VertexAttrib4ubv_load_with_dyn(
35054            &self,
35055            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35056        ) -> bool {
35057            load_dyn_name_atomic_ptr(
35058                get_proc_address,
35059                b"glVertexAttrib4ubv\0",
35060                &self.glVertexAttrib4ubv_p,
35061            )
35062        }
35063        #[inline]
35064        #[doc(hidden)]
35065        pub fn VertexAttrib4ubv_is_loaded(&self) -> bool {
35066            !self.glVertexAttrib4ubv_p.load(RELAX).is_null()
35067        }
35068        /// [glVertexAttrib4uiv](http://docs.gl/gl4/glVertexAttrib)(index, v)
35069        /// * `v` len: 4
35070        #[cfg_attr(feature = "inline", inline)]
35071        #[cfg_attr(feature = "inline_always", inline(always))]
35072        pub unsafe fn VertexAttrib4uiv(&self, index: GLuint, v: *const GLuint) {
35073            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35074            {
35075                trace!("calling gl.VertexAttrib4uiv({:?}, {:p});", index, v);
35076            }
35077            let out =
35078                call_atomic_ptr_2arg("glVertexAttrib4uiv", &self.glVertexAttrib4uiv_p, index, v);
35079            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35080            {
35081                self.automatic_glGetError("glVertexAttrib4uiv");
35082            }
35083            out
35084        }
35085        #[doc(hidden)]
35086        pub unsafe fn VertexAttrib4uiv_load_with_dyn(
35087            &self,
35088            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35089        ) -> bool {
35090            load_dyn_name_atomic_ptr(
35091                get_proc_address,
35092                b"glVertexAttrib4uiv\0",
35093                &self.glVertexAttrib4uiv_p,
35094            )
35095        }
35096        #[inline]
35097        #[doc(hidden)]
35098        pub fn VertexAttrib4uiv_is_loaded(&self) -> bool {
35099            !self.glVertexAttrib4uiv_p.load(RELAX).is_null()
35100        }
35101        /// [glVertexAttrib4usv](http://docs.gl/gl4/glVertexAttrib4usv)(index, v)
35102        /// * `v` len: 4
35103        #[cfg_attr(feature = "inline", inline)]
35104        #[cfg_attr(feature = "inline_always", inline(always))]
35105        pub unsafe fn VertexAttrib4usv(&self, index: GLuint, v: *const GLushort) {
35106            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35107            {
35108                trace!("calling gl.VertexAttrib4usv({:?}, {:p});", index, v);
35109            }
35110            let out =
35111                call_atomic_ptr_2arg("glVertexAttrib4usv", &self.glVertexAttrib4usv_p, index, v);
35112            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35113            {
35114                self.automatic_glGetError("glVertexAttrib4usv");
35115            }
35116            out
35117        }
35118        #[doc(hidden)]
35119        pub unsafe fn VertexAttrib4usv_load_with_dyn(
35120            &self,
35121            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35122        ) -> bool {
35123            load_dyn_name_atomic_ptr(
35124                get_proc_address,
35125                b"glVertexAttrib4usv\0",
35126                &self.glVertexAttrib4usv_p,
35127            )
35128        }
35129        #[inline]
35130        #[doc(hidden)]
35131        pub fn VertexAttrib4usv_is_loaded(&self) -> bool {
35132            !self.glVertexAttrib4usv_p.load(RELAX).is_null()
35133        }
35134        /// [glVertexAttribBinding](http://docs.gl/gl4/glVertexAttribBinding)(attribindex, bindingindex)
35135        #[cfg_attr(feature = "inline", inline)]
35136        #[cfg_attr(feature = "inline_always", inline(always))]
35137        pub unsafe fn VertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) {
35138            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35139            {
35140                trace!(
35141                    "calling gl.VertexAttribBinding({:?}, {:?});",
35142                    attribindex,
35143                    bindingindex
35144                );
35145            }
35146            let out = call_atomic_ptr_2arg(
35147                "glVertexAttribBinding",
35148                &self.glVertexAttribBinding_p,
35149                attribindex,
35150                bindingindex,
35151            );
35152            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35153            {
35154                self.automatic_glGetError("glVertexAttribBinding");
35155            }
35156            out
35157        }
35158        #[doc(hidden)]
35159        pub unsafe fn VertexAttribBinding_load_with_dyn(
35160            &self,
35161            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35162        ) -> bool {
35163            load_dyn_name_atomic_ptr(
35164                get_proc_address,
35165                b"glVertexAttribBinding\0",
35166                &self.glVertexAttribBinding_p,
35167            )
35168        }
35169        #[inline]
35170        #[doc(hidden)]
35171        pub fn VertexAttribBinding_is_loaded(&self) -> bool {
35172            !self.glVertexAttribBinding_p.load(RELAX).is_null()
35173        }
35174        /// [glVertexAttribDivisor](http://docs.gl/gl4/glVertexAttribDivisor)(index, divisor)
35175        #[cfg_attr(feature = "inline", inline)]
35176        #[cfg_attr(feature = "inline_always", inline(always))]
35177        pub unsafe fn VertexAttribDivisor(&self, index: GLuint, divisor: GLuint) {
35178            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35179            {
35180                trace!(
35181                    "calling gl.VertexAttribDivisor({:?}, {:?});",
35182                    index,
35183                    divisor
35184                );
35185            }
35186            let out = call_atomic_ptr_2arg(
35187                "glVertexAttribDivisor",
35188                &self.glVertexAttribDivisor_p,
35189                index,
35190                divisor,
35191            );
35192            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35193            {
35194                self.automatic_glGetError("glVertexAttribDivisor");
35195            }
35196            out
35197        }
35198        #[doc(hidden)]
35199        pub unsafe fn VertexAttribDivisor_load_with_dyn(
35200            &self,
35201            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35202        ) -> bool {
35203            load_dyn_name_atomic_ptr(
35204                get_proc_address,
35205                b"glVertexAttribDivisor\0",
35206                &self.glVertexAttribDivisor_p,
35207            )
35208        }
35209        #[inline]
35210        #[doc(hidden)]
35211        pub fn VertexAttribDivisor_is_loaded(&self) -> bool {
35212            !self.glVertexAttribDivisor_p.load(RELAX).is_null()
35213        }
35214        /// [glVertexAttribDivisorARB](http://docs.gl/gl4/glVertexAttribDivisorARB)(index, divisor)
35215        /// * alias of: [`glVertexAttribDivisor`]
35216        #[cfg_attr(feature = "inline", inline)]
35217        #[cfg_attr(feature = "inline_always", inline(always))]
35218        pub unsafe fn VertexAttribDivisorARB(&self, index: GLuint, divisor: GLuint) {
35219            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35220            {
35221                trace!(
35222                    "calling gl.VertexAttribDivisorARB({:?}, {:?});",
35223                    index,
35224                    divisor
35225                );
35226            }
35227            let out = call_atomic_ptr_2arg(
35228                "glVertexAttribDivisorARB",
35229                &self.glVertexAttribDivisorARB_p,
35230                index,
35231                divisor,
35232            );
35233            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35234            {
35235                self.automatic_glGetError("glVertexAttribDivisorARB");
35236            }
35237            out
35238        }
35239        #[doc(hidden)]
35240        pub unsafe fn VertexAttribDivisorARB_load_with_dyn(
35241            &self,
35242            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35243        ) -> bool {
35244            load_dyn_name_atomic_ptr(
35245                get_proc_address,
35246                b"glVertexAttribDivisorARB\0",
35247                &self.glVertexAttribDivisorARB_p,
35248            )
35249        }
35250        #[inline]
35251        #[doc(hidden)]
35252        pub fn VertexAttribDivisorARB_is_loaded(&self) -> bool {
35253            !self.glVertexAttribDivisorARB_p.load(RELAX).is_null()
35254        }
35255        /// [glVertexAttribFormat](http://docs.gl/gl4/glVertexAttribFormat)(attribindex, size, type_, normalized, relativeoffset)
35256        /// * `type_` group: VertexAttribType
35257        #[cfg_attr(feature = "inline", inline)]
35258        #[cfg_attr(feature = "inline_always", inline(always))]
35259        pub unsafe fn VertexAttribFormat(
35260            &self,
35261            attribindex: GLuint,
35262            size: GLint,
35263            type_: GLenum,
35264            normalized: GLboolean,
35265            relativeoffset: GLuint,
35266        ) {
35267            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35268            {
35269                trace!(
35270                    "calling gl.VertexAttribFormat({:?}, {:?}, {:#X}, {:?}, {:?});",
35271                    attribindex,
35272                    size,
35273                    type_,
35274                    normalized,
35275                    relativeoffset
35276                );
35277            }
35278            let out = call_atomic_ptr_5arg(
35279                "glVertexAttribFormat",
35280                &self.glVertexAttribFormat_p,
35281                attribindex,
35282                size,
35283                type_,
35284                normalized,
35285                relativeoffset,
35286            );
35287            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35288            {
35289                self.automatic_glGetError("glVertexAttribFormat");
35290            }
35291            out
35292        }
35293        #[doc(hidden)]
35294        pub unsafe fn VertexAttribFormat_load_with_dyn(
35295            &self,
35296            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35297        ) -> bool {
35298            load_dyn_name_atomic_ptr(
35299                get_proc_address,
35300                b"glVertexAttribFormat\0",
35301                &self.glVertexAttribFormat_p,
35302            )
35303        }
35304        #[inline]
35305        #[doc(hidden)]
35306        pub fn VertexAttribFormat_is_loaded(&self) -> bool {
35307            !self.glVertexAttribFormat_p.load(RELAX).is_null()
35308        }
35309        /// [glVertexAttribI1i](http://docs.gl/gl4/glVertexAttribI)(index, x)
35310        /// * vector equivalent: [`glVertexAttribI1iv`]
35311        #[cfg_attr(feature = "inline", inline)]
35312        #[cfg_attr(feature = "inline_always", inline(always))]
35313        pub unsafe fn VertexAttribI1i(&self, index: GLuint, x: GLint) {
35314            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35315            {
35316                trace!("calling gl.VertexAttribI1i({:?}, {:?});", index, x);
35317            }
35318            let out =
35319                call_atomic_ptr_2arg("glVertexAttribI1i", &self.glVertexAttribI1i_p, index, x);
35320            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35321            {
35322                self.automatic_glGetError("glVertexAttribI1i");
35323            }
35324            out
35325        }
35326        #[doc(hidden)]
35327        pub unsafe fn VertexAttribI1i_load_with_dyn(
35328            &self,
35329            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35330        ) -> bool {
35331            load_dyn_name_atomic_ptr(
35332                get_proc_address,
35333                b"glVertexAttribI1i\0",
35334                &self.glVertexAttribI1i_p,
35335            )
35336        }
35337        #[inline]
35338        #[doc(hidden)]
35339        pub fn VertexAttribI1i_is_loaded(&self) -> bool {
35340            !self.glVertexAttribI1i_p.load(RELAX).is_null()
35341        }
35342        /// [glVertexAttribI1iv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35343        /// * `v` len: 1
35344        #[cfg_attr(feature = "inline", inline)]
35345        #[cfg_attr(feature = "inline_always", inline(always))]
35346        pub unsafe fn VertexAttribI1iv(&self, index: GLuint, v: *const GLint) {
35347            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35348            {
35349                trace!("calling gl.VertexAttribI1iv({:?}, {:p});", index, v);
35350            }
35351            let out =
35352                call_atomic_ptr_2arg("glVertexAttribI1iv", &self.glVertexAttribI1iv_p, index, v);
35353            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35354            {
35355                self.automatic_glGetError("glVertexAttribI1iv");
35356            }
35357            out
35358        }
35359        #[doc(hidden)]
35360        pub unsafe fn VertexAttribI1iv_load_with_dyn(
35361            &self,
35362            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35363        ) -> bool {
35364            load_dyn_name_atomic_ptr(
35365                get_proc_address,
35366                b"glVertexAttribI1iv\0",
35367                &self.glVertexAttribI1iv_p,
35368            )
35369        }
35370        #[inline]
35371        #[doc(hidden)]
35372        pub fn VertexAttribI1iv_is_loaded(&self) -> bool {
35373            !self.glVertexAttribI1iv_p.load(RELAX).is_null()
35374        }
35375        /// [glVertexAttribI1ui](http://docs.gl/gl4/glVertexAttribI)(index, x)
35376        /// * vector equivalent: [`glVertexAttribI1uiv`]
35377        #[cfg_attr(feature = "inline", inline)]
35378        #[cfg_attr(feature = "inline_always", inline(always))]
35379        pub unsafe fn VertexAttribI1ui(&self, index: GLuint, x: GLuint) {
35380            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35381            {
35382                trace!("calling gl.VertexAttribI1ui({:?}, {:?});", index, x);
35383            }
35384            let out =
35385                call_atomic_ptr_2arg("glVertexAttribI1ui", &self.glVertexAttribI1ui_p, index, x);
35386            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35387            {
35388                self.automatic_glGetError("glVertexAttribI1ui");
35389            }
35390            out
35391        }
35392        #[doc(hidden)]
35393        pub unsafe fn VertexAttribI1ui_load_with_dyn(
35394            &self,
35395            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35396        ) -> bool {
35397            load_dyn_name_atomic_ptr(
35398                get_proc_address,
35399                b"glVertexAttribI1ui\0",
35400                &self.glVertexAttribI1ui_p,
35401            )
35402        }
35403        #[inline]
35404        #[doc(hidden)]
35405        pub fn VertexAttribI1ui_is_loaded(&self) -> bool {
35406            !self.glVertexAttribI1ui_p.load(RELAX).is_null()
35407        }
35408        /// [glVertexAttribI1uiv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35409        /// * `v` len: 1
35410        #[cfg_attr(feature = "inline", inline)]
35411        #[cfg_attr(feature = "inline_always", inline(always))]
35412        pub unsafe fn VertexAttribI1uiv(&self, index: GLuint, v: *const GLuint) {
35413            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35414            {
35415                trace!("calling gl.VertexAttribI1uiv({:?}, {:p});", index, v);
35416            }
35417            let out =
35418                call_atomic_ptr_2arg("glVertexAttribI1uiv", &self.glVertexAttribI1uiv_p, index, v);
35419            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35420            {
35421                self.automatic_glGetError("glVertexAttribI1uiv");
35422            }
35423            out
35424        }
35425        #[doc(hidden)]
35426        pub unsafe fn VertexAttribI1uiv_load_with_dyn(
35427            &self,
35428            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35429        ) -> bool {
35430            load_dyn_name_atomic_ptr(
35431                get_proc_address,
35432                b"glVertexAttribI1uiv\0",
35433                &self.glVertexAttribI1uiv_p,
35434            )
35435        }
35436        #[inline]
35437        #[doc(hidden)]
35438        pub fn VertexAttribI1uiv_is_loaded(&self) -> bool {
35439            !self.glVertexAttribI1uiv_p.load(RELAX).is_null()
35440        }
35441        /// [glVertexAttribI2i](http://docs.gl/gl4/glVertexAttribI)(index, x, y)
35442        /// * vector equivalent: [`glVertexAttribI2iv`]
35443        #[cfg_attr(feature = "inline", inline)]
35444        #[cfg_attr(feature = "inline_always", inline(always))]
35445        pub unsafe fn VertexAttribI2i(&self, index: GLuint, x: GLint, y: GLint) {
35446            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35447            {
35448                trace!("calling gl.VertexAttribI2i({:?}, {:?}, {:?});", index, x, y);
35449            }
35450            let out =
35451                call_atomic_ptr_3arg("glVertexAttribI2i", &self.glVertexAttribI2i_p, index, x, y);
35452            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35453            {
35454                self.automatic_glGetError("glVertexAttribI2i");
35455            }
35456            out
35457        }
35458        #[doc(hidden)]
35459        pub unsafe fn VertexAttribI2i_load_with_dyn(
35460            &self,
35461            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35462        ) -> bool {
35463            load_dyn_name_atomic_ptr(
35464                get_proc_address,
35465                b"glVertexAttribI2i\0",
35466                &self.glVertexAttribI2i_p,
35467            )
35468        }
35469        #[inline]
35470        #[doc(hidden)]
35471        pub fn VertexAttribI2i_is_loaded(&self) -> bool {
35472            !self.glVertexAttribI2i_p.load(RELAX).is_null()
35473        }
35474        /// [glVertexAttribI2iv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35475        /// * `v` len: 2
35476        #[cfg_attr(feature = "inline", inline)]
35477        #[cfg_attr(feature = "inline_always", inline(always))]
35478        pub unsafe fn VertexAttribI2iv(&self, index: GLuint, v: *const GLint) {
35479            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35480            {
35481                trace!("calling gl.VertexAttribI2iv({:?}, {:p});", index, v);
35482            }
35483            let out =
35484                call_atomic_ptr_2arg("glVertexAttribI2iv", &self.glVertexAttribI2iv_p, index, v);
35485            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35486            {
35487                self.automatic_glGetError("glVertexAttribI2iv");
35488            }
35489            out
35490        }
35491        #[doc(hidden)]
35492        pub unsafe fn VertexAttribI2iv_load_with_dyn(
35493            &self,
35494            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35495        ) -> bool {
35496            load_dyn_name_atomic_ptr(
35497                get_proc_address,
35498                b"glVertexAttribI2iv\0",
35499                &self.glVertexAttribI2iv_p,
35500            )
35501        }
35502        #[inline]
35503        #[doc(hidden)]
35504        pub fn VertexAttribI2iv_is_loaded(&self) -> bool {
35505            !self.glVertexAttribI2iv_p.load(RELAX).is_null()
35506        }
35507        /// [glVertexAttribI2ui](http://docs.gl/gl4/glVertexAttribI)(index, x, y)
35508        /// * vector equivalent: [`glVertexAttribI2uiv`]
35509        #[cfg_attr(feature = "inline", inline)]
35510        #[cfg_attr(feature = "inline_always", inline(always))]
35511        pub unsafe fn VertexAttribI2ui(&self, index: GLuint, x: GLuint, y: GLuint) {
35512            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35513            {
35514                trace!(
35515                    "calling gl.VertexAttribI2ui({:?}, {:?}, {:?});",
35516                    index,
35517                    x,
35518                    y
35519                );
35520            }
35521            let out = call_atomic_ptr_3arg(
35522                "glVertexAttribI2ui",
35523                &self.glVertexAttribI2ui_p,
35524                index,
35525                x,
35526                y,
35527            );
35528            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35529            {
35530                self.automatic_glGetError("glVertexAttribI2ui");
35531            }
35532            out
35533        }
35534        #[doc(hidden)]
35535        pub unsafe fn VertexAttribI2ui_load_with_dyn(
35536            &self,
35537            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35538        ) -> bool {
35539            load_dyn_name_atomic_ptr(
35540                get_proc_address,
35541                b"glVertexAttribI2ui\0",
35542                &self.glVertexAttribI2ui_p,
35543            )
35544        }
35545        #[inline]
35546        #[doc(hidden)]
35547        pub fn VertexAttribI2ui_is_loaded(&self) -> bool {
35548            !self.glVertexAttribI2ui_p.load(RELAX).is_null()
35549        }
35550        /// [glVertexAttribI2uiv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35551        /// * `v` len: 2
35552        #[cfg_attr(feature = "inline", inline)]
35553        #[cfg_attr(feature = "inline_always", inline(always))]
35554        pub unsafe fn VertexAttribI2uiv(&self, index: GLuint, v: *const GLuint) {
35555            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35556            {
35557                trace!("calling gl.VertexAttribI2uiv({:?}, {:p});", index, v);
35558            }
35559            let out =
35560                call_atomic_ptr_2arg("glVertexAttribI2uiv", &self.glVertexAttribI2uiv_p, index, v);
35561            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35562            {
35563                self.automatic_glGetError("glVertexAttribI2uiv");
35564            }
35565            out
35566        }
35567        #[doc(hidden)]
35568        pub unsafe fn VertexAttribI2uiv_load_with_dyn(
35569            &self,
35570            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35571        ) -> bool {
35572            load_dyn_name_atomic_ptr(
35573                get_proc_address,
35574                b"glVertexAttribI2uiv\0",
35575                &self.glVertexAttribI2uiv_p,
35576            )
35577        }
35578        #[inline]
35579        #[doc(hidden)]
35580        pub fn VertexAttribI2uiv_is_loaded(&self) -> bool {
35581            !self.glVertexAttribI2uiv_p.load(RELAX).is_null()
35582        }
35583        /// [glVertexAttribI3i](http://docs.gl/gl4/glVertexAttribI)(index, x, y, z)
35584        /// * vector equivalent: [`glVertexAttribI3iv`]
35585        #[cfg_attr(feature = "inline", inline)]
35586        #[cfg_attr(feature = "inline_always", inline(always))]
35587        pub unsafe fn VertexAttribI3i(&self, index: GLuint, x: GLint, y: GLint, z: GLint) {
35588            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35589            {
35590                trace!(
35591                    "calling gl.VertexAttribI3i({:?}, {:?}, {:?}, {:?});",
35592                    index,
35593                    x,
35594                    y,
35595                    z
35596                );
35597            }
35598            let out = call_atomic_ptr_4arg(
35599                "glVertexAttribI3i",
35600                &self.glVertexAttribI3i_p,
35601                index,
35602                x,
35603                y,
35604                z,
35605            );
35606            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35607            {
35608                self.automatic_glGetError("glVertexAttribI3i");
35609            }
35610            out
35611        }
35612        #[doc(hidden)]
35613        pub unsafe fn VertexAttribI3i_load_with_dyn(
35614            &self,
35615            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35616        ) -> bool {
35617            load_dyn_name_atomic_ptr(
35618                get_proc_address,
35619                b"glVertexAttribI3i\0",
35620                &self.glVertexAttribI3i_p,
35621            )
35622        }
35623        #[inline]
35624        #[doc(hidden)]
35625        pub fn VertexAttribI3i_is_loaded(&self) -> bool {
35626            !self.glVertexAttribI3i_p.load(RELAX).is_null()
35627        }
35628        /// [glVertexAttribI3iv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35629        /// * `v` len: 3
35630        #[cfg_attr(feature = "inline", inline)]
35631        #[cfg_attr(feature = "inline_always", inline(always))]
35632        pub unsafe fn VertexAttribI3iv(&self, index: GLuint, v: *const GLint) {
35633            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35634            {
35635                trace!("calling gl.VertexAttribI3iv({:?}, {:p});", index, v);
35636            }
35637            let out =
35638                call_atomic_ptr_2arg("glVertexAttribI3iv", &self.glVertexAttribI3iv_p, index, v);
35639            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35640            {
35641                self.automatic_glGetError("glVertexAttribI3iv");
35642            }
35643            out
35644        }
35645        #[doc(hidden)]
35646        pub unsafe fn VertexAttribI3iv_load_with_dyn(
35647            &self,
35648            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35649        ) -> bool {
35650            load_dyn_name_atomic_ptr(
35651                get_proc_address,
35652                b"glVertexAttribI3iv\0",
35653                &self.glVertexAttribI3iv_p,
35654            )
35655        }
35656        #[inline]
35657        #[doc(hidden)]
35658        pub fn VertexAttribI3iv_is_loaded(&self) -> bool {
35659            !self.glVertexAttribI3iv_p.load(RELAX).is_null()
35660        }
35661        /// [glVertexAttribI3ui](http://docs.gl/gl4/glVertexAttribI)(index, x, y, z)
35662        /// * vector equivalent: [`glVertexAttribI3uiv`]
35663        #[cfg_attr(feature = "inline", inline)]
35664        #[cfg_attr(feature = "inline_always", inline(always))]
35665        pub unsafe fn VertexAttribI3ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint) {
35666            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35667            {
35668                trace!(
35669                    "calling gl.VertexAttribI3ui({:?}, {:?}, {:?}, {:?});",
35670                    index,
35671                    x,
35672                    y,
35673                    z
35674                );
35675            }
35676            let out = call_atomic_ptr_4arg(
35677                "glVertexAttribI3ui",
35678                &self.glVertexAttribI3ui_p,
35679                index,
35680                x,
35681                y,
35682                z,
35683            );
35684            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35685            {
35686                self.automatic_glGetError("glVertexAttribI3ui");
35687            }
35688            out
35689        }
35690        #[doc(hidden)]
35691        pub unsafe fn VertexAttribI3ui_load_with_dyn(
35692            &self,
35693            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35694        ) -> bool {
35695            load_dyn_name_atomic_ptr(
35696                get_proc_address,
35697                b"glVertexAttribI3ui\0",
35698                &self.glVertexAttribI3ui_p,
35699            )
35700        }
35701        #[inline]
35702        #[doc(hidden)]
35703        pub fn VertexAttribI3ui_is_loaded(&self) -> bool {
35704            !self.glVertexAttribI3ui_p.load(RELAX).is_null()
35705        }
35706        /// [glVertexAttribI3uiv](http://docs.gl/gl4/glVertexAttribI)(index, v)
35707        /// * `v` len: 3
35708        #[cfg_attr(feature = "inline", inline)]
35709        #[cfg_attr(feature = "inline_always", inline(always))]
35710        pub unsafe fn VertexAttribI3uiv(&self, index: GLuint, v: *const GLuint) {
35711            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35712            {
35713                trace!("calling gl.VertexAttribI3uiv({:?}, {:p});", index, v);
35714            }
35715            let out =
35716                call_atomic_ptr_2arg("glVertexAttribI3uiv", &self.glVertexAttribI3uiv_p, index, v);
35717            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35718            {
35719                self.automatic_glGetError("glVertexAttribI3uiv");
35720            }
35721            out
35722        }
35723        #[doc(hidden)]
35724        pub unsafe fn VertexAttribI3uiv_load_with_dyn(
35725            &self,
35726            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35727        ) -> bool {
35728            load_dyn_name_atomic_ptr(
35729                get_proc_address,
35730                b"glVertexAttribI3uiv\0",
35731                &self.glVertexAttribI3uiv_p,
35732            )
35733        }
35734        #[inline]
35735        #[doc(hidden)]
35736        pub fn VertexAttribI3uiv_is_loaded(&self) -> bool {
35737            !self.glVertexAttribI3uiv_p.load(RELAX).is_null()
35738        }
35739        /// [glVertexAttribI4bv](http://docs.gl/gl4/glVertexAttribI4bv)(index, v)
35740        /// * `v` len: 4
35741        #[cfg_attr(feature = "inline", inline)]
35742        #[cfg_attr(feature = "inline_always", inline(always))]
35743        pub unsafe fn VertexAttribI4bv(&self, index: GLuint, v: *const GLbyte) {
35744            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35745            {
35746                trace!("calling gl.VertexAttribI4bv({:?}, {:p});", index, v);
35747            }
35748            let out =
35749                call_atomic_ptr_2arg("glVertexAttribI4bv", &self.glVertexAttribI4bv_p, index, v);
35750            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35751            {
35752                self.automatic_glGetError("glVertexAttribI4bv");
35753            }
35754            out
35755        }
35756        #[doc(hidden)]
35757        pub unsafe fn VertexAttribI4bv_load_with_dyn(
35758            &self,
35759            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35760        ) -> bool {
35761            load_dyn_name_atomic_ptr(
35762                get_proc_address,
35763                b"glVertexAttribI4bv\0",
35764                &self.glVertexAttribI4bv_p,
35765            )
35766        }
35767        #[inline]
35768        #[doc(hidden)]
35769        pub fn VertexAttribI4bv_is_loaded(&self) -> bool {
35770            !self.glVertexAttribI4bv_p.load(RELAX).is_null()
35771        }
35772        /// [glVertexAttribI4i](http://docs.gl/gl4/glVertexAttribI)(index, x, y, z, w)
35773        /// * vector equivalent: [`glVertexAttribI4iv`]
35774        #[cfg_attr(feature = "inline", inline)]
35775        #[cfg_attr(feature = "inline_always", inline(always))]
35776        pub unsafe fn VertexAttribI4i(
35777            &self,
35778            index: GLuint,
35779            x: GLint,
35780            y: GLint,
35781            z: GLint,
35782            w: GLint,
35783        ) {
35784            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35785            {
35786                trace!(
35787                    "calling gl.VertexAttribI4i({:?}, {:?}, {:?}, {:?}, {:?});",
35788                    index,
35789                    x,
35790                    y,
35791                    z,
35792                    w
35793                );
35794            }
35795            let out = call_atomic_ptr_5arg(
35796                "glVertexAttribI4i",
35797                &self.glVertexAttribI4i_p,
35798                index,
35799                x,
35800                y,
35801                z,
35802                w,
35803            );
35804            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35805            {
35806                self.automatic_glGetError("glVertexAttribI4i");
35807            }
35808            out
35809        }
35810        #[doc(hidden)]
35811        pub unsafe fn VertexAttribI4i_load_with_dyn(
35812            &self,
35813            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35814        ) -> bool {
35815            load_dyn_name_atomic_ptr(
35816                get_proc_address,
35817                b"glVertexAttribI4i\0",
35818                &self.glVertexAttribI4i_p,
35819            )
35820        }
35821        #[inline]
35822        #[doc(hidden)]
35823        pub fn VertexAttribI4i_is_loaded(&self) -> bool {
35824            !self.glVertexAttribI4i_p.load(RELAX).is_null()
35825        }
35826        /// [glVertexAttribI4iv](http://docs.gl/gl4/glVertexAttrib)(index, v)
35827        /// * `v` len: 4
35828        #[cfg_attr(feature = "inline", inline)]
35829        #[cfg_attr(feature = "inline_always", inline(always))]
35830        pub unsafe fn VertexAttribI4iv(&self, index: GLuint, v: *const GLint) {
35831            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35832            {
35833                trace!("calling gl.VertexAttribI4iv({:?}, {:p});", index, v);
35834            }
35835            let out =
35836                call_atomic_ptr_2arg("glVertexAttribI4iv", &self.glVertexAttribI4iv_p, index, v);
35837            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35838            {
35839                self.automatic_glGetError("glVertexAttribI4iv");
35840            }
35841            out
35842        }
35843        #[doc(hidden)]
35844        pub unsafe fn VertexAttribI4iv_load_with_dyn(
35845            &self,
35846            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35847        ) -> bool {
35848            load_dyn_name_atomic_ptr(
35849                get_proc_address,
35850                b"glVertexAttribI4iv\0",
35851                &self.glVertexAttribI4iv_p,
35852            )
35853        }
35854        #[inline]
35855        #[doc(hidden)]
35856        pub fn VertexAttribI4iv_is_loaded(&self) -> bool {
35857            !self.glVertexAttribI4iv_p.load(RELAX).is_null()
35858        }
35859        /// [glVertexAttribI4sv](http://docs.gl/gl4/glVertexAttribI4sv)(index, v)
35860        /// * `v` len: 4
35861        #[cfg_attr(feature = "inline", inline)]
35862        #[cfg_attr(feature = "inline_always", inline(always))]
35863        pub unsafe fn VertexAttribI4sv(&self, index: GLuint, v: *const GLshort) {
35864            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35865            {
35866                trace!("calling gl.VertexAttribI4sv({:?}, {:p});", index, v);
35867            }
35868            let out =
35869                call_atomic_ptr_2arg("glVertexAttribI4sv", &self.glVertexAttribI4sv_p, index, v);
35870            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35871            {
35872                self.automatic_glGetError("glVertexAttribI4sv");
35873            }
35874            out
35875        }
35876        #[doc(hidden)]
35877        pub unsafe fn VertexAttribI4sv_load_with_dyn(
35878            &self,
35879            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35880        ) -> bool {
35881            load_dyn_name_atomic_ptr(
35882                get_proc_address,
35883                b"glVertexAttribI4sv\0",
35884                &self.glVertexAttribI4sv_p,
35885            )
35886        }
35887        #[inline]
35888        #[doc(hidden)]
35889        pub fn VertexAttribI4sv_is_loaded(&self) -> bool {
35890            !self.glVertexAttribI4sv_p.load(RELAX).is_null()
35891        }
35892        /// [glVertexAttribI4ubv](http://docs.gl/gl4/glVertexAttribI4ubv)(index, v)
35893        /// * `v` len: 4
35894        #[cfg_attr(feature = "inline", inline)]
35895        #[cfg_attr(feature = "inline_always", inline(always))]
35896        pub unsafe fn VertexAttribI4ubv(&self, index: GLuint, v: *const GLubyte) {
35897            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35898            {
35899                trace!("calling gl.VertexAttribI4ubv({:?}, {:p});", index, v);
35900            }
35901            let out =
35902                call_atomic_ptr_2arg("glVertexAttribI4ubv", &self.glVertexAttribI4ubv_p, index, v);
35903            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35904            {
35905                self.automatic_glGetError("glVertexAttribI4ubv");
35906            }
35907            out
35908        }
35909        #[doc(hidden)]
35910        pub unsafe fn VertexAttribI4ubv_load_with_dyn(
35911            &self,
35912            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35913        ) -> bool {
35914            load_dyn_name_atomic_ptr(
35915                get_proc_address,
35916                b"glVertexAttribI4ubv\0",
35917                &self.glVertexAttribI4ubv_p,
35918            )
35919        }
35920        #[inline]
35921        #[doc(hidden)]
35922        pub fn VertexAttribI4ubv_is_loaded(&self) -> bool {
35923            !self.glVertexAttribI4ubv_p.load(RELAX).is_null()
35924        }
35925        /// [glVertexAttribI4ui](http://docs.gl/gl4/glVertexAttrib)(index, x, y, z, w)
35926        /// * vector equivalent: [`glVertexAttribI4uiv`]
35927        #[cfg_attr(feature = "inline", inline)]
35928        #[cfg_attr(feature = "inline_always", inline(always))]
35929        pub unsafe fn VertexAttribI4ui(
35930            &self,
35931            index: GLuint,
35932            x: GLuint,
35933            y: GLuint,
35934            z: GLuint,
35935            w: GLuint,
35936        ) {
35937            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35938            {
35939                trace!(
35940                    "calling gl.VertexAttribI4ui({:?}, {:?}, {:?}, {:?}, {:?});",
35941                    index,
35942                    x,
35943                    y,
35944                    z,
35945                    w
35946                );
35947            }
35948            let out = call_atomic_ptr_5arg(
35949                "glVertexAttribI4ui",
35950                &self.glVertexAttribI4ui_p,
35951                index,
35952                x,
35953                y,
35954                z,
35955                w,
35956            );
35957            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35958            {
35959                self.automatic_glGetError("glVertexAttribI4ui");
35960            }
35961            out
35962        }
35963        #[doc(hidden)]
35964        pub unsafe fn VertexAttribI4ui_load_with_dyn(
35965            &self,
35966            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
35967        ) -> bool {
35968            load_dyn_name_atomic_ptr(
35969                get_proc_address,
35970                b"glVertexAttribI4ui\0",
35971                &self.glVertexAttribI4ui_p,
35972            )
35973        }
35974        #[inline]
35975        #[doc(hidden)]
35976        pub fn VertexAttribI4ui_is_loaded(&self) -> bool {
35977            !self.glVertexAttribI4ui_p.load(RELAX).is_null()
35978        }
35979        /// [glVertexAttribI4uiv](http://docs.gl/gl4/glVertexAttrib)(index, v)
35980        /// * `v` len: 4
35981        #[cfg_attr(feature = "inline", inline)]
35982        #[cfg_attr(feature = "inline_always", inline(always))]
35983        pub unsafe fn VertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) {
35984            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
35985            {
35986                trace!("calling gl.VertexAttribI4uiv({:?}, {:p});", index, v);
35987            }
35988            let out =
35989                call_atomic_ptr_2arg("glVertexAttribI4uiv", &self.glVertexAttribI4uiv_p, index, v);
35990            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
35991            {
35992                self.automatic_glGetError("glVertexAttribI4uiv");
35993            }
35994            out
35995        }
35996        #[doc(hidden)]
35997        pub unsafe fn VertexAttribI4uiv_load_with_dyn(
35998            &self,
35999            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36000        ) -> bool {
36001            load_dyn_name_atomic_ptr(
36002                get_proc_address,
36003                b"glVertexAttribI4uiv\0",
36004                &self.glVertexAttribI4uiv_p,
36005            )
36006        }
36007        #[inline]
36008        #[doc(hidden)]
36009        pub fn VertexAttribI4uiv_is_loaded(&self) -> bool {
36010            !self.glVertexAttribI4uiv_p.load(RELAX).is_null()
36011        }
36012        /// [glVertexAttribI4usv](http://docs.gl/gl4/glVertexAttribI4usv)(index, v)
36013        /// * `v` len: 4
36014        #[cfg_attr(feature = "inline", inline)]
36015        #[cfg_attr(feature = "inline_always", inline(always))]
36016        pub unsafe fn VertexAttribI4usv(&self, index: GLuint, v: *const GLushort) {
36017            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36018            {
36019                trace!("calling gl.VertexAttribI4usv({:?}, {:p});", index, v);
36020            }
36021            let out =
36022                call_atomic_ptr_2arg("glVertexAttribI4usv", &self.glVertexAttribI4usv_p, index, v);
36023            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36024            {
36025                self.automatic_glGetError("glVertexAttribI4usv");
36026            }
36027            out
36028        }
36029        #[doc(hidden)]
36030        pub unsafe fn VertexAttribI4usv_load_with_dyn(
36031            &self,
36032            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36033        ) -> bool {
36034            load_dyn_name_atomic_ptr(
36035                get_proc_address,
36036                b"glVertexAttribI4usv\0",
36037                &self.glVertexAttribI4usv_p,
36038            )
36039        }
36040        #[inline]
36041        #[doc(hidden)]
36042        pub fn VertexAttribI4usv_is_loaded(&self) -> bool {
36043            !self.glVertexAttribI4usv_p.load(RELAX).is_null()
36044        }
36045        /// [glVertexAttribIFormat](http://docs.gl/gl4/glVertexAttribIFormat)(attribindex, size, type_, relativeoffset)
36046        /// * `type_` group: VertexAttribIType
36047        #[cfg_attr(feature = "inline", inline)]
36048        #[cfg_attr(feature = "inline_always", inline(always))]
36049        pub unsafe fn VertexAttribIFormat(
36050            &self,
36051            attribindex: GLuint,
36052            size: GLint,
36053            type_: GLenum,
36054            relativeoffset: GLuint,
36055        ) {
36056            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36057            {
36058                trace!(
36059                    "calling gl.VertexAttribIFormat({:?}, {:?}, {:#X}, {:?});",
36060                    attribindex,
36061                    size,
36062                    type_,
36063                    relativeoffset
36064                );
36065            }
36066            let out = call_atomic_ptr_4arg(
36067                "glVertexAttribIFormat",
36068                &self.glVertexAttribIFormat_p,
36069                attribindex,
36070                size,
36071                type_,
36072                relativeoffset,
36073            );
36074            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36075            {
36076                self.automatic_glGetError("glVertexAttribIFormat");
36077            }
36078            out
36079        }
36080        #[doc(hidden)]
36081        pub unsafe fn VertexAttribIFormat_load_with_dyn(
36082            &self,
36083            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36084        ) -> bool {
36085            load_dyn_name_atomic_ptr(
36086                get_proc_address,
36087                b"glVertexAttribIFormat\0",
36088                &self.glVertexAttribIFormat_p,
36089            )
36090        }
36091        #[inline]
36092        #[doc(hidden)]
36093        pub fn VertexAttribIFormat_is_loaded(&self) -> bool {
36094            !self.glVertexAttribIFormat_p.load(RELAX).is_null()
36095        }
36096        /// [glVertexAttribIPointer](http://docs.gl/gl4/glVertexAttribPointer)(index, size, type_, stride, pointer)
36097        /// * `type_` group: VertexAttribIType
36098        /// * `pointer` len: COMPSIZE(size,type,stride)
36099        #[cfg_attr(feature = "inline", inline)]
36100        #[cfg_attr(feature = "inline_always", inline(always))]
36101        pub unsafe fn VertexAttribIPointer(
36102            &self,
36103            index: GLuint,
36104            size: GLint,
36105            type_: GLenum,
36106            stride: GLsizei,
36107            pointer: *const c_void,
36108        ) {
36109            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36110            {
36111                trace!(
36112                    "calling gl.VertexAttribIPointer({:?}, {:?}, {:#X}, {:?}, {:p});",
36113                    index,
36114                    size,
36115                    type_,
36116                    stride,
36117                    pointer
36118                );
36119            }
36120            let out = call_atomic_ptr_5arg(
36121                "glVertexAttribIPointer",
36122                &self.glVertexAttribIPointer_p,
36123                index,
36124                size,
36125                type_,
36126                stride,
36127                pointer,
36128            );
36129            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36130            {
36131                self.automatic_glGetError("glVertexAttribIPointer");
36132            }
36133            out
36134        }
36135        #[doc(hidden)]
36136        pub unsafe fn VertexAttribIPointer_load_with_dyn(
36137            &self,
36138            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36139        ) -> bool {
36140            load_dyn_name_atomic_ptr(
36141                get_proc_address,
36142                b"glVertexAttribIPointer\0",
36143                &self.glVertexAttribIPointer_p,
36144            )
36145        }
36146        #[inline]
36147        #[doc(hidden)]
36148        pub fn VertexAttribIPointer_is_loaded(&self) -> bool {
36149            !self.glVertexAttribIPointer_p.load(RELAX).is_null()
36150        }
36151        /// [glVertexAttribL1d](http://docs.gl/gl4/glVertexAttribL1d)(index, x)
36152        #[cfg_attr(feature = "inline", inline)]
36153        #[cfg_attr(feature = "inline_always", inline(always))]
36154        pub unsafe fn VertexAttribL1d(&self, index: GLuint, x: GLdouble) {
36155            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36156            {
36157                trace!("calling gl.VertexAttribL1d({:?}, {:?});", index, x);
36158            }
36159            let out =
36160                call_atomic_ptr_2arg("glVertexAttribL1d", &self.glVertexAttribL1d_p, index, x);
36161            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36162            {
36163                self.automatic_glGetError("glVertexAttribL1d");
36164            }
36165            out
36166        }
36167        #[doc(hidden)]
36168        pub unsafe fn VertexAttribL1d_load_with_dyn(
36169            &self,
36170            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36171        ) -> bool {
36172            load_dyn_name_atomic_ptr(
36173                get_proc_address,
36174                b"glVertexAttribL1d\0",
36175                &self.glVertexAttribL1d_p,
36176            )
36177        }
36178        #[inline]
36179        #[doc(hidden)]
36180        pub fn VertexAttribL1d_is_loaded(&self) -> bool {
36181            !self.glVertexAttribL1d_p.load(RELAX).is_null()
36182        }
36183        /// [glVertexAttribL1dv](http://docs.gl/gl4/glVertexAttribL1dv)(index, v)
36184        /// * `v` len: 1
36185        #[cfg_attr(feature = "inline", inline)]
36186        #[cfg_attr(feature = "inline_always", inline(always))]
36187        pub unsafe fn VertexAttribL1dv(&self, index: GLuint, v: *const GLdouble) {
36188            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36189            {
36190                trace!("calling gl.VertexAttribL1dv({:?}, {:p});", index, v);
36191            }
36192            let out =
36193                call_atomic_ptr_2arg("glVertexAttribL1dv", &self.glVertexAttribL1dv_p, index, v);
36194            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36195            {
36196                self.automatic_glGetError("glVertexAttribL1dv");
36197            }
36198            out
36199        }
36200        #[doc(hidden)]
36201        pub unsafe fn VertexAttribL1dv_load_with_dyn(
36202            &self,
36203            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36204        ) -> bool {
36205            load_dyn_name_atomic_ptr(
36206                get_proc_address,
36207                b"glVertexAttribL1dv\0",
36208                &self.glVertexAttribL1dv_p,
36209            )
36210        }
36211        #[inline]
36212        #[doc(hidden)]
36213        pub fn VertexAttribL1dv_is_loaded(&self) -> bool {
36214            !self.glVertexAttribL1dv_p.load(RELAX).is_null()
36215        }
36216        /// [glVertexAttribL2d](http://docs.gl/gl4/glVertexAttribL2d)(index, x, y)
36217        #[cfg_attr(feature = "inline", inline)]
36218        #[cfg_attr(feature = "inline_always", inline(always))]
36219        pub unsafe fn VertexAttribL2d(&self, index: GLuint, x: GLdouble, y: GLdouble) {
36220            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36221            {
36222                trace!("calling gl.VertexAttribL2d({:?}, {:?}, {:?});", index, x, y);
36223            }
36224            let out =
36225                call_atomic_ptr_3arg("glVertexAttribL2d", &self.glVertexAttribL2d_p, index, x, y);
36226            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36227            {
36228                self.automatic_glGetError("glVertexAttribL2d");
36229            }
36230            out
36231        }
36232        #[doc(hidden)]
36233        pub unsafe fn VertexAttribL2d_load_with_dyn(
36234            &self,
36235            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36236        ) -> bool {
36237            load_dyn_name_atomic_ptr(
36238                get_proc_address,
36239                b"glVertexAttribL2d\0",
36240                &self.glVertexAttribL2d_p,
36241            )
36242        }
36243        #[inline]
36244        #[doc(hidden)]
36245        pub fn VertexAttribL2d_is_loaded(&self) -> bool {
36246            !self.glVertexAttribL2d_p.load(RELAX).is_null()
36247        }
36248        /// [glVertexAttribL2dv](http://docs.gl/gl4/glVertexAttribL2dv)(index, v)
36249        /// * `v` len: 2
36250        #[cfg_attr(feature = "inline", inline)]
36251        #[cfg_attr(feature = "inline_always", inline(always))]
36252        pub unsafe fn VertexAttribL2dv(&self, index: GLuint, v: *const GLdouble) {
36253            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36254            {
36255                trace!("calling gl.VertexAttribL2dv({:?}, {:p});", index, v);
36256            }
36257            let out =
36258                call_atomic_ptr_2arg("glVertexAttribL2dv", &self.glVertexAttribL2dv_p, index, v);
36259            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36260            {
36261                self.automatic_glGetError("glVertexAttribL2dv");
36262            }
36263            out
36264        }
36265        #[doc(hidden)]
36266        pub unsafe fn VertexAttribL2dv_load_with_dyn(
36267            &self,
36268            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36269        ) -> bool {
36270            load_dyn_name_atomic_ptr(
36271                get_proc_address,
36272                b"glVertexAttribL2dv\0",
36273                &self.glVertexAttribL2dv_p,
36274            )
36275        }
36276        #[inline]
36277        #[doc(hidden)]
36278        pub fn VertexAttribL2dv_is_loaded(&self) -> bool {
36279            !self.glVertexAttribL2dv_p.load(RELAX).is_null()
36280        }
36281        /// [glVertexAttribL3d](http://docs.gl/gl4/glVertexAttribL3d)(index, x, y, z)
36282        #[cfg_attr(feature = "inline", inline)]
36283        #[cfg_attr(feature = "inline_always", inline(always))]
36284        pub unsafe fn VertexAttribL3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) {
36285            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36286            {
36287                trace!(
36288                    "calling gl.VertexAttribL3d({:?}, {:?}, {:?}, {:?});",
36289                    index,
36290                    x,
36291                    y,
36292                    z
36293                );
36294            }
36295            let out = call_atomic_ptr_4arg(
36296                "glVertexAttribL3d",
36297                &self.glVertexAttribL3d_p,
36298                index,
36299                x,
36300                y,
36301                z,
36302            );
36303            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36304            {
36305                self.automatic_glGetError("glVertexAttribL3d");
36306            }
36307            out
36308        }
36309        #[doc(hidden)]
36310        pub unsafe fn VertexAttribL3d_load_with_dyn(
36311            &self,
36312            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36313        ) -> bool {
36314            load_dyn_name_atomic_ptr(
36315                get_proc_address,
36316                b"glVertexAttribL3d\0",
36317                &self.glVertexAttribL3d_p,
36318            )
36319        }
36320        #[inline]
36321        #[doc(hidden)]
36322        pub fn VertexAttribL3d_is_loaded(&self) -> bool {
36323            !self.glVertexAttribL3d_p.load(RELAX).is_null()
36324        }
36325        /// [glVertexAttribL3dv](http://docs.gl/gl4/glVertexAttribL3dv)(index, v)
36326        /// * `v` len: 3
36327        #[cfg_attr(feature = "inline", inline)]
36328        #[cfg_attr(feature = "inline_always", inline(always))]
36329        pub unsafe fn VertexAttribL3dv(&self, index: GLuint, v: *const GLdouble) {
36330            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36331            {
36332                trace!("calling gl.VertexAttribL3dv({:?}, {:p});", index, v);
36333            }
36334            let out =
36335                call_atomic_ptr_2arg("glVertexAttribL3dv", &self.glVertexAttribL3dv_p, index, v);
36336            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36337            {
36338                self.automatic_glGetError("glVertexAttribL3dv");
36339            }
36340            out
36341        }
36342        #[doc(hidden)]
36343        pub unsafe fn VertexAttribL3dv_load_with_dyn(
36344            &self,
36345            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36346        ) -> bool {
36347            load_dyn_name_atomic_ptr(
36348                get_proc_address,
36349                b"glVertexAttribL3dv\0",
36350                &self.glVertexAttribL3dv_p,
36351            )
36352        }
36353        #[inline]
36354        #[doc(hidden)]
36355        pub fn VertexAttribL3dv_is_loaded(&self) -> bool {
36356            !self.glVertexAttribL3dv_p.load(RELAX).is_null()
36357        }
36358        /// [glVertexAttribL4d](http://docs.gl/gl4/glVertexAttribL4d)(index, x, y, z, w)
36359        #[cfg_attr(feature = "inline", inline)]
36360        #[cfg_attr(feature = "inline_always", inline(always))]
36361        pub unsafe fn VertexAttribL4d(
36362            &self,
36363            index: GLuint,
36364            x: GLdouble,
36365            y: GLdouble,
36366            z: GLdouble,
36367            w: GLdouble,
36368        ) {
36369            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36370            {
36371                trace!(
36372                    "calling gl.VertexAttribL4d({:?}, {:?}, {:?}, {:?}, {:?});",
36373                    index,
36374                    x,
36375                    y,
36376                    z,
36377                    w
36378                );
36379            }
36380            let out = call_atomic_ptr_5arg(
36381                "glVertexAttribL4d",
36382                &self.glVertexAttribL4d_p,
36383                index,
36384                x,
36385                y,
36386                z,
36387                w,
36388            );
36389            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36390            {
36391                self.automatic_glGetError("glVertexAttribL4d");
36392            }
36393            out
36394        }
36395        #[doc(hidden)]
36396        pub unsafe fn VertexAttribL4d_load_with_dyn(
36397            &self,
36398            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36399        ) -> bool {
36400            load_dyn_name_atomic_ptr(
36401                get_proc_address,
36402                b"glVertexAttribL4d\0",
36403                &self.glVertexAttribL4d_p,
36404            )
36405        }
36406        #[inline]
36407        #[doc(hidden)]
36408        pub fn VertexAttribL4d_is_loaded(&self) -> bool {
36409            !self.glVertexAttribL4d_p.load(RELAX).is_null()
36410        }
36411        /// [glVertexAttribL4dv](http://docs.gl/gl4/glVertexAttribL4dv)(index, v)
36412        /// * `v` len: 4
36413        #[cfg_attr(feature = "inline", inline)]
36414        #[cfg_attr(feature = "inline_always", inline(always))]
36415        pub unsafe fn VertexAttribL4dv(&self, index: GLuint, v: *const GLdouble) {
36416            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36417            {
36418                trace!("calling gl.VertexAttribL4dv({:?}, {:p});", index, v);
36419            }
36420            let out =
36421                call_atomic_ptr_2arg("glVertexAttribL4dv", &self.glVertexAttribL4dv_p, index, v);
36422            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36423            {
36424                self.automatic_glGetError("glVertexAttribL4dv");
36425            }
36426            out
36427        }
36428        #[doc(hidden)]
36429        pub unsafe fn VertexAttribL4dv_load_with_dyn(
36430            &self,
36431            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36432        ) -> bool {
36433            load_dyn_name_atomic_ptr(
36434                get_proc_address,
36435                b"glVertexAttribL4dv\0",
36436                &self.glVertexAttribL4dv_p,
36437            )
36438        }
36439        #[inline]
36440        #[doc(hidden)]
36441        pub fn VertexAttribL4dv_is_loaded(&self) -> bool {
36442            !self.glVertexAttribL4dv_p.load(RELAX).is_null()
36443        }
36444        /// [glVertexAttribLFormat](http://docs.gl/gl4/glVertexAttribLFormat)(attribindex, size, type_, relativeoffset)
36445        /// * `type_` group: VertexAttribLType
36446        #[cfg_attr(feature = "inline", inline)]
36447        #[cfg_attr(feature = "inline_always", inline(always))]
36448        pub unsafe fn VertexAttribLFormat(
36449            &self,
36450            attribindex: GLuint,
36451            size: GLint,
36452            type_: GLenum,
36453            relativeoffset: GLuint,
36454        ) {
36455            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36456            {
36457                trace!(
36458                    "calling gl.VertexAttribLFormat({:?}, {:?}, {:#X}, {:?});",
36459                    attribindex,
36460                    size,
36461                    type_,
36462                    relativeoffset
36463                );
36464            }
36465            let out = call_atomic_ptr_4arg(
36466                "glVertexAttribLFormat",
36467                &self.glVertexAttribLFormat_p,
36468                attribindex,
36469                size,
36470                type_,
36471                relativeoffset,
36472            );
36473            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36474            {
36475                self.automatic_glGetError("glVertexAttribLFormat");
36476            }
36477            out
36478        }
36479        #[doc(hidden)]
36480        pub unsafe fn VertexAttribLFormat_load_with_dyn(
36481            &self,
36482            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36483        ) -> bool {
36484            load_dyn_name_atomic_ptr(
36485                get_proc_address,
36486                b"glVertexAttribLFormat\0",
36487                &self.glVertexAttribLFormat_p,
36488            )
36489        }
36490        #[inline]
36491        #[doc(hidden)]
36492        pub fn VertexAttribLFormat_is_loaded(&self) -> bool {
36493            !self.glVertexAttribLFormat_p.load(RELAX).is_null()
36494        }
36495        /// [glVertexAttribLPointer](http://docs.gl/gl4/glVertexAttribLPointer)(index, size, type_, stride, pointer)
36496        /// * `type_` group: VertexAttribLType
36497        /// * `pointer` len: size
36498        #[cfg_attr(feature = "inline", inline)]
36499        #[cfg_attr(feature = "inline_always", inline(always))]
36500        pub unsafe fn VertexAttribLPointer(
36501            &self,
36502            index: GLuint,
36503            size: GLint,
36504            type_: GLenum,
36505            stride: GLsizei,
36506            pointer: *const c_void,
36507        ) {
36508            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36509            {
36510                trace!(
36511                    "calling gl.VertexAttribLPointer({:?}, {:?}, {:#X}, {:?}, {:p});",
36512                    index,
36513                    size,
36514                    type_,
36515                    stride,
36516                    pointer
36517                );
36518            }
36519            let out = call_atomic_ptr_5arg(
36520                "glVertexAttribLPointer",
36521                &self.glVertexAttribLPointer_p,
36522                index,
36523                size,
36524                type_,
36525                stride,
36526                pointer,
36527            );
36528            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36529            {
36530                self.automatic_glGetError("glVertexAttribLPointer");
36531            }
36532            out
36533        }
36534        #[doc(hidden)]
36535        pub unsafe fn VertexAttribLPointer_load_with_dyn(
36536            &self,
36537            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36538        ) -> bool {
36539            load_dyn_name_atomic_ptr(
36540                get_proc_address,
36541                b"glVertexAttribLPointer\0",
36542                &self.glVertexAttribLPointer_p,
36543            )
36544        }
36545        #[inline]
36546        #[doc(hidden)]
36547        pub fn VertexAttribLPointer_is_loaded(&self) -> bool {
36548            !self.glVertexAttribLPointer_p.load(RELAX).is_null()
36549        }
36550        /// [glVertexAttribP1ui](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36551        /// * `type_` group: VertexAttribPointerType
36552        #[cfg_attr(feature = "inline", inline)]
36553        #[cfg_attr(feature = "inline_always", inline(always))]
36554        pub unsafe fn VertexAttribP1ui(
36555            &self,
36556            index: GLuint,
36557            type_: GLenum,
36558            normalized: GLboolean,
36559            value: GLuint,
36560        ) {
36561            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36562            {
36563                trace!(
36564                    "calling gl.VertexAttribP1ui({:?}, {:#X}, {:?}, {:?});",
36565                    index,
36566                    type_,
36567                    normalized,
36568                    value
36569                );
36570            }
36571            let out = call_atomic_ptr_4arg(
36572                "glVertexAttribP1ui",
36573                &self.glVertexAttribP1ui_p,
36574                index,
36575                type_,
36576                normalized,
36577                value,
36578            );
36579            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36580            {
36581                self.automatic_glGetError("glVertexAttribP1ui");
36582            }
36583            out
36584        }
36585        #[doc(hidden)]
36586        pub unsafe fn VertexAttribP1ui_load_with_dyn(
36587            &self,
36588            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36589        ) -> bool {
36590            load_dyn_name_atomic_ptr(
36591                get_proc_address,
36592                b"glVertexAttribP1ui\0",
36593                &self.glVertexAttribP1ui_p,
36594            )
36595        }
36596        #[inline]
36597        #[doc(hidden)]
36598        pub fn VertexAttribP1ui_is_loaded(&self) -> bool {
36599            !self.glVertexAttribP1ui_p.load(RELAX).is_null()
36600        }
36601        /// [glVertexAttribP1uiv](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36602        /// * `type_` group: VertexAttribPointerType
36603        /// * `value` len: 1
36604        #[cfg_attr(feature = "inline", inline)]
36605        #[cfg_attr(feature = "inline_always", inline(always))]
36606        pub unsafe fn VertexAttribP1uiv(
36607            &self,
36608            index: GLuint,
36609            type_: GLenum,
36610            normalized: GLboolean,
36611            value: *const GLuint,
36612        ) {
36613            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36614            {
36615                trace!(
36616                    "calling gl.VertexAttribP1uiv({:?}, {:#X}, {:?}, {:p});",
36617                    index,
36618                    type_,
36619                    normalized,
36620                    value
36621                );
36622            }
36623            let out = call_atomic_ptr_4arg(
36624                "glVertexAttribP1uiv",
36625                &self.glVertexAttribP1uiv_p,
36626                index,
36627                type_,
36628                normalized,
36629                value,
36630            );
36631            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36632            {
36633                self.automatic_glGetError("glVertexAttribP1uiv");
36634            }
36635            out
36636        }
36637        #[doc(hidden)]
36638        pub unsafe fn VertexAttribP1uiv_load_with_dyn(
36639            &self,
36640            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36641        ) -> bool {
36642            load_dyn_name_atomic_ptr(
36643                get_proc_address,
36644                b"glVertexAttribP1uiv\0",
36645                &self.glVertexAttribP1uiv_p,
36646            )
36647        }
36648        #[inline]
36649        #[doc(hidden)]
36650        pub fn VertexAttribP1uiv_is_loaded(&self) -> bool {
36651            !self.glVertexAttribP1uiv_p.load(RELAX).is_null()
36652        }
36653        /// [glVertexAttribP2ui](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36654        /// * `type_` group: VertexAttribPointerType
36655        #[cfg_attr(feature = "inline", inline)]
36656        #[cfg_attr(feature = "inline_always", inline(always))]
36657        pub unsafe fn VertexAttribP2ui(
36658            &self,
36659            index: GLuint,
36660            type_: GLenum,
36661            normalized: GLboolean,
36662            value: GLuint,
36663        ) {
36664            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36665            {
36666                trace!(
36667                    "calling gl.VertexAttribP2ui({:?}, {:#X}, {:?}, {:?});",
36668                    index,
36669                    type_,
36670                    normalized,
36671                    value
36672                );
36673            }
36674            let out = call_atomic_ptr_4arg(
36675                "glVertexAttribP2ui",
36676                &self.glVertexAttribP2ui_p,
36677                index,
36678                type_,
36679                normalized,
36680                value,
36681            );
36682            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36683            {
36684                self.automatic_glGetError("glVertexAttribP2ui");
36685            }
36686            out
36687        }
36688        #[doc(hidden)]
36689        pub unsafe fn VertexAttribP2ui_load_with_dyn(
36690            &self,
36691            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36692        ) -> bool {
36693            load_dyn_name_atomic_ptr(
36694                get_proc_address,
36695                b"glVertexAttribP2ui\0",
36696                &self.glVertexAttribP2ui_p,
36697            )
36698        }
36699        #[inline]
36700        #[doc(hidden)]
36701        pub fn VertexAttribP2ui_is_loaded(&self) -> bool {
36702            !self.glVertexAttribP2ui_p.load(RELAX).is_null()
36703        }
36704        /// [glVertexAttribP2uiv](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36705        /// * `type_` group: VertexAttribPointerType
36706        /// * `value` len: 1
36707        #[cfg_attr(feature = "inline", inline)]
36708        #[cfg_attr(feature = "inline_always", inline(always))]
36709        pub unsafe fn VertexAttribP2uiv(
36710            &self,
36711            index: GLuint,
36712            type_: GLenum,
36713            normalized: GLboolean,
36714            value: *const GLuint,
36715        ) {
36716            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36717            {
36718                trace!(
36719                    "calling gl.VertexAttribP2uiv({:?}, {:#X}, {:?}, {:p});",
36720                    index,
36721                    type_,
36722                    normalized,
36723                    value
36724                );
36725            }
36726            let out = call_atomic_ptr_4arg(
36727                "glVertexAttribP2uiv",
36728                &self.glVertexAttribP2uiv_p,
36729                index,
36730                type_,
36731                normalized,
36732                value,
36733            );
36734            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36735            {
36736                self.automatic_glGetError("glVertexAttribP2uiv");
36737            }
36738            out
36739        }
36740        #[doc(hidden)]
36741        pub unsafe fn VertexAttribP2uiv_load_with_dyn(
36742            &self,
36743            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36744        ) -> bool {
36745            load_dyn_name_atomic_ptr(
36746                get_proc_address,
36747                b"glVertexAttribP2uiv\0",
36748                &self.glVertexAttribP2uiv_p,
36749            )
36750        }
36751        #[inline]
36752        #[doc(hidden)]
36753        pub fn VertexAttribP2uiv_is_loaded(&self) -> bool {
36754            !self.glVertexAttribP2uiv_p.load(RELAX).is_null()
36755        }
36756        /// [glVertexAttribP3ui](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36757        /// * `type_` group: VertexAttribPointerType
36758        #[cfg_attr(feature = "inline", inline)]
36759        #[cfg_attr(feature = "inline_always", inline(always))]
36760        pub unsafe fn VertexAttribP3ui(
36761            &self,
36762            index: GLuint,
36763            type_: GLenum,
36764            normalized: GLboolean,
36765            value: GLuint,
36766        ) {
36767            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36768            {
36769                trace!(
36770                    "calling gl.VertexAttribP3ui({:?}, {:#X}, {:?}, {:?});",
36771                    index,
36772                    type_,
36773                    normalized,
36774                    value
36775                );
36776            }
36777            let out = call_atomic_ptr_4arg(
36778                "glVertexAttribP3ui",
36779                &self.glVertexAttribP3ui_p,
36780                index,
36781                type_,
36782                normalized,
36783                value,
36784            );
36785            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36786            {
36787                self.automatic_glGetError("glVertexAttribP3ui");
36788            }
36789            out
36790        }
36791        #[doc(hidden)]
36792        pub unsafe fn VertexAttribP3ui_load_with_dyn(
36793            &self,
36794            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36795        ) -> bool {
36796            load_dyn_name_atomic_ptr(
36797                get_proc_address,
36798                b"glVertexAttribP3ui\0",
36799                &self.glVertexAttribP3ui_p,
36800            )
36801        }
36802        #[inline]
36803        #[doc(hidden)]
36804        pub fn VertexAttribP3ui_is_loaded(&self) -> bool {
36805            !self.glVertexAttribP3ui_p.load(RELAX).is_null()
36806        }
36807        /// [glVertexAttribP3uiv](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36808        /// * `type_` group: VertexAttribPointerType
36809        /// * `value` len: 1
36810        #[cfg_attr(feature = "inline", inline)]
36811        #[cfg_attr(feature = "inline_always", inline(always))]
36812        pub unsafe fn VertexAttribP3uiv(
36813            &self,
36814            index: GLuint,
36815            type_: GLenum,
36816            normalized: GLboolean,
36817            value: *const GLuint,
36818        ) {
36819            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36820            {
36821                trace!(
36822                    "calling gl.VertexAttribP3uiv({:?}, {:#X}, {:?}, {:p});",
36823                    index,
36824                    type_,
36825                    normalized,
36826                    value
36827                );
36828            }
36829            let out = call_atomic_ptr_4arg(
36830                "glVertexAttribP3uiv",
36831                &self.glVertexAttribP3uiv_p,
36832                index,
36833                type_,
36834                normalized,
36835                value,
36836            );
36837            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36838            {
36839                self.automatic_glGetError("glVertexAttribP3uiv");
36840            }
36841            out
36842        }
36843        #[doc(hidden)]
36844        pub unsafe fn VertexAttribP3uiv_load_with_dyn(
36845            &self,
36846            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36847        ) -> bool {
36848            load_dyn_name_atomic_ptr(
36849                get_proc_address,
36850                b"glVertexAttribP3uiv\0",
36851                &self.glVertexAttribP3uiv_p,
36852            )
36853        }
36854        #[inline]
36855        #[doc(hidden)]
36856        pub fn VertexAttribP3uiv_is_loaded(&self) -> bool {
36857            !self.glVertexAttribP3uiv_p.load(RELAX).is_null()
36858        }
36859        /// [glVertexAttribP4ui](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36860        /// * `type_` group: VertexAttribPointerType
36861        #[cfg_attr(feature = "inline", inline)]
36862        #[cfg_attr(feature = "inline_always", inline(always))]
36863        pub unsafe fn VertexAttribP4ui(
36864            &self,
36865            index: GLuint,
36866            type_: GLenum,
36867            normalized: GLboolean,
36868            value: GLuint,
36869        ) {
36870            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36871            {
36872                trace!(
36873                    "calling gl.VertexAttribP4ui({:?}, {:#X}, {:?}, {:?});",
36874                    index,
36875                    type_,
36876                    normalized,
36877                    value
36878                );
36879            }
36880            let out = call_atomic_ptr_4arg(
36881                "glVertexAttribP4ui",
36882                &self.glVertexAttribP4ui_p,
36883                index,
36884                type_,
36885                normalized,
36886                value,
36887            );
36888            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36889            {
36890                self.automatic_glGetError("glVertexAttribP4ui");
36891            }
36892            out
36893        }
36894        #[doc(hidden)]
36895        pub unsafe fn VertexAttribP4ui_load_with_dyn(
36896            &self,
36897            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36898        ) -> bool {
36899            load_dyn_name_atomic_ptr(
36900                get_proc_address,
36901                b"glVertexAttribP4ui\0",
36902                &self.glVertexAttribP4ui_p,
36903            )
36904        }
36905        #[inline]
36906        #[doc(hidden)]
36907        pub fn VertexAttribP4ui_is_loaded(&self) -> bool {
36908            !self.glVertexAttribP4ui_p.load(RELAX).is_null()
36909        }
36910        /// [glVertexAttribP4uiv](http://docs.gl/gl4/glVertexAttribP)(index, type_, normalized, value)
36911        /// * `type_` group: VertexAttribPointerType
36912        /// * `value` len: 1
36913        #[cfg_attr(feature = "inline", inline)]
36914        #[cfg_attr(feature = "inline_always", inline(always))]
36915        pub unsafe fn VertexAttribP4uiv(
36916            &self,
36917            index: GLuint,
36918            type_: GLenum,
36919            normalized: GLboolean,
36920            value: *const GLuint,
36921        ) {
36922            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36923            {
36924                trace!(
36925                    "calling gl.VertexAttribP4uiv({:?}, {:#X}, {:?}, {:p});",
36926                    index,
36927                    type_,
36928                    normalized,
36929                    value
36930                );
36931            }
36932            let out = call_atomic_ptr_4arg(
36933                "glVertexAttribP4uiv",
36934                &self.glVertexAttribP4uiv_p,
36935                index,
36936                type_,
36937                normalized,
36938                value,
36939            );
36940            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36941            {
36942                self.automatic_glGetError("glVertexAttribP4uiv");
36943            }
36944            out
36945        }
36946        #[doc(hidden)]
36947        pub unsafe fn VertexAttribP4uiv_load_with_dyn(
36948            &self,
36949            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
36950        ) -> bool {
36951            load_dyn_name_atomic_ptr(
36952                get_proc_address,
36953                b"glVertexAttribP4uiv\0",
36954                &self.glVertexAttribP4uiv_p,
36955            )
36956        }
36957        #[inline]
36958        #[doc(hidden)]
36959        pub fn VertexAttribP4uiv_is_loaded(&self) -> bool {
36960            !self.glVertexAttribP4uiv_p.load(RELAX).is_null()
36961        }
36962        /// [glVertexAttribPointer](http://docs.gl/gl4/glVertexAttribPointer)(index, size, type_, normalized, stride, pointer)
36963        /// * `type_` group: VertexAttribPointerType
36964        /// * `pointer` len: COMPSIZE(size,type,stride)
36965        #[cfg_attr(feature = "inline", inline)]
36966        #[cfg_attr(feature = "inline_always", inline(always))]
36967        pub unsafe fn VertexAttribPointer(
36968            &self,
36969            index: GLuint,
36970            size: GLint,
36971            type_: GLenum,
36972            normalized: GLboolean,
36973            stride: GLsizei,
36974            pointer: *const c_void,
36975        ) {
36976            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
36977            {
36978                trace!(
36979                    "calling gl.VertexAttribPointer({:?}, {:?}, {:#X}, {:?}, {:?}, {:p});",
36980                    index,
36981                    size,
36982                    type_,
36983                    normalized,
36984                    stride,
36985                    pointer
36986                );
36987            }
36988            let out = call_atomic_ptr_6arg(
36989                "glVertexAttribPointer",
36990                &self.glVertexAttribPointer_p,
36991                index,
36992                size,
36993                type_,
36994                normalized,
36995                stride,
36996                pointer,
36997            );
36998            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
36999            {
37000                self.automatic_glGetError("glVertexAttribPointer");
37001            }
37002            out
37003        }
37004        #[doc(hidden)]
37005        pub unsafe fn VertexAttribPointer_load_with_dyn(
37006            &self,
37007            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
37008        ) -> bool {
37009            load_dyn_name_atomic_ptr(
37010                get_proc_address,
37011                b"glVertexAttribPointer\0",
37012                &self.glVertexAttribPointer_p,
37013            )
37014        }
37015        #[inline]
37016        #[doc(hidden)]
37017        pub fn VertexAttribPointer_is_loaded(&self) -> bool {
37018            !self.glVertexAttribPointer_p.load(RELAX).is_null()
37019        }
37020        /// [glVertexBindingDivisor](http://docs.gl/gl4/glVertexBindingDivisor)(bindingindex, divisor)
37021        #[cfg_attr(feature = "inline", inline)]
37022        #[cfg_attr(feature = "inline_always", inline(always))]
37023        pub unsafe fn VertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) {
37024            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
37025            {
37026                trace!(
37027                    "calling gl.VertexBindingDivisor({:?}, {:?});",
37028                    bindingindex,
37029                    divisor
37030                );
37031            }
37032            let out = call_atomic_ptr_2arg(
37033                "glVertexBindingDivisor",
37034                &self.glVertexBindingDivisor_p,
37035                bindingindex,
37036                divisor,
37037            );
37038            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
37039            {
37040                self.automatic_glGetError("glVertexBindingDivisor");
37041            }
37042            out
37043        }
37044        #[doc(hidden)]
37045        pub unsafe fn VertexBindingDivisor_load_with_dyn(
37046            &self,
37047            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
37048        ) -> bool {
37049            load_dyn_name_atomic_ptr(
37050                get_proc_address,
37051                b"glVertexBindingDivisor\0",
37052                &self.glVertexBindingDivisor_p,
37053            )
37054        }
37055        #[inline]
37056        #[doc(hidden)]
37057        pub fn VertexBindingDivisor_is_loaded(&self) -> bool {
37058            !self.glVertexBindingDivisor_p.load(RELAX).is_null()
37059        }
37060        /// [glViewport](http://docs.gl/gl4/glViewport)(x, y, width, height)
37061        /// * `x` group: WinCoord
37062        /// * `y` group: WinCoord
37063        #[cfg_attr(feature = "inline", inline)]
37064        #[cfg_attr(feature = "inline_always", inline(always))]
37065        pub unsafe fn Viewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) {
37066            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
37067            {
37068                trace!(
37069                    "calling gl.Viewport({:?}, {:?}, {:?}, {:?});",
37070                    x,
37071                    y,
37072                    width,
37073                    height
37074                );
37075            }
37076            let out = call_atomic_ptr_4arg("glViewport", &self.glViewport_p, x, y, width, height);
37077            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
37078            {
37079                self.automatic_glGetError("glViewport");
37080            }
37081            out
37082        }
37083        #[doc(hidden)]
37084        pub unsafe fn Viewport_load_with_dyn(
37085            &self,
37086            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
37087        ) -> bool {
37088            load_dyn_name_atomic_ptr(get_proc_address, b"glViewport\0", &self.glViewport_p)
37089        }
37090        #[inline]
37091        #[doc(hidden)]
37092        pub fn Viewport_is_loaded(&self) -> bool {
37093            !self.glViewport_p.load(RELAX).is_null()
37094        }
37095        /// [glViewportArrayv](http://docs.gl/gl4/glViewportArrayv)(first, count, v)
37096        /// * `v` len: COMPSIZE(count)
37097        #[cfg_attr(feature = "inline", inline)]
37098        #[cfg_attr(feature = "inline_always", inline(always))]
37099        pub unsafe fn ViewportArrayv(&self, first: GLuint, count: GLsizei, v: *const GLfloat) {
37100            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
37101            {
37102                trace!(
37103                    "calling gl.ViewportArrayv({:?}, {:?}, {:p});",
37104                    first,
37105                    count,
37106                    v
37107                );
37108            }
37109            let out = call_atomic_ptr_3arg(
37110                "glViewportArrayv",
37111                &self.glViewportArrayv_p,
37112                first,
37113                count,
37114                v,
37115            );
37116            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
37117            {
37118                self.automatic_glGetError("glViewportArrayv");
37119            }
37120            out
37121        }
37122        #[doc(hidden)]
37123        pub unsafe fn ViewportArrayv_load_with_dyn(
37124            &self,
37125            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
37126        ) -> bool {
37127            load_dyn_name_atomic_ptr(
37128                get_proc_address,
37129                b"glViewportArrayv\0",
37130                &self.glViewportArrayv_p,
37131            )
37132        }
37133        #[inline]
37134        #[doc(hidden)]
37135        pub fn ViewportArrayv_is_loaded(&self) -> bool {
37136            !self.glViewportArrayv_p.load(RELAX).is_null()
37137        }
37138        /// [glViewportIndexedf](http://docs.gl/gl4/glViewportIndexed)(index, x, y, w, h)
37139        #[cfg_attr(feature = "inline", inline)]
37140        #[cfg_attr(feature = "inline_always", inline(always))]
37141        pub unsafe fn ViewportIndexedf(
37142            &self,
37143            index: GLuint,
37144            x: GLfloat,
37145            y: GLfloat,
37146            w: GLfloat,
37147            h: GLfloat,
37148        ) {
37149            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
37150            {
37151                trace!(
37152                    "calling gl.ViewportIndexedf({:?}, {:?}, {:?}, {:?}, {:?});",
37153                    index,
37154                    x,
37155                    y,
37156                    w,
37157                    h
37158                );
37159            }
37160            let out = call_atomic_ptr_5arg(
37161                "glViewportIndexedf",
37162                &self.glViewportIndexedf_p,
37163                index,
37164                x,
37165                y,
37166                w,
37167                h,
37168            );
37169            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
37170            {
37171                self.automatic_glGetError("glViewportIndexedf");
37172            }
37173            out
37174        }
37175        #[doc(hidden)]
37176        pub unsafe fn ViewportIndexedf_load_with_dyn(
37177            &self,
37178            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
37179        ) -> bool {
37180            load_dyn_name_atomic_ptr(
37181                get_proc_address,
37182                b"glViewportIndexedf\0",
37183                &self.glViewportIndexedf_p,
37184            )
37185        }
37186        #[inline]
37187        #[doc(hidden)]
37188        pub fn ViewportIndexedf_is_loaded(&self) -> bool {
37189            !self.glViewportIndexedf_p.load(RELAX).is_null()
37190        }
37191        /// [glViewportIndexedfv](http://docs.gl/gl4/glViewportIndexed)(index, v)
37192        /// * `v` len: 4
37193        #[cfg_attr(feature = "inline", inline)]
37194        #[cfg_attr(feature = "inline_always", inline(always))]
37195        pub unsafe fn ViewportIndexedfv(&self, index: GLuint, v: *const GLfloat) {
37196            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
37197            {
37198                trace!("calling gl.ViewportIndexedfv({:?}, {:p});", index, v);
37199            }
37200            let out =
37201                call_atomic_ptr_2arg("glViewportIndexedfv", &self.glViewportIndexedfv_p, index, v);
37202            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
37203            {
37204                self.automatic_glGetError("glViewportIndexedfv");
37205            }
37206            out
37207        }
37208        #[doc(hidden)]
37209        pub unsafe fn ViewportIndexedfv_load_with_dyn(
37210            &self,
37211            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
37212        ) -> bool {
37213            load_dyn_name_atomic_ptr(
37214                get_proc_address,
37215                b"glViewportIndexedfv\0",
37216                &self.glViewportIndexedfv_p,
37217            )
37218        }
37219        #[inline]
37220        #[doc(hidden)]
37221        pub fn ViewportIndexedfv_is_loaded(&self) -> bool {
37222            !self.glViewportIndexedfv_p.load(RELAX).is_null()
37223        }
37224        /// [glWaitSync](http://docs.gl/gl4/glWaitSync)(sync, flags, timeout)
37225        /// * `sync` group: sync
37226        /// * `flags` group: SyncBehaviorFlags
37227        #[cfg_attr(feature = "inline", inline)]
37228        #[cfg_attr(feature = "inline_always", inline(always))]
37229        pub unsafe fn WaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) {
37230            #[cfg(all(debug_assertions, feature = "debug_trace_calls"))]
37231            {
37232                trace!(
37233                    "calling gl.WaitSync({:p}, {:?}, {:?});",
37234                    sync,
37235                    flags,
37236                    timeout
37237                );
37238            }
37239            let out = call_atomic_ptr_3arg("glWaitSync", &self.glWaitSync_p, sync, flags, timeout);
37240            #[cfg(all(debug_assertions, feature = "debug_automatic_glGetError"))]
37241            {
37242                self.automatic_glGetError("glWaitSync");
37243            }
37244            out
37245        }
37246        #[doc(hidden)]
37247        pub unsafe fn WaitSync_load_with_dyn(
37248            &self,
37249            get_proc_address: &mut dyn FnMut(*const c_char) -> *mut c_void,
37250        ) -> bool {
37251            load_dyn_name_atomic_ptr(get_proc_address, b"glWaitSync\0", &self.glWaitSync_p)
37252        }
37253        #[inline]
37254        #[doc(hidden)]
37255        pub fn WaitSync_is_loaded(&self) -> bool {
37256            !self.glWaitSync_p.load(RELAX).is_null()
37257        }
37258    }
37259    /// This holds the many, many function pointers for GL.
37260    ///
37261    /// It's typically quite large (hundreds of pointers), depending on what API level and extensions you selected during the generation.
37262    #[repr(C)]
37263    pub struct GlFns {
37264        glActiveShaderProgram_p: APcv,
37265        glActiveTexture_p: APcv,
37266        glAttachShader_p: APcv,
37267        glBeginConditionalRender_p: APcv,
37268        glBeginQuery_p: APcv,
37269        glBeginQueryEXT_p: APcv,
37270        glBeginQueryIndexed_p: APcv,
37271        glBeginTransformFeedback_p: APcv,
37272        glBindAttribLocation_p: APcv,
37273        glBindBuffer_p: APcv,
37274        glBindBufferBase_p: APcv,
37275        glBindBufferRange_p: APcv,
37276        glBindBuffersBase_p: APcv,
37277        glBindBuffersRange_p: APcv,
37278        glBindFragDataLocation_p: APcv,
37279        glBindFragDataLocationIndexed_p: APcv,
37280        glBindFramebuffer_p: APcv,
37281        glBindImageTexture_p: APcv,
37282        glBindImageTextures_p: APcv,
37283        glBindProgramPipeline_p: APcv,
37284        glBindRenderbuffer_p: APcv,
37285        glBindSampler_p: APcv,
37286        glBindSamplers_p: APcv,
37287        glBindTexture_p: APcv,
37288        glBindTextureUnit_p: APcv,
37289        glBindTextures_p: APcv,
37290        glBindTransformFeedback_p: APcv,
37291        glBindVertexArray_p: APcv,
37292        glBindVertexArrayAPPLE_p: APcv,
37293        glBindVertexArrayOES_p: APcv,
37294        glBindVertexBuffer_p: APcv,
37295        glBindVertexBuffers_p: APcv,
37296        glBlendBarrier_p: APcv,
37297        glBlendColor_p: APcv,
37298        glBlendEquation_p: APcv,
37299        glBlendEquationSeparate_p: APcv,
37300        glBlendEquationSeparatei_p: APcv,
37301        glBlendEquationi_p: APcv,
37302        glBlendFunc_p: APcv,
37303        glBlendFuncSeparate_p: APcv,
37304        glBlendFuncSeparatei_p: APcv,
37305        glBlendFunci_p: APcv,
37306        glBlitFramebuffer_p: APcv,
37307        glBlitNamedFramebuffer_p: APcv,
37308        glBufferData_p: APcv,
37309        glBufferStorage_p: APcv,
37310        glBufferStorageEXT_p: APcv,
37311        glBufferSubData_p: APcv,
37312        glCheckFramebufferStatus_p: APcv,
37313        glCheckNamedFramebufferStatus_p: APcv,
37314        glClampColor_p: APcv,
37315        glClear_p: APcv,
37316        glClearBufferData_p: APcv,
37317        glClearBufferSubData_p: APcv,
37318        glClearBufferfi_p: APcv,
37319        glClearBufferfv_p: APcv,
37320        glClearBufferiv_p: APcv,
37321        glClearBufferuiv_p: APcv,
37322        glClearColor_p: APcv,
37323        glClearDepth_p: APcv,
37324        glClearDepthf_p: APcv,
37325        glClearNamedBufferData_p: APcv,
37326        glClearNamedBufferSubData_p: APcv,
37327        glClearNamedFramebufferfi_p: APcv,
37328        glClearNamedFramebufferfv_p: APcv,
37329        glClearNamedFramebufferiv_p: APcv,
37330        glClearNamedFramebufferuiv_p: APcv,
37331        glClearStencil_p: APcv,
37332        glClearTexImage_p: APcv,
37333        glClearTexSubImage_p: APcv,
37334        glClientWaitSync_p: APcv,
37335        glClipControl_p: APcv,
37336        glColorMask_p: APcv,
37337        glColorMaskIndexedEXT_p: APcv,
37338        glColorMaski_p: APcv,
37339        glCompileShader_p: APcv,
37340        glCompressedTexImage1D_p: APcv,
37341        glCompressedTexImage2D_p: APcv,
37342        glCompressedTexImage3D_p: APcv,
37343        glCompressedTexSubImage1D_p: APcv,
37344        glCompressedTexSubImage2D_p: APcv,
37345        glCompressedTexSubImage3D_p: APcv,
37346        glCompressedTextureSubImage1D_p: APcv,
37347        glCompressedTextureSubImage2D_p: APcv,
37348        glCompressedTextureSubImage3D_p: APcv,
37349        glCopyBufferSubData_p: APcv,
37350        glCopyBufferSubDataNV_p: APcv,
37351        glCopyImageSubData_p: APcv,
37352        glCopyNamedBufferSubData_p: APcv,
37353        glCopyTexImage1D_p: APcv,
37354        glCopyTexImage2D_p: APcv,
37355        glCopyTexSubImage1D_p: APcv,
37356        glCopyTexSubImage2D_p: APcv,
37357        glCopyTexSubImage3D_p: APcv,
37358        glCopyTextureSubImage1D_p: APcv,
37359        glCopyTextureSubImage2D_p: APcv,
37360        glCopyTextureSubImage3D_p: APcv,
37361        glCreateBuffers_p: APcv,
37362        glCreateFramebuffers_p: APcv,
37363        glCreateProgram_p: APcv,
37364        glCreateProgramPipelines_p: APcv,
37365        glCreateQueries_p: APcv,
37366        glCreateRenderbuffers_p: APcv,
37367        glCreateSamplers_p: APcv,
37368        glCreateShader_p: APcv,
37369        glCreateShaderProgramv_p: APcv,
37370        glCreateTextures_p: APcv,
37371        glCreateTransformFeedbacks_p: APcv,
37372        glCreateVertexArrays_p: APcv,
37373        glCullFace_p: APcv,
37374        glDebugMessageCallback_p: APcv,
37375        glDebugMessageCallbackARB_p: APcv,
37376        glDebugMessageCallbackKHR_p: APcv,
37377        glDebugMessageControl_p: APcv,
37378        glDebugMessageControlARB_p: APcv,
37379        glDebugMessageControlKHR_p: APcv,
37380        glDebugMessageInsert_p: APcv,
37381        glDebugMessageInsertARB_p: APcv,
37382        glDebugMessageInsertKHR_p: APcv,
37383        glDeleteBuffers_p: APcv,
37384        glDeleteFramebuffers_p: APcv,
37385        glDeleteProgram_p: APcv,
37386        glDeleteProgramPipelines_p: APcv,
37387        glDeleteQueries_p: APcv,
37388        glDeleteQueriesEXT_p: APcv,
37389        glDeleteRenderbuffers_p: APcv,
37390        glDeleteSamplers_p: APcv,
37391        glDeleteShader_p: APcv,
37392        glDeleteSync_p: APcv,
37393        glDeleteTextures_p: APcv,
37394        glDeleteTransformFeedbacks_p: APcv,
37395        glDeleteVertexArrays_p: APcv,
37396        glDeleteVertexArraysAPPLE_p: APcv,
37397        glDeleteVertexArraysOES_p: APcv,
37398        glDepthFunc_p: APcv,
37399        glDepthMask_p: APcv,
37400        glDepthRange_p: APcv,
37401        glDepthRangeArrayv_p: APcv,
37402        glDepthRangeIndexed_p: APcv,
37403        glDepthRangef_p: APcv,
37404        glDetachShader_p: APcv,
37405        glDisable_p: APcv,
37406        glDisableIndexedEXT_p: APcv,
37407        glDisableVertexArrayAttrib_p: APcv,
37408        glDisableVertexAttribArray_p: APcv,
37409        glDisablei_p: APcv,
37410        glDispatchCompute_p: APcv,
37411        glDispatchComputeIndirect_p: APcv,
37412        glDrawArrays_p: APcv,
37413        glDrawArraysIndirect_p: APcv,
37414        glDrawArraysInstanced_p: APcv,
37415        glDrawArraysInstancedARB_p: APcv,
37416        glDrawArraysInstancedBaseInstance_p: APcv,
37417        glDrawBuffer_p: APcv,
37418        glDrawBuffers_p: APcv,
37419        glDrawElements_p: APcv,
37420        glDrawElementsBaseVertex_p: APcv,
37421        glDrawElementsIndirect_p: APcv,
37422        glDrawElementsInstanced_p: APcv,
37423        glDrawElementsInstancedARB_p: APcv,
37424        glDrawElementsInstancedBaseInstance_p: APcv,
37425        glDrawElementsInstancedBaseVertex_p: APcv,
37426        glDrawElementsInstancedBaseVertexBaseInstance_p: APcv,
37427        glDrawRangeElements_p: APcv,
37428        glDrawRangeElementsBaseVertex_p: APcv,
37429        glDrawTransformFeedback_p: APcv,
37430        glDrawTransformFeedbackInstanced_p: APcv,
37431        glDrawTransformFeedbackStream_p: APcv,
37432        glDrawTransformFeedbackStreamInstanced_p: APcv,
37433        glEnable_p: APcv,
37434        glEnableIndexedEXT_p: APcv,
37435        glEnableVertexArrayAttrib_p: APcv,
37436        glEnableVertexAttribArray_p: APcv,
37437        glEnablei_p: APcv,
37438        glEndConditionalRender_p: APcv,
37439        glEndQuery_p: APcv,
37440        glEndQueryEXT_p: APcv,
37441        glEndQueryIndexed_p: APcv,
37442        glEndTransformFeedback_p: APcv,
37443        glFenceSync_p: APcv,
37444        glFinish_p: APcv,
37445        glFlush_p: APcv,
37446        glFlushMappedBufferRange_p: APcv,
37447        glFlushMappedNamedBufferRange_p: APcv,
37448        glFramebufferParameteri_p: APcv,
37449        glFramebufferRenderbuffer_p: APcv,
37450        glFramebufferTexture_p: APcv,
37451        glFramebufferTexture1D_p: APcv,
37452        glFramebufferTexture2D_p: APcv,
37453        #[cfg_attr(
37454            docs_rs,
37455            doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
37456        )]
37457        glFramebufferTexture2DMultisampleEXT_p: APcv,
37458        glFramebufferTexture3D_p: APcv,
37459        glFramebufferTextureLayer_p: APcv,
37460        glFrontFace_p: APcv,
37461        glGenBuffers_p: APcv,
37462        glGenFramebuffers_p: APcv,
37463        glGenProgramPipelines_p: APcv,
37464        glGenQueries_p: APcv,
37465        glGenQueriesEXT_p: APcv,
37466        glGenRenderbuffers_p: APcv,
37467        glGenSamplers_p: APcv,
37468        glGenTextures_p: APcv,
37469        glGenTransformFeedbacks_p: APcv,
37470        glGenVertexArrays_p: APcv,
37471        glGenVertexArraysAPPLE_p: APcv,
37472        glGenVertexArraysOES_p: APcv,
37473        glGenerateMipmap_p: APcv,
37474        glGenerateTextureMipmap_p: APcv,
37475        glGetActiveAtomicCounterBufferiv_p: APcv,
37476        glGetActiveAttrib_p: APcv,
37477        glGetActiveSubroutineName_p: APcv,
37478        glGetActiveSubroutineUniformName_p: APcv,
37479        glGetActiveSubroutineUniformiv_p: APcv,
37480        glGetActiveUniform_p: APcv,
37481        glGetActiveUniformBlockName_p: APcv,
37482        glGetActiveUniformBlockiv_p: APcv,
37483        glGetActiveUniformName_p: APcv,
37484        glGetActiveUniformsiv_p: APcv,
37485        glGetAttachedShaders_p: APcv,
37486        glGetAttribLocation_p: APcv,
37487        glGetBooleanIndexedvEXT_p: APcv,
37488        glGetBooleani_v_p: APcv,
37489        glGetBooleanv_p: APcv,
37490        glGetBufferParameteri64v_p: APcv,
37491        glGetBufferParameteriv_p: APcv,
37492        glGetBufferPointerv_p: APcv,
37493        glGetBufferSubData_p: APcv,
37494        glGetCompressedTexImage_p: APcv,
37495        glGetCompressedTextureImage_p: APcv,
37496        glGetCompressedTextureSubImage_p: APcv,
37497        glGetDebugMessageLog_p: APcv,
37498        glGetDebugMessageLogARB_p: APcv,
37499        glGetDebugMessageLogKHR_p: APcv,
37500        glGetDoublei_v_p: APcv,
37501        glGetDoublev_p: APcv,
37502        glGetError_p: APcv,
37503        glGetFloati_v_p: APcv,
37504        glGetFloatv_p: APcv,
37505        glGetFragDataIndex_p: APcv,
37506        glGetFragDataLocation_p: APcv,
37507        glGetFramebufferAttachmentParameteriv_p: APcv,
37508        glGetFramebufferParameteriv_p: APcv,
37509        glGetGraphicsResetStatus_p: APcv,
37510        glGetInteger64i_v_p: APcv,
37511        glGetInteger64v_p: APcv,
37512        glGetInteger64vEXT_p: APcv,
37513        glGetIntegerIndexedvEXT_p: APcv,
37514        glGetIntegeri_v_p: APcv,
37515        glGetIntegerv_p: APcv,
37516        glGetInternalformati64v_p: APcv,
37517        glGetInternalformativ_p: APcv,
37518        glGetMultisamplefv_p: APcv,
37519        glGetNamedBufferParameteri64v_p: APcv,
37520        glGetNamedBufferParameteriv_p: APcv,
37521        glGetNamedBufferPointerv_p: APcv,
37522        glGetNamedBufferSubData_p: APcv,
37523        glGetNamedFramebufferAttachmentParameteriv_p: APcv,
37524        glGetNamedFramebufferParameteriv_p: APcv,
37525        glGetNamedRenderbufferParameteriv_p: APcv,
37526        glGetObjectLabel_p: APcv,
37527        glGetObjectLabelKHR_p: APcv,
37528        glGetObjectPtrLabel_p: APcv,
37529        glGetObjectPtrLabelKHR_p: APcv,
37530        glGetPointerv_p: APcv,
37531        glGetPointervKHR_p: APcv,
37532        glGetProgramBinary_p: APcv,
37533        glGetProgramInfoLog_p: APcv,
37534        glGetProgramInterfaceiv_p: APcv,
37535        glGetProgramPipelineInfoLog_p: APcv,
37536        glGetProgramPipelineiv_p: APcv,
37537        glGetProgramResourceIndex_p: APcv,
37538        glGetProgramResourceLocation_p: APcv,
37539        glGetProgramResourceLocationIndex_p: APcv,
37540        glGetProgramResourceName_p: APcv,
37541        glGetProgramResourceiv_p: APcv,
37542        glGetProgramStageiv_p: APcv,
37543        glGetProgramiv_p: APcv,
37544        glGetQueryBufferObjecti64v_p: APcv,
37545        glGetQueryBufferObjectiv_p: APcv,
37546        glGetQueryBufferObjectui64v_p: APcv,
37547        glGetQueryBufferObjectuiv_p: APcv,
37548        glGetQueryIndexediv_p: APcv,
37549        glGetQueryObjecti64v_p: APcv,
37550        glGetQueryObjecti64vEXT_p: APcv,
37551        glGetQueryObjectiv_p: APcv,
37552        glGetQueryObjectivEXT_p: APcv,
37553        glGetQueryObjectui64v_p: APcv,
37554        glGetQueryObjectui64vEXT_p: APcv,
37555        glGetQueryObjectuiv_p: APcv,
37556        glGetQueryObjectuivEXT_p: APcv,
37557        glGetQueryiv_p: APcv,
37558        glGetQueryivEXT_p: APcv,
37559        glGetRenderbufferParameteriv_p: APcv,
37560        glGetSamplerParameterIiv_p: APcv,
37561        glGetSamplerParameterIuiv_p: APcv,
37562        glGetSamplerParameterfv_p: APcv,
37563        glGetSamplerParameteriv_p: APcv,
37564        glGetShaderInfoLog_p: APcv,
37565        glGetShaderPrecisionFormat_p: APcv,
37566        glGetShaderSource_p: APcv,
37567        glGetShaderiv_p: APcv,
37568        glGetString_p: APcv,
37569        glGetStringi_p: APcv,
37570        glGetSubroutineIndex_p: APcv,
37571        glGetSubroutineUniformLocation_p: APcv,
37572        glGetSynciv_p: APcv,
37573        glGetTexImage_p: APcv,
37574        glGetTexLevelParameterfv_p: APcv,
37575        glGetTexLevelParameteriv_p: APcv,
37576        glGetTexParameterIiv_p: APcv,
37577        glGetTexParameterIuiv_p: APcv,
37578        glGetTexParameterfv_p: APcv,
37579        glGetTexParameteriv_p: APcv,
37580        glGetTextureImage_p: APcv,
37581        glGetTextureLevelParameterfv_p: APcv,
37582        glGetTextureLevelParameteriv_p: APcv,
37583        glGetTextureParameterIiv_p: APcv,
37584        glGetTextureParameterIuiv_p: APcv,
37585        glGetTextureParameterfv_p: APcv,
37586        glGetTextureParameteriv_p: APcv,
37587        glGetTextureSubImage_p: APcv,
37588        glGetTransformFeedbackVarying_p: APcv,
37589        glGetTransformFeedbacki64_v_p: APcv,
37590        glGetTransformFeedbacki_v_p: APcv,
37591        glGetTransformFeedbackiv_p: APcv,
37592        glGetUniformBlockIndex_p: APcv,
37593        glGetUniformIndices_p: APcv,
37594        glGetUniformLocation_p: APcv,
37595        glGetUniformSubroutineuiv_p: APcv,
37596        glGetUniformdv_p: APcv,
37597        glGetUniformfv_p: APcv,
37598        glGetUniformiv_p: APcv,
37599        glGetUniformuiv_p: APcv,
37600        glGetVertexArrayIndexed64iv_p: APcv,
37601        glGetVertexArrayIndexediv_p: APcv,
37602        glGetVertexArrayiv_p: APcv,
37603        glGetVertexAttribIiv_p: APcv,
37604        glGetVertexAttribIuiv_p: APcv,
37605        glGetVertexAttribLdv_p: APcv,
37606        glGetVertexAttribPointerv_p: APcv,
37607        glGetVertexAttribdv_p: APcv,
37608        glGetVertexAttribfv_p: APcv,
37609        glGetVertexAttribiv_p: APcv,
37610        glGetnCompressedTexImage_p: APcv,
37611        glGetnTexImage_p: APcv,
37612        glGetnUniformdv_p: APcv,
37613        glGetnUniformfv_p: APcv,
37614        glGetnUniformiv_p: APcv,
37615        glGetnUniformuiv_p: APcv,
37616        glHint_p: APcv,
37617        glInvalidateBufferData_p: APcv,
37618        glInvalidateBufferSubData_p: APcv,
37619        glInvalidateFramebuffer_p: APcv,
37620        glInvalidateNamedFramebufferData_p: APcv,
37621        glInvalidateNamedFramebufferSubData_p: APcv,
37622        glInvalidateSubFramebuffer_p: APcv,
37623        glInvalidateTexImage_p: APcv,
37624        glInvalidateTexSubImage_p: APcv,
37625        glIsBuffer_p: APcv,
37626        glIsEnabled_p: APcv,
37627        glIsEnabledIndexedEXT_p: APcv,
37628        glIsEnabledi_p: APcv,
37629        glIsFramebuffer_p: APcv,
37630        glIsProgram_p: APcv,
37631        glIsProgramPipeline_p: APcv,
37632        glIsQuery_p: APcv,
37633        glIsQueryEXT_p: APcv,
37634        glIsRenderbuffer_p: APcv,
37635        glIsSampler_p: APcv,
37636        glIsShader_p: APcv,
37637        glIsSync_p: APcv,
37638        glIsTexture_p: APcv,
37639        glIsTransformFeedback_p: APcv,
37640        glIsVertexArray_p: APcv,
37641        glIsVertexArrayAPPLE_p: APcv,
37642        glIsVertexArrayOES_p: APcv,
37643        glLineWidth_p: APcv,
37644        glLinkProgram_p: APcv,
37645        glLogicOp_p: APcv,
37646        glMapBuffer_p: APcv,
37647        glMapBufferRange_p: APcv,
37648        glMapNamedBuffer_p: APcv,
37649        glMapNamedBufferRange_p: APcv,
37650        glMaxShaderCompilerThreadsARB_p: APcv,
37651        glMaxShaderCompilerThreadsKHR_p: APcv,
37652        glMemoryBarrier_p: APcv,
37653        glMemoryBarrierByRegion_p: APcv,
37654        glMinSampleShading_p: APcv,
37655        glMultiDrawArrays_p: APcv,
37656        glMultiDrawArraysIndirect_p: APcv,
37657        glMultiDrawArraysIndirectCount_p: APcv,
37658        glMultiDrawElements_p: APcv,
37659        glMultiDrawElementsBaseVertex_p: APcv,
37660        glMultiDrawElementsIndirect_p: APcv,
37661        glMultiDrawElementsIndirectCount_p: APcv,
37662        glNamedBufferData_p: APcv,
37663        glNamedBufferStorage_p: APcv,
37664        glNamedBufferSubData_p: APcv,
37665        glNamedFramebufferDrawBuffer_p: APcv,
37666        glNamedFramebufferDrawBuffers_p: APcv,
37667        glNamedFramebufferParameteri_p: APcv,
37668        glNamedFramebufferReadBuffer_p: APcv,
37669        glNamedFramebufferRenderbuffer_p: APcv,
37670        glNamedFramebufferTexture_p: APcv,
37671        glNamedFramebufferTextureLayer_p: APcv,
37672        glNamedRenderbufferStorage_p: APcv,
37673        glNamedRenderbufferStorageMultisample_p: APcv,
37674        glObjectLabel_p: APcv,
37675        glObjectLabelKHR_p: APcv,
37676        glObjectPtrLabel_p: APcv,
37677        glObjectPtrLabelKHR_p: APcv,
37678        glPatchParameterfv_p: APcv,
37679        glPatchParameteri_p: APcv,
37680        glPauseTransformFeedback_p: APcv,
37681        glPixelStoref_p: APcv,
37682        glPixelStorei_p: APcv,
37683        glPointParameterf_p: APcv,
37684        glPointParameterfv_p: APcv,
37685        glPointParameteri_p: APcv,
37686        glPointParameteriv_p: APcv,
37687        glPointSize_p: APcv,
37688        glPolygonMode_p: APcv,
37689        glPolygonOffset_p: APcv,
37690        glPolygonOffsetClamp_p: APcv,
37691        glPopDebugGroup_p: APcv,
37692        glPopDebugGroupKHR_p: APcv,
37693        glPrimitiveBoundingBox_p: APcv,
37694        glPrimitiveRestartIndex_p: APcv,
37695        glProgramBinary_p: APcv,
37696        glProgramParameteri_p: APcv,
37697        glProgramUniform1d_p: APcv,
37698        glProgramUniform1dv_p: APcv,
37699        glProgramUniform1f_p: APcv,
37700        glProgramUniform1fv_p: APcv,
37701        glProgramUniform1i_p: APcv,
37702        glProgramUniform1iv_p: APcv,
37703        glProgramUniform1ui_p: APcv,
37704        glProgramUniform1uiv_p: APcv,
37705        glProgramUniform2d_p: APcv,
37706        glProgramUniform2dv_p: APcv,
37707        glProgramUniform2f_p: APcv,
37708        glProgramUniform2fv_p: APcv,
37709        glProgramUniform2i_p: APcv,
37710        glProgramUniform2iv_p: APcv,
37711        glProgramUniform2ui_p: APcv,
37712        glProgramUniform2uiv_p: APcv,
37713        glProgramUniform3d_p: APcv,
37714        glProgramUniform3dv_p: APcv,
37715        glProgramUniform3f_p: APcv,
37716        glProgramUniform3fv_p: APcv,
37717        glProgramUniform3i_p: APcv,
37718        glProgramUniform3iv_p: APcv,
37719        glProgramUniform3ui_p: APcv,
37720        glProgramUniform3uiv_p: APcv,
37721        glProgramUniform4d_p: APcv,
37722        glProgramUniform4dv_p: APcv,
37723        glProgramUniform4f_p: APcv,
37724        glProgramUniform4fv_p: APcv,
37725        glProgramUniform4i_p: APcv,
37726        glProgramUniform4iv_p: APcv,
37727        glProgramUniform4ui_p: APcv,
37728        glProgramUniform4uiv_p: APcv,
37729        glProgramUniformMatrix2dv_p: APcv,
37730        glProgramUniformMatrix2fv_p: APcv,
37731        glProgramUniformMatrix2x3dv_p: APcv,
37732        glProgramUniformMatrix2x3fv_p: APcv,
37733        glProgramUniformMatrix2x4dv_p: APcv,
37734        glProgramUniformMatrix2x4fv_p: APcv,
37735        glProgramUniformMatrix3dv_p: APcv,
37736        glProgramUniformMatrix3fv_p: APcv,
37737        glProgramUniformMatrix3x2dv_p: APcv,
37738        glProgramUniformMatrix3x2fv_p: APcv,
37739        glProgramUniformMatrix3x4dv_p: APcv,
37740        glProgramUniformMatrix3x4fv_p: APcv,
37741        glProgramUniformMatrix4dv_p: APcv,
37742        glProgramUniformMatrix4fv_p: APcv,
37743        glProgramUniformMatrix4x2dv_p: APcv,
37744        glProgramUniformMatrix4x2fv_p: APcv,
37745        glProgramUniformMatrix4x3dv_p: APcv,
37746        glProgramUniformMatrix4x3fv_p: APcv,
37747        glProvokingVertex_p: APcv,
37748        glPushDebugGroup_p: APcv,
37749        glPushDebugGroupKHR_p: APcv,
37750        glQueryCounter_p: APcv,
37751        glQueryCounterEXT_p: APcv,
37752        glReadBuffer_p: APcv,
37753        glReadPixels_p: APcv,
37754        glReadnPixels_p: APcv,
37755        glReleaseShaderCompiler_p: APcv,
37756        glRenderbufferStorage_p: APcv,
37757        glRenderbufferStorageMultisample_p: APcv,
37758        #[cfg_attr(
37759            docs_rs,
37760            doc(cfg(any(feature = "GL_EXT_multisampled_render_to_texture")))
37761        )]
37762        glRenderbufferStorageMultisampleEXT_p: APcv,
37763        glResumeTransformFeedback_p: APcv,
37764        glSampleCoverage_p: APcv,
37765        glSampleMaski_p: APcv,
37766        glSamplerParameterIiv_p: APcv,
37767        glSamplerParameterIuiv_p: APcv,
37768        glSamplerParameterf_p: APcv,
37769        glSamplerParameterfv_p: APcv,
37770        glSamplerParameteri_p: APcv,
37771        glSamplerParameteriv_p: APcv,
37772        glScissor_p: APcv,
37773        glScissorArrayv_p: APcv,
37774        glScissorIndexed_p: APcv,
37775        glScissorIndexedv_p: APcv,
37776        glShaderBinary_p: APcv,
37777        glShaderSource_p: APcv,
37778        glShaderStorageBlockBinding_p: APcv,
37779        glSpecializeShader_p: APcv,
37780        glStencilFunc_p: APcv,
37781        glStencilFuncSeparate_p: APcv,
37782        glStencilMask_p: APcv,
37783        glStencilMaskSeparate_p: APcv,
37784        glStencilOp_p: APcv,
37785        glStencilOpSeparate_p: APcv,
37786        glTexBuffer_p: APcv,
37787        glTexBufferRange_p: APcv,
37788        glTexImage1D_p: APcv,
37789        glTexImage2D_p: APcv,
37790        glTexImage2DMultisample_p: APcv,
37791        glTexImage3D_p: APcv,
37792        glTexImage3DMultisample_p: APcv,
37793        glTexParameterIiv_p: APcv,
37794        glTexParameterIuiv_p: APcv,
37795        glTexParameterf_p: APcv,
37796        glTexParameterfv_p: APcv,
37797        glTexParameteri_p: APcv,
37798        glTexParameteriv_p: APcv,
37799        glTexStorage1D_p: APcv,
37800        glTexStorage2D_p: APcv,
37801        glTexStorage2DMultisample_p: APcv,
37802        glTexStorage3D_p: APcv,
37803        glTexStorage3DMultisample_p: APcv,
37804        glTexSubImage1D_p: APcv,
37805        glTexSubImage2D_p: APcv,
37806        glTexSubImage3D_p: APcv,
37807        glTextureBarrier_p: APcv,
37808        glTextureBuffer_p: APcv,
37809        glTextureBufferRange_p: APcv,
37810        glTextureParameterIiv_p: APcv,
37811        glTextureParameterIuiv_p: APcv,
37812        glTextureParameterf_p: APcv,
37813        glTextureParameterfv_p: APcv,
37814        glTextureParameteri_p: APcv,
37815        glTextureParameteriv_p: APcv,
37816        glTextureStorage1D_p: APcv,
37817        glTextureStorage2D_p: APcv,
37818        glTextureStorage2DMultisample_p: APcv,
37819        glTextureStorage3D_p: APcv,
37820        glTextureStorage3DMultisample_p: APcv,
37821        glTextureSubImage1D_p: APcv,
37822        glTextureSubImage2D_p: APcv,
37823        glTextureSubImage3D_p: APcv,
37824        glTextureView_p: APcv,
37825        glTransformFeedbackBufferBase_p: APcv,
37826        glTransformFeedbackBufferRange_p: APcv,
37827        glTransformFeedbackVaryings_p: APcv,
37828        glUniform1d_p: APcv,
37829        glUniform1dv_p: APcv,
37830        glUniform1f_p: APcv,
37831        glUniform1fv_p: APcv,
37832        glUniform1i_p: APcv,
37833        glUniform1iv_p: APcv,
37834        glUniform1ui_p: APcv,
37835        glUniform1uiv_p: APcv,
37836        glUniform2d_p: APcv,
37837        glUniform2dv_p: APcv,
37838        glUniform2f_p: APcv,
37839        glUniform2fv_p: APcv,
37840        glUniform2i_p: APcv,
37841        glUniform2iv_p: APcv,
37842        glUniform2ui_p: APcv,
37843        glUniform2uiv_p: APcv,
37844        glUniform3d_p: APcv,
37845        glUniform3dv_p: APcv,
37846        glUniform3f_p: APcv,
37847        glUniform3fv_p: APcv,
37848        glUniform3i_p: APcv,
37849        glUniform3iv_p: APcv,
37850        glUniform3ui_p: APcv,
37851        glUniform3uiv_p: APcv,
37852        glUniform4d_p: APcv,
37853        glUniform4dv_p: APcv,
37854        glUniform4f_p: APcv,
37855        glUniform4fv_p: APcv,
37856        glUniform4i_p: APcv,
37857        glUniform4iv_p: APcv,
37858        glUniform4ui_p: APcv,
37859        glUniform4uiv_p: APcv,
37860        glUniformBlockBinding_p: APcv,
37861        glUniformMatrix2dv_p: APcv,
37862        glUniformMatrix2fv_p: APcv,
37863        glUniformMatrix2x3dv_p: APcv,
37864        glUniformMatrix2x3fv_p: APcv,
37865        glUniformMatrix2x4dv_p: APcv,
37866        glUniformMatrix2x4fv_p: APcv,
37867        glUniformMatrix3dv_p: APcv,
37868        glUniformMatrix3fv_p: APcv,
37869        glUniformMatrix3x2dv_p: APcv,
37870        glUniformMatrix3x2fv_p: APcv,
37871        glUniformMatrix3x4dv_p: APcv,
37872        glUniformMatrix3x4fv_p: APcv,
37873        glUniformMatrix4dv_p: APcv,
37874        glUniformMatrix4fv_p: APcv,
37875        glUniformMatrix4x2dv_p: APcv,
37876        glUniformMatrix4x2fv_p: APcv,
37877        glUniformMatrix4x3dv_p: APcv,
37878        glUniformMatrix4x3fv_p: APcv,
37879        glUniformSubroutinesuiv_p: APcv,
37880        glUnmapBuffer_p: APcv,
37881        glUnmapNamedBuffer_p: APcv,
37882        glUseProgram_p: APcv,
37883        glUseProgramStages_p: APcv,
37884        glValidateProgram_p: APcv,
37885        glValidateProgramPipeline_p: APcv,
37886        glVertexArrayAttribBinding_p: APcv,
37887        glVertexArrayAttribFormat_p: APcv,
37888        glVertexArrayAttribIFormat_p: APcv,
37889        glVertexArrayAttribLFormat_p: APcv,
37890        glVertexArrayBindingDivisor_p: APcv,
37891        glVertexArrayElementBuffer_p: APcv,
37892        glVertexArrayVertexBuffer_p: APcv,
37893        glVertexArrayVertexBuffers_p: APcv,
37894        glVertexAttrib1d_p: APcv,
37895        glVertexAttrib1dv_p: APcv,
37896        glVertexAttrib1f_p: APcv,
37897        glVertexAttrib1fv_p: APcv,
37898        glVertexAttrib1s_p: APcv,
37899        glVertexAttrib1sv_p: APcv,
37900        glVertexAttrib2d_p: APcv,
37901        glVertexAttrib2dv_p: APcv,
37902        glVertexAttrib2f_p: APcv,
37903        glVertexAttrib2fv_p: APcv,
37904        glVertexAttrib2s_p: APcv,
37905        glVertexAttrib2sv_p: APcv,
37906        glVertexAttrib3d_p: APcv,
37907        glVertexAttrib3dv_p: APcv,
37908        glVertexAttrib3f_p: APcv,
37909        glVertexAttrib3fv_p: APcv,
37910        glVertexAttrib3s_p: APcv,
37911        glVertexAttrib3sv_p: APcv,
37912        glVertexAttrib4Nbv_p: APcv,
37913        glVertexAttrib4Niv_p: APcv,
37914        glVertexAttrib4Nsv_p: APcv,
37915        glVertexAttrib4Nub_p: APcv,
37916        glVertexAttrib4Nubv_p: APcv,
37917        glVertexAttrib4Nuiv_p: APcv,
37918        glVertexAttrib4Nusv_p: APcv,
37919        glVertexAttrib4bv_p: APcv,
37920        glVertexAttrib4d_p: APcv,
37921        glVertexAttrib4dv_p: APcv,
37922        glVertexAttrib4f_p: APcv,
37923        glVertexAttrib4fv_p: APcv,
37924        glVertexAttrib4iv_p: APcv,
37925        glVertexAttrib4s_p: APcv,
37926        glVertexAttrib4sv_p: APcv,
37927        glVertexAttrib4ubv_p: APcv,
37928        glVertexAttrib4uiv_p: APcv,
37929        glVertexAttrib4usv_p: APcv,
37930        glVertexAttribBinding_p: APcv,
37931        glVertexAttribDivisor_p: APcv,
37932        glVertexAttribDivisorARB_p: APcv,
37933        glVertexAttribFormat_p: APcv,
37934        glVertexAttribI1i_p: APcv,
37935        glVertexAttribI1iv_p: APcv,
37936        glVertexAttribI1ui_p: APcv,
37937        glVertexAttribI1uiv_p: APcv,
37938        glVertexAttribI2i_p: APcv,
37939        glVertexAttribI2iv_p: APcv,
37940        glVertexAttribI2ui_p: APcv,
37941        glVertexAttribI2uiv_p: APcv,
37942        glVertexAttribI3i_p: APcv,
37943        glVertexAttribI3iv_p: APcv,
37944        glVertexAttribI3ui_p: APcv,
37945        glVertexAttribI3uiv_p: APcv,
37946        glVertexAttribI4bv_p: APcv,
37947        glVertexAttribI4i_p: APcv,
37948        glVertexAttribI4iv_p: APcv,
37949        glVertexAttribI4sv_p: APcv,
37950        glVertexAttribI4ubv_p: APcv,
37951        glVertexAttribI4ui_p: APcv,
37952        glVertexAttribI4uiv_p: APcv,
37953        glVertexAttribI4usv_p: APcv,
37954        glVertexAttribIFormat_p: APcv,
37955        glVertexAttribIPointer_p: APcv,
37956        glVertexAttribL1d_p: APcv,
37957        glVertexAttribL1dv_p: APcv,
37958        glVertexAttribL2d_p: APcv,
37959        glVertexAttribL2dv_p: APcv,
37960        glVertexAttribL3d_p: APcv,
37961        glVertexAttribL3dv_p: APcv,
37962        glVertexAttribL4d_p: APcv,
37963        glVertexAttribL4dv_p: APcv,
37964        glVertexAttribLFormat_p: APcv,
37965        glVertexAttribLPointer_p: APcv,
37966        glVertexAttribP1ui_p: APcv,
37967        glVertexAttribP1uiv_p: APcv,
37968        glVertexAttribP2ui_p: APcv,
37969        glVertexAttribP2uiv_p: APcv,
37970        glVertexAttribP3ui_p: APcv,
37971        glVertexAttribP3uiv_p: APcv,
37972        glVertexAttribP4ui_p: APcv,
37973        glVertexAttribP4uiv_p: APcv,
37974        glVertexAttribPointer_p: APcv,
37975        glVertexBindingDivisor_p: APcv,
37976        glViewport_p: APcv,
37977        glViewportArrayv_p: APcv,
37978        glViewportIndexedf_p: APcv,
37979        glViewportIndexedfv_p: APcv,
37980        glWaitSync_p: APcv,
37981    }
37982    #[cfg(feature = "bytemuck")]
37983    unsafe impl bytemuck::Zeroable for GlFns {}
37984    impl core::fmt::Debug for GlFns {
37985        fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
37986            write!(f, "GlFns")
37987        }
37988    }
37989}
37990// end of module