Mesa (main): radeonsi,radv: fix a late alloc deadlock with <= 6 CUs per SA

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 8 18:55:48 UTC 2021


Module: Mesa
Branch: main
Commit: 66f254b4e6ca604c9e866248659dbd1d4a6de0b4
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=66f254b4e6ca604c9e866248659dbd1d4a6de0b4

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue Jul  6 23:06:43 2021 -0400

radeonsi,radv: fix a late alloc deadlock with <= 6 CUs per SA

We should always prevent 1 CU from executing VS and GS waves
to prevent a deadlock.

Fixes: c377f45c1833052 "radeonsi/gfx10: rewrite late alloc computation"

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11754>

---

 src/amd/vulkan/si_cmd_buffer.c                  | 2 --
 src/gallium/drivers/radeonsi/si_state.c         | 2 --
 src/gallium/drivers/radeonsi/si_state_shaders.c | 2 --
 3 files changed, 6 deletions(-)

diff --git a/src/amd/vulkan/si_cmd_buffer.c b/src/amd/vulkan/si_cmd_buffer.c
index 48e7bc64e40..ccffad4675b 100644
--- a/src/amd/vulkan/si_cmd_buffer.c
+++ b/src/amd/vulkan/si_cmd_buffer.c
@@ -345,8 +345,6 @@ si_emit_graphics(struct radv_device *device, struct radeon_cmdbuf *cs)
           */
          if (!physical_device->rad_info.use_late_alloc) {
             late_alloc_wave64 = 0;
-         } else if (num_cu_per_sh <= 6) {
-            late_alloc_wave64 = num_cu_per_sh - 2;
          } else {
             late_alloc_wave64 = (num_cu_per_sh - 2) * 4;
 
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 9fefe1b59f5..b445ac611d3 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -5303,8 +5303,6 @@ void si_init_cs_preamble_state(struct si_context *sctx, bool uses_reg_shadowing)
           */
          if (!sscreen->info.use_late_alloc) {
             late_alloc_wave64 = 0;
-         } else if (num_cu_per_sh <= 6) {
-            late_alloc_wave64 = num_cu_per_sh - 2;
          } else {
             late_alloc_wave64 = (num_cu_per_sh - 2) * 4;
 
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 2a1799f17d4..087622c8a20 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -1224,8 +1224,6 @@ static void gfx10_shader_ngg(struct si_screen *sscreen, struct si_shader *shader
     */
    if (sscreen->info.family == CHIP_NAVI14 || !sscreen->info.use_late_alloc)
       late_alloc_wave64 = 0;
-   else if (num_cu_per_sh <= 6)
-      late_alloc_wave64 = num_cu_per_sh - 2; /* All CUs enabled */
    else if (shader->key.opt.ngg_culling)
       late_alloc_wave64 = num_cu_per_sh * 10;
    else



More information about the mesa-commit mailing list