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