about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-05-10 17:28:46 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-05-10 17:28:46 +0200
commit2aeddc882925898a53d377942c7457dd0daa077c (patch)
treeeca07f9dd36db7712bca818fab96f1aa20e6a3c6 /src
parentdf4dcf88da8cf83cbfc6f0c34800f8f4a8a2a706 (diff)
downloadbox64-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.txt4
-rw-r--r--src/wrapped32/generated/wrappedlibgltypes32.h3
-rw-r--r--src/wrapped32/generated/wrapper32.c2
-rw-r--r--src/wrapped32/generated/wrapper32.h1
-rw-r--r--src/wrapped32/wrappedlibgl.c114
-rw-r--r--src/wrapped32/wrappedlibgl_private.h24
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)