Who can explain the diff between Xserver-1.6.4 version and >1.7 version about the ExaGetPixmapAddress?
madman2003 at gmail.com
Wed Jun 9 02:46:52 PDT 2010
On Wed, Jun 9, 2010 at 10:23 AM, Cui, Hunk <Hunk.Cui at amd.com> wrote:
> Hi, Maarten,
> As your commit:
> About Scratch pixmap with gpu memory – Framebuffer. Now in > 1.7
> version, the exaModifyPixmapHeader function have been become
> exaModifyPixmapHeader_classic (
> Line 144).
> When I debug to this point (my AMD xf86-video-geode), the line
> 171-172, why only have the “<” judge. For general, I think “((CARD8
> *)pPixData - pExaScr->info->memoryBase) <= pExaScr->info->memorySize)”,
> because rotate_mem offset should equal to the pExaScr->info->memorySize
> (e.g: displayed frame buffer). If only have the “<”, It will not go into
> this judge, so the fb_ptr address value is 0x0, then the value will affect
> the exaGetPixmapOffset function (in exa.c
> line 62) about “return (CARD8 *)pExaPixmap->fb_ptr -
> pExaScr->info->memoryBase”, the range will be exceed, if run the
> driver_do_composite (It is lx_do_composite in our geode_driver), the
> dstOffset is a error value.
> Could you explain this issue? Let me know why only have “<”.
If your memory base is 20000, your offscreen memory size is 10000,
then 20000 to 29999 are valid addresses. If you enter 30000 - 10000 <=
20000, then that would be true, which is wrong, that's why it's just
"<", because addressing starts from 0 not 1.
> Hunk Cui
Life spent, a precious moment, in the wink of an eye we live and we die.
More information about the xorg-devel