From: Paul M. <pa...@sa...> - 2003-05-21 12:41:14
|
I have been trying the mach64-0-0-6-branch of the DRI tree on my Apple G3 powerbook, which has an ATI 3D Rage LT Pro (code LI, revision 0xdc). It is generally working, except that with some applications cause the chip to get stuck in a state where the FIFO is empty but the MACH64_GUI_ACTIVE bit is set (continually) in the GUI_STAT register. The mach64_do_wait_for_idle function eventually times out and the engine gets reset and off we go, but it kills the performance. I have done some digging into what causes the problem and I have come up with the following points: * The hangs don't happen in the "mmio" dma mode, but they do in the "sync" and "async" modes. * tuxracer never hangs, even in async mode. * glxgears hangs within less than a second. * The hang always occurs within a mach64_dma_dispatch_vertex call for primitive 8 (MACH64_PRIM_QUAD_STRIP), at least with glxgears. * I can get it to hang in mmio mode running glxgears if I make mach64_dispatch_pseudo_dma() just wait for space in the FIFO (or even for the FIFO to be empty) rather than waiting for the engine to be idle every 16 words. Can anyone give me any pointers about how to get this chip going properly? Thanks, Paul. |