summaryrefslogtreecommitdiff
path: root/src/gallium
diff options
context:
space:
mode:
authorCorbin Simpson <MostAwesomeDude@gmail.com>2009-02-14 01:55:38 -0800
committerCorbin Simpson <MostAwesomeDude@gmail.com>2009-02-14 01:55:38 -0800
commitb45e5e2a12e91cecec8922e58b2fc3960ab7ae14 (patch)
treebf49b182ba5044d65399fe157f81995de56b0e5f /src/gallium
parente511110b71a7ea19c531d707080813d9d432341c (diff)
r300-gallium: Emit Z/stencil buffer offset.
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/r300/r300_emit.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c
index 8108b99f94..21803443fe 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -168,6 +168,19 @@ void r300_emit_fb_state(struct r300_context* r300,
OUT_CS_REG(R300_US_OUT_FMT_0 + (4 * i),
translate_out_fmt(fb->cbufs[i]->format));
}
+
+ if (fb->zsbuf) {
+ tex = (struct r300_texture*)fb->zsbuf->texture;
+ OUT_CS_REG_SEQ(R300_ZB_DEPTHOFFSET, 1);
+ OUT_CS_RELOC(tex->buffer, 0, 0, RADEON_GEM_DOMAIN_VRAM, 0);
+ }
+
+ OUT_CS_REG(R300_RB3D_DSTCACHE_CTLSTAT,
+ R300_RB3D_DSTCACHE_CTLSTAT_DC_FREE_FREE_3D_TAGS |
+ R300_RB3D_DSTCACHE_CTLSTAT_DC_FLUSH_FLUSH_DIRTY_3D);
+ OUT_CS_REG(R300_ZB_ZCACHE_CTLSTAT,
+ R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_FLUSH_AND_FREE |
+ R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE);
R300_PACIFY;
END_CS;
}