Who can explain the diff between Xserver-1.6.4 version and >1.7 version about the ExaGetPixmapAddress?

Cui, Hunk Hunk.Cui at amd.com
Wed Jun 9 01:23:15 PDT 2010


Hi, Maarten,

	As your commit: http://cgit.freedesktop.org/xorg/xserver/commit/?id=12aeddf5ad41902a180f8108623f356642b3e911

	About Scratch pixmap with gpu memory – Framebuffer. Now in > 1.7 version, the exaModifyPixmapHeader function have been become exaModifyPixmapHeader_classic ( http://cgit.freedesktop.org/xorg/xserver/tree/exa/exa_classic.c?id=ac7ac913fd98ea359c05c89968ab53a3223615b4  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 http://cgit.freedesktop.org/xorg/xserver/tree/exa/exa.c?id=ac7ac913fd98ea359c05c89968ab53a3223615b4 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 “<”.

Thanks,
Hunk Cui
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20100609/758339d8/attachment.html>


More information about the xorg-devel mailing list