radv: use nir_opt_copy_prop_vars and nir_opt_dead_write_vars
authorTimothy Arceri <tarceri@itsqueeze.com>
Wed, 17 Oct 2018 21:55:46 +0000 (08:55 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Thu, 18 Oct 2018 04:04:09 +0000 (15:04 +1100)
Totals from affected shaders:
SGPRS: 2856 -> 2856 (0.00 %)
VGPRS: 3236 -> 3248 (0.37 %)
Spilled SGPRs: 0 -> 0 (0.00 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 0 -> 0 (0.00 %)
Scratch size: 0 -> 0 (0.00 %) dwords per thread
Code Size: 236560 -> 233548 (-1.27 %) bytes
LDS: 0 -> 0 (0.00 %) blocks
Max Waves: 277 -> 283 (2.17 %)
Wait states: 0 -> 0 (0.00 %)

Even in the cases were we have increased VGPR use it appears
the NIR is improved significantly.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_shader.c

index 3e3eb96a531f3f109cc0ab0ac8db0de8c0cb1c7a..3b3422c8da6cf67c31a1c98d035dae8a85692f5b 100644 (file)
@@ -127,6 +127,10 @@ radv_optimize_nir(struct nir_shader *shader, bool optimize_conservatively)
 
                 NIR_PASS_V(shader, nir_lower_vars_to_ssa);
                NIR_PASS_V(shader, nir_lower_pack);
+
+               NIR_PASS(progress, shader, nir_opt_copy_prop_vars);
+               NIR_PASS(progress, shader, nir_opt_dead_write_vars);
+
                 NIR_PASS_V(shader, nir_lower_alu_to_scalar);
                 NIR_PASS_V(shader, nir_lower_phis_to_scalar);