Mesa (main): v3dv: setup loop unrolling

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu May 6 10:43:23 UTC 2021


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

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Mon May  3 13:35:40 2021 +0200

v3dv: setup loop unrolling

We set the maximum at 16 iterations (the GL compiler chooses 32
iterations for the GLSL front-end loop unrolling pass) because we
have observed a bunch of shaders from Sascha Willems that spill
significantly with 32, leading to massive performance degradation,
while 16 avoids spilling and doesn't seem to cause visible
performance degradation compared to cases that unroll 32 without
spilling.

Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10647>

---

 src/broadcom/vulkan/v3dv_pipeline.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/broadcom/vulkan/v3dv_pipeline.c b/src/broadcom/vulkan/v3dv_pipeline.c
index e6bebd905f6..dc9ff724d4b 100644
--- a/src/broadcom/vulkan/v3dv_pipeline.c
+++ b/src/broadcom/vulkan/v3dv_pipeline.c
@@ -233,6 +233,7 @@ const nir_shader_compiler_options v3dv_nir_options = {
    .vertex_id_zero_based = false, /* FIXME: to set this to true, the intrinsic
                                    * needs to be supported */
    .lower_interpolate_at = true,
+   .max_unroll_iterations = 16,
    .divergence_analysis_options =
       nir_divergence_multiple_workgroup_per_compute_subgroup
 };



More information about the mesa-commit mailing list