vc4: Disable vc4_opt_vpm in the presence of control flow.
authorEric Anholt <eric@anholt.net>
Sat, 9 Jul 2016 00:06:18 +0000 (17:06 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 14 Jul 2016 06:54:15 +0000 (23:54 -0700)
It's a really valuable pass currently, but it will be a mess to rewrite
for control flow.  For now, just disable it if we have multiple blocks
present.

src/gallium/drivers/vc4/vc4_opt_vpm.c

index e2249bd048eb1d512bb7f4f7463c9aefd363bbfc..34ea33635117c1e534326067680653498f079c98 100644 (file)
@@ -38,6 +38,11 @@ qir_opt_vpm(struct vc4_compile *c)
         if (c->stage == QSTAGE_FRAG)
                 return false;
 
         if (c->stage == QSTAGE_FRAG)
                 return false;
 
+        /* For now, only do this pass when we don't have control flow. */
+        struct qblock *block = qir_entry_block(c);
+        if (block != qir_exit_block(c))
+                return false;
+
         bool progress = false;
         struct qinst *vpm_writes[64] = { 0 };
         uint32_t use_count[c->num_temps];
         bool progress = false;
         struct qinst *vpm_writes[64] = { 0 };
         uint32_t use_count[c->num_temps];