Hi, Michel,
I mean your suggestion, now in our geode driver, I have modified the
Rotate_mem. Rotateddata has to be allocated between memoryBase and memorySize.
Now my question: Please see the link:
http://cgit.freedesktop.org/xorg/xserver/tree/exa/exa_classic.c#n170
Code:
if (pExaScr->info->memoryBase && pPixData) {
if ((CARD8 *)pPixData >= pExaScr->info->memoryBase &&
((CARD8 *)pPixData - pExaScr->info->memoryBase) <
pExaScr->info->memorySize) {
pExaPixmap->fb_ptr = pPixData;
pExaPixmap->fb_pitch = devKind;
pExaPixmap->use_gpu_copy = TRUE;
}
}
In Xserver 1.6, Does not exist the judge.
In Xserver version >=1.7, Occur this judge.
My question is:
What is effect of the judge?
What are the different between sys_ptr and fb_ptr? (Make me confuse on
this point :( )
Thanks,
Hunk Cui
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of
Michel D?nzer
Sent: Monday, June 14, 2010 3:26 PM
To: Maarten Maathuis
Cc: Cui, Hunk; [email protected]; [email protected]
Subject: Re: [Xorg-driver-geode] Who can explain the diff between Xserver-1.6.4
version and >1.7 version about the ExaGetPixmapAddress?
On Son, 2010-06-13 at 16:10 +0200, Maarten Maathuis wrote:
> 2010/6/13 Cui, Hunk <[email protected]>:
> > Hi, Maarten,
> >
> > In our xf86-video-geode driver, all of memories are allocated by
> > GeodeAllocOffscreen, the exa offscreen memory is part of the memorySize.
> > And the rotation data is not in memorySize, it is allocated after
> > memorySize.
>
> This is exactly the reason why exa doesn't recognize it. Rotateddata
> has to be allocated between memoryBase and memorySize. Only
> exaAllocOffscreen can do that.
>
> >
> > About the GeodeAllocOffscreen, it is Data structure tables, why you
> > said "allocate exa offscreen memory out of a private pool"? What the diff
> > between GeodeAllocOffscreen and exaOffscreen? In exaOffscreenInit, the EXA
> > offscreen base and size are loaded into server, so the exa should recognize
> > it as offscreen memory, furthermore, the ratate_memory(2MB) is not included
> > in EXA offscreen space.
> > That "pPixData - pExaScr->info->memoryBase =
> > pExaScr->info->memorySize" should right.
>
> Just because it's right for your driver doesn't mean it's right
> everywhere (the memory after memorySize could belong to another device
> for example). Classic exa is made on the assumption that all memory
> usable for gpu acceleration is a linear range between memoryBase and
> memorySize. If you don't want this limitation then you should move to
> another type of exa where the driver has more control.
>
> I just don't see why you cannot use exaAllocOffscreen for rotatedData,
> that's what every driver has done and it works last i tried.
>
> What you have proposed so far is just a hack that will never be added.
Agreed. The geode driver should either allocate the memory with
exaOffscreenAlloc() or not rely on EXA facilities like
exaGetPixmapOffset() in the PixmapIsOffscreen driver hook.
--
Earthling Michel Dänzer | http://www.vmware.com
Libre software enthusiast | Debian, X and DRI developer
_______________________________________________
Xorg-driver-geode mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-driver-geode
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel