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 |
18 | extern "C" { |
19 | #endif |
20 | |
21 | |
22 | |
23 | int GLAD_EGL_VERSION_1_0 = 0; |
24 | int GLAD_EGL_VERSION_1_1 = 0; |
25 | int GLAD_EGL_VERSION_1_2 = 0; |
26 | int GLAD_EGL_VERSION_1_3 = 0; |
27 | int GLAD_EGL_VERSION_1_4 = 0; |
28 | int GLAD_EGL_VERSION_1_5 = 0; |
29 | int GLAD_EGL_ANDROID_GLES_layers = 0; |
30 | int GLAD_EGL_ANDROID_blob_cache = 0; |
31 | int GLAD_EGL_ANDROID_create_native_client_buffer = 0; |
32 | int GLAD_EGL_ANDROID_framebuffer_target = 0; |
33 | int GLAD_EGL_ANDROID_front_buffer_auto_refresh = 0; |
34 | int GLAD_EGL_ANDROID_get_frame_timestamps = 0; |
35 | int GLAD_EGL_ANDROID_get_native_client_buffer = 0; |
36 | int GLAD_EGL_ANDROID_image_native_buffer = 0; |
37 | int GLAD_EGL_ANDROID_native_fence_sync = 0; |
38 | int GLAD_EGL_ANDROID_presentation_time = 0; |
39 | int GLAD_EGL_ANDROID_recordable = 0; |
40 | int GLAD_EGL_ANGLE_d3d_share_handle_client_buffer = 0; |
41 | int GLAD_EGL_ANGLE_device_d3d = 0; |
42 | int GLAD_EGL_ANGLE_query_surface_pointer = 0; |
43 | int GLAD_EGL_ANGLE_surface_d3d_texture_2d_share_handle = 0; |
44 | int GLAD_EGL_ANGLE_sync_control_rate = 0; |
45 | int GLAD_EGL_ANGLE_window_fixed_size = 0; |
46 | int GLAD_EGL_ARM_image_format = 0; |
47 | int GLAD_EGL_ARM_implicit_external_sync = 0; |
48 | int GLAD_EGL_ARM_pixmap_multisample_discard = 0; |
49 | int GLAD_EGL_EXT_bind_to_front = 0; |
50 | int GLAD_EGL_EXT_buffer_age = 0; |
51 | int GLAD_EGL_EXT_client_extensions = 0; |
52 | int GLAD_EGL_EXT_client_sync = 0; |
53 | int GLAD_EGL_EXT_compositor = 0; |
54 | int GLAD_EGL_EXT_config_select_group = 0; |
55 | int GLAD_EGL_EXT_create_context_robustness = 0; |
56 | int GLAD_EGL_EXT_device_base = 0; |
57 | int GLAD_EGL_EXT_device_drm = 0; |
58 | int GLAD_EGL_EXT_device_drm_render_node = 0; |
59 | int GLAD_EGL_EXT_device_enumeration = 0; |
60 | int GLAD_EGL_EXT_device_openwf = 0; |
61 | int GLAD_EGL_EXT_device_persistent_id = 0; |
62 | int GLAD_EGL_EXT_device_query = 0; |
63 | int GLAD_EGL_EXT_device_query_name = 0; |
64 | int GLAD_EGL_EXT_gl_colorspace_bt2020_linear = 0; |
65 | int GLAD_EGL_EXT_gl_colorspace_bt2020_pq = 0; |
66 | int GLAD_EGL_EXT_gl_colorspace_display_p3 = 0; |
67 | int GLAD_EGL_EXT_gl_colorspace_display_p3_linear = 0; |
68 | int GLAD_EGL_EXT_gl_colorspace_display_p3_passthrough = 0; |
69 | int GLAD_EGL_EXT_gl_colorspace_scrgb = 0; |
70 | int GLAD_EGL_EXT_gl_colorspace_scrgb_linear = 0; |
71 | int GLAD_EGL_EXT_image_dma_buf_import = 0; |
72 | int GLAD_EGL_EXT_image_dma_buf_import_modifiers = 0; |
73 | int GLAD_EGL_EXT_image_gl_colorspace = 0; |
74 | int GLAD_EGL_EXT_image_implicit_sync_control = 0; |
75 | int GLAD_EGL_EXT_multiview_window = 0; |
76 | int GLAD_EGL_EXT_output_base = 0; |
77 | int GLAD_EGL_EXT_output_drm = 0; |
78 | int GLAD_EGL_EXT_output_openwf = 0; |
79 | int GLAD_EGL_EXT_pixel_format_float = 0; |
80 | int GLAD_EGL_EXT_platform_base = 0; |
81 | int GLAD_EGL_EXT_platform_device = 0; |
82 | int GLAD_EGL_EXT_platform_wayland = 0; |
83 | int GLAD_EGL_EXT_platform_x11 = 0; |
84 | int GLAD_EGL_EXT_platform_xcb = 0; |
85 | int GLAD_EGL_EXT_present_opaque = 0; |
86 | int GLAD_EGL_EXT_protected_content = 0; |
87 | int GLAD_EGL_EXT_protected_surface = 0; |
88 | int GLAD_EGL_EXT_stream_consumer_egloutput = 0; |
89 | int GLAD_EGL_EXT_surface_CTA861_3_metadata = 0; |
90 | int GLAD_EGL_EXT_surface_SMPTE2086_metadata = 0; |
91 | int GLAD_EGL_EXT_swap_buffers_with_damage = 0; |
92 | int GLAD_EGL_EXT_sync_reuse = 0; |
93 | int GLAD_EGL_EXT_yuv_surface = 0; |
94 | int GLAD_EGL_HI_clientpixmap = 0; |
95 | int GLAD_EGL_HI_colorformats = 0; |
96 | int GLAD_EGL_IMG_context_priority = 0; |
97 | int GLAD_EGL_IMG_image_plane_attribs = 0; |
98 | int GLAD_EGL_KHR_cl_event = 0; |
99 | int GLAD_EGL_KHR_cl_event2 = 0; |
100 | int GLAD_EGL_KHR_client_get_all_proc_addresses = 0; |
101 | int GLAD_EGL_KHR_config_attribs = 0; |
102 | int GLAD_EGL_KHR_context_flush_control = 0; |
103 | int GLAD_EGL_KHR_create_context = 0; |
104 | int GLAD_EGL_KHR_create_context_no_error = 0; |
105 | int GLAD_EGL_KHR_debug = 0; |
106 | int GLAD_EGL_KHR_display_reference = 0; |
107 | int GLAD_EGL_KHR_fence_sync = 0; |
108 | int GLAD_EGL_KHR_get_all_proc_addresses = 0; |
109 | int GLAD_EGL_KHR_gl_colorspace = 0; |
110 | int GLAD_EGL_KHR_gl_renderbuffer_image = 0; |
111 | int GLAD_EGL_KHR_gl_texture_2D_image = 0; |
112 | int GLAD_EGL_KHR_gl_texture_3D_image = 0; |
113 | int GLAD_EGL_KHR_gl_texture_cubemap_image = 0; |
114 | int GLAD_EGL_KHR_image = 0; |
115 | int GLAD_EGL_KHR_image_base = 0; |
116 | int GLAD_EGL_KHR_image_pixmap = 0; |
117 | int GLAD_EGL_KHR_lock_surface = 0; |
118 | int GLAD_EGL_KHR_lock_surface2 = 0; |
119 | int GLAD_EGL_KHR_lock_surface3 = 0; |
120 | int GLAD_EGL_KHR_mutable_render_buffer = 0; |
121 | int GLAD_EGL_KHR_no_config_context = 0; |
122 | int GLAD_EGL_KHR_partial_update = 0; |
123 | int GLAD_EGL_KHR_platform_android = 0; |
124 | int GLAD_EGL_KHR_platform_gbm = 0; |
125 | int GLAD_EGL_KHR_platform_wayland = 0; |
126 | int GLAD_EGL_KHR_platform_x11 = 0; |
127 | int GLAD_EGL_KHR_reusable_sync = 0; |
128 | int GLAD_EGL_KHR_stream = 0; |
129 | int GLAD_EGL_KHR_stream_attrib = 0; |
130 | int GLAD_EGL_KHR_stream_consumer_gltexture = 0; |
131 | int GLAD_EGL_KHR_stream_cross_process_fd = 0; |
132 | int GLAD_EGL_KHR_stream_fifo = 0; |
133 | int GLAD_EGL_KHR_stream_producer_aldatalocator = 0; |
134 | int GLAD_EGL_KHR_stream_producer_eglsurface = 0; |
135 | int GLAD_EGL_KHR_surfaceless_context = 0; |
136 | int GLAD_EGL_KHR_swap_buffers_with_damage = 0; |
137 | int GLAD_EGL_KHR_vg_parent_image = 0; |
138 | int GLAD_EGL_KHR_wait_sync = 0; |
139 | int GLAD_EGL_MESA_drm_image = 0; |
140 | int GLAD_EGL_MESA_image_dma_buf_export = 0; |
141 | int GLAD_EGL_MESA_platform_gbm = 0; |
142 | int GLAD_EGL_MESA_platform_surfaceless = 0; |
143 | int GLAD_EGL_MESA_query_driver = 0; |
144 | int GLAD_EGL_NOK_swap_region = 0; |
145 | int GLAD_EGL_NOK_swap_region2 = 0; |
146 | int GLAD_EGL_NOK_texture_from_pixmap = 0; |
147 | int GLAD_EGL_NV_3dvision_surface = 0; |
148 | int GLAD_EGL_NV_context_priority_realtime = 0; |
149 | int GLAD_EGL_NV_coverage_sample = 0; |
150 | int GLAD_EGL_NV_coverage_sample_resolve = 0; |
151 | int GLAD_EGL_NV_cuda_event = 0; |
152 | int GLAD_EGL_NV_depth_nonlinear = 0; |
153 | int GLAD_EGL_NV_device_cuda = 0; |
154 | int GLAD_EGL_NV_native_query = 0; |
155 | int GLAD_EGL_NV_post_convert_rounding = 0; |
156 | int GLAD_EGL_NV_post_sub_buffer = 0; |
157 | int GLAD_EGL_NV_quadruple_buffer = 0; |
158 | int GLAD_EGL_NV_robustness_video_memory_purge = 0; |
159 | int GLAD_EGL_NV_stream_consumer_eglimage = 0; |
160 | int GLAD_EGL_NV_stream_consumer_gltexture_yuv = 0; |
161 | int GLAD_EGL_NV_stream_cross_display = 0; |
162 | int GLAD_EGL_NV_stream_cross_object = 0; |
163 | int GLAD_EGL_NV_stream_cross_partition = 0; |
164 | int GLAD_EGL_NV_stream_cross_process = 0; |
165 | int GLAD_EGL_NV_stream_cross_system = 0; |
166 | int GLAD_EGL_NV_stream_dma = 0; |
167 | int GLAD_EGL_NV_stream_fifo_next = 0; |
168 | int GLAD_EGL_NV_stream_fifo_synchronous = 0; |
169 | int GLAD_EGL_NV_stream_flush = 0; |
170 | int GLAD_EGL_NV_stream_frame_limits = 0; |
171 | int GLAD_EGL_NV_stream_metadata = 0; |
172 | int GLAD_EGL_NV_stream_origin = 0; |
173 | int GLAD_EGL_NV_stream_remote = 0; |
174 | int GLAD_EGL_NV_stream_reset = 0; |
175 | int GLAD_EGL_NV_stream_socket = 0; |
176 | int GLAD_EGL_NV_stream_socket_inet = 0; |
177 | int GLAD_EGL_NV_stream_socket_unix = 0; |
178 | int GLAD_EGL_NV_stream_sync = 0; |
179 | int GLAD_EGL_NV_sync = 0; |
180 | int GLAD_EGL_NV_system_time = 0; |
181 | int GLAD_EGL_NV_triple_buffer = 0; |
182 | int GLAD_EGL_TIZEN_image_native_buffer = 0; |
183 | int GLAD_EGL_TIZEN_image_native_surface = 0; |
184 | int GLAD_EGL_WL_bind_wayland_display = 0; |
185 | int GLAD_EGL_WL_create_wayland_buffer_from_image = 0; |
186 | |
187 | |
188 | |
189 | PFNEGLBINDAPIPROC glad_eglBindAPI = NULL; |
190 | PFNEGLBINDTEXIMAGEPROC glad_eglBindTexImage = NULL; |
191 | PFNEGLBINDWAYLANDDISPLAYWLPROC glad_eglBindWaylandDisplayWL = NULL; |
192 | PFNEGLCHOOSECONFIGPROC glad_eglChooseConfig = NULL; |
193 | PFNEGLCLIENTSIGNALSYNCEXTPROC glad_eglClientSignalSyncEXT = NULL; |
194 | PFNEGLCLIENTWAITSYNCPROC glad_eglClientWaitSync = NULL; |
195 | PFNEGLCLIENTWAITSYNCKHRPROC glad_eglClientWaitSyncKHR = NULL; |
196 | PFNEGLCLIENTWAITSYNCNVPROC glad_eglClientWaitSyncNV = NULL; |
197 | PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC glad_eglCompositorBindTexWindowEXT = NULL; |
198 | PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC glad_eglCompositorSetContextAttributesEXT = NULL; |
199 | PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC glad_eglCompositorSetContextListEXT = NULL; |
200 | PFNEGLCOMPOSITORSETSIZEEXTPROC glad_eglCompositorSetSizeEXT = NULL; |
201 | PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC glad_eglCompositorSetWindowAttributesEXT = NULL; |
202 | PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC glad_eglCompositorSetWindowListEXT = NULL; |
203 | PFNEGLCOMPOSITORSWAPPOLICYEXTPROC glad_eglCompositorSwapPolicyEXT = NULL; |
204 | PFNEGLCOPYBUFFERSPROC glad_eglCopyBuffers = NULL; |
205 | PFNEGLCREATECONTEXTPROC glad_eglCreateContext = NULL; |
206 | PFNEGLCREATEDRMIMAGEMESAPROC glad_eglCreateDRMImageMESA = NULL; |
207 | PFNEGLCREATEFENCESYNCNVPROC glad_eglCreateFenceSyncNV = NULL; |
208 | PFNEGLCREATEIMAGEPROC glad_eglCreateImage = NULL; |
209 | PFNEGLCREATEIMAGEKHRPROC glad_eglCreateImageKHR = NULL; |
210 | PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC glad_eglCreateNativeClientBufferANDROID = NULL; |
211 | PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC glad_eglCreatePbufferFromClientBuffer = NULL; |
212 | PFNEGLCREATEPBUFFERSURFACEPROC glad_eglCreatePbufferSurface = NULL; |
213 | PFNEGLCREATEPIXMAPSURFACEPROC glad_eglCreatePixmapSurface = NULL; |
214 | PFNEGLCREATEPIXMAPSURFACEHIPROC glad_eglCreatePixmapSurfaceHI = NULL; |
215 | PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC glad_eglCreatePlatformPixmapSurface = NULL; |
216 | PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC glad_eglCreatePlatformPixmapSurfaceEXT = NULL; |
217 | PFNEGLCREATEPLATFORMWINDOWSURFACEPROC glad_eglCreatePlatformWindowSurface = NULL; |
218 | PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC glad_eglCreatePlatformWindowSurfaceEXT = NULL; |
219 | PFNEGLCREATESTREAMATTRIBKHRPROC glad_eglCreateStreamAttribKHR = NULL; |
220 | PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC glad_eglCreateStreamFromFileDescriptorKHR = NULL; |
221 | PFNEGLCREATESTREAMKHRPROC glad_eglCreateStreamKHR = NULL; |
222 | PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC glad_eglCreateStreamProducerSurfaceKHR = NULL; |
223 | PFNEGLCREATESTREAMSYNCNVPROC glad_eglCreateStreamSyncNV = NULL; |
224 | PFNEGLCREATESYNCPROC glad_eglCreateSync = NULL; |
225 | PFNEGLCREATESYNC64KHRPROC glad_eglCreateSync64KHR = NULL; |
226 | PFNEGLCREATESYNCKHRPROC glad_eglCreateSyncKHR = NULL; |
227 | PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC glad_eglCreateWaylandBufferFromImageWL = NULL; |
228 | PFNEGLCREATEWINDOWSURFACEPROC glad_eglCreateWindowSurface = NULL; |
229 | PFNEGLDEBUGMESSAGECONTROLKHRPROC glad_eglDebugMessageControlKHR = NULL; |
230 | PFNEGLDESTROYCONTEXTPROC glad_eglDestroyContext = NULL; |
231 | PFNEGLDESTROYIMAGEPROC glad_eglDestroyImage = NULL; |
232 | PFNEGLDESTROYIMAGEKHRPROC glad_eglDestroyImageKHR = NULL; |
233 | PFNEGLDESTROYSTREAMKHRPROC glad_eglDestroyStreamKHR = NULL; |
234 | PFNEGLDESTROYSURFACEPROC glad_eglDestroySurface = NULL; |
235 | PFNEGLDESTROYSYNCPROC glad_eglDestroySync = NULL; |
236 | PFNEGLDESTROYSYNCKHRPROC glad_eglDestroySyncKHR = NULL; |
237 | PFNEGLDESTROYSYNCNVPROC glad_eglDestroySyncNV = NULL; |
238 | PFNEGLDUPNATIVEFENCEFDANDROIDPROC glad_eglDupNativeFenceFDANDROID = NULL; |
239 | PFNEGLEXPORTDMABUFIMAGEMESAPROC glad_eglExportDMABUFImageMESA = NULL; |
240 | PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC glad_eglExportDMABUFImageQueryMESA = NULL; |
241 | PFNEGLEXPORTDRMIMAGEMESAPROC glad_eglExportDRMImageMESA = NULL; |
242 | PFNEGLFENCENVPROC glad_eglFenceNV = NULL; |
243 | PFNEGLGETCOMPOSITORTIMINGANDROIDPROC glad_eglGetCompositorTimingANDROID = NULL; |
244 | PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC glad_eglGetCompositorTimingSupportedANDROID = NULL; |
245 | PFNEGLGETCONFIGATTRIBPROC glad_eglGetConfigAttrib = NULL; |
246 | PFNEGLGETCONFIGSPROC glad_eglGetConfigs = NULL; |
247 | PFNEGLGETCURRENTCONTEXTPROC glad_eglGetCurrentContext = NULL; |
248 | PFNEGLGETCURRENTDISPLAYPROC glad_eglGetCurrentDisplay = NULL; |
249 | PFNEGLGETCURRENTSURFACEPROC glad_eglGetCurrentSurface = NULL; |
250 | PFNEGLGETDISPLAYPROC glad_eglGetDisplay = NULL; |
251 | PFNEGLGETDISPLAYDRIVERCONFIGPROC glad_eglGetDisplayDriverConfig = NULL; |
252 | PFNEGLGETDISPLAYDRIVERNAMEPROC glad_eglGetDisplayDriverName = NULL; |
253 | PFNEGLGETERRORPROC glad_eglGetError = NULL; |
254 | PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC glad_eglGetFrameTimestampSupportedANDROID = NULL; |
255 | PFNEGLGETFRAMETIMESTAMPSANDROIDPROC glad_eglGetFrameTimestampsANDROID = NULL; |
256 | PFNEGLGETMSCRATEANGLEPROC glad_eglGetMscRateANGLE = NULL; |
257 | PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC glad_eglGetNativeClientBufferANDROID = NULL; |
258 | PFNEGLGETNEXTFRAMEIDANDROIDPROC glad_eglGetNextFrameIdANDROID = NULL; |
259 | PFNEGLGETOUTPUTLAYERSEXTPROC glad_eglGetOutputLayersEXT = NULL; |
260 | PFNEGLGETOUTPUTPORTSEXTPROC glad_eglGetOutputPortsEXT = NULL; |
261 | PFNEGLGETPLATFORMDISPLAYPROC glad_eglGetPlatformDisplay = NULL; |
262 | PFNEGLGETPLATFORMDISPLAYEXTPROC glad_eglGetPlatformDisplayEXT = NULL; |
263 | PFNEGLGETPROCADDRESSPROC glad_eglGetProcAddress = NULL; |
264 | PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC glad_eglGetStreamFileDescriptorKHR = NULL; |
265 | PFNEGLGETSYNCATTRIBPROC glad_eglGetSyncAttrib = NULL; |
266 | PFNEGLGETSYNCATTRIBKHRPROC glad_eglGetSyncAttribKHR = NULL; |
267 | PFNEGLGETSYNCATTRIBNVPROC glad_eglGetSyncAttribNV = NULL; |
268 | PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC glad_eglGetSystemTimeFrequencyNV = NULL; |
269 | PFNEGLGETSYSTEMTIMENVPROC glad_eglGetSystemTimeNV = NULL; |
270 | PFNEGLINITIALIZEPROC glad_eglInitialize = NULL; |
271 | PFNEGLLABELOBJECTKHRPROC glad_eglLabelObjectKHR = NULL; |
272 | PFNEGLLOCKSURFACEKHRPROC glad_eglLockSurfaceKHR = NULL; |
273 | PFNEGLMAKECURRENTPROC glad_eglMakeCurrent = NULL; |
274 | PFNEGLOUTPUTLAYERATTRIBEXTPROC glad_eglOutputLayerAttribEXT = NULL; |
275 | PFNEGLOUTPUTPORTATTRIBEXTPROC glad_eglOutputPortAttribEXT = NULL; |
276 | PFNEGLPOSTSUBBUFFERNVPROC glad_eglPostSubBufferNV = NULL; |
277 | PFNEGLPRESENTATIONTIMEANDROIDPROC glad_eglPresentationTimeANDROID = NULL; |
278 | PFNEGLQUERYAPIPROC glad_eglQueryAPI = NULL; |
279 | PFNEGLQUERYCONTEXTPROC glad_eglQueryContext = NULL; |
280 | PFNEGLQUERYDEBUGKHRPROC glad_eglQueryDebugKHR = NULL; |
281 | PFNEGLQUERYDEVICEATTRIBEXTPROC glad_eglQueryDeviceAttribEXT = NULL; |
282 | PFNEGLQUERYDEVICEBINARYEXTPROC glad_eglQueryDeviceBinaryEXT = NULL; |
283 | PFNEGLQUERYDEVICESTRINGEXTPROC glad_eglQueryDeviceStringEXT = NULL; |
284 | PFNEGLQUERYDEVICESEXTPROC glad_eglQueryDevicesEXT = NULL; |
285 | PFNEGLQUERYDISPLAYATTRIBEXTPROC glad_eglQueryDisplayAttribEXT = NULL; |
286 | PFNEGLQUERYDISPLAYATTRIBKHRPROC glad_eglQueryDisplayAttribKHR = NULL; |
287 | PFNEGLQUERYDISPLAYATTRIBNVPROC glad_eglQueryDisplayAttribNV = NULL; |
288 | PFNEGLQUERYDMABUFFORMATSEXTPROC glad_eglQueryDmaBufFormatsEXT = NULL; |
289 | PFNEGLQUERYDMABUFMODIFIERSEXTPROC glad_eglQueryDmaBufModifiersEXT = NULL; |
290 | PFNEGLQUERYNATIVEDISPLAYNVPROC glad_eglQueryNativeDisplayNV = NULL; |
291 | PFNEGLQUERYNATIVEPIXMAPNVPROC glad_eglQueryNativePixmapNV = NULL; |
292 | PFNEGLQUERYNATIVEWINDOWNVPROC glad_eglQueryNativeWindowNV = NULL; |
293 | PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC glad_eglQueryOutputLayerAttribEXT = NULL; |
294 | PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC glad_eglQueryOutputLayerStringEXT = NULL; |
295 | PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC glad_eglQueryOutputPortAttribEXT = NULL; |
296 | PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC glad_eglQueryOutputPortStringEXT = NULL; |
297 | PFNEGLQUERYSTREAMATTRIBKHRPROC glad_eglQueryStreamAttribKHR = NULL; |
298 | PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC glad_eglQueryStreamConsumerEventNV = NULL; |
299 | PFNEGLQUERYSTREAMKHRPROC glad_eglQueryStreamKHR = NULL; |
300 | PFNEGLQUERYSTREAMMETADATANVPROC glad_eglQueryStreamMetadataNV = NULL; |
301 | PFNEGLQUERYSTREAMTIMEKHRPROC glad_eglQueryStreamTimeKHR = NULL; |
302 | PFNEGLQUERYSTREAMU64KHRPROC glad_eglQueryStreamu64KHR = NULL; |
303 | PFNEGLQUERYSTRINGPROC glad_eglQueryString = NULL; |
304 | PFNEGLQUERYSURFACEPROC glad_eglQuerySurface = NULL; |
305 | PFNEGLQUERYSURFACE64KHRPROC glad_eglQuerySurface64KHR = NULL; |
306 | PFNEGLQUERYSURFACEPOINTERANGLEPROC glad_eglQuerySurfacePointerANGLE = NULL; |
307 | PFNEGLQUERYWAYLANDBUFFERWLPROC glad_eglQueryWaylandBufferWL = NULL; |
308 | PFNEGLRELEASETEXIMAGEPROC glad_eglReleaseTexImage = NULL; |
309 | PFNEGLRELEASETHREADPROC glad_eglReleaseThread = NULL; |
310 | PFNEGLRESETSTREAMNVPROC glad_eglResetStreamNV = NULL; |
311 | PFNEGLSETBLOBCACHEFUNCSANDROIDPROC glad_eglSetBlobCacheFuncsANDROID = NULL; |
312 | PFNEGLSETDAMAGEREGIONKHRPROC glad_eglSetDamageRegionKHR = NULL; |
313 | PFNEGLSETSTREAMATTRIBKHRPROC glad_eglSetStreamAttribKHR = NULL; |
314 | PFNEGLSETSTREAMMETADATANVPROC glad_eglSetStreamMetadataNV = NULL; |
315 | PFNEGLSIGNALSYNCKHRPROC glad_eglSignalSyncKHR = NULL; |
316 | PFNEGLSIGNALSYNCNVPROC glad_eglSignalSyncNV = NULL; |
317 | PFNEGLSTREAMACQUIREIMAGENVPROC glad_eglStreamAcquireImageNV = NULL; |
318 | PFNEGLSTREAMATTRIBKHRPROC glad_eglStreamAttribKHR = NULL; |
319 | PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC glad_eglStreamConsumerAcquireAttribKHR = NULL; |
320 | PFNEGLSTREAMCONSUMERACQUIREKHRPROC glad_eglStreamConsumerAcquireKHR = NULL; |
321 | PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC glad_eglStreamConsumerGLTextureExternalAttribsNV = NULL; |
322 | PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC glad_eglStreamConsumerGLTextureExternalKHR = NULL; |
323 | PFNEGLSTREAMCONSUMEROUTPUTEXTPROC glad_eglStreamConsumerOutputEXT = NULL; |
324 | PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC glad_eglStreamConsumerReleaseAttribKHR = NULL; |
325 | PFNEGLSTREAMCONSUMERRELEASEKHRPROC glad_eglStreamConsumerReleaseKHR = NULL; |
326 | PFNEGLSTREAMFLUSHNVPROC glad_eglStreamFlushNV = NULL; |
327 | PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC glad_eglStreamImageConsumerConnectNV = NULL; |
328 | PFNEGLSTREAMRELEASEIMAGENVPROC glad_eglStreamReleaseImageNV = NULL; |
329 | PFNEGLSURFACEATTRIBPROC glad_eglSurfaceAttrib = NULL; |
330 | PFNEGLSWAPBUFFERSPROC glad_eglSwapBuffers = NULL; |
331 | PFNEGLSWAPBUFFERSREGION2NOKPROC glad_eglSwapBuffersRegion2NOK = NULL; |
332 | PFNEGLSWAPBUFFERSREGIONNOKPROC glad_eglSwapBuffersRegionNOK = NULL; |
333 | PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC glad_eglSwapBuffersWithDamageEXT = NULL; |
334 | PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC glad_eglSwapBuffersWithDamageKHR = NULL; |
335 | PFNEGLSWAPINTERVALPROC glad_eglSwapInterval = NULL; |
336 | PFNEGLTERMINATEPROC glad_eglTerminate = NULL; |
337 | PFNEGLUNBINDWAYLANDDISPLAYWLPROC glad_eglUnbindWaylandDisplayWL = NULL; |
338 | PFNEGLUNLOCKSURFACEKHRPROC glad_eglUnlockSurfaceKHR = NULL; |
339 | PFNEGLUNSIGNALSYNCEXTPROC glad_eglUnsignalSyncEXT = NULL; |
340 | PFNEGLWAITCLIENTPROC glad_eglWaitClient = NULL; |
341 | PFNEGLWAITGLPROC glad_eglWaitGL = NULL; |
342 | PFNEGLWAITNATIVEPROC glad_eglWaitNative = NULL; |
343 | PFNEGLWAITSYNCPROC glad_eglWaitSync = NULL; |
344 | PFNEGLWAITSYNCKHRPROC glad_eglWaitSyncKHR = NULL; |
345 | |
346 | |
347 | static 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 | } |
374 | static 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 | } |
381 | static 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 | } |
389 | static 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 | } |
393 | static 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 | } |
406 | static 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 | } |
410 | static 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 | } |
414 | static 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 | } |
422 | static 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 | } |
426 | static 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 | } |
430 | static 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 | } |
434 | static 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 | } |
438 | static 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 | } |
442 | static 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 | } |
446 | static 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 | } |
456 | static 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 | } |
463 | static 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 | } |
467 | static 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 | } |
471 | static 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 | } |
477 | static 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 | } |
482 | static 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 | } |
493 | static 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 | } |
499 | static 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 | } |
503 | static 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 | } |
507 | static 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 | } |
511 | static 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 | } |
515 | static 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 | } |
519 | static 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 | } |
525 | static 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 | } |
529 | static 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 | } |
536 | static 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 | } |
541 | static 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 | } |
546 | static 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 | } |
551 | static 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 | } |
557 | static 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 | } |
561 | static 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 | } |
569 | static 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 | } |
577 | static 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 | } |
585 | static 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 | } |
591 | static 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 | } |
596 | static 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 | } |
600 | static 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 | } |
604 | static 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 | } |
608 | static 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 | } |
612 | static 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 | } |
617 | static 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 | } |
622 | static 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 | } |
627 | static 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 | } |
631 | static 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 | } |
635 | static 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 | } |
641 | static 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 | } |
645 | static 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 | } |
652 | static 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 | } |
656 | static 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 | } |
660 | static 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 | } |
666 | static 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 | } |
670 | static 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 | } |
674 | static 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 | } |
683 | static 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 | } |
688 | static 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 | } |
694 | static 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 | |
701 | static int glad_egl_get_extensions(EGLDisplay display, const char **extensions) { |
702 | *extensions = eglQueryString(display, EGL_EXTENSIONS); |
703 | |
704 | return extensions != NULL; |
705 | } |
706 | |
707 | static 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 | |
727 | static 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 | |
731 | static 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 | |
896 | static 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 | |
937 | int 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 | |
1014 | int 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 | |
1035 | static 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 | |
1065 | static 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 | |
1075 | static 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 | |
1089 | struct _glad_egl_userptr { |
1090 | void *handle; |
1091 | PFNEGLGETPROCADDRESSPROC get_proc_address_ptr; |
1092 | }; |
1093 | |
1094 | static 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 | |
1106 | static void* _egl_handle = NULL; |
1107 | |
1108 | static 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 | |
1124 | static 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 | |
1131 | int 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 | |
1155 | void 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 | |