From: Marek Olšák Date: Sat, 19 Apr 2014 21:39:13 +0000 (+0200) Subject: r600g: fix flushing on RV670, RS780, RS880 again X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=042e40f67b4cec0bc1d5d783bc3207a191bf433b;p=mesa.git r600g: fix flushing on RV670, RS780, RS880 again Cc: 10.0 10.1 mesa-stable@lists.freedesktop.org Reviewed-by: Alex Deucher --- diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c index 5ecc73daed1..0aa7f457960 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 */