On Wed, 25 Sep 2002, Sottek, Matthew J wrote:

> I don't think there are any issues with the blit engine at 16 bit.

Is there an i810 blitter bug at 24bpp? (and that's what the author of the
code was referring to?)

> I think the problem has something to do with the way multi-line pixmap
> cache's are stored in the offscreen memory. The pitch in the Xaa
> functions is set to be the same pitch as the framebuffer, which may not
> be the case.
>
> If you can track down the code that puts the cached pixmaps in the offscreen
> memory you can probably determine how they are being arranged in that
> memory. Perhaps that code is unaware of the pitch != width case.  (Is Xaa
> used to blit from on-screen locations to the offscreen cache?)

I did notice the source & destination pitches in the blitter instruction
are explicity set to the same value.  I'll see if I can track down the
code that stores the pixmaps in offscreen memory.  I can't answer your
question about Xaa yet, either.  But if your theory is correct, and the
source pitch was wildly incorrect, wouldn't nearly all blits be corrupted?

For me at least, the problem is intermittent.  Right now my display is 
fine.  A few moments ago when I was browsing the i810 specs the corruption 
appeared and I was able to try a few experiments:

1) If I cover a corrupted section of the display with a window, then
minimize it, the corruption is still there.

2) If I slowly drag a window over a corrupted section of a different
window horizontally, the corruption is erased. (!)

3) If I slowly drag a window over a corrupted section of a different 
window vertically, the corruption is redrawn.

4) ... diagonally, the corruption is erased along the trailing horizontal
edge, and worsened (!) along the trailing vertical edge.  The resulting
corruption on the vertical edge is much more severe than I normally see.

I'm not sure what the trigger is for the corruption to appear though, nor 
have I figured out what causes it to go away.

One silly thing I noticed is that the code used to write the blitter
source pitch to the ring buffer in I810SubsequentScreenToScreenCopy:

      OUT_RING( pI810->BR[13] & 0xFFFF );

should really only write 13 bits, 14-32 are reserved according to my copy
of the specs.  Does the i810 get cranky about its reserved bits?

Thanks for the input,
Bill

_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert

Reply via email to