diff options
Diffstat (limited to 'src/3rdparty/angle/src/compiler/translator/util.h')
-rw-r--r-- | src/3rdparty/angle/src/compiler/translator/util.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/3rdparty/angle/src/compiler/translator/util.h b/src/3rdparty/angle/src/compiler/translator/util.h index dc69f39060..5c214dd4fb 100644 --- a/src/3rdparty/angle/src/compiler/translator/util.h +++ b/src/3rdparty/angle/src/compiler/translator/util.h @@ -7,6 +7,12 @@ #ifndef COMPILER_UTIL_H #define COMPILER_UTIL_H +#include <stack> + +#include "compiler/translator/Types.h" +#include "angle_gl.h" +#include "common/shadervars.h" + // atof_clamp is like atof but // 1. it forces C locale, i.e. forcing '.' as decimal point. // 2. it clamps the value to -FLT_MAX or FLT_MAX if overflow happens. @@ -17,4 +23,44 @@ extern bool atof_clamp(const char *str, float *value); // Return false if overflow happens. extern bool atoi_clamp(const char *str, int *value); +namespace sh +{ + +GLenum GLVariableType(const TType &type); +GLenum GLVariablePrecision(const TType &type); +bool IsVaryingIn(TQualifier qualifier); +bool IsVaryingOut(TQualifier qualifier); +bool IsVarying(TQualifier qualifier); +InterpolationType GetInterpolationType(TQualifier qualifier); +BlockLayoutType GetBlockLayoutType(TLayoutBlockStorage blockStorage); +TString ArrayString(const TType &type); + +template <typename VarT> +class GetVariableTraverser +{ + public: + GetVariableTraverser(std::vector<VarT> *output); + void traverse(const TType &type, const TString &name); + + protected: + // May be overloaded + virtual void visitVariable(VarT *newVar) {} + + private: + std::stack<std::vector<VarT> *> mOutputStack; +}; + +struct GetInterfaceBlockFieldTraverser : public GetVariableTraverser<InterfaceBlockField> +{ + public: + GetInterfaceBlockFieldTraverser(std::vector<InterfaceBlockField> *output, bool isRowMajorMatrix); + + private: + virtual void visitVariable(InterfaceBlockField *newField); + + bool mIsRowMajorMatrix; +}; + +} + #endif // COMPILER_UTIL_H |