summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Deucher <[email protected]>2013-07-12 09:31:28 -0400
committerAlex Deucher <[email protected]>2013-07-12 18:07:56 -0400
commite0a7565832b567a2ffc65b08d21500ba5d914415 (patch)
treee025b9c2d40cd3737ca56519b2d6d22b0b4dcea6
parentaf16f73051c2edf234970289795d270a593d3c0a (diff)
r600g: don't use the CB/DB CP COHER logic on r6xx
There are hw bugs. Flush and inv event is sufficient. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=66837 Signed-off-by: Alex Deucher <[email protected]>
-rw-r--r--src/gallium/drivers/r600/r600_hw_context.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c
index 652329bfa3c..7bb4825ba96 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -246,13 +246,21 @@ void r600_flush_emit(struct r600_context *rctx)
cp_coher_cntl |= S_0085F0_TC_ACTION_ENA(1);
}
- if (rctx->flags & R600_CONTEXT_FLUSH_AND_INV_DB) {
+ /* Don't use the DB CP COHER logic on r6xx.
+ * There are hw bugs.
+ */
+ if (rctx->chip_class >= R700 &&
+ (rctx->flags & R600_CONTEXT_FLUSH_AND_INV_DB)) {
cp_coher_cntl |= S_0085F0_DB_ACTION_ENA(1) |
S_0085F0_DB_DEST_BASE_ENA(1) |
S_0085F0_SMX_ACTION_ENA(1);
}
- if (rctx->flags & R600_CONTEXT_FLUSH_AND_INV_CB) {
+ /* Don't use the CB CP COHER logic on r6xx.
+ * There are hw bugs.
+ */
+ if (rctx->chip_class >= R700 &&
+ (rctx->flags & R600_CONTEXT_FLUSH_AND_INV_CB)) {
cp_coher_cntl |= S_0085F0_CB_ACTION_ENA(1) |
S_0085F0_CB0_DEST_BASE_ENA(1) |
S_0085F0_CB1_DEST_BASE_ENA(1) |