Added wrapped support for EGL/GLESv2

This commit is contained in:
ptitSeb 2024-02-29 12:55:57 +01:00
parent 0e71c3a2ac
commit 50250bd2ca
16 changed files with 704 additions and 100 deletions

View File

@ -470,6 +470,7 @@ set(WRAPPEDS
"${BOX64_ROOT}/src/wrapped/wrappedgdkpixbuf2.c"
"${BOX64_ROOT}/src/wrapped/wrappedgdkx112.c"
"${BOX64_ROOT}/src/wrapped/wrappedgio2.c"
"${BOX64_ROOT}/src/wrapped/wrappedglesv2.c"
"${BOX64_ROOT}/src/wrapped/wrappedglib2.c"
"${BOX64_ROOT}/src/wrapped/wrappedgmodule2.c"
"${BOX64_ROOT}/src/wrapped/wrappedgmp.c"

View File

@ -399,7 +399,9 @@ def readFiles(files: Iterable[Filename]) -> Tuple[JumbledGlobals, JumbledRedirec
or match("sdl1mixer", "sdl2mixer") \
or match("sdl1net", "sdl2net") \
or match("sdl1ttf", "sdl2ttf") \
or match("libGL", "libEGL") \
or match("libgl", "libegl") \
or match("libgl", "glesv2") \
or match("libegl", "glesv2") \
or match("libc", "tcmallocminimal") \
or match("libc", "tbbmallocproxy") \
or match("libc", "androidshmem") \

View File

@ -473,6 +473,12 @@ library_t *NewLibrary(const char* path, box64context_t* context, elfheader_t* ve
int precise = (!box64_prefer_wrapped && !essential && path && strchr(path, '/'))?1:0;
if(!notwrapped && precise && strstr(path, "libtcmalloc_minimal.so"))
precise = 0; // allow native version for tcmalloc_minimum
/*
if(!notwrapped && precise && strstr(path, "libEGL.so"))
precise = 0; // allow native version for EGL
if(!notwrapped && precise && strstr(path, "libGLESv2.so"))
precise = 0; // allow native version for GLESv2
*/
// check if name is libSDL_sound-1.0.so.1 but with SDL2 loaded, then try emulated first...
if(!notwrapped && !strcmp(lib->name, "libSDL_sound-1.0.so.1") && my_context->sdl2lib)
notwrapped = 1;

View File

@ -6,12 +6,15 @@ GO("libc.musl-x86_64.so.1", libcmusl)
GO("librt.so.1", librt)
GO("libbsd.so.0", libbsd)
GO("libEGL.so.1", libegl)
GO("libEGL.so", libegl)
GO("libGL.so.1", libgl)
GO("libGL.so", libgl)
GO("libOpenGL.so.0", libgl)
GO("libGLU.so.1", libglu)
GO("libGLX.so.0", libglx)
GO("libGLX.so", libglx)
GO("libGLESv2.so.2", glesv2)
GO("libGLESv2.so", glesv2)
GO("libX11.so.6", libx11)
GO("libasound.so.2", libasound)
GO("libasound.so", libasound)

View File

@ -2482,6 +2482,7 @@
#() vFEpppppuu
#() vFiiiiuuip
#() vFiilliilp
#() vFiilluulp
#() vFiupuiuup
#() vFiupuuuup
#() vFuiiiiiii
@ -3437,6 +3438,7 @@ wrappedgio2:
- g_dbus_connection_signal_subscribe
- vFpppppppiippp:
- g_dbus_connection_call
wrappedglesv2:
wrappedglib2:
- vFp:
- g_atexit
@ -4365,10 +4367,14 @@ wrappedlibgl:
- glDebugMessageCallbackAMD
- glDebugMessageCallbackARB
- glDebugMessageCallbackKHR
- iFpp:
- eglDebugMessageControlKHR
- vFipp:
- glProgramCallbackMESA
- vFppi:
- glXSwapIntervalEXT
- vFppp:
- eglSetBlobCacheFuncsANDROID
wrappedlibglu:
- vFpip:
- gluNurbsCallback

View File

@ -0,0 +1,8 @@
/*******************************************************************
* File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
*******************************************************************/
#ifndef __wrappedglesv2DEFS_H_
#define __wrappedglesv2DEFS_H_
#endif // __wrappedglesv2DEFS_H_

View File

@ -0,0 +1,17 @@
/*******************************************************************
* File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
*******************************************************************/
#ifndef __wrappedglesv2TYPES_H_
#define __wrappedglesv2TYPES_H_
#ifndef LIBNAME
#error You should only #include this file inside a wrapped*.c file
#endif
#ifndef ADDED_FUNCTIONS
#define ADDED_FUNCTIONS()
#endif
#define SUPER() ADDED_FUNCTIONS()
#endif // __wrappedglesv2TYPES_H_

View File

@ -0,0 +1,8 @@
/*******************************************************************
* File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
*******************************************************************/
#ifndef __wrappedglesv2UNDEFS_H_
#define __wrappedglesv2UNDEFS_H_
#endif // __wrappedglesv2UNDEFS_H_

View File

@ -14,8 +14,10 @@
typedef int32_t (*iFi_t)(int32_t);
typedef void* (*pFp_t)(void*);
typedef void (*vFpp_t)(void*, void*);
typedef int32_t (*iFpp_t)(void*, void*);
typedef void (*vFipp_t)(int32_t, void*, void*);
typedef void (*vFppi_t)(void*, void*, int32_t);
typedef void (*vFppp_t)(void*, void*, void*);
#define SUPER() ADDED_FUNCTIONS() \
GO(glXSwapIntervalMESA, iFi_t) \
@ -26,7 +28,9 @@ typedef void (*vFppi_t)(void*, void*, int32_t);
GO(glDebugMessageCallbackAMD, vFpp_t) \
GO(glDebugMessageCallbackARB, vFpp_t) \
GO(glDebugMessageCallbackKHR, vFpp_t) \
GO(eglDebugMessageControlKHR, iFpp_t) \
GO(glProgramCallbackMESA, vFipp_t) \
GO(glXSwapIntervalEXT, vFppi_t)
GO(glXSwapIntervalEXT, vFppi_t) \
GO(eglSetBlobCacheFuncsANDROID, vFppp_t)
#endif // __wrappedlibglTYPES_H_

View File

@ -2520,6 +2520,7 @@ typedef void (*vFEpppuipV_t)(x64emu_t*, void*, void*, void*, uint32_t, int32_t,
typedef void (*vFEpppppuu_t)(x64emu_t*, void*, void*, void*, void*, void*, uint32_t, uint32_t);
typedef void (*vFiiiiuuip_t)(int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, void*);
typedef void (*vFiilliilp_t)(int32_t, int32_t, intptr_t, intptr_t, int32_t, int32_t, intptr_t, void*);
typedef void (*vFiilluulp_t)(int32_t, int32_t, intptr_t, intptr_t, uint32_t, uint32_t, intptr_t, void*);
typedef void (*vFiupuiuup_t)(int32_t, uint32_t, void*, uint32_t, int32_t, uint32_t, uint32_t, void*);
typedef void (*vFiupuuuup_t)(int32_t, uint32_t, void*, uint32_t, uint32_t, uint32_t, uint32_t, void*);
typedef void (*vFuiiiiiii_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
@ -5589,6 +5590,7 @@ void vFEpppuipV(x64emu_t *emu, uintptr_t fcn) { vFEpppuipV_t fn = (vFEpppuipV_t)
void vFEpppppuu(x64emu_t *emu, uintptr_t fcn) { vFEpppppuu_t fn = (vFEpppppuu_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
void vFiiiiuuip(x64emu_t *emu, uintptr_t fcn) { vFiiiiuuip_t fn = (vFiiiiuuip_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFiilliilp(x64emu_t *emu, uintptr_t fcn) { vFiilliilp_t fn = (vFiilliilp_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(intptr_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFiilluulp(x64emu_t *emu, uintptr_t fcn) { vFiilluulp_t fn = (vFiilluulp_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(intptr_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFiupuiuup(x64emu_t *emu, uintptr_t fcn) { vFiupuiuup_t fn = (vFiupuiuup_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFiupuuuup(x64emu_t *emu, uintptr_t fcn) { vFiupuuuup_t fn = (vFiupuuuup_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFuiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiii_t fn = (vFuiiiiiii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }

View File

@ -2520,6 +2520,7 @@ void vFEpppuipV(x64emu_t *emu, uintptr_t fnc);
void vFEpppppuu(x64emu_t *emu, uintptr_t fnc);
void vFiiiiuuip(x64emu_t *emu, uintptr_t fnc);
void vFiilliilp(x64emu_t *emu, uintptr_t fnc);
void vFiilluulp(x64emu_t *emu, uintptr_t fnc);
void vFiupuiuup(x64emu_t *emu, uintptr_t fnc);
void vFiupuuuup(x64emu_t *emu, uintptr_t fnc);
void vFuiiiiiii(x64emu_t *emu, uintptr_t fnc);

View File

@ -0,0 +1,23 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <dlfcn.h>
#include "wrappedlibs.h"
#include "debug.h"
#include "wrapper.h"
#include "bridge.h"
#include "librarian/library_private.h"
#include "x64emu.h"
#ifdef ANDROID
const char* glesv2Name = "libGLESv2.so";
#else
const char* glesv2Name = "libGLESv2.so.2";
#endif
#define LIBNAME glesv2
#include "wrappedlib_init.h"

View File

@ -0,0 +1,362 @@
#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
#error meh!
#endif
GO(glActiveShaderProgram, vFuu)
GO(glActiveTexture, vFu)
GO(glAttachShader, vFuu)
GO(glBeginQuery, vFuu)
GO(glBeginTransformFeedback, vFu)
GO(glBindAttribLocation, vFuup)
GO(glBindBuffer, vFuu)
GO(glBindBufferBase, vFuuu)
GO(glBindBufferRange, vFuuuii)
GO(glBindFramebuffer, vFuu)
GO(glBindImageTexture, vFuuiCiuu)
GO(glBindProgramPipeline, vFu)
GO(glBindRenderbuffer, vFuu)
GO(glBindSampler, vFuu)
GO(glBindTexture, vFuu)
GO(glBindTransformFeedback, vFuu)
GO(glBindVertexArray, vFu)
GO(glBindVertexBuffer, vFuuli)
GO(glBlendBarrier, vFv)
GO(glBlendColor, vFffff)
GO(glBlendEquation, vFu)
GO(glBlendEquationi, vFuu)
GO(glBlendEquationSeparate, vFuu)
GO(glBlendEquationSeparatei, vFuuu)
GO(glBlendFunc, vFuu)
GO(glBlendFunci, vFuuu)
GO(glBlendFuncSeparate, vFuuuu)
GO(glBlendFuncSeparatei, vFuuuuu)
GO(glBlitFramebuffer, vFiiiiiiiiiu)
GO(glBufferData, vFulpu)
GO(glBufferSubData, vFullp)
GO(glCheckFramebufferStatus, uFu)
GO(glClear, vFi)
GO(glClearBufferfi, vFuifi)
GO(glClearBufferfv, vFuip)
GO(glClearBufferiv, vFuip)
GO(glClearBufferuiv, vFuip)
GO(glClearColor, vFffff)
GO(glClearDepthf, vFf)
GO(glClearStencil, vFi)
GO(glClientWaitSync, uFpuL)
GO(glColorMask, vFCCCC)
GO(glColorMaski, vFuiiii)
GO(glCompileShader, vFu)
GO(glCompressedTexImage2D, vFuiuiiiip)
GO(glCompressedTexImage3D, vFuiuiiiiip)
GO(glCompressedTexSubImage2D, vFuiiiiiuip)
GO(glCompressedTexSubImage3D, vFuiiiiiiiuip)
GO(glCopyBufferSubData, vFuulll)
GO(glCopyImageSubData, vFuuiiiiuuiiiiiii)
GO(glCopyTexImage2D, vFuiuiiiii)
GO(glCopyTexSubImage2D, vFuiiiiiii)
GO(glCopyTexSubImage3D, vFuiiiiiiii)
GO(glCreateProgram, uFv)
GO(glCreateShader, uFu)
GO(glCreateShaderProgramv, uFuip)
GO(glCullFace, vFu)
//GO(glDebugMessageCallback,
GO(glDebugMessageControl, vFuuuipi)
GO(glDebugMessageInsert, vFuuuuip)
GO(glDeleteBuffers, vFip)
GO(glDeleteFramebuffers, vFip)
GO(glDeleteProgram, vFu)
GO(glDeleteProgramPipelines, vFip)
GO(glDeleteQueries, vFip)
GO(glDeleteRenderbuffers, vFip)
GO(glDeleteSamplers, vFip)
GO(glDeleteShader, vFu)
GO(glDeleteSync, vFp)
GO(glDeleteTextures, vFip)
GO(glDeleteTransformFeedbacks, vFip)
GO(glDeleteVertexArrays, vFip)
GO(glDepthFunc, vFu)
GO(glDepthMask, vFi)
GO(glDepthRangef, vFff)
GO(glDetachShader, vFuu)
GO(glDisable, vFu)
GO(glDisablei, vFuu)
GO(glDisableVertexAttribArray, vFu)
GO(glDispatchCompute, vFuuu)
GO(glDispatchComputeIndirect, vFi)
GO(glDrawArrays, vFuii)
GO(glDrawArraysIndirect, vFup)
GO(glDrawArraysInstanced, vFuiii)
GO(glDrawBuffers, vFip)
GO(glDrawElements, vFuiup)
GO(glDrawElementsBaseVertex, vFuiupi)
GO(glDrawElementsIndirect, vFuup)
GO(glDrawElementsInstanced, vFuiupi)
GO(glDrawElementsInstancedBaseVertex, vFuiupii)
GO(glDrawRangeElements, vFuuuiup)
GO(glDrawRangeElementsBaseVertex, vFuuuiupi)
GO(glEnable, vFu)
GO(glEnablei, vFuu)
GO(glEnableVertexAttribArray, vFu)
GO(glEndQuery, vFu)
GO(glEndTransformFeedback, vFv)
GO(glFenceSync, pFuu)
GO(glFinish, vFv)
GO(glFlush, vFv)
GO(glFlushMappedBufferRange, vFull)
GO(glFramebufferParameteri, vFuui)
GO(glFramebufferRenderbuffer, vFuuuu)
GO(glFramebufferTexture, vFuuui)
GO(glFramebufferTexture2D, vFuuuui)
GO(glFramebufferTextureLayer, vFuuuii)
GO(glFrontFace, vFu)
GO(glGenBuffers, vFip)
GO(glGenerateMipmap, vFu)
GO(glGenFramebuffers, vFip)
GO(glGenProgramPipelines, vFip)
GO(glGenQueries, vFip)
GO(glGenRenderbuffers, vFip)
GO(glGenSamplers, vFip)
GO(glGenTextures, vFip)
GO(glGenTransformFeedbacks, vFip)
GO(glGenVertexArrays, vFip)
GO(glGetActiveAttrib, vFuuipppp)
GO(glGetActiveUniform, vFuuipppp)
GO(glGetActiveUniformBlockiv, vFuuup)
GO(glGetActiveUniformBlockName, vFuuipp)
GO(glGetActiveUniformsiv, vFuipup)
GO(glGetAttachedShaders, vFuipp)
GO(glGetAttribLocation, iFup)
GO(glGetBooleani_v, vFuup)
GO(glGetBooleanv, vFup)
GO(glGetBufferParameteri64v, vFuup)
GO(glGetBufferParameteriv, vFuup)
GO(glGetBufferPointerv, vFuup)
GO(glGetDebugMessageLog, uFuipppppp)
GO(glGetError, uFv)
GO(glGetFloatv, vFup)
GO(glGetFragDataLocation, iFup)
GO(glGetFramebufferAttachmentParameteriv, vFuuup)
GO(glGetFramebufferParameteriv, vFuup)
GO(glGetGraphicsResetStatus, iFv)
GO(glGetInteger64i_v, vFuup)
GO(glGetInteger64v, vFup)
GO(glGetIntegeri_v, vFuup)
GO(glGetIntegerv, vFup)
GO(glGetInternalformativ, vFuuuip)
GO(glGetMultisamplefv, vFuup)
GO(glGetnUniformfv, vFuilp)
GO(glGetnUniformiv, vFuilp)
GO(glGetnUniformuiv, vFuilp)
GO(glGetObjectLabel, vFuuipp)
GO(glGetObjectPtrLabel, vFpipp)
GO(glGetPointerv, vFup)
GO(glGetProgramBinary, vFuippp)
GO(glGetProgramInfoLog, vFuipp)
GO(glGetProgramInterfaceiv, vFuuup)
GO(glGetProgramiv, vFuup)
GO(glGetProgramPipelineInfoLog, vFuipp)
GO(glGetProgramPipelineiv, vFuup)
GO(glGetProgramResourceIndex, uFuup)
GO(glGetProgramResourceiv, vFuuuipipp)
GO(glGetProgramResourceLocation, iFuup)
GO(glGetProgramResourceName, vFuuuipp)
GO(glGetQueryiv, vFuup)
GO(glGetQueryObjectuiv, vFuup)
GO(glGetRenderbufferParameteriv, vFuup)
GO(glGetSamplerParameterfv, vFuup)
GO(glGetSamplerParameterIiv, vFuup)
GO(glGetSamplerParameterIuiv, vFuup)
GO(glGetSamplerParameteriv, vFuup)
GO(glGetShaderInfoLog, vFuipp)
GO(glGetShaderiv, vFuup)
GO(glGetShaderPrecisionFormat, vFuupp)
GO(glGetShaderSource, vFuipp)
GO(glGetString, pFu)
GO(glGetStringi, pFuu)
GO(glGetSynciv, vFpuipp)
GO(glGetTexLevelParameterfv, vFuiup)
GO(glGetTexLevelParameteriv, vFuiup)
GO(glGetTexParameterfv, vFuup)
GO(glGetTexParameterIiv, vFuup)
GO(glGetTexParameterIuiv, vFuup)
GO(glGetTexParameteriv, vFuup)
GO(glGetTransformFeedbackVarying, vFuuipppp)
GO(glGetUniformBlockIndex, uFup)
GO(glGetUniformfv, vFuip)
GO(glGetUniformIndices, vFuipp)
GO(glGetUniformiv, vFuip)
GO(glGetUniformLocation, iFup)
GO(glGetUniformuiv, vFuip)
GO(glGetVertexAttribfv, vFuup)
GO(glGetVertexAttribIiv, vFuup)
GO(glGetVertexAttribIuiv, vFuup)
GO(glGetVertexAttribiv, vFuup)
GO(glGetVertexAttribPointerv, vFuup)
GO(glHint, vFuu)
GO(glInvalidateFramebuffer, vFuip)
GO(glInvalidateSubFramebuffer, vFuipiiii)
GO(glIsBuffer, iFu)
GO(glIsEnabled, iFu)
GO(glIsEnabledi, iFuu)
GO(glIsFramebuffer, iFu)
GO(glIsProgram, iFu)
GO(glIsProgramPipeline, iFu)
GO(glIsQuery, iFu)
GO(glIsRenderbuffer, iFu)
GO(glIsSampler, iFu)
GO(glIsShader, iFu)
GO(glIsSync, CFp)
GO(glIsTexture, iFu)
GO(glIsTransformFeedback, iFu)
GO(glIsVertexArray, iFu)
GO(glLineWidth, vFf)
GO(glLinkProgram, vFu)
GO(glMapBufferRange, pFullu)
GO(glMemoryBarrier, vFi)
GO(glMemoryBarrierByRegion, vFu)
GO(glMinSampleShading, vFf)
GO(glObjectLabel, vFuuip)
GO(glObjectPtrLabel, vFpip)
GO(glPatchParameteri, vFui)
GO(glPauseTransformFeedback, vFv)
GO(glPixelStorei, vFui)
GO(glPolygonOffset, vFff)
GO(glPopDebugGroup, vFv)
GO(glPrimitiveBoundingBox, vFffffffff)
GO(glProgramBinary, vFuupi)
GO(glProgramParameteri, vFuui)
GO(glProgramUniform1f, vFuif)
GO(glProgramUniform1fv, vFuiip)
GO(glProgramUniform1i, vFuii)
GO(glProgramUniform1iv, vFuiip)
GO(glProgramUniform1ui, vFuiu)
GO(glProgramUniform1uiv, vFuiip)
GO(glProgramUniform2f, vFuiff)
GO(glProgramUniform2fv, vFuiip)
GO(glProgramUniform2i, vFuiii)
GO(glProgramUniform2iv, vFuiip)
GO(glProgramUniform2ui, vFuiuu)
GO(glProgramUniform2uiv, vFuiip)
GO(glProgramUniform3f, vFuifff)
GO(glProgramUniform3fv, vFuiip)
GO(glProgramUniform3i, vFuiiii)
GO(glProgramUniform3iv, vFuiip)
GO(glProgramUniform3ui, vFuiuuu)
GO(glProgramUniform3uiv, vFuiip)
GO(glProgramUniform4f, vFuiffff)
GO(glProgramUniform4fv, vFuiip)
GO(glProgramUniform4i, vFuiiiii)
GO(glProgramUniform4iv, vFuiip)
GO(glProgramUniform4ui, vFuiuuuu)
GO(glProgramUniform4uiv, vFuiip)
GO(glProgramUniformMatrix2fv, vFuiiip)
GO(glProgramUniformMatrix2x3fv, vFuiiip)
GO(glProgramUniformMatrix2x4fv, vFuiiip)
GO(glProgramUniformMatrix3fv, vFuiiip)
GO(glProgramUniformMatrix3x2fv, vFuiiip)
GO(glProgramUniformMatrix3x4fv, vFuiiip)
GO(glProgramUniformMatrix4fv, vFuiiip)
GO(glProgramUniformMatrix4x2fv, vFuiiip)
GO(glProgramUniformMatrix4x3fv, vFuiiip)
GO(glPushDebugGroup, vFuuip)
GO(glReadBuffer, vFu)
GO(glReadnPixels, vFiilluulp)
GO(glReadPixels, vFiiiiuup)
GO(glReleaseShaderCompiler, vFv)
GO(glRenderbufferStorage, vFuuii)
GO(glRenderbufferStorageMultisample, vFuiuii)
GO(glResumeTransformFeedback, vFv)
GO(glSampleCoverage, vFfi)
GO(glSampleMaski, vFui)
GO(glSamplerParameterf, vFuuf)
GO(glSamplerParameterfv, vFuup)
GO(glSamplerParameteri, vFuui)
GO(glSamplerParameterIiv, vFuup)
GO(glSamplerParameterIuiv, vFuup)
GO(glSamplerParameteriv, vFuup)
GO(glScissor, vFiiii)
GO(glShaderBinary, vFipupi)
GO(glShaderSource, vFuipp)
GO(glStencilFunc, vFuiu)
GO(glStencilFuncSeparate, vFuuiu)
GO(glStencilMask, vFu)
GO(glStencilMaskSeparate, vFuu)
GO(glStencilOp, vFuuu)
GO(glStencilOpSeparate, vFuuuu)
GO(glTexBuffer, vFuuu)
GO(glTexBufferRange, vFuuull)
GO(glTexImage2D, vFuiiiiiuup)
GO(glTexImage3D, vFuiiiiiiuup)
GO(glTexParameterf, vFuuf)
GO(glTexParameterfv, vFuup)
GO(glTexParameteri, vFuui)
GO(glTexParameterIiv, vFuup)
GO(glTexParameterIuiv, vFuup)
GO(glTexParameteriv, vFuup)
GO(glTexStorage2D, vFuiuii)
GO(glTexStorage2DMultisample, vFuiuiiC)
GO(glTexStorage3D, vFuiuiii)
GO(glTexStorage3DMultisample, vFuiuiiiC)
GO(glTexSubImage2D, vFuiiiiiuup)
GO(glTexSubImage3D, vFuiiiiiiiuup)
GO(glTransformFeedbackVaryings, vFuipu)
GO(glUniform1f, vFif)
GO(glUniform1fv, vFiip)
GO(glUniform1i, vFii)
GO(glUniform1iv, vFiip)
GO(glUniform1ui, vFiu)
GO(glUniform1uiv, vFiip)
GO(glUniform2f, vFiff)
GO(glUniform2fv, vFiip)
GO(glUniform2i, vFiii)
GO(glUniform2iv, vFiip)
GO(glUniform2ui, vFiuu)
GO(glUniform2uiv, vFiip)
GO(glUniform3f, vFifff)
GO(glUniform3fv, vFiip)
GO(glUniform3i, vFiiii)
GO(glUniform3iv, vFiip)
GO(glUniform3ui, vFiuuu)
GO(glUniform3uiv, vFiip)
GO(glUniform4f, vFiffff)
GO(glUniform4fv, vFiip)
GO(glUniform4i, vFiiiii)
GO(glUniform4iv, vFiip)
GO(glUniform4ui, vFiuuuu)
GO(glUniform4uiv, vFiip)
GO(glUniformBlockBinding, vFuuu)
GO(glUniformMatrix2fv, vFiiip)
GO(glUniformMatrix2x3fv, vFiiip)
GO(glUniformMatrix2x4fv, vFiiip)
GO(glUniformMatrix3fv, vFiiip)
GO(glUniformMatrix3x2fv, vFiiip)
GO(glUniformMatrix3x4fv, vFiiip)
GO(glUniformMatrix4fv, vFiiip)
GO(glUniformMatrix4x2fv, vFiiip)
GO(glUniformMatrix4x3fv, vFiiip)
GO(glUnmapBuffer, iFu)
GO(glUseProgram, vFu)
GO(glUseProgramStages, vFuuu)
GO(glValidateProgram, vFu)
GO(glValidateProgramPipeline, vFu)
GO(glVertexAttrib1f, vFuf)
GO(glVertexAttrib1fv, vFup)
GO(glVertexAttrib2f, vFuff)
GO(glVertexAttrib2fv, vFup)
GO(glVertexAttrib3f, vFufff)
GO(glVertexAttrib3fv, vFup)
GO(glVertexAttrib4f, vFuffff)
GO(glVertexAttrib4fv, vFup)
GO(glVertexAttribBinding, vFuu)
GO(glVertexAttribDivisor, vFuu)
GO(glVertexAttribFormat, vFuiuCu)
GO(glVertexAttribI4i, vFuiiii)
GO(glVertexAttribI4iv, vFup)
GO(glVertexAttribI4ui, vFuuuuu)
GO(glVertexAttribI4uiv, vFup)
GO(glVertexAttribIFormat, vFuiuu)
GO(glVertexAttribIPointer, vFuiuip)
GO(glVertexAttribPointer, vFuiuiip)
GO(glVertexBindingDivisor, vFuu)
GO(glViewport, vFiiii)
GO(glWaitSync, vFpuL)

View File

@ -5,21 +5,21 @@
GO(eglBindAPI, iFi)
GO(eglBindTexImage, iFppi)
GO(eglChooseConfig, iFpppip)
//GO(eglClientWaitSync,
GO(eglClientWaitSync, iFppiU)
GO(eglCopyBuffers, iFppp)
GO(eglCreateContext, pFpppp)
//GO(eglCreateImage,
GO(eglCreateImage, pFppuup)
GO(eglCreatePbufferFromClientBuffer, pFpippp)
GO(eglCreatePbufferSurface, pFppp)
GO(eglCreatePixmapSurface, pFpppp)
//GO(eglCreatePlatformPixmapSurface,
//GO(eglCreatePlatformWindowSurface,
//GO(eglCreateSync,
GO(eglCreatePlatformPixmapSurface, pFpppp)
GO(eglCreatePlatformWindowSurface, pFpppp)
GO(eglCreateSync, pFpup)
GO(eglCreateWindowSurface, pFpppp)
GO(eglDestroyContext, iFpp)
//GO(eglDestroyImage,
GO(eglDestroyImage, iFpp)
GO(eglDestroySurface, iFpp)
//GO(eglDestroySync,
GO(eglDestroySync, iFpp)
GO(eglGetConfigAttrib, iFppip)
GO(eglGetConfigs, iFppip)
GO(eglGetCurrentContext, pFv)
@ -27,9 +27,9 @@ GO(eglGetCurrentDisplay, pFv)
GO(eglGetCurrentSurface, pFi)
GO(eglGetDisplay, pFp)
GO(eglGetError, iFv)
//GO(eglGetPlatformDisplay,
GO(eglGetPlatformDisplay, pFppp)
GOM(eglGetProcAddress, pFEp)
//GO(eglGetSyncAttrib,
GO(eglGetSyncAttrib, iFppip)
GO(eglInitialize, iFppp)
GO(eglMakeCurrent, iFpppp)
GO(eglQueryAPI, iFv)
@ -45,5 +45,5 @@ GO(eglTerminate, iFp)
GO(eglWaitClient, iFv)
GO(eglWaitGL, iFv)
GO(eglWaitNative, iFi)
//GO(eglWaitSync,
GO(eglWaitSync, iFppi)

View File

@ -33,6 +33,7 @@ EXPORT void* my_glXGetProcAddressARB(x64emu_t* emu, void* name) __attribute__((a
typedef int (*iFi_t)(int);
typedef void (*vFpp_t)(void*, void*);
typedef void (*vFppp_t)(void*, void*, void*);
typedef void (*vFppi_t)(void*, void*, int);
typedef void*(*pFp_t)(void*);
typedef void (*debugProc_t)(int32_t, int32_t, uint32_t, int32_t, int32_t, void*, void*);
@ -76,6 +77,28 @@ static void* find_debug_callback_Fct(void* fct)
printf_log(LOG_NONE, "Warning, no more slot for libGL debug_callback callback\n");
return NULL;
}
// egl_debug_callback ...
#define GO(A) \
static uintptr_t my_egl_debug_callback_fct_##A = 0; \
static void my_egl_debug_callback_##A(int a, void* b, int c, void* d, void* e, const char* f) \
{ \
RunFunctionFmt(my_egl_debug_callback_fct_##A, "ipippp", a, b, c, d, e, f); \
}
SUPER()
#undef GO
static void* find_egl_debug_callback_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my_egl_debug_callback_fct_##A == (uintptr_t)fct) return my_egl_debug_callback_##A;
SUPER()
#undef GO
#define GO(A) if(my_egl_debug_callback_fct_##A == 0) {my_egl_debug_callback_fct_##A = (uintptr_t)fct; return my_egl_debug_callback_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for libGL egl_debug_callback callback\n");
return NULL;
}
// program_callback ...
#define GO(A) \
static uintptr_t my_program_callback_fct_##A = 0; \
@ -98,6 +121,50 @@ static void* find_program_callback_Fct(void* fct)
printf_log(LOG_NONE, "Warning, no more slot for libGL program_callback callback\n");
return NULL;
}
// set_blob_func ...
#define GO(A) \
static uintptr_t my_set_blob_func_fct_##A = 0; \
static void my_set_blob_func_##A(void* a, ssize_t b, void* c, ssize_t d) \
{ \
RunFunctionFmt(my_set_blob_func_fct_##A, "plpl", a, b, c, d); \
}
SUPER()
#undef GO
static void* find_set_blob_func_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my_set_blob_func_fct_##A == (uintptr_t)fct) return my_set_blob_func_##A;
SUPER()
#undef GO
#define GO(A) if(my_set_blob_func_fct_##A == 0) {my_set_blob_func_fct_##A = (uintptr_t)fct; return my_set_blob_func_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for libGL set_blob_func callback\n");
return NULL;
}
// get_blob_func ...
#define GO(A) \
static uintptr_t my_get_blob_func_fct_##A = 0; \
static ssize_t my_get_blob_func_##A(void* a, ssize_t b, void* c, ssize_t d) \
{ \
return (ssize_t)RunFunctionFmt(my_get_blob_func_fct_##A, "plpl", a, b, c, d); \
}
SUPER()
#undef GO
static void* find_get_blob_func_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my_get_blob_func_fct_##A == (uintptr_t)fct) return my_get_blob_func_##A;
SUPER()
#undef GO
#define GO(A) if(my_get_blob_func_fct_##A == 0) {my_get_blob_func_fct_##A = (uintptr_t)fct; return my_get_blob_func_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for libGL get_blob_func callback\n");
return NULL;
}
// glDebugMessageCallback ...
#define GO(A) \
@ -191,6 +258,52 @@ static void* find_glDebugMessageCallbackKHR_Fct(void* fct)
printf_log(LOG_NONE, "Warning, no more slot for libGL glDebugMessageCallbackKHR callback\n");
return NULL;
}
// eglDebugMessageControlKHR ...
#define GO(A) \
static vFpp_t my_eglDebugMessageControlKHR_fct_##A = NULL; \
static void my_eglDebugMessageControlKHR_##A(x64emu_t* emu, void* prod, void* param) \
{ \
if(!my_eglDebugMessageControlKHR_fct_##A) \
return; \
my_eglDebugMessageControlKHR_fct_##A(find_egl_debug_callback_Fct(prod), param); \
}
SUPER()
#undef GO
static void* find_eglDebugMessageControlKHR_Fct(void* fct)
{
if(!fct) return fct;
#define GO(A) if(my_eglDebugMessageControlKHR_fct_##A == (vFpp_t)fct) return my_eglDebugMessageControlKHR_##A;
SUPER()
#undef GO
#define GO(A) if(my_eglDebugMessageControlKHR_fct_##A == 0) {my_eglDebugMessageControlKHR_fct_##A = (vFpp_t)fct; return my_eglDebugMessageControlKHR_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for libGL eglDebugMessageControlKHR callback\n");
return NULL;
}
// eglSetBlobCacheFuncsANDROID ...
#define GO(A) \
static vFppp_t my_eglSetBlobCacheFuncsANDROID_fct_##A = NULL; \
static void my_eglSetBlobCacheFuncsANDROID_##A(x64emu_t* emu, void* dpy, void* set, void* get) \
{ \
if(!my_eglSetBlobCacheFuncsANDROID_fct_##A) \
return; \
my_eglSetBlobCacheFuncsANDROID_fct_##A(dpy, find_set_blob_func_Fct(set), find_get_blob_func_Fct(get)); \
}
SUPER()
#undef GO
static void* find_eglSetBlobCacheFuncsANDROID_Fct(void* fct)
{
if(!fct) return fct;
#define GO(A) if(my_eglSetBlobCacheFuncsANDROID_fct_##A == (vFppp_t)fct) return my_eglSetBlobCacheFuncsANDROID_##A;
SUPER()
#undef GO
#define GO(A) if(my_eglSetBlobCacheFuncsANDROID_fct_##A == 0) {my_eglSetBlobCacheFuncsANDROID_fct_##A = (vFppp_t)fct; return my_eglSetBlobCacheFuncsANDROID_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for libGL eglSetBlobCacheFuncsANDROID callback\n");
return NULL;
}
// glXSwapIntervalMESA ...
#define GO(A) \
static iFi_t my_glXSwapIntervalMESA_fct_##A = NULL; \
@ -325,15 +438,17 @@ static void* find_glGetVkProcAddrNV_Fct(void* fct)
#include "wrappedlib_init.h"
#define SUPER() \
GO(vFpp_t, glDebugMessageCallback) \
GO(vFpp_t, glDebugMessageCallbackARB) \
GO(vFpp_t, glDebugMessageCallbackAMD) \
GO(vFpp_t, glDebugMessageCallbackKHR) \
GO(iFi_t, glXSwapIntervalMESA) \
GO(vFppi_t, glXSwapIntervalEXT) \
GO(vFpp_t, glProgramCallbackMESA) \
GO(pFp_t, glGetVkProcAddrNV) \
#define SUPER() \
GO(vFpp_t, glDebugMessageCallback) \
GO(vFpp_t, glDebugMessageCallbackARB) \
GO(vFpp_t, glDebugMessageCallbackAMD) \
GO(vFpp_t, glDebugMessageCallbackKHR) \
GO(vFpp_t, eglDebugMessageControlKHR) \
GO(iFi_t, glXSwapIntervalMESA) \
GO(vFppi_t, glXSwapIntervalEXT) \
GO(vFpp_t, glProgramCallbackMESA) \
GO(pFp_t, glGetVkProcAddrNV) \
GO(vFppp_t, eglSetBlobCacheFuncsANDROID) \
gl_wrappers_t* getGLProcWrapper(box64context_t* context, glprocaddress_t procaddress)

View File

@ -787,6 +787,10 @@ GO(glMemoryBarrierByRegion, vFu)
GO(glGetTextureSubImage, vFuiiiiiiiuuip)
GO(glGetCompressedTextureSubImage, vFuiiiiiiiip)
GO(glGetGraphicsResetStatus, iFv)
GO(glGetnUniformfv, vFuilp)
GO(glGetnUniformiv, vFuilp)
GO(glGetnUniformuiv, vFuilp)
GO(glReadnPixels, vFiilluulp)
//VERSION_4_6
GO(glSpecializeShader, vFippp)
@ -2037,9 +2041,6 @@ GO(glIsTextureEXT, iFu)
GO(glPrioritizeTexturesEXT, vFipp)
//EXT_texture_perturb_normal
GO(glTextureNormalEXT, vFu)
//EXT_timer_query
GO(glGetQueryObjecti64vEXT, vFuup)
GO(glGetQueryObjectui64vEXT, vFuup)
//EXT_transform_feedback
GO(glBeginTransformFeedbackEXT, vFu)
GO(glBindBufferBaseEXT, vFuuu)
@ -3309,82 +3310,6 @@ GO(glGetnUniformfvKHR, vFuilp)
GO(glGetnUniformivKHR, vFuilp)
GO(glGetnUniformuivKHR, vFuilp)
// EGL stuffs
GO(eglBindAPI, iFi)
GO(eglBindTexImage, iFppi)
GO(eglChooseConfig, iFpppip)
GO(eglClientWaitSyncKHR, iFppip)
GO(eglClientWaitSyncNV, iFpip)
GO(eglCopyBuffers, iFppp)
GO(eglCreateContext, pFpppp)
GO(eglCreateDRMImageMESA, pFpp)
GO(eglCreateFenceSyncNV, pFpip)
GO(eglCreateImageKHR, pFppipp)
GO(eglCreatePbufferFromClientBuffer, pFpippp)
GO(eglCreatePbufferSurface, pFppp)
GO(eglCreatePixmapSurface, pFpppp)
GO(eglCreatePixmapSurfaceHI, pFppp)
GO(eglCreateStreamFromFileDescriptorKHR, pFpi)
GO(eglCreateStreamKHR, pFpp)
GO(eglCreateStreamProducerSurfaceKHR, pFpppp)
GO(eglCreateSyncKHR, pFpip)
GO(eglCreateWindowSurface, pFpppp)
GO(eglDestroyContext, iFpp)
GO(eglDestroyImageKHR, iFpp)
GO(eglDestroyStreamKHR, iFpp)
GO(eglDestroySurface, iFpp)
GO(eglDestroySyncKHR, iFpp)
GO(eglDestroySyncNV, iFp)
GO(eglDupNativeFenceFDANDROID, iFpp)
GO(eglExportDRMImageMESA, iFppppp)
GO(eglFenceNV, iFp)
GO(eglGetConfigAttrib, iFppip)
GO(eglGetConfigs, iFppip)
GO(eglGetCurrentContext, pFv)
GO(eglGetCurrentDisplay, pFv)
GO(eglGetCurrentSurface, pFi)
GO(eglGetDisplay, pFp)
GO(eglGetError, iFv)
GO(eglGetStreamFileDescriptorKHR, iFpp)
GO(eglGetSyncAttribKHR, iFppip)
GO(eglGetSyncAttribNV, iFpip)
GO(eglGetSystemTimeFrequencyNV, UFv)
GO(eglGetSystemTimeNV, UFv)
GO(eglInitialize, iFppp)
GO(eglLockSurfaceKHR, iFppp)
GO(eglMakeCurrent, iFpppp)
GO(eglPostSubBufferNV, iFppiiii)
GO(eglQueryAPI, iFv)
GO(eglQueryContext, iFppip)
GO(eglQueryNativeDisplayNV, iFpp)
GO(eglQueryNativePixmapNV, iFppp)
GO(eglQueryNativeWindowNV, iFppp)
GO(eglQueryStreamKHR, iFppip)
GO(eglQueryStreamTimeKHR, iFppip)
GO(eglQueryStreamu64KHR, iFppip)
GO(eglQueryString, pFpi)
GO(eglQuerySurface, iFppip)
GO(eglQuerySurfacePointerANGLE, iFppip)
GO(eglReleaseTexImage, iFppi)
GO(eglReleaseThread, iFv)
//GOM(eglSetBlobCacheFuncsANDROID, vFpBB)
GO(eglSignalSyncKHR, iFppi)
GO(eglSignalSyncNV, iFpi)
GO(eglStreamAttribKHR, iFppii)
GO(eglStreamConsumerAcquireKHR, iFpp)
GO(eglStreamConsumerGLTextureExternalKHR, iFpp)
GO(eglStreamConsumerReleaseKHR, iFpp)
GO(eglSurfaceAttrib, iFppii)
GO(eglSwapBuffers, iFpp)
GO(eglSwapBuffersWithDamageEXT, iFpppi)
GO(eglSwapInterval, iFpi)
GO(eglTerminate, iFp)
GO(eglUnlockSurfaceKHR, iFpp)
GO(eglWaitClient, iFv)
GO(eglWaitGL, iFv)
GO(eglWaitNative, iFi)
GO(eglWaitSyncKHR, iFppi)
// GLES stuff
GO(glDiscardFramebuffer, vFilp)
GO(glDiscardFramebufferARB, vFilp)
@ -3417,6 +3342,7 @@ GO(glGetProgramPipelineivEXT, vFuip)
GO(glIsProgramPipelineEXT, iFu)
GO(glUseProgramStagesEXT, vFuuu)
GO(glValidateProgramPipelineEXT, vFu)
GO(glPrimitiveBoundingBox, vFffffffff)
// GL_EXT_window_rectangles
GO(glWindowRectanglesEXT, vFuip)
@ -4014,3 +3940,123 @@ GO(glTexturePageCommitmentMemNV, vFuiiiiiiiiuLC)
// GL_NV_vdpau_interop2
GO(glVDPAURegisterVideoSurfaceWithPictureStructureNV, lFpuipC)
// Base EGL
GO(eglBindAPI, iFi)
GO(eglBindTexImage, iFppi)
GO(eglChooseConfig, iFpppip)
GO(eglClientWaitSync, iFppiU)
GO(eglCopyBuffers, iFppp)
GO(eglCreateContext, pFpppp)
GO(eglCreateImage, pFppuup)
GO(eglCreatePbufferFromClientBuffer, pFpippp)
GO(eglCreatePbufferSurface, pFppp)
GO(eglCreatePixmapSurface, pFpppp)
GO(eglCreatePlatformPixmapSurface, pFpppp)
GO(eglCreatePlatformWindowSurface, pFpppp)
GO(eglCreateSync, pFpup)
GO(eglCreateWindowSurface, pFpppp)
GO(eglDestroyContext, iFpp)
GO(eglDestroyImage, iFpp)
GO(eglDestroySurface, iFpp)
GO(eglDestroySync, iFpp)
GO(eglGetConfigAttrib, iFppip)
GO(eglGetConfigs, iFppip)
GO(eglGetCurrentContext, pFv)
GO(eglGetCurrentDisplay, pFv)
GO(eglGetCurrentSurface, pFi)
GO(eglGetDisplay, pFp)
GO(eglGetError, iFv)
GO(eglGetPlatformDisplay, pFppp)
//GOM(eglGetProcAddress, pFEp)
GO(eglGetSyncAttrib, iFppip)
GO(eglInitialize, iFppp)
GO(eglMakeCurrent, iFpppp)
GO(eglQueryAPI, iFv)
GO(eglQueryContext, iFppip)
GO(eglQueryString, pFpi)
GO(eglQuerySurface, iFppip)
GO(eglReleaseTexImage, iFppi)
GO(eglReleaseThread, iFv)
GO(eglSurfaceAttrib, iFppii)
GO(eglSwapBuffers, iFpp)
GO(eglSwapInterval, iFpi)
GO(eglTerminate, iFp)
GO(eglWaitClient, iFv)
GO(eglWaitGL, iFv)
GO(eglWaitNative, iFi)
GO(eglWaitSync, iFppi)
// EGL_KHR_debug
GOM(eglDebugMessageControlKHR, iFEpp)
GO(eglQueryDebugKHR, iFip)
GO(eglLabelObjectKHR, iFpupp)
// EGL_MESA_image_dma_buf_export
GO(eglExportDMABUFImageQueryMESA, iFppppp)
GO(eglExportDMABUFImageMESA, iFppppp)
// EGL_ANGLE_sync_control_rate
GO(eglGetMscRateANGLE, iFpppp)
// EGL_CHROMIUM_sync_control
GO(eglGetSyncValuesCHROMIUM, iFppppp)
// EGL_EXT_device_query
GO(eglQueryDeviceAttribEXT, iFpip)
GO(eglQueryDeviceStringEXT, pFpi)
GO(eglQueryDisplayAttribEXT, iFpip)
// EGL_EXT_device_enumeration
GO(eglQueryDevicesEXT, iFipp)
// EGL_EXT_image_dma_buf_import_modifiers
GO(eglQueryDmaBufFormatsEXT, iFpipp)
GO(eglQueryDmaBufModifiersEXT, iFpiippp)
// EGL_ANDROID_blob_cache
GOM(eglSetBlobCacheFuncsANDROID, vFEppp)
// EGL_KHR_swap_buffers_with_damage
GO(eglSwapBuffersWithDamageKHR, iFpppi)
// EGL_KHR_wait_sync
GO(eglWaitSyncKHR, iFppi)
// EGL_KHR_image_base
GO(eglCreateImageKHR, pFppupp)
GO(eglDestroyImageKHR, iFpp)
// EGL_KHR_fence_sync
GO(eglCreateSyncKHR, pFpup)
GO(eglDestroySyncKHR, iFpp)
GO(eglClientWaitSyncKHR, iFppiU)
GO(eglGetSyncAttribKHR, iFppip)
// EGL_ANDROID_native_fence_sync
GO(eglDupNativeFenceFDANDROID, iFpp)
// EGL_NV_post_sub_buffer
GO(eglPostSubBufferNV, iFppiiii)
// GL_EXT_clip_control
GO(glClipControlEXT, vFuu)
// GL_EXT_disjoint_timer_query
GO(glGenQueriesEXT, vFlp)
GO(glDeleteQueriesEXT, vFlp)
GO(glIsQueryEXT, iFu)
GO(glBeginQueryEXT, vFuu)
GO(glEndQueryEXT, vFu)
GO(glQueryCounterEXT, vFuu)
GO(glGetQueryivEXT, vFuup)
GO(glGetQueryObjectivEXT, vFuup)
GO(glGetQueryObjectuivEXT, vFuup)
GO(glGetQueryObjecti64vEXT, vFuup)
GO(glGetQueryObjectui64vEXT, vFuup)
GO(glGetInteger64vEXT, vFup)
// GL_OES_mapbuffer
GO(glGetBufferPointervOES, vFuup)
GO(glMapBufferOES, pFuu)
GO(glUnmapBufferOES, iFu)