nir/io_to_vector: Use nir_foreach_variable_with_modes
Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5966>
This commit is contained in:

committed by
Marge Bot

parent
0a77c67442
commit
bb3994cfe7
@@ -206,20 +206,22 @@ get_flat_type(const nir_shader *shader, nir_variable *old_vars[MAX_SLOTS][4],
|
||||
}
|
||||
|
||||
static bool
|
||||
create_new_io_vars(nir_shader *shader, struct exec_list *io_list,
|
||||
create_new_io_vars(nir_shader *shader, nir_variable_mode mode,
|
||||
nir_variable *new_vars[MAX_SLOTS][4],
|
||||
bool flat_vars[MAX_SLOTS])
|
||||
{
|
||||
if (exec_list_is_empty(io_list))
|
||||
return false;
|
||||
|
||||
nir_variable *old_vars[MAX_SLOTS][4] = {{0}};
|
||||
|
||||
nir_foreach_variable(var, io_list) {
|
||||
bool has_io_var = false;
|
||||
nir_foreach_variable_with_modes(var, shader, mode) {
|
||||
unsigned frac = var->data.location_frac;
|
||||
old_vars[get_slot(var)][frac] = var;
|
||||
has_io_var = true;
|
||||
}
|
||||
|
||||
if (!has_io_var)
|
||||
return false;
|
||||
|
||||
bool merged_any_vars = false;
|
||||
|
||||
for (unsigned loc = 0; loc < MAX_SLOTS; loc++) {
|
||||
@@ -390,7 +392,7 @@ nir_lower_io_to_vector_impl(nir_function_impl *impl, nir_variable_mode modes)
|
||||
/* If we don't actually merge any variables, remove that bit from modes
|
||||
* so we don't bother doing extra non-work.
|
||||
*/
|
||||
if (!create_new_io_vars(shader, &shader->inputs,
|
||||
if (!create_new_io_vars(shader, nir_var_shader_in,
|
||||
new_inputs, flat_inputs))
|
||||
modes &= ~nir_var_shader_in;
|
||||
}
|
||||
@@ -399,7 +401,7 @@ nir_lower_io_to_vector_impl(nir_function_impl *impl, nir_variable_mode modes)
|
||||
/* If we don't actually merge any variables, remove that bit from modes
|
||||
* so we don't bother doing extra non-work.
|
||||
*/
|
||||
if (!create_new_io_vars(shader, &shader->outputs,
|
||||
if (!create_new_io_vars(shader, nir_var_shader_out,
|
||||
new_outputs, flat_outputs))
|
||||
modes &= ~nir_var_shader_out;
|
||||
}
|
||||
|
Reference in New Issue
Block a user