Mesa (master): v3d: Avoid spilling that breaks the r5 usage after a ldvary.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Aug 6 20:07:12 UTC 2018
Module: Mesa
Branch: master
Commit: 50a8713d4f90a6c70a23f9f5871420371df283a7
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=50a8713d4f90a6c70a23f9f5871420371df283a7
Author: Eric Anholt <eric at anholt.net>
Date: Thu Aug 2 11:12:37 2018 -0700
v3d: Avoid spilling that breaks the r5 usage after a ldvary.
Fixes bad rendering when forcing 2 spills in glxgears.
Cc: "18.2" <mesa-stable at lists.freedesktop.org>
---
src/broadcom/compiler/vir_register_allocate.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/broadcom/compiler/vir_register_allocate.c b/src/broadcom/compiler/vir_register_allocate.c
index bc34f68e59..accc07a3a3 100644
--- a/src/broadcom/compiler/vir_register_allocate.c
+++ b/src/broadcom/compiler/vir_register_allocate.c
@@ -94,6 +94,15 @@ v3d_choose_spill_node(struct v3d_compile *c, struct ra_graph *g,
}
}
+ /* Refuse to spill a ldvary's dst, because that means
+ * that ldvary's r5 would end up being used across a
+ * thrsw.
+ */
+ if (inst->qpu.sig.ldvary) {
+ assert(inst->dst.file == QFILE_TEMP);
+ BITSET_CLEAR(c->spillable, inst->dst.index);
+ }
+
if (inst->is_last_thrsw)
started_last_seg = true;
More information about the mesa-commit
mailing list