diff --git a/src/imagination/pco/pco_internal.h b/src/imagination/pco/pco_internal.h index 48e7b489a0a..6e42543532f 100644 --- a/src/imagination/pco/pco_internal.h +++ b/src/imagination/pco/pco_internal.h @@ -1693,7 +1693,9 @@ bool pco_nir_lower_algebraic(nir_shader *shader); bool pco_nir_lower_algebraic_late(nir_shader *shader); bool pco_nir_lower_alpha_to_coverage(nir_shader *shader); bool pco_nir_lower_atomics(nir_shader *shader, bool *uses_usclib); -bool pco_nir_lower_barriers(nir_shader *shader, bool *uses_usclib); +bool pco_nir_lower_barriers(nir_shader *shader, + pco_data *data, + bool *uses_usclib); bool pco_nir_lower_clip_cull_vars(nir_shader *shader); bool pco_nir_lower_fs_intrinsics(nir_shader *shader); bool pco_nir_lower_images(nir_shader *shader, pco_data *data); diff --git a/src/imagination/pco/pco_nir.c b/src/imagination/pco/pco_nir.c index 316ad10217f..3173ebf65a2 100644 --- a/src/imagination/pco/pco_nir.c +++ b/src/imagination/pco/pco_nir.c @@ -722,7 +722,7 @@ void pco_lower_nir(pco_ctx *ctx, nir_shader *nir, pco_data *data) NIR_PASS(_, nir, nir_opt_barrier_modes); NIR_PASS(_, nir, nir_opt_combine_barriers, NULL, NULL); - NIR_PASS(_, nir, pco_nir_lower_barriers, &uses_usclib); + NIR_PASS(_, nir, pco_nir_lower_barriers, data, &uses_usclib); NIR_PASS(_, nir, nir_lower_memory_model); diff --git a/src/imagination/pco/pco_nir_sync.c b/src/imagination/pco/pco_nir_sync.c index 57ebb231487..7d669a41a97 100644 --- a/src/imagination/pco/pco_nir_sync.c +++ b/src/imagination/pco/pco_nir_sync.c @@ -82,7 +82,9 @@ static bool is_barrier(const nir_instr *instr, UNUSED const void *cb_data) * \param[in,out] shader NIR shader. * \return True if the pass made progress. */ -bool pco_nir_lower_barriers(nir_shader *shader, bool *uses_usclib) +bool pco_nir_lower_barriers(nir_shader *shader, + pco_data *data, + bool *uses_usclib) { bool barrier_emitted = false; bool progress = nir_shader_lower_instructions(shader, @@ -91,6 +93,7 @@ bool pco_nir_lower_barriers(nir_shader *shader, bool *uses_usclib) &barrier_emitted); *uses_usclib |= barrier_emitted; + data->common.uses.barriers |= progress; return progress; }