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