anv/pipeline: Move lower_explicit_io much later
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 10 Jan 2019 19:39:05 +0000 (13:39 -0600)
committerJason Ekstrand <jason.ekstrand@intel.com>
Sat, 9 Mar 2019 04:03:34 +0000 (22:03 -0600)
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>
src/intel/vulkan/anv_pipeline.c

index dbff784fb105a3a8d6da5cec6684167c63bb53ba..61edf93cd084a532d34b4800a005dc7e75923585 100644 (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);
    }