On Thu, Mar 6, 2008 at 2:58 PM, Michael Lorenz <macallan@xxxxxxxxxx> 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 > > <macallan@xxxxxxxxxx> wrote: > >> -----BEGIN PGP SIGNED MESSAGE----- > >> Hash: SHA1 > >> > >> Hello, > >> > >> On Mar 5, 2008, at 19:06, Alex Deucher wrote: > >> > >>> On Tue, Mar 4, 2008 at 5:34 PM, Michael Lorenz > >>> <macallan@xxxxxxxxxx> wrote: > >>>> -----BEGIN PGP SIGNED MESSAGE----- > >>>> Hash: SHA1 > >>>> > >>>> Hello, > >>>> > >>>> > >>>> 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. > >>>> Otherwise, teaching the framebuffer layer to cope with a tiled > >>>> framebuffer might be necessary in the long run, any pointers > >>>> where to > >>>> start? > >>> > >>> Several drivers (radeon, intel, savage) in the Xorg tree provide > >>> support for various tiling methods. Generally the chip provides a > >>> surface control or aperture for exposing a tiled region to the > >>> CPU as > >>> a linear surface. For acceleration, you have to keep track of what > >>> buffers are tiled in the driver and do the right thing with the > >>> blitter when using those surfaces. > >> > >> Yeah, I'm dimly aware of these things - my problem is that the > >> hardware in question doesn't give me a linear view on the > >> framebuffer. > >> All I have is a small linear buffer I can use to DMA data in or out > >> of the tiled framebuffer. The other problem is that the machine's > >> native pixel format is RGBA, if I want 24bit colour that's the only > >> one I can use. Fortunately the DMA engine can convert pixels on the > >> fly so I can pretend it's ABGR. So pixels would have to be endian- > >> flipped as well when the fb layer accesses VRAM - is there any prior > >> art for that? > > > > 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. Alex _______________________________________________ Devel mailing list Devel@xxxxxxxxxxx http://XFree86.Org/mailman/listinfo/devel