Module: Mesa Branch: main Commit: 43d83cfcf9fbb59af350ab734e66d771a3d30f86 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=43d83cfcf9fbb59af350ab734e66d771a3d30f86
Author: Qiang Yu <[email protected]> Date: Thu Dec 7 11:56:50 2023 +0800 radeonsi: fix legacy merged LS/ES workgroup size for aco compilation 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 <[email protected]> Signed-off-by: Qiang Yu <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26560> --- 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
