summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2021-02-24 05:49:04 +0000
committerassiduous <assiduous@diligentgraphics.com>2021-03-19 00:38:10 +0000
commita730e3b5baa208b7a152800b2323db6be88ad243 (patch)
treeb7aef0227512709034177105208daaedfd85c1d3 /Graphics/GraphicsEngineVulkan
parentReworked ShaderResourceBindingVkImpl and ShaderResourceBindingD3D12Impl: move... (diff)
downloadDiligentCore-a730e3b5baa208b7a152800b2323db6be88ad243.tar.gz
DiligentCore-a730e3b5baa208b7a152800b2323db6be88ad243.zip
Replaced InitializeStaticResources and InitializeStaticResourcesWithSignature methods of IShaderResourceBinding with IPipelineState::InitializeStaticSRBResources and IPipelineResourceSignature::InitializeStaticSRBResources
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/include/PipelineResourceSignatureVkImpl.hpp4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/ShaderResourceBindingVkImpl.hpp3
-rw-r--r--Graphics/GraphicsEngineVulkan/src/PipelineResourceSignatureVkImpl.cpp16
-rw-r--r--Graphics/GraphicsEngineVulkan/src/ShaderResourceBindingVkImpl.cpp10
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