summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2017-01-19 09:31:45 +1100
committerEric Anholt <[email protected]>2017-01-28 19:35:20 -0800
commit5b7e2697dc17ef11a247887115195f6f433c1469 (patch)
treeae5d9bd847b09a4399feb38e0da9ffbffdd5b288
parentc1299615fbe25440f82d6b69667967db294e6e31 (diff)
vc4: Coalesce into TLB writes as well as VPM/tex.
This generally cuts an instruction when blending is enabled and we thus have a single instruction generating the color value. total instructions in shared programs: 91759 -> 91634 (-0.14%) instructions in affected programs: 5338 -> 5213 (-2.34%)
-rw-r--r--src/gallium/drivers/vc4/vc4_opt_coalesce_ff_writes.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gallium/drivers/vc4/vc4_opt_coalesce_ff_writes.c b/src/gallium/drivers/vc4/vc4_opt_coalesce_ff_writes.c
index b247c690d82..e4f8e57fcd7 100644
--- a/src/gallium/drivers/vc4/vc4_opt_coalesce_ff_writes.c
+++ b/src/gallium/drivers/vc4/vc4_opt_coalesce_ff_writes.c
@@ -57,7 +57,10 @@ qir_opt_coalesce_ff_writes(struct vc4_compile *c)
if (mov_inst->src[0].file != QFILE_TEMP)
continue;
- if (!(mov_inst->dst.file == QFILE_VPM || qir_is_tex(mov_inst)))
+ if (!(mov_inst->dst.file == QFILE_VPM ||
+ mov_inst->dst.file == QFILE_TLB_COLOR_WRITE ||
+ mov_inst->dst.file == QFILE_TLB_COLOR_WRITE_MS ||
+ qir_is_tex(mov_inst)))
continue;
uint32_t temp = mov_inst->src[0].index;
@@ -80,6 +83,7 @@ qir_opt_coalesce_ff_writes(struct vc4_compile *c)
if (qir_has_side_effects(c, inst) ||
qir_has_side_effect_reads(c, inst) ||
+ inst->op == QOP_TLB_COLOR_READ ||
inst->op == QOP_VARY_ADD_C) {
continue;
}