#ifndef __eglext_h_
#define __eglext_h_ 1

#ifdef __cplusplus
extern "C"
{
#endif

    /*
    ** Copyright 2013-2020 The Khronos Group Inc.
    ** SPDX-License-Identifier: Apache-2.0
    **
    ** This header is generated from the Khronos EGL XML API Registry.
    ** The current version of the Registry, generator scripts
    ** used to make the header, and the header can be found at
    **   http://www.khronos.org/registry/egl
    **
    ** Khronos $Git commit SHA1: 5a9a7e3fcb $ on $Git commit date: 2020-08-24
    *11:05:32 -0700 $
    */

#include <EGL/eglplatform.h>

#define EGL_EGLEXT_VERSION 20201001

    /* Generated C header for:
     * API: egl
     * Versions considered: .*
     * Versions emitted: _nomatch_^
     * Default extensions included: egl
     * Additional extensions included: _nomatch_^
     * Extensions removed: _nomatch_^
     */

#ifndef EGL_KHR_cl_event
#define EGL_KHR_cl_event 1
#define EGL_CL_EVENT_HANDLE_KHR 0x309C
#define EGL_SYNC_CL_EVENT_KHR 0x30FE
#define EGL_SYNC_CL_EVENT_COMPLETE_KHR 0x30FF
#endif /* EGL_KHR_cl_event */

#ifndef EGL_KHR_cl_event2
#define EGL_KHR_cl_event2 1
    typedef void* EGLSyncKHR;
    typedef intptr_t EGLAttribKHR;
    typedef EGLSyncKHR(EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC)(
        EGLDisplay dpy,
        EGLenum type,
        const EGLAttribKHR* attrib_list);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLSyncKHR EGLAPIENTRY
    eglCreateSync64KHR(EGLDisplay dpy,
                       EGLenum type,
                       const EGLAttribKHR* attrib_list);
#endif
#endif /* EGL_KHR_cl_event2 */

#ifndef EGL_KHR_client_get_all_proc_addresses
#define EGL_KHR_client_get_all_proc_addresses 1
#endif /* EGL_KHR_client_get_all_proc_addresses */

#ifndef EGL_KHR_config_attribs
#define EGL_KHR_config_attribs 1
#define EGL_CONFORMANT_KHR 0x3042
#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020
#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040
#endif /* EGL_KHR_config_attribs */

#ifndef EGL_KHR_context_flush_control
#define EGL_KHR_context_flush_control 1
#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0
#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x2097
#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098
#endif /* EGL_KHR_context_flush_control */

#ifndef EGL_KHR_create_context
#define EGL_KHR_create_context 1
#define EGL_CONTEXT_MAJOR_VERSION_KHR 0x3098
#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB
#define EGL_CONTEXT_FLAGS_KHR 0x30FC
#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE
#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF
#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001
#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
#define EGL_OPENGL_ES3_BIT_KHR 0x00000040
#endif /* EGL_KHR_create_context */

#ifndef EGL_KHR_create_context_no_error
#define EGL_KHR_create_context_no_error 1
#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR 0x31B3
#endif /* EGL_KHR_create_context_no_error */

#ifndef EGL_KHR_debug
#define EGL_KHR_debug 1
    typedef void* EGLLabelKHR;
    typedef void* EGLObjectKHR;
    typedef void(EGLAPIENTRY* EGLDEBUGPROCKHR)(EGLenum error,
                                               const char* command,
                                               EGLint messageType,
                                               EGLLabelKHR threadLabel,
                                               EGLLabelKHR objectLabel,
                                               const char* message);
#define EGL_OBJECT_THREAD_KHR 0x33B0
#define EGL_OBJECT_DISPLAY_KHR 0x33B1
#define EGL_OBJECT_CONTEXT_KHR 0x33B2
#define EGL_OBJECT_SURFACE_KHR 0x33B3
#define EGL_OBJECT_IMAGE_KHR 0x33B4
#define EGL_OBJECT_SYNC_KHR 0x33B5
#define EGL_OBJECT_STREAM_KHR 0x33B6
#define EGL_DEBUG_MSG_CRITICAL_KHR 0x33B9
#define EGL_DEBUG_MSG_ERROR_KHR 0x33BA
#define EGL_DEBUG_MSG_WARN_KHR 0x33BB
#define EGL_DEBUG_MSG_INFO_KHR 0x33BC
#define EGL_DEBUG_CALLBACK_KHR 0x33B8
    typedef EGLint(EGLAPIENTRYP PFNEGLDEBUGMESSAGECONTROLKHRPROC)(
        EGLDEBUGPROCKHR callback,
        const EGLAttrib* attrib_list);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYDEBUGKHRPROC)(EGLint attribute,
                                                             EGLAttrib* value);
    typedef EGLint(EGLAPIENTRYP PFNEGLLABELOBJECTKHRPROC)(EGLDisplay display,
                                                          EGLenum objectType,
                                                          EGLObjectKHR object,
                                                          EGLLabelKHR label);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLint EGLAPIENTRY
    eglDebugMessageControlKHR(EGLDEBUGPROCKHR callback,
                              const EGLAttrib* attrib_list);
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryDebugKHR(EGLint attribute,
                                                   EGLAttrib* value);
    EGLAPI EGLint EGLAPIENTRY eglLabelObjectKHR(EGLDisplay display,
                                                EGLenum objectType,
                                                EGLObjectKHR object,
                                                EGLLabelKHR label);
#endif
#endif /* EGL_KHR_debug */

#ifndef EGL_KHR_display_reference
#define EGL_KHR_display_reference 1
#define EGL_TRACK_REFERENCES_KHR 0x3352
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBKHRPROC)(
        EGLDisplay dpy,
        EGLint name,
        EGLAttrib* value);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribKHR(EGLDisplay dpy,
                                                           EGLint name,
                                                           EGLAttrib* value);
#endif
#endif /* EGL_KHR_display_reference */

#ifndef EGL_KHR_fence_sync
#define EGL_KHR_fence_sync 1
    typedef khronos_utime_nanoseconds_t EGLTimeKHR;
#ifdef KHRONOS_SUPPORT_INT64
#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0
#define EGL_SYNC_CONDITION_KHR 0x30F8
#define EGL_SYNC_FENCE_KHR 0x30F9
    typedef EGLSyncKHR(EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC)(
        EGLDisplay dpy,
        EGLenum type,
        const EGLint* attrib_list);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC)(EGLDisplay dpy,
                                                              EGLSyncKHR sync);
    typedef EGLint(EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC)(
        EGLDisplay dpy,
        EGLSyncKHR sync,
        EGLint flags,
        EGLTimeKHR timeout);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC)(
        EGLDisplay dpy,
        EGLSyncKHR sync,
        EGLint attribute,
        EGLint* value);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy,
                                                   EGLenum type,
                                                   const EGLint* attrib_list);
    EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy,
                                                    EGLSyncKHR sync);
    EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy,
                                                   EGLSyncKHR sync,
                                                   EGLint flags,
                                                   EGLTimeKHR timeout);
    EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy,
                                                      EGLSyncKHR sync,
                                                      EGLint attribute,
                                                      EGLint* value);
#endif
#endif /* KHRONOS_SUPPORT_INT64 */
#endif /* EGL_KHR_fence_sync */

#ifndef EGL_KHR_get_all_proc_addresses
#define EGL_KHR_get_all_proc_addresses 1
#endif /* EGL_KHR_get_all_proc_addresses */

#ifndef EGL_KHR_gl_colorspace
#define EGL_KHR_gl_colorspace 1
#define EGL_GL_COLORSPACE_KHR 0x309D
#define EGL_GL_COLORSPACE_SRGB_KHR 0x3089
#define EGL_GL_COLORSPACE_LINEAR_KHR 0x308A
#endif /* EGL_KHR_gl_colorspace */

#ifndef EGL_KHR_gl_renderbuffer_image
#define EGL_KHR_gl_renderbuffer_image 1
#define EGL_GL_RENDERBUFFER_KHR 0x30B9
#endif /* EGL_KHR_gl_renderbuffer_image */

#ifndef EGL_KHR_gl_texture_2D_image
#define EGL_KHR_gl_texture_2D_image 1
#define EGL_GL_TEXTURE_2D_KHR 0x30B1
#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC
#endif /* EGL_KHR_gl_texture_2D_image */

#ifndef EGL_KHR_gl_texture_3D_image
#define EGL_KHR_gl_texture_3D_image 1
#define EGL_GL_TEXTURE_3D_KHR 0x30B2
#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD
#endif /* EGL_KHR_gl_texture_3D_image */

#ifndef EGL_KHR_gl_texture_cubemap_image
#define EGL_KHR_gl_texture_cubemap_image 1
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8
#endif /* EGL_KHR_gl_texture_cubemap_image */

#ifndef EGL_KHR_image
#define EGL_KHR_image 1
    typedef void* EGLImageKHR;
#define EGL_NATIVE_PIXMAP_KHR 0x30B0
#define EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR, 0)
    typedef EGLImageKHR(EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC)(
        EGLDisplay dpy,
        EGLContext ctx,
        EGLenum target,
        EGLClientBuffer buffer,
        const EGLint* attrib_list);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC)(
        EGLDisplay dpy,
        EGLImageKHR image);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy,
                                                     EGLContext ctx,
                                                     EGLenum target,
                                                     EGLClientBuffer buffer,
                                                     const EGLint* attrib_list);
    EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy,
                                                     EGLImageKHR image);
#endif
#endif /* EGL_KHR_image */

#ifndef EGL_KHR_image_base
#define EGL_KHR_image_base 1
#define EGL_IMAGE_PRESERVED_KHR 0x30D2
#endif /* EGL_KHR_image_base */

#ifndef EGL_KHR_image_pixmap
#define EGL_KHR_image_pixmap 1
#endif /* EGL_KHR_image_pixmap */

#ifndef EGL_KHR_lock_surface
#define EGL_KHR_lock_surface 1
#define EGL_READ_SURFACE_BIT_KHR 0x0001
#define EGL_WRITE_SURFACE_BIT_KHR 0x0002
#define EGL_LOCK_SURFACE_BIT_KHR 0x0080
#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100
#define EGL_MATCH_FORMAT_KHR 0x3043
#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0
#define EGL_FORMAT_RGB_565_KHR 0x30C1
#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2
#define EGL_FORMAT_RGBA_8888_KHR 0x30C3
#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4
#define EGL_LOCK_USAGE_HINT_KHR 0x30C5
#define EGL_BITMAP_POINTER_KHR 0x30C6
#define EGL_BITMAP_PITCH_KHR 0x30C7
#define EGL_BITMAP_ORIGIN_KHR 0x30C8
#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9
#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA
#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB
#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC
#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD
#define EGL_LOWER_LEFT_KHR 0x30CE
#define EGL_UPPER_LEFT_KHR 0x30CF
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        const EGLint* attrib_list);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC)(
        EGLDisplay dpy,
        EGLSurface surface);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR(EGLDisplay dpy,
                                                    EGLSurface surface,
                                                    const EGLint* attrib_list);
    EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR(EGLDisplay dpy,
                                                      EGLSurface surface);
#endif
#endif /* EGL_KHR_lock_surface */

#ifndef EGL_KHR_lock_surface2
#define EGL_KHR_lock_surface2 1
#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110
#endif /* EGL_KHR_lock_surface2 */

#ifndef EGL_KHR_lock_surface3
#define EGL_KHR_lock_surface3 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLint attribute,
        EGLAttribKHR* value);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR(EGLDisplay dpy,
                                                       EGLSurface surface,
                                                       EGLint attribute,
                                                       EGLAttribKHR* value);
#endif
#endif /* EGL_KHR_lock_surface3 */

#ifndef EGL_KHR_mutable_render_buffer
#define EGL_KHR_mutable_render_buffer 1
#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000
#endif /* EGL_KHR_mutable_render_buffer */

#ifndef EGL_KHR_no_config_context
#define EGL_KHR_no_config_context 1
#define EGL_NO_CONFIG_KHR EGL_CAST(EGLConfig, 0)
#endif /* EGL_KHR_no_config_context */

#ifndef EGL_KHR_partial_update
#define EGL_KHR_partial_update 1
#define EGL_BUFFER_AGE_KHR 0x313D
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSETDAMAGEREGIONKHRPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLint* rects,
        EGLint n_rects);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglSetDamageRegionKHR(EGLDisplay dpy,
                                                        EGLSurface surface,
                                                        EGLint* rects,
                                                        EGLint n_rects);
#endif
#endif /* EGL_KHR_partial_update */

#ifndef EGL_KHR_platform_android
#define EGL_KHR_platform_android 1
#define EGL_PLATFORM_ANDROID_KHR 0x3141
#endif /* EGL_KHR_platform_android */

#ifndef EGL_KHR_platform_gbm
#define EGL_KHR_platform_gbm 1
#define EGL_PLATFORM_GBM_KHR 0x31D7
#endif /* EGL_KHR_platform_gbm */

#ifndef EGL_KHR_platform_wayland
#define EGL_KHR_platform_wayland 1
#define EGL_PLATFORM_WAYLAND_KHR 0x31D8
#endif /* EGL_KHR_platform_wayland */

#ifndef EGL_KHR_platform_x11
#define EGL_KHR_platform_x11 1
#define EGL_PLATFORM_X11_KHR 0x31D5
#define EGL_PLATFORM_X11_SCREEN_KHR 0x31D6
#endif /* EGL_KHR_platform_x11 */

#ifndef EGL_KHR_reusable_sync
#define EGL_KHR_reusable_sync 1
#ifdef KHRONOS_SUPPORT_INT64
#define EGL_SYNC_STATUS_KHR 0x30F1
#define EGL_SIGNALED_KHR 0x30F2
#define EGL_UNSIGNALED_KHR 0x30F3
#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
#define EGL_CONDITION_SATISFIED_KHR 0x30F6
#define EGL_SYNC_TYPE_KHR 0x30F7
#define EGL_SYNC_REUSABLE_KHR 0x30FA
#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
#define EGL_NO_SYNC_KHR EGL_CAST(EGLSyncKHR, 0)
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC)(EGLDisplay dpy,
                                                             EGLSyncKHR sync,
                                                             EGLenum mode);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy,
                                                   EGLSyncKHR sync,
                                                   EGLenum mode);
#endif
#endif /* KHRONOS_SUPPORT_INT64 */
#endif /* EGL_KHR_reusable_sync */

#ifndef EGL_KHR_stream
#define EGL_KHR_stream 1
    typedef void* EGLStreamKHR;
    typedef khronos_uint64_t EGLuint64KHR;
#ifdef KHRONOS_SUPPORT_INT64
#define EGL_NO_STREAM_KHR EGL_CAST(EGLStreamKHR, 0)
#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210
#define EGL_PRODUCER_FRAME_KHR 0x3212
#define EGL_CONSUMER_FRAME_KHR 0x3213
#define EGL_STREAM_STATE_KHR 0x3214
#define EGL_STREAM_STATE_CREATED_KHR 0x3215
#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216
#define EGL_STREAM_STATE_EMPTY_KHR 0x3217
#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218
#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219
#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A
#define EGL_BAD_STREAM_KHR 0x321B
#define EGL_BAD_STATE_KHR 0x321C
    typedef EGLStreamKHR(EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC)(
        EGLDisplay dpy,
        const EGLint* attrib_list);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLenum attribute,
        EGLint value);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLenum attribute,
        EGLint* value);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLenum attribute,
        EGLuint64KHR* value);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLStreamKHR EGLAPIENTRY
    eglCreateStreamKHR(EGLDisplay dpy, const EGLint* attrib_list);
    EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR(EGLDisplay dpy,
                                                      EGLStreamKHR stream);
    EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR(EGLDisplay dpy,
                                                     EGLStreamKHR stream,
                                                     EGLenum attribute,
                                                     EGLint value);
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR(EGLDisplay dpy,
                                                    EGLStreamKHR stream,
                                                    EGLenum attribute,
                                                    EGLint* value);
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR(EGLDisplay dpy,
                                                       EGLStreamKHR stream,
                                                       EGLenum attribute,
                                                       EGLuint64KHR* value);
#endif
#endif /* KHRONOS_SUPPORT_INT64 */
#endif /* EGL_KHR_stream */

#ifndef EGL_KHR_stream_attrib
#define EGL_KHR_stream_attrib 1
#ifdef KHRONOS_SUPPORT_INT64
    typedef EGLStreamKHR(EGLAPIENTRYP PFNEGLCREATESTREAMATTRIBKHRPROC)(
        EGLDisplay dpy,
        const EGLAttrib* attrib_list);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSETSTREAMATTRIBKHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLenum attribute,
        EGLAttrib value);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMATTRIBKHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLenum attribute,
        EGLAttrib* value);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        const EGLAttrib* attrib_list);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        const EGLAttrib* attrib_list);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLStreamKHR EGLAPIENTRY
    eglCreateStreamAttribKHR(EGLDisplay dpy, const EGLAttrib* attrib_list);
    EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamAttribKHR(EGLDisplay dpy,
                                                        EGLStreamKHR stream,
                                                        EGLenum attribute,
                                                        EGLAttrib value);
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamAttribKHR(EGLDisplay dpy,
                                                          EGLStreamKHR stream,
                                                          EGLenum attribute,
                                                          EGLAttrib* value);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglStreamConsumerAcquireAttribKHR(EGLDisplay dpy,
                                      EGLStreamKHR stream,
                                      const EGLAttrib* attrib_list);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglStreamConsumerReleaseAttribKHR(EGLDisplay dpy,
                                      EGLStreamKHR stream,
                                      const EGLAttrib* attrib_list);
#endif
#endif /* KHRONOS_SUPPORT_INT64 */
#endif /* EGL_KHR_stream_attrib */

#ifndef EGL_KHR_stream_consumer_gltexture
#define EGL_KHR_stream_consumer_gltexture 1
#ifdef EGL_KHR_stream
#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E
    typedef EGLBoolean(
        EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglStreamConsumerGLTextureExternalKHR(EGLDisplay dpy, EGLStreamKHR stream);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglStreamConsumerAcquireKHR(EGLDisplay dpy, EGLStreamKHR stream);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglStreamConsumerReleaseKHR(EGLDisplay dpy, EGLStreamKHR stream);
#endif
#endif /* EGL_KHR_stream */
#endif /* EGL_KHR_stream_consumer_gltexture */

#ifndef EGL_KHR_stream_cross_process_fd
#define EGL_KHR_stream_cross_process_fd 1
    typedef int EGLNativeFileDescriptorKHR;
#ifdef EGL_KHR_stream
#define EGL_NO_FILE_DESCRIPTOR_KHR EGL_CAST(EGLNativeFileDescriptorKHR, -1)
    typedef EGLNativeFileDescriptorKHR(
        EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC)(EGLDisplay dpy,
                                                           EGLStreamKHR stream);
    typedef EGLStreamKHR(
        EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC)(
        EGLDisplay dpy,
        EGLNativeFileDescriptorKHR file_descriptor);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY
    eglGetStreamFileDescriptorKHR(EGLDisplay dpy, EGLStreamKHR stream);
    EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR(
        EGLDisplay dpy,
        EGLNativeFileDescriptorKHR file_descriptor);
#endif
#endif /* EGL_KHR_stream */
#endif /* EGL_KHR_stream_cross_process_fd */

#ifndef EGL_KHR_stream_fifo
#define EGL_KHR_stream_fifo 1
#ifdef EGL_KHR_stream
#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC
#define EGL_STREAM_TIME_NOW_KHR 0x31FD
#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE
#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLenum attribute,
        EGLTimeKHR* value);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR(EGLDisplay dpy,
                                                        EGLStreamKHR stream,
                                                        EGLenum attribute,
                                                        EGLTimeKHR* value);
#endif
#endif /* EGL_KHR_stream */
#endif /* EGL_KHR_stream_fifo */

#ifndef EGL_KHR_stream_producer_aldatalocator
#define EGL_KHR_stream_producer_aldatalocator 1
#ifdef EGL_KHR_stream
#endif /* EGL_KHR_stream */
#endif /* EGL_KHR_stream_producer_aldatalocator */

#ifndef EGL_KHR_stream_producer_eglsurface
#define EGL_KHR_stream_producer_eglsurface 1
#ifdef EGL_KHR_stream
#define EGL_STREAM_BIT_KHR 0x0800
    typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)(
        EGLDisplay dpy,
        EGLConfig config,
        EGLStreamKHR stream,
        const EGLint* attrib_list);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLSurface EGLAPIENTRY
    eglCreateStreamProducerSurfaceKHR(EGLDisplay dpy,
                                      EGLConfig config,
                                      EGLStreamKHR stream,
                                      const EGLint* attrib_list);
#endif
#endif /* EGL_KHR_stream */
#endif /* EGL_KHR_stream_producer_eglsurface */

#ifndef EGL_KHR_surfaceless_context
#define EGL_KHR_surfaceless_context 1
#endif /* EGL_KHR_surfaceless_context */

#ifndef EGL_KHR_swap_buffers_with_damage
#define EGL_KHR_swap_buffers_with_damage 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        const EGLint* rects,
        EGLint n_rects);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglSwapBuffersWithDamageKHR(EGLDisplay dpy,
                                EGLSurface surface,
                                const EGLint* rects,
                                EGLint n_rects);
#endif
#endif /* EGL_KHR_swap_buffers_with_damage */

#ifndef EGL_KHR_vg_parent_image
#define EGL_KHR_vg_parent_image 1
#define EGL_VG_PARENT_IMAGE_KHR 0x30BA
#endif /* EGL_KHR_vg_parent_image */

#ifndef EGL_KHR_wait_sync
#define EGL_KHR_wait_sync 1
    typedef EGLint(EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC)(EGLDisplay dpy,
                                                       EGLSyncKHR sync,
                                                       EGLint flags);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR(EGLDisplay dpy,
                                             EGLSyncKHR sync,
                                             EGLint flags);
#endif
#endif /* EGL_KHR_wait_sync */

#ifndef EGL_ANDROID_GLES_layers
#define EGL_ANDROID_GLES_layers 1
#endif /* EGL_ANDROID_GLES_layers */

#ifndef EGL_ANDROID_blob_cache
#define EGL_ANDROID_blob_cache 1
    typedef khronos_ssize_t EGLsizeiANDROID;
    typedef void (*EGLSetBlobFuncANDROID)(const void* key,
                                          EGLsizeiANDROID keySize,
                                          const void* value,
                                          EGLsizeiANDROID valueSize);
    typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID)(const void* key,
                                                     EGLsizeiANDROID keySize,
                                                     void* value,
                                                     EGLsizeiANDROID valueSize);
    typedef void(EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC)(
        EGLDisplay dpy,
        EGLSetBlobFuncANDROID set,
        EGLGetBlobFuncANDROID get);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI void EGLAPIENTRY
    eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,
                                EGLSetBlobFuncANDROID set,
                                EGLGetBlobFuncANDROID get);
#endif
#endif /* EGL_ANDROID_blob_cache */

#ifndef EGL_ANDROID_create_native_client_buffer
#define EGL_ANDROID_create_native_client_buffer 1
#define EGL_NATIVE_BUFFER_USAGE_ANDROID 0x3143
#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001
#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002
#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004
    typedef EGLClientBuffer(
        EGLAPIENTRYP PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC)(
        const EGLint* attrib_list);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLClientBuffer EGLAPIENTRY
    eglCreateNativeClientBufferANDROID(const EGLint* attrib_list);
#endif
#endif /* EGL_ANDROID_create_native_client_buffer */

#ifndef EGL_ANDROID_framebuffer_target
#define EGL_ANDROID_framebuffer_target 1
#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147
#endif /* EGL_ANDROID_framebuffer_target */

#ifndef EGL_ANDROID_front_buffer_auto_refresh
#define EGL_ANDROID_front_buffer_auto_refresh 1
#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C
#endif /* EGL_ANDROID_front_buffer_auto_refresh */

#ifndef EGL_ANDROID_get_frame_timestamps
#define EGL_ANDROID_get_frame_timestamps 1
    typedef khronos_stime_nanoseconds_t EGLnsecsANDROID;
#define EGL_TIMESTAMP_PENDING_ANDROID EGL_CAST(EGLnsecsANDROID, -2)
#define EGL_TIMESTAMP_INVALID_ANDROID EGL_CAST(EGLnsecsANDROID, -1)
#define EGL_TIMESTAMPS_ANDROID 0x3430
#define EGL_COMPOSITE_DEADLINE_ANDROID 0x3431
#define EGL_COMPOSITE_INTERVAL_ANDROID 0x3432
#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433
#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434
#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435
#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436
#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437
#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438
#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439
#define EGL_DISPLAY_PRESENT_TIME_ANDROID 0x343A
#define EGL_DEQUEUE_READY_TIME_ANDROID 0x343B
#define EGL_READS_DONE_TIME_ANDROID 0x343C
    typedef EGLBoolean(
        EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLint name);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGANDROIDPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLint numTimestamps,
        const EGLint* names,
        EGLnsecsANDROID* values);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETNEXTFRAMEIDANDROIDPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLuint64KHR* frameId);
    typedef EGLBoolean(
        EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLint timestamp);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSANDROIDPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLuint64KHR frameId,
        EGLint numTimestamps,
        const EGLint* timestamps,
        EGLnsecsANDROID* values);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglGetCompositorTimingSupportedANDROID(EGLDisplay dpy,
                                           EGLSurface surface,
                                           EGLint name);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglGetCompositorTimingANDROID(EGLDisplay dpy,
                                  EGLSurface surface,
                                  EGLint numTimestamps,
                                  const EGLint* names,
                                  EGLnsecsANDROID* values);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglGetNextFrameIdANDROID(EGLDisplay dpy,
                             EGLSurface surface,
                             EGLuint64KHR* frameId);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglGetFrameTimestampSupportedANDROID(EGLDisplay dpy,
                                         EGLSurface surface,
                                         EGLint timestamp);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglGetFrameTimestampsANDROID(EGLDisplay dpy,
                                 EGLSurface surface,
                                 EGLuint64KHR frameId,
                                 EGLint numTimestamps,
                                 const EGLint* timestamps,
                                 EGLnsecsANDROID* values);
#endif
#endif /* EGL_ANDROID_get_frame_timestamps */

#ifndef EGL_ANDROID_get_native_client_buffer
#define EGL_ANDROID_get_native_client_buffer 1
    struct AHardwareBuffer;
    typedef EGLClientBuffer(
        EGLAPIENTRYP PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC)(
        const struct AHardwareBuffer* buffer);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLClientBuffer EGLAPIENTRY
    eglGetNativeClientBufferANDROID(const struct AHardwareBuffer* buffer);
#endif
#endif /* EGL_ANDROID_get_native_client_buffer */

#ifndef EGL_ANDROID_image_native_buffer
#define EGL_ANDROID_image_native_buffer 1
#define EGL_NATIVE_BUFFER_ANDROID 0x3140
#endif /* EGL_ANDROID_image_native_buffer */

#ifndef EGL_ANDROID_native_fence_sync
#define EGL_ANDROID_native_fence_sync 1
#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144
#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145
#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146
#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1
    typedef EGLint(EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC)(
        EGLDisplay dpy,
        EGLSyncKHR sync);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID(EGLDisplay dpy,
                                                         EGLSyncKHR sync);
#endif
#endif /* EGL_ANDROID_native_fence_sync */

#ifndef EGL_ANDROID_presentation_time
#define EGL_ANDROID_presentation_time 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLPRESENTATIONTIMEANDROIDPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLnsecsANDROID time);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglPresentationTimeANDROID(EGLDisplay dpy,
                               EGLSurface surface,
                               EGLnsecsANDROID time);
#endif
#endif /* EGL_ANDROID_presentation_time */

#ifndef EGL_ANDROID_recordable
#define EGL_ANDROID_recordable 1
#define EGL_RECORDABLE_ANDROID 0x3142
#endif /* EGL_ANDROID_recordable */

#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
#define EGL_ANGLE_d3d_share_handle_client_buffer 1
#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200
#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */

#ifndef EGL_ANGLE_device_d3d
#define EGL_ANGLE_device_d3d 1
#define EGL_D3D9_DEVICE_ANGLE 0x33A0
#define EGL_D3D11_DEVICE_ANGLE 0x33A1
#endif /* EGL_ANGLE_device_d3d */

#ifndef EGL_ANGLE_query_surface_pointer
#define EGL_ANGLE_query_surface_pointer 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLint attribute,
        void** value);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglQuerySurfacePointerANGLE(EGLDisplay dpy,
                                EGLSurface surface,
                                EGLint attribute,
                                void** value);
#endif
#endif /* EGL_ANGLE_query_surface_pointer */

#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */

#ifndef EGL_ANGLE_window_fixed_size
#define EGL_ANGLE_window_fixed_size 1
#define EGL_FIXED_SIZE_ANGLE 0x3201
#endif /* EGL_ANGLE_window_fixed_size */

#ifndef EGL_ARM_image_format
#define EGL_ARM_image_format 1
#define EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287
#define EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288
#endif /* EGL_ARM_image_format */

#ifndef EGL_ARM_implicit_external_sync
#define EGL_ARM_implicit_external_sync 1
#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A
#endif /* EGL_ARM_implicit_external_sync */

#ifndef EGL_ARM_pixmap_multisample_discard
#define EGL_ARM_pixmap_multisample_discard 1
#define EGL_DISCARD_SAMPLES_ARM 0x3286
#endif /* EGL_ARM_pixmap_multisample_discard */

#ifndef EGL_EXT_bind_to_front
#define EGL_EXT_bind_to_front 1
#define EGL_FRONT_BUFFER_EXT 0x3464
#endif /* EGL_EXT_bind_to_front */

#ifndef EGL_EXT_buffer_age
#define EGL_EXT_buffer_age 1
#define EGL_BUFFER_AGE_EXT 0x313D
#endif /* EGL_EXT_buffer_age */

#ifndef EGL_EXT_client_extensions
#define EGL_EXT_client_extensions 1
#endif /* EGL_EXT_client_extensions */

#ifndef EGL_EXT_client_sync
#define EGL_EXT_client_sync 1
#define EGL_SYNC_CLIENT_EXT 0x3364
#define EGL_SYNC_CLIENT_SIGNAL_EXT 0x3365
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLCLIENTSIGNALSYNCEXTPROC)(
        EGLDisplay dpy,
        EGLSync sync,
        const EGLAttrib* attrib_list);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglClientSignalSyncEXT(EGLDisplay dpy,
                           EGLSync sync,
                           const EGLAttrib* attrib_list);
#endif
#endif /* EGL_EXT_client_sync */

#ifndef EGL_EXT_compositor
#define EGL_EXT_compositor 1
#define EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460
#define EGL_EXTERNAL_REF_ID_EXT 0x3461
#define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462
#define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC)(
        const EGLint* external_ref_ids,
        EGLint num_entries);
    typedef EGLBoolean(
        EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC)(
        EGLint external_ref_id,
        const EGLint* context_attributes,
        EGLint num_entries);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC)(
        EGLint external_ref_id,
        const EGLint* external_win_ids,
        EGLint num_entries);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC)(
        EGLint external_win_id,
        const EGLint* window_attributes,
        EGLint num_entries);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC)(
        EGLint external_win_id);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLCOMPOSITORSETSIZEEXTPROC)(
        EGLint external_win_id,
        EGLint width,
        EGLint height);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLCOMPOSITORSWAPPOLICYEXTPROC)(
        EGLint external_win_id,
        EGLint policy);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglCompositorSetContextListEXT(const EGLint* external_ref_ids,
                                   EGLint num_entries);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglCompositorSetContextAttributesEXT(EGLint external_ref_id,
                                         const EGLint* context_attributes,
                                         EGLint num_entries);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglCompositorSetWindowListEXT(EGLint external_ref_id,
                                  const EGLint* external_win_ids,
                                  EGLint num_entries);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglCompositorSetWindowAttributesEXT(EGLint external_win_id,
                                        const EGLint* window_attributes,
                                        EGLint num_entries);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglCompositorBindTexWindowEXT(EGLint external_win_id);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglCompositorSetSizeEXT(EGLint external_win_id,
                            EGLint width,
                            EGLint height);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglCompositorSwapPolicyEXT(EGLint external_win_id, EGLint policy);
#endif
#endif /* EGL_EXT_compositor */

#ifndef EGL_EXT_create_context_robustness
#define EGL_EXT_create_context_robustness 1
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF
#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE
#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF
#endif /* EGL_EXT_create_context_robustness */

#ifndef EGL_EXT_device_base
#define EGL_EXT_device_base 1
    typedef void* EGLDeviceEXT;
#define EGL_NO_DEVICE_EXT EGL_CAST(EGLDeviceEXT, 0)
#define EGL_BAD_DEVICE_EXT 0x322B
#define EGL_DEVICE_EXT 0x322C
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC)(
        EGLDeviceEXT device,
        EGLint attribute,
        EGLAttrib* value);
    typedef const char*(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC)(
        EGLDeviceEXT device,
        EGLint name);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC)(
        EGLint max_devices,
        EGLDeviceEXT* devices,
        EGLint* num_devices);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC)(
        EGLDisplay dpy,
        EGLint attribute,
        EGLAttrib* value);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT(EGLDeviceEXT device,
                                                          EGLint attribute,
                                                          EGLAttrib* value);
    EGLAPI const char* EGLAPIENTRY eglQueryDeviceStringEXT(EGLDeviceEXT device,
                                                           EGLint name);
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT(EGLint max_devices,
                                                     EGLDeviceEXT* devices,
                                                     EGLint* num_devices);
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT(EGLDisplay dpy,
                                                           EGLint attribute,
                                                           EGLAttrib* value);
#endif
#endif /* EGL_EXT_device_base */

#ifndef EGL_EXT_device_drm
#define EGL_EXT_device_drm 1
#define EGL_DRM_DEVICE_FILE_EXT 0x3233
#define EGL_DRM_MASTER_FD_EXT 0x333C
#endif /* EGL_EXT_device_drm */

#ifndef EGL_EXT_device_enumeration
#define EGL_EXT_device_enumeration 1
#endif /* EGL_EXT_device_enumeration */

#ifndef EGL_EXT_device_openwf
#define EGL_EXT_device_openwf 1
#define EGL_OPENWF_DEVICE_ID_EXT 0x3237
#endif /* EGL_EXT_device_openwf */

#ifndef EGL_EXT_device_query
#define EGL_EXT_device_query 1
#endif /* EGL_EXT_device_query */

#ifndef EGL_EXT_device_query_name
#define EGL_EXT_device_query_name 1
#define EGL_RENDERER_EXT 0x335F
#endif /* EGL_EXT_device_query_name */

#ifndef EGL_EXT_gl_colorspace_bt2020_linear
#define EGL_EXT_gl_colorspace_bt2020_linear 1
#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F
#endif /* EGL_EXT_gl_colorspace_bt2020_linear */

#ifndef EGL_EXT_gl_colorspace_bt2020_pq
#define EGL_EXT_gl_colorspace_bt2020_pq 1
#define EGL_GL_COLORSPACE_BT2020_PQ_EXT 0x3340
#endif /* EGL_EXT_gl_colorspace_bt2020_pq */

#ifndef EGL_EXT_gl_colorspace_display_p3
#define EGL_EXT_gl_colorspace_display_p3 1
#define EGL_GL_COLORSPACE_DISPLAY_P3_EXT 0x3363
#endif /* EGL_EXT_gl_colorspace_display_p3 */

#ifndef EGL_EXT_gl_colorspace_display_p3_linear
#define EGL_EXT_gl_colorspace_display_p3_linear 1
#define EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362
#endif /* EGL_EXT_gl_colorspace_display_p3_linear */

#ifndef EGL_EXT_gl_colorspace_display_p3_passthrough
#define EGL_EXT_gl_colorspace_display_p3_passthrough 1
#define EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490
#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */

#ifndef EGL_EXT_gl_colorspace_scrgb
#define EGL_EXT_gl_colorspace_scrgb 1
#define EGL_GL_COLORSPACE_SCRGB_EXT 0x3351
#endif /* EGL_EXT_gl_colorspace_scrgb */

#ifndef EGL_EXT_gl_colorspace_scrgb_linear
#define EGL_EXT_gl_colorspace_scrgb_linear 1
#define EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350
#endif /* EGL_EXT_gl_colorspace_scrgb_linear */

#ifndef EGL_EXT_image_dma_buf_import
#define EGL_EXT_image_dma_buf_import 1
#define EGL_LINUX_DMA_BUF_EXT 0x3270
#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275
#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276
#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277
#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278
#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279
#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A
#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B
#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C
#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
#define EGL_ITU_REC601_EXT 0x327F
#define EGL_ITU_REC709_EXT 0x3280
#define EGL_ITU_REC2020_EXT 0x3281
#define EGL_YUV_FULL_RANGE_EXT 0x3282
#define EGL_YUV_NARROW_RANGE_EXT 0x3283
#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284
#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285
#endif /* EGL_EXT_image_dma_buf_import */

#ifndef EGL_EXT_image_dma_buf_import_modifiers
#define EGL_EXT_image_dma_buf_import_modifiers 1
#define EGL_DMA_BUF_PLANE3_FD_EXT 0x3440
#define EGL_DMA_BUF_PLANE3_OFFSET_EXT 0x3441
#define EGL_DMA_BUF_PLANE3_PITCH_EXT 0x3442
#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443
#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444
#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445
#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446
#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447
#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448
#define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449
#define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYDMABUFFORMATSEXTPROC)(
        EGLDisplay dpy,
        EGLint max_formats,
        EGLint* formats,
        EGLint* num_formats);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYDMABUFMODIFIERSEXTPROC)(
        EGLDisplay dpy,
        EGLint format,
        EGLint max_modifiers,
        EGLuint64KHR* modifiers,
        EGLBoolean* external_only,
        EGLint* num_modifiers);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufFormatsEXT(EGLDisplay dpy,
                                                           EGLint max_formats,
                                                           EGLint* formats,
                                                           EGLint* num_formats);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglQueryDmaBufModifiersEXT(EGLDisplay dpy,
                               EGLint format,
                               EGLint max_modifiers,
                               EGLuint64KHR* modifiers,
                               EGLBoolean* external_only,
                               EGLint* num_modifiers);
#endif
#endif /* EGL_EXT_image_dma_buf_import_modifiers */

#ifndef EGL_EXT_image_gl_colorspace
#define EGL_EXT_image_gl_colorspace 1
#define EGL_GL_COLORSPACE_DEFAULT_EXT 0x314D
#endif /* EGL_EXT_image_gl_colorspace */

#ifndef EGL_EXT_image_implicit_sync_control
#define EGL_EXT_image_implicit_sync_control 1
#define EGL_IMPORT_SYNC_TYPE_EXT 0x3470
#define EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
#define EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
#endif /* EGL_EXT_image_implicit_sync_control */

#ifndef EGL_EXT_multiview_window
#define EGL_EXT_multiview_window 1
#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134
#endif /* EGL_EXT_multiview_window */

#ifndef EGL_EXT_output_base
#define EGL_EXT_output_base 1
    typedef void* EGLOutputLayerEXT;
    typedef void* EGLOutputPortEXT;
#define EGL_NO_OUTPUT_LAYER_EXT EGL_CAST(EGLOutputLayerEXT, 0)
#define EGL_NO_OUTPUT_PORT_EXT EGL_CAST(EGLOutputPortEXT, 0)
#define EGL_BAD_OUTPUT_LAYER_EXT 0x322D
#define EGL_BAD_OUTPUT_PORT_EXT 0x322E
#define EGL_SWAP_INTERVAL_EXT 0x322F
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETOUTPUTLAYERSEXTPROC)(
        EGLDisplay dpy,
        const EGLAttrib* attrib_list,
        EGLOutputLayerEXT* layers,
        EGLint max_layers,
        EGLint* num_layers);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETOUTPUTPORTSEXTPROC)(
        EGLDisplay dpy,
        const EGLAttrib* attrib_list,
        EGLOutputPortEXT* ports,
        EGLint max_ports,
        EGLint* num_ports);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLOUTPUTLAYERATTRIBEXTPROC)(
        EGLDisplay dpy,
        EGLOutputLayerEXT layer,
        EGLint attribute,
        EGLAttrib value);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC)(
        EGLDisplay dpy,
        EGLOutputLayerEXT layer,
        EGLint attribute,
        EGLAttrib* value);
    typedef const char*(EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC)(
        EGLDisplay dpy,
        EGLOutputLayerEXT layer,
        EGLint name);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLOUTPUTPORTATTRIBEXTPROC)(
        EGLDisplay dpy,
        EGLOutputPortEXT port,
        EGLint attribute,
        EGLAttrib value);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC)(
        EGLDisplay dpy,
        EGLOutputPortEXT port,
        EGLint attribute,
        EGLAttrib* value);
    typedef const char*(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC)(
        EGLDisplay dpy,
        EGLOutputPortEXT port,
        EGLint name);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglGetOutputLayersEXT(EGLDisplay dpy,
                          const EGLAttrib* attrib_list,
                          EGLOutputLayerEXT* layers,
                          EGLint max_layers,
                          EGLint* num_layers);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglGetOutputPortsEXT(EGLDisplay dpy,
                         const EGLAttrib* attrib_list,
                         EGLOutputPortEXT* ports,
                         EGLint max_ports,
                         EGLint* num_ports);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglOutputLayerAttribEXT(EGLDisplay dpy,
                            EGLOutputLayerEXT layer,
                            EGLint attribute,
                            EGLAttrib value);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglQueryOutputLayerAttribEXT(EGLDisplay dpy,
                                 EGLOutputLayerEXT layer,
                                 EGLint attribute,
                                 EGLAttrib* value);
    EGLAPI const char* EGLAPIENTRY
    eglQueryOutputLayerStringEXT(EGLDisplay dpy,
                                 EGLOutputLayerEXT layer,
                                 EGLint name);
    EGLAPI EGLBoolean EGLAPIENTRY eglOutputPortAttribEXT(EGLDisplay dpy,
                                                         EGLOutputPortEXT port,
                                                         EGLint attribute,
                                                         EGLAttrib value);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglQueryOutputPortAttribEXT(EGLDisplay dpy,
                                EGLOutputPortEXT port,
                                EGLint attribute,
                                EGLAttrib* value);
    EGLAPI const char* EGLAPIENTRY
    eglQueryOutputPortStringEXT(EGLDisplay dpy,
                                EGLOutputPortEXT port,
                                EGLint name);
#endif
#endif /* EGL_EXT_output_base */

#ifndef EGL_EXT_output_drm
#define EGL_EXT_output_drm 1
#define EGL_DRM_CRTC_EXT 0x3234
#define EGL_DRM_PLANE_EXT 0x3235
#define EGL_DRM_CONNECTOR_EXT 0x3236
#endif /* EGL_EXT_output_drm */

#ifndef EGL_EXT_output_openwf
#define EGL_EXT_output_openwf 1
#define EGL_OPENWF_PIPELINE_ID_EXT 0x3238
#define EGL_OPENWF_PORT_ID_EXT 0x3239
#endif /* EGL_EXT_output_openwf */

#ifndef EGL_EXT_pixel_format_float
#define EGL_EXT_pixel_format_float 1
#define EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A
#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
#endif /* EGL_EXT_pixel_format_float */

#ifndef EGL_EXT_platform_base
#define EGL_EXT_platform_base 1
    typedef EGLDisplay(EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC)(
        EGLenum platform,
        void* native_display,
        const EGLint* attrib_list);
    typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC)(
        EGLDisplay dpy,
        EGLConfig config,
        void* native_window,
        const EGLint* attrib_list);
    typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC)(
        EGLDisplay dpy,
        EGLConfig config,
        void* native_pixmap,
        const EGLint* attrib_list);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLDisplay EGLAPIENTRY
    eglGetPlatformDisplayEXT(EGLenum platform,
                             void* native_display,
                             const EGLint* attrib_list);
    EGLAPI EGLSurface EGLAPIENTRY
    eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy,
                                      EGLConfig config,
                                      void* native_window,
                                      const EGLint* attrib_list);
    EGLAPI EGLSurface EGLAPIENTRY
    eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy,
                                      EGLConfig config,
                                      void* native_pixmap,
                                      const EGLint* attrib_list);
#endif
#endif /* EGL_EXT_platform_base */

#ifndef EGL_EXT_platform_device
#define EGL_EXT_platform_device 1
#define EGL_PLATFORM_DEVICE_EXT 0x313F
#endif /* EGL_EXT_platform_device */

#ifndef EGL_EXT_platform_wayland
#define EGL_EXT_platform_wayland 1
#define EGL_PLATFORM_WAYLAND_EXT 0x31D8
#endif /* EGL_EXT_platform_wayland */

#ifndef EGL_EXT_platform_x11
#define EGL_EXT_platform_x11 1
#define EGL_PLATFORM_X11_EXT 0x31D5
#define EGL_PLATFORM_X11_SCREEN_EXT 0x31D6
#endif /* EGL_EXT_platform_x11 */

#ifndef EGL_EXT_platform_xcb
#define EGL_EXT_platform_xcb 1
#define EGL_PLATFORM_XCB_EXT 0x31DC
#define EGL_PLATFORM_XCB_SCREEN_EXT 0x31DE
#endif /* EGL_EXT_platform_xcb */

#ifndef EGL_EXT_protected_content
#define EGL_EXT_protected_content 1
#define EGL_PROTECTED_CONTENT_EXT 0x32C0
#endif /* EGL_EXT_protected_content */

#ifndef EGL_EXT_protected_surface
#define EGL_EXT_protected_surface 1
#endif /* EGL_EXT_protected_surface */

#ifndef EGL_EXT_stream_consumer_egloutput
#define EGL_EXT_stream_consumer_egloutput 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMEROUTPUTEXTPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLOutputLayerEXT layer);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglStreamConsumerOutputEXT(EGLDisplay dpy,
                               EGLStreamKHR stream,
                               EGLOutputLayerEXT layer);
#endif
#endif /* EGL_EXT_stream_consumer_egloutput */

#ifndef EGL_EXT_surface_CTA861_3_metadata
#define EGL_EXT_surface_CTA861_3_metadata 1
#define EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360
#define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361
#endif /* EGL_EXT_surface_CTA861_3_metadata */

#ifndef EGL_EXT_surface_SMPTE2086_metadata
#define EGL_EXT_surface_SMPTE2086_metadata 1
#define EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341
#define EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342
#define EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343
#define EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344
#define EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345
#define EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346
#define EGL_SMPTE2086_WHITE_POINT_X_EXT 0x3347
#define EGL_SMPTE2086_WHITE_POINT_Y_EXT 0x3348
#define EGL_SMPTE2086_MAX_LUMINANCE_EXT 0x3349
#define EGL_SMPTE2086_MIN_LUMINANCE_EXT 0x334A
#define EGL_METADATA_SCALING_EXT 50000
#endif /* EGL_EXT_surface_SMPTE2086_metadata */

#ifndef EGL_EXT_swap_buffers_with_damage
#define EGL_EXT_swap_buffers_with_damage 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        const EGLint* rects,
        EGLint n_rects);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglSwapBuffersWithDamageEXT(EGLDisplay dpy,
                                EGLSurface surface,
                                const EGLint* rects,
                                EGLint n_rects);
#endif
#endif /* EGL_EXT_swap_buffers_with_damage */

#ifndef EGL_EXT_sync_reuse
#define EGL_EXT_sync_reuse 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLUNSIGNALSYNCEXTPROC)(
        EGLDisplay dpy,
        EGLSync sync,
        const EGLAttrib* attrib_list);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglUnsignalSyncEXT(EGLDisplay dpy,
                       EGLSync sync,
                       const EGLAttrib* attrib_list);
#endif
#endif /* EGL_EXT_sync_reuse */

#ifndef EGL_EXT_yuv_surface
#define EGL_EXT_yuv_surface 1
#define EGL_YUV_ORDER_EXT 0x3301
#define EGL_YUV_NUMBER_OF_PLANES_EXT 0x3311
#define EGL_YUV_SUBSAMPLE_EXT 0x3312
#define EGL_YUV_DEPTH_RANGE_EXT 0x3317
#define EGL_YUV_CSC_STANDARD_EXT 0x330A
#define EGL_YUV_PLANE_BPP_EXT 0x331A
#define EGL_YUV_BUFFER_EXT 0x3300
#define EGL_YUV_ORDER_YUV_EXT 0x3302
#define EGL_YUV_ORDER_YVU_EXT 0x3303
#define EGL_YUV_ORDER_YUYV_EXT 0x3304
#define EGL_YUV_ORDER_UYVY_EXT 0x3305
#define EGL_YUV_ORDER_YVYU_EXT 0x3306
#define EGL_YUV_ORDER_VYUY_EXT 0x3307
#define EGL_YUV_ORDER_AYUV_EXT 0x3308
#define EGL_YUV_SUBSAMPLE_4_2_0_EXT 0x3313
#define EGL_YUV_SUBSAMPLE_4_2_2_EXT 0x3314
#define EGL_YUV_SUBSAMPLE_4_4_4_EXT 0x3315
#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT 0x3318
#define EGL_YUV_DEPTH_RANGE_FULL_EXT 0x3319
#define EGL_YUV_CSC_STANDARD_601_EXT 0x330B
#define EGL_YUV_CSC_STANDARD_709_EXT 0x330C
#define EGL_YUV_CSC_STANDARD_2020_EXT 0x330D
#define EGL_YUV_PLANE_BPP_0_EXT 0x331B
#define EGL_YUV_PLANE_BPP_8_EXT 0x331C
#define EGL_YUV_PLANE_BPP_10_EXT 0x331D
#endif /* EGL_EXT_yuv_surface */

#ifndef EGL_HI_clientpixmap
#define EGL_HI_clientpixmap 1
    struct EGLClientPixmapHI
    {
        void* pData;
        EGLint iWidth;
        EGLint iHeight;
        EGLint iStride;
    };
#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74
    typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC)(
        EGLDisplay dpy,
        EGLConfig config,
        struct EGLClientPixmapHI* pixmap);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLSurface EGLAPIENTRY
    eglCreatePixmapSurfaceHI(EGLDisplay dpy,
                             EGLConfig config,
                             struct EGLClientPixmapHI* pixmap);
#endif
#endif /* EGL_HI_clientpixmap */

#ifndef EGL_HI_colorformats
#define EGL_HI_colorformats 1
#define EGL_COLOR_FORMAT_HI 0x8F70
#define EGL_COLOR_RGB_HI 0x8F71
#define EGL_COLOR_RGBA_HI 0x8F72
#define EGL_COLOR_ARGB_HI 0x8F73
#endif /* EGL_HI_colorformats */

#ifndef EGL_IMG_context_priority
#define EGL_IMG_context_priority 1
#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
#endif /* EGL_IMG_context_priority */

#ifndef EGL_IMG_image_plane_attribs
#define EGL_IMG_image_plane_attribs 1
#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105
#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106
#endif /* EGL_IMG_image_plane_attribs */

#ifndef EGL_MESA_drm_image
#define EGL_MESA_drm_image 1
#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0
#define EGL_DRM_BUFFER_USE_MESA 0x31D1
#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2
#define EGL_DRM_BUFFER_MESA 0x31D3
#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001
#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002
#define EGL_DRM_BUFFER_USE_CURSOR_MESA 0x00000004
    typedef EGLImageKHR(EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC)(
        EGLDisplay dpy,
        const EGLint* attrib_list);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC)(
        EGLDisplay dpy,
        EGLImageKHR image,
        EGLint* name,
        EGLint* handle,
        EGLint* stride);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLImageKHR EGLAPIENTRY
    eglCreateDRMImageMESA(EGLDisplay dpy, const EGLint* attrib_list);
    EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA(EGLDisplay dpy,
                                                        EGLImageKHR image,
                                                        EGLint* name,
                                                        EGLint* handle,
                                                        EGLint* stride);
#endif
#endif /* EGL_MESA_drm_image */

#ifndef EGL_MESA_image_dma_buf_export
#define EGL_MESA_image_dma_buf_export 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC)(
        EGLDisplay dpy,
        EGLImageKHR image,
        int* fourcc,
        int* num_planes,
        EGLuint64KHR* modifiers);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEMESAPROC)(
        EGLDisplay dpy,
        EGLImageKHR image,
        int* fds,
        EGLint* strides,
        EGLint* offsets);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglExportDMABUFImageQueryMESA(EGLDisplay dpy,
                                  EGLImageKHR image,
                                  int* fourcc,
                                  int* num_planes,
                                  EGLuint64KHR* modifiers);
    EGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageMESA(EGLDisplay dpy,
                                                           EGLImageKHR image,
                                                           int* fds,
                                                           EGLint* strides,
                                                           EGLint* offsets);
#endif
#endif /* EGL_MESA_image_dma_buf_export */

#ifndef EGL_MESA_platform_gbm
#define EGL_MESA_platform_gbm 1
#define EGL_PLATFORM_GBM_MESA 0x31D7
#endif /* EGL_MESA_platform_gbm */

#ifndef EGL_MESA_platform_surfaceless
#define EGL_MESA_platform_surfaceless 1
#define EGL_PLATFORM_SURFACELESS_MESA 0x31DD
#endif /* EGL_MESA_platform_surfaceless */

#ifndef EGL_MESA_query_driver
#define EGL_MESA_query_driver 1
    typedef char*(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERCONFIGPROC)(
        EGLDisplay dpy);
    typedef const char*(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERNAMEPROC)(
        EGLDisplay dpy);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI char* EGLAPIENTRY eglGetDisplayDriverConfig(EGLDisplay dpy);
    EGLAPI const char* EGLAPIENTRY eglGetDisplayDriverName(EGLDisplay dpy);
#endif
#endif /* EGL_MESA_query_driver */

#ifndef EGL_NOK_swap_region
#define EGL_NOK_swap_region 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLint numRects,
        const EGLint* rects);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK(EGLDisplay dpy,
                                                          EGLSurface surface,
                                                          EGLint numRects,
                                                          const EGLint* rects);
#endif
#endif /* EGL_NOK_swap_region */

#ifndef EGL_NOK_swap_region2
#define EGL_NOK_swap_region2 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLint numRects,
        const EGLint* rects);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK(EGLDisplay dpy,
                                                           EGLSurface surface,
                                                           EGLint numRects,
                                                           const EGLint* rects);
#endif
#endif /* EGL_NOK_swap_region2 */

#ifndef EGL_NOK_texture_from_pixmap
#define EGL_NOK_texture_from_pixmap 1
#define EGL_Y_INVERTED_NOK 0x307F
#endif /* EGL_NOK_texture_from_pixmap */

#ifndef EGL_NV_3dvision_surface
#define EGL_NV_3dvision_surface 1
#define EGL_AUTO_STEREO_NV 0x3136
#endif /* EGL_NV_3dvision_surface */

#ifndef EGL_NV_context_priority_realtime
#define EGL_NV_context_priority_realtime 1
#define EGL_CONTEXT_PRIORITY_REALTIME_NV 0x3357
#endif /* EGL_NV_context_priority_realtime */

#ifndef EGL_NV_coverage_sample
#define EGL_NV_coverage_sample 1
#define EGL_COVERAGE_BUFFERS_NV 0x30E0
#define EGL_COVERAGE_SAMPLES_NV 0x30E1
#endif /* EGL_NV_coverage_sample */

#ifndef EGL_NV_coverage_sample_resolve
#define EGL_NV_coverage_sample_resolve 1
#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131
#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132
#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133
#endif /* EGL_NV_coverage_sample_resolve */

#ifndef EGL_NV_cuda_event
#define EGL_NV_cuda_event 1
#define EGL_CUDA_EVENT_HANDLE_NV 0x323B
#define EGL_SYNC_CUDA_EVENT_NV 0x323C
#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV 0x323D
#endif /* EGL_NV_cuda_event */

#ifndef EGL_NV_depth_nonlinear
#define EGL_NV_depth_nonlinear 1
#define EGL_DEPTH_ENCODING_NV 0x30E2
#define EGL_DEPTH_ENCODING_NONE_NV 0
#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
#endif /* EGL_NV_depth_nonlinear */

#ifndef EGL_NV_device_cuda
#define EGL_NV_device_cuda 1
#define EGL_CUDA_DEVICE_NV 0x323A
#endif /* EGL_NV_device_cuda */

#ifndef EGL_NV_native_query
#define EGL_NV_native_query 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC)(
        EGLDisplay dpy,
        EGLNativeDisplayType* display_id);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC)(
        EGLDisplay dpy,
        EGLSurface surf,
        EGLNativeWindowType* window);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC)(
        EGLDisplay dpy,
        EGLSurface surf,
        EGLNativePixmapType* pixmap);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglQueryNativeDisplayNV(EGLDisplay dpy, EGLNativeDisplayType* display_id);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglQueryNativeWindowNV(EGLDisplay dpy,
                           EGLSurface surf,
                           EGLNativeWindowType* window);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglQueryNativePixmapNV(EGLDisplay dpy,
                           EGLSurface surf,
                           EGLNativePixmapType* pixmap);
#endif
#endif /* EGL_NV_native_query */

#ifndef EGL_NV_post_convert_rounding
#define EGL_NV_post_convert_rounding 1
#endif /* EGL_NV_post_convert_rounding */

#ifndef EGL_NV_post_sub_buffer
#define EGL_NV_post_sub_buffer 1
#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC)(
        EGLDisplay dpy,
        EGLSurface surface,
        EGLint x,
        EGLint y,
        EGLint width,
        EGLint height);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV(EGLDisplay dpy,
                                                     EGLSurface surface,
                                                     EGLint x,
                                                     EGLint y,
                                                     EGLint width,
                                                     EGLint height);
#endif
#endif /* EGL_NV_post_sub_buffer */

#ifndef EGL_NV_quadruple_buffer
#define EGL_NV_quadruple_buffer 1
#define EGL_QUADRUPLE_BUFFER_NV 0x3231
#endif /* EGL_NV_quadruple_buffer */

#ifndef EGL_NV_robustness_video_memory_purge
#define EGL_NV_robustness_video_memory_purge 1
#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C
#endif /* EGL_NV_robustness_video_memory_purge */

#ifndef EGL_NV_stream_consumer_eglimage
#define EGL_NV_stream_consumer_eglimage 1
#define EGL_STREAM_CONSUMER_IMAGE_NV 0x3373
#define EGL_STREAM_IMAGE_ADD_NV 0x3374
#define EGL_STREAM_IMAGE_REMOVE_NV 0x3375
#define EGL_STREAM_IMAGE_AVAILABLE_NV 0x3376
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLint num_modifiers,
        EGLuint64KHR* modifiers,
        EGLAttrib* attrib_list);
    typedef EGLint(EGLAPIENTRYP PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLTime timeout,
        EGLenum* event,
        EGLAttrib* aux);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMACQUIREIMAGENVPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLImage* pImage,
        EGLSync sync);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMRELEASEIMAGENVPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLImage image,
        EGLSync sync);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglStreamImageConsumerConnectNV(EGLDisplay dpy,
                                    EGLStreamKHR stream,
                                    EGLint num_modifiers,
                                    EGLuint64KHR* modifiers,
                                    EGLAttrib* attrib_list);
    EGLAPI EGLint EGLAPIENTRY eglQueryStreamConsumerEventNV(EGLDisplay dpy,
                                                            EGLStreamKHR stream,
                                                            EGLTime timeout,
                                                            EGLenum* event,
                                                            EGLAttrib* aux);
    EGLAPI EGLBoolean EGLAPIENTRY eglStreamAcquireImageNV(EGLDisplay dpy,
                                                          EGLStreamKHR stream,
                                                          EGLImage* pImage,
                                                          EGLSync sync);
    EGLAPI EGLBoolean EGLAPIENTRY eglStreamReleaseImageNV(EGLDisplay dpy,
                                                          EGLStreamKHR stream,
                                                          EGLImage image,
                                                          EGLSync sync);
#endif
#endif /* EGL_NV_stream_consumer_eglimage */

#ifndef EGL_NV_stream_consumer_gltexture_yuv
#define EGL_NV_stream_consumer_gltexture_yuv 1
#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV 0x332C
#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV 0x332D
#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV 0x332E
    typedef EGLBoolean(
        EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        const EGLAttrib* attrib_list);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglStreamConsumerGLTextureExternalAttribsNV(EGLDisplay dpy,
                                                EGLStreamKHR stream,
                                                const EGLAttrib* attrib_list);
#endif
#endif /* EGL_NV_stream_consumer_gltexture_yuv */

#ifndef EGL_NV_stream_cross_display
#define EGL_NV_stream_cross_display 1
#define EGL_STREAM_CROSS_DISPLAY_NV 0x334E
#endif /* EGL_NV_stream_cross_display */

#ifndef EGL_NV_stream_cross_object
#define EGL_NV_stream_cross_object 1
#define EGL_STREAM_CROSS_OBJECT_NV 0x334D
#endif /* EGL_NV_stream_cross_object */

#ifndef EGL_NV_stream_cross_partition
#define EGL_NV_stream_cross_partition 1
#define EGL_STREAM_CROSS_PARTITION_NV 0x323F
#endif /* EGL_NV_stream_cross_partition */

#ifndef EGL_NV_stream_cross_process
#define EGL_NV_stream_cross_process 1
#define EGL_STREAM_CROSS_PROCESS_NV 0x3245
#endif /* EGL_NV_stream_cross_process */

#ifndef EGL_NV_stream_cross_system
#define EGL_NV_stream_cross_system 1
#define EGL_STREAM_CROSS_SYSTEM_NV 0x334F
#endif /* EGL_NV_stream_cross_system */

#ifndef EGL_NV_stream_dma
#define EGL_NV_stream_dma 1
#define EGL_STREAM_DMA_NV 0x3371
#define EGL_STREAM_DMA_SERVER_NV 0x3372
#endif /* EGL_NV_stream_dma */

#ifndef EGL_NV_stream_fifo_next
#define EGL_NV_stream_fifo_next 1
#define EGL_PENDING_FRAME_NV 0x3329
#define EGL_STREAM_TIME_PENDING_NV 0x332A
#endif /* EGL_NV_stream_fifo_next */

#ifndef EGL_NV_stream_fifo_synchronous
#define EGL_NV_stream_fifo_synchronous 1
#define EGL_STREAM_FIFO_SYNCHRONOUS_NV 0x3336
#endif /* EGL_NV_stream_fifo_synchronous */

#ifndef EGL_NV_stream_flush
#define EGL_NV_stream_flush 1
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMFLUSHNVPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglStreamFlushNV(EGLDisplay dpy,
                                                   EGLStreamKHR stream);
#endif
#endif /* EGL_NV_stream_flush */

#ifndef EGL_NV_stream_frame_limits
#define EGL_NV_stream_frame_limits 1
#define EGL_PRODUCER_MAX_FRAME_HINT_NV 0x3337
#define EGL_CONSUMER_MAX_FRAME_HINT_NV 0x3338
#endif /* EGL_NV_stream_frame_limits */

#ifndef EGL_NV_stream_metadata
#define EGL_NV_stream_metadata 1
#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250
#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251
#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252
#define EGL_PRODUCER_METADATA_NV 0x3253
#define EGL_CONSUMER_METADATA_NV 0x3254
#define EGL_PENDING_METADATA_NV 0x3328
#define EGL_METADATA0_SIZE_NV 0x3255
#define EGL_METADATA1_SIZE_NV 0x3256
#define EGL_METADATA2_SIZE_NV 0x3257
#define EGL_METADATA3_SIZE_NV 0x3258
#define EGL_METADATA0_TYPE_NV 0x3259
#define EGL_METADATA1_TYPE_NV 0x325A
#define EGL_METADATA2_TYPE_NV 0x325B
#define EGL_METADATA3_TYPE_NV 0x325C
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBNVPROC)(
        EGLDisplay dpy,
        EGLint attribute,
        EGLAttrib* value);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSETSTREAMMETADATANVPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLint n,
        EGLint offset,
        EGLint size,
        const void* data);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMMETADATANVPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLenum name,
        EGLint n,
        EGLint offset,
        EGLint size,
        void* data);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribNV(EGLDisplay dpy,
                                                          EGLint attribute,
                                                          EGLAttrib* value);
    EGLAPI EGLBoolean EGLAPIENTRY eglSetStreamMetadataNV(EGLDisplay dpy,
                                                         EGLStreamKHR stream,
                                                         EGLint n,
                                                         EGLint offset,
                                                         EGLint size,
                                                         const void* data);
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamMetadataNV(EGLDisplay dpy,
                                                           EGLStreamKHR stream,
                                                           EGLenum name,
                                                           EGLint n,
                                                           EGLint offset,
                                                           EGLint size,
                                                           void* data);
#endif
#endif /* EGL_NV_stream_metadata */

#ifndef EGL_NV_stream_origin
#define EGL_NV_stream_origin 1
#define EGL_STREAM_FRAME_ORIGIN_X_NV 0x3366
#define EGL_STREAM_FRAME_ORIGIN_Y_NV 0x3367
#define EGL_STREAM_FRAME_MAJOR_AXIS_NV 0x3368
#define EGL_CONSUMER_AUTO_ORIENTATION_NV 0x3369
#define EGL_PRODUCER_AUTO_ORIENTATION_NV 0x336A
#define EGL_LEFT_NV 0x336B
#define EGL_RIGHT_NV 0x336C
#define EGL_TOP_NV 0x336D
#define EGL_BOTTOM_NV 0x336E
#define EGL_X_AXIS_NV 0x336F
#define EGL_Y_AXIS_NV 0x3370
#endif /* EGL_NV_stream_origin */

#ifndef EGL_NV_stream_remote
#define EGL_NV_stream_remote 1
#define EGL_STREAM_STATE_INITIALIZING_NV 0x3240
#define EGL_STREAM_TYPE_NV 0x3241
#define EGL_STREAM_PROTOCOL_NV 0x3242
#define EGL_STREAM_ENDPOINT_NV 0x3243
#define EGL_STREAM_LOCAL_NV 0x3244
#define EGL_STREAM_PRODUCER_NV 0x3247
#define EGL_STREAM_CONSUMER_NV 0x3248
#define EGL_STREAM_PROTOCOL_FD_NV 0x3246
#endif /* EGL_NV_stream_remote */

#ifndef EGL_NV_stream_reset
#define EGL_NV_stream_reset 1
#define EGL_SUPPORT_RESET_NV 0x3334
#define EGL_SUPPORT_REUSE_NV 0x3335
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLRESETSTREAMNVPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY eglResetStreamNV(EGLDisplay dpy,
                                                   EGLStreamKHR stream);
#endif
#endif /* EGL_NV_stream_reset */

#ifndef EGL_NV_stream_socket
#define EGL_NV_stream_socket 1
#define EGL_STREAM_PROTOCOL_SOCKET_NV 0x324B
#define EGL_SOCKET_HANDLE_NV 0x324C
#define EGL_SOCKET_TYPE_NV 0x324D
#endif /* EGL_NV_stream_socket */

#ifndef EGL_NV_stream_socket_inet
#define EGL_NV_stream_socket_inet 1
#define EGL_SOCKET_TYPE_INET_NV 0x324F
#endif /* EGL_NV_stream_socket_inet */

#ifndef EGL_NV_stream_socket_unix
#define EGL_NV_stream_socket_unix 1
#define EGL_SOCKET_TYPE_UNIX_NV 0x324E
#endif /* EGL_NV_stream_socket_unix */

#ifndef EGL_NV_stream_sync
#define EGL_NV_stream_sync 1
#define EGL_SYNC_NEW_FRAME_NV 0x321F
    typedef EGLSyncKHR(EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC)(
        EGLDisplay dpy,
        EGLStreamKHR stream,
        EGLenum type,
        const EGLint* attrib_list);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLSyncKHR EGLAPIENTRY
    eglCreateStreamSyncNV(EGLDisplay dpy,
                          EGLStreamKHR stream,
                          EGLenum type,
                          const EGLint* attrib_list);
#endif
#endif /* EGL_NV_stream_sync */

#ifndef EGL_NV_sync
#define EGL_NV_sync 1
    typedef void* EGLSyncNV;
    typedef khronos_utime_nanoseconds_t EGLTimeNV;
#ifdef KHRONOS_SUPPORT_INT64
#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6
#define EGL_SYNC_STATUS_NV 0x30E7
#define EGL_SIGNALED_NV 0x30E8
#define EGL_UNSIGNALED_NV 0x30E9
#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001
#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull
#define EGL_ALREADY_SIGNALED_NV 0x30EA
#define EGL_TIMEOUT_EXPIRED_NV 0x30EB
#define EGL_CONDITION_SATISFIED_NV 0x30EC
#define EGL_SYNC_TYPE_NV 0x30ED
#define EGL_SYNC_CONDITION_NV 0x30EE
#define EGL_SYNC_FENCE_NV 0x30EF
#define EGL_NO_SYNC_NV EGL_CAST(EGLSyncNV, 0)
    typedef EGLSyncNV(EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC)(
        EGLDisplay dpy,
        EGLenum condition,
        const EGLint* attrib_list);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC)(EGLSyncNV sync);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLFENCENVPROC)(EGLSyncNV sync);
    typedef EGLint(EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC)(EGLSyncNV sync,
                                                            EGLint flags,
                                                            EGLTimeNV timeout);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC)(EGLSyncNV sync,
                                                            EGLenum mode);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC)(EGLSyncNV sync,
                                                               EGLint attribute,
                                                               EGLint* value);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLSyncNV EGLAPIENTRY
    eglCreateFenceSyncNV(EGLDisplay dpy,
                         EGLenum condition,
                         const EGLint* attrib_list);
    EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV(EGLSyncNV sync);
    EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV(EGLSyncNV sync);
    EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV(EGLSyncNV sync,
                                                  EGLint flags,
                                                  EGLTimeNV timeout);
    EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV(EGLSyncNV sync, EGLenum mode);
    EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV(EGLSyncNV sync,
                                                     EGLint attribute,
                                                     EGLint* value);
#endif
#endif /* KHRONOS_SUPPORT_INT64 */
#endif /* EGL_NV_sync */

#ifndef EGL_NV_system_time
#define EGL_NV_system_time 1
    typedef khronos_utime_nanoseconds_t EGLuint64NV;
#ifdef KHRONOS_SUPPORT_INT64
    typedef EGLuint64NV(EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC)(void);
    typedef EGLuint64NV(EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC)(void);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV(void);
    EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV(void);
#endif
#endif /* KHRONOS_SUPPORT_INT64 */
#endif /* EGL_NV_system_time */

#ifndef EGL_NV_triple_buffer
#define EGL_NV_triple_buffer 1
#define EGL_TRIPLE_BUFFER_NV 0x3230
#endif /* EGL_NV_triple_buffer */

#ifndef EGL_TIZEN_image_native_buffer
#define EGL_TIZEN_image_native_buffer 1
#define EGL_NATIVE_BUFFER_TIZEN 0x32A0
#endif /* EGL_TIZEN_image_native_buffer */

#ifndef EGL_TIZEN_image_native_surface
#define EGL_TIZEN_image_native_surface 1
#define EGL_NATIVE_SURFACE_TIZEN 0x32A1
#endif /* EGL_TIZEN_image_native_surface */

#ifndef EGL_WL_bind_wayland_display
#define EGL_WL_bind_wayland_display 1
#define PFNEGLBINDWAYLANDDISPLAYWL PFNEGLBINDWAYLANDDISPLAYWLPROC
#define PFNEGLUNBINDWAYLANDDISPLAYWL PFNEGLUNBINDWAYLANDDISPLAYWLPROC
#define PFNEGLQUERYWAYLANDBUFFERWL PFNEGLQUERYWAYLANDBUFFERWLPROC
    struct wl_display;
    struct wl_resource;
#define EGL_WAYLAND_BUFFER_WL 0x31D5
#define EGL_WAYLAND_PLANE_WL 0x31D6
#define EGL_TEXTURE_Y_U_V_WL 0x31D7
#define EGL_TEXTURE_Y_UV_WL 0x31D8
#define EGL_TEXTURE_Y_XUXV_WL 0x31D9
#define EGL_TEXTURE_EXTERNAL_WL 0x31DA
#define EGL_WAYLAND_Y_INVERTED_WL 0x31DB
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWLPROC)(
        EGLDisplay dpy,
        struct wl_display* display);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWLPROC)(
        EGLDisplay dpy,
        struct wl_display* display);
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWLPROC)(
        EGLDisplay dpy,
        struct wl_resource* buffer,
        EGLint attribute,
        EGLint* value);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI EGLBoolean EGLAPIENTRY
    eglBindWaylandDisplayWL(EGLDisplay dpy, struct wl_display* display);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct wl_display* display);
    EGLAPI EGLBoolean EGLAPIENTRY
    eglQueryWaylandBufferWL(EGLDisplay dpy,
                            struct wl_resource* buffer,
                            EGLint attribute,
                            EGLint* value);
#endif
#endif /* EGL_WL_bind_wayland_display */

#ifndef EGL_WL_create_wayland_buffer_from_image
#define EGL_WL_create_wayland_buffer_from_image 1
#define PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL                                   \
    PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC
    struct wl_buffer;
    typedef struct wl_buffer*(
        EGLAPIENTRYP PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC)(
        EGLDisplay dpy,
        EGLImageKHR image);
#ifdef EGL_EGLEXT_PROTOTYPES
    EGLAPI struct wl_buffer* EGLAPIENTRY
    eglCreateWaylandBufferFromImageWL(EGLDisplay dpy, EGLImageKHR image);
#endif
#endif /* EGL_WL_create_wayland_buffer_from_image */

/* ANGLE EGL extensions */
#include "eglext_angle.h"

#ifdef __cplusplus
}
#endif

#endif
