xf86-video-ati: Branch 'master'

Benjamin Herrenschmidt benh at kernel.crashing.org
Sun Jun 25 15:54:01 PDT 2006


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...

Ben.





More information about the xorg mailing list