diff --git a/.pick_status.json b/.pick_status.json index 4cc9f2bd4c9..cbcbd419822 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -224,7 +224,7 @@ "description": "nir/print: Do not access invalid indices of load_uniform", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a83fd26d0effc8e65ff601c2ad3314058b98f107", "notes": null 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; }