From ffaa445cf2cc8d6c6b1eb27bfe8a4ff07cee8d44 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 2 Jul 2019 17:22:53 +0100 Subject: [PATCH] Unbind annoying buffer binds on GL that mess with normal functionality --- renderdoc/driver/gl/gl_driver.cpp | 6 ++++++ renderdoc/driver/gl/gl_postvs.cpp | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index f68ea89a7..e4b695fd1 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -612,6 +612,10 @@ void WrappedOpenGL::CreateReplayBackbuffer(const GLInitParams ¶ms, ResourceI WrappedOpenGL &drv = *this; + GLuint unpackbuf = 0; + GL.glGetIntegerv(eGL_PIXEL_UNPACK_BUFFER_BINDING, (GLint *)&unpackbuf); + GL.glBindBuffer(eGL_PIXEL_UNPACK_BUFFER, 0); + drv.glGenFramebuffers(1, &fbo); drv.glBindFramebuffer(eGL_FRAMEBUFFER, fbo); @@ -768,6 +772,8 @@ void WrappedOpenGL::CreateReplayBackbuffer(const GLInitParams ¶ms, ResourceI GetReplay()->GetResourceDesc(depthId).initialisationChunks.push_back(m_InitChunkIndex); } } + + GL.glBindBuffer(eGL_PIXEL_UNPACK_BUFFER, unpackbuf); } std::string WrappedOpenGL::GetChunkName(uint32_t idx) diff --git a/renderdoc/driver/gl/gl_postvs.cpp b/renderdoc/driver/gl/gl_postvs.cpp index cb9ae7f7f..26d308350 100644 --- a/renderdoc/driver/gl/gl_postvs.cpp +++ b/renderdoc/driver/gl/gl_postvs.cpp @@ -72,6 +72,8 @@ void GLReplay::InitPostVSBuffers(uint32_t eventId) if(rs.VAO.name) drv.glGetIntegerv(eGL_ELEMENT_ARRAY_BUFFER_BINDING, (GLint *)&elArrayBuffer); + drv.glBindBuffer(eGL_QUERY_BUFFER, 0); + // reflection structures ShaderReflection *vsRefl = NULL; ShaderReflection *tesRefl = NULL; @@ -1681,6 +1683,9 @@ void GLReplay::InitPostVSBuffers(uint32_t eventId) drv.glBindBuffer(eGL_ARRAY_BUFFER, rs.BufferBindings[GLRenderState::eBufIdx_Array].name); drv.glBindBuffer(eGL_ELEMENT_ARRAY_BUFFER, elArrayBuffer); + if(HasExt[ARB_query_buffer_object]) + drv.glBindBuffer(eGL_QUERY_BUFFER, rs.BufferBindings[GLRenderState::eBufIdx_Query].name); + drv.glBindTransformFeedback(eGL_TRANSFORM_FEEDBACK, rs.FeedbackObj.name); if(!rs.Enabled[GLRenderState::eEnabled_RasterizerDiscard])