mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-09-10 07:45:38 +00:00
Implement glQueryCounter
This commit is contained in:
@@ -137,6 +137,7 @@ enum GLChunkType
|
||||
GEN_QUERIES,
|
||||
BEGIN_QUERY,
|
||||
END_QUERY,
|
||||
QUERY_COUNTER,
|
||||
|
||||
CLEAR_COLOR,
|
||||
CLEAR_DEPTH,
|
||||
|
||||
@@ -90,6 +90,7 @@ const char *GLChunkNames[] =
|
||||
"glGenQueries",
|
||||
"glBeginQuery",
|
||||
"glEndQuery",
|
||||
"glQueryCounter",
|
||||
|
||||
"glClearColor",
|
||||
"glClearDepth",
|
||||
@@ -1545,6 +1546,9 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
|
||||
case END_QUERY:
|
||||
Serialise_glEndQuery(eGL_NONE);
|
||||
break;
|
||||
case QUERY_COUNTER:
|
||||
Serialise_glQueryCounter(0, eGL_NONE);
|
||||
break;
|
||||
|
||||
case CLEAR_COLOR:
|
||||
Serialise_glClearColor(0, 0, 0, 0);
|
||||
|
||||
@@ -433,6 +433,7 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGenQueries(GLsizei n, GLuint *ids));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glBeginQuery(GLenum target, GLuint id));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glEndQuery(GLenum target));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glQueryCounter(GLuint id, GLenum target));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDeleteQueries(GLsizei n, const GLuint *ids));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glActiveTexture(GLenum texture));
|
||||
|
||||
@@ -288,6 +288,7 @@ struct GLHookSet
|
||||
PFNGLGENQUERIESPROC glGenQueries;
|
||||
PFNGLBEGINQUERYPROC glBeginQuery;
|
||||
PFNGLENDQUERYPROC glEndQuery;
|
||||
PFNGLQUERYCOUNTERPROC glQueryCounter;
|
||||
PFNGLDELETEQUERIESPROC glDeleteQueries;
|
||||
PFNGLBUFFERDATAPROC glBufferData;
|
||||
PFNGLBUFFERSTORAGEPROC glBufferStorage;
|
||||
|
||||
@@ -307,6 +307,7 @@
|
||||
HookExtension(PFNGLGENQUERIESPROC, glGenQueries); \
|
||||
HookExtension(PFNGLBEGINQUERYPROC, glBeginQuery); \
|
||||
HookExtension(PFNGLENDQUERYPROC, glEndQuery); \
|
||||
HookExtension(PFNGLQUERYCOUNTERPROC, glQueryCounter); \
|
||||
HookExtension(PFNGLDELETEQUERIESPROC, glDeleteQueries); \
|
||||
HookExtension(PFNGLBUFFERDATAPROC, glBufferData); \
|
||||
HookExtension(PFNGLBUFFERSTORAGEPROC, glBufferStorage); \
|
||||
@@ -903,6 +904,7 @@
|
||||
HookWrapper2(void, glGenQueries, GLsizei, n, GLuint *, ids); \
|
||||
HookWrapper2(void, glBeginQuery, GLenum, target, GLuint, id); \
|
||||
HookWrapper1(void, glEndQuery, GLenum, target); \
|
||||
HookWrapper2(void, glQueryCounter, GLuint, id, GLenum, target); \
|
||||
HookWrapper2(void, glDeleteQueries, GLsizei, n, const GLuint *, ids); \
|
||||
HookWrapper4(void, glBufferData, GLenum, target, GLsizeiptr, size, const void *, data, GLenum, usage); \
|
||||
HookWrapper4(void, glBufferStorage, GLenum, target, GLsizeiptr, size, const void *, data, GLbitfield, flags); \
|
||||
|
||||
@@ -253,6 +253,32 @@ void WrappedOpenGL::glEndQuery(GLenum target)
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glQueryCounter(GLuint query, GLenum target)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, id, GetResourceManager()->GetID(QueryRes(GetCtx(), query)));
|
||||
SERIALISE_ELEMENT(GLenum, Target, target);
|
||||
|
||||
if(m_State < WRITING)
|
||||
{
|
||||
glQueryCounter(GetResourceManager()->GetLiveResource(id).name, Target);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glQueryCounter(GLuint query, GLenum target)
|
||||
{
|
||||
m_Real.glQueryCounter(query, target);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(QUERY_COUNTER);
|
||||
Serialise_glQueryCounter(query, target);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glDeleteQueries(GLsizei n, const GLuint *ids)
|
||||
{
|
||||
m_Real.glDeleteQueries(n, ids);
|
||||
|
||||
Reference in New Issue
Block a user