Mesa (master): aco: don't remove the loop exec mask in transition_to_Exact()
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Sep 27 10:50:32 UTC 2019
Module: Mesa
Branch: master
Commit: 1f2813e103b5e65a26c01c81e1e85953bea7a840
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1f2813e103b5e65a26c01c81e1e85953bea7a840
Author: Rhys Perry <pendingchaos02 at gmail.com>
Date: Thu Sep 26 15:38:09 2019 +0100
aco: don't remove the loop exec mask in transition_to_Exact()
No pipeline-db changes.
Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Daniel Schürmann <daniel at schuermann.dev>
---
src/amd/compiler/aco_insert_exec_mask.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/amd/compiler/aco_insert_exec_mask.cpp b/src/amd/compiler/aco_insert_exec_mask.cpp
index b423c5b9190..155c21a5aa4 100644
--- a/src/amd/compiler/aco_insert_exec_mask.cpp
+++ b/src/amd/compiler/aco_insert_exec_mask.cpp
@@ -313,7 +313,11 @@ void transition_to_Exact(exec_ctx& ctx, Builder bld, unsigned idx)
{
if (ctx.info[idx].exec.back().second & mask_type_exact)
return;
- if (ctx.info[idx].exec.back().second & mask_type_global) {
+ /* We can't remove the loop exec mask, because that can cause exec.size() to
+ * be less than num_exec_masks. The loop exec mask also needs to be kept
+ * around for various uses. */
+ if ((ctx.info[idx].exec.back().second & mask_type_global) &&
+ !(ctx.info[idx].exec.back().second & mask_type_loop)) {
ctx.info[idx].exec.pop_back();
assert(ctx.info[idx].exec.back().second & mask_type_exact);
ctx.info[idx].exec.back().first = bld.pseudo(aco_opcode::p_parallelcopy, bld.def(s2, exec),
More information about the mesa-commit
mailing list