From 43d83cfcf9fbb59af350ab734e66d771a3d30f86 Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Thu, 7 Dec 2023 11:56:50 +0800 Subject: [PATCH] radeonsi: fix legacy merged LS/ES workgroup size for aco compilation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is for ACO handling of nir_load_local_invocation_index, which will not add (wave_id * wave_size) if workgroup size <= wave size. So merged shader LS/ES need to set workgroup size too. Reviewed-by: Marek Olšák Signed-off-by: Qiang Yu Part-of: --- src/gallium/drivers/radeonsi/si_shader.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 3a9493af83a..ae841413534 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -157,8 +157,10 @@ unsigned si_get_max_workgroup_size(const struct si_shader *shader) /* Use the largest workgroup size for streamout */ if (shader->key.ge.as_ngg) return si_shader_uses_streamout(shader) ? 256 : 128; - else - return 0; + + /* As part of merged shader. */ + return shader->selector->screen->info.gfx_level >= GFX9 && + (shader->key.ge.as_ls || shader->key.ge.as_es) ? 128 : 0; case MESA_SHADER_TESS_CTRL: /* Return this so that LLVM doesn't remove s_barrier