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

AltStyle によって変換されたページ (->オリジナル) /