From e778ad7b7432d472505fb6c5c79250a8daf380d7 Mon Sep 17 00:00:00 2001 From: Baldur Karlsson Date: Tue, 24 Jun 2014 15:53:06 +0100 Subject: [PATCH] Create map for pipeline objects to store child programs --- renderdoc/driver/gl/gl_driver.h | 16 ++++++++++++++++ renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp | 7 ++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/gl_driver.h b/renderdoc/driver/gl/gl_driver.h index 586b9ab6e..e64f8abb2 100644 --- a/renderdoc/driver/gl/gl_driver.h +++ b/renderdoc/driver/gl/gl_driver.h @@ -188,9 +188,25 @@ class WrappedOpenGL GLuint colOutProg; bool linked; }; + + struct PipelineData + { + PipelineData() {} + + struct ProgramUse + { + ProgramUse(ResourceId id_, GLbitfield use_) : id(id_), use(use_) {} + + ResourceId id; + GLbitfield use; + }; + + vector programs; + }; map m_Shaders; map m_Programs; + map m_Pipelines; GLuint m_FakeBB_FBO; GLuint m_FakeBB_Color; diff --git a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp index 0020def09..a32022645 100644 --- a/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp +++ b/renderdoc/driver/gl/wrappers/gl_shader_funcs.cpp @@ -551,8 +551,13 @@ bool WrappedOpenGL::Serialise_glUseProgramStages(GLuint pipeline, GLbitfield sta if(m_State < WRITING) { + ResourceId livePipeId = GetResourceManager()->GetLiveID(pipe); + ResourceId liveProgId = GetResourceManager()->GetLiveID(prog); + + m_Pipelines[livePipeId].programs.push_back(PipelineData::ProgramUse(liveProgId, Stages)); + m_Real.glUseProgramStages(GetResourceManager()->GetLiveResource(pipe).name, - stages, + Stages, GetResourceManager()->GetLiveResource(prog).name); }