summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4/vc4_qpu_emit.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2014-08-01 13:32:49 -0700
committerEric Anholt <eric@anholt.net>2014-08-11 14:45:31 -0700
commit4160ac5ee41630a5c9fc4e1f3520f0fabf42cb14 (patch)
treeb9fa27c50da704655560e2d2a9f5b2e94288049f /src/gallium/drivers/vc4/vc4_qpu_emit.c
parent2259cc5aebcb16636b1399dd438beed9d9867e67 (diff)
downloadexternal_mesa3d-4160ac5ee41630a5c9fc4e1f3520f0fabf42cb14.zip
external_mesa3d-4160ac5ee41630a5c9fc4e1f3520f0fabf42cb14.tar.gz
external_mesa3d-4160ac5ee41630a5c9fc4e1f3520f0fabf42cb14.tar.bz2
vc4: Add support for depth clears and tests within a tile.
This doesn't load/store the Z contents across submits yet. It also disables early Z, since it's going to require tracking of Z functions across multiple state updates to track the early Z direction and whether it can be used. v2: Move the key setup to before the search for the key.
Diffstat (limited to 'src/gallium/drivers/vc4/vc4_qpu_emit.c')
-rw-r--r--src/gallium/drivers/vc4/vc4_qpu_emit.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/vc4/vc4_qpu_emit.c b/src/gallium/drivers/vc4/vc4_qpu_emit.c
index 9d55390..33abf6d 100644
--- a/src/gallium/drivers/vc4/vc4_qpu_emit.c
+++ b/src/gallium/drivers/vc4/vc4_qpu_emit.c
@@ -213,6 +213,8 @@ vc4_generate_code(struct qcompile *c)
if (qinst->src[i].file == QFILE_TEMP)
reg_uses_remaining[qinst->src[i].index]++;
}
+ if (qinst->op == QOP_TLB_PASSTHROUGH_Z_WRITE)
+ reg_in_use[3 + 32 + QPU_R_FRAG_PAYLOAD_ZW] = true;
}
switch (c->stage) {
@@ -458,6 +460,12 @@ vc4_generate_code(struct qcompile *c)
break;
+ case QOP_TLB_PASSTHROUGH_Z_WRITE:
+ queue(c, qpu_inst(qpu_a_MOV(qpu_ra(QPU_W_TLB_Z),
+ qpu_rb(QPU_R_FRAG_PAYLOAD_ZW)),
+ qpu_m_NOP()));
+ break;
+
case QOP_TLB_COLOR_WRITE:
queue(c, qpu_inst(qpu_a_MOV(qpu_tlbc(),
src[0]),