Mesa (master): v3d: Add some debug code for forcing register spilling.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Aug 6 20:07:12 UTC 2018


Module: Mesa
Branch: master
Commit: f9d54dc3cf45ba6f15f74627b8ec527975ce5297
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f9d54dc3cf45ba6f15f74627b8ec527975ce5297

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Aug  1 17:38:25 2018 -0700

v3d: Add some debug code for forcing register spilling.

This is useful for periodically testing out register spilling to see how
it goes on simple shaders, rather than only failing on insanely
complicated ones.

---

 src/broadcom/compiler/vir_register_allocate.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/broadcom/compiler/vir_register_allocate.c b/src/broadcom/compiler/vir_register_allocate.c
index 5a856acd7e..598c408523 100644
--- a/src/broadcom/compiler/vir_register_allocate.c
+++ b/src/broadcom/compiler/vir_register_allocate.c
@@ -520,6 +520,20 @@ v3d_register_allocate(struct v3d_compile *c, bool *spilled)
                 }
         }
 
+        /* Debug code to force a bit of register spilling, for running across
+         * conformance tests to make sure that spilling works.
+         */
+        int force_register_spills = 0;
+        if (c->spill_size < 16 * sizeof(uint32_t) * force_register_spills) {
+                int node = v3d_choose_spill_node(c, g, temp_to_node);
+                if (node != -1) {
+                        v3d_spill_reg(c, map[node].temp);
+                        ralloc_free(g);
+                        *spilled = true;
+                        return NULL;
+                }
+        }
+
         bool ok = ra_allocate(g);
         if (!ok) {
                 /* Try to spill, if we can't reduce threading first. */




More information about the mesa-commit mailing list