summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2013-07-16 22:48:48 +0200
committerMarek Olšák <maraeo@gmail.com>2013-07-18 14:27:34 +0200
commit0d7f087483d014305ec96a84ce5a28355f843c86 (patch)
tree475e573f88d4b990353922530c192f121c0a0dc8
parent0b405f364f57245f673f678d73d7180400593489 (diff)
r600g: use WAIT_3D_IDLE before using CP DMA
I broke this with 7948ed1250cae78ae1b22dbce4ab23aceacc6159 for r700 at least.
-rw-r--r--src/gallium/drivers/r600/evergreen_hw_context.c1
-rw-r--r--src/gallium/drivers/r600/r600_hw_context.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/evergreen_hw_context.c b/src/gallium/drivers/r600/evergreen_hw_context.c
index c428bc1f6cc..93c9c58fd01 100644
--- a/src/gallium/drivers/r600/evergreen_hw_context.c
+++ b/src/gallium/drivers/r600/evergreen_hw_context.c
@@ -123,6 +123,7 @@ void evergreen_cp_dma_clear_buffer(struct r600_context *rctx,
/* Flush the cache where the resource is bound. */
r600_flag_resource_cache_flush(rctx, dst);
+ rctx->flags |= R600_CONTEXT_WAIT_3D_IDLE;
while (size) {
unsigned sync = 0;
diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c
index 7bb4825ba96..97b0f9cb0ef 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -636,6 +636,7 @@ void r600_cp_dma_copy_buffer(struct r600_context *rctx,
/* Flush the caches where the resources are bound. */
r600_flag_resource_cache_flush(rctx, src);
r600_flag_resource_cache_flush(rctx, dst);
+ rctx->flags |= R600_CONTEXT_WAIT_3D_IDLE;
/* There are differences between R700 and EG in CP DMA,
* but we only use the common bits here. */