diff options
author | Eric Anholt <[email protected]> | 2016-07-08 17:06:18 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2016-07-13 23:54:15 -0700 |
commit | 37ecc616628d3d5fb75e53135f2f31b11e0cce74 (patch) | |
tree | bbd251acc4b1cdf8d7902dc8309bc20846c7d3ce /src/gallium/drivers/vc4 | |
parent | ee69cfd11d34e6570c579c42f9cd8b5c8ea36bcf (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.c | 5 |
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]; |