From 96e2faa4875e1e30bf8360bd37bfe350096b7433 Mon Sep 17 00:00:00 2001 From: assiduous Date: Fri, 5 Mar 2021 10:17:56 -0800 Subject: Enabled pipeline resource validation in release build --- .../include/PipelineStateD3D12Impl.hpp | 4 +--- .../GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp | 17 ++++++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) (limited to 'Graphics/GraphicsEngineD3D12') 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 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 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 -- cgit v1.2.3