1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */
28 module derelict.gles.ext2;
29 
30 private {
31     import derelict.gles.types2;
32     import derelict.gles.constants2;
33     import derelict.gles.internal;
34 }
35 
36 private __gshared bool _GL_KHR_blend_equation_advanced;
37 bool GL_KHR_blend_equation_advanced() @property { return _GL_KHR_blend_equation_advanced; }
38 enum : uint {
39     GL_BLEND_ADVANCED_COHERENT_KHR    = 0x9285,
40     GL_MULTIPLY_KHR                   = 0x9294,
41     GL_SCREEN_KHR                     = 0x9295,
42     GL_OVERLAY_KHR                    = 0x9296,
43     GL_DARKEN_KHR                     = 0x9297,
44     GL_LIGHTEN_KHR                    = 0x9298,
45     GL_COLORDODGE_KHR                 = 0x9299,
46     GL_COLORBURN_KHR                  = 0x929A,
47     GL_HARDLIGHT_KHR                  = 0x929B,
48     GL_SOFTLIGHT_KHR                  = 0x929C,
49     GL_DIFFERENCE_KHR                 = 0x929E,
50     GL_EXCLUSION_KHR                  = 0x92A0,
51     GL_HSL_HUE_KHR                    = 0x92AD,
52     GL_HSL_SATURATION_KHR             = 0x92AE,
53     GL_HSL_COLOR_KHR                  = 0x92AF,
54     GL_HSL_LUMINOSITY_KHR             = 0x92B0,
55 }
56 extern( System ) nothrow {
57     alias da_glBlendBarrierKHR = void function(  );
58 }
59 __gshared {
60     da_glBlendBarrierKHR glBlendBarrierKHR;
61 }
62 private void load_GL_KHR_blend_equation_advanced() {
63     try {
64         bindGLFunc( cast( void** )&glBlendBarrierKHR, "glBlendBarrierKHR" );
65 
66         _GL_KHR_blend_equation_advanced = true;
67     } catch( Exception e ) {
68         _GL_KHR_blend_equation_advanced = false;
69     }
70 }
71 
72 private __gshared bool _GL_KHR_debug;
73 bool GL_KHR_debug() @property { return _GL_KHR_debug; }
74 alias GLDEBUGPROCKHR = void function( GLenum, GLenum, GLuint, GLenum, GLsizei, const( GLchar )*, const( void )* );
75 enum : uint {
76     GL_SAMPLER                        = 0x82E6,
77     GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR   = 0x8242,
78     GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR = 0x8243,
79     GL_DEBUG_CALLBACK_FUNCTION_KHR    = 0x8244,
80     GL_DEBUG_CALLBACK_USER_PARAM_KHR  = 0x8245,
81     GL_DEBUG_SOURCE_API_KHR           = 0x8246,
82     GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR = 0x8247,
83     GL_DEBUG_SOURCE_SHADER_COMPILER_KHR = 0x8248,
84     GL_DEBUG_SOURCE_THIRD_PARTY_KHR   = 0x8249,
85     GL_DEBUG_SOURCE_APPLICATION_KHR   = 0x824A,
86     GL_DEBUG_SOURCE_OTHER_KHR         = 0x824B,
87     GL_DEBUG_TYPE_ERROR_KHR           = 0x824C,
88     GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR = 0x824D,
89     GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR = 0x824E,
90     GL_DEBUG_TYPE_PORTABILITY_KHR     = 0x824F,
91     GL_DEBUG_TYPE_PERFORMANCE_KHR     = 0x8250,
92     GL_DEBUG_TYPE_OTHER_KHR           = 0x8251,
93     GL_DEBUG_TYPE_MARKER_KHR          = 0x8268,
94     GL_DEBUG_TYPE_PUSH_GROUP_KHR      = 0x8269,
95     GL_DEBUG_TYPE_POP_GROUP_KHR       = 0x826A,
96     GL_DEBUG_SEVERITY_NOTIFICATION_KHR = 0x826B,
97     GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR = 0x826C,
98     GL_DEBUG_GROUP_STACK_DEPTH_KHR    = 0x826D,
99     GL_BUFFER_KHR                     = 0x82E0,
100     GL_SHADER_KHR                     = 0x82E1,
101     GL_PROGRAM_KHR                    = 0x82E2,
102     GL_VERTEX_ARRAY_KHR               = 0x8074,
103     GL_QUERY_KHR                      = 0x82E3,
104     GL_SAMPLER_KHR                    = 0x82E6,
105     GL_MAX_LABEL_LENGTH_KHR           = 0x82E8,
106     GL_MAX_DEBUG_MESSAGE_LENGTH_KHR   = 0x9143,
107     GL_MAX_DEBUG_LOGGED_MESSAGES_KHR  = 0x9144,
108     GL_DEBUG_LOGGED_MESSAGES_KHR      = 0x9145,
109     GL_DEBUG_SEVERITY_HIGH_KHR        = 0x9146,
110     GL_DEBUG_SEVERITY_MEDIUM_KHR      = 0x9147,
111     GL_DEBUG_SEVERITY_LOW_KHR         = 0x9148,
112     GL_DEBUG_OUTPUT_KHR               = 0x92E0,
113     GL_CONTEXT_FLAG_DEBUG_BIT_KHR     = 0x00000002,
114     GL_STACK_OVERFLOW_KHR             = 0x0503,
115     GL_STACK_UNDERFLOW_KHR            = 0x0504,
116 }
117 extern( System ) nothrow {
118     alias da_glDebugMessageControlKHR = void function( GLenum, GLenum, GLenum, GLsizei, const( GLuint )*, GLboolean );
119     alias da_glDebugMessageInsertKHR = void function( GLenum, GLenum, GLuint, GLenum, GLsizei, const( GLchar )* );
120     alias da_glDebugMessageCallbackKHR = void function( GLDEBUGPROCKHR, const( void )* );
121     alias da_glGetDebugMessageLogKHR = GLuint function ( GLuint, GLsizei, GLenum*, GLenum*, GLuint*, GLenum*, GLsizei*, GLchar* );
122     alias da_glPushDebugGroupKHR = void function( GLenum, GLuint, GLsizei, const( GLchar )* );
123     alias da_glPopDebugGroupKHR = void function(  );
124     alias da_glObjectLabelKHR = void function( GLenum, GLuint, GLsizei, const( GLchar )* );
125     alias da_glGetObjectLabelKHR = void function( GLenum, GLuint, GLsizei, GLsizei*, GLchar* );
126     alias da_glObjectPtrLabelKHR = void function( const( void )*, GLsizei, const( GLchar )* );
127     alias da_glGetObjectPtrLabelKHR = void function( const( void )*, GLsizei, GLsizei*, GLchar* );
128     alias da_glGetPointervKHR = void function( GLenum, void** );
129 }
130 __gshared {
131     da_glDebugMessageControlKHR glDebugMessageControlKHR;
132     da_glDebugMessageInsertKHR glDebugMessageInsertKHR;
133     da_glDebugMessageCallbackKHR glDebugMessageCallbackKHR;
134     da_glGetDebugMessageLogKHR glGetDebugMessageLogKHR;
135     da_glPushDebugGroupKHR glPushDebugGroupKHR;
136     da_glPopDebugGroupKHR glPopDebugGroupKHR;
137     da_glObjectLabelKHR glObjectLabelKHR;
138     da_glGetObjectLabelKHR glGetObjectLabelKHR;
139     da_glObjectPtrLabelKHR glObjectPtrLabelKHR;
140     da_glGetObjectPtrLabelKHR glGetObjectPtrLabelKHR;
141     da_glGetPointervKHR glGetPointervKHR;
142 }
143 private void load_GL_KHR_debug() {
144     try {
145         bindGLFunc( cast( void** )&glDebugMessageControlKHR, "glDebugMessageControlKHR" );
146         bindGLFunc( cast( void** )&glDebugMessageInsertKHR, "glDebugMessageInsertKHR" );
147         bindGLFunc( cast( void** )&glDebugMessageCallbackKHR, "glDebugMessageCallbackKHR" );
148         bindGLFunc( cast( void** )&glGetDebugMessageLogKHR, "glGetDebugMessageLogKHR" );
149         bindGLFunc( cast( void** )&glPushDebugGroupKHR, "glPushDebugGroupKHR" );
150         bindGLFunc( cast( void** )&glPopDebugGroupKHR, "glPopDebugGroupKHR" );
151         bindGLFunc( cast( void** )&glObjectLabelKHR, "glObjectLabelKHR" );
152         bindGLFunc( cast( void** )&glGetObjectLabelKHR, "glGetObjectLabelKHR" );
153         bindGLFunc( cast( void** )&glObjectPtrLabelKHR, "glObjectPtrLabelKHR" );
154         bindGLFunc( cast( void** )&glGetObjectPtrLabelKHR, "glGetObjectPtrLabelKHR" );
155         bindGLFunc( cast( void** )&glGetPointervKHR, "glGetPointervKHR" );
156 
157         _GL_KHR_debug = true;
158     } catch( Exception e ) {
159         _GL_KHR_debug = false;
160     }
161 }
162 
163 private __gshared bool _GL_KHR_texture_compression_astc_hdr;
164 bool GL_KHR_texture_compression_astc_hdr() @property { return _GL_KHR_texture_compression_astc_hdr; }
165 enum : uint {
166     GL_COMPRESSED_RGBA_ASTC_4x4_KHR   = 0x93B0,
167     GL_COMPRESSED_RGBA_ASTC_5x4_KHR   = 0x93B1,
168     GL_COMPRESSED_RGBA_ASTC_5x5_KHR   = 0x93B2,
169     GL_COMPRESSED_RGBA_ASTC_6x5_KHR   = 0x93B3,
170     GL_COMPRESSED_RGBA_ASTC_6x6_KHR   = 0x93B4,
171     GL_COMPRESSED_RGBA_ASTC_8x5_KHR   = 0x93B5,
172     GL_COMPRESSED_RGBA_ASTC_8x6_KHR   = 0x93B6,
173     GL_COMPRESSED_RGBA_ASTC_8x8_KHR   = 0x93B7,
174     GL_COMPRESSED_RGBA_ASTC_10x5_KHR  = 0x93B8,
175     GL_COMPRESSED_RGBA_ASTC_10x6_KHR  = 0x93B9,
176     GL_COMPRESSED_RGBA_ASTC_10x8_KHR  = 0x93BA,
177     GL_COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB,
178     GL_COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC,
179     GL_COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD,
180     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0,
181     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1,
182     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2,
183     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3,
184     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4,
185     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5,
186     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6,
187     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7,
188     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8,
189     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9,
190     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA,
191     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB,
192     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC,
193     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD,
194 }
195 
196 private __gshared bool _GL_KHR_texture_compression_astc_ldr;
197 bool GL_KHR_texture_compression_astc_ldr() @property { return _GL_KHR_texture_compression_astc_ldr; }
198 
199 private __gshared bool _GL_OES_EGL_image;
200 bool GL_OES_EGL_image() @property { return _GL_OES_EGL_image; }
201 alias GLeglImageOES = void*;
202 extern( System ) nothrow {
203     alias da_glEGLImageTargetTexture2DOES = void function( GLenum, GLeglImageOES );
204     alias da_glEGLImageTargetRenderbufferStorageOES = void function( GLenum, GLeglImageOES );
205 }
206 __gshared {
207     da_glEGLImageTargetTexture2DOES glEGLImageTargetTexture2DOES;
208     da_glEGLImageTargetRenderbufferStorageOES glEGLImageTargetRenderbufferStorageOES;
209 }
210 private void load_GL_OES_EGL_image() {
211     try {
212         bindGLFunc( cast( void** )&glEGLImageTargetTexture2DOES, "glEGLImageTargetTexture2DOES" );
213         bindGLFunc( cast( void** )&glEGLImageTargetRenderbufferStorageOES, "glEGLImageTargetRenderbufferStorageOES" );
214 
215         _GL_OES_EGL_image = true;
216     } catch( Exception e ) {
217         _GL_OES_EGL_image = false;
218     }
219 }
220 
221 private __gshared bool _GL_OES_EGL_image_external;
222 bool GL_OES_EGL_image_external() @property { return _GL_OES_EGL_image_external; }
223 enum : uint {
224     GL_TEXTURE_EXTERNAL_OES           = 0x8D65,
225     GL_TEXTURE_BINDING_EXTERNAL_OES   = 0x8D67,
226     GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES = 0x8D68,
227     GL_SAMPLER_EXTERNAL_OES           = 0x8D66,
228 }
229 
230 private __gshared bool _GL_OES_compressed_ETC1_RGB8_texture;
231 bool GL_OES_compressed_ETC1_RGB8_texture() @property { return _GL_OES_compressed_ETC1_RGB8_texture; }
232 enum : uint {
233     GL_ETC1_RGB8_OES                  = 0x8D64,
234 }
235 
236 private __gshared bool _GL_OES_compressed_paletted_texture;
237 bool GL_OES_compressed_paletted_texture() @property { return _GL_OES_compressed_paletted_texture; }
238 enum : uint {
239     GL_PALETTE4_RGB8_OES              = 0x8B90,
240     GL_PALETTE4_RGBA8_OES             = 0x8B91,
241     GL_PALETTE4_R5_G6_B5_OES          = 0x8B92,
242     GL_PALETTE4_RGBA4_OES             = 0x8B93,
243     GL_PALETTE4_RGB5_A1_OES           = 0x8B94,
244     GL_PALETTE8_RGB8_OES              = 0x8B95,
245     GL_PALETTE8_RGBA8_OES             = 0x8B96,
246     GL_PALETTE8_R5_G6_B5_OES          = 0x8B97,
247     GL_PALETTE8_RGBA4_OES             = 0x8B98,
248     GL_PALETTE8_RGB5_A1_OES           = 0x8B99,
249 }
250 
251 private __gshared bool _GL_OES_depth24;
252 bool GL_OES_depth24() @property { return _GL_OES_depth24; }
253 enum : uint {
254     GL_DEPTH_COMPONENT24_OES          = 0x81A6,
255 }
256 
257 private __gshared bool _GL_OES_depth32;
258 bool GL_OES_depth32() @property { return _GL_OES_depth32; }
259 enum : uint {
260     GL_DEPTH_COMPONENT32_OES          = 0x81A7,
261 }
262 
263 private __gshared bool _GL_OES_depth_texture;
264 bool GL_OES_depth_texture() @property { return _GL_OES_depth_texture; }
265 
266 private __gshared bool _GL_OES_element_index_uint;
267 bool GL_OES_element_index_uint() @property { return _GL_OES_element_index_uint; }
268 
269 private __gshared bool _GL_OES_fbo_render_mipmap;
270 bool GL_OES_fbo_render_mipmap() @property { return _GL_OES_fbo_render_mipmap; }
271 
272 private __gshared bool _GL_OES_fragment_precision_high;
273 bool GL_OES_fragment_precision_high() @property { return _GL_OES_fragment_precision_high; }
274 
275 private __gshared bool _GL_OES_get_program_binary;
276 bool GL_OES_get_program_binary() @property { return _GL_OES_get_program_binary; }
277 enum : uint {
278     GL_PROGRAM_BINARY_LENGTH_OES      = 0x8741,
279     GL_NUM_PROGRAM_BINARY_FORMATS_OES = 0x87FE,
280     GL_PROGRAM_BINARY_FORMATS_OES     = 0x87FF,
281 }
282 extern( System ) nothrow {
283     alias da_glGetProgramBinaryOES = void function( GLuint, GLsizei, GLsizei*, GLenum*, void* );
284     alias da_glProgramBinaryOES = void function( GLuint, GLenum, const( void )*, GLint );
285 }
286 __gshared {
287     da_glGetProgramBinaryOES glGetProgramBinaryOES;
288     da_glProgramBinaryOES glProgramBinaryOES;
289 }
290 private void load_GL_OES_get_program_binary() {
291     try {
292         bindGLFunc( cast( void** )&glGetProgramBinaryOES, "glGetProgramBinaryOES" );
293         bindGLFunc( cast( void** )&glProgramBinaryOES, "glProgramBinaryOES" );
294 
295         _GL_OES_get_program_binary = true;
296     } catch( Exception e ) {
297         _GL_OES_get_program_binary = false;
298     }
299 }
300 
301 private __gshared bool _GL_OES_mapbuffer;
302 bool GL_OES_mapbuffer() @property { return _GL_OES_mapbuffer; }
303 enum : uint {
304     GL_WRITE_ONLY_OES                 = 0x88B9,
305     GL_BUFFER_ACCESS_OES              = 0x88BB,
306     GL_BUFFER_MAPPED_OES              = 0x88BC,
307     GL_BUFFER_MAP_POINTER_OES         = 0x88BD,
308 }
309 extern( System ) nothrow {
310     alias da_glMapBufferOES = void* function( GLenum, GLenum );
311     alias da_glUnmapBufferOES = GLboolean function( GLenum );
312     alias da_glGetBufferPointervOES = void function( GLenum, GLenum, void** );
313 }
314 __gshared {
315     da_glMapBufferOES glMapBufferOES;
316     da_glUnmapBufferOES glUnmapBufferOES;
317     da_glGetBufferPointervOES glGetBufferPointervOES;
318 }
319 private void load_GL_OES_mapbuffer() {
320     try {
321         bindGLFunc( cast( void** )&glMapBufferOES, "glMapBufferOES" );
322         bindGLFunc( cast( void** )&glUnmapBufferOES, "glUnmapBufferOES" );
323         bindGLFunc( cast( void** )&glGetBufferPointervOES, "glGetBufferPointervOES" );
324 
325         _GL_OES_mapbuffer = true;
326     } catch( Exception e ) {
327         _GL_OES_mapbuffer = false;
328     }
329 }
330 
331 private __gshared bool _GL_OES_packed_depth_stencil;
332 bool GL_OES_packed_depth_stencil() @property { return _GL_OES_packed_depth_stencil; }
333 enum : uint {
334     GL_DEPTH_STENCIL_OES              = 0x84F9,
335     GL_UNSIGNED_INT_24_8_OES          = 0x84FA,
336     GL_DEPTH24_STENCIL8_OES           = 0x88F0,
337 }
338 
339 private __gshared bool _GL_OES_required_internalformat;
340 bool GL_OES_required_internalformat() @property { return _GL_OES_required_internalformat; }
341 enum : uint {
342     GL_ALPHA8_OES                     = 0x803C,
343     GL_DEPTH_COMPONENT16_OES          = 0x81A5,
344     GL_LUMINANCE4_ALPHA4_OES          = 0x8043,
345     GL_LUMINANCE8_ALPHA8_OES          = 0x8045,
346     GL_LUMINANCE8_OES                 = 0x8040,
347     GL_RGBA4_OES                      = 0x8056,
348     GL_RGB5_A1_OES                    = 0x8057,
349     GL_RGB565_OES                     = 0x8D62,
350     GL_RGB8_OES                       = 0x8051,
351     GL_RGBA8_OES                      = 0x8058,
352     GL_RGB10_EXT                      = 0x8052,
353     GL_RGB10_A2_EXT                   = 0x8059,
354 }
355 
356 private __gshared bool _GL_OES_rgb8_rgba8;
357 bool GL_OES_rgb8_rgba8() @property { return _GL_OES_rgb8_rgba8; }
358 
359 private __gshared bool _GL_OES_sample_shading;
360 bool GL_OES_sample_shading() @property { return _GL_OES_sample_shading; }
361 enum : uint {
362     GL_SAMPLE_SHADING_OES             = 0x8C36,
363     GL_MIN_SAMPLE_SHADING_VALUE_OES   = 0x8C37,
364 }
365 extern( System ) nothrow {
366     alias da_glMinSampleShadingOES = void function( GLfloat );
367 }
368 __gshared {
369     da_glMinSampleShadingOES glMinSampleShadingOES;
370 }
371 private void load_GL_OES_sample_shading() {
372     try {
373         bindGLFunc( cast( void** )&glMinSampleShadingOES, "glMinSampleShadingOES" );
374 
375         _GL_OES_sample_shading = true;
376     } catch( Exception e ) {
377         _GL_OES_sample_shading = false;
378     }
379 }
380 
381 private __gshared bool _GL_OES_sample_variables;
382 bool GL_OES_sample_variables() @property { return _GL_OES_sample_variables; }
383 
384 private __gshared bool _GL_OES_shader_image_atomic;
385 bool GL_OES_shader_image_atomic() @property { return _GL_OES_shader_image_atomic; }
386 
387 private __gshared bool _GL_OES_shader_multisample_interpolation;
388 bool GL_OES_shader_multisample_interpolation() @property { return _GL_OES_shader_multisample_interpolation; }
389 enum : uint {
390     GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES = 0x8E5B,
391     GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES = 0x8E5C,
392     GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES = 0x8E5D,
393 }
394 
395 private __gshared bool _GL_OES_standard_derivatives;
396 bool GL_OES_standard_derivatives() @property { return _GL_OES_standard_derivatives; }
397 enum : uint {
398     GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B,
399 }
400 
401 private __gshared bool _GL_OES_stencil1;
402 bool GL_OES_stencil1() @property { return _GL_OES_stencil1; }
403 enum : uint {
404     GL_STENCIL_INDEX1_OES             = 0x8D46,
405 }
406 
407 private __gshared bool _GL_OES_stencil4;
408 bool GL_OES_stencil4() @property { return _GL_OES_stencil4; }
409 enum : uint {
410     GL_STENCIL_INDEX4_OES             = 0x8D47,
411 }
412 
413 private __gshared bool _GL_OES_surfaceless_context;
414 bool GL_OES_surfaceless_context() @property { return _GL_OES_surfaceless_context; }
415 enum : uint {
416     GL_FRAMEBUFFER_UNDEFINED_OES      = 0x8219,
417 }
418 
419 private __gshared bool _GL_OES_texture_3D;
420 bool GL_OES_texture_3D() @property { return _GL_OES_texture_3D; }
421 enum : uint {
422     GL_TEXTURE_WRAP_R_OES             = 0x8072,
423     GL_TEXTURE_3D_OES                 = 0x806F,
424     GL_TEXTURE_BINDING_3D_OES         = 0x806A,
425     GL_MAX_3D_TEXTURE_SIZE_OES        = 0x8073,
426     GL_SAMPLER_3D_OES                 = 0x8B5F,
427     GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES = 0x8CD4,
428 }
429 extern( System ) nothrow {
430     alias da_glTexImage3DOES = void function( GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const( void )* );
431     alias da_glTexSubImage3DOES = void function( GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const( void )* );
432     alias da_glCopyTexSubImage3DOES = void function( GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei );
433     alias da_glCompressedTexImage3DOES = void function( GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const( void )* );
434     alias da_glCompressedTexSubImage3DOES = void function( GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const( void )* );
435     alias da_glFramebufferTexture3DOES = void function( GLenum, GLenum, GLenum, GLuint, GLint, GLint );
436 }
437 __gshared {
438     da_glTexImage3DOES glTexImage3DOES;
439     da_glTexSubImage3DOES glTexSubImage3DOES;
440     da_glCopyTexSubImage3DOES glCopyTexSubImage3DOES;
441     da_glCompressedTexImage3DOES glCompressedTexImage3DOES;
442     da_glCompressedTexSubImage3DOES glCompressedTexSubImage3DOES;
443     da_glFramebufferTexture3DOES glFramebufferTexture3DOES;
444 }
445 private void load_GL_OES_texture_3D() {
446     try {
447         bindGLFunc( cast( void** )&glTexImage3DOES, "glTexImage3DOES" );
448         bindGLFunc( cast( void** )&glTexSubImage3DOES, "glTexSubImage3DOES" );
449         bindGLFunc( cast( void** )&glCopyTexSubImage3DOES, "glCopyTexSubImage3DOES" );
450         bindGLFunc( cast( void** )&glCompressedTexImage3DOES, "glCompressedTexImage3DOES" );
451         bindGLFunc( cast( void** )&glCompressedTexSubImage3DOES, "glCompressedTexSubImage3DOES" );
452         bindGLFunc( cast( void** )&glFramebufferTexture3DOES, "glFramebufferTexture3DOES" );
453 
454         _GL_OES_texture_3D = true;
455     } catch( Exception e ) {
456         _GL_OES_texture_3D = false;
457     }
458 }
459 
460 private __gshared bool _GL_OES_texture_compression_astc;
461 bool GL_OES_texture_compression_astc() @property { return _GL_OES_texture_compression_astc; }
462 enum : uint {
463     GL_COMPRESSED_RGBA_ASTC_3x3x3_OES = 0x93C0,
464     GL_COMPRESSED_RGBA_ASTC_4x3x3_OES = 0x93C1,
465     GL_COMPRESSED_RGBA_ASTC_4x4x3_OES = 0x93C2,
466     GL_COMPRESSED_RGBA_ASTC_4x4x4_OES = 0x93C3,
467     GL_COMPRESSED_RGBA_ASTC_5x4x4_OES = 0x93C4,
468     GL_COMPRESSED_RGBA_ASTC_5x5x4_OES = 0x93C5,
469     GL_COMPRESSED_RGBA_ASTC_5x5x5_OES = 0x93C6,
470     GL_COMPRESSED_RGBA_ASTC_6x5x5_OES = 0x93C7,
471     GL_COMPRESSED_RGBA_ASTC_6x6x5_OES = 0x93C8,
472     GL_COMPRESSED_RGBA_ASTC_6x6x6_OES = 0x93C9,
473     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES = 0x93E0,
474     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES = 0x93E1,
475     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES = 0x93E2,
476     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES = 0x93E3,
477     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES = 0x93E4,
478     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES = 0x93E5,
479     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES = 0x93E6,
480     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES = 0x93E7,
481     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES = 0x93E8,
482     GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES = 0x93E9,
483 }
484 
485 private __gshared bool _GL_OES_texture_float;
486 bool GL_OES_texture_float() @property { return _GL_OES_texture_float; }
487 
488 private __gshared bool _GL_OES_texture_float_linear;
489 bool GL_OES_texture_float_linear() @property { return _GL_OES_texture_float_linear; }
490 
491 private __gshared bool _GL_OES_texture_half_float;
492 bool GL_OES_texture_half_float() @property { return _GL_OES_texture_half_float; }
493 enum : uint {
494     GL_HALF_FLOAT_OES                 = 0x8D61,
495 }
496 
497 private __gshared bool _GL_OES_texture_half_float_linear;
498 bool GL_OES_texture_half_float_linear() @property { return _GL_OES_texture_half_float_linear; }
499 
500 private __gshared bool _GL_OES_texture_npot;
501 bool GL_OES_texture_npot() @property { return _GL_OES_texture_npot; }
502 
503 private __gshared bool _GL_OES_texture_stencil8;
504 bool GL_OES_texture_stencil8() @property { return _GL_OES_texture_stencil8; }
505 enum : uint {
506     GL_STENCIL_INDEX_OES              = 0x1901,
507     GL_STENCIL_INDEX8_OES             = 0x8D48,
508 }
509 
510 private __gshared bool _GL_OES_texture_storage_multisample_2d_array;
511 bool GL_OES_texture_storage_multisample_2d_array() @property { return _GL_OES_texture_storage_multisample_2d_array; }
512 enum : uint {
513     GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES = 0x9102,
514     GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES = 0x9105,
515     GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x910B,
516     GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x910C,
517     GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x910D,
518 }
519 extern( System ) nothrow {
520     alias da_glTexStorage3DMultisampleOES = void function( GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean );
521 }
522 __gshared {
523     da_glTexStorage3DMultisampleOES glTexStorage3DMultisampleOES;
524 }
525 private void load_GL_OES_texture_storage_multisample_2d_array() {
526     try {
527         bindGLFunc( cast( void** )&glTexStorage3DMultisampleOES, "glTexStorage3DMultisampleOES" );
528 
529         _GL_OES_texture_storage_multisample_2d_array = true;
530     } catch( Exception e ) {
531         _GL_OES_texture_storage_multisample_2d_array = false;
532     }
533 }
534 
535 private __gshared bool _GL_OES_vertex_array_object;
536 bool GL_OES_vertex_array_object() @property { return _GL_OES_vertex_array_object; }
537 enum : uint {
538     GL_VERTEX_ARRAY_BINDING_OES       = 0x85B5,
539 }
540 extern( System ) nothrow {
541     alias da_glBindVertexArrayOES = void function( GLuint );
542     alias da_glDeleteVertexArraysOES = void function( GLsizei, const( GLuint )* );
543     alias da_glGenVertexArraysOES = void function( GLsizei, GLuint* );
544     alias da_glIsVertexArrayOES = GLboolean function( GLuint );
545 }
546 __gshared {
547     da_glBindVertexArrayOES glBindVertexArrayOES;
548     da_glDeleteVertexArraysOES glDeleteVertexArraysOES;
549     da_glGenVertexArraysOES glGenVertexArraysOES;
550     da_glIsVertexArrayOES glIsVertexArrayOES;
551 }
552 private void load_GL_OES_vertex_array_object() {
553     try {
554         bindGLFunc( cast( void** )&glBindVertexArrayOES, "glBindVertexArrayOES" );
555         bindGLFunc( cast( void** )&glDeleteVertexArraysOES, "glDeleteVertexArraysOES" );
556         bindGLFunc( cast( void** )&glGenVertexArraysOES, "glGenVertexArraysOES" );
557         bindGLFunc( cast( void** )&glIsVertexArrayOES, "glIsVertexArrayOES" );
558 
559         _GL_OES_vertex_array_object = true;
560     } catch( Exception e ) {
561         _GL_OES_vertex_array_object = false;
562     }
563 }
564 
565 private __gshared bool _GL_OES_vertex_half_float;
566 bool GL_OES_vertex_half_float() @property { return _GL_OES_vertex_half_float; }
567 
568 private __gshared bool _GL_OES_vertex_type_10_10_10_2;
569 bool GL_OES_vertex_type_10_10_10_2() @property { return _GL_OES_vertex_type_10_10_10_2; }
570 enum : uint {
571     GL_UNSIGNED_INT_10_10_10_2_OES    = 0x8DF6,
572     GL_INT_10_10_10_2_OES             = 0x8DF7,
573 }
574 
575 private __gshared bool _GL_AMD_compressed_3DC_texture;
576 bool GL_AMD_compressed_3DC_texture() @property { return _GL_AMD_compressed_3DC_texture; }
577 enum : uint {
578     GL_3DC_X_AMD                      = 0x87F9,
579     GL_3DC_XY_AMD                     = 0x87FA,
580 }
581 
582 private __gshared bool _GL_AMD_compressed_ATC_texture;
583 bool GL_AMD_compressed_ATC_texture() @property { return _GL_AMD_compressed_ATC_texture; }
584 enum : uint {
585     GL_ATC_RGB_AMD                    = 0x8C92,
586     GL_ATC_RGBA_EXPLICIT_ALPHA_AMD    = 0x8C93,
587     GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD = 0x87EE,
588 }
589 
590 private __gshared bool _GL_AMD_performance_monitor;
591 bool GL_AMD_performance_monitor() @property { return _GL_AMD_performance_monitor; }
592 enum : uint {
593     GL_COUNTER_TYPE_AMD               = 0x8BC0,
594     GL_COUNTER_RANGE_AMD              = 0x8BC1,
595     GL_UNSIGNED_INT64_AMD             = 0x8BC2,
596     GL_PERCENTAGE_AMD                 = 0x8BC3,
597     GL_PERFMON_RESULT_AVAILABLE_AMD   = 0x8BC4,
598     GL_PERFMON_RESULT_SIZE_AMD        = 0x8BC5,
599     GL_PERFMON_RESULT_AMD             = 0x8BC6,
600 }
601 extern( System ) nothrow {
602     alias da_glGetPerfMonitorGroupsAMD = void function( GLint*, GLsizei, GLuint* );
603     alias da_glGetPerfMonitorCountersAMD = void function( GLuint, GLint*, GLint*, GLsizei, GLuint* );
604     alias da_glGetPerfMonitorGroupStringAMD = void function( GLuint, GLsizei, GLsizei*, GLchar* );
605     alias da_glGetPerfMonitorCounterStringAMD = void function( GLuint, GLuint, GLsizei, GLsizei*, GLchar* );
606     alias da_glGetPerfMonitorCounterInfoAMD = void function( GLuint, GLuint, GLenum, void* );
607     alias da_glGenPerfMonitorsAMD = void function( GLsizei, GLuint* );
608     alias da_glDeletePerfMonitorsAMD = void function( GLsizei, GLuint* );
609     alias da_glSelectPerfMonitorCountersAMD = void function( GLuint, GLboolean, GLuint, GLint, GLuint* );
610     alias da_glBeginPerfMonitorAMD = void function( GLuint );
611     alias da_glEndPerfMonitorAMD = void function( GLuint );
612     alias da_glGetPerfMonitorCounterDataAMD = void function( GLuint, GLenum, GLsizei, GLuint*, GLint* );
613 }
614 __gshared {
615     da_glGetPerfMonitorGroupsAMD glGetPerfMonitorGroupsAMD;
616     da_glGetPerfMonitorCountersAMD glGetPerfMonitorCountersAMD;
617     da_glGetPerfMonitorGroupStringAMD glGetPerfMonitorGroupStringAMD;
618     da_glGetPerfMonitorCounterStringAMD glGetPerfMonitorCounterStringAMD;
619     da_glGetPerfMonitorCounterInfoAMD glGetPerfMonitorCounterInfoAMD;
620     da_glGenPerfMonitorsAMD glGenPerfMonitorsAMD;
621     da_glDeletePerfMonitorsAMD glDeletePerfMonitorsAMD;
622     da_glSelectPerfMonitorCountersAMD glSelectPerfMonitorCountersAMD;
623     da_glBeginPerfMonitorAMD glBeginPerfMonitorAMD;
624     da_glEndPerfMonitorAMD glEndPerfMonitorAMD;
625     da_glGetPerfMonitorCounterDataAMD glGetPerfMonitorCounterDataAMD;
626 }
627 private void load_GL_AMD_performance_monitor() {
628     try {
629         bindGLFunc( cast( void** )&glGetPerfMonitorGroupsAMD, "glGetPerfMonitorGroupsAMD" );
630         bindGLFunc( cast( void** )&glGetPerfMonitorCountersAMD, "glGetPerfMonitorCountersAMD" );
631         bindGLFunc( cast( void** )&glGetPerfMonitorGroupStringAMD, "glGetPerfMonitorGroupStringAMD" );
632         bindGLFunc( cast( void** )&glGetPerfMonitorCounterStringAMD, "glGetPerfMonitorCounterStringAMD" );
633         bindGLFunc( cast( void** )&glGetPerfMonitorCounterInfoAMD, "glGetPerfMonitorCounterInfoAMD" );
634         bindGLFunc( cast( void** )&glGenPerfMonitorsAMD, "glGenPerfMonitorsAMD" );
635         bindGLFunc( cast( void** )&glDeletePerfMonitorsAMD, "glDeletePerfMonitorsAMD" );
636         bindGLFunc( cast( void** )&glSelectPerfMonitorCountersAMD, "glSelectPerfMonitorCountersAMD" );
637         bindGLFunc( cast( void** )&glBeginPerfMonitorAMD, "glBeginPerfMonitorAMD" );
638         bindGLFunc( cast( void** )&glEndPerfMonitorAMD, "glEndPerfMonitorAMD" );
639         bindGLFunc( cast( void** )&glGetPerfMonitorCounterDataAMD, "glGetPerfMonitorCounterDataAMD" );
640 
641         _GL_AMD_performance_monitor = true;
642     } catch( Exception e ) {
643         _GL_AMD_performance_monitor = false;
644     }
645 }
646 
647 private __gshared bool _GL_AMD_program_binary_Z400;
648 bool GL_AMD_program_binary_Z400() @property { return _GL_AMD_program_binary_Z400; }
649 enum : uint {
650     GL_Z400_BINARY_AMD                = 0x8740,
651 }
652 
653 private __gshared bool _GL_ANGLE_depth_texture;
654 bool GL_ANGLE_depth_texture() @property { return _GL_ANGLE_depth_texture; }
655 
656 private __gshared bool _GL_ANGLE_framebuffer_blit;
657 bool GL_ANGLE_framebuffer_blit() @property { return _GL_ANGLE_framebuffer_blit; }
658 enum : uint {
659     GL_READ_FRAMEBUFFER_ANGLE         = 0x8CA8,
660     GL_DRAW_FRAMEBUFFER_ANGLE         = 0x8CA9,
661     GL_DRAW_FRAMEBUFFER_BINDING_ANGLE = 0x8CA6,
662     GL_READ_FRAMEBUFFER_BINDING_ANGLE = 0x8CAA,
663 }
664 extern( System ) nothrow {
665     alias da_glBlitFramebufferANGLE = void function( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield, GLenum );
666 }
667 __gshared {
668     da_glBlitFramebufferANGLE glBlitFramebufferANGLE;
669 }
670 private void load_GL_ANGLE_framebuffer_blit() {
671     try {
672         bindGLFunc( cast( void** )&glBlitFramebufferANGLE, "glBlitFramebufferANGLE" );
673 
674         _GL_ANGLE_framebuffer_blit = true;
675     } catch( Exception e ) {
676         _GL_ANGLE_framebuffer_blit = false;
677     }
678 }
679 
680 private __gshared bool _GL_ANGLE_framebuffer_multisample;
681 bool GL_ANGLE_framebuffer_multisample() @property { return _GL_ANGLE_framebuffer_multisample; }
682 enum : uint {
683     GL_RENDERBUFFER_SAMPLES_ANGLE     = 0x8CAB,
684     GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE = 0x8D56,
685     GL_MAX_SAMPLES_ANGLE              = 0x8D57,
686 }
687 extern( System ) nothrow {
688     alias da_glRenderbufferStorageMultisampleANGLE = void function( GLenum, GLsizei, GLenum, GLsizei, GLsizei );
689 }
690 __gshared {
691     da_glRenderbufferStorageMultisampleANGLE glRenderbufferStorageMultisampleANGLE;
692 }
693 private void load_GL_ANGLE_framebuffer_multisample() {
694     try {
695         bindGLFunc( cast( void** )&glRenderbufferStorageMultisampleANGLE, "glRenderbufferStorageMultisampleANGLE" );
696 
697         _GL_ANGLE_framebuffer_multisample = true;
698     } catch( Exception e ) {
699         _GL_ANGLE_framebuffer_multisample = false;
700     }
701 }
702 
703 private __gshared bool _GL_ANGLE_instanced_arrays;
704 bool GL_ANGLE_instanced_arrays() @property { return _GL_ANGLE_instanced_arrays; }
705 enum : uint {
706     GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88FE,
707 }
708 extern( System ) nothrow {
709     alias da_glDrawArraysInstancedANGLE = void function( GLenum, GLint, GLsizei, GLsizei );
710     alias da_glDrawElementsInstancedANGLE = void function( GLenum, GLsizei, GLenum, const( void )*, GLsizei );
711     alias da_glVertexAttribDivisorANGLE = void function( GLuint, GLuint );
712 }
713 __gshared {
714     da_glDrawArraysInstancedANGLE glDrawArraysInstancedANGLE;
715     da_glDrawElementsInstancedANGLE glDrawElementsInstancedANGLE;
716     da_glVertexAttribDivisorANGLE glVertexAttribDivisorANGLE;
717 }
718 private void load_GL_ANGLE_instanced_arrays() {
719     try {
720         bindGLFunc( cast( void** )&glDrawArraysInstancedANGLE, "glDrawArraysInstancedANGLE" );
721         bindGLFunc( cast( void** )&glDrawElementsInstancedANGLE, "glDrawElementsInstancedANGLE" );
722         bindGLFunc( cast( void** )&glVertexAttribDivisorANGLE, "glVertexAttribDivisorANGLE" );
723 
724         _GL_ANGLE_instanced_arrays = true;
725     } catch( Exception e ) {
726         _GL_ANGLE_instanced_arrays = false;
727     }
728 }
729 
730 private __gshared bool _GL_ANGLE_pack_reverse_row_order;
731 bool GL_ANGLE_pack_reverse_row_order() @property { return _GL_ANGLE_pack_reverse_row_order; }
732 enum : uint {
733     GL_PACK_REVERSE_ROW_ORDER_ANGLE   = 0x93A4,
734 }
735 
736 private __gshared bool _GL_ANGLE_program_binary;
737 bool GL_ANGLE_program_binary() @property { return _GL_ANGLE_program_binary; }
738 enum : uint {
739     GL_PROGRAM_BINARY_ANGLE           = 0x93A6,
740 }
741 
742 private __gshared bool _GL_ANGLE_texture_compression_dxt3;
743 bool GL_ANGLE_texture_compression_dxt3() @property { return _GL_ANGLE_texture_compression_dxt3; }
744 enum : uint {
745     GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE = 0x83F2,
746 }
747 
748 private __gshared bool _GL_ANGLE_texture_compression_dxt5;
749 bool GL_ANGLE_texture_compression_dxt5() @property { return _GL_ANGLE_texture_compression_dxt5; }
750 enum : uint {
751     GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE = 0x83F3,
752 }
753 
754 private __gshared bool _GL_ANGLE_texture_usage;
755 bool GL_ANGLE_texture_usage() @property { return _GL_ANGLE_texture_usage; }
756 enum : uint {
757     GL_TEXTURE_USAGE_ANGLE            = 0x93A2,
758     GL_FRAMEBUFFER_ATTACHMENT_ANGLE   = 0x93A3,
759 }
760 
761 private __gshared bool _GL_ANGLE_translated_shader_source;
762 bool GL_ANGLE_translated_shader_source() @property { return _GL_ANGLE_translated_shader_source; }
763 enum : uint {
764     GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE = 0x93A0,
765 }
766 extern( System ) nothrow {
767     alias da_glGetTranslatedShaderSourceANGLE = void function( GLuint, GLsizei, GLsizei*, GLchar* );
768 }
769 __gshared {
770     da_glGetTranslatedShaderSourceANGLE glGetTranslatedShaderSourceANGLE;
771 }
772 private void load_GL_ANGLE_translated_shader_source() {
773     try {
774         bindGLFunc( cast( void** )&glGetTranslatedShaderSourceANGLE, "glGetTranslatedShaderSourceANGLE" );
775 
776         _GL_ANGLE_translated_shader_source = true;
777     } catch( Exception e ) {
778         _GL_ANGLE_translated_shader_source = false;
779     }
780 }
781 
782 private __gshared bool _GL_APPLE_copy_texture_levels;
783 bool GL_APPLE_copy_texture_levels() @property { return _GL_APPLE_copy_texture_levels; }
784 extern( System ) nothrow {
785     alias da_glCopyTextureLevelsAPPLE = void function( GLuint, GLuint, GLint, GLsizei );
786 }
787 __gshared {
788     da_glCopyTextureLevelsAPPLE glCopyTextureLevelsAPPLE;
789 }
790 private void load_GL_APPLE_copy_texture_levels() {
791     try {
792         bindGLFunc( cast( void** )&glCopyTextureLevelsAPPLE, "glCopyTextureLevelsAPPLE" );
793 
794         _GL_APPLE_copy_texture_levels = true;
795     } catch( Exception e ) {
796         _GL_APPLE_copy_texture_levels = false;
797     }
798 }
799 
800 private __gshared bool _GL_APPLE_framebuffer_multisample;
801 bool GL_APPLE_framebuffer_multisample() @property { return _GL_APPLE_framebuffer_multisample; }
802 enum : uint {
803     GL_RENDERBUFFER_SAMPLES_APPLE     = 0x8CAB,
804     GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE = 0x8D56,
805     GL_MAX_SAMPLES_APPLE              = 0x8D57,
806     GL_READ_FRAMEBUFFER_APPLE         = 0x8CA8,
807     GL_DRAW_FRAMEBUFFER_APPLE         = 0x8CA9,
808     GL_DRAW_FRAMEBUFFER_BINDING_APPLE = 0x8CA6,
809     GL_READ_FRAMEBUFFER_BINDING_APPLE = 0x8CAA,
810 }
811 extern( System ) nothrow {
812     alias da_glRenderbufferStorageMultisampleAPPLE = void function( GLenum, GLsizei, GLenum, GLsizei, GLsizei );
813     alias da_glResolveMultisampleFramebufferAPPLE = void function(  );
814 }
815 __gshared {
816     da_glRenderbufferStorageMultisampleAPPLE glRenderbufferStorageMultisampleAPPLE;
817     da_glResolveMultisampleFramebufferAPPLE glResolveMultisampleFramebufferAPPLE;
818 }
819 private void load_GL_APPLE_framebuffer_multisample() {
820     try {
821         bindGLFunc( cast( void** )&glRenderbufferStorageMultisampleAPPLE, "glRenderbufferStorageMultisampleAPPLE" );
822         bindGLFunc( cast( void** )&glResolveMultisampleFramebufferAPPLE, "glResolveMultisampleFramebufferAPPLE" );
823 
824         _GL_APPLE_framebuffer_multisample = true;
825     } catch( Exception e ) {
826         _GL_APPLE_framebuffer_multisample = false;
827     }
828 }
829 
830 private __gshared bool _GL_APPLE_rgb_422;
831 bool GL_APPLE_rgb_422() @property { return _GL_APPLE_rgb_422; }
832 enum : uint {
833     GL_RGB_422_APPLE                  = 0x8A1F,
834     GL_UNSIGNED_SHORT_8_8_APPLE       = 0x85BA,
835     GL_UNSIGNED_SHORT_8_8_REV_APPLE   = 0x85BB,
836     GL_RGB_RAW_422_APPLE              = 0x8A51,
837 }
838 
839 private __gshared bool _GL_APPLE_sync;
840 bool GL_APPLE_sync() @property { return _GL_APPLE_sync; }
841 enum : ulong {
842     GL_SYNC_OBJECT_APPLE              = 0x8A53,
843     GL_MAX_SERVER_WAIT_TIMEOUT_APPLE  = 0x9111,
844     GL_OBJECT_TYPE_APPLE              = 0x9112,
845     GL_SYNC_CONDITION_APPLE           = 0x9113,
846     GL_SYNC_STATUS_APPLE              = 0x9114,
847     GL_SYNC_FLAGS_APPLE               = 0x9115,
848     GL_SYNC_FENCE_APPLE               = 0x9116,
849     GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE = 0x9117,
850     GL_UNSIGNALED_APPLE               = 0x9118,
851     GL_SIGNALED_APPLE                 = 0x9119,
852     GL_ALREADY_SIGNALED_APPLE         = 0x911A,
853     GL_TIMEOUT_EXPIRED_APPLE          = 0x911B,
854     GL_CONDITION_SATISFIED_APPLE      = 0x911C,
855     GL_WAIT_FAILED_APPLE              = 0x911D,
856     GL_SYNC_FLUSH_COMMANDS_BIT_APPLE  = 0x00000001,
857     GL_TIMEOUT_IGNORED_APPLE          = 0xFFFFFFFFFFFFFFFFU,
858 }
859 extern( System ) nothrow {
860     alias da_glFenceSyncAPPLE = GLsync function( GLenum, GLbitfield );
861     alias da_glIsSyncAPPLE = GLboolean function( GLsync );
862     alias da_glDeleteSyncAPPLE = void function( GLsync );
863     alias da_glClientWaitSyncAPPLE = GLenum function( GLsync, GLbitfield, GLuint64 );
864     alias da_glWaitSyncAPPLE = void function( GLsync, GLbitfield, GLuint64 );
865     alias da_glGetInteger64vAPPLE = void function( GLenum, GLint64* );
866     alias da_glGetSyncivAPPLE = void function( GLsync, GLenum, GLsizei, GLsizei*, GLint* );
867 }
868 __gshared {
869     da_glFenceSyncAPPLE glFenceSyncAPPLE;
870     da_glIsSyncAPPLE glIsSyncAPPLE;
871     da_glDeleteSyncAPPLE glDeleteSyncAPPLE;
872     da_glClientWaitSyncAPPLE glClientWaitSyncAPPLE;
873     da_glWaitSyncAPPLE glWaitSyncAPPLE;
874     da_glGetInteger64vAPPLE glGetInteger64vAPPLE;
875     da_glGetSyncivAPPLE glGetSyncivAPPLE;
876 }
877 private void load_GL_APPLE_sync() {
878     try {
879         bindGLFunc( cast( void** )&glFenceSyncAPPLE, "glFenceSyncAPPLE" );
880         bindGLFunc( cast( void** )&glIsSyncAPPLE, "glIsSyncAPPLE" );
881         bindGLFunc( cast( void** )&glDeleteSyncAPPLE, "glDeleteSyncAPPLE" );
882         bindGLFunc( cast( void** )&glClientWaitSyncAPPLE, "glClientWaitSyncAPPLE" );
883         bindGLFunc( cast( void** )&glWaitSyncAPPLE, "glWaitSyncAPPLE" );
884         bindGLFunc( cast( void** )&glGetInteger64vAPPLE, "glGetInteger64vAPPLE" );
885         bindGLFunc( cast( void** )&glGetSyncivAPPLE, "glGetSyncivAPPLE" );
886 
887         _GL_APPLE_sync = true;
888     } catch( Exception e ) {
889         _GL_APPLE_sync = false;
890     }
891 }
892 
893 private __gshared bool _GL_APPLE_texture_format_BGRA8888;
894 bool GL_APPLE_texture_format_BGRA8888() @property { return _GL_APPLE_texture_format_BGRA8888; }
895 enum : uint {
896     GL_BGRA_EXT                       = 0x80E1,
897     GL_BGRA8_EXT                      = 0x93A1,
898 }
899 
900 private __gshared bool _GL_APPLE_texture_max_level;
901 bool GL_APPLE_texture_max_level() @property { return _GL_APPLE_texture_max_level; }
902 enum : uint {
903     GL_TEXTURE_MAX_LEVEL_APPLE        = 0x813D,
904 }
905 
906 private __gshared bool _GL_ARM_mali_program_binary;
907 bool GL_ARM_mali_program_binary() @property { return _GL_ARM_mali_program_binary; }
908 enum : uint {
909     GL_MALI_PROGRAM_BINARY_ARM        = 0x8F61,
910 }
911 
912 private __gshared bool _GL_ARM_mali_shader_binary;
913 bool GL_ARM_mali_shader_binary() @property { return _GL_ARM_mali_shader_binary; }
914 enum : uint {
915     GL_MALI_SHADER_BINARY_ARM         = 0x8F60,
916 }
917 
918 private __gshared bool _GL_ARM_rgba8;
919 bool GL_ARM_rgba8() @property { return _GL_ARM_rgba8; }
920 
921 private __gshared bool _GL_ARM_shader_framebuffer_fetch;
922 bool GL_ARM_shader_framebuffer_fetch() @property { return _GL_ARM_shader_framebuffer_fetch; }
923 enum : uint {
924     GL_FETCH_PER_SAMPLE_ARM           = 0x8F65,
925     GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM = 0x8F66,
926 }
927 
928 private __gshared bool _GL_ARM_shader_framebuffer_fetch_depth_stencil;
929 bool GL_ARM_shader_framebuffer_fetch_depth_stencil() @property { return _GL_ARM_shader_framebuffer_fetch_depth_stencil; }
930 
931 private __gshared bool _GL_DMP_shader_binary;
932 bool GL_DMP_shader_binary() @property { return _GL_DMP_shader_binary; }
933 enum : uint {
934     GL_SHADER_BINARY_DMP              = 0x9250,
935 }
936 
937 private __gshared bool _GL_EXT_blend_minmax;
938 bool GL_EXT_blend_minmax() @property { return _GL_EXT_blend_minmax; }
939 enum : uint {
940     GL_MIN_EXT                        = 0x8007,
941     GL_MAX_EXT                        = 0x8008,
942 }
943 
944 private __gshared bool _GL_EXT_color_buffer_half_float;
945 bool GL_EXT_color_buffer_half_float() @property { return _GL_EXT_color_buffer_half_float; }
946 enum : uint {
947     GL_RGBA16F_EXT                    = 0x881A,
948     GL_RGB16F_EXT                     = 0x881B,
949     GL_RG16F_EXT                      = 0x822F,
950     GL_R16F_EXT                       = 0x822D,
951     GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x8211,
952     GL_UNSIGNED_NORMALIZED_EXT        = 0x8C17,
953 }
954 
955 private __gshared bool _GL_EXT_debug_label;
956 bool GL_EXT_debug_label() @property { return _GL_EXT_debug_label; }
957 enum : uint {
958     GL_PROGRAM_PIPELINE_OBJECT_EXT    = 0x8A4F,
959     GL_PROGRAM_OBJECT_EXT             = 0x8B40,
960     GL_SHADER_OBJECT_EXT              = 0x8B48,
961     GL_BUFFER_OBJECT_EXT              = 0x9151,
962     GL_QUERY_OBJECT_EXT               = 0x9153,
963     GL_VERTEX_ARRAY_OBJECT_EXT        = 0x9154,
964     GL_TRANSFORM_FEEDBACK             = 0x8E22,
965 }
966 extern( System ) nothrow {
967     alias da_glLabelObjectEXT = void function( GLenum, GLuint, GLsizei, const( GLchar )* );
968     alias da_glGetObjectLabelEXT = void function( GLenum, GLuint, GLsizei, GLsizei*, GLchar* );
969 }
970 __gshared {
971     da_glLabelObjectEXT glLabelObjectEXT;
972     da_glGetObjectLabelEXT glGetObjectLabelEXT;
973 }
974 private void load_GL_EXT_debug_label() {
975     try {
976         bindGLFunc( cast( void** )&glLabelObjectEXT, "glLabelObjectEXT" );
977         bindGLFunc( cast( void** )&glGetObjectLabelEXT, "glGetObjectLabelEXT" );
978 
979         _GL_EXT_debug_label = true;
980     } catch( Exception e ) {
981         _GL_EXT_debug_label = false;
982     }
983 }
984 
985 private __gshared bool _GL_EXT_debug_marker;
986 bool GL_EXT_debug_marker() @property { return _GL_EXT_debug_marker; }
987 extern( System ) nothrow {
988     alias da_glInsertEventMarkerEXT = void function( GLsizei, const( GLchar )* );
989     alias da_glPushGroupMarkerEXT = void function( GLsizei, const( GLchar )* );
990     alias da_glPopGroupMarkerEXT = void function(  );
991 }
992 __gshared {
993     da_glInsertEventMarkerEXT glInsertEventMarkerEXT;
994     da_glPushGroupMarkerEXT glPushGroupMarkerEXT;
995     da_glPopGroupMarkerEXT glPopGroupMarkerEXT;
996 }
997 private void load_GL_EXT_debug_marker() {
998     try {
999         bindGLFunc( cast( void** )&glInsertEventMarkerEXT, "glInsertEventMarkerEXT" );
1000         bindGLFunc( cast( void** )&glPushGroupMarkerEXT, "glPushGroupMarkerEXT" );
1001         bindGLFunc( cast( void** )&glPopGroupMarkerEXT, "glPopGroupMarkerEXT" );
1002 
1003         _GL_EXT_debug_marker = true;
1004     } catch( Exception e ) {
1005         _GL_EXT_debug_marker = false;
1006     }
1007 }
1008 
1009 private __gshared bool _GL_EXT_discard_framebuffer;
1010 bool GL_EXT_discard_framebuffer() @property { return _GL_EXT_discard_framebuffer; }
1011 enum : uint {
1012     GL_COLOR_EXT                      = 0x1800,
1013     GL_DEPTH_EXT                      = 0x1801,
1014     GL_STENCIL_EXT                    = 0x1802,
1015 }
1016 extern( System ) nothrow {
1017     alias da_glDiscardFramebufferEXT = void function( GLenum, GLsizei, const( GLenum )* );
1018 }
1019 __gshared {
1020     da_glDiscardFramebufferEXT glDiscardFramebufferEXT;
1021 }
1022 private void load_GL_EXT_discard_framebuffer() {
1023     try {
1024         bindGLFunc( cast( void** )&glDiscardFramebufferEXT, "glDiscardFramebufferEXT" );
1025 
1026         _GL_EXT_discard_framebuffer = true;
1027     } catch( Exception e ) {
1028         _GL_EXT_discard_framebuffer = false;
1029     }
1030 }
1031 
1032 private __gshared bool _GL_EXT_disjoint_timer_query;
1033 bool GL_EXT_disjoint_timer_query() @property { return _GL_EXT_disjoint_timer_query; }
1034 enum : uint {
1035     GL_QUERY_COUNTER_BITS_EXT         = 0x8864,
1036     GL_CURRENT_QUERY_EXT              = 0x8865,
1037     GL_QUERY_RESULT_EXT               = 0x8866,
1038     GL_QUERY_RESULT_AVAILABLE_EXT     = 0x8867,
1039     GL_TIME_ELAPSED_EXT               = 0x88BF,
1040     GL_TIMESTAMP_EXT                  = 0x8E28,
1041     GL_GPU_DISJOINT_EXT               = 0x8FBB,
1042 }
1043 extern( System ) nothrow {
1044     alias da_glGenQueriesEXT = void function( GLsizei, GLuint* );
1045     alias da_glDeleteQueriesEXT = void function( GLsizei, const( GLuint )* );
1046     alias da_glIsQueryEXT = GLboolean function( GLuint );
1047     alias da_glBeginQueryEXT = void function( GLenum, GLuint );
1048     alias da_glEndQueryEXT = void function( GLenum );
1049     alias da_glQueryCounterEXT = void function( GLuint, GLenum );
1050     alias da_glGetQueryivEXT = void function( GLenum, GLenum, GLint* );
1051     alias da_glGetQueryObjectivEXT = void function( GLuint, GLenum, GLint* );
1052     alias da_glGetQueryObjectuivEXT = void function( GLuint, GLenum, GLuint* );
1053     alias da_glGetQueryObjecti64vEXT = void function( GLuint, GLenum, GLint64* );
1054     alias da_glGetQueryObjectui64vEXT = void function( GLuint, GLenum, GLuint64* );
1055 }
1056 __gshared {
1057     da_glGenQueriesEXT glGenQueriesEXT;
1058     da_glDeleteQueriesEXT glDeleteQueriesEXT;
1059     da_glIsQueryEXT glIsQueryEXT;
1060     da_glBeginQueryEXT glBeginQueryEXT;
1061     da_glEndQueryEXT glEndQueryEXT;
1062     da_glQueryCounterEXT glQueryCounterEXT;
1063     da_glGetQueryivEXT glGetQueryivEXT;
1064     da_glGetQueryObjectivEXT glGetQueryObjectivEXT;
1065     da_glGetQueryObjectuivEXT glGetQueryObjectuivEXT;
1066     da_glGetQueryObjecti64vEXT glGetQueryObjecti64vEXT;
1067     da_glGetQueryObjectui64vEXT glGetQueryObjectui64vEXT;
1068 }
1069 private void load_GL_EXT_disjoint_timer_query() {
1070     try {
1071         bindGLFunc( cast( void** )&glGenQueriesEXT, "glGenQueriesEXT" );
1072         bindGLFunc( cast( void** )&glDeleteQueriesEXT, "glDeleteQueriesEXT" );
1073         bindGLFunc( cast( void** )&glIsQueryEXT, "glIsQueryEXT" );
1074         bindGLFunc( cast( void** )&glBeginQueryEXT, "glBeginQueryEXT" );
1075         bindGLFunc( cast( void** )&glEndQueryEXT, "glEndQueryEXT" );
1076         bindGLFunc( cast( void** )&glQueryCounterEXT, "glQueryCounterEXT" );
1077         bindGLFunc( cast( void** )&glGetQueryivEXT, "glGetQueryivEXT" );
1078         bindGLFunc( cast( void** )&glGetQueryObjectivEXT, "glGetQueryObjectivEXT" );
1079         bindGLFunc( cast( void** )&glGetQueryObjectuivEXT, "glGetQueryObjectuivEXT" );
1080         bindGLFunc( cast( void** )&glGetQueryObjecti64vEXT, "glGetQueryObjecti64vEXT" );
1081         bindGLFunc( cast( void** )&glGetQueryObjectui64vEXT, "glGetQueryObjectui64vEXT" );
1082 
1083         _GL_EXT_disjoint_timer_query = true;
1084     } catch( Exception e ) {
1085         _GL_EXT_disjoint_timer_query = false;
1086     }
1087 }
1088 
1089 private __gshared bool _GL_EXT_draw_buffers;
1090 bool GL_EXT_draw_buffers() @property { return _GL_EXT_draw_buffers; }
1091 enum : uint {
1092     GL_MAX_COLOR_ATTACHMENTS_EXT      = 0x8CDF,
1093     GL_MAX_DRAW_BUFFERS_EXT           = 0x8824,
1094     GL_DRAW_BUFFER0_EXT               = 0x8825,
1095     GL_DRAW_BUFFER1_EXT               = 0x8826,
1096     GL_DRAW_BUFFER2_EXT               = 0x8827,
1097     GL_DRAW_BUFFER3_EXT               = 0x8828,
1098     GL_DRAW_BUFFER4_EXT               = 0x8829,
1099     GL_DRAW_BUFFER5_EXT               = 0x882A,
1100     GL_DRAW_BUFFER6_EXT               = 0x882B,
1101     GL_DRAW_BUFFER7_EXT               = 0x882C,
1102     GL_DRAW_BUFFER8_EXT               = 0x882D,
1103     GL_DRAW_BUFFER9_EXT               = 0x882E,
1104     GL_DRAW_BUFFER10_EXT              = 0x882F,
1105     GL_DRAW_BUFFER11_EXT              = 0x8830,
1106     GL_DRAW_BUFFER12_EXT              = 0x8831,
1107     GL_DRAW_BUFFER13_EXT              = 0x8832,
1108     GL_DRAW_BUFFER14_EXT              = 0x8833,
1109     GL_DRAW_BUFFER15_EXT              = 0x8834,
1110     GL_COLOR_ATTACHMENT0_EXT          = 0x8CE0,
1111     GL_COLOR_ATTACHMENT1_EXT          = 0x8CE1,
1112     GL_COLOR_ATTACHMENT2_EXT          = 0x8CE2,
1113     GL_COLOR_ATTACHMENT3_EXT          = 0x8CE3,
1114     GL_COLOR_ATTACHMENT4_EXT          = 0x8CE4,
1115     GL_COLOR_ATTACHMENT5_EXT          = 0x8CE5,
1116     GL_COLOR_ATTACHMENT6_EXT          = 0x8CE6,
1117     GL_COLOR_ATTACHMENT7_EXT          = 0x8CE7,
1118     GL_COLOR_ATTACHMENT8_EXT          = 0x8CE8,
1119     GL_COLOR_ATTACHMENT9_EXT          = 0x8CE9,
1120     GL_COLOR_ATTACHMENT10_EXT         = 0x8CEA,
1121     GL_COLOR_ATTACHMENT11_EXT         = 0x8CEB,
1122     GL_COLOR_ATTACHMENT12_EXT         = 0x8CEC,
1123     GL_COLOR_ATTACHMENT13_EXT         = 0x8CED,
1124     GL_COLOR_ATTACHMENT14_EXT         = 0x8CEE,
1125     GL_COLOR_ATTACHMENT15_EXT         = 0x8CEF,
1126 }
1127 extern( System ) nothrow {
1128     alias da_glDrawBuffersEXT = void function( GLsizei, const( GLenum )* );
1129 }
1130 __gshared {
1131     da_glDrawBuffersEXT glDrawBuffersEXT;
1132 }
1133 private void load_GL_EXT_draw_buffers() {
1134     try {
1135         bindGLFunc( cast( void** )&glDrawBuffersEXT, "glDrawBuffersEXT" );
1136 
1137         _GL_EXT_draw_buffers = true;
1138     } catch( Exception e ) {
1139         _GL_EXT_draw_buffers = false;
1140     }
1141 }
1142 
1143 private __gshared bool _GL_EXT_draw_instanced;
1144 bool GL_EXT_draw_instanced() @property { return _GL_EXT_draw_instanced; }
1145 extern( System ) nothrow {
1146     alias da_glDrawArraysInstancedEXT = void function( GLenum, GLint, GLsizei, GLsizei );
1147     alias da_glDrawElementsInstancedEXT = void function( GLenum, GLsizei, GLenum, const( void )*, GLsizei );
1148 }
1149 __gshared {
1150     da_glDrawArraysInstancedEXT glDrawArraysInstancedEXT;
1151     da_glDrawElementsInstancedEXT glDrawElementsInstancedEXT;
1152 }
1153 private void load_GL_EXT_draw_instanced() {
1154     try {
1155         bindGLFunc( cast( void** )&glDrawArraysInstancedEXT, "glDrawArraysInstancedEXT" );
1156         bindGLFunc( cast( void** )&glDrawElementsInstancedEXT, "glDrawElementsInstancedEXT" );
1157 
1158         _GL_EXT_draw_instanced = true;
1159     } catch( Exception e ) {
1160         _GL_EXT_draw_instanced = false;
1161     }
1162 }
1163 
1164 private __gshared bool _GL_EXT_instanced_arrays;
1165 bool GL_EXT_instanced_arrays() @property { return _GL_EXT_instanced_arrays; }
1166 enum : uint {
1167     GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT = 0x88FE,
1168 }
1169 extern( System ) nothrow {
1170     alias da_glVertexAttribDivisorEXT = void function( GLuint, GLuint );
1171 }
1172 __gshared {
1173     da_glVertexAttribDivisorEXT glVertexAttribDivisorEXT;
1174 }
1175 private void load_GL_EXT_instanced_arrays() {
1176     try {
1177         bindGLFunc( cast( void** )&glVertexAttribDivisorEXT, "glVertexAttribDivisorEXT" );
1178 
1179         _GL_EXT_instanced_arrays = true;
1180     } catch( Exception e ) {
1181         _GL_EXT_instanced_arrays = false;
1182     }
1183 }
1184 
1185 private __gshared bool _GL_EXT_map_buffer_range;
1186 bool GL_EXT_map_buffer_range() @property { return _GL_EXT_map_buffer_range; }
1187 enum : uint {
1188     GL_MAP_READ_BIT_EXT               = 0x0001,
1189     GL_MAP_WRITE_BIT_EXT              = 0x0002,
1190     GL_MAP_INVALIDATE_RANGE_BIT_EXT   = 0x0004,
1191     GL_MAP_INVALIDATE_BUFFER_BIT_EXT  = 0x0008,
1192     GL_MAP_FLUSH_EXPLICIT_BIT_EXT     = 0x0010,
1193     GL_MAP_UNSYNCHRONIZED_BIT_EXT     = 0x0020,
1194 }
1195 extern( System ) nothrow {
1196     alias da_glMapBufferRangeEXT = void* function( GLenum, GLintptr, GLsizeiptr, GLbitfield );
1197     alias da_glFlushMappedBufferRangeEXT = void function( GLenum, GLintptr, GLsizeiptr );
1198 }
1199 __gshared {
1200     da_glMapBufferRangeEXT glMapBufferRangeEXT;
1201     da_glFlushMappedBufferRangeEXT glFlushMappedBufferRangeEXT;
1202 }
1203 private void load_GL_EXT_map_buffer_range() {
1204     try {
1205         bindGLFunc( cast( void** )&glMapBufferRangeEXT, "glMapBufferRangeEXT" );
1206         bindGLFunc( cast( void** )&glFlushMappedBufferRangeEXT, "glFlushMappedBufferRangeEXT" );
1207 
1208         _GL_EXT_map_buffer_range = true;
1209     } catch( Exception e ) {
1210         _GL_EXT_map_buffer_range = false;
1211     }
1212 }
1213 
1214 private __gshared bool _GL_EXT_multi_draw_arrays;
1215 bool GL_EXT_multi_draw_arrays() @property { return _GL_EXT_multi_draw_arrays; }
1216 extern( System ) nothrow {
1217     alias da_glMultiDrawArraysEXT = void function( GLenum, const( GLint )*, const( GLsizei )*, GLsizei );
1218     alias da_glMultiDrawElementsEXT = void function( GLenum, const( GLsizei )*, GLenum, const( const( void )* )*, GLsizei );
1219 }
1220 __gshared {
1221     da_glMultiDrawArraysEXT glMultiDrawArraysEXT;
1222     da_glMultiDrawElementsEXT glMultiDrawElementsEXT;
1223 }
1224 private void load_GL_EXT_multi_draw_arrays() {
1225     try {
1226         bindGLFunc( cast( void** )&glMultiDrawArraysEXT, "glMultiDrawArraysEXT" );
1227         bindGLFunc( cast( void** )&glMultiDrawElementsEXT, "glMultiDrawElementsEXT" );
1228 
1229         _GL_EXT_multi_draw_arrays = true;
1230     } catch( Exception e ) {
1231         _GL_EXT_multi_draw_arrays = false;
1232     }
1233 }
1234 
1235 private __gshared bool _GL_EXT_multisampled_render_to_texture;
1236 bool GL_EXT_multisampled_render_to_texture() @property { return _GL_EXT_multisampled_render_to_texture; }
1237 enum : uint {
1238     GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT = 0x8D6C,
1239     GL_RENDERBUFFER_SAMPLES_EXT       = 0x8CAB,
1240     GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = 0x8D56,
1241     GL_MAX_SAMPLES_EXT                = 0x8D57,
1242 }
1243 extern( System ) nothrow {
1244     alias da_glRenderbufferStorageMultisampleEXT = void function( GLenum, GLsizei, GLenum, GLsizei, GLsizei );
1245     alias da_glFramebufferTexture2DMultisampleEXT = void function( GLenum, GLenum, GLenum, GLuint, GLint, GLsizei );
1246 }
1247 __gshared {
1248     da_glRenderbufferStorageMultisampleEXT glRenderbufferStorageMultisampleEXT;
1249     da_glFramebufferTexture2DMultisampleEXT glFramebufferTexture2DMultisampleEXT;
1250 }
1251 private void load_GL_EXT_multisampled_render_to_texture() {
1252     try {
1253         bindGLFunc( cast( void** )&glRenderbufferStorageMultisampleEXT, "glRenderbufferStorageMultisampleEXT" );
1254         bindGLFunc( cast( void** )&glFramebufferTexture2DMultisampleEXT, "glFramebufferTexture2DMultisampleEXT" );
1255 
1256         _GL_EXT_multisampled_render_to_texture = true;
1257     } catch( Exception e ) {
1258         _GL_EXT_multisampled_render_to_texture = false;
1259     }
1260 }
1261 
1262 private __gshared bool _GL_EXT_multiview_draw_buffers;
1263 bool GL_EXT_multiview_draw_buffers() @property { return _GL_EXT_multiview_draw_buffers; }
1264 enum : uint {
1265     GL_COLOR_ATTACHMENT_EXT           = 0x90F0,
1266     GL_MULTIVIEW_EXT                  = 0x90F1,
1267     GL_DRAW_BUFFER_EXT                = 0x0C01,
1268     GL_READ_BUFFER_EXT                = 0x0C02,
1269     GL_MAX_MULTIVIEW_BUFFERS_EXT      = 0x90F2,
1270 }
1271 extern( System ) nothrow {
1272     alias da_glReadBufferIndexedEXT = void function( GLenum, GLint );
1273     alias da_glDrawBuffersIndexedEXT = void function( GLint, const( GLenum )*, const( GLint )* );
1274     alias da_glGetIntegeri_vEXT = void function( GLenum, GLuint, GLint* );
1275 }
1276 __gshared {
1277     da_glReadBufferIndexedEXT glReadBufferIndexedEXT;
1278     da_glDrawBuffersIndexedEXT glDrawBuffersIndexedEXT;
1279     da_glGetIntegeri_vEXT glGetIntegeri_vEXT;
1280 }
1281 private void load_GL_EXT_multiview_draw_buffers() {
1282     try {
1283         bindGLFunc( cast( void** )&glReadBufferIndexedEXT, "glReadBufferIndexedEXT" );
1284         bindGLFunc( cast( void** )&glDrawBuffersIndexedEXT, "glDrawBuffersIndexedEXT" );
1285         bindGLFunc( cast( void** )&glGetIntegeri_vEXT, "glGetIntegeri_vEXT" );
1286 
1287         _GL_EXT_multiview_draw_buffers = true;
1288     } catch( Exception e ) {
1289         _GL_EXT_multiview_draw_buffers = false;
1290     }
1291 }
1292 
1293 private __gshared bool _GL_EXT_occlusion_query_boolean;
1294 bool GL_EXT_occlusion_query_boolean() @property { return _GL_EXT_occlusion_query_boolean; }
1295 enum : uint {
1296     GL_ANY_SAMPLES_PASSED_EXT         = 0x8C2F,
1297     GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT = 0x8D6A,
1298 }
1299 
1300 private __gshared bool _GL_EXT_pvrtc_sRGB;
1301 bool GL_EXT_pvrtc_sRGB() @property { return _GL_EXT_pvrtc_sRGB; }
1302 enum : uint {
1303     GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT = 0x8A54,
1304     GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT = 0x8A55,
1305     GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT = 0x8A56,
1306     GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT = 0x8A57,
1307 }
1308 
1309 private __gshared bool _GL_EXT_read_format_bgra;
1310 bool GL_EXT_read_format_bgra() @property { return _GL_EXT_read_format_bgra; }
1311 enum : uint {
1312     GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT = 0x8365,
1313     GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT = 0x8366,
1314 }
1315 
1316 private __gshared bool _GL_EXT_robustness;
1317 bool GL_EXT_robustness() @property { return _GL_EXT_robustness; }
1318 enum : uint {
1319     GL_GUILTY_CONTEXT_RESET_EXT       = 0x8253,
1320     GL_INNOCENT_CONTEXT_RESET_EXT     = 0x8254,
1321     GL_UNKNOWN_CONTEXT_RESET_EXT      = 0x8255,
1322     GL_CONTEXT_ROBUST_ACCESS_EXT      = 0x90F3,
1323     GL_RESET_NOTIFICATION_STRATEGY_EXT = 0x8256,
1324     GL_LOSE_CONTEXT_ON_RESET_EXT      = 0x8252,
1325     GL_NO_RESET_NOTIFICATION_EXT      = 0x8261,
1326 }
1327 extern( System ) nothrow {
1328     alias da_glGetGraphicsResetStatusEXT = GLenum function(  );
1329     alias da_glReadnPixelsEXT = void function( GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void* );
1330     alias da_glGetnUniformfvEXT = void function( GLuint, GLint, GLsizei, GLfloat* );
1331     alias da_glGetnUniformivEXT = void function( GLuint, GLint, GLsizei, GLint* );
1332 }
1333 __gshared {
1334     da_glGetGraphicsResetStatusEXT glGetGraphicsResetStatusEXT;
1335     da_glReadnPixelsEXT glReadnPixelsEXT;
1336     da_glGetnUniformfvEXT glGetnUniformfvEXT;
1337     da_glGetnUniformivEXT glGetnUniformivEXT;
1338 }
1339 private void load_GL_EXT_robustness() {
1340     try {
1341         bindGLFunc( cast( void** )&glGetGraphicsResetStatusEXT, "glGetGraphicsResetStatusEXT" );
1342         bindGLFunc( cast( void** )&glReadnPixelsEXT, "glReadnPixelsEXT" );
1343         bindGLFunc( cast( void** )&glGetnUniformfvEXT, "glGetnUniformfvEXT" );
1344         bindGLFunc( cast( void** )&glGetnUniformivEXT, "glGetnUniformivEXT" );
1345 
1346         _GL_EXT_robustness = true;
1347     } catch( Exception e ) {
1348         _GL_EXT_robustness = false;
1349     }
1350 }
1351 
1352 private __gshared bool _GL_EXT_sRGB;
1353 bool GL_EXT_sRGB() @property { return _GL_EXT_sRGB; }
1354 enum : uint {
1355     GL_SRGB_EXT                       = 0x8C40,
1356     GL_SRGB_ALPHA_EXT                 = 0x8C42,
1357     GL_SRGB8_ALPHA8_EXT               = 0x8C43,
1358     GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x8210,
1359 }
1360 
1361 private __gshared bool _GL_EXT_sRGB_write_control;
1362 bool GL_EXT_sRGB_write_control() @property { return _GL_EXT_sRGB_write_control; }
1363 enum : uint {
1364     GL_FRAMEBUFFER_SRGB_EXT           = 0x8DB9,
1365 }
1366 
1367 private __gshared bool _GL_EXT_separate_shader_objects;
1368 bool GL_EXT_separate_shader_objects() @property { return _GL_EXT_separate_shader_objects; }
1369 enum : uint {
1370     GL_ACTIVE_PROGRAM_EXT             = 0x8259,
1371     GL_VERTEX_SHADER_BIT_EXT          = 0x00000001,
1372     GL_FRAGMENT_SHADER_BIT_EXT        = 0x00000002,
1373     GL_ALL_SHADER_BITS_EXT            = 0xFFFFFFFF,
1374     GL_PROGRAM_SEPARABLE_EXT          = 0x8258,
1375     GL_PROGRAM_PIPELINE_BINDING_EXT   = 0x825A,
1376 }
1377 extern( System ) nothrow {
1378     alias da_glActiveShaderProgramEXT = void function( GLuint, GLuint );
1379     alias da_glBindProgramPipelineEXT = void function( GLuint );
1380     alias da_glCreateShaderProgramvEXT = GLuint function( GLenum, GLsizei, const( GLchar )** );
1381     alias da_glDeleteProgramPipelinesEXT = void function( GLsizei, const( GLuint )* );
1382     alias da_glGenProgramPipelinesEXT = void function( GLsizei, GLuint* );
1383     alias da_glGetProgramPipelineInfoLogEXT = void function( GLuint, GLsizei, GLsizei*, GLchar* );
1384     alias da_glGetProgramPipelineivEXT = void function( GLuint, GLenum, GLint* );
1385     alias da_glIsProgramPipelineEXT = GLboolean function( GLuint );
1386     alias da_glProgramParameteriEXT = void function( GLuint, GLenum, GLint );
1387     alias da_glProgramUniform1fEXT = void function( GLuint, GLint, GLfloat );
1388     alias da_glProgramUniform1fvEXT = void function( GLuint, GLint, GLsizei, const( GLfloat )* );
1389     alias da_glProgramUniform1iEXT = void function( GLuint, GLint, GLint );
1390     alias da_glProgramUniform1ivEXT = void function( GLuint, GLint, GLsizei, const( GLint )* );
1391     alias da_glProgramUniform2fEXT = void function( GLuint, GLint, GLfloat, GLfloat );
1392     alias da_glProgramUniform2fvEXT = void function( GLuint, GLint, GLsizei, const( GLfloat )* );
1393     alias da_glProgramUniform2iEXT = void function( GLuint, GLint, GLint, GLint );
1394     alias da_glProgramUniform2ivEXT = void function( GLuint, GLint, GLsizei, const( GLint )* );
1395     alias da_glProgramUniform3fEXT = void function( GLuint, GLint, GLfloat, GLfloat, GLfloat );
1396     alias da_glProgramUniform3fvEXT = void function( GLuint, GLint, GLsizei, const( GLfloat )* );
1397     alias da_glProgramUniform3iEXT = void function( GLuint, GLint, GLint, GLint, GLint );
1398     alias da_glProgramUniform3ivEXT = void function( GLuint, GLint, GLsizei, const( GLint )* );
1399     alias da_glProgramUniform4fEXT = void function( GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat );
1400     alias da_glProgramUniform4fvEXT = void function( GLuint, GLint, GLsizei, const( GLfloat )* );
1401     alias da_glProgramUniform4iEXT = void function( GLuint, GLint, GLint, GLint, GLint, GLint );
1402     alias da_glProgramUniform4ivEXT = void function( GLuint, GLint, GLsizei, const( GLint )* );
1403     alias da_glProgramUniformMatrix2fvEXT = void function( GLuint, GLint, GLsizei, GLboolean, const( GLfloat )* );
1404     alias da_glProgramUniformMatrix3fvEXT = void function( GLuint, GLint, GLsizei, GLboolean, const( GLfloat )* );
1405     alias da_glProgramUniformMatrix4fvEXT = void function( GLuint, GLint, GLsizei, GLboolean, const( GLfloat )* );
1406     alias da_glUseProgramStagesEXT = void function( GLuint, GLbitfield, GLuint );
1407     alias da_glValidateProgramPipelineEXT = void function( GLuint );
1408     alias da_glProgramUniform1uiEXT = void function( GLuint, GLint, GLuint );
1409     alias da_glProgramUniform2uiEXT = void function( GLuint, GLint, GLuint, GLuint );
1410     alias da_glProgramUniform3uiEXT = void function( GLuint, GLint, GLuint, GLuint, GLuint );
1411     alias da_glProgramUniform4uiEXT = void function( GLuint, GLint, GLuint, GLuint, GLuint, GLuint );
1412     alias da_glProgramUniform1uivEXT = void function( GLuint, GLint, GLsizei, const( GLuint )* );
1413     alias da_glProgramUniform2uivEXT = void function( GLuint, GLint, GLsizei, const( GLuint )* );
1414     alias da_glProgramUniform3uivEXT = void function( GLuint, GLint, GLsizei, const( GLuint )* );
1415     alias da_glProgramUniform4uivEXT = void function( GLuint, GLint, GLsizei, const( GLuint )* );
1416     alias da_glProgramUniformMatrix2x3fvEXT = void function( GLuint, GLint, GLsizei, GLboolean, const( GLfloat )* );
1417     alias da_glProgramUniformMatrix3x2fvEXT = void function( GLuint, GLint, GLsizei, GLboolean, const( GLfloat )* );
1418     alias da_glProgramUniformMatrix2x4fvEXT = void function( GLuint, GLint, GLsizei, GLboolean, const( GLfloat )* );
1419     alias da_glProgramUniformMatrix4x2fvEXT = void function( GLuint, GLint, GLsizei, GLboolean, const( GLfloat )* );
1420     alias da_glProgramUniformMatrix3x4fvEXT = void function( GLuint, GLint, GLsizei, GLboolean, const( GLfloat )* );
1421     alias da_glProgramUniformMatrix4x3fvEXT = void function( GLuint, GLint, GLsizei, GLboolean, const( GLfloat )* );
1422 }
1423 __gshared {
1424     da_glActiveShaderProgramEXT glActiveShaderProgramEXT;
1425     da_glBindProgramPipelineEXT glBindProgramPipelineEXT;
1426     da_glCreateShaderProgramvEXT glCreateShaderProgramvEXT;
1427     da_glDeleteProgramPipelinesEXT glDeleteProgramPipelinesEXT;
1428     da_glGenProgramPipelinesEXT glGenProgramPipelinesEXT;
1429     da_glGetProgramPipelineInfoLogEXT glGetProgramPipelineInfoLogEXT;
1430     da_glGetProgramPipelineivEXT glGetProgramPipelineivEXT;
1431     da_glIsProgramPipelineEXT glIsProgramPipelineEXT;
1432     da_glProgramParameteriEXT glProgramParameteriEXT;
1433     da_glProgramUniform1fEXT glProgramUniform1fEXT;
1434     da_glProgramUniform1fvEXT glProgramUniform1fvEXT;
1435     da_glProgramUniform1iEXT glProgramUniform1iEXT;
1436     da_glProgramUniform1ivEXT glProgramUniform1ivEXT;
1437     da_glProgramUniform2fEXT glProgramUniform2fEXT;
1438     da_glProgramUniform2fvEXT glProgramUniform2fvEXT;
1439     da_glProgramUniform2iEXT glProgramUniform2iEXT;
1440     da_glProgramUniform2ivEXT glProgramUniform2ivEXT;
1441     da_glProgramUniform3fEXT glProgramUniform3fEXT;
1442     da_glProgramUniform3fvEXT glProgramUniform3fvEXT;
1443     da_glProgramUniform3iEXT glProgramUniform3iEXT;
1444     da_glProgramUniform3ivEXT glProgramUniform3ivEXT;
1445     da_glProgramUniform4fEXT glProgramUniform4fEXT;
1446     da_glProgramUniform4fvEXT glProgramUniform4fvEXT;
1447     da_glProgramUniform4iEXT glProgramUniform4iEXT;
1448     da_glProgramUniform4ivEXT glProgramUniform4ivEXT;
1449     da_glProgramUniformMatrix2fvEXT glProgramUniformMatrix2fvEXT;
1450     da_glProgramUniformMatrix3fvEXT glProgramUniformMatrix3fvEXT;
1451     da_glProgramUniformMatrix4fvEXT glProgramUniformMatrix4fvEXT;
1452     da_glUseProgramStagesEXT glUseProgramStagesEXT;
1453     da_glValidateProgramPipelineEXT glValidateProgramPipelineEXT;
1454     da_glProgramUniform1uiEXT glProgramUniform1uiEXT;
1455     da_glProgramUniform2uiEXT glProgramUniform2uiEXT;
1456     da_glProgramUniform3uiEXT glProgramUniform3uiEXT;
1457     da_glProgramUniform4uiEXT glProgramUniform4uiEXT;
1458     da_glProgramUniform1uivEXT glProgramUniform1uivEXT;
1459     da_glProgramUniform2uivEXT glProgramUniform2uivEXT;
1460     da_glProgramUniform3uivEXT glProgramUniform3uivEXT;
1461     da_glProgramUniform4uivEXT glProgramUniform4uivEXT;
1462     da_glProgramUniformMatrix2x3fvEXT glProgramUniformMatrix2x3fvEXT;
1463     da_glProgramUniformMatrix3x2fvEXT glProgramUniformMatrix3x2fvEXT;
1464     da_glProgramUniformMatrix2x4fvEXT glProgramUniformMatrix2x4fvEXT;
1465     da_glProgramUniformMatrix4x2fvEXT glProgramUniformMatrix4x2fvEXT;
1466     da_glProgramUniformMatrix3x4fvEXT glProgramUniformMatrix3x4fvEXT;
1467     da_glProgramUniformMatrix4x3fvEXT glProgramUniformMatrix4x3fvEXT;
1468 }
1469 private void load_GL_EXT_separate_shader_objects() {
1470     try {
1471         bindGLFunc( cast( void** )&glActiveShaderProgramEXT, "glActiveShaderProgramEXT" );
1472         bindGLFunc( cast( void** )&glBindProgramPipelineEXT, "glBindProgramPipelineEXT" );
1473         bindGLFunc( cast( void** )&glCreateShaderProgramvEXT, "glCreateShaderProgramvEXT" );
1474         bindGLFunc( cast( void** )&glDeleteProgramPipelinesEXT, "glDeleteProgramPipelinesEXT" );
1475         bindGLFunc( cast( void** )&glGenProgramPipelinesEXT, "glGenProgramPipelinesEXT" );
1476         bindGLFunc( cast( void** )&glGetProgramPipelineInfoLogEXT, "glGetProgramPipelineInfoLogEXT" );
1477         bindGLFunc( cast( void** )&glGetProgramPipelineivEXT, "glGetProgramPipelineivEXT" );
1478         bindGLFunc( cast( void** )&glIsProgramPipelineEXT, "glIsProgramPipelineEXT" );
1479         bindGLFunc( cast( void** )&glProgramParameteriEXT, "glProgramParameteriEXT" );
1480         bindGLFunc( cast( void** )&glProgramUniform1fEXT, "glProgramUniform1fEXT" );
1481         bindGLFunc( cast( void** )&glProgramUniform1fvEXT, "glProgramUniform1fvEXT" );
1482         bindGLFunc( cast( void** )&glProgramUniform1iEXT, "glProgramUniform1iEXT" );
1483         bindGLFunc( cast( void** )&glProgramUniform1ivEXT, "glProgramUniform1ivEXT" );
1484         bindGLFunc( cast( void** )&glProgramUniform2fEXT, "glProgramUniform2fEXT" );
1485         bindGLFunc( cast( void** )&glProgramUniform2fvEXT, "glProgramUniform2fvEXT" );
1486         bindGLFunc( cast( void** )&glProgramUniform2iEXT, "glProgramUniform2iEXT" );
1487         bindGLFunc( cast( void** )&glProgramUniform2ivEXT, "glProgramUniform2ivEXT" );
1488         bindGLFunc( cast( void** )&glProgramUniform3fEXT, "glProgramUniform3fEXT" );
1489         bindGLFunc( cast( void** )&glProgramUniform3fvEXT, "glProgramUniform3fvEXT" );
1490         bindGLFunc( cast( void** )&glProgramUniform3iEXT, "glProgramUniform3iEXT" );
1491         bindGLFunc( cast( void** )&glProgramUniform3ivEXT, "glProgramUniform3ivEXT" );
1492         bindGLFunc( cast( void** )&glProgramUniform4fEXT, "glProgramUniform4fEXT" );
1493         bindGLFunc( cast( void** )&glProgramUniform4fvEXT, "glProgramUniform4fvEXT" );
1494         bindGLFunc( cast( void** )&glProgramUniform4iEXT, "glProgramUniform4iEXT" );
1495         bindGLFunc( cast( void** )&glProgramUniform4ivEXT, "glProgramUniform4ivEXT" );
1496         bindGLFunc( cast( void** )&glProgramUniformMatrix2fvEXT, "glProgramUniformMatrix2fvEXT" );
1497         bindGLFunc( cast( void** )&glProgramUniformMatrix3fvEXT, "glProgramUniformMatrix3fvEXT" );
1498         bindGLFunc( cast( void** )&glProgramUniformMatrix4fvEXT, "glProgramUniformMatrix4fvEXT" );
1499         bindGLFunc( cast( void** )&glUseProgramStagesEXT, "glUseProgramStagesEXT" );
1500         bindGLFunc( cast( void** )&glValidateProgramPipelineEXT, "glValidateProgramPipelineEXT" );
1501         bindGLFunc( cast( void** )&glProgramUniform1uiEXT, "glProgramUniform1uiEXT" );
1502         bindGLFunc( cast( void** )&glProgramUniform2uiEXT, "glProgramUniform2uiEXT" );
1503         bindGLFunc( cast( void** )&glProgramUniform3uiEXT, "glProgramUniform3uiEXT" );
1504         bindGLFunc( cast( void** )&glProgramUniform4uiEXT, "glProgramUniform4uiEXT" );
1505         bindGLFunc( cast( void** )&glProgramUniform1uivEXT, "glProgramUniform1uivEXT" );
1506         bindGLFunc( cast( void** )&glProgramUniform2uivEXT, "glProgramUniform2uivEXT" );
1507         bindGLFunc( cast( void** )&glProgramUniform3uivEXT, "glProgramUniform3uivEXT" );
1508         bindGLFunc( cast( void** )&glProgramUniform4uivEXT, "glProgramUniform4uivEXT" );
1509         bindGLFunc( cast( void** )&glProgramUniformMatrix2x3fvEXT, "glProgramUniformMatrix2x3fvEXT" );
1510         bindGLFunc( cast( void** )&glProgramUniformMatrix3x2fvEXT, "glProgramUniformMatrix3x2fvEXT" );
1511         bindGLFunc( cast( void** )&glProgramUniformMatrix2x4fvEXT, "glProgramUniformMatrix2x4fvEXT" );
1512         bindGLFunc( cast( void** )&glProgramUniformMatrix4x2fvEXT, "glProgramUniformMatrix4x2fvEXT" );
1513         bindGLFunc( cast( void** )&glProgramUniformMatrix3x4fvEXT, "glProgramUniformMatrix3x4fvEXT" );
1514         bindGLFunc( cast( void** )&glProgramUniformMatrix4x3fvEXT, "glProgramUniformMatrix4x3fvEXT" );
1515 
1516         _GL_EXT_separate_shader_objects = true;
1517     } catch( Exception e ) {
1518         _GL_EXT_separate_shader_objects = false;
1519     }
1520 }
1521 
1522 private __gshared bool _GL_EXT_shader_framebuffer_fetch;
1523 bool GL_EXT_shader_framebuffer_fetch() @property { return _GL_EXT_shader_framebuffer_fetch; }
1524 enum : uint {
1525     GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT = 0x8A52,
1526 }
1527 
1528 private __gshared bool _GL_EXT_shader_integer_mix;
1529 bool GL_EXT_shader_integer_mix() @property { return _GL_EXT_shader_integer_mix; }
1530 
1531 private __gshared bool _GL_EXT_shader_pixel_local_storage;
1532 bool GL_EXT_shader_pixel_local_storage() @property { return _GL_EXT_shader_pixel_local_storage; }
1533 enum : uint {
1534     GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT = 0x8F63,
1535     GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT = 0x8F67,
1536     GL_SHADER_PIXEL_LOCAL_STORAGE_EXT = 0x8F64,
1537 }
1538 
1539 private __gshared bool _GL_EXT_shader_texture_lod;
1540 bool GL_EXT_shader_texture_lod() @property { return _GL_EXT_shader_texture_lod; }
1541 
1542 private __gshared bool _GL_EXT_shadow_samplers;
1543 bool GL_EXT_shadow_samplers() @property { return _GL_EXT_shadow_samplers; }
1544 enum : uint {
1545     GL_TEXTURE_COMPARE_MODE_EXT       = 0x884C,
1546     GL_TEXTURE_COMPARE_FUNC_EXT       = 0x884D,
1547     GL_COMPARE_REF_TO_TEXTURE_EXT     = 0x884E,
1548     GL_SAMPLER_2D_SHADOW_EXT          = 0x8B62,
1549 }
1550 
1551 private __gshared bool _GL_EXT_texture_compression_dxt1;
1552 bool GL_EXT_texture_compression_dxt1() @property { return _GL_EXT_texture_compression_dxt1; }
1553 enum : uint {
1554     GL_COMPRESSED_RGB_S3TC_DXT1_EXT   = 0x83F0,
1555     GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  = 0x83F1,
1556 }
1557 
1558 private __gshared bool _GL_EXT_texture_compression_s3tc;
1559 bool GL_EXT_texture_compression_s3tc() @property { return _GL_EXT_texture_compression_s3tc; }
1560 enum : uint {
1561     GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  = 0x83F2,
1562     GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  = 0x83F3,
1563 }
1564 
1565 private __gshared bool _GL_EXT_texture_filter_anisotropic;
1566 bool GL_EXT_texture_filter_anisotropic() @property { return _GL_EXT_texture_filter_anisotropic; }
1567 enum : uint {
1568     GL_TEXTURE_MAX_ANISOTROPY_EXT     = 0x84FE,
1569     GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF,
1570 }
1571 
1572 private __gshared bool _GL_EXT_texture_format_BGRA8888;
1573 bool GL_EXT_texture_format_BGRA8888() @property { return _GL_EXT_texture_format_BGRA8888; }
1574 
1575 private __gshared bool _GL_EXT_texture_rg;
1576 bool GL_EXT_texture_rg() @property { return _GL_EXT_texture_rg; }
1577 enum : uint {
1578     GL_RED_EXT                        = 0x1903,
1579     GL_RG_EXT                         = 0x8227,
1580     GL_R8_EXT                         = 0x8229,
1581     GL_RG8_EXT                        = 0x822B,
1582 }
1583 
1584 private __gshared bool _GL_EXT_texture_sRGB_decode;
1585 bool GL_EXT_texture_sRGB_decode() @property { return _GL_EXT_texture_sRGB_decode; }
1586 enum : uint {
1587     GL_TEXTURE_SRGB_DECODE_EXT        = 0x8A48,
1588     GL_DECODE_EXT                     = 0x8A49,
1589     GL_SKIP_DECODE_EXT                = 0x8A4A,
1590 }
1591 
1592 private __gshared bool _GL_EXT_texture_storage;
1593 bool GL_EXT_texture_storage() @property { return _GL_EXT_texture_storage; }
1594 enum : uint {
1595     GL_TEXTURE_IMMUTABLE_FORMAT_EXT   = 0x912F,
1596     GL_ALPHA8_EXT                     = 0x803C,
1597     GL_LUMINANCE8_EXT                 = 0x8040,
1598     GL_LUMINANCE8_ALPHA8_EXT          = 0x8045,
1599     GL_RGBA32F_EXT                    = 0x8814,
1600     GL_RGB32F_EXT                     = 0x8815,
1601     GL_ALPHA32F_EXT                   = 0x8816,
1602     GL_LUMINANCE32F_EXT               = 0x8818,
1603     GL_LUMINANCE_ALPHA32F_EXT         = 0x8819,
1604     GL_ALPHA16F_EXT                   = 0x881C,
1605     GL_LUMINANCE16F_EXT               = 0x881E,
1606     GL_LUMINANCE_ALPHA16F_EXT         = 0x881F,
1607     GL_R32F_EXT                       = 0x822E,
1608     GL_RG32F_EXT                      = 0x8230,
1609 }
1610 extern( System ) nothrow {
1611     alias da_glTexStorage1DEXT = void function( GLenum, GLsizei, GLenum, GLsizei );
1612     alias da_glTexStorage2DEXT = void function( GLenum, GLsizei, GLenum, GLsizei, GLsizei );
1613     alias da_glTexStorage3DEXT = void function( GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei );
1614     alias da_glTextureStorage1DEXT = void function( GLuint, GLenum, GLsizei, GLenum, GLsizei );
1615     alias da_glTextureStorage2DEXT = void function( GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei );
1616     alias da_glTextureStorage3DEXT = void function( GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei );
1617 }
1618 __gshared {
1619     da_glTexStorage1DEXT glTexStorage1DEXT;
1620     da_glTexStorage2DEXT glTexStorage2DEXT;
1621     da_glTexStorage3DEXT glTexStorage3DEXT;
1622     da_glTextureStorage1DEXT glTextureStorage1DEXT;
1623     da_glTextureStorage2DEXT glTextureStorage2DEXT;
1624     da_glTextureStorage3DEXT glTextureStorage3DEXT;
1625 }
1626 private void load_GL_EXT_texture_storage() {
1627     try {
1628         bindGLFunc( cast( void** )&glTexStorage1DEXT, "glTexStorage1DEXT" );
1629         bindGLFunc( cast( void** )&glTexStorage2DEXT, "glTexStorage2DEXT" );
1630         bindGLFunc( cast( void** )&glTexStorage3DEXT, "glTexStorage3DEXT" );
1631         bindGLFunc( cast( void** )&glTextureStorage1DEXT, "glTextureStorage1DEXT" );
1632         bindGLFunc( cast( void** )&glTextureStorage2DEXT, "glTextureStorage2DEXT" );
1633         bindGLFunc( cast( void** )&glTextureStorage3DEXT, "glTextureStorage3DEXT" );
1634 
1635         _GL_EXT_texture_storage = true;
1636     } catch( Exception e ) {
1637         _GL_EXT_texture_storage = false;
1638     }
1639 }
1640 
1641 private __gshared bool _GL_EXT_texture_type_2_10_10_10_REV;
1642 bool GL_EXT_texture_type_2_10_10_10_REV() @property { return _GL_EXT_texture_type_2_10_10_10_REV; }
1643 enum : uint {
1644     GL_UNSIGNED_INT_2_10_10_10_REV_EXT = 0x8368,
1645 }
1646 
1647 private __gshared bool _GL_EXT_unpack_subimage;
1648 bool GL_EXT_unpack_subimage() @property { return _GL_EXT_unpack_subimage; }
1649 enum : uint {
1650     GL_UNPACK_ROW_LENGTH_EXT          = 0x0CF2,
1651     GL_UNPACK_SKIP_ROWS_EXT           = 0x0CF3,
1652     GL_UNPACK_SKIP_PIXELS_EXT         = 0x0CF4,
1653 }
1654 
1655 private __gshared bool _GL_FJ_shader_binary_GCCSO;
1656 bool GL_FJ_shader_binary_GCCSO() @property { return _GL_FJ_shader_binary_GCCSO; }
1657 enum : uint {
1658     GL_GCCSO_SHADER_BINARY_FJ         = 0x9260,
1659 }
1660 
1661 private __gshared bool _GL_IMG_multisampled_render_to_texture;
1662 bool GL_IMG_multisampled_render_to_texture() @property { return _GL_IMG_multisampled_render_to_texture; }
1663 enum : uint {
1664     GL_RENDERBUFFER_SAMPLES_IMG       = 0x9133,
1665     GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG = 0x9134,
1666     GL_MAX_SAMPLES_IMG                = 0x9135,
1667     GL_TEXTURE_SAMPLES_IMG            = 0x9136,
1668 }
1669 extern( System ) nothrow {
1670     alias da_glRenderbufferStorageMultisampleIMG = void function( GLenum, GLsizei, GLenum, GLsizei, GLsizei );
1671     alias da_glFramebufferTexture2DMultisampleIMG = void function( GLenum, GLenum, GLenum, GLuint, GLint, GLsizei );
1672 }
1673 __gshared {
1674     da_glRenderbufferStorageMultisampleIMG glRenderbufferStorageMultisampleIMG;
1675     da_glFramebufferTexture2DMultisampleIMG glFramebufferTexture2DMultisampleIMG;
1676 }
1677 private void load_GL_IMG_multisampled_render_to_texture() {
1678     try {
1679         bindGLFunc( cast( void** )&glRenderbufferStorageMultisampleIMG, "glRenderbufferStorageMultisampleIMG" );
1680         bindGLFunc( cast( void** )&glFramebufferTexture2DMultisampleIMG, "glFramebufferTexture2DMultisampleIMG" );
1681 
1682         _GL_IMG_multisampled_render_to_texture = true;
1683     } catch( Exception e ) {
1684         _GL_IMG_multisampled_render_to_texture = false;
1685     }
1686 }
1687 
1688 private __gshared bool _GL_IMG_program_binary;
1689 bool GL_IMG_program_binary() @property { return _GL_IMG_program_binary; }
1690 enum : uint {
1691     GL_SGX_PROGRAM_BINARY_IMG         = 0x9130,
1692 }
1693 
1694 private __gshared bool _GL_IMG_read_format;
1695 bool GL_IMG_read_format() @property { return _GL_IMG_read_format; }
1696 enum : uint {
1697     GL_BGRA_IMG                       = 0x80E1,
1698     GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG = 0x8365,
1699 }
1700 
1701 private __gshared bool _GL_IMG_shader_binary;
1702 bool GL_IMG_shader_binary() @property { return _GL_IMG_shader_binary; }
1703 enum : uint {
1704     GL_SGX_BINARY_IMG                 = 0x8C0A,
1705 }
1706 
1707 private __gshared bool _GL_IMG_texture_compression_pvrtc;
1708 bool GL_IMG_texture_compression_pvrtc() @property { return _GL_IMG_texture_compression_pvrtc; }
1709 enum : uint {
1710     GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00,
1711     GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01,
1712     GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02,
1713     GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03,
1714 }
1715 
1716 private __gshared bool _GL_IMG_texture_compression_pvrtc2;
1717 bool GL_IMG_texture_compression_pvrtc2() @property { return _GL_IMG_texture_compression_pvrtc2; }
1718 enum : uint {
1719     GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG = 0x9137,
1720     GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG = 0x9138,
1721 }
1722 
1723 private __gshared bool _GL_INTEL_performance_query;
1724 bool GL_INTEL_performance_query() @property { return _GL_INTEL_performance_query; }
1725 enum : uint {
1726     GL_PERFQUERY_SINGLE_CONTEXT_INTEL = 0x00000000,
1727     GL_PERFQUERY_GLOBAL_CONTEXT_INTEL = 0x00000001,
1728     GL_PERFQUERY_WAIT_INTEL           = 0x83FB,
1729     GL_PERFQUERY_FLUSH_INTEL          = 0x83FA,
1730     GL_PERFQUERY_DONOT_FLUSH_INTEL    = 0x83F9,
1731     GL_PERFQUERY_COUNTER_EVENT_INTEL  = 0x94F0,
1732     GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL = 0x94F1,
1733     GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL = 0x94F2,
1734     GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL = 0x94F3,
1735     GL_PERFQUERY_COUNTER_RAW_INTEL    = 0x94F4,
1736     GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL = 0x94F5,
1737     GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL = 0x94F8,
1738     GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL = 0x94F9,
1739     GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL = 0x94FA,
1740     GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL = 0x94FB,
1741     GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL = 0x94FC,
1742     GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL = 0x94FD,
1743     GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL = 0x94FE,
1744     GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL = 0x94FF,
1745     GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL = 0x9500,
1746 }
1747 extern( System ) nothrow {
1748     alias da_glBeginPerfQueryINTEL = void function( GLuint );
1749     alias da_glCreatePerfQueryINTEL = void function( GLuint, GLuint* );
1750     alias da_glDeletePerfQueryINTEL = void function( GLuint );
1751     alias da_glEndPerfQueryINTEL = void function( GLuint );
1752     alias da_glGetFirstPerfQueryIdINTEL = void function( GLuint* );
1753     alias da_glGetNextPerfQueryIdINTEL = void function( GLuint, GLuint* );
1754     alias da_glGetPerfCounterInfoINTEL = void function( GLuint, GLuint, GLuint, GLchar*, GLuint, GLchar*, GLuint*, GLuint*, GLuint*, GLuint*, GLuint64* );
1755     alias da_glGetPerfQueryDataINTEL = void function( GLuint, GLuint, GLsizei, GLvoid*, GLuint* );
1756     alias da_glGetPerfQueryIdByNameINTEL = void function( GLchar*, GLuint* );
1757     alias da_glGetPerfQueryInfoINTEL = void function( GLuint, GLuint, GLchar*, GLuint*, GLuint*, GLuint*, GLuint* );
1758 }
1759 __gshared {
1760     da_glBeginPerfQueryINTEL glBeginPerfQueryINTEL;
1761     da_glCreatePerfQueryINTEL glCreatePerfQueryINTEL;
1762     da_glDeletePerfQueryINTEL glDeletePerfQueryINTEL;
1763     da_glEndPerfQueryINTEL glEndPerfQueryINTEL;
1764     da_glGetFirstPerfQueryIdINTEL glGetFirstPerfQueryIdINTEL;
1765     da_glGetNextPerfQueryIdINTEL glGetNextPerfQueryIdINTEL;
1766     da_glGetPerfCounterInfoINTEL glGetPerfCounterInfoINTEL;
1767     da_glGetPerfQueryDataINTEL glGetPerfQueryDataINTEL;
1768     da_glGetPerfQueryIdByNameINTEL glGetPerfQueryIdByNameINTEL;
1769     da_glGetPerfQueryInfoINTEL glGetPerfQueryInfoINTEL;
1770 }
1771 private void load_GL_INTEL_performance_query() {
1772     try {
1773         bindGLFunc( cast( void** )&glBeginPerfQueryINTEL, "glBeginPerfQueryINTEL" );
1774         bindGLFunc( cast( void** )&glCreatePerfQueryINTEL, "glCreatePerfQueryINTEL" );
1775         bindGLFunc( cast( void** )&glDeletePerfQueryINTEL, "glDeletePerfQueryINTEL" );
1776         bindGLFunc( cast( void** )&glEndPerfQueryINTEL, "glEndPerfQueryINTEL" );
1777         bindGLFunc( cast( void** )&glGetFirstPerfQueryIdINTEL, "glGetFirstPerfQueryIdINTEL" );
1778         bindGLFunc( cast( void** )&glGetNextPerfQueryIdINTEL, "glGetNextPerfQueryIdINTEL" );
1779         bindGLFunc( cast( void** )&glGetPerfCounterInfoINTEL, "glGetPerfCounterInfoINTEL" );
1780         bindGLFunc( cast( void** )&glGetPerfQueryDataINTEL, "glGetPerfQueryDataINTEL" );
1781         bindGLFunc( cast( void** )&glGetPerfQueryIdByNameINTEL, "glGetPerfQueryIdByNameINTEL" );
1782         bindGLFunc( cast( void** )&glGetPerfQueryInfoINTEL, "glGetPerfQueryInfoINTEL" );
1783 
1784         _GL_INTEL_performance_query = true;
1785     } catch( Exception e ) {
1786         _GL_INTEL_performance_query = false;
1787     }
1788 }
1789 
1790 private __gshared bool _GL_NV_blend_equation_advanced;
1791 bool GL_NV_blend_equation_advanced() @property { return _GL_NV_blend_equation_advanced; }
1792 enum : uint {
1793     GL_BLEND_OVERLAP_NV               = 0x9281,
1794     GL_BLEND_PREMULTIPLIED_SRC_NV     = 0x9280,
1795     GL_BLUE_NV                        = 0x1905,
1796     GL_COLORBURN_NV                   = 0x929A,
1797     GL_COLORDODGE_NV                  = 0x9299,
1798     GL_CONJOINT_NV                    = 0x9284,
1799     GL_CONTRAST_NV                    = 0x92A1,
1800     GL_DARKEN_NV                      = 0x9297,
1801     GL_DIFFERENCE_NV                  = 0x929E,
1802     GL_DISJOINT_NV                    = 0x9283,
1803     GL_DST_ATOP_NV                    = 0x928F,
1804     GL_DST_IN_NV                      = 0x928B,
1805     GL_DST_NV                         = 0x9287,
1806     GL_DST_OUT_NV                     = 0x928D,
1807     GL_DST_OVER_NV                    = 0x9289,
1808     GL_EXCLUSION_NV                   = 0x92A0,
1809     GL_GREEN_NV                       = 0x1904,
1810     GL_HARDLIGHT_NV                   = 0x929B,
1811     GL_HARDMIX_NV                     = 0x92A9,
1812     GL_HSL_COLOR_NV                   = 0x92AF,
1813     GL_HSL_HUE_NV                     = 0x92AD,
1814     GL_HSL_LUMINOSITY_NV              = 0x92B0,
1815     GL_HSL_SATURATION_NV              = 0x92AE,
1816     GL_INVERT_OVG_NV                  = 0x92B4,
1817     GL_INVERT_RGB_NV                  = 0x92A3,
1818     GL_LIGHTEN_NV                     = 0x9298,
1819     GL_LINEARBURN_NV                  = 0x92A5,
1820     GL_LINEARDODGE_NV                 = 0x92A4,
1821     GL_LINEARLIGHT_NV                 = 0x92A7,
1822     GL_MINUS_CLAMPED_NV               = 0x92B3,
1823     GL_MINUS_NV                       = 0x929F,
1824     GL_MULTIPLY_NV                    = 0x9294,
1825     GL_OVERLAY_NV                     = 0x9296,
1826     GL_PINLIGHT_NV                    = 0x92A8,
1827     GL_PLUS_CLAMPED_ALPHA_NV          = 0x92B2,
1828     GL_PLUS_CLAMPED_NV                = 0x92B1,
1829     GL_PLUS_DARKER_NV                 = 0x9292,
1830     GL_PLUS_NV                        = 0x9291,
1831     GL_RED_NV                         = 0x1903,
1832     GL_SCREEN_NV                      = 0x9295,
1833     GL_SOFTLIGHT_NV                   = 0x929C,
1834     GL_SRC_ATOP_NV                    = 0x928E,
1835     GL_SRC_IN_NV                      = 0x928A,
1836     GL_SRC_NV                         = 0x9286,
1837     GL_SRC_OUT_NV                     = 0x928C,
1838     GL_SRC_OVER_NV                    = 0x9288,
1839     GL_UNCORRELATED_NV                = 0x9282,
1840     GL_VIVIDLIGHT_NV                  = 0x92A6,
1841     GL_XOR_NV                         = 0x1506,
1842 }
1843 extern( System ) nothrow {
1844     alias da_glBlendParameteriNV = void function( GLenum, GLint );
1845     alias da_glBlendBarrierNV = void function(  );
1846 }
1847 __gshared {
1848     da_glBlendParameteriNV glBlendParameteriNV;
1849     da_glBlendBarrierNV glBlendBarrierNV;
1850 }
1851 private void load_GL_NV_blend_equation_advanced() {
1852     try {
1853         bindGLFunc( cast( void** )&glBlendParameteriNV, "glBlendParameteriNV" );
1854         bindGLFunc( cast( void** )&glBlendBarrierNV, "glBlendBarrierNV" );
1855 
1856         _GL_NV_blend_equation_advanced = true;
1857     } catch( Exception e ) {
1858         _GL_NV_blend_equation_advanced = false;
1859     }
1860 }
1861 
1862 private __gshared bool _GL_NV_blend_equation_advanced_coherent;
1863 bool GL_NV_blend_equation_advanced_coherent() @property { return _GL_NV_blend_equation_advanced_coherent; }
1864 enum : uint {
1865     GL_BLEND_ADVANCED_COHERENT_NV     = 0x9285,
1866 }
1867 
1868 private __gshared bool _GL_NV_copy_buffer;
1869 bool GL_NV_copy_buffer() @property { return _GL_NV_copy_buffer; }
1870 enum : uint {
1871     GL_COPY_READ_BUFFER_NV            = 0x8F36,
1872     GL_COPY_WRITE_BUFFER_NV           = 0x8F37,
1873 }
1874 extern( System ) nothrow {
1875     alias da_glCopyBufferSubDataNV = void function( GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr );
1876 }
1877 __gshared {
1878     da_glCopyBufferSubDataNV glCopyBufferSubDataNV;
1879 }
1880 private void load_GL_NV_copy_buffer() {
1881     try {
1882         bindGLFunc( cast( void** )&glCopyBufferSubDataNV, "glCopyBufferSubDataNV" );
1883 
1884         _GL_NV_copy_buffer = true;
1885     } catch( Exception e ) {
1886         _GL_NV_copy_buffer = false;
1887     }
1888 }
1889 
1890 private __gshared bool _GL_NV_coverage_sample;
1891 bool GL_NV_coverage_sample() @property { return _GL_NV_coverage_sample; }
1892 enum : uint {
1893     GL_COVERAGE_COMPONENT_NV          = 0x8ED0,
1894     GL_COVERAGE_COMPONENT4_NV         = 0x8ED1,
1895     GL_COVERAGE_ATTACHMENT_NV         = 0x8ED2,
1896     GL_COVERAGE_BUFFERS_NV            = 0x8ED3,
1897     GL_COVERAGE_SAMPLES_NV            = 0x8ED4,
1898     GL_COVERAGE_ALL_FRAGMENTS_NV      = 0x8ED5,
1899     GL_COVERAGE_EDGE_FRAGMENTS_NV     = 0x8ED6,
1900     GL_COVERAGE_AUTOMATIC_NV          = 0x8ED7,
1901     GL_COVERAGE_BUFFER_BIT_NV         = 0x00008000,
1902 }
1903 extern( System ) nothrow {
1904     alias da_glCoverageMaskNV = void function( GLboolean );
1905     alias da_glCoverageOperationNV = void function( GLenum );
1906 }
1907 __gshared {
1908     da_glCoverageMaskNV glCoverageMaskNV;
1909     da_glCoverageOperationNV glCoverageOperationNV;
1910 }
1911 private void load_GL_NV_coverage_sample() {
1912     try {
1913         bindGLFunc( cast( void** )&glCoverageMaskNV, "glCoverageMaskNV" );
1914         bindGLFunc( cast( void** )&glCoverageOperationNV, "glCoverageOperationNV" );
1915 
1916         _GL_NV_coverage_sample = true;
1917     } catch( Exception e ) {
1918         _GL_NV_coverage_sample = false;
1919     }
1920 }
1921 
1922 private __gshared bool _GL_NV_depth_nonlinear;
1923 bool GL_NV_depth_nonlinear() @property { return _GL_NV_depth_nonlinear; }
1924 enum : uint {
1925     GL_DEPTH_COMPONENT16_NONLINEAR_NV = 0x8E2C,
1926 }
1927 
1928 private __gshared bool _GL_NV_draw_buffers;
1929 bool GL_NV_draw_buffers() @property { return _GL_NV_draw_buffers; }
1930 enum : uint {
1931     GL_MAX_DRAW_BUFFERS_NV            = 0x8824,
1932     GL_DRAW_BUFFER0_NV                = 0x8825,
1933     GL_DRAW_BUFFER1_NV                = 0x8826,
1934     GL_DRAW_BUFFER2_NV                = 0x8827,
1935     GL_DRAW_BUFFER3_NV                = 0x8828,
1936     GL_DRAW_BUFFER4_NV                = 0x8829,
1937     GL_DRAW_BUFFER5_NV                = 0x882A,
1938     GL_DRAW_BUFFER6_NV                = 0x882B,
1939     GL_DRAW_BUFFER7_NV                = 0x882C,
1940     GL_DRAW_BUFFER8_NV                = 0x882D,
1941     GL_DRAW_BUFFER9_NV                = 0x882E,
1942     GL_DRAW_BUFFER10_NV               = 0x882F,
1943     GL_DRAW_BUFFER11_NV               = 0x8830,
1944     GL_DRAW_BUFFER12_NV               = 0x8831,
1945     GL_DRAW_BUFFER13_NV               = 0x8832,
1946     GL_DRAW_BUFFER14_NV               = 0x8833,
1947     GL_DRAW_BUFFER15_NV               = 0x8834,
1948     GL_COLOR_ATTACHMENT0_NV           = 0x8CE0,
1949     GL_COLOR_ATTACHMENT1_NV           = 0x8CE1,
1950     GL_COLOR_ATTACHMENT2_NV           = 0x8CE2,
1951     GL_COLOR_ATTACHMENT3_NV           = 0x8CE3,
1952     GL_COLOR_ATTACHMENT4_NV           = 0x8CE4,
1953     GL_COLOR_ATTACHMENT5_NV           = 0x8CE5,
1954     GL_COLOR_ATTACHMENT6_NV           = 0x8CE6,
1955     GL_COLOR_ATTACHMENT7_NV           = 0x8CE7,
1956     GL_COLOR_ATTACHMENT8_NV           = 0x8CE8,
1957     GL_COLOR_ATTACHMENT9_NV           = 0x8CE9,
1958     GL_COLOR_ATTACHMENT10_NV          = 0x8CEA,
1959     GL_COLOR_ATTACHMENT11_NV          = 0x8CEB,
1960     GL_COLOR_ATTACHMENT12_NV          = 0x8CEC,
1961     GL_COLOR_ATTACHMENT13_NV          = 0x8CED,
1962     GL_COLOR_ATTACHMENT14_NV          = 0x8CEE,
1963     GL_COLOR_ATTACHMENT15_NV          = 0x8CEF,
1964 }
1965 extern( System ) nothrow {
1966     alias da_glDrawBuffersNV = void function( GLsizei, const( GLenum )* );
1967 }
1968 __gshared {
1969     da_glDrawBuffersNV glDrawBuffersNV;
1970 }
1971 private void load_GL_NV_draw_buffers() {
1972     try {
1973         bindGLFunc( cast( void** )&glDrawBuffersNV, "glDrawBuffersNV" );
1974 
1975         _GL_NV_draw_buffers = true;
1976     } catch( Exception e ) {
1977         _GL_NV_draw_buffers = false;
1978     }
1979 }
1980 
1981 private __gshared bool _GL_NV_draw_instanced;
1982 bool GL_NV_draw_instanced() @property { return _GL_NV_draw_instanced; }
1983 extern( System ) nothrow {
1984     alias da_glDrawArraysInstancedNV = void function( GLenum, GLint, GLsizei, GLsizei );
1985     alias da_glDrawElementsInstancedNV = void function( GLenum, GLsizei, GLenum, const( void )*, GLsizei );
1986 }
1987 __gshared {
1988     da_glDrawArraysInstancedNV glDrawArraysInstancedNV;
1989     da_glDrawElementsInstancedNV glDrawElementsInstancedNV;
1990 }
1991 private void load_GL_NV_draw_instanced() {
1992     try {
1993         bindGLFunc( cast( void** )&glDrawArraysInstancedNV, "glDrawArraysInstancedNV" );
1994         bindGLFunc( cast( void** )&glDrawElementsInstancedNV, "glDrawElementsInstancedNV" );
1995 
1996         _GL_NV_draw_instanced = true;
1997     } catch( Exception e ) {
1998         _GL_NV_draw_instanced = false;
1999     }
2000 }
2001 
2002 private __gshared bool _GL_NV_explicit_attrib_location;
2003 bool GL_NV_explicit_attrib_location() @property { return _GL_NV_explicit_attrib_location; }
2004 
2005 private __gshared bool _GL_NV_fbo_color_attachments;
2006 bool GL_NV_fbo_color_attachments() @property { return _GL_NV_fbo_color_attachments; }
2007 enum : uint {
2008     GL_MAX_COLOR_ATTACHMENTS_NV       = 0x8CDF,
2009 }
2010 
2011 private __gshared bool _GL_NV_fence;
2012 bool GL_NV_fence() @property { return _GL_NV_fence; }
2013 enum : uint {
2014     GL_ALL_COMPLETED_NV               = 0x84F2,
2015     GL_FENCE_STATUS_NV                = 0x84F3,
2016     GL_FENCE_CONDITION_NV             = 0x84F4,
2017 }
2018 extern( System ) nothrow {
2019     alias da_glDeleteFencesNV = void function( GLsizei, const( GLuint )* );
2020     alias da_glGenFencesNV = void function( GLsizei, GLuint* );
2021     alias da_glIsFenceNV = GLboolean function( GLuint );
2022     alias da_glTestFenceNV = GLboolean function( GLuint );
2023     alias da_glGetFenceivNV = void function( GLuint, GLenum, GLint* );
2024     alias da_glFinishFenceNV = void function( GLuint );
2025     alias da_glSetFenceNV = void function( GLuint, GLenum );
2026 }
2027 __gshared {
2028     da_glDeleteFencesNV glDeleteFencesNV;
2029     da_glGenFencesNV glGenFencesNV;
2030     da_glIsFenceNV glIsFenceNV;
2031     da_glTestFenceNV glTestFenceNV;
2032     da_glGetFenceivNV glGetFenceivNV;
2033     da_glFinishFenceNV glFinishFenceNV;
2034     da_glSetFenceNV glSetFenceNV;
2035 }
2036 private void load_GL_NV_fence() {
2037     try {
2038         bindGLFunc( cast( void** )&glDeleteFencesNV, "glDeleteFencesNV" );
2039         bindGLFunc( cast( void** )&glGenFencesNV, "glGenFencesNV" );
2040         bindGLFunc( cast( void** )&glIsFenceNV, "glIsFenceNV" );
2041         bindGLFunc( cast( void** )&glTestFenceNV, "glTestFenceNV" );
2042         bindGLFunc( cast( void** )&glGetFenceivNV, "glGetFenceivNV" );
2043         bindGLFunc( cast( void** )&glFinishFenceNV, "glFinishFenceNV" );
2044         bindGLFunc( cast( void** )&glSetFenceNV, "glSetFenceNV" );
2045 
2046         _GL_NV_fence = true;
2047     } catch( Exception e ) {
2048         _GL_NV_fence = false;
2049     }
2050 }
2051 
2052 private __gshared bool _GL_NV_framebuffer_blit;
2053 bool GL_NV_framebuffer_blit() @property { return _GL_NV_framebuffer_blit; }
2054 enum : uint {
2055     GL_READ_FRAMEBUFFER_NV            = 0x8CA8,
2056     GL_DRAW_FRAMEBUFFER_NV            = 0x8CA9,
2057     GL_DRAW_FRAMEBUFFER_BINDING_NV    = 0x8CA6,
2058     GL_READ_FRAMEBUFFER_BINDING_NV    = 0x8CAA,
2059 }
2060 extern( System ) nothrow {
2061     alias da_glBlitFramebufferNV = void function( GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum );
2062 }
2063 __gshared {
2064     da_glBlitFramebufferNV glBlitFramebufferNV;
2065 }
2066 private void load_GL_NV_framebuffer_blit() {
2067     try {
2068         bindGLFunc( cast( void** )&glBlitFramebufferNV, "glBlitFramebufferNV" );
2069 
2070         _GL_NV_framebuffer_blit = true;
2071     } catch( Exception e ) {
2072         _GL_NV_framebuffer_blit = false;
2073     }
2074 }
2075 
2076 private __gshared bool _GL_NV_framebuffer_multisample;
2077 bool GL_NV_framebuffer_multisample() @property { return _GL_NV_framebuffer_multisample; }
2078 enum : uint {
2079     GL_RENDERBUFFER_SAMPLES_NV        = 0x8CAB,
2080     GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV = 0x8D56,
2081     GL_MAX_SAMPLES_NV                 = 0x8D57,
2082 }
2083 extern( System ) nothrow {
2084     alias da_glRenderbufferStorageMultisampleNV = void function( GLenum, GLsizei, GLenum, GLsizei, GLsizei );
2085 }
2086 __gshared {
2087     da_glRenderbufferStorageMultisampleNV glRenderbufferStorageMultisampleNV;
2088 }
2089 private void load_GL_NV_framebuffer_multisample() {
2090     try {
2091         bindGLFunc( cast( void** )&glRenderbufferStorageMultisampleNV, "glRenderbufferStorageMultisampleNV" );
2092 
2093         _GL_NV_framebuffer_multisample = true;
2094     } catch( Exception e ) {
2095         _GL_NV_framebuffer_multisample = false;
2096     }
2097 }
2098 
2099 private __gshared bool _GL_NV_generate_mipmap_sRGB;
2100 bool GL_NV_generate_mipmap_sRGB() @property { return _GL_NV_generate_mipmap_sRGB; }
2101 
2102 private __gshared bool _GL_NV_instanced_arrays;
2103 bool GL_NV_instanced_arrays() @property { return _GL_NV_instanced_arrays; }
2104 enum : uint {
2105     GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV = 0x88FE,
2106 }
2107 extern( System ) nothrow {
2108     alias da_glVertexAttribDivisorNV = void function( GLuint, GLuint );
2109 }
2110 __gshared {
2111     da_glVertexAttribDivisorNV glVertexAttribDivisorNV;
2112 }
2113 private void load_GL_NV_instanced_arrays() {
2114     try {
2115         bindGLFunc( cast( void** )&glVertexAttribDivisorNV, "glVertexAttribDivisorNV" );
2116 
2117         _GL_NV_instanced_arrays = true;
2118     } catch( Exception e ) {
2119         _GL_NV_instanced_arrays = false;
2120     }
2121 }
2122 
2123 private __gshared bool _GL_NV_non_square_matrices;
2124 bool GL_NV_non_square_matrices() @property { return _GL_NV_non_square_matrices; }
2125 enum : uint {
2126     GL_FLOAT_MAT2x3_NV                = 0x8B65,
2127     GL_FLOAT_MAT2x4_NV                = 0x8B66,
2128     GL_FLOAT_MAT3x2_NV                = 0x8B67,
2129     GL_FLOAT_MAT3x4_NV                = 0x8B68,
2130     GL_FLOAT_MAT4x2_NV                = 0x8B69,
2131     GL_FLOAT_MAT4x3_NV                = 0x8B6A,
2132 }
2133 extern( System ) nothrow {
2134     alias da_glUniformMatrix2x3fvNV = void function( GLint, GLsizei, GLboolean, const( GLfloat )* );
2135     alias da_glUniformMatrix3x2fvNV = void function( GLint, GLsizei, GLboolean, const( GLfloat )* );
2136     alias da_glUniformMatrix2x4fvNV = void function( GLint, GLsizei, GLboolean, const( GLfloat )* );
2137     alias da_glUniformMatrix4x2fvNV = void function( GLint, GLsizei, GLboolean, const( GLfloat )* );
2138     alias da_glUniformMatrix3x4fvNV = void function( GLint, GLsizei, GLboolean, const( GLfloat )* );
2139     alias da_glUniformMatrix4x3fvNV = void function( GLint, GLsizei, GLboolean, const( GLfloat )* );
2140 }
2141 __gshared {
2142     da_glUniformMatrix2x3fvNV glUniformMatrix2x3fvNV;
2143     da_glUniformMatrix3x2fvNV glUniformMatrix3x2fvNV;
2144     da_glUniformMatrix2x4fvNV glUniformMatrix2x4fvNV;
2145     da_glUniformMatrix4x2fvNV glUniformMatrix4x2fvNV;
2146     da_glUniformMatrix3x4fvNV glUniformMatrix3x4fvNV;
2147     da_glUniformMatrix4x3fvNV glUniformMatrix4x3fvNV;
2148 }
2149 private void load_GL_NV_non_square_matrices() {
2150     try {
2151         bindGLFunc( cast( void** )&glUniformMatrix2x3fvNV, "glUniformMatrix2x3fvNV" );
2152         bindGLFunc( cast( void** )&glUniformMatrix3x2fvNV, "glUniformMatrix3x2fvNV" );
2153         bindGLFunc( cast( void** )&glUniformMatrix2x4fvNV, "glUniformMatrix2x4fvNV" );
2154         bindGLFunc( cast( void** )&glUniformMatrix4x2fvNV, "glUniformMatrix4x2fvNV" );
2155         bindGLFunc( cast( void** )&glUniformMatrix3x4fvNV, "glUniformMatrix3x4fvNV" );
2156         bindGLFunc( cast( void** )&glUniformMatrix4x3fvNV, "glUniformMatrix4x3fvNV" );
2157 
2158         _GL_NV_non_square_matrices = true;
2159     } catch( Exception e ) {
2160         _GL_NV_non_square_matrices = false;
2161     }
2162 }
2163 
2164 private __gshared bool _GL_NV_read_buffer;
2165 bool GL_NV_read_buffer() @property { return _GL_NV_read_buffer; }
2166 enum : uint {
2167     GL_READ_BUFFER_NV                 = 0x0C02,
2168 }
2169 extern( System ) nothrow {
2170 void glReadBufferNV ( GLenum );
2171 }
2172 
2173 private __gshared bool _GL_NV_read_buffer_front;
2174 bool GL_NV_read_buffer_front() @property { return _GL_NV_read_buffer_front; }
2175 
2176 private __gshared bool _GL_NV_read_depth;
2177 bool GL_NV_read_depth() @property { return _GL_NV_read_depth; }
2178 
2179 private __gshared bool _GL_NV_read_depth_stencil;
2180 bool GL_NV_read_depth_stencil() @property { return _GL_NV_read_depth_stencil; }
2181 
2182 private __gshared bool _GL_NV_read_stencil;
2183 bool GL_NV_read_stencil() @property { return _GL_NV_read_stencil; }
2184 
2185 private __gshared bool _GL_NV_sRGB_formats;
2186 bool GL_NV_sRGB_formats() @property { return _GL_NV_sRGB_formats; }
2187 enum : uint {
2188     GL_SLUMINANCE_NV                  = 0x8C46,
2189     GL_SLUMINANCE_ALPHA_NV            = 0x8C44,
2190     GL_SRGB8_NV                       = 0x8C41,
2191     GL_SLUMINANCE8_NV                 = 0x8C47,
2192     GL_SLUMINANCE8_ALPHA8_NV          = 0x8C45,
2193     GL_COMPRESSED_SRGB_S3TC_DXT1_NV   = 0x8C4C,
2194     GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV = 0x8C4D,
2195     GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV = 0x8C4E,
2196     GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV = 0x8C4F,
2197     GL_ETC1_SRGB8_NV                  = 0x88EE,
2198 }
2199 
2200 private __gshared bool _GL_NV_shadow_samplers_array;
2201 bool GL_NV_shadow_samplers_array() @property { return _GL_NV_shadow_samplers_array; }
2202 enum : uint {
2203     GL_SAMPLER_2D_ARRAY_SHADOW_NV     = 0x8DC4,
2204 }
2205 
2206 private __gshared bool _GL_NV_shadow_samplers_cube;
2207 bool GL_NV_shadow_samplers_cube() @property { return _GL_NV_shadow_samplers_cube; }
2208 enum : uint {
2209     GL_SAMPLER_CUBE_SHADOW_NV         = 0x8DC5,
2210 }
2211 
2212 private __gshared bool _GL_NV_texture_border_clamp;
2213 bool GL_NV_texture_border_clamp() @property { return _GL_NV_texture_border_clamp; }
2214 enum : uint {
2215     GL_TEXTURE_BORDER_COLOR_NV        = 0x1004,
2216     GL_CLAMP_TO_BORDER_NV             = 0x812D,
2217 }
2218 
2219 private __gshared bool _GL_NV_texture_compression_s3tc_update;
2220 bool GL_NV_texture_compression_s3tc_update() @property { return _GL_NV_texture_compression_s3tc_update; }
2221 
2222 private __gshared bool _GL_NV_texture_npot_2D_mipmap;
2223 bool GL_NV_texture_npot_2D_mipmap() @property { return _GL_NV_texture_npot_2D_mipmap; }
2224 
2225 private __gshared bool _GL_QCOM_alpha_test;
2226 bool GL_QCOM_alpha_test() @property { return _GL_QCOM_alpha_test; }
2227 enum : uint {
2228     GL_ALPHA_TEST_QCOM                = 0x0BC0,
2229     GL_ALPHA_TEST_FUNC_QCOM           = 0x0BC1,
2230     GL_ALPHA_TEST_REF_QCOM            = 0x0BC2,
2231 }
2232 extern( System ) nothrow {
2233     alias da_glAlphaFuncQCOM = void function( GLenum, GLclampf );
2234 }
2235 __gshared {
2236     da_glAlphaFuncQCOM glAlphaFuncQCOM;
2237 }
2238 private void load_GL_QCOM_alpha_test() {
2239     try {
2240         bindGLFunc( cast( void** )&glAlphaFuncQCOM, "glAlphaFuncQCOM" );
2241 
2242         _GL_QCOM_alpha_test = true;
2243     } catch( Exception e ) {
2244         _GL_QCOM_alpha_test = false;
2245     }
2246 }
2247 
2248 private __gshared bool _GL_QCOM_binning_control;
2249 bool GL_QCOM_binning_control() @property { return _GL_QCOM_binning_control; }
2250 enum : uint {
2251     GL_BINNING_CONTROL_HINT_QCOM      = 0x8FB0,
2252     GL_CPU_OPTIMIZED_QCOM             = 0x8FB1,
2253     GL_GPU_OPTIMIZED_QCOM             = 0x8FB2,
2254     GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM = 0x8FB3,
2255 }
2256 
2257 private __gshared bool _GL_QCOM_driver_control;
2258 bool GL_QCOM_driver_control() @property { return _GL_QCOM_driver_control; }
2259 extern( System ) nothrow {
2260     alias da_glGetDriverControlsQCOM = void function( GLint*, GLsizei, GLuint* );
2261     alias da_glGetDriverControlStringQCOM = void function( GLuint, GLsizei, GLsizei*, GLchar* );
2262     alias da_glEnableDriverControlQCOM = void function( GLuint );
2263     alias da_glDisableDriverControlQCOM = void function( GLuint );
2264 }
2265 __gshared {
2266     da_glGetDriverControlsQCOM glGetDriverControlsQCOM;
2267     da_glGetDriverControlStringQCOM glGetDriverControlStringQCOM;
2268     da_glEnableDriverControlQCOM glEnableDriverControlQCOM;
2269     da_glDisableDriverControlQCOM glDisableDriverControlQCOM;
2270 }
2271 private void load_GL_QCOM_driver_control() {
2272     try {
2273         bindGLFunc( cast( void** )&glGetDriverControlsQCOM, "glGetDriverControlsQCOM" );
2274         bindGLFunc( cast( void** )&glGetDriverControlStringQCOM, "glGetDriverControlStringQCOM" );
2275         bindGLFunc( cast( void** )&glEnableDriverControlQCOM, "glEnableDriverControlQCOM" );
2276         bindGLFunc( cast( void** )&glDisableDriverControlQCOM, "glDisableDriverControlQCOM" );
2277 
2278         _GL_QCOM_driver_control = true;
2279     } catch( Exception e ) {
2280         _GL_QCOM_driver_control = false;
2281     }
2282 }
2283 
2284 private __gshared bool _GL_QCOM_extended_get;
2285 bool GL_QCOM_extended_get() @property { return _GL_QCOM_extended_get; }
2286 enum : uint {
2287     GL_TEXTURE_WIDTH_QCOM             = 0x8BD2,
2288     GL_TEXTURE_HEIGHT_QCOM            = 0x8BD3,
2289     GL_TEXTURE_DEPTH_QCOM             = 0x8BD4,
2290     GL_TEXTURE_INTERNAL_FORMAT_QCOM   = 0x8BD5,
2291     GL_TEXTURE_FORMAT_QCOM            = 0x8BD6,
2292     GL_TEXTURE_TYPE_QCOM              = 0x8BD7,
2293     GL_TEXTURE_IMAGE_VALID_QCOM       = 0x8BD8,
2294     GL_TEXTURE_NUM_LEVELS_QCOM        = 0x8BD9,
2295     GL_TEXTURE_TARGET_QCOM            = 0x8BDA,
2296     GL_TEXTURE_OBJECT_VALID_QCOM      = 0x8BDB,
2297     GL_STATE_RESTORE                  = 0x8BDC,
2298 }
2299 extern( System ) nothrow {
2300     alias da_glExtGetTexturesQCOM = void function( GLuint*, GLint, GLint* );
2301     alias da_glExtGetBuffersQCOM = void function( GLuint*, GLint, GLint* );
2302     alias da_glExtGetRenderbuffersQCOM = void function( GLuint*, GLint, GLint* );
2303     alias da_glExtGetFramebuffersQCOM = void function( GLuint*, GLint, GLint* );
2304     alias da_glExtGetTexLevelParameterivQCOM = void function( GLuint, GLenum, GLint, GLenum, GLint* );
2305     alias da_glExtTexObjectStateOverrideiQCOM = void function( GLenum, GLenum, GLint );
2306     alias da_glExtGetTexSubImageQCOM = void function( GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, void* );
2307     alias da_glExtGetBufferPointervQCOM = void function( GLenum, void** );
2308 }
2309 __gshared {
2310     da_glExtGetTexturesQCOM glExtGetTexturesQCOM;
2311     da_glExtGetBuffersQCOM glExtGetBuffersQCOM;
2312     da_glExtGetRenderbuffersQCOM glExtGetRenderbuffersQCOM;
2313     da_glExtGetFramebuffersQCOM glExtGetFramebuffersQCOM;
2314     da_glExtGetTexLevelParameterivQCOM glExtGetTexLevelParameterivQCOM;
2315     da_glExtTexObjectStateOverrideiQCOM glExtTexObjectStateOverrideiQCOM;
2316     da_glExtGetTexSubImageQCOM glExtGetTexSubImageQCOM;
2317     da_glExtGetBufferPointervQCOM glExtGetBufferPointervQCOM;
2318 }
2319 private void load_GL_QCOM_extended_get() {
2320     try {
2321         bindGLFunc( cast( void** )&glExtGetTexturesQCOM, "glExtGetTexturesQCOM" );
2322         bindGLFunc( cast( void** )&glExtGetBuffersQCOM, "glExtGetBuffersQCOM" );
2323         bindGLFunc( cast( void** )&glExtGetRenderbuffersQCOM, "glExtGetRenderbuffersQCOM" );
2324         bindGLFunc( cast( void** )&glExtGetFramebuffersQCOM, "glExtGetFramebuffersQCOM" );
2325         bindGLFunc( cast( void** )&glExtGetTexLevelParameterivQCOM, "glExtGetTexLevelParameterivQCOM" );
2326         bindGLFunc( cast( void** )&glExtTexObjectStateOverrideiQCOM, "glExtTexObjectStateOverrideiQCOM" );
2327         bindGLFunc( cast( void** )&glExtGetTexSubImageQCOM, "glExtGetTexSubImageQCOM" );
2328         bindGLFunc( cast( void** )&glExtGetBufferPointervQCOM, "glExtGetBufferPointervQCOM" );
2329 
2330         _GL_QCOM_extended_get = true;
2331     } catch( Exception e ) {
2332         _GL_QCOM_extended_get = false;
2333     }
2334 }
2335 
2336 private __gshared bool _GL_QCOM_extended_get2;
2337 bool GL_QCOM_extended_get2() @property { return _GL_QCOM_extended_get2; }
2338 extern( System ) nothrow {
2339     alias da_glExtGetShadersQCOM = void function( GLuint*, GLint, GLint );
2340     alias da_glExtGetProgramsQCOM = void function( GLuint*, GLint, GLint* );
2341     alias da_glExtIsProgramBinaryQCOM = GLboolean function( GLuint );
2342     alias da_glExtGetProgramBinarySourceQCOM = void function( GLuint, GLenum, GLchar*, GLint* );
2343 }
2344 __gshared {
2345     da_glExtGetShadersQCOM glExtGetShadersQCOM;
2346     da_glExtGetProgramsQCOM glExtGetProgramsQCOM;
2347     da_glExtIsProgramBinaryQCOM glExtIsProgramBinaryQCOM;
2348     da_glExtGetProgramBinarySourceQCOM glExtGetProgramBinarySourceQCOM;
2349 }
2350 private void load_GL_QCOM_extended_get2() {
2351     try {
2352         bindGLFunc( cast( void** )&glExtGetShadersQCOM, "glExtGetShadersQCOM" );
2353         bindGLFunc( cast( void** )&glExtGetProgramsQCOM, "glExtGetProgramsQCOM" );
2354         bindGLFunc( cast( void** )&glExtIsProgramBinaryQCOM, "glExtIsProgramBinaryQCOM" );
2355         bindGLFunc( cast( void** )&glExtGetProgramBinarySourceQCOM, "glExtGetProgramBinarySourceQCOM" );
2356 
2357         _GL_QCOM_extended_get2 = true;
2358     } catch( Exception e ) {
2359         _GL_QCOM_extended_get2 = false;
2360     }
2361 }
2362 
2363 private __gshared bool _GL_QCOM_perfmon_global_mode;
2364 bool GL_QCOM_perfmon_global_mode() @property { return _GL_QCOM_perfmon_global_mode; }
2365 enum : uint {
2366     GL_PERFMON_GLOBAL_MODE_QCOM       = 0x8FA0,
2367 }
2368 
2369 private __gshared bool _GL_QCOM_tiled_rendering;
2370 bool GL_QCOM_tiled_rendering() @property { return _GL_QCOM_tiled_rendering; }
2371 enum : uint {
2372     GL_COLOR_BUFFER_BIT0_QCOM         = 0x00000001,
2373     GL_COLOR_BUFFER_BIT1_QCOM         = 0x00000002,
2374     GL_COLOR_BUFFER_BIT2_QCOM         = 0x00000004,
2375     GL_COLOR_BUFFER_BIT3_QCOM         = 0x00000008,
2376     GL_COLOR_BUFFER_BIT4_QCOM         = 0x00000010,
2377     GL_COLOR_BUFFER_BIT5_QCOM         = 0x00000020,
2378     GL_COLOR_BUFFER_BIT6_QCOM         = 0x00000040,
2379     GL_COLOR_BUFFER_BIT7_QCOM         = 0x00000080,
2380     GL_DEPTH_BUFFER_BIT0_QCOM         = 0x00000100,
2381     GL_DEPTH_BUFFER_BIT1_QCOM         = 0x00000200,
2382     GL_DEPTH_BUFFER_BIT2_QCOM         = 0x00000400,
2383     GL_DEPTH_BUFFER_BIT3_QCOM         = 0x00000800,
2384     GL_DEPTH_BUFFER_BIT4_QCOM         = 0x00001000,
2385     GL_DEPTH_BUFFER_BIT5_QCOM         = 0x00002000,
2386     GL_DEPTH_BUFFER_BIT6_QCOM         = 0x00004000,
2387     GL_DEPTH_BUFFER_BIT7_QCOM         = 0x00008000,
2388     GL_STENCIL_BUFFER_BIT0_QCOM       = 0x00010000,
2389     GL_STENCIL_BUFFER_BIT1_QCOM       = 0x00020000,
2390     GL_STENCIL_BUFFER_BIT2_QCOM       = 0x00040000,
2391     GL_STENCIL_BUFFER_BIT3_QCOM       = 0x00080000,
2392     GL_STENCIL_BUFFER_BIT4_QCOM       = 0x00100000,
2393     GL_STENCIL_BUFFER_BIT5_QCOM       = 0x00200000,
2394     GL_STENCIL_BUFFER_BIT6_QCOM       = 0x00400000,
2395     GL_STENCIL_BUFFER_BIT7_QCOM       = 0x00800000,
2396     GL_MULTISAMPLE_BUFFER_BIT0_QCOM   = 0x01000000,
2397     GL_MULTISAMPLE_BUFFER_BIT1_QCOM   = 0x02000000,
2398     GL_MULTISAMPLE_BUFFER_BIT2_QCOM   = 0x04000000,
2399     GL_MULTISAMPLE_BUFFER_BIT3_QCOM   = 0x08000000,
2400     GL_MULTISAMPLE_BUFFER_BIT4_QCOM   = 0x10000000,
2401     GL_MULTISAMPLE_BUFFER_BIT5_QCOM   = 0x20000000,
2402     GL_MULTISAMPLE_BUFFER_BIT6_QCOM   = 0x40000000,
2403     GL_MULTISAMPLE_BUFFER_BIT7_QCOM   = 0x80000000,
2404 }
2405 extern( System ) nothrow {
2406     alias da_glStartTilingQCOM = void function( GLuint, GLuint, GLuint, GLuint, GLbitfield );
2407     alias da_glEndTilingQCOM = void function( GLbitfield );
2408 }
2409 __gshared {
2410     da_glStartTilingQCOM glStartTilingQCOM;
2411     da_glEndTilingQCOM glEndTilingQCOM;
2412 }
2413 private void load_GL_QCOM_tiled_rendering() {
2414     try {
2415         bindGLFunc( cast( void** )&glStartTilingQCOM, "glStartTilingQCOM" );
2416         bindGLFunc( cast( void** )&glEndTilingQCOM, "glEndTilingQCOM" );
2417 
2418         _GL_QCOM_tiled_rendering = true;
2419     } catch( Exception e ) {
2420         _GL_QCOM_tiled_rendering = false;
2421     }
2422 }
2423 
2424 private __gshared bool _GL_QCOM_writeonly_rendering;
2425 bool GL_QCOM_writeonly_rendering() @property { return _GL_QCOM_writeonly_rendering; }
2426 enum : uint {
2427     GL_WRITEONLY_RENDERING_QCOM       = 0x8823,
2428 }
2429 
2430 private __gshared bool _GL_VIV_shader_binary;
2431 bool GL_VIV_shader_binary() @property { return _GL_VIV_shader_binary; }
2432 enum : uint {
2433     GL_SHADER_BINARY_VIV              = 0x8FC4,
2434 }
2435 
2436 package void loadEXT(  ) {
2437     _GL_KHR_blend_equation_advanced = isExtSupported( "GL_KHR_blend_equation_advanced" );
2438     if( _GL_KHR_blend_equation_advanced ) load_GL_KHR_blend_equation_advanced();
2439     _GL_KHR_debug = isExtSupported( "GL_KHR_debug" );
2440     if( _GL_KHR_debug ) load_GL_KHR_debug();
2441     _GL_KHR_texture_compression_astc_hdr = isExtSupported( "GL_KHR_texture_compression_astc_hdr" );
2442     _GL_KHR_texture_compression_astc_ldr = isExtSupported( "GL_KHR_texture_compression_astc_ldr" );
2443     _GL_OES_EGL_image = isExtSupported( "GL_OES_EGL_image" );
2444     if( _GL_OES_EGL_image ) load_GL_OES_EGL_image();
2445     _GL_OES_EGL_image_external = isExtSupported( "GL_OES_EGL_image_external" );
2446     _GL_OES_compressed_ETC1_RGB8_texture = isExtSupported( "GL_OES_compressed_ETC1_RGB8_texture" );
2447     _GL_OES_compressed_paletted_texture = isExtSupported( "GL_OES_compressed_paletted_texture" );
2448     _GL_OES_depth24 = isExtSupported( "GL_OES_depth24" );
2449     _GL_OES_depth32 = isExtSupported( "GL_OES_depth32" );
2450     _GL_OES_depth_texture = isExtSupported( "GL_OES_depth_texture" );
2451     _GL_OES_element_index_uint = isExtSupported( "GL_OES_element_index_uint" );
2452     _GL_OES_fbo_render_mipmap = isExtSupported( "GL_OES_fbo_render_mipmap" );
2453     _GL_OES_fragment_precision_high = isExtSupported( "GL_OES_fragment_precision_high" );
2454     _GL_OES_get_program_binary = isExtSupported( "GL_OES_get_program_binary" );
2455     if( _GL_OES_get_program_binary ) load_GL_OES_get_program_binary();
2456     _GL_OES_mapbuffer = isExtSupported( "GL_OES_mapbuffer" );
2457     if( _GL_OES_mapbuffer ) load_GL_OES_mapbuffer();
2458     _GL_OES_packed_depth_stencil = isExtSupported( "GL_OES_packed_depth_stencil" );
2459     _GL_OES_required_internalformat = isExtSupported( "GL_OES_required_internalformat" );
2460     _GL_OES_rgb8_rgba8 = isExtSupported( "GL_OES_rgb8_rgba8" );
2461     _GL_OES_sample_shading = isExtSupported( "GL_OES_sample_shading" );
2462     if( _GL_OES_sample_shading ) load_GL_OES_sample_shading();
2463     _GL_OES_sample_variables = isExtSupported( "GL_OES_sample_variables" );
2464     _GL_OES_shader_image_atomic = isExtSupported( "GL_OES_shader_image_atomic" );
2465     _GL_OES_shader_multisample_interpolation = isExtSupported( "GL_OES_shader_multisample_interpolation" );
2466     _GL_OES_standard_derivatives = isExtSupported( "GL_OES_standard_derivatives" );
2467     _GL_OES_stencil1 = isExtSupported( "GL_OES_stencil1" );
2468     _GL_OES_stencil4 = isExtSupported( "GL_OES_stencil4" );
2469     _GL_OES_surfaceless_context = isExtSupported( "GL_OES_surfaceless_context" );
2470     _GL_OES_texture_3D = isExtSupported( "GL_OES_texture_3D" );
2471     if( _GL_OES_texture_3D ) load_GL_OES_texture_3D();
2472     _GL_OES_texture_compression_astc = isExtSupported( "GL_OES_texture_compression_astc" );
2473     _GL_OES_texture_float = isExtSupported( "GL_OES_texture_float" );
2474     _GL_OES_texture_float_linear = isExtSupported( "GL_OES_texture_float_linear" );
2475     _GL_OES_texture_half_float = isExtSupported( "GL_OES_texture_half_float" );
2476     _GL_OES_texture_half_float_linear = isExtSupported( "GL_OES_texture_half_float_linear" );
2477     _GL_OES_texture_npot = isExtSupported( "GL_OES_texture_npot" );
2478     _GL_OES_texture_stencil8 = isExtSupported( "GL_OES_texture_stencil8" );
2479     _GL_OES_texture_storage_multisample_2d_array = isExtSupported( "GL_OES_texture_storage_multisample_2d_array" );
2480     if( _GL_OES_texture_storage_multisample_2d_array ) load_GL_OES_texture_storage_multisample_2d_array();
2481     _GL_OES_vertex_array_object = isExtSupported( "GL_OES_vertex_array_object" );
2482     if( _GL_OES_vertex_array_object ) load_GL_OES_vertex_array_object();
2483     _GL_OES_vertex_half_float = isExtSupported( "GL_OES_vertex_half_float" );
2484     _GL_OES_vertex_type_10_10_10_2 = isExtSupported( "GL_OES_vertex_type_10_10_10_2" );
2485     _GL_AMD_compressed_3DC_texture = isExtSupported( "GL_AMD_compressed_3DC_texture" );
2486     _GL_AMD_compressed_ATC_texture = isExtSupported( "GL_AMD_compressed_ATC_texture" );
2487     _GL_AMD_performance_monitor = isExtSupported( "GL_AMD_performance_monitor" );
2488     if( _GL_AMD_performance_monitor ) load_GL_AMD_performance_monitor();
2489     _GL_AMD_program_binary_Z400 = isExtSupported( "GL_AMD_program_binary_Z400" );
2490     _GL_ANGLE_depth_texture = isExtSupported( "GL_ANGLE_depth_texture" );
2491     _GL_ANGLE_framebuffer_blit = isExtSupported( "GL_ANGLE_framebuffer_blit" );
2492     if( _GL_ANGLE_framebuffer_blit ) load_GL_ANGLE_framebuffer_blit();
2493     _GL_ANGLE_framebuffer_multisample = isExtSupported( "GL_ANGLE_framebuffer_multisample" );
2494     if( _GL_ANGLE_framebuffer_multisample ) load_GL_ANGLE_framebuffer_multisample();
2495     _GL_ANGLE_instanced_arrays = isExtSupported( "GL_ANGLE_instanced_arrays" );
2496     if( _GL_ANGLE_instanced_arrays ) load_GL_ANGLE_instanced_arrays();
2497     _GL_ANGLE_pack_reverse_row_order = isExtSupported( "GL_ANGLE_pack_reverse_row_order" );
2498     _GL_ANGLE_program_binary = isExtSupported( "GL_ANGLE_program_binary" );
2499     _GL_ANGLE_texture_compression_dxt3 = isExtSupported( "GL_ANGLE_texture_compression_dxt3" );
2500     _GL_ANGLE_texture_compression_dxt5 = isExtSupported( "GL_ANGLE_texture_compression_dxt5" );
2501     _GL_ANGLE_texture_usage = isExtSupported( "GL_ANGLE_texture_usage" );
2502     _GL_ANGLE_translated_shader_source = isExtSupported( "GL_ANGLE_translated_shader_source" );
2503     if( _GL_ANGLE_translated_shader_source ) load_GL_ANGLE_translated_shader_source();
2504     _GL_APPLE_copy_texture_levels = isExtSupported( "GL_APPLE_copy_texture_levels" );
2505     if( _GL_APPLE_copy_texture_levels ) load_GL_APPLE_copy_texture_levels();
2506     _GL_APPLE_framebuffer_multisample = isExtSupported( "GL_APPLE_framebuffer_multisample" );
2507     if( _GL_APPLE_framebuffer_multisample ) load_GL_APPLE_framebuffer_multisample();
2508     _GL_APPLE_rgb_422 = isExtSupported( "GL_APPLE_rgb_422" );
2509     _GL_APPLE_sync = isExtSupported( "GL_APPLE_sync" );
2510     if( _GL_APPLE_sync ) load_GL_APPLE_sync();
2511     _GL_APPLE_texture_format_BGRA8888 = isExtSupported( "GL_APPLE_texture_format_BGRA8888" );
2512     _GL_APPLE_texture_max_level = isExtSupported( "GL_APPLE_texture_max_level" );
2513     _GL_ARM_mali_program_binary = isExtSupported( "GL_ARM_mali_program_binary" );
2514     _GL_ARM_mali_shader_binary = isExtSupported( "GL_ARM_mali_shader_binary" );
2515     _GL_ARM_rgba8 = isExtSupported( "GL_ARM_rgba8" );
2516     _GL_ARM_shader_framebuffer_fetch = isExtSupported( "GL_ARM_shader_framebuffer_fetch" );
2517     _GL_ARM_shader_framebuffer_fetch_depth_stencil = isExtSupported( "GL_ARM_shader_framebuffer_fetch_depth_stencil" );
2518     _GL_DMP_shader_binary = isExtSupported( "GL_DMP_shader_binary" );
2519     _GL_EXT_blend_minmax = isExtSupported( "GL_EXT_blend_minmax" );
2520     _GL_EXT_color_buffer_half_float = isExtSupported( "GL_EXT_color_buffer_half_float" );
2521     _GL_EXT_debug_label = isExtSupported( "GL_EXT_debug_label" );
2522     if( _GL_EXT_debug_label ) load_GL_EXT_debug_label();
2523     _GL_EXT_debug_marker = isExtSupported( "GL_EXT_debug_marker" );
2524     if( _GL_EXT_debug_marker ) load_GL_EXT_debug_marker();
2525     _GL_EXT_discard_framebuffer = isExtSupported( "GL_EXT_discard_framebuffer" );
2526     if( _GL_EXT_discard_framebuffer ) load_GL_EXT_discard_framebuffer();
2527     _GL_EXT_disjoint_timer_query = isExtSupported( "GL_EXT_disjoint_timer_query" );
2528     if( _GL_EXT_disjoint_timer_query ) load_GL_EXT_disjoint_timer_query();
2529     _GL_EXT_draw_buffers = isExtSupported( "GL_EXT_draw_buffers" );
2530     if( _GL_EXT_draw_buffers ) load_GL_EXT_draw_buffers();
2531     _GL_EXT_draw_instanced = isExtSupported( "GL_EXT_draw_instanced" );
2532     if( _GL_EXT_draw_instanced ) load_GL_EXT_draw_instanced();
2533     _GL_EXT_instanced_arrays = isExtSupported( "GL_EXT_instanced_arrays" );
2534     if( _GL_EXT_instanced_arrays ) load_GL_EXT_instanced_arrays();
2535     _GL_EXT_map_buffer_range = isExtSupported( "GL_EXT_map_buffer_range" );
2536     if( _GL_EXT_map_buffer_range ) load_GL_EXT_map_buffer_range();
2537     _GL_EXT_multi_draw_arrays = isExtSupported( "GL_EXT_multi_draw_arrays" );
2538     if( _GL_EXT_multi_draw_arrays ) load_GL_EXT_multi_draw_arrays();
2539     _GL_EXT_multisampled_render_to_texture = isExtSupported( "GL_EXT_multisampled_render_to_texture" );
2540     if( _GL_EXT_multisampled_render_to_texture ) load_GL_EXT_multisampled_render_to_texture();
2541     _GL_EXT_multiview_draw_buffers = isExtSupported( "GL_EXT_multiview_draw_buffers" );
2542     if( _GL_EXT_multiview_draw_buffers ) load_GL_EXT_multiview_draw_buffers();
2543     _GL_EXT_occlusion_query_boolean = isExtSupported( "GL_EXT_occlusion_query_boolean" );
2544     _GL_EXT_pvrtc_sRGB = isExtSupported( "GL_EXT_pvrtc_sRGB" );
2545     _GL_EXT_read_format_bgra = isExtSupported( "GL_EXT_read_format_bgra" );
2546     _GL_EXT_robustness = isExtSupported( "GL_EXT_robustness" );
2547     if( _GL_EXT_robustness ) load_GL_EXT_robustness();
2548     _GL_EXT_sRGB = isExtSupported( "GL_EXT_sRGB" );
2549     _GL_EXT_sRGB_write_control = isExtSupported( "GL_EXT_sRGB_write_control" );
2550     _GL_EXT_separate_shader_objects = isExtSupported( "GL_EXT_separate_shader_objects" );
2551     if( _GL_EXT_separate_shader_objects ) load_GL_EXT_separate_shader_objects();
2552     _GL_EXT_shader_framebuffer_fetch = isExtSupported( "GL_EXT_shader_framebuffer_fetch" );
2553     _GL_EXT_shader_integer_mix = isExtSupported( "GL_EXT_shader_integer_mix" );
2554     _GL_EXT_shader_pixel_local_storage = isExtSupported( "GL_EXT_shader_pixel_local_storage" );
2555     _GL_EXT_shader_texture_lod = isExtSupported( "GL_EXT_shader_texture_lod" );
2556     _GL_EXT_shadow_samplers = isExtSupported( "GL_EXT_shadow_samplers" );
2557     _GL_EXT_texture_compression_dxt1 = isExtSupported( "GL_EXT_texture_compression_dxt1" );
2558     _GL_EXT_texture_compression_s3tc = isExtSupported( "GL_EXT_texture_compression_s3tc" );
2559     _GL_EXT_texture_filter_anisotropic = isExtSupported( "GL_EXT_texture_filter_anisotropic" );
2560     _GL_EXT_texture_format_BGRA8888 = isExtSupported( "GL_EXT_texture_format_BGRA8888" );
2561     _GL_EXT_texture_rg = isExtSupported( "GL_EXT_texture_rg" );
2562     _GL_EXT_texture_sRGB_decode = isExtSupported( "GL_EXT_texture_sRGB_decode" );
2563     _GL_EXT_texture_storage = isExtSupported( "GL_EXT_texture_storage" );
2564     if( _GL_EXT_texture_storage ) load_GL_EXT_texture_storage();
2565     _GL_EXT_texture_type_2_10_10_10_REV = isExtSupported( "GL_EXT_texture_type_2_10_10_10_REV" );
2566     _GL_EXT_unpack_subimage = isExtSupported( "GL_EXT_unpack_subimage" );
2567     _GL_FJ_shader_binary_GCCSO = isExtSupported( "GL_FJ_shader_binary_GCCSO" );
2568     _GL_IMG_multisampled_render_to_texture = isExtSupported( "GL_IMG_multisampled_render_to_texture" );
2569     if( _GL_IMG_multisampled_render_to_texture ) load_GL_IMG_multisampled_render_to_texture();
2570     _GL_IMG_program_binary = isExtSupported( "GL_IMG_program_binary" );
2571     _GL_IMG_read_format = isExtSupported( "GL_IMG_read_format" );
2572     _GL_IMG_shader_binary = isExtSupported( "GL_IMG_shader_binary" );
2573     _GL_IMG_texture_compression_pvrtc = isExtSupported( "GL_IMG_texture_compression_pvrtc" );
2574     _GL_IMG_texture_compression_pvrtc2 = isExtSupported( "GL_IMG_texture_compression_pvrtc2" );
2575     _GL_INTEL_performance_query = isExtSupported( "GL_INTEL_performance_query" );
2576     if( _GL_INTEL_performance_query ) load_GL_INTEL_performance_query();
2577     _GL_NV_blend_equation_advanced = isExtSupported( "GL_NV_blend_equation_advanced" );
2578     if( _GL_NV_blend_equation_advanced ) load_GL_NV_blend_equation_advanced();
2579     _GL_NV_blend_equation_advanced_coherent = isExtSupported( "GL_NV_blend_equation_advanced_coherent" );
2580     _GL_NV_copy_buffer = isExtSupported( "GL_NV_copy_buffer" );
2581     if( _GL_NV_copy_buffer ) load_GL_NV_copy_buffer();
2582     _GL_NV_coverage_sample = isExtSupported( "GL_NV_coverage_sample" );
2583     if( _GL_NV_coverage_sample ) load_GL_NV_coverage_sample();
2584     _GL_NV_depth_nonlinear = isExtSupported( "GL_NV_depth_nonlinear" );
2585     _GL_NV_draw_buffers = isExtSupported( "GL_NV_draw_buffers" );
2586     if( _GL_NV_draw_buffers ) load_GL_NV_draw_buffers();
2587     _GL_NV_draw_instanced = isExtSupported( "GL_NV_draw_instanced" );
2588     if( _GL_NV_draw_instanced ) load_GL_NV_draw_instanced();
2589     _GL_NV_explicit_attrib_location = isExtSupported( "GL_NV_explicit_attrib_location" );
2590     _GL_NV_fbo_color_attachments = isExtSupported( "GL_NV_fbo_color_attachments" );
2591     _GL_NV_fence = isExtSupported( "GL_NV_fence" );
2592     if( _GL_NV_fence ) load_GL_NV_fence();
2593     _GL_NV_framebuffer_blit = isExtSupported( "GL_NV_framebuffer_blit" );
2594     if( _GL_NV_framebuffer_blit ) load_GL_NV_framebuffer_blit();
2595     _GL_NV_framebuffer_multisample = isExtSupported( "GL_NV_framebuffer_multisample" );
2596     if( _GL_NV_framebuffer_multisample ) load_GL_NV_framebuffer_multisample();
2597     _GL_NV_generate_mipmap_sRGB = isExtSupported( "GL_NV_generate_mipmap_sRGB" );
2598     _GL_NV_instanced_arrays = isExtSupported( "GL_NV_instanced_arrays" );
2599     if( _GL_NV_instanced_arrays ) load_GL_NV_instanced_arrays();
2600     _GL_NV_non_square_matrices = isExtSupported( "GL_NV_non_square_matrices" );
2601     if( _GL_NV_non_square_matrices ) load_GL_NV_non_square_matrices();
2602     _GL_NV_read_buffer = isExtSupported( "GL_NV_read_buffer" );
2603     _GL_NV_read_buffer_front = isExtSupported( "GL_NV_read_buffer_front" );
2604     _GL_NV_read_depth = isExtSupported( "GL_NV_read_depth" );
2605     _GL_NV_read_depth_stencil = isExtSupported( "GL_NV_read_depth_stencil" );
2606     _GL_NV_read_stencil = isExtSupported( "GL_NV_read_stencil" );
2607     _GL_NV_sRGB_formats = isExtSupported( "GL_NV_sRGB_formats" );
2608     _GL_NV_shadow_samplers_array = isExtSupported( "GL_NV_shadow_samplers_array" );
2609     _GL_NV_shadow_samplers_cube = isExtSupported( "GL_NV_shadow_samplers_cube" );
2610     _GL_NV_texture_border_clamp = isExtSupported( "GL_NV_texture_border_clamp" );
2611     _GL_NV_texture_compression_s3tc_update = isExtSupported( "GL_NV_texture_compression_s3tc_update" );
2612     _GL_NV_texture_npot_2D_mipmap = isExtSupported( "GL_NV_texture_npot_2D_mipmap" );
2613     _GL_QCOM_alpha_test = isExtSupported( "GL_QCOM_alpha_test" );
2614     if( _GL_QCOM_alpha_test ) load_GL_QCOM_alpha_test();
2615     _GL_QCOM_binning_control = isExtSupported( "GL_QCOM_binning_control" );
2616     _GL_QCOM_driver_control = isExtSupported( "GL_QCOM_driver_control" );
2617     if( _GL_QCOM_driver_control ) load_GL_QCOM_driver_control();
2618     _GL_QCOM_extended_get = isExtSupported( "GL_QCOM_extended_get" );
2619     if( _GL_QCOM_extended_get ) load_GL_QCOM_extended_get();
2620     _GL_QCOM_extended_get2 = isExtSupported( "GL_QCOM_extended_get2" );
2621     if( _GL_QCOM_extended_get2 ) load_GL_QCOM_extended_get2();
2622     _GL_QCOM_perfmon_global_mode = isExtSupported( "GL_QCOM_perfmon_global_mode" );
2623     _GL_QCOM_tiled_rendering = isExtSupported( "GL_QCOM_tiled_rendering" );
2624     if( _GL_QCOM_tiled_rendering ) load_GL_QCOM_tiled_rendering();
2625     _GL_QCOM_writeonly_rendering = isExtSupported( "GL_QCOM_writeonly_rendering" );
2626     _GL_VIV_shader_binary = isExtSupported( "GL_VIV_shader_binary" );
2627 }