Fix compilation

This commit is contained in:
Jérôme Leclercq
2022-03-04 18:16:12 +01:00
parent 0c3607579e
commit 1919bd3302
22 changed files with 322 additions and 136 deletions

View File

@@ -10,9 +10,7 @@
#include <Nazara/Prerequisites.hpp>
#include <Nazara/Shader/Config.hpp>
#include <Nazara/Shader/Ast/AstCloner.hpp>
#include <optional>
#include <unordered_map>
#include <vector>
#include <Nazara/Shader/Ast/Module.hpp>
namespace Nz::ShaderAst
{
@@ -28,6 +26,8 @@ namespace Nz::ShaderAst
inline ExpressionPtr Process(Expression& expression);
inline ExpressionPtr Process(Expression& expression, const Options& options);
ModulePtr Process(const Module& shaderModule);
ModulePtr Process(const Module& shaderModule, const Options& options);
inline StatementPtr Process(Statement& statement);
inline StatementPtr Process(Statement& statement, const Options& options);
@@ -65,6 +65,8 @@ namespace Nz::ShaderAst
inline ExpressionPtr PropagateConstants(Expression& expr);
inline ExpressionPtr PropagateConstants(Expression& expr, const AstConstantPropagationVisitor::Options& options);
inline ModulePtr PropagateConstants(const Module& shaderModule);
inline ModulePtr PropagateConstants(const Module& shaderModule, const AstConstantPropagationVisitor::Options& options);
inline StatementPtr PropagateConstants(Statement& ast);
inline StatementPtr PropagateConstants(Statement& ast, const AstConstantPropagationVisitor::Options& options);
}

View File

@@ -43,6 +43,18 @@ namespace Nz::ShaderAst
return optimize.Process(ast, options);
}
inline ModulePtr PropagateConstants(const Module& shaderModule)
{
AstConstantPropagationVisitor optimize;
return optimize.Process(shaderModule);
}
inline ModulePtr PropagateConstants(const Module& shaderModule, const AstConstantPropagationVisitor::Options& options)
{
AstConstantPropagationVisitor optimize;
return optimize.Process(shaderModule, options);
}
inline StatementPtr PropagateConstants(Statement& ast)
{
AstConstantPropagationVisitor optimize;

View File

@@ -12,6 +12,7 @@
#include <Nazara/Shader/Config.hpp>
#include <Nazara/Shader/Ast/AstCloner.hpp>
#include <Nazara/Shader/Ast/DependencyCheckerVisitor.hpp>
#include <Nazara/Shader/Ast/Module.hpp>
namespace Nz::ShaderAst
{
@@ -23,6 +24,7 @@ namespace Nz::ShaderAst
EliminateUnusedPassVisitor(EliminateUnusedPassVisitor&&) = delete;
~EliminateUnusedPassVisitor() = default;
ModulePtr Process(const Module& shaderModule, const DependencyCheckerVisitor::UsageSet& usageSet);
StatementPtr Process(Statement& statement, const DependencyCheckerVisitor::UsageSet& usageSet);
EliminateUnusedPassVisitor& operator=(const EliminateUnusedPassVisitor&) = delete;
@@ -43,6 +45,10 @@ namespace Nz::ShaderAst
Context* m_context;
};
inline ModulePtr EliminateUnusedPass(const Module& shaderModule);
inline ModulePtr EliminateUnusedPass(const Module& shaderModule, const DependencyCheckerVisitor::Config& config);
inline ModulePtr EliminateUnusedPass(const Module& shaderModule, const DependencyCheckerVisitor::UsageSet& usageSet);
inline StatementPtr EliminateUnusedPass(Statement& ast);
inline StatementPtr EliminateUnusedPass(Statement& ast, const DependencyCheckerVisitor::Config& config);
inline StatementPtr EliminateUnusedPass(Statement& ast, const DependencyCheckerVisitor::UsageSet& usageSet);

View File

@@ -7,6 +7,27 @@
namespace Nz::ShaderAst
{
inline ModulePtr EliminateUnusedPass(const Module& shaderModule)
{
DependencyCheckerVisitor::Config defaultConfig;
return EliminateUnusedPass(shaderModule, defaultConfig);
}
inline ModulePtr EliminateUnusedPass(const Module& shaderModule, const DependencyCheckerVisitor::Config& config)
{
DependencyCheckerVisitor dependencyVisitor;
dependencyVisitor.Process(*shaderModule.rootNode, config);
dependencyVisitor.Resolve();
return EliminateUnusedPass(shaderModule, dependencyVisitor.GetUsage());
}
ModulePtr EliminateUnusedPass(const Module& shaderModule, const DependencyCheckerVisitor::UsageSet& usageSet)
{
EliminateUnusedPassVisitor visitor;
return visitor.Process(shaderModule, usageSet);
}
inline StatementPtr EliminateUnusedPass(Statement& ast)
{
DependencyCheckerVisitor::Config defaultConfig;

View File

@@ -31,8 +31,8 @@ namespace Nz::ShaderAst
SanitizeVisitor(SanitizeVisitor&&) = delete;
~SanitizeVisitor() = default;
inline ModulePtr Sanitize(Module& module, std::string* error = nullptr);
ModulePtr Sanitize(Module& module, const Options& options, std::string* error = nullptr);
inline ModulePtr Sanitize(const Module& module, std::string* error = nullptr);
ModulePtr Sanitize(const Module& module, const Options& options, std::string* error = nullptr);
SanitizeVisitor& operator=(const SanitizeVisitor&) = delete;
SanitizeVisitor& operator=(SanitizeVisitor&&) = delete;
@@ -178,8 +178,8 @@ namespace Nz::ShaderAst
Context* m_context;
};
inline ModulePtr Sanitize(Module& module, std::string* error = nullptr);
inline ModulePtr Sanitize(Module& module, const SanitizeVisitor::Options& options, std::string* error = nullptr);
inline ModulePtr Sanitize(const Module& module, std::string* error = nullptr);
inline ModulePtr Sanitize(const Module& module, const SanitizeVisitor::Options& options, std::string* error = nullptr);
}
#include <Nazara/Shader/Ast/SanitizeVisitor.inl>

View File

@@ -7,18 +7,18 @@
namespace Nz::ShaderAst
{
inline ModulePtr SanitizeVisitor::Sanitize(Module& module, std::string* error)
inline ModulePtr SanitizeVisitor::Sanitize(const Module& module, std::string* error)
{
return Sanitize(module, {}, error);
}
inline ModulePtr Sanitize(Module& module, std::string* error)
inline ModulePtr Sanitize(const Module& module, std::string* error)
{
SanitizeVisitor sanitizer;
return sanitizer.Sanitize(module, error);
}
inline ModulePtr Sanitize(Module& module, const SanitizeVisitor::Options& options, std::string* error)
inline ModulePtr Sanitize(const Module& module, const SanitizeVisitor::Options& options, std::string* error)
{
SanitizeVisitor sanitizer;
return sanitizer.Sanitize(module, options, error);