summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineD3D12
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2021-03-05 18:17:56 +0000
committerassiduous <assiduous@diligentgraphics.com>2021-03-19 00:38:15 +0000
commit96e2faa4875e1e30bf8360bd37bfe350096b7433 (patch)
tree4e1fbb3b3eaf9a1d8d3674487adf926c2b9a63c0 /Graphics/GraphicsEngineD3D12
parentUnified CreateShaderResourceBinding in D3D12, Vk and GL signatures (diff)
downloadDiligentCore-96e2faa4875e1e30bf8360bd37bfe350096b7433.tar.gz
DiligentCore-96e2faa4875e1e30bf8360bd37bfe350096b7433.zip
Enabled pipeline resource validation in release build
Diffstat (limited to 'Graphics/GraphicsEngineD3D12')
-rw-r--r--Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.hpp4
-rw-r--r--Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp17
2 files changed, 11 insertions, 10 deletions
diff --git a/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.hpp b/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.hpp
index c9e938c3..84d9dccd 100644
--- a/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.hpp
+++ b/Graphics/GraphicsEngineD3D12/include/PipelineStateD3D12Impl.hpp
@@ -121,7 +121,6 @@ private:
void Destruct();
-#ifdef DILIGENT_DEVELOPMENT
struct ResourceAttribution
{
static constexpr Uint32 InvalidSignatureIndex = ~0u;
@@ -160,8 +159,7 @@ private:
};
ResourceAttribution GetResourceAttribution(const char* Name, SHADER_TYPE Stage) const;
- void DvpValidateShaderResources(const ShaderD3D12Impl* pShader, const LocalRootSignatureD3D12* pLocalRootSig);
-#endif
+ void ValidateShaderResources(const ShaderD3D12Impl* pShader, const LocalRootSignatureD3D12* pLocalRootSig);
private:
CComPtr<ID3D12DeviceChild> m_pd3d12PSO;
diff --git a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp
index c240b4ab..fa70ddc6 100644
--- a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp
+++ b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp
@@ -635,10 +635,8 @@ void PipelineStateD3D12Impl::InitRootSignature(const PipelineStateCreateInfo& Cr
"Compile the shader using SM5.1+ or change the resource layout to use only one space.");
}
-#ifdef DILIGENT_DEVELOPMENT
// Validate resources before remapping
- DvpValidateShaderResources(pShader, pLocalRootSig);
-#endif
+ ValidateShaderResources(pShader, pLocalRootSig);
CComPtr<ID3DBlob> pBlob;
if (IsDXILBytecode(pBytecode->GetBufferPointer(), pBytecode->GetBufferSize()))
@@ -663,7 +661,6 @@ void PipelineStateD3D12Impl::InitRootSignature(const PipelineStateCreateInfo& Cr
}
-#ifdef DILIGENT_DEVELOPMENT
PipelineStateD3D12Impl::ResourceAttribution PipelineStateD3D12Impl::GetResourceAttribution(const char* Name, SHADER_TYPE Stage) const
{
const auto SignCount = GetResourceSignatureCount();
@@ -686,18 +683,25 @@ PipelineStateD3D12Impl::ResourceAttribution PipelineStateD3D12Impl::GetResourceA
return ResourceAttribution{};
}
-void PipelineStateD3D12Impl::DvpValidateShaderResources(const ShaderD3D12Impl* pShader, const LocalRootSignatureD3D12* pLocalRootSig)
+void PipelineStateD3D12Impl::ValidateShaderResources(const ShaderD3D12Impl* pShader, const LocalRootSignatureD3D12* pLocalRootSig)
{
const auto& pShaderResources = pShader->GetShaderResources();
const auto ShaderType = pShader->GetDesc().ShaderType;
+#ifdef DILIGENT_DEVELOPMENT
m_ShaderResources.emplace_back(pShaderResources);
+#endif
// Check compatibility between shader resources and resource signature.
pShaderResources->ProcessResources(
[&](const D3DShaderResourceAttribs& Attribs, Uint32) //
{
+#ifdef DILIGENT_DEVELOPMENT
m_ResourceAttibutions.emplace_back();
+ auto& ResAttribution = m_ResourceAttibutions.back();
+#else
+ ResourceAttribution ResAttribution;
+#endif
if (pLocalRootSig != nullptr && pLocalRootSig->IsShaderRecord(Attribs))
return;
@@ -706,8 +710,6 @@ void PipelineStateD3D12Impl::DvpValidateShaderResources(const ShaderD3D12Impl* p
if (IsSampler && pShaderResources->IsUsingCombinedTextureSamplers())
return;
- auto& ResAttribution = m_ResourceAttibutions.back();
-
ResAttribution = GetResourceAttribution(Attribs.Name, ShaderType);
if (!ResAttribution)
{
@@ -749,6 +751,7 @@ void PipelineStateD3D12Impl::DvpValidateShaderResources(const ShaderD3D12Impl* p
);
}
+#ifdef DILIGENT_DEVELOPMENT
void PipelineStateD3D12Impl::DvpVerifySRBResources(ShaderResourceBindingD3D12Impl* pSRBs[], Uint32 NumSRBs) const
{
// Verify SRB compatibility with this pipeline