XLibre Xserver
Go to file
Adam Jackson e32cc0b4c8 fb: Fix memcpy abuse
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@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2011-08-15 15:38:16 -07:00
Xext Merge remote-tracking branch 'whot/for-keith' 2011-07-01 15:45:45 -07:00
Xi dix: rename ProcessRawEvents to dix/events.c:DeliverRawEvent 2011-06-08 13:57:05 +10:00
composite composite: Inhibit window background paint with manual subwindow redirection 2011-08-03 20:46:36 -07:00
config config: don't fail if a device vanished by the time we managed to look at it 2011-07-27 09:29:56 +10:00
damageext damage: use DamageReportDamage for the initial borderClip damage report 2011-04-13 18:59:09 -07:00
dbe Clean up memory better when GetVisualInfo fails in ProcDbeGetVisualInfo 2011-05-02 20:38:16 -07:00
dix Terminate the log with one last message. 2011-07-27 09:31:02 +10:00
doc Terminate the log with one last message. 2011-07-27 09:31:02 +10:00
exa EXA/mixed: Update sys_pitch in MPH even when there's no system memory copy. 2011-08-10 09:30:08 -07:00
fb fb: Fix memcpy abuse 2011-08-15 15:38:16 -07:00
glx glx: Remove a few lingering traces of __GLXscreen.GLXVersion 2011-07-07 18:09:21 +01:00
hw XQuartz: Initialize darwin pointer valuators 2011-08-14 17:47:02 -07:00
include composite: Inhibit window background paint with manual subwindow redirection 2011-08-03 20:46:36 -07:00
m4 Use XORG_STRICT_OPTION from util-macros 1.14 to set -Werror flags 2011-05-27 19:51:05 -07:00
man Add xkeyboard-config to See Also of man pages referencing xkb 2011-06-21 17:54:43 -07:00
mi composite: Inhibit window background paint with manual subwindow redirection 2011-08-03 20:46:36 -07:00
miext Merge remote-tracking branch 'whot/for-keith' 2011-07-01 15:45:45 -07:00
os Terminate the log with one last message. 2011-07-27 09:31:02 +10:00
randr randr: Compare all the bytes in RRPostPendingProperties 2011-07-29 16:41:53 -07:00
record Only free pContext once when AddResource fails in ProcRecordCreateContext 2011-05-02 20:38:03 -07:00
render Merge remote-tracking branch 'jeremyhu/master' 2011-04-27 12:01:56 -07:00
test Test: Input: Only ever set up to MAX_VALUATORS valuators 2011-07-01 08:46:28 +10:00
xfixes xfixes: Remove unused variable. 2011-06-16 00:44:03 +02:00
xkb XKB: Work around broken interps from old xkbcomp 2011-07-15 15:44:19 +10:00
.gitignore doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00
COPYING Add asprintf() implementation for platforms without it 2010-12-07 11:10:35 -08:00
Makefile.am man: relocate manual pages in the man subdir outside doc 2011-05-13 14:08:17 -07:00
README packaging: provide a default README file #24206 2010-01-27 14:00:17 -08:00
autogen.sh autogen.sh: Pass --force to autoreconf 2008-07-22 16:55:26 +03:00
configure.ac Version bumped to 1.10.99.902 (1.11 RC2) 2011-08-03 20:57:03 -07:00
devbook.am doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00
docbook.am docbook.am: --path is also required for xsltproc 2011-06-22 10:49:46 -07:00
fix-miregion Change region implementation names to eliminate the 'mi' prefix 2010-06-05 17:47:32 -07:00
fix-miregion-private Change region implementation names to eliminate the 'mi' prefix 2010-06-05 17:47:32 -07:00
fix-patch-whitespace Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
fix-region Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
manpages.am Xdmx.man: Show actual configured XKB defaults instead of old hardcoded values 2011-06-21 17:54:14 -07:00
xorg-server.m4 macros: use PKG_CONFIG variable rather than executable name 2010-01-07 12:57:23 -08:00
xorg-server.pc.in config: declare xserver private dependencies in xorg-server.pc 2010-06-22 11:34:47 -07:00
xserver.ent.in doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00

					X Server

The X server accepts requests from client applications to create windows,
which are (normally rectangular) "virtual screens" that the client program
can draw into.

Windows are then composed on the actual screen by the X server
(or by a separate composite manager) as directed by the window manager,
which usually communicates with the user via graphical controls such as buttons
and draggable titlebars and borders.

For a comprehensive overview of X Server and X Window System, consult the
following article:
http://en.wikipedia.org/wiki/X_server

All questions regarding this software should be directed at the
Xorg mailing list:

        http://lists.freedesktop.org/mailman/listinfo/xorg

Please submit bug reports to the Xorg bugzilla:

        https://bugs.freedesktop.org/enter_bug.cgi?product=xorg

The master development code repository can be found at:

        git://anongit.freedesktop.org/git/xorg/xserver

        http://cgit.freedesktop.org/xorg/xserver

For patch submission instructions, see:

	http://www.x.org/wiki/Development/Documentation/SubmittingPatches

For more information on the git code manager, see:

        http://wiki.x.org/wiki/GitPage