radeonsi: fix a TCS regression

This change caused the regression:
@@ -853,7 +853,7 @@ bool si_llvm_compile_shader(struct si_screen *sscreen, struct ac_llvm_compiler *

       /* Reset the shader context. */
       ctx.shader = shader;
-      ctx.stage = sel->stage;
+      ctx.stage = nir->info.stage;

       bool same_thread_count = shader->key.ge.opt.same_patch_vertices;
       si_build_wrapper_function(&ctx, parts, same_thread_count);

because "nir" contains the previous shader (LS), not the current shader (HS).
Fix it by using prev_nir for the previous shader, so that we can keep using
"nir".

Fixes: 9b7ea720c9 - radeonsi: use nir->info instead of sel->info.base

Reviewed-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32780>
This commit is contained in:
Marek Olšák 2024-12-24 15:00:39 -05:00 committed by Marge Bot
parent 227a894775
commit a0579f75fb

View file

@ -840,12 +840,12 @@ bool si_llvm_compile_shader(struct si_screen *sscreen, struct ac_llvm_compiler *
struct si_shader prev_shader = {};
bool free_nir;
nir = si_get_prev_stage_nir_shader(shader, &prev_shader, ctx.args, &free_nir);
nir_shader *prev_nir = si_get_prev_stage_nir_shader(shader, &prev_shader, ctx.args, &free_nir);
struct ac_llvm_pointer parts[2];
parts[1] = ctx.main_fn;
if (!si_llvm_translate_nir(&ctx, &prev_shader, nir, free_nir)) {
if (!si_llvm_translate_nir(&ctx, &prev_shader, prev_nir, free_nir)) {
si_llvm_dispose(&ctx);
return false;
}