From b09d00b448e82a68b7c8d3cbd6d24fb5ef79513a Mon Sep 17 00:00:00 2001 From: Hanlu Li Date: Fri, 14 Aug 2026 20:27:17 +0800 Subject: [PATCH] LATX, fix: Cover Linux EGL and GL proc-address gaps Bridge eglQueryDeviceBinaryEXT in both the direct EGL table and the shared GL proc-address table. Add the OpenGL and OpenGL ES entry points exposed by the Linux Mesa stack, plus platform-neutral EXT mesh and framebuffer-layer entry points missing from Box64. Existing ARB/EXT alias fallback continues to cover unsuffixed core names. Signed-off-by: Hanlu Li --- .../i386/latx/include/wrappedlibegl_private.h | 1 + .../i386/latx/include/wrappedlibgl_private.h | 104 ++++++++++++++++++ 2 files changed, 105 insertions(+) diff --git a/target/i386/latx/include/wrappedlibegl_private.h b/target/i386/latx/include/wrappedlibegl_private.h index 6dff84f53c6..fc32bada583 100644 --- a/target/i386/latx/include/wrappedlibegl_private.h +++ b/target/i386/latx/include/wrappedlibegl_private.h @@ -37,6 +37,7 @@ GO(eglLockSurfaceKHR, iFppp) GO(eglMakeCurrent, iFpppp) GO(eglQueryAPI, iFv) GO(eglQueryContext, iFppip) +GO(eglQueryDeviceBinaryEXT, iFpiipp) GO(eglQueryDevicesEXT, iFipp) GO(eglQueryDeviceStringEXT, pFpi) GO(eglQueryString, pFpi) diff --git a/target/i386/latx/include/wrappedlibgl_private.h b/target/i386/latx/include/wrappedlibgl_private.h index aa1932e502b..43770ffdcaa 100644 --- a/target/i386/latx/include/wrappedlibgl_private.h +++ b/target/i386/latx/include/wrappedlibgl_private.h @@ -3477,6 +3477,7 @@ GO(eglWaitGL, iFv) GO(eglWaitNative, iFi) GO(eglWaitSync, iFppi) GO(eglWaitSyncKHR, iFppi) +GO(eglQueryDeviceBinaryEXT, iFpiipp) GO(eglQueryDevicesEXT, iFipp) GO(eglQueryDeviceStringEXT, pFpi) GO(eglQueryDisplayAttribEXT, uFpip) @@ -4096,4 +4097,107 @@ GO(wglGetSwapIntervalEXT, iFv) // GL_MESA_framebuffer_flip_y GO(glFramebufferParameteriMESA, vFiii) GO(glGetFramebufferParameterivMESA, vFiip) + +// Linux OpenGL and OpenGL ES proc-address entry points. +GO(glActiveShaderProgramEXT, vFuu) +GO(glBeginQueryEXT, vFuu) +GO(glBindProgramPipelineEXT, vFu) +GO(glBindVertexArrayOES, vFu) +GO(glBlendEquationSeparateiOES, vFuuu) +GO(glBlendEquationiOES, vFuu) +GO(glBlendFuncSeparateiOES, vFuuuuu) +GO(glBlendFunciOES, vFuuu) +GO(glBlitFramebufferLayerEXT, vFuuiiiiiiiiui) +GO(glBlitFramebufferLayersEXT, vFiiiiiiiiiu) +GO(glClipControlEXT, vFuu) +GO(glColorMaskiOES, vFuiiii) +GO(glCompressedTexImage3DOES, vFuiuiiiiip) +GO(glCompressedTexSubImage3DOES, vFuiiiiiiiuip) +GO(glCopyImageSubDataOES, vFuuiiiiuuiiiiiii) +GO(glCopyTexSubImage3DOES, vFuiiiiiiii) +GO(glCreateSemaphoresNV, vFip) +GO(glCreateShaderProgramvEXT, uFuip) +GO(glDeleteProgramPipelinesEXT, vFip) +GO(glDeleteQueriesEXT, vFip) +GO(glDeleteVertexArraysOES, vFip) +GO(glDepthRangeArraydvNV, vFuip) +GO(glDepthRangeArrayfvOES, vFuip) +GO(glDepthRangeIndexeddNV, vFudd) +GO(glDepthRangeIndexedfOES, vFuff) +GO(glDisableiOES, vFuu) +GO(glDrawMeshTasksEXT, vFuuu) +GO(glDrawMeshTasksIndirectEXT, vFl) +GO(glEnableiOES, vFuu) +GO(glEndQueryEXT, vFu) +GO(glFramebufferTexture3DOES, vFuuuuii) +GO(glFramebufferTextureOES, vFuuui) +GO(glGenProgramPipelinesEXT, vFip) +GO(glGenQueriesEXT, vFip) +GO(glGenVertexArraysOES, vFip) +GO(glGetBufferPointervOES, vFuup) +GO(glGetFloati_vOES, vFuup) +GO(glGetGraphicsResetStatusEXT, uFv) +GO(glGetInteger64vEXT, vFup) +GO(glGetProgramBinaryOES, vFuippp) +GO(glGetProgramPipelineInfoLogEXT, vFuipp) +GO(glGetProgramPipelineivEXT, vFuup) +GO(glGetQueryObjectivEXT, vFuup) +GO(glGetQueryObjectuivEXT, vFuup) +GO(glGetQueryivEXT, vFuup) +GO(glGetSamplerParameterIivEXT, vFuup) +GO(glGetSamplerParameterIivOES, vFuup) +GO(glGetSamplerParameterIuivEXT, vFuup) +GO(glGetSamplerParameterIuivOES, vFuup) +GO(glGetSemaphoreParameterivNV, vFuup) +GO(glGetTexParameterIivOES, vFuup) +GO(glGetTexParameterIuivOES, vFuup) +GO(glGetnUniformfv, vFuiip) +GO(glGetnUniformfvEXT, vFuiip) +GO(glGetnUniformiv, vFuiip) +GO(glGetnUniformivEXT, vFuiip) +GO(glGetnUniformuiv, vFuiip) +GO(glIsEnablediOES, iFuu) +GO(glIsProgramPipelineEXT, iFu) +GO(glIsQueryEXT, iFu) +GO(glIsVertexArrayOES, iFu) +GO(glMapBufferOES, pFuu) +GO(glMinSampleShadingOES, vFf) +GO(glMultiDrawMeshTasksIndirectCountEXT, vFppii) +GO(glMultiDrawMeshTasksIndirectEXT, vFpii) +GO(glPatchParameteriEXT, vFui) +GO(glPatchParameteriOES, vFui) +GO(glPrimitiveBoundingBox, vFffffffff) +GO(glPrimitiveBoundingBoxEXT, vFffffffff) +GO(glPrimitiveBoundingBoxOES, vFffffffff) +GO(glProgramBinaryOES, vFuupi) +GO(glQueryCounterEXT, vFuu) +GO(glReadBufferNV, vFu) +GO(glReadnPixels, vFiiiiuuip) +GO(glReadnPixelsEXT, vFiiiiuuip) +GO(glSamplerParameterIivEXT, vFuup) +GO(glSamplerParameterIivOES, vFuup) +GO(glSamplerParameterIuivEXT, vFuup) +GO(glSamplerParameterIuivOES, vFuup) +GO(glScissorArrayvOES, vFuip) +GO(glScissorIndexedOES, vFuiiii) +GO(glScissorIndexedvOES, vFup) +GO(glSemaphoreParameterivNV, vFuup) +GO(glTexBufferOES, vFuuu) +GO(glTexBufferRangeEXT, vFuuull) +GO(glTexBufferRangeOES, vFuuull) +GO(glTexImage3DOES, vFuiuiiiiuup) +GO(glTexParameterIivOES, vFuup) +GO(glTexParameterIuivOES, vFuup) +GO(glTexStorage3DMultisampleOES, vFuiuiiii) +GO(glTexStorageAttribs2DEXT, vFuiuiip) +GO(glTexStorageAttribs3DEXT, vFuiuiiip) +GO(glTexSubImage3DOES, vFuiiiiiiiuup) +GO(glTextureViewOES, vFuuuuuuuu) +GO(glUnmapBufferOES, iFu) +GO(glUseProgramStagesEXT, vFuuu) +GO(glValidateProgramPipelineEXT, vFu) +GO(glViewportArrayvOES, vFuip) +GO(glViewportIndexedfOES, vFuffff) +GO(glViewportIndexedfvOES, vFup) + #endif