mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 13:10:10 +01:00
broadcom/compiler: flag use of control barriers
We have been relying on NIR's gather info pass for this but it is not safe unless we are certain we are always calling it after any other pass that may emit a control barrier. As it stands, nir_zero_initialize_shared_memory can emit a control barrier and we don't call the gather info pass after it, which is problematic. The only reason this is not really a problem right now is because for non-scoped barriers (which is what we currently use) it doesn't emit a scoped barrier, just a regular memory barrier (which is probably a bug in the pass!), but as soon as we move to scoped barriers, this is going to be a problem, since we need to know when we emit a control barrier to ensure supergroup calculations prevent deadlocks at the barrier op. Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23228>
This commit is contained in:
parent
b6e40edae6
commit
e99ab86f77
1 changed files with 7 additions and 0 deletions
|
|
@ -3526,6 +3526,13 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr)
|
|||
*/
|
||||
ntq_flush_tmu(c);
|
||||
|
||||
/* Ensure we flag the use of the control barrier. NIR's
|
||||
* gather info pass usually takes care of this, but that
|
||||
* requires that we call that pass after any other pass
|
||||
* may emit a control barrier, so this is safer.
|
||||
*/
|
||||
c->s->info.uses_control_barrier = true;
|
||||
|
||||
if (c->devinfo->ver >= 42) {
|
||||
vir_BARRIERID_dest(c, vir_reg(QFILE_MAGIC,
|
||||
V3D_QPU_WADDR_SYNCB));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue