[Mesa-dev] [PATCH 2/3] radv: make use of nir_move_out_const_to_consumer()

Timothy Arceri tarceri at itsqueeze.com
Wed Nov 7 08:46:46 UTC 2018


On 7/11/18 7:40 pm, Samuel Pitoiset wrot> On 11/7/18 5:20 AM, Timothy 
Arceri wrote:
>> 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 %)
>> ---
>>   src/amd/vulkan/radv_pipeline.c | 4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/src/amd/vulkan/radv_pipeline.c 
>> b/src/amd/vulkan/radv_pipeline.c
>> index bced19573c1..12e7f43bde7 100644
>> --- a/src/amd/vulkan/radv_pipeline.c
>> +++ b/src/amd/vulkan/radv_pipeline.c
>> @@ -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_move_out_const_to_consumer(ordered_shaders[i],
>> +                               ordered_shaders[i - 1]))
>> +            radv_optimize_nir(ordered_shaders[i - 1], false, false);
> 
> Do you really need to optimize the consumer right after?

Yes I believe so, otherwise the nir_remove_dead_variables() pass won't 
work on the consumer and we won't end up removing the varying from 
either shader stage.

> 
>> +
>>           nir_remove_dead_variables(ordered_shaders[i],
>>                         nir_var_shader_out);
>>           nir_remove_dead_variables(ordered_shaders[i - 1],
>>


More information about the mesa-dev mailing list