[Mesa-dev] [PATCH v2 25/31] glsl: add is_valid_constructor() helper function

Timothy Arceri tarceri at itsqueeze.com
Wed Apr 26 04:40:41 UTC 2017


Patches 24-25 are:

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

On 24/04/17 20:35, Samuel Pitoiset wrote:
> This will help for the explicit conversions for sampler and
> image types as specified by ARB_bindless_texture.
> 
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>   src/compiler/glsl/ast_function.cpp | 10 ++++++++--
>   1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/src/compiler/glsl/ast_function.cpp b/src/compiler/glsl/ast_function.cpp
> index 00b930eb2c..6ec5eda043 100644
> --- a/src/compiler/glsl/ast_function.cpp
> +++ b/src/compiler/glsl/ast_function.cpp
> @@ -1930,6 +1930,12 @@ ast_function_expression::handle_method(exec_list *instructions,
>      return ir_rvalue::error_value(ctx);
>   }
>   
> +static inline bool is_valid_constructor(const glsl_type *type,
> +                                        struct _mesa_glsl_parse_state *state)
> +{
> +   return type->is_numeric() || type->is_boolean();
> +}
> +
>   ir_rvalue *
>   ast_function_expression::hir(exec_list *instructions,
>                                struct _mesa_glsl_parse_state *state)
> @@ -2007,7 +2013,7 @@ ast_function_expression::hir(exec_list *instructions,
>                                              state);
>         }
>   
> -      if (!constructor_type->is_numeric() && !constructor_type->is_boolean())
> +      if (!is_valid_constructor(constructor_type, state))
>            return ir_rvalue::error_value(ctx);
>   
>         /* Total number of components of the type being constructed. */
> @@ -2037,7 +2043,7 @@ ast_function_expression::hir(exec_list *instructions,
>               return ir_rvalue::error_value(ctx);
>            }
>   
> -         if (!result->type->is_numeric() && !result->type->is_boolean()) {
> +         if (!is_valid_constructor(result->type, state)) {
>               _mesa_glsl_error(& loc, state, "cannot construct `%s' from a "
>                                "non-numeric data type",
>                                constructor_type->name);
> 


More information about the mesa-dev mailing list