duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

egl.c (68073B)


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