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 <marek.olsak@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26560>
This commit is contained in:
Qiang Yu 2023-12-07 11:56:50 +08:00 committed by Marge Bot
parent e6b723ccce
commit 43d83cfcf9

View file

@ -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