On Tue, 4 Mar 2008, Michael Lorenz wrote:
On Mar 4, 2008, at 15:37, Marc Aurele La France wrote:
On Mon, 3 Mar 2008, Michael Lorenz wrote:
I noticed the following - XAACopyArea() only attempts to use accelerated
WriteImage() when writing to a DRAWABLE_WINDOW but not on off-screen
pixmaps. I used the following changes to make it work:
diff -u -w -r1.1.1.3 xaaCpyArea.c
- --- xaaCpyArea.c 9 Jun 2001 15:09:02 -0000 1.1.1.3
+++ xaaCpyArea.c 3 Mar 2008 20:51:05 -0000
@@ -64,9 +64,16 @@
return (XAABitBlt( pSrcDrawable, pDstDrawable,
pGC, srcx, srcy, width, height, dstx, dsty,
XAADoBitBlt, 0L));
+ } else {
+ if(infoRec->ScreenToScreenBitBlt &&
+ CHECK_ROP(pGC,infoRec->ScreenToScreenBitBltFlags) &&
+ CHECK_ROPSRC(pGC,infoRec->ScreenToScreenBitBltFlags) &&
+ CHECK_PLANEMASK(pGC,infoRec->ScreenToScreenBitBltFlags))
+ return (XAABitBlt( pSrcDrawable, pDstDrawable,
+ pGC, srcx, srcy, width, height, dstx, dsty,
+ XAADoImageWrite, 0L));
}
}
This does not look correct. Shouldn't this be more in line with the case
where the destination drawable is a window? (i.e. test bitsPerPixel's and
WritePixmap files instead of ScreenToScreenBitBlt).
The whole logic looks a little bit fishy, I used the first if()'s
source-in-memory branch first but wasn't quite sure if that's doing the right
thing, where it;s now looked better to me but I won't claim I completely
understand XAA's inner voodoo. All I want is the make XAA use ImageWrite()s
for all RAM-to-VRAM transfers if the driver supports it.
You could check that the change doesn't introduce additional xtest
failures.
Otherwise, teaching the framebuffer layer to cope with a tiled framebuffer
might be necessary in the long run, any pointers where to start?
By design, this is a driver issue, as it is responsible for providing VRAM
access to the rest of the server.
Marc.
+----------------------------------+----------------------------------+
| Marc Aurele La France | work: 1-780-492-9310 |
| Academic Information and | fax: 1-780-492-1729 |
| Communications Technologies | email: tsi@xxxxxxxxxxx |
| 352 General Services Building +----------------------------------+
| University of Alberta | |
| Edmonton, Alberta | Standard disclaimers apply |
| T6G 2H1 | |
| CANADA | |
+----------------------------------+----------------------------------+
XFree86 developer and VP. ATI driver and X server internals.
_______________________________________________
Devel mailing list
Devel@xxxxxxxxxxx
http://XFree86.Org/mailman/listinfo/devel