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.