From e468c524507a254c8166bdaee88156a2f3092532 Mon Sep 17 00:00:00 2001 From: assiduous Date: Tue, 31 Mar 2020 18:38:49 -0700 Subject: Improved PSO creation warnings --- .../src/ShaderResourceLayoutVk.cpp | 36 +++++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) (limited to 'Graphics/GraphicsEngineVulkan') 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(~(static_cast(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 : ""); + ShadersStr.push_back('\''); + } + else + { + ShadersStr.append("Not enabled in PSO"); + } + ShadersStr.append(")"); + + ShaderStages &= ~ShaderType; } return ShadersStr; }; -- cgit v1.2.3