On Monday 01 Jul 2002 8:38 pm, Keith Whitwell scribed numinously:" > Tim Smith wrote: > > On Monday 01 Jul 2002 5:19 pm, Keith Whitwell scribed numinously:" > > > >>>I'm running without PageFlipping, and don't see any SwapBuffers ioctls > >>>in my debug output, so that rules that out. > >>> > >>>I got suspicious of the clear ioctl before and put a wait-for-idle > >>>(full blown host-wait) call in after each clear. That didn't fix it > >>>either, so I don't think it's the clear. > >>> > >>>It's always radeon_cp_cmdbuf, and it never, ever locks up when nrect < > >>>2, and usually nrect >=3 (I think I might have seen a lockup with > >>> nrect == 2 but it's harder to provoke). emit_clip_rect() therefore > >>> seemed like the safest place to put the wait. In the common case > >>> where nrect==1 it gets called once only for the whole buffer, and > >>> most of the time it should be a no-op. > >> > >>The other dumb thing we're doing here is using those registers for 3d > >>cliprects *at all* -- the radeon has 3 (three!) dedicated 3d scissor > >>rects that are intended for this task -- we should simply change the > >> code to use them, fix the lockup & get a 3x speedup in clipping > >> situations... > > > > I found those defined in the DRM header file and in the SDK from ATI, > > but no documentation on them at all; the register reference is silent > > on them and lists no registers with their offsets. > > > > Looking around there got me thinking, and attached is a *much* better > > fix for the problem than I previously posted; no waiting around for > > things to go idle at all. I've verified that this fixes all the lockups > > I've been able to provoke. This emits the type 3 SET_SCISSORS CCE > > command packet rather than two consecutive type 0 register-write > > command packets. Given that this fixes it without a wait, I theorise > > that either it's more of a conflict over the host interface than over > > the 2D/3D engines, or the microengine knows something about the > > SET_SCISSORS command packet that it doesn't know about two consecutive > > register writes (which latter seems more likely, else why bother to > > provide the command?) > > This looks good. Have you tested with pageflipping enabled?
Yes. Mind you I usually get notes along the lines of "allow 1 current 0" which seems to indicate that it's not getting used. I'm not sure I have anything that would use it if tuxracer doesn't. Maybe I could dig Quake3 out of the box in the garage... -- Tim Smith ([EMAIL PROTECTED]) "I cannot test the USB because the user interface is encrypted." -- Hugo Tyson ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Dri-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dri-devel