Mesa (main): radeonsi: enable nir_group_loads for better performance

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Nov 8 21:48:27 UTC 2021


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sat Oct 30 07:09:22 2021 -0400

radeonsi: enable nir_group_loads for better performance

The best case I have is one viewperf subtest getting +9% performance.

56979 shaders in 34726 tests
Totals:
SGPRS: 2667522 -> 2669178 (0.06 %)
VGPRS: 1543608 -> 1553472 (0.64 %)
Spilled SGPRs: 4090 -> 4100 (0.24 %)
Spilled VGPRs: 1600 -> 1791 (11.94 %)
Private memory VGPRs: 256 -> 256 (0.00 %)
Scratch size: 1872 -> 2076 (10.90 %) dwords per thread
Code Size: 59443980 -> 59479804 (0.06 %) bytes
Max Waves: 867280 -> 865634 (-0.19 %)

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Reviewed-by: Timur Kristóf <timur.kristof at gmail.com>

v2: No change in pixels but the hash changed.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13604>

---

 src/gallium/drivers/radeonsi/ci/traces-radeonsi.yml | 2 +-
 src/gallium/drivers/radeonsi/si_shader.c            | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/ci/traces-radeonsi.yml b/src/gallium/drivers/radeonsi/ci/traces-radeonsi.yml
index b2e46f3e81a..bd80fe70429 100644
--- a/src/gallium/drivers/radeonsi/ci/traces-radeonsi.yml
+++ b/src/gallium/drivers/radeonsi/ci/traces-radeonsi.yml
@@ -37,7 +37,7 @@ traces:
   - path: gputest/pixmark-piano.trace
     expectations:
       - device: gl-radeonsi-stoney
-        checksum: 58a86d233d03e2a174cb79c16028f916
+        checksum: a7317d54d452d19ce630c7f554f2279b
   - path: gputest/triangle.trace
     expectations:
       - device: gl-radeonsi-stoney
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index c8892a31b53..c19790ae293 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1426,6 +1426,11 @@ struct nir_shader *si_get_nir_shader(struct si_shader_selector *sel,
                                                        nir_var_shader_out);
    }
 
+   /* This helps LLVM form VMEM clauses and thus get more GPU cache hits.
+    * 200 is tuned for Viewperf. It should be done last.
+    */
+   NIR_PASS_V(nir, nir_group_loads, nir_group_same_resource_only, 200);
+
    return nir;
 }
 



More information about the mesa-commit mailing list