Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions target/i386/latx/context/wrappedlibgl.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,8 @@ EXPORT void* my_glXGetProcAddress(void* name);
EXPORT void my_glDebugMessageCallback(void* prod, void* param);
EXPORT int my_glXSwapIntervalMESA(int interval);
EXPORT void my_glProgramCallbackMESA(void* f, void* data);
EXPORT void my_eglSetBlobCacheFuncsANDROID(void* dpy, void* set, void* get);
EXPORT int my_eglDebugMessageControlKHR(void* prod, void* param);
//EXPORT void* my_glGetVkProcAddrNV(void* name);
EXPORT void* my_glXGetProcAddress(void* name)
{
Expand Down Expand Up @@ -270,6 +272,29 @@ static void* find_program_callback_Fct(void* fct)
printf_log(LOG_NONE, "Warning, no more slot for libGL program_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(int32_t a, void* b, int32_t c, void* d, void* e, void* f) \
{ \
RunFunctionWithState(my_egl_debug_callback_fct_##A, 6, 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;
}
// glXSwapIntervalMESA ...
#define GO(A) \
static iFi_t my_glXSwapIntervalMESA_fct_##A = NULL; \
Expand All @@ -294,6 +319,54 @@ static void* find_glXSwapIntervalMESA_Fct(void* fct)
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(const void* a, int32_t b, const void* c, int32_t d) \
{ \
RunFunctionWithState(my_set_blob_func_fct_##A, 4, 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 int32_t my_get_blob_func_##A(const void* a, int32_t b, void* c, int32_t d) \
{ \
return (int32_t)RunFunctionWithState(my_get_blob_func_fct_##A, 4, 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;
}

#undef SUPER

EXPORT void my_glDebugMessageCallback(void* prod, void* param)
Expand Down Expand Up @@ -339,6 +412,32 @@ EXPORT void my_glProgramCallbackMESA(void* f, void* data)
return;
ProgramCallbackMESA(find_program_callback_Fct(f), data);
}

EXPORT void my_eglSetBlobCacheFuncsANDROID(void* dpy, void* set, void* get)
{
static vFppp_t eglSetBlobCacheFuncsANDROID = NULL;

if(!eglSetBlobCacheFuncsANDROID && my_context && my_context->glxprocaddress)
eglSetBlobCacheFuncsANDROID = my_context->glxprocaddress("eglSetBlobCacheFuncsANDROID");

if(!eglSetBlobCacheFuncsANDROID)
return;

eglSetBlobCacheFuncsANDROID(dpy, find_set_blob_func_Fct(set), find_get_blob_func_Fct(get));
}

EXPORT int my_eglDebugMessageControlKHR(void* prod, void* param)
{
static iFpp_t DebugMessageControlKHR = NULL;
if(!DebugMessageControlKHR)
DebugMessageControlKHR = my->eglDebugMessageControlKHR;
if(!DebugMessageControlKHR)
DebugMessageControlKHR = (iFpp_t)dlsym(RTLD_DEFAULT, "eglDebugMessageControlKHR");
if(!DebugMessageControlKHR)
return 0;
return DebugMessageControlKHR(find_egl_debug_callback_Fct(prod), param);
}

EXPORT void* my_glXCreateContextAttribsARB(my_XDisplay_t* dpy, void* v2, void*v3, int32_t v4, void*v5);
EXPORT void* my_glXCreateContextAttribsARB(my_XDisplay_t* dpy, void* v2, void*v3, int32_t v4, void*v5)
{
Expand Down
4 changes: 4 additions & 0 deletions target/i386/latx/context/wrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -895,9 +895,11 @@ typedef void (*vFpuupp_t)(void*, uint32_t, uint32_t, void*, void*);
typedef void (*vFpupu_t)(void*, uint32_t, void*, uint32_t);
typedef void (*vFppiiu_t)(void*, void*, int32_t, int32_t, uint32_t);
typedef void (*vFpppppp_t)(void*, void*, void*, void*, void*, void*);
typedef int32_t (*iFppppip_t)(void*, void*, void*, void*, int32_t, void*);
typedef uint32_t (*uFppp_t)(void*, void*, void*);
typedef uint32_t (*uFppLp_t)(void*, void*, uintptr_t, void*);
typedef uint32_t (*uFpppp_t)(void*, void*, void*, void*);
typedef uint32_t (*uFpiippp_t)(void*, int32_t, int32_t, void*, void*, void*);
typedef uint32_t (*uFppLpp_t)(void*, void*, uintptr_t, void*, void*);
typedef uintptr_t (*LFpp_t)(void*, void*);
typedef int32_t (*iFpLppp_t)(void*, uintptr_t, void*, void*, void*);
Expand Down Expand Up @@ -2343,9 +2345,11 @@ void vFpuupp(uintptr_t fcn) { __CPU; vFpuupp_t fn = (vFpuupp_t)fcn; fn((void*)R_
void vFpupu(uintptr_t fcn) { __CPU; vFpupu_t fn = (vFpupu_t)fcn; fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX); DEBUG_LOG; (void)cpu; }
void vFppiiu(uintptr_t fcn) { __CPU; vFppiiu_t fn = (vFppiiu_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8); DEBUG_LOG; (void)cpu; }
void vFpppppp(uintptr_t fcn) { __CPU; vFpppppp_t fn = (vFpppppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); DEBUG_LOG; (void)cpu; }
void iFppppip(uintptr_t fcn) { __CPU; iFppppip_t fn = (iFppppip_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); DEBUG_LOG; (void)cpu; }
void uFppp(uintptr_t fcn) { __CPU; uFppp_t fn = (uFppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); DEBUG_LOG; (void)cpu; }
void uFppLp(uintptr_t fcn) { __CPU; uFppLp_t fn = (uFppLp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX); DEBUG_LOG; (void)cpu; }
void uFpppp(uintptr_t fcn) { __CPU; uFpppp_t fn = (uFpppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); DEBUG_LOG; (void)cpu; }
void uFpiippp(uintptr_t fcn) { __CPU; uFpiippp_t fn = (uFpiippp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); DEBUG_LOG; (void)cpu; }
void uFppLpp(uintptr_t fcn) { __CPU; uFppLpp_t fn = (uFppLpp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); DEBUG_LOG; (void)cpu; }
void LFpp(uintptr_t fcn) { __CPU; LFpp_t fn = (LFpp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI); DEBUG_LOG; (void)cpu; }
void iFpLppp(uintptr_t fcn) { __CPU; iFpLppp_t fn = (iFpLppp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); DEBUG_LOG; (void)cpu; }
Expand Down
6 changes: 5 additions & 1 deletion target/i386/latx/include/generated/wrappedlibgltypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
#endif

typedef int32_t (*iFi_t)(int32_t);
typedef int32_t (*iFpp_t)(void*, void*);
typedef void* (*pFp_t)(void*);
typedef void (*vFpp_t)(void*, void*);
typedef void (*vFipp_t)(int32_t, void*, void*);
typedef void* (*pFpppip_t)(void*, void*, void*, int32_t, void*);
typedef int32_t (*iFppp_t)(void*, void*, void*);
typedef void (*vFppp_t)(void*, void*, void*);

#define SUPER() ADDED_FUNCTIONS() \
GO(glXSwapIntervalMESA, iFi_t) \
Expand All @@ -24,8 +26,10 @@ typedef int32_t (*iFppp_t)(void*, void*, void*);
GO(glDebugMessageCallbackAMD, vFpp_t) \
GO(glDebugMessageCallbackARB, vFpp_t) \
GO(glDebugMessageCallbackKHR, vFpp_t) \
GO(eglDebugMessageControlKHR, iFpp_t) \
GO(glProgramCallbackMESA, vFipp_t) \
GO(glXCreateContextAttribsARB, pFpppip_t) \
GO(glXMakeCurrent,iFppp_t)
GO(glXMakeCurrent,iFppp_t) \
GO(eglSetBlobCacheFuncsANDROID, vFppp_t)

#endif // __wrappedlibglTYPES_H_
22 changes: 21 additions & 1 deletion target/i386/latx/include/wrappedlibegl_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,52 @@ GO(eglBindTexImage, iFppi)
GO(eglChooseConfig, iFpppip)
GO(eglCopyBuffers, iFppp)
GO(eglCreateContext, pFpppp)
GO(eglCreateImage, pFppupp)
GO(eglCreatePbufferFromClientBuffer, pFpippp)
GO(eglCreatePbufferSurface, pFppp)
GO(eglCreatePixmapSurface, pFpppp)
GO(eglCreatePlatformPixmapSurface, pFpppp)
GO(eglCreatePlatformPixmapSurfaceEXT, pFpppp)
GO(eglCreatePlatformWindowSurface, pFpppp)
GO(eglCreatePlatformWindowSurfaceEXT, pFpppp)
GO(eglCreateSync, pFpip)
GO(eglCreateWindowSurface, pFpppp)
GO(eglDestroyContext, iFpp)
GO(eglDestroyImage, uFpp)
GO(eglDestroySurface, iFpp)
GO(eglGetSyncAttrib, iFppip)
GO(eglDestroySync, iFpp)
GO(eglGetConfigAttrib, iFppip)
GO(eglGetConfigs, iFppip)
GO(eglGetCurrentContext, pFv)
GO(eglGetCurrentDisplay, pFv)
GO(eglGetCurrentSurface, pFi)
GO(eglGetDisplay, pFp)
GO(eglGetError, iFv)
GOM(eglGetProcAddress, pFp)
GO(eglGetPlatformDisplay, pFipp)
GO(eglGetPlatformDisplayEXT, pFipp)
GOM(eglGetProcAddress, pFEp)
GO(eglInitialize, iFppp)
GO(eglLockSurfaceKHR, iFppp)
GO(eglMakeCurrent, iFpppp)
GO(eglQueryAPI, iFv)
GO(eglQueryContext, iFppip)
GO(eglQueryDevicesEXT, iFipp)
GO(eglQueryDeviceStringEXT, pFpi)
GO(eglQueryString, pFpi)
GO(eglQuerySurface, iFppip)
GO(eglReleaseTexImage, iFppi)
GO(eglReleaseThread, iFv)
GO(eglSetDamageRegionKHR, iFpppi)
GO(eglSurfaceAttrib, iFppii)
GO(eglSwapBuffers, iFpp)
GO(eglSwapBuffersWithDamageEXT, iFpppi)
GO(eglSwapBuffersWithDamageKHR, iFpppi)
GO(eglSwapInterval, iFpi)
GO(eglTerminate, iFp)
GO(eglUnlockSurfaceKHR, iFpp)
GO(eglWaitClient, iFv)
GO(eglWaitGL, iFv)
GO(eglWaitNative, iFi)
GO(eglWaitSync, iFppi)
GO(eglClientWaitSync, iFppiU)
47 changes: 40 additions & 7 deletions target/i386/latx/include/wrappedlibgl_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -3392,26 +3392,33 @@ GO(glGetnUniformuivKHR, vFuilp)
GO(eglBindAPI, iFi)
GO(eglBindTexImage, iFppi)
GO(eglChooseConfig, iFpppip)
GO(eglClientWaitSyncKHR, iFppip)
GO(eglClientWaitSyncKHR, iFppiU)
GO(eglClientWaitSyncNV, iFpip)
GO(eglCopyBuffers, iFppp)
GO(eglCreateContext, pFpppp)
GO(eglCreateDRMImageMESA, pFpp)
GO(eglCreateFenceSyncNV, pFpip)
GO(eglCreateImageKHR, pFppipp)
GO(eglCreateImageKHR, pFppupp)
GO(eglCreatePbufferFromClientBuffer, pFpippp)
GO(eglCreatePbufferSurface, pFppp)
GO(eglCreatePixmapSurface, pFpppp)
GO(eglCreatePixmapSurfaceHI, pFppp)
GO(eglCreatePlatformPixmapSurface, pFpppp)
GO(eglCreatePlatformPixmapSurfaceEXT, pFpppp)
GO(eglCreatePlatformWindowSurface, pFpppp)
GO(eglCreatePlatformWindowSurfaceEXT, pFpppp)
GO(eglCreateStreamFromFileDescriptorKHR, pFpi)
GO(eglCreateStreamKHR, pFpp)
GO(eglCreateStreamProducerSurfaceKHR, pFpppp)
GO(eglCreateSync, pFpip)
GO(eglCreateSyncKHR, pFpip)
GO(eglCreateSync64KHR, pFpup)
GO(eglCreateWindowSurface, pFpppp)
GO(eglDestroyContext, iFpp)
GO(eglDestroyImageKHR, iFpp)
GO(eglDestroyImageKHR, uFpp)
GO(eglDestroyStreamKHR, iFpp)
GO(eglDestroySurface, iFpp)
GO(eglDestroySync, iFpp)
GO(eglDestroySyncKHR, iFpp)
GO(eglDestroySyncNV, iFp)
GO(eglDupNativeFenceFDANDROID, iFpp)
Expand All @@ -3424,7 +3431,11 @@ GO(eglGetCurrentDisplay, pFv)
GO(eglGetCurrentSurface, pFi)
GO(eglGetDisplay, pFp)
GO(eglGetError, iFv)
GO(eglGetMscRateANGLE, uFpppp)
GO(eglGetPlatformDisplay, pFipp)
GOM(eglGetProcAddress, pFEp)
GO(eglGetStreamFileDescriptorKHR, iFpp)
GO(eglGetSyncAttrib, iFppip)
GO(eglGetSyncAttribKHR, iFppip)
GO(eglGetSyncAttribNV, iFpip)
GO(eglGetSystemTimeFrequencyNV, UFv)
Expand All @@ -3446,7 +3457,8 @@ GO(eglQuerySurface, iFppip)
GO(eglQuerySurfacePointerANGLE, iFppip)
GO(eglReleaseTexImage, iFppi)
GO(eglReleaseThread, iFv)
//GOM(eglSetBlobCacheFuncsANDROID, vFpBB)
GO(eglSetDamageRegionKHR, iFpppi)
GOM(eglSetBlobCacheFuncsANDROID, vFppp)
GO(eglSignalSyncKHR, iFppi)
GO(eglSignalSyncNV, iFpi)
GO(eglStreamAttribKHR, iFppii)
Expand All @@ -3456,16 +3468,33 @@ GO(eglStreamConsumerReleaseKHR, iFpp)
GO(eglSurfaceAttrib, iFppii)
GO(eglSwapBuffers, iFpp)
GO(eglSwapBuffersWithDamageEXT, iFpppi)
GO(eglSwapBuffersWithDamageKHR, iFpppi)
GO(eglSwapInterval, iFpi)
GO(eglTerminate, iFp)
GO(eglUnlockSurfaceKHR, iFpp)
GO(eglWaitClient, iFv)
GO(eglWaitGL, iFv)
GO(eglWaitNative, iFi)
GO(eglWaitSync, iFppi)
GO(eglWaitSyncKHR, iFppi)
GO(eglQueryDevicesEXT, iFpp)
GO(eglQueryDeviceStringEXT, iFpi)
GO(eglGetPlatformDisplayEXT, iFipp)
GO(eglQueryDevicesEXT, iFipp)
GO(eglQueryDeviceStringEXT, pFpi)
GO(eglQueryDisplayAttribEXT, uFpip)
GO(eglQueryDmaBufModifiersEXT, uFpiippp)
GO(eglGetPlatformDisplayEXT, pFipp)
GO(eglCreateImage, pFppupp)
GO(eglDestroyImage, uFpp)
GO(eglClientWaitSync, iFppiU)
GOM(eglDebugMessageControlKHR, iFpp)
GO(eglExportDMABUFImageMESA, iFppppp)
GO(eglExportDMABUFImageQueryMESA, iFppppp)
GO(eglGetDisplayDriverConfig, pFp)
GO(eglGetDisplayDriverName, pFp)
GO(eglLabelObjectKHR, iFpipp)
GO(eglQueryDebugKHR, iFip)
GO(eglQueryDeviceAttribEXT, uFpip)
GO(eglQueryDmaBufFormatsEXT, iFpipp)
GO(eglQuerySupportedCompressionRatesEXT, iFppppip)

// GLES stuff
GO(glDiscardFramebuffer, vFilp)
Expand Down Expand Up @@ -3930,6 +3959,10 @@ GO(glMultiTexCoord4x, vFiiiii)
GO(glNormal3x, vFiiii)
GO(glOrthox, vFiiiiii)
GO(glPointParameterxv, vFip)
GO(glGetLightxv, vFiip)
GO(glGetMaterialxv, vFiip)
GO(glPointParameterx, vFii)
GO(glSampleCoveragex, vFii)
GO(glPointSizex, vFi)
GO(glPolygonOffsetx, vFii)
GO(glRotatex, vFiiii)
Expand Down
2 changes: 2 additions & 0 deletions target/i386/latx/include/wrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -823,9 +823,11 @@ void vFpuupp(uintptr_t fcn);
void vFpupu(uintptr_t fcn);
void vFppiiu(uintptr_t fcn);
void vFpppppp(uintptr_t fcn);
void iFppppip(uintptr_t fcn);
void uFppp(uintptr_t fcn);
void uFppLp(uintptr_t fcn);
void uFpppp(uintptr_t fcn);
void uFpiippp(uintptr_t fcn);
void uFppLpp(uintptr_t fcn);
void LFpp(uintptr_t fcn);
void iFpLppp(uintptr_t fcn);
Expand Down
Loading