diff options
author | Konstantin Seurer <konstantin.seurer@gmail.com> | 2024-04-23 10:09:02 +0200 |
---|---|---|
committer | Konstantin Seurer <konstantin.seurer@gmail.com> | 2024-04-28 16:06:46 +0200 |
commit | ea863c0c1ccbc26ad6f9e1e6fbc834ebcd85bc3c (patch) | |
tree | 0d7982f7fd7d10c43aee621e9d5b20e6bea50005 | |
parent | cc9141f0449b84204172f5729ea3dbc1724239c0 (diff) |
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 <michael.blumenkrantz@gmail.com>
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28962>
-rw-r--r-- | src/compiler/nir/nir_print.c | 18 |
1 files 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; } |