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@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10647>
This commit is contained in:
Iago Toral Quiroga 2021-05-03 13:35:40 +02:00
parent ec72b876fe
commit db3fa1cc8c
1 changed files with 1 additions and 0 deletions

View File

@ -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
};