From 428164d87f8dc1d378236b4913538803653770c6 Mon Sep 17 00:00:00 2001 From: Andres Gomez Date: Mon, 7 Jan 2019 16:11:44 +0200 Subject: [PATCH] glsl/linker: specify proper direction in location aliasing error 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 Signed-off-by: Andres Gomez Reviewed-by: Timothy Arceri Reviewed-by: Iago Toral Quiroga --- 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 52e493c..3969c01 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; } } -- 2.7.4