TC can be used for writing and therefore should be flushed.
---
 src/gallium/drivers/radeonsi/r600_hw_context.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/r600_hw_context.c 
b/src/gallium/drivers/radeonsi/r600_hw_context.c
index 5631bdb..1fe6814 100644
--- a/src/gallium/drivers/radeonsi/r600_hw_context.c
+++ b/src/gallium/drivers/radeonsi/r600_hw_context.c
@@ -167,7 +167,7 @@ void si_need_cs_space(struct r600_context *ctx, unsigned 
num_dw,
        }
 }
 
-static void r600_flush_framebuffer(struct r600_context *ctx)
+static void r600_flush_caches(struct r600_context *ctx)
 {
        struct si_pm4_state *pm4;
 
@@ -188,7 +188,9 @@ static void r600_flush_framebuffer(struct r600_context *ctx)
                                S_0085F0_CB6_DEST_BASE_ENA(1) |
                                S_0085F0_CB7_DEST_BASE_ENA(1) |
                                S_0085F0_DB_ACTION_ENA(1) |
-                               S_0085F0_DB_DEST_BASE_ENA(1));
+                               S_0085F0_DB_DEST_BASE_ENA(1) |
+                               S_0085F0_TC_ACTION_ENA(1) |
+                               S_0085F0_TCL1_ACTION_ENA(1));
        si_cmd_flush_and_inv_cb_meta(pm4);
 
        si_pm4_emit(ctx, pm4);
@@ -223,7 +225,7 @@ void si_context_flush(struct r600_context *ctx, unsigned 
flags)
        }
 #endif
 
-       r600_flush_framebuffer(ctx);
+       r600_flush_caches(ctx);
 
        /* partial flush is needed to avoid lockups on some chips with user 
fences */
        cs->buf[cs->cdw++] = PKT3(PKT3_EVENT_WRITE, 0, 0);
-- 
1.8.1.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to