about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-06-01 13:56:14 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-06-01 13:56:14 +0200
commit3d4d678bdc89b29005861e92ea18da8ded6f0e52 (patch)
treef30e1f6c7a3947acda365d1513deeda0100380c0 /src
parentb78d92d2884139bd47e067c81be1652cda305f07 (diff)
downloadbox64-3d4d678bdc89b29005861e92ea18da8ded6f0e52.tar.gz
box64-3d4d678bdc89b29005861e92ea18da8ded6f0e52.zip
Some small wrapped libGL improvements
Diffstat (limited to 'src')
-rwxr-xr-xsrc/emu/x64int3.c3
-rw-r--r--src/wrapped/generated/functions_list.txt1
-rw-r--r--src/wrapped/generated/wrapper.c3
-rw-r--r--src/wrapped/generated/wrapper.h1
-rwxr-xr-xsrc/wrapped/wrappedlibgl_private.h4
5 files changed, 12 insertions, 0 deletions
diff --git a/src/emu/x64int3.c b/src/emu/x64int3.c
index a88b45ae..a6f2c3d1 100755
--- a/src/emu/x64int3.c
+++ b/src/emu/x64int3.c
@@ -150,6 +150,9 @@ void x64Int3(x64emu_t* emu)
                 } else  if(!strcmp(s, "glXGetProcAddress") || !strcmp(s, "SDL_GL_GetProcAddress") || !strcmp(s, "glXGetProcAddressARB")) {
                     tmp = (char*)(R_RDI);
                     snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\")", tid, *(void**)(R_RSP), s, (tmp)?tmp:"(nil)");
+                } else  if(!strcmp(s, "glLabelObjectEXT")) {
+                    tmp = (char*)(R_RCX);
+                    snprintf(buff, 255, "%04d|%p: Calling %s(0x%x, %d, %d, \"%s\")", tid, *(void**)(R_RSP), s, R_EDI, R_ESI, R_ECX, (tmp)?tmp:"(nil)");
                 } else  if(!strcmp(s, "glGetStringi")) {
                     snprintf(buff, 255, "%04d|%p: Calling %s(0x%x, %d)", tid, *(void**)(R_RSP), s, R_EDI, R_ESI);
                     post = 2;
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 389915d8..96dfcfd4 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -577,6 +577,7 @@
 #() pFuiii
 #() pFulli
 #() pFdddd
+#() pFlfff
 #() pFpiii
 #() pFpiip
 #() pFpiuu
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 7c4a624f..f0e4c754 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -611,6 +611,7 @@ typedef void* (*pFippL_t)(int64_t, void*, void*, uintptr_t);
 typedef void* (*pFuiii_t)(uint64_t, int64_t, int64_t, int64_t);
 typedef void* (*pFulli_t)(uint64_t, intptr_t, intptr_t, int64_t);
 typedef void* (*pFdddd_t)(double, double, double, double);
+typedef void* (*pFlfff_t)(intptr_t, float, float, float);
 typedef void* (*pFpiii_t)(void*, int64_t, int64_t, int64_t);
 typedef void* (*pFpiip_t)(void*, int64_t, int64_t, void*);
 typedef void* (*pFpiuu_t)(void*, int64_t, uint64_t, uint64_t);
@@ -1848,6 +1849,7 @@ void pFippL(x64emu_t *emu, uintptr_t fcn) { pFippL_t fn = (pFippL_t)fcn; R_RAX=(
 void pFuiii(x64emu_t *emu, uintptr_t fcn) { pFuiii_t fn = (pFuiii_t)fcn; R_RAX=(uintptr_t)fn((uint64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX); }
 void pFulli(x64emu_t *emu, uintptr_t fcn) { pFulli_t fn = (pFulli_t)fcn; R_RAX=(uintptr_t)fn((uint64_t)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX, (int64_t)R_RCX); }
 void pFdddd(x64emu_t *emu, uintptr_t fcn) { pFdddd_t fn = (pFdddd_t)fcn; R_RAX=(uintptr_t)fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); }
+void pFlfff(x64emu_t *emu, uintptr_t fcn) { pFlfff_t fn = (pFlfff_t)fcn; R_RAX=(uintptr_t)fn((intptr_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
 void pFpiii(x64emu_t *emu, uintptr_t fcn) { pFpiii_t fn = (pFpiii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX); }
 void pFpiip(x64emu_t *emu, uintptr_t fcn) { pFpiip_t fn = (pFpiip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX); }
 void pFpiuu(x64emu_t *emu, uintptr_t fcn) { pFpiuu_t fn = (pFpiuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX); }
@@ -3007,6 +3009,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFuiii) return 1;
 	if (fun == &pFulli) return 1;
 	if (fun == &pFdddd) return 1;
+	if (fun == &pFlfff) return 1;
 	if (fun == &pFpiii) return 1;
 	if (fun == &pFpiip) return 1;
 	if (fun == &pFpiuu) return 1;
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 2b3ccaa6..e3bb9c06 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -607,6 +607,7 @@ void pFippL(x64emu_t *emu, uintptr_t fnc);
 void pFuiii(x64emu_t *emu, uintptr_t fnc);
 void pFulli(x64emu_t *emu, uintptr_t fnc);
 void pFdddd(x64emu_t *emu, uintptr_t fnc);
+void pFlfff(x64emu_t *emu, uintptr_t fnc);
 void pFpiii(x64emu_t *emu, uintptr_t fnc);
 void pFpiip(x64emu_t *emu, uintptr_t fnc);
 void pFpiuu(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedlibgl_private.h b/src/wrapped/wrappedlibgl_private.h
index b499e70f..cbf2c412 100755
--- a/src/wrapped/wrappedlibgl_private.h
+++ b/src/wrapped/wrappedlibgl_private.h
@@ -3019,6 +3019,10 @@ GO(glXGetSwapIntervalMESA, iFv)
 //GLX_SGI_swap_control
 GO(glXSwapIntervalSGI,iFi)
 
+//GLX_NV_vertex_array_range
+GO(glXAllocateMemoryNV, pFlfff)
+GO(glXFreeMemoryNV, vFp)
+
 //GLX_ARB_????
 GO(glSpecializeShaderARB, vFippp)