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