summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Seurer <konstantin.seurer@gmail.com>2024-04-23 10:09:02 +0200
committerKonstantin Seurer <konstantin.seurer@gmail.com>2024-04-28 16:06:46 +0200
commitea863c0c1ccbc26ad6f9e1e6fbc834ebcd85bc3c (patch)
tree0d7982f7fd7d10c43aee621e9d5b20e6bea50005
parentcc9141f0449b84204172f5729ea3dbc1724239c0 (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.c18
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;
}