From: Michael <le...@nt...> - 2002-06-05 18:57:21
|
On Sun, Jun 02, 2002 at 06:14:08PM +0100, Michael wrote: > > I'll happily test any patches, just send them my way. > > Ok, I'll post something later... hmm, further playing around, I changed the CPWaitForIdle to use the non-CP WaitForIdle so the looping in X is in user space not system, removed the wait_for_fifo and a couple of FLUSHes that I can't see are necessary(and don't have any adverse affect afaict). If anything it just appears to hide the fundamental problem by reducing the amount of spinning - wait_for_fifo seems redundant as does the EnterServer NeedToSync, but given the number of times it syncs, its probably not significant and there might be a case where it does matter afaict the flag is set in xaa/... whenever direct fb access is done and probably in some places where it doesn't need to be set because the radeon driver accel functions are using the ring. The biggest problem I'm seeing is massive system cpu time for certain 3d apps when they are hidden effectively grinding the system to a halt perhaps we should detect the hidden state or simply move these spins to user space where the schedular and nice, or possibly even make the spins into a wait queue as I mentioned before - does the new interrupt code allow you to fire an interrupt on frame completion or idle states? That's compounded to some extent by massive X time spinning waiting for idle, but most of that disappears if X runs at high priority and if the 3d app is not hidden. It looks like there are plenty looking at this now, so I'll leave it and probably do some more of the new .S file for the codegen stuff. -- Michael. |