summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngine
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2021-01-27 02:43:23 +0000
committerassiduous <assiduous@diligentgraphics.com>2021-01-27 02:43:23 +0000
commit2304b80ad16a9ec86151aa60d54793c5e5365331 (patch)
tree7abf3a56c3915414cb81cffcfa15aa677b26baf9 /Graphics/GraphicsEngine
parentOptimized PipelineResourceSignatureVkImpl::CommitDynamicResources by storing ... (diff)
downloadDiligentCore-2304b80ad16a9ec86151aa60d54793c5e5365331.tar.gz
DiligentCore-2304b80ad16a9ec86151aa60d54793c5e5365331.zip
Moved CreateShaderResourceBinding, GetStaticVariableByName, GetStaticVariableByIndex, GetStaticVariableCount and BindStaticResources from PipelineStateVkImpl back to PipelineStateBase
Diffstat (limited to 'Graphics/GraphicsEngine')
-rw-r--r--Graphics/GraphicsEngine/include/PipelineStateBase.hpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/Graphics/GraphicsEngine/include/PipelineStateBase.hpp b/Graphics/GraphicsEngine/include/PipelineStateBase.hpp
index 5e60f613..42e60feb 100644
--- a/Graphics/GraphicsEngine/include/PipelineStateBase.hpp
+++ b/Graphics/GraphicsEngine/include/PipelineStateBase.hpp
@@ -259,6 +259,71 @@ public:
UNEXPECTED("Can't find shader group '", Name, "'.");
}
+ virtual void DILIGENT_CALL_TYPE CreateShaderResourceBinding(IShaderResourceBinding** ppShaderResourceBinding,
+ bool InitStaticResources) override final
+ {
+ *ppShaderResourceBinding = nullptr;
+
+ if (this->GetResourceSignatureCount() != 1)
+ {
+ LOG_ERROR_MESSAGE("PipelineState::CreateShaderResourceBinding is only allowed for pipelines that use a single "
+ "resource signature. Use IPipelineResourceSignature::CreateShaderResourceBinding instead.");
+ return;
+ }
+
+ return this->GetResourceSignature(0)->CreateShaderResourceBinding(ppShaderResourceBinding, InitStaticResources);
+ }
+
+ virtual IShaderResourceVariable* DILIGENT_CALL_TYPE GetStaticVariableByName(SHADER_TYPE ShaderType,
+ const Char* Name) override final
+ {
+ if (this->GetResourceSignatureCount() != 1)
+ {
+ LOG_ERROR_MESSAGE("PipelineState::CreateShaderResourceBinding is only allowed for pipelines that use a single "
+ "resource signature. Use IPipelineResourceSignature::GetStaticVariableByName instead.");
+ return nullptr;
+ }
+
+ return this->GetResourceSignature(0)->GetStaticVariableByName(ShaderType, Name);
+ }
+
+ virtual IShaderResourceVariable* DILIGENT_CALL_TYPE GetStaticVariableByIndex(SHADER_TYPE ShaderType,
+ Uint32 Index) override final
+ {
+ if (this->GetResourceSignatureCount() != 1)
+ {
+ LOG_ERROR_MESSAGE("PipelineState::GetStaticVariableByIndex is only allowed for pipelines that use a single "
+ "resource signature. Use IPipelineResourceSignature::GetStaticVariableByIndex instead.");
+ return nullptr;
+ }
+
+ return this->GetResourceSignature(0)->GetStaticVariableByIndex(ShaderType, Index);
+ }
+
+ virtual Uint32 DILIGENT_CALL_TYPE GetStaticVariableCount(SHADER_TYPE ShaderType) const override final
+ {
+ if (this->GetResourceSignatureCount() != 1)
+ {
+ LOG_ERROR_MESSAGE("PipelineState::GetStaticVariableCount is only allowed for pipelines that use a single "
+ "resource signature. Use IPipelineResourceSignature::GetStaticVariableCount instead.");
+ return 0;
+ }
+
+ return this->GetResourceSignature(0)->GetStaticVariableCount(ShaderType);
+ }
+
+ virtual void DILIGENT_CALL_TYPE BindStaticResources(Uint32 ShaderFlags, IResourceMapping* pResourceMapping, Uint32 Flags) override final
+ {
+ if (this->GetResourceSignatureCount() != 1)
+ {
+ LOG_ERROR_MESSAGE("PipelineState::BindStaticResources is only allowed for pipelines that use a single "
+ "resource signature. Use IPipelineResourceSignature::BindStaticResources instead.");
+ return;
+ }
+
+ return this->GetResourceSignature(0)->BindStaticResources(ShaderFlags, pResourceMapping, Flags);
+ }
+
protected:
using TNameToGroupIndexMap = std::unordered_map<HashMapStringKey, Uint32, HashMapStringKey::Hasher>;