From: Marek Olšák Date: Thu, 26 May 2016 15:25:46 +0000 (+0200) Subject: r600g: only do necessary cache flushes in cp_dma_copy_buffer X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=eff94af79437d9434deb9bae553b6db5cc05a832;p=mesa.git r600g: only do necessary cache flushes in cp_dma_copy_buffer The main impact is that {upload, draw, upload, draw, ..} doesn't flush framebuffer caches before every upload. Reviewed-by: Alex Deucher Tested-by: Grazvydas Ignotas Tested-by: Dieter Nützel --- diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c index 3ba723d0541..ed4820d6cbb 100644 --- a/src/gallium/drivers/r600/r600_hw_context.c +++ b/src/gallium/drivers/r600/r600_hw_context.c @@ -447,15 +447,7 @@ void r600_cp_dma_copy_buffer(struct r600_context *rctx, src_offset += r600_resource(src)->gpu_address; /* Flush the caches where the resources are bound. */ - rctx->b.flags |= R600_CONTEXT_INV_CONST_CACHE | - R600_CONTEXT_INV_VERTEX_CACHE | - R600_CONTEXT_INV_TEX_CACHE | - R600_CONTEXT_FLUSH_AND_INV | - R600_CONTEXT_FLUSH_AND_INV_CB | - R600_CONTEXT_FLUSH_AND_INV_DB | - R600_CONTEXT_FLUSH_AND_INV_CB_META | - R600_CONTEXT_FLUSH_AND_INV_DB_META | - R600_CONTEXT_STREAMOUT_FLUSH | + rctx->b.flags |= r600_get_flush_flags(R600_COHERENCY_SHADER) | R600_CONTEXT_WAIT_3D_IDLE; /* There are differences between R700 and EG in CP DMA, @@ -513,11 +505,6 @@ void r600_cp_dma_copy_buffer(struct r600_context *rctx, * should precede it. */ r600_emit_pfp_sync_me(rctx); - - /* Invalidate the read caches. */ - rctx->b.flags |= R600_CONTEXT_INV_CONST_CACHE | - R600_CONTEXT_INV_VERTEX_CACHE | - R600_CONTEXT_INV_TEX_CACHE; } void r600_dma_copy_buffer(struct r600_context *rctx,