From 35b670d37c70fdb7724e968e295bc6e1b7f73ce8 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 28 Nov 2014 21:11:08 +0000 Subject: [PATCH] Fetch number of active subroutine uniform locations from right place --- renderdoc/driver/gl/gl_renderstate.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/gl_renderstate.cpp b/renderdoc/driver/gl/gl_renderstate.cpp index c3e966c42..6afee9e0e 100644 --- a/renderdoc/driver/gl/gl_renderstate.cpp +++ b/renderdoc/driver/gl/gl_renderstate.cpp @@ -141,7 +141,12 @@ void GLRenderState::FetchState() RDCCOMPILE_ASSERT(ARRAY_COUNT(shs) == ARRAY_COUNT(Subroutines), "Subroutine array not the right size"); for(size_t s=0; s < ARRAY_COUNT(shs); s++) { - m_Real->glGetIntegerv(eGL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS, &Subroutines[s].numSubroutines); + GLuint prog = Program; + if(prog == 0) m_Real->glGetProgramPipelineiv(Pipeline, shs[s], (GLint *)&prog); + + if(prog == 0) continue; + + m_Real->glGetProgramStageiv(prog, shs[s], eGL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS, &Subroutines[s].numSubroutines); for(GLint i=0; i < Subroutines[s].numSubroutines; i++) m_Real->glGetUniformSubroutineuiv(shs[s], i, &Subroutines[s].Values[s]);