1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4#include <glad/egl.h>
5
6#ifndef GLAD_IMPL_UTIL_C_
7#define GLAD_IMPL_UTIL_C_
8
9#ifdef _MSC_VER
10#define GLAD_IMPL_UTIL_SSCANF sscanf_s
11#else
12#define GLAD_IMPL_UTIL_SSCANF sscanf
13#endif
14
15#endif /* GLAD_IMPL_UTIL_C_ */
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21
22
23int GLAD_EGL_VERSION_1_0 = 0;
24int GLAD_EGL_VERSION_1_1 = 0;
25int GLAD_EGL_VERSION_1_2 = 0;
26int GLAD_EGL_VERSION_1_3 = 0;
27int GLAD_EGL_VERSION_1_4 = 0;
28int GLAD_EGL_VERSION_1_5 = 0;
29int GLAD_EGL_ANDROID_GLES_layers = 0;
30int GLAD_EGL_ANDROID_blob_cache = 0;
31int GLAD_EGL_ANDROID_create_native_client_buffer = 0;
32int GLAD_EGL_ANDROID_framebuffer_target = 0;
33int GLAD_EGL_ANDROID_front_buffer_auto_refresh = 0;
34int GLAD_EGL_ANDROID_get_frame_timestamps = 0;
35int GLAD_EGL_ANDROID_get_native_client_buffer = 0;
36int GLAD_EGL_ANDROID_image_native_buffer = 0;
37int GLAD_EGL_ANDROID_native_fence_sync = 0;
38int GLAD_EGL_ANDROID_presentation_time = 0;
39int GLAD_EGL_ANDROID_recordable = 0;
40int GLAD_EGL_ANGLE_d3d_share_handle_client_buffer = 0;
41int GLAD_EGL_ANGLE_device_d3d = 0;
42int GLAD_EGL_ANGLE_query_surface_pointer = 0;
43int GLAD_EGL_ANGLE_surface_d3d_texture_2d_share_handle = 0;
44int GLAD_EGL_ANGLE_sync_control_rate = 0;
45int GLAD_EGL_ANGLE_window_fixed_size = 0;
46int GLAD_EGL_ARM_image_format = 0;
47int GLAD_EGL_ARM_implicit_external_sync = 0;
48int GLAD_EGL_ARM_pixmap_multisample_discard = 0;
49int GLAD_EGL_EXT_bind_to_front = 0;
50int GLAD_EGL_EXT_buffer_age = 0;
51int GLAD_EGL_EXT_client_extensions = 0;
52int GLAD_EGL_EXT_client_sync = 0;
53int GLAD_EGL_EXT_compositor = 0;
54int GLAD_EGL_EXT_config_select_group = 0;
55int GLAD_EGL_EXT_create_context_robustness = 0;
56int GLAD_EGL_EXT_device_base = 0;
57int GLAD_EGL_EXT_device_drm = 0;
58int GLAD_EGL_EXT_device_drm_render_node = 0;
59int GLAD_EGL_EXT_device_enumeration = 0;
60int GLAD_EGL_EXT_device_openwf = 0;
61int GLAD_EGL_EXT_device_persistent_id = 0;
62int GLAD_EGL_EXT_device_query = 0;
63int GLAD_EGL_EXT_device_query_name = 0;
64int GLAD_EGL_EXT_gl_colorspace_bt2020_linear = 0;
65int GLAD_EGL_EXT_gl_colorspace_bt2020_pq = 0;
66int GLAD_EGL_EXT_gl_colorspace_display_p3 = 0;
67int GLAD_EGL_EXT_gl_colorspace_display_p3_linear = 0;
68int GLAD_EGL_EXT_gl_colorspace_display_p3_passthrough = 0;
69int GLAD_EGL_EXT_gl_colorspace_scrgb = 0;
70int GLAD_EGL_EXT_gl_colorspace_scrgb_linear = 0;
71int GLAD_EGL_EXT_image_dma_buf_import = 0;
72int GLAD_EGL_EXT_image_dma_buf_import_modifiers = 0;
73int GLAD_EGL_EXT_image_gl_colorspace = 0;
74int GLAD_EGL_EXT_image_implicit_sync_control = 0;
75int GLAD_EGL_EXT_multiview_window = 0;
76int GLAD_EGL_EXT_output_base = 0;
77int GLAD_EGL_EXT_output_drm = 0;
78int GLAD_EGL_EXT_output_openwf = 0;
79int GLAD_EGL_EXT_pixel_format_float = 0;
80int GLAD_EGL_EXT_platform_base = 0;
81int GLAD_EGL_EXT_platform_device = 0;
82int GLAD_EGL_EXT_platform_wayland = 0;
83int GLAD_EGL_EXT_platform_x11 = 0;
84int GLAD_EGL_EXT_platform_xcb = 0;
85int GLAD_EGL_EXT_present_opaque = 0;
86int GLAD_EGL_EXT_protected_content = 0;
87int GLAD_EGL_EXT_protected_surface = 0;
88int GLAD_EGL_EXT_stream_consumer_egloutput = 0;
89int GLAD_EGL_EXT_surface_CTA861_3_metadata = 0;
90int GLAD_EGL_EXT_surface_SMPTE2086_metadata = 0;
91int GLAD_EGL_EXT_swap_buffers_with_damage = 0;
92int GLAD_EGL_EXT_sync_reuse = 0;
93int GLAD_EGL_EXT_yuv_surface = 0;
94int GLAD_EGL_HI_clientpixmap = 0;
95int GLAD_EGL_HI_colorformats = 0;
96int GLAD_EGL_IMG_context_priority = 0;
97int GLAD_EGL_IMG_image_plane_attribs = 0;
98int GLAD_EGL_KHR_cl_event = 0;
99int GLAD_EGL_KHR_cl_event2 = 0;
100int GLAD_EGL_KHR_client_get_all_proc_addresses = 0;
101int GLAD_EGL_KHR_config_attribs = 0;
102int GLAD_EGL_KHR_context_flush_control = 0;
103int GLAD_EGL_KHR_create_context = 0;
104int GLAD_EGL_KHR_create_context_no_error = 0;
105int GLAD_EGL_KHR_debug = 0;
106int GLAD_EGL_KHR_display_reference = 0;
107int GLAD_EGL_KHR_fence_sync = 0;
108int GLAD_EGL_KHR_get_all_proc_addresses = 0;
109int GLAD_EGL_KHR_gl_colorspace = 0;
110int GLAD_EGL_KHR_gl_renderbuffer_image = 0;
111int GLAD_EGL_KHR_gl_texture_2D_image = 0;
112int GLAD_EGL_KHR_gl_texture_3D_image = 0;
113int GLAD_EGL_KHR_gl_texture_cubemap_image = 0;
114int GLAD_EGL_KHR_image = 0;
115int GLAD_EGL_KHR_image_base = 0;
116int GLAD_EGL_KHR_image_pixmap = 0;
117int GLAD_EGL_KHR_lock_surface = 0;
118int GLAD_EGL_KHR_lock_surface2 = 0;
119int GLAD_EGL_KHR_lock_surface3 = 0;
120int GLAD_EGL_KHR_mutable_render_buffer = 0;
121int GLAD_EGL_KHR_no_config_context = 0;
122int GLAD_EGL_KHR_partial_update = 0;
123int GLAD_EGL_KHR_platform_android = 0;
124int GLAD_EGL_KHR_platform_gbm = 0;
125int GLAD_EGL_KHR_platform_wayland = 0;
126int GLAD_EGL_KHR_platform_x11 = 0;
127int GLAD_EGL_KHR_reusable_sync = 0;
128int GLAD_EGL_KHR_stream = 0;
129int GLAD_EGL_KHR_stream_attrib = 0;
130int GLAD_EGL_KHR_stream_consumer_gltexture = 0;
131int GLAD_EGL_KHR_stream_cross_process_fd = 0;
132int GLAD_EGL_KHR_stream_fifo = 0;
133int GLAD_EGL_KHR_stream_producer_aldatalocator = 0;
134int GLAD_EGL_KHR_stream_producer_eglsurface = 0;
135int GLAD_EGL_KHR_surfaceless_context = 0;
136int GLAD_EGL_KHR_swap_buffers_with_damage = 0;
137int GLAD_EGL_KHR_vg_parent_image = 0;
138int GLAD_EGL_KHR_wait_sync = 0;
139int GLAD_EGL_MESA_drm_image = 0;
140int GLAD_EGL_MESA_image_dma_buf_export = 0;
141int GLAD_EGL_MESA_platform_gbm = 0;
142int GLAD_EGL_MESA_platform_surfaceless = 0;
143int GLAD_EGL_MESA_query_driver = 0;
144int GLAD_EGL_NOK_swap_region = 0;
145int GLAD_EGL_NOK_swap_region2 = 0;
146int GLAD_EGL_NOK_texture_from_pixmap = 0;
147int GLAD_EGL_NV_3dvision_surface = 0;
148int GLAD_EGL_NV_context_priority_realtime = 0;
149int GLAD_EGL_NV_coverage_sample = 0;
150int GLAD_EGL_NV_coverage_sample_resolve = 0;
151int GLAD_EGL_NV_cuda_event = 0;
152int GLAD_EGL_NV_depth_nonlinear = 0;
153int GLAD_EGL_NV_device_cuda = 0;
154int GLAD_EGL_NV_native_query = 0;
155int GLAD_EGL_NV_post_convert_rounding = 0;
156int GLAD_EGL_NV_post_sub_buffer = 0;
157int GLAD_EGL_NV_quadruple_buffer = 0;
158int GLAD_EGL_NV_robustness_video_memory_purge = 0;
159int GLAD_EGL_NV_stream_consumer_eglimage = 0;
160int GLAD_EGL_NV_stream_consumer_gltexture_yuv = 0;
161int GLAD_EGL_NV_stream_cross_display = 0;
162int GLAD_EGL_NV_stream_cross_object = 0;
163int GLAD_EGL_NV_stream_cross_partition = 0;
164int GLAD_EGL_NV_stream_cross_process = 0;
165int GLAD_EGL_NV_stream_cross_system = 0;
166int GLAD_EGL_NV_stream_dma = 0;
167int GLAD_EGL_NV_stream_fifo_next = 0;
168int GLAD_EGL_NV_stream_fifo_synchronous = 0;
169int GLAD_EGL_NV_stream_flush = 0;
170int GLAD_EGL_NV_stream_frame_limits = 0;
171int GLAD_EGL_NV_stream_metadata = 0;
172int GLAD_EGL_NV_stream_origin = 0;
173int GLAD_EGL_NV_stream_remote = 0;
174int GLAD_EGL_NV_stream_reset = 0;
175int GLAD_EGL_NV_stream_socket = 0;
176int GLAD_EGL_NV_stream_socket_inet = 0;
177int GLAD_EGL_NV_stream_socket_unix = 0;
178int GLAD_EGL_NV_stream_sync = 0;
179int GLAD_EGL_NV_sync = 0;
180int GLAD_EGL_NV_system_time = 0;
181int GLAD_EGL_NV_triple_buffer = 0;
182int GLAD_EGL_TIZEN_image_native_buffer = 0;
183int GLAD_EGL_TIZEN_image_native_surface = 0;
184int GLAD_EGL_WL_bind_wayland_display = 0;
185int GLAD_EGL_WL_create_wayland_buffer_from_image = 0;
186
187
188
189PFNEGLBINDAPIPROC glad_eglBindAPI = NULL;
190PFNEGLBINDTEXIMAGEPROC glad_eglBindTexImage = NULL;
191PFNEGLBINDWAYLANDDISPLAYWLPROC glad_eglBindWaylandDisplayWL = NULL;
192PFNEGLCHOOSECONFIGPROC glad_eglChooseConfig = NULL;
193PFNEGLCLIENTSIGNALSYNCEXTPROC glad_eglClientSignalSyncEXT = NULL;
194PFNEGLCLIENTWAITSYNCPROC glad_eglClientWaitSync = NULL;
195PFNEGLCLIENTWAITSYNCKHRPROC glad_eglClientWaitSyncKHR = NULL;
196PFNEGLCLIENTWAITSYNCNVPROC glad_eglClientWaitSyncNV = NULL;
197PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC glad_eglCompositorBindTexWindowEXT = NULL;
198PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC glad_eglCompositorSetContextAttributesEXT = NULL;
199PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC glad_eglCompositorSetContextListEXT = NULL;
200PFNEGLCOMPOSITORSETSIZEEXTPROC glad_eglCompositorSetSizeEXT = NULL;
201PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC glad_eglCompositorSetWindowAttributesEXT = NULL;
202PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC glad_eglCompositorSetWindowListEXT = NULL;
203PFNEGLCOMPOSITORSWAPPOLICYEXTPROC glad_eglCompositorSwapPolicyEXT = NULL;
204PFNEGLCOPYBUFFERSPROC glad_eglCopyBuffers = NULL;
205PFNEGLCREATECONTEXTPROC glad_eglCreateContext = NULL;
206PFNEGLCREATEDRMIMAGEMESAPROC glad_eglCreateDRMImageMESA = NULL;
207PFNEGLCREATEFENCESYNCNVPROC glad_eglCreateFenceSyncNV = NULL;
208PFNEGLCREATEIMAGEPROC glad_eglCreateImage = NULL;
209PFNEGLCREATEIMAGEKHRPROC glad_eglCreateImageKHR = NULL;
210PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC glad_eglCreateNativeClientBufferANDROID = NULL;
211PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC glad_eglCreatePbufferFromClientBuffer = NULL;
212PFNEGLCREATEPBUFFERSURFACEPROC glad_eglCreatePbufferSurface = NULL;
213PFNEGLCREATEPIXMAPSURFACEPROC glad_eglCreatePixmapSurface = NULL;
214PFNEGLCREATEPIXMAPSURFACEHIPROC glad_eglCreatePixmapSurfaceHI = NULL;
215PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC glad_eglCreatePlatformPixmapSurface = NULL;
216PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC glad_eglCreatePlatformPixmapSurfaceEXT = NULL;
217PFNEGLCREATEPLATFORMWINDOWSURFACEPROC glad_eglCreatePlatformWindowSurface = NULL;
218PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC glad_eglCreatePlatformWindowSurfaceEXT = NULL;
219PFNEGLCREATESTREAMATTRIBKHRPROC glad_eglCreateStreamAttribKHR = NULL;
220PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC glad_eglCreateStreamFromFileDescriptorKHR = NULL;
221PFNEGLCREATESTREAMKHRPROC glad_eglCreateStreamKHR = NULL;
222PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC glad_eglCreateStreamProducerSurfaceKHR = NULL;
223PFNEGLCREATESTREAMSYNCNVPROC glad_eglCreateStreamSyncNV = NULL;
224PFNEGLCREATESYNCPROC glad_eglCreateSync = NULL;
225PFNEGLCREATESYNC64KHRPROC glad_eglCreateSync64KHR = NULL;
226PFNEGLCREATESYNCKHRPROC glad_eglCreateSyncKHR = NULL;
227PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC glad_eglCreateWaylandBufferFromImageWL = NULL;
228PFNEGLCREATEWINDOWSURFACEPROC glad_eglCreateWindowSurface = NULL;
229PFNEGLDEBUGMESSAGECONTROLKHRPROC glad_eglDebugMessageControlKHR = NULL;
230PFNEGLDESTROYCONTEXTPROC glad_eglDestroyContext = NULL;
231PFNEGLDESTROYIMAGEPROC glad_eglDestroyImage = NULL;
232PFNEGLDESTROYIMAGEKHRPROC glad_eglDestroyImageKHR = NULL;
233PFNEGLDESTROYSTREAMKHRPROC glad_eglDestroyStreamKHR = NULL;
234PFNEGLDESTROYSURFACEPROC glad_eglDestroySurface = NULL;
235PFNEGLDESTROYSYNCPROC glad_eglDestroySync = NULL;
236PFNEGLDESTROYSYNCKHRPROC glad_eglDestroySyncKHR = NULL;
237PFNEGLDESTROYSYNCNVPROC glad_eglDestroySyncNV = NULL;
238PFNEGLDUPNATIVEFENCEFDANDROIDPROC glad_eglDupNativeFenceFDANDROID = NULL;
239PFNEGLEXPORTDMABUFIMAGEMESAPROC glad_eglExportDMABUFImageMESA = NULL;
240PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC glad_eglExportDMABUFImageQueryMESA = NULL;
241PFNEGLEXPORTDRMIMAGEMESAPROC glad_eglExportDRMImageMESA = NULL;
242PFNEGLFENCENVPROC glad_eglFenceNV = NULL;
243PFNEGLGETCOMPOSITORTIMINGANDROIDPROC glad_eglGetCompositorTimingANDROID = NULL;
244PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC glad_eglGetCompositorTimingSupportedANDROID = NULL;
245PFNEGLGETCONFIGATTRIBPROC glad_eglGetConfigAttrib = NULL;
246PFNEGLGETCONFIGSPROC glad_eglGetConfigs = NULL;
247PFNEGLGETCURRENTCONTEXTPROC glad_eglGetCurrentContext = NULL;
248PFNEGLGETCURRENTDISPLAYPROC glad_eglGetCurrentDisplay = NULL;
249PFNEGLGETCURRENTSURFACEPROC glad_eglGetCurrentSurface = NULL;
250PFNEGLGETDISPLAYPROC glad_eglGetDisplay = NULL;
251PFNEGLGETDISPLAYDRIVERCONFIGPROC glad_eglGetDisplayDriverConfig = NULL;
252PFNEGLGETDISPLAYDRIVERNAMEPROC glad_eglGetDisplayDriverName = NULL;
253PFNEGLGETERRORPROC glad_eglGetError = NULL;
254PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC glad_eglGetFrameTimestampSupportedANDROID = NULL;
255PFNEGLGETFRAMETIMESTAMPSANDROIDPROC glad_eglGetFrameTimestampsANDROID = NULL;
256PFNEGLGETMSCRATEANGLEPROC glad_eglGetMscRateANGLE = NULL;
257PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC glad_eglGetNativeClientBufferANDROID = NULL;
258PFNEGLGETNEXTFRAMEIDANDROIDPROC glad_eglGetNextFrameIdANDROID = NULL;
259PFNEGLGETOUTPUTLAYERSEXTPROC glad_eglGetOutputLayersEXT = NULL;
260PFNEGLGETOUTPUTPORTSEXTPROC glad_eglGetOutputPortsEXT = NULL;
261PFNEGLGETPLATFORMDISPLAYPROC glad_eglGetPlatformDisplay = NULL;
262PFNEGLGETPLATFORMDISPLAYEXTPROC glad_eglGetPlatformDisplayEXT = NULL;
263PFNEGLGETPROCADDRESSPROC glad_eglGetProcAddress = NULL;
264PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC glad_eglGetStreamFileDescriptorKHR = NULL;
265PFNEGLGETSYNCATTRIBPROC glad_eglGetSyncAttrib = NULL;
266PFNEGLGETSYNCATTRIBKHRPROC glad_eglGetSyncAttribKHR = NULL;
267PFNEGLGETSYNCATTRIBNVPROC glad_eglGetSyncAttribNV = NULL;
268PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC glad_eglGetSystemTimeFrequencyNV = NULL;
269PFNEGLGETSYSTEMTIMENVPROC glad_eglGetSystemTimeNV = NULL;
270PFNEGLINITIALIZEPROC glad_eglInitialize = NULL;
271PFNEGLLABELOBJECTKHRPROC glad_eglLabelObjectKHR = NULL;
272PFNEGLLOCKSURFACEKHRPROC glad_eglLockSurfaceKHR = NULL;
273PFNEGLMAKECURRENTPROC glad_eglMakeCurrent = NULL;
274PFNEGLOUTPUTLAYERATTRIBEXTPROC glad_eglOutputLayerAttribEXT = NULL;
275PFNEGLOUTPUTPORTATTRIBEXTPROC glad_eglOutputPortAttribEXT = NULL;
276PFNEGLPOSTSUBBUFFERNVPROC glad_eglPostSubBufferNV = NULL;
277PFNEGLPRESENTATIONTIMEANDROIDPROC glad_eglPresentationTimeANDROID = NULL;
278PFNEGLQUERYAPIPROC glad_eglQueryAPI = NULL;
279PFNEGLQUERYCONTEXTPROC glad_eglQueryContext = NULL;
280PFNEGLQUERYDEBUGKHRPROC glad_eglQueryDebugKHR = NULL;
281PFNEGLQUERYDEVICEATTRIBEXTPROC glad_eglQueryDeviceAttribEXT = NULL;
282PFNEGLQUERYDEVICEBINARYEXTPROC glad_eglQueryDeviceBinaryEXT = NULL;
283PFNEGLQUERYDEVICESTRINGEXTPROC glad_eglQueryDeviceStringEXT = NULL;
284PFNEGLQUERYDEVICESEXTPROC glad_eglQueryDevicesEXT = NULL;
285PFNEGLQUERYDISPLAYATTRIBEXTPROC glad_eglQueryDisplayAttribEXT = NULL;
286PFNEGLQUERYDISPLAYATTRIBKHRPROC glad_eglQueryDisplayAttribKHR = NULL;
287PFNEGLQUERYDISPLAYATTRIBNVPROC glad_eglQueryDisplayAttribNV = NULL;
288PFNEGLQUERYDMABUFFORMATSEXTPROC glad_eglQueryDmaBufFormatsEXT = NULL;
289PFNEGLQUERYDMABUFMODIFIERSEXTPROC glad_eglQueryDmaBufModifiersEXT = NULL;
290PFNEGLQUERYNATIVEDISPLAYNVPROC glad_eglQueryNativeDisplayNV = NULL;
291PFNEGLQUERYNATIVEPIXMAPNVPROC glad_eglQueryNativePixmapNV = NULL;
292PFNEGLQUERYNATIVEWINDOWNVPROC glad_eglQueryNativeWindowNV = NULL;
293PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC glad_eglQueryOutputLayerAttribEXT = NULL;
294PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC glad_eglQueryOutputLayerStringEXT = NULL;
295PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC glad_eglQueryOutputPortAttribEXT = NULL;
296PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC glad_eglQueryOutputPortStringEXT = NULL;
297PFNEGLQUERYSTREAMATTRIBKHRPROC glad_eglQueryStreamAttribKHR = NULL;
298PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC glad_eglQueryStreamConsumerEventNV = NULL;
299PFNEGLQUERYSTREAMKHRPROC glad_eglQueryStreamKHR = NULL;
300PFNEGLQUERYSTREAMMETADATANVPROC glad_eglQueryStreamMetadataNV = NULL;
301PFNEGLQUERYSTREAMTIMEKHRPROC glad_eglQueryStreamTimeKHR = NULL;
302PFNEGLQUERYSTREAMU64KHRPROC glad_eglQueryStreamu64KHR = NULL;
303PFNEGLQUERYSTRINGPROC glad_eglQueryString = NULL;
304PFNEGLQUERYSURFACEPROC glad_eglQuerySurface = NULL;
305PFNEGLQUERYSURFACE64KHRPROC glad_eglQuerySurface64KHR = NULL;
306PFNEGLQUERYSURFACEPOINTERANGLEPROC glad_eglQuerySurfacePointerANGLE = NULL;
307PFNEGLQUERYWAYLANDBUFFERWLPROC glad_eglQueryWaylandBufferWL = NULL;
308PFNEGLRELEASETEXIMAGEPROC glad_eglReleaseTexImage = NULL;
309PFNEGLRELEASETHREADPROC glad_eglReleaseThread = NULL;
310PFNEGLRESETSTREAMNVPROC glad_eglResetStreamNV = NULL;
311PFNEGLSETBLOBCACHEFUNCSANDROIDPROC glad_eglSetBlobCacheFuncsANDROID = NULL;
312PFNEGLSETDAMAGEREGIONKHRPROC glad_eglSetDamageRegionKHR = NULL;
313PFNEGLSETSTREAMATTRIBKHRPROC glad_eglSetStreamAttribKHR = NULL;
314PFNEGLSETSTREAMMETADATANVPROC glad_eglSetStreamMetadataNV = NULL;
315PFNEGLSIGNALSYNCKHRPROC glad_eglSignalSyncKHR = NULL;
316PFNEGLSIGNALSYNCNVPROC glad_eglSignalSyncNV = NULL;
317PFNEGLSTREAMACQUIREIMAGENVPROC glad_eglStreamAcquireImageNV = NULL;
318PFNEGLSTREAMATTRIBKHRPROC glad_eglStreamAttribKHR = NULL;
319PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC glad_eglStreamConsumerAcquireAttribKHR = NULL;
320PFNEGLSTREAMCONSUMERACQUIREKHRPROC glad_eglStreamConsumerAcquireKHR = NULL;
321PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC glad_eglStreamConsumerGLTextureExternalAttribsNV = NULL;
322PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC glad_eglStreamConsumerGLTextureExternalKHR = NULL;
323PFNEGLSTREAMCONSUMEROUTPUTEXTPROC glad_eglStreamConsumerOutputEXT = NULL;
324PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC glad_eglStreamConsumerReleaseAttribKHR = NULL;
325PFNEGLSTREAMCONSUMERRELEASEKHRPROC glad_eglStreamConsumerReleaseKHR = NULL;
326PFNEGLSTREAMFLUSHNVPROC glad_eglStreamFlushNV = NULL;
327PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC glad_eglStreamImageConsumerConnectNV = NULL;
328PFNEGLSTREAMRELEASEIMAGENVPROC glad_eglStreamReleaseImageNV = NULL;
329PFNEGLSURFACEATTRIBPROC glad_eglSurfaceAttrib = NULL;
330PFNEGLSWAPBUFFERSPROC glad_eglSwapBuffers = NULL;
331PFNEGLSWAPBUFFERSREGION2NOKPROC glad_eglSwapBuffersRegion2NOK = NULL;
332PFNEGLSWAPBUFFERSREGIONNOKPROC glad_eglSwapBuffersRegionNOK = NULL;
333PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC glad_eglSwapBuffersWithDamageEXT = NULL;
334PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC glad_eglSwapBuffersWithDamageKHR = NULL;
335PFNEGLSWAPINTERVALPROC glad_eglSwapInterval = NULL;
336PFNEGLTERMINATEPROC glad_eglTerminate = NULL;
337PFNEGLUNBINDWAYLANDDISPLAYWLPROC glad_eglUnbindWaylandDisplayWL = NULL;
338PFNEGLUNLOCKSURFACEKHRPROC glad_eglUnlockSurfaceKHR = NULL;
339PFNEGLUNSIGNALSYNCEXTPROC glad_eglUnsignalSyncEXT = NULL;
340PFNEGLWAITCLIENTPROC glad_eglWaitClient = NULL;
341PFNEGLWAITGLPROC glad_eglWaitGL = NULL;
342PFNEGLWAITNATIVEPROC glad_eglWaitNative = NULL;
343PFNEGLWAITSYNCPROC glad_eglWaitSync = NULL;
344PFNEGLWAITSYNCKHRPROC glad_eglWaitSyncKHR = NULL;
345
346
347static void glad_egl_load_EGL_VERSION_1_0( GLADuserptrloadfunc load, void* userptr) {
348 if(!GLAD_EGL_VERSION_1_0) return;
349 glad_eglChooseConfig = (PFNEGLCHOOSECONFIGPROC) load(userptr, "eglChooseConfig");
350 glad_eglCopyBuffers = (PFNEGLCOPYBUFFERSPROC) load(userptr, "eglCopyBuffers");
351 glad_eglCreateContext = (PFNEGLCREATECONTEXTPROC) load(userptr, "eglCreateContext");
352 glad_eglCreatePbufferSurface = (PFNEGLCREATEPBUFFERSURFACEPROC) load(userptr, "eglCreatePbufferSurface");
353 glad_eglCreatePixmapSurface = (PFNEGLCREATEPIXMAPSURFACEPROC) load(userptr, "eglCreatePixmapSurface");
354 glad_eglCreateWindowSurface = (PFNEGLCREATEWINDOWSURFACEPROC) load(userptr, "eglCreateWindowSurface");
355 glad_eglDestroyContext = (PFNEGLDESTROYCONTEXTPROC) load(userptr, "eglDestroyContext");
356 glad_eglDestroySurface = (PFNEGLDESTROYSURFACEPROC) load(userptr, "eglDestroySurface");
357 glad_eglGetConfigAttrib = (PFNEGLGETCONFIGATTRIBPROC) load(userptr, "eglGetConfigAttrib");
358 glad_eglGetConfigs = (PFNEGLGETCONFIGSPROC) load(userptr, "eglGetConfigs");
359 glad_eglGetCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC) load(userptr, "eglGetCurrentDisplay");
360 glad_eglGetCurrentSurface = (PFNEGLGETCURRENTSURFACEPROC) load(userptr, "eglGetCurrentSurface");
361 glad_eglGetDisplay = (PFNEGLGETDISPLAYPROC) load(userptr, "eglGetDisplay");
362 glad_eglGetError = (PFNEGLGETERRORPROC) load(userptr, "eglGetError");
363 glad_eglGetProcAddress = (PFNEGLGETPROCADDRESSPROC) load(userptr, "eglGetProcAddress");
364 glad_eglInitialize = (PFNEGLINITIALIZEPROC) load(userptr, "eglInitialize");
365 glad_eglMakeCurrent = (PFNEGLMAKECURRENTPROC) load(userptr, "eglMakeCurrent");
366 glad_eglQueryContext = (PFNEGLQUERYCONTEXTPROC) load(userptr, "eglQueryContext");
367 glad_eglQueryString = (PFNEGLQUERYSTRINGPROC) load(userptr, "eglQueryString");
368 glad_eglQuerySurface = (PFNEGLQUERYSURFACEPROC) load(userptr, "eglQuerySurface");
369 glad_eglSwapBuffers = (PFNEGLSWAPBUFFERSPROC) load(userptr, "eglSwapBuffers");
370 glad_eglTerminate = (PFNEGLTERMINATEPROC) load(userptr, "eglTerminate");
371 glad_eglWaitGL = (PFNEGLWAITGLPROC) load(userptr, "eglWaitGL");
372 glad_eglWaitNative = (PFNEGLWAITNATIVEPROC) load(userptr, "eglWaitNative");
373}
374static void glad_egl_load_EGL_VERSION_1_1( GLADuserptrloadfunc load, void* userptr) {
375 if(!GLAD_EGL_VERSION_1_1) return;
376 glad_eglBindTexImage = (PFNEGLBINDTEXIMAGEPROC) load(userptr, "eglBindTexImage");
377 glad_eglReleaseTexImage = (PFNEGLRELEASETEXIMAGEPROC) load(userptr, "eglReleaseTexImage");
378 glad_eglSurfaceAttrib = (PFNEGLSURFACEATTRIBPROC) load(userptr, "eglSurfaceAttrib");
379 glad_eglSwapInterval = (PFNEGLSWAPINTERVALPROC) load(userptr, "eglSwapInterval");
380}
381static void glad_egl_load_EGL_VERSION_1_2( GLADuserptrloadfunc load, void* userptr) {
382 if(!GLAD_EGL_VERSION_1_2) return;
383 glad_eglBindAPI = (PFNEGLBINDAPIPROC) load(userptr, "eglBindAPI");
384 glad_eglCreatePbufferFromClientBuffer = (PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) load(userptr, "eglCreatePbufferFromClientBuffer");
385 glad_eglQueryAPI = (PFNEGLQUERYAPIPROC) load(userptr, "eglQueryAPI");
386 glad_eglReleaseThread = (PFNEGLRELEASETHREADPROC) load(userptr, "eglReleaseThread");
387 glad_eglWaitClient = (PFNEGLWAITCLIENTPROC) load(userptr, "eglWaitClient");
388}
389static void glad_egl_load_EGL_VERSION_1_4( GLADuserptrloadfunc load, void* userptr) {
390 if(!GLAD_EGL_VERSION_1_4) return;
391 glad_eglGetCurrentContext = (PFNEGLGETCURRENTCONTEXTPROC) load(userptr, "eglGetCurrentContext");
392}
393static void glad_egl_load_EGL_VERSION_1_5( GLADuserptrloadfunc load, void* userptr) {
394 if(!GLAD_EGL_VERSION_1_5) return;
395 glad_eglClientWaitSync = (PFNEGLCLIENTWAITSYNCPROC) load(userptr, "eglClientWaitSync");
396 glad_eglCreateImage = (PFNEGLCREATEIMAGEPROC) load(userptr, "eglCreateImage");
397 glad_eglCreatePlatformPixmapSurface = (PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) load(userptr, "eglCreatePlatformPixmapSurface");
398 glad_eglCreatePlatformWindowSurface = (PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) load(userptr, "eglCreatePlatformWindowSurface");
399 glad_eglCreateSync = (PFNEGLCREATESYNCPROC) load(userptr, "eglCreateSync");
400 glad_eglDestroyImage = (PFNEGLDESTROYIMAGEPROC) load(userptr, "eglDestroyImage");
401 glad_eglDestroySync = (PFNEGLDESTROYSYNCPROC) load(userptr, "eglDestroySync");
402 glad_eglGetPlatformDisplay = (PFNEGLGETPLATFORMDISPLAYPROC) load(userptr, "eglGetPlatformDisplay");
403 glad_eglGetSyncAttrib = (PFNEGLGETSYNCATTRIBPROC) load(userptr, "eglGetSyncAttrib");
404 glad_eglWaitSync = (PFNEGLWAITSYNCPROC) load(userptr, "eglWaitSync");
405}
406static void glad_egl_load_EGL_ANDROID_blob_cache( GLADuserptrloadfunc load, void* userptr) {
407 if(!GLAD_EGL_ANDROID_blob_cache) return;
408 glad_eglSetBlobCacheFuncsANDROID = (PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) load(userptr, "eglSetBlobCacheFuncsANDROID");
409}
410static void glad_egl_load_EGL_ANDROID_create_native_client_buffer( GLADuserptrloadfunc load, void* userptr) {
411 if(!GLAD_EGL_ANDROID_create_native_client_buffer) return;
412 glad_eglCreateNativeClientBufferANDROID = (PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) load(userptr, "eglCreateNativeClientBufferANDROID");
413}
414static void glad_egl_load_EGL_ANDROID_get_frame_timestamps( GLADuserptrloadfunc load, void* userptr) {
415 if(!GLAD_EGL_ANDROID_get_frame_timestamps) return;
416 glad_eglGetCompositorTimingANDROID = (PFNEGLGETCOMPOSITORTIMINGANDROIDPROC) load(userptr, "eglGetCompositorTimingANDROID");
417 glad_eglGetCompositorTimingSupportedANDROID = (PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC) load(userptr, "eglGetCompositorTimingSupportedANDROID");
418 glad_eglGetFrameTimestampSupportedANDROID = (PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC) load(userptr, "eglGetFrameTimestampSupportedANDROID");
419 glad_eglGetFrameTimestampsANDROID = (PFNEGLGETFRAMETIMESTAMPSANDROIDPROC) load(userptr, "eglGetFrameTimestampsANDROID");
420 glad_eglGetNextFrameIdANDROID = (PFNEGLGETNEXTFRAMEIDANDROIDPROC) load(userptr, "eglGetNextFrameIdANDROID");
421}
422static void glad_egl_load_EGL_ANDROID_get_native_client_buffer( GLADuserptrloadfunc load, void* userptr) {
423 if(!GLAD_EGL_ANDROID_get_native_client_buffer) return;
424 glad_eglGetNativeClientBufferANDROID = (PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC) load(userptr, "eglGetNativeClientBufferANDROID");
425}
426static void glad_egl_load_EGL_ANDROID_native_fence_sync( GLADuserptrloadfunc load, void* userptr) {
427 if(!GLAD_EGL_ANDROID_native_fence_sync) return;
428 glad_eglDupNativeFenceFDANDROID = (PFNEGLDUPNATIVEFENCEFDANDROIDPROC) load(userptr, "eglDupNativeFenceFDANDROID");
429}
430static void glad_egl_load_EGL_ANDROID_presentation_time( GLADuserptrloadfunc load, void* userptr) {
431 if(!GLAD_EGL_ANDROID_presentation_time) return;
432 glad_eglPresentationTimeANDROID = (PFNEGLPRESENTATIONTIMEANDROIDPROC) load(userptr, "eglPresentationTimeANDROID");
433}
434static void glad_egl_load_EGL_ANGLE_query_surface_pointer( GLADuserptrloadfunc load, void* userptr) {
435 if(!GLAD_EGL_ANGLE_query_surface_pointer) return;
436 glad_eglQuerySurfacePointerANGLE = (PFNEGLQUERYSURFACEPOINTERANGLEPROC) load(userptr, "eglQuerySurfacePointerANGLE");
437}
438static void glad_egl_load_EGL_ANGLE_sync_control_rate( GLADuserptrloadfunc load, void* userptr) {
439 if(!GLAD_EGL_ANGLE_sync_control_rate) return;
440 glad_eglGetMscRateANGLE = (PFNEGLGETMSCRATEANGLEPROC) load(userptr, "eglGetMscRateANGLE");
441}
442static void glad_egl_load_EGL_EXT_client_sync( GLADuserptrloadfunc load, void* userptr) {
443 if(!GLAD_EGL_EXT_client_sync) return;
444 glad_eglClientSignalSyncEXT = (PFNEGLCLIENTSIGNALSYNCEXTPROC) load(userptr, "eglClientSignalSyncEXT");
445}
446static void glad_egl_load_EGL_EXT_compositor( GLADuserptrloadfunc load, void* userptr) {
447 if(!GLAD_EGL_EXT_compositor) return;
448 glad_eglCompositorBindTexWindowEXT = (PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC) load(userptr, "eglCompositorBindTexWindowEXT");
449 glad_eglCompositorSetContextAttributesEXT = (PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC) load(userptr, "eglCompositorSetContextAttributesEXT");
450 glad_eglCompositorSetContextListEXT = (PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC) load(userptr, "eglCompositorSetContextListEXT");
451 glad_eglCompositorSetSizeEXT = (PFNEGLCOMPOSITORSETSIZEEXTPROC) load(userptr, "eglCompositorSetSizeEXT");
452 glad_eglCompositorSetWindowAttributesEXT = (PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC) load(userptr, "eglCompositorSetWindowAttributesEXT");
453 glad_eglCompositorSetWindowListEXT = (PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC) load(userptr, "eglCompositorSetWindowListEXT");
454 glad_eglCompositorSwapPolicyEXT = (PFNEGLCOMPOSITORSWAPPOLICYEXTPROC) load(userptr, "eglCompositorSwapPolicyEXT");
455}
456static void glad_egl_load_EGL_EXT_device_base( GLADuserptrloadfunc load, void* userptr) {
457 if(!GLAD_EGL_EXT_device_base) return;
458 glad_eglQueryDeviceAttribEXT = (PFNEGLQUERYDEVICEATTRIBEXTPROC) load(userptr, "eglQueryDeviceAttribEXT");
459 glad_eglQueryDeviceStringEXT = (PFNEGLQUERYDEVICESTRINGEXTPROC) load(userptr, "eglQueryDeviceStringEXT");
460 glad_eglQueryDevicesEXT = (PFNEGLQUERYDEVICESEXTPROC) load(userptr, "eglQueryDevicesEXT");
461 glad_eglQueryDisplayAttribEXT = (PFNEGLQUERYDISPLAYATTRIBEXTPROC) load(userptr, "eglQueryDisplayAttribEXT");
462}
463static void glad_egl_load_EGL_EXT_device_enumeration( GLADuserptrloadfunc load, void* userptr) {
464 if(!GLAD_EGL_EXT_device_enumeration) return;
465 glad_eglQueryDevicesEXT = (PFNEGLQUERYDEVICESEXTPROC) load(userptr, "eglQueryDevicesEXT");
466}
467static void glad_egl_load_EGL_EXT_device_persistent_id( GLADuserptrloadfunc load, void* userptr) {
468 if(!GLAD_EGL_EXT_device_persistent_id) return;
469 glad_eglQueryDeviceBinaryEXT = (PFNEGLQUERYDEVICEBINARYEXTPROC) load(userptr, "eglQueryDeviceBinaryEXT");
470}
471static void glad_egl_load_EGL_EXT_device_query( GLADuserptrloadfunc load, void* userptr) {
472 if(!GLAD_EGL_EXT_device_query) return;
473 glad_eglQueryDeviceAttribEXT = (PFNEGLQUERYDEVICEATTRIBEXTPROC) load(userptr, "eglQueryDeviceAttribEXT");
474 glad_eglQueryDeviceStringEXT = (PFNEGLQUERYDEVICESTRINGEXTPROC) load(userptr, "eglQueryDeviceStringEXT");
475 glad_eglQueryDisplayAttribEXT = (PFNEGLQUERYDISPLAYATTRIBEXTPROC) load(userptr, "eglQueryDisplayAttribEXT");
476}
477static void glad_egl_load_EGL_EXT_image_dma_buf_import_modifiers( GLADuserptrloadfunc load, void* userptr) {
478 if(!GLAD_EGL_EXT_image_dma_buf_import_modifiers) return;
479 glad_eglQueryDmaBufFormatsEXT = (PFNEGLQUERYDMABUFFORMATSEXTPROC) load(userptr, "eglQueryDmaBufFormatsEXT");
480 glad_eglQueryDmaBufModifiersEXT = (PFNEGLQUERYDMABUFMODIFIERSEXTPROC) load(userptr, "eglQueryDmaBufModifiersEXT");
481}
482static void glad_egl_load_EGL_EXT_output_base( GLADuserptrloadfunc load, void* userptr) {
483 if(!GLAD_EGL_EXT_output_base) return;
484 glad_eglGetOutputLayersEXT = (PFNEGLGETOUTPUTLAYERSEXTPROC) load(userptr, "eglGetOutputLayersEXT");
485 glad_eglGetOutputPortsEXT = (PFNEGLGETOUTPUTPORTSEXTPROC) load(userptr, "eglGetOutputPortsEXT");
486 glad_eglOutputLayerAttribEXT = (PFNEGLOUTPUTLAYERATTRIBEXTPROC) load(userptr, "eglOutputLayerAttribEXT");
487 glad_eglOutputPortAttribEXT = (PFNEGLOUTPUTPORTATTRIBEXTPROC) load(userptr, "eglOutputPortAttribEXT");
488 glad_eglQueryOutputLayerAttribEXT = (PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) load(userptr, "eglQueryOutputLayerAttribEXT");
489 glad_eglQueryOutputLayerStringEXT = (PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) load(userptr, "eglQueryOutputLayerStringEXT");
490 glad_eglQueryOutputPortAttribEXT = (PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) load(userptr, "eglQueryOutputPortAttribEXT");
491 glad_eglQueryOutputPortStringEXT = (PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) load(userptr, "eglQueryOutputPortStringEXT");
492}
493static void glad_egl_load_EGL_EXT_platform_base( GLADuserptrloadfunc load, void* userptr) {
494 if(!GLAD_EGL_EXT_platform_base) return;
495 glad_eglCreatePlatformPixmapSurfaceEXT = (PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) load(userptr, "eglCreatePlatformPixmapSurfaceEXT");
496 glad_eglCreatePlatformWindowSurfaceEXT = (PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) load(userptr, "eglCreatePlatformWindowSurfaceEXT");
497 glad_eglGetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC) load(userptr, "eglGetPlatformDisplayEXT");
498}
499static void glad_egl_load_EGL_EXT_stream_consumer_egloutput( GLADuserptrloadfunc load, void* userptr) {
500 if(!GLAD_EGL_EXT_stream_consumer_egloutput) return;
501 glad_eglStreamConsumerOutputEXT = (PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) load(userptr, "eglStreamConsumerOutputEXT");
502}
503static void glad_egl_load_EGL_EXT_swap_buffers_with_damage( GLADuserptrloadfunc load, void* userptr) {
504 if(!GLAD_EGL_EXT_swap_buffers_with_damage) return;
505 glad_eglSwapBuffersWithDamageEXT = (PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) load(userptr, "eglSwapBuffersWithDamageEXT");
506}
507static void glad_egl_load_EGL_EXT_sync_reuse( GLADuserptrloadfunc load, void* userptr) {
508 if(!GLAD_EGL_EXT_sync_reuse) return;
509 glad_eglUnsignalSyncEXT = (PFNEGLUNSIGNALSYNCEXTPROC) load(userptr, "eglUnsignalSyncEXT");
510}
511static void glad_egl_load_EGL_HI_clientpixmap( GLADuserptrloadfunc load, void* userptr) {
512 if(!GLAD_EGL_HI_clientpixmap) return;
513 glad_eglCreatePixmapSurfaceHI = (PFNEGLCREATEPIXMAPSURFACEHIPROC) load(userptr, "eglCreatePixmapSurfaceHI");
514}
515static void glad_egl_load_EGL_KHR_cl_event2( GLADuserptrloadfunc load, void* userptr) {
516 if(!GLAD_EGL_KHR_cl_event2) return;
517 glad_eglCreateSync64KHR = (PFNEGLCREATESYNC64KHRPROC) load(userptr, "eglCreateSync64KHR");
518}
519static void glad_egl_load_EGL_KHR_debug( GLADuserptrloadfunc load, void* userptr) {
520 if(!GLAD_EGL_KHR_debug) return;
521 glad_eglDebugMessageControlKHR = (PFNEGLDEBUGMESSAGECONTROLKHRPROC) load(userptr, "eglDebugMessageControlKHR");
522 glad_eglLabelObjectKHR = (PFNEGLLABELOBJECTKHRPROC) load(userptr, "eglLabelObjectKHR");
523 glad_eglQueryDebugKHR = (PFNEGLQUERYDEBUGKHRPROC) load(userptr, "eglQueryDebugKHR");
524}
525static void glad_egl_load_EGL_KHR_display_reference( GLADuserptrloadfunc load, void* userptr) {
526 if(!GLAD_EGL_KHR_display_reference) return;
527 glad_eglQueryDisplayAttribKHR = (PFNEGLQUERYDISPLAYATTRIBKHRPROC) load(userptr, "eglQueryDisplayAttribKHR");
528}
529static void glad_egl_load_EGL_KHR_fence_sync( GLADuserptrloadfunc load, void* userptr) {
530 if(!GLAD_EGL_KHR_fence_sync) return;
531 glad_eglClientWaitSyncKHR = (PFNEGLCLIENTWAITSYNCKHRPROC) load(userptr, "eglClientWaitSyncKHR");
532 glad_eglCreateSyncKHR = (PFNEGLCREATESYNCKHRPROC) load(userptr, "eglCreateSyncKHR");
533 glad_eglDestroySyncKHR = (PFNEGLDESTROYSYNCKHRPROC) load(userptr, "eglDestroySyncKHR");
534 glad_eglGetSyncAttribKHR = (PFNEGLGETSYNCATTRIBKHRPROC) load(userptr, "eglGetSyncAttribKHR");
535}
536static void glad_egl_load_EGL_KHR_image( GLADuserptrloadfunc load, void* userptr) {
537 if(!GLAD_EGL_KHR_image) return;
538 glad_eglCreateImageKHR = (PFNEGLCREATEIMAGEKHRPROC) load(userptr, "eglCreateImageKHR");
539 glad_eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC) load(userptr, "eglDestroyImageKHR");
540}
541static void glad_egl_load_EGL_KHR_image_base( GLADuserptrloadfunc load, void* userptr) {
542 if(!GLAD_EGL_KHR_image_base) return;
543 glad_eglCreateImageKHR = (PFNEGLCREATEIMAGEKHRPROC) load(userptr, "eglCreateImageKHR");
544 glad_eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC) load(userptr, "eglDestroyImageKHR");
545}
546static void glad_egl_load_EGL_KHR_lock_surface( GLADuserptrloadfunc load, void* userptr) {
547 if(!GLAD_EGL_KHR_lock_surface) return;
548 glad_eglLockSurfaceKHR = (PFNEGLLOCKSURFACEKHRPROC) load(userptr, "eglLockSurfaceKHR");
549 glad_eglUnlockSurfaceKHR = (PFNEGLUNLOCKSURFACEKHRPROC) load(userptr, "eglUnlockSurfaceKHR");
550}
551static void glad_egl_load_EGL_KHR_lock_surface3( GLADuserptrloadfunc load, void* userptr) {
552 if(!GLAD_EGL_KHR_lock_surface3) return;
553 glad_eglLockSurfaceKHR = (PFNEGLLOCKSURFACEKHRPROC) load(userptr, "eglLockSurfaceKHR");
554 glad_eglQuerySurface64KHR = (PFNEGLQUERYSURFACE64KHRPROC) load(userptr, "eglQuerySurface64KHR");
555 glad_eglUnlockSurfaceKHR = (PFNEGLUNLOCKSURFACEKHRPROC) load(userptr, "eglUnlockSurfaceKHR");
556}
557static void glad_egl_load_EGL_KHR_partial_update( GLADuserptrloadfunc load, void* userptr) {
558 if(!GLAD_EGL_KHR_partial_update) return;
559 glad_eglSetDamageRegionKHR = (PFNEGLSETDAMAGEREGIONKHRPROC) load(userptr, "eglSetDamageRegionKHR");
560}
561static void glad_egl_load_EGL_KHR_reusable_sync( GLADuserptrloadfunc load, void* userptr) {
562 if(!GLAD_EGL_KHR_reusable_sync) return;
563 glad_eglClientWaitSyncKHR = (PFNEGLCLIENTWAITSYNCKHRPROC) load(userptr, "eglClientWaitSyncKHR");
564 glad_eglCreateSyncKHR = (PFNEGLCREATESYNCKHRPROC) load(userptr, "eglCreateSyncKHR");
565 glad_eglDestroySyncKHR = (PFNEGLDESTROYSYNCKHRPROC) load(userptr, "eglDestroySyncKHR");
566 glad_eglGetSyncAttribKHR = (PFNEGLGETSYNCATTRIBKHRPROC) load(userptr, "eglGetSyncAttribKHR");
567 glad_eglSignalSyncKHR = (PFNEGLSIGNALSYNCKHRPROC) load(userptr, "eglSignalSyncKHR");
568}
569static void glad_egl_load_EGL_KHR_stream( GLADuserptrloadfunc load, void* userptr) {
570 if(!GLAD_EGL_KHR_stream) return;
571 glad_eglCreateStreamKHR = (PFNEGLCREATESTREAMKHRPROC) load(userptr, "eglCreateStreamKHR");
572 glad_eglDestroyStreamKHR = (PFNEGLDESTROYSTREAMKHRPROC) load(userptr, "eglDestroyStreamKHR");
573 glad_eglQueryStreamKHR = (PFNEGLQUERYSTREAMKHRPROC) load(userptr, "eglQueryStreamKHR");
574 glad_eglQueryStreamu64KHR = (PFNEGLQUERYSTREAMU64KHRPROC) load(userptr, "eglQueryStreamu64KHR");
575 glad_eglStreamAttribKHR = (PFNEGLSTREAMATTRIBKHRPROC) load(userptr, "eglStreamAttribKHR");
576}
577static void glad_egl_load_EGL_KHR_stream_attrib( GLADuserptrloadfunc load, void* userptr) {
578 if(!GLAD_EGL_KHR_stream_attrib) return;
579 glad_eglCreateStreamAttribKHR = (PFNEGLCREATESTREAMATTRIBKHRPROC) load(userptr, "eglCreateStreamAttribKHR");
580 glad_eglQueryStreamAttribKHR = (PFNEGLQUERYSTREAMATTRIBKHRPROC) load(userptr, "eglQueryStreamAttribKHR");
581 glad_eglSetStreamAttribKHR = (PFNEGLSETSTREAMATTRIBKHRPROC) load(userptr, "eglSetStreamAttribKHR");
582 glad_eglStreamConsumerAcquireAttribKHR = (PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC) load(userptr, "eglStreamConsumerAcquireAttribKHR");
583 glad_eglStreamConsumerReleaseAttribKHR = (PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC) load(userptr, "eglStreamConsumerReleaseAttribKHR");
584}
585static void glad_egl_load_EGL_KHR_stream_consumer_gltexture( GLADuserptrloadfunc load, void* userptr) {
586 if(!GLAD_EGL_KHR_stream_consumer_gltexture) return;
587 glad_eglStreamConsumerAcquireKHR = (PFNEGLSTREAMCONSUMERACQUIREKHRPROC) load(userptr, "eglStreamConsumerAcquireKHR");
588 glad_eglStreamConsumerGLTextureExternalKHR = (PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) load(userptr, "eglStreamConsumerGLTextureExternalKHR");
589 glad_eglStreamConsumerReleaseKHR = (PFNEGLSTREAMCONSUMERRELEASEKHRPROC) load(userptr, "eglStreamConsumerReleaseKHR");
590}
591static void glad_egl_load_EGL_KHR_stream_cross_process_fd( GLADuserptrloadfunc load, void* userptr) {
592 if(!GLAD_EGL_KHR_stream_cross_process_fd) return;
593 glad_eglCreateStreamFromFileDescriptorKHR = (PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) load(userptr, "eglCreateStreamFromFileDescriptorKHR");
594 glad_eglGetStreamFileDescriptorKHR = (PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) load(userptr, "eglGetStreamFileDescriptorKHR");
595}
596static void glad_egl_load_EGL_KHR_stream_fifo( GLADuserptrloadfunc load, void* userptr) {
597 if(!GLAD_EGL_KHR_stream_fifo) return;
598 glad_eglQueryStreamTimeKHR = (PFNEGLQUERYSTREAMTIMEKHRPROC) load(userptr, "eglQueryStreamTimeKHR");
599}
600static void glad_egl_load_EGL_KHR_stream_producer_eglsurface( GLADuserptrloadfunc load, void* userptr) {
601 if(!GLAD_EGL_KHR_stream_producer_eglsurface) return;
602 glad_eglCreateStreamProducerSurfaceKHR = (PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) load(userptr, "eglCreateStreamProducerSurfaceKHR");
603}
604static void glad_egl_load_EGL_KHR_swap_buffers_with_damage( GLADuserptrloadfunc load, void* userptr) {
605 if(!GLAD_EGL_KHR_swap_buffers_with_damage) return;
606 glad_eglSwapBuffersWithDamageKHR = (PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) load(userptr, "eglSwapBuffersWithDamageKHR");
607}
608static void glad_egl_load_EGL_KHR_wait_sync( GLADuserptrloadfunc load, void* userptr) {
609 if(!GLAD_EGL_KHR_wait_sync) return;
610 glad_eglWaitSyncKHR = (PFNEGLWAITSYNCKHRPROC) load(userptr, "eglWaitSyncKHR");
611}
612static void glad_egl_load_EGL_MESA_drm_image( GLADuserptrloadfunc load, void* userptr) {
613 if(!GLAD_EGL_MESA_drm_image) return;
614 glad_eglCreateDRMImageMESA = (PFNEGLCREATEDRMIMAGEMESAPROC) load(userptr, "eglCreateDRMImageMESA");
615 glad_eglExportDRMImageMESA = (PFNEGLEXPORTDRMIMAGEMESAPROC) load(userptr, "eglExportDRMImageMESA");
616}
617static void glad_egl_load_EGL_MESA_image_dma_buf_export( GLADuserptrloadfunc load, void* userptr) {
618 if(!GLAD_EGL_MESA_image_dma_buf_export) return;
619 glad_eglExportDMABUFImageMESA = (PFNEGLEXPORTDMABUFIMAGEMESAPROC) load(userptr, "eglExportDMABUFImageMESA");
620 glad_eglExportDMABUFImageQueryMESA = (PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) load(userptr, "eglExportDMABUFImageQueryMESA");
621}
622static void glad_egl_load_EGL_MESA_query_driver( GLADuserptrloadfunc load, void* userptr) {
623 if(!GLAD_EGL_MESA_query_driver) return;
624 glad_eglGetDisplayDriverConfig = (PFNEGLGETDISPLAYDRIVERCONFIGPROC) load(userptr, "eglGetDisplayDriverConfig");
625 glad_eglGetDisplayDriverName = (PFNEGLGETDISPLAYDRIVERNAMEPROC) load(userptr, "eglGetDisplayDriverName");
626}
627static void glad_egl_load_EGL_NOK_swap_region( GLADuserptrloadfunc load, void* userptr) {
628 if(!GLAD_EGL_NOK_swap_region) return;
629 glad_eglSwapBuffersRegionNOK = (PFNEGLSWAPBUFFERSREGIONNOKPROC) load(userptr, "eglSwapBuffersRegionNOK");
630}
631static void glad_egl_load_EGL_NOK_swap_region2( GLADuserptrloadfunc load, void* userptr) {
632 if(!GLAD_EGL_NOK_swap_region2) return;
633 glad_eglSwapBuffersRegion2NOK = (PFNEGLSWAPBUFFERSREGION2NOKPROC) load(userptr, "eglSwapBuffersRegion2NOK");
634}
635static void glad_egl_load_EGL_NV_native_query( GLADuserptrloadfunc load, void* userptr) {
636 if(!GLAD_EGL_NV_native_query) return;
637 glad_eglQueryNativeDisplayNV = (PFNEGLQUERYNATIVEDISPLAYNVPROC) load(userptr, "eglQueryNativeDisplayNV");
638 glad_eglQueryNativePixmapNV = (PFNEGLQUERYNATIVEPIXMAPNVPROC) load(userptr, "eglQueryNativePixmapNV");
639 glad_eglQueryNativeWindowNV = (PFNEGLQUERYNATIVEWINDOWNVPROC) load(userptr, "eglQueryNativeWindowNV");
640}
641static void glad_egl_load_EGL_NV_post_sub_buffer( GLADuserptrloadfunc load, void* userptr) {
642 if(!GLAD_EGL_NV_post_sub_buffer) return;
643 glad_eglPostSubBufferNV = (PFNEGLPOSTSUBBUFFERNVPROC) load(userptr, "eglPostSubBufferNV");
644}
645static void glad_egl_load_EGL_NV_stream_consumer_eglimage( GLADuserptrloadfunc load, void* userptr) {
646 if(!GLAD_EGL_NV_stream_consumer_eglimage) return;
647 glad_eglQueryStreamConsumerEventNV = (PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) load(userptr, "eglQueryStreamConsumerEventNV");
648 glad_eglStreamAcquireImageNV = (PFNEGLSTREAMACQUIREIMAGENVPROC) load(userptr, "eglStreamAcquireImageNV");
649 glad_eglStreamImageConsumerConnectNV = (PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) load(userptr, "eglStreamImageConsumerConnectNV");
650 glad_eglStreamReleaseImageNV = (PFNEGLSTREAMRELEASEIMAGENVPROC) load(userptr, "eglStreamReleaseImageNV");
651}
652static void glad_egl_load_EGL_NV_stream_consumer_gltexture_yuv( GLADuserptrloadfunc load, void* userptr) {
653 if(!GLAD_EGL_NV_stream_consumer_gltexture_yuv) return;
654 glad_eglStreamConsumerGLTextureExternalAttribsNV = (PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) load(userptr, "eglStreamConsumerGLTextureExternalAttribsNV");
655}
656static void glad_egl_load_EGL_NV_stream_flush( GLADuserptrloadfunc load, void* userptr) {
657 if(!GLAD_EGL_NV_stream_flush) return;
658 glad_eglStreamFlushNV = (PFNEGLSTREAMFLUSHNVPROC) load(userptr, "eglStreamFlushNV");
659}
660static void glad_egl_load_EGL_NV_stream_metadata( GLADuserptrloadfunc load, void* userptr) {
661 if(!GLAD_EGL_NV_stream_metadata) return;
662 glad_eglQueryDisplayAttribNV = (PFNEGLQUERYDISPLAYATTRIBNVPROC) load(userptr, "eglQueryDisplayAttribNV");
663 glad_eglQueryStreamMetadataNV = (PFNEGLQUERYSTREAMMETADATANVPROC) load(userptr, "eglQueryStreamMetadataNV");
664 glad_eglSetStreamMetadataNV = (PFNEGLSETSTREAMMETADATANVPROC) load(userptr, "eglSetStreamMetadataNV");
665}
666static void glad_egl_load_EGL_NV_stream_reset( GLADuserptrloadfunc load, void* userptr) {
667 if(!GLAD_EGL_NV_stream_reset) return;
668 glad_eglResetStreamNV = (PFNEGLRESETSTREAMNVPROC) load(userptr, "eglResetStreamNV");
669}
670static void glad_egl_load_EGL_NV_stream_sync( GLADuserptrloadfunc load, void* userptr) {
671 if(!GLAD_EGL_NV_stream_sync) return;
672 glad_eglCreateStreamSyncNV = (PFNEGLCREATESTREAMSYNCNVPROC) load(userptr, "eglCreateStreamSyncNV");
673}
674static void glad_egl_load_EGL_NV_sync( GLADuserptrloadfunc load, void* userptr) {
675 if(!GLAD_EGL_NV_sync) return;
676 glad_eglClientWaitSyncNV = (PFNEGLCLIENTWAITSYNCNVPROC) load(userptr, "eglClientWaitSyncNV");
677 glad_eglCreateFenceSyncNV = (PFNEGLCREATEFENCESYNCNVPROC) load(userptr, "eglCreateFenceSyncNV");
678 glad_eglDestroySyncNV = (PFNEGLDESTROYSYNCNVPROC) load(userptr, "eglDestroySyncNV");
679 glad_eglFenceNV = (PFNEGLFENCENVPROC) load(userptr, "eglFenceNV");
680 glad_eglGetSyncAttribNV = (PFNEGLGETSYNCATTRIBNVPROC) load(userptr, "eglGetSyncAttribNV");
681 glad_eglSignalSyncNV = (PFNEGLSIGNALSYNCNVPROC) load(userptr, "eglSignalSyncNV");
682}
683static void glad_egl_load_EGL_NV_system_time( GLADuserptrloadfunc load, void* userptr) {
684 if(!GLAD_EGL_NV_system_time) return;
685 glad_eglGetSystemTimeFrequencyNV = (PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) load(userptr, "eglGetSystemTimeFrequencyNV");
686 glad_eglGetSystemTimeNV = (PFNEGLGETSYSTEMTIMENVPROC) load(userptr, "eglGetSystemTimeNV");
687}
688static void glad_egl_load_EGL_WL_bind_wayland_display( GLADuserptrloadfunc load, void* userptr) {
689 if(!GLAD_EGL_WL_bind_wayland_display) return;
690 glad_eglBindWaylandDisplayWL = (PFNEGLBINDWAYLANDDISPLAYWLPROC) load(userptr, "eglBindWaylandDisplayWL");
691 glad_eglQueryWaylandBufferWL = (PFNEGLQUERYWAYLANDBUFFERWLPROC) load(userptr, "eglQueryWaylandBufferWL");
692 glad_eglUnbindWaylandDisplayWL = (PFNEGLUNBINDWAYLANDDISPLAYWLPROC) load(userptr, "eglUnbindWaylandDisplayWL");
693}
694static void glad_egl_load_EGL_WL_create_wayland_buffer_from_image( GLADuserptrloadfunc load, void* userptr) {
695 if(!GLAD_EGL_WL_create_wayland_buffer_from_image) return;
696 glad_eglCreateWaylandBufferFromImageWL = (PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC) load(userptr, "eglCreateWaylandBufferFromImageWL");
697}
698
699
700
701static int glad_egl_get_extensions(EGLDisplay display, const char **extensions) {
702 *extensions = eglQueryString(display, EGL_EXTENSIONS);
703
704 return extensions != NULL;
705}
706
707static int glad_egl_has_extension(const char *extensions, const char *ext) {
708 const char *loc;
709 const char *terminator;
710 if(extensions == NULL) {
711 return 0;
712 }
713 while(1) {
714 loc = strstr(extensions, ext);
715 if(loc == NULL) {
716 return 0;
717 }
718 terminator = loc + strlen(ext);
719 if((loc == extensions || *(loc - 1) == ' ') &&
720 (*terminator == ' ' || *terminator == '\0')) {
721 return 1;
722 }
723 extensions = terminator;
724 }
725}
726
727static GLADapiproc glad_egl_get_proc_from_userptr(void *userptr, const char *name) {
728 return (GLAD_GNUC_EXTENSION (GLADapiproc (*)(const char *name)) userptr)(name);
729}
730
731static int glad_egl_find_extensions_egl(EGLDisplay display) {
732 const char *extensions;
733 if (!glad_egl_get_extensions(display, &extensions)) return 0;
734
735 GLAD_EGL_ANDROID_GLES_layers = glad_egl_has_extension(extensions, "EGL_ANDROID_GLES_layers");
736 GLAD_EGL_ANDROID_blob_cache = glad_egl_has_extension(extensions, "EGL_ANDROID_blob_cache");
737 GLAD_EGL_ANDROID_create_native_client_buffer = glad_egl_has_extension(extensions, "EGL_ANDROID_create_native_client_buffer");
738 GLAD_EGL_ANDROID_framebuffer_target = glad_egl_has_extension(extensions, "EGL_ANDROID_framebuffer_target");
739 GLAD_EGL_ANDROID_front_buffer_auto_refresh = glad_egl_has_extension(extensions, "EGL_ANDROID_front_buffer_auto_refresh");
740 GLAD_EGL_ANDROID_get_frame_timestamps = glad_egl_has_extension(extensions, "EGL_ANDROID_get_frame_timestamps");
741 GLAD_EGL_ANDROID_get_native_client_buffer = glad_egl_has_extension(extensions, "EGL_ANDROID_get_native_client_buffer");
742 GLAD_EGL_ANDROID_image_native_buffer = glad_egl_has_extension(extensions, "EGL_ANDROID_image_native_buffer");
743 GLAD_EGL_ANDROID_native_fence_sync = glad_egl_has_extension(extensions, "EGL_ANDROID_native_fence_sync");
744 GLAD_EGL_ANDROID_presentation_time = glad_egl_has_extension(extensions, "EGL_ANDROID_presentation_time");
745 GLAD_EGL_ANDROID_recordable = glad_egl_has_extension(extensions, "EGL_ANDROID_recordable");
746 GLAD_EGL_ANGLE_d3d_share_handle_client_buffer = glad_egl_has_extension(extensions, "EGL_ANGLE_d3d_share_handle_client_buffer");
747 GLAD_EGL_ANGLE_device_d3d = glad_egl_has_extension(extensions, "EGL_ANGLE_device_d3d");
748 GLAD_EGL_ANGLE_query_surface_pointer = glad_egl_has_extension(extensions, "EGL_ANGLE_query_surface_pointer");
749 GLAD_EGL_ANGLE_surface_d3d_texture_2d_share_handle = glad_egl_has_extension(extensions, "EGL_ANGLE_surface_d3d_texture_2d_share_handle");
750 GLAD_EGL_ANGLE_sync_control_rate = glad_egl_has_extension(extensions, "EGL_ANGLE_sync_control_rate");
751 GLAD_EGL_ANGLE_window_fixed_size = glad_egl_has_extension(extensions, "EGL_ANGLE_window_fixed_size");
752 GLAD_EGL_ARM_image_format = glad_egl_has_extension(extensions, "EGL_ARM_image_format");
753 GLAD_EGL_ARM_implicit_external_sync = glad_egl_has_extension(extensions, "EGL_ARM_implicit_external_sync");
754 GLAD_EGL_ARM_pixmap_multisample_discard = glad_egl_has_extension(extensions, "EGL_ARM_pixmap_multisample_discard");
755 GLAD_EGL_EXT_bind_to_front = glad_egl_has_extension(extensions, "EGL_EXT_bind_to_front");
756 GLAD_EGL_EXT_buffer_age = glad_egl_has_extension(extensions, "EGL_EXT_buffer_age");
757 GLAD_EGL_EXT_client_extensions = glad_egl_has_extension(extensions, "EGL_EXT_client_extensions");
758 GLAD_EGL_EXT_client_sync = glad_egl_has_extension(extensions, "EGL_EXT_client_sync");
759 GLAD_EGL_EXT_compositor = glad_egl_has_extension(extensions, "EGL_EXT_compositor");
760 GLAD_EGL_EXT_config_select_group = glad_egl_has_extension(extensions, "EGL_EXT_config_select_group");
761 GLAD_EGL_EXT_create_context_robustness = glad_egl_has_extension(extensions, "EGL_EXT_create_context_robustness");
762 GLAD_EGL_EXT_device_base = glad_egl_has_extension(extensions, "EGL_EXT_device_base");
763 GLAD_EGL_EXT_device_drm = glad_egl_has_extension(extensions, "EGL_EXT_device_drm");
764 GLAD_EGL_EXT_device_drm_render_node = glad_egl_has_extension(extensions, "EGL_EXT_device_drm_render_node");
765 GLAD_EGL_EXT_device_enumeration = glad_egl_has_extension(extensions, "EGL_EXT_device_enumeration");
766 GLAD_EGL_EXT_device_openwf = glad_egl_has_extension(extensions, "EGL_EXT_device_openwf");
767 GLAD_EGL_EXT_device_persistent_id = glad_egl_has_extension(extensions, "EGL_EXT_device_persistent_id");
768 GLAD_EGL_EXT_device_query = glad_egl_has_extension(extensions, "EGL_EXT_device_query");
769 GLAD_EGL_EXT_device_query_name = glad_egl_has_extension(extensions, "EGL_EXT_device_query_name");
770 GLAD_EGL_EXT_gl_colorspace_bt2020_linear = glad_egl_has_extension(extensions, "EGL_EXT_gl_colorspace_bt2020_linear");
771 GLAD_EGL_EXT_gl_colorspace_bt2020_pq = glad_egl_has_extension(extensions, "EGL_EXT_gl_colorspace_bt2020_pq");
772 GLAD_EGL_EXT_gl_colorspace_display_p3 = glad_egl_has_extension(extensions, "EGL_EXT_gl_colorspace_display_p3");
773 GLAD_EGL_EXT_gl_colorspace_display_p3_linear = glad_egl_has_extension(extensions, "EGL_EXT_gl_colorspace_display_p3_linear");
774 GLAD_EGL_EXT_gl_colorspace_display_p3_passthrough = glad_egl_has_extension(extensions, "EGL_EXT_gl_colorspace_display_p3_passthrough");
775 GLAD_EGL_EXT_gl_colorspace_scrgb = glad_egl_has_extension(extensions, "EGL_EXT_gl_colorspace_scrgb");
776 GLAD_EGL_EXT_gl_colorspace_scrgb_linear = glad_egl_has_extension(extensions, "EGL_EXT_gl_colorspace_scrgb_linear");
777 GLAD_EGL_EXT_image_dma_buf_import = glad_egl_has_extension(extensions, "EGL_EXT_image_dma_buf_import");
778 GLAD_EGL_EXT_image_dma_buf_import_modifiers = glad_egl_has_extension(extensions, "EGL_EXT_image_dma_buf_import_modifiers");
779 GLAD_EGL_EXT_image_gl_colorspace = glad_egl_has_extension(extensions, "EGL_EXT_image_gl_colorspace");
780 GLAD_EGL_EXT_image_implicit_sync_control = glad_egl_has_extension(extensions, "EGL_EXT_image_implicit_sync_control");
781 GLAD_EGL_EXT_multiview_window = glad_egl_has_extension(extensions, "EGL_EXT_multiview_window");
782 GLAD_EGL_EXT_output_base = glad_egl_has_extension(extensions, "EGL_EXT_output_base");
783 GLAD_EGL_EXT_output_drm = glad_egl_has_extension(extensions, "EGL_EXT_output_drm");
784 GLAD_EGL_EXT_output_openwf = glad_egl_has_extension(extensions, "EGL_EXT_output_openwf");
785 GLAD_EGL_EXT_pixel_format_float = glad_egl_has_extension(extensions, "EGL_EXT_pixel_format_float");
786 GLAD_EGL_EXT_platform_base = glad_egl_has_extension(extensions, "EGL_EXT_platform_base");
787 GLAD_EGL_EXT_platform_device = glad_egl_has_extension(extensions, "EGL_EXT_platform_device");
788 GLAD_EGL_EXT_platform_wayland = glad_egl_has_extension(extensions, "EGL_EXT_platform_wayland");
789 GLAD_EGL_EXT_platform_x11 = glad_egl_has_extension(extensions, "EGL_EXT_platform_x11");
790 GLAD_EGL_EXT_platform_xcb = glad_egl_has_extension(extensions, "EGL_EXT_platform_xcb");
791 GLAD_EGL_EXT_present_opaque = glad_egl_has_extension(extensions, "EGL_EXT_present_opaque");
792 GLAD_EGL_EXT_protected_content = glad_egl_has_extension(extensions, "EGL_EXT_protected_content");
793 GLAD_EGL_EXT_protected_surface = glad_egl_has_extension(extensions, "EGL_EXT_protected_surface");
794 GLAD_EGL_EXT_stream_consumer_egloutput = glad_egl_has_extension(extensions, "EGL_EXT_stream_consumer_egloutput");
795 GLAD_EGL_EXT_surface_CTA861_3_metadata = glad_egl_has_extension(extensions, "EGL_EXT_surface_CTA861_3_metadata");
796 GLAD_EGL_EXT_surface_SMPTE2086_metadata = glad_egl_has_extension(extensions, "EGL_EXT_surface_SMPTE2086_metadata");
797 GLAD_EGL_EXT_swap_buffers_with_damage = glad_egl_has_extension(extensions, "EGL_EXT_swap_buffers_with_damage");
798 GLAD_EGL_EXT_sync_reuse = glad_egl_has_extension(extensions, "EGL_EXT_sync_reuse");
799 GLAD_EGL_EXT_yuv_surface = glad_egl_has_extension(extensions, "EGL_EXT_yuv_surface");
800 GLAD_EGL_HI_clientpixmap = glad_egl_has_extension(extensions, "EGL_HI_clientpixmap");
801 GLAD_EGL_HI_colorformats = glad_egl_has_extension(extensions, "EGL_HI_colorformats");
802 GLAD_EGL_IMG_context_priority = glad_egl_has_extension(extensions, "EGL_IMG_context_priority");
803 GLAD_EGL_IMG_image_plane_attribs = glad_egl_has_extension(extensions, "EGL_IMG_image_plane_attribs");
804 GLAD_EGL_KHR_cl_event = glad_egl_has_extension(extensions, "EGL_KHR_cl_event");
805 GLAD_EGL_KHR_cl_event2 = glad_egl_has_extension(extensions, "EGL_KHR_cl_event2");
806 GLAD_EGL_KHR_client_get_all_proc_addresses = glad_egl_has_extension(extensions, "EGL_KHR_client_get_all_proc_addresses");
807 GLAD_EGL_KHR_config_attribs = glad_egl_has_extension(extensions, "EGL_KHR_config_attribs");
808 GLAD_EGL_KHR_context_flush_control = glad_egl_has_extension(extensions, "EGL_KHR_context_flush_control");
809 GLAD_EGL_KHR_create_context = glad_egl_has_extension(extensions, "EGL_KHR_create_context");
810 GLAD_EGL_KHR_create_context_no_error = glad_egl_has_extension(extensions, "EGL_KHR_create_context_no_error");
811 GLAD_EGL_KHR_debug = glad_egl_has_extension(extensions, "EGL_KHR_debug");
812 GLAD_EGL_KHR_display_reference = glad_egl_has_extension(extensions, "EGL_KHR_display_reference");
813 GLAD_EGL_KHR_fence_sync = glad_egl_has_extension(extensions, "EGL_KHR_fence_sync");
814 GLAD_EGL_KHR_get_all_proc_addresses = glad_egl_has_extension(extensions, "EGL_KHR_get_all_proc_addresses");
815 GLAD_EGL_KHR_gl_colorspace = glad_egl_has_extension(extensions, "EGL_KHR_gl_colorspace");
816 GLAD_EGL_KHR_gl_renderbuffer_image = glad_egl_has_extension(extensions, "EGL_KHR_gl_renderbuffer_image");
817 GLAD_EGL_KHR_gl_texture_2D_image = glad_egl_has_extension(extensions, "EGL_KHR_gl_texture_2D_image");
818 GLAD_EGL_KHR_gl_texture_3D_image = glad_egl_has_extension(extensions, "EGL_KHR_gl_texture_3D_image");
819 GLAD_EGL_KHR_gl_texture_cubemap_image = glad_egl_has_extension(extensions, "EGL_KHR_gl_texture_cubemap_image");
820 GLAD_EGL_KHR_image = glad_egl_has_extension(extensions, "EGL_KHR_image");
821 GLAD_EGL_KHR_image_base = glad_egl_has_extension(extensions, "EGL_KHR_image_base");
822 GLAD_EGL_KHR_image_pixmap = glad_egl_has_extension(extensions, "EGL_KHR_image_pixmap");
823 GLAD_EGL_KHR_lock_surface = glad_egl_has_extension(extensions, "EGL_KHR_lock_surface");
824 GLAD_EGL_KHR_lock_surface2 = glad_egl_has_extension(extensions, "EGL_KHR_lock_surface2");
825 GLAD_EGL_KHR_lock_surface3 = glad_egl_has_extension(extensions, "EGL_KHR_lock_surface3");
826 GLAD_EGL_KHR_mutable_render_buffer = glad_egl_has_extension(extensions, "EGL_KHR_mutable_render_buffer");
827 GLAD_EGL_KHR_no_config_context = glad_egl_has_extension(extensions, "EGL_KHR_no_config_context");
828 GLAD_EGL_KHR_partial_update = glad_egl_has_extension(extensions, "EGL_KHR_partial_update");
829 GLAD_EGL_KHR_platform_android = glad_egl_has_extension(extensions, "EGL_KHR_platform_android");
830 GLAD_EGL_KHR_platform_gbm = glad_egl_has_extension(extensions, "EGL_KHR_platform_gbm");
831 GLAD_EGL_KHR_platform_wayland = glad_egl_has_extension(extensions, "EGL_KHR_platform_wayland");
832 GLAD_EGL_KHR_platform_x11 = glad_egl_has_extension(extensions, "EGL_KHR_platform_x11");
833 GLAD_EGL_KHR_reusable_sync = glad_egl_has_extension(extensions, "EGL_KHR_reusable_sync");
834 GLAD_EGL_KHR_stream = glad_egl_has_extension(extensions, "EGL_KHR_stream");
835 GLAD_EGL_KHR_stream_attrib = glad_egl_has_extension(extensions, "EGL_KHR_stream_attrib");
836 GLAD_EGL_KHR_stream_consumer_gltexture = glad_egl_has_extension(extensions, "EGL_KHR_stream_consumer_gltexture");
837 GLAD_EGL_KHR_stream_cross_process_fd = glad_egl_has_extension(extensions, "EGL_KHR_stream_cross_process_fd");
838 GLAD_EGL_KHR_stream_fifo = glad_egl_has_extension(extensions, "EGL_KHR_stream_fifo");
839 GLAD_EGL_KHR_stream_producer_aldatalocator = glad_egl_has_extension(extensions, "EGL_KHR_stream_producer_aldatalocator");
840 GLAD_EGL_KHR_stream_producer_eglsurface = glad_egl_has_extension(extensions, "EGL_KHR_stream_producer_eglsurface");
841 GLAD_EGL_KHR_surfaceless_context = glad_egl_has_extension(extensions, "EGL_KHR_surfaceless_context");
842 GLAD_EGL_KHR_swap_buffers_with_damage = glad_egl_has_extension(extensions, "EGL_KHR_swap_buffers_with_damage");
843 GLAD_EGL_KHR_vg_parent_image = glad_egl_has_extension(extensions, "EGL_KHR_vg_parent_image");
844 GLAD_EGL_KHR_wait_sync = glad_egl_has_extension(extensions, "EGL_KHR_wait_sync");
845 GLAD_EGL_MESA_drm_image = glad_egl_has_extension(extensions, "EGL_MESA_drm_image");
846 GLAD_EGL_MESA_image_dma_buf_export = glad_egl_has_extension(extensions, "EGL_MESA_image_dma_buf_export");
847 GLAD_EGL_MESA_platform_gbm = glad_egl_has_extension(extensions, "EGL_MESA_platform_gbm");
848 GLAD_EGL_MESA_platform_surfaceless = glad_egl_has_extension(extensions, "EGL_MESA_platform_surfaceless");
849 GLAD_EGL_MESA_query_driver = glad_egl_has_extension(extensions, "EGL_MESA_query_driver");
850 GLAD_EGL_NOK_swap_region = glad_egl_has_extension(extensions, "EGL_NOK_swap_region");
851 GLAD_EGL_NOK_swap_region2 = glad_egl_has_extension(extensions, "EGL_NOK_swap_region2");
852 GLAD_EGL_NOK_texture_from_pixmap = glad_egl_has_extension(extensions, "EGL_NOK_texture_from_pixmap");
853 GLAD_EGL_NV_3dvision_surface = glad_egl_has_extension(extensions, "EGL_NV_3dvision_surface");
854 GLAD_EGL_NV_context_priority_realtime = glad_egl_has_extension(extensions, "EGL_NV_context_priority_realtime");
855 GLAD_EGL_NV_coverage_sample = glad_egl_has_extension(extensions, "EGL_NV_coverage_sample");
856 GLAD_EGL_NV_coverage_sample_resolve = glad_egl_has_extension(extensions, "EGL_NV_coverage_sample_resolve");
857 GLAD_EGL_NV_cuda_event = glad_egl_has_extension(extensions, "EGL_NV_cuda_event");
858 GLAD_EGL_NV_depth_nonlinear = glad_egl_has_extension(extensions, "EGL_NV_depth_nonlinear");
859 GLAD_EGL_NV_device_cuda = glad_egl_has_extension(extensions, "EGL_NV_device_cuda");
860 GLAD_EGL_NV_native_query = glad_egl_has_extension(extensions, "EGL_NV_native_query");
861 GLAD_EGL_NV_post_convert_rounding = glad_egl_has_extension(extensions, "EGL_NV_post_convert_rounding");
862 GLAD_EGL_NV_post_sub_buffer = glad_egl_has_extension(extensions, "EGL_NV_post_sub_buffer");
863 GLAD_EGL_NV_quadruple_buffer = glad_egl_has_extension(extensions, "EGL_NV_quadruple_buffer");
864 GLAD_EGL_NV_robustness_video_memory_purge = glad_egl_has_extension(extensions, "EGL_NV_robustness_video_memory_purge");
865 GLAD_EGL_NV_stream_consumer_eglimage = glad_egl_has_extension(extensions, "EGL_NV_stream_consumer_eglimage");
866 GLAD_EGL_NV_stream_consumer_gltexture_yuv = glad_egl_has_extension(extensions, "EGL_NV_stream_consumer_gltexture_yuv");
867 GLAD_EGL_NV_stream_cross_display = glad_egl_has_extension(extensions, "EGL_NV_stream_cross_display");
868 GLAD_EGL_NV_stream_cross_object = glad_egl_has_extension(extensions, "EGL_NV_stream_cross_object");
869 GLAD_EGL_NV_stream_cross_partition = glad_egl_has_extension(extensions, "EGL_NV_stream_cross_partition");
870 GLAD_EGL_NV_stream_cross_process = glad_egl_has_extension(extensions, "EGL_NV_stream_cross_process");
871 GLAD_EGL_NV_stream_cross_system = glad_egl_has_extension(extensions, "EGL_NV_stream_cross_system");
872 GLAD_EGL_NV_stream_dma = glad_egl_has_extension(extensions, "EGL_NV_stream_dma");
873 GLAD_EGL_NV_stream_fifo_next = glad_egl_has_extension(extensions, "EGL_NV_stream_fifo_next");
874 GLAD_EGL_NV_stream_fifo_synchronous = glad_egl_has_extension(extensions, "EGL_NV_stream_fifo_synchronous");
875 GLAD_EGL_NV_stream_flush = glad_egl_has_extension(extensions, "EGL_NV_stream_flush");
876 GLAD_EGL_NV_stream_frame_limits = glad_egl_has_extension(extensions, "EGL_NV_stream_frame_limits");
877 GLAD_EGL_NV_stream_metadata = glad_egl_has_extension(extensions, "EGL_NV_stream_metadata");
878 GLAD_EGL_NV_stream_origin = glad_egl_has_extension(extensions, "EGL_NV_stream_origin");
879 GLAD_EGL_NV_stream_remote = glad_egl_has_extension(extensions, "EGL_NV_stream_remote");
880 GLAD_EGL_NV_stream_reset = glad_egl_has_extension(extensions, "EGL_NV_stream_reset");
881 GLAD_EGL_NV_stream_socket = glad_egl_has_extension(extensions, "EGL_NV_stream_socket");
882 GLAD_EGL_NV_stream_socket_inet = glad_egl_has_extension(extensions, "EGL_NV_stream_socket_inet");
883 GLAD_EGL_NV_stream_socket_unix = glad_egl_has_extension(extensions, "EGL_NV_stream_socket_unix");
884 GLAD_EGL_NV_stream_sync = glad_egl_has_extension(extensions, "EGL_NV_stream_sync");
885 GLAD_EGL_NV_sync = glad_egl_has_extension(extensions, "EGL_NV_sync");
886 GLAD_EGL_NV_system_time = glad_egl_has_extension(extensions, "EGL_NV_system_time");
887 GLAD_EGL_NV_triple_buffer = glad_egl_has_extension(extensions, "EGL_NV_triple_buffer");
888 GLAD_EGL_TIZEN_image_native_buffer = glad_egl_has_extension(extensions, "EGL_TIZEN_image_native_buffer");
889 GLAD_EGL_TIZEN_image_native_surface = glad_egl_has_extension(extensions, "EGL_TIZEN_image_native_surface");
890 GLAD_EGL_WL_bind_wayland_display = glad_egl_has_extension(extensions, "EGL_WL_bind_wayland_display");
891 GLAD_EGL_WL_create_wayland_buffer_from_image = glad_egl_has_extension(extensions, "EGL_WL_create_wayland_buffer_from_image");
892
893 return 1;
894}
895
896static int glad_egl_find_core_egl(EGLDisplay display) {
897 int major, minor;
898 const char *version;
899
900 if (display == NULL) {
901 display = EGL_NO_DISPLAY; /* this is usually NULL, better safe than sorry */
902 }
903 if (display == EGL_NO_DISPLAY) {
904 display = eglGetCurrentDisplay();
905 }
906#ifdef EGL_VERSION_1_4
907 if (display == EGL_NO_DISPLAY) {
908 display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
909 }
910#endif
911#ifndef EGL_VERSION_1_5
912 if (display == EGL_NO_DISPLAY) {
913 return 0;
914 }
915#endif
916
917 version = eglQueryString(display, EGL_VERSION);
918 (void) eglGetError();
919
920 if (version == NULL) {
921 major = 1;
922 minor = 0;
923 } else {
924 GLAD_IMPL_UTIL_SSCANF(version, "%d.%d", &major, &minor);
925 }
926
927 GLAD_EGL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1;
928 GLAD_EGL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1;
929 GLAD_EGL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1;
930 GLAD_EGL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1;
931 GLAD_EGL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1;
932 GLAD_EGL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1;
933
934 return GLAD_MAKE_VERSION(major, minor);
935}
936
937int gladLoadEGLUserPtr(EGLDisplay display, GLADuserptrloadfunc load, void* userptr) {
938 int version;
939 eglGetDisplay = (PFNEGLGETDISPLAYPROC) load(userptr, "eglGetDisplay");
940 eglGetCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC) load(userptr, "eglGetCurrentDisplay");
941 eglQueryString = (PFNEGLQUERYSTRINGPROC) load(userptr, "eglQueryString");
942 eglGetError = (PFNEGLGETERRORPROC) load(userptr, "eglGetError");
943 if (eglGetDisplay == NULL || eglGetCurrentDisplay == NULL || eglQueryString == NULL || eglGetError == NULL) return 0;
944
945 version = glad_egl_find_core_egl(display);
946 if (!version) return 0;
947 glad_egl_load_EGL_VERSION_1_0(load, userptr);
948 glad_egl_load_EGL_VERSION_1_1(load, userptr);
949 glad_egl_load_EGL_VERSION_1_2(load, userptr);
950 glad_egl_load_EGL_VERSION_1_4(load, userptr);
951 glad_egl_load_EGL_VERSION_1_5(load, userptr);
952
953 if (!glad_egl_find_extensions_egl(display)) return 0;
954 glad_egl_load_EGL_ANDROID_blob_cache(load, userptr);
955 glad_egl_load_EGL_ANDROID_create_native_client_buffer(load, userptr);
956 glad_egl_load_EGL_ANDROID_get_frame_timestamps(load, userptr);
957 glad_egl_load_EGL_ANDROID_get_native_client_buffer(load, userptr);
958 glad_egl_load_EGL_ANDROID_native_fence_sync(load, userptr);
959 glad_egl_load_EGL_ANDROID_presentation_time(load, userptr);
960 glad_egl_load_EGL_ANGLE_query_surface_pointer(load, userptr);
961 glad_egl_load_EGL_ANGLE_sync_control_rate(load, userptr);
962 glad_egl_load_EGL_EXT_client_sync(load, userptr);
963 glad_egl_load_EGL_EXT_compositor(load, userptr);
964 glad_egl_load_EGL_EXT_device_base(load, userptr);
965 glad_egl_load_EGL_EXT_device_enumeration(load, userptr);
966 glad_egl_load_EGL_EXT_device_persistent_id(load, userptr);
967 glad_egl_load_EGL_EXT_device_query(load, userptr);
968 glad_egl_load_EGL_EXT_image_dma_buf_import_modifiers(load, userptr);
969 glad_egl_load_EGL_EXT_output_base(load, userptr);
970 glad_egl_load_EGL_EXT_platform_base(load, userptr);
971 glad_egl_load_EGL_EXT_stream_consumer_egloutput(load, userptr);
972 glad_egl_load_EGL_EXT_swap_buffers_with_damage(load, userptr);
973 glad_egl_load_EGL_EXT_sync_reuse(load, userptr);
974 glad_egl_load_EGL_HI_clientpixmap(load, userptr);
975 glad_egl_load_EGL_KHR_cl_event2(load, userptr);
976 glad_egl_load_EGL_KHR_debug(load, userptr);
977 glad_egl_load_EGL_KHR_display_reference(load, userptr);
978 glad_egl_load_EGL_KHR_fence_sync(load, userptr);
979 glad_egl_load_EGL_KHR_image(load, userptr);
980 glad_egl_load_EGL_KHR_image_base(load, userptr);
981 glad_egl_load_EGL_KHR_lock_surface(load, userptr);
982 glad_egl_load_EGL_KHR_lock_surface3(load, userptr);
983 glad_egl_load_EGL_KHR_partial_update(load, userptr);
984 glad_egl_load_EGL_KHR_reusable_sync(load, userptr);
985 glad_egl_load_EGL_KHR_stream(load, userptr);
986 glad_egl_load_EGL_KHR_stream_attrib(load, userptr);
987 glad_egl_load_EGL_KHR_stream_consumer_gltexture(load, userptr);
988 glad_egl_load_EGL_KHR_stream_cross_process_fd(load, userptr);
989 glad_egl_load_EGL_KHR_stream_fifo(load, userptr);
990 glad_egl_load_EGL_KHR_stream_producer_eglsurface(load, userptr);
991 glad_egl_load_EGL_KHR_swap_buffers_with_damage(load, userptr);
992 glad_egl_load_EGL_KHR_wait_sync(load, userptr);
993 glad_egl_load_EGL_MESA_drm_image(load, userptr);
994 glad_egl_load_EGL_MESA_image_dma_buf_export(load, userptr);
995 glad_egl_load_EGL_MESA_query_driver(load, userptr);
996 glad_egl_load_EGL_NOK_swap_region(load, userptr);
997 glad_egl_load_EGL_NOK_swap_region2(load, userptr);
998 glad_egl_load_EGL_NV_native_query(load, userptr);
999 glad_egl_load_EGL_NV_post_sub_buffer(load, userptr);
1000 glad_egl_load_EGL_NV_stream_consumer_eglimage(load, userptr);
1001 glad_egl_load_EGL_NV_stream_consumer_gltexture_yuv(load, userptr);
1002 glad_egl_load_EGL_NV_stream_flush(load, userptr);
1003 glad_egl_load_EGL_NV_stream_metadata(load, userptr);
1004 glad_egl_load_EGL_NV_stream_reset(load, userptr);
1005 glad_egl_load_EGL_NV_stream_sync(load, userptr);
1006 glad_egl_load_EGL_NV_sync(load, userptr);
1007 glad_egl_load_EGL_NV_system_time(load, userptr);
1008 glad_egl_load_EGL_WL_bind_wayland_display(load, userptr);
1009 glad_egl_load_EGL_WL_create_wayland_buffer_from_image(load, userptr);
1010
1011 return version;
1012}
1013
1014int gladLoadEGL(EGLDisplay display, GLADloadfunc load) {
1015 return gladLoadEGLUserPtr(display, glad_egl_get_proc_from_userptr, GLAD_GNUC_EXTENSION (void*) load);
1016}
1017
1018
1019
1020#ifdef GLAD_EGL
1021
1022#ifndef GLAD_LOADER_LIBRARY_C_
1023#define GLAD_LOADER_LIBRARY_C_
1024
1025#include <stddef.h>
1026#include <stdlib.h>
1027
1028#if GLAD_PLATFORM_WIN32
1029#include <windows.h>
1030#else
1031#include <dlfcn.h>
1032#endif
1033
1034
1035static void* glad_get_dlopen_handle(const char *lib_names[], int length) {
1036 void *handle = NULL;
1037 int i;
1038
1039 for (i = 0; i < length; ++i) {
1040#if GLAD_PLATFORM_WIN32
1041 #if GLAD_PLATFORM_UWP
1042 size_t buffer_size = (strlen(lib_names[i]) + 1) * sizeof(WCHAR);
1043 LPWSTR buffer = (LPWSTR) malloc(buffer_size);
1044 if (buffer != NULL) {
1045 int ret = MultiByteToWideChar(CP_ACP, 0, lib_names[i], -1, buffer, buffer_size);
1046 if (ret != 0) {
1047 handle = (void*) LoadPackagedLibrary(buffer, 0);
1048 }
1049 free((void*) buffer);
1050 }
1051 #else
1052 handle = (void*) LoadLibraryA(lib_names[i]);
1053 #endif
1054#else
1055 handle = dlopen(lib_names[i], RTLD_LAZY | RTLD_LOCAL);
1056#endif
1057 if (handle != NULL) {
1058 return handle;
1059 }
1060 }
1061
1062 return NULL;
1063}
1064
1065static void glad_close_dlopen_handle(void* handle) {
1066 if (handle != NULL) {
1067#if GLAD_PLATFORM_WIN32
1068 FreeLibrary((HMODULE) handle);
1069#else
1070 dlclose(handle);
1071#endif
1072 }
1073}
1074
1075static GLADapiproc glad_dlsym_handle(void* handle, const char *name) {
1076 if (handle == NULL) {
1077 return NULL;
1078 }
1079
1080#if GLAD_PLATFORM_WIN32
1081 return (GLADapiproc) GetProcAddress((HMODULE) handle, name);
1082#else
1083 return GLAD_GNUC_EXTENSION (GLADapiproc) dlsym(handle, name);
1084#endif
1085}
1086
1087#endif /* GLAD_LOADER_LIBRARY_C_ */
1088
1089struct _glad_egl_userptr {
1090 void *handle;
1091 PFNEGLGETPROCADDRESSPROC get_proc_address_ptr;
1092};
1093
1094static GLADapiproc glad_egl_get_proc(void *vuserptr, const char* name) {
1095 struct _glad_egl_userptr userptr = *(struct _glad_egl_userptr*) vuserptr;
1096 GLADapiproc result = NULL;
1097
1098 result = glad_dlsym_handle(userptr.handle, name);
1099 if (result == NULL) {
1100 result = GLAD_GNUC_EXTENSION (GLADapiproc) userptr.get_proc_address_ptr(name);
1101 }
1102
1103 return result;
1104}
1105
1106static void* _egl_handle = NULL;
1107
1108static void* glad_egl_dlopen_handle(void) {
1109#if GLAD_PLATFORM_APPLE
1110 static const char *NAMES[] = {"libEGL.dylib"};
1111#elif GLAD_PLATFORM_WIN32
1112 static const char *NAMES[] = {"libEGL.dll", "EGL.dll"};
1113#else
1114 static const char *NAMES[] = {"libEGL.so.1", "libEGL.so"};
1115#endif
1116
1117 if (_egl_handle == NULL) {
1118 _egl_handle = glad_get_dlopen_handle(NAMES, sizeof(NAMES) / sizeof(NAMES[0]));
1119 }
1120
1121 return _egl_handle;
1122}
1123
1124static struct _glad_egl_userptr glad_egl_build_userptr(void *handle) {
1125 struct _glad_egl_userptr userptr;
1126 userptr.handle = handle;
1127 userptr.get_proc_address_ptr = (PFNEGLGETPROCADDRESSPROC) glad_dlsym_handle(handle, "eglGetProcAddress");
1128 return userptr;
1129}
1130
1131int gladLoaderLoadEGL(EGLDisplay display) {
1132 int version = 0;
1133 void *handle = NULL;
1134 int did_load = 0;
1135 struct _glad_egl_userptr userptr;
1136
1137 did_load = _egl_handle == NULL;
1138 handle = glad_egl_dlopen_handle();
1139 if (handle != NULL) {
1140 userptr = glad_egl_build_userptr(handle);
1141
1142 if (userptr.get_proc_address_ptr != NULL) {
1143 version = gladLoadEGLUserPtr(display, glad_egl_get_proc, &userptr);
1144 }
1145
1146 if (!version && did_load) {
1147 gladLoaderUnloadEGL();
1148 }
1149 }
1150
1151 return version;
1152}
1153
1154
1155void gladLoaderUnloadEGL() {
1156 if (_egl_handle != NULL) {
1157 glad_close_dlopen_handle(_egl_handle);
1158 _egl_handle = NULL;
1159 }
1160}
1161
1162#endif /* GLAD_EGL */
1163
1164#ifdef __cplusplus
1165}
1166#endif
1167