Implement glQueryCounter

This commit is contained in:
baldurk
2014-11-08 13:48:41 +00:00
parent 8dbdd97a2f
commit e4edec0d4e
6 changed files with 35 additions and 0 deletions
+1
View File
@@ -137,6 +137,7 @@ enum GLChunkType
GEN_QUERIES,
BEGIN_QUERY,
END_QUERY,
QUERY_COUNTER,
CLEAR_COLOR,
CLEAR_DEPTH,
+4
View File
@@ -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);
+1
View File
@@ -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));
+1
View File
@@ -288,6 +288,7 @@ struct GLHookSet
PFNGLGENQUERIESPROC glGenQueries;
PFNGLBEGINQUERYPROC glBeginQuery;
PFNGLENDQUERYPROC glEndQuery;
PFNGLQUERYCOUNTERPROC glQueryCounter;
PFNGLDELETEQUERIESPROC glDeleteQueries;
PFNGLBUFFERDATAPROC glBufferData;
PFNGLBUFFERSTORAGEPROC glBufferStorage;
+2
View File
@@ -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);