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/GraphicsEngineVulkan | |
| parent | Fixed minor issue in FilteringTools.hpp (diff) | |
| download | DiligentCore-e468c524507a254c8166bdaee88156a2f3092532.tar.gz DiligentCore-e468c524507a254c8166bdaee88156a2f3092532.zip | |
Improved PSO creation warnings
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
| -rw-r--r-- | Graphics/GraphicsEngineVulkan/src/ShaderResourceLayoutVk.cpp | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/Graphics/GraphicsEngineVulkan/src/ShaderResourceLayoutVk.cpp b/Graphics/GraphicsEngineVulkan/src/ShaderResourceLayoutVk.cpp index af258044..76c2692f 100644 --- a/Graphics/GraphicsEngineVulkan/src/ShaderResourceLayoutVk.cpp +++ b/Graphics/GraphicsEngineVulkan/src/ShaderResourceLayoutVk.cpp @@ -242,17 +242,37 @@ void ShaderResourceLayoutVk::dvpVerifyResourceLayoutDesc(Uint32 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; }; |
