summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-04-01 01:38:49 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-04-01 01:38:49 +0000
commite468c524507a254c8166bdaee88156a2f3092532 (patch)
treed8eb914e316a63651a83eb0204f2137d36853491 /Graphics/GraphicsEngineVulkan
parentFixed minor issue in FilteringTools.hpp (diff)
downloadDiligentCore-e468c524507a254c8166bdaee88156a2f3092532.tar.gz
DiligentCore-e468c524507a254c8166bdaee88156a2f3092532.zip
Improved PSO creation warnings
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/src/ShaderResourceLayoutVk.cpp36
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;
};