xf86-video-ati: Branch 'master'
Michel Dänzer
michel at tungstengraphics.com
Mon Jun 26 01:01:28 PDT 2006
On Mon, 2006-06-26 at 08:54 +1000, Benjamin Herrenschmidt wrote:
> On Sat, 2006-06-24 at 07:03 -0700, Michel Daenzer wrote:
>
> > - /* Wait for previous blit to complete */
> > - RADEONWaitForIdleMMIO(pScrn);
> > + /*
> > + * Wait for previous blit to complete.
> > + *
> > + * XXX: Doing here essentially the same things this ioctl does in
> > + * the DRM results in corruption with 'small' transfers, apparently
> > + * because the data doesn't actually land in system RAM before the
> > + * memcpy. I suspect the ioctl helps mostly due to its latency; what
> > + * we'd really need is a way to reliably wait for the host interface
> > + * to be done with pushing the data to the host.
> > + */
> > + while ((drmCommandNone(info->drmFD, DRM_RADEON_CP_IDLE) == -EBUSY)
> > + && (i++ < RADEON_TIMEOUT))
> > +
>
> With PCI transfers, you do that by reading from the card, that shall
> flush all pending DMAs. AGP might have relaxed access ordering, not sure
> about that. Now, it seems that the read from MMIO in the wait for idle
> should have done just that... I suspect the problem might be that the
> transfer didn't actually start yet...
Right. I'll play with writing to a scratch register and polling that,
thanks for the feedback!
--
Earthling Michel Dänzer | http://tungstengraphics.com
Libre software enthusiast | Debian, X and DRI developer
More information about the xorg
mailing list