Go to file
Keith Packard 9d457f9c55 Add screen-specific privates.
Screen-specific privates areas are only allocated for objects related
to the target screen; objects allocated for other screens will not
have the private space reserved. This saves memory in these objects
while also allowing hot-plug screens to have additional private
allocation space beyond what the core screens are using.

Drivers are encouraged to switch to this mechanism as it will reduce
memory usage in multi-GPU environments, but it is only required for
drivers which will be loaded after the server starts, like
modesetting.

Objects providing screen-specific privates *must* be managed by the
screen-specific private API when allocating or initializing privates
so that the per-screen area can be initialized properly.

The objects which support screen-specific privates are:

	Windows
	Pixmaps
	GCs
	Pictures

Extending this list to include Colormaps would be possible, but
require slightly more work as the default colormap is created before
all colormap privates are allocated during server startup, and hence
gets a bunch of special treatment.

Of particular note, glyphs are *not* capable of supporting
screen-specific privates as they are global objects, not allocated on
a screen-specific basis, and so each driver must be able to see their
privates within the glyph.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
2012-07-05 13:39:50 -07:00
composite dix/render: consolidate window format matching code. 2012-06-28 10:43:35 -07:00
config config/udev: add pre_init stage to config and udev. 2012-05-21 12:58:32 +01:00
damageext Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
dbe Indentation: Change '& stuff' to '&stuff' 2012-03-21 14:02:30 -07:00
dix Add screen-specific privates. 2012-07-05 13:39:50 -07:00
doc Add screen-specific privates. 2012-07-05 13:39:50 -07:00
exa api: rework the X server driver API to avoid global arrays. 2012-06-05 13:22:18 +01:00
fb api: rework the X server driver API to avoid global arrays. 2012-06-05 13:22:18 +01:00
glx glx/dri2: Enable GLX_ARB_create_context_robustness 2012-07-05 11:45:44 -07:00
hw Look for ModuleData only in appropriate library 2012-07-04 21:26:24 +10:00
include Add screen-specific privates. 2012-07-05 13:39:50 -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 os: Add -displayfd option 2012-05-01 11:36:30 +10:00
mi Merge branch 'sigsafe-logging-varargs' 2012-07-02 22:35:39 -07:00
miext api: rework the X server driver API to avoid global arrays. 2012-06-05 13:22:18 +01:00
os Merge branch 'sigio-vt-switch-issues' into for-keith 2012-07-04 21:23:48 +10:00
randr randr: Fix REQUEST vs. REQUEST_SIZE_MATCH mismatch 2012-06-29 23:34:30 -07:00
record Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
render Add screen-specific privates. 2012-07-05 13:39:50 -07:00
test Merge branch 'sigio-vt-switch-issues' into for-keith 2012-07-04 21:23:48 +10:00
Xext api: rework the X server driver API to avoid global arrays. 2012-06-05 13:22:18 +01:00
xfixes api: rework the X server driver API to avoid global arrays. 2012-06-05 13:22:18 +01:00
Xi Xi: extend PropagateMask to EMASKSIZE 2012-07-04 21:16:16 +10:00
xkb xkb: use local variable instead of casting arg 2012-07-04 21:16:16 +10:00
.gitignore doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00
autogen.sh autogen.sh: Pass --force to autoreconf 2008-07-22 16:55:26 +03:00
configure.ac Enable no-undefined symbols mode in Solaris builds if -z parent is in ld 2012-07-02 11:09:02 -07:00
COPYING Add asprintf() implementation for platforms without it 2010-12-07 11:10:35 -08:00
devbook.am devbook.am: maintenance update from docbook.am 2011-09-21 14:07:52 -07:00
docbook.am docbook.am: embed css styles inside the HTML HEAD element 2011-09-21 14:07:49 -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
Makefile.am man: relocate manual pages in the man subdir outside doc 2011-05-13 14:08:17 -07:00
manpages.am Xdmx.man: Show actual configured XKB defaults instead of old hardcoded values 2011-06-21 17:54:14 -07:00
README packaging: provide a default README file #24206 2010-01-27 14:00:17 -08: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 xfree86: link modules against Xorg symbols on Cygwin 2012-04-05 21:57:07 -05: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