From 073f1dc434c979e27c52cacfc44549ff7969e3bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 4 Mar 2022 18:32:06 +0100 Subject: [PATCH] Shader/DependencyCheckerVisitor: Update default config --- include/Nazara/Shader/Ast/DependencyCheckerVisitor.hpp | 4 +++- include/Nazara/Shader/Ast/DependencyCheckerVisitor.inl | 5 +++++ src/Nazara/Shader/SpirvWriter.cpp | 5 ++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/Nazara/Shader/Ast/DependencyCheckerVisitor.hpp b/include/Nazara/Shader/Ast/DependencyCheckerVisitor.hpp index 0361b7951..ad72e8ee4 100644 --- a/include/Nazara/Shader/Ast/DependencyCheckerVisitor.hpp +++ b/include/Nazara/Shader/Ast/DependencyCheckerVisitor.hpp @@ -27,6 +27,8 @@ namespace Nz::ShaderAst inline const UsageSet& GetUsage() const; + inline void MarkStructAsUsed(std::size_t structIndex); + inline void Process(Statement& statement); void Process(Statement& statement, const Config& config); @@ -37,7 +39,7 @@ namespace Nz::ShaderAst struct Config { - ShaderStageTypeFlags usedShaderStages = ShaderStageType_All; + ShaderStageTypeFlags usedShaderStages; }; struct UsageSet diff --git a/include/Nazara/Shader/Ast/DependencyCheckerVisitor.inl b/include/Nazara/Shader/Ast/DependencyCheckerVisitor.inl index 034af84fb..f1708fd41 100644 --- a/include/Nazara/Shader/Ast/DependencyCheckerVisitor.inl +++ b/include/Nazara/Shader/Ast/DependencyCheckerVisitor.inl @@ -12,6 +12,11 @@ namespace Nz::ShaderAst return m_resolvedUsage; } + inline void DependencyCheckerVisitor::MarkStructAsUsed(std::size_t structIndex) + { + m_globalUsage.usedStructs.UnboundedSet(structIndex); + } + inline void DependencyCheckerVisitor::Process(Statement& statement) { Config defaultConfig; diff --git a/src/Nazara/Shader/SpirvWriter.cpp b/src/Nazara/Shader/SpirvWriter.cpp index 079e2e9f4..702c8a202 100644 --- a/src/Nazara/Shader/SpirvWriter.cpp +++ b/src/Nazara/Shader/SpirvWriter.cpp @@ -522,8 +522,11 @@ namespace Nz { ShaderAst::StatementPtr tempAst; + ShaderAst::DependencyCheckerVisitor::Config dependencyConfig; + dependencyConfig.usedShaderStages = ShaderStageType_All; + tempAst = ShaderAst::PropagateConstants(*targetAst); - optimizedAst = ShaderAst::EliminateUnusedPass(*tempAst); + optimizedAst = ShaderAst::EliminateUnusedPass(*tempAst, dependencyConfig); targetAst = optimizedAst.get(); }