1 /// EGL bindings for D. Generated automatically by gldgen.py
2 module gfx.bindings.opengl.egl;
3 
4 import core.stdc.stdint;
5 import gfx.bindings.core;
6 import gfx.bindings.opengl.eglplatform;
7 import gfx.bindings.opengl.khrplatform;
8 
9 // Base Types
10 
11 // Types for EGL_VERSION_1_0
12 alias EGLBoolean = uint;
13 alias EGLDisplay = void *;
14 alias EGLConfig  = void *;
15 alias EGLSurface = void *;
16 alias EGLContext = void *;
17 
18 // Types for EGL_VERSION_1_2
19 alias EGLenum         = uint;
20 alias EGLClientBuffer = void *;
21 
22 // Types for EGL_VERSION_1_5
23 alias EGLSync   = void *;
24 alias EGLAttrib = intptr_t;
25 alias EGLTime   = khronos_utime_nanoseconds_t;
26 alias EGLImage  = void *;
27 
28 // Types for EGL_KHR_cl_event2
29 alias EGLSyncKHR   = void *;
30 alias EGLAttribKHR = intptr_t;
31 
32 // Types for EGL_KHR_debug
33 alias EGLLabelKHR  = void *;
34 alias EGLObjectKHR = void *;
35 
36 // Types for EGL_KHR_fence_sync
37 alias EGLTimeKHR = khronos_utime_nanoseconds_t;
38 
39 // Types for EGL_KHR_image
40 alias EGLImageKHR = void *;
41 
42 // Types for EGL_KHR_stream
43 alias EGLStreamKHR = void *;
44 alias EGLuint64KHR = khronos_uint64_t;
45 
46 // Types for EGL_KHR_stream_cross_process_fd
47 alias EGLNativeFileDescriptorKHR = int;
48 
49 // Types for EGL_ANDROID_blob_cache
50 alias EGLsizeiANDROID = khronos_ssize_t;
51 
52 // Types for EGL_ANDROID_get_frame_timestamps
53 alias EGLnsecsANDROID = khronos_stime_nanoseconds_t;
54 
55 // Types for EGL_EXT_device_base
56 alias EGLDeviceEXT = void *;
57 
58 // Types for EGL_EXT_output_base
59 alias EGLOutputLayerEXT = void *;
60 alias EGLOutputPortEXT  = void *;
61 
62 // Types for EGL_NV_sync
63 alias EGLSyncNV = void *;
64 alias EGLTimeNV = khronos_utime_nanoseconds_t;
65 
66 // Types for EGL_NV_system_time
67 alias EGLuint64NV = khronos_utime_nanoseconds_t;
68 
69 // Struct declarations
70 struct AHardwareBuffer;
71 
72 // Struct definitions
73 // Structs for EGL_HI_clientpixmap
74 struct EGLClientPixmapHI {
75     void  * pData;
76     EGLint iWidth;
77     EGLint iHeight;
78     EGLint iStride;
79 }
80 
81 // Function pointers
82 
83 extern(C) nothrow @nogc {
84 
85     // for EGL_VERSION_1_0
86     alias __eglMustCastToProperFunctionPointerType = void function();
87 
88     // for EGL_KHR_debug
89     alias EGLDEBUGPROCKHR = void function(
90         EGLenum      error,
91         const(char)* command,
92         EGLint       messageType,
93         EGLLabelKHR  threadLabel,
94         EGLLabelKHR  objectLabel,
95         const(char)* message
96     );
97 
98     // for EGL_ANDROID_blob_cache
99     alias EGLSetBlobFuncANDROID = void function(
100         const(void)*    key,
101         EGLsizeiANDROID keySize,
102         const(void)*    value,
103         EGLsizeiANDROID valueSize
104     );
105     alias EGLGetBlobFuncANDROID = EGLsizeiANDROID function(
106         const(void)*    key,
107         EGLsizeiANDROID keySize,
108         void *          value,
109         EGLsizeiANDROID valueSize
110     );
111 }
112 
113 
114 // Constants for EGL_VERSION_1_0
115 enum EGL_ALPHA_SIZE              = 0x3021;
116 enum EGL_BAD_ACCESS              = 0x3002;
117 enum EGL_BAD_ALLOC               = 0x3003;
118 enum EGL_BAD_ATTRIBUTE           = 0x3004;
119 enum EGL_BAD_CONFIG              = 0x3005;
120 enum EGL_BAD_CONTEXT             = 0x3006;
121 enum EGL_BAD_CURRENT_SURFACE     = 0x3007;
122 enum EGL_BAD_DISPLAY             = 0x3008;
123 enum EGL_BAD_MATCH               = 0x3009;
124 enum EGL_BAD_NATIVE_PIXMAP       = 0x300A;
125 enum EGL_BAD_NATIVE_WINDOW       = 0x300B;
126 enum EGL_BAD_PARAMETER           = 0x300C;
127 enum EGL_BAD_SURFACE             = 0x300D;
128 enum EGL_BLUE_SIZE               = 0x3022;
129 enum EGL_BUFFER_SIZE             = 0x3020;
130 enum EGL_CONFIG_CAVEAT           = 0x3027;
131 enum EGL_CONFIG_ID               = 0x3028;
132 enum EGL_CORE_NATIVE_ENGINE      = 0x305B;
133 enum EGL_DEPTH_SIZE              = 0x3025;
134 enum EGL_DONT_CARE               = EGL_CAST!(EGLint)(-1);
135 enum EGL_DRAW                    = 0x3059;
136 enum EGL_EXTENSIONS              = 0x3055;
137 enum EGL_FALSE                   = 0;
138 enum EGL_GREEN_SIZE              = 0x3023;
139 enum EGL_HEIGHT                  = 0x3056;
140 enum EGL_LARGEST_PBUFFER         = 0x3058;
141 enum EGL_LEVEL                   = 0x3029;
142 enum EGL_MAX_PBUFFER_HEIGHT      = 0x302A;
143 enum EGL_MAX_PBUFFER_PIXELS      = 0x302B;
144 enum EGL_MAX_PBUFFER_WIDTH       = 0x302C;
145 enum EGL_NATIVE_RENDERABLE       = 0x302D;
146 enum EGL_NATIVE_VISUAL_ID        = 0x302E;
147 enum EGL_NATIVE_VISUAL_TYPE      = 0x302F;
148 enum EGL_NONE                    = 0x3038;
149 enum EGL_NON_CONFORMANT_CONFIG   = 0x3051;
150 enum EGL_NOT_INITIALIZED         = 0x3001;
151 enum EGL_NO_CONTEXT              = EGL_CAST!(EGLContext)(0);
152 enum EGL_NO_DISPLAY              = EGL_CAST!(EGLDisplay)(0);
153 enum EGL_NO_SURFACE              = EGL_CAST!(EGLSurface)(0);
154 enum EGL_PBUFFER_BIT             = 0x0001;
155 enum EGL_PIXMAP_BIT              = 0x0002;
156 enum EGL_READ                    = 0x305A;
157 enum EGL_RED_SIZE                = 0x3024;
158 enum EGL_SAMPLES                 = 0x3031;
159 enum EGL_SAMPLE_BUFFERS          = 0x3032;
160 enum EGL_SLOW_CONFIG             = 0x3050;
161 enum EGL_STENCIL_SIZE            = 0x3026;
162 enum EGL_SUCCESS                 = 0x3000;
163 enum EGL_SURFACE_TYPE            = 0x3033;
164 enum EGL_TRANSPARENT_BLUE_VALUE  = 0x3035;
165 enum EGL_TRANSPARENT_GREEN_VALUE = 0x3036;
166 enum EGL_TRANSPARENT_RED_VALUE   = 0x3037;
167 enum EGL_TRANSPARENT_RGB         = 0x3052;
168 enum EGL_TRANSPARENT_TYPE        = 0x3034;
169 enum EGL_TRUE                    = 1;
170 enum EGL_VENDOR                  = 0x3053;
171 enum EGL_VERSION                 = 0x3054;
172 enum EGL_WIDTH                   = 0x3057;
173 enum EGL_WINDOW_BIT              = 0x0004;
174 
175 // Constants for EGL_VERSION_1_1
176 enum EGL_BACK_BUFFER          = 0x3084;
177 enum EGL_BIND_TO_TEXTURE_RGB  = 0x3039;
178 enum EGL_BIND_TO_TEXTURE_RGBA = 0x303A;
179 enum EGL_CONTEXT_LOST         = 0x300E;
180 enum EGL_MIN_SWAP_INTERVAL    = 0x303B;
181 enum EGL_MAX_SWAP_INTERVAL    = 0x303C;
182 enum EGL_MIPMAP_TEXTURE       = 0x3082;
183 enum EGL_MIPMAP_LEVEL         = 0x3083;
184 enum EGL_NO_TEXTURE           = 0x305C;
185 enum EGL_TEXTURE_2D           = 0x305F;
186 enum EGL_TEXTURE_FORMAT       = 0x3080;
187 enum EGL_TEXTURE_RGB          = 0x305D;
188 enum EGL_TEXTURE_RGBA         = 0x305E;
189 enum EGL_TEXTURE_TARGET       = 0x3081;
190 
191 // Constants for EGL_VERSION_1_2
192 enum EGL_ALPHA_FORMAT          = 0x3088;
193 enum EGL_ALPHA_FORMAT_NONPRE   = 0x308B;
194 enum EGL_ALPHA_FORMAT_PRE      = 0x308C;
195 enum EGL_ALPHA_MASK_SIZE       = 0x303E;
196 enum EGL_BUFFER_PRESERVED      = 0x3094;
197 enum EGL_BUFFER_DESTROYED      = 0x3095;
198 enum EGL_CLIENT_APIS           = 0x308D;
199 enum EGL_COLORSPACE            = 0x3087;
200 enum EGL_COLORSPACE_sRGB       = 0x3089;
201 enum EGL_COLORSPACE_LINEAR     = 0x308A;
202 enum EGL_COLOR_BUFFER_TYPE     = 0x303F;
203 enum EGL_CONTEXT_CLIENT_TYPE   = 0x3097;
204 enum EGL_DISPLAY_SCALING       = 10000;
205 enum EGL_HORIZONTAL_RESOLUTION = 0x3090;
206 enum EGL_LUMINANCE_BUFFER      = 0x308F;
207 enum EGL_LUMINANCE_SIZE        = 0x303D;
208 enum EGL_OPENGL_ES_BIT         = 0x0001;
209 enum EGL_OPENVG_BIT            = 0x0002;
210 enum EGL_OPENGL_ES_API         = 0x30A0;
211 enum EGL_OPENVG_API            = 0x30A1;
212 enum EGL_OPENVG_IMAGE          = 0x3096;
213 enum EGL_PIXEL_ASPECT_RATIO    = 0x3092;
214 enum EGL_RENDERABLE_TYPE       = 0x3040;
215 enum EGL_RENDER_BUFFER         = 0x3086;
216 enum EGL_RGB_BUFFER            = 0x308E;
217 enum EGL_SINGLE_BUFFER         = 0x3085;
218 enum EGL_SWAP_BEHAVIOR         = 0x3093;
219 enum EGL_UNKNOWN               = EGL_CAST!(EGLint)(-1);
220 enum EGL_VERTICAL_RESOLUTION   = 0x3091;
221 
222 // Constants for EGL_VERSION_1_3
223 enum EGL_CONFORMANT               = 0x3042;
224 enum EGL_CONTEXT_CLIENT_VERSION   = 0x3098;
225 enum EGL_MATCH_NATIVE_PIXMAP      = 0x3041;
226 enum EGL_OPENGL_ES2_BIT           = 0x0004;
227 enum EGL_VG_ALPHA_FORMAT          = 0x3088;
228 enum EGL_VG_ALPHA_FORMAT_NONPRE   = 0x308B;
229 enum EGL_VG_ALPHA_FORMAT_PRE      = 0x308C;
230 enum EGL_VG_ALPHA_FORMAT_PRE_BIT  = 0x0040;
231 enum EGL_VG_COLORSPACE            = 0x3087;
232 enum EGL_VG_COLORSPACE_sRGB       = 0x3089;
233 enum EGL_VG_COLORSPACE_LINEAR     = 0x308A;
234 enum EGL_VG_COLORSPACE_LINEAR_BIT = 0x0020;
235 
236 // Constants for EGL_VERSION_1_4
237 enum EGL_DEFAULT_DISPLAY             = EGL_CAST!(EGLNativeDisplayType)(0);
238 enum EGL_MULTISAMPLE_RESOLVE_BOX_BIT = 0x0200;
239 enum EGL_MULTISAMPLE_RESOLVE         = 0x3099;
240 enum EGL_MULTISAMPLE_RESOLVE_DEFAULT = 0x309A;
241 enum EGL_MULTISAMPLE_RESOLVE_BOX     = 0x309B;
242 enum EGL_OPENGL_API                  = 0x30A2;
243 enum EGL_OPENGL_BIT                  = 0x0008;
244 enum EGL_SWAP_BEHAVIOR_PRESERVED_BIT = 0x0400;
245 
246 // Constants for EGL_VERSION_1_5
247 enum EGL_CONTEXT_MAJOR_VERSION                      = 0x3098;
248 enum EGL_CONTEXT_MINOR_VERSION                      = 0x30FB;
249 enum EGL_CONTEXT_OPENGL_PROFILE_MASK                = 0x30FD;
250 enum EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY = 0x31BD;
251 enum EGL_NO_RESET_NOTIFICATION                      = 0x31BE;
252 enum EGL_LOSE_CONTEXT_ON_RESET                      = 0x31BF;
253 enum EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT            = 0x00000001;
254 enum EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT   = 0x00000002;
255 enum EGL_CONTEXT_OPENGL_DEBUG                       = 0x31B0;
256 enum EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE          = 0x31B1;
257 enum EGL_CONTEXT_OPENGL_ROBUST_ACCESS               = 0x31B2;
258 enum EGL_OPENGL_ES3_BIT                             = 0x00000040;
259 enum EGL_CL_EVENT_HANDLE                            = 0x309C;
260 enum EGL_SYNC_CL_EVENT                              = 0x30FE;
261 enum EGL_SYNC_CL_EVENT_COMPLETE                     = 0x30FF;
262 enum EGL_SYNC_PRIOR_COMMANDS_COMPLETE               = 0x30F0;
263 enum EGL_SYNC_TYPE                                  = 0x30F7;
264 enum EGL_SYNC_STATUS                                = 0x30F1;
265 enum EGL_SYNC_CONDITION                             = 0x30F8;
266 enum EGL_SIGNALED                                   = 0x30F2;
267 enum EGL_UNSIGNALED                                 = 0x30F3;
268 enum EGL_SYNC_FLUSH_COMMANDS_BIT                    = 0x0001;
269 enum EGL_FOREVER                                    = 0xFFFFFFFFFFFFFFFF;
270 enum EGL_TIMEOUT_EXPIRED                            = 0x30F5;
271 enum EGL_CONDITION_SATISFIED                        = 0x30F6;
272 enum EGL_NO_SYNC                                    = EGL_CAST!(EGLSync)(0);
273 enum EGL_SYNC_FENCE                                 = 0x30F9;
274 enum EGL_GL_COLORSPACE                              = 0x309D;
275 enum EGL_GL_COLORSPACE_SRGB                         = 0x3089;
276 enum EGL_GL_COLORSPACE_LINEAR                       = 0x308A;
277 enum EGL_GL_RENDERBUFFER                            = 0x30B9;
278 enum EGL_GL_TEXTURE_2D                              = 0x30B1;
279 enum EGL_GL_TEXTURE_LEVEL                           = 0x30BC;
280 enum EGL_GL_TEXTURE_3D                              = 0x30B2;
281 enum EGL_GL_TEXTURE_ZOFFSET                         = 0x30BD;
282 enum EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X             = 0x30B3;
283 enum EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X             = 0x30B4;
284 enum EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y             = 0x30B5;
285 enum EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y             = 0x30B6;
286 enum EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z             = 0x30B7;
287 enum EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z             = 0x30B8;
288 enum EGL_IMAGE_PRESERVED                            = 0x30D2;
289 enum EGL_NO_IMAGE                                   = EGL_CAST!(EGLImage)(0);
290 
291 // Constants for EGL_KHR_cl_event
292 enum EGL_CL_EVENT_HANDLE_KHR        = 0x309C;
293 enum EGL_SYNC_CL_EVENT_KHR          = 0x30FE;
294 enum EGL_SYNC_CL_EVENT_COMPLETE_KHR = 0x30FF;
295 
296 // Constants for EGL_KHR_config_attribs
297 enum EGL_CONFORMANT_KHR               = 0x3042;
298 enum EGL_VG_COLORSPACE_LINEAR_BIT_KHR = 0x0020;
299 enum EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR  = 0x0040;
300 
301 // Constants for EGL_KHR_context_flush_control
302 enum EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR  = 0;
303 enum EGL_CONTEXT_RELEASE_BEHAVIOR_KHR       = 0x2097;
304 enum EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR = 0x2098;
305 
306 // Constants for EGL_KHR_create_context
307 enum EGL_CONTEXT_MAJOR_VERSION_KHR                      = 0x3098;
308 enum EGL_CONTEXT_MINOR_VERSION_KHR                      = 0x30FB;
309 enum EGL_CONTEXT_FLAGS_KHR                              = 0x30FC;
310 enum EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR                = 0x30FD;
311 enum EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR = 0x31BD;
312 enum EGL_NO_RESET_NOTIFICATION_KHR                      = 0x31BE;
313 enum EGL_LOSE_CONTEXT_ON_RESET_KHR                      = 0x31BF;
314 enum EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR                   = 0x00000001;
315 enum EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR      = 0x00000002;
316 enum EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR           = 0x00000004;
317 enum EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR            = 0x00000001;
318 enum EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR   = 0x00000002;
319 enum EGL_OPENGL_ES3_BIT_KHR                             = 0x00000040;
320 
321 // Constants for EGL_KHR_create_context_no_error
322 enum EGL_CONTEXT_OPENGL_NO_ERROR_KHR = 0x31B3;
323 
324 // Constants for EGL_KHR_debug
325 enum EGL_OBJECT_THREAD_KHR      = 0x33B0;
326 enum EGL_OBJECT_DISPLAY_KHR     = 0x33B1;
327 enum EGL_OBJECT_CONTEXT_KHR     = 0x33B2;
328 enum EGL_OBJECT_SURFACE_KHR     = 0x33B3;
329 enum EGL_OBJECT_IMAGE_KHR       = 0x33B4;
330 enum EGL_OBJECT_SYNC_KHR        = 0x33B5;
331 enum EGL_OBJECT_STREAM_KHR      = 0x33B6;
332 enum EGL_DEBUG_MSG_CRITICAL_KHR = 0x33B9;
333 enum EGL_DEBUG_MSG_ERROR_KHR    = 0x33BA;
334 enum EGL_DEBUG_MSG_WARN_KHR     = 0x33BB;
335 enum EGL_DEBUG_MSG_INFO_KHR     = 0x33BC;
336 enum EGL_DEBUG_CALLBACK_KHR     = 0x33B8;
337 
338 // Constants for EGL_KHR_display_reference
339 enum EGL_TRACK_REFERENCES_KHR = 0x3352;
340 
341 // Constants for EGL_KHR_fence_sync
342 enum EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR = 0x30F0;
343 enum EGL_SYNC_CONDITION_KHR               = 0x30F8;
344 enum EGL_SYNC_FENCE_KHR                   = 0x30F9;
345 
346 // Constants for EGL_KHR_gl_colorspace
347 enum EGL_GL_COLORSPACE_KHR        = 0x309D;
348 enum EGL_GL_COLORSPACE_SRGB_KHR   = 0x3089;
349 enum EGL_GL_COLORSPACE_LINEAR_KHR = 0x308A;
350 
351 // Constants for EGL_KHR_gl_renderbuffer_image
352 enum EGL_GL_RENDERBUFFER_KHR = 0x30B9;
353 
354 // Constants for EGL_KHR_gl_texture_2D_image
355 enum EGL_GL_TEXTURE_2D_KHR    = 0x30B1;
356 enum EGL_GL_TEXTURE_LEVEL_KHR = 0x30BC;
357 
358 // Constants for EGL_KHR_gl_texture_3D_image
359 enum EGL_GL_TEXTURE_3D_KHR      = 0x30B2;
360 enum EGL_GL_TEXTURE_ZOFFSET_KHR = 0x30BD;
361 
362 // Constants for EGL_KHR_gl_texture_cubemap_image
363 enum EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR = 0x30B3;
364 enum EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR = 0x30B4;
365 enum EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR = 0x30B5;
366 enum EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR = 0x30B6;
367 enum EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR = 0x30B7;
368 enum EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR = 0x30B8;
369 
370 // Constants for EGL_KHR_image
371 enum EGL_NATIVE_PIXMAP_KHR = 0x30B0;
372 enum EGL_NO_IMAGE_KHR      = EGL_CAST!(EGLImageKHR)(0);
373 
374 // Constants for EGL_KHR_image_base
375 enum EGL_IMAGE_PRESERVED_KHR = 0x30D2;
376 
377 // Constants for EGL_KHR_lock_surface
378 enum EGL_READ_SURFACE_BIT_KHR              = 0x0001;
379 enum EGL_WRITE_SURFACE_BIT_KHR             = 0x0002;
380 enum EGL_LOCK_SURFACE_BIT_KHR              = 0x0080;
381 enum EGL_OPTIMAL_FORMAT_BIT_KHR            = 0x0100;
382 enum EGL_MATCH_FORMAT_KHR                  = 0x3043;
383 enum EGL_FORMAT_RGB_565_EXACT_KHR          = 0x30C0;
384 enum EGL_FORMAT_RGB_565_KHR                = 0x30C1;
385 enum EGL_FORMAT_RGBA_8888_EXACT_KHR        = 0x30C2;
386 enum EGL_FORMAT_RGBA_8888_KHR              = 0x30C3;
387 enum EGL_MAP_PRESERVE_PIXELS_KHR           = 0x30C4;
388 enum EGL_LOCK_USAGE_HINT_KHR               = 0x30C5;
389 enum EGL_BITMAP_POINTER_KHR                = 0x30C6;
390 enum EGL_BITMAP_PITCH_KHR                  = 0x30C7;
391 enum EGL_BITMAP_ORIGIN_KHR                 = 0x30C8;
392 enum EGL_BITMAP_PIXEL_RED_OFFSET_KHR       = 0x30C9;
393 enum EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR     = 0x30CA;
394 enum EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR      = 0x30CB;
395 enum EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR     = 0x30CC;
396 enum EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR = 0x30CD;
397 enum EGL_LOWER_LEFT_KHR                    = 0x30CE;
398 enum EGL_UPPER_LEFT_KHR                    = 0x30CF;
399 
400 // Constants for EGL_KHR_lock_surface2
401 enum EGL_BITMAP_PIXEL_SIZE_KHR = 0x3110;
402 
403 // Constants for EGL_KHR_mutable_render_buffer
404 enum EGL_MUTABLE_RENDER_BUFFER_BIT_KHR = 0x1000;
405 
406 // Constants for EGL_KHR_no_config_context
407 enum EGL_NO_CONFIG_KHR = EGL_CAST!(EGLConfig)(0);
408 
409 // Constants for EGL_KHR_partial_update
410 enum EGL_BUFFER_AGE_KHR = 0x313D;
411 
412 // Constants for EGL_KHR_platform_android
413 enum EGL_PLATFORM_ANDROID_KHR = 0x3141;
414 
415 // Constants for EGL_KHR_platform_gbm
416 enum EGL_PLATFORM_GBM_KHR = 0x31D7;
417 
418 // Constants for EGL_KHR_platform_wayland
419 enum EGL_PLATFORM_WAYLAND_KHR = 0x31D8;
420 
421 // Constants for EGL_KHR_platform_x11
422 enum EGL_PLATFORM_X11_KHR        = 0x31D5;
423 enum EGL_PLATFORM_X11_SCREEN_KHR = 0x31D6;
424 
425 // Constants for EGL_KHR_reusable_sync
426 enum EGL_SYNC_STATUS_KHR             = 0x30F1;
427 enum EGL_SIGNALED_KHR                = 0x30F2;
428 enum EGL_UNSIGNALED_KHR              = 0x30F3;
429 enum EGL_TIMEOUT_EXPIRED_KHR         = 0x30F5;
430 enum EGL_CONDITION_SATISFIED_KHR     = 0x30F6;
431 enum EGL_SYNC_TYPE_KHR               = 0x30F7;
432 enum EGL_SYNC_REUSABLE_KHR           = 0x30FA;
433 enum EGL_SYNC_FLUSH_COMMANDS_BIT_KHR = 0x0001;
434 enum EGL_FOREVER_KHR                 = 0xFFFFFFFFFFFFFFFF;
435 enum EGL_NO_SYNC_KHR                 = EGL_CAST!(EGLSyncKHR)(0);
436 
437 // Constants for EGL_KHR_stream
438 enum EGL_NO_STREAM_KHR                        = EGL_CAST!(EGLStreamKHR)(0);
439 enum EGL_CONSUMER_LATENCY_USEC_KHR            = 0x3210;
440 enum EGL_PRODUCER_FRAME_KHR                   = 0x3212;
441 enum EGL_CONSUMER_FRAME_KHR                   = 0x3213;
442 enum EGL_STREAM_STATE_KHR                     = 0x3214;
443 enum EGL_STREAM_STATE_CREATED_KHR             = 0x3215;
444 enum EGL_STREAM_STATE_CONNECTING_KHR          = 0x3216;
445 enum EGL_STREAM_STATE_EMPTY_KHR               = 0x3217;
446 enum EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR = 0x3218;
447 enum EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR = 0x3219;
448 enum EGL_STREAM_STATE_DISCONNECTED_KHR        = 0x321A;
449 enum EGL_BAD_STREAM_KHR                       = 0x321B;
450 enum EGL_BAD_STATE_KHR                        = 0x321C;
451 
452 // Constants for EGL_KHR_stream_consumer_gltexture
453 enum EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR = 0x321E;
454 
455 // Constants for EGL_KHR_stream_cross_process_fd
456 enum EGL_NO_FILE_DESCRIPTOR_KHR = EGL_CAST!(EGLNativeFileDescriptorKHR)(-1);
457 
458 // Constants for EGL_KHR_stream_fifo
459 enum EGL_STREAM_FIFO_LENGTH_KHR   = 0x31FC;
460 enum EGL_STREAM_TIME_NOW_KHR      = 0x31FD;
461 enum EGL_STREAM_TIME_CONSUMER_KHR = 0x31FE;
462 enum EGL_STREAM_TIME_PRODUCER_KHR = 0x31FF;
463 
464 // Constants for EGL_KHR_stream_producer_eglsurface
465 enum EGL_STREAM_BIT_KHR = 0x0800;
466 
467 // Constants for EGL_KHR_vg_parent_image
468 enum EGL_VG_PARENT_IMAGE_KHR = 0x30BA;
469 
470 // Constants for EGL_ANDROID_create_native_client_buffer
471 enum EGL_NATIVE_BUFFER_USAGE_ANDROID                  = 0x3143;
472 enum EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID    = 0x00000001;
473 enum EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID = 0x00000002;
474 enum EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID      = 0x00000004;
475 
476 // Constants for EGL_ANDROID_framebuffer_target
477 enum EGL_FRAMEBUFFER_TARGET_ANDROID = 0x3147;
478 
479 // Constants for EGL_ANDROID_front_buffer_auto_refresh
480 enum EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID = 0x314C;
481 
482 // Constants for EGL_ANDROID_get_frame_timestamps
483 enum EGL_TIMESTAMP_PENDING_ANDROID                   = EGL_CAST!(EGLnsecsANDROID)(-2);
484 enum EGL_TIMESTAMP_INVALID_ANDROID                   = EGL_CAST!(EGLnsecsANDROID)(-1);
485 enum EGL_TIMESTAMPS_ANDROID                          = 0x3430;
486 enum EGL_COMPOSITE_DEADLINE_ANDROID                  = 0x3431;
487 enum EGL_COMPOSITE_INTERVAL_ANDROID                  = 0x3432;
488 enum EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID        = 0x3433;
489 enum EGL_REQUESTED_PRESENT_TIME_ANDROID              = 0x3434;
490 enum EGL_RENDERING_COMPLETE_TIME_ANDROID             = 0x3435;
491 enum EGL_COMPOSITION_LATCH_TIME_ANDROID              = 0x3436;
492 enum EGL_FIRST_COMPOSITION_START_TIME_ANDROID        = 0x3437;
493 enum EGL_LAST_COMPOSITION_START_TIME_ANDROID         = 0x3438;
494 enum EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID = 0x3439;
495 enum EGL_DISPLAY_PRESENT_TIME_ANDROID                = 0x343A;
496 enum EGL_DEQUEUE_READY_TIME_ANDROID                  = 0x343B;
497 enum EGL_READS_DONE_TIME_ANDROID                     = 0x343C;
498 
499 // Constants for EGL_ANDROID_image_native_buffer
500 enum EGL_NATIVE_BUFFER_ANDROID = 0x3140;
501 
502 // Constants for EGL_ANDROID_native_fence_sync
503 enum EGL_SYNC_NATIVE_FENCE_ANDROID          = 0x3144;
504 enum EGL_SYNC_NATIVE_FENCE_FD_ANDROID       = 0x3145;
505 enum EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID = 0x3146;
506 enum EGL_NO_NATIVE_FENCE_FD_ANDROID         = -1;
507 
508 // Constants for EGL_ANDROID_recordable
509 enum EGL_RECORDABLE_ANDROID = 0x3142;
510 
511 // Constants for EGL_ANGLE_d3d_share_handle_client_buffer
512 enum EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE = 0x3200;
513 
514 // Constants for EGL_ANGLE_device_d3d
515 enum EGL_D3D9_DEVICE_ANGLE  = 0x33A0;
516 enum EGL_D3D11_DEVICE_ANGLE = 0x33A1;
517 
518 // Constants for EGL_ANGLE_window_fixed_size
519 enum EGL_FIXED_SIZE_ANGLE = 0x3201;
520 
521 // Constants for EGL_ARM_implicit_external_sync
522 enum EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM = 0x328A;
523 
524 // Constants for EGL_ARM_pixmap_multisample_discard
525 enum EGL_DISCARD_SAMPLES_ARM = 0x3286;
526 
527 // Constants for EGL_EXT_bind_to_front
528 enum EGL_FRONT_BUFFER_EXT = 0x3464;
529 
530 // Constants for EGL_EXT_buffer_age
531 enum EGL_BUFFER_AGE_EXT = 0x313D;
532 
533 // Constants for EGL_EXT_compositor
534 enum EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT   = 0x3460;
535 enum EGL_EXTERNAL_REF_ID_EXT              = 0x3461;
536 enum EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT = 0x3462;
537 enum EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT = 0x3463;
538 
539 // Constants for EGL_EXT_create_context_robustness
540 enum EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT               = 0x30BF;
541 enum EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT = 0x3138;
542 enum EGL_NO_RESET_NOTIFICATION_EXT                      = 0x31BE;
543 enum EGL_LOSE_CONTEXT_ON_RESET_EXT                      = 0x31BF;
544 
545 // Constants for EGL_EXT_device_base
546 enum EGL_NO_DEVICE_EXT  = EGL_CAST!(EGLDeviceEXT)(0);
547 enum EGL_BAD_DEVICE_EXT = 0x322B;
548 enum EGL_DEVICE_EXT     = 0x322C;
549 
550 // Constants for EGL_EXT_device_drm
551 enum EGL_DRM_DEVICE_FILE_EXT = 0x3233;
552 
553 // Constants for EGL_EXT_device_openwf
554 enum EGL_OPENWF_DEVICE_ID_EXT = 0x3237;
555 
556 // Constants for EGL_EXT_gl_colorspace_bt2020_linear
557 enum EGL_GL_COLORSPACE_BT2020_LINEAR_EXT = 0x333F;
558 
559 // Constants for EGL_EXT_gl_colorspace_bt2020_pq
560 enum EGL_GL_COLORSPACE_BT2020_PQ_EXT = 0x3340;
561 
562 // Constants for EGL_EXT_gl_colorspace_display_p3
563 enum EGL_GL_COLORSPACE_DISPLAY_P3_EXT = 0x3363;
564 
565 // Constants for EGL_EXT_gl_colorspace_display_p3_linear
566 enum EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT = 0x3362;
567 
568 // Constants for EGL_EXT_gl_colorspace_scrgb
569 enum EGL_GL_COLORSPACE_SCRGB_EXT = 0x3351;
570 
571 // Constants for EGL_EXT_gl_colorspace_scrgb_linear
572 enum EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT = 0x3350;
573 
574 // Constants for EGL_EXT_image_dma_buf_import
575 enum EGL_LINUX_DMA_BUF_EXT                     = 0x3270;
576 enum EGL_LINUX_DRM_FOURCC_EXT                  = 0x3271;
577 enum EGL_DMA_BUF_PLANE0_FD_EXT                 = 0x3272;
578 enum EGL_DMA_BUF_PLANE0_OFFSET_EXT             = 0x3273;
579 enum EGL_DMA_BUF_PLANE0_PITCH_EXT              = 0x3274;
580 enum EGL_DMA_BUF_PLANE1_FD_EXT                 = 0x3275;
581 enum EGL_DMA_BUF_PLANE1_OFFSET_EXT             = 0x3276;
582 enum EGL_DMA_BUF_PLANE1_PITCH_EXT              = 0x3277;
583 enum EGL_DMA_BUF_PLANE2_FD_EXT                 = 0x3278;
584 enum EGL_DMA_BUF_PLANE2_OFFSET_EXT             = 0x3279;
585 enum EGL_DMA_BUF_PLANE2_PITCH_EXT              = 0x327A;
586 enum EGL_YUV_COLOR_SPACE_HINT_EXT              = 0x327B;
587 enum EGL_SAMPLE_RANGE_HINT_EXT                 = 0x327C;
588 enum EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT = 0x327D;
589 enum EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT   = 0x327E;
590 enum EGL_ITU_REC601_EXT                        = 0x327F;
591 enum EGL_ITU_REC709_EXT                        = 0x3280;
592 enum EGL_ITU_REC2020_EXT                       = 0x3281;
593 enum EGL_YUV_FULL_RANGE_EXT                    = 0x3282;
594 enum EGL_YUV_NARROW_RANGE_EXT                  = 0x3283;
595 enum EGL_YUV_CHROMA_SITING_0_EXT               = 0x3284;
596 enum EGL_YUV_CHROMA_SITING_0_5_EXT             = 0x3285;
597 
598 // Constants for EGL_EXT_image_dma_buf_import_modifiers
599 enum EGL_DMA_BUF_PLANE3_FD_EXT          = 0x3440;
600 enum EGL_DMA_BUF_PLANE3_OFFSET_EXT      = 0x3441;
601 enum EGL_DMA_BUF_PLANE3_PITCH_EXT       = 0x3442;
602 enum EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT = 0x3443;
603 enum EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT = 0x3444;
604 enum EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT = 0x3445;
605 enum EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT = 0x3446;
606 enum EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT = 0x3447;
607 enum EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT = 0x3448;
608 enum EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT = 0x3449;
609 enum EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT = 0x344A;
610 
611 // Constants for EGL_EXT_image_implicit_sync_control
612 enum EGL_IMPORT_SYNC_TYPE_EXT     = 0x3470;
613 enum EGL_IMPORT_IMPLICIT_SYNC_EXT = 0x3471;
614 enum EGL_IMPORT_EXPLICIT_SYNC_EXT = 0x3472;
615 
616 // Constants for EGL_EXT_multiview_window
617 enum EGL_MULTIVIEW_VIEW_COUNT_EXT = 0x3134;
618 
619 // Constants for EGL_EXT_output_base
620 enum EGL_NO_OUTPUT_LAYER_EXT  = EGL_CAST!(EGLOutputLayerEXT)(0);
621 enum EGL_NO_OUTPUT_PORT_EXT   = EGL_CAST!(EGLOutputPortEXT)(0);
622 enum EGL_BAD_OUTPUT_LAYER_EXT = 0x322D;
623 enum EGL_BAD_OUTPUT_PORT_EXT  = 0x322E;
624 enum EGL_SWAP_INTERVAL_EXT    = 0x322F;
625 
626 // Constants for EGL_EXT_output_drm
627 enum EGL_DRM_CRTC_EXT      = 0x3234;
628 enum EGL_DRM_PLANE_EXT     = 0x3235;
629 enum EGL_DRM_CONNECTOR_EXT = 0x3236;
630 
631 // Constants for EGL_EXT_output_openwf
632 enum EGL_OPENWF_PIPELINE_ID_EXT = 0x3238;
633 enum EGL_OPENWF_PORT_ID_EXT     = 0x3239;
634 
635 // Constants for EGL_EXT_pixel_format_float
636 enum EGL_COLOR_COMPONENT_TYPE_EXT       = 0x3339;
637 enum EGL_COLOR_COMPONENT_TYPE_FIXED_EXT = 0x333A;
638 enum EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT = 0x333B;
639 
640 // Constants for EGL_EXT_platform_device
641 enum EGL_PLATFORM_DEVICE_EXT = 0x313F;
642 
643 // Constants for EGL_EXT_platform_wayland
644 enum EGL_PLATFORM_WAYLAND_EXT = 0x31D8;
645 
646 // Constants for EGL_EXT_platform_x11
647 enum EGL_PLATFORM_X11_EXT        = 0x31D5;
648 enum EGL_PLATFORM_X11_SCREEN_EXT = 0x31D6;
649 
650 // Constants for EGL_EXT_protected_content
651 enum EGL_PROTECTED_CONTENT_EXT = 0x32C0;
652 
653 // Constants for EGL_EXT_surface_CTA861_3_metadata
654 enum EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT = 0x3360;
655 enum EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT = 0x3361;
656 
657 // Constants for EGL_EXT_surface_SMPTE2086_metadata
658 enum EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT = 0x3341;
659 enum EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT = 0x3342;
660 enum EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT = 0x3343;
661 enum EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT = 0x3344;
662 enum EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT = 0x3345;
663 enum EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT = 0x3346;
664 enum EGL_SMPTE2086_WHITE_POINT_X_EXT      = 0x3347;
665 enum EGL_SMPTE2086_WHITE_POINT_Y_EXT      = 0x3348;
666 enum EGL_SMPTE2086_MAX_LUMINANCE_EXT      = 0x3349;
667 enum EGL_SMPTE2086_MIN_LUMINANCE_EXT      = 0x334A;
668 enum EGL_METADATA_SCALING_EXT             = 50000;
669 
670 // Constants for EGL_EXT_yuv_surface
671 enum EGL_YUV_ORDER_EXT               = 0x3301;
672 enum EGL_YUV_NUMBER_OF_PLANES_EXT    = 0x3311;
673 enum EGL_YUV_SUBSAMPLE_EXT           = 0x3312;
674 enum EGL_YUV_DEPTH_RANGE_EXT         = 0x3317;
675 enum EGL_YUV_CSC_STANDARD_EXT        = 0x330A;
676 enum EGL_YUV_PLANE_BPP_EXT           = 0x331A;
677 enum EGL_YUV_BUFFER_EXT              = 0x3300;
678 enum EGL_YUV_ORDER_YUV_EXT           = 0x3302;
679 enum EGL_YUV_ORDER_YVU_EXT           = 0x3303;
680 enum EGL_YUV_ORDER_YUYV_EXT          = 0x3304;
681 enum EGL_YUV_ORDER_UYVY_EXT          = 0x3305;
682 enum EGL_YUV_ORDER_YVYU_EXT          = 0x3306;
683 enum EGL_YUV_ORDER_VYUY_EXT          = 0x3307;
684 enum EGL_YUV_ORDER_AYUV_EXT          = 0x3308;
685 enum EGL_YUV_SUBSAMPLE_4_2_0_EXT     = 0x3313;
686 enum EGL_YUV_SUBSAMPLE_4_2_2_EXT     = 0x3314;
687 enum EGL_YUV_SUBSAMPLE_4_4_4_EXT     = 0x3315;
688 enum EGL_YUV_DEPTH_RANGE_LIMITED_EXT = 0x3318;
689 enum EGL_YUV_DEPTH_RANGE_FULL_EXT    = 0x3319;
690 enum EGL_YUV_CSC_STANDARD_601_EXT    = 0x330B;
691 enum EGL_YUV_CSC_STANDARD_709_EXT    = 0x330C;
692 enum EGL_YUV_CSC_STANDARD_2020_EXT   = 0x330D;
693 enum EGL_YUV_PLANE_BPP_0_EXT         = 0x331B;
694 enum EGL_YUV_PLANE_BPP_8_EXT         = 0x331C;
695 enum EGL_YUV_PLANE_BPP_10_EXT        = 0x331D;
696 
697 // Constants for EGL_HI_clientpixmap
698 enum EGL_CLIENT_PIXMAP_POINTER_HI = 0x8F74;
699 
700 // Constants for EGL_HI_colorformats
701 enum EGL_COLOR_FORMAT_HI = 0x8F70;
702 enum EGL_COLOR_RGB_HI    = 0x8F71;
703 enum EGL_COLOR_RGBA_HI   = 0x8F72;
704 enum EGL_COLOR_ARGB_HI   = 0x8F73;
705 
706 // Constants for EGL_IMG_context_priority
707 enum EGL_CONTEXT_PRIORITY_LEVEL_IMG  = 0x3100;
708 enum EGL_CONTEXT_PRIORITY_HIGH_IMG   = 0x3101;
709 enum EGL_CONTEXT_PRIORITY_MEDIUM_IMG = 0x3102;
710 enum EGL_CONTEXT_PRIORITY_LOW_IMG    = 0x3103;
711 
712 // Constants for EGL_IMG_image_plane_attribs
713 enum EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG = 0x3105;
714 enum EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG        = 0x3106;
715 
716 // Constants for EGL_MESA_drm_image
717 enum EGL_DRM_BUFFER_FORMAT_MESA        = 0x31D0;
718 enum EGL_DRM_BUFFER_USE_MESA           = 0x31D1;
719 enum EGL_DRM_BUFFER_FORMAT_ARGB32_MESA = 0x31D2;
720 enum EGL_DRM_BUFFER_MESA               = 0x31D3;
721 enum EGL_DRM_BUFFER_STRIDE_MESA        = 0x31D4;
722 enum EGL_DRM_BUFFER_USE_SCANOUT_MESA   = 0x00000001;
723 enum EGL_DRM_BUFFER_USE_SHARE_MESA     = 0x00000002;
724 enum EGL_DRM_BUFFER_USE_CURSOR_MESA    = 0x00000004;
725 
726 // Constants for EGL_MESA_platform_gbm
727 enum EGL_PLATFORM_GBM_MESA = 0x31D7;
728 
729 // Constants for EGL_MESA_platform_surfaceless
730 enum EGL_PLATFORM_SURFACELESS_MESA = 0x31DD;
731 
732 // Constants for EGL_NOK_texture_from_pixmap
733 enum EGL_Y_INVERTED_NOK = 0x307F;
734 
735 // Constants for EGL_NV_3dvision_surface
736 enum EGL_AUTO_STEREO_NV = 0x3136;
737 
738 // Constants for EGL_NV_context_priority_realtime
739 enum EGL_CONTEXT_PRIORITY_REALTIME_NV = 0x3357;
740 
741 // Constants for EGL_NV_coverage_sample
742 enum EGL_COVERAGE_BUFFERS_NV = 0x30E0;
743 enum EGL_COVERAGE_SAMPLES_NV = 0x30E1;
744 
745 // Constants for EGL_NV_coverage_sample_resolve
746 enum EGL_COVERAGE_SAMPLE_RESOLVE_NV         = 0x3131;
747 enum EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV = 0x3132;
748 enum EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV    = 0x3133;
749 
750 // Constants for EGL_NV_cuda_event
751 enum EGL_CUDA_EVENT_HANDLE_NV        = 0x323B;
752 enum EGL_SYNC_CUDA_EVENT_NV          = 0x323C;
753 enum EGL_SYNC_CUDA_EVENT_COMPLETE_NV = 0x323D;
754 
755 // Constants for EGL_NV_depth_nonlinear
756 enum EGL_DEPTH_ENCODING_NV           = 0x30E2;
757 enum EGL_DEPTH_ENCODING_NONE_NV      = 0;
758 enum EGL_DEPTH_ENCODING_NONLINEAR_NV = 0x30E3;
759 
760 // Constants for EGL_NV_device_cuda
761 enum EGL_CUDA_DEVICE_NV = 0x323A;
762 
763 // Constants for EGL_NV_post_sub_buffer
764 enum EGL_POST_SUB_BUFFER_SUPPORTED_NV = 0x30BE;
765 
766 // Constants for EGL_NV_robustness_video_memory_purge
767 enum EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV = 0x334C;
768 
769 // Constants for EGL_NV_stream_consumer_gltexture_yuv
770 enum EGL_YUV_PLANE0_TEXTURE_UNIT_NV = 0x332C;
771 enum EGL_YUV_PLANE1_TEXTURE_UNIT_NV = 0x332D;
772 enum EGL_YUV_PLANE2_TEXTURE_UNIT_NV = 0x332E;
773 
774 // Constants for EGL_NV_stream_cross_display
775 enum EGL_STREAM_CROSS_DISPLAY_NV = 0x334E;
776 
777 // Constants for EGL_NV_stream_cross_object
778 enum EGL_STREAM_CROSS_OBJECT_NV = 0x334D;
779 
780 // Constants for EGL_NV_stream_cross_partition
781 enum EGL_STREAM_CROSS_PARTITION_NV = 0x323F;
782 
783 // Constants for EGL_NV_stream_cross_process
784 enum EGL_STREAM_CROSS_PROCESS_NV = 0x3245;
785 
786 // Constants for EGL_NV_stream_cross_system
787 enum EGL_STREAM_CROSS_SYSTEM_NV = 0x334F;
788 
789 // Constants for EGL_NV_stream_fifo_next
790 enum EGL_PENDING_FRAME_NV       = 0x3329;
791 enum EGL_STREAM_TIME_PENDING_NV = 0x332A;
792 
793 // Constants for EGL_NV_stream_fifo_synchronous
794 enum EGL_STREAM_FIFO_SYNCHRONOUS_NV = 0x3336;
795 
796 // Constants for EGL_NV_stream_frame_limits
797 enum EGL_PRODUCER_MAX_FRAME_HINT_NV = 0x3337;
798 enum EGL_CONSUMER_MAX_FRAME_HINT_NV = 0x3338;
799 
800 // Constants for EGL_NV_stream_metadata
801 enum EGL_MAX_STREAM_METADATA_BLOCKS_NV     = 0x3250;
802 enum EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV = 0x3251;
803 enum EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV = 0x3252;
804 enum EGL_PRODUCER_METADATA_NV              = 0x3253;
805 enum EGL_CONSUMER_METADATA_NV              = 0x3254;
806 enum EGL_PENDING_METADATA_NV               = 0x3328;
807 enum EGL_METADATA0_SIZE_NV                 = 0x3255;
808 enum EGL_METADATA1_SIZE_NV                 = 0x3256;
809 enum EGL_METADATA2_SIZE_NV                 = 0x3257;
810 enum EGL_METADATA3_SIZE_NV                 = 0x3258;
811 enum EGL_METADATA0_TYPE_NV                 = 0x3259;
812 enum EGL_METADATA1_TYPE_NV                 = 0x325A;
813 enum EGL_METADATA2_TYPE_NV                 = 0x325B;
814 enum EGL_METADATA3_TYPE_NV                 = 0x325C;
815 
816 // Constants for EGL_NV_stream_remote
817 enum EGL_STREAM_STATE_INITIALIZING_NV = 0x3240;
818 enum EGL_STREAM_TYPE_NV               = 0x3241;
819 enum EGL_STREAM_PROTOCOL_NV           = 0x3242;
820 enum EGL_STREAM_ENDPOINT_NV           = 0x3243;
821 enum EGL_STREAM_LOCAL_NV              = 0x3244;
822 enum EGL_STREAM_PRODUCER_NV           = 0x3247;
823 enum EGL_STREAM_CONSUMER_NV           = 0x3248;
824 enum EGL_STREAM_PROTOCOL_FD_NV        = 0x3246;
825 
826 // Constants for EGL_NV_stream_reset
827 enum EGL_SUPPORT_RESET_NV = 0x3334;
828 enum EGL_SUPPORT_REUSE_NV = 0x3335;
829 
830 // Constants for EGL_NV_stream_socket
831 enum EGL_STREAM_PROTOCOL_SOCKET_NV = 0x324B;
832 enum EGL_SOCKET_HANDLE_NV          = 0x324C;
833 enum EGL_SOCKET_TYPE_NV            = 0x324D;
834 
835 // Constants for EGL_NV_stream_socket_inet
836 enum EGL_SOCKET_TYPE_INET_NV = 0x324F;
837 
838 // Constants for EGL_NV_stream_socket_unix
839 enum EGL_SOCKET_TYPE_UNIX_NV = 0x324E;
840 
841 // Constants for EGL_NV_stream_sync
842 enum EGL_SYNC_NEW_FRAME_NV = 0x321F;
843 
844 // Constants for EGL_NV_sync
845 enum EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV = 0x30E6;
846 enum EGL_SYNC_STATUS_NV                  = 0x30E7;
847 enum EGL_SIGNALED_NV                     = 0x30E8;
848 enum EGL_UNSIGNALED_NV                   = 0x30E9;
849 enum EGL_SYNC_FLUSH_COMMANDS_BIT_NV      = 0x0001;
850 enum EGL_FOREVER_NV                      = 0xFFFFFFFFFFFFFFFF;
851 enum EGL_ALREADY_SIGNALED_NV             = 0x30EA;
852 enum EGL_TIMEOUT_EXPIRED_NV              = 0x30EB;
853 enum EGL_CONDITION_SATISFIED_NV          = 0x30EC;
854 enum EGL_SYNC_TYPE_NV                    = 0x30ED;
855 enum EGL_SYNC_CONDITION_NV               = 0x30EE;
856 enum EGL_SYNC_FENCE_NV                   = 0x30EF;
857 enum EGL_NO_SYNC_NV                      = EGL_CAST!(EGLSyncNV)(0);
858 
859 // Constants for EGL_TIZEN_image_native_buffer
860 enum EGL_NATIVE_BUFFER_TIZEN = 0x32A0;
861 
862 // Constants for EGL_TIZEN_image_native_surface
863 enum EGL_NATIVE_SURFACE_TIZEN = 0x32A1;
864 
865 // Command pointer aliases
866 
867 extern(C) nothrow @nogc {
868 
869     // Command pointers for EGL_VERSION_1_0
870     alias PFN_eglChooseConfig = EGLBoolean function (
871         EGLDisplay     dpy,
872         const(EGLint)* attrib_list,
873         EGLConfig*     configs,
874         EGLint         config_size,
875         EGLint*        num_config,
876     );
877     alias PFN_eglCopyBuffers = EGLBoolean function (
878         EGLDisplay          dpy,
879         EGLSurface          surface,
880         EGLNativePixmapType target,
881     );
882     alias PFN_eglCreateContext = EGLContext function (
883         EGLDisplay     dpy,
884         EGLConfig      config,
885         EGLContext     share_context,
886         const(EGLint)* attrib_list,
887     );
888     alias PFN_eglCreatePbufferSurface = EGLSurface function (
889         EGLDisplay     dpy,
890         EGLConfig      config,
891         const(EGLint)* attrib_list,
892     );
893     alias PFN_eglCreatePixmapSurface = EGLSurface function (
894         EGLDisplay          dpy,
895         EGLConfig           config,
896         EGLNativePixmapType pixmap,
897         const(EGLint)*      attrib_list,
898     );
899     alias PFN_eglCreateWindowSurface = EGLSurface function (
900         EGLDisplay          dpy,
901         EGLConfig           config,
902         EGLNativeWindowType win,
903         const(EGLint)*      attrib_list,
904     );
905     alias PFN_eglDestroyContext = EGLBoolean function (
906         EGLDisplay dpy,
907         EGLContext ctx,
908     );
909     alias PFN_eglDestroySurface = EGLBoolean function (
910         EGLDisplay dpy,
911         EGLSurface surface,
912     );
913     alias PFN_eglGetConfigAttrib = EGLBoolean function (
914         EGLDisplay dpy,
915         EGLConfig  config,
916         EGLint     attribute,
917         EGLint*    value,
918     );
919     alias PFN_eglGetConfigs = EGLBoolean function (
920         EGLDisplay dpy,
921         EGLConfig* configs,
922         EGLint     config_size,
923         EGLint*    num_config,
924     );
925     alias PFN_eglGetCurrentDisplay = EGLDisplay function ();
926     alias PFN_eglGetCurrentSurface = EGLSurface function (
927         EGLint readdraw,
928     );
929     alias PFN_eglGetDisplay = EGLDisplay function (
930         EGLNativeDisplayType display_id,
931     );
932     alias PFN_eglGetError = EGLint function ();
933     alias PFN_eglGetProcAddress = __eglMustCastToProperFunctionPointerType function (
934         const(char)* procname,
935     );
936     alias PFN_eglInitialize = EGLBoolean function (
937         EGLDisplay dpy,
938         EGLint*    major,
939         EGLint*    minor,
940     );
941     alias PFN_eglMakeCurrent = EGLBoolean function (
942         EGLDisplay dpy,
943         EGLSurface draw,
944         EGLSurface read,
945         EGLContext ctx,
946     );
947     alias PFN_eglQueryContext = EGLBoolean function (
948         EGLDisplay dpy,
949         EGLContext ctx,
950         EGLint     attribute,
951         EGLint*    value,
952     );
953     alias PFN_eglQueryString = const(char)* function (
954         EGLDisplay dpy,
955         EGLint     name,
956     );
957     alias PFN_eglQuerySurface = EGLBoolean function (
958         EGLDisplay dpy,
959         EGLSurface surface,
960         EGLint     attribute,
961         EGLint*    value,
962     );
963     alias PFN_eglSwapBuffers = EGLBoolean function (
964         EGLDisplay dpy,
965         EGLSurface surface,
966     );
967     alias PFN_eglTerminate = EGLBoolean function (
968         EGLDisplay dpy,
969     );
970     alias PFN_eglWaitGL = EGLBoolean function ();
971     alias PFN_eglWaitNative = EGLBoolean function (
972         EGLint engine,
973     );
974 
975     // Command pointers for EGL_VERSION_1_1
976     alias PFN_eglBindTexImage = EGLBoolean function (
977         EGLDisplay dpy,
978         EGLSurface surface,
979         EGLint     buffer,
980     );
981     alias PFN_eglReleaseTexImage = EGLBoolean function (
982         EGLDisplay dpy,
983         EGLSurface surface,
984         EGLint     buffer,
985     );
986     alias PFN_eglSurfaceAttrib = EGLBoolean function (
987         EGLDisplay dpy,
988         EGLSurface surface,
989         EGLint     attribute,
990         EGLint     value,
991     );
992     alias PFN_eglSwapInterval = EGLBoolean function (
993         EGLDisplay dpy,
994         EGLint     interval,
995     );
996 
997     // Command pointers for EGL_VERSION_1_2
998     alias PFN_eglBindAPI = EGLBoolean function (
999         EGLenum api,
1000     );
1001     alias PFN_eglQueryAPI = EGLenum function ();
1002     alias PFN_eglCreatePbufferFromClientBuffer = EGLSurface function (
1003         EGLDisplay      dpy,
1004         EGLenum         buftype,
1005         EGLClientBuffer buffer,
1006         EGLConfig       config,
1007         const(EGLint)*  attrib_list,
1008     );
1009     alias PFN_eglReleaseThread = EGLBoolean function ();
1010     alias PFN_eglWaitClient = EGLBoolean function ();
1011 
1012     // Command pointers for EGL_VERSION_1_4
1013     alias PFN_eglGetCurrentContext = EGLContext function ();
1014 
1015     // Command pointers for EGL_VERSION_1_5
1016     alias PFN_eglCreateSync = EGLSync function (
1017         EGLDisplay        dpy,
1018         EGLenum           type,
1019         const(EGLAttrib)* attrib_list,
1020     );
1021     alias PFN_eglDestroySync = EGLBoolean function (
1022         EGLDisplay dpy,
1023         EGLSync    sync,
1024     );
1025     alias PFN_eglClientWaitSync = EGLint function (
1026         EGLDisplay dpy,
1027         EGLSync    sync,
1028         EGLint     flags,
1029         EGLTime    timeout,
1030     );
1031     alias PFN_eglGetSyncAttrib = EGLBoolean function (
1032         EGLDisplay dpy,
1033         EGLSync    sync,
1034         EGLint     attribute,
1035         EGLAttrib* value,
1036     );
1037     alias PFN_eglCreateImage = EGLImage function (
1038         EGLDisplay        dpy,
1039         EGLContext        ctx,
1040         EGLenum           target,
1041         EGLClientBuffer   buffer,
1042         const(EGLAttrib)* attrib_list,
1043     );
1044     alias PFN_eglDestroyImage = EGLBoolean function (
1045         EGLDisplay dpy,
1046         EGLImage   image,
1047     );
1048     alias PFN_eglGetPlatformDisplay = EGLDisplay function (
1049         EGLenum           platform,
1050         void*             native_display,
1051         const(EGLAttrib)* attrib_list,
1052     );
1053     alias PFN_eglCreatePlatformWindowSurface = EGLSurface function (
1054         EGLDisplay        dpy,
1055         EGLConfig         config,
1056         void*             native_window,
1057         const(EGLAttrib)* attrib_list,
1058     );
1059     alias PFN_eglCreatePlatformPixmapSurface = EGLSurface function (
1060         EGLDisplay        dpy,
1061         EGLConfig         config,
1062         void*             native_pixmap,
1063         const(EGLAttrib)* attrib_list,
1064     );
1065     alias PFN_eglWaitSync = EGLBoolean function (
1066         EGLDisplay dpy,
1067         EGLSync    sync,
1068         EGLint     flags,
1069     );
1070 
1071     // Command pointers for EGL_KHR_debug
1072     alias PFN_eglDebugMessageControlKHR = EGLint function (
1073         EGLDEBUGPROCKHR   callback,
1074         const(EGLAttrib)* attrib_list,
1075     );
1076     alias PFN_eglQueryDebugKHR = EGLBoolean function (
1077         EGLint     attribute,
1078         EGLAttrib* value,
1079     );
1080     alias PFN_eglLabelObjectKHR = EGLint function (
1081         EGLDisplay   display,
1082         EGLenum      objectType,
1083         EGLObjectKHR object,
1084         EGLLabelKHR  label,
1085     );
1086 
1087     // Command pointers for EGL_KHR_display_reference
1088     alias PFN_eglQueryDisplayAttribKHR = EGLBoolean function (
1089         EGLDisplay dpy,
1090         EGLint     name,
1091         EGLAttrib* value,
1092     );
1093 
1094     // Command pointers for EGL_KHR_fence_sync
1095     alias PFN_eglCreateSyncKHR = EGLSyncKHR function (
1096         EGLDisplay     dpy,
1097         EGLenum        type,
1098         const(EGLint)* attrib_list,
1099     );
1100     alias PFN_eglGetSyncAttribKHR = EGLBoolean function (
1101         EGLDisplay dpy,
1102         EGLSyncKHR sync,
1103         EGLint     attribute,
1104         EGLint*    value,
1105     );
1106 
1107     // Command pointers for EGL_KHR_image
1108     alias PFN_eglCreateImageKHR = EGLImageKHR function (
1109         EGLDisplay      dpy,
1110         EGLContext      ctx,
1111         EGLenum         target,
1112         EGLClientBuffer buffer,
1113         const(EGLint)*  attrib_list,
1114     );
1115 
1116     // Command pointers for EGL_KHR_lock_surface
1117     alias PFN_eglLockSurfaceKHR = EGLBoolean function (
1118         EGLDisplay     dpy,
1119         EGLSurface     surface,
1120         const(EGLint)* attrib_list,
1121     );
1122     alias PFN_eglUnlockSurfaceKHR = EGLBoolean function (
1123         EGLDisplay dpy,
1124         EGLSurface surface,
1125     );
1126 
1127     // Command pointers for EGL_KHR_lock_surface3
1128     alias PFN_eglQuerySurface64KHR = EGLBoolean function (
1129         EGLDisplay    dpy,
1130         EGLSurface    surface,
1131         EGLint        attribute,
1132         EGLAttribKHR* value,
1133     );
1134 
1135     // Command pointers for EGL_KHR_partial_update
1136     alias PFN_eglSetDamageRegionKHR = EGLBoolean function (
1137         EGLDisplay dpy,
1138         EGLSurface surface,
1139         EGLint*    rects,
1140         EGLint     n_rects,
1141     );
1142 
1143     // Command pointers for EGL_KHR_reusable_sync
1144     alias PFN_eglSignalSyncKHR = EGLBoolean function (
1145         EGLDisplay dpy,
1146         EGLSyncKHR sync,
1147         EGLenum    mode,
1148     );
1149 
1150     // Command pointers for EGL_KHR_stream
1151     alias PFN_eglCreateStreamKHR = EGLStreamKHR function (
1152         EGLDisplay     dpy,
1153         const(EGLint)* attrib_list,
1154     );
1155     alias PFN_eglDestroyStreamKHR = EGLBoolean function (
1156         EGLDisplay   dpy,
1157         EGLStreamKHR stream,
1158     );
1159     alias PFN_eglStreamAttribKHR = EGLBoolean function (
1160         EGLDisplay   dpy,
1161         EGLStreamKHR stream,
1162         EGLenum      attribute,
1163         EGLint       value,
1164     );
1165     alias PFN_eglQueryStreamKHR = EGLBoolean function (
1166         EGLDisplay   dpy,
1167         EGLStreamKHR stream,
1168         EGLenum      attribute,
1169         EGLint*      value,
1170     );
1171     alias PFN_eglQueryStreamu64KHR = EGLBoolean function (
1172         EGLDisplay    dpy,
1173         EGLStreamKHR  stream,
1174         EGLenum       attribute,
1175         EGLuint64KHR* value,
1176     );
1177 
1178     // Command pointers for EGL_KHR_stream_attrib
1179     alias PFN_eglCreateStreamAttribKHR = EGLStreamKHR function (
1180         EGLDisplay        dpy,
1181         const(EGLAttrib)* attrib_list,
1182     );
1183     alias PFN_eglSetStreamAttribKHR = EGLBoolean function (
1184         EGLDisplay   dpy,
1185         EGLStreamKHR stream,
1186         EGLenum      attribute,
1187         EGLAttrib    value,
1188     );
1189     alias PFN_eglQueryStreamAttribKHR = EGLBoolean function (
1190         EGLDisplay   dpy,
1191         EGLStreamKHR stream,
1192         EGLenum      attribute,
1193         EGLAttrib*   value,
1194     );
1195     alias PFN_eglStreamConsumerAcquireAttribKHR = EGLBoolean function (
1196         EGLDisplay        dpy,
1197         EGLStreamKHR      stream,
1198         const(EGLAttrib)* attrib_list,
1199     );
1200     alias PFN_eglStreamConsumerReleaseAttribKHR = EGLBoolean function (
1201         EGLDisplay        dpy,
1202         EGLStreamKHR      stream,
1203         const(EGLAttrib)* attrib_list,
1204     );
1205 
1206     // Command pointers for EGL_KHR_stream_consumer_gltexture
1207     alias PFN_eglStreamConsumerGLTextureExternalKHR = EGLBoolean function (
1208         EGLDisplay   dpy,
1209         EGLStreamKHR stream,
1210     );
1211     alias PFN_eglStreamConsumerAcquireKHR = EGLBoolean function (
1212         EGLDisplay   dpy,
1213         EGLStreamKHR stream,
1214     );
1215     alias PFN_eglStreamConsumerReleaseKHR = EGLBoolean function (
1216         EGLDisplay   dpy,
1217         EGLStreamKHR stream,
1218     );
1219 
1220     // Command pointers for EGL_KHR_stream_cross_process_fd
1221     alias PFN_eglGetStreamFileDescriptorKHR = EGLNativeFileDescriptorKHR function (
1222         EGLDisplay   dpy,
1223         EGLStreamKHR stream,
1224     );
1225     alias PFN_eglCreateStreamFromFileDescriptorKHR = EGLStreamKHR function (
1226         EGLDisplay                 dpy,
1227         EGLNativeFileDescriptorKHR file_descriptor,
1228     );
1229 
1230     // Command pointers for EGL_KHR_stream_fifo
1231     alias PFN_eglQueryStreamTimeKHR = EGLBoolean function (
1232         EGLDisplay   dpy,
1233         EGLStreamKHR stream,
1234         EGLenum      attribute,
1235         EGLTimeKHR*  value,
1236     );
1237 
1238     // Command pointers for EGL_KHR_stream_producer_eglsurface
1239     alias PFN_eglCreateStreamProducerSurfaceKHR = EGLSurface function (
1240         EGLDisplay     dpy,
1241         EGLConfig      config,
1242         EGLStreamKHR   stream,
1243         const(EGLint)* attrib_list,
1244     );
1245 
1246     // Command pointers for EGL_KHR_swap_buffers_with_damage
1247     alias PFN_eglSwapBuffersWithDamageKHR = EGLBoolean function (
1248         EGLDisplay dpy,
1249         EGLSurface surface,
1250         EGLint*    rects,
1251         EGLint     n_rects,
1252     );
1253 
1254     // Command pointers for EGL_KHR_wait_sync
1255     alias PFN_eglWaitSyncKHR = EGLint function (
1256         EGLDisplay dpy,
1257         EGLSyncKHR sync,
1258         EGLint     flags,
1259     );
1260 
1261     // Command pointers for EGL_ANDROID_blob_cache
1262     alias PFN_eglSetBlobCacheFuncsANDROID = void function (
1263         EGLDisplay            dpy,
1264         EGLSetBlobFuncANDROID set,
1265         EGLGetBlobFuncANDROID get,
1266     );
1267 
1268     // Command pointers for EGL_ANDROID_create_native_client_buffer
1269     alias PFN_eglCreateNativeClientBufferANDROID = EGLClientBuffer function (
1270         const(EGLint)* attrib_list,
1271     );
1272 
1273     // Command pointers for EGL_ANDROID_get_frame_timestamps
1274     alias PFN_eglGetCompositorTimingSupportedANDROID = EGLBoolean function (
1275         EGLDisplay dpy,
1276         EGLSurface surface,
1277         EGLint     name,
1278     );
1279     alias PFN_eglGetCompositorTimingANDROID = EGLBoolean function (
1280         EGLDisplay       dpy,
1281         EGLSurface       surface,
1282         EGLint           numTimestamps,
1283         const(EGLint)*   names,
1284         EGLnsecsANDROID* values,
1285     );
1286     alias PFN_eglGetNextFrameIdANDROID = EGLBoolean function (
1287         EGLDisplay    dpy,
1288         EGLSurface    surface,
1289         EGLuint64KHR* frameId,
1290     );
1291     alias PFN_eglGetFrameTimestampSupportedANDROID = EGLBoolean function (
1292         EGLDisplay dpy,
1293         EGLSurface surface,
1294         EGLint     timestamp,
1295     );
1296     alias PFN_eglGetFrameTimestampsANDROID = EGLBoolean function (
1297         EGLDisplay       dpy,
1298         EGLSurface       surface,
1299         EGLuint64KHR     frameId,
1300         EGLint           numTimestamps,
1301         const(EGLint)*   timestamps,
1302         EGLnsecsANDROID* values,
1303     );
1304 
1305     // Command pointers for EGL_ANDROID_get_native_client_buffer
1306     alias PFN_eglGetNativeClientBufferANDROID = EGLClientBuffer function (
1307         const(AHardwareBuffer)* buffer,
1308     );
1309 
1310     // Command pointers for EGL_ANDROID_native_fence_sync
1311     alias PFN_eglDupNativeFenceFDANDROID = EGLint function (
1312         EGLDisplay dpy,
1313         EGLSyncKHR sync,
1314     );
1315 
1316     // Command pointers for EGL_ANDROID_presentation_time
1317     alias PFN_eglPresentationTimeANDROID = EGLBoolean function (
1318         EGLDisplay      dpy,
1319         EGLSurface      surface,
1320         EGLnsecsANDROID time,
1321     );
1322 
1323     // Command pointers for EGL_ANGLE_query_surface_pointer
1324     alias PFN_eglQuerySurfacePointerANGLE = EGLBoolean function (
1325         EGLDisplay dpy,
1326         EGLSurface surface,
1327         EGLint     attribute,
1328         void**     value,
1329     );
1330 
1331     // Command pointers for EGL_EXT_compositor
1332     alias PFN_eglCompositorSetContextListEXT = EGLBoolean function (
1333         const(EGLint)* external_ref_ids,
1334         EGLint         num_entries,
1335     );
1336     alias PFN_eglCompositorSetContextAttributesEXT = EGLBoolean function (
1337         EGLint         external_ref_id,
1338         const(EGLint)* context_attributes,
1339         EGLint         num_entries,
1340     );
1341     alias PFN_eglCompositorSetWindowListEXT = EGLBoolean function (
1342         EGLint         external_ref_id,
1343         const(EGLint)* external_win_ids,
1344         EGLint         num_entries,
1345     );
1346     alias PFN_eglCompositorSetWindowAttributesEXT = EGLBoolean function (
1347         EGLint         external_win_id,
1348         const(EGLint)* window_attributes,
1349         EGLint         num_entries,
1350     );
1351     alias PFN_eglCompositorBindTexWindowEXT = EGLBoolean function (
1352         EGLint external_win_id,
1353     );
1354     alias PFN_eglCompositorSetSizeEXT = EGLBoolean function (
1355         EGLint external_win_id,
1356         EGLint width,
1357         EGLint height,
1358     );
1359     alias PFN_eglCompositorSwapPolicyEXT = EGLBoolean function (
1360         EGLint external_win_id,
1361         EGLint policy,
1362     );
1363 
1364     // Command pointers for EGL_EXT_device_base
1365     alias PFN_eglQueryDeviceAttribEXT = EGLBoolean function (
1366         EGLDeviceEXT device,
1367         EGLint       attribute,
1368         EGLAttrib*   value,
1369     );
1370     alias PFN_eglQueryDeviceStringEXT = const(char)* function (
1371         EGLDeviceEXT device,
1372         EGLint       name,
1373     );
1374     alias PFN_eglQueryDevicesEXT = EGLBoolean function (
1375         EGLint        max_devices,
1376         EGLDeviceEXT* devices,
1377         EGLint*       num_devices,
1378     );
1379     alias PFN_eglQueryDisplayAttribEXT = EGLBoolean function (
1380         EGLDisplay dpy,
1381         EGLint     attribute,
1382         EGLAttrib* value,
1383     );
1384 
1385     // Command pointers for EGL_EXT_image_dma_buf_import_modifiers
1386     alias PFN_eglQueryDmaBufFormatsEXT = EGLBoolean function (
1387         EGLDisplay dpy,
1388         EGLint     max_formats,
1389         EGLint*    formats,
1390         EGLint*    num_formats,
1391     );
1392     alias PFN_eglQueryDmaBufModifiersEXT = EGLBoolean function (
1393         EGLDisplay    dpy,
1394         EGLint        format,
1395         EGLint        max_modifiers,
1396         EGLuint64KHR* modifiers,
1397         EGLBoolean*   external_only,
1398         EGLint*       num_modifiers,
1399     );
1400 
1401     // Command pointers for EGL_EXT_output_base
1402     alias PFN_eglGetOutputLayersEXT = EGLBoolean function (
1403         EGLDisplay         dpy,
1404         const(EGLAttrib)*  attrib_list,
1405         EGLOutputLayerEXT* layers,
1406         EGLint             max_layers,
1407         EGLint*            num_layers,
1408     );
1409     alias PFN_eglGetOutputPortsEXT = EGLBoolean function (
1410         EGLDisplay        dpy,
1411         const(EGLAttrib)* attrib_list,
1412         EGLOutputPortEXT* ports,
1413         EGLint            max_ports,
1414         EGLint*           num_ports,
1415     );
1416     alias PFN_eglOutputLayerAttribEXT = EGLBoolean function (
1417         EGLDisplay        dpy,
1418         EGLOutputLayerEXT layer,
1419         EGLint            attribute,
1420         EGLAttrib         value,
1421     );
1422     alias PFN_eglQueryOutputLayerAttribEXT = EGLBoolean function (
1423         EGLDisplay        dpy,
1424         EGLOutputLayerEXT layer,
1425         EGLint            attribute,
1426         EGLAttrib*        value,
1427     );
1428     alias PFN_eglQueryOutputLayerStringEXT = const(char)* function (
1429         EGLDisplay        dpy,
1430         EGLOutputLayerEXT layer,
1431         EGLint            name,
1432     );
1433     alias PFN_eglOutputPortAttribEXT = EGLBoolean function (
1434         EGLDisplay       dpy,
1435         EGLOutputPortEXT port,
1436         EGLint           attribute,
1437         EGLAttrib        value,
1438     );
1439     alias PFN_eglQueryOutputPortAttribEXT = EGLBoolean function (
1440         EGLDisplay       dpy,
1441         EGLOutputPortEXT port,
1442         EGLint           attribute,
1443         EGLAttrib*       value,
1444     );
1445     alias PFN_eglQueryOutputPortStringEXT = const(char)* function (
1446         EGLDisplay       dpy,
1447         EGLOutputPortEXT port,
1448         EGLint           name,
1449     );
1450 
1451     // Command pointers for EGL_EXT_platform_base
1452     alias PFN_eglGetPlatformDisplayEXT = EGLDisplay function (
1453         EGLenum        platform,
1454         void*          native_display,
1455         const(EGLint)* attrib_list,
1456     );
1457     alias PFN_eglCreatePlatformWindowSurfaceEXT = EGLSurface function (
1458         EGLDisplay     dpy,
1459         EGLConfig      config,
1460         void*          native_window,
1461         const(EGLint)* attrib_list,
1462     );
1463     alias PFN_eglCreatePlatformPixmapSurfaceEXT = EGLSurface function (
1464         EGLDisplay     dpy,
1465         EGLConfig      config,
1466         void*          native_pixmap,
1467         const(EGLint)* attrib_list,
1468     );
1469 
1470     // Command pointers for EGL_EXT_stream_consumer_egloutput
1471     alias PFN_eglStreamConsumerOutputEXT = EGLBoolean function (
1472         EGLDisplay        dpy,
1473         EGLStreamKHR      stream,
1474         EGLOutputLayerEXT layer,
1475     );
1476 
1477     // Command pointers for EGL_EXT_swap_buffers_with_damage
1478     alias PFN_eglSwapBuffersWithDamageEXT = EGLBoolean function (
1479         EGLDisplay dpy,
1480         EGLSurface surface,
1481         EGLint*    rects,
1482         EGLint     n_rects,
1483     );
1484 
1485     // Command pointers for EGL_HI_clientpixmap
1486     alias PFN_eglCreatePixmapSurfaceHI = EGLSurface function (
1487         EGLDisplay         dpy,
1488         EGLConfig          config,
1489         EGLClientPixmapHI* pixmap,
1490     );
1491 
1492     // Command pointers for EGL_MESA_drm_image
1493     alias PFN_eglCreateDRMImageMESA = EGLImageKHR function (
1494         EGLDisplay     dpy,
1495         const(EGLint)* attrib_list,
1496     );
1497     alias PFN_eglExportDRMImageMESA = EGLBoolean function (
1498         EGLDisplay  dpy,
1499         EGLImageKHR image,
1500         EGLint*     name,
1501         EGLint*     handle,
1502         EGLint*     stride,
1503     );
1504 
1505     // Command pointers for EGL_MESA_image_dma_buf_export
1506     alias PFN_eglExportDMABUFImageQueryMESA = EGLBoolean function (
1507         EGLDisplay    dpy,
1508         EGLImageKHR   image,
1509         int*          fourcc,
1510         int*          num_planes,
1511         EGLuint64KHR* modifiers,
1512     );
1513     alias PFN_eglExportDMABUFImageMESA = EGLBoolean function (
1514         EGLDisplay  dpy,
1515         EGLImageKHR image,
1516         int*        fds,
1517         EGLint*     strides,
1518         EGLint*     offsets,
1519     );
1520 
1521     // Command pointers for EGL_NOK_swap_region
1522     alias PFN_eglSwapBuffersRegionNOK = EGLBoolean function (
1523         EGLDisplay     dpy,
1524         EGLSurface     surface,
1525         EGLint         numRects,
1526         const(EGLint)* rects,
1527     );
1528 
1529     // Command pointers for EGL_NOK_swap_region2
1530     alias PFN_eglSwapBuffersRegion2NOK = EGLBoolean function (
1531         EGLDisplay     dpy,
1532         EGLSurface     surface,
1533         EGLint         numRects,
1534         const(EGLint)* rects,
1535     );
1536 
1537     // Command pointers for EGL_NV_native_query
1538     alias PFN_eglQueryNativeDisplayNV = EGLBoolean function (
1539         EGLDisplay            dpy,
1540         EGLNativeDisplayType* display_id,
1541     );
1542     alias PFN_eglQueryNativeWindowNV = EGLBoolean function (
1543         EGLDisplay           dpy,
1544         EGLSurface           surf,
1545         EGLNativeWindowType* window,
1546     );
1547     alias PFN_eglQueryNativePixmapNV = EGLBoolean function (
1548         EGLDisplay           dpy,
1549         EGLSurface           surf,
1550         EGLNativePixmapType* pixmap,
1551     );
1552 
1553     // Command pointers for EGL_NV_post_sub_buffer
1554     alias PFN_eglPostSubBufferNV = EGLBoolean function (
1555         EGLDisplay dpy,
1556         EGLSurface surface,
1557         EGLint     x,
1558         EGLint     y,
1559         EGLint     width,
1560         EGLint     height,
1561     );
1562 
1563     // Command pointers for EGL_NV_stream_consumer_gltexture_yuv
1564     alias PFN_eglStreamConsumerGLTextureExternalAttribsNV = EGLBoolean function (
1565         EGLDisplay        dpy,
1566         EGLStreamKHR      stream,
1567         const(EGLAttrib)* attrib_list,
1568     );
1569 
1570     // Command pointers for EGL_NV_stream_metadata
1571     alias PFN_eglQueryDisplayAttribNV = EGLBoolean function (
1572         EGLDisplay dpy,
1573         EGLint     attribute,
1574         EGLAttrib* value,
1575     );
1576     alias PFN_eglSetStreamMetadataNV = EGLBoolean function (
1577         EGLDisplay   dpy,
1578         EGLStreamKHR stream,
1579         EGLint       n,
1580         EGLint       offset,
1581         EGLint       size,
1582         const(void)* data,
1583     );
1584     alias PFN_eglQueryStreamMetadataNV = EGLBoolean function (
1585         EGLDisplay   dpy,
1586         EGLStreamKHR stream,
1587         EGLenum      name,
1588         EGLint       n,
1589         EGLint       offset,
1590         EGLint       size,
1591         void*        data,
1592     );
1593 
1594     // Command pointers for EGL_NV_stream_reset
1595     alias PFN_eglResetStreamNV = EGLBoolean function (
1596         EGLDisplay   dpy,
1597         EGLStreamKHR stream,
1598     );
1599 
1600     // Command pointers for EGL_NV_stream_sync
1601     alias PFN_eglCreateStreamSyncNV = EGLSyncKHR function (
1602         EGLDisplay     dpy,
1603         EGLStreamKHR   stream,
1604         EGLenum        type,
1605         const(EGLint)* attrib_list,
1606     );
1607 
1608     // Command pointers for EGL_NV_sync
1609     alias PFN_eglCreateFenceSyncNV = EGLSyncNV function (
1610         EGLDisplay     dpy,
1611         EGLenum        condition,
1612         const(EGLint)* attrib_list,
1613     );
1614     alias PFN_eglDestroySyncNV = EGLBoolean function (
1615         EGLSyncNV sync,
1616     );
1617     alias PFN_eglFenceNV = EGLBoolean function (
1618         EGLSyncNV sync,
1619     );
1620     alias PFN_eglClientWaitSyncNV = EGLint function (
1621         EGLSyncNV sync,
1622         EGLint    flags,
1623         EGLTimeNV timeout,
1624     );
1625     alias PFN_eglSignalSyncNV = EGLBoolean function (
1626         EGLSyncNV sync,
1627         EGLenum   mode,
1628     );
1629     alias PFN_eglGetSyncAttribNV = EGLBoolean function (
1630         EGLSyncNV sync,
1631         EGLint    attribute,
1632         EGLint*   value,
1633     );
1634 
1635     // Command pointers for EGL_NV_system_time
1636     alias PFN_eglGetSystemTimeFrequencyNV = EGLuint64NV function ();
1637     alias PFN_eglGetSystemTimeNV = EGLuint64NV function ();
1638 }
1639 
1640 /// EglVersion describes the version of EGL
1641 enum EglVersion {
1642     egl10 = 10,
1643     egl11 = 11,
1644     egl12 = 12,
1645     egl14 = 14,
1646     egl15 = 15,
1647 }
1648 
1649 /// EGL loader base class
1650 final class Egl {
1651     this(SymbolLoader loader) {
1652 
1653         // EGL_VERSION_1_0
1654         _ChooseConfig = cast(PFN_eglChooseConfig)loadSymbol(loader, "eglChooseConfig", []);
1655         _CopyBuffers = cast(PFN_eglCopyBuffers)loadSymbol(loader, "eglCopyBuffers", []);
1656         _CreateContext = cast(PFN_eglCreateContext)loadSymbol(loader, "eglCreateContext", []);
1657         _CreatePbufferSurface = cast(PFN_eglCreatePbufferSurface)loadSymbol(loader, "eglCreatePbufferSurface", []);
1658         _CreatePixmapSurface = cast(PFN_eglCreatePixmapSurface)loadSymbol(loader, "eglCreatePixmapSurface", []);
1659         _CreateWindowSurface = cast(PFN_eglCreateWindowSurface)loadSymbol(loader, "eglCreateWindowSurface", []);
1660         _DestroyContext = cast(PFN_eglDestroyContext)loadSymbol(loader, "eglDestroyContext", []);
1661         _DestroySurface = cast(PFN_eglDestroySurface)loadSymbol(loader, "eglDestroySurface", []);
1662         _GetConfigAttrib = cast(PFN_eglGetConfigAttrib)loadSymbol(loader, "eglGetConfigAttrib", []);
1663         _GetConfigs = cast(PFN_eglGetConfigs)loadSymbol(loader, "eglGetConfigs", []);
1664         _GetCurrentDisplay = cast(PFN_eglGetCurrentDisplay)loadSymbol(loader, "eglGetCurrentDisplay", []);
1665         _GetCurrentSurface = cast(PFN_eglGetCurrentSurface)loadSymbol(loader, "eglGetCurrentSurface", []);
1666         _GetDisplay = cast(PFN_eglGetDisplay)loadSymbol(loader, "eglGetDisplay", []);
1667         _GetError = cast(PFN_eglGetError)loadSymbol(loader, "eglGetError", []);
1668         _GetProcAddress = cast(PFN_eglGetProcAddress)loadSymbol(loader, "eglGetProcAddress", []);
1669         _Initialize = cast(PFN_eglInitialize)loadSymbol(loader, "eglInitialize", []);
1670         _MakeCurrent = cast(PFN_eglMakeCurrent)loadSymbol(loader, "eglMakeCurrent", []);
1671         _QueryContext = cast(PFN_eglQueryContext)loadSymbol(loader, "eglQueryContext", []);
1672         _QueryString = cast(PFN_eglQueryString)loadSymbol(loader, "eglQueryString", []);
1673         _QuerySurface = cast(PFN_eglQuerySurface)loadSymbol(loader, "eglQuerySurface", []);
1674         _SwapBuffers = cast(PFN_eglSwapBuffers)loadSymbol(loader, "eglSwapBuffers", []);
1675         _Terminate = cast(PFN_eglTerminate)loadSymbol(loader, "eglTerminate", []);
1676         _WaitGL = cast(PFN_eglWaitGL)loadSymbol(loader, "eglWaitGL", []);
1677         _WaitNative = cast(PFN_eglWaitNative)loadSymbol(loader, "eglWaitNative", []);
1678 
1679         // EGL_VERSION_1_1
1680         _BindTexImage = cast(PFN_eglBindTexImage)loadSymbol(loader, "eglBindTexImage", []);
1681         _ReleaseTexImage = cast(PFN_eglReleaseTexImage)loadSymbol(loader, "eglReleaseTexImage", []);
1682         _SurfaceAttrib = cast(PFN_eglSurfaceAttrib)loadSymbol(loader, "eglSurfaceAttrib", []);
1683         _SwapInterval = cast(PFN_eglSwapInterval)loadSymbol(loader, "eglSwapInterval", []);
1684 
1685         // EGL_VERSION_1_2
1686         _BindAPI = cast(PFN_eglBindAPI)loadSymbol(loader, "eglBindAPI", []);
1687         _QueryAPI = cast(PFN_eglQueryAPI)loadSymbol(loader, "eglQueryAPI", []);
1688         _CreatePbufferFromClientBuffer = cast(PFN_eglCreatePbufferFromClientBuffer)loadSymbol(loader, "eglCreatePbufferFromClientBuffer", []);
1689         _ReleaseThread = cast(PFN_eglReleaseThread)loadSymbol(loader, "eglReleaseThread", []);
1690         _WaitClient = cast(PFN_eglWaitClient)loadSymbol(loader, "eglWaitClient", []);
1691 
1692         // EGL_VERSION_1_4
1693         _GetCurrentContext = cast(PFN_eglGetCurrentContext)loadSymbol(loader, "eglGetCurrentContext", []);
1694 
1695         // EGL_VERSION_1_5
1696         _CreateSync = cast(PFN_eglCreateSync)loadSymbol(loader, "eglCreateSync", ["eglCreateSync64KHR"]);
1697         _DestroySync = cast(PFN_eglDestroySync)loadSymbol(loader, "eglDestroySync", ["eglDestroySyncKHR"]);
1698         _ClientWaitSync = cast(PFN_eglClientWaitSync)loadSymbol(loader, "eglClientWaitSync", ["eglClientWaitSyncKHR"]);
1699         _GetSyncAttrib = cast(PFN_eglGetSyncAttrib)loadSymbol(loader, "eglGetSyncAttrib", []);
1700         _CreateImage = cast(PFN_eglCreateImage)loadSymbol(loader, "eglCreateImage", []);
1701         _DestroyImage = cast(PFN_eglDestroyImage)loadSymbol(loader, "eglDestroyImage", ["eglDestroyImageKHR"]);
1702         _GetPlatformDisplay = cast(PFN_eglGetPlatformDisplay)loadSymbol(loader, "eglGetPlatformDisplay", []);
1703         _CreatePlatformWindowSurface = cast(PFN_eglCreatePlatformWindowSurface)loadSymbol(loader, "eglCreatePlatformWindowSurface", []);
1704         _CreatePlatformPixmapSurface = cast(PFN_eglCreatePlatformPixmapSurface)loadSymbol(loader, "eglCreatePlatformPixmapSurface", []);
1705         _WaitSync = cast(PFN_eglWaitSync)loadSymbol(loader, "eglWaitSync", []);
1706 
1707         // EGL_KHR_debug,
1708         _DebugMessageControlKHR = cast(PFN_eglDebugMessageControlKHR)loadSymbol(loader, "eglDebugMessageControlKHR", []);
1709         _QueryDebugKHR = cast(PFN_eglQueryDebugKHR)loadSymbol(loader, "eglQueryDebugKHR", []);
1710         _LabelObjectKHR = cast(PFN_eglLabelObjectKHR)loadSymbol(loader, "eglLabelObjectKHR", []);
1711 
1712         // EGL_KHR_display_reference,
1713         _QueryDisplayAttribKHR = cast(PFN_eglQueryDisplayAttribKHR)loadSymbol(loader, "eglQueryDisplayAttribKHR", []);
1714 
1715         // EGL_KHR_fence_sync,
1716         _CreateSyncKHR = cast(PFN_eglCreateSyncKHR)loadSymbol(loader, "eglCreateSyncKHR", []);
1717         _GetSyncAttribKHR = cast(PFN_eglGetSyncAttribKHR)loadSymbol(loader, "eglGetSyncAttribKHR", []);
1718 
1719         // EGL_KHR_image,
1720         _CreateImageKHR = cast(PFN_eglCreateImageKHR)loadSymbol(loader, "eglCreateImageKHR", []);
1721 
1722         // EGL_KHR_lock_surface,
1723         _LockSurfaceKHR = cast(PFN_eglLockSurfaceKHR)loadSymbol(loader, "eglLockSurfaceKHR", []);
1724         _UnlockSurfaceKHR = cast(PFN_eglUnlockSurfaceKHR)loadSymbol(loader, "eglUnlockSurfaceKHR", []);
1725 
1726         // EGL_KHR_lock_surface3,
1727         _QuerySurface64KHR = cast(PFN_eglQuerySurface64KHR)loadSymbol(loader, "eglQuerySurface64KHR", []);
1728 
1729         // EGL_KHR_partial_update,
1730         _SetDamageRegionKHR = cast(PFN_eglSetDamageRegionKHR)loadSymbol(loader, "eglSetDamageRegionKHR", []);
1731 
1732         // EGL_KHR_reusable_sync,
1733         _SignalSyncKHR = cast(PFN_eglSignalSyncKHR)loadSymbol(loader, "eglSignalSyncKHR", []);
1734 
1735         // EGL_KHR_stream,
1736         _CreateStreamKHR = cast(PFN_eglCreateStreamKHR)loadSymbol(loader, "eglCreateStreamKHR", []);
1737         _DestroyStreamKHR = cast(PFN_eglDestroyStreamKHR)loadSymbol(loader, "eglDestroyStreamKHR", []);
1738         _StreamAttribKHR = cast(PFN_eglStreamAttribKHR)loadSymbol(loader, "eglStreamAttribKHR", []);
1739         _QueryStreamKHR = cast(PFN_eglQueryStreamKHR)loadSymbol(loader, "eglQueryStreamKHR", []);
1740         _QueryStreamu64KHR = cast(PFN_eglQueryStreamu64KHR)loadSymbol(loader, "eglQueryStreamu64KHR", []);
1741 
1742         // EGL_KHR_stream_attrib,
1743         _CreateStreamAttribKHR = cast(PFN_eglCreateStreamAttribKHR)loadSymbol(loader, "eglCreateStreamAttribKHR", []);
1744         _SetStreamAttribKHR = cast(PFN_eglSetStreamAttribKHR)loadSymbol(loader, "eglSetStreamAttribKHR", []);
1745         _QueryStreamAttribKHR = cast(PFN_eglQueryStreamAttribKHR)loadSymbol(loader, "eglQueryStreamAttribKHR", []);
1746         _StreamConsumerAcquireAttribKHR = cast(PFN_eglStreamConsumerAcquireAttribKHR)loadSymbol(loader, "eglStreamConsumerAcquireAttribKHR", []);
1747         _StreamConsumerReleaseAttribKHR = cast(PFN_eglStreamConsumerReleaseAttribKHR)loadSymbol(loader, "eglStreamConsumerReleaseAttribKHR", []);
1748 
1749         // EGL_KHR_stream_consumer_gltexture,
1750         _StreamConsumerGLTextureExternalKHR = cast(PFN_eglStreamConsumerGLTextureExternalKHR)loadSymbol(loader, "eglStreamConsumerGLTextureExternalKHR", []);
1751         _StreamConsumerAcquireKHR = cast(PFN_eglStreamConsumerAcquireKHR)loadSymbol(loader, "eglStreamConsumerAcquireKHR", []);
1752         _StreamConsumerReleaseKHR = cast(PFN_eglStreamConsumerReleaseKHR)loadSymbol(loader, "eglStreamConsumerReleaseKHR", []);
1753 
1754         // EGL_KHR_stream_cross_process_fd,
1755         _GetStreamFileDescriptorKHR = cast(PFN_eglGetStreamFileDescriptorKHR)loadSymbol(loader, "eglGetStreamFileDescriptorKHR", []);
1756         _CreateStreamFromFileDescriptorKHR = cast(PFN_eglCreateStreamFromFileDescriptorKHR)loadSymbol(loader, "eglCreateStreamFromFileDescriptorKHR", []);
1757 
1758         // EGL_KHR_stream_fifo,
1759         _QueryStreamTimeKHR = cast(PFN_eglQueryStreamTimeKHR)loadSymbol(loader, "eglQueryStreamTimeKHR", []);
1760 
1761         // EGL_KHR_stream_producer_eglsurface,
1762         _CreateStreamProducerSurfaceKHR = cast(PFN_eglCreateStreamProducerSurfaceKHR)loadSymbol(loader, "eglCreateStreamProducerSurfaceKHR", []);
1763 
1764         // EGL_KHR_swap_buffers_with_damage,
1765         _SwapBuffersWithDamageKHR = cast(PFN_eglSwapBuffersWithDamageKHR)loadSymbol(loader, "eglSwapBuffersWithDamageKHR", []);
1766 
1767         // EGL_KHR_wait_sync,
1768         _WaitSyncKHR = cast(PFN_eglWaitSyncKHR)loadSymbol(loader, "eglWaitSyncKHR", []);
1769 
1770         // EGL_ANDROID_blob_cache,
1771         _SetBlobCacheFuncsANDROID = cast(PFN_eglSetBlobCacheFuncsANDROID)loadSymbol(loader, "eglSetBlobCacheFuncsANDROID", []);
1772 
1773         // EGL_ANDROID_create_native_client_buffer,
1774         _CreateNativeClientBufferANDROID = cast(PFN_eglCreateNativeClientBufferANDROID)loadSymbol(loader, "eglCreateNativeClientBufferANDROID", []);
1775 
1776         // EGL_ANDROID_get_frame_timestamps,
1777         _GetCompositorTimingSupportedANDROID = cast(PFN_eglGetCompositorTimingSupportedANDROID)loadSymbol(loader, "eglGetCompositorTimingSupportedANDROID", []);
1778         _GetCompositorTimingANDROID = cast(PFN_eglGetCompositorTimingANDROID)loadSymbol(loader, "eglGetCompositorTimingANDROID", []);
1779         _GetNextFrameIdANDROID = cast(PFN_eglGetNextFrameIdANDROID)loadSymbol(loader, "eglGetNextFrameIdANDROID", []);
1780         _GetFrameTimestampSupportedANDROID = cast(PFN_eglGetFrameTimestampSupportedANDROID)loadSymbol(loader, "eglGetFrameTimestampSupportedANDROID", []);
1781         _GetFrameTimestampsANDROID = cast(PFN_eglGetFrameTimestampsANDROID)loadSymbol(loader, "eglGetFrameTimestampsANDROID", []);
1782 
1783         // EGL_ANDROID_get_native_client_buffer,
1784         _GetNativeClientBufferANDROID = cast(PFN_eglGetNativeClientBufferANDROID)loadSymbol(loader, "eglGetNativeClientBufferANDROID", []);
1785 
1786         // EGL_ANDROID_native_fence_sync,
1787         _DupNativeFenceFDANDROID = cast(PFN_eglDupNativeFenceFDANDROID)loadSymbol(loader, "eglDupNativeFenceFDANDROID", []);
1788 
1789         // EGL_ANDROID_presentation_time,
1790         _PresentationTimeANDROID = cast(PFN_eglPresentationTimeANDROID)loadSymbol(loader, "eglPresentationTimeANDROID", []);
1791 
1792         // EGL_ANGLE_query_surface_pointer,
1793         _QuerySurfacePointerANGLE = cast(PFN_eglQuerySurfacePointerANGLE)loadSymbol(loader, "eglQuerySurfacePointerANGLE", []);
1794 
1795         // EGL_EXT_compositor,
1796         _CompositorSetContextListEXT = cast(PFN_eglCompositorSetContextListEXT)loadSymbol(loader, "eglCompositorSetContextListEXT", []);
1797         _CompositorSetContextAttributesEXT = cast(PFN_eglCompositorSetContextAttributesEXT)loadSymbol(loader, "eglCompositorSetContextAttributesEXT", []);
1798         _CompositorSetWindowListEXT = cast(PFN_eglCompositorSetWindowListEXT)loadSymbol(loader, "eglCompositorSetWindowListEXT", []);
1799         _CompositorSetWindowAttributesEXT = cast(PFN_eglCompositorSetWindowAttributesEXT)loadSymbol(loader, "eglCompositorSetWindowAttributesEXT", []);
1800         _CompositorBindTexWindowEXT = cast(PFN_eglCompositorBindTexWindowEXT)loadSymbol(loader, "eglCompositorBindTexWindowEXT", []);
1801         _CompositorSetSizeEXT = cast(PFN_eglCompositorSetSizeEXT)loadSymbol(loader, "eglCompositorSetSizeEXT", []);
1802         _CompositorSwapPolicyEXT = cast(PFN_eglCompositorSwapPolicyEXT)loadSymbol(loader, "eglCompositorSwapPolicyEXT", []);
1803 
1804         // EGL_EXT_device_base,
1805         _QueryDeviceAttribEXT = cast(PFN_eglQueryDeviceAttribEXT)loadSymbol(loader, "eglQueryDeviceAttribEXT", []);
1806         _QueryDeviceStringEXT = cast(PFN_eglQueryDeviceStringEXT)loadSymbol(loader, "eglQueryDeviceStringEXT", []);
1807         _QueryDevicesEXT = cast(PFN_eglQueryDevicesEXT)loadSymbol(loader, "eglQueryDevicesEXT", []);
1808         _QueryDisplayAttribEXT = cast(PFN_eglQueryDisplayAttribEXT)loadSymbol(loader, "eglQueryDisplayAttribEXT", []);
1809 
1810         // EGL_EXT_image_dma_buf_import_modifiers,
1811         _QueryDmaBufFormatsEXT = cast(PFN_eglQueryDmaBufFormatsEXT)loadSymbol(loader, "eglQueryDmaBufFormatsEXT", []);
1812         _QueryDmaBufModifiersEXT = cast(PFN_eglQueryDmaBufModifiersEXT)loadSymbol(loader, "eglQueryDmaBufModifiersEXT", []);
1813 
1814         // EGL_EXT_output_base,
1815         _GetOutputLayersEXT = cast(PFN_eglGetOutputLayersEXT)loadSymbol(loader, "eglGetOutputLayersEXT", []);
1816         _GetOutputPortsEXT = cast(PFN_eglGetOutputPortsEXT)loadSymbol(loader, "eglGetOutputPortsEXT", []);
1817         _OutputLayerAttribEXT = cast(PFN_eglOutputLayerAttribEXT)loadSymbol(loader, "eglOutputLayerAttribEXT", []);
1818         _QueryOutputLayerAttribEXT = cast(PFN_eglQueryOutputLayerAttribEXT)loadSymbol(loader, "eglQueryOutputLayerAttribEXT", []);
1819         _QueryOutputLayerStringEXT = cast(PFN_eglQueryOutputLayerStringEXT)loadSymbol(loader, "eglQueryOutputLayerStringEXT", []);
1820         _OutputPortAttribEXT = cast(PFN_eglOutputPortAttribEXT)loadSymbol(loader, "eglOutputPortAttribEXT", []);
1821         _QueryOutputPortAttribEXT = cast(PFN_eglQueryOutputPortAttribEXT)loadSymbol(loader, "eglQueryOutputPortAttribEXT", []);
1822         _QueryOutputPortStringEXT = cast(PFN_eglQueryOutputPortStringEXT)loadSymbol(loader, "eglQueryOutputPortStringEXT", []);
1823 
1824         // EGL_EXT_platform_base,
1825         _GetPlatformDisplayEXT = cast(PFN_eglGetPlatformDisplayEXT)loadSymbol(loader, "eglGetPlatformDisplayEXT", []);
1826         _CreatePlatformWindowSurfaceEXT = cast(PFN_eglCreatePlatformWindowSurfaceEXT)loadSymbol(loader, "eglCreatePlatformWindowSurfaceEXT", []);
1827         _CreatePlatformPixmapSurfaceEXT = cast(PFN_eglCreatePlatformPixmapSurfaceEXT)loadSymbol(loader, "eglCreatePlatformPixmapSurfaceEXT", []);
1828 
1829         // EGL_EXT_stream_consumer_egloutput,
1830         _StreamConsumerOutputEXT = cast(PFN_eglStreamConsumerOutputEXT)loadSymbol(loader, "eglStreamConsumerOutputEXT", []);
1831 
1832         // EGL_EXT_swap_buffers_with_damage,
1833         _SwapBuffersWithDamageEXT = cast(PFN_eglSwapBuffersWithDamageEXT)loadSymbol(loader, "eglSwapBuffersWithDamageEXT", []);
1834 
1835         // EGL_HI_clientpixmap,
1836         _CreatePixmapSurfaceHI = cast(PFN_eglCreatePixmapSurfaceHI)loadSymbol(loader, "eglCreatePixmapSurfaceHI", []);
1837 
1838         // EGL_MESA_drm_image,
1839         _CreateDRMImageMESA = cast(PFN_eglCreateDRMImageMESA)loadSymbol(loader, "eglCreateDRMImageMESA", []);
1840         _ExportDRMImageMESA = cast(PFN_eglExportDRMImageMESA)loadSymbol(loader, "eglExportDRMImageMESA", []);
1841 
1842         // EGL_MESA_image_dma_buf_export,
1843         _ExportDMABUFImageQueryMESA = cast(PFN_eglExportDMABUFImageQueryMESA)loadSymbol(loader, "eglExportDMABUFImageQueryMESA", []);
1844         _ExportDMABUFImageMESA = cast(PFN_eglExportDMABUFImageMESA)loadSymbol(loader, "eglExportDMABUFImageMESA", []);
1845 
1846         // EGL_NOK_swap_region,
1847         _SwapBuffersRegionNOK = cast(PFN_eglSwapBuffersRegionNOK)loadSymbol(loader, "eglSwapBuffersRegionNOK", []);
1848 
1849         // EGL_NOK_swap_region2,
1850         _SwapBuffersRegion2NOK = cast(PFN_eglSwapBuffersRegion2NOK)loadSymbol(loader, "eglSwapBuffersRegion2NOK", []);
1851 
1852         // EGL_NV_native_query,
1853         _QueryNativeDisplayNV = cast(PFN_eglQueryNativeDisplayNV)loadSymbol(loader, "eglQueryNativeDisplayNV", []);
1854         _QueryNativeWindowNV = cast(PFN_eglQueryNativeWindowNV)loadSymbol(loader, "eglQueryNativeWindowNV", []);
1855         _QueryNativePixmapNV = cast(PFN_eglQueryNativePixmapNV)loadSymbol(loader, "eglQueryNativePixmapNV", []);
1856 
1857         // EGL_NV_post_sub_buffer,
1858         _PostSubBufferNV = cast(PFN_eglPostSubBufferNV)loadSymbol(loader, "eglPostSubBufferNV", []);
1859 
1860         // EGL_NV_stream_consumer_gltexture_yuv,
1861         _StreamConsumerGLTextureExternalAttribsNV = cast(PFN_eglStreamConsumerGLTextureExternalAttribsNV)loadSymbol(loader, "eglStreamConsumerGLTextureExternalAttribsNV", []);
1862 
1863         // EGL_NV_stream_metadata,
1864         _QueryDisplayAttribNV = cast(PFN_eglQueryDisplayAttribNV)loadSymbol(loader, "eglQueryDisplayAttribNV", []);
1865         _SetStreamMetadataNV = cast(PFN_eglSetStreamMetadataNV)loadSymbol(loader, "eglSetStreamMetadataNV", []);
1866         _QueryStreamMetadataNV = cast(PFN_eglQueryStreamMetadataNV)loadSymbol(loader, "eglQueryStreamMetadataNV", []);
1867 
1868         // EGL_NV_stream_reset,
1869         _ResetStreamNV = cast(PFN_eglResetStreamNV)loadSymbol(loader, "eglResetStreamNV", []);
1870 
1871         // EGL_NV_stream_sync,
1872         _CreateStreamSyncNV = cast(PFN_eglCreateStreamSyncNV)loadSymbol(loader, "eglCreateStreamSyncNV", []);
1873 
1874         // EGL_NV_sync,
1875         _CreateFenceSyncNV = cast(PFN_eglCreateFenceSyncNV)loadSymbol(loader, "eglCreateFenceSyncNV", []);
1876         _DestroySyncNV = cast(PFN_eglDestroySyncNV)loadSymbol(loader, "eglDestroySyncNV", []);
1877         _FenceNV = cast(PFN_eglFenceNV)loadSymbol(loader, "eglFenceNV", []);
1878         _ClientWaitSyncNV = cast(PFN_eglClientWaitSyncNV)loadSymbol(loader, "eglClientWaitSyncNV", []);
1879         _SignalSyncNV = cast(PFN_eglSignalSyncNV)loadSymbol(loader, "eglSignalSyncNV", []);
1880         _GetSyncAttribNV = cast(PFN_eglGetSyncAttribNV)loadSymbol(loader, "eglGetSyncAttribNV", []);
1881 
1882         // EGL_NV_system_time,
1883         _GetSystemTimeFrequencyNV = cast(PFN_eglGetSystemTimeFrequencyNV)loadSymbol(loader, "eglGetSystemTimeFrequencyNV", []);
1884         _GetSystemTimeNV = cast(PFN_eglGetSystemTimeNV)loadSymbol(loader, "eglGetSystemTimeNV", []);
1885     }
1886 
1887     private static void* loadSymbol(SymbolLoader loader, in string name, in string[] aliases) {
1888         void* sym = loader(name);
1889         if (sym) return sym;
1890         foreach (n; aliases) {
1891             sym = loader(n);
1892             if (sym) return sym;
1893         }
1894         return null;
1895     }
1896 
1897     /// Commands for EGL_VERSION_1_0
1898     public EGLBoolean ChooseConfig (EGLDisplay dpy, const(EGLint)* attrib_list, EGLConfig* configs, EGLint config_size, EGLint* num_config) const {
1899         assert(_ChooseConfig !is null, "EGL command eglChooseConfig was not loaded");
1900         return _ChooseConfig (dpy, attrib_list, configs, config_size, num_config);
1901     }
1902     /// ditto
1903     public EGLBoolean CopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target) const {
1904         assert(_CopyBuffers !is null, "EGL command eglCopyBuffers was not loaded");
1905         return _CopyBuffers (dpy, surface, target);
1906     }
1907     /// ditto
1908     public EGLContext CreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const(EGLint)* attrib_list) const {
1909         assert(_CreateContext !is null, "EGL command eglCreateContext was not loaded");
1910         return _CreateContext (dpy, config, share_context, attrib_list);
1911     }
1912     /// ditto
1913     public EGLSurface CreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const(EGLint)* attrib_list) const {
1914         assert(_CreatePbufferSurface !is null, "EGL command eglCreatePbufferSurface was not loaded");
1915         return _CreatePbufferSurface (dpy, config, attrib_list);
1916     }
1917     /// ditto
1918     public EGLSurface CreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const(EGLint)* attrib_list) const {
1919         assert(_CreatePixmapSurface !is null, "EGL command eglCreatePixmapSurface was not loaded");
1920         return _CreatePixmapSurface (dpy, config, pixmap, attrib_list);
1921     }
1922     /// ditto
1923     public EGLSurface CreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const(EGLint)* attrib_list) const {
1924         assert(_CreateWindowSurface !is null, "EGL command eglCreateWindowSurface was not loaded");
1925         return _CreateWindowSurface (dpy, config, win, attrib_list);
1926     }
1927     /// ditto
1928     public EGLBoolean DestroyContext (EGLDisplay dpy, EGLContext ctx) const {
1929         assert(_DestroyContext !is null, "EGL command eglDestroyContext was not loaded");
1930         return _DestroyContext (dpy, ctx);
1931     }
1932     /// ditto
1933     public EGLBoolean DestroySurface (EGLDisplay dpy, EGLSurface surface) const {
1934         assert(_DestroySurface !is null, "EGL command eglDestroySurface was not loaded");
1935         return _DestroySurface (dpy, surface);
1936     }
1937     /// ditto
1938     public EGLBoolean GetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint* value) const {
1939         assert(_GetConfigAttrib !is null, "EGL command eglGetConfigAttrib was not loaded");
1940         return _GetConfigAttrib (dpy, config, attribute, value);
1941     }
1942     /// ditto
1943     public EGLBoolean GetConfigs (EGLDisplay dpy, EGLConfig* configs, EGLint config_size, EGLint* num_config) const {
1944         assert(_GetConfigs !is null, "EGL command eglGetConfigs was not loaded");
1945         return _GetConfigs (dpy, configs, config_size, num_config);
1946     }
1947     /// ditto
1948     public EGLDisplay GetCurrentDisplay () const {
1949         assert(_GetCurrentDisplay !is null, "EGL command eglGetCurrentDisplay was not loaded");
1950         return _GetCurrentDisplay ();
1951     }
1952     /// ditto
1953     public EGLSurface GetCurrentSurface (EGLint readdraw) const {
1954         assert(_GetCurrentSurface !is null, "EGL command eglGetCurrentSurface was not loaded");
1955         return _GetCurrentSurface (readdraw);
1956     }
1957     /// ditto
1958     public EGLDisplay GetDisplay (EGLNativeDisplayType display_id) const {
1959         assert(_GetDisplay !is null, "EGL command eglGetDisplay was not loaded");
1960         return _GetDisplay (display_id);
1961     }
1962     /// ditto
1963     public EGLint GetError () const {
1964         assert(_GetError !is null, "EGL command eglGetError was not loaded");
1965         return _GetError ();
1966     }
1967     /// ditto
1968     public __eglMustCastToProperFunctionPointerType GetProcAddress (const(char)* procname) const {
1969         assert(_GetProcAddress !is null, "EGL command eglGetProcAddress was not loaded");
1970         return _GetProcAddress (procname);
1971     }
1972     /// ditto
1973     public EGLBoolean Initialize (EGLDisplay dpy, EGLint* major, EGLint* minor) const {
1974         assert(_Initialize !is null, "EGL command eglInitialize was not loaded");
1975         return _Initialize (dpy, major, minor);
1976     }
1977     /// ditto
1978     public EGLBoolean MakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx) const {
1979         assert(_MakeCurrent !is null, "EGL command eglMakeCurrent was not loaded");
1980         return _MakeCurrent (dpy, draw, read, ctx);
1981     }
1982     /// ditto
1983     public EGLBoolean QueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint* value) const {
1984         assert(_QueryContext !is null, "EGL command eglQueryContext was not loaded");
1985         return _QueryContext (dpy, ctx, attribute, value);
1986     }
1987     /// ditto
1988     public const(char)* QueryString (EGLDisplay dpy, EGLint name) const {
1989         assert(_QueryString !is null, "EGL command eglQueryString was not loaded");
1990         return _QueryString (dpy, name);
1991     }
1992     /// ditto
1993     public EGLBoolean QuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint* value) const {
1994         assert(_QuerySurface !is null, "EGL command eglQuerySurface was not loaded");
1995         return _QuerySurface (dpy, surface, attribute, value);
1996     }
1997     /// ditto
1998     public EGLBoolean SwapBuffers (EGLDisplay dpy, EGLSurface surface) const {
1999         assert(_SwapBuffers !is null, "EGL command eglSwapBuffers was not loaded");
2000         return _SwapBuffers (dpy, surface);
2001     }
2002     /// ditto
2003     public EGLBoolean Terminate (EGLDisplay dpy) const {
2004         assert(_Terminate !is null, "EGL command eglTerminate was not loaded");
2005         return _Terminate (dpy);
2006     }
2007     /// ditto
2008     public EGLBoolean WaitGL () const {
2009         assert(_WaitGL !is null, "EGL command eglWaitGL was not loaded");
2010         return _WaitGL ();
2011     }
2012     /// ditto
2013     public EGLBoolean WaitNative (EGLint engine) const {
2014         assert(_WaitNative !is null, "EGL command eglWaitNative was not loaded");
2015         return _WaitNative (engine);
2016     }
2017 
2018     /// Commands for EGL_VERSION_1_1
2019     public EGLBoolean BindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer) const {
2020         assert(_BindTexImage !is null, "EGL command eglBindTexImage was not loaded");
2021         return _BindTexImage (dpy, surface, buffer);
2022     }
2023     /// ditto
2024     public EGLBoolean ReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer) const {
2025         assert(_ReleaseTexImage !is null, "EGL command eglReleaseTexImage was not loaded");
2026         return _ReleaseTexImage (dpy, surface, buffer);
2027     }
2028     /// ditto
2029     public EGLBoolean SurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value) const {
2030         assert(_SurfaceAttrib !is null, "EGL command eglSurfaceAttrib was not loaded");
2031         return _SurfaceAttrib (dpy, surface, attribute, value);
2032     }
2033     /// ditto
2034     public EGLBoolean SwapInterval (EGLDisplay dpy, EGLint interval) const {
2035         assert(_SwapInterval !is null, "EGL command eglSwapInterval was not loaded");
2036         return _SwapInterval (dpy, interval);
2037     }
2038 
2039     /// Commands for EGL_VERSION_1_2
2040     public EGLBoolean BindAPI (EGLenum api) const {
2041         assert(_BindAPI !is null, "EGL command eglBindAPI was not loaded");
2042         return _BindAPI (api);
2043     }
2044     /// ditto
2045     public EGLenum QueryAPI () const {
2046         assert(_QueryAPI !is null, "EGL command eglQueryAPI was not loaded");
2047         return _QueryAPI ();
2048     }
2049     /// ditto
2050     public EGLSurface CreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const(EGLint)* attrib_list) const {
2051         assert(_CreatePbufferFromClientBuffer !is null, "EGL command eglCreatePbufferFromClientBuffer was not loaded");
2052         return _CreatePbufferFromClientBuffer (dpy, buftype, buffer, config, attrib_list);
2053     }
2054     /// ditto
2055     public EGLBoolean ReleaseThread () const {
2056         assert(_ReleaseThread !is null, "EGL command eglReleaseThread was not loaded");
2057         return _ReleaseThread ();
2058     }
2059     /// ditto
2060     public EGLBoolean WaitClient () const {
2061         assert(_WaitClient !is null, "EGL command eglWaitClient was not loaded");
2062         return _WaitClient ();
2063     }
2064 
2065     /// Commands for EGL_VERSION_1_4
2066     public EGLContext GetCurrentContext () const {
2067         assert(_GetCurrentContext !is null, "EGL command eglGetCurrentContext was not loaded");
2068         return _GetCurrentContext ();
2069     }
2070 
2071     /// Commands for EGL_VERSION_1_5
2072     public EGLSync CreateSync (EGLDisplay dpy, EGLenum type, const(EGLAttrib)* attrib_list) const {
2073         assert(_CreateSync !is null, "EGL command eglCreateSync was not loaded");
2074         return _CreateSync (dpy, type, attrib_list);
2075     }
2076     /// ditto
2077     public EGLBoolean DestroySync (EGLDisplay dpy, EGLSync sync) const {
2078         assert(_DestroySync !is null, "EGL command eglDestroySync was not loaded");
2079         return _DestroySync (dpy, sync);
2080     }
2081     /// ditto
2082     public EGLint ClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout) const {
2083         assert(_ClientWaitSync !is null, "EGL command eglClientWaitSync was not loaded");
2084         return _ClientWaitSync (dpy, sync, flags, timeout);
2085     }
2086     /// ditto
2087     public EGLBoolean GetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib* value) const {
2088         assert(_GetSyncAttrib !is null, "EGL command eglGetSyncAttrib was not loaded");
2089         return _GetSyncAttrib (dpy, sync, attribute, value);
2090     }
2091     /// ditto
2092     public EGLImage CreateImage (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const(EGLAttrib)* attrib_list) const {
2093         assert(_CreateImage !is null, "EGL command eglCreateImage was not loaded");
2094         return _CreateImage (dpy, ctx, target, buffer, attrib_list);
2095     }
2096     /// ditto
2097     public EGLBoolean DestroyImage (EGLDisplay dpy, EGLImage image) const {
2098         assert(_DestroyImage !is null, "EGL command eglDestroyImage was not loaded");
2099         return _DestroyImage (dpy, image);
2100     }
2101     /// ditto
2102     public EGLDisplay GetPlatformDisplay (EGLenum platform, void* native_display, const(EGLAttrib)* attrib_list) const {
2103         assert(_GetPlatformDisplay !is null, "EGL command eglGetPlatformDisplay was not loaded");
2104         return _GetPlatformDisplay (platform, native_display, attrib_list);
2105     }
2106     /// ditto
2107     public EGLSurface CreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void* native_window, const(EGLAttrib)* attrib_list) const {
2108         assert(_CreatePlatformWindowSurface !is null, "EGL command eglCreatePlatformWindowSurface was not loaded");
2109         return _CreatePlatformWindowSurface (dpy, config, native_window, attrib_list);
2110     }
2111     /// ditto
2112     public EGLSurface CreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void* native_pixmap, const(EGLAttrib)* attrib_list) const {
2113         assert(_CreatePlatformPixmapSurface !is null, "EGL command eglCreatePlatformPixmapSurface was not loaded");
2114         return _CreatePlatformPixmapSurface (dpy, config, native_pixmap, attrib_list);
2115     }
2116     /// ditto
2117     public EGLBoolean WaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags) const {
2118         assert(_WaitSync !is null, "EGL command eglWaitSync was not loaded");
2119         return _WaitSync (dpy, sync, flags);
2120     }
2121 
2122     /// Commands for EGL_KHR_debug
2123     public EGLint DebugMessageControlKHR (EGLDEBUGPROCKHR callback, const(EGLAttrib)* attrib_list) const {
2124         assert(_DebugMessageControlKHR !is null, "EGL command eglDebugMessageControlKHR was not loaded");
2125         return _DebugMessageControlKHR (callback, attrib_list);
2126     }
2127     /// ditto
2128     public EGLBoolean QueryDebugKHR (EGLint attribute, EGLAttrib* value) const {
2129         assert(_QueryDebugKHR !is null, "EGL command eglQueryDebugKHR was not loaded");
2130         return _QueryDebugKHR (attribute, value);
2131     }
2132     /// ditto
2133     public EGLint LabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label) const {
2134         assert(_LabelObjectKHR !is null, "EGL command eglLabelObjectKHR was not loaded");
2135         return _LabelObjectKHR (display, objectType, object, label);
2136     }
2137 
2138     /// Commands for EGL_KHR_display_reference
2139     public EGLBoolean QueryDisplayAttribKHR (EGLDisplay dpy, EGLint name, EGLAttrib* value) const {
2140         assert(_QueryDisplayAttribKHR !is null, "EGL command eglQueryDisplayAttribKHR was not loaded");
2141         return _QueryDisplayAttribKHR (dpy, name, value);
2142     }
2143 
2144     /// Commands for EGL_KHR_fence_sync
2145     public EGLSyncKHR CreateSyncKHR (EGLDisplay dpy, EGLenum type, const(EGLint)* attrib_list) const {
2146         assert(_CreateSyncKHR !is null, "EGL command eglCreateSyncKHR was not loaded");
2147         return _CreateSyncKHR (dpy, type, attrib_list);
2148     }
2149     /// ditto
2150     public EGLBoolean GetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint* value) const {
2151         assert(_GetSyncAttribKHR !is null, "EGL command eglGetSyncAttribKHR was not loaded");
2152         return _GetSyncAttribKHR (dpy, sync, attribute, value);
2153     }
2154 
2155     /// Commands for EGL_KHR_image
2156     public EGLImageKHR CreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const(EGLint)* attrib_list) const {
2157         assert(_CreateImageKHR !is null, "EGL command eglCreateImageKHR was not loaded");
2158         return _CreateImageKHR (dpy, ctx, target, buffer, attrib_list);
2159     }
2160 
2161     /// Commands for EGL_KHR_lock_surface
2162     public EGLBoolean LockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const(EGLint)* attrib_list) const {
2163         assert(_LockSurfaceKHR !is null, "EGL command eglLockSurfaceKHR was not loaded");
2164         return _LockSurfaceKHR (dpy, surface, attrib_list);
2165     }
2166     /// ditto
2167     public EGLBoolean UnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface) const {
2168         assert(_UnlockSurfaceKHR !is null, "EGL command eglUnlockSurfaceKHR was not loaded");
2169         return _UnlockSurfaceKHR (dpy, surface);
2170     }
2171 
2172     /// Commands for EGL_KHR_lock_surface3
2173     public EGLBoolean QuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR* value) const {
2174         assert(_QuerySurface64KHR !is null, "EGL command eglQuerySurface64KHR was not loaded");
2175         return _QuerySurface64KHR (dpy, surface, attribute, value);
2176     }
2177 
2178     /// Commands for EGL_KHR_partial_update
2179     public EGLBoolean SetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint* rects, EGLint n_rects) const {
2180         assert(_SetDamageRegionKHR !is null, "EGL command eglSetDamageRegionKHR was not loaded");
2181         return _SetDamageRegionKHR (dpy, surface, rects, n_rects);
2182     }
2183 
2184     /// Commands for EGL_KHR_reusable_sync
2185     public EGLBoolean SignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode) const {
2186         assert(_SignalSyncKHR !is null, "EGL command eglSignalSyncKHR was not loaded");
2187         return _SignalSyncKHR (dpy, sync, mode);
2188     }
2189 
2190     /// Commands for EGL_KHR_stream
2191     public EGLStreamKHR CreateStreamKHR (EGLDisplay dpy, const(EGLint)* attrib_list) const {
2192         assert(_CreateStreamKHR !is null, "EGL command eglCreateStreamKHR was not loaded");
2193         return _CreateStreamKHR (dpy, attrib_list);
2194     }
2195     /// ditto
2196     public EGLBoolean DestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream) const {
2197         assert(_DestroyStreamKHR !is null, "EGL command eglDestroyStreamKHR was not loaded");
2198         return _DestroyStreamKHR (dpy, stream);
2199     }
2200     /// ditto
2201     public EGLBoolean StreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value) const {
2202         assert(_StreamAttribKHR !is null, "EGL command eglStreamAttribKHR was not loaded");
2203         return _StreamAttribKHR (dpy, stream, attribute, value);
2204     }
2205     /// ditto
2206     public EGLBoolean QueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint* value) const {
2207         assert(_QueryStreamKHR !is null, "EGL command eglQueryStreamKHR was not loaded");
2208         return _QueryStreamKHR (dpy, stream, attribute, value);
2209     }
2210     /// ditto
2211     public EGLBoolean QueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR* value) const {
2212         assert(_QueryStreamu64KHR !is null, "EGL command eglQueryStreamu64KHR was not loaded");
2213         return _QueryStreamu64KHR (dpy, stream, attribute, value);
2214     }
2215 
2216     /// Commands for EGL_KHR_stream_attrib
2217     public EGLStreamKHR CreateStreamAttribKHR (EGLDisplay dpy, const(EGLAttrib)* attrib_list) const {
2218         assert(_CreateStreamAttribKHR !is null, "EGL command eglCreateStreamAttribKHR was not loaded");
2219         return _CreateStreamAttribKHR (dpy, attrib_list);
2220     }
2221     /// ditto
2222     public EGLBoolean SetStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value) const {
2223         assert(_SetStreamAttribKHR !is null, "EGL command eglSetStreamAttribKHR was not loaded");
2224         return _SetStreamAttribKHR (dpy, stream, attribute, value);
2225     }
2226     /// ditto
2227     public EGLBoolean QueryStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib* value) const {
2228         assert(_QueryStreamAttribKHR !is null, "EGL command eglQueryStreamAttribKHR was not loaded");
2229         return _QueryStreamAttribKHR (dpy, stream, attribute, value);
2230     }
2231     /// ditto
2232     public EGLBoolean StreamConsumerAcquireAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const(EGLAttrib)* attrib_list) const {
2233         assert(_StreamConsumerAcquireAttribKHR !is null, "EGL command eglStreamConsumerAcquireAttribKHR was not loaded");
2234         return _StreamConsumerAcquireAttribKHR (dpy, stream, attrib_list);
2235     }
2236     /// ditto
2237     public EGLBoolean StreamConsumerReleaseAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const(EGLAttrib)* attrib_list) const {
2238         assert(_StreamConsumerReleaseAttribKHR !is null, "EGL command eglStreamConsumerReleaseAttribKHR was not loaded");
2239         return _StreamConsumerReleaseAttribKHR (dpy, stream, attrib_list);
2240     }
2241 
2242     /// Commands for EGL_KHR_stream_consumer_gltexture
2243     public EGLBoolean StreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream) const {
2244         assert(_StreamConsumerGLTextureExternalKHR !is null, "EGL command eglStreamConsumerGLTextureExternalKHR was not loaded");
2245         return _StreamConsumerGLTextureExternalKHR (dpy, stream);
2246     }
2247     /// ditto
2248     public EGLBoolean StreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream) const {
2249         assert(_StreamConsumerAcquireKHR !is null, "EGL command eglStreamConsumerAcquireKHR was not loaded");
2250         return _StreamConsumerAcquireKHR (dpy, stream);
2251     }
2252     /// ditto
2253     public EGLBoolean StreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream) const {
2254         assert(_StreamConsumerReleaseKHR !is null, "EGL command eglStreamConsumerReleaseKHR was not loaded");
2255         return _StreamConsumerReleaseKHR (dpy, stream);
2256     }
2257 
2258     /// Commands for EGL_KHR_stream_cross_process_fd
2259     public EGLNativeFileDescriptorKHR GetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream) const {
2260         assert(_GetStreamFileDescriptorKHR !is null, "EGL command eglGetStreamFileDescriptorKHR was not loaded");
2261         return _GetStreamFileDescriptorKHR (dpy, stream);
2262     }
2263     /// ditto
2264     public EGLStreamKHR CreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor) const {
2265         assert(_CreateStreamFromFileDescriptorKHR !is null, "EGL command eglCreateStreamFromFileDescriptorKHR was not loaded");
2266         return _CreateStreamFromFileDescriptorKHR (dpy, file_descriptor);
2267     }
2268 
2269     /// Commands for EGL_KHR_stream_fifo
2270     public EGLBoolean QueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR* value) const {
2271         assert(_QueryStreamTimeKHR !is null, "EGL command eglQueryStreamTimeKHR was not loaded");
2272         return _QueryStreamTimeKHR (dpy, stream, attribute, value);
2273     }
2274 
2275     /// Commands for EGL_KHR_stream_producer_eglsurface
2276     public EGLSurface CreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const(EGLint)* attrib_list) const {
2277         assert(_CreateStreamProducerSurfaceKHR !is null, "EGL command eglCreateStreamProducerSurfaceKHR was not loaded");
2278         return _CreateStreamProducerSurfaceKHR (dpy, config, stream, attrib_list);
2279     }
2280 
2281     /// Commands for EGL_KHR_swap_buffers_with_damage
2282     public EGLBoolean SwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, EGLint* rects, EGLint n_rects) const {
2283         assert(_SwapBuffersWithDamageKHR !is null, "EGL command eglSwapBuffersWithDamageKHR was not loaded");
2284         return _SwapBuffersWithDamageKHR (dpy, surface, rects, n_rects);
2285     }
2286 
2287     /// Commands for EGL_KHR_wait_sync
2288     public EGLint WaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags) const {
2289         assert(_WaitSyncKHR !is null, "EGL command eglWaitSyncKHR was not loaded");
2290         return _WaitSyncKHR (dpy, sync, flags);
2291     }
2292 
2293     /// Commands for EGL_ANDROID_blob_cache
2294     public void SetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get) const {
2295         assert(_SetBlobCacheFuncsANDROID !is null, "EGL command eglSetBlobCacheFuncsANDROID was not loaded");
2296         return _SetBlobCacheFuncsANDROID (dpy, set, get);
2297     }
2298 
2299     /// Commands for EGL_ANDROID_create_native_client_buffer
2300     public EGLClientBuffer CreateNativeClientBufferANDROID (const(EGLint)* attrib_list) const {
2301         assert(_CreateNativeClientBufferANDROID !is null, "EGL command eglCreateNativeClientBufferANDROID was not loaded");
2302         return _CreateNativeClientBufferANDROID (attrib_list);
2303     }
2304 
2305     /// Commands for EGL_ANDROID_get_frame_timestamps
2306     public EGLBoolean GetCompositorTimingSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint name) const {
2307         assert(_GetCompositorTimingSupportedANDROID !is null, "EGL command eglGetCompositorTimingSupportedANDROID was not loaded");
2308         return _GetCompositorTimingSupportedANDROID (dpy, surface, name);
2309     }
2310     /// ditto
2311     public EGLBoolean GetCompositorTimingANDROID (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps, const(EGLint)* names, EGLnsecsANDROID* values) const {
2312         assert(_GetCompositorTimingANDROID !is null, "EGL command eglGetCompositorTimingANDROID was not loaded");
2313         return _GetCompositorTimingANDROID (dpy, surface, numTimestamps, names, values);
2314     }
2315     /// ditto
2316     public EGLBoolean GetNextFrameIdANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR* frameId) const {
2317         assert(_GetNextFrameIdANDROID !is null, "EGL command eglGetNextFrameIdANDROID was not loaded");
2318         return _GetNextFrameIdANDROID (dpy, surface, frameId);
2319     }
2320     /// ditto
2321     public EGLBoolean GetFrameTimestampSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint timestamp) const {
2322         assert(_GetFrameTimestampSupportedANDROID !is null, "EGL command eglGetFrameTimestampSupportedANDROID was not loaded");
2323         return _GetFrameTimestampSupportedANDROID (dpy, surface, timestamp);
2324     }
2325     /// ditto
2326     public EGLBoolean GetFrameTimestampsANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps, const(EGLint)* timestamps, EGLnsecsANDROID* values) const {
2327         assert(_GetFrameTimestampsANDROID !is null, "EGL command eglGetFrameTimestampsANDROID was not loaded");
2328         return _GetFrameTimestampsANDROID (dpy, surface, frameId, numTimestamps, timestamps, values);
2329     }
2330 
2331     /// Commands for EGL_ANDROID_get_native_client_buffer
2332     public EGLClientBuffer GetNativeClientBufferANDROID (const(AHardwareBuffer)* buffer) const {
2333         assert(_GetNativeClientBufferANDROID !is null, "EGL command eglGetNativeClientBufferANDROID was not loaded");
2334         return _GetNativeClientBufferANDROID (buffer);
2335     }
2336 
2337     /// Commands for EGL_ANDROID_native_fence_sync
2338     public EGLint DupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync) const {
2339         assert(_DupNativeFenceFDANDROID !is null, "EGL command eglDupNativeFenceFDANDROID was not loaded");
2340         return _DupNativeFenceFDANDROID (dpy, sync);
2341     }
2342 
2343     /// Commands for EGL_ANDROID_presentation_time
2344     public EGLBoolean PresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time) const {
2345         assert(_PresentationTimeANDROID !is null, "EGL command eglPresentationTimeANDROID was not loaded");
2346         return _PresentationTimeANDROID (dpy, surface, time);
2347     }
2348 
2349     /// Commands for EGL_ANGLE_query_surface_pointer
2350     public EGLBoolean QuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void** value) const {
2351         assert(_QuerySurfacePointerANGLE !is null, "EGL command eglQuerySurfacePointerANGLE was not loaded");
2352         return _QuerySurfacePointerANGLE (dpy, surface, attribute, value);
2353     }
2354 
2355     /// Commands for EGL_EXT_compositor
2356     public EGLBoolean CompositorSetContextListEXT (const(EGLint)* external_ref_ids, EGLint num_entries) const {
2357         assert(_CompositorSetContextListEXT !is null, "EGL command eglCompositorSetContextListEXT was not loaded");
2358         return _CompositorSetContextListEXT (external_ref_ids, num_entries);
2359     }
2360     /// ditto
2361     public EGLBoolean CompositorSetContextAttributesEXT (EGLint external_ref_id, const(EGLint)* context_attributes, EGLint num_entries) const {
2362         assert(_CompositorSetContextAttributesEXT !is null, "EGL command eglCompositorSetContextAttributesEXT was not loaded");
2363         return _CompositorSetContextAttributesEXT (external_ref_id, context_attributes, num_entries);
2364     }
2365     /// ditto
2366     public EGLBoolean CompositorSetWindowListEXT (EGLint external_ref_id, const(EGLint)* external_win_ids, EGLint num_entries) const {
2367         assert(_CompositorSetWindowListEXT !is null, "EGL command eglCompositorSetWindowListEXT was not loaded");
2368         return _CompositorSetWindowListEXT (external_ref_id, external_win_ids, num_entries);
2369     }
2370     /// ditto
2371     public EGLBoolean CompositorSetWindowAttributesEXT (EGLint external_win_id, const(EGLint)* window_attributes, EGLint num_entries) const {
2372         assert(_CompositorSetWindowAttributesEXT !is null, "EGL command eglCompositorSetWindowAttributesEXT was not loaded");
2373         return _CompositorSetWindowAttributesEXT (external_win_id, window_attributes, num_entries);
2374     }
2375     /// ditto
2376     public EGLBoolean CompositorBindTexWindowEXT (EGLint external_win_id) const {
2377         assert(_CompositorBindTexWindowEXT !is null, "EGL command eglCompositorBindTexWindowEXT was not loaded");
2378         return _CompositorBindTexWindowEXT (external_win_id);
2379     }
2380     /// ditto
2381     public EGLBoolean CompositorSetSizeEXT (EGLint external_win_id, EGLint width, EGLint height) const {
2382         assert(_CompositorSetSizeEXT !is null, "EGL command eglCompositorSetSizeEXT was not loaded");
2383         return _CompositorSetSizeEXT (external_win_id, width, height);
2384     }
2385     /// ditto
2386     public EGLBoolean CompositorSwapPolicyEXT (EGLint external_win_id, EGLint policy) const {
2387         assert(_CompositorSwapPolicyEXT !is null, "EGL command eglCompositorSwapPolicyEXT was not loaded");
2388         return _CompositorSwapPolicyEXT (external_win_id, policy);
2389     }
2390 
2391     /// Commands for EGL_EXT_device_base
2392     public EGLBoolean QueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib* value) const {
2393         assert(_QueryDeviceAttribEXT !is null, "EGL command eglQueryDeviceAttribEXT was not loaded");
2394         return _QueryDeviceAttribEXT (device, attribute, value);
2395     }
2396     /// ditto
2397     public const(char)* QueryDeviceStringEXT (EGLDeviceEXT device, EGLint name) const {
2398         assert(_QueryDeviceStringEXT !is null, "EGL command eglQueryDeviceStringEXT was not loaded");
2399         return _QueryDeviceStringEXT (device, name);
2400     }
2401     /// ditto
2402     public EGLBoolean QueryDevicesEXT (EGLint max_devices, EGLDeviceEXT* devices, EGLint* num_devices) const {
2403         assert(_QueryDevicesEXT !is null, "EGL command eglQueryDevicesEXT was not loaded");
2404         return _QueryDevicesEXT (max_devices, devices, num_devices);
2405     }
2406     /// ditto
2407     public EGLBoolean QueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib* value) const {
2408         assert(_QueryDisplayAttribEXT !is null, "EGL command eglQueryDisplayAttribEXT was not loaded");
2409         return _QueryDisplayAttribEXT (dpy, attribute, value);
2410     }
2411 
2412     /// Commands for EGL_EXT_image_dma_buf_import_modifiers
2413     public EGLBoolean QueryDmaBufFormatsEXT (EGLDisplay dpy, EGLint max_formats, EGLint* formats, EGLint* num_formats) const {
2414         assert(_QueryDmaBufFormatsEXT !is null, "EGL command eglQueryDmaBufFormatsEXT was not loaded");
2415         return _QueryDmaBufFormatsEXT (dpy, max_formats, formats, num_formats);
2416     }
2417     /// ditto
2418     public EGLBoolean QueryDmaBufModifiersEXT (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR* modifiers, EGLBoolean* external_only, EGLint* num_modifiers) const {
2419         assert(_QueryDmaBufModifiersEXT !is null, "EGL command eglQueryDmaBufModifiersEXT was not loaded");
2420         return _QueryDmaBufModifiersEXT (dpy, format, max_modifiers, modifiers, external_only, num_modifiers);
2421     }
2422 
2423     /// Commands for EGL_EXT_output_base
2424     public EGLBoolean GetOutputLayersEXT (EGLDisplay dpy, const(EGLAttrib)* attrib_list, EGLOutputLayerEXT* layers, EGLint max_layers, EGLint* num_layers) const {
2425         assert(_GetOutputLayersEXT !is null, "EGL command eglGetOutputLayersEXT was not loaded");
2426         return _GetOutputLayersEXT (dpy, attrib_list, layers, max_layers, num_layers);
2427     }
2428     /// ditto
2429     public EGLBoolean GetOutputPortsEXT (EGLDisplay dpy, const(EGLAttrib)* attrib_list, EGLOutputPortEXT* ports, EGLint max_ports, EGLint* num_ports) const {
2430         assert(_GetOutputPortsEXT !is null, "EGL command eglGetOutputPortsEXT was not loaded");
2431         return _GetOutputPortsEXT (dpy, attrib_list, ports, max_ports, num_ports);
2432     }
2433     /// ditto
2434     public EGLBoolean OutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value) const {
2435         assert(_OutputLayerAttribEXT !is null, "EGL command eglOutputLayerAttribEXT was not loaded");
2436         return _OutputLayerAttribEXT (dpy, layer, attribute, value);
2437     }
2438     /// ditto
2439     public EGLBoolean QueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib* value) const {
2440         assert(_QueryOutputLayerAttribEXT !is null, "EGL command eglQueryOutputLayerAttribEXT was not loaded");
2441         return _QueryOutputLayerAttribEXT (dpy, layer, attribute, value);
2442     }
2443     /// ditto
2444     public const(char)* QueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name) const {
2445         assert(_QueryOutputLayerStringEXT !is null, "EGL command eglQueryOutputLayerStringEXT was not loaded");
2446         return _QueryOutputLayerStringEXT (dpy, layer, name);
2447     }
2448     /// ditto
2449     public EGLBoolean OutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value) const {
2450         assert(_OutputPortAttribEXT !is null, "EGL command eglOutputPortAttribEXT was not loaded");
2451         return _OutputPortAttribEXT (dpy, port, attribute, value);
2452     }
2453     /// ditto
2454     public EGLBoolean QueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib* value) const {
2455         assert(_QueryOutputPortAttribEXT !is null, "EGL command eglQueryOutputPortAttribEXT was not loaded");
2456         return _QueryOutputPortAttribEXT (dpy, port, attribute, value);
2457     }
2458     /// ditto
2459     public const(char)* QueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name) const {
2460         assert(_QueryOutputPortStringEXT !is null, "EGL command eglQueryOutputPortStringEXT was not loaded");
2461         return _QueryOutputPortStringEXT (dpy, port, name);
2462     }
2463 
2464     /// Commands for EGL_EXT_platform_base
2465     public EGLDisplay GetPlatformDisplayEXT (EGLenum platform, void* native_display, const(EGLint)* attrib_list) const {
2466         assert(_GetPlatformDisplayEXT !is null, "EGL command eglGetPlatformDisplayEXT was not loaded");
2467         return _GetPlatformDisplayEXT (platform, native_display, attrib_list);
2468     }
2469     /// ditto
2470     public EGLSurface CreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void* native_window, const(EGLint)* attrib_list) const {
2471         assert(_CreatePlatformWindowSurfaceEXT !is null, "EGL command eglCreatePlatformWindowSurfaceEXT was not loaded");
2472         return _CreatePlatformWindowSurfaceEXT (dpy, config, native_window, attrib_list);
2473     }
2474     /// ditto
2475     public EGLSurface CreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void* native_pixmap, const(EGLint)* attrib_list) const {
2476         assert(_CreatePlatformPixmapSurfaceEXT !is null, "EGL command eglCreatePlatformPixmapSurfaceEXT was not loaded");
2477         return _CreatePlatformPixmapSurfaceEXT (dpy, config, native_pixmap, attrib_list);
2478     }
2479 
2480     /// Commands for EGL_EXT_stream_consumer_egloutput
2481     public EGLBoolean StreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer) const {
2482         assert(_StreamConsumerOutputEXT !is null, "EGL command eglStreamConsumerOutputEXT was not loaded");
2483         return _StreamConsumerOutputEXT (dpy, stream, layer);
2484     }
2485 
2486     /// Commands for EGL_EXT_swap_buffers_with_damage
2487     public EGLBoolean SwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, EGLint* rects, EGLint n_rects) const {
2488         assert(_SwapBuffersWithDamageEXT !is null, "EGL command eglSwapBuffersWithDamageEXT was not loaded");
2489         return _SwapBuffersWithDamageEXT (dpy, surface, rects, n_rects);
2490     }
2491 
2492     /// Commands for EGL_HI_clientpixmap
2493     public EGLSurface CreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, EGLClientPixmapHI* pixmap) const {
2494         assert(_CreatePixmapSurfaceHI !is null, "EGL command eglCreatePixmapSurfaceHI was not loaded");
2495         return _CreatePixmapSurfaceHI (dpy, config, pixmap);
2496     }
2497 
2498     /// Commands for EGL_MESA_drm_image
2499     public EGLImageKHR CreateDRMImageMESA (EGLDisplay dpy, const(EGLint)* attrib_list) const {
2500         assert(_CreateDRMImageMESA !is null, "EGL command eglCreateDRMImageMESA was not loaded");
2501         return _CreateDRMImageMESA (dpy, attrib_list);
2502     }
2503     /// ditto
2504     public EGLBoolean ExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint* name, EGLint* handle, EGLint* stride) const {
2505         assert(_ExportDRMImageMESA !is null, "EGL command eglExportDRMImageMESA was not loaded");
2506         return _ExportDRMImageMESA (dpy, image, name, handle, stride);
2507     }
2508 
2509     /// Commands for EGL_MESA_image_dma_buf_export
2510     public EGLBoolean ExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int* fourcc, int* num_planes, EGLuint64KHR* modifiers) const {
2511         assert(_ExportDMABUFImageQueryMESA !is null, "EGL command eglExportDMABUFImageQueryMESA was not loaded");
2512         return _ExportDMABUFImageQueryMESA (dpy, image, fourcc, num_planes, modifiers);
2513     }
2514     /// ditto
2515     public EGLBoolean ExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int* fds, EGLint* strides, EGLint* offsets) const {
2516         assert(_ExportDMABUFImageMESA !is null, "EGL command eglExportDMABUFImageMESA was not loaded");
2517         return _ExportDMABUFImageMESA (dpy, image, fds, strides, offsets);
2518     }
2519 
2520     /// Commands for EGL_NOK_swap_region
2521     public EGLBoolean SwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const(EGLint)* rects) const {
2522         assert(_SwapBuffersRegionNOK !is null, "EGL command eglSwapBuffersRegionNOK was not loaded");
2523         return _SwapBuffersRegionNOK (dpy, surface, numRects, rects);
2524     }
2525 
2526     /// Commands for EGL_NOK_swap_region2
2527     public EGLBoolean SwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const(EGLint)* rects) const {
2528         assert(_SwapBuffersRegion2NOK !is null, "EGL command eglSwapBuffersRegion2NOK was not loaded");
2529         return _SwapBuffersRegion2NOK (dpy, surface, numRects, rects);
2530     }
2531 
2532     /// Commands for EGL_NV_native_query
2533     public EGLBoolean QueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType* display_id) const {
2534         assert(_QueryNativeDisplayNV !is null, "EGL command eglQueryNativeDisplayNV was not loaded");
2535         return _QueryNativeDisplayNV (dpy, display_id);
2536     }
2537     /// ditto
2538     public EGLBoolean QueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType* window) const {
2539         assert(_QueryNativeWindowNV !is null, "EGL command eglQueryNativeWindowNV was not loaded");
2540         return _QueryNativeWindowNV (dpy, surf, window);
2541     }
2542     /// ditto
2543     public EGLBoolean QueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType* pixmap) const {
2544         assert(_QueryNativePixmapNV !is null, "EGL command eglQueryNativePixmapNV was not loaded");
2545         return _QueryNativePixmapNV (dpy, surf, pixmap);
2546     }
2547 
2548     /// Commands for EGL_NV_post_sub_buffer
2549     public EGLBoolean PostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height) const {
2550         assert(_PostSubBufferNV !is null, "EGL command eglPostSubBufferNV was not loaded");
2551         return _PostSubBufferNV (dpy, surface, x, y, width, height);
2552     }
2553 
2554     /// Commands for EGL_NV_stream_consumer_gltexture_yuv
2555     public EGLBoolean StreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, const(EGLAttrib)* attrib_list) const {
2556         assert(_StreamConsumerGLTextureExternalAttribsNV !is null, "EGL command eglStreamConsumerGLTextureExternalAttribsNV was not loaded");
2557         return _StreamConsumerGLTextureExternalAttribsNV (dpy, stream, attrib_list);
2558     }
2559 
2560     /// Commands for EGL_NV_stream_metadata
2561     public EGLBoolean QueryDisplayAttribNV (EGLDisplay dpy, EGLint attribute, EGLAttrib* value) const {
2562         assert(_QueryDisplayAttribNV !is null, "EGL command eglQueryDisplayAttribNV was not loaded");
2563         return _QueryDisplayAttribNV (dpy, attribute, value);
2564     }
2565     /// ditto
2566     public EGLBoolean SetStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const(void)* data) const {
2567         assert(_SetStreamMetadataNV !is null, "EGL command eglSetStreamMetadataNV was not loaded");
2568         return _SetStreamMetadataNV (dpy, stream, n, offset, size, data);
2569     }
2570     /// ditto
2571     public EGLBoolean QueryStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void* data) const {
2572         assert(_QueryStreamMetadataNV !is null, "EGL command eglQueryStreamMetadataNV was not loaded");
2573         return _QueryStreamMetadataNV (dpy, stream, name, n, offset, size, data);
2574     }
2575 
2576     /// Commands for EGL_NV_stream_reset
2577     public EGLBoolean ResetStreamNV (EGLDisplay dpy, EGLStreamKHR stream) const {
2578         assert(_ResetStreamNV !is null, "EGL command eglResetStreamNV was not loaded");
2579         return _ResetStreamNV (dpy, stream);
2580     }
2581 
2582     /// Commands for EGL_NV_stream_sync
2583     public EGLSyncKHR CreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const(EGLint)* attrib_list) const {
2584         assert(_CreateStreamSyncNV !is null, "EGL command eglCreateStreamSyncNV was not loaded");
2585         return _CreateStreamSyncNV (dpy, stream, type, attrib_list);
2586     }
2587 
2588     /// Commands for EGL_NV_sync
2589     public EGLSyncNV CreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const(EGLint)* attrib_list) const {
2590         assert(_CreateFenceSyncNV !is null, "EGL command eglCreateFenceSyncNV was not loaded");
2591         return _CreateFenceSyncNV (dpy, condition, attrib_list);
2592     }
2593     /// ditto
2594     public EGLBoolean DestroySyncNV (EGLSyncNV sync) const {
2595         assert(_DestroySyncNV !is null, "EGL command eglDestroySyncNV was not loaded");
2596         return _DestroySyncNV (sync);
2597     }
2598     /// ditto
2599     public EGLBoolean FenceNV (EGLSyncNV sync) const {
2600         assert(_FenceNV !is null, "EGL command eglFenceNV was not loaded");
2601         return _FenceNV (sync);
2602     }
2603     /// ditto
2604     public EGLint ClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout) const {
2605         assert(_ClientWaitSyncNV !is null, "EGL command eglClientWaitSyncNV was not loaded");
2606         return _ClientWaitSyncNV (sync, flags, timeout);
2607     }
2608     /// ditto
2609     public EGLBoolean SignalSyncNV (EGLSyncNV sync, EGLenum mode) const {
2610         assert(_SignalSyncNV !is null, "EGL command eglSignalSyncNV was not loaded");
2611         return _SignalSyncNV (sync, mode);
2612     }
2613     /// ditto
2614     public EGLBoolean GetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint* value) const {
2615         assert(_GetSyncAttribNV !is null, "EGL command eglGetSyncAttribNV was not loaded");
2616         return _GetSyncAttribNV (sync, attribute, value);
2617     }
2618 
2619     /// Commands for EGL_NV_system_time
2620     public EGLuint64NV GetSystemTimeFrequencyNV () const {
2621         assert(_GetSystemTimeFrequencyNV !is null, "EGL command eglGetSystemTimeFrequencyNV was not loaded");
2622         return _GetSystemTimeFrequencyNV ();
2623     }
2624     /// ditto
2625     public EGLuint64NV GetSystemTimeNV () const {
2626         assert(_GetSystemTimeNV !is null, "EGL command eglGetSystemTimeNV was not loaded");
2627         return _GetSystemTimeNV ();
2628     }
2629 
2630     // EGL_VERSION_1_0
2631     private PFN_eglChooseConfig _ChooseConfig;
2632     private PFN_eglCopyBuffers _CopyBuffers;
2633     private PFN_eglCreateContext _CreateContext;
2634     private PFN_eglCreatePbufferSurface _CreatePbufferSurface;
2635     private PFN_eglCreatePixmapSurface _CreatePixmapSurface;
2636     private PFN_eglCreateWindowSurface _CreateWindowSurface;
2637     private PFN_eglDestroyContext _DestroyContext;
2638     private PFN_eglDestroySurface _DestroySurface;
2639     private PFN_eglGetConfigAttrib _GetConfigAttrib;
2640     private PFN_eglGetConfigs _GetConfigs;
2641     private PFN_eglGetCurrentDisplay _GetCurrentDisplay;
2642     private PFN_eglGetCurrentSurface _GetCurrentSurface;
2643     private PFN_eglGetDisplay _GetDisplay;
2644     private PFN_eglGetError _GetError;
2645     private PFN_eglGetProcAddress _GetProcAddress;
2646     private PFN_eglInitialize _Initialize;
2647     private PFN_eglMakeCurrent _MakeCurrent;
2648     private PFN_eglQueryContext _QueryContext;
2649     private PFN_eglQueryString _QueryString;
2650     private PFN_eglQuerySurface _QuerySurface;
2651     private PFN_eglSwapBuffers _SwapBuffers;
2652     private PFN_eglTerminate _Terminate;
2653     private PFN_eglWaitGL _WaitGL;
2654     private PFN_eglWaitNative _WaitNative;
2655 
2656     // EGL_VERSION_1_1
2657     private PFN_eglBindTexImage _BindTexImage;
2658     private PFN_eglReleaseTexImage _ReleaseTexImage;
2659     private PFN_eglSurfaceAttrib _SurfaceAttrib;
2660     private PFN_eglSwapInterval _SwapInterval;
2661 
2662     // EGL_VERSION_1_2
2663     private PFN_eglBindAPI _BindAPI;
2664     private PFN_eglQueryAPI _QueryAPI;
2665     private PFN_eglCreatePbufferFromClientBuffer _CreatePbufferFromClientBuffer;
2666     private PFN_eglReleaseThread _ReleaseThread;
2667     private PFN_eglWaitClient _WaitClient;
2668 
2669     // EGL_VERSION_1_4
2670     private PFN_eglGetCurrentContext _GetCurrentContext;
2671 
2672     // EGL_VERSION_1_5
2673     private PFN_eglCreateSync _CreateSync;
2674     private PFN_eglDestroySync _DestroySync;
2675     private PFN_eglClientWaitSync _ClientWaitSync;
2676     private PFN_eglGetSyncAttrib _GetSyncAttrib;
2677     private PFN_eglCreateImage _CreateImage;
2678     private PFN_eglDestroyImage _DestroyImage;
2679     private PFN_eglGetPlatformDisplay _GetPlatformDisplay;
2680     private PFN_eglCreatePlatformWindowSurface _CreatePlatformWindowSurface;
2681     private PFN_eglCreatePlatformPixmapSurface _CreatePlatformPixmapSurface;
2682     private PFN_eglWaitSync _WaitSync;
2683 
2684     // EGL_KHR_debug,
2685     private PFN_eglDebugMessageControlKHR _DebugMessageControlKHR;
2686     private PFN_eglQueryDebugKHR _QueryDebugKHR;
2687     private PFN_eglLabelObjectKHR _LabelObjectKHR;
2688 
2689     // EGL_KHR_display_reference,
2690     private PFN_eglQueryDisplayAttribKHR _QueryDisplayAttribKHR;
2691 
2692     // EGL_KHR_fence_sync,
2693     private PFN_eglCreateSyncKHR _CreateSyncKHR;
2694     private PFN_eglGetSyncAttribKHR _GetSyncAttribKHR;
2695 
2696     // EGL_KHR_image,
2697     private PFN_eglCreateImageKHR _CreateImageKHR;
2698 
2699     // EGL_KHR_lock_surface,
2700     private PFN_eglLockSurfaceKHR _LockSurfaceKHR;
2701     private PFN_eglUnlockSurfaceKHR _UnlockSurfaceKHR;
2702 
2703     // EGL_KHR_lock_surface3,
2704     private PFN_eglQuerySurface64KHR _QuerySurface64KHR;
2705 
2706     // EGL_KHR_partial_update,
2707     private PFN_eglSetDamageRegionKHR _SetDamageRegionKHR;
2708 
2709     // EGL_KHR_reusable_sync,
2710     private PFN_eglSignalSyncKHR _SignalSyncKHR;
2711 
2712     // EGL_KHR_stream,
2713     private PFN_eglCreateStreamKHR _CreateStreamKHR;
2714     private PFN_eglDestroyStreamKHR _DestroyStreamKHR;
2715     private PFN_eglStreamAttribKHR _StreamAttribKHR;
2716     private PFN_eglQueryStreamKHR _QueryStreamKHR;
2717     private PFN_eglQueryStreamu64KHR _QueryStreamu64KHR;
2718 
2719     // EGL_KHR_stream_attrib,
2720     private PFN_eglCreateStreamAttribKHR _CreateStreamAttribKHR;
2721     private PFN_eglSetStreamAttribKHR _SetStreamAttribKHR;
2722     private PFN_eglQueryStreamAttribKHR _QueryStreamAttribKHR;
2723     private PFN_eglStreamConsumerAcquireAttribKHR _StreamConsumerAcquireAttribKHR;
2724     private PFN_eglStreamConsumerReleaseAttribKHR _StreamConsumerReleaseAttribKHR;
2725 
2726     // EGL_KHR_stream_consumer_gltexture,
2727     private PFN_eglStreamConsumerGLTextureExternalKHR _StreamConsumerGLTextureExternalKHR;
2728     private PFN_eglStreamConsumerAcquireKHR _StreamConsumerAcquireKHR;
2729     private PFN_eglStreamConsumerReleaseKHR _StreamConsumerReleaseKHR;
2730 
2731     // EGL_KHR_stream_cross_process_fd,
2732     private PFN_eglGetStreamFileDescriptorKHR _GetStreamFileDescriptorKHR;
2733     private PFN_eglCreateStreamFromFileDescriptorKHR _CreateStreamFromFileDescriptorKHR;
2734 
2735     // EGL_KHR_stream_fifo,
2736     private PFN_eglQueryStreamTimeKHR _QueryStreamTimeKHR;
2737 
2738     // EGL_KHR_stream_producer_eglsurface,
2739     private PFN_eglCreateStreamProducerSurfaceKHR _CreateStreamProducerSurfaceKHR;
2740 
2741     // EGL_KHR_swap_buffers_with_damage,
2742     private PFN_eglSwapBuffersWithDamageKHR _SwapBuffersWithDamageKHR;
2743 
2744     // EGL_KHR_wait_sync,
2745     private PFN_eglWaitSyncKHR _WaitSyncKHR;
2746 
2747     // EGL_ANDROID_blob_cache,
2748     private PFN_eglSetBlobCacheFuncsANDROID _SetBlobCacheFuncsANDROID;
2749 
2750     // EGL_ANDROID_create_native_client_buffer,
2751     private PFN_eglCreateNativeClientBufferANDROID _CreateNativeClientBufferANDROID;
2752 
2753     // EGL_ANDROID_get_frame_timestamps,
2754     private PFN_eglGetCompositorTimingSupportedANDROID _GetCompositorTimingSupportedANDROID;
2755     private PFN_eglGetCompositorTimingANDROID _GetCompositorTimingANDROID;
2756     private PFN_eglGetNextFrameIdANDROID _GetNextFrameIdANDROID;
2757     private PFN_eglGetFrameTimestampSupportedANDROID _GetFrameTimestampSupportedANDROID;
2758     private PFN_eglGetFrameTimestampsANDROID _GetFrameTimestampsANDROID;
2759 
2760     // EGL_ANDROID_get_native_client_buffer,
2761     private PFN_eglGetNativeClientBufferANDROID _GetNativeClientBufferANDROID;
2762 
2763     // EGL_ANDROID_native_fence_sync,
2764     private PFN_eglDupNativeFenceFDANDROID _DupNativeFenceFDANDROID;
2765 
2766     // EGL_ANDROID_presentation_time,
2767     private PFN_eglPresentationTimeANDROID _PresentationTimeANDROID;
2768 
2769     // EGL_ANGLE_query_surface_pointer,
2770     private PFN_eglQuerySurfacePointerANGLE _QuerySurfacePointerANGLE;
2771 
2772     // EGL_EXT_compositor,
2773     private PFN_eglCompositorSetContextListEXT _CompositorSetContextListEXT;
2774     private PFN_eglCompositorSetContextAttributesEXT _CompositorSetContextAttributesEXT;
2775     private PFN_eglCompositorSetWindowListEXT _CompositorSetWindowListEXT;
2776     private PFN_eglCompositorSetWindowAttributesEXT _CompositorSetWindowAttributesEXT;
2777     private PFN_eglCompositorBindTexWindowEXT _CompositorBindTexWindowEXT;
2778     private PFN_eglCompositorSetSizeEXT _CompositorSetSizeEXT;
2779     private PFN_eglCompositorSwapPolicyEXT _CompositorSwapPolicyEXT;
2780 
2781     // EGL_EXT_device_base,
2782     private PFN_eglQueryDeviceAttribEXT _QueryDeviceAttribEXT;
2783     private PFN_eglQueryDeviceStringEXT _QueryDeviceStringEXT;
2784     private PFN_eglQueryDevicesEXT _QueryDevicesEXT;
2785     private PFN_eglQueryDisplayAttribEXT _QueryDisplayAttribEXT;
2786 
2787     // EGL_EXT_image_dma_buf_import_modifiers,
2788     private PFN_eglQueryDmaBufFormatsEXT _QueryDmaBufFormatsEXT;
2789     private PFN_eglQueryDmaBufModifiersEXT _QueryDmaBufModifiersEXT;
2790 
2791     // EGL_EXT_output_base,
2792     private PFN_eglGetOutputLayersEXT _GetOutputLayersEXT;
2793     private PFN_eglGetOutputPortsEXT _GetOutputPortsEXT;
2794     private PFN_eglOutputLayerAttribEXT _OutputLayerAttribEXT;
2795     private PFN_eglQueryOutputLayerAttribEXT _QueryOutputLayerAttribEXT;
2796     private PFN_eglQueryOutputLayerStringEXT _QueryOutputLayerStringEXT;
2797     private PFN_eglOutputPortAttribEXT _OutputPortAttribEXT;
2798     private PFN_eglQueryOutputPortAttribEXT _QueryOutputPortAttribEXT;
2799     private PFN_eglQueryOutputPortStringEXT _QueryOutputPortStringEXT;
2800 
2801     // EGL_EXT_platform_base,
2802     private PFN_eglGetPlatformDisplayEXT _GetPlatformDisplayEXT;
2803     private PFN_eglCreatePlatformWindowSurfaceEXT _CreatePlatformWindowSurfaceEXT;
2804     private PFN_eglCreatePlatformPixmapSurfaceEXT _CreatePlatformPixmapSurfaceEXT;
2805 
2806     // EGL_EXT_stream_consumer_egloutput,
2807     private PFN_eglStreamConsumerOutputEXT _StreamConsumerOutputEXT;
2808 
2809     // EGL_EXT_swap_buffers_with_damage,
2810     private PFN_eglSwapBuffersWithDamageEXT _SwapBuffersWithDamageEXT;
2811 
2812     // EGL_HI_clientpixmap,
2813     private PFN_eglCreatePixmapSurfaceHI _CreatePixmapSurfaceHI;
2814 
2815     // EGL_MESA_drm_image,
2816     private PFN_eglCreateDRMImageMESA _CreateDRMImageMESA;
2817     private PFN_eglExportDRMImageMESA _ExportDRMImageMESA;
2818 
2819     // EGL_MESA_image_dma_buf_export,
2820     private PFN_eglExportDMABUFImageQueryMESA _ExportDMABUFImageQueryMESA;
2821     private PFN_eglExportDMABUFImageMESA _ExportDMABUFImageMESA;
2822 
2823     // EGL_NOK_swap_region,
2824     private PFN_eglSwapBuffersRegionNOK _SwapBuffersRegionNOK;
2825 
2826     // EGL_NOK_swap_region2,
2827     private PFN_eglSwapBuffersRegion2NOK _SwapBuffersRegion2NOK;
2828 
2829     // EGL_NV_native_query,
2830     private PFN_eglQueryNativeDisplayNV _QueryNativeDisplayNV;
2831     private PFN_eglQueryNativeWindowNV _QueryNativeWindowNV;
2832     private PFN_eglQueryNativePixmapNV _QueryNativePixmapNV;
2833 
2834     // EGL_NV_post_sub_buffer,
2835     private PFN_eglPostSubBufferNV _PostSubBufferNV;
2836 
2837     // EGL_NV_stream_consumer_gltexture_yuv,
2838     private PFN_eglStreamConsumerGLTextureExternalAttribsNV _StreamConsumerGLTextureExternalAttribsNV;
2839 
2840     // EGL_NV_stream_metadata,
2841     private PFN_eglQueryDisplayAttribNV _QueryDisplayAttribNV;
2842     private PFN_eglSetStreamMetadataNV _SetStreamMetadataNV;
2843     private PFN_eglQueryStreamMetadataNV _QueryStreamMetadataNV;
2844 
2845     // EGL_NV_stream_reset,
2846     private PFN_eglResetStreamNV _ResetStreamNV;
2847 
2848     // EGL_NV_stream_sync,
2849     private PFN_eglCreateStreamSyncNV _CreateStreamSyncNV;
2850 
2851     // EGL_NV_sync,
2852     private PFN_eglCreateFenceSyncNV _CreateFenceSyncNV;
2853     private PFN_eglDestroySyncNV _DestroySyncNV;
2854     private PFN_eglFenceNV _FenceNV;
2855     private PFN_eglClientWaitSyncNV _ClientWaitSyncNV;
2856     private PFN_eglSignalSyncNV _SignalSyncNV;
2857     private PFN_eglGetSyncAttribNV _GetSyncAttribNV;
2858 
2859     // EGL_NV_system_time,
2860     private PFN_eglGetSystemTimeFrequencyNV _GetSystemTimeFrequencyNV;
2861     private PFN_eglGetSystemTimeNV _GetSystemTimeNV;
2862 }