anv/pipeline: Move lower_explicit_io much later

Now that nir_opt_copy_prop_vars can properly handle array derefs on
vectors, it's safe to move UBO and SSBO lowering to late in the
pipeline.  This should allow NIR to actually start optimizing SSBO
access.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
This commit is contained in:
Jason Ekstrand 2019-01-10 13:39:05 -06:00
parent 179d254cba
commit 8fdee457a4

View file

@ -218,9 +218,6 @@ anv_shader_compile_to_nir(struct anv_device *device,
NIR_PASS_V(nir, nir_remove_dead_variables,
nir_var_shader_in | nir_var_shader_out | nir_var_system_value);
NIR_PASS_V(nir, nir_lower_explicit_io, nir_var_mem_ubo | nir_var_mem_ssbo,
nir_address_format_vk_index_offset);
NIR_PASS_V(nir, nir_lower_explicit_io, nir_var_mem_global,
nir_address_format_64bit_global);
@ -600,6 +597,11 @@ anv_pipeline_lower_nir(struct anv_pipeline *pipeline,
pipeline->device->robust_buffer_access,
layout, nir, prog_data,
&stage->bind_map);
NIR_PASS_V(nir, nir_lower_explicit_io,
nir_var_mem_ubo | nir_var_mem_ssbo,
nir_address_format_vk_index_offset);
NIR_PASS_V(nir, nir_opt_constant_folding);
}