diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2021-02-24 05:49:04 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2021-03-19 00:38:10 +0000 |
| commit | a730e3b5baa208b7a152800b2323db6be88ad243 (patch) | |
| tree | b7aef0227512709034177105208daaedfd85c1d3 /Graphics/GraphicsEngineVulkan | |
| parent | Reworked ShaderResourceBindingVkImpl and ShaderResourceBindingD3D12Impl: move... (diff) | |
| download | DiligentCore-a730e3b5baa208b7a152800b2323db6be88ad243.tar.gz DiligentCore-a730e3b5baa208b7a152800b2323db6be88ad243.zip | |
Replaced InitializeStaticResources and InitializeStaticResourcesWithSignature methods of IShaderResourceBinding with IPipelineState::InitializeStaticSRBResources and IPipelineResourceSignature::InitializeStaticSRBResources
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
4 files changed, 16 insertions, 17 deletions
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<const PipelineResourceSignatureVkImpl>(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<IObject**>(ppShaderResourceBinding)); } @@ -779,7 +779,17 @@ void PipelineResourceSignatureVkImpl::InitSRBResourceCache(ShaderResourceCacheVk } } -void PipelineResourceSignatureVkImpl::InitializeStaticSRBResources(ShaderResourceCacheVk& DstResourceCache) const +void PipelineResourceSignatureVkImpl::InitializeStaticSRBResources(IShaderResourceBinding* pSRB) const +{ + InitializeStaticSRBResourcesImpl(ValidatedCast<ShaderResourceBindingVkImpl>(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<const PipelineResourceSignatureVkImpl>(pResourceSignature); - pPRSVk->InitializeStaticSRBResources(m_ShaderResourceCache); - m_bStaticResourcesInitialized = true; -} - } // namespace Diligent |
