mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 08:50:13 +01:00
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>
This commit is contained in:
parent
cc9141f044
commit
ea863c0c1c
1 changed files with 11 additions and 7 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue