Mesa (10.1): r600g: fix flushing on RV670, RS780, RS880 again

Carl Worth cworth at kemper.freedesktop.org
Thu May 1 14:31:39 UTC 2014


Module: Mesa
Branch: 10.1
Commit: 110b6af5f4a61bb3c28c277d38448cc9da358cbf
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=110b6af5f4a61bb3c28c277d38448cc9da358cbf

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sat Apr 19 23:39:13 2014 +0200

r600g: fix flushing on RV670, RS780, RS880 again

Cc: 10.0 10.1 mesa-stable at lists.freedesktop.org
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
(cherry picked from commit 042e40f67b4cec0bc1d5d783bc3207a191bf433b)

---

 src/gallium/drivers/r600/r600_hw_context.c |    9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c
index 358282a..c1be3e0 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -210,6 +210,15 @@ void r600_flush_emit(struct r600_context *rctx)
 				S_0085F0_SMX_ACTION_ENA(1);
 	}
 
+	/* Workaround for buggy flushing on some R6xx chipsets. */
+	if (rctx->b.flags & R600_CONTEXT_FLUSH_AND_INV &&
+	    (rctx->b.family == CHIP_RV670 ||
+	     rctx->b.family == CHIP_RS780 ||
+	     rctx->b.family == CHIP_RS880)) {
+		cp_coher_cntl |=  S_0085F0_CB1_DEST_BASE_ENA(1) |
+				  S_0085F0_DEST_BASE_0_ENA(1);
+	}
+
 	if (cp_coher_cntl) {
 		cs->buf[cs->cdw++] = PKT3(PKT3_SURFACE_SYNC, 3, 0);
 		cs->buf[cs->cdw++] = cp_coher_cntl;   /* CP_COHER_CNTL */




More information about the mesa-commit mailing list