summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/compiler/translator/ValidateLimitations.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/compiler/translator/ValidateLimitations.h')
-rw-r--r--src/3rdparty/angle/src/compiler/translator/ValidateLimitations.h58
1 files changed, 11 insertions, 47 deletions
diff --git a/src/3rdparty/angle/src/compiler/translator/ValidateLimitations.h b/src/3rdparty/angle/src/compiler/translator/ValidateLimitations.h
index 666e38ff5c..9149b8c216 100644
--- a/src/3rdparty/angle/src/compiler/translator/ValidateLimitations.h
+++ b/src/3rdparty/angle/src/compiler/translator/ValidateLimitations.h
@@ -8,56 +8,20 @@
#define COMPILER_TRANSLATOR_VALIDATELIMITATIONS_H_
#include "compiler/translator/IntermNode.h"
-#include "compiler/translator/LoopInfo.h"
-class TInfoSinkBase;
-
-// Traverses intermediate tree to ensure that the shader does not exceed the
-// minimum functionality mandated in GLSL 1.0 spec, Appendix A.
-class ValidateLimitations : public TIntermTraverser
+namespace sh
{
- public:
- ValidateLimitations(sh::GLenum shaderType, TInfoSinkBase *sink);
-
- int numErrors() const { return mNumErrors; }
-
- bool visitBinary(Visit, TIntermBinary *) override;
- bool visitUnary(Visit, TIntermUnary *) override;
- bool visitAggregate(Visit, TIntermAggregate *) override;
- bool visitLoop(Visit, TIntermLoop *) override;
-
- static bool IsLimitedForLoop(TIntermLoop *node);
-
- private:
- void error(TSourceLoc loc, const char *reason, const char *token);
-
- bool withinLoopBody() const;
- bool isLoopIndex(TIntermSymbol *symbol);
- bool validateLoopType(TIntermLoop *node);
-
- bool validateForLoopHeader(TIntermLoop *node);
- // If valid, return the index symbol id; Otherwise, return -1.
- int validateForLoopInit(TIntermLoop *node);
- bool validateForLoopCond(TIntermLoop *node, int indexSymbolId);
- bool validateForLoopExpr(TIntermLoop *node, int indexSymbolId);
- // Returns true if none of the loop indices is used as the argument to
- // the given function out or inout parameter.
- bool validateFunctionCall(TIntermAggregate *node);
- bool validateOperation(TIntermOperator *node, TIntermNode *operand);
+class TDiagnostics;
- // Returns true if indexing does not exceed the minimum functionality
- // mandated in GLSL 1.0 spec, Appendix A, Section 5.
- bool isConstExpr(TIntermNode *node);
- bool isConstIndexExpr(TIntermNode *node);
- bool validateIndexing(TIntermBinary *node);
+// Returns true if the given shader does not exceed the minimum functionality mandated in GLSL ES
+// 1.00 spec Appendix A.
+bool ValidateLimitations(TIntermNode *root,
+ GLenum shaderType,
+ TSymbolTable *symbolTable,
+ int shaderVersion,
+ TDiagnostics *diagnostics);
- sh::GLenum mShaderType;
- TInfoSinkBase *mSink;
- int mNumErrors;
- TLoopStack mLoopStack;
- bool mValidateIndexing;
- bool mValidateInnerLoops;
-};
+} // namespace sh
-#endif // COMPILER_TRANSLATOR_VALIDATELIMITATIONS_H_
+#endif // COMPILER_TRANSLATOR_VALIDATELIMITATIONS_H_