<div dir="ltr">Sorry, wrong mailing list. It was intended for Mesa<div>Please ignore this. <div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr">ср, 31 окт. 2018 г. в 18:05, Vadym Shovkoplias <<a href="mailto:vadim.shovkoplias@gmail.com">vadim.shovkoplias@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">In GLSL versions 1.00 ES, 1.10 and 1.20, Mesa includes<br>
some built-in functions which shouldn't be present in<br>
that version, namely:<br>
<br>
genIType abs(genIType x)<br>
genIType sign(genIType x)<br>
genIType min(genIType x, genIType y)<br>
genIType min(genIType x, int y)<br>
genIType max(genIType x, genIType y)<br>
genIType max(genIType x, int y)<br>
genIType clamp(genIType x, genIType minVal, genIType maxVal)<br>
genIType clamp(genIType x, int minVal, int maxVal)<br>
genType trunc(genType x)<br>
genType round(genType x)<br>
genType roundEven(genType x)<br>
genType modf(genType x, out genType i)<br>
<br>
Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=108160" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=108160</a><br>
Signed-off-by: Vadym Shovkoplias <<a href="mailto:vadym.shovkoplias@globallogic.com" target="_blank">vadym.shovkoplias@globallogic.com</a>><br>
---<br>
src/compiler/glsl/builtin_functions.cpp | 57 ++++++++++++++++++-------<br>
1 file changed, 41 insertions(+), 16 deletions(-)<br>
<br>
diff --git a/src/compiler/glsl/builtin_functions.cpp b/src/compiler/glsl/builtin_functions.cpp<br>
index 5650365d1d..2b549312b5 100644<br>
--- a/src/compiler/glsl/builtin_functions.cpp<br>
+++ b/src/compiler/glsl/builtin_functions.cpp<br>
@@ -144,6 +144,12 @@ v130(const _mesa_glsl_parse_state *state)<br>
return state->is_version(130, 300);<br>
}<br>
<br>
+static bool<br>
+v150(const _mesa_glsl_parse_state *state)<br>
+{<br>
+ return state->is_version(150, 300);<br>
+}<br>
+<br>
static bool<br>
v130_desktop(const _mesa_glsl_parse_state *state)<br>
{<br>
@@ -1439,10 +1445,10 @@ builtin_builder::create_builtins()<br>
_##NAME(always_available, glsl_type::vec2_type), \<br>
_##NAME(always_available, glsl_type::vec3_type), \<br>
_##NAME(always_available, glsl_type::vec4_type), \<br>
- _##NAME(always_available, glsl_type::int_type), \<br>
- _##NAME(always_available, glsl_type::ivec2_type), \<br>
- _##NAME(always_available, glsl_type::ivec3_type), \<br>
- _##NAME(always_available, glsl_type::ivec4_type), \<br>
+ _##NAME(v130, glsl_type::int_type), \<br>
+ _##NAME(v130, glsl_type::ivec2_type), \<br>
+ _##NAME(v130, glsl_type::ivec3_type), \<br>
+ _##NAME(v130, glsl_type::ivec4_type), \<br>
_##NAME(fp64, glsl_type::double_type), \<br>
_##NAME(fp64, glsl_type::dvec2_type), \<br>
_##NAME(fp64, glsl_type::dvec3_type), \<br>
@@ -1534,14 +1540,14 @@ builtin_builder::create_builtins()<br>
_##NAME(always_available, glsl_type::vec3_type, glsl_type::vec3_type), \<br>
_##NAME(always_available, glsl_type::vec4_type, glsl_type::vec4_type), \<br>
\<br>
- _##NAME(always_available, glsl_type::int_type, glsl_type::int_type), \<br>
- _##NAME(always_available, glsl_type::ivec2_type, glsl_type::int_type), \<br>
- _##NAME(always_available, glsl_type::ivec3_type, glsl_type::int_type), \<br>
- _##NAME(always_available, glsl_type::ivec4_type, glsl_type::int_type), \<br>
+ _##NAME(v130, glsl_type::int_type, glsl_type::int_type), \<br>
+ _##NAME(v130, glsl_type::ivec2_type, glsl_type::int_type), \<br>
+ _##NAME(v130, glsl_type::ivec3_type, glsl_type::int_type), \<br>
+ _##NAME(v130, glsl_type::ivec4_type, glsl_type::int_type), \<br>
\<br>
- _##NAME(always_available, glsl_type::ivec2_type, glsl_type::ivec2_type), \<br>
- _##NAME(always_available, glsl_type::ivec3_type, glsl_type::ivec3_type), \<br>
- _##NAME(always_available, glsl_type::ivec4_type, glsl_type::ivec4_type), \<br>
+ _##NAME(v130, glsl_type::ivec2_type, glsl_type::ivec2_type), \<br>
+ _##NAME(v130, glsl_type::ivec3_type, glsl_type::ivec3_type), \<br>
+ _##NAME(v130, glsl_type::ivec4_type, glsl_type::ivec4_type), \<br>
\<br>
_##NAME(v130, glsl_type::uint_type, glsl_type::uint_type), \<br>
_##NAME(v130, glsl_type::uvec2_type, glsl_type::uint_type), \<br>
@@ -1609,11 +1615,30 @@ builtin_builder::create_builtins()<br>
FD(sqrt)<br>
FD(inversesqrt)<br>
FI64(abs)<br>
- FI64(sign)<br>
+<br>
+ add_function("sign", \<br>
+ _sign(always_available, glsl_type::float_type), \<br>
+ _sign(always_available, glsl_type::vec2_type), \<br>
+ _sign(always_available, glsl_type::vec3_type), \<br>
+ _sign(always_available, glsl_type::vec4_type), \<br>
+ _sign(v150, glsl_type::int_type), \<br>
+ _sign(v150, glsl_type::ivec2_type), \<br>
+ _sign(v150, glsl_type::ivec3_type), \<br>
+ _sign(v150, glsl_type::ivec4_type), \<br>
+ _sign(fp64, glsl_type::double_type), \<br>
+ _sign(fp64, glsl_type::dvec2_type), \<br>
+ _sign(fp64, glsl_type::dvec3_type), \<br>
+ _sign(fp64, glsl_type::dvec4_type), \<br>
+ _sign(int64, glsl_type::int64_t_type), \<br>
+ _sign(int64, glsl_type::i64vec2_type), \<br>
+ _sign(int64, glsl_type::i64vec3_type), \<br>
+ _sign(int64, glsl_type::i64vec4_type), \<br>
+ 0);<br>
+<br>
FD(floor)<br>
- FD(trunc)<br>
- FD(round)<br>
- FD(roundEven)<br>
+ FD130(trunc)<br>
+ FD130(round)<br>
+ FD130(roundEven)<br>
FD(ceil)<br>
FD(fract)<br>
<br>
@@ -1637,7 +1662,7 @@ builtin_builder::create_builtins()<br>
_mod(fp64, glsl_type::dvec4_type, glsl_type::dvec4_type),<br>
NULL);<br>
<br>
- FD(modf)<br>
+ FD130(modf)<br>
<br>
FIUD2_MIXED(min)<br>
FIUD2_MIXED(max)<br>
-- <br>
2.19.1<br>
<br>
</blockquote></div>