From 84d8fedc201a66835f5c234160bda63bbc40f682 Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Fri, 23 Nov 2018 16:07:34 -0800 Subject: Added IShaderResourceBinding::InitializeStaticResources() method to allow explicit initialization of static shader resources in a SRB --- Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h | 2 +- Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h | 2 ++ Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp | 4 +++- Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp | 5 +++++ 4 files changed, 11 insertions(+), 2 deletions(-) (limited to 'Graphics/GraphicsEngineOpenGL') diff --git a/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h index c6f54964..6e03df2e 100644 --- a/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/PipelineStateGLImpl.h @@ -50,7 +50,7 @@ public: virtual void BindShaderResources( IResourceMapping *pResourceMapping, Uint32 Flags )override final; - virtual void CreateShaderResourceBinding( IShaderResourceBinding **ppShaderResourceBinding )override final; + virtual void CreateShaderResourceBinding( IShaderResourceBinding **ppShaderResourceBinding, bool InitStaticResources )override final; virtual bool IsCompatibleWith(const IPipelineState *pPSO)const override final; diff --git a/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h b/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h index 6500ad29..02193dd9 100644 --- a/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h +++ b/Graphics/GraphicsEngineOpenGL/include/ShaderResourceBindingGLImpl.h @@ -55,6 +55,8 @@ public: virtual IShaderVariable* GetVariable(SHADER_TYPE ShaderType, Uint32 Index)override final; + virtual void InitializeStaticResources(const IPipelineState* pPipelineState)override final; + GLProgramResources &GetProgramResources(SHADER_TYPE ShaderType, PipelineStateGLImpl *pdbgPSO); private: diff --git a/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp index 19503efb..57c2e4a4 100644 --- a/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp @@ -152,11 +152,13 @@ void PipelineStateGLImpl::BindShaderResources(IResourceMapping *pResourceMapping } } -void PipelineStateGLImpl::CreateShaderResourceBinding(IShaderResourceBinding **ppShaderResourceBinding) +void PipelineStateGLImpl::CreateShaderResourceBinding(IShaderResourceBinding **ppShaderResourceBinding, bool InitStaticResources) { auto *pRenderDeviceGL = ValidatedCast( GetDevice() ); auto &SRBAllocator = pRenderDeviceGL->GetSRBAllocator(); auto pResBinding = NEW_RC_OBJ( SRBAllocator, "ShaderResourceBindingGLImpl instance", ShaderResourceBindingGLImpl)(this); + if (InitStaticResources) + pResBinding->InitializeStaticResources(nullptr); pResBinding->QueryInterface(IID_ShaderResourceBinding, reinterpret_cast(ppShaderResourceBinding)); } diff --git a/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp index 4041afed..d6cae215 100644 --- a/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/ShaderResourceBindingGLImpl.cpp @@ -113,4 +113,9 @@ GLProgramResources &ShaderResourceBindingGLImpl::GetProgramResources(SHADER_TYPE return m_DynamicProgResources[ShaderInd]; } +void ShaderResourceBindingGLImpl::InitializeStaticResources(const IPipelineState* pPipelineState) +{ + +} + } -- cgit v1.2.3