r600g: don't use the CB/DB CP COHER logic on r6xx
authorAlex Deucher <alexander.deucher@amd.com>
Fri, 12 Jul 2013 13:31:28 +0000 (09:31 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 12 Jul 2013 22:07:56 +0000 (18:07 -0400)
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 <alexander.deucher@amd.com>
src/gallium/drivers/r600/r600_hw_context.c

index 652329bfa3cf1e7b66bbe2e9f07afb154e254f6d..7bb4825ba963b919a3b5e940315c50468fd817bb 100644 (file)
@@ -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) |