summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineD3DBase
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/GraphicsEngineD3DBase
parentFixed minor issue in FilteringTools.hpp (diff)
downloadDiligentCore-e468c524507a254c8166bdaee88156a2f3092532.tar.gz
DiligentCore-e468c524507a254c8166bdaee88156a2f3092532.zip
Improved PSO creation warnings
Diffstat (limited to 'Graphics/GraphicsEngineD3DBase')
-rw-r--r--Graphics/GraphicsEngineD3DBase/src/ShaderResources.cpp36
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;
};