mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-12 21:10:42 +00:00
Implement GREMEDY string marker and frame terminator extensions
* We don't try and detect duplicate markers between GREMEDY and KHR_debug, just assume the program is smart enough to detect that both are available and pick only one to use.
This commit is contained in:
@@ -460,6 +460,8 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_EXT_texture_mirror_clamp");
|
||||
globalExts.push_back("GL_EXT_texture_sRGB_decode");
|
||||
globalExts.push_back("GL_EXT_timer_query");
|
||||
globalExts.push_back("GL_GREMEDY_string_marker");
|
||||
globalExts.push_back("GL_GREMEDY_frame_terminator");
|
||||
globalExts.push_back("GL_KHR_debug");
|
||||
|
||||
// we'll be sorting the implementation extension array, so make sure the
|
||||
|
||||
@@ -493,6 +493,9 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glPopDebugGroup());
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glFrameTerminatorGREMEDY());
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glStringMarkerGREMEDY(GLsizei len, const void *string));
|
||||
|
||||
bool Serialise_glFenceSync(GLsync real, GLenum condition, GLbitfield flags);
|
||||
GLsync glFenceSync(GLenum condition, GLbitfield flags);
|
||||
|
||||
@@ -734,5 +734,7 @@ struct GLHookSet
|
||||
PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glVertexArrayVertexBindingDivisorEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC glVertexArrayVertexAttribLOffsetEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC glVertexArrayVertexAttribDivisorEXT;
|
||||
PFNGLFRAMETERMINATORGREMEDYPROC glFrameTerminatorGREMEDY;
|
||||
PFNGLSTRINGMARKERGREMEDYPROC glStringMarkerGREMEDY;
|
||||
// --
|
||||
};
|
||||
|
||||
@@ -862,6 +862,8 @@
|
||||
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC, glVertexArrayVertexAttribLOffsetEXT); \
|
||||
HookExtension(PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC, glVertexArrayVertexAttribDivisorEXT); \
|
||||
HookExtension(PFNGLPOLYGONOFFSETCLAMPEXTPROC, glPolygonOffsetClampEXT); \
|
||||
HookExtension(PFNGLFRAMETERMINATORGREMEDYPROC, glFrameTerminatorGREMEDY); \
|
||||
HookExtension(PFNGLSTRINGMARKERGREMEDYPROC, glStringMarkerGREMEDY); \
|
||||
HookExtension(PFNGLCULLFACEPROC, glCullFace); \
|
||||
HookExtension(PFNGLFRONTFACEPROC, glFrontFace); \
|
||||
HookExtension(PFNGLHINTPROC, glHint); \
|
||||
@@ -1634,6 +1636,8 @@
|
||||
HookWrapper7(void, glVertexArrayVertexAttribLOffsetEXT, GLuint, vaobj, GLuint, buffer, GLuint, index, GLint, size, GLenum, type, GLsizei, stride, GLintptr, offset); \
|
||||
HookWrapper3(void, glVertexArrayVertexAttribDivisorEXT, GLuint, vaobj, GLuint, index, GLuint, divisor); \
|
||||
HookWrapper3(void, glPolygonOffsetClampEXT, GLfloat, factor, GLfloat, units, GLfloat, clamp); \
|
||||
HookWrapper0(void, glFrameTerminatorGREMEDY); \
|
||||
HookWrapper2(void, glStringMarkerGREMEDY, GLsizei, len, const void *, string); \
|
||||
|
||||
|
||||
|
||||
@@ -2722,8 +2726,6 @@
|
||||
HookWrapper1(void, glvertexweightfvext, const GLfloat *, weight); \
|
||||
HookWrapper4(void, glvertexweightpointerext, GLint, size, GLenum, type, GLsizei, stride, const void *, pointer); \
|
||||
HookWrapper3(GLsync, glimportsyncext, GLenum, external_sync_type, GLintptr, external_sync, GLbitfield, flags); \
|
||||
HookWrapper0(void, glframeterminatorgremedy); \
|
||||
HookWrapper2(void, glstringmarkergremedy, GLsizei, len, const void *, string); \
|
||||
HookWrapper3(void, glimagetransformparameterihp, GLenum, target, GLenum, pname, GLint, param); \
|
||||
HookWrapper3(void, glimagetransformparameterfhp, GLenum, target, GLenum, pname, GLfloat, param); \
|
||||
HookWrapper3(void, glimagetransformparameterivhp, GLenum, target, GLenum, pname, const GLint *, params); \
|
||||
@@ -4419,8 +4421,6 @@
|
||||
HandleUnsupported(PFNGLVERTEXWEIGHTFVEXTPROC, glvertexweightfvext); \
|
||||
HandleUnsupported(PFNGLVERTEXWEIGHTPOINTEREXTPROC, glvertexweightpointerext); \
|
||||
HandleUnsupported(PFNGLIMPORTSYNCEXTPROC, glimportsyncext); \
|
||||
HandleUnsupported(PFNGLFRAMETERMINATORGREMEDYPROC, glframeterminatorgremedy); \
|
||||
HandleUnsupported(PFNGLSTRINGMARKERGREMEDYPROC, glstringmarkergremedy); \
|
||||
HandleUnsupported(PFNGLIMAGETRANSFORMPARAMETERIHPPROC, glimagetransformparameterihp); \
|
||||
HandleUnsupported(PFNGLIMAGETRANSFORMPARAMETERFHPPROC, glimagetransformparameterfhp); \
|
||||
HandleUnsupported(PFNGLIMAGETRANSFORMPARAMETERIVHPPROC, glimagetransformparameterivhp); \
|
||||
|
||||
@@ -167,6 +167,22 @@ void WrappedOpenGL::glDebugMessageInsert(GLenum source, GLenum type, GLuint id,
|
||||
m_Real.glDebugMessageInsert(source, type, id, severity, length, buf);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glFrameTerminatorGREMEDY()
|
||||
{
|
||||
Present(NULL);
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glStringMarkerGREMEDY(GLsizei len, const void *string)
|
||||
{
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(SET_MARKER);
|
||||
Serialise_glDebugMessageInsert(eGL_NONE, eGL_NONE, 0, eGL_NONE, len, (const GLchar *)string);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message)
|
||||
{
|
||||
string name = message ? string(message, message + (length > 0 ? length : strlen(message))) : "";
|
||||
|
||||
Reference in New Issue
Block a user