radv: make use of nir_move_out_const_to_consumer()
authorTimothy Arceri <tarceri@itsqueeze.com>
Wed, 7 Nov 2018 04:20:41 +0000 (15:20 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Tue, 13 Nov 2018 22:41:50 +0000 (09:41 +1100)
vkpipeline-db results:

Totals from affected shaders:
SGPRS: 28400 -> 28576 (0.62 %)
VGPRS: 27916 -> 27692 (-0.80 %)
Spilled SGPRs: 140 -> 138 (-1.43 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 0 -> 0 (0.00 %)
Scratch size: 0 -> 0 (0.00 %) dwords per thread
Code Size: 1534456 -> 1520560 (-0.91 %) bytes
LDS: 0 -> 0 (0.00 %) blocks
Max Waves: 3541 -> 3582 (1.16 %)
Wait states: 0 -> 0 (0.00 %)

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/amd/vulkan/radv_pipeline.c

index a126c036073e399b9f7107fbade8abc07f2ea3c8..33076cc2bd25eea4755fcbe9f7ee2087e1086803 100644 (file)
@@ -1814,6 +1814,10 @@ radv_link_shaders(struct radv_pipeline *pipeline, nir_shader **shaders)
                nir_lower_io_arrays_to_elements(ordered_shaders[i],
                                                ordered_shaders[i - 1]);
 
+               if (nir_link_constant_varyings(ordered_shaders[i],
+                                              ordered_shaders[i - 1]))
+                       radv_optimize_nir(ordered_shaders[i - 1], false, false);
+
                nir_remove_dead_variables(ordered_shaders[i],
                                          nir_var_shader_out);
                nir_remove_dead_variables(ordered_shaders[i - 1],