{
bool progress = false;
- NIR_PASS(progress, nir, nir_lower_array_deref_of_vec, mask,
- nir_lower_direct_array_deref_of_vec_load | nir_lower_indirect_array_deref_of_vec_load |
- nir_lower_direct_array_deref_of_vec_store | nir_lower_indirect_array_deref_of_vec_store);
NIR_PASS(progress, nir, nir_lower_io_to_scalar_early, mask);
if (progress) {
/* Optimize the new vector code and then remove dead vars */
nir_link_xfb_varyings(producer, consumer);
}
+ unsigned array_deref_of_vec_options =
+ nir_lower_direct_array_deref_of_vec_load | nir_lower_indirect_array_deref_of_vec_load |
+ nir_lower_direct_array_deref_of_vec_store | nir_lower_indirect_array_deref_of_vec_store;
+
+ NIR_PASS(progress, producer, nir_lower_array_deref_of_vec, nir_var_shader_out, array_deref_of_vec_options);
+ NIR_PASS(progress, consumer, nir_lower_array_deref_of_vec, nir_var_shader_in, array_deref_of_vec_options);
+
nir_lower_io_arrays_to_elements(producer, consumer);
nir_validate_shader(producer, "after nir_lower_io_arrays_to_elements");
nir_validate_shader(consumer, "after nir_lower_io_arrays_to_elements");