Re: xaa vs. WriteImage()
Marc Aurele La France <[email protected]> Wed, 5 Mar 2008 11:08:04 -0700 (MST)
| Newsgroups | gmane.comp.xfree86.devel |
|---|---|
| Message-ID | <[email protected]> |
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: [email protected] |
| 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.