summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/compiler/translator/util.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/compiler/translator/util.h')
-rw-r--r--src/3rdparty/angle/src/compiler/translator/util.h60
1 files changed, 29 insertions, 31 deletions
diff --git a/src/3rdparty/angle/src/compiler/translator/util.h b/src/3rdparty/angle/src/compiler/translator/util.h
index ea7a35a352..6d6dc95b3b 100644
--- a/src/3rdparty/angle/src/compiler/translator/util.h
+++ b/src/3rdparty/angle/src/compiler/translator/util.h
@@ -12,54 +12,52 @@
#include "angle_gl.h"
#include <GLSLANG/ShaderLang.h>
+#include "compiler/translator/HashNames.h"
+#include "compiler/translator/Operator.h"
#include "compiler/translator/Types.h"
-// strtof_clamp is like strtof 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.
-// Return false if overflow happens.
-bool strtof_clamp(const std::string &str, float *value);
-
// If overflow happens, clamp the value to UINT_MIN or UINT_MAX.
// Return false if overflow happens.
bool atoi_clamp(const char *str, unsigned int *value);
-class TSymbolTable;
-
namespace sh
{
+class TSymbolTable;
+
+float NumericLexFloat32OutOfRangeToInfinity(const std::string &str);
+
+// strtof_clamp is like strtof but
+// 1. it forces C locale, i.e. forcing '.' as decimal point.
+// 2. it sets the value to infinity if overflow happens.
+// 3. str should be guaranteed to be in the valid format for a floating point number as defined
+// by the grammar in the ESSL 3.00.6 spec section 4.1.4.
+// Return false if overflow happens.
+bool strtof_clamp(const std::string &str, float *value);
GLenum GLVariableType(const TType &type);
GLenum GLVariablePrecision(const TType &type);
bool IsVaryingIn(TQualifier qualifier);
bool IsVaryingOut(TQualifier qualifier);
bool IsVarying(TQualifier qualifier);
+bool IsGeometryShaderInput(GLenum shaderType, TQualifier qualifier);
InterpolationType GetInterpolationType(TQualifier qualifier);
-TString ArrayString(const TType &type);
-class GetVariableTraverser : angle::NonCopyable
-{
- public:
- GetVariableTraverser(const TSymbolTable &symbolTable);
- virtual ~GetVariableTraverser() {}
-
- template <typename VarT>
- void traverse(const TType &type, const TString &name, std::vector<VarT> *output);
-
- protected:
- // May be overloaded
- virtual void visitVariable(ShaderVariable *newVar) {}
+// Returns array brackets including size with outermost array size first, as specified in GLSL ES
+// 3.10 section 4.1.9.
+TString ArrayString(const TType &type);
- private:
- // Helper function called by traverse() to fill specific fields
- // for attributes/varyings/uniforms.
- template <typename VarT>
- void setTypeSpecificInfo(
- const TType &type, const TString &name, VarT *variable) {}
+TString GetTypeName(const TType &type, ShHashFunction64 hashFunction, NameMap *nameMap);
- const TSymbolTable &mSymbolTable;
-};
+TType GetShaderVariableBasicType(const sh::ShaderVariable &var);
-}
+bool IsBuiltinOutputVariable(TQualifier qualifier);
+bool IsBuiltinFragmentInputVariable(TQualifier qualifier);
+bool CanBeInvariantESSL1(TQualifier qualifier);
+bool CanBeInvariantESSL3OrGreater(TQualifier qualifier);
+bool IsOutputESSL(ShShaderOutput output);
+bool IsOutputGLSL(ShShaderOutput output);
+bool IsOutputHLSL(ShShaderOutput output);
+bool IsOutputVulkan(ShShaderOutput output);
+} // namespace sh
-#endif // COMPILER_TRANSLATOR_UTIL_H_
+#endif // COMPILER_TRANSLATOR_UTIL_H_