[Mesa-dev] [PATCH v2] glsl: Correct several built-in functions availability

Timothy Arceri tarceri at itsqueeze.com
Wed Oct 31 22:05:11 UTC 2018


If we are going to start tightening up this stuff I would really really 
like to see CTS tests (not piglit tests) to go along with this stuff.

We are already way stricter with these type of things than the closed 
source drivers and this leads to some apps not working. Before we go 
ahead and tighten things up more we should get this stuff covered by the 
CTS so that we are not the only ones enforcing the rules (i.e. fighting 
an unwinnable battle).

On 1/11/18 5:37 am, Vadym Shovkoplias wrote:
> 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)
> 
> v2: genIType sign(genIType x) was added in 1.30 GLSL spec, not in
> 1.50 spec
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108160
> Signed-off-by: Vadym Shovkoplias <vadym.shovkoplias at globallogic.com>
> ---
>   src/compiler/glsl/builtin_functions.cpp | 30 ++++++++++++-------------
>   1 file changed, 15 insertions(+), 15 deletions(-)
> 
> diff --git a/src/compiler/glsl/builtin_functions.cpp b/src/compiler/glsl/builtin_functions.cpp
> index 5650365d1d..52e0599ad2 100644
> --- a/src/compiler/glsl/builtin_functions.cpp
> +++ b/src/compiler/glsl/builtin_functions.cpp
> @@ -1439,10 +1439,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 +1534,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),              \
> @@ -1611,9 +1611,9 @@ builtin_builder::create_builtins()
>      FI64(abs)
>      FI64(sign)
>      FD(floor)
> -   FD(trunc)
> -   FD(round)
> -   FD(roundEven)
> +   FD130(trunc)
> +   FD130(round)
> +   FD130(roundEven)
>      FD(ceil)
>      FD(fract)
>   
> @@ -1637,7 +1637,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)
> 


More information about the mesa-dev mailing list