[Mesa-dev] [PATCH 6/6] r600g: enable CP DMA on r6xx (v3)
Marek Olšák
maraeo at gmail.com
Tue Feb 26 02:24:43 PST 2013
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, <alexdeucher at gmail.com> wrote:
> 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
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list