void nir_lower_io_arrays_to_elements_no_indirects(nir_shader *shader,
bool outputs_only);
void nir_lower_io_to_scalar(nir_shader *shader, nir_variable_mode mask);
-void nir_lower_io_to_scalar_early(nir_shader *shader, nir_variable_mode mask);
+bool nir_lower_io_to_scalar_early(nir_shader *shader, nir_variable_mode mask);
bool nir_lower_io_to_vector(nir_shader *shader, nir_variable_mode mask);
bool nir_lower_fragcolor(nir_shader *shader);
* This function is intended to be called earlier than nir_lower_io_to_scalar()
* i.e. before nir_lower_io() is called.
*/
-void
+bool
nir_lower_io_to_scalar_early(nir_shader *shader, nir_variable_mode mask)
{
struct io_to_scalar_early_state state = {
.mask = mask
};
- nir_shader_instructions_pass(shader,
- nir_lower_io_to_scalar_early_instr,
- nir_metadata_block_index |
- nir_metadata_dominance,
- &state);
+ bool progress = nir_shader_instructions_pass(shader,
+ nir_lower_io_to_scalar_early_instr,
+ nir_metadata_block_index |
+ nir_metadata_dominance,
+ &state);
/* Remove old input from the shaders inputs list */
hash_table_foreach(state.split_inputs, entry) {
_mesa_hash_table_destroy(state.split_outputs, NULL);
nir_remove_dead_derefs(shader);
+
+ return progress;
}