From: José F. <j_r...@ya...> - 2002-04-21 08:37:22
|
On 2002.04.21 02:31 Felix Kühling wrote: > ... > > OK, I checked the mach64-0-0-4-branch out tonight and compiled it. It > runs surprisingly usable. The only big difference to mach64-0-0-3 which I > noticed is that all the CPU load is in the kernel now :) > Good. I guess that I can start making binary snapshots of this branch as well. > > There are locks in place in aticonsole.c for vt/mode switches > > (xc/programs/Xserver/hw/xfree86/drivers/ati) and in atimach64.c for the > > XAA functions. The disabled code to initialize 2D acceleration is in > > ATIMach64AccelInit() in atimach64.c. I guess the first thing to do is > to > > make sure that the locks are in the right place, and that the 2D > driver's > > state is restored correctly. Currently, if a GL context is active, a > vt > > or mode switch will cause a lockup on returning to the X server > > (ATIEnterVT and ATISwitchMode). Also dragging a window or other XAA > > Ok, I checked aticonsole.c. The existing locks seem to be in the right > places. If I understand the problem correctly I will have to make sure > that the hardware is in 2d state when the X-server has the lock. This > means that it has to check whether it had the lock before. Only if not it > will have to restore 2d state. This mechanism could look similar to > LOCK_HARDWARE and mach64GetLock in mach64_lock.[ch]. I gave a look into aticonsole.c and it seems that we have everything that's needed for VT switching. When DMA is working we'll gonna need a MACH64DMA_START/MACH64DMA_STOP but we still don't have it. Looking at the TDFX driver (which doesn't do DMA either), it hasn't nothing that the current Mach64 doesn't has, so I don't understand very well why VT switchs still locks the system. > > ... > > As I mentioned before, I don't have another machine to do this. But maybe > I can build a simple input device which is not used by X to trigger a > background process to kill the X-server. > You could attempt to do something like (with root): at now + 1 minutes killall -9 X ^D and you got 1 minutes to do the testing. If everything worked allright, you could still stop the job. Check "at" manpage for details. > ... > > Felix > José Fonseca |