radeonsi: fix uses_instanceid for merged mono shader stage

prev_shader.info.uses_instanceid is set by si_nir_lower_vs_inputs()
when attribute divisor is used.

Fixes: 894d92995c ("radeonsi: monolithic VS emit prolog in nir directly")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9042
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23119>
This commit is contained in:
Qiang Yu 2023-05-19 10:18:02 +08:00 committed by Eric Engestrom
parent fae5b32981
commit e54ef18c9a
2 changed files with 5 additions and 3 deletions

View file

@ -2902,7 +2902,7 @@
"description": "radeonsi: fix uses_instanceid for merged mono shader stage",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "894d92995cdcecfabf061cbacf65c194ea84338b"
},

View file

@ -1139,7 +1139,8 @@ bool si_llvm_compile_shader(struct si_screen *sscreen, struct ac_llvm_compiler *
si_llvm_dispose(&ctx);
return false;
}
shader->info.uses_instanceid |= ls->info.uses_instanceid;
shader->info.uses_instanceid |=
ls->info.uses_instanceid || shader_ls.info.uses_instanceid;
parts[0] = ctx.main_fn;
for (int i = 0; i < ctx.args->ac.arg_count; i++)
@ -1184,7 +1185,8 @@ bool si_llvm_compile_shader(struct si_screen *sscreen, struct ac_llvm_compiler *
si_llvm_dispose(&ctx);
return false;
}
shader->info.uses_instanceid |= es->info.uses_instanceid;
shader->info.uses_instanceid |=
es->info.uses_instanceid || shader_es.info.uses_instanceid;
es_main = ctx.main_fn;
/* Preserve main (= es_main) arguments. */