From a730e3b5baa208b7a152800b2323db6be88ad243 Mon Sep 17 00:00:00 2001 From: assiduous Date: Tue, 23 Feb 2021 21:49:04 -0800 Subject: Replaced InitializeStaticResources and InitializeStaticResourcesWithSignature methods of IShaderResourceBinding with IPipelineState::InitializeStaticSRBResources and IPipelineResourceSignature::InitializeStaticSRBResources --- .../include/PipelineResourceSignatureVkImpl.hpp | 4 +++- .../include/ShaderResourceBindingVkImpl.hpp | 3 --- .../src/PipelineResourceSignatureVkImpl.cpp | 16 +++++++++++++--- .../src/ShaderResourceBindingVkImpl.cpp | 10 ---------- 4 files changed, 16 insertions(+), 17 deletions(-) (limited to 'Graphics/GraphicsEngineVulkan') diff --git a/Graphics/GraphicsEngineVulkan/include/PipelineResourceSignatureVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/PipelineResourceSignatureVkImpl.hpp index cabfa010..f8215d49 100644 --- a/Graphics/GraphicsEngineVulkan/include/PipelineResourceSignatureVkImpl.hpp +++ b/Graphics/GraphicsEngineVulkan/include/PipelineResourceSignatureVkImpl.hpp @@ -228,6 +228,8 @@ public: return IsCompatibleWith(*ValidatedCast(pPRS)); } + virtual void DILIGENT_CALL_TYPE InitializeStaticSRBResources(IShaderResourceBinding* pSRB) const override final; + SRBMemoryAllocator& GetSRBMemoryAllocator() { return m_SRBMemAllocator; @@ -238,7 +240,7 @@ public: const char* DbgPipelineName) const; // Copies static resources from the static resource cache to the destination cache - void InitializeStaticSRBResources(ShaderResourceCacheVk& ResourceCache) const; + void CopyStaticResources(ShaderResourceCacheVk& ResourceCache) const; // Binds object pObj to resource with index ResIndex in m_Desc.Resources and // array index ArrayIndex. diff --git a/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp b/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp index 2ea6de99..b10b8067 100644 --- a/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp +++ b/Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp @@ -68,9 +68,6 @@ public: /// Implementation of IShaderResourceBinding::GetVariableByIndex() in Vulkan backend. virtual IShaderResourceVariable* DILIGENT_CALL_TYPE GetVariableByIndex(SHADER_TYPE ShaderType, Uint32 Index) override final; - /// Implementation of IShaderResourceBinding::InitializeStaticResourcesWithSignature() in Vulkan backend. - virtual void DILIGENT_CALL_TYPE InitializeStaticResourcesWithSignature(const IPipelineResourceSignature* pResourceSignature) override final; - ShaderResourceCacheVk& GetResourceCache() { return m_ShaderResourceCache; } private: diff --git a/Graphics/GraphicsEngineVulkan/src/PipelineResourceSignatureVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/PipelineResourceSignatureVkImpl.cpp index bea6d341..df39ecf5 100644 --- a/Graphics/GraphicsEngineVulkan/src/PipelineResourceSignatureVkImpl.cpp +++ b/Graphics/GraphicsEngineVulkan/src/PipelineResourceSignatureVkImpl.cpp @@ -713,9 +713,9 @@ void PipelineResourceSignatureVkImpl::CreateShaderResourceBinding(IShaderResourc bool InitStaticResources) { auto& SRBAllocator = m_pDevice->GetSRBAllocator(); - auto pResBindingVk = NEW_RC_OBJ(SRBAllocator, "ShaderResourceBindingVkImpl instance", ShaderResourceBindingVkImpl)(this); + auto* pResBindingVk = NEW_RC_OBJ(SRBAllocator, "ShaderResourceBindingVkImpl instance", ShaderResourceBindingVkImpl)(this); if (InitStaticResources) - pResBindingVk->InitializeStaticResources(nullptr); + InitializeStaticSRBResources(pResBindingVk); pResBindingVk->QueryInterface(IID_ShaderResourceBinding, reinterpret_cast(ppShaderResourceBinding)); } @@ -779,7 +779,17 @@ void PipelineResourceSignatureVkImpl::InitSRBResourceCache(ShaderResourceCacheVk } } -void PipelineResourceSignatureVkImpl::InitializeStaticSRBResources(ShaderResourceCacheVk& DstResourceCache) const +void PipelineResourceSignatureVkImpl::InitializeStaticSRBResources(IShaderResourceBinding* pSRB) const +{ + InitializeStaticSRBResourcesImpl(ValidatedCast(pSRB), + [&](ShaderResourceBindingVkImpl* pSRBVk) // + { + CopyStaticResources(pSRBVk->GetResourceCache()); + } // + ); +} + +void PipelineResourceSignatureVkImpl::CopyStaticResources(ShaderResourceCacheVk& DstResourceCache) const { if (!HasDescriptorSet(DESCRIPTOR_SET_ID_STATIC_MUTABLE) || m_pStaticResCache == nullptr) return; diff --git a/Graphics/GraphicsEngineVulkan/src/ShaderResourceBindingVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/ShaderResourceBindingVkImpl.cpp index eab0534f..7456e66c 100644 --- a/Graphics/GraphicsEngineVulkan/src/ShaderResourceBindingVkImpl.cpp +++ b/Graphics/GraphicsEngineVulkan/src/ShaderResourceBindingVkImpl.cpp @@ -133,14 +133,4 @@ IShaderResourceVariable* ShaderResourceBindingVkImpl::GetVariableByIndex(SHADER_ return GetVariableByIndexImpl(ShaderType, Index, m_pShaderVarMgrs); } -void ShaderResourceBindingVkImpl::InitializeStaticResourcesWithSignature(const IPipelineResourceSignature* pResourceSignature) -{ - if (pResourceSignature == nullptr) - pResourceSignature = GetPipelineResourceSignature(); - - auto* pPRSVk = ValidatedCast(pResourceSignature); - pPRSVk->InitializeStaticSRBResources(m_ShaderResourceCache); - m_bStaticResourcesInitialized = true; -} - } // namespace Diligent -- cgit v1.2.3