nir: bump loop max unroll limit
authorTimothy Arceri <timothy.arceri@collabora.com>
Wed, 18 Jan 2017 02:12:37 +0000 (13:12 +1100)
committerTimothy Arceri <t_arceri@yahoo.com.au>
Tue, 24 Jan 2017 22:43:29 +0000 (09:43 +1100)
The original number was chosen in an attempt to match the limits applied to
GLSL IR.

A look at the git history of the why these limits were chosen for GLSL IR
shows it was more to do with the slow speed of unrolling large loops in
GLSL IR than anything else. The speed of loop unrolling in NIR is not a
problem so we may wish to bump this even higher in future.

No shader-db change, however a furture change will disbale the GLSL IR
optimisation loop in the i965 backend results in 4 loops from The Talos
Principle failing to unroll. Bumping the limit allows them to unroll which
results in the instruction count matching the previous output from when the
GLSL IR opts were still enabled.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/nir/nir_opt_loop_unroll.c

index 2c19980c7425e785dc3982b88308267e7e035e91..37cbced43dd74dcb51a52ffd044a1c00edd07cd8 100644 (file)
@@ -460,7 +460,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 * 25;
+      li->num_instructions * li->trip_count <= max_iter * 26;
 
    return loop_not_too_large;
 }