diff --git a/renderdoc/driver/gl/gl_driver.h b/renderdoc/driver/gl/gl_driver.h index ed8e4b0cd..dbc6345dd 100644 --- a/renderdoc/driver/gl/gl_driver.h +++ b/renderdoc/driver/gl/gl_driver.h @@ -55,7 +55,7 @@ struct GLInitParams : public RDCInitParams uint32_t width; uint32_t height; - static const uint32_t GL_SERIALISE_VERSION = 0x0000008; + static const uint32_t GL_SERIALISE_VERSION = 0x0000009; // version number internal to opengl stream uint32_t SerialiseVersion; diff --git a/renderdoc/driver/gl/gl_renderstate.cpp b/renderdoc/driver/gl/gl_renderstate.cpp index b31dcc561..e046d8acd 100644 --- a/renderdoc/driver/gl/gl_renderstate.cpp +++ b/renderdoc/driver/gl/gl_renderstate.cpp @@ -259,6 +259,12 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl) GLint boolread = 0; // TODO check GL_MAX_* // TODO check the extensions/core version for these is around + + if(ctx == NULL) + { + ContextPresent = false; + return; + } { GLenum pnames[] = @@ -582,6 +588,9 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl) void GLRenderState::ApplyState(void *ctx, WrappedOpenGL *gl) { + if(!ContextPresent || ctx == NULL) + return; + { GLenum pnames[] = { @@ -870,6 +879,8 @@ void GLRenderState::ApplyState(void *ctx, WrappedOpenGL *gl) void GLRenderState::Clear() { + ContextPresent = true; + RDCEraseEl(Enabled); RDCEraseEl(Tex1D); @@ -957,6 +968,11 @@ void GLRenderState::Serialise(LogState state, void *ctx, WrappedOpenGL *gl) GLResourceManager *rm = gl->GetResourceManager(); // TODO check GL_MAX_* + m_pSerialiser->Serialise("Context Present", ContextPresent); + + if(!ContextPresent) + return; + m_pSerialiser->Serialise("GL_ENABLED", Enabled); ResourceId ids[128]; diff --git a/renderdoc/driver/gl/gl_renderstate.h b/renderdoc/driver/gl/gl_renderstate.h index 8e0babe72..abc473885 100644 --- a/renderdoc/driver/gl/gl_renderstate.h +++ b/renderdoc/driver/gl/gl_renderstate.h @@ -100,6 +100,8 @@ struct GLRenderState eEnabled_Count, }; + bool ContextPresent; + bool Enabled[eEnabled_Count]; uint32_t Tex1D[128];