nir: Take a mode in remove_unused_io_vars
Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5966>
This commit is contained in:
parent
fd91744bd4
commit
5746af4446
|
@ -809,7 +809,7 @@ v3d_nir_lower_vs_early(struct v3d_compile *c)
|
||||||
used_outputs[comp] |= 1ull << slot;
|
used_outputs[comp] |= 1ull << slot;
|
||||||
}
|
}
|
||||||
NIR_PASS_V(c->s, nir_remove_unused_io_vars,
|
NIR_PASS_V(c->s, nir_remove_unused_io_vars,
|
||||||
&c->s->outputs, used_outputs, NULL); /* demotes to globals */
|
nir_var_shader_out, used_outputs, NULL); /* demotes to globals */
|
||||||
NIR_PASS_V(c->s, nir_lower_global_vars_to_local);
|
NIR_PASS_V(c->s, nir_lower_global_vars_to_local);
|
||||||
v3d_optimize_nir(c->s);
|
v3d_optimize_nir(c->s);
|
||||||
NIR_PASS_V(c->s, nir_remove_dead_variables, nir_var_shader_in, NULL);
|
NIR_PASS_V(c->s, nir_remove_dead_variables, nir_var_shader_in, NULL);
|
||||||
|
@ -840,7 +840,7 @@ v3d_nir_lower_gs_early(struct v3d_compile *c)
|
||||||
used_outputs[comp] |= 1ull << slot;
|
used_outputs[comp] |= 1ull << slot;
|
||||||
}
|
}
|
||||||
NIR_PASS_V(c->s, nir_remove_unused_io_vars,
|
NIR_PASS_V(c->s, nir_remove_unused_io_vars,
|
||||||
&c->s->outputs, used_outputs, NULL); /* demotes to globals */
|
nir_var_shader_out, used_outputs, NULL); /* demotes to globals */
|
||||||
NIR_PASS_V(c->s, nir_lower_global_vars_to_local);
|
NIR_PASS_V(c->s, nir_lower_global_vars_to_local);
|
||||||
v3d_optimize_nir(c->s);
|
v3d_optimize_nir(c->s);
|
||||||
NIR_PASS_V(c->s, nir_remove_dead_variables, nir_var_shader_in, NULL);
|
NIR_PASS_V(c->s, nir_remove_dead_variables, nir_var_shader_in, NULL);
|
||||||
|
|
|
@ -3941,7 +3941,7 @@ void nir_assign_var_locations(struct exec_list *var_list, unsigned *size,
|
||||||
|
|
||||||
/* Some helpers to do very simple linking */
|
/* Some helpers to do very simple linking */
|
||||||
bool nir_remove_unused_varyings(nir_shader *producer, nir_shader *consumer);
|
bool nir_remove_unused_varyings(nir_shader *producer, nir_shader *consumer);
|
||||||
bool nir_remove_unused_io_vars(nir_shader *shader, struct exec_list *var_list,
|
bool nir_remove_unused_io_vars(nir_shader *shader, nir_variable_mode mode,
|
||||||
uint64_t *used_by_other_stage,
|
uint64_t *used_by_other_stage,
|
||||||
uint64_t *used_by_other_stage_patches);
|
uint64_t *used_by_other_stage_patches);
|
||||||
void nir_compact_varyings(nir_shader *producer, nir_shader *consumer,
|
void nir_compact_varyings(nir_shader *producer, nir_shader *consumer,
|
||||||
|
|
|
@ -109,8 +109,7 @@ tcs_add_output_reads(nir_shader *shader, uint64_t *read, uint64_t *patches_read)
|
||||||
*
|
*
|
||||||
* Example usage is:
|
* Example usage is:
|
||||||
*
|
*
|
||||||
* progress = nir_remove_unused_io_vars(producer,
|
* progress = nir_remove_unused_io_vars(producer, nir_var_shader_out,
|
||||||
* &producer->outputs,
|
|
||||||
* read, patches_read) ||
|
* read, patches_read) ||
|
||||||
* progress;
|
* progress;
|
||||||
*
|
*
|
||||||
|
@ -120,13 +119,18 @@ tcs_add_output_reads(nir_shader *shader, uint64_t *read, uint64_t *patches_read)
|
||||||
* variable is used!
|
* variable is used!
|
||||||
*/
|
*/
|
||||||
bool
|
bool
|
||||||
nir_remove_unused_io_vars(nir_shader *shader, struct exec_list *var_list,
|
nir_remove_unused_io_vars(nir_shader *shader,
|
||||||
|
nir_variable_mode mode,
|
||||||
uint64_t *used_by_other_stage,
|
uint64_t *used_by_other_stage,
|
||||||
uint64_t *used_by_other_stage_patches)
|
uint64_t *used_by_other_stage_patches)
|
||||||
{
|
{
|
||||||
bool progress = false;
|
bool progress = false;
|
||||||
uint64_t *used;
|
uint64_t *used;
|
||||||
|
|
||||||
|
assert(mode == nir_var_shader_in || mode == nir_var_shader_out);
|
||||||
|
struct exec_list *var_list =
|
||||||
|
mode == nir_var_shader_in ? &shader->inputs : &shader->outputs;
|
||||||
|
|
||||||
nir_foreach_variable_safe(var, var_list) {
|
nir_foreach_variable_safe(var, var_list) {
|
||||||
if (var->data.patch)
|
if (var->data.patch)
|
||||||
used = used_by_other_stage_patches;
|
used = used_by_other_stage_patches;
|
||||||
|
@ -203,10 +207,10 @@ nir_remove_unused_varyings(nir_shader *producer, nir_shader *consumer)
|
||||||
tcs_add_output_reads(producer, read, patches_read);
|
tcs_add_output_reads(producer, read, patches_read);
|
||||||
|
|
||||||
bool progress = false;
|
bool progress = false;
|
||||||
progress = nir_remove_unused_io_vars(producer, &producer->outputs, read,
|
progress = nir_remove_unused_io_vars(producer, nir_var_shader_out, read,
|
||||||
patches_read);
|
patches_read);
|
||||||
|
|
||||||
progress = nir_remove_unused_io_vars(consumer, &consumer->inputs, written,
|
progress = nir_remove_unused_io_vars(consumer, nir_var_shader_in, written,
|
||||||
patches_written) || progress;
|
patches_written) || progress;
|
||||||
|
|
||||||
return progress;
|
return progress;
|
||||||
|
|
Loading…
Reference in New Issue