From ea863c0c1ccbc26ad6f9e1e6fbc834ebcd85bc3c Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Tue, 23 Apr 2024 10:09:02 +0200 Subject: [PATCH] nir/print: Do not access invalid indices of load_uniform load_uniform does not have io_semantics and component. Fixes: a83fd26 ("nir/print: stop trying to match i/o vars using base/driver_location") Reviewed-By: Mike Blumenkrantz Reviewed-by: Christian Gmeiner Part-of: --- src/compiler/nir/nir_print.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c index 33e5f396679..bf7304e0d2a 100644 --- a/src/compiler/nir/nir_print.c +++ b/src/compiler/nir/nir_print.c @@ -1639,13 +1639,17 @@ print_intrinsic_instr(nir_intrinsic_instr *instr, print_state *state) nir_foreach_variable_with_modes(var, state->shader, var_mode) { if (!var->name) continue; - if (((instr->intrinsic == nir_intrinsic_load_uniform && - var->data.driver_location == nir_intrinsic_base(instr)) || - (instr->intrinsic != nir_intrinsic_load_uniform && - var->data.location == nir_intrinsic_io_semantics(instr).location)) && - ((nir_intrinsic_component(instr) >= var->data.location_frac && - nir_intrinsic_component(instr) < - (var->data.location_frac + glsl_get_components(var->type))))) { + + bool match; + if (instr->intrinsic == nir_intrinsic_load_uniform) { + match = var->data.driver_location == nir_intrinsic_base(instr); + } else { + match = nir_intrinsic_component(instr) >= var->data.location_frac && + nir_intrinsic_component(instr) < + (var->data.location_frac + glsl_get_components(var->type)); + } + + if (match) { fprintf(fp, " // %s", var->name); break; }