Re: xaa vs. WriteImage()

Michael Lorenz <[email protected]> Thu, 6 Mar 2008 17:17:08 -0500
Newsgroups gmane.comp.xfree86.devel
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello,

On Mar 6, 2008, at 16:40, Alex Deucher wrote:

> On Thu, Mar 6, 2008 at 4:26 PM, Michael Lorenz  
> <[email protected]> wrote:
>> On Mar 6, 2008, at 15:58, Alex Deucher wrote:
>>
>>> On Thu, Mar 6, 2008 at 2:58 PM, Michael Lorenz
>>> <[email protected]> wrote:
>>>> -----BEGIN PGP SIGNED MESSAGE-----
>>>>  Hash: SHA1
>>>>
>>>>  Hello,
>>>>
>>>>  On Mar 6, 2008, at 14:12, Alex Deucher wrote:
>>>>
>>>>> On Thu, Mar 6, 2008 at 2:00 PM, Michael Lorenz
>>>>> EXA has prepare/finish access hooks for CPU access to buffers.  I
>>>>> don't think XAA has anything similar.  There's also an wrapable FB
>>>>> module, although I think it's only available in Xorg.
>>>>
>>>>  I'll have a look at that - the main reason I'm using XFree86 is  
>>>> that
>>>>  it's already working on NetBSD/sgimips, Xorg needs some more work
>>>> but
>>>>  I'll eventually do it.
>>>>  Hmm, some drivers access video memory through tiny apertures like
>>>> the
>>>>  VGA range - maybe I can do something like this - let the rest  
>>>> of the
>>>>  Xserver render into my DMA buffer and then blit it in place.
>>>
>>> Use shadowfb and hook in a custom shadowupdate() function.
>>
>>  Wouldn't that interfere with XAA? If I could catch the framebuffer
>>  writes that bypass XAA that way that would solve my problem.
>>  Thanks!
>
> Yeah, you gotta pick one or the other IIRC.  However for most modern
> desktops you either have to be entirely SW or entirely HW or
> performance sucks.  You lose if any sort of fallbacks cause a pixmap
> migration to/from vram.

In my case VRAM is RAM, and the CPU is pretty slow - I've had things  
running entirely SW and performance sucked. Not the slowest I've ever  
seen but nowhere near what the HW can do.
Also, many X applications have trouble with the HW's native pixel  
format, cairo for instance just crashes. Using the DMA engine I can  
pretend it's using something more common - ABGR - and those  
applications just work fine. I think the next thing I'll try is to  
pretend that we're accessing VRAM through a small window, there must  
be prior art for that somewhere in the source tree.

have fun
Michael
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)

iQEVAwUBR9BtZcpnzkX8Yg2nAQJKvggAuAmc/lGnCFx4JYnvLKeE9uMyDBWIu48V
emxeNH3eIbH2U8kc4rthaQVtDfmcMK6rWHgk89shlZiUonZAjuCjl9alDERAPu3Z
By2y5PX/0KFfVq/PXr2YpuFpxQSUD8Av9Mn+ReouTA6usOABPSRVEfVjx5hsCbkq
7dYyLsAYkz9gBV3YzfmZn16ltOIfu2dzXXaTUGDkoL//jkj0pMDCptr2k5UvGzdm
R4FNvGImR3lf51HzMjx43qvkpWu2vvjdDZrOdZdZr4bxY0Wem2OzgmOtgGzACh8z
zNgsKVxRfJ8w2TzfUibeI16FanT+60nZuikJvBh/ZEfZaH+igcp8Cg==
=NHsm
-----END PGP SIGNATURE-----