From cb216441fe97b11409c3f60a12fe4a0e8b1834cd Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 21 Nov 2019 11:02:53 +0000 Subject: [PATCH] Ensure we prepare initial states for late-created programs. Closes #1606 * The initial states for GL programs contain a uniform mapping table, which is required for correct replay. We already do this in glLinkProgram we were just missing the call in glCreateShaderProgramv. --- renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp index 97489224c..04786f3b2 100644 --- a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp @@ -730,6 +730,15 @@ GLuint WrappedOpenGL::glCreateShaderProgramv(GLenum type, GLsizei count, const G GetResourceManager()->MarkDirtyResource(id); record->AddChunk(chunk); + + // we need initial contents for programs to know any initial bindings potentially if they change + // over the frame, and for uniform location remapping. + // We just inject a call to prepare the initial contents now, any other post-create data setting + // will be replayed as expected. + if(IsActiveCapturing(m_State)) + { + GetResourceManager()->ContextPrepare_InitialState(res); + } } else {