Mesa (staging/21.3): r300/vs: Fix flow control processing just after an endloop.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Dec 24 12:37:25 UTC 2021
Module: Mesa
Branch: staging/21.3
Commit: fa64a71f3b3f32d5a6fe77dd33540d97a9540c94
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fa64a71f3b3f32d5a6fe77dd33540d97a9540c94
Author: Emma Anholt <emma at anholt.net>
Date: Mon Dec 20 12:48:15 2021 -0800
r300/vs: Fix flow control processing just after an endloop.
We tried to step over the instruction we just generated, except we didn't
always just generate one. In the sequence_vertex tests, that meant we
skipped processing the next BGNLOOP and then underflowed our stack.
Cc: mesa-stable
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14271>
(cherry picked from commit 658b2ca4677fb8326781ea519df3a7dcdcd3b7d6)
---
.pick_status.json | 2 +-
src/gallium/drivers/r300/compiler/radeon_vert_fc.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.pick_status.json b/.pick_status.json
index 8bc63694f7e..1685ef3e884 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -463,7 +463,7 @@
"description": "r300/vs: Fix flow control processing just after an endloop.",
"nominated": true,
"nomination_type": 0,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": null
},
diff --git a/src/gallium/drivers/r300/compiler/radeon_vert_fc.c b/src/gallium/drivers/r300/compiler/radeon_vert_fc.c
index fded485aaa9..51ab6213f25 100644
--- a/src/gallium/drivers/r300/compiler/radeon_vert_fc.c
+++ b/src/gallium/drivers/r300/compiler/radeon_vert_fc.c
@@ -257,10 +257,10 @@ void rc_vert_fc(struct radeon_compiler *c, void *user)
if (fc_state.BranchDepth != 0
|| fc_state.LoopDepth != 1) {
lower_endloop(inst, &fc_state);
+ /* Skip the new PRED_RESTORE */
+ inst = inst->Next;
}
fc_state.LoopDepth--;
- /* Skip PRED_RESTORE */
- inst = inst->Next;
break;
case RC_OPCODE_IF:
lower_if(inst, &fc_state);
More information about the mesa-commit
mailing list