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

Reply via email to