Mesa (master): r600g: add rv670 flushing workaround.

Dave Airlie airlied at kemper.freedesktop.org
Thu May 5 22:41:24 UTC 2011


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

Author: Dave Airlie <airlied at redhat.com>
Date:   Fri May  6 08:40:08 2011 +1000

r600g: add rv670 flushing workaround.

Hopefully we can find out the proper fix for this, but for now
this makes the fbo mipmap tests pass on my rv670 (x2 card).

Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/gallium/winsys/r600/drm/r600_hw_context.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c
index b8a8108..ff99143 100644
--- a/src/gallium/winsys/r600/drm/r600_hw_context.c
+++ b/src/gallium/winsys/r600/drm/r600_hw_context.c
@@ -812,6 +812,10 @@ void r600_context_bo_flush(struct r600_context *ctx, unsigned flush_flags,
 		use_event_flush = TRUE;
 
 	if (use_event_flush && (ctx->flags & R600_CONTEXT_CHECK_EVENT_FLUSH)) {
+		/* the rv670 seems to fail fbo-generatemipmap unless we flush the CB1 dest base ena */
+		if (ctx->radeon->family == CHIP_RV670)
+			r600_context_flush_all(ctx, S_0085F0_CB1_DEST_BASE_ENA(1));
+
 		ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 0, ctx->predicate_drawing);
 		ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT) | EVENT_INDEX(0);
 		ctx->flags &= ~R600_CONTEXT_CHECK_EVENT_FLUSH;




More information about the mesa-commit mailing list