From a0579f75fb5aa6926f4acfdee3fa91f2666df559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 24 Dec 2024 15:00:39 -0500 Subject: [PATCH] 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: 9b7ea720c93 - radeonsi: use nir->info instead of sel->info.base Reviewed-by: Qiang Yu Part-of: --- src/gallium/drivers/radeonsi/si_shader_llvm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm.c b/src/gallium/drivers/radeonsi/si_shader_llvm.c index 620953e817f..bd0309744de 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm.c @@ -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; }