Xserver: sys_ptr & fb_ptr question

Cui, Hunk Hunk.Cui at amd.com
Wed Jun 30 22:32:56 PDT 2010

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:
	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 :( )

Hunk Cui

-----Original Message-----
From: xorg-driver-geode-bounces+hunk.cui=amd.com at lists.x.org [mailto:xorg-driver-geode-bounces+hunk.cui=amd.com at lists.x.org] On Behalf Of Michel D?nzer
Sent: Monday, June 14, 2010 3:26 PM
To: Maarten Maathuis
Cc: Cui, Hunk; xorg-driver-geode at lists.x.org; xorg-devel at lists.x.org
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 <Hunk.Cui at amd.com>:
> > 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
Xorg-driver-geode at lists.x.org

More information about the xorg-devel mailing list