On Tue, Feb 26, 2013 at 5:24 AM, Marek Olšák <mar...@gmail.com> wrote: > 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.
I don't know what the deal is with TF2. It apparently still has issues even if CP DMA is disabled which would use streamout or async DMA depending on the kernel and asic. Alex > > 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