Problem with exaModifyPixmapHeader_classic?

Michel Dänzer michel at daenzer.net
Mon Jul 5 02:10:57 PDT 2010


Sorry for the late followup, been busy.


On Mit, 2010-05-19 at 13:57 +0800, april wrote: 
> 
>                                             |<-----       DRM        --------->|
> --------------------------------------------------------------------------------------
> |  onscreen |  EXA offscreen    |    |       |                            |
> ---------------------------------------------------------------------------------------
>                                                       ^
>                                                        |
>                                                    RandR rotate shadow
> buffer
> 
> BUT, In Ubuntu10.4, the exaGetPixmapOffset  returns the WRONG value,
> while Ubutun9.10 and previos is OK.
> 
> I found there are some changes of EXA code between Ubuntu10.0(Xorg
> 1.7.6) and Ubuntun9.04, (because of UXA?)
> When I allocate shadow buffer and call GetScratchPixmapHeader, in
> exaModifyPixmapHeader_classic, because of the rotation shadow buffer
> is not in EXA Offscreen, pExaPixmap->fb_ptr will not have vaule here ,
> while exaGetPixmapOffset(in exa.c)  will use this.
> 
> ----------------------------------------------------------------------------------------------------------------
> IN function exaModifyPixmapHeader_classic():
> 
> 	/* Classic EXA:
> 	 * - Framebuffer.
> 	 * - Scratch pixmap with offscreen memory.
> 	 */
> 	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->offscreen = TRUE;
> 	    }
> 	}
> ----------------------------------------------------------------------------------------------------------------------------
> It seems the exaGetPixmapOffset  function only works when pixmap in
> EXA Offcreen.
> 
> So, How to solve this? I only use the classical EXA this time(Not
> driver handers pixmap)
> Must I allocate shadow buffer in EXA offscreen?

Either that, or using the 'mixed' or 'driver' scheme would probably be
best.


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














More information about the xorg-devel mailing list