Track if transform feedback is active, and ensure we deactivate

This commit is contained in:
baldurk
2014-12-01 22:08:58 +00:00
parent 22c42d4e36
commit 78257a1fd9
3 changed files with 12 additions and 0 deletions
+7
View File
@@ -370,6 +370,7 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
RDCEraseEl(m_ActiveQueries);
m_ActiveConditional = false;
m_ActiveFeedback = false;
m_LastIndexSize = eGL_NONE;
m_LastIndexOffset = 0;
@@ -2376,6 +2377,12 @@ void WrappedOpenGL::ContextReplayLog(LogState readType, uint32_t startEventID, u
m_Real.glEndConditionalRender();
m_ActiveConditional = false;
}
if(m_ActiveFeedback)
{
m_Real.glEndTransformFeedback();
m_ActiveFeedback = false;
}
}
GetResourceManager()->MarkInFrame(true);
+1
View File
@@ -119,6 +119,7 @@ class WrappedOpenGL
GLResourceRecord *m_ReadFramebufferRecord;
bool m_ActiveQueries[8][8]; // first index type, second index (for some, always 0)
bool m_ActiveConditional;
bool m_ActiveFeedback;
ResourceId m_Renderbuffer;
GLint m_TextureUnit;
GLuint m_ProgramPipeline;
@@ -1453,6 +1453,7 @@ bool WrappedOpenGL::Serialise_glBeginTransformFeedback(GLenum primitiveMode)
if(m_State <= EXECUTING)
{
m_Real.glBeginTransformFeedback(Mode);
m_ActiveFeedback = true;
}
return true;
@@ -1461,6 +1462,7 @@ bool WrappedOpenGL::Serialise_glBeginTransformFeedback(GLenum primitiveMode)
void WrappedOpenGL::glBeginTransformFeedback(GLenum primitiveMode)
{
m_Real.glBeginTransformFeedback(primitiveMode);
m_ActiveFeedback = true;
if(m_State == WRITING_CAPFRAME)
{
@@ -1522,6 +1524,7 @@ bool WrappedOpenGL::Serialise_glEndTransformFeedback()
if(m_State <= EXECUTING)
{
m_Real.glEndTransformFeedback();
m_ActiveFeedback = false;
}
return true;
@@ -1530,6 +1533,7 @@ bool WrappedOpenGL::Serialise_glEndTransformFeedback()
void WrappedOpenGL::glEndTransformFeedback()
{
m_Real.glEndTransformFeedback();
m_ActiveFeedback = false;
if(m_State == WRITING_CAPFRAME)
{