Mesa (master): r600g: disable MSAA depth decompression on r6xx

Marek Olšák mareko at kemper.freedesktop.org
Thu Aug 30 17:45:04 UTC 2012


Module: Mesa
Branch: master
Commit: 2f6eb3afb725112b2a0b110493f5062f80a78a3f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2f6eb3afb725112b2a0b110493f5062f80a78a3f

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sun Aug 26 23:02:37 2012 +0200

r600g: disable MSAA depth decompression on r6xx

---

 src/gallium/drivers/r600/r600_blit.c |   11 ++++++++++-
 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 e9ed074..5f39e0d 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)))




More information about the mesa-commit mailing list