Mesa (staging/19.3): aco: run p_wqm instructions in WQM

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jan 30 18:51:24 UTC 2020


Module: Mesa
Branch: staging/19.3
Commit: 6f34a8ff5621b378769f0fd098bf7525e704d32c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6f34a8ff5621b378769f0fd098bf7525e704d32c

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Mon Jan 13 14:53:56 2020 +0000

aco: run p_wqm instructions in WQM

If the p_wqm ends up creating copies, these need to be in WQM. Helps (but
doesn't completely fix) artifacts in Strange Brigade. The actual issue
still exists and is harder to fix.

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Fixes: 93c8ebfa780 ('aco: Initial commit of independent AMD compiler')
Reviewed-by: Daniel Schürmann <daniel at schuermann.dev>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3273>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3273>
(cherry picked from commit 404818dd288de1b374c3b5f3589450c382bad3c4)

---

 .pick_status.json                         | 2 +-
 src/amd/compiler/aco_insert_exec_mask.cpp | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 73cc770bde3..6461b759ba8 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -85,7 +85,7 @@
         "description": "aco: run p_wqm instructions in WQM",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "master_sha": null,
         "because_sha": "93c8ebfa780ebd1495095e794731881aef29e7d3"
     },
diff --git a/src/amd/compiler/aco_insert_exec_mask.cpp b/src/amd/compiler/aco_insert_exec_mask.cpp
index 2dd35843410..031f15394a6 100644
--- a/src/amd/compiler/aco_insert_exec_mask.cpp
+++ b/src/amd/compiler/aco_insert_exec_mask.cpp
@@ -239,8 +239,9 @@ void get_block_needs(wqm_ctx &ctx, exec_ctx &exec_ctx, Block* block)
          }
       }
 
-      if (instr->opcode == aco_opcode::p_logical_end && info.logical_end_wqm) {
-         assert(needs == Unspecified);
+      if ((instr->opcode == aco_opcode::p_logical_end && info.logical_end_wqm) ||
+          instr->opcode == aco_opcode::p_wqm) {
+         assert(needs != Exact);
          needs = WQM;
       }
 



More information about the mesa-commit mailing list