Who can explain the diff between Xserver-1.6.4 version and >1.7 version about the ExaGetPixmapAddress?
Hunk.Cui at amd.com
Mon Jun 14 09:11:41 PDT 2010
Hi, Maarten & Michel,
Before 08/2008, our Geode-LX driver were use exaAllocOffscreen, but for update to Randr 1.2, Jordan Crouse replace exaAllocOffscreen with GeodeAllocOffscreen, now Jordan Crouse have been leave AMD, So I can not trace the change log.
About the change, you can see: http://cgit.freedesktop.org/xorg/driver/xf86-video-geode/commit/?id=d681a844e448712a9a419d2a4dca81930d39a80a
(It have been delete exaAllocOffscreen)
As you said Rotateddata has to be allocated between memoryBase and memorySize. Can you afford a structure of exaAllocOffscreen in another video-driver? How to allocate the memory in InitMemory? (e.g: ATI driver), then I can compare the diff.
I think the GeodeAllocOffscreen have been use for more than two years, It can always properly allocate memory. Now because the Xserver have been updated to >1.7 version, delete sys_ptr in exaGetPixmapOffset, therefore, cause this error.
From: Michel Dänzer [mailto:michel at daenzer.net]
Sent: Monday, June 14, 2010 3:26 PM
To: Maarten Maathuis
Cc: Cui, Hunk; xorg-devel at lists.x.org; xorg-driver-geode at lists.x.org
Subject: Re: 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
More information about the xorg-devel