summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRhys Perry <pendingchaos02@gmail.com>2020-12-17 16:52:24 +0000
committerDylan Baker <dylan.c.baker@intel.com>2020-12-17 13:21:37 -0800
commit4ba1dba7acb703ac5a6a0105ed88de6c693d4e53 (patch)
treecda9f6ad85277cf42e35188803a9fb86e53275f0
parent19b92b771a9a6d172114f4ae9d17705cf4d4a757 (diff)
aco: add block to worklist in mark_block_wqm()
Since we're requiring the branch condition to be in WQM, we have to ensure that the block is in the worklist. Fixes Trials Fusion hang at 4K and High settings. fossil-db (Sienna): Totals from 216 (0.15% of 139391) affected shaders: SGPRs: 13392 -> 13360 (-0.24%) CodeSize: 1321184 -> 1318592 (-0.20%) Instrs: 255310 -> 254662 (-0.25%) Cycles: 2178360 -> 2174652 (-0.17%) Affected fossils in fossil-db are dirt4, nier and youngblood. Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3863 Cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8145> (cherry picked from commit 661922f6ac9576fc2077c5d50b53ef7edf9e8a18)
-rw-r--r--.pick_status.json2
-rw-r--r--src/amd/compiler/aco_insert_exec_mask.cpp2
2 files changed, 3 insertions, 1 deletions
diff --git a/.pick_status.json b/.pick_status.json
index fc5b20fa924..d128047acd7 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -4,7 +4,7 @@
"description": "aco: add block to worklist in mark_block_wqm()",
"nominated": true,
"nomination_type": 0,
- "resolution": 0,
+ "resolution": 1,
"master_sha": null,
"because_sha": null
},
diff --git a/src/amd/compiler/aco_insert_exec_mask.cpp b/src/amd/compiler/aco_insert_exec_mask.cpp
index 638157ccf2f..8a13564ab2d 100644
--- a/src/amd/compiler/aco_insert_exec_mask.cpp
+++ b/src/amd/compiler/aco_insert_exec_mask.cpp
@@ -165,6 +165,8 @@ void mark_block_wqm(wqm_ctx &ctx, unsigned block_idx)
return;
ctx.branch_wqm[block_idx] = true;
+ ctx.worklist.insert(block_idx);
+
Block& block = ctx.program->blocks[block_idx];
/* TODO: this sets more branch conditions to WQM than it needs to