From d0b63f6ae3413e3b23cdf09f111b61043ec49958 Mon Sep 17 00:00:00 2001 From: Baldur Karlsson Date: Tue, 24 Jun 2014 15:46:22 +0100 Subject: [PATCH] When in CAPFRAME save uniform sets to context record * It was the wrong way around. When not capturing frame we save uniform sets to the program's record, but really we shouldn't do this and we should grab these as 'initial state' of the program resources --- .../driver/gl/wrappers/gl_uniform_funcs.cpp | 63 ++++++++++--------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/renderdoc/driver/gl/wrappers/gl_uniform_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_uniform_funcs.cpp index affc43ac1..1067b7f02 100644 --- a/renderdoc/driver/gl/wrappers/gl_uniform_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_uniform_funcs.cpp @@ -411,13 +411,14 @@ void WrappedOpenGL::glProgramUniform1i(GLuint program, GLint location, GLint v0) if(m_State == WRITING_CAPFRAME) { - GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); - RDCASSERT(record); - record->AddChunk(scope.Get()); + m_ContextRecord->AddChunk(scope.Get()); } else { - m_ContextRecord->AddChunk(scope.Get()); + // TODO grab this at capture time as initial state for program resources + GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); + RDCASSERT(record); + record->AddChunk(scope.Get()); } } } @@ -433,13 +434,14 @@ void WrappedOpenGL::glProgramUniform1iv(GLuint program, GLint location, GLsizei if(m_State == WRITING_CAPFRAME) { - GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); - RDCASSERT(record); - record->AddChunk(scope.Get()); + m_ContextRecord->AddChunk(scope.Get()); } else { - m_ContextRecord->AddChunk(scope.Get()); + // TODO grab this at capture time as initial state for program resources + GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); + RDCASSERT(record); + record->AddChunk(scope.Get()); } } } @@ -455,13 +457,14 @@ void WrappedOpenGL::glProgramUniform1fv(GLuint program, GLint location, GLsizei if(m_State == WRITING_CAPFRAME) { - GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); - RDCASSERT(record); - record->AddChunk(scope.Get()); + m_ContextRecord->AddChunk(scope.Get()); } else { - m_ContextRecord->AddChunk(scope.Get()); + // TODO grab this at capture time as initial state for program resources + GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); + RDCASSERT(record); + record->AddChunk(scope.Get()); } } } @@ -477,13 +480,14 @@ void WrappedOpenGL::glProgramUniform1uiv(GLuint program, GLint location, GLsizei if(m_State == WRITING_CAPFRAME) { - GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); - RDCASSERT(record); - record->AddChunk(scope.Get()); + m_ContextRecord->AddChunk(scope.Get()); } else { - m_ContextRecord->AddChunk(scope.Get()); + // TODO grab this at capture time as initial state for program resources + GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); + RDCASSERT(record); + record->AddChunk(scope.Get()); } } } @@ -499,13 +503,14 @@ void WrappedOpenGL::glProgramUniform2fv(GLuint program, GLint location, GLsizei if(m_State == WRITING_CAPFRAME) { - GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); - RDCASSERT(record); - record->AddChunk(scope.Get()); + m_ContextRecord->AddChunk(scope.Get()); } else { - m_ContextRecord->AddChunk(scope.Get()); + // TODO grab this at capture time as initial state for program resources + GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); + RDCASSERT(record); + record->AddChunk(scope.Get()); } } } @@ -521,13 +526,14 @@ void WrappedOpenGL::glProgramUniform3fv(GLuint program, GLint location, GLsizei if(m_State == WRITING_CAPFRAME) { - GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); - RDCASSERT(record); - record->AddChunk(scope.Get()); + m_ContextRecord->AddChunk(scope.Get()); } else { - m_ContextRecord->AddChunk(scope.Get()); + // TODO grab this at capture time as initial state for program resources + GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); + RDCASSERT(record); + record->AddChunk(scope.Get()); } } } @@ -543,13 +549,14 @@ void WrappedOpenGL::glProgramUniform4fv(GLuint program, GLint location, GLsizei if(m_State == WRITING_CAPFRAME) { + m_ContextRecord->AddChunk(scope.Get()); + } + else + { + // TODO grab this at capture time as initial state for program resources GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(program)); RDCASSERT(record); record->AddChunk(scope.Get()); } - else - { - m_ContextRecord->AddChunk(scope.Get()); - } } }