Xserver: sys_ptr & fb_ptr question

Michel Dänzer michel at daenzer.net
Mon Jul 5 01:58:36 PDT 2010


On Fre, 2010-07-02 at 09:27 +0800, Cui, Hunk wrote: 
> Hi, Michel,
> 
> [Cui, Hunk] Please see below,
> >>On Don, 2010-07-01 at 13:32 +0800, Cui, Hunk wrote: 
> >> 	
> >> 	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?
> 
> >It considers the pPixData pointer passed in to be the GPU copy if it
> falls within the offscreen memory range.
> 
> [Cui, Hunk] I hope it have a more detail explain about the pPixData
> pointer. Why you said "if it falls within the offscreen memory range",

    if ((CARD8 *)pPixData >= pExaScr->info->memoryBase &&
((CARD8 *)pPixData - pExaScr->info->memoryBase) <
pExaScr->info->memorySize)

translates to 'if the pointer is after the start of EXA offscreen memory
and before the end of it', i.e. 'within the range'.


> >> What are the different between sys_ptr and fb_ptr?
> 
> >From exa_priv.h:
> >
> >    CARD8           *sys_ptr;   /**< pointer to pixmap data in system memory */
> >    CARD8           *fb_ptr;    /**< pointer to pixmap data in framebuffer memory */
> 
> >Basically, fb_* refer to the GPU copy, sys_* to the system memory copy
> of the pixmap contents.
> 
> [Cui, Hunk] In Xserver 1.6 version, only have sys_*, turn to Xserver
> 1.7, Why would the introduction of this definition about fb_*?
> Please give me some hint, How to use the fb_*?

See Maarten's commit 12aeddf5ad41902a180f8108623f356642b3e911 ('exa:
Accept scratch pixmaps with offscreen memory as such.') . Maybe Maarten
can say more about it, but AFAIR before that some special pixmaps e.g.
for rotated scanout would never be considered for hardware acceleration.


P.S. Please consider using an e-mail client which can quote properly.

-- 
Earthling Michel Dänzer           |                http://www.vmware.com
Libre software enthusiast         |          Debian, X and DRI developer


More information about the xorg-devel mailing list