[Mesa-dev] [PATCH 6/6] r600g: enable CP DMA on r6xx (v3)

alexdeucher at gmail.com alexdeucher at gmail.com
Fri Feb 22 14:59:07 PST 2013


From: Alex Deucher <alexander.deucher at amd.com>

With the previous flushing changes this seems to work
reliably now.

v2: add R600_CONTEXT_FLUSH_AND_INV
v3: just enable CP DMA

Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
---
 src/gallium/drivers/r600/r600_blit.c       |    3 +--
 src/gallium/drivers/r600/r600_hw_context.c |    6 ------
 2 files changed, 1 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c
index 046eab5..019b456 100644
--- a/src/gallium/drivers/r600/r600_blit.c
+++ b/src/gallium/drivers/r600/r600_blit.c
@@ -508,8 +508,7 @@ void r600_copy_buffer(struct pipe_context *ctx, struct pipe_resource *dst, unsig
 {
 	struct r600_context *rctx = (struct r600_context*)ctx;
 
-	/* CP DMA doesn't work on R600 (flushing seems to be unreliable). */
-	if (rctx->screen->info.drm_minor >= 27 && rctx->chip_class >= R700) {
+	if (rctx->screen->info.drm_minor >= 27) {
 		r600_cp_dma_copy_buffer(rctx, dst, dstx, src, src_box->x, src_box->width);
 	}
 	else if (rctx->screen->has_streamout &&
diff --git a/src/gallium/drivers/r600/r600_hw_context.c b/src/gallium/drivers/r600/r600_hw_context.c
index 8c92030..0537916 100644
--- a/src/gallium/drivers/r600/r600_hw_context.c
+++ b/src/gallium/drivers/r600/r600_hw_context.c
@@ -1108,12 +1108,6 @@ void r600_cp_dma_copy_buffer(struct r600_context *rctx,
 	struct radeon_winsys_cs *cs = rctx->rings.gfx.cs;
 
 	assert(size);
-	assert(rctx->chip_class != R600);
-
-	/* CP DMA doesn't work on R600 (flushing seems to be unreliable). */
-	if (rctx->chip_class == R600) {
-		return;
-	}
 
 	dst_offset += r600_resource_va(&rctx->screen->screen, dst);
 	src_offset += r600_resource_va(&rctx->screen->screen, src);
-- 
1.7.7.5



More information about the mesa-dev mailing list