[Mesa-dev] [PATCH 5/6] glsl: Allow int -> uint implicit conversions on function parameters

Chris Forbes chrisf at ijw.co.nz
Sat May 3 23:05:05 PDT 2014


This doesn't actually work --
call_link_visitor::find_matching_signature passes a NULL state pointer
in here.

On Sun, Apr 27, 2014 at 9:44 PM, Chris Forbes <chrisf at ijw.co.nz> wrote:
> Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
> ---
>  src/glsl/glsl_types.cpp | 16 +++++++++++++---
>  1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp
> index eb03a66..39c34c0 100644
> --- a/src/glsl/glsl_types.cpp
> +++ b/src/glsl/glsl_types.cpp
> @@ -688,10 +688,20 @@ glsl_type::can_implicitly_convert_to(const glsl_type *desired,
>     if (this->matrix_columns > 1 || desired->matrix_columns > 1)
>        return false;
>
> +   /* Vector size must match. */
> +   if (this->vector_elements != desired->vector_elements)
> +      return false;
> +
>     /* int and uint can be converted to float. */
> -   return desired->is_float()
> -          && this->is_integer()
> -          && this->vector_elements == desired->vector_elements;
> +   if (desired->is_float() && this->is_integer())
> +      return true;
> +
> +   /* With GLSL 4.0 / ARB_gpu_shader5, int can be converted to uint. */
> +   if ((state->is_version(400, 0) || state->ARB_gpu_shader5_enable) &&
> +         desired->base_type == GLSL_TYPE_UINT && this->base_type == GLSL_TYPE_INT)
> +      return true;
> +
> +   return false;
>  }
>
>  unsigned
> --
> 1.9.2
>


More information about the mesa-dev mailing list