From ab876ad78f4ceeca1784c86da88dd7df9e11a13c Mon Sep 17 00:00:00 2001 From: baldurk Date: Sun, 26 Apr 2015 20:17:16 +0200 Subject: [PATCH] Allow glUseProgramStages program parameter to be 0, unbinding program(s) --- renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp index fc8abbf54..4b5745067 100644 --- a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp @@ -847,7 +847,7 @@ bool WrappedOpenGL::Serialise_glUseProgramStages(GLuint pipeline, GLbitfield sta { SERIALISE_ELEMENT(ResourceId, pipe, GetResourceManager()->GetID(ProgramPipeRes(GetCtx(), pipeline))); SERIALISE_ELEMENT(uint32_t, Stages, stages); - SERIALISE_ELEMENT(ResourceId, prog, GetResourceManager()->GetID(ProgramRes(GetCtx(), program))); + SERIALISE_ELEMENT(ResourceId, prog, (program ? GetResourceManager()->GetID(ProgramRes(GetCtx(), program)) : ResourceId())); if(m_State < WRITING) { @@ -896,8 +896,12 @@ void WrappedOpenGL::glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuin RDCASSERT(record); record->AddChunk(scope.Get()); - GLResourceRecord *progrecord = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program)); - record->AddParent(progrecord); + if(program) + { + GLResourceRecord *progrecord = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program)); + RDCASSERT(progrecord); + record->AddParent(progrecord); + } } }