summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineD3D12
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2021-03-06 07:00:47 +0000
committerassiduous <assiduous@diligentgraphics.com>2021-03-19 00:38:16 +0000
commit72d2e4a6482150ee61b3124de546af1ec5a0bf38 (patch)
treef33e4b9bc627519b0d6e9755c902e6945a4a93b6 /Graphics/GraphicsEngineD3D12
parentReworked FenceGLImpl to use std::atomic (diff)
downloadDiligentCore-72d2e4a6482150ee61b3124de546af1ec5a0bf38.tar.gz
DiligentCore-72d2e4a6482150ee61b3124de546af1ec5a0bf38.zip
Moved GetResourceAttribution() function to PipelineStateBase to eliminate duplication
Diffstat (limited to 'Graphics/GraphicsEngineD3D12')
-rw-r--r--Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.hpp50
-rw-r--r--Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp2
-rw-r--r--Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp23
3 files changed, 6 insertions, 69 deletions
diff --git a/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.hpp b/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.hpp
index 84d9dccd..4c0f954b 100644
--- a/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.hpp
+++ b/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.hpp
@@ -64,7 +64,11 @@ public:
virtual Uint32 DILIGENT_CALL_TYPE GetResourceSignatureCount() const override final { return m_RootSig->GetSignatureCount(); }
/// Implementation of IPipelineState::GetResourceSignature() in Direct3D12 backend.
- virtual IPipelineResourceSignature* DILIGENT_CALL_TYPE GetResourceSignature(Uint32 Index) const override final { return GetSignature(Index); }
+ virtual PipelineResourceSignatureD3D12Impl* DILIGENT_CALL_TYPE GetResourceSignature(Uint32 Index) const override final
+ {
+ VERIFY_EXPR(Index < GetResourceSignatureCount());
+ return m_ResourceSignatures[Index];
+ }
/// Implementation of IPipelineStateD3D12::GetD3D12PipelineState().
virtual ID3D12PipelineState* DILIGENT_CALL_TYPE GetD3D12PipelineState() const override final { return static_cast<ID3D12PipelineState*>(m_pd3d12PSO.p); }
@@ -77,12 +81,6 @@ public:
const RootSignatureD3D12& GetRootSignature() const { return *m_RootSig; }
- PipelineResourceSignatureD3D12Impl* GetSignature(Uint32 index) const
- {
- VERIFY_EXPR(index < GetResourceSignatureCount());
- return m_ResourceSignatures[index];
- }
-
#ifdef DILIGENT_DEVELOPMENT
void DvpVerifySRBResources(ShaderResourceBindingD3D12Impl* pSRBs[], Uint32 NumSRBs) const;
#endif
@@ -121,44 +119,6 @@ private:
void Destruct();
- struct ResourceAttribution
- {
- static constexpr Uint32 InvalidSignatureIndex = ~0u;
- static constexpr Uint32 InvalidResourceIndex = PipelineResourceSignatureD3D12Impl::InvalidResourceIndex;
- static constexpr Uint32 InvalidSamplerIndex = InvalidImmutableSamplerIndex;
-
- const PipelineResourceSignatureD3D12Impl* pSignature = nullptr;
-
- Uint32 SignatureIndex = InvalidSignatureIndex;
- Uint32 ResourceIndex = InvalidResourceIndex;
- Uint32 ImmutableSamplerIndex = InvalidSamplerIndex;
-
- ResourceAttribution() noexcept {}
- ResourceAttribution(const PipelineResourceSignatureD3D12Impl* _pSignature,
- Uint32 _SignatureIndex,
- Uint32 _ResourceIndex,
- Uint32 _ImmutableSamplerIndex = InvalidResourceIndex) noexcept :
- pSignature{_pSignature},
- SignatureIndex{_SignatureIndex},
- ResourceIndex{_ResourceIndex},
- ImmutableSamplerIndex{_ImmutableSamplerIndex}
- {
- VERIFY_EXPR(pSignature == nullptr || pSignature->GetDesc().BindingIndex == SignatureIndex);
- VERIFY_EXPR((ResourceIndex == InvalidResourceIndex) || (ImmutableSamplerIndex == InvalidSamplerIndex));
- }
-
- explicit operator bool() const
- {
- return SignatureIndex != InvalidSignatureIndex && (ResourceIndex != InvalidResourceIndex || ImmutableSamplerIndex != InvalidSamplerIndex);
- }
-
- bool IsImmutableSampler() const
- {
- return operator bool() && ImmutableSamplerIndex != InvalidSamplerIndex;
- }
- };
- ResourceAttribution GetResourceAttribution(const char* Name, SHADER_TYPE Stage) const;
-
void ValidateShaderResources(const ShaderD3D12Impl* pShader, const LocalRootSignatureD3D12* pLocalRootSig);
private:
diff --git a/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp
index b9a0f91e..864919d2 100644
--- a/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp
+++ b/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp
@@ -240,7 +240,7 @@ void DeviceContextD3D12Impl::SetPipelineState(IPipelineState* pPipelineState)
for (Uint32 i = 0, SignCount = pPipelineStateD3D12->GetResourceSignatureCount(); i < SignCount; ++i)
{
- const auto* pSignature = pPipelineStateD3D12->GetSignature(i);
+ const auto* pSignature = pPipelineStateD3D12->GetResourceSignature(i);
if (pSignature != nullptr)
RootInfo.ActiveSRBMask |= 1u << i;
}
diff --git a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp
index fa70ddc6..f27d39dc 100644
--- a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp
+++ b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp
@@ -660,29 +660,6 @@ void PipelineStateD3D12Impl::InitRootSignature(const PipelineStateCreateInfo& Cr
}
}
-
-PipelineStateD3D12Impl::ResourceAttribution PipelineStateD3D12Impl::GetResourceAttribution(const char* Name, SHADER_TYPE Stage) const
-{
- const auto SignCount = GetResourceSignatureCount();
- for (Uint32 sign = 0; sign < SignCount; ++sign)
- {
- const auto* const pSignature = GetSignature(sign);
- if (pSignature == nullptr)
- continue;
-
- const auto ResIndex = pSignature->FindResource(Stage, Name);
- if (ResIndex != ResourceAttribution::InvalidResourceIndex)
- return ResourceAttribution{pSignature, sign, ResIndex};
- else
- {
- const auto ImtblSamIndex = pSignature->FindImmutableSampler(Stage, Name);
- if (ImtblSamIndex != ResourceAttribution::InvalidSamplerIndex)
- return ResourceAttribution{pSignature, sign, ResourceAttribution::InvalidResourceIndex, ImtblSamIndex};
- }
- }
- return ResourceAttribution{};
-}
-
void PipelineStateD3D12Impl::ValidateShaderResources(const ShaderD3D12Impl* pShader, const LocalRootSignatureD3D12* pLocalRootSig)
{
const auto& pShaderResources = pShader->GetShaderResources();