[PATCH v2] Try and get overlapping cases fixed.
Cyril Brulebois
kibi at debian.org
Mon May 23 10:20:01 PDT 2011
Hi,
Cyril Brulebois <kibi at debian.org> (16/05/2011):
> From: Adam Jackson <ajax at redhat.com>
>
> The memcpy fast path implicitly assumes that the copy walks
> left-to-right. That's not something memcpy guarantees, and newer glibc
> on some processors will indeed break that assumption. Since we walk a
> line at a time, check the source and destination against the width of
> the blit to determine whether we can be sloppy enough to allow memcpy.
> (Having done this, we can remove the check for !reverse as well.)
>
> On an Intel Core i7-2630QM with an NVIDIA GeForce GTX 460M running in
> NoAccel, the broken code and various fixes for -copywinwin{10,100,500}
> gives (edited to fit in 80 columns):
>
> 1: Disable the fastpath entirely
> 2: Replace memcpy with memmove
> 3: This fix
> 4: The code before this fix
>
> 1 2 3 4 Operation
> ------ --------------- --------------- --------------- ------------
> 258000 269000 ( 1.04) 544000 ( 2.11) 552000 ( 2.14) Copy 10x10
> 21300 23000 ( 1.08) 43700 ( 2.05) 47100 ( 2.21) Copy 100x100
> 960 962 ( 1.00) 1990 ( 2.09) 1990 ( 2.07) Copy 500x500
>
> So it's a modest performance hit, but correctness demands it, and it's
> probably worth keeping the 2x speedup from having the fast path in the
> first place.
>
> Signed-off-by: Adam Jackson <ajax at redhat.com>
>
> v2: Fix limit cases thanks to Soeren Sandmann, and apply a tiny
> optimization by Walter Harms.
>
> Signed-off-by: Cyril Brulebois <kibi at debian.org>
> ---
> fb/fbblt.c | 5 ++++-
> 1 files changed, 4 insertions(+), 1 deletions(-)
>
>
> Tested on amd64 on top of xorg-server's server-1.10-branch.
except for the micro-opt suggested by Jeremy, no ACK/NACK for that
version?
Mraw,
KiBi.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.x.org/archives/xorg-devel/attachments/20110523/439df069/attachment.pgp>
More information about the xorg-devel
mailing list