diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-05-10 17:28:46 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-05-10 17:28:46 +0200 |
| commit | 2aeddc882925898a53d377942c7457dd0daa077c (patch) | |
| tree | eca07f9dd36db7712bca818fab96f1aa20e6a3c6 /src | |
| parent | df4dcf88da8cf83cbfc6f0c34800f8f4a8a2a706 (diff) | |
| download | box64-2aeddc882925898a53d377942c7457dd0daa077c.tar.gz box64-2aeddc882925898a53d377942c7457dd0daa077c.zip | |
[BOX32][WRAPPER] Added some more 32bits wrapped libGL functions
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped32/generated/functions_list.txt | 4 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibgltypes32.h | 3 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.c | 2 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.h | 1 | ||||
| -rw-r--r-- | src/wrapped32/wrappedlibgl.c | 114 | ||||
| -rw-r--r-- | src/wrapped32/wrappedlibgl_private.h | 24 |
6 files changed, 135 insertions, 13 deletions
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index 54d47361..8831a8e1 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -1476,6 +1476,7 @@ #() pFppppi -> pFppppi #() pFXLipp -> pFXLipp #() pFXpipi -> pFXpipi +#() pFXpuup -> pFXpuup #() pFXppip -> pFXppip #() tEpppLi -> tEpppLi #() vFiuibp_i -> vFiuiBi @@ -2539,7 +2540,9 @@ wrappedlibgl: - iFpp: - eglDebugMessageControlKHR - pFXp: + - glXGetFBConfigFromVisualSGIX - glXGetVisualFromFBConfig + - glXGetVisualFromFBConfigSGIX - vFipp: - glProgramCallbackMESA - vFppp: @@ -2561,6 +2564,7 @@ wrappedlibgl: - glShaderSourceARB - pFXipp: - glXChooseFBConfig + - glXChooseFBConfigSGIX - pFXppi: - glXCreateContext - vFuippp: diff --git a/src/wrapped32/generated/wrappedlibgltypes32.h b/src/wrapped32/generated/wrappedlibgltypes32.h index 14b082ee..114bcc46 100644 --- a/src/wrapped32/generated/wrappedlibgltypes32.h +++ b/src/wrapped32/generated/wrappedlibgltypes32.h @@ -43,7 +43,9 @@ typedef void (*vFupupip_t)(uint32_t, void*, uint32_t, void*, int32_t, void*); GO(glDebugMessageCallbackARB, vFpp_t) \ GO(glDebugMessageCallbackKHR, vFpp_t) \ GO(eglDebugMessageControlKHR, iFpp_t) \ + GO(glXGetFBConfigFromVisualSGIX, pFXp_t) \ GO(glXGetVisualFromFBConfig, pFXp_t) \ + GO(glXGetVisualFromFBConfigSGIX, pFXp_t) \ GO(glProgramCallbackMESA, vFipp_t) \ GO(eglSetBlobCacheFuncsANDROID, vFppp_t) \ GO(glXSwapIntervalEXT, vFXpi_t) \ @@ -57,6 +59,7 @@ typedef void (*vFupupip_t)(uint32_t, void*, uint32_t, void*, int32_t, void*); GO(glShaderSource, vFuipp_t) \ GO(glShaderSourceARB, vFuipp_t) \ GO(glXChooseFBConfig, pFXipp_t) \ + GO(glXChooseFBConfigSGIX, pFXipp_t) \ GO(glXCreateContext, pFXppi_t) \ GO(glBindVertexBuffers, vFuippp_t) \ GO(glMultiDrawElements, vFupupi_t) \ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index 28da1056..4bf66364 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -1570,6 +1570,7 @@ typedef void* (*pFpppii_t)(void*, void*, void*, int32_t, int32_t); typedef void* (*pFppppi_t)(void*, void*, void*, void*, int32_t); typedef void* (*pFXLipp_t)(void*, uintptr_t, int32_t, void*, void*); typedef void* (*pFXpipi_t)(void*, void*, int32_t, void*, int32_t); +typedef void* (*pFXpuup_t)(void*, void*, uint32_t, uint32_t, void*); typedef void* (*pFXppip_t)(void*, void*, void*, int32_t, void*); typedef char* (*tEpppLi_t)(void*, void*, void*, uintptr_t, int32_t); typedef void (*vFiuibp_i_t)(int32_t, uint32_t, int32_t, struct_p_t*, int32_t); @@ -3671,6 +3672,7 @@ void pFpppii_32(x64emu_t *emu, uintptr_t fcn) { pFpppii_t fn = (pFpppii_t)fcn; R void pFppppi_32(x64emu_t *emu, uintptr_t fcn) { pFppppi_t fn = (pFppppi_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20))); } void pFXLipp_32(x64emu_t *emu, uintptr_t fcn) { pFXLipp_t fn = (pFXLipp_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); } void pFXpipi_32(x64emu_t *emu, uintptr_t fcn) { pFXpipi_t fn = (pFXpipi_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20))); } +void pFXpuup_32(x64emu_t *emu, uintptr_t fcn) { pFXpuup_t fn = (pFXpuup_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20))); } void pFXppip_32(x64emu_t *emu, uintptr_t fcn) { pFXppip_t fn = (pFXppip_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20))); } void tEpppLi_32(x64emu_t *emu, uintptr_t fcn) { tEpppLi_t fn = (tEpppLi_t)fcn; errno = emu->libc_err; R_EAX = to_cstring(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptri(int32_t, R_ESP + 20))); emu->libc_err = errno; } void vFiuibp_i_32(x64emu_t *emu, uintptr_t fcn) { vFiuibp_i_t fn = (vFiuibp_i_t)fcn; struct_p_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_p(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); fn(from_ptri(int32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, from_ptri(int32_t, R_ESP + 20)); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index aa5a762e..4c07e801 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -1517,6 +1517,7 @@ void pFpppii_32(x64emu_t *emu, uintptr_t fnc); void pFppppi_32(x64emu_t *emu, uintptr_t fnc); void pFXLipp_32(x64emu_t *emu, uintptr_t fnc); void pFXpipi_32(x64emu_t *emu, uintptr_t fnc); +void pFXpuup_32(x64emu_t *emu, uintptr_t fnc); void pFXppip_32(x64emu_t *emu, uintptr_t fnc); void tEpppLi_32(x64emu_t *emu, uintptr_t fnc); void vFiuibp_i_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedlibgl.c b/src/wrapped32/wrappedlibgl.c index 1e191df3..e7427789 100644 --- a/src/wrapped32/wrappedlibgl.c +++ b/src/wrapped32/wrappedlibgl.c @@ -484,6 +484,35 @@ static void* find_glXChooseFBConfig_Fct(void* fct) printf_log(LOG_NONE, "Warning, no more slot for libGL glXChooseFBConfig callback\n"); return NULL; } +// glXChooseFBConfigSGIX ... +#define GO(A) \ +static pFpipp_t my32_glXChooseFBConfigSGIX_fct_##A = NULL; \ +static void* my32_glXChooseFBConfigSGIX_##A(x64emu_t* emu, void* dpy, int screen, int* list, int* nelement) \ +{ \ + if(!my32_glXChooseFBConfigSGIX_fct_##A) \ + return NULL; \ + void** res = my32_glXChooseFBConfigSGIX_fct_##A (dpy, screen, list, nelement); \ + if(!res) \ + return NULL; \ + ptr_t* fbconfig = (ptr_t*)res; \ + for(int i=0; i<*nelement; ++i) \ + fbconfig[i] = to_ptrv(res[i]); \ + return res; \ +} +SUPER() +#undef GO +static void* find_glXChooseFBConfigSGIX_Fct(void* fct) +{ + if(!fct) return fct; + #define GO(A) if(my32_glXChooseFBConfigSGIX_fct_##A == (pFpipp_t)fct) return my32_glXChooseFBConfigSGIX_##A; + SUPER() + #undef GO + #define GO(A) if(my32_glXChooseFBConfigSGIX_fct_##A == 0) {my32_glXChooseFBConfigSGIX_fct_##A = (pFpipp_t)fct; return my32_glXChooseFBConfigSGIX_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for libGL glXChooseFBConfigSGIX callback\n"); + return NULL; +} // glXGetVisualFromFBConfig ... #define GO(A) \ static pFpp_t my32_glXGetVisualFromFBConfig_fct_##A = NULL; \ @@ -512,6 +541,34 @@ static void* find_glXGetVisualFromFBConfig_Fct(void* fct) printf_log(LOG_NONE, "Warning, no more slot for libGL glXGetVisualFromFBConfig callback\n"); return NULL; } +// glXGetVisualFromFBConfigSGIX ... +#define GO(A) \ +static pFpp_t my32_glXGetVisualFromFBConfigSGIX_fct_##A = NULL; \ +static void* my32_glXGetVisualFromFBConfigSGIX_##A(x64emu_t* emu, void* dpy, void* config) \ +{ \ + if(!my32_glXGetVisualFromFBConfigSGIX_fct_##A) \ + return NULL; \ + void* res = my32_glXGetVisualFromFBConfigSGIX_fct_##A (dpy, config); \ + if(!res) \ + return NULL; \ + my_XVisualInfo_32_t* vinfo = (my_XVisualInfo_32_t*)res; \ + convert_XVisualInfo_to_32(dpy, vinfo, res); \ + return vinfo; \ +} +SUPER() +#undef GO +static void* find_glXGetVisualFromFBConfigSGIX_Fct(void* fct) +{ + if(!fct) return fct; + #define GO(A) if(my32_glXGetVisualFromFBConfigSGIX_fct_##A == (pFpp_t)fct) return my32_glXGetVisualFromFBConfigSGIX_##A; + SUPER() + #undef GO + #define GO(A) if(my32_glXGetVisualFromFBConfigSGIX_fct_##A == 0) {my32_glXGetVisualFromFBConfigSGIX_fct_##A = (pFpp_t)fct; return my32_glXGetVisualFromFBConfigSGIX_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for libGL glXGetVisualFromFBConfigSGIX callback\n"); + return NULL; +} // glXChooseVisual ... #define GO(A) \ static pFpip_t my32_glXChooseVisual_fct_##A = NULL; \ @@ -565,6 +622,31 @@ static void* find_glXCreateContext_Fct(void* fct) printf_log(LOG_NONE, "Warning, no more slot for libGL glXCreateContext callback\n"); return NULL; } +// glXGetFBConfigFromVisualSGIX ... +#define GO(A) \ +static pFpp_t my32_glXGetFBConfigFromVisualSGIX_fct_##A = NULL; \ +static void* my32_glXGetFBConfigFromVisualSGIX_##A(x64emu_t* emu, void* dpy, my_XVisualInfo_32_t* info) \ +{ \ + if(!my32_glXGetFBConfigFromVisualSGIX_fct_##A) \ + return NULL; \ + my_XVisualInfo_t info_l = {0}; \ + convert_XVisualInfo_to_64(dpy, &info_l, info); \ + return my32_glXGetFBConfigFromVisualSGIX_fct_##A (dpy, &info_l); \ +} +SUPER() +#undef GO +static void* find_glXGetFBConfigFromVisualSGIX_Fct(void* fct) +{ + if(!fct) return fct; + #define GO(A) if(my32_glXGetFBConfigFromVisualSGIX_fct_##A == (pFpp_t)fct) return my32_glXGetFBConfigFromVisualSGIX_##A; + SUPER() + #undef GO + #define GO(A) if(my32_glXGetFBConfigFromVisualSGIX_fct_##A == 0) {my32_glXGetFBConfigFromVisualSGIX_fct_##A = (pFpp_t)fct; return my32_glXGetFBConfigFromVisualSGIX_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for libGL glXGetFBConfigFromVisualSGIX callback\n"); + return NULL; +} // glMultiDrawElements ... #define GO(A) \ static vFupupi_t my32_glMultiDrawElements_fct_##A = NULL; \ @@ -945,6 +1027,17 @@ EXPORT void* my32_glXChooseFBConfig(x64emu_t* emu, void* dpy, int screen, int* l return res; } +EXPORT void* my32_glXChooseFBConfigSGIX(x64emu_t* emu, void* dpy, int screen, int* list, int* nelement) +{ + void** res = my->glXChooseFBConfigSGIX(dpy, screen, list, nelement); + if(!res) + return NULL; + ptr_t *fbconfig = (ptr_t*)res; + for(int i=0; i<*nelement; ++i) + fbconfig[i] = to_ptrv(res[i]); + return res; +} + EXPORT void* my32_glXGetVisualFromFBConfig(x64emu_t* emu, void* dpy, void* config) { void* res = my->glXGetVisualFromFBConfig(dpy, config); @@ -954,6 +1047,15 @@ EXPORT void* my32_glXGetVisualFromFBConfig(x64emu_t* emu, void* dpy, void* confi return vinfo; } +EXPORT void* my32_glXGetVisualFromFBConfigSGIX(x64emu_t* emu, void* dpy, void* config) +{ + void* res = my->glXGetVisualFromFBConfigSGIX(dpy, config); + if(!res) return NULL; + my_XVisualInfo_32_t* vinfo = (my_XVisualInfo_32_t*)res; + convert_XVisualInfo_to_32(dpy, vinfo, res); + return vinfo; +} + EXPORT void* my32_glXChooseVisual(x64emu_t* emu, void* dpy, int screen, int* attr) { void* res = my->glXChooseVisual(dpy, screen, attr); @@ -970,6 +1072,13 @@ EXPORT void* my32_glXCreateContext(x64emu_t* emu, void* dpy, my_XVisualInfo_32_t return my->glXCreateContext(dpy, &info_l, shared, direct); } +EXPORT void* my32_glXGetFBConfigFromVisualSGIX(x64emu_t* emu, void* dpy, my_XVisualInfo_32_t* info) +{ + my_XVisualInfo_t info_l = {0}; + convert_XVisualInfo_to_64(dpy, &info_l, info); + return my->glXGetFBConfigFromVisualSGIX(dpy, &info_l); +} + EXPORT void my32_glMultiDrawElements(x64emu_t* emu, uint32_t mode, void* count, uint32_t type, ptr_t* indices, int drawcount) { void* indices_l[drawcount]; @@ -1079,9 +1188,12 @@ EXPORT void my32_glGetUniformIndices(x64emu_t* emu, uint32_t prog, int count, pt GO(vFuipp_t, glShaderSource) \ GO(vFuipp_t, glShaderSourceARB) \ GO(pFpipp_t, glXChooseFBConfig) \ + GO(pFpipp_t, glXChooseFBConfigSGIX) \ GO(pFpp_t, glXGetVisualFromFBConfig) \ + GO(pFpp_t, glXGetVisualFromFBConfigSGIX) \ GO(pFpp_t, glXChooseVisual) \ - GO(pFpp_t, glXCreateContext) \ + GO(pFpppi_t, glXCreateContext) \ + GO(pFpp_t, glXGetFBConfigFromVisualSGIX) \ GO(vFupupi_t, glMultiDrawElements) \ GO(vFuipu_t, glTransformFeedbackVaryings) \ GO(vFuuippp_t, glBindBuffersRange) \ diff --git a/src/wrapped32/wrappedlibgl_private.h b/src/wrapped32/wrappedlibgl_private.h index 855e5d7c..8604a9e4 100644 --- a/src/wrapped32/wrappedlibgl_private.h +++ b/src/wrapped32/wrappedlibgl_private.h @@ -2938,13 +2938,13 @@ GO(glXBindVideoImageNV, iFXppi) GO(glXClientInfo, vFv) GO(glXCopyContext, vFXppL) GOM(glXChooseFBConfig, pFEXipp) -//GO(glXChooseFBConfigSGIX, pFpipp) +GOM(glXChooseFBConfigSGIX, pFEXipp) GOM(glXCreateContext, pFEXppi) GO(glXCreateContextAttribsARB, pFXppip) -//GO(glXCreateContextWithConfigSGIX, pFppipi) -//GO(glXCreateGLXPbufferSGIX, pFppuup) +GO(glXCreateContextWithConfigSGIX, pFXpipi) +GO(glXCreateGLXPbufferSGIX, pFXpuup) //GOM(glXCreateGLXPixmap, LFEXbpLiiiLLLii_L) -//GO(glXCreateGLXPixmapWithConfigSGIX, pFppp) +GO(glXCreateGLXPixmapWithConfigSGIX, pFXpp) //GO(glXCreateGLXVideoSourceSGIX, pFpippip) GO(glXCreateNewContext, pFXpipi) GO(glXCreatePbuffer, LFXpp) @@ -2954,7 +2954,7 @@ GOM(glXChooseVisual, pFEXip) GO(glXCopyImageSubDataNV, vFXpuiiiiipuiiiiiiii) //GO(glXCopySubBufferMESA, vFppiiii) GO(glXDestroyContext, vFXp) -//GO(glXDestroyGLXPbufferSGIX, vFpp) +GO(glXDestroyGLXPbufferSGIX, vFXp) GO(glXDestroyGLXPixmap, vFXL) //GO(glXDestroyGLXVideoSourceSGIX, vFpp) //GO(glXDestroyHyperpipeConfigSGIX, iFpi) @@ -2975,17 +2975,17 @@ GO(glXGetCurrentReadDrawable, LFv) //GO(glXGetDrawableAttributesSGIX, vFi) GOM(glXGetFBConfigs,pFEXip) GO(glXGetFBConfigAttrib, iFXpip) -//GO(glXGetFBConfigAttribSGIX, iFppip) -//GO(glXGetFBConfigFromVisualSGIX, pFpp) +GO(glXGetFBConfigAttribSGIX, iFXpip) +GOM(glXGetFBConfigFromVisualSGIX, pFEXp) //GO(glXGetFBConfigsSGIX, pFpip) GO(glXGetSelectedEvent, vFXLbL_) GO(glXGetSelectedEventSGIX, vFXpp) GO(glXGetVideoDeviceNV, iFXiip) GO(glXGetVideoInfoNV, iFpippp) -//GO(glXGetVideoSyncSGI, iFp) +GO(glXGetVideoSyncSGI, iFp) //GO(glXGetVisualConfigs, pFpp) GOM(glXGetVisualFromFBConfig, pFEXp) -//GO(glXGetVisualFromFBConfigSGIX, pFpp) +GOM(glXGetVisualFromFBConfigSGIX, pFEXp) //GO(glXHyperpipeAttribSGIX, iFpiiip) //GO(glXHyperpipeConfigSGIX, iFpiipp) GO(glXImportContextEXT, pFXu) @@ -3001,7 +3001,7 @@ GO(glXQueryDrawable, vFXLip) GO(glXQueryExtension, iFXpp) GO(glXQueryExtensionsString, pFXi) GO(glXQueryFrameCountNV, iFXip) -//GO(glXQueryGLXPbufferSGIX, vFppip) +GO(glXQueryGLXPbufferSGIX, vFXpip) //GO(glXQueryHyperpipeAttribSGIX, iFpiiip) //GO(glXQueryHyperpipeBestAttribSGIX, iFpiiipp) //GO(glXQueryHyperpipeConfigSGIX, pFpip) @@ -3020,14 +3020,14 @@ GO(glXRender, vFv) GO(glXRenderLarge, vFv) GO(glXResetFrameCountNV, iFXi) GO(glXSelectEvent, vFXLL) -//GO(glXSelectEventSGIX, vFppu) +GO(glXSelectEventSGIX, vFXpL) GO(glXSendPbufferToVideoNV, iFXpipi) GO(glXSwapBuffers, vFXL) GO(glXUseXFont, vFLiii) GO(glXVendorPrivate, vFv) GO(glXVendorPrivateWithReply, vFv) GO(glXWaitGL, vFv) -//GO(glXWaitVideoSyncSGI, iFiip) +GO(glXWaitVideoSyncSGI, iFiip) GO(glXWaitX, vFv) GOM(glXGetProcAddress, pFEp) |