egl_generated_dispatch.c revision 691c5f5d
1/* GL dispatch code.
2 * This is code-generated from the GL API XML files from Khronos.
3 */
4
5#include <stdlib.h>
6#include <string.h>
7#include <stdio.h>
8
9#include "dispatch_common.h"
10#include "epoxy/egl.h"
11
12#if defined(__GNUC__) || defined(__lint__)
13#define EPOXY_NOINLINE __attribute__((noinline))
14#elif defined (_MSC_VER)
15#define EPOXY_NOINLINE __declspec(noinline)
16#endif
17struct dispatch_table {
18    PFNEGLBINDAPIPROC epoxy_eglBindAPI;
19    PFNEGLBINDTEXIMAGEPROC epoxy_eglBindTexImage;
20    PFNEGLCHOOSECONFIGPROC epoxy_eglChooseConfig;
21    PFNEGLCLIENTWAITSYNCPROC epoxy_eglClientWaitSync;
22    PFNEGLCLIENTWAITSYNCKHRPROC epoxy_eglClientWaitSyncKHR;
23    PFNEGLCLIENTWAITSYNCNVPROC epoxy_eglClientWaitSyncNV;
24    PFNEGLCOPYBUFFERSPROC epoxy_eglCopyBuffers;
25    PFNEGLCREATECONTEXTPROC epoxy_eglCreateContext;
26    PFNEGLCREATEDRMIMAGEMESAPROC epoxy_eglCreateDRMImageMESA;
27    PFNEGLCREATEFENCESYNCNVPROC epoxy_eglCreateFenceSyncNV;
28    PFNEGLCREATEIMAGEPROC epoxy_eglCreateImage;
29    PFNEGLCREATEIMAGEKHRPROC epoxy_eglCreateImageKHR;
30    PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC epoxy_eglCreatePbufferFromClientBuffer;
31    PFNEGLCREATEPBUFFERSURFACEPROC epoxy_eglCreatePbufferSurface;
32    PFNEGLCREATEPIXMAPSURFACEPROC epoxy_eglCreatePixmapSurface;
33    PFNEGLCREATEPIXMAPSURFACEHIPROC epoxy_eglCreatePixmapSurfaceHI;
34    PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC epoxy_eglCreatePlatformPixmapSurface;
35    PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC epoxy_eglCreatePlatformPixmapSurfaceEXT;
36    PFNEGLCREATEPLATFORMWINDOWSURFACEPROC epoxy_eglCreatePlatformWindowSurface;
37    PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC epoxy_eglCreatePlatformWindowSurfaceEXT;
38    PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC epoxy_eglCreateStreamFromFileDescriptorKHR;
39    PFNEGLCREATESTREAMKHRPROC epoxy_eglCreateStreamKHR;
40    PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC epoxy_eglCreateStreamProducerSurfaceKHR;
41    PFNEGLCREATESTREAMSYNCNVPROC epoxy_eglCreateStreamSyncNV;
42    PFNEGLCREATESYNCPROC epoxy_eglCreateSync;
43    PFNEGLCREATESYNC64KHRPROC epoxy_eglCreateSync64KHR;
44    PFNEGLCREATESYNCKHRPROC epoxy_eglCreateSyncKHR;
45    PFNEGLCREATEWINDOWSURFACEPROC epoxy_eglCreateWindowSurface;
46    PFNEGLDESTROYCONTEXTPROC epoxy_eglDestroyContext;
47    PFNEGLDESTROYIMAGEPROC epoxy_eglDestroyImage;
48    PFNEGLDESTROYIMAGEKHRPROC epoxy_eglDestroyImageKHR;
49    PFNEGLDESTROYSTREAMKHRPROC epoxy_eglDestroyStreamKHR;
50    PFNEGLDESTROYSURFACEPROC epoxy_eglDestroySurface;
51    PFNEGLDESTROYSYNCPROC epoxy_eglDestroySync;
52    PFNEGLDESTROYSYNCKHRPROC epoxy_eglDestroySyncKHR;
53    PFNEGLDESTROYSYNCNVPROC epoxy_eglDestroySyncNV;
54    PFNEGLDUPNATIVEFENCEFDANDROIDPROC epoxy_eglDupNativeFenceFDANDROID;
55    PFNEGLEXPORTDMABUFIMAGEMESAPROC epoxy_eglExportDMABUFImageMESA;
56    PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC epoxy_eglExportDMABUFImageQueryMESA;
57    PFNEGLEXPORTDRMIMAGEMESAPROC epoxy_eglExportDRMImageMESA;
58    PFNEGLFENCENVPROC epoxy_eglFenceNV;
59    PFNEGLGETCONFIGATTRIBPROC epoxy_eglGetConfigAttrib;
60    PFNEGLGETCONFIGSPROC epoxy_eglGetConfigs;
61    PFNEGLGETCURRENTCONTEXTPROC epoxy_eglGetCurrentContext;
62    PFNEGLGETCURRENTDISPLAYPROC epoxy_eglGetCurrentDisplay;
63    PFNEGLGETCURRENTSURFACEPROC epoxy_eglGetCurrentSurface;
64    PFNEGLGETDISPLAYPROC epoxy_eglGetDisplay;
65    PFNEGLGETERRORPROC epoxy_eglGetError;
66    PFNEGLGETOUTPUTLAYERSEXTPROC epoxy_eglGetOutputLayersEXT;
67    PFNEGLGETOUTPUTPORTSEXTPROC epoxy_eglGetOutputPortsEXT;
68    PFNEGLGETPLATFORMDISPLAYPROC epoxy_eglGetPlatformDisplay;
69    PFNEGLGETPLATFORMDISPLAYEXTPROC epoxy_eglGetPlatformDisplayEXT;
70    PFNEGLGETPROCADDRESSPROC epoxy_eglGetProcAddress;
71    PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC epoxy_eglGetStreamFileDescriptorKHR;
72    PFNEGLGETSYNCATTRIBPROC epoxy_eglGetSyncAttrib;
73    PFNEGLGETSYNCATTRIBKHRPROC epoxy_eglGetSyncAttribKHR;
74    PFNEGLGETSYNCATTRIBNVPROC epoxy_eglGetSyncAttribNV;
75    PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC epoxy_eglGetSystemTimeFrequencyNV;
76    PFNEGLGETSYSTEMTIMENVPROC epoxy_eglGetSystemTimeNV;
77    PFNEGLINITIALIZEPROC epoxy_eglInitialize;
78    PFNEGLLOCKSURFACEKHRPROC epoxy_eglLockSurfaceKHR;
79    PFNEGLMAKECURRENTPROC epoxy_eglMakeCurrent;
80    PFNEGLOUTPUTLAYERATTRIBEXTPROC epoxy_eglOutputLayerAttribEXT;
81    PFNEGLOUTPUTPORTATTRIBEXTPROC epoxy_eglOutputPortAttribEXT;
82    PFNEGLPOSTSUBBUFFERNVPROC epoxy_eglPostSubBufferNV;
83    PFNEGLQUERYAPIPROC epoxy_eglQueryAPI;
84    PFNEGLQUERYCONTEXTPROC epoxy_eglQueryContext;
85    PFNEGLQUERYDEVICEATTRIBEXTPROC epoxy_eglQueryDeviceAttribEXT;
86    PFNEGLQUERYDEVICESTRINGEXTPROC epoxy_eglQueryDeviceStringEXT;
87    PFNEGLQUERYDEVICESEXTPROC epoxy_eglQueryDevicesEXT;
88    PFNEGLQUERYDISPLAYATTRIBEXTPROC epoxy_eglQueryDisplayAttribEXT;
89    PFNEGLQUERYNATIVEDISPLAYNVPROC epoxy_eglQueryNativeDisplayNV;
90    PFNEGLQUERYNATIVEPIXMAPNVPROC epoxy_eglQueryNativePixmapNV;
91    PFNEGLQUERYNATIVEWINDOWNVPROC epoxy_eglQueryNativeWindowNV;
92    PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC epoxy_eglQueryOutputLayerAttribEXT;
93    PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC epoxy_eglQueryOutputLayerStringEXT;
94    PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC epoxy_eglQueryOutputPortAttribEXT;
95    PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC epoxy_eglQueryOutputPortStringEXT;
96    PFNEGLQUERYSTREAMKHRPROC epoxy_eglQueryStreamKHR;
97    PFNEGLQUERYSTREAMTIMEKHRPROC epoxy_eglQueryStreamTimeKHR;
98    PFNEGLQUERYSTREAMU64KHRPROC epoxy_eglQueryStreamu64KHR;
99    PFNEGLQUERYSTRINGPROC epoxy_eglQueryString;
100    PFNEGLQUERYSURFACEPROC epoxy_eglQuerySurface;
101    PFNEGLQUERYSURFACE64KHRPROC epoxy_eglQuerySurface64KHR;
102    PFNEGLQUERYSURFACEPOINTERANGLEPROC epoxy_eglQuerySurfacePointerANGLE;
103    PFNEGLRELEASETEXIMAGEPROC epoxy_eglReleaseTexImage;
104    PFNEGLRELEASETHREADPROC epoxy_eglReleaseThread;
105    PFNEGLSETBLOBCACHEFUNCSANDROIDPROC epoxy_eglSetBlobCacheFuncsANDROID;
106    PFNEGLSETDAMAGEREGIONKHRPROC epoxy_eglSetDamageRegionKHR;
107    PFNEGLSIGNALSYNCKHRPROC epoxy_eglSignalSyncKHR;
108    PFNEGLSIGNALSYNCNVPROC epoxy_eglSignalSyncNV;
109    PFNEGLSTREAMATTRIBKHRPROC epoxy_eglStreamAttribKHR;
110    PFNEGLSTREAMCONSUMERACQUIREKHRPROC epoxy_eglStreamConsumerAcquireKHR;
111    PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC epoxy_eglStreamConsumerGLTextureExternalKHR;
112    PFNEGLSTREAMCONSUMEROUTPUTEXTPROC epoxy_eglStreamConsumerOutputEXT;
113    PFNEGLSTREAMCONSUMERRELEASEKHRPROC epoxy_eglStreamConsumerReleaseKHR;
114    PFNEGLSURFACEATTRIBPROC epoxy_eglSurfaceAttrib;
115    PFNEGLSWAPBUFFERSPROC epoxy_eglSwapBuffers;
116    PFNEGLSWAPBUFFERSREGION2NOKPROC epoxy_eglSwapBuffersRegion2NOK;
117    PFNEGLSWAPBUFFERSREGIONNOKPROC epoxy_eglSwapBuffersRegionNOK;
118    PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC epoxy_eglSwapBuffersWithDamageEXT;
119    PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC epoxy_eglSwapBuffersWithDamageKHR;
120    PFNEGLSWAPINTERVALPROC epoxy_eglSwapInterval;
121    PFNEGLTERMINATEPROC epoxy_eglTerminate;
122    PFNEGLUNLOCKSURFACEKHRPROC epoxy_eglUnlockSurfaceKHR;
123    PFNEGLWAITCLIENTPROC epoxy_eglWaitClient;
124    PFNEGLWAITGLPROC epoxy_eglWaitGL;
125    PFNEGLWAITNATIVEPROC epoxy_eglWaitNative;
126    PFNEGLWAITSYNCPROC epoxy_eglWaitSync;
127    PFNEGLWAITSYNCKHRPROC epoxy_eglWaitSyncKHR;
128};
129
130#if USING_DISPATCH_TABLE
131static inline struct dispatch_table *
132get_dispatch_table(void);
133
134#endif
135enum egl_provider {
136    egl_provider_terminator = 0,
137    EGL_10,
138    EGL_11,
139    EGL_12,
140    EGL_14,
141    EGL_15,
142    EGL_extension_EGL_ANDROID_blob_cache,
143    EGL_extension_EGL_ANDROID_native_fence_sync,
144    EGL_extension_EGL_ANGLE_query_surface_pointer,
145    EGL_extension_EGL_EXT_device_base,
146    EGL_extension_EGL_EXT_device_enumeration,
147    EGL_extension_EGL_EXT_device_query,
148    EGL_extension_EGL_EXT_output_base,
149    EGL_extension_EGL_EXT_platform_base,
150    EGL_extension_EGL_EXT_stream_consumer_egloutput,
151    EGL_extension_EGL_EXT_swap_buffers_with_damage,
152    EGL_extension_EGL_HI_clientpixmap,
153    EGL_extension_EGL_KHR_cl_event2,
154    EGL_extension_EGL_KHR_fence_sync,
155    EGL_extension_EGL_KHR_image,
156    EGL_extension_EGL_KHR_image_base,
157    EGL_extension_EGL_KHR_lock_surface3,
158    EGL_extension_EGL_KHR_lock_surface,
159    EGL_extension_EGL_KHR_partial_update,
160    EGL_extension_EGL_KHR_reusable_sync,
161    EGL_extension_EGL_KHR_stream,
162    EGL_extension_EGL_KHR_stream_consumer_gltexture,
163    EGL_extension_EGL_KHR_stream_cross_process_fd,
164    EGL_extension_EGL_KHR_stream_fifo,
165    EGL_extension_EGL_KHR_stream_producer_eglsurface,
166    EGL_extension_EGL_KHR_swap_buffers_with_damage,
167    EGL_extension_EGL_KHR_wait_sync,
168    EGL_extension_EGL_MESA_drm_image,
169    EGL_extension_EGL_MESA_image_dma_buf_export,
170    EGL_extension_EGL_NOK_swap_region2,
171    EGL_extension_EGL_NOK_swap_region,
172    EGL_extension_EGL_NV_native_query,
173    EGL_extension_EGL_NV_post_sub_buffer,
174    EGL_extension_EGL_NV_stream_sync,
175    EGL_extension_EGL_NV_sync,
176    EGL_extension_EGL_NV_system_time,
177} PACKED;
178
179static const char *enum_string =
180    "EGL 10\0"
181    "EGL 11\0"
182    "EGL 12\0"
183    "EGL 14\0"
184    "EGL 15\0"
185    "EGL extension \"EGL_ANDROID_blob_cache\"\0"
186    "EGL extension \"EGL_ANDROID_native_fence_sync\"\0"
187    "EGL extension \"EGL_ANGLE_query_surface_pointer\"\0"
188    "EGL extension \"EGL_EXT_device_base\"\0"
189    "EGL extension \"EGL_EXT_device_enumeration\"\0"
190    "EGL extension \"EGL_EXT_device_query\"\0"
191    "EGL extension \"EGL_EXT_output_base\"\0"
192    "EGL extension \"EGL_EXT_platform_base\"\0"
193    "EGL extension \"EGL_EXT_stream_consumer_egloutput\"\0"
194    "EGL extension \"EGL_EXT_swap_buffers_with_damage\"\0"
195    "EGL extension \"EGL_HI_clientpixmap\"\0"
196    "EGL extension \"EGL_KHR_cl_event2\"\0"
197    "EGL extension \"EGL_KHR_fence_sync\"\0"
198    "EGL extension \"EGL_KHR_image\"\0"
199    "EGL extension \"EGL_KHR_image_base\"\0"
200    "EGL extension \"EGL_KHR_lock_surface3\"\0"
201    "EGL extension \"EGL_KHR_lock_surface\"\0"
202    "EGL extension \"EGL_KHR_partial_update\"\0"
203    "EGL extension \"EGL_KHR_reusable_sync\"\0"
204    "EGL extension \"EGL_KHR_stream\"\0"
205    "EGL extension \"EGL_KHR_stream_consumer_gltexture\"\0"
206    "EGL extension \"EGL_KHR_stream_cross_process_fd\"\0"
207    "EGL extension \"EGL_KHR_stream_fifo\"\0"
208    "EGL extension \"EGL_KHR_stream_producer_eglsurface\"\0"
209    "EGL extension \"EGL_KHR_swap_buffers_with_damage\"\0"
210    "EGL extension \"EGL_KHR_wait_sync\"\0"
211    "EGL extension \"EGL_MESA_drm_image\"\0"
212    "EGL extension \"EGL_MESA_image_dma_buf_export\"\0"
213    "EGL extension \"EGL_NOK_swap_region2\"\0"
214    "EGL extension \"EGL_NOK_swap_region\"\0"
215    "EGL extension \"EGL_NV_native_query\"\0"
216    "EGL extension \"EGL_NV_post_sub_buffer\"\0"
217    "EGL extension \"EGL_NV_stream_sync\"\0"
218    "EGL extension \"EGL_NV_sync\"\0"
219    "EGL extension \"EGL_NV_system_time\"\0"
220     ;
221
222static const uint16_t enum_string_offsets[] = {
223    [EGL_10] = 0,
224    [EGL_11] = 7,
225    [EGL_12] = 14,
226    [EGL_14] = 21,
227    [EGL_15] = 28,
228    [EGL_extension_EGL_ANDROID_blob_cache] = 35,
229    [EGL_extension_EGL_ANDROID_native_fence_sync] = 74,
230    [EGL_extension_EGL_ANGLE_query_surface_pointer] = 120,
231    [EGL_extension_EGL_EXT_device_base] = 168,
232    [EGL_extension_EGL_EXT_device_enumeration] = 204,
233    [EGL_extension_EGL_EXT_device_query] = 247,
234    [EGL_extension_EGL_EXT_output_base] = 284,
235    [EGL_extension_EGL_EXT_platform_base] = 320,
236    [EGL_extension_EGL_EXT_stream_consumer_egloutput] = 358,
237    [EGL_extension_EGL_EXT_swap_buffers_with_damage] = 408,
238    [EGL_extension_EGL_HI_clientpixmap] = 457,
239    [EGL_extension_EGL_KHR_cl_event2] = 493,
240    [EGL_extension_EGL_KHR_fence_sync] = 527,
241    [EGL_extension_EGL_KHR_image] = 562,
242    [EGL_extension_EGL_KHR_image_base] = 592,
243    [EGL_extension_EGL_KHR_lock_surface3] = 627,
244    [EGL_extension_EGL_KHR_lock_surface] = 665,
245    [EGL_extension_EGL_KHR_partial_update] = 702,
246    [EGL_extension_EGL_KHR_reusable_sync] = 741,
247    [EGL_extension_EGL_KHR_stream] = 779,
248    [EGL_extension_EGL_KHR_stream_consumer_gltexture] = 810,
249    [EGL_extension_EGL_KHR_stream_cross_process_fd] = 860,
250    [EGL_extension_EGL_KHR_stream_fifo] = 908,
251    [EGL_extension_EGL_KHR_stream_producer_eglsurface] = 944,
252    [EGL_extension_EGL_KHR_swap_buffers_with_damage] = 995,
253    [EGL_extension_EGL_KHR_wait_sync] = 1044,
254    [EGL_extension_EGL_MESA_drm_image] = 1078,
255    [EGL_extension_EGL_MESA_image_dma_buf_export] = 1113,
256    [EGL_extension_EGL_NOK_swap_region2] = 1159,
257    [EGL_extension_EGL_NOK_swap_region] = 1196,
258    [EGL_extension_EGL_NV_native_query] = 1232,
259    [EGL_extension_EGL_NV_post_sub_buffer] = 1268,
260    [EGL_extension_EGL_NV_stream_sync] = 1307,
261    [EGL_extension_EGL_NV_sync] = 1342,
262    [EGL_extension_EGL_NV_system_time] = 1370,
263};
264
265static const char entrypoint_strings[] =
266   "eglBindAPI\0"
267   "eglBindTexImage\0"
268   "eglChooseConfig\0"
269   "eglClientWaitSync\0"
270   "eglClientWaitSyncKHR\0"
271   "eglClientWaitSyncNV\0"
272   "eglCopyBuffers\0"
273   "eglCreateContext\0"
274   "eglCreateDRMImageMESA\0"
275   "eglCreateFenceSyncNV\0"
276   "eglCreateImage\0"
277   "eglCreateImageKHR\0"
278   "eglCreatePbufferFromClientBuffer\0"
279   "eglCreatePbufferSurface\0"
280   "eglCreatePixmapSurface\0"
281   "eglCreatePixmapSurfaceHI\0"
282   "eglCreatePlatformPixmapSurface\0"
283   "eglCreatePlatformPixmapSurfaceEXT\0"
284   "eglCreatePlatformWindowSurface\0"
285   "eglCreatePlatformWindowSurfaceEXT\0"
286   "eglCreateStreamFromFileDescriptorKHR\0"
287   "eglCreateStreamKHR\0"
288   "eglCreateStreamProducerSurfaceKHR\0"
289   "eglCreateStreamSyncNV\0"
290   "eglCreateSync\0"
291   "eglCreateSync64KHR\0"
292   "eglCreateSyncKHR\0"
293   "eglCreateWindowSurface\0"
294   "eglDestroyContext\0"
295   "eglDestroyImage\0"
296   "eglDestroyImageKHR\0"
297   "eglDestroyStreamKHR\0"
298   "eglDestroySurface\0"
299   "eglDestroySync\0"
300   "eglDestroySyncKHR\0"
301   "eglDestroySyncNV\0"
302   "eglDupNativeFenceFDANDROID\0"
303   "eglExportDMABUFImageMESA\0"
304   "eglExportDMABUFImageQueryMESA\0"
305   "eglExportDRMImageMESA\0"
306   "eglFenceNV\0"
307   "eglGetConfigAttrib\0"
308   "eglGetConfigs\0"
309   "eglGetCurrentContext\0"
310   "eglGetCurrentDisplay\0"
311   "eglGetCurrentSurface\0"
312   "eglGetDisplay\0"
313   "eglGetError\0"
314   "eglGetOutputLayersEXT\0"
315   "eglGetOutputPortsEXT\0"
316   "eglGetPlatformDisplay\0"
317   "eglGetPlatformDisplayEXT\0"
318   "eglGetProcAddress\0"
319   "eglGetStreamFileDescriptorKHR\0"
320   "eglGetSyncAttrib\0"
321   "eglGetSyncAttribKHR\0"
322   "eglGetSyncAttribNV\0"
323   "eglGetSystemTimeFrequencyNV\0"
324   "eglGetSystemTimeNV\0"
325   "eglInitialize\0"
326   "eglLockSurfaceKHR\0"
327   "eglMakeCurrent\0"
328   "eglOutputLayerAttribEXT\0"
329   "eglOutputPortAttribEXT\0"
330   "eglPostSubBufferNV\0"
331   "eglQueryAPI\0"
332   "eglQueryContext\0"
333   "eglQueryDeviceAttribEXT\0"
334   "eglQueryDeviceStringEXT\0"
335   "eglQueryDevicesEXT\0"
336   "eglQueryDisplayAttribEXT\0"
337   "eglQueryNativeDisplayNV\0"
338   "eglQueryNativePixmapNV\0"
339   "eglQueryNativeWindowNV\0"
340   "eglQueryOutputLayerAttribEXT\0"
341   "eglQueryOutputLayerStringEXT\0"
342   "eglQueryOutputPortAttribEXT\0"
343   "eglQueryOutputPortStringEXT\0"
344   "eglQueryStreamKHR\0"
345   "eglQueryStreamTimeKHR\0"
346   "eglQueryStreamu64KHR\0"
347   "eglQueryString\0"
348   "eglQuerySurface\0"
349   "eglQuerySurface64KHR\0"
350   "eglQuerySurfacePointerANGLE\0"
351   "eglReleaseTexImage\0"
352   "eglReleaseThread\0"
353   "eglSetBlobCacheFuncsANDROID\0"
354   "eglSetDamageRegionKHR\0"
355   "eglSignalSyncKHR\0"
356   "eglSignalSyncNV\0"
357   "eglStreamAttribKHR\0"
358   "eglStreamConsumerAcquireKHR\0"
359   "eglStreamConsumerGLTextureExternalKHR\0"
360   "eglStreamConsumerOutputEXT\0"
361   "eglStreamConsumerReleaseKHR\0"
362   "eglSurfaceAttrib\0"
363   "eglSwapBuffers\0"
364   "eglSwapBuffersRegion2NOK\0"
365   "eglSwapBuffersRegionNOK\0"
366   "eglSwapBuffersWithDamageEXT\0"
367   "eglSwapBuffersWithDamageKHR\0"
368   "eglSwapInterval\0"
369   "eglTerminate\0"
370   "eglUnlockSurfaceKHR\0"
371   "eglWaitClient\0"
372   "eglWaitGL\0"
373   "eglWaitNative\0"
374   "eglWaitSync\0"
375   "eglWaitSyncKHR\0"
376    ;
377
378static void *egl_provider_resolver(const char *name,
379                                   const enum egl_provider *providers,
380                                   const uint16_t *entrypoints)
381{
382    int i;
383    for (i = 0; providers[i] != egl_provider_terminator; i++) {
384        switch (providers[i]) {
385        case EGL_10:
386            if (true)
387                return epoxy_egl_dlsym(entrypoint_strings + entrypoints[i]);
388            break;
389        case EGL_11:
390            if (epoxy_conservative_egl_version() >= 11)
391                return epoxy_egl_dlsym(entrypoint_strings + entrypoints[i]);
392            break;
393        case EGL_12:
394            if (epoxy_conservative_egl_version() >= 12)
395                return epoxy_egl_dlsym(entrypoint_strings + entrypoints[i]);
396            break;
397        case EGL_14:
398            if (epoxy_conservative_egl_version() >= 14)
399                return epoxy_egl_dlsym(entrypoint_strings + entrypoints[i]);
400            break;
401        case EGL_15:
402            if (epoxy_conservative_egl_version() >= 15)
403                return epoxy_egl_dlsym(entrypoint_strings + entrypoints[i]);
404            break;
405        case EGL_extension_EGL_ANDROID_blob_cache:
406            if (epoxy_conservative_has_egl_extension("EGL_ANDROID_blob_cache"))
407                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
408            break;
409        case EGL_extension_EGL_ANDROID_native_fence_sync:
410            if (epoxy_conservative_has_egl_extension("EGL_ANDROID_native_fence_sync"))
411                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
412            break;
413        case EGL_extension_EGL_ANGLE_query_surface_pointer:
414            if (epoxy_conservative_has_egl_extension("EGL_ANGLE_query_surface_pointer"))
415                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
416            break;
417        case EGL_extension_EGL_EXT_device_base:
418            if (epoxy_conservative_has_egl_extension("EGL_EXT_device_base"))
419                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
420            break;
421        case EGL_extension_EGL_EXT_device_enumeration:
422            if (epoxy_conservative_has_egl_extension("EGL_EXT_device_enumeration"))
423                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
424            break;
425        case EGL_extension_EGL_EXT_device_query:
426            if (epoxy_conservative_has_egl_extension("EGL_EXT_device_query"))
427                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
428            break;
429        case EGL_extension_EGL_EXT_output_base:
430            if (epoxy_conservative_has_egl_extension("EGL_EXT_output_base"))
431                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
432            break;
433        case EGL_extension_EGL_EXT_platform_base:
434            if (epoxy_conservative_has_egl_extension("EGL_EXT_platform_base"))
435                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
436            break;
437        case EGL_extension_EGL_EXT_stream_consumer_egloutput:
438            if (epoxy_conservative_has_egl_extension("EGL_EXT_stream_consumer_egloutput"))
439                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
440            break;
441        case EGL_extension_EGL_EXT_swap_buffers_with_damage:
442            if (epoxy_conservative_has_egl_extension("EGL_EXT_swap_buffers_with_damage"))
443                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
444            break;
445        case EGL_extension_EGL_HI_clientpixmap:
446            if (epoxy_conservative_has_egl_extension("EGL_HI_clientpixmap"))
447                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
448            break;
449        case EGL_extension_EGL_KHR_cl_event2:
450            if (epoxy_conservative_has_egl_extension("EGL_KHR_cl_event2"))
451                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
452            break;
453        case EGL_extension_EGL_KHR_fence_sync:
454            if (epoxy_conservative_has_egl_extension("EGL_KHR_fence_sync"))
455                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
456            break;
457        case EGL_extension_EGL_KHR_image:
458            if (epoxy_conservative_has_egl_extension("EGL_KHR_image"))
459                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
460            break;
461        case EGL_extension_EGL_KHR_image_base:
462            if (epoxy_conservative_has_egl_extension("EGL_KHR_image_base"))
463                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
464            break;
465        case EGL_extension_EGL_KHR_lock_surface3:
466            if (epoxy_conservative_has_egl_extension("EGL_KHR_lock_surface3"))
467                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
468            break;
469        case EGL_extension_EGL_KHR_lock_surface:
470            if (epoxy_conservative_has_egl_extension("EGL_KHR_lock_surface"))
471                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
472            break;
473        case EGL_extension_EGL_KHR_partial_update:
474            if (epoxy_conservative_has_egl_extension("EGL_KHR_partial_update"))
475                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
476            break;
477        case EGL_extension_EGL_KHR_reusable_sync:
478            if (epoxy_conservative_has_egl_extension("EGL_KHR_reusable_sync"))
479                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
480            break;
481        case EGL_extension_EGL_KHR_stream:
482            if (epoxy_conservative_has_egl_extension("EGL_KHR_stream"))
483                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
484            break;
485        case EGL_extension_EGL_KHR_stream_consumer_gltexture:
486            if (epoxy_conservative_has_egl_extension("EGL_KHR_stream_consumer_gltexture"))
487                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
488            break;
489        case EGL_extension_EGL_KHR_stream_cross_process_fd:
490            if (epoxy_conservative_has_egl_extension("EGL_KHR_stream_cross_process_fd"))
491                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
492            break;
493        case EGL_extension_EGL_KHR_stream_fifo:
494            if (epoxy_conservative_has_egl_extension("EGL_KHR_stream_fifo"))
495                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
496            break;
497        case EGL_extension_EGL_KHR_stream_producer_eglsurface:
498            if (epoxy_conservative_has_egl_extension("EGL_KHR_stream_producer_eglsurface"))
499                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
500            break;
501        case EGL_extension_EGL_KHR_swap_buffers_with_damage:
502            if (epoxy_conservative_has_egl_extension("EGL_KHR_swap_buffers_with_damage"))
503                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
504            break;
505        case EGL_extension_EGL_KHR_wait_sync:
506            if (epoxy_conservative_has_egl_extension("EGL_KHR_wait_sync"))
507                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
508            break;
509        case EGL_extension_EGL_MESA_drm_image:
510            if (epoxy_conservative_has_egl_extension("EGL_MESA_drm_image"))
511                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
512            break;
513        case EGL_extension_EGL_MESA_image_dma_buf_export:
514            if (epoxy_conservative_has_egl_extension("EGL_MESA_image_dma_buf_export"))
515                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
516            break;
517        case EGL_extension_EGL_NOK_swap_region2:
518            if (epoxy_conservative_has_egl_extension("EGL_NOK_swap_region2"))
519                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
520            break;
521        case EGL_extension_EGL_NOK_swap_region:
522            if (epoxy_conservative_has_egl_extension("EGL_NOK_swap_region"))
523                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
524            break;
525        case EGL_extension_EGL_NV_native_query:
526            if (epoxy_conservative_has_egl_extension("EGL_NV_native_query"))
527                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
528            break;
529        case EGL_extension_EGL_NV_post_sub_buffer:
530            if (epoxy_conservative_has_egl_extension("EGL_NV_post_sub_buffer"))
531                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
532            break;
533        case EGL_extension_EGL_NV_stream_sync:
534            if (epoxy_conservative_has_egl_extension("EGL_NV_stream_sync"))
535                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
536            break;
537        case EGL_extension_EGL_NV_sync:
538            if (epoxy_conservative_has_egl_extension("EGL_NV_sync"))
539                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
540            break;
541        case EGL_extension_EGL_NV_system_time:
542            if (epoxy_conservative_has_egl_extension("EGL_NV_system_time"))
543                return eglGetProcAddress(entrypoint_strings + entrypoints[i]);
544            break;
545        case egl_provider_terminator:
546            abort(); /* Not reached */
547        }
548    }
549
550    fprintf(stderr, "No provider of %s found.  Requires one of:\n", name);
551    for (i = 0; providers[i] != egl_provider_terminator; i++) {
552        fprintf(stderr, "    %s\n", enum_string + enum_string_offsets[providers[i]]);
553    }
554    if (providers[0] == egl_provider_terminator) {
555        fprintf(stderr, "    No known providers.  This is likely a bug "
556                        "in libepoxy code generation\n");
557    }
558    abort();
559}
560
561EPOXY_NOINLINE static void *
562egl_single_resolver(enum egl_provider provider, uint16_t entrypoint_offset);
563
564static void *
565egl_single_resolver(enum egl_provider provider, uint16_t entrypoint_offset)
566{
567    enum egl_provider providers[] = {
568        provider,
569        egl_provider_terminator
570    };
571    return egl_provider_resolver(entrypoint_strings + entrypoint_offset,
572                                providers, &entrypoint_offset);
573}
574
575static PFNEGLBINDAPIPROC
576epoxy_eglBindAPI_resolver(void)
577{
578    return egl_single_resolver(EGL_12, 0 /* eglBindAPI */);
579}
580
581static PFNEGLBINDTEXIMAGEPROC
582epoxy_eglBindTexImage_resolver(void)
583{
584    return egl_single_resolver(EGL_11, 11 /* eglBindTexImage */);
585}
586
587static PFNEGLCHOOSECONFIGPROC
588epoxy_eglChooseConfig_resolver(void)
589{
590    return egl_single_resolver(EGL_10, 27 /* eglChooseConfig */);
591}
592
593static PFNEGLCLIENTWAITSYNCPROC
594epoxy_eglClientWaitSync_resolver(void)
595{
596    static const enum egl_provider providers[] = {
597        EGL_15,
598        EGL_extension_EGL_KHR_fence_sync,
599        EGL_extension_EGL_KHR_reusable_sync,
600        egl_provider_terminator
601    };
602    static const uint16_t entrypoints[] = {
603        43 /* "eglClientWaitSync" */,
604        61 /* "eglClientWaitSyncKHR" */,
605        61 /* "eglClientWaitSyncKHR" */,
606    };
607    return egl_provider_resolver(entrypoint_strings + 43 /* "eglClientWaitSync" */,
608                                providers, entrypoints);
609}
610
611static PFNEGLCLIENTWAITSYNCKHRPROC
612epoxy_eglClientWaitSyncKHR_resolver(void)
613{
614    static const enum egl_provider providers[] = {
615        EGL_extension_EGL_KHR_fence_sync,
616        EGL_extension_EGL_KHR_reusable_sync,
617        EGL_15,
618        egl_provider_terminator
619    };
620    static const uint16_t entrypoints[] = {
621        61 /* "eglClientWaitSyncKHR" */,
622        61 /* "eglClientWaitSyncKHR" */,
623        43 /* "eglClientWaitSync" */,
624    };
625    return egl_provider_resolver(entrypoint_strings + 61 /* "eglClientWaitSyncKHR" */,
626                                providers, entrypoints);
627}
628
629static PFNEGLCLIENTWAITSYNCNVPROC
630epoxy_eglClientWaitSyncNV_resolver(void)
631{
632    return egl_single_resolver(EGL_extension_EGL_NV_sync, 82 /* eglClientWaitSyncNV */);
633}
634
635static PFNEGLCOPYBUFFERSPROC
636epoxy_eglCopyBuffers_resolver(void)
637{
638    return egl_single_resolver(EGL_10, 102 /* eglCopyBuffers */);
639}
640
641static PFNEGLCREATECONTEXTPROC
642epoxy_eglCreateContext_resolver(void)
643{
644    return egl_single_resolver(EGL_10, 117 /* eglCreateContext */);
645}
646
647static PFNEGLCREATEDRMIMAGEMESAPROC
648epoxy_eglCreateDRMImageMESA_resolver(void)
649{
650    return egl_single_resolver(EGL_extension_EGL_MESA_drm_image, 134 /* eglCreateDRMImageMESA */);
651}
652
653static PFNEGLCREATEFENCESYNCNVPROC
654epoxy_eglCreateFenceSyncNV_resolver(void)
655{
656    return egl_single_resolver(EGL_extension_EGL_NV_sync, 156 /* eglCreateFenceSyncNV */);
657}
658
659static PFNEGLCREATEIMAGEPROC
660epoxy_eglCreateImage_resolver(void)
661{
662    return egl_single_resolver(EGL_15, 177 /* eglCreateImage */);
663}
664
665static PFNEGLCREATEIMAGEKHRPROC
666epoxy_eglCreateImageKHR_resolver(void)
667{
668    static const enum egl_provider providers[] = {
669        EGL_extension_EGL_KHR_image,
670        EGL_extension_EGL_KHR_image_base,
671        egl_provider_terminator
672    };
673    static const uint16_t entrypoints[] = {
674        192 /* "eglCreateImageKHR" */,
675        192 /* "eglCreateImageKHR" */,
676    };
677    return egl_provider_resolver(entrypoint_strings + 192 /* "eglCreateImageKHR" */,
678                                providers, entrypoints);
679}
680
681static PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC
682epoxy_eglCreatePbufferFromClientBuffer_resolver(void)
683{
684    return egl_single_resolver(EGL_12, 210 /* eglCreatePbufferFromClientBuffer */);
685}
686
687static PFNEGLCREATEPBUFFERSURFACEPROC
688epoxy_eglCreatePbufferSurface_resolver(void)
689{
690    return egl_single_resolver(EGL_10, 243 /* eglCreatePbufferSurface */);
691}
692
693static PFNEGLCREATEPIXMAPSURFACEPROC
694epoxy_eglCreatePixmapSurface_resolver(void)
695{
696    return egl_single_resolver(EGL_10, 267 /* eglCreatePixmapSurface */);
697}
698
699static PFNEGLCREATEPIXMAPSURFACEHIPROC
700epoxy_eglCreatePixmapSurfaceHI_resolver(void)
701{
702    return egl_single_resolver(EGL_extension_EGL_HI_clientpixmap, 290 /* eglCreatePixmapSurfaceHI */);
703}
704
705static PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC
706epoxy_eglCreatePlatformPixmapSurface_resolver(void)
707{
708    return egl_single_resolver(EGL_15, 315 /* eglCreatePlatformPixmapSurface */);
709}
710
711static PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC
712epoxy_eglCreatePlatformPixmapSurfaceEXT_resolver(void)
713{
714    return egl_single_resolver(EGL_extension_EGL_EXT_platform_base, 346 /* eglCreatePlatformPixmapSurfaceEXT */);
715}
716
717static PFNEGLCREATEPLATFORMWINDOWSURFACEPROC
718epoxy_eglCreatePlatformWindowSurface_resolver(void)
719{
720    return egl_single_resolver(EGL_15, 380 /* eglCreatePlatformWindowSurface */);
721}
722
723static PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC
724epoxy_eglCreatePlatformWindowSurfaceEXT_resolver(void)
725{
726    return egl_single_resolver(EGL_extension_EGL_EXT_platform_base, 411 /* eglCreatePlatformWindowSurfaceEXT */);
727}
728
729static PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC
730epoxy_eglCreateStreamFromFileDescriptorKHR_resolver(void)
731{
732    return egl_single_resolver(EGL_extension_EGL_KHR_stream_cross_process_fd, 445 /* eglCreateStreamFromFileDescriptorKHR */);
733}
734
735static PFNEGLCREATESTREAMKHRPROC
736epoxy_eglCreateStreamKHR_resolver(void)
737{
738    return egl_single_resolver(EGL_extension_EGL_KHR_stream, 482 /* eglCreateStreamKHR */);
739}
740
741static PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC
742epoxy_eglCreateStreamProducerSurfaceKHR_resolver(void)
743{
744    return egl_single_resolver(EGL_extension_EGL_KHR_stream_producer_eglsurface, 501 /* eglCreateStreamProducerSurfaceKHR */);
745}
746
747static PFNEGLCREATESTREAMSYNCNVPROC
748epoxy_eglCreateStreamSyncNV_resolver(void)
749{
750    return egl_single_resolver(EGL_extension_EGL_NV_stream_sync, 535 /* eglCreateStreamSyncNV */);
751}
752
753static PFNEGLCREATESYNCPROC
754epoxy_eglCreateSync_resolver(void)
755{
756    static const enum egl_provider providers[] = {
757        EGL_15,
758        EGL_extension_EGL_KHR_cl_event2,
759        egl_provider_terminator
760    };
761    static const uint16_t entrypoints[] = {
762        557 /* "eglCreateSync" */,
763        571 /* "eglCreateSync64KHR" */,
764    };
765    return egl_provider_resolver(entrypoint_strings + 557 /* "eglCreateSync" */,
766                                providers, entrypoints);
767}
768
769static PFNEGLCREATESYNC64KHRPROC
770epoxy_eglCreateSync64KHR_resolver(void)
771{
772    static const enum egl_provider providers[] = {
773        EGL_extension_EGL_KHR_cl_event2,
774        EGL_15,
775        egl_provider_terminator
776    };
777    static const uint16_t entrypoints[] = {
778        571 /* "eglCreateSync64KHR" */,
779        557 /* "eglCreateSync" */,
780    };
781    return egl_provider_resolver(entrypoint_strings + 571 /* "eglCreateSync64KHR" */,
782                                providers, entrypoints);
783}
784
785static PFNEGLCREATESYNCKHRPROC
786epoxy_eglCreateSyncKHR_resolver(void)
787{
788    static const enum egl_provider providers[] = {
789        EGL_extension_EGL_KHR_fence_sync,
790        EGL_extension_EGL_KHR_reusable_sync,
791        egl_provider_terminator
792    };
793    static const uint16_t entrypoints[] = {
794        590 /* "eglCreateSyncKHR" */,
795        590 /* "eglCreateSyncKHR" */,
796    };
797    return egl_provider_resolver(entrypoint_strings + 590 /* "eglCreateSyncKHR" */,
798                                providers, entrypoints);
799}
800
801static PFNEGLCREATEWINDOWSURFACEPROC
802epoxy_eglCreateWindowSurface_resolver(void)
803{
804    return egl_single_resolver(EGL_10, 607 /* eglCreateWindowSurface */);
805}
806
807static PFNEGLDESTROYCONTEXTPROC
808epoxy_eglDestroyContext_resolver(void)
809{
810    return egl_single_resolver(EGL_10, 630 /* eglDestroyContext */);
811}
812
813static PFNEGLDESTROYIMAGEPROC
814epoxy_eglDestroyImage_resolver(void)
815{
816    static const enum egl_provider providers[] = {
817        EGL_15,
818        EGL_extension_EGL_KHR_image,
819        EGL_extension_EGL_KHR_image_base,
820        egl_provider_terminator
821    };
822    static const uint16_t entrypoints[] = {
823        648 /* "eglDestroyImage" */,
824        664 /* "eglDestroyImageKHR" */,
825        664 /* "eglDestroyImageKHR" */,
826    };
827    return egl_provider_resolver(entrypoint_strings + 648 /* "eglDestroyImage" */,
828                                providers, entrypoints);
829}
830
831static PFNEGLDESTROYIMAGEKHRPROC
832epoxy_eglDestroyImageKHR_resolver(void)
833{
834    static const enum egl_provider providers[] = {
835        EGL_extension_EGL_KHR_image,
836        EGL_extension_EGL_KHR_image_base,
837        EGL_15,
838        egl_provider_terminator
839    };
840    static const uint16_t entrypoints[] = {
841        664 /* "eglDestroyImageKHR" */,
842        664 /* "eglDestroyImageKHR" */,
843        648 /* "eglDestroyImage" */,
844    };
845    return egl_provider_resolver(entrypoint_strings + 664 /* "eglDestroyImageKHR" */,
846                                providers, entrypoints);
847}
848
849static PFNEGLDESTROYSTREAMKHRPROC
850epoxy_eglDestroyStreamKHR_resolver(void)
851{
852    return egl_single_resolver(EGL_extension_EGL_KHR_stream, 683 /* eglDestroyStreamKHR */);
853}
854
855static PFNEGLDESTROYSURFACEPROC
856epoxy_eglDestroySurface_resolver(void)
857{
858    return egl_single_resolver(EGL_10, 703 /* eglDestroySurface */);
859}
860
861static PFNEGLDESTROYSYNCPROC
862epoxy_eglDestroySync_resolver(void)
863{
864    static const enum egl_provider providers[] = {
865        EGL_15,
866        EGL_extension_EGL_KHR_fence_sync,
867        EGL_extension_EGL_KHR_reusable_sync,
868        egl_provider_terminator
869    };
870    static const uint16_t entrypoints[] = {
871        721 /* "eglDestroySync" */,
872        736 /* "eglDestroySyncKHR" */,
873        736 /* "eglDestroySyncKHR" */,
874    };
875    return egl_provider_resolver(entrypoint_strings + 721 /* "eglDestroySync" */,
876                                providers, entrypoints);
877}
878
879static PFNEGLDESTROYSYNCKHRPROC
880epoxy_eglDestroySyncKHR_resolver(void)
881{
882    static const enum egl_provider providers[] = {
883        EGL_extension_EGL_KHR_fence_sync,
884        EGL_extension_EGL_KHR_reusable_sync,
885        EGL_15,
886        egl_provider_terminator
887    };
888    static const uint16_t entrypoints[] = {
889        736 /* "eglDestroySyncKHR" */,
890        736 /* "eglDestroySyncKHR" */,
891        721 /* "eglDestroySync" */,
892    };
893    return egl_provider_resolver(entrypoint_strings + 736 /* "eglDestroySyncKHR" */,
894                                providers, entrypoints);
895}
896
897static PFNEGLDESTROYSYNCNVPROC
898epoxy_eglDestroySyncNV_resolver(void)
899{
900    return egl_single_resolver(EGL_extension_EGL_NV_sync, 754 /* eglDestroySyncNV */);
901}
902
903static PFNEGLDUPNATIVEFENCEFDANDROIDPROC
904epoxy_eglDupNativeFenceFDANDROID_resolver(void)
905{
906    return egl_single_resolver(EGL_extension_EGL_ANDROID_native_fence_sync, 771 /* eglDupNativeFenceFDANDROID */);
907}
908
909static PFNEGLEXPORTDMABUFIMAGEMESAPROC
910epoxy_eglExportDMABUFImageMESA_resolver(void)
911{
912    return egl_single_resolver(EGL_extension_EGL_MESA_image_dma_buf_export, 798 /* eglExportDMABUFImageMESA */);
913}
914
915static PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC
916epoxy_eglExportDMABUFImageQueryMESA_resolver(void)
917{
918    return egl_single_resolver(EGL_extension_EGL_MESA_image_dma_buf_export, 823 /* eglExportDMABUFImageQueryMESA */);
919}
920
921static PFNEGLEXPORTDRMIMAGEMESAPROC
922epoxy_eglExportDRMImageMESA_resolver(void)
923{
924    return egl_single_resolver(EGL_extension_EGL_MESA_drm_image, 853 /* eglExportDRMImageMESA */);
925}
926
927static PFNEGLFENCENVPROC
928epoxy_eglFenceNV_resolver(void)
929{
930    return egl_single_resolver(EGL_extension_EGL_NV_sync, 875 /* eglFenceNV */);
931}
932
933static PFNEGLGETCONFIGATTRIBPROC
934epoxy_eglGetConfigAttrib_resolver(void)
935{
936    return egl_single_resolver(EGL_10, 886 /* eglGetConfigAttrib */);
937}
938
939static PFNEGLGETCONFIGSPROC
940epoxy_eglGetConfigs_resolver(void)
941{
942    return egl_single_resolver(EGL_10, 905 /* eglGetConfigs */);
943}
944
945static PFNEGLGETCURRENTCONTEXTPROC
946epoxy_eglGetCurrentContext_resolver(void)
947{
948    return egl_single_resolver(EGL_14, 919 /* eglGetCurrentContext */);
949}
950
951static PFNEGLGETCURRENTDISPLAYPROC
952epoxy_eglGetCurrentDisplay_resolver(void)
953{
954    return egl_single_resolver(EGL_10, 940 /* eglGetCurrentDisplay */);
955}
956
957static PFNEGLGETCURRENTSURFACEPROC
958epoxy_eglGetCurrentSurface_resolver(void)
959{
960    return egl_single_resolver(EGL_10, 961 /* eglGetCurrentSurface */);
961}
962
963static PFNEGLGETDISPLAYPROC
964epoxy_eglGetDisplay_resolver(void)
965{
966    return egl_single_resolver(EGL_10, 982 /* eglGetDisplay */);
967}
968
969static PFNEGLGETERRORPROC
970epoxy_eglGetError_resolver(void)
971{
972    return egl_single_resolver(EGL_10, 996 /* eglGetError */);
973}
974
975static PFNEGLGETOUTPUTLAYERSEXTPROC
976epoxy_eglGetOutputLayersEXT_resolver(void)
977{
978    return egl_single_resolver(EGL_extension_EGL_EXT_output_base, 1008 /* eglGetOutputLayersEXT */);
979}
980
981static PFNEGLGETOUTPUTPORTSEXTPROC
982epoxy_eglGetOutputPortsEXT_resolver(void)
983{
984    return egl_single_resolver(EGL_extension_EGL_EXT_output_base, 1030 /* eglGetOutputPortsEXT */);
985}
986
987static PFNEGLGETPLATFORMDISPLAYPROC
988epoxy_eglGetPlatformDisplay_resolver(void)
989{
990    return egl_single_resolver(EGL_15, 1051 /* eglGetPlatformDisplay */);
991}
992
993static PFNEGLGETPLATFORMDISPLAYEXTPROC
994epoxy_eglGetPlatformDisplayEXT_resolver(void)
995{
996    return egl_single_resolver(EGL_extension_EGL_EXT_platform_base, 1073 /* eglGetPlatformDisplayEXT */);
997}
998
999static PFNEGLGETPROCADDRESSPROC
1000epoxy_eglGetProcAddress_resolver(void)
1001{
1002    return egl_single_resolver(EGL_10, 1098 /* eglGetProcAddress */);
1003}
1004
1005static PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC
1006epoxy_eglGetStreamFileDescriptorKHR_resolver(void)
1007{
1008    return egl_single_resolver(EGL_extension_EGL_KHR_stream_cross_process_fd, 1116 /* eglGetStreamFileDescriptorKHR */);
1009}
1010
1011static PFNEGLGETSYNCATTRIBPROC
1012epoxy_eglGetSyncAttrib_resolver(void)
1013{
1014    return egl_single_resolver(EGL_15, 1146 /* eglGetSyncAttrib */);
1015}
1016
1017static PFNEGLGETSYNCATTRIBKHRPROC
1018epoxy_eglGetSyncAttribKHR_resolver(void)
1019{
1020    static const enum egl_provider providers[] = {
1021        EGL_extension_EGL_KHR_fence_sync,
1022        EGL_extension_EGL_KHR_reusable_sync,
1023        egl_provider_terminator
1024    };
1025    static const uint16_t entrypoints[] = {
1026        1163 /* "eglGetSyncAttribKHR" */,
1027        1163 /* "eglGetSyncAttribKHR" */,
1028    };
1029    return egl_provider_resolver(entrypoint_strings + 1163 /* "eglGetSyncAttribKHR" */,
1030                                providers, entrypoints);
1031}
1032
1033static PFNEGLGETSYNCATTRIBNVPROC
1034epoxy_eglGetSyncAttribNV_resolver(void)
1035{
1036    return egl_single_resolver(EGL_extension_EGL_NV_sync, 1183 /* eglGetSyncAttribNV */);
1037}
1038
1039static PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC
1040epoxy_eglGetSystemTimeFrequencyNV_resolver(void)
1041{
1042    return egl_single_resolver(EGL_extension_EGL_NV_system_time, 1202 /* eglGetSystemTimeFrequencyNV */);
1043}
1044
1045static PFNEGLGETSYSTEMTIMENVPROC
1046epoxy_eglGetSystemTimeNV_resolver(void)
1047{
1048    return egl_single_resolver(EGL_extension_EGL_NV_system_time, 1230 /* eglGetSystemTimeNV */);
1049}
1050
1051static PFNEGLINITIALIZEPROC
1052epoxy_eglInitialize_resolver(void)
1053{
1054    return egl_single_resolver(EGL_10, 1249 /* eglInitialize */);
1055}
1056
1057static PFNEGLLOCKSURFACEKHRPROC
1058epoxy_eglLockSurfaceKHR_resolver(void)
1059{
1060    static const enum egl_provider providers[] = {
1061        EGL_extension_EGL_KHR_lock_surface,
1062        EGL_extension_EGL_KHR_lock_surface3,
1063        egl_provider_terminator
1064    };
1065    static const uint16_t entrypoints[] = {
1066        1263 /* "eglLockSurfaceKHR" */,
1067        1263 /* "eglLockSurfaceKHR" */,
1068    };
1069    return egl_provider_resolver(entrypoint_strings + 1263 /* "eglLockSurfaceKHR" */,
1070                                providers, entrypoints);
1071}
1072
1073static PFNEGLMAKECURRENTPROC
1074epoxy_eglMakeCurrent_resolver(void)
1075{
1076    return egl_single_resolver(EGL_10, 1281 /* eglMakeCurrent */);
1077}
1078
1079static PFNEGLOUTPUTLAYERATTRIBEXTPROC
1080epoxy_eglOutputLayerAttribEXT_resolver(void)
1081{
1082    return egl_single_resolver(EGL_extension_EGL_EXT_output_base, 1296 /* eglOutputLayerAttribEXT */);
1083}
1084
1085static PFNEGLOUTPUTPORTATTRIBEXTPROC
1086epoxy_eglOutputPortAttribEXT_resolver(void)
1087{
1088    return egl_single_resolver(EGL_extension_EGL_EXT_output_base, 1320 /* eglOutputPortAttribEXT */);
1089}
1090
1091static PFNEGLPOSTSUBBUFFERNVPROC
1092epoxy_eglPostSubBufferNV_resolver(void)
1093{
1094    return egl_single_resolver(EGL_extension_EGL_NV_post_sub_buffer, 1343 /* eglPostSubBufferNV */);
1095}
1096
1097static PFNEGLQUERYAPIPROC
1098epoxy_eglQueryAPI_resolver(void)
1099{
1100    return egl_single_resolver(EGL_12, 1362 /* eglQueryAPI */);
1101}
1102
1103static PFNEGLQUERYCONTEXTPROC
1104epoxy_eglQueryContext_resolver(void)
1105{
1106    return egl_single_resolver(EGL_10, 1374 /* eglQueryContext */);
1107}
1108
1109static PFNEGLQUERYDEVICEATTRIBEXTPROC
1110epoxy_eglQueryDeviceAttribEXT_resolver(void)
1111{
1112    static const enum egl_provider providers[] = {
1113        EGL_extension_EGL_EXT_device_base,
1114        EGL_extension_EGL_EXT_device_query,
1115        egl_provider_terminator
1116    };
1117    static const uint16_t entrypoints[] = {
1118        1390 /* "eglQueryDeviceAttribEXT" */,
1119        1390 /* "eglQueryDeviceAttribEXT" */,
1120    };
1121    return egl_provider_resolver(entrypoint_strings + 1390 /* "eglQueryDeviceAttribEXT" */,
1122                                providers, entrypoints);
1123}
1124
1125static PFNEGLQUERYDEVICESTRINGEXTPROC
1126epoxy_eglQueryDeviceStringEXT_resolver(void)
1127{
1128    static const enum egl_provider providers[] = {
1129        EGL_extension_EGL_EXT_device_base,
1130        EGL_extension_EGL_EXT_device_query,
1131        egl_provider_terminator
1132    };
1133    static const uint16_t entrypoints[] = {
1134        1414 /* "eglQueryDeviceStringEXT" */,
1135        1414 /* "eglQueryDeviceStringEXT" */,
1136    };
1137    return egl_provider_resolver(entrypoint_strings + 1414 /* "eglQueryDeviceStringEXT" */,
1138                                providers, entrypoints);
1139}
1140
1141static PFNEGLQUERYDEVICESEXTPROC
1142epoxy_eglQueryDevicesEXT_resolver(void)
1143{
1144    static const enum egl_provider providers[] = {
1145        EGL_extension_EGL_EXT_device_base,
1146        EGL_extension_EGL_EXT_device_enumeration,
1147        egl_provider_terminator
1148    };
1149    static const uint16_t entrypoints[] = {
1150        1438 /* "eglQueryDevicesEXT" */,
1151        1438 /* "eglQueryDevicesEXT" */,
1152    };
1153    return egl_provider_resolver(entrypoint_strings + 1438 /* "eglQueryDevicesEXT" */,
1154                                providers, entrypoints);
1155}
1156
1157static PFNEGLQUERYDISPLAYATTRIBEXTPROC
1158epoxy_eglQueryDisplayAttribEXT_resolver(void)
1159{
1160    static const enum egl_provider providers[] = {
1161        EGL_extension_EGL_EXT_device_base,
1162        EGL_extension_EGL_EXT_device_query,
1163        egl_provider_terminator
1164    };
1165    static const uint16_t entrypoints[] = {
1166        1457 /* "eglQueryDisplayAttribEXT" */,
1167        1457 /* "eglQueryDisplayAttribEXT" */,
1168    };
1169    return egl_provider_resolver(entrypoint_strings + 1457 /* "eglQueryDisplayAttribEXT" */,
1170                                providers, entrypoints);
1171}
1172
1173static PFNEGLQUERYNATIVEDISPLAYNVPROC
1174epoxy_eglQueryNativeDisplayNV_resolver(void)
1175{
1176    return egl_single_resolver(EGL_extension_EGL_NV_native_query, 1482 /* eglQueryNativeDisplayNV */);
1177}
1178
1179static PFNEGLQUERYNATIVEPIXMAPNVPROC
1180epoxy_eglQueryNativePixmapNV_resolver(void)
1181{
1182    return egl_single_resolver(EGL_extension_EGL_NV_native_query, 1506 /* eglQueryNativePixmapNV */);
1183}
1184
1185static PFNEGLQUERYNATIVEWINDOWNVPROC
1186epoxy_eglQueryNativeWindowNV_resolver(void)
1187{
1188    return egl_single_resolver(EGL_extension_EGL_NV_native_query, 1529 /* eglQueryNativeWindowNV */);
1189}
1190
1191static PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC
1192epoxy_eglQueryOutputLayerAttribEXT_resolver(void)
1193{
1194    return egl_single_resolver(EGL_extension_EGL_EXT_output_base, 1552 /* eglQueryOutputLayerAttribEXT */);
1195}
1196
1197static PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC
1198epoxy_eglQueryOutputLayerStringEXT_resolver(void)
1199{
1200    return egl_single_resolver(EGL_extension_EGL_EXT_output_base, 1581 /* eglQueryOutputLayerStringEXT */);
1201}
1202
1203static PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC
1204epoxy_eglQueryOutputPortAttribEXT_resolver(void)
1205{
1206    return egl_single_resolver(EGL_extension_EGL_EXT_output_base, 1610 /* eglQueryOutputPortAttribEXT */);
1207}
1208
1209static PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC
1210epoxy_eglQueryOutputPortStringEXT_resolver(void)
1211{
1212    return egl_single_resolver(EGL_extension_EGL_EXT_output_base, 1638 /* eglQueryOutputPortStringEXT */);
1213}
1214
1215static PFNEGLQUERYSTREAMKHRPROC
1216epoxy_eglQueryStreamKHR_resolver(void)
1217{
1218    return egl_single_resolver(EGL_extension_EGL_KHR_stream, 1666 /* eglQueryStreamKHR */);
1219}
1220
1221static PFNEGLQUERYSTREAMTIMEKHRPROC
1222epoxy_eglQueryStreamTimeKHR_resolver(void)
1223{
1224    return egl_single_resolver(EGL_extension_EGL_KHR_stream_fifo, 1684 /* eglQueryStreamTimeKHR */);
1225}
1226
1227static PFNEGLQUERYSTREAMU64KHRPROC
1228epoxy_eglQueryStreamu64KHR_resolver(void)
1229{
1230    return egl_single_resolver(EGL_extension_EGL_KHR_stream, 1706 /* eglQueryStreamu64KHR */);
1231}
1232
1233static PFNEGLQUERYSTRINGPROC
1234epoxy_eglQueryString_resolver(void)
1235{
1236    return egl_single_resolver(EGL_10, 1727 /* eglQueryString */);
1237}
1238
1239static PFNEGLQUERYSURFACEPROC
1240epoxy_eglQuerySurface_resolver(void)
1241{
1242    return egl_single_resolver(EGL_10, 1742 /* eglQuerySurface */);
1243}
1244
1245static PFNEGLQUERYSURFACE64KHRPROC
1246epoxy_eglQuerySurface64KHR_resolver(void)
1247{
1248    return egl_single_resolver(EGL_extension_EGL_KHR_lock_surface3, 1758 /* eglQuerySurface64KHR */);
1249}
1250
1251static PFNEGLQUERYSURFACEPOINTERANGLEPROC
1252epoxy_eglQuerySurfacePointerANGLE_resolver(void)
1253{
1254    return egl_single_resolver(EGL_extension_EGL_ANGLE_query_surface_pointer, 1779 /* eglQuerySurfacePointerANGLE */);
1255}
1256
1257static PFNEGLRELEASETEXIMAGEPROC
1258epoxy_eglReleaseTexImage_resolver(void)
1259{
1260    return egl_single_resolver(EGL_11, 1807 /* eglReleaseTexImage */);
1261}
1262
1263static PFNEGLRELEASETHREADPROC
1264epoxy_eglReleaseThread_resolver(void)
1265{
1266    return egl_single_resolver(EGL_12, 1826 /* eglReleaseThread */);
1267}
1268
1269static PFNEGLSETBLOBCACHEFUNCSANDROIDPROC
1270epoxy_eglSetBlobCacheFuncsANDROID_resolver(void)
1271{
1272    return egl_single_resolver(EGL_extension_EGL_ANDROID_blob_cache, 1843 /* eglSetBlobCacheFuncsANDROID */);
1273}
1274
1275static PFNEGLSETDAMAGEREGIONKHRPROC
1276epoxy_eglSetDamageRegionKHR_resolver(void)
1277{
1278    return egl_single_resolver(EGL_extension_EGL_KHR_partial_update, 1871 /* eglSetDamageRegionKHR */);
1279}
1280
1281static PFNEGLSIGNALSYNCKHRPROC
1282epoxy_eglSignalSyncKHR_resolver(void)
1283{
1284    return egl_single_resolver(EGL_extension_EGL_KHR_reusable_sync, 1893 /* eglSignalSyncKHR */);
1285}
1286
1287static PFNEGLSIGNALSYNCNVPROC
1288epoxy_eglSignalSyncNV_resolver(void)
1289{
1290    return egl_single_resolver(EGL_extension_EGL_NV_sync, 1910 /* eglSignalSyncNV */);
1291}
1292
1293static PFNEGLSTREAMATTRIBKHRPROC
1294epoxy_eglStreamAttribKHR_resolver(void)
1295{
1296    return egl_single_resolver(EGL_extension_EGL_KHR_stream, 1926 /* eglStreamAttribKHR */);
1297}
1298
1299static PFNEGLSTREAMCONSUMERACQUIREKHRPROC
1300epoxy_eglStreamConsumerAcquireKHR_resolver(void)
1301{
1302    return egl_single_resolver(EGL_extension_EGL_KHR_stream_consumer_gltexture, 1945 /* eglStreamConsumerAcquireKHR */);
1303}
1304
1305static PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC
1306epoxy_eglStreamConsumerGLTextureExternalKHR_resolver(void)
1307{
1308    return egl_single_resolver(EGL_extension_EGL_KHR_stream_consumer_gltexture, 1973 /* eglStreamConsumerGLTextureExternalKHR */);
1309}
1310
1311static PFNEGLSTREAMCONSUMEROUTPUTEXTPROC
1312epoxy_eglStreamConsumerOutputEXT_resolver(void)
1313{
1314    return egl_single_resolver(EGL_extension_EGL_EXT_stream_consumer_egloutput, 2011 /* eglStreamConsumerOutputEXT */);
1315}
1316
1317static PFNEGLSTREAMCONSUMERRELEASEKHRPROC
1318epoxy_eglStreamConsumerReleaseKHR_resolver(void)
1319{
1320    return egl_single_resolver(EGL_extension_EGL_KHR_stream_consumer_gltexture, 2038 /* eglStreamConsumerReleaseKHR */);
1321}
1322
1323static PFNEGLSURFACEATTRIBPROC
1324epoxy_eglSurfaceAttrib_resolver(void)
1325{
1326    return egl_single_resolver(EGL_11, 2066 /* eglSurfaceAttrib */);
1327}
1328
1329static PFNEGLSWAPBUFFERSPROC
1330epoxy_eglSwapBuffers_resolver(void)
1331{
1332    return egl_single_resolver(EGL_10, 2083 /* eglSwapBuffers */);
1333}
1334
1335static PFNEGLSWAPBUFFERSREGION2NOKPROC
1336epoxy_eglSwapBuffersRegion2NOK_resolver(void)
1337{
1338    return egl_single_resolver(EGL_extension_EGL_NOK_swap_region2, 2098 /* eglSwapBuffersRegion2NOK */);
1339}
1340
1341static PFNEGLSWAPBUFFERSREGIONNOKPROC
1342epoxy_eglSwapBuffersRegionNOK_resolver(void)
1343{
1344    return egl_single_resolver(EGL_extension_EGL_NOK_swap_region, 2123 /* eglSwapBuffersRegionNOK */);
1345}
1346
1347static PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC
1348epoxy_eglSwapBuffersWithDamageEXT_resolver(void)
1349{
1350    return egl_single_resolver(EGL_extension_EGL_EXT_swap_buffers_with_damage, 2147 /* eglSwapBuffersWithDamageEXT */);
1351}
1352
1353static PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC
1354epoxy_eglSwapBuffersWithDamageKHR_resolver(void)
1355{
1356    return egl_single_resolver(EGL_extension_EGL_KHR_swap_buffers_with_damage, 2175 /* eglSwapBuffersWithDamageKHR */);
1357}
1358
1359static PFNEGLSWAPINTERVALPROC
1360epoxy_eglSwapInterval_resolver(void)
1361{
1362    return egl_single_resolver(EGL_11, 2203 /* eglSwapInterval */);
1363}
1364
1365static PFNEGLTERMINATEPROC
1366epoxy_eglTerminate_resolver(void)
1367{
1368    return egl_single_resolver(EGL_10, 2219 /* eglTerminate */);
1369}
1370
1371static PFNEGLUNLOCKSURFACEKHRPROC
1372epoxy_eglUnlockSurfaceKHR_resolver(void)
1373{
1374    static const enum egl_provider providers[] = {
1375        EGL_extension_EGL_KHR_lock_surface,
1376        EGL_extension_EGL_KHR_lock_surface3,
1377        egl_provider_terminator
1378    };
1379    static const uint16_t entrypoints[] = {
1380        2232 /* "eglUnlockSurfaceKHR" */,
1381        2232 /* "eglUnlockSurfaceKHR" */,
1382    };
1383    return egl_provider_resolver(entrypoint_strings + 2232 /* "eglUnlockSurfaceKHR" */,
1384                                providers, entrypoints);
1385}
1386
1387static PFNEGLWAITCLIENTPROC
1388epoxy_eglWaitClient_resolver(void)
1389{
1390    return egl_single_resolver(EGL_12, 2252 /* eglWaitClient */);
1391}
1392
1393static PFNEGLWAITGLPROC
1394epoxy_eglWaitGL_resolver(void)
1395{
1396    return egl_single_resolver(EGL_10, 2266 /* eglWaitGL */);
1397}
1398
1399static PFNEGLWAITNATIVEPROC
1400epoxy_eglWaitNative_resolver(void)
1401{
1402    return egl_single_resolver(EGL_10, 2276 /* eglWaitNative */);
1403}
1404
1405static PFNEGLWAITSYNCPROC
1406epoxy_eglWaitSync_resolver(void)
1407{
1408    return egl_single_resolver(EGL_15, 2290 /* eglWaitSync */);
1409}
1410
1411static PFNEGLWAITSYNCKHRPROC
1412epoxy_eglWaitSyncKHR_resolver(void)
1413{
1414    return egl_single_resolver(EGL_extension_EGL_KHR_wait_sync, 2302 /* eglWaitSyncKHR */);
1415}
1416
1417GEN_THUNKS_RET(EGLBoolean, eglBindAPI, (EGLenum api), (api))
1418GEN_THUNKS_RET(EGLBoolean, eglBindTexImage, (EGLDisplay dpy, EGLSurface surface, EGLint buffer), (dpy, surface, buffer))
1419GEN_THUNKS_RET(EGLBoolean, eglChooseConfig, (EGLDisplay dpy, const EGLint * attrib_list, EGLConfig * configs, EGLint config_size, EGLint * num_config), (dpy, attrib_list, configs, config_size, num_config))
1420GEN_THUNKS_RET(EGLint, eglClientWaitSync, (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout), (dpy, sync, flags, timeout))
1421GEN_THUNKS_RET(EGLint, eglClientWaitSyncKHR, (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout), (dpy, sync, flags, timeout))
1422GEN_THUNKS_RET(EGLint, eglClientWaitSyncNV, (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout), (sync, flags, timeout))
1423GEN_THUNKS_RET(EGLBoolean, eglCopyBuffers, (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target), (dpy, surface, target))
1424GEN_THUNKS_RET(EGLContext, eglCreateContext, (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint * attrib_list), (dpy, config, share_context, attrib_list))
1425GEN_THUNKS_RET(EGLImageKHR, eglCreateDRMImageMESA, (EGLDisplay dpy, const EGLint * attrib_list), (dpy, attrib_list))
1426GEN_THUNKS_RET(EGLSyncNV, eglCreateFenceSyncNV, (EGLDisplay dpy, EGLenum condition, const EGLint * attrib_list), (dpy, condition, attrib_list))
1427GEN_THUNKS_RET(EGLImage, eglCreateImage, (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib * attrib_list), (dpy, ctx, target, buffer, attrib_list))
1428GEN_THUNKS_RET(EGLImageKHR, eglCreateImageKHR, (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint * attrib_list), (dpy, ctx, target, buffer, attrib_list))
1429GEN_THUNKS_RET(EGLSurface, eglCreatePbufferFromClientBuffer, (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint * attrib_list), (dpy, buftype, buffer, config, attrib_list))
1430GEN_THUNKS_RET(EGLSurface, eglCreatePbufferSurface, (EGLDisplay dpy, EGLConfig config, const EGLint * attrib_list), (dpy, config, attrib_list))
1431GEN_THUNKS_RET(EGLSurface, eglCreatePixmapSurface, (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint * attrib_list), (dpy, config, pixmap, attrib_list))
1432GEN_THUNKS_RET(EGLSurface, eglCreatePixmapSurfaceHI, (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI * pixmap), (dpy, config, pixmap))
1433GEN_THUNKS_RET(EGLSurface, eglCreatePlatformPixmapSurface, (EGLDisplay dpy, EGLConfig config, void * native_pixmap, const EGLAttrib * attrib_list), (dpy, config, native_pixmap, attrib_list))
1434GEN_THUNKS_RET(EGLSurface, eglCreatePlatformPixmapSurfaceEXT, (EGLDisplay dpy, EGLConfig config, void * native_pixmap, const EGLint * attrib_list), (dpy, config, native_pixmap, attrib_list))
1435GEN_THUNKS_RET(EGLSurface, eglCreatePlatformWindowSurface, (EGLDisplay dpy, EGLConfig config, void * native_window, const EGLAttrib * attrib_list), (dpy, config, native_window, attrib_list))
1436GEN_THUNKS_RET(EGLSurface, eglCreatePlatformWindowSurfaceEXT, (EGLDisplay dpy, EGLConfig config, void * native_window, const EGLint * attrib_list), (dpy, config, native_window, attrib_list))
1437GEN_THUNKS_RET(EGLStreamKHR, eglCreateStreamFromFileDescriptorKHR, (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor), (dpy, file_descriptor))
1438GEN_THUNKS_RET(EGLStreamKHR, eglCreateStreamKHR, (EGLDisplay dpy, const EGLint * attrib_list), (dpy, attrib_list))
1439GEN_THUNKS_RET(EGLSurface, eglCreateStreamProducerSurfaceKHR, (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint * attrib_list), (dpy, config, stream, attrib_list))
1440GEN_THUNKS_RET(EGLSyncKHR, eglCreateStreamSyncNV, (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint * attrib_list), (dpy, stream, type, attrib_list))
1441GEN_THUNKS_RET(EGLSync, eglCreateSync, (EGLDisplay dpy, EGLenum type, const EGLAttrib * attrib_list), (dpy, type, attrib_list))
1442GEN_THUNKS_RET(EGLSyncKHR, eglCreateSync64KHR, (EGLDisplay dpy, EGLenum type, const EGLAttribKHR * attrib_list), (dpy, type, attrib_list))
1443GEN_THUNKS_RET(EGLSyncKHR, eglCreateSyncKHR, (EGLDisplay dpy, EGLenum type, const EGLint * attrib_list), (dpy, type, attrib_list))
1444GEN_THUNKS_RET(EGLSurface, eglCreateWindowSurface, (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint * attrib_list), (dpy, config, win, attrib_list))
1445GEN_THUNKS_RET(EGLBoolean, eglDestroyContext, (EGLDisplay dpy, EGLContext ctx), (dpy, ctx))
1446GEN_THUNKS_RET(EGLBoolean, eglDestroyImage, (EGLDisplay dpy, EGLImage image), (dpy, image))
1447GEN_THUNKS_RET(EGLBoolean, eglDestroyImageKHR, (EGLDisplay dpy, EGLImageKHR image), (dpy, image))
1448GEN_THUNKS_RET(EGLBoolean, eglDestroyStreamKHR, (EGLDisplay dpy, EGLStreamKHR stream), (dpy, stream))
1449GEN_THUNKS_RET(EGLBoolean, eglDestroySurface, (EGLDisplay dpy, EGLSurface surface), (dpy, surface))
1450GEN_THUNKS_RET(EGLBoolean, eglDestroySync, (EGLDisplay dpy, EGLSync sync), (dpy, sync))
1451GEN_THUNKS_RET(EGLBoolean, eglDestroySyncKHR, (EGLDisplay dpy, EGLSyncKHR sync), (dpy, sync))
1452GEN_THUNKS_RET(EGLBoolean, eglDestroySyncNV, (EGLSyncNV sync), (sync))
1453GEN_THUNKS_RET(EGLint, eglDupNativeFenceFDANDROID, (EGLDisplay dpy, EGLSyncKHR sync), (dpy, sync))
1454GEN_THUNKS_RET(EGLBoolean, eglExportDMABUFImageMESA, (EGLDisplay dpy, EGLImageKHR image, int * fds, EGLint * strides, EGLint * offsets), (dpy, image, fds, strides, offsets))
1455GEN_THUNKS_RET(EGLBoolean, eglExportDMABUFImageQueryMESA, (EGLDisplay dpy, EGLImageKHR image, int * fourcc, int * num_planes, EGLuint64KHR * modifiers), (dpy, image, fourcc, num_planes, modifiers))
1456GEN_THUNKS_RET(EGLBoolean, eglExportDRMImageMESA, (EGLDisplay dpy, EGLImageKHR image, EGLint * name, EGLint * handle, EGLint * stride), (dpy, image, name, handle, stride))
1457GEN_THUNKS_RET(EGLBoolean, eglFenceNV, (EGLSyncNV sync), (sync))
1458GEN_THUNKS_RET(EGLBoolean, eglGetConfigAttrib, (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint * value), (dpy, config, attribute, value))
1459GEN_THUNKS_RET(EGLBoolean, eglGetConfigs, (EGLDisplay dpy, EGLConfig * configs, EGLint config_size, EGLint * num_config), (dpy, configs, config_size, num_config))
1460GEN_THUNKS_RET(EGLContext, eglGetCurrentContext, (void), ())
1461GEN_THUNKS_RET(EGLDisplay, eglGetCurrentDisplay, (void), ())
1462GEN_THUNKS_RET(EGLSurface, eglGetCurrentSurface, (EGLint readdraw), (readdraw))
1463GEN_THUNKS_RET(EGLDisplay, eglGetDisplay, (EGLNativeDisplayType display_id), (display_id))
1464GEN_THUNKS_RET(EGLint, eglGetError, (void), ())
1465GEN_THUNKS_RET(EGLBoolean, eglGetOutputLayersEXT, (EGLDisplay dpy, const EGLAttrib * attrib_list, EGLOutputLayerEXT * layers, EGLint max_layers, EGLint * num_layers), (dpy, attrib_list, layers, max_layers, num_layers))
1466GEN_THUNKS_RET(EGLBoolean, eglGetOutputPortsEXT, (EGLDisplay dpy, const EGLAttrib * attrib_list, EGLOutputPortEXT * ports, EGLint max_ports, EGLint * num_ports), (dpy, attrib_list, ports, max_ports, num_ports))
1467GEN_THUNKS_RET(EGLDisplay, eglGetPlatformDisplay, (EGLenum platform, void * native_display, const EGLAttrib * attrib_list), (platform, native_display, attrib_list))
1468GEN_THUNKS_RET(EGLDisplay, eglGetPlatformDisplayEXT, (EGLenum platform, void * native_display, const EGLint * attrib_list), (platform, native_display, attrib_list))
1469GEN_THUNKS_RET(__eglMustCastToProperFunctionPointerType, eglGetProcAddress, (const char * procname), (procname))
1470GEN_THUNKS_RET(EGLNativeFileDescriptorKHR, eglGetStreamFileDescriptorKHR, (EGLDisplay dpy, EGLStreamKHR stream), (dpy, stream))
1471GEN_THUNKS_RET(EGLBoolean, eglGetSyncAttrib, (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib * value), (dpy, sync, attribute, value))
1472GEN_THUNKS_RET(EGLBoolean, eglGetSyncAttribKHR, (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint * value), (dpy, sync, attribute, value))
1473GEN_THUNKS_RET(EGLBoolean, eglGetSyncAttribNV, (EGLSyncNV sync, EGLint attribute, EGLint * value), (sync, attribute, value))
1474GEN_THUNKS_RET(EGLuint64NV, eglGetSystemTimeFrequencyNV, (void), ())
1475GEN_THUNKS_RET(EGLuint64NV, eglGetSystemTimeNV, (void), ())
1476GEN_THUNKS_RET(EGLBoolean, eglInitialize, (EGLDisplay dpy, EGLint * major, EGLint * minor), (dpy, major, minor))
1477GEN_THUNKS_RET(EGLBoolean, eglLockSurfaceKHR, (EGLDisplay dpy, EGLSurface surface, const EGLint * attrib_list), (dpy, surface, attrib_list))
1478GEN_THUNKS_RET(EGLBoolean, eglMakeCurrent, (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx), (dpy, draw, read, ctx))
1479GEN_THUNKS_RET(EGLBoolean, eglOutputLayerAttribEXT, (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value), (dpy, layer, attribute, value))
1480GEN_THUNKS_RET(EGLBoolean, eglOutputPortAttribEXT, (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value), (dpy, port, attribute, value))
1481GEN_THUNKS_RET(EGLBoolean, eglPostSubBufferNV, (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height), (dpy, surface, x, y, width, height))
1482GEN_THUNKS_RET(EGLenum, eglQueryAPI, (void), ())
1483GEN_THUNKS_RET(EGLBoolean, eglQueryContext, (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint * value), (dpy, ctx, attribute, value))
1484GEN_THUNKS_RET(EGLBoolean, eglQueryDeviceAttribEXT, (EGLDeviceEXT device, EGLint attribute, EGLAttrib * value), (device, attribute, value))
1485GEN_THUNKS_RET(const char *, eglQueryDeviceStringEXT, (EGLDeviceEXT device, EGLint name), (device, name))
1486GEN_THUNKS_RET(EGLBoolean, eglQueryDevicesEXT, (EGLint max_devices, EGLDeviceEXT * devices, EGLint * num_devices), (max_devices, devices, num_devices))
1487GEN_THUNKS_RET(EGLBoolean, eglQueryDisplayAttribEXT, (EGLDisplay dpy, EGLint attribute, EGLAttrib * value), (dpy, attribute, value))
1488GEN_THUNKS_RET(EGLBoolean, eglQueryNativeDisplayNV, (EGLDisplay dpy, EGLNativeDisplayType * display_id), (dpy, display_id))
1489GEN_THUNKS_RET(EGLBoolean, eglQueryNativePixmapNV, (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType * pixmap), (dpy, surf, pixmap))
1490GEN_THUNKS_RET(EGLBoolean, eglQueryNativeWindowNV, (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType * window), (dpy, surf, window))
1491GEN_THUNKS_RET(EGLBoolean, eglQueryOutputLayerAttribEXT, (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib * value), (dpy, layer, attribute, value))
1492GEN_THUNKS_RET(const char *, eglQueryOutputLayerStringEXT, (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name), (dpy, layer, name))
1493GEN_THUNKS_RET(EGLBoolean, eglQueryOutputPortAttribEXT, (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib * value), (dpy, port, attribute, value))
1494GEN_THUNKS_RET(const char *, eglQueryOutputPortStringEXT, (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name), (dpy, port, name))
1495GEN_THUNKS_RET(EGLBoolean, eglQueryStreamKHR, (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint * value), (dpy, stream, attribute, value))
1496GEN_THUNKS_RET(EGLBoolean, eglQueryStreamTimeKHR, (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR * value), (dpy, stream, attribute, value))
1497GEN_THUNKS_RET(EGLBoolean, eglQueryStreamu64KHR, (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR * value), (dpy, stream, attribute, value))
1498GEN_THUNKS_RET(const char *, eglQueryString, (EGLDisplay dpy, EGLint name), (dpy, name))
1499GEN_THUNKS_RET(EGLBoolean, eglQuerySurface, (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint * value), (dpy, surface, attribute, value))
1500GEN_THUNKS_RET(EGLBoolean, eglQuerySurface64KHR, (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR * value), (dpy, surface, attribute, value))
1501GEN_THUNKS_RET(EGLBoolean, eglQuerySurfacePointerANGLE, (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void ** value), (dpy, surface, attribute, value))
1502GEN_THUNKS_RET(EGLBoolean, eglReleaseTexImage, (EGLDisplay dpy, EGLSurface surface, EGLint buffer), (dpy, surface, buffer))
1503GEN_THUNKS_RET(EGLBoolean, eglReleaseThread, (void), ())
1504GEN_THUNKS(eglSetBlobCacheFuncsANDROID, (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get), (dpy, set, get))
1505GEN_THUNKS_RET(EGLBoolean, eglSetDamageRegionKHR, (EGLDisplay dpy, EGLSurface surface, EGLint * rects, EGLint n_rects), (dpy, surface, rects, n_rects))
1506GEN_THUNKS_RET(EGLBoolean, eglSignalSyncKHR, (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode), (dpy, sync, mode))
1507GEN_THUNKS_RET(EGLBoolean, eglSignalSyncNV, (EGLSyncNV sync, EGLenum mode), (sync, mode))
1508GEN_THUNKS_RET(EGLBoolean, eglStreamAttribKHR, (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value), (dpy, stream, attribute, value))
1509GEN_THUNKS_RET(EGLBoolean, eglStreamConsumerAcquireKHR, (EGLDisplay dpy, EGLStreamKHR stream), (dpy, stream))
1510GEN_THUNKS_RET(EGLBoolean, eglStreamConsumerGLTextureExternalKHR, (EGLDisplay dpy, EGLStreamKHR stream), (dpy, stream))
1511GEN_THUNKS_RET(EGLBoolean, eglStreamConsumerOutputEXT, (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer), (dpy, stream, layer))
1512GEN_THUNKS_RET(EGLBoolean, eglStreamConsumerReleaseKHR, (EGLDisplay dpy, EGLStreamKHR stream), (dpy, stream))
1513GEN_THUNKS_RET(EGLBoolean, eglSurfaceAttrib, (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value), (dpy, surface, attribute, value))
1514GEN_THUNKS_RET(EGLBoolean, eglSwapBuffers, (EGLDisplay dpy, EGLSurface surface), (dpy, surface))
1515GEN_THUNKS_RET(EGLBoolean, eglSwapBuffersRegion2NOK, (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint * rects), (dpy, surface, numRects, rects))
1516GEN_THUNKS_RET(EGLBoolean, eglSwapBuffersRegionNOK, (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint * rects), (dpy, surface, numRects, rects))
1517GEN_THUNKS_RET(EGLBoolean, eglSwapBuffersWithDamageEXT, (EGLDisplay dpy, EGLSurface surface, EGLint * rects, EGLint n_rects), (dpy, surface, rects, n_rects))
1518GEN_THUNKS_RET(EGLBoolean, eglSwapBuffersWithDamageKHR, (EGLDisplay dpy, EGLSurface surface, EGLint * rects, EGLint n_rects), (dpy, surface, rects, n_rects))
1519GEN_THUNKS_RET(EGLBoolean, eglSwapInterval, (EGLDisplay dpy, EGLint interval), (dpy, interval))
1520GEN_THUNKS_RET(EGLBoolean, eglTerminate, (EGLDisplay dpy), (dpy))
1521GEN_THUNKS_RET(EGLBoolean, eglUnlockSurfaceKHR, (EGLDisplay dpy, EGLSurface surface), (dpy, surface))
1522GEN_THUNKS_RET(EGLBoolean, eglWaitClient, (void), ())
1523GEN_THUNKS_RET(EGLBoolean, eglWaitGL, (void), ())
1524GEN_THUNKS_RET(EGLBoolean, eglWaitNative, (EGLint engine), (engine))
1525GEN_THUNKS_RET(EGLBoolean, eglWaitSync, (EGLDisplay dpy, EGLSync sync, EGLint flags), (dpy, sync, flags))
1526GEN_THUNKS_RET(EGLint, eglWaitSyncKHR, (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags), (dpy, sync, flags))
1527
1528#if USING_DISPATCH_TABLE
1529static struct dispatch_table resolver_table = {
1530    .eglBindAPI = epoxy_eglBindAPI_dispatch_table_rewrite_ptr,
1531    .eglBindTexImage = epoxy_eglBindTexImage_dispatch_table_rewrite_ptr,
1532    .eglChooseConfig = epoxy_eglChooseConfig_dispatch_table_rewrite_ptr,
1533    .eglClientWaitSync = epoxy_eglClientWaitSync_dispatch_table_rewrite_ptr,
1534    .eglClientWaitSyncKHR = epoxy_eglClientWaitSyncKHR_dispatch_table_rewrite_ptr,
1535    .eglClientWaitSyncNV = epoxy_eglClientWaitSyncNV_dispatch_table_rewrite_ptr,
1536    .eglCopyBuffers = epoxy_eglCopyBuffers_dispatch_table_rewrite_ptr,
1537    .eglCreateContext = epoxy_eglCreateContext_dispatch_table_rewrite_ptr,
1538    .eglCreateDRMImageMESA = epoxy_eglCreateDRMImageMESA_dispatch_table_rewrite_ptr,
1539    .eglCreateFenceSyncNV = epoxy_eglCreateFenceSyncNV_dispatch_table_rewrite_ptr,
1540    .eglCreateImage = epoxy_eglCreateImage_dispatch_table_rewrite_ptr,
1541    .eglCreateImageKHR = epoxy_eglCreateImageKHR_dispatch_table_rewrite_ptr,
1542    .eglCreatePbufferFromClientBuffer = epoxy_eglCreatePbufferFromClientBuffer_dispatch_table_rewrite_ptr,
1543    .eglCreatePbufferSurface = epoxy_eglCreatePbufferSurface_dispatch_table_rewrite_ptr,
1544    .eglCreatePixmapSurface = epoxy_eglCreatePixmapSurface_dispatch_table_rewrite_ptr,
1545    .eglCreatePixmapSurfaceHI = epoxy_eglCreatePixmapSurfaceHI_dispatch_table_rewrite_ptr,
1546    .eglCreatePlatformPixmapSurface = epoxy_eglCreatePlatformPixmapSurface_dispatch_table_rewrite_ptr,
1547    .eglCreatePlatformPixmapSurfaceEXT = epoxy_eglCreatePlatformPixmapSurfaceEXT_dispatch_table_rewrite_ptr,
1548    .eglCreatePlatformWindowSurface = epoxy_eglCreatePlatformWindowSurface_dispatch_table_rewrite_ptr,
1549    .eglCreatePlatformWindowSurfaceEXT = epoxy_eglCreatePlatformWindowSurfaceEXT_dispatch_table_rewrite_ptr,
1550    .eglCreateStreamFromFileDescriptorKHR = epoxy_eglCreateStreamFromFileDescriptorKHR_dispatch_table_rewrite_ptr,
1551    .eglCreateStreamKHR = epoxy_eglCreateStreamKHR_dispatch_table_rewrite_ptr,
1552    .eglCreateStreamProducerSurfaceKHR = epoxy_eglCreateStreamProducerSurfaceKHR_dispatch_table_rewrite_ptr,
1553    .eglCreateStreamSyncNV = epoxy_eglCreateStreamSyncNV_dispatch_table_rewrite_ptr,
1554    .eglCreateSync = epoxy_eglCreateSync_dispatch_table_rewrite_ptr,
1555    .eglCreateSync64KHR = epoxy_eglCreateSync64KHR_dispatch_table_rewrite_ptr,
1556    .eglCreateSyncKHR = epoxy_eglCreateSyncKHR_dispatch_table_rewrite_ptr,
1557    .eglCreateWindowSurface = epoxy_eglCreateWindowSurface_dispatch_table_rewrite_ptr,
1558    .eglDestroyContext = epoxy_eglDestroyContext_dispatch_table_rewrite_ptr,
1559    .eglDestroyImage = epoxy_eglDestroyImage_dispatch_table_rewrite_ptr,
1560    .eglDestroyImageKHR = epoxy_eglDestroyImageKHR_dispatch_table_rewrite_ptr,
1561    .eglDestroyStreamKHR = epoxy_eglDestroyStreamKHR_dispatch_table_rewrite_ptr,
1562    .eglDestroySurface = epoxy_eglDestroySurface_dispatch_table_rewrite_ptr,
1563    .eglDestroySync = epoxy_eglDestroySync_dispatch_table_rewrite_ptr,
1564    .eglDestroySyncKHR = epoxy_eglDestroySyncKHR_dispatch_table_rewrite_ptr,
1565    .eglDestroySyncNV = epoxy_eglDestroySyncNV_dispatch_table_rewrite_ptr,
1566    .eglDupNativeFenceFDANDROID = epoxy_eglDupNativeFenceFDANDROID_dispatch_table_rewrite_ptr,
1567    .eglExportDMABUFImageMESA = epoxy_eglExportDMABUFImageMESA_dispatch_table_rewrite_ptr,
1568    .eglExportDMABUFImageQueryMESA = epoxy_eglExportDMABUFImageQueryMESA_dispatch_table_rewrite_ptr,
1569    .eglExportDRMImageMESA = epoxy_eglExportDRMImageMESA_dispatch_table_rewrite_ptr,
1570    .eglFenceNV = epoxy_eglFenceNV_dispatch_table_rewrite_ptr,
1571    .eglGetConfigAttrib = epoxy_eglGetConfigAttrib_dispatch_table_rewrite_ptr,
1572    .eglGetConfigs = epoxy_eglGetConfigs_dispatch_table_rewrite_ptr,
1573    .eglGetCurrentContext = epoxy_eglGetCurrentContext_dispatch_table_rewrite_ptr,
1574    .eglGetCurrentDisplay = epoxy_eglGetCurrentDisplay_dispatch_table_rewrite_ptr,
1575    .eglGetCurrentSurface = epoxy_eglGetCurrentSurface_dispatch_table_rewrite_ptr,
1576    .eglGetDisplay = epoxy_eglGetDisplay_dispatch_table_rewrite_ptr,
1577    .eglGetError = epoxy_eglGetError_dispatch_table_rewrite_ptr,
1578    .eglGetOutputLayersEXT = epoxy_eglGetOutputLayersEXT_dispatch_table_rewrite_ptr,
1579    .eglGetOutputPortsEXT = epoxy_eglGetOutputPortsEXT_dispatch_table_rewrite_ptr,
1580    .eglGetPlatformDisplay = epoxy_eglGetPlatformDisplay_dispatch_table_rewrite_ptr,
1581    .eglGetPlatformDisplayEXT = epoxy_eglGetPlatformDisplayEXT_dispatch_table_rewrite_ptr,
1582    .eglGetProcAddress = epoxy_eglGetProcAddress_dispatch_table_rewrite_ptr,
1583    .eglGetStreamFileDescriptorKHR = epoxy_eglGetStreamFileDescriptorKHR_dispatch_table_rewrite_ptr,
1584    .eglGetSyncAttrib = epoxy_eglGetSyncAttrib_dispatch_table_rewrite_ptr,
1585    .eglGetSyncAttribKHR = epoxy_eglGetSyncAttribKHR_dispatch_table_rewrite_ptr,
1586    .eglGetSyncAttribNV = epoxy_eglGetSyncAttribNV_dispatch_table_rewrite_ptr,
1587    .eglGetSystemTimeFrequencyNV = epoxy_eglGetSystemTimeFrequencyNV_dispatch_table_rewrite_ptr,
1588    .eglGetSystemTimeNV = epoxy_eglGetSystemTimeNV_dispatch_table_rewrite_ptr,
1589    .eglInitialize = epoxy_eglInitialize_dispatch_table_rewrite_ptr,
1590    .eglLockSurfaceKHR = epoxy_eglLockSurfaceKHR_dispatch_table_rewrite_ptr,
1591    .eglMakeCurrent = epoxy_eglMakeCurrent_dispatch_table_rewrite_ptr,
1592    .eglOutputLayerAttribEXT = epoxy_eglOutputLayerAttribEXT_dispatch_table_rewrite_ptr,
1593    .eglOutputPortAttribEXT = epoxy_eglOutputPortAttribEXT_dispatch_table_rewrite_ptr,
1594    .eglPostSubBufferNV = epoxy_eglPostSubBufferNV_dispatch_table_rewrite_ptr,
1595    .eglQueryAPI = epoxy_eglQueryAPI_dispatch_table_rewrite_ptr,
1596    .eglQueryContext = epoxy_eglQueryContext_dispatch_table_rewrite_ptr,
1597    .eglQueryDeviceAttribEXT = epoxy_eglQueryDeviceAttribEXT_dispatch_table_rewrite_ptr,
1598    .eglQueryDeviceStringEXT = epoxy_eglQueryDeviceStringEXT_dispatch_table_rewrite_ptr,
1599    .eglQueryDevicesEXT = epoxy_eglQueryDevicesEXT_dispatch_table_rewrite_ptr,
1600    .eglQueryDisplayAttribEXT = epoxy_eglQueryDisplayAttribEXT_dispatch_table_rewrite_ptr,
1601    .eglQueryNativeDisplayNV = epoxy_eglQueryNativeDisplayNV_dispatch_table_rewrite_ptr,
1602    .eglQueryNativePixmapNV = epoxy_eglQueryNativePixmapNV_dispatch_table_rewrite_ptr,
1603    .eglQueryNativeWindowNV = epoxy_eglQueryNativeWindowNV_dispatch_table_rewrite_ptr,
1604    .eglQueryOutputLayerAttribEXT = epoxy_eglQueryOutputLayerAttribEXT_dispatch_table_rewrite_ptr,
1605    .eglQueryOutputLayerStringEXT = epoxy_eglQueryOutputLayerStringEXT_dispatch_table_rewrite_ptr,
1606    .eglQueryOutputPortAttribEXT = epoxy_eglQueryOutputPortAttribEXT_dispatch_table_rewrite_ptr,
1607    .eglQueryOutputPortStringEXT = epoxy_eglQueryOutputPortStringEXT_dispatch_table_rewrite_ptr,
1608    .eglQueryStreamKHR = epoxy_eglQueryStreamKHR_dispatch_table_rewrite_ptr,
1609    .eglQueryStreamTimeKHR = epoxy_eglQueryStreamTimeKHR_dispatch_table_rewrite_ptr,
1610    .eglQueryStreamu64KHR = epoxy_eglQueryStreamu64KHR_dispatch_table_rewrite_ptr,
1611    .eglQueryString = epoxy_eglQueryString_dispatch_table_rewrite_ptr,
1612    .eglQuerySurface = epoxy_eglQuerySurface_dispatch_table_rewrite_ptr,
1613    .eglQuerySurface64KHR = epoxy_eglQuerySurface64KHR_dispatch_table_rewrite_ptr,
1614    .eglQuerySurfacePointerANGLE = epoxy_eglQuerySurfacePointerANGLE_dispatch_table_rewrite_ptr,
1615    .eglReleaseTexImage = epoxy_eglReleaseTexImage_dispatch_table_rewrite_ptr,
1616    .eglReleaseThread = epoxy_eglReleaseThread_dispatch_table_rewrite_ptr,
1617    .eglSetBlobCacheFuncsANDROID = epoxy_eglSetBlobCacheFuncsANDROID_dispatch_table_rewrite_ptr,
1618    .eglSetDamageRegionKHR = epoxy_eglSetDamageRegionKHR_dispatch_table_rewrite_ptr,
1619    .eglSignalSyncKHR = epoxy_eglSignalSyncKHR_dispatch_table_rewrite_ptr,
1620    .eglSignalSyncNV = epoxy_eglSignalSyncNV_dispatch_table_rewrite_ptr,
1621    .eglStreamAttribKHR = epoxy_eglStreamAttribKHR_dispatch_table_rewrite_ptr,
1622    .eglStreamConsumerAcquireKHR = epoxy_eglStreamConsumerAcquireKHR_dispatch_table_rewrite_ptr,
1623    .eglStreamConsumerGLTextureExternalKHR = epoxy_eglStreamConsumerGLTextureExternalKHR_dispatch_table_rewrite_ptr,
1624    .eglStreamConsumerOutputEXT = epoxy_eglStreamConsumerOutputEXT_dispatch_table_rewrite_ptr,
1625    .eglStreamConsumerReleaseKHR = epoxy_eglStreamConsumerReleaseKHR_dispatch_table_rewrite_ptr,
1626    .eglSurfaceAttrib = epoxy_eglSurfaceAttrib_dispatch_table_rewrite_ptr,
1627    .eglSwapBuffers = epoxy_eglSwapBuffers_dispatch_table_rewrite_ptr,
1628    .eglSwapBuffersRegion2NOK = epoxy_eglSwapBuffersRegion2NOK_dispatch_table_rewrite_ptr,
1629    .eglSwapBuffersRegionNOK = epoxy_eglSwapBuffersRegionNOK_dispatch_table_rewrite_ptr,
1630    .eglSwapBuffersWithDamageEXT = epoxy_eglSwapBuffersWithDamageEXT_dispatch_table_rewrite_ptr,
1631    .eglSwapBuffersWithDamageKHR = epoxy_eglSwapBuffersWithDamageKHR_dispatch_table_rewrite_ptr,
1632    .eglSwapInterval = epoxy_eglSwapInterval_dispatch_table_rewrite_ptr,
1633    .eglTerminate = epoxy_eglTerminate_dispatch_table_rewrite_ptr,
1634    .eglUnlockSurfaceKHR = epoxy_eglUnlockSurfaceKHR_dispatch_table_rewrite_ptr,
1635    .eglWaitClient = epoxy_eglWaitClient_dispatch_table_rewrite_ptr,
1636    .eglWaitGL = epoxy_eglWaitGL_dispatch_table_rewrite_ptr,
1637    .eglWaitNative = epoxy_eglWaitNative_dispatch_table_rewrite_ptr,
1638    .eglWaitSync = epoxy_eglWaitSync_dispatch_table_rewrite_ptr,
1639    .eglWaitSyncKHR = epoxy_eglWaitSyncKHR_dispatch_table_rewrite_ptr,
1640};
1641
1642uint32_t egl_tls_index;
1643uint32_t egl_tls_size = sizeof(struct dispatch_table);
1644
1645static inline struct dispatch_table *
1646get_dispatch_table(void)
1647{
1648	return TlsGetValue(egl_tls_index);
1649}
1650
1651void
1652egl_init_dispatch_table(void)
1653{
1654    struct dispatch_table *dispatch_table = get_dispatch_table();
1655    memcpy(dispatch_table, &resolver_table, sizeof(resolver_table));
1656}
1657
1658void
1659egl_switch_to_dispatch_table(void)
1660{
1661    epoxy_eglBindAPI = epoxy_eglBindAPI_dispatch_table_thunk;
1662    epoxy_eglBindTexImage = epoxy_eglBindTexImage_dispatch_table_thunk;
1663    epoxy_eglChooseConfig = epoxy_eglChooseConfig_dispatch_table_thunk;
1664    epoxy_eglClientWaitSync = epoxy_eglClientWaitSync_dispatch_table_thunk;
1665    epoxy_eglClientWaitSyncKHR = epoxy_eglClientWaitSyncKHR_dispatch_table_thunk;
1666    epoxy_eglClientWaitSyncNV = epoxy_eglClientWaitSyncNV_dispatch_table_thunk;
1667    epoxy_eglCopyBuffers = epoxy_eglCopyBuffers_dispatch_table_thunk;
1668    epoxy_eglCreateContext = epoxy_eglCreateContext_dispatch_table_thunk;
1669    epoxy_eglCreateDRMImageMESA = epoxy_eglCreateDRMImageMESA_dispatch_table_thunk;
1670    epoxy_eglCreateFenceSyncNV = epoxy_eglCreateFenceSyncNV_dispatch_table_thunk;
1671    epoxy_eglCreateImage = epoxy_eglCreateImage_dispatch_table_thunk;
1672    epoxy_eglCreateImageKHR = epoxy_eglCreateImageKHR_dispatch_table_thunk;
1673    epoxy_eglCreatePbufferFromClientBuffer = epoxy_eglCreatePbufferFromClientBuffer_dispatch_table_thunk;
1674    epoxy_eglCreatePbufferSurface = epoxy_eglCreatePbufferSurface_dispatch_table_thunk;
1675    epoxy_eglCreatePixmapSurface = epoxy_eglCreatePixmapSurface_dispatch_table_thunk;
1676    epoxy_eglCreatePixmapSurfaceHI = epoxy_eglCreatePixmapSurfaceHI_dispatch_table_thunk;
1677    epoxy_eglCreatePlatformPixmapSurface = epoxy_eglCreatePlatformPixmapSurface_dispatch_table_thunk;
1678    epoxy_eglCreatePlatformPixmapSurfaceEXT = epoxy_eglCreatePlatformPixmapSurfaceEXT_dispatch_table_thunk;
1679    epoxy_eglCreatePlatformWindowSurface = epoxy_eglCreatePlatformWindowSurface_dispatch_table_thunk;
1680    epoxy_eglCreatePlatformWindowSurfaceEXT = epoxy_eglCreatePlatformWindowSurfaceEXT_dispatch_table_thunk;
1681    epoxy_eglCreateStreamFromFileDescriptorKHR = epoxy_eglCreateStreamFromFileDescriptorKHR_dispatch_table_thunk;
1682    epoxy_eglCreateStreamKHR = epoxy_eglCreateStreamKHR_dispatch_table_thunk;
1683    epoxy_eglCreateStreamProducerSurfaceKHR = epoxy_eglCreateStreamProducerSurfaceKHR_dispatch_table_thunk;
1684    epoxy_eglCreateStreamSyncNV = epoxy_eglCreateStreamSyncNV_dispatch_table_thunk;
1685    epoxy_eglCreateSync = epoxy_eglCreateSync_dispatch_table_thunk;
1686    epoxy_eglCreateSync64KHR = epoxy_eglCreateSync64KHR_dispatch_table_thunk;
1687    epoxy_eglCreateSyncKHR = epoxy_eglCreateSyncKHR_dispatch_table_thunk;
1688    epoxy_eglCreateWindowSurface = epoxy_eglCreateWindowSurface_dispatch_table_thunk;
1689    epoxy_eglDestroyContext = epoxy_eglDestroyContext_dispatch_table_thunk;
1690    epoxy_eglDestroyImage = epoxy_eglDestroyImage_dispatch_table_thunk;
1691    epoxy_eglDestroyImageKHR = epoxy_eglDestroyImageKHR_dispatch_table_thunk;
1692    epoxy_eglDestroyStreamKHR = epoxy_eglDestroyStreamKHR_dispatch_table_thunk;
1693    epoxy_eglDestroySurface = epoxy_eglDestroySurface_dispatch_table_thunk;
1694    epoxy_eglDestroySync = epoxy_eglDestroySync_dispatch_table_thunk;
1695    epoxy_eglDestroySyncKHR = epoxy_eglDestroySyncKHR_dispatch_table_thunk;
1696    epoxy_eglDestroySyncNV = epoxy_eglDestroySyncNV_dispatch_table_thunk;
1697    epoxy_eglDupNativeFenceFDANDROID = epoxy_eglDupNativeFenceFDANDROID_dispatch_table_thunk;
1698    epoxy_eglExportDMABUFImageMESA = epoxy_eglExportDMABUFImageMESA_dispatch_table_thunk;
1699    epoxy_eglExportDMABUFImageQueryMESA = epoxy_eglExportDMABUFImageQueryMESA_dispatch_table_thunk;
1700    epoxy_eglExportDRMImageMESA = epoxy_eglExportDRMImageMESA_dispatch_table_thunk;
1701    epoxy_eglFenceNV = epoxy_eglFenceNV_dispatch_table_thunk;
1702    epoxy_eglGetConfigAttrib = epoxy_eglGetConfigAttrib_dispatch_table_thunk;
1703    epoxy_eglGetConfigs = epoxy_eglGetConfigs_dispatch_table_thunk;
1704    epoxy_eglGetCurrentContext = epoxy_eglGetCurrentContext_dispatch_table_thunk;
1705    epoxy_eglGetCurrentDisplay = epoxy_eglGetCurrentDisplay_dispatch_table_thunk;
1706    epoxy_eglGetCurrentSurface = epoxy_eglGetCurrentSurface_dispatch_table_thunk;
1707    epoxy_eglGetDisplay = epoxy_eglGetDisplay_dispatch_table_thunk;
1708    epoxy_eglGetError = epoxy_eglGetError_dispatch_table_thunk;
1709    epoxy_eglGetOutputLayersEXT = epoxy_eglGetOutputLayersEXT_dispatch_table_thunk;
1710    epoxy_eglGetOutputPortsEXT = epoxy_eglGetOutputPortsEXT_dispatch_table_thunk;
1711    epoxy_eglGetPlatformDisplay = epoxy_eglGetPlatformDisplay_dispatch_table_thunk;
1712    epoxy_eglGetPlatformDisplayEXT = epoxy_eglGetPlatformDisplayEXT_dispatch_table_thunk;
1713    epoxy_eglGetProcAddress = epoxy_eglGetProcAddress_dispatch_table_thunk;
1714    epoxy_eglGetStreamFileDescriptorKHR = epoxy_eglGetStreamFileDescriptorKHR_dispatch_table_thunk;
1715    epoxy_eglGetSyncAttrib = epoxy_eglGetSyncAttrib_dispatch_table_thunk;
1716    epoxy_eglGetSyncAttribKHR = epoxy_eglGetSyncAttribKHR_dispatch_table_thunk;
1717    epoxy_eglGetSyncAttribNV = epoxy_eglGetSyncAttribNV_dispatch_table_thunk;
1718    epoxy_eglGetSystemTimeFrequencyNV = epoxy_eglGetSystemTimeFrequencyNV_dispatch_table_thunk;
1719    epoxy_eglGetSystemTimeNV = epoxy_eglGetSystemTimeNV_dispatch_table_thunk;
1720    epoxy_eglInitialize = epoxy_eglInitialize_dispatch_table_thunk;
1721    epoxy_eglLockSurfaceKHR = epoxy_eglLockSurfaceKHR_dispatch_table_thunk;
1722    epoxy_eglMakeCurrent = epoxy_eglMakeCurrent_dispatch_table_thunk;
1723    epoxy_eglOutputLayerAttribEXT = epoxy_eglOutputLayerAttribEXT_dispatch_table_thunk;
1724    epoxy_eglOutputPortAttribEXT = epoxy_eglOutputPortAttribEXT_dispatch_table_thunk;
1725    epoxy_eglPostSubBufferNV = epoxy_eglPostSubBufferNV_dispatch_table_thunk;
1726    epoxy_eglQueryAPI = epoxy_eglQueryAPI_dispatch_table_thunk;
1727    epoxy_eglQueryContext = epoxy_eglQueryContext_dispatch_table_thunk;
1728    epoxy_eglQueryDeviceAttribEXT = epoxy_eglQueryDeviceAttribEXT_dispatch_table_thunk;
1729    epoxy_eglQueryDeviceStringEXT = epoxy_eglQueryDeviceStringEXT_dispatch_table_thunk;
1730    epoxy_eglQueryDevicesEXT = epoxy_eglQueryDevicesEXT_dispatch_table_thunk;
1731    epoxy_eglQueryDisplayAttribEXT = epoxy_eglQueryDisplayAttribEXT_dispatch_table_thunk;
1732    epoxy_eglQueryNativeDisplayNV = epoxy_eglQueryNativeDisplayNV_dispatch_table_thunk;
1733    epoxy_eglQueryNativePixmapNV = epoxy_eglQueryNativePixmapNV_dispatch_table_thunk;
1734    epoxy_eglQueryNativeWindowNV = epoxy_eglQueryNativeWindowNV_dispatch_table_thunk;
1735    epoxy_eglQueryOutputLayerAttribEXT = epoxy_eglQueryOutputLayerAttribEXT_dispatch_table_thunk;
1736    epoxy_eglQueryOutputLayerStringEXT = epoxy_eglQueryOutputLayerStringEXT_dispatch_table_thunk;
1737    epoxy_eglQueryOutputPortAttribEXT = epoxy_eglQueryOutputPortAttribEXT_dispatch_table_thunk;
1738    epoxy_eglQueryOutputPortStringEXT = epoxy_eglQueryOutputPortStringEXT_dispatch_table_thunk;
1739    epoxy_eglQueryStreamKHR = epoxy_eglQueryStreamKHR_dispatch_table_thunk;
1740    epoxy_eglQueryStreamTimeKHR = epoxy_eglQueryStreamTimeKHR_dispatch_table_thunk;
1741    epoxy_eglQueryStreamu64KHR = epoxy_eglQueryStreamu64KHR_dispatch_table_thunk;
1742    epoxy_eglQueryString = epoxy_eglQueryString_dispatch_table_thunk;
1743    epoxy_eglQuerySurface = epoxy_eglQuerySurface_dispatch_table_thunk;
1744    epoxy_eglQuerySurface64KHR = epoxy_eglQuerySurface64KHR_dispatch_table_thunk;
1745    epoxy_eglQuerySurfacePointerANGLE = epoxy_eglQuerySurfacePointerANGLE_dispatch_table_thunk;
1746    epoxy_eglReleaseTexImage = epoxy_eglReleaseTexImage_dispatch_table_thunk;
1747    epoxy_eglReleaseThread = epoxy_eglReleaseThread_dispatch_table_thunk;
1748    epoxy_eglSetBlobCacheFuncsANDROID = epoxy_eglSetBlobCacheFuncsANDROID_dispatch_table_thunk;
1749    epoxy_eglSetDamageRegionKHR = epoxy_eglSetDamageRegionKHR_dispatch_table_thunk;
1750    epoxy_eglSignalSyncKHR = epoxy_eglSignalSyncKHR_dispatch_table_thunk;
1751    epoxy_eglSignalSyncNV = epoxy_eglSignalSyncNV_dispatch_table_thunk;
1752    epoxy_eglStreamAttribKHR = epoxy_eglStreamAttribKHR_dispatch_table_thunk;
1753    epoxy_eglStreamConsumerAcquireKHR = epoxy_eglStreamConsumerAcquireKHR_dispatch_table_thunk;
1754    epoxy_eglStreamConsumerGLTextureExternalKHR = epoxy_eglStreamConsumerGLTextureExternalKHR_dispatch_table_thunk;
1755    epoxy_eglStreamConsumerOutputEXT = epoxy_eglStreamConsumerOutputEXT_dispatch_table_thunk;
1756    epoxy_eglStreamConsumerReleaseKHR = epoxy_eglStreamConsumerReleaseKHR_dispatch_table_thunk;
1757    epoxy_eglSurfaceAttrib = epoxy_eglSurfaceAttrib_dispatch_table_thunk;
1758    epoxy_eglSwapBuffers = epoxy_eglSwapBuffers_dispatch_table_thunk;
1759    epoxy_eglSwapBuffersRegion2NOK = epoxy_eglSwapBuffersRegion2NOK_dispatch_table_thunk;
1760    epoxy_eglSwapBuffersRegionNOK = epoxy_eglSwapBuffersRegionNOK_dispatch_table_thunk;
1761    epoxy_eglSwapBuffersWithDamageEXT = epoxy_eglSwapBuffersWithDamageEXT_dispatch_table_thunk;
1762    epoxy_eglSwapBuffersWithDamageKHR = epoxy_eglSwapBuffersWithDamageKHR_dispatch_table_thunk;
1763    epoxy_eglSwapInterval = epoxy_eglSwapInterval_dispatch_table_thunk;
1764    epoxy_eglTerminate = epoxy_eglTerminate_dispatch_table_thunk;
1765    epoxy_eglUnlockSurfaceKHR = epoxy_eglUnlockSurfaceKHR_dispatch_table_thunk;
1766    epoxy_eglWaitClient = epoxy_eglWaitClient_dispatch_table_thunk;
1767    epoxy_eglWaitGL = epoxy_eglWaitGL_dispatch_table_thunk;
1768    epoxy_eglWaitNative = epoxy_eglWaitNative_dispatch_table_thunk;
1769    epoxy_eglWaitSync = epoxy_eglWaitSync_dispatch_table_thunk;
1770    epoxy_eglWaitSyncKHR = epoxy_eglWaitSyncKHR_dispatch_table_thunk;
1771}
1772
1773#endif /* !USING_DISPATCH_TABLE */
1774PUBLIC PFNEGLBINDAPIPROC epoxy_eglBindAPI = epoxy_eglBindAPI_global_rewrite_ptr;
1775
1776PUBLIC PFNEGLBINDTEXIMAGEPROC epoxy_eglBindTexImage = epoxy_eglBindTexImage_global_rewrite_ptr;
1777
1778PUBLIC PFNEGLCHOOSECONFIGPROC epoxy_eglChooseConfig = epoxy_eglChooseConfig_global_rewrite_ptr;
1779
1780PUBLIC PFNEGLCLIENTWAITSYNCPROC epoxy_eglClientWaitSync = epoxy_eglClientWaitSync_global_rewrite_ptr;
1781
1782PUBLIC PFNEGLCLIENTWAITSYNCKHRPROC epoxy_eglClientWaitSyncKHR = epoxy_eglClientWaitSyncKHR_global_rewrite_ptr;
1783
1784PUBLIC PFNEGLCLIENTWAITSYNCNVPROC epoxy_eglClientWaitSyncNV = epoxy_eglClientWaitSyncNV_global_rewrite_ptr;
1785
1786PUBLIC PFNEGLCOPYBUFFERSPROC epoxy_eglCopyBuffers = epoxy_eglCopyBuffers_global_rewrite_ptr;
1787
1788PUBLIC PFNEGLCREATECONTEXTPROC epoxy_eglCreateContext = epoxy_eglCreateContext_global_rewrite_ptr;
1789
1790PUBLIC PFNEGLCREATEDRMIMAGEMESAPROC epoxy_eglCreateDRMImageMESA = epoxy_eglCreateDRMImageMESA_global_rewrite_ptr;
1791
1792PUBLIC PFNEGLCREATEFENCESYNCNVPROC epoxy_eglCreateFenceSyncNV = epoxy_eglCreateFenceSyncNV_global_rewrite_ptr;
1793
1794PUBLIC PFNEGLCREATEIMAGEPROC epoxy_eglCreateImage = epoxy_eglCreateImage_global_rewrite_ptr;
1795
1796PUBLIC PFNEGLCREATEIMAGEKHRPROC epoxy_eglCreateImageKHR = epoxy_eglCreateImageKHR_global_rewrite_ptr;
1797
1798PUBLIC PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC epoxy_eglCreatePbufferFromClientBuffer = epoxy_eglCreatePbufferFromClientBuffer_global_rewrite_ptr;
1799
1800PUBLIC PFNEGLCREATEPBUFFERSURFACEPROC epoxy_eglCreatePbufferSurface = epoxy_eglCreatePbufferSurface_global_rewrite_ptr;
1801
1802PUBLIC PFNEGLCREATEPIXMAPSURFACEPROC epoxy_eglCreatePixmapSurface = epoxy_eglCreatePixmapSurface_global_rewrite_ptr;
1803
1804PUBLIC PFNEGLCREATEPIXMAPSURFACEHIPROC epoxy_eglCreatePixmapSurfaceHI = epoxy_eglCreatePixmapSurfaceHI_global_rewrite_ptr;
1805
1806PUBLIC PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC epoxy_eglCreatePlatformPixmapSurface = epoxy_eglCreatePlatformPixmapSurface_global_rewrite_ptr;
1807
1808PUBLIC PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC epoxy_eglCreatePlatformPixmapSurfaceEXT = epoxy_eglCreatePlatformPixmapSurfaceEXT_global_rewrite_ptr;
1809
1810PUBLIC PFNEGLCREATEPLATFORMWINDOWSURFACEPROC epoxy_eglCreatePlatformWindowSurface = epoxy_eglCreatePlatformWindowSurface_global_rewrite_ptr;
1811
1812PUBLIC PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC epoxy_eglCreatePlatformWindowSurfaceEXT = epoxy_eglCreatePlatformWindowSurfaceEXT_global_rewrite_ptr;
1813
1814PUBLIC PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC epoxy_eglCreateStreamFromFileDescriptorKHR = epoxy_eglCreateStreamFromFileDescriptorKHR_global_rewrite_ptr;
1815
1816PUBLIC PFNEGLCREATESTREAMKHRPROC epoxy_eglCreateStreamKHR = epoxy_eglCreateStreamKHR_global_rewrite_ptr;
1817
1818PUBLIC PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC epoxy_eglCreateStreamProducerSurfaceKHR = epoxy_eglCreateStreamProducerSurfaceKHR_global_rewrite_ptr;
1819
1820PUBLIC PFNEGLCREATESTREAMSYNCNVPROC epoxy_eglCreateStreamSyncNV = epoxy_eglCreateStreamSyncNV_global_rewrite_ptr;
1821
1822PUBLIC PFNEGLCREATESYNCPROC epoxy_eglCreateSync = epoxy_eglCreateSync_global_rewrite_ptr;
1823
1824PUBLIC PFNEGLCREATESYNC64KHRPROC epoxy_eglCreateSync64KHR = epoxy_eglCreateSync64KHR_global_rewrite_ptr;
1825
1826PUBLIC PFNEGLCREATESYNCKHRPROC epoxy_eglCreateSyncKHR = epoxy_eglCreateSyncKHR_global_rewrite_ptr;
1827
1828PUBLIC PFNEGLCREATEWINDOWSURFACEPROC epoxy_eglCreateWindowSurface = epoxy_eglCreateWindowSurface_global_rewrite_ptr;
1829
1830PUBLIC PFNEGLDESTROYCONTEXTPROC epoxy_eglDestroyContext = epoxy_eglDestroyContext_global_rewrite_ptr;
1831
1832PUBLIC PFNEGLDESTROYIMAGEPROC epoxy_eglDestroyImage = epoxy_eglDestroyImage_global_rewrite_ptr;
1833
1834PUBLIC PFNEGLDESTROYIMAGEKHRPROC epoxy_eglDestroyImageKHR = epoxy_eglDestroyImageKHR_global_rewrite_ptr;
1835
1836PUBLIC PFNEGLDESTROYSTREAMKHRPROC epoxy_eglDestroyStreamKHR = epoxy_eglDestroyStreamKHR_global_rewrite_ptr;
1837
1838PUBLIC PFNEGLDESTROYSURFACEPROC epoxy_eglDestroySurface = epoxy_eglDestroySurface_global_rewrite_ptr;
1839
1840PUBLIC PFNEGLDESTROYSYNCPROC epoxy_eglDestroySync = epoxy_eglDestroySync_global_rewrite_ptr;
1841
1842PUBLIC PFNEGLDESTROYSYNCKHRPROC epoxy_eglDestroySyncKHR = epoxy_eglDestroySyncKHR_global_rewrite_ptr;
1843
1844PUBLIC PFNEGLDESTROYSYNCNVPROC epoxy_eglDestroySyncNV = epoxy_eglDestroySyncNV_global_rewrite_ptr;
1845
1846PUBLIC PFNEGLDUPNATIVEFENCEFDANDROIDPROC epoxy_eglDupNativeFenceFDANDROID = epoxy_eglDupNativeFenceFDANDROID_global_rewrite_ptr;
1847
1848PUBLIC PFNEGLEXPORTDMABUFIMAGEMESAPROC epoxy_eglExportDMABUFImageMESA = epoxy_eglExportDMABUFImageMESA_global_rewrite_ptr;
1849
1850PUBLIC PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC epoxy_eglExportDMABUFImageQueryMESA = epoxy_eglExportDMABUFImageQueryMESA_global_rewrite_ptr;
1851
1852PUBLIC PFNEGLEXPORTDRMIMAGEMESAPROC epoxy_eglExportDRMImageMESA = epoxy_eglExportDRMImageMESA_global_rewrite_ptr;
1853
1854PUBLIC PFNEGLFENCENVPROC epoxy_eglFenceNV = epoxy_eglFenceNV_global_rewrite_ptr;
1855
1856PUBLIC PFNEGLGETCONFIGATTRIBPROC epoxy_eglGetConfigAttrib = epoxy_eglGetConfigAttrib_global_rewrite_ptr;
1857
1858PUBLIC PFNEGLGETCONFIGSPROC epoxy_eglGetConfigs = epoxy_eglGetConfigs_global_rewrite_ptr;
1859
1860PUBLIC PFNEGLGETCURRENTCONTEXTPROC epoxy_eglGetCurrentContext = epoxy_eglGetCurrentContext_global_rewrite_ptr;
1861
1862PUBLIC PFNEGLGETCURRENTDISPLAYPROC epoxy_eglGetCurrentDisplay = epoxy_eglGetCurrentDisplay_global_rewrite_ptr;
1863
1864PUBLIC PFNEGLGETCURRENTSURFACEPROC epoxy_eglGetCurrentSurface = epoxy_eglGetCurrentSurface_global_rewrite_ptr;
1865
1866PUBLIC PFNEGLGETDISPLAYPROC epoxy_eglGetDisplay = epoxy_eglGetDisplay_global_rewrite_ptr;
1867
1868PUBLIC PFNEGLGETERRORPROC epoxy_eglGetError = epoxy_eglGetError_global_rewrite_ptr;
1869
1870PUBLIC PFNEGLGETOUTPUTLAYERSEXTPROC epoxy_eglGetOutputLayersEXT = epoxy_eglGetOutputLayersEXT_global_rewrite_ptr;
1871
1872PUBLIC PFNEGLGETOUTPUTPORTSEXTPROC epoxy_eglGetOutputPortsEXT = epoxy_eglGetOutputPortsEXT_global_rewrite_ptr;
1873
1874PUBLIC PFNEGLGETPLATFORMDISPLAYPROC epoxy_eglGetPlatformDisplay = epoxy_eglGetPlatformDisplay_global_rewrite_ptr;
1875
1876PUBLIC PFNEGLGETPLATFORMDISPLAYEXTPROC epoxy_eglGetPlatformDisplayEXT = epoxy_eglGetPlatformDisplayEXT_global_rewrite_ptr;
1877
1878PUBLIC PFNEGLGETPROCADDRESSPROC epoxy_eglGetProcAddress = epoxy_eglGetProcAddress_global_rewrite_ptr;
1879
1880PUBLIC PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC epoxy_eglGetStreamFileDescriptorKHR = epoxy_eglGetStreamFileDescriptorKHR_global_rewrite_ptr;
1881
1882PUBLIC PFNEGLGETSYNCATTRIBPROC epoxy_eglGetSyncAttrib = epoxy_eglGetSyncAttrib_global_rewrite_ptr;
1883
1884PUBLIC PFNEGLGETSYNCATTRIBKHRPROC epoxy_eglGetSyncAttribKHR = epoxy_eglGetSyncAttribKHR_global_rewrite_ptr;
1885
1886PUBLIC PFNEGLGETSYNCATTRIBNVPROC epoxy_eglGetSyncAttribNV = epoxy_eglGetSyncAttribNV_global_rewrite_ptr;
1887
1888PUBLIC PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC epoxy_eglGetSystemTimeFrequencyNV = epoxy_eglGetSystemTimeFrequencyNV_global_rewrite_ptr;
1889
1890PUBLIC PFNEGLGETSYSTEMTIMENVPROC epoxy_eglGetSystemTimeNV = epoxy_eglGetSystemTimeNV_global_rewrite_ptr;
1891
1892PUBLIC PFNEGLINITIALIZEPROC epoxy_eglInitialize = epoxy_eglInitialize_global_rewrite_ptr;
1893
1894PUBLIC PFNEGLLOCKSURFACEKHRPROC epoxy_eglLockSurfaceKHR = epoxy_eglLockSurfaceKHR_global_rewrite_ptr;
1895
1896PUBLIC PFNEGLMAKECURRENTPROC epoxy_eglMakeCurrent = epoxy_eglMakeCurrent_global_rewrite_ptr;
1897
1898PUBLIC PFNEGLOUTPUTLAYERATTRIBEXTPROC epoxy_eglOutputLayerAttribEXT = epoxy_eglOutputLayerAttribEXT_global_rewrite_ptr;
1899
1900PUBLIC PFNEGLOUTPUTPORTATTRIBEXTPROC epoxy_eglOutputPortAttribEXT = epoxy_eglOutputPortAttribEXT_global_rewrite_ptr;
1901
1902PUBLIC PFNEGLPOSTSUBBUFFERNVPROC epoxy_eglPostSubBufferNV = epoxy_eglPostSubBufferNV_global_rewrite_ptr;
1903
1904PUBLIC PFNEGLQUERYAPIPROC epoxy_eglQueryAPI = epoxy_eglQueryAPI_global_rewrite_ptr;
1905
1906PUBLIC PFNEGLQUERYCONTEXTPROC epoxy_eglQueryContext = epoxy_eglQueryContext_global_rewrite_ptr;
1907
1908PUBLIC PFNEGLQUERYDEVICEATTRIBEXTPROC epoxy_eglQueryDeviceAttribEXT = epoxy_eglQueryDeviceAttribEXT_global_rewrite_ptr;
1909
1910PUBLIC PFNEGLQUERYDEVICESTRINGEXTPROC epoxy_eglQueryDeviceStringEXT = epoxy_eglQueryDeviceStringEXT_global_rewrite_ptr;
1911
1912PUBLIC PFNEGLQUERYDEVICESEXTPROC epoxy_eglQueryDevicesEXT = epoxy_eglQueryDevicesEXT_global_rewrite_ptr;
1913
1914PUBLIC PFNEGLQUERYDISPLAYATTRIBEXTPROC epoxy_eglQueryDisplayAttribEXT = epoxy_eglQueryDisplayAttribEXT_global_rewrite_ptr;
1915
1916PUBLIC PFNEGLQUERYNATIVEDISPLAYNVPROC epoxy_eglQueryNativeDisplayNV = epoxy_eglQueryNativeDisplayNV_global_rewrite_ptr;
1917
1918PUBLIC PFNEGLQUERYNATIVEPIXMAPNVPROC epoxy_eglQueryNativePixmapNV = epoxy_eglQueryNativePixmapNV_global_rewrite_ptr;
1919
1920PUBLIC PFNEGLQUERYNATIVEWINDOWNVPROC epoxy_eglQueryNativeWindowNV = epoxy_eglQueryNativeWindowNV_global_rewrite_ptr;
1921
1922PUBLIC PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC epoxy_eglQueryOutputLayerAttribEXT = epoxy_eglQueryOutputLayerAttribEXT_global_rewrite_ptr;
1923
1924PUBLIC PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC epoxy_eglQueryOutputLayerStringEXT = epoxy_eglQueryOutputLayerStringEXT_global_rewrite_ptr;
1925
1926PUBLIC PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC epoxy_eglQueryOutputPortAttribEXT = epoxy_eglQueryOutputPortAttribEXT_global_rewrite_ptr;
1927
1928PUBLIC PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC epoxy_eglQueryOutputPortStringEXT = epoxy_eglQueryOutputPortStringEXT_global_rewrite_ptr;
1929
1930PUBLIC PFNEGLQUERYSTREAMKHRPROC epoxy_eglQueryStreamKHR = epoxy_eglQueryStreamKHR_global_rewrite_ptr;
1931
1932PUBLIC PFNEGLQUERYSTREAMTIMEKHRPROC epoxy_eglQueryStreamTimeKHR = epoxy_eglQueryStreamTimeKHR_global_rewrite_ptr;
1933
1934PUBLIC PFNEGLQUERYSTREAMU64KHRPROC epoxy_eglQueryStreamu64KHR = epoxy_eglQueryStreamu64KHR_global_rewrite_ptr;
1935
1936PUBLIC PFNEGLQUERYSTRINGPROC epoxy_eglQueryString = epoxy_eglQueryString_global_rewrite_ptr;
1937
1938PUBLIC PFNEGLQUERYSURFACEPROC epoxy_eglQuerySurface = epoxy_eglQuerySurface_global_rewrite_ptr;
1939
1940PUBLIC PFNEGLQUERYSURFACE64KHRPROC epoxy_eglQuerySurface64KHR = epoxy_eglQuerySurface64KHR_global_rewrite_ptr;
1941
1942PUBLIC PFNEGLQUERYSURFACEPOINTERANGLEPROC epoxy_eglQuerySurfacePointerANGLE = epoxy_eglQuerySurfacePointerANGLE_global_rewrite_ptr;
1943
1944PUBLIC PFNEGLRELEASETEXIMAGEPROC epoxy_eglReleaseTexImage = epoxy_eglReleaseTexImage_global_rewrite_ptr;
1945
1946PUBLIC PFNEGLRELEASETHREADPROC epoxy_eglReleaseThread = epoxy_eglReleaseThread_global_rewrite_ptr;
1947
1948PUBLIC PFNEGLSETBLOBCACHEFUNCSANDROIDPROC epoxy_eglSetBlobCacheFuncsANDROID = epoxy_eglSetBlobCacheFuncsANDROID_global_rewrite_ptr;
1949
1950PUBLIC PFNEGLSETDAMAGEREGIONKHRPROC epoxy_eglSetDamageRegionKHR = epoxy_eglSetDamageRegionKHR_global_rewrite_ptr;
1951
1952PUBLIC PFNEGLSIGNALSYNCKHRPROC epoxy_eglSignalSyncKHR = epoxy_eglSignalSyncKHR_global_rewrite_ptr;
1953
1954PUBLIC PFNEGLSIGNALSYNCNVPROC epoxy_eglSignalSyncNV = epoxy_eglSignalSyncNV_global_rewrite_ptr;
1955
1956PUBLIC PFNEGLSTREAMATTRIBKHRPROC epoxy_eglStreamAttribKHR = epoxy_eglStreamAttribKHR_global_rewrite_ptr;
1957
1958PUBLIC PFNEGLSTREAMCONSUMERACQUIREKHRPROC epoxy_eglStreamConsumerAcquireKHR = epoxy_eglStreamConsumerAcquireKHR_global_rewrite_ptr;
1959
1960PUBLIC PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC epoxy_eglStreamConsumerGLTextureExternalKHR = epoxy_eglStreamConsumerGLTextureExternalKHR_global_rewrite_ptr;
1961
1962PUBLIC PFNEGLSTREAMCONSUMEROUTPUTEXTPROC epoxy_eglStreamConsumerOutputEXT = epoxy_eglStreamConsumerOutputEXT_global_rewrite_ptr;
1963
1964PUBLIC PFNEGLSTREAMCONSUMERRELEASEKHRPROC epoxy_eglStreamConsumerReleaseKHR = epoxy_eglStreamConsumerReleaseKHR_global_rewrite_ptr;
1965
1966PUBLIC PFNEGLSURFACEATTRIBPROC epoxy_eglSurfaceAttrib = epoxy_eglSurfaceAttrib_global_rewrite_ptr;
1967
1968PUBLIC PFNEGLSWAPBUFFERSPROC epoxy_eglSwapBuffers = epoxy_eglSwapBuffers_global_rewrite_ptr;
1969
1970PUBLIC PFNEGLSWAPBUFFERSREGION2NOKPROC epoxy_eglSwapBuffersRegion2NOK = epoxy_eglSwapBuffersRegion2NOK_global_rewrite_ptr;
1971
1972PUBLIC PFNEGLSWAPBUFFERSREGIONNOKPROC epoxy_eglSwapBuffersRegionNOK = epoxy_eglSwapBuffersRegionNOK_global_rewrite_ptr;
1973
1974PUBLIC PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC epoxy_eglSwapBuffersWithDamageEXT = epoxy_eglSwapBuffersWithDamageEXT_global_rewrite_ptr;
1975
1976PUBLIC PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC epoxy_eglSwapBuffersWithDamageKHR = epoxy_eglSwapBuffersWithDamageKHR_global_rewrite_ptr;
1977
1978PUBLIC PFNEGLSWAPINTERVALPROC epoxy_eglSwapInterval = epoxy_eglSwapInterval_global_rewrite_ptr;
1979
1980PUBLIC PFNEGLTERMINATEPROC epoxy_eglTerminate = epoxy_eglTerminate_global_rewrite_ptr;
1981
1982PUBLIC PFNEGLUNLOCKSURFACEKHRPROC epoxy_eglUnlockSurfaceKHR = epoxy_eglUnlockSurfaceKHR_global_rewrite_ptr;
1983
1984PUBLIC PFNEGLWAITCLIENTPROC epoxy_eglWaitClient = epoxy_eglWaitClient_global_rewrite_ptr;
1985
1986PUBLIC PFNEGLWAITGLPROC epoxy_eglWaitGL = epoxy_eglWaitGL_global_rewrite_ptr;
1987
1988PUBLIC PFNEGLWAITNATIVEPROC epoxy_eglWaitNative = epoxy_eglWaitNative_global_rewrite_ptr;
1989
1990PUBLIC PFNEGLWAITSYNCPROC epoxy_eglWaitSync = epoxy_eglWaitSync_global_rewrite_ptr;
1991
1992PUBLIC PFNEGLWAITSYNCKHRPROC epoxy_eglWaitSyncKHR = epoxy_eglWaitSyncKHR_global_rewrite_ptr;
1993
1994