[Mesa-dev] [PATCH 11/13] radeonsi: change TC cache flushing strategy for textures

Marek Olšák maraeo at gmail.com
Mon Jan 5 12:21:01 PST 2015


From: Marek Olšák <marek.olsak at amd.com>

---
 src/gallium/drivers/radeonsi/si_descriptors.c | 4 ----
 src/gallium/drivers/radeonsi/si_state.c       | 6 ++++++
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c
index 1644ec7..573787a 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -445,8 +445,6 @@ static void si_set_sampler_views(struct pipe_context *ctx,
 		}
 	}
 
-	sctx->b.flags |= SI_CONTEXT_INV_TC_L1 |
-			 SI_CONTEXT_INV_TC_L2;
 	si_update_descriptors(sctx, &samplers->views.desc);
 }
 
@@ -671,8 +669,6 @@ void si_update_vertex_buffers(struct si_context *sctx)
 	 * on performance (confirmed by testing). New descriptors are always
 	 * uploaded to a fresh new buffer, so I don't think flushing the const
 	 * cache is needed. */
-	sctx->b.flags |= SI_CONTEXT_INV_TC_L1 |
-			 SI_CONTEXT_INV_TC_L2;
 }
 
 
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 4b146b5..9e1b3cd 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -2004,6 +2004,12 @@ static void si_set_framebuffer_state(struct pipe_context *ctx,
 				 SI_CONTEXT_FLUSH_AND_INV_DB_META;
 	}
 
+	/* Only flush TC when changing the framebuffer state, because
+	 * the only client not using TC that can change textures is
+	 * the framebuffer. */
+	sctx->b.flags |= SI_CONTEXT_INV_TC_L1 |
+			 SI_CONTEXT_INV_TC_L2;
+
 	util_copy_framebuffer_state(&sctx->framebuffer.state, state);
 
 	sctx->framebuffer.export_16bpc = 0;
-- 
2.1.0



More information about the mesa-dev mailing list