summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2012-08-26 23:02:37 +0200
committerMarek Olšák <[email protected]>2012-08-30 19:43:56 +0200
commit2f6eb3afb725112b2a0b110493f5062f80a78a3f (patch)
tree9375a009eec698140c03db5d8771f44014cc9cdb /src/gallium/drivers/r600
parent78354011f99c4103345f8f32e10b0b4b884ebdaf (diff)
r600g: disable MSAA depth decompression on r6xx
Diffstat (limited to 'src/gallium/drivers/r600')
-rw-r--r--src/gallium/drivers/r600/r600_blit.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c
index e9ed0740e65..5f39e0d54e1 100644
--- a/src/gallium/drivers/r600/r600_blit.c
+++ b/src/gallium/drivers/r600/r600_blit.c
@@ -145,6 +145,16 @@ void r600_blit_decompress_depth(struct pipe_context *ctx,
if (!staging && !texture->dirty_level_mask)
return;
+ max_sample = u_max_sample(&texture->resource.b.b);
+
+ /* XXX Decompressing MSAA depth textures is broken on R6xx.
+ * There is also a hardlock if CMASK and FMASK are not present.
+ * Just skip this until we find out how to fix it. */
+ if (rctx->chip_class == R600 && max_sample > 0) {
+ texture->dirty_level_mask = 0;
+ return;
+ }
+
if (rctx->family == CHIP_RV610 || rctx->family == CHIP_RV630 ||
rctx->family == CHIP_RV620 || rctx->family == CHIP_RV635)
depth = 0.0f;
@@ -158,7 +168,6 @@ void r600_blit_decompress_depth(struct pipe_context *ctx,
rctx->db_misc_state.copy_sample = first_sample;
r600_atom_dirty(rctx, &rctx->db_misc_state.atom);
- max_sample = u_max_sample(&texture->resource.b.b);
for (level = first_level; level <= last_level; level++) {
if (!staging && !(texture->dirty_level_mask & (1 << level)))