CVS lock ?
Michel Dänzer
michel at daenzer.net
Thu Dec 16 20:29:06 PST 2004
On Thu, 2004-12-16 at 07:43 -0500, Vladimir Dergachev wrote:
>
> + /* TODO: Fix this more elegantly.
Why do you commit code that contains so many question marks without any
prior discussion?
> + * Sometimes (especially with multiple DRI clients), this code
> + * runs immediately after a DRI client issues a rendering command.
> + *
> + * The accel code regularly inserts WAIT_UNTIL_IDLE into the
> + * command buffer that is sent with the indirect buffer below.
> + * The accel code fails to set the 3D cache flush registers for
> + * the R300 before sending WAIT_UNTIL_IDLE. Sending a cache flush
> + * on these new registers is not necessary for pure 2D functionality,
> + * but it *is* necessary after 3D operations.
> + * Without the cache flushes before WAIT_UNTIL_IDLE, the R300 locks up.
> + *
> + * The CP_IDLE call into the DRM indirectly flushes all caches and
> + * thus avoids the lockup problem, but the solution is far from ideal.
> + * Better solutions could be:
> + * - always flush caches when entering the X server
> + * - track the type of rendering commands somewhere and issue
> + * cache flushes when they change
> + * However, I don't feel confident enough with the control flow
> + * inside the X server to implement either fix. -- nh
RADEONEnterServer() gets called whenever the X server grabs the hardware
lock after a 3D client held it.
--
Earthling Michel Dänzer | Debian (powerpc), X and DRI developer
Libre software enthusiast | http://svcs.affero.net/rm.php?r=daenzer
More information about the xorg
mailing list