summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2016-07-08 17:06:18 -0700
committerEric Anholt <[email protected]>2016-07-13 23:54:15 -0700
commit37ecc616628d3d5fb75e53135f2f31b11e0cce74 (patch)
treebbd251acc4b1cdf8d7902dc8309bc20846c7d3ce /src/gallium/drivers/vc4
parentee69cfd11d34e6570c579c42f9cd8b5c8ea36bcf (diff)
vc4: Disable vc4_opt_vpm in the presence of control flow.
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.
Diffstat (limited to 'src/gallium/drivers/vc4')
-rw-r--r--src/gallium/drivers/vc4/vc4_opt_vpm.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/drivers/vc4/vc4_opt_vpm.c b/src/gallium/drivers/vc4/vc4_opt_vpm.c
index e2249bd048e..34ea3363511 100644
--- a/src/gallium/drivers/vc4/vc4_opt_vpm.c
+++ b/src/gallium/drivers/vc4/vc4_opt_vpm.c
@@ -38,6 +38,11 @@ qir_opt_vpm(struct vc4_compile *c)
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];