[Mesa-dev] [PATCH] glsl/linker: specify proper direction in location aliasing error

Timothy Arceri tarceri at itsqueeze.com
Mon Jan 7 23:34:26 UTC 2019


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

On 8/1/19 1:11 am, Andres Gomez wrote:
> The check for location aliasing was always asuming output variables
> but this validation is also called for input variables.
> 
> Fixes: e2abb75b0e4 ("glsl/linker: validate explicit locations for SSO programs")
> Cc: Iago Toral Quiroga <itoral at igalia.com>
> Signed-off-by: Andres Gomez <agomez at igalia.com>
> ---
>   src/compiler/glsl/link_varyings.cpp | 15 ++++++++++-----
>   1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp
> index 52e493cb599..3969c0120b3 100644
> --- a/src/compiler/glsl/link_varyings.cpp
> +++ b/src/compiler/glsl/link_varyings.cpp
> @@ -481,9 +481,10 @@ check_location_aliasing(struct explicit_location_info explicit_locations[][4],
>               /* Component aliasing is not alloed */
>               if (comp >= component && comp < last_comp) {
>                  linker_error(prog,
> -                            "%s shader has multiple outputs explicitly "
> +                            "%s shader has multiple %sputs explicitly "
>                               "assigned to location %d and component %d\n",
>                               _mesa_shader_stage_to_string(stage),
> +                            var->data.mode == ir_var_shader_in ? "in" : "out",
>                               location, comp);
>                  return false;
>               } else {
> @@ -502,10 +503,12 @@ check_location_aliasing(struct explicit_location_info explicit_locations[][4],
>   
>                  if (info->interpolation != interpolation) {
>                     linker_error(prog,
> -                               "%s shader has multiple outputs at explicit "
> +                               "%s shader has multiple %sputs at explicit "
>                                  "location %u with different interpolation "
>                                  "settings\n",
> -                               _mesa_shader_stage_to_string(stage), location);
> +                               _mesa_shader_stage_to_string(stage),
> +                               var->data.mode == ir_var_shader_in ?
> +                               "in" : "out", location);
>                     return false;
>                  }
>   
> @@ -513,9 +516,11 @@ check_location_aliasing(struct explicit_location_info explicit_locations[][4],
>                      info->sample != sample ||
>                      info->patch != patch) {
>                     linker_error(prog,
> -                               "%s shader has multiple outputs at explicit "
> +                               "%s shader has multiple %sputs at explicit "
>                                  "location %u with different aux storage\n",
> -                               _mesa_shader_stage_to_string(stage), location);
> +                               _mesa_shader_stage_to_string(stage),
> +                               var->data.mode == ir_var_shader_in ?
> +                               "in" : "out", location);
>                     return false;
>                  }
>               }
> 


More information about the mesa-dev mailing list