From f5f948826ae47f32e5bfaf46da84b8a1b44f6f7d Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Tue, 7 Sep 2021 11:45:07 +0200 Subject: [PATCH] ir3/lower_pcopy: Set entry->done in the swap loop We process all the remaining copy entries one-at-a-time when emitting swaps, so normally we wouldn't need to care about whether the entry is done, except that we need to look at the other entries to split them up and we need to skip this when the copy to be split has already been processed. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5307 Fixes: 0ffcb19b9d9 ("ir3: Rewrite register allocation") Part-of: --- src/freedreno/ir3/ir3_lower_parallelcopy.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/freedreno/ir3/ir3_lower_parallelcopy.c b/src/freedreno/ir3/ir3_lower_parallelcopy.c index 54cc9725b95..0350a97e3ea 100644 --- a/src/freedreno/ir3/ir3_lower_parallelcopy.c +++ b/src/freedreno/ir3/ir3_lower_parallelcopy.c @@ -451,6 +451,8 @@ _handle_copies(struct ir3_compiler *compiler, struct ir3_instruction *instr, entry->src.reg + (blocking->src.reg - entry->dst); } } + + entry->done = true; } }