[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