Mesa (master): radeonsi: always use Wave64 for HS/GS/VS shader stages (except GS fast launch)

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 30 11:29:01 UTC 2020


Module: Mesa
Branch: master
Commit: 90cf741d316d231bdc8a67dce8ef1c84a80eeec8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=90cf741d316d231bdc8a67dce8ef1c84a80eeec8

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue Jun 16 14:53:03 2020 -0400

radeonsi: always use Wave64 for HS/GS/VS shader stages (except GS fast launch)

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

---

 src/gallium/drivers/radeonsi/si_pipe.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
index 7364277c962..27b3e9200a5 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -1215,11 +1215,15 @@ static struct pipe_screen *radeonsi_screen_create_impl(struct radeon_winsys *ws,
    sscreen->compute_wave_size = 64;
 
    if (sscreen->info.chip_class >= GFX10) {
-      /* Pixels shaders: Wave64 is recommended.
-       * Compute shaders: There are piglit failures with Wave32.
+      /* Pixel shaders: Wave64 is always fastest.
+       * Vertex shaders: Wave64 is probably better, because:
+       * - greater chance of L0 cache hits, because more threads are assigned
+       *   to the same CU
+       * - scalar instructions are only executed once for 64 threads instead of twice
+       * - VGPR allocation granularity is half of Wave32, so 1 Wave64 can
+       *   sometimes use fewer VGPRs than 2 Wave32
+       * - TessMark X64 with NGG culling is faster with Wave64
        */
-      sscreen->ge_wave_size = 32;
-
       if (sscreen->debug_flags & DBG(W32_GE))
          sscreen->ge_wave_size = 32;
       if (sscreen->debug_flags & DBG(W32_PS))



More information about the mesa-commit mailing list