summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2013-09-18 22:46:25 +0200
committerCarl Worth <cworth@cworth.org>2013-10-01 14:02:31 -0700
commit563c488453ec7dd11ba1d074215a2fa2b414769a (patch)
tree4eb5dbfdee1ee2420dcfd75efa95ca2963c3f3fe
parent4babf9ba6b889ac48123e66363177c2d23abda57 (diff)
r600g: fix constant buffer cache flushing
Cc: "9.2" <mesa-stable@lists.freedesktop.org> (cherry picked from commit 6317a3fb31014d89edff2993f3cf403f651a07f6) Conflicts: src/gallium/drivers/r600/r600_hw_context.c
-rw-r--r--src/gallium/drivers/r600/r600_hw_context.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c
index 97b0f9cb0ef..266d5f507b3 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -236,7 +236,11 @@ void r600_flush_emit(struct r600_context *rctx)
}
if (rctx->flags & R600_CONTEXT_INV_CONST_CACHE) {
- cp_coher_cntl |= S_0085F0_SH_ACTION_ENA(1);
+ /* Direct constant addressing uses the shader cache.
+ * Indirect contant addressing uses the vertex cache. */
+ cp_coher_cntl |= S_0085F0_SH_ACTION_ENA(1) |
+ (rctx->has_vertex_cache ? S_0085F0_VC_ACTION_ENA(1)
+ : S_0085F0_TC_ACTION_ENA(1));
}
if (rctx->flags & R600_CONTEXT_INV_VERTEX_CACHE) {
cp_coher_cntl |= rctx->has_vertex_cache ? S_0085F0_VC_ACTION_ENA(1)