diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2020-04-01 01:38:49 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2020-04-01 01:38:49 +0000 |
| commit | e468c524507a254c8166bdaee88156a2f3092532 (patch) | |
| tree | d8eb914e316a63651a83eb0204f2137d36853491 /Graphics/GraphicsEngineD3DBase | |
| parent | Fixed minor issue in FilteringTools.hpp (diff) | |
| download | DiligentCore-e468c524507a254c8166bdaee88156a2f3092532.tar.gz DiligentCore-e468c524507a254c8166bdaee88156a2f3092532.zip | |
Improved PSO creation warnings
Diffstat (limited to 'Graphics/GraphicsEngineD3DBase')
| -rw-r--r-- | Graphics/GraphicsEngineD3DBase/src/ShaderResources.cpp | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/Graphics/GraphicsEngineD3DBase/src/ShaderResources.cpp b/Graphics/GraphicsEngineD3DBase/src/ShaderResources.cpp index ae8e5d8a..0482ee5a 100644 --- a/Graphics/GraphicsEngineD3DBase/src/ShaderResources.cpp +++ b/Graphics/GraphicsEngineD3DBase/src/ShaderResources.cpp @@ -221,17 +221,37 @@ void ShaderResources::DvpVerifyResourceLayout(const PipelineResourceLayoutDesc& auto GetAllowedShadersString = [&](SHADER_TYPE ShaderStages) // { std::string ShadersStr; - for (Uint32 s = 0; s < NumShaders; ++s) + while (ShaderStages != SHADER_TYPE_UNKNOWN) { - const auto& Resources = *pShaderResources[s]; - if ((ShaderStages & Resources.GetShaderType()) != 0) + const auto ShaderType = ShaderStages & static_cast<SHADER_TYPE>(~(static_cast<Uint32>(ShaderStages) - 1)); + const char* ShaderName = nullptr; + for (Uint32 s = 0; s < NumShaders; ++s) { - ShadersStr.append(ShadersStr.empty() ? "'" : ", '"); - ShadersStr.append(Resources.GetShaderName()); - ShadersStr.append("' ("); - ShadersStr.append(GetShaderTypeLiteralName(Resources.GetShaderType())); - ShadersStr.push_back(')'); + const auto& Resources = *pShaderResources[s]; + if ((ShaderStages & Resources.GetShaderType()) != 0) + { + ShaderName = Resources.GetShaderName(); + break; + } } + + if (!ShadersStr.empty()) + ShadersStr.append(", "); + ShadersStr.append(GetShaderTypeLiteralName(ShaderType)); + ShadersStr.append(" ("); + if (ShaderName) + { + ShadersStr.push_back('\''); + ShadersStr.append(ShaderName ? ShaderName : "<Not enabled in PSO>"); + ShadersStr.push_back('\''); + } + else + { + ShadersStr.append("Not enabled in PSO"); + } + ShadersStr.append(")"); + + ShaderStages &= ~ShaderType; } return ShadersStr; }; |
