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

Reply via email to