Mesa (master): broadcom/compiler: Use ANYA for branches in uniform ifs
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Feb 1 08:28:55 UTC 2021
Module: Mesa
Branch: master
Commit: 6643bdbd5375de604001bc23d45eca134cc3a0f3
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6643bdbd5375de604001bc23d45eca134cc3a0f3
Author: Arcady Goldmints-Orlov <agoldmints at igalia.com>
Date: Thu Dec 31 11:04:11 2020 -0600
broadcom/compiler: Use ANYA for branches in uniform ifs
Using ANYAP instead of ALLAP makes things work correctly in cases
where all lanes are masked out.
Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7726>
---
src/broadcom/compiler/nir_to_vir.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index 6b88ff6d1e4..20f3d316a98 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -2807,9 +2807,14 @@ ntq_emit_uniform_if(struct v3d_compile *c, nir_if *if_stmt)
enum v3d_qpu_cond cond = ntq_emit_bool_to_cond(c, if_stmt->condition);
/* Jump to ELSE. */
- vir_BRANCH(c, cond == V3D_QPU_COND_IFA ?
- V3D_QPU_BRANCH_COND_ALLNA :
- V3D_QPU_BRANCH_COND_ALLA);
+ struct qinst *branch = vir_BRANCH(c, cond == V3D_QPU_COND_IFA ?
+ V3D_QPU_BRANCH_COND_ANYNA :
+ V3D_QPU_BRANCH_COND_ANYA);
+ /* Pixels that were not dispatched or have been discarded should not
+ * contribute to the ANYA/ANYNA condition.
+ */
+ branch->qpu.branch.msfign = V3D_QPU_MSFIGN_P;
+
vir_link_blocks(c->cur_block, else_block);
vir_link_blocks(c->cur_block, then_block);
More information about the mesa-commit
mailing list