|
From: Antonino D. <ad...@po...> - 2003-03-11 22:54:56
|
On Wed, 2003-03-12 at 06:27, Thomas Winischhofer wrote: > Antonino Daplas wrote: > > Unfortunately, this is what we are trying to prevent. X assumes that > > the console is in text mode, so only registers that affect text mode are > > restored. Frequently, cursor registers and bitmaps, as an example, are > > not refreshed. There's probably more, ie accel engine, etc. > > Argh.. of course, cursor and accelerator registers are usually not > restored, you're right at this. But the drivers usually leave the engine > in the same state as when started. (A "restore" of accelerator engine > registers is mostly impossible, because a complete restore would cause > the last command to be executed again) > The accel engine is probably not a problem if it uses mmio. However, engines that use command buffers are more susceptible to this if the buffers can be dynamically allocated by the process. The i810 for instance uses ringbuffers. It has to be dynamically allocated via agpgart. Fortunately, the i810 can support 2 ringbuffers, so X can use one and fb the other, so there's no conflict. Then you also have DRI joining in the confusion :-) The best solution, personally, is to have one module controlling chipset access -- DRM for 2D and 3D, and fb for video mode switching. Tony |