From d4cbf07b6ec5eb477a0489a9bfe131dd68b74235 Mon Sep 17 00:00:00 2001 From: baldurk Date: Sat, 31 May 2014 14:34:48 +0100 Subject: [PATCH] Add a lot of glGet functions --- renderdoc/driver/gl/gl_driver.cpp | 40 +++++++++++++++++++++++++++ renderdoc/driver/gl/gl_driver.h | 12 ++++++-- renderdoc/driver/gl/gl_hookset.h | 10 ++++++- renderdoc/driver/gl/gl_hookset_defs.h | 24 ++++++++++++++-- 4 files changed, 80 insertions(+), 6 deletions(-) diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index 89cf76e17..599e73eef 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -1437,6 +1437,16 @@ void WrappedOpenGL::glGetIntegerv(GLenum pname, GLint *params) m_Real.glGetIntegerv(pname, params); } +void WrappedOpenGL::glGetBooleanv(GLenum pname, GLboolean *data) +{ + m_Real.glGetBooleanv(pname, data); +} + +void WrappedOpenGL::glGetBooleani_v(GLenum pname, GLuint index, GLboolean *data) +{ + m_Real.glGetBooleani_v(pname, index, data); +} + void WrappedOpenGL::glGetIntegeri_v(GLenum pname, GLuint index, GLint *data) { m_Real.glGetIntegeri_v(pname, index, data); @@ -1472,6 +1482,11 @@ void WrappedOpenGL::glGetTexParameteriv(GLenum target, GLenum pname, GLint *para m_Real.glGetTexParameteriv(target, pname, params); } +void WrappedOpenGL::glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels) +{ + m_Real.glGetTexImage(target, level, format, type, pixels); +} + void WrappedOpenGL::glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params) { m_Real.glGetInternalformativ(target, internalformat, pname, bufSize, params); @@ -1563,11 +1578,36 @@ GLint WrappedOpenGL::glGetUniformLocation(GLuint program, const GLchar *name) return m_Real.glGetUniformLocation(program, name); } +void WrappedOpenGL::glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices) +{ + m_Real.glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices); +} + +GLuint WrappedOpenGL::glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName) +{ + return m_Real.glGetUniformBlockIndex(program, uniformBlockName); +} + +GLint WrappedOpenGL::glGetAttribLocation(GLuint program, const GLchar *name) +{ + return m_Real.glGetAttribLocation(program, name); +} + void WrappedOpenGL::glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) { m_Real.glGetActiveUniform(program, index, bufSize, length, size, type, name); } +void WrappedOpenGL::glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params) +{ + m_Real.glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params); +} + +void WrappedOpenGL::glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) +{ + m_Real.glGetActiveAttrib(program, index, bufSize, length, size, type, name); +} + void WrappedOpenGL::glGetUniformfv(GLuint program, GLint location, GLfloat *params) { m_Real.glGetUniformfv(program, location, params); diff --git a/renderdoc/driver/gl/gl_driver.h b/renderdoc/driver/gl/gl_driver.h index 0f497d840..7aad08e04 100644 --- a/renderdoc/driver/gl/gl_driver.h +++ b/renderdoc/driver/gl/gl_driver.h @@ -284,8 +284,10 @@ class WrappedOpenGL IMPLEMENT_FUNCTION_SERIALISED(GLenum, glGetError()); IMPLEMENT_FUNCTION_SERIALISED(void, glGetFloatv(GLenum pname, GLfloat *params)); IMPLEMENT_FUNCTION_SERIALISED(void, glGetIntegerv(GLenum pname, GLint *params)); - IMPLEMENT_FUNCTION_SERIALISED(void, glGetIntegeri_v(GLenum target, GLuint index, GLint *data)); - IMPLEMENT_FUNCTION_SERIALISED(void, glGetFloati_v(GLenum target, GLuint index, GLfloat *data)); + IMPLEMENT_FUNCTION_SERIALISED(void, glGetBooleanv(GLenum pname, GLboolean *data)); + IMPLEMENT_FUNCTION_SERIALISED(void, glGetIntegeri_v(GLenum pname, GLuint index, GLint *data)); + IMPLEMENT_FUNCTION_SERIALISED(void, glGetFloati_v(GLenum pname, GLuint index, GLfloat *data)); + IMPLEMENT_FUNCTION_SERIALISED(void, glGetBooleani_v(GLenum pname, GLuint index, GLboolean *data)); IMPLEMENT_FUNCTION_SERIALISED(void, glGetInteger64i_v(GLenum target, GLuint index, GLint64 *data)); IMPLEMENT_FUNCTION_SERIALISED(const GLubyte *, glGetStringi(GLenum name, GLuint i)); IMPLEMENT_FUNCTION_SERIALISED(const GLubyte *, glGetString(GLenum name)); @@ -329,6 +331,7 @@ class WrappedOpenGL IMPLEMENT_FUNCTION_SERIALISED(void, glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)); IMPLEMENT_FUNCTION_SERIALISED(void, glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)); IMPLEMENT_FUNCTION_SERIALISED(void, glGetTexParameteriv(GLenum target, GLenum pname, GLint *params)); + IMPLEMENT_FUNCTION_SERIALISED(void, glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels)); IMPLEMENT_FUNCTION_SERIALISED(void, glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params)); IMPLEMENT_FUNCTION_SERIALISED(void, glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params)); IMPLEMENT_FUNCTION_SERIALISED(void, glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params)); @@ -372,7 +375,12 @@ class WrappedOpenGL IMPLEMENT_FUNCTION_SERIALISED(void, glGenVertexArrays(GLsizei n, GLuint *arrays)); IMPLEMENT_FUNCTION_SERIALISED(void, glBindVertexArray(GLuint array)); IMPLEMENT_FUNCTION_SERIALISED(GLint, glGetUniformLocation(GLuint program, const GLchar *name)); + IMPLEMENT_FUNCTION_SERIALISED(void, glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices)); + IMPLEMENT_FUNCTION_SERIALISED(GLuint, glGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName)); + IMPLEMENT_FUNCTION_SERIALISED(void, glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)); IMPLEMENT_FUNCTION_SERIALISED(void, glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)); + IMPLEMENT_FUNCTION_SERIALISED(void, glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)); + IMPLEMENT_FUNCTION_SERIALISED(GLint, glGetAttribLocation(GLuint program, const GLchar *name)); IMPLEMENT_FUNCTION_SERIALISED(void, glGetUniformfv(GLuint program, GLint location, GLfloat *params)); IMPLEMENT_FUNCTION_SERIALISED(void, glGetUniformiv(GLuint program, GLint location, GLint *params)); diff --git a/renderdoc/driver/gl/gl_hookset.h b/renderdoc/driver/gl/gl_hookset.h index 1ff03f877..a228f185a 100644 --- a/renderdoc/driver/gl/gl_hookset.h +++ b/renderdoc/driver/gl/gl_hookset.h @@ -47,11 +47,13 @@ struct GLHookSet PFNGLGENTEXTURESPROC glGenTextures; PFNGLDELETETEXTURESPROC glDeleteTextures; PFNGLGETERRORPROC glGetError; - PFNGLGETFLOATVPROC glGetFloatv; PFNGLGETTEXLEVELPARAMETERIVPROC glGetTexLevelParameteriv; PFNGLGETTEXLEVELPARAMETERFVPROC glGetTexLevelParameterfv; PFNGLGETTEXPARAMETERFVPROC glGetTexParameterfv; PFNGLGETTEXPARAMETERIVPROC glGetTexParameteriv; + PFNGLGETTEXIMAGEPROC glGetTexImage; + PFNGLGETBOOLEANVPROC glGetBooleanv; + PFNGLGETFLOATVPROC glGetFloatv; PFNGLGETINTEGERVPROC glGetIntegerv; PFNGLGETSTRINGPROC glGetString; PFNGLHINTPROC glHint; @@ -94,6 +96,7 @@ struct GLHookSet PFNGLGETINTERNALFORMATI64VPROC glGetInternalformati64v; PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv; PFNGLGETSTRINGIPROC glGetStringi; + PFNGLGETBOOLEANI_VPROC glGetBooleani_v; PFNGLGETINTEGERI_VPROC glGetIntegeri_v; PFNGLGETFLOATI_VPROC glGetFloati_v; PFNGLGETINTEGER64I_VPROC glGetInteger64i_v; @@ -154,7 +157,12 @@ struct GLHookSet PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv; PFNGLVIEWPORTARRAYVPROC glViewportArrayv; PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation; + PFNGLGETUNIFORMINDICESPROC glGetUniformIndices; + PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex; + PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation; PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform; + PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv; + PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib; PFNGLGETUNIFORMFVPROC glGetUniformfv; PFNGLGETUNIFORMIVPROC glGetUniformiv; PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv; diff --git a/renderdoc/driver/gl/gl_hookset_defs.h b/renderdoc/driver/gl/gl_hookset_defs.h index cf5e70fe9..d84f5970e 100644 --- a/renderdoc/driver/gl/gl_hookset_defs.h +++ b/renderdoc/driver/gl/gl_hookset_defs.h @@ -47,11 +47,13 @@ HookInit(glGenTextures); \ HookInit(glDeleteTextures); \ HookInit(glGetError); \ - HookInit(glGetFloatv); \ HookInit(glGetTexLevelParameteriv); \ HookInit(glGetTexLevelParameterfv); \ HookInit(glGetTexParameterfv); \ HookInit(glGetTexParameteriv); \ + HookInit(glGetTexImage); \ + HookInit(glGetBooleanv); \ + HookInit(glGetFloatv); \ HookInit(glGetIntegerv); \ HookInit(glGetString); \ HookInit(glHint); \ @@ -105,6 +107,7 @@ HookExtension(PFNGLGETINTERNALFORMATI64VPROC, glGetInternalformati64v); \ HookExtension(PFNGLGETBUFFERPARAMETERIVPROC, glGetBufferParameteriv); \ HookExtension(PFNGLGETSTRINGIPROC, glGetStringi); \ + HookExtension(PFNGLGETBOOLEANI_VPROC, glGetBooleani_v); \ HookExtension(PFNGLGETINTEGERI_VPROC, glGetIntegeri_v); \ HookExtension(PFNGLGETFLOATI_VPROC, glGetFloati_v); \ HookExtension(PFNGLGETINTEGER64I_VPROC, glGetInteger64i_v); \ @@ -166,7 +169,12 @@ HookExtension(PFNGLVIEWPORTINDEXEDFVPROC, glViewportIndexedfv); \ HookExtension(PFNGLVIEWPORTARRAYVPROC, glViewportArrayv); \ HookExtension(PFNGLGETUNIFORMLOCATIONPROC, glGetUniformLocation); \ + HookExtension(PFNGLGETUNIFORMINDICESPROC, glGetUniformIndices); \ + HookExtension(PFNGLGETUNIFORMBLOCKINDEXPROC, glGetUniformBlockIndex); \ + HookExtension(PFNGLGETATTRIBLOCATIONPROC, glGetAttribLocation); \ HookExtension(PFNGLGETACTIVEUNIFORMPROC, glGetActiveUniform); \ + HookExtension(PFNGLGETACTIVEUNIFORMSIVPROC, glGetActiveUniformsiv); \ + HookExtension(PFNGLGETACTIVEATTRIBPROC, glGetActiveAttrib); \ HookExtension(PFNGLGETUNIFORMFVPROC, glGetUniformfv); \ HookExtension(PFNGLGETUNIFORMIVPROC, glGetUniformiv); \ HookExtension(PFNGLUNIFORMMATRIX4FVPROC, glUniformMatrix4fv); \ @@ -190,11 +198,13 @@ HookExtension(PFNGLGENTEXTURESPROC, glGenTextures); \ HookExtension(PFNGLDELETETEXTURESPROC, glDeleteTextures); \ HookExtension(PFNGLGETERRORPROC, glGetError); \ - HookExtension(PFNGLGETFLOATVPROC, glGetFloatv); \ HookExtension(PFNGLGETTEXLEVELPARAMETERIVPROC, glGetTexLevelParameteriv); \ HookExtension(PFNGLGETTEXLEVELPARAMETERFVPROC, glGetTexLevelParameterfv); \ HookExtension(PFNGLGETTEXPARAMETERFVPROC, glGetTexParameterfv); \ HookExtension(PFNGLGETTEXPARAMETERIVPROC, glGetTexParameteriv); \ + HookExtension(PFNGLGETTEXIMAGEPROC, glGetTexImage); \ + HookExtension(PFNGLGETBOOLEANVPROC, glGetBooleanv); \ + HookExtension(PFNGLGETFLOATVPROC, glGetFloatv); \ HookExtension(PFNGLGETINTEGERVPROC, glGetIntegerv); \ HookExtension(PFNGLGETSTRINGPROC, glGetString); \ HookExtension(PFNGLHINTPROC, glHint); \ @@ -246,11 +256,13 @@ HookWrapper2(void, glGenTextures, GLsizei, n, GLuint *, textures); \ HookWrapper2(void, glDeleteTextures, GLsizei, n, const GLuint *, textures); \ HookWrapper0(GLenum, glGetError); \ - HookWrapper2(void, glGetFloatv, GLenum, pname, GLfloat *, data); \ HookWrapper4(void, glGetTexLevelParameteriv, GLenum, target, GLint, level, GLenum, pname, GLint *, params); \ HookWrapper4(void, glGetTexLevelParameterfv, GLenum, target, GLint, level, GLenum, pname, GLfloat *, params); \ HookWrapper3(void, glGetTexParameterfv, GLenum, target, GLenum, pname, GLfloat *, params); \ HookWrapper3(void, glGetTexParameteriv, GLenum, target, GLenum, pname, GLint *, params); \ + HookWrapper5(void, glGetTexImage, GLenum, target, GLint, level, GLenum, format, GLenum, type, void *, pixels); \ + HookWrapper2(void, glGetBooleanv, GLenum, pname, GLboolean *, data); \ + HookWrapper2(void, glGetFloatv, GLenum, pname, GLfloat *, data); \ HookWrapper2(void, glGetIntegerv, GLenum, pname, GLint *, data); \ HookWrapper1(const GLubyte *, glGetString, GLenum, name); \ HookWrapper2(void, glHint, GLenum, target, GLenum, mode); \ @@ -304,6 +316,7 @@ HookWrapper5(void, glGetInternalformati64v, GLenum, target, GLenum, internalformat, GLenum, pname, GLsizei, bufSize, GLint64 *, params); \ HookWrapper3(void, glGetBufferParameteriv, GLenum, target, GLenum, pname, GLint *, params); \ HookWrapper2(const GLubyte *, glGetStringi, GLenum, name, GLuint, index); \ + HookWrapper3(void, glGetBooleani_v, GLenum, target, GLuint, index, GLboolean *, data); \ HookWrapper3(void, glGetIntegeri_v, GLenum, target, GLuint, index, GLint *, data); \ HookWrapper3(void, glGetFloati_v, GLenum, target, GLuint, index, GLfloat *, data); \ HookWrapper3(void, glGetInteger64i_v, GLenum, target, GLuint, index, GLint64 *, data); \ @@ -364,7 +377,12 @@ HookWrapper2(void, glViewportIndexedfv, GLuint, index, const GLfloat *, v); \ HookWrapper3(void, glViewportArrayv, GLuint, first, GLsizei, count, const GLfloat *, v); \ HookWrapper2(GLint, glGetUniformLocation, GLuint, program, const GLchar *, name); \ + HookWrapper4(void, glGetUniformIndices, GLuint, program, GLsizei, uniformCount, const GLchar *const*, uniformNames, GLuint *, uniformIndices); \ + HookWrapper2(GLuint, glGetUniformBlockIndex, GLuint, program, const GLchar *, uniformBlockName); \ + HookWrapper2(GLint, glGetAttribLocation, GLuint, program, const GLchar *, name); \ HookWrapper7(void, glGetActiveUniform, GLuint, program, GLuint, index, GLsizei, bufSize, GLsizei *, length, GLint *, size, GLenum *, type, GLchar *, name); \ + HookWrapper5(void, glGetActiveUniformsiv, GLuint, program, GLsizei, uniformCount, const GLuint *, uniformIndices, GLenum, pname, GLint *, params); \ + HookWrapper7(void, glGetActiveAttrib, GLuint, program, GLuint, index, GLsizei, bufSize, GLsizei *, length, GLint *, size, GLenum *, type, GLchar *, name); \ HookWrapper3(void, glGetUniformfv, GLuint, program, GLint, location, GLfloat *, params); \ HookWrapper3(void, glGetUniformiv, GLuint, program, GLint, location, GLint *, params); \ HookWrapper4(void, glUniformMatrix4fv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \