In GLSL versions 1.00 ES, 1.10 and 1.20, Mesa includes some built-in functions which shouldn't be present in that version, namely:
genIType abs(genIType x) genIType sign(genIType x) genIType min(genIType x, genIType y) genIType min(genIType x, int y) genIType max(genIType x, genIType y) genIType max(genIType x, int y) genIType clamp(genIType x, genIType minVal, genIType maxVal) genIType clamp(genIType x, int minVal, int maxVal) genType trunc(genType x) genType round(genType x) genType roundEven(genType x) genType modf(genType x, out genType i) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108160 Signed-off-by: Vadym Shovkoplias <vadym.shovkopl...@globallogic.com> --- src/compiler/glsl/builtin_functions.cpp | 57 ++++++++++++++++++------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/src/compiler/glsl/builtin_functions.cpp b/src/compiler/glsl/builtin_functions.cpp index 5650365d1d..2b549312b5 100644 --- a/src/compiler/glsl/builtin_functions.cpp +++ b/src/compiler/glsl/builtin_functions.cpp @@ -144,6 +144,12 @@ v130(const _mesa_glsl_parse_state *state) return state->is_version(130, 300); } +static bool +v150(const _mesa_glsl_parse_state *state) +{ + return state->is_version(150, 300); +} + static bool v130_desktop(const _mesa_glsl_parse_state *state) { @@ -1439,10 +1445,10 @@ builtin_builder::create_builtins() _##NAME(always_available, glsl_type::vec2_type), \ _##NAME(always_available, glsl_type::vec3_type), \ _##NAME(always_available, glsl_type::vec4_type), \ - _##NAME(always_available, glsl_type::int_type), \ - _##NAME(always_available, glsl_type::ivec2_type), \ - _##NAME(always_available, glsl_type::ivec3_type), \ - _##NAME(always_available, glsl_type::ivec4_type), \ + _##NAME(v130, glsl_type::int_type), \ + _##NAME(v130, glsl_type::ivec2_type), \ + _##NAME(v130, glsl_type::ivec3_type), \ + _##NAME(v130, glsl_type::ivec4_type), \ _##NAME(fp64, glsl_type::double_type), \ _##NAME(fp64, glsl_type::dvec2_type), \ _##NAME(fp64, glsl_type::dvec3_type), \ @@ -1534,14 +1540,14 @@ builtin_builder::create_builtins() _##NAME(always_available, glsl_type::vec3_type, glsl_type::vec3_type), \ _##NAME(always_available, glsl_type::vec4_type, glsl_type::vec4_type), \ \ - _##NAME(always_available, glsl_type::int_type, glsl_type::int_type), \ - _##NAME(always_available, glsl_type::ivec2_type, glsl_type::int_type), \ - _##NAME(always_available, glsl_type::ivec3_type, glsl_type::int_type), \ - _##NAME(always_available, glsl_type::ivec4_type, glsl_type::int_type), \ + _##NAME(v130, glsl_type::int_type, glsl_type::int_type), \ + _##NAME(v130, glsl_type::ivec2_type, glsl_type::int_type), \ + _##NAME(v130, glsl_type::ivec3_type, glsl_type::int_type), \ + _##NAME(v130, glsl_type::ivec4_type, glsl_type::int_type), \ \ - _##NAME(always_available, glsl_type::ivec2_type, glsl_type::ivec2_type), \ - _##NAME(always_available, glsl_type::ivec3_type, glsl_type::ivec3_type), \ - _##NAME(always_available, glsl_type::ivec4_type, glsl_type::ivec4_type), \ + _##NAME(v130, glsl_type::ivec2_type, glsl_type::ivec2_type), \ + _##NAME(v130, glsl_type::ivec3_type, glsl_type::ivec3_type), \ + _##NAME(v130, glsl_type::ivec4_type, glsl_type::ivec4_type), \ \ _##NAME(v130, glsl_type::uint_type, glsl_type::uint_type), \ _##NAME(v130, glsl_type::uvec2_type, glsl_type::uint_type), \ @@ -1609,11 +1615,30 @@ builtin_builder::create_builtins() FD(sqrt) FD(inversesqrt) FI64(abs) - FI64(sign) + + add_function("sign", \ + _sign(always_available, glsl_type::float_type), \ + _sign(always_available, glsl_type::vec2_type), \ + _sign(always_available, glsl_type::vec3_type), \ + _sign(always_available, glsl_type::vec4_type), \ + _sign(v150, glsl_type::int_type), \ + _sign(v150, glsl_type::ivec2_type), \ + _sign(v150, glsl_type::ivec3_type), \ + _sign(v150, glsl_type::ivec4_type), \ + _sign(fp64, glsl_type::double_type), \ + _sign(fp64, glsl_type::dvec2_type), \ + _sign(fp64, glsl_type::dvec3_type), \ + _sign(fp64, glsl_type::dvec4_type), \ + _sign(int64, glsl_type::int64_t_type), \ + _sign(int64, glsl_type::i64vec2_type), \ + _sign(int64, glsl_type::i64vec3_type), \ + _sign(int64, glsl_type::i64vec4_type), \ + 0); + FD(floor) - FD(trunc) - FD(round) - FD(roundEven) + FD130(trunc) + FD130(round) + FD130(roundEven) FD(ceil) FD(fract) @@ -1637,7 +1662,7 @@ builtin_builder::create_builtins() _mod(fp64, glsl_type::dvec4_type, glsl_type::dvec4_type), NULL); - FD(modf) + FD130(modf) FIUD2_MIXED(min) FIUD2_MIXED(max) -- 2.19.1 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit