Signed-off-by: Elie Tournier <tournier.e...@gmail.com> --- src/compiler/nir/nir_opt_loop_unroll.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/compiler/nir/nir_opt_loop_unroll.c b/src/compiler/nir/nir_opt_loop_unroll.c index 37cbced43d..035a030239 100644 --- a/src/compiler/nir/nir_opt_loop_unroll.c +++ b/src/compiler/nir/nir_opt_loop_unroll.c @@ -26,6 +26,14 @@ #include "nir_control_flow.h" #include "nir_loop_analyze.h" + +/* This limit is chosen fairly arbitrarily. The GLSL IR limit is 25. + * However, due to slight differences in the way the two IRs count + * instructions, some loops that would unroll with GLSL IR fail to unroll + * if we set this to 25 so we set it to 26. + */ +#define LOOP_UNROLL_LIMIT 26 + /* Prepare this loop for unrolling by first converting to lcssa and then * converting the phis from the loops first block and the block that follows * the loop into regs. Partially converting out of SSA allows us to unroll @@ -460,7 +468,7 @@ is_loop_small_enough_to_unroll(nir_shader *shader, nir_loop_info *li) return true; bool loop_not_too_large = - li->num_instructions * li->trip_count <= max_iter * 26; + li->num_instructions * li->trip_count <= max_iter * LOOP_UNROLL_LIMIT; return loop_not_too_large; } -- 2.11.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev