From 80bb46cbb9f1e3d9039f33dc864af81a69903f5a Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Thu, 15 Jan 2026 11:37:50 +0800 Subject: [PATCH] [Fix] (MG_Impl/GetProcAddress, Exporting): properly get proc address, clear reliance on dlsym --- CMakeLists.txt | 1 + MobileGL/Includes.h | 4 +- .../MG_Impl/EGLImpl/EGLWrapper/EGLWrapper.cpp | 116 +- .../MG_Impl/EGLImpl/Exporting/Definitions.cpp | 99 ++ .../EGLImpl/Temporary/TemporaryEGLImpl.cpp | 65 +- .../EGLImpl/Temporary/TemporaryEGLImpl.h | 27 +- .../MG_Impl/GLImpl/Exporting/Definitions.cpp | 272 ++++ MobileGL/MG_Impl/GLXImpl/LookUp/LookUp.cpp | 6 +- MobileGL/MG_Impl/GLXImpl/LookUp/LookUp.h | 1 + MobileGL/MG_Impl/GetProcAddress.cpp | 1355 +++++++++++++++++ MobileGL/MG_Impl/GetProcAddress.h | 15 + .../MG_Util/BackendLoaders/OpenGL/Loader.cpp | 19 +- .../MG_Util/BackendLoaders/OpenGL/Loader.h | 23 +- .../Converters/GLToStr/GLEnumConverter.cpp | 1 + include/GL/glext.h | 175 ++- 15 files changed, 2144 insertions(+), 35 deletions(-) create mode 100644 MobileGL/MG_Impl/GetProcAddress.cpp create mode 100644 MobileGL/MG_Impl/GetProcAddress.h diff --git a/CMakeLists.txt b/CMakeLists.txt index fff2de9c..3305905e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -168,6 +168,7 @@ set(SOURCE_FILES MobileGL/MG_Impl/GLImpl/Sync/GL_Sync.cpp MobileGL/MG_Impl/Init.cpp + MobileGL/MG_Impl/GetProcAddress.cpp MobileGL/MG_Backend/Init.cpp diff --git a/MobileGL/Includes.h b/MobileGL/Includes.h index 55bb3dc8..9a862859 100644 --- a/MobileGL/Includes.h +++ b/MobileGL/Includes.h @@ -52,8 +52,10 @@ #include // Include OpenGL and EGL headers -#include #include +#define GL_GLEXT_PROTOTYPES +#include +#undef GL_GLEXT_PROTOTYPES #include #include diff --git a/MobileGL/MG_Impl/EGLImpl/EGLWrapper/EGLWrapper.cpp b/MobileGL/MG_Impl/EGLImpl/EGLWrapper/EGLWrapper.cpp index 1b2cfaa0..6c9d4409 100644 --- a/MobileGL/MG_Impl/EGLImpl/EGLWrapper/EGLWrapper.cpp +++ b/MobileGL/MG_Impl/EGLImpl/EGLWrapper/EGLWrapper.cpp @@ -6,6 +6,9 @@ // End of Source File Header #include "EGLWrapper.h" + +#include "MG_Impl/GetProcAddress.h" + #include #include @@ -96,20 +99,121 @@ namespace MobileGL { return MG_External::EGL::eglCreatePbufferSurface(dpy, config, attrib_list); } + EGLBoolean BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) { + return MG_External::EGL::eglBindTexImage(dpy, surface, buffer); + } + + EGLBoolean ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) { + return MG_External::EGL::eglReleaseTexImage(dpy, surface, buffer); + } + + EGLBoolean CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target) { + return MG_External::EGL::eglCopyBuffers(dpy, surface, target); + } + + EGLSurface CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, + EGLConfig config, const EGLint* attrib_list) { + return MG_External::EGL::eglCreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list); + } + + EGLSurface CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, + const EGLint* attrib_list) { + return MG_External::EGL::eglCreatePixmapSurface(dpy, config, pixmap, attrib_list); + } + + EGLBoolean GetConfigs(EGLDisplay dpy, EGLConfig* configs, EGLint config_size, EGLint* num_config) { + return MG_External::EGL::eglGetConfigs(dpy, configs, config_size, num_config); + } + + EGLDisplay GetCurrentDisplay(void) { + return MG_External::EGL::eglGetCurrentDisplay(); + } + + EGLenum QueryAPI(void) { + return MG_External::EGL::eglQueryAPI(); + } + + EGLBoolean QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint* value) { + return MG_External::EGL::eglQueryContext(dpy, ctx, attribute, value); + } + + EGLBoolean SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value) { + return MG_External::EGL::eglSurfaceAttrib(dpy, surface, attribute, value); + } + + EGLBoolean WaitClient(void) { + return MG_External::EGL::eglWaitClient(); + } + + EGLBoolean WaitGL(void) { + return MG_External::EGL::eglWaitGL(); + } + + EGLBoolean WaitNative(EGLint engine) { + return MG_External::EGL::eglWaitNative(engine); + } + __eglMustCastToProperFunctionPointerType GetProcAddress(const char* name) { MGLOG_D("eglGetProcAddress(%s)", name); -#if !defined(WIN32) && !defined(__APPLE__) - void* proc = dlsym(RTLD_DEFAULT, (const char*)name); -#else - void* proc = NULL; -#endif + + void* proc = MG_Impl::GetProcAddress(name); + if (!proc) { MGLOG_W("Failed to get function: %s", (const char*)name); return nullptr; } return (__eglMustCastToProperFunctionPointerType)proc; } + + EGLSync CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib * attrib_list) { + return MG_External::EGL::eglCreateSync(dpy, type, attrib_list); + } + + + EGLBoolean DestroySync(EGLDisplay dpy, EGLSync sync) { + return MG_External::EGL::eglDestroySync(dpy, sync); + } + + + EGLint ClientWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout) { + return MG_External::EGL::eglClientWaitSync(dpy, sync, flags, timeout); + } + + + EGLBoolean GetSyncAttrib(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib * value) { + return MG_External::EGL::eglGetSyncAttrib(dpy, sync, attribute, value); + } + + + EGLImage CreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib * attrib_list) { + return MG_External::EGL::eglCreateImage(dpy, ctx, target, buffer, attrib_list); + } + + + EGLBoolean DestroyImage(EGLDisplay dpy, EGLImage image) { + return MG_External::EGL::eglDestroyImage(dpy, image); + } + + + EGLDisplay GetPlatformDisplay(EGLenum platform, void * native_display, const EGLAttrib * attrib_list) { + return MG_External::EGL::eglGetPlatformDisplay(platform, native_display, attrib_list); + } + + + EGLSurface CreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void * native_window, const EGLAttrib * attrib_list) { + return MG_External::EGL::eglCreatePlatformWindowSurface(dpy, config, native_window, attrib_list); + } + + + EGLSurface CreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void * native_pixmap, const EGLAttrib * attrib_list) { + return MG_External::EGL::eglCreatePlatformPixmapSurface(dpy, config, native_pixmap, attrib_list); + } + + + EGLBoolean WaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags) { + return MG_External::EGL::eglWaitSync(dpy, sync, flags); + } } // namespace MG_Impl::EGLImpl } // namespace MobileGL -#endif \ No newline at end of file +#endif diff --git a/MobileGL/MG_Impl/EGLImpl/Exporting/Definitions.cpp b/MobileGL/MG_Impl/EGLImpl/Exporting/Definitions.cpp index ef04fee0..dbba7878 100644 --- a/MobileGL/MG_Impl/EGLImpl/Exporting/Definitions.cpp +++ b/MobileGL/MG_Impl/EGLImpl/Exporting/Definitions.cpp @@ -103,3 +103,102 @@ MOBILEGL_EGL_API EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig co MOBILEGL_EGL_API __eglMustCastToProperFunctionPointerType eglGetProcAddress(const char* name) { return MobileGL::MG_Impl::EGLImpl::GetProcAddress(name); } + +MOBILEGL_EGL_API EGLBoolean eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) { + return MobileGL::MG_Impl::EGLImpl::BindTexImage(dpy, surface, buffer); +} + +MOBILEGL_EGL_API EGLBoolean eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) { + return MobileGL::MG_Impl::EGLImpl::ReleaseTexImage(dpy, surface, buffer); +} + +MOBILEGL_EGL_API EGLBoolean eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target) { + return MobileGL::MG_Impl::EGLImpl::CopyBuffers(dpy, surface, target); +} + +MOBILEGL_EGL_API EGLSurface eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, + EGLClientBuffer buffer, EGLConfig config, + const EGLint* attrib_list) { + return MobileGL::MG_Impl::EGLImpl::CreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list); +} + +MOBILEGL_EGL_API EGLSurface eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, + const EGLint* attrib_list) { + return MobileGL::MG_Impl::EGLImpl::CreatePixmapSurface(dpy, config, pixmap, attrib_list); +} + +MOBILEGL_EGL_API EGLBoolean eglGetConfigs(EGLDisplay dpy, EGLConfig* configs, EGLint config_size, EGLint* num_config) { + return MobileGL::MG_Impl::EGLImpl::GetConfigs(dpy, configs, config_size, num_config); +} + +MOBILEGL_EGL_API EGLDisplay eglGetCurrentDisplay(void) { + return MobileGL::MG_Impl::EGLImpl::GetCurrentDisplay(); +} + +MOBILEGL_EGL_API EGLenum eglQueryAPI(void) { + return MobileGL::MG_Impl::EGLImpl::QueryAPI(); +} + +MOBILEGL_EGL_API EGLBoolean eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint* value) { + return MobileGL::MG_Impl::EGLImpl::QueryContext(dpy, ctx, attribute, value); +} + +MOBILEGL_EGL_API EGLBoolean eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value) { + return MobileGL::MG_Impl::EGLImpl::SurfaceAttrib(dpy, surface, attribute, value); +} + +MOBILEGL_EGL_API EGLBoolean eglWaitClient(void) { + return MobileGL::MG_Impl::EGLImpl::WaitClient(); +} + +MOBILEGL_EGL_API EGLBoolean eglWaitGL(void) { + return MobileGL::MG_Impl::EGLImpl::WaitGL(); +} + +MOBILEGL_EGL_API EGLBoolean eglWaitNative(EGLint engine) { + return MobileGL::MG_Impl::EGLImpl::WaitNative(engine); +} + +MOBILEGL_EGL_API EGLSync eglCreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib* attrib_list) { + return MobileGL::MG_Impl::EGLImpl::CreateSync(dpy, type, attrib_list); +} + +MOBILEGL_EGL_API EGLBoolean eglDestroySync(EGLDisplay dpy, EGLSync sync) { + return MobileGL::MG_Impl::EGLImpl::DestroySync(dpy, sync); +} + +MOBILEGL_EGL_API EGLint eglClientWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout) { + return MobileGL::MG_Impl::EGLImpl::ClientWaitSync(dpy, sync, flags, timeout); +} + +MOBILEGL_EGL_API EGLBoolean eglGetSyncAttrib(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib* value) { + return MobileGL::MG_Impl::EGLImpl::GetSyncAttrib(dpy, sync, attribute, value); +} + +MOBILEGL_EGL_API EGLImage eglCreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, + const EGLAttrib* attrib_list) { + return MobileGL::MG_Impl::EGLImpl::CreateImage(dpy, ctx, target, buffer, attrib_list); +} + +MOBILEGL_EGL_API EGLBoolean eglDestroyImage(EGLDisplay dpy, EGLImage image) { + return MobileGL::MG_Impl::EGLImpl::DestroyImage(dpy, image); +} + +MOBILEGL_EGL_API EGLDisplay eglGetPlatformDisplay(EGLenum platform, void* native_display, + const EGLAttrib* attrib_list) { + return MobileGL::MG_Impl::EGLImpl::GetPlatformDisplay(platform, native_display, attrib_list); +} + +MOBILEGL_EGL_API EGLSurface eglCreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void* native_window, + const EGLAttrib* attrib_list) { + return MobileGL::MG_Impl::EGLImpl::CreatePlatformWindowSurface(dpy, config, native_window, attrib_list); +} + +MOBILEGL_EGL_API EGLSurface eglCreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void* native_pixmap, + const EGLAttrib* attrib_list) { + return MobileGL::MG_Impl::EGLImpl::CreatePlatformPixmapSurface(dpy, config, native_pixmap, attrib_list); +} + +MOBILEGL_EGL_API EGLBoolean eglWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags) { + return MobileGL::MG_Impl::EGLImpl::WaitSync(dpy, sync, flags); +} diff --git a/MobileGL/MG_Impl/EGLImpl/Temporary/TemporaryEGLImpl.cpp b/MobileGL/MG_Impl/EGLImpl/Temporary/TemporaryEGLImpl.cpp index 42993721..9ccb693c 100644 --- a/MobileGL/MG_Impl/EGLImpl/Temporary/TemporaryEGLImpl.cpp +++ b/MobileGL/MG_Impl/EGLImpl/Temporary/TemporaryEGLImpl.cpp @@ -113,6 +113,69 @@ namespace MobileGL { return (EGLSurface)1; } + EGLBoolean BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) { + return EGL_TRUE; + } + + EGLBoolean ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) { + return EGL_TRUE; + } + + EGLBoolean CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target) { + return EGL_TRUE; + } + + EGLSurface CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, + EGLConfig config, const EGLint* attrib_list) { + return (EGLSurface)1; + } + + EGLSurface CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, + const EGLint* attrib_list) { + return (EGLSurface)1; + } + + EGLBoolean GetConfigs(EGLDisplay dpy, EGLConfig* configs, EGLint config_size, EGLint* num_config) { + if (num_config) { + *num_config = 1; + } + if (configs && config_size > 0) { + configs[0] = (EGLConfig)1; + } + return EGL_TRUE; + } + + EGLDisplay GetCurrentDisplay(void) { + return (EGLDisplay)1; + } + + EGLenum QueryAPI(void) { + return EGL_OPENGL_API; + } + + EGLBoolean QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint* value) { + if (value) { + *value = 0; + } + return EGL_TRUE; + } + + EGLBoolean SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value) { + return EGL_TRUE; + } + + EGLBoolean WaitClient(void) { + return EGL_TRUE; + } + + EGLBoolean WaitGL(void) { + return EGL_TRUE; + } + + EGLBoolean WaitNative(EGLint engine) { + return EGL_TRUE; + } + __eglMustCastToProperFunctionPointerType GetProcAddress(const char* name) { MGLOG_D("eglGetProcAddress(%s)", name); #if !defined(WIN32) && !defined(__APPLE__) @@ -128,4 +191,4 @@ namespace MobileGL { } } // namespace MG_Impl::EGLImpl } // namespace MobileGL -#endif \ No newline at end of file +#endif diff --git a/MobileGL/MG_Impl/EGLImpl/Temporary/TemporaryEGLImpl.h b/MobileGL/MG_Impl/EGLImpl/Temporary/TemporaryEGLImpl.h index 5efb00dd..fd63d697 100644 --- a/MobileGL/MG_Impl/EGLImpl/Temporary/TemporaryEGLImpl.h +++ b/MobileGL/MG_Impl/EGLImpl/Temporary/TemporaryEGLImpl.h @@ -32,6 +32,31 @@ namespace MobileGL { EGLBoolean SwapInterval(EGLDisplay dpy, EGLint interval); EGLBoolean SwapBuffers(EGLDisplay dpy, EGLSurface draw); EGLSurface CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint* attrib_list); + EGLBoolean BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); + EGLBoolean ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); + EGLBoolean CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target); + EGLSurface CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, + EGLConfig config, const EGLint* attrib_list); + EGLSurface CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, + const EGLint* attrib_list); + EGLBoolean GetConfigs(EGLDisplay dpy, EGLConfig* configs, EGLint config_size, EGLint* num_config); + EGLDisplay GetCurrentDisplay(void); + EGLenum QueryAPI(void); + EGLBoolean QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint* value); + EGLBoolean SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); + EGLBoolean WaitClient(void); + EGLBoolean WaitGL(void); + EGLBoolean WaitNative(EGLint engine); __eglMustCastToProperFunctionPointerType GetProcAddress(const char* name); + EGLSync CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib * attrib_list); + EGLBoolean DestroySync(EGLDisplay dpy, EGLSync sync); + EGLint ClientWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout); + EGLBoolean GetSyncAttrib(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib * value); + EGLImage CreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib * attrib_list); + EGLBoolean DestroyImage(EGLDisplay dpy, EGLImage image); + EGLDisplay GetPlatformDisplay(EGLenum platform, void * native_display, const EGLAttrib * attrib_list); + EGLSurface CreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void * native_window, const EGLAttrib * attrib_list); + EGLSurface CreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void * native_pixmap, const EGLAttrib * attrib_list); + EGLBoolean WaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags); } // namespace MG_Impl::EGLImpl -} // namespace MobileGL \ No newline at end of file +} // namespace MobileGL diff --git a/MobileGL/MG_Impl/GLImpl/Exporting/Definitions.cpp b/MobileGL/MG_Impl/GLImpl/Exporting/Definitions.cpp index 728282be..1e272a73 100644 --- a/MobileGL/MG_Impl/GLImpl/Exporting/Definitions.cpp +++ b/MobileGL/MG_Impl/GLImpl/Exporting/Definitions.cpp @@ -1107,6 +1107,7 @@ DECLARE_GL_FUNCTION_STUB_HEAD(void, SpecializeShader, GLuint shader, const GLcha DECLARE_GL_FUNCTION_STUB_HEAD(void, MultiDrawArraysIndirectCount, GLenum mode, const void* indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) DECLARE_GL_FUNCTION_STUB_END_NO_RETURN(void, MultiDrawArraysIndirectCount, mode, indirect, drawcount, maxdrawcount, stride) DECLARE_GL_FUNCTION_STUB_HEAD(void, MultiDrawElementsIndirectCount, GLenum mode, GLenum type, const void* indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride) DECLARE_GL_FUNCTION_STUB_END_NO_RETURN(void, MultiDrawElementsIndirectCount, mode, type, indirect, drawcount, maxdrawcount, stride) DECLARE_GL_FUNCTION_STUB_HEAD(void, PolygonOffsetClamp, GLfloat factor, GLfloat units, GLfloat clamp) DECLARE_GL_FUNCTION_STUB_END_NO_RETURN(void, PolygonOffsetClamp, factor, units, clamp) +DECLARE_GL_FUNCTION_STUB_HEAD(void, PrimitiveBoundingBoxARB, GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW) DECLARE_GL_FUNCTION_STUB_END(void, PrimitiveBoundingBoxARB, minX, minY, minZ, minW, maxX, maxY, maxZ, maxW) DECLARE_GL_FUNCTION_STUB_HEAD(GLuint64, GetTextureHandleARB, GLuint texture) DECLARE_GL_FUNCTION_STUB_END(GLuint64, GetTextureHandleARB, texture) DECLARE_GL_FUNCTION_STUB_HEAD(GLuint64, GetTextureSamplerHandleARB, GLuint texture, GLuint sampler) DECLARE_GL_FUNCTION_STUB_END(GLuint64, GetTextureSamplerHandleARB, texture, sampler) DECLARE_GL_FUNCTION_STUB_HEAD(void, MakeTextureHandleResidentARB, GLuint64 handle) DECLARE_GL_FUNCTION_STUB_END_NO_RETURN(void, MakeTextureHandleResidentARB, handle) @@ -2827,3 +2828,274 @@ DECLARE_GL_FUNCTION_STUB_HEAD(void, ReplacementCodeuiTexCoord2fNormal3fVertex3fS DECLARE_GL_FUNCTION_STUB_HEAD(void, ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN, const GLuint* rc, const GLfloat* tc, const GLfloat* n, const GLfloat* v) DECLARE_GL_FUNCTION_STUB_END_NO_RETURN(void, ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN, rc, tc, n, v) DECLARE_GL_FUNCTION_STUB_HEAD(void, ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN, GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) DECLARE_GL_FUNCTION_STUB_END_NO_RETURN(void, ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN, rc, s, t, r, g, b, a, nx, ny, nz, x, y, z) DECLARE_GL_FUNCTION_STUB_HEAD(void, ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN, const GLuint* rc, const GLfloat* tc, const GLfloat* c, const GLfloat* n, const GLfloat* v) DECLARE_GL_FUNCTION_STUB_END_NO_RETURN(void, ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN, rc, tc, c, n, v) + +MOBILEGL_GL_API void glDebugMessageControlARB(GLenum source, GLenum type, GLenum severity, GLsizei count, + const GLuint* ids, GLboolean enabled) { + glDebugMessageControl(source, type, severity, count, ids, enabled); +} + +MOBILEGL_GL_API void glDebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, + const GLchar* buf) { + glDebugMessageInsert(source, type, id, severity, length, buf); +} + +MOBILEGL_GL_API void glDebugMessageCallbackARB(GLDEBUGPROC callback, const void* userParam) { + glDebugMessageCallback(callback, userParam); +} + +MOBILEGL_GL_API GLuint glGetDebugMessageLogARB(GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, + GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog) { + return glGetDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths, messageLog); +} + +MOBILEGL_GL_API void glDrawArraysInstancedARB(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) { + glDrawArraysInstanced(mode, first, count, instancecount); +} + +MOBILEGL_GL_API void glDrawArraysInstancedEXT(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) { + glDrawArraysInstanced(mode, first, count, instancecount); +} + +MOBILEGL_GL_API void glDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, const void* indices, + GLsizei instancecount) { + glDrawElementsInstanced(mode, count, type, indices, instancecount); +} + +MOBILEGL_GL_API void glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void* indices, + GLsizei instancecount) { + glDrawElementsInstanced(mode, count, type, indices, instancecount); +} + +MOBILEGL_GL_API void glFramebufferTextureARB(GLenum target, GLenum attachment, GLuint texture, GLint level) { + glFramebufferTexture(target, attachment, texture, level); +} + +MOBILEGL_GL_API void glFramebufferTextureLayerARB(GLenum target, GLenum attachment, GLuint texture, GLint level, + GLint layer) { + glFramebufferTextureLayer(target, attachment, texture, level, layer); +} + +MOBILEGL_GL_API void glGetFramebufferParameterivEXT(GLenum target, GLenum pname, GLint* params) { + glGetFramebufferParameteriv(target, pname, params); +} + +MOBILEGL_GL_API GLenum glGetGraphicsResetStatusARB(void) { + return glGetGraphicsResetStatus(); +} + +MOBILEGL_GL_API void glGetnUniformfvARB(GLuint program, GLint location, GLsizei bufSize, GLfloat* params) { + glGetnUniformfv(program, location, bufSize, params); +} + +MOBILEGL_GL_API void glGetnUniformivARB(GLuint program, GLint location, GLsizei bufSize, GLint* params) { + glGetnUniformiv(program, location, bufSize, params); +} + +MOBILEGL_GL_API void glGetnUniformuivARB(GLuint program, GLint location, GLsizei bufSize, GLuint* params) { + glGetnUniformuiv(program, location, bufSize, params); +} + +MOBILEGL_GL_API void glGetObjectLabelEXT(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, + GLchar* label) { + glGetObjectLabel(identifier, name, bufSize, length, label); +} + +MOBILEGL_GL_API void* glMapNamedBuffer(GLuint buffer, GLenum access) { + MGLOG_W("Stub function: %s(...)", __FUNCTION__); + return nullptr; +} + +MOBILEGL_GL_API void* glMapNamedBufferEXT(GLuint buffer, GLenum access) { + return glMapNamedBuffer(buffer, access); +} + +MOBILEGL_GL_API void* glMapNamedBufferRange(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access) { + MGLOG_W("Stub function: %s(...)", __FUNCTION__); + return nullptr; +} + +MOBILEGL_GL_API void* glMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access) { + return glMapNamedBufferRange(buffer, offset, length, access); +} + +MOBILEGL_GL_API void glMinSampleShadingARB(GLfloat value) { + glMinSampleShading(value); +} + +MOBILEGL_GL_API void glProgramParameteriARB(GLuint program, GLenum pname, GLint value) { + glProgramParameteri(program, pname, value); +} + +MOBILEGL_GL_API void glProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0) { + glProgramUniform1f(program, location, v0); +} + +MOBILEGL_GL_API void glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value) { + glProgramUniform1fv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniform1iEXT(GLuint program, GLint location, GLint v0) { + glProgramUniform1i(program, location, v0); +} + +MOBILEGL_GL_API void glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value) { + glProgramUniform1iv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0) { + glProgramUniform1ui(program, location, v0); +} + +MOBILEGL_GL_API void glProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value) { + glProgramUniform1uiv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1) { + glProgramUniform2f(program, location, v0, v1); +} + +MOBILEGL_GL_API void glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value) { + glProgramUniform2fv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1) { + glProgramUniform2i(program, location, v0, v1); +} + +MOBILEGL_GL_API void glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value) { + glProgramUniform2iv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1) { + glProgramUniform2ui(program, location, v0, v1); +} + +MOBILEGL_GL_API void glProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value) { + glProgramUniform2uiv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) { + glProgramUniform3f(program, location, v0, v1, v2); +} + +MOBILEGL_GL_API void glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value) { + glProgramUniform3fv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) { + glProgramUniform3i(program, location, v0, v1, v2); +} + +MOBILEGL_GL_API void glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value) { + glProgramUniform3iv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) { + glProgramUniform3ui(program, location, v0, v1, v2); +} + +MOBILEGL_GL_API void glProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value) { + glProgramUniform3uiv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniform4fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, + GLfloat v3) { + glProgramUniform4f(program, location, v0, v1, v2, v3); +} + +MOBILEGL_GL_API void glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat* value) { + glProgramUniform4fv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) { + glProgramUniform4i(program, location, v0, v1, v2, v3); +} + +MOBILEGL_GL_API void glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint* value) { + glProgramUniform4iv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, + GLuint v3) { + glProgramUniform4ui(program, location, v0, v1, v2, v3); +} + +MOBILEGL_GL_API void glProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, const GLuint* value) { + glProgramUniform4uiv(program, location, count, value); +} + +MOBILEGL_GL_API void glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value) { + glProgramUniformMatrix2fv(program, location, count, transpose, value); +} + +MOBILEGL_GL_API void glProgramUniformMatrix2x3fvEXT(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value) { + glProgramUniformMatrix2x3fv(program, location, count, transpose, value); +} + +MOBILEGL_GL_API void glProgramUniformMatrix2x4fvEXT(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value) { + glProgramUniformMatrix2x4fv(program, location, count, transpose, value); +} + +MOBILEGL_GL_API void glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value) { + glProgramUniformMatrix3fv(program, location, count, transpose, value); +} + +MOBILEGL_GL_API void glProgramUniformMatrix3x2fvEXT(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value) { + glProgramUniformMatrix3x2fv(program, location, count, transpose, value); +} + +MOBILEGL_GL_API void glProgramUniformMatrix3x4fvEXT(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value) { + glProgramUniformMatrix3x4fv(program, location, count, transpose, value); +} + +MOBILEGL_GL_API void glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value) { + glProgramUniformMatrix4fv(program, location, count, transpose, value); +} + +MOBILEGL_GL_API void glProgramUniformMatrix4x2fvEXT(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value) { + glProgramUniformMatrix4x2fv(program, location, count, transpose, value); +} + +MOBILEGL_GL_API void glProgramUniformMatrix4x3fvEXT(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat* value) { + glProgramUniformMatrix4x3fv(program, location, count, transpose, value); +} + +MOBILEGL_GL_API void glReadnPixelsARB(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, + GLsizei bufSize, void* data) { + glReadnPixels(x, y, width, height, format, type, bufSize, data); +} + +MOBILEGL_GL_API void glTexBufferARB(GLenum target, GLenum internalformat, GLuint buffer) { + glTexBuffer(target, internalformat, buffer); +} + +MOBILEGL_GL_API void glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) { + glTexStorage1DEXT(target, levels, internalformat, width); +} + +MOBILEGL_GL_API void glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, + GLsizei height) { + glTexStorage2D(target, levels, internalformat, width, height); +} + +MOBILEGL_GL_API void glTexStorage3DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth) { + glTexStorage3D(target, levels, internalformat, width, height, depth); +} + +MOBILEGL_GL_API void glVertexAttribDivisorARB(GLuint index, GLuint divisor) { + glVertexAttribDivisor(index, divisor); +} + +MOBILEGL_GL_API void glWindowRectanglesEXT(GLenum mode, GLsizei count, const GLint* box) { + MGLOG_W("Stub function: %s(...)", __FUNCTION__); +} diff --git a/MobileGL/MG_Impl/GLXImpl/LookUp/LookUp.cpp b/MobileGL/MG_Impl/GLXImpl/LookUp/LookUp.cpp index 17e6b5cd..38cd685c 100644 --- a/MobileGL/MG_Impl/GLXImpl/LookUp/LookUp.cpp +++ b/MobileGL/MG_Impl/GLXImpl/LookUp/LookUp.cpp @@ -12,11 +12,7 @@ namespace MG_Impl::GLXImpl { void* GetProcAddress(const char* name) { MGLOG_D("glXGetProcAddress(\"%s\")", name); -#if !defined(WIN32) && !defined(__APPLE__) - void* proc = dlsym(RTLD_DEFAULT, (const char*)name); -#else - void* proc = NULL; -#endif + void* proc = MobileGL::MG_Impl::GetProcAddress(name); if (!proc) { MGLOG_W("Failed to get function: %s", (const char*)name); return nullptr; diff --git a/MobileGL/MG_Impl/GLXImpl/LookUp/LookUp.h b/MobileGL/MG_Impl/GLXImpl/LookUp/LookUp.h index 5773066a..32730714 100644 --- a/MobileGL/MG_Impl/GLXImpl/LookUp/LookUp.h +++ b/MobileGL/MG_Impl/GLXImpl/LookUp/LookUp.h @@ -7,6 +7,7 @@ #pragma once #include +#include "MG_Impl/GetProcAddress.h" namespace MG_Impl { namespace GLXImpl { diff --git a/MobileGL/MG_Impl/GetProcAddress.cpp b/MobileGL/MG_Impl/GetProcAddress.cpp new file mode 100644 index 00000000..c2c365db --- /dev/null +++ b/MobileGL/MG_Impl/GetProcAddress.cpp @@ -0,0 +1,1355 @@ +// MobileGL - MobileGL/MG_Impl/GetProcAddress.cpp +// Copyright (c) 2025-2026 MobileGL-Dev +// Licensed under the GNU Lesser General Public License v2.1: +// http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html +// SPDX-License-Identifier: LGPL-2.1-only +// End of Source File Header + +#include "GetProcAddress.h" +#define GETPROC(name, var) \ + if (strcmp(#name, var) == 0) { \ + return (void*)name; \ + } + +namespace MobileGL { + namespace MG_Impl { + void* GetProcAddress(const char* name) { + MGLOG_D("GetProcAddress(%s)", name); + GETPROC(eglChooseConfig, name); + GETPROC(eglCopyBuffers, name); + GETPROC(eglCreateContext, name); + GETPROC(eglCreatePbufferSurface, name); + GETPROC(eglCreatePixmapSurface, name); + GETPROC(eglCreateWindowSurface, name); + GETPROC(eglDestroyContext, name); + GETPROC(eglDestroySurface, name); + GETPROC(eglGetConfigAttrib, name); + GETPROC(eglGetConfigs, name); + GETPROC(eglGetCurrentDisplay, name); + GETPROC(eglGetCurrentSurface, name); + GETPROC(eglGetDisplay, name); + GETPROC(eglGetError, name); + GETPROC(eglGetProcAddress, name); + GETPROC(eglInitialize, name); + GETPROC(eglMakeCurrent, name); + GETPROC(eglQueryContext, name); + GETPROC(eglQueryString, name); + GETPROC(eglQuerySurface, name); + GETPROC(eglSwapBuffers, name); + GETPROC(eglTerminate, name); + GETPROC(eglWaitGL, name); + GETPROC(eglWaitNative, name); + GETPROC(eglBindTexImage, name); + GETPROC(eglReleaseTexImage, name); + GETPROC(eglSurfaceAttrib, name); + GETPROC(eglSwapInterval, name); + GETPROC(eglBindAPI, name); + GETPROC(eglQueryAPI, name); + GETPROC(eglCreatePbufferFromClientBuffer, name); + GETPROC(eglReleaseThread, name); + GETPROC(eglWaitClient, name); + GETPROC(eglGetCurrentContext, name); + GETPROC(eglCreateSync, name); + GETPROC(eglDestroySync, name); + GETPROC(eglClientWaitSync, name); + GETPROC(eglGetSyncAttrib, name); + GETPROC(eglCreateImage, name); + GETPROC(eglDestroyImage, name); + GETPROC(eglGetPlatformDisplay, name); + GETPROC(eglCreatePlatformWindowSurface, name); + GETPROC(eglCreatePlatformPixmapSurface, name); + GETPROC(eglWaitSync, name); + + GETPROC(glCullFace, name); + GETPROC(glFrontFace, name); + GETPROC(glHint, name); + GETPROC(glLineWidth, name); + GETPROC(glPointSize, name); + GETPROC(glPolygonMode, name); + GETPROC(glScissor, name); + GETPROC(glTexParameterf, name); + GETPROC(glTexParameterfv, name); + GETPROC(glTexParameteri, name); + GETPROC(glTexParameteriv, name); + GETPROC(glTexImage1D, name); + GETPROC(glTexImage2D, name); + GETPROC(glDrawBuffer, name); + GETPROC(glClear, name); + GETPROC(glClearColor, name); + GETPROC(glClearStencil, name); + GETPROC(glClearDepth, name); + GETPROC(glStencilMask, name); + GETPROC(glColorMask, name); + GETPROC(glDepthMask, name); + GETPROC(glDisable, name); + GETPROC(glEnable, name); + GETPROC(glFinish, name); + GETPROC(glFlush, name); + GETPROC(glBlendFunc, name); + GETPROC(glLogicOp, name); + GETPROC(glStencilFunc, name); + GETPROC(glStencilOp, name); + GETPROC(glDepthFunc, name); + GETPROC(glPixelStoref, name); + GETPROC(glPixelStorei, name); + GETPROC(glReadBuffer, name); + GETPROC(glReadPixels, name); + GETPROC(glGetBooleanv, name); + GETPROC(glGetDoublev, name); + GETPROC(glGetError, name); + GETPROC(glGetFloatv, name); + GETPROC(glGetIntegerv, name); + GETPROC(glGetString, name); + GETPROC(glGetTexImage, name); + GETPROC(glGetTexParameterfv, name); + GETPROC(glGetTexParameteriv, name); + GETPROC(glGetTexLevelParameterfv, name); + GETPROC(glGetTexLevelParameteriv, name); + GETPROC(glIsEnabled, name); + GETPROC(glDepthRange, name); + GETPROC(glViewport, name); + GETPROC(glDrawArrays, name); + GETPROC(glDrawElements, name); + GETPROC(glGetPointerv, name); + GETPROC(glPolygonOffset, name); + GETPROC(glCopyTexImage1D, name); + GETPROC(glCopyTexImage2D, name); + GETPROC(glCopyTexSubImage1D, name); + GETPROC(glCopyTexSubImage2D, name); + GETPROC(glTexSubImage1D, name); + GETPROC(glTexSubImage2D, name); + GETPROC(glBindTexture, name); + GETPROC(glDeleteTextures, name); + GETPROC(glGenTextures, name); + GETPROC(glIsTexture, name); + GETPROC(glDrawRangeElements, name); + GETPROC(glTexImage3D, name); + GETPROC(glTexSubImage3D, name); + GETPROC(glCopyTexSubImage3D, name); + GETPROC(glActiveTexture, name); + GETPROC(glSampleCoverage, name); + GETPROC(glCompressedTexImage3D, name); + GETPROC(glCompressedTexImage2D, name); + GETPROC(glCompressedTexImage1D, name); + GETPROC(glCompressedTexSubImage3D, name); + GETPROC(glCompressedTexSubImage2D, name); + GETPROC(glCompressedTexSubImage1D, name); + GETPROC(glGetCompressedTexImage, name); + GETPROC(glBlendFuncSeparate, name); + GETPROC(glMultiDrawArrays, name); + GETPROC(glMultiDrawElements, name); + GETPROC(glPointParameterf, name); + GETPROC(glPointParameterfv, name); + GETPROC(glPointParameteri, name); + GETPROC(glPointParameteriv, name); + GETPROC(glBlendColor, name); + GETPROC(glBlendEquation, name); + GETPROC(glGenQueries, name); + GETPROC(glDeleteQueries, name); + GETPROC(glIsQuery, name); + GETPROC(glBeginQuery, name); + GETPROC(glEndQuery, name); + GETPROC(glGetQueryiv, name); + GETPROC(glGetQueryObjectiv, name); + GETPROC(glGetQueryObjectuiv, name); + GETPROC(glBindBuffer, name); + GETPROC(glDeleteBuffers, name); + GETPROC(glGenBuffers, name); + GETPROC(glIsBuffer, name); + GETPROC(glBufferData, name); + GETPROC(glBufferSubData, name); + GETPROC(glGetBufferSubData, name); + GETPROC(glMapBuffer, name); + GETPROC(glUnmapBuffer, name); + GETPROC(glGetBufferParameteriv, name); + GETPROC(glGetBufferPointerv, name); + GETPROC(glBlendEquationSeparate, name); + GETPROC(glDrawBuffers, name); + GETPROC(glStencilOpSeparate, name); + GETPROC(glStencilFuncSeparate, name); + GETPROC(glStencilMaskSeparate, name); + GETPROC(glAttachShader, name); + GETPROC(glBindAttribLocation, name); + GETPROC(glCompileShader, name); + GETPROC(glCreateProgram, name); + GETPROC(glCreateShader, name); + GETPROC(glDeleteProgram, name); + GETPROC(glDeleteShader, name); + GETPROC(glDetachShader, name); + GETPROC(glDisableVertexAttribArray, name); + GETPROC(glEnableVertexAttribArray, name); + GETPROC(glGetActiveAttrib, name); + GETPROC(glGetActiveUniform, name); + GETPROC(glGetAttachedShaders, name); + GETPROC(glGetAttribLocation, name); + GETPROC(glGetProgramiv, name); + GETPROC(glGetProgramInfoLog, name); + GETPROC(glGetShaderiv, name); + GETPROC(glGetShaderInfoLog, name); + GETPROC(glGetShaderSource, name); + GETPROC(glGetUniformLocation, name); + GETPROC(glGetUniformfv, name); + GETPROC(glGetUniformiv, name); + GETPROC(glGetVertexAttribdv, name); + GETPROC(glGetVertexAttribfv, name); + GETPROC(glGetVertexAttribiv, name); + GETPROC(glGetVertexAttribPointerv, name); + GETPROC(glIsProgram, name); + GETPROC(glIsShader, name); + GETPROC(glLinkProgram, name); + GETPROC(glShaderSource, name); + GETPROC(glUseProgram, name); + GETPROC(glUniform1f, name); + GETPROC(glUniform2f, name); + GETPROC(glUniform3f, name); + GETPROC(glUniform4f, name); + GETPROC(glUniform1i, name); + GETPROC(glUniform2i, name); + GETPROC(glUniform3i, name); + GETPROC(glUniform4i, name); + GETPROC(glUniform1fv, name); + GETPROC(glUniform2fv, name); + GETPROC(glUniform3fv, name); + GETPROC(glUniform4fv, name); + GETPROC(glUniform1iv, name); + GETPROC(glUniform2iv, name); + GETPROC(glUniform3iv, name); + GETPROC(glUniform4iv, name); + GETPROC(glUniformMatrix2fv, name); + GETPROC(glUniformMatrix3fv, name); + GETPROC(glUniformMatrix4fv, name); + GETPROC(glValidateProgram, name); + GETPROC(glVertexAttrib1d, name); + GETPROC(glVertexAttrib1dv, name); + GETPROC(glVertexAttrib1f, name); + GETPROC(glVertexAttrib1fv, name); + GETPROC(glVertexAttrib1s, name); + GETPROC(glVertexAttrib1sv, name); + GETPROC(glVertexAttrib2d, name); + GETPROC(glVertexAttrib2dv, name); + GETPROC(glVertexAttrib2f, name); + GETPROC(glVertexAttrib2fv, name); + GETPROC(glVertexAttrib2s, name); + GETPROC(glVertexAttrib2sv, name); + GETPROC(glVertexAttrib3d, name); + GETPROC(glVertexAttrib3dv, name); + GETPROC(glVertexAttrib3f, name); + GETPROC(glVertexAttrib3fv, name); + GETPROC(glVertexAttrib3s, name); + GETPROC(glVertexAttrib3sv, name); + GETPROC(glVertexAttrib4Nbv, name); + GETPROC(glVertexAttrib4Niv, name); + GETPROC(glVertexAttrib4Nsv, name); + GETPROC(glVertexAttrib4Nub, name); + GETPROC(glVertexAttrib4Nubv, name); + GETPROC(glVertexAttrib4Nuiv, name); + GETPROC(glVertexAttrib4Nusv, name); + GETPROC(glVertexAttrib4bv, name); + GETPROC(glVertexAttrib4d, name); + GETPROC(glVertexAttrib4dv, name); + GETPROC(glVertexAttrib4f, name); + GETPROC(glVertexAttrib4fv, name); + GETPROC(glVertexAttrib4iv, name); + GETPROC(glVertexAttrib4s, name); + GETPROC(glVertexAttrib4sv, name); + GETPROC(glVertexAttrib4ubv, name); + GETPROC(glVertexAttrib4uiv, name); + GETPROC(glVertexAttrib4usv, name); + GETPROC(glVertexAttribPointer, name); + GETPROC(glUniformMatrix2x3fv, name); + GETPROC(glUniformMatrix3x2fv, name); + GETPROC(glUniformMatrix2x4fv, name); + GETPROC(glUniformMatrix4x2fv, name); + GETPROC(glUniformMatrix3x4fv, name); + GETPROC(glUniformMatrix4x3fv, name); + GETPROC(glColorMaski, name); + GETPROC(glGetBooleani_v, name); + GETPROC(glGetIntegeri_v, name); + GETPROC(glEnablei, name); + GETPROC(glDisablei, name); + GETPROC(glIsEnabledi, name); + GETPROC(glBeginTransformFeedback, name); + GETPROC(glEndTransformFeedback, name); + GETPROC(glBindBufferRange, name); + GETPROC(glBindBufferBase, name); + GETPROC(glTransformFeedbackVaryings, name); + GETPROC(glGetTransformFeedbackVarying, name); + GETPROC(glClampColor, name); + GETPROC(glBeginConditionalRender, name); + GETPROC(glEndConditionalRender, name); + GETPROC(glVertexAttribIPointer, name); + GETPROC(glGetVertexAttribIiv, name); + GETPROC(glGetVertexAttribIuiv, name); + GETPROC(glVertexAttribI1i, name); + GETPROC(glVertexAttribI2i, name); + GETPROC(glVertexAttribI3i, name); + GETPROC(glVertexAttribI4i, name); + GETPROC(glVertexAttribI1ui, name); + GETPROC(glVertexAttribI2ui, name); + GETPROC(glVertexAttribI3ui, name); + GETPROC(glVertexAttribI4ui, name); + GETPROC(glVertexAttribI1iv, name); + GETPROC(glVertexAttribI2iv, name); + GETPROC(glVertexAttribI3iv, name); + GETPROC(glVertexAttribI4iv, name); + GETPROC(glVertexAttribI1uiv, name); + GETPROC(glVertexAttribI2uiv, name); + GETPROC(glVertexAttribI3uiv, name); + GETPROC(glVertexAttribI4uiv, name); + GETPROC(glVertexAttribI4bv, name); + GETPROC(glVertexAttribI4sv, name); + GETPROC(glVertexAttribI4ubv, name); + GETPROC(glVertexAttribI4usv, name); + GETPROC(glGetUniformuiv, name); + GETPROC(glBindFragDataLocation, name); + GETPROC(glGetFragDataLocation, name); + GETPROC(glUniform1ui, name); + GETPROC(glUniform2ui, name); + GETPROC(glUniform3ui, name); + GETPROC(glUniform4ui, name); + GETPROC(glUniform1uiv, name); + GETPROC(glUniform2uiv, name); + GETPROC(glUniform3uiv, name); + GETPROC(glUniform4uiv, name); + GETPROC(glTexParameterIiv, name); + GETPROC(glTexParameterIuiv, name); + GETPROC(glGetTexParameterIiv, name); + GETPROC(glGetTexParameterIuiv, name); + GETPROC(glClearBufferiv, name); + GETPROC(glClearBufferuiv, name); + GETPROC(glClearBufferfv, name); + GETPROC(glClearBufferfi, name); + GETPROC(glGetStringi, name); + GETPROC(glIsRenderbuffer, name); + GETPROC(glBindRenderbuffer, name); + GETPROC(glDeleteRenderbuffers, name); + GETPROC(glGenRenderbuffers, name); + GETPROC(glRenderbufferStorage, name); + GETPROC(glGetRenderbufferParameteriv, name); + GETPROC(glIsFramebuffer, name); + GETPROC(glBindFramebuffer, name); + GETPROC(glDeleteFramebuffers, name); + GETPROC(glGenFramebuffers, name); + GETPROC(glCheckFramebufferStatus, name); + GETPROC(glFramebufferTexture1D, name); + GETPROC(glFramebufferTexture2D, name); + GETPROC(glFramebufferTexture3D, name); + GETPROC(glFramebufferRenderbuffer, name); + GETPROC(glGetFramebufferAttachmentParameteriv, name); + GETPROC(glGenerateMipmap, name); + GETPROC(glBlitFramebuffer, name); + GETPROC(glRenderbufferStorageMultisample, name); + GETPROC(glFramebufferTextureLayer, name); + GETPROC(glMapBufferRange, name); + GETPROC(glFlushMappedBufferRange, name); + GETPROC(glBindVertexArray, name); + GETPROC(glDeleteVertexArrays, name); + GETPROC(glGenVertexArrays, name); + GETPROC(glIsVertexArray, name); + GETPROC(glDrawArraysInstanced, name); + GETPROC(glDrawElementsInstanced, name); + GETPROC(glTexBuffer, name); + GETPROC(glPrimitiveRestartIndex, name); + GETPROC(glCopyBufferSubData, name); + GETPROC(glGetUniformIndices, name); + GETPROC(glGetActiveUniformsiv, name); + GETPROC(glGetActiveUniformName, name); + GETPROC(glGetUniformBlockIndex, name); + GETPROC(glGetActiveUniformBlockiv, name); + GETPROC(glGetActiveUniformBlockName, name); + GETPROC(glUniformBlockBinding, name); + GETPROC(glDrawElementsBaseVertex, name); + GETPROC(glDrawRangeElementsBaseVertex, name); + GETPROC(glDrawElementsInstancedBaseVertex, name); + GETPROC(glMultiDrawElementsBaseVertex, name); + GETPROC(glProvokingVertex, name); + GETPROC(glFenceSync, name); + GETPROC(glIsSync, name); + GETPROC(glDeleteSync, name); + GETPROC(glClientWaitSync, name); + GETPROC(glWaitSync, name); + GETPROC(glGetInteger64v, name); + GETPROC(glGetSynciv, name); + GETPROC(glGetInteger64i_v, name); + GETPROC(glGetBufferParameteri64v, name); + GETPROC(glFramebufferTexture, name); + GETPROC(glTexImage2DMultisample, name); + GETPROC(glTexImage3DMultisample, name); + GETPROC(glGetMultisamplefv, name); + GETPROC(glSampleMaski, name); + GETPROC(glBindFragDataLocationIndexed, name); + GETPROC(glGetFragDataIndex, name); + GETPROC(glGenSamplers, name); + GETPROC(glDeleteSamplers, name); + GETPROC(glIsSampler, name); + GETPROC(glBindSampler, name); + GETPROC(glSamplerParameteri, name); + GETPROC(glSamplerParameteriv, name); + GETPROC(glSamplerParameterf, name); + GETPROC(glSamplerParameterfv, name); + GETPROC(glSamplerParameterIiv, name); + GETPROC(glSamplerParameterIuiv, name); + GETPROC(glGetSamplerParameteriv, name); + GETPROC(glGetSamplerParameterIiv, name); + GETPROC(glGetSamplerParameterfv, name); + GETPROC(glGetSamplerParameterIuiv, name); + GETPROC(glQueryCounter, name); + GETPROC(glGetQueryObjecti64v, name); + GETPROC(glGetQueryObjectui64v, name); + GETPROC(glVertexAttribDivisor, name); + GETPROC(glVertexAttribP1ui, name); + GETPROC(glVertexAttribP1uiv, name); + GETPROC(glVertexAttribP2ui, name); + GETPROC(glVertexAttribP2uiv, name); + GETPROC(glVertexAttribP3ui, name); + GETPROC(glVertexAttribP3uiv, name); + GETPROC(glVertexAttribP4ui, name); + GETPROC(glVertexAttribP4uiv, name); + GETPROC(glMinSampleShading, name); + GETPROC(glBlendEquationi, name); + GETPROC(glBlendEquationSeparatei, name); + GETPROC(glBlendFunci, name); + GETPROC(glBlendFuncSeparatei, name); + GETPROC(glDrawArraysIndirect, name); + GETPROC(glDrawElementsIndirect, name); + GETPROC(glUniform1d, name); + GETPROC(glUniform2d, name); + GETPROC(glUniform3d, name); + GETPROC(glUniform4d, name); + GETPROC(glUniform1dv, name); + GETPROC(glUniform2dv, name); + GETPROC(glUniform3dv, name); + GETPROC(glUniform4dv, name); + GETPROC(glUniformMatrix2dv, name); + GETPROC(glUniformMatrix3dv, name); + GETPROC(glUniformMatrix4dv, name); + GETPROC(glUniformMatrix2x3dv, name); + GETPROC(glUniformMatrix2x4dv, name); + GETPROC(glUniformMatrix3x2dv, name); + GETPROC(glUniformMatrix3x4dv, name); + GETPROC(glUniformMatrix4x2dv, name); + GETPROC(glUniformMatrix4x3dv, name); + GETPROC(glGetUniformdv, name); + GETPROC(glGetSubroutineUniformLocation, name); + GETPROC(glGetSubroutineIndex, name); + GETPROC(glGetActiveSubroutineUniformiv, name); + GETPROC(glGetActiveSubroutineUniformName, name); + GETPROC(glGetActiveSubroutineName, name); + GETPROC(glUniformSubroutinesuiv, name); + GETPROC(glGetUniformSubroutineuiv, name); + GETPROC(glGetProgramStageiv, name); + GETPROC(glPatchParameteri, name); + GETPROC(glPatchParameterfv, name); + GETPROC(glBindTransformFeedback, name); + GETPROC(glDeleteTransformFeedbacks, name); + GETPROC(glGenTransformFeedbacks, name); + GETPROC(glIsTransformFeedback, name); + GETPROC(glPauseTransformFeedback, name); + GETPROC(glResumeTransformFeedback, name); + GETPROC(glDrawTransformFeedback, name); + GETPROC(glDrawTransformFeedbackStream, name); + GETPROC(glBeginQueryIndexed, name); + GETPROC(glEndQueryIndexed, name); + GETPROC(glGetQueryIndexediv, name); + GETPROC(glReleaseShaderCompiler, name); + GETPROC(glShaderBinary, name); + GETPROC(glGetShaderPrecisionFormat, name); + GETPROC(glDepthRangef, name); + GETPROC(glClearDepthf, name); + GETPROC(glGetProgramBinary, name); + GETPROC(glProgramBinary, name); + GETPROC(glProgramParameteri, name); + GETPROC(glUseProgramStages, name); + GETPROC(glActiveShaderProgram, name); + GETPROC(glCreateShaderProgramv, name); + GETPROC(glBindProgramPipeline, name); + GETPROC(glDeleteProgramPipelines, name); + GETPROC(glGenProgramPipelines, name); + GETPROC(glIsProgramPipeline, name); + GETPROC(glGetProgramPipelineiv, name); + GETPROC(glProgramUniform1i, name); + GETPROC(glProgramUniform1iv, name); + GETPROC(glProgramUniform1f, name); + GETPROC(glProgramUniform1fv, name); + GETPROC(glProgramUniform1d, name); + GETPROC(glProgramUniform1dv, name); + GETPROC(glProgramUniform1ui, name); + GETPROC(glProgramUniform1uiv, name); + GETPROC(glProgramUniform2i, name); + GETPROC(glProgramUniform2iv, name); + GETPROC(glProgramUniform2f, name); + GETPROC(glProgramUniform2fv, name); + GETPROC(glProgramUniform2d, name); + GETPROC(glProgramUniform2dv, name); + GETPROC(glProgramUniform2ui, name); + GETPROC(glProgramUniform2uiv, name); + GETPROC(glProgramUniform3i, name); + GETPROC(glProgramUniform3iv, name); + GETPROC(glProgramUniform3f, name); + GETPROC(glProgramUniform3fv, name); + GETPROC(glProgramUniform3d, name); + GETPROC(glProgramUniform3dv, name); + GETPROC(glProgramUniform3ui, name); + GETPROC(glProgramUniform3uiv, name); + GETPROC(glProgramUniform4i, name); + GETPROC(glProgramUniform4iv, name); + GETPROC(glProgramUniform4f, name); + GETPROC(glProgramUniform4fv, name); + GETPROC(glProgramUniform4d, name); + GETPROC(glProgramUniform4dv, name); + GETPROC(glProgramUniform4ui, name); + GETPROC(glProgramUniform4uiv, name); + GETPROC(glProgramUniformMatrix2fv, name); + GETPROC(glProgramUniformMatrix3fv, name); + GETPROC(glProgramUniformMatrix4fv, name); + GETPROC(glProgramUniformMatrix2dv, name); + GETPROC(glProgramUniformMatrix3dv, name); + GETPROC(glProgramUniformMatrix4dv, name); + GETPROC(glProgramUniformMatrix2x3fv, name); + GETPROC(glProgramUniformMatrix3x2fv, name); + GETPROC(glProgramUniformMatrix2x4fv, name); + GETPROC(glProgramUniformMatrix4x2fv, name); + GETPROC(glProgramUniformMatrix3x4fv, name); + GETPROC(glProgramUniformMatrix4x3fv, name); + GETPROC(glProgramUniformMatrix2x3dv, name); + GETPROC(glProgramUniformMatrix3x2dv, name); + GETPROC(glProgramUniformMatrix2x4dv, name); + GETPROC(glProgramUniformMatrix4x2dv, name); + GETPROC(glProgramUniformMatrix3x4dv, name); + GETPROC(glProgramUniformMatrix4x3dv, name); + GETPROC(glValidateProgramPipeline, name); + GETPROC(glGetProgramPipelineInfoLog, name); + GETPROC(glVertexAttribL1d, name); + GETPROC(glVertexAttribL2d, name); + GETPROC(glVertexAttribL3d, name); + GETPROC(glVertexAttribL4d, name); + GETPROC(glVertexAttribL1dv, name); + GETPROC(glVertexAttribL2dv, name); + GETPROC(glVertexAttribL3dv, name); + GETPROC(glVertexAttribL4dv, name); + GETPROC(glVertexAttribLPointer, name); + GETPROC(glGetVertexAttribLdv, name); + GETPROC(glViewportArrayv, name); + GETPROC(glViewportIndexedf, name); + GETPROC(glViewportIndexedfv, name); + GETPROC(glScissorArrayv, name); + GETPROC(glScissorIndexed, name); + GETPROC(glScissorIndexedv, name); + GETPROC(glDepthRangeArrayv, name); + GETPROC(glDepthRangeIndexed, name); + GETPROC(glGetFloati_v, name); + GETPROC(glGetDoublei_v, name); + GETPROC(glDrawArraysInstancedBaseInstance, name); + GETPROC(glDrawElementsInstancedBaseInstance, name); + GETPROC(glDrawElementsInstancedBaseVertexBaseInstance, name); + GETPROC(glGetInternalformativ, name); + GETPROC(glGetActiveAtomicCounterBufferiv, name); + GETPROC(glBindImageTexture, name); + GETPROC(glMemoryBarrier, name); + GETPROC(glTexStorage1D, name); + GETPROC(glTexStorage2D, name); + GETPROC(glTexStorage3D, name); + GETPROC(glDrawTransformFeedbackInstanced, name); + GETPROC(glDrawTransformFeedbackStreamInstanced, name); + GETPROC(glClearBufferData, name); + GETPROC(glClearBufferSubData, name); + GETPROC(glDispatchCompute, name); + GETPROC(glDispatchComputeIndirect, name); + GETPROC(glCopyImageSubData, name); + GETPROC(glFramebufferParameteri, name); + GETPROC(glGetFramebufferParameteriv, name); + GETPROC(glGetInternalformati64v, name); + GETPROC(glInvalidateTexSubImage, name); + GETPROC(glInvalidateTexImage, name); + GETPROC(glInvalidateBufferSubData, name); + GETPROC(glInvalidateBufferData, name); + GETPROC(glInvalidateFramebuffer, name); + GETPROC(glInvalidateSubFramebuffer, name); + GETPROC(glMultiDrawArraysIndirect, name); + GETPROC(glMultiDrawElementsIndirect, name); + GETPROC(glGetProgramInterfaceiv, name); + GETPROC(glGetProgramResourceIndex, name); + GETPROC(glGetProgramResourceName, name); + GETPROC(glGetProgramResourceiv, name); + GETPROC(glGetProgramResourceLocation, name); + GETPROC(glGetProgramResourceLocationIndex, name); + GETPROC(glShaderStorageBlockBinding, name); + GETPROC(glTexBufferRange, name); + GETPROC(glTexStorage2DMultisample, name); + GETPROC(glTexStorage3DMultisample, name); + GETPROC(glTextureView, name); + GETPROC(glBindVertexBuffer, name); + GETPROC(glVertexAttribFormat, name); + GETPROC(glVertexAttribIFormat, name); + GETPROC(glVertexAttribLFormat, name); + GETPROC(glVertexAttribBinding, name); + GETPROC(glVertexBindingDivisor, name); + GETPROC(glDebugMessageControl, name); + GETPROC(glDebugMessageInsert, name); + GETPROC(glDebugMessageCallback, name); + GETPROC(glGetDebugMessageLog, name); + GETPROC(glPushDebugGroup, name); + GETPROC(glPopDebugGroup, name); + GETPROC(glObjectLabel, name); + GETPROC(glGetObjectLabel, name); + GETPROC(glObjectPtrLabel, name); + GETPROC(glGetObjectPtrLabel, name); + GETPROC(glBufferStorage, name); + GETPROC(glClearTexImage, name); + GETPROC(glClearTexSubImage, name); + GETPROC(glBindBuffersBase, name); + GETPROC(glBindBuffersRange, name); + GETPROC(glBindTextures, name); + GETPROC(glBindSamplers, name); + GETPROC(glBindImageTextures, name); + GETPROC(glBindVertexBuffers, name); + GETPROC(glClipControl, name); + GETPROC(glCreateTransformFeedbacks, name); + GETPROC(glTransformFeedbackBufferBase, name); + GETPROC(glTransformFeedbackBufferRange, name); + GETPROC(glGetTransformFeedbackiv, name); + GETPROC(glGetTransformFeedbacki_v, name); + GETPROC(glGetTransformFeedbacki64_v, name); + GETPROC(glCreateBuffers, name); + GETPROC(glNamedBufferStorage, name); + GETPROC(glNamedBufferData, name); + GETPROC(glNamedBufferSubData, name); + GETPROC(glCopyNamedBufferSubData, name); + GETPROC(glClearNamedBufferData, name); + GETPROC(glClearNamedBufferSubData, name); + GETPROC(glMapNamedBuffer, name); + GETPROC(glMapNamedBufferRange, name); + GETPROC(glUnmapNamedBuffer, name); + GETPROC(glFlushMappedNamedBufferRange, name); + GETPROC(glGetNamedBufferParameteriv, name); + GETPROC(glGetNamedBufferParameteri64v, name); + GETPROC(glGetNamedBufferPointerv, name); + GETPROC(glGetNamedBufferSubData, name); + GETPROC(glCreateFramebuffers, name); + GETPROC(glNamedFramebufferRenderbuffer, name); + GETPROC(glNamedFramebufferParameteri, name); + GETPROC(glNamedFramebufferTexture, name); + GETPROC(glNamedFramebufferTextureLayer, name); + GETPROC(glNamedFramebufferDrawBuffer, name); + GETPROC(glNamedFramebufferDrawBuffers, name); + GETPROC(glNamedFramebufferReadBuffer, name); + GETPROC(glInvalidateNamedFramebufferData, name); + GETPROC(glInvalidateNamedFramebufferSubData, name); + GETPROC(glClearNamedFramebufferiv, name); + GETPROC(glClearNamedFramebufferuiv, name); + GETPROC(glClearNamedFramebufferfv, name); + GETPROC(glClearNamedFramebufferfi, name); + GETPROC(glBlitNamedFramebuffer, name); + GETPROC(glCheckNamedFramebufferStatus, name); + GETPROC(glGetNamedFramebufferParameteriv, name); + GETPROC(glGetNamedFramebufferAttachmentParameteriv, name); + GETPROC(glCreateRenderbuffers, name); + GETPROC(glNamedRenderbufferStorage, name); + GETPROC(glNamedRenderbufferStorageMultisample, name); + GETPROC(glGetNamedRenderbufferParameteriv, name); + GETPROC(glCreateTextures, name); + GETPROC(glTextureBuffer, name); + GETPROC(glTextureBufferRange, name); + GETPROC(glTextureStorage1D, name); + GETPROC(glTextureStorage2D, name); + GETPROC(glTextureStorage3D, name); + GETPROC(glTextureStorage2DMultisample, name); + GETPROC(glTextureStorage3DMultisample, name); + GETPROC(glTextureSubImage1D, name); + GETPROC(glTextureSubImage2D, name); + GETPROC(glTextureSubImage3D, name); + GETPROC(glCompressedTextureSubImage1D, name); + GETPROC(glCompressedTextureSubImage2D, name); + GETPROC(glCompressedTextureSubImage3D, name); + GETPROC(glCopyTextureSubImage1D, name); + GETPROC(glCopyTextureSubImage2D, name); + GETPROC(glCopyTextureSubImage3D, name); + GETPROC(glTextureParameterf, name); + GETPROC(glTextureParameterfv, name); + GETPROC(glTextureParameteri, name); + GETPROC(glTextureParameterIiv, name); + GETPROC(glTextureParameterIuiv, name); + GETPROC(glTextureParameteriv, name); + GETPROC(glGenerateTextureMipmap, name); + GETPROC(glBindTextureUnit, name); + GETPROC(glGetTextureImage, name); + GETPROC(glGetCompressedTextureImage, name); + GETPROC(glGetTextureLevelParameterfv, name); + GETPROC(glGetTextureLevelParameteriv, name); + GETPROC(glGetTextureParameterfv, name); + GETPROC(glGetTextureParameterIiv, name); + GETPROC(glGetTextureParameterIuiv, name); + GETPROC(glGetTextureParameteriv, name); + GETPROC(glCreateVertexArrays, name); + GETPROC(glDisableVertexArrayAttrib, name); + GETPROC(glEnableVertexArrayAttrib, name); + GETPROC(glVertexArrayElementBuffer, name); + GETPROC(glVertexArrayVertexBuffer, name); + GETPROC(glVertexArrayVertexBuffers, name); + GETPROC(glVertexArrayAttribBinding, name); + GETPROC(glVertexArrayAttribFormat, name); + GETPROC(glVertexArrayAttribIFormat, name); + GETPROC(glVertexArrayAttribLFormat, name); + GETPROC(glVertexArrayBindingDivisor, name); + GETPROC(glGetVertexArrayiv, name); + GETPROC(glGetVertexArrayIndexediv, name); + GETPROC(glGetVertexArrayIndexed64iv, name); + GETPROC(glCreateSamplers, name); + GETPROC(glCreateProgramPipelines, name); + GETPROC(glCreateQueries, name); + GETPROC(glGetQueryBufferObjecti64v, name); + GETPROC(glGetQueryBufferObjectiv, name); + GETPROC(glGetQueryBufferObjectui64v, name); + GETPROC(glGetQueryBufferObjectuiv, name); + GETPROC(glMemoryBarrierByRegion, name); + GETPROC(glGetTextureSubImage, name); + GETPROC(glGetCompressedTextureSubImage, name); + GETPROC(glGetGraphicsResetStatus, name); + GETPROC(glGetnCompressedTexImage, name); + GETPROC(glGetnTexImage, name); + GETPROC(glGetnUniformdv, name); + GETPROC(glGetnUniformfv, name); + GETPROC(glGetnUniformiv, name); + GETPROC(glGetnUniformuiv, name); + GETPROC(glReadnPixels, name); + GETPROC(glTextureBarrier, name); + GETPROC(glSpecializeShader, name); + GETPROC(glMultiDrawArraysIndirectCount, name); + GETPROC(glMultiDrawElementsIndirectCount, name); + GETPROC(glPolygonOffsetClamp, name); + GETPROC(glPrimitiveBoundingBoxARB, name); + GETPROC(glGetTextureHandleARB, name); + GETPROC(glGetTextureSamplerHandleARB, name); + GETPROC(glMakeTextureHandleResidentARB, name); + GETPROC(glMakeTextureHandleNonResidentARB, name); + GETPROC(glGetImageHandleARB, name); + GETPROC(glMakeImageHandleResidentARB, name); + GETPROC(glMakeImageHandleNonResidentARB, name); + GETPROC(glUniformHandleui64ARB, name); + GETPROC(glUniformHandleui64vARB, name); + GETPROC(glProgramUniformHandleui64ARB, name); + GETPROC(glProgramUniformHandleui64vARB, name); + GETPROC(glIsTextureHandleResidentARB, name); + GETPROC(glIsImageHandleResidentARB, name); + GETPROC(glVertexAttribL1ui64ARB, name); + GETPROC(glVertexAttribL1ui64vARB, name); + GETPROC(glGetVertexAttribLui64vARB, name); + GETPROC(glCreateSyncFromCLeventARB, name); + GETPROC(glDispatchComputeGroupSizeARB, name); + GETPROC(glDebugMessageControlARB, name); + GETPROC(glDebugMessageInsertARB, name); + GETPROC(glDebugMessageCallbackARB, name); + GETPROC(glGetDebugMessageLogARB, name); + GETPROC(glBlendEquationiARB, name); + GETPROC(glBlendEquationSeparateiARB, name); + GETPROC(glBlendFunciARB, name); + GETPROC(glBlendFuncSeparateiARB, name); + GETPROC(glDrawArraysInstancedARB, name); + GETPROC(glDrawElementsInstancedARB, name); + GETPROC(glProgramParameteriARB, name); + GETPROC(glFramebufferTextureARB, name); + GETPROC(glFramebufferTextureLayerARB, name); + GETPROC(glFramebufferTextureFaceARB, name); + GETPROC(glSpecializeShaderARB, name); + GETPROC(glUniform1i64ARB, name); + GETPROC(glUniform2i64ARB, name); + GETPROC(glUniform3i64ARB, name); + GETPROC(glUniform4i64ARB, name); + GETPROC(glUniform1i64vARB, name); + GETPROC(glUniform2i64vARB, name); + GETPROC(glUniform3i64vARB, name); + GETPROC(glUniform4i64vARB, name); + GETPROC(glUniform1ui64ARB, name); + GETPROC(glUniform2ui64ARB, name); + GETPROC(glUniform3ui64ARB, name); + GETPROC(glUniform4ui64ARB, name); + GETPROC(glUniform1ui64vARB, name); + GETPROC(glUniform2ui64vARB, name); + GETPROC(glUniform3ui64vARB, name); + GETPROC(glUniform4ui64vARB, name); + GETPROC(glGetUniformi64vARB, name); + GETPROC(glGetUniformui64vARB, name); + GETPROC(glGetnUniformi64vARB, name); + GETPROC(glGetnUniformui64vARB, name); + GETPROC(glProgramUniform1i64ARB, name); + GETPROC(glProgramUniform2i64ARB, name); + GETPROC(glProgramUniform3i64ARB, name); + GETPROC(glProgramUniform4i64ARB, name); + GETPROC(glProgramUniform1i64vARB, name); + GETPROC(glProgramUniform2i64vARB, name); + GETPROC(glProgramUniform3i64vARB, name); + GETPROC(glProgramUniform4i64vARB, name); + GETPROC(glProgramUniform1ui64ARB, name); + GETPROC(glProgramUniform2ui64ARB, name); + GETPROC(glProgramUniform3ui64ARB, name); + GETPROC(glProgramUniform4ui64ARB, name); + GETPROC(glProgramUniform1ui64vARB, name); + GETPROC(glProgramUniform2ui64vARB, name); + GETPROC(glProgramUniform3ui64vARB, name); + GETPROC(glProgramUniform4ui64vARB, name); + GETPROC(glMultiDrawArraysIndirectCountARB, name); + GETPROC(glMultiDrawElementsIndirectCountARB, name); + GETPROC(glVertexAttribDivisorARB, name); + GETPROC(glMaxShaderCompilerThreadsARB, name); + GETPROC(glGetGraphicsResetStatusARB, name); + GETPROC(glGetnTexImageARB, name); + GETPROC(glReadnPixelsARB, name); + GETPROC(glGetnCompressedTexImageARB, name); + GETPROC(glGetnUniformfvARB, name); + GETPROC(glGetnUniformivARB, name); + GETPROC(glGetnUniformuivARB, name); + GETPROC(glGetnUniformdvARB, name); + GETPROC(glFramebufferSampleLocationsfvARB, name); + GETPROC(glNamedFramebufferSampleLocationsfvARB, name); + GETPROC(glEvaluateDepthValuesARB, name); + GETPROC(glMinSampleShadingARB, name); + GETPROC(glNamedStringARB, name); + GETPROC(glDeleteNamedStringARB, name); + GETPROC(glCompileShaderIncludeARB, name); + GETPROC(glIsNamedStringARB, name); + GETPROC(glGetNamedStringARB, name); + GETPROC(glGetNamedStringivARB, name); + GETPROC(glBufferPageCommitmentARB, name); + GETPROC(glNamedBufferPageCommitmentEXT, name); + GETPROC(glNamedBufferPageCommitmentARB, name); + GETPROC(glTexPageCommitmentARB, name); + GETPROC(glTexBufferARB, name); + GETPROC(glDepthRangeArraydvNV, name); + GETPROC(glDepthRangeIndexeddNV, name); + GETPROC(glBlendBarrierKHR, name); + GETPROC(glMaxShaderCompilerThreadsKHR, name); + GETPROC(glRenderbufferStorageMultisampleAdvancedAMD, name); + GETPROC(glNamedRenderbufferStorageMultisampleAdvancedAMD, name); + GETPROC(glGetPerfMonitorGroupsAMD, name); + GETPROC(glGetPerfMonitorCountersAMD, name); + GETPROC(glGetPerfMonitorGroupStringAMD, name); + GETPROC(glGetPerfMonitorCounterStringAMD, name); + GETPROC(glGetPerfMonitorCounterInfoAMD, name); + GETPROC(glGenPerfMonitorsAMD, name); + GETPROC(glDeletePerfMonitorsAMD, name); + GETPROC(glSelectPerfMonitorCountersAMD, name); + GETPROC(glBeginPerfMonitorAMD, name); + GETPROC(glEndPerfMonitorAMD, name); + GETPROC(glGetPerfMonitorCounterDataAMD, name); + GETPROC(glEGLImageTargetTexStorageEXT, name); + GETPROC(glEGLImageTargetTextureStorageEXT, name); + GETPROC(glLabelObjectEXT, name); + GETPROC(glGetObjectLabelEXT, name); + GETPROC(glInsertEventMarkerEXT, name); + GETPROC(glPushGroupMarkerEXT, name); + GETPROC(glPopGroupMarkerEXT, name); + GETPROC(glMatrixLoadfEXT, name); + GETPROC(glMatrixLoaddEXT, name); + GETPROC(glMatrixMultfEXT, name); + GETPROC(glMatrixMultdEXT, name); + GETPROC(glMatrixLoadIdentityEXT, name); + GETPROC(glMatrixRotatefEXT, name); + GETPROC(glMatrixRotatedEXT, name); + GETPROC(glMatrixScalefEXT, name); + GETPROC(glMatrixScaledEXT, name); + GETPROC(glMatrixTranslatefEXT, name); + GETPROC(glMatrixTranslatedEXT, name); + GETPROC(glMatrixFrustumEXT, name); + GETPROC(glMatrixOrthoEXT, name); + GETPROC(glMatrixPopEXT, name); + GETPROC(glMatrixPushEXT, name); + GETPROC(glClientAttribDefaultEXT, name); + GETPROC(glPushClientAttribDefaultEXT, name); + GETPROC(glTextureParameterfEXT, name); + GETPROC(glTextureParameterfvEXT, name); + GETPROC(glTextureParameteriEXT, name); + GETPROC(glTextureParameterivEXT, name); + GETPROC(glTextureImage1DEXT, name); + GETPROC(glTextureImage2DEXT, name); + GETPROC(glTextureSubImage1DEXT, name); + GETPROC(glTextureSubImage2DEXT, name); + GETPROC(glCopyTextureImage1DEXT, name); + GETPROC(glCopyTextureImage2DEXT, name); + GETPROC(glCopyTextureSubImage1DEXT, name); + GETPROC(glCopyTextureSubImage2DEXT, name); + GETPROC(glGetTextureImageEXT, name); + GETPROC(glGetTextureParameterfvEXT, name); + GETPROC(glGetTextureParameterivEXT, name); + GETPROC(glGetTextureLevelParameterfvEXT, name); + GETPROC(glGetTextureLevelParameterivEXT, name); + GETPROC(glTextureImage3DEXT, name); + GETPROC(glTextureSubImage3DEXT, name); + GETPROC(glCopyTextureSubImage3DEXT, name); + GETPROC(glBindMultiTextureEXT, name); + GETPROC(glMultiTexCoordPointerEXT, name); + GETPROC(glMultiTexEnvfEXT, name); + GETPROC(glMultiTexEnvfvEXT, name); + GETPROC(glMultiTexEnviEXT, name); + GETPROC(glMultiTexEnvivEXT, name); + GETPROC(glMultiTexGendEXT, name); + GETPROC(glMultiTexGendvEXT, name); + GETPROC(glMultiTexGenfEXT, name); + GETPROC(glMultiTexGenfvEXT, name); + GETPROC(glMultiTexGeniEXT, name); + GETPROC(glMultiTexGenivEXT, name); + GETPROC(glGetMultiTexEnvfvEXT, name); + GETPROC(glGetMultiTexEnvivEXT, name); + GETPROC(glGetMultiTexGendvEXT, name); + GETPROC(glGetMultiTexGenfvEXT, name); + GETPROC(glGetMultiTexGenivEXT, name); + GETPROC(glMultiTexParameteriEXT, name); + GETPROC(glMultiTexParameterivEXT, name); + GETPROC(glMultiTexParameterfEXT, name); + GETPROC(glMultiTexParameterfvEXT, name); + GETPROC(glMultiTexImage1DEXT, name); + GETPROC(glMultiTexImage2DEXT, name); + GETPROC(glMultiTexSubImage1DEXT, name); + GETPROC(glMultiTexSubImage2DEXT, name); + GETPROC(glCopyMultiTexImage1DEXT, name); + GETPROC(glCopyMultiTexImage2DEXT, name); + GETPROC(glCopyMultiTexSubImage1DEXT, name); + GETPROC(glCopyMultiTexSubImage2DEXT, name); + GETPROC(glGetMultiTexImageEXT, name); + GETPROC(glGetMultiTexParameterfvEXT, name); + GETPROC(glGetMultiTexParameterivEXT, name); + GETPROC(glGetMultiTexLevelParameterfvEXT, name); + GETPROC(glGetMultiTexLevelParameterivEXT, name); + GETPROC(glMultiTexImage3DEXT, name); + GETPROC(glMultiTexSubImage3DEXT, name); + GETPROC(glCopyMultiTexSubImage3DEXT, name); + GETPROC(glEnableClientStateIndexedEXT, name); + GETPROC(glDisableClientStateIndexedEXT, name); + GETPROC(glGetFloatIndexedvEXT, name); + GETPROC(glGetDoubleIndexedvEXT, name); + GETPROC(glGetPointerIndexedvEXT, name); + GETPROC(glEnableIndexedEXT, name); + GETPROC(glDisableIndexedEXT, name); + GETPROC(glIsEnabledIndexedEXT, name); + GETPROC(glGetIntegerIndexedvEXT, name); + GETPROC(glGetBooleanIndexedvEXT, name); + GETPROC(glCompressedTextureImage3DEXT, name); + GETPROC(glCompressedTextureImage2DEXT, name); + GETPROC(glCompressedTextureImage1DEXT, name); + GETPROC(glCompressedTextureSubImage3DEXT, name); + GETPROC(glCompressedTextureSubImage2DEXT, name); + GETPROC(glCompressedTextureSubImage1DEXT, name); + GETPROC(glGetCompressedTextureImageEXT, name); + GETPROC(glCompressedMultiTexImage3DEXT, name); + GETPROC(glCompressedMultiTexImage2DEXT, name); + GETPROC(glCompressedMultiTexImage1DEXT, name); + GETPROC(glCompressedMultiTexSubImage3DEXT, name); + GETPROC(glCompressedMultiTexSubImage2DEXT, name); + GETPROC(glCompressedMultiTexSubImage1DEXT, name); + GETPROC(glGetCompressedMultiTexImageEXT, name); + GETPROC(glMatrixLoadTransposefEXT, name); + GETPROC(glMatrixLoadTransposedEXT, name); + GETPROC(glMatrixMultTransposefEXT, name); + GETPROC(glMatrixMultTransposedEXT, name); + GETPROC(glNamedBufferDataEXT, name); + GETPROC(glNamedBufferSubDataEXT, name); + GETPROC(glMapNamedBufferEXT, name); + GETPROC(glUnmapNamedBufferEXT, name); + GETPROC(glGetNamedBufferParameterivEXT, name); + GETPROC(glGetNamedBufferPointervEXT, name); + GETPROC(glGetNamedBufferSubDataEXT, name); + GETPROC(glProgramUniform1fEXT, name); + GETPROC(glProgramUniform2fEXT, name); + GETPROC(glProgramUniform3fEXT, name); + GETPROC(glProgramUniform4fEXT, name); + GETPROC(glProgramUniform1iEXT, name); + GETPROC(glProgramUniform2iEXT, name); + GETPROC(glProgramUniform3iEXT, name); + GETPROC(glProgramUniform4iEXT, name); + GETPROC(glProgramUniform1fvEXT, name); + GETPROC(glProgramUniform2fvEXT, name); + GETPROC(glProgramUniform3fvEXT, name); + GETPROC(glProgramUniform4fvEXT, name); + GETPROC(glProgramUniform1ivEXT, name); + GETPROC(glProgramUniform2ivEXT, name); + GETPROC(glProgramUniform3ivEXT, name); + GETPROC(glProgramUniform4ivEXT, name); + GETPROC(glProgramUniformMatrix2fvEXT, name); + GETPROC(glProgramUniformMatrix3fvEXT, name); + GETPROC(glProgramUniformMatrix4fvEXT, name); + GETPROC(glProgramUniformMatrix2x3fvEXT, name); + GETPROC(glProgramUniformMatrix3x2fvEXT, name); + GETPROC(glProgramUniformMatrix2x4fvEXT, name); + GETPROC(glProgramUniformMatrix4x2fvEXT, name); + GETPROC(glProgramUniformMatrix3x4fvEXT, name); + GETPROC(glProgramUniformMatrix4x3fvEXT, name); + GETPROC(glTextureBufferEXT, name); + GETPROC(glMultiTexBufferEXT, name); + GETPROC(glTextureParameterIivEXT, name); + GETPROC(glTextureParameterIuivEXT, name); + GETPROC(glGetTextureParameterIivEXT, name); + GETPROC(glGetTextureParameterIuivEXT, name); + GETPROC(glMultiTexParameterIivEXT, name); + GETPROC(glMultiTexParameterIuivEXT, name); + GETPROC(glGetMultiTexParameterIivEXT, name); + GETPROC(glGetMultiTexParameterIuivEXT, name); + GETPROC(glProgramUniform1uiEXT, name); + GETPROC(glProgramUniform2uiEXT, name); + GETPROC(glProgramUniform3uiEXT, name); + GETPROC(glProgramUniform4uiEXT, name); + GETPROC(glProgramUniform1uivEXT, name); + GETPROC(glProgramUniform2uivEXT, name); + GETPROC(glProgramUniform3uivEXT, name); + GETPROC(glProgramUniform4uivEXT, name); + GETPROC(glNamedProgramLocalParameters4fvEXT, name); + GETPROC(glNamedProgramLocalParameterI4iEXT, name); + GETPROC(glNamedProgramLocalParameterI4ivEXT, name); + GETPROC(glNamedProgramLocalParametersI4ivEXT, name); + GETPROC(glNamedProgramLocalParameterI4uiEXT, name); + GETPROC(glNamedProgramLocalParameterI4uivEXT, name); + GETPROC(glNamedProgramLocalParametersI4uivEXT, name); + GETPROC(glGetNamedProgramLocalParameterIivEXT, name); + GETPROC(glGetNamedProgramLocalParameterIuivEXT, name); + GETPROC(glEnableClientStateiEXT, name); + GETPROC(glDisableClientStateiEXT, name); + GETPROC(glGetFloati_vEXT, name); + GETPROC(glGetDoublei_vEXT, name); + GETPROC(glGetPointeri_vEXT, name); + GETPROC(glNamedProgramStringEXT, name); + GETPROC(glNamedProgramLocalParameter4dEXT, name); + GETPROC(glNamedProgramLocalParameter4dvEXT, name); + GETPROC(glNamedProgramLocalParameter4fEXT, name); + GETPROC(glNamedProgramLocalParameter4fvEXT, name); + GETPROC(glGetNamedProgramLocalParameterdvEXT, name); + GETPROC(glGetNamedProgramLocalParameterfvEXT, name); + GETPROC(glGetNamedProgramivEXT, name); + GETPROC(glGetNamedProgramStringEXT, name); + GETPROC(glNamedRenderbufferStorageEXT, name); + GETPROC(glGetNamedRenderbufferParameterivEXT, name); + GETPROC(glNamedRenderbufferStorageMultisampleEXT, name); + GETPROC(glNamedRenderbufferStorageMultisampleCoverageEXT, name); + GETPROC(glCheckNamedFramebufferStatusEXT, name); + GETPROC(glNamedFramebufferTexture1DEXT, name); + GETPROC(glNamedFramebufferTexture2DEXT, name); + GETPROC(glNamedFramebufferTexture3DEXT, name); + GETPROC(glNamedFramebufferRenderbufferEXT, name); + GETPROC(glGetNamedFramebufferAttachmentParameterivEXT, name); + GETPROC(glGenerateTextureMipmapEXT, name); + GETPROC(glGenerateMultiTexMipmapEXT, name); + GETPROC(glFramebufferDrawBufferEXT, name); + GETPROC(glFramebufferDrawBuffersEXT, name); + GETPROC(glFramebufferReadBufferEXT, name); + GETPROC(glGetFramebufferParameterivEXT, name); + GETPROC(glNamedCopyBufferSubDataEXT, name); + GETPROC(glNamedFramebufferTextureEXT, name); + GETPROC(glNamedFramebufferTextureLayerEXT, name); + GETPROC(glNamedFramebufferTextureFaceEXT, name); + GETPROC(glTextureRenderbufferEXT, name); + GETPROC(glMultiTexRenderbufferEXT, name); + GETPROC(glVertexArrayVertexOffsetEXT, name); + GETPROC(glVertexArrayColorOffsetEXT, name); + GETPROC(glVertexArrayEdgeFlagOffsetEXT, name); + GETPROC(glVertexArrayIndexOffsetEXT, name); + GETPROC(glVertexArrayNormalOffsetEXT, name); + GETPROC(glVertexArrayTexCoordOffsetEXT, name); + GETPROC(glVertexArrayMultiTexCoordOffsetEXT, name); + GETPROC(glVertexArrayFogCoordOffsetEXT, name); + GETPROC(glVertexArraySecondaryColorOffsetEXT, name); + GETPROC(glVertexArrayVertexAttribOffsetEXT, name); + GETPROC(glVertexArrayVertexAttribIOffsetEXT, name); + GETPROC(glEnableVertexArrayEXT, name); + GETPROC(glDisableVertexArrayEXT, name); + GETPROC(glEnableVertexArrayAttribEXT, name); + GETPROC(glDisableVertexArrayAttribEXT, name); + GETPROC(glGetVertexArrayIntegervEXT, name); + GETPROC(glGetVertexArrayPointervEXT, name); + GETPROC(glGetVertexArrayIntegeri_vEXT, name); + GETPROC(glGetVertexArrayPointeri_vEXT, name); + GETPROC(glMapNamedBufferRangeEXT, name); + GETPROC(glFlushMappedNamedBufferRangeEXT, name); + GETPROC(glNamedBufferStorageEXT, name); + GETPROC(glClearNamedBufferDataEXT, name); + GETPROC(glClearNamedBufferSubDataEXT, name); + GETPROC(glNamedFramebufferParameteriEXT, name); + GETPROC(glGetNamedFramebufferParameterivEXT, name); + GETPROC(glProgramUniform1dEXT, name); + GETPROC(glProgramUniform2dEXT, name); + GETPROC(glProgramUniform3dEXT, name); + GETPROC(glProgramUniform4dEXT, name); + GETPROC(glProgramUniform1dvEXT, name); + GETPROC(glProgramUniform2dvEXT, name); + GETPROC(glProgramUniform3dvEXT, name); + GETPROC(glProgramUniform4dvEXT, name); + GETPROC(glProgramUniformMatrix2dvEXT, name); + GETPROC(glProgramUniformMatrix3dvEXT, name); + GETPROC(glProgramUniformMatrix4dvEXT, name); + GETPROC(glProgramUniformMatrix2x3dvEXT, name); + GETPROC(glProgramUniformMatrix2x4dvEXT, name); + GETPROC(glProgramUniformMatrix3x2dvEXT, name); + GETPROC(glProgramUniformMatrix3x4dvEXT, name); + GETPROC(glProgramUniformMatrix4x2dvEXT, name); + GETPROC(glProgramUniformMatrix4x3dvEXT, name); + GETPROC(glTextureBufferRangeEXT, name); + GETPROC(glTextureStorage1DEXT, name); + GETPROC(glTextureStorage2DEXT, name); + GETPROC(glTextureStorage3DEXT, name); + GETPROC(glTextureStorage2DMultisampleEXT, name); + GETPROC(glTextureStorage3DMultisampleEXT, name); + GETPROC(glVertexArrayBindVertexBufferEXT, name); + GETPROC(glVertexArrayVertexAttribFormatEXT, name); + GETPROC(glVertexArrayVertexAttribIFormatEXT, name); + GETPROC(glVertexArrayVertexAttribLFormatEXT, name); + GETPROC(glVertexArrayVertexAttribBindingEXT, name); + GETPROC(glVertexArrayVertexBindingDivisorEXT, name); + GETPROC(glVertexArrayVertexAttribLOffsetEXT, name); + GETPROC(glTexturePageCommitmentEXT, name); + GETPROC(glVertexArrayVertexAttribDivisorEXT, name); + GETPROC(glDrawArraysInstancedEXT, name); + GETPROC(glDrawElementsInstancedEXT, name); + // GETPROC(glGetFragmentShadingRatesEXT, name); + // GETPROC(glShadingRateEXT, name); + // GETPROC(glShadingRateCombinerOpsEXT, name); + // GETPROC(glFramebufferShadingRateEXT, name); + // GETPROC(glDrawMeshTasksEXT, name); + // GETPROC(glDrawMeshTasksIndirectEXT, name); + // GETPROC(glMultiDrawMeshTasksIndirectEXT, name); + // GETPROC(glMultiDrawMeshTasksIndirectCountEXT, name); + GETPROC(glPolygonOffsetClampEXT, name); + GETPROC(glRasterSamplesEXT, name); + GETPROC(glUseShaderProgramEXT, name); + GETPROC(glActiveProgramEXT, name); + GETPROC(glCreateShaderProgramEXT, name); + GETPROC(glFramebufferFetchBarrierEXT, name); + GETPROC(glTexStorage1DEXT, name); + GETPROC(glTexStorage2DEXT, name); + GETPROC(glTexStorage3DEXT, name); + GETPROC(glWindowRectanglesEXT, name); + GETPROC(glApplyFramebufferAttachmentCMAAINTEL, name); + GETPROC(glBeginPerfQueryINTEL, name); + GETPROC(glCreatePerfQueryINTEL, name); + GETPROC(glDeletePerfQueryINTEL, name); + GETPROC(glEndPerfQueryINTEL, name); + GETPROC(glGetFirstPerfQueryIdINTEL, name); + GETPROC(glGetNextPerfQueryIdINTEL, name); + GETPROC(glGetPerfCounterInfoINTEL, name); + GETPROC(glGetPerfQueryDataINTEL, name); + GETPROC(glGetPerfQueryIdByNameINTEL, name); + GETPROC(glGetPerfQueryInfoINTEL, name); + GETPROC(glFramebufferParameteriMESA, name); + GETPROC(glGetFramebufferParameterivMESA, name); + GETPROC(glMultiDrawArraysIndirectBindlessNV, name); + GETPROC(glMultiDrawElementsIndirectBindlessNV, name); + GETPROC(glMultiDrawArraysIndirectBindlessCountNV, name); + GETPROC(glMultiDrawElementsIndirectBindlessCountNV, name); + GETPROC(glGetTextureHandleNV, name); + GETPROC(glGetTextureSamplerHandleNV, name); + GETPROC(glMakeTextureHandleResidentNV, name); + GETPROC(glMakeTextureHandleNonResidentNV, name); + GETPROC(glGetImageHandleNV, name); + GETPROC(glMakeImageHandleResidentNV, name); + GETPROC(glMakeImageHandleNonResidentNV, name); + GETPROC(glUniformHandleui64NV, name); + GETPROC(glUniformHandleui64vNV, name); + GETPROC(glProgramUniformHandleui64NV, name); + GETPROC(glProgramUniformHandleui64vNV, name); + GETPROC(glIsTextureHandleResidentNV, name); + GETPROC(glIsImageHandleResidentNV, name); + GETPROC(glBlendParameteriNV, name); + GETPROC(glBlendBarrierNV, name); + GETPROC(glViewportPositionWScaleNV, name); + GETPROC(glCreateStatesNV, name); + GETPROC(glDeleteStatesNV, name); + GETPROC(glIsStateNV, name); + GETPROC(glStateCaptureNV, name); + GETPROC(glGetCommandHeaderNV, name); + GETPROC(glGetStageIndexNV, name); + GETPROC(glDrawCommandsNV, name); + GETPROC(glDrawCommandsAddressNV, name); + GETPROC(glDrawCommandsStatesNV, name); + GETPROC(glDrawCommandsStatesAddressNV, name); + GETPROC(glCreateCommandListsNV, name); + GETPROC(glDeleteCommandListsNV, name); + GETPROC(glIsCommandListNV, name); + GETPROC(glListDrawCommandsStatesClientNV, name); + GETPROC(glCommandListSegmentsNV, name); + GETPROC(glCompileCommandListNV, name); + GETPROC(glCallCommandListNV, name); + GETPROC(glBeginConditionalRenderNV, name); + GETPROC(glEndConditionalRenderNV, name); + GETPROC(glSubpixelPrecisionBiasNV, name); + GETPROC(glConservativeRasterParameterfNV, name); + GETPROC(glConservativeRasterParameteriNV, name); + GETPROC(glDepthRangedNV, name); + GETPROC(glClearDepthdNV, name); + GETPROC(glDepthBoundsdNV, name); + GETPROC(glDrawVkImageNV, name); + GETPROC(glGetVkProcAddrNV, name); + GETPROC(glWaitVkSemaphoreNV, name); + GETPROC(glSignalVkSemaphoreNV, name); + GETPROC(glSignalVkFenceNV, name); + GETPROC(glFragmentCoverageColorNV, name); + GETPROC(glCoverageModulationTableNV, name); + GETPROC(glGetCoverageModulationTableNV, name); + GETPROC(glCoverageModulationNV, name); + GETPROC(glRenderbufferStorageMultisampleCoverageNV, name); + GETPROC(glUniform1i64NV, name); + GETPROC(glUniform2i64NV, name); + GETPROC(glUniform3i64NV, name); + GETPROC(glUniform4i64NV, name); + GETPROC(glUniform1i64vNV, name); + GETPROC(glUniform2i64vNV, name); + GETPROC(glUniform3i64vNV, name); + GETPROC(glUniform4i64vNV, name); + GETPROC(glUniform1ui64NV, name); + GETPROC(glUniform2ui64NV, name); + GETPROC(glUniform3ui64NV, name); + GETPROC(glUniform4ui64NV, name); + GETPROC(glUniform1ui64vNV, name); + GETPROC(glUniform2ui64vNV, name); + GETPROC(glUniform3ui64vNV, name); + GETPROC(glUniform4ui64vNV, name); + GETPROC(glGetUniformi64vNV, name); + GETPROC(glProgramUniform1i64NV, name); + GETPROC(glProgramUniform2i64NV, name); + GETPROC(glProgramUniform3i64NV, name); + GETPROC(glProgramUniform4i64NV, name); + GETPROC(glProgramUniform1i64vNV, name); + GETPROC(glProgramUniform2i64vNV, name); + GETPROC(glProgramUniform3i64vNV, name); + GETPROC(glProgramUniform4i64vNV, name); + GETPROC(glProgramUniform1ui64NV, name); + GETPROC(glProgramUniform2ui64NV, name); + GETPROC(glProgramUniform3ui64NV, name); + GETPROC(glProgramUniform4ui64NV, name); + GETPROC(glProgramUniform1ui64vNV, name); + GETPROC(glProgramUniform2ui64vNV, name); + GETPROC(glProgramUniform3ui64vNV, name); + GETPROC(glProgramUniform4ui64vNV, name); + GETPROC(glGetInternalformatSampleivNV, name); + GETPROC(glGetMemoryObjectDetachedResourcesuivNV, name); + GETPROC(glResetMemoryObjectParameterNV, name); + GETPROC(glTexAttachMemoryNV, name); + GETPROC(glBufferAttachMemoryNV, name); + GETPROC(glTextureAttachMemoryNV, name); + GETPROC(glNamedBufferAttachMemoryNV, name); + GETPROC(glBufferPageCommitmentMemNV, name); + GETPROC(glTexPageCommitmentMemNV, name); + GETPROC(glNamedBufferPageCommitmentMemNV, name); + GETPROC(glTexturePageCommitmentMemNV, name); + GETPROC(glDrawMeshTasksNV, name); + GETPROC(glDrawMeshTasksIndirectNV, name); + GETPROC(glMultiDrawMeshTasksIndirectNV, name); + GETPROC(glMultiDrawMeshTasksIndirectCountNV, name); + GETPROC(glGenPathsNV, name); + GETPROC(glDeletePathsNV, name); + GETPROC(glIsPathNV, name); + GETPROC(glPathCommandsNV, name); + GETPROC(glPathCoordsNV, name); + GETPROC(glPathSubCommandsNV, name); + GETPROC(glPathSubCoordsNV, name); + GETPROC(glPathStringNV, name); + GETPROC(glPathGlyphsNV, name); + GETPROC(glPathGlyphRangeNV, name); + GETPROC(glWeightPathsNV, name); + GETPROC(glCopyPathNV, name); + GETPROC(glInterpolatePathsNV, name); + GETPROC(glTransformPathNV, name); + GETPROC(glPathParameterivNV, name); + GETPROC(glPathParameteriNV, name); + GETPROC(glPathParameterfvNV, name); + GETPROC(glPathParameterfNV, name); + GETPROC(glPathDashArrayNV, name); + GETPROC(glPathStencilFuncNV, name); + GETPROC(glPathStencilDepthOffsetNV, name); + GETPROC(glStencilFillPathNV, name); + GETPROC(glStencilStrokePathNV, name); + GETPROC(glStencilFillPathInstancedNV, name); + GETPROC(glStencilStrokePathInstancedNV, name); + GETPROC(glPathCoverDepthFuncNV, name); + GETPROC(glCoverFillPathNV, name); + GETPROC(glCoverStrokePathNV, name); + GETPROC(glCoverFillPathInstancedNV, name); + GETPROC(glCoverStrokePathInstancedNV, name); + GETPROC(glGetPathParameterivNV, name); + GETPROC(glGetPathParameterfvNV, name); + GETPROC(glGetPathCommandsNV, name); + GETPROC(glGetPathCoordsNV, name); + GETPROC(glGetPathDashArrayNV, name); + GETPROC(glGetPathMetricsNV, name); + GETPROC(glGetPathMetricRangeNV, name); + GETPROC(glGetPathSpacingNV, name); + GETPROC(glIsPointInFillPathNV, name); + GETPROC(glIsPointInStrokePathNV, name); + GETPROC(glGetPathLengthNV, name); + GETPROC(glPointAlongPathNV, name); + GETPROC(glMatrixLoad3x2fNV, name); + GETPROC(glMatrixLoad3x3fNV, name); + GETPROC(glMatrixLoadTranspose3x3fNV, name); + GETPROC(glMatrixMult3x2fNV, name); + GETPROC(glMatrixMult3x3fNV, name); + GETPROC(glMatrixMultTranspose3x3fNV, name); + GETPROC(glStencilThenCoverFillPathNV, name); + GETPROC(glStencilThenCoverStrokePathNV, name); + GETPROC(glStencilThenCoverFillPathInstancedNV, name); + GETPROC(glStencilThenCoverStrokePathInstancedNV, name); + GETPROC(glPathGlyphIndexRangeNV, name); + GETPROC(glPathGlyphIndexArrayNV, name); + GETPROC(glPathMemoryGlyphIndexArrayNV, name); + GETPROC(glProgramPathFragmentInputGenNV, name); + GETPROC(glGetProgramResourcefvNV, name); + GETPROC(glFramebufferSampleLocationsfvNV, name); + GETPROC(glNamedFramebufferSampleLocationsfvNV, name); + GETPROC(glResolveDepthValuesNV, name); + GETPROC(glScissorExclusiveNV, name); + GETPROC(glScissorExclusiveArrayvNV, name); + GETPROC(glMakeBufferResidentNV, name); + GETPROC(glMakeBufferNonResidentNV, name); + GETPROC(glIsBufferResidentNV, name); + GETPROC(glMakeNamedBufferResidentNV, name); + GETPROC(glMakeNamedBufferNonResidentNV, name); + GETPROC(glIsNamedBufferResidentNV, name); + GETPROC(glGetBufferParameterui64vNV, name); + GETPROC(glGetNamedBufferParameterui64vNV, name); + GETPROC(glGetIntegerui64vNV, name); + GETPROC(glUniformui64NV, name); + GETPROC(glUniformui64vNV, name); + GETPROC(glGetUniformui64vNV, name); + GETPROC(glProgramUniformui64NV, name); + GETPROC(glProgramUniformui64vNV, name); + GETPROC(glBindShadingRateImageNV, name); + GETPROC(glGetShadingRateImagePaletteNV, name); + GETPROC(glGetShadingRateSampleLocationivNV, name); + GETPROC(glShadingRateImageBarrierNV, name); + GETPROC(glShadingRateImagePaletteNV, name); + GETPROC(glShadingRateSampleOrderNV, name); + GETPROC(glShadingRateSampleOrderCustomNV, name); + GETPROC(glTextureBarrierNV, name); + GETPROC(glVertexAttribL1i64NV, name); + GETPROC(glVertexAttribL2i64NV, name); + GETPROC(glVertexAttribL3i64NV, name); + GETPROC(glVertexAttribL4i64NV, name); + GETPROC(glVertexAttribL1i64vNV, name); + GETPROC(glVertexAttribL2i64vNV, name); + GETPROC(glVertexAttribL3i64vNV, name); + GETPROC(glVertexAttribL4i64vNV, name); + GETPROC(glVertexAttribL1ui64NV, name); + GETPROC(glVertexAttribL2ui64NV, name); + GETPROC(glVertexAttribL3ui64NV, name); + GETPROC(glVertexAttribL4ui64NV, name); + GETPROC(glVertexAttribL1ui64vNV, name); + GETPROC(glVertexAttribL2ui64vNV, name); + GETPROC(glVertexAttribL3ui64vNV, name); + GETPROC(glVertexAttribL4ui64vNV, name); + GETPROC(glGetVertexAttribLi64vNV, name); + GETPROC(glGetVertexAttribLui64vNV, name); + GETPROC(glVertexAttribLFormatNV, name); + GETPROC(glBufferAddressRangeNV, name); + GETPROC(glVertexFormatNV, name); + GETPROC(glNormalFormatNV, name); + GETPROC(glColorFormatNV, name); + GETPROC(glIndexFormatNV, name); + GETPROC(glTexCoordFormatNV, name); + GETPROC(glEdgeFlagFormatNV, name); + GETPROC(glSecondaryColorFormatNV, name); + GETPROC(glFogCoordFormatNV, name); + GETPROC(glVertexAttribFormatNV, name); + GETPROC(glVertexAttribIFormatNV, name); + GETPROC(glGetIntegerui64i_vNV, name); + GETPROC(glViewportSwizzleNV, name); + GETPROC(glFramebufferTextureMultiviewOVR, name); + // GETPROC(glNamedFramebufferTextureMultiviewOVR, name); + + MGLOG_W("GetProcAddress(%s) = nullptr!"); + return nullptr; + } + } // namespace MG_Impl +} // namespace MobileGL \ No newline at end of file diff --git a/MobileGL/MG_Impl/GetProcAddress.h b/MobileGL/MG_Impl/GetProcAddress.h new file mode 100644 index 00000000..72634a7b --- /dev/null +++ b/MobileGL/MG_Impl/GetProcAddress.h @@ -0,0 +1,15 @@ +// MobileGL - MobileGL/MG_Impl/GetProcAddress.h +// Copyright (c) 2025-2026 MobileGL-Dev +// Licensed under the GNU Lesser General Public License v2.1: +// http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html +// SPDX-License-Identifier: LGPL-2.1-only +// End of Source File Header + +#pragma once +#include + +namespace MobileGL { + namespace MG_Impl { + void* GetProcAddress(const char* name); + } // namespace MG_Impl +} // namespace MobileGL diff --git a/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.cpp b/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.cpp index dfb218ee..8a1565ef 100644 --- a/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.cpp +++ b/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.cpp @@ -425,6 +425,14 @@ namespace MobileGL { EGL_FUNC_DECL(eglWaitClient) EGL_FUNC_DECL(eglWaitGL) EGL_FUNC_DECL(eglWaitNative) + EGL_FUNC_DECL(eglCreateSync) + EGL_FUNC_DECL(eglDestroySync) + EGL_FUNC_DECL(eglClientWaitSync) + EGL_FUNC_DECL(eglGetSyncAttrib) + EGL_FUNC_DECL(eglCreateImage) + EGL_FUNC_DECL(eglDestroyImage) + EGL_FUNC_DECL(eglCreatePlatformPixmapSurface) + EGL_FUNC_DECL(eglWaitSync) } // namespace EGL } // namespace MG_External @@ -911,6 +919,7 @@ namespace MobileGL { INIT_EGL_FUNC(eglCreatePbufferFromClientBuffer) INIT_EGL_FUNC(eglCreatePbufferSurface) INIT_EGL_FUNC(eglCreatePixmapSurface) + INIT_EGL_FUNC(eglCreatePlatformPixmapSurface) INIT_EGL_FUNC(eglCreatePlatformWindowSurface) INIT_EGL_FUNC(eglCreateWindowSurface) INIT_EGL_FUNC(eglDestroyContext) @@ -941,6 +950,14 @@ namespace MobileGL { INIT_EGL_FUNC(eglWaitClient) INIT_EGL_FUNC(eglWaitGL) INIT_EGL_FUNC(eglWaitNative) + INIT_EGL_FUNC(eglCreateSync) + INIT_EGL_FUNC(eglDestroySync) + INIT_EGL_FUNC(eglClientWaitSync) + INIT_EGL_FUNC(eglGetSyncAttrib) + INIT_EGL_FUNC(eglCreateImage) + INIT_EGL_FUNC(eglDestroyImage) + INIT_EGL_FUNC(eglGetPlatformDisplay) + INIT_EGL_FUNC(eglWaitSync) EGLint configAttribs[] = {EGL_RED_SIZE, 8, @@ -1037,4 +1054,4 @@ namespace MobileGL { } // namespace BackendLoader::GLES } // namespace MG_Util -} // namespace MobileGL \ No newline at end of file +} // namespace MobileGL diff --git a/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.h b/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.h index c1405f93..fc4f753e 100644 --- a/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.h +++ b/MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.h @@ -473,7 +473,7 @@ namespace MobileGL { typedef EGLSurface (*eglCreatePixmapSurface_PTR)(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint* attrib_list); typedef EGLSurface (*eglCreatePlatformWindowSurface_PTR)(EGLDisplay display, EGLConfig config, - void* native_window, const EGLint* attrib_list); + void* native_window, const EGLAttrib* attrib_list); typedef EGLSurface (*eglCreateWindowSurface_PTR)(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint* attrib_list); typedef EGLBoolean (*eglDestroyContext_PTR)(EGLDisplay dpy, EGLContext ctx); @@ -487,7 +487,7 @@ namespace MobileGL { typedef EGLSurface (*eglGetCurrentSurface_PTR)(EGLint readdraw); typedef EGLDisplay (*eglGetDisplay_PTR)(EGLNativeDisplayType display_id); typedef EGLDisplay (*eglGetPlatformDisplay_PTR)(EGLenum platform, void* native_display, - const EGLint* attrib_list); + const EGLAttrib* attrib_list); typedef EGLint (*eglGetError_PTR)(); typedef __eglMustCastToProperFunctionPointerType (*eglGetProcAddress_PTR)(const char* procname); typedef EGLBoolean (*eglInitialize_PTR)(EGLDisplay dpy, EGLint* major, EGLint* minor); @@ -510,6 +510,15 @@ namespace MobileGL { typedef EGLBoolean (*eglWaitClient_PTR)(); typedef EGLBoolean (*eglWaitGL_PTR)(); typedef EGLBoolean (*eglWaitNative_PTR)(EGLint engine); + typedef EGLSync (*eglCreateSync_PTR)(EGLDisplay dpy, EGLenum type, const EGLAttrib * attrib_list); + typedef EGLBoolean (*eglDestroySync_PTR)(EGLDisplay dpy, EGLSync sync); + typedef EGLint (*eglClientWaitSync_PTR)(EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout); + typedef EGLBoolean (*eglGetSyncAttrib_PTR)(EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib * value); + typedef EGLImage (*eglCreateImage_PTR)(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib * attrib_list); + typedef EGLBoolean (*eglDestroyImage_PTR)(EGLDisplay dpy, EGLImage image); + typedef EGLSurface (*eglCreatePlatformPixmapSurface_PTR)(EGLDisplay dpy, EGLConfig config, void * native_pixmap, const EGLAttrib * attrib_list); + typedef EGLBoolean (*eglWaitSync_PTR)(EGLDisplay dpy, EGLSync sync, EGLint flags); + EGL_FUNC_DECL(eglBindAPI) EGL_FUNC_DECL(eglBindTexImage) @@ -549,6 +558,14 @@ namespace MobileGL { EGL_FUNC_DECL(eglWaitClient) EGL_FUNC_DECL(eglWaitGL) EGL_FUNC_DECL(eglWaitNative) + EGL_FUNC_DECL(eglCreateSync) + EGL_FUNC_DECL(eglDestroySync) + EGL_FUNC_DECL(eglClientWaitSync) + EGL_FUNC_DECL(eglGetSyncAttrib) + EGL_FUNC_DECL(eglCreateImage) + EGL_FUNC_DECL(eglDestroyImage) + EGL_FUNC_DECL(eglCreatePlatformPixmapSurface) + EGL_FUNC_DECL(eglWaitSync) }; // namespace EGL @@ -957,4 +974,4 @@ namespace MobileGL { } // namespace MobileGL #define INIT_GLES_FUNC(name) \ - { MG_External::GLES::name = (name##_PTR)ProcAddress(libGLES, #name); } \ No newline at end of file + { MG_External::GLES::name = (name##_PTR)ProcAddress(libGLES, #name); } diff --git a/MobileGL/MG_Util/Converters/GLToStr/GLEnumConverter.cpp b/MobileGL/MG_Util/Converters/GLToStr/GLEnumConverter.cpp index 75ce765c..af6607c0 100644 --- a/MobileGL/MG_Util/Converters/GLToStr/GLEnumConverter.cpp +++ b/MobileGL/MG_Util/Converters/GLToStr/GLEnumConverter.cpp @@ -6,6 +6,7 @@ // End of Source File Header #include "GLEnumConverter.h" +#include namespace MobileGL { namespace MG_Util { diff --git a/include/GL/glext.h b/include/GL/glext.h index 73039de5..9eae435d 100644 --- a/include/GL/glext.h +++ b/include/GL/glext.h @@ -6,7 +6,7 @@ extern "C" { #endif /* -** Copyright 2013-2020 The Khronos Group Inc. +** Copyright 2013-2025 The Khronos Group Inc. ** SPDX-License-Identifier: MIT ** ** This header is generated from the Khronos OpenGL / OpenGL ES XML @@ -32,10 +32,9 @@ extern "C" { #define GLAPI extern #endif -#define GL_GLEXT_VERSION 20220530 +#define GL_GLEXT_VERSION 20251023 #include -#include "gl.h" /* Generated C header for: * API: gl @@ -5398,12 +5397,12 @@ typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severi typedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam); -typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufSize, GLenum *categories, GLenum *severities, GLuint *ids, GLsizei *lengths, GLchar *message); #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); GLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf); GLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam); -GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message); +GLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufSize, GLenum *categories, GLenum *severities, GLuint *ids, GLsizei *lengths, GLchar *message); #endif #endif /* GL_AMD_debug_output */ @@ -7359,6 +7358,47 @@ GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const voi #endif #endif /* GL_EXT_fog_coord */ +#ifndef GL_EXT_fragment_shading_rate +#define GL_EXT_fragment_shading_rate 1 +#define GL_SHADING_RATE_1X1_PIXELS_EXT 0x96A6 +#define GL_SHADING_RATE_1X2_PIXELS_EXT 0x96A7 +#define GL_SHADING_RATE_2X1_PIXELS_EXT 0x96A8 +#define GL_SHADING_RATE_2X2_PIXELS_EXT 0x96A9 +#define GL_SHADING_RATE_1X4_PIXELS_EXT 0x96AA +#define GL_SHADING_RATE_4X1_PIXELS_EXT 0x96AB +#define GL_SHADING_RATE_4X2_PIXELS_EXT 0x96AC +#define GL_SHADING_RATE_2X4_PIXELS_EXT 0x96AD +#define GL_SHADING_RATE_4X4_PIXELS_EXT 0x96AE +#define GL_SHADING_RATE_EXT 0x96D0 +#define GL_SHADING_RATE_ATTACHMENT_EXT 0x96D1 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT 0x96D2 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT 0x96D3 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_EXT 0x96D4 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT 0x96D5 +#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_EXT 0x96D6 +#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D7 +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D8 +#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96D9 +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96DA +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_ASPECT_RATIO_EXT 0x96DB +#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT 0x96DC +#define GL_FRAGMENT_SHADING_RATE_WITH_SHADER_DEPTH_STENCIL_WRITES_SUPPORTED_EXT 0x96DD +#define GL_FRAGMENT_SHADING_RATE_WITH_SAMPLE_MASK_SUPPORTED_EXT 0x96DE +#define GL_FRAGMENT_SHADING_RATE_ATTACHMENT_WITH_DEFAULT_FRAMEBUFFER_SUPPORTED_EXT 0x96DF +#define GL_FRAGMENT_SHADING_RATE_NON_TRIVIAL_COMBINERS_SUPPORTED_EXT 0x8F6F +#define GL_FRAGMENT_SHADING_RATE_PRIMITIVE_RATE_WITH_MULTI_VIEWPORT_SUPPORTED_EXT 0x9780 +typedef void (APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +typedef void (APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate); +typedef void (APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1); +typedef void (APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +GLAPI void APIENTRY glShadingRateEXT (GLenum rate); +GLAPI void APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1); +GLAPI void APIENTRY glFramebufferShadingRateEXT (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight); +#endif +#endif /* GL_EXT_fragment_shading_rate */ + #ifndef GL_EXT_framebuffer_blit #define GL_EXT_framebuffer_blit 1 #define GL_READ_FRAMEBUFFER_EXT 0x8CA8 @@ -7371,6 +7411,16 @@ GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, #endif #endif /* GL_EXT_framebuffer_blit */ +#ifndef GL_EXT_framebuffer_blit_layers +#define GL_EXT_framebuffer_blit_layers 1 +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERLAYERSEXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERLAYEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint srcLayer, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLint dstLayer, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBlitFramebufferLayersEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI void APIENTRY glBlitFramebufferLayerEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint srcLayer, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLint dstLayer, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_EXT_framebuffer_blit_layers */ + #ifndef GL_EXT_framebuffer_multisample #define GL_EXT_framebuffer_multisample 1 #define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB @@ -7807,6 +7857,86 @@ GLAPI void APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GL #endif #endif /* GL_EXT_memory_object_win32 */ +#ifndef GL_EXT_mesh_shader +#define GL_EXT_mesh_shader 1 +#define GL_MESH_SHADER_EXT 0x9559 +#define GL_TASK_SHADER_EXT 0x955A +#define GL_MAX_MESH_UNIFORM_BLOCKS_EXT 0x8E60 +#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_EXT 0x8E61 +#define GL_MAX_MESH_IMAGE_UNIFORMS_EXT 0x8E62 +#define GL_MAX_MESH_UNIFORM_COMPONENTS_EXT 0x8E63 +#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_EXT 0x8E64 +#define GL_MAX_MESH_ATOMIC_COUNTERS_EXT 0x8E65 +#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_EXT 0x8E66 +#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_EXT 0x8E67 +#define GL_MAX_TASK_UNIFORM_BLOCKS_EXT 0x8E68 +#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_EXT 0x8E69 +#define GL_MAX_TASK_IMAGE_UNIFORMS_EXT 0x8E6A +#define GL_MAX_TASK_UNIFORM_COMPONENTS_EXT 0x8E6B +#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_EXT 0x8E6C +#define GL_MAX_TASK_ATOMIC_COUNTERS_EXT 0x8E6D +#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_EXT 0x8E6E +#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_EXT 0x8E6F +#define GL_MAX_TASK_WORK_GROUP_TOTAL_COUNT_EXT 0x9740 +#define GL_MAX_MESH_WORK_GROUP_TOTAL_COUNT_EXT 0x9741 +#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_EXT 0x9757 +#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_EXT 0x9759 +#define GL_MAX_TASK_PAYLOAD_SIZE_EXT 0x9742 +#define GL_MAX_TASK_SHARED_MEMORY_SIZE_EXT 0x9743 +#define GL_MAX_MESH_SHARED_MEMORY_SIZE_EXT 0x9744 +#define GL_MAX_TASK_PAYLOAD_AND_SHARED_MEMORY_SIZE_EXT 0x9745 +#define GL_MAX_MESH_PAYLOAD_AND_SHARED_MEMORY_SIZE_EXT 0x9746 +#define GL_MAX_MESH_OUTPUT_MEMORY_SIZE_EXT 0x9747 +#define GL_MAX_MESH_PAYLOAD_AND_OUTPUT_MEMORY_SIZE_EXT 0x9748 +#define GL_MAX_MESH_OUTPUT_VERTICES_EXT 0x9538 +#define GL_MAX_MESH_OUTPUT_PRIMITIVES_EXT 0x9756 +#define GL_MAX_MESH_OUTPUT_COMPONENTS_EXT 0x9749 +#define GL_MAX_MESH_OUTPUT_LAYERS_EXT 0x974A +#define GL_MAX_MESH_MULTIVIEW_VIEW_COUNT_EXT 0x9557 +#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_EXT 0x92DF +#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_EXT 0x9543 +#define GL_MAX_PREFERRED_TASK_WORK_GROUP_INVOCATIONS_EXT 0x974B +#define GL_MAX_PREFERRED_MESH_WORK_GROUP_INVOCATIONS_EXT 0x974C +#define GL_MESH_PREFERS_LOCAL_INVOCATION_VERTEX_OUTPUT_EXT 0x974D +#define GL_MESH_PREFERS_LOCAL_INVOCATION_PRIMITIVE_OUTPUT_EXT 0x974E +#define GL_MESH_PREFERS_COMPACT_VERTEX_OUTPUT_EXT 0x974F +#define GL_MESH_PREFERS_COMPACT_PRIMITIVE_OUTPUT_EXT 0x9750 +#define GL_MAX_TASK_WORK_GROUP_COUNT_EXT 0x9751 +#define GL_MAX_MESH_WORK_GROUP_COUNT_EXT 0x9752 +#define GL_MAX_MESH_WORK_GROUP_SIZE_EXT 0x9758 +#define GL_MAX_TASK_WORK_GROUP_SIZE_EXT 0x975A +#define GL_MESH_WORK_GROUP_SIZE_EXT 0x953E +#define GL_TASK_WORK_GROUP_SIZE_EXT 0x953F +#define GL_MESH_VERTICES_OUT_EXT 0x9579 +#define GL_MESH_PRIMITIVES_OUT_EXT 0x957A +#define GL_MESH_OUTPUT_TYPE_EXT 0x957B +#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_EXT 0x959C +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_EXT 0x959D +#define GL_REFERENCED_BY_MESH_SHADER_EXT 0x95A0 +#define GL_REFERENCED_BY_TASK_SHADER_EXT 0x95A1 +#define GL_TASK_SHADER_INVOCATIONS_EXT 0x9753 +#define GL_MESH_SHADER_INVOCATIONS_EXT 0x9754 +#define GL_MESH_PRIMITIVES_GENERATED_EXT 0x9755 +#define GL_MESH_SHADER_BIT_EXT 0x00000040 +#define GL_TASK_SHADER_BIT_EXT 0x00000080 +#define GL_MESH_SUBROUTINE_EXT 0x957C +#define GL_TASK_SUBROUTINE_EXT 0x957D +#define GL_MESH_SUBROUTINE_UNIFORM_EXT 0x957E +#define GL_TASK_SUBROUTINE_UNIFORM_EXT 0x957F +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_EXT 0x959E +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_EXT 0x959F +typedef void (APIENTRYP PFNGLDRAWMESHTASKSEXTPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +typedef void (APIENTRYP PFNGLDRAWMESHTASKSINDIRECTEXTPROC) (GLintptr indirect); +typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTEXTPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride); +typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTEXTPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glDrawMeshTasksEXT (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); +GLAPI void APIENTRY glDrawMeshTasksIndirectEXT (GLintptr indirect); +GLAPI void APIENTRY glMultiDrawMeshTasksIndirectEXT (GLintptr indirect, GLsizei drawcount, GLsizei stride); +GLAPI void APIENTRY glMultiDrawMeshTasksIndirectCountEXT (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_EXT_mesh_shader */ + #ifndef GL_EXT_misc_attribute #define GL_EXT_misc_attribute 1 #endif /* GL_EXT_misc_attribute */ @@ -9395,6 +9525,11 @@ GLAPI void APIENTRY glResizeBuffersMESA (void); #define GL_MESA_shader_integer_functions 1 #endif /* GL_MESA_shader_integer_functions */ +#ifndef GL_MESA_texture_const_bandwidth +#define GL_MESA_texture_const_bandwidth 1 +#define GL_CONST_BW_TILING_MESA 0x8BBE +#endif /* GL_MESA_texture_const_bandwidth */ + #ifndef GL_MESA_tile_raster_order #define GL_MESA_tile_raster_order 1 #define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8 @@ -10249,12 +10384,6 @@ typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v); typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); -typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); @@ -10267,6 +10396,12 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, c typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); +typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); +typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); +typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y); GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v); @@ -10296,12 +10431,6 @@ GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v); GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v); -GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog); -GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog); -GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v); -GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight); -GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight); GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x); GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y); @@ -10314,6 +10443,12 @@ GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfN GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v); GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v); +GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog); +GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog); +GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue); +GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v); +GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight); +GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight); #endif #endif /* GL_NV_half_float */ @@ -11450,6 +11585,10 @@ GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id); #endif #endif /* GL_NV_transform_feedback2 */ +#ifndef GL_NV_uniform_buffer_std430_layout +#define GL_NV_uniform_buffer_std430_layout 1 +#endif /* GL_NV_uniform_buffer_std430_layout */ + #ifndef GL_NV_uniform_buffer_unified_memory #define GL_NV_uniform_buffer_unified_memory 1 #define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E @@ -11965,8 +12104,10 @@ GLAPI void APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum s #define GL_MAX_VIEWS_OVR 0x9631 #define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +GLAPI void APIENTRY glNamedFramebufferTextureMultiviewOVR (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); #endif #endif /* GL_OVR_multiview */