I've tested CP DMA and it's better than it was, unfortunately it's on par with R700, which means that piglit passes and Team Fortress 2 has a corrupted GUI. At this point I think it would be better to disable the CP DMA for R600-R700 and use streamout or async DMA instead.
Marek On Fri, Feb 22, 2013 at 11:59 PM, <alexdeuc...@gmail.com> wrote: > From: Alex Deucher <alexander.deuc...@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.deuc...@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 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev