[Mesa-dev] [PATCH 4/4] radeonsi: add workarounds for CP DMA to stay on the fast path

Marek Olšák maraeo at gmail.com
Wed Nov 4 00:47:27 PST 2015


On Nov 4, 2015 9:31 AM, "Michel Dänzer" <michel at daenzer.net> wrote:
>
> On 04.11.2015 08:46, Marek Olšák wrote:
> >
> > @@ -209,11 +211,48 @@ static void si_clear_buffer(struct pipe_context
*ctx, struct pipe_resource *dst,
> >               r600_resource(dst)->TC_L2_dirty = true;
> >  }
> >
> > +/**
> > + * Realign the CP DMA engine. This must be done after a copy with an
unaligned
> > + * size.
> > + *
> > + * \param size  Remaining size to the CP DMA alignment.
> > + */
> > +static void si_cp_dma_realign_engine(struct si_context *sctx, unsigned
size)
> > +{
> > +     uint64_t va;
> > +     unsigned dma_flags = 0;
> > +     unsigned scratch_size = CP_DMA_ALIGNMENT * 2;
> > +
> > +     assert(size < CP_DMA_ALIGNMENT);
> > +
> > +     /* Use the scratch buffer as the dummy buffer. The 3D engine
should be
> > +      * idle at this point.
> > +      */
> > +     if (!sctx->scratch_buffer ||
> > +         sctx->scratch_buffer->b.b.width0 < scratch_size) {
> > +             r600_resource_reference(&sctx->scratch_buffer, NULL);
> > +             sctx->scratch_buffer =
> > +                     si_resource_create_custom(&sctx->screen->b.b,
> > +                                               PIPE_USAGE_DEFAULT,
> > +                                               scratch_size);
> > +     }
> > +
> > +     si_cp_dma_prepare(sctx, &sctx->scratch_buffer->b.b,
> > +                       &sctx->scratch_buffer->b.b, size, size,
&dma_flags);
> > +
> > +     va = sctx->scratch_buffer->gpu_address;
> > +     si_emit_cp_dma_copy_buffer(sctx, va, va + CP_DMA_ALIGNMENT, size,
> > +                                dma_flags);
> > +}
>
> Should this update sctx->emit_scratch_reloc ?

Not strictly needed, but I'll add that before pushing.

Marek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20151104/f0faa4d1/attachment.html>


More information about the mesa-dev mailing list