From 44f9f24ace042f1d980321892a56aeddceeb4f9b Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 3 Jun 2024 10:15:30 +0100 Subject: [PATCH] Add correct support for GL_EXT_clip_control on GLES. Closes #3336 --- renderdoc/driver/gl/gl_common.h | 1 + renderdoc/driver/gl/gl_dispatch_table.h | 2 +- renderdoc/driver/gl/gl_dispatch_table_defs.h | 4 ++-- renderdoc/driver/gl/gl_driver.cpp | 3 ++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/gl/gl_common.h b/renderdoc/driver/gl/gl_common.h index dafcf77ed..c5569b186 100644 --- a/renderdoc/driver/gl/gl_common.h +++ b/renderdoc/driver/gl/gl_common.h @@ -2238,6 +2238,7 @@ enum class GLChunk : uint32_t glMapBufferRangeEXT, glFlushMappedBufferRangeEXT, + glClipControlEXT, Max, }; diff --git a/renderdoc/driver/gl/gl_dispatch_table.h b/renderdoc/driver/gl/gl_dispatch_table.h index 6046145dc..19bd529c8 100644 --- a/renderdoc/driver/gl/gl_dispatch_table.h +++ b/renderdoc/driver/gl/gl_dispatch_table.h @@ -250,7 +250,7 @@ struct GLDispatchTable PFNGLDEPTHRANGEFPROC glDepthRangef; PFNGLDEPTHRANGEINDEXEDPROC glDepthRangeIndexed; PFNGLDEPTHRANGEARRAYVPROC glDepthRangeArrayv; - PFNGLCLIPCONTROLPROC glClipControl; + PFNGLCLIPCONTROLPROC glClipControl; // aliases glClipControlEXT PFNGLPROVOKINGVERTEXPROC glProvokingVertex; // aliases glProvokingVertexEXT PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex; PFNGLCREATESHADERPROC glCreateShader; diff --git a/renderdoc/driver/gl/gl_dispatch_table_defs.h b/renderdoc/driver/gl/gl_dispatch_table_defs.h index 9e5fedd1c..c245fd7d8 100644 --- a/renderdoc/driver/gl/gl_dispatch_table_defs.h +++ b/renderdoc/driver/gl/gl_dispatch_table_defs.h @@ -343,6 +343,7 @@ FUNC(glDepthRangeIndexed, glDepthRangeIndexed); \ FUNC(glDepthRangeArrayv, glDepthRangeArrayv); \ FUNC(glClipControl, glClipControl); \ + FUNC(glClipControl, glClipControlEXT); \ FUNC(glProvokingVertex, glProvokingVertex); \ FUNC(glProvokingVertex, glProvokingVertexEXT); \ FUNC(glPrimitiveRestartIndex, glPrimitiveRestartIndex); \ @@ -1606,6 +1607,7 @@ FuncWrapper3(void, glDepthRangeIndexed, GLuint, index, GLdouble, n, GLdouble, f); \ FuncWrapper3(void, glDepthRangeArrayv, GLuint, first, GLsizei, count, const GLdouble *, v); \ FuncWrapper2(void, glClipControl, GLenum, origin, GLenum, depth); \ + AliasWrapper2(void, glClipControlEXT, glClipControl, GLenum, origin, GLenum, depth); \ FuncWrapper1(void, glProvokingVertex, GLenum, mode); \ AliasWrapper1(void, glProvokingVertexEXT, glProvokingVertex, GLenum, mode); \ FuncWrapper1(void, glPrimitiveRestartIndex, GLuint, index); \ @@ -2660,7 +2662,6 @@ FUNC(glClientActiveVertexStreamATI); \ FUNC(glClientAttribDefaultEXT); \ FUNC(glClientWaitSyncAPPLE); \ - FUNC(glClipControlEXT); \ FUNC(glClipPlanefOES); \ FUNC(glClipPlane); \ FUNC(glClipPlanexOES); \ @@ -4570,7 +4571,6 @@ UnsupportedWrapper1(void, glClientActiveVertexStreamATI, GLenum, stream); \ UnsupportedWrapper1(void, glClientAttribDefaultEXT, GLbitfield, mask); \ UnsupportedWrapper3(GLenum, glClientWaitSyncAPPLE, GLsync, sync, GLbitfield, flags, GLuint64, timeout); \ - UnsupportedWrapper2(void, glClipControlEXT, GLenum, origin, GLenum, depth); \ UnsupportedWrapper2(void, glClipPlanefOES, GLenum, plane, const GLfloat *, equation); \ UnsupportedWrapper2(void, glClipPlane, GLenum, plane, const GLdouble *, equation); \ UnsupportedWrapper2(void, glClipPlanexOES, GLenum, plane, const GLfixed *, equation); \ diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index 8ae3e97cd..ab4486d61 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -4264,7 +4264,8 @@ bool WrappedOpenGL::ProcessChunk(ReadSerialiser &ser, GLChunk chunk) case GLChunk::glDepthRangeArrayfvOES: case GLChunk::glDepthRangeArrayv: return Serialise_glDepthRangeArrayv(ser, 0, 0, 0); case GLChunk::glDepthBoundsEXT: return Serialise_glDepthBoundsEXT(ser, 0, 0); - case GLChunk::glClipControl: return Serialise_glClipControl(ser, eGL_NONE, eGL_NONE); + case GLChunk::glClipControl: + case GLChunk::glClipControlEXT: return Serialise_glClipControl(ser, eGL_NONE, eGL_NONE); case GLChunk::glProvokingVertexEXT: case GLChunk::glProvokingVertex: return Serialise_glProvokingVertex(ser, eGL_NONE); case GLChunk::glPrimitiveRestartIndex: return Serialise_glPrimitiveRestartIndex(ser, 0);