diff options
Diffstat (limited to 'src/3rdparty/angle/src/compiler/translator/EmulatePrecision.h')
-rw-r--r-- | src/3rdparty/angle/src/compiler/translator/EmulatePrecision.h | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/3rdparty/angle/src/compiler/translator/EmulatePrecision.h b/src/3rdparty/angle/src/compiler/translator/EmulatePrecision.h index 08177b3414..8044465410 100644 --- a/src/3rdparty/angle/src/compiler/translator/EmulatePrecision.h +++ b/src/3rdparty/angle/src/compiler/translator/EmulatePrecision.h @@ -7,34 +7,43 @@ #ifndef COMPILER_TRANSLATOR_EMULATE_PRECISION_H_ #define COMPILER_TRANSLATOR_EMULATE_PRECISION_H_ +#include "GLSLANG/ShaderLang.h" #include "common/angleutils.h" #include "compiler/translator/Compiler.h" #include "compiler/translator/InfoSink.h" -#include "compiler/translator/IntermNode.h" -#include "GLSLANG/ShaderLang.h" +#include "compiler/translator/IntermTraverse.h" // This class gathers all compound assignments from the AST and can then write // the functions required for their precision emulation. This way there is no // need to write a huge number of variations of the emulated compound assignment // to every translated shader with emulation enabled. +namespace sh +{ + class EmulatePrecision : public TLValueTrackingTraverser { public: - EmulatePrecision(const TSymbolTable &symbolTable, int shaderVersion); + EmulatePrecision(TSymbolTable *symbolTable, int shaderVersion); void visitSymbol(TIntermSymbol *node) override; bool visitBinary(Visit visit, TIntermBinary *node) override; bool visitUnary(Visit visit, TIntermUnary *node) override; bool visitAggregate(Visit visit, TIntermAggregate *node) override; + bool visitInvariantDeclaration(Visit visit, TIntermInvariantDeclaration *node) override; + bool visitDeclaration(Visit visit, TIntermDeclaration *node) override; + bool visitFunctionPrototype(Visit visit, TIntermFunctionPrototype *node) override; + + void writeEmulationHelpers(TInfoSinkBase &sink, + const int shaderVersion, + const ShShaderOutput outputLanguage); - void writeEmulationHelpers(TInfoSinkBase& sink, ShShaderOutput outputLanguage); + static bool SupportedInLanguage(const ShShaderOutput outputLanguage); private: struct TypePair { - TypePair(const char *l, const char *r) - : lType(l), rType(r) { } + TypePair(const char *l, const char *r) : lType(l), rType(r) {} const char *lType; const char *rType; @@ -42,7 +51,7 @@ class EmulatePrecision : public TLValueTrackingTraverser struct TypePairComparator { - bool operator() (const TypePair& l, const TypePair& r) const + bool operator()(const TypePair &l, const TypePair &r) const { if (l.lType == r.lType) return l.rType < r.rType; @@ -59,4 +68,6 @@ class EmulatePrecision : public TLValueTrackingTraverser bool mDeclaringVariables; }; +} // namespace sh + #endif // COMPILER_TRANSLATOR_EMULATE_PRECISION_H_ |