Go to file
Kenneth Graunke 13c7d53df8 modesetting: Implement page flipping support for Present.
Based on code by Keith Packard, Eric Anholt, and Jason Ekstrand.

v2:
- Fix double free and flip_count underrun (caught by Mario Kleiner).
- Don't leak flip_vblank_event on the error_out path (Mario).
- Use the updated ms_flush_drm_events API (Mario, Ken).

v3: Hack around DPMS shenanigans.  If all monitors are DPMS off, then
    there is no active framebuffer; attempting to pageflip will hit the
    error_undo paths, causing us to drmModeRmFB with no framebuffer,
    which confuses the kernel into doing full modesets and generally
    breaks things.  To avoid this, make ms_present_check_flip check that
    some CRTCs are enabled and DPMS on.  This is an ugly hack that would
    get better with atomic modesetting, or some core Present work.

v4:
- Don't do pageflipping if CRTCs are rotated (caught by Jason Ekstrand).
- Make pageflipping optional (Option "PageFlip" in xorg.conf.d), but
  enabled by default.

v5: Initialize num_crtcs_on to 0 (caught by Michel Dänzer).

[airlied: took over]
v6: merge async flip support from Mario Kleiner
free sequence after failed vblank queue
handle unflip while DPMS'ed off (Michel)
move flip tracking into its own structure, and
fix up reference counting issues, and add comments.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Acked-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
2015-06-30 13:44:09 +10:00
composite Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
config config: remove 10-evdev.conf, let the evdev driver install that file 2015-05-18 13:41:09 +10:00
damageext Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
dbe Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
dix cursor: drop ARGB_CURSOR 2015-06-30 12:17:51 +10:00
doc Remove remaining doc references to Xalloc, Xrealloc, and Xfree 2015-04-21 16:57:07 -07:00
dri3 dri3: unvalidated lengths in DRI3 extension swapped procs [CVE-2014-8103 1/2] 2014-12-08 18:09:48 -08:00
exa Convert exa & fb to new *allocarray functions 2015-04-21 16:58:07 -07:00
fb Convert exa & fb to new *allocarray functions 2015-04-21 16:58:07 -07:00
glamor glamor: Add a new glamor_gbm_bo_from_pixmap() function. 2015-06-30 13:44:09 +10:00
glx Revert "glx/dri2: Disable AIGLX if indirect GLX is disabled" 2015-05-14 21:29:40 -07:00
hw modesetting: Implement page flipping support for Present. 2015-06-30 13:44:09 +10:00
include glamor: add support for allocating linear buffers (v2) 2015-06-30 12:17:55 +10:00
m4 configure.ac: remove remaining TLS references 2015-03-24 17:20:26 +00:00
man Add -iglx & +iglx to Xserver.man 2014-11-30 11:32:21 -08:00
mi cursor: drop ARGB_CURSOR 2015-06-30 12:17:51 +10:00
miext Convert mi & miext to new *allocarray functions 2015-04-21 16:58:08 -07:00
os backtrace.c: Fix word cast to a pointer 2015-05-26 14:35:55 -07:00
present present: Copy unflip contents back to the Screen Pixmap 2015-05-26 15:09:32 -07:00
pseudoramiX Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
randr Merge remote-tracking branch 'evelikov/master' 2015-05-11 16:50:43 -07:00
record Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
render Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
test test: add tests for new valuator mask features 2015-05-20 12:44:58 +10:00
Xext Merge remote-tracking branch 'ajax/xserver-next' 2015-05-11 16:34:48 -07:00
xfixes cursor: drop ARGB_CURSOR 2015-06-30 12:17:51 +10:00
Xi Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
xkb Convert XKB to new *allocarray functions 2015-04-21 16:57:54 -07:00
.dir-locals.el Add .dir-locals.el 2013-08-17 12:17:36 +02:00
.gitignore .gitignore: Add new autotools file 'test-driver' 2014-04-21 13:41:42 -07:00
autogen.sh autogen.sh: use quoted string variables 2015-03-13 12:31:21 +10:00
configure.ac glamor: add support for allocating linear buffers (v2) 2015-06-30 12:17:55 +10:00
COPYING modesetting: Merge modesetting's COPYING into the xserver's. 2014-09-15 12:46:02 -07:00
devbook.am doc: Create a script to filter xmlto output 2015-01-05 14:24:06 -08: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 DIST_SUBDIRS needs to include glamor, even if it isn't built 2014-02-13 15:25:56 -08:00
manpages.am Xorg: Add a suid root wrapper 2014-03-12 08:50:05 +01:00
README packaging: provide a default README file #24206 2010-01-27 14:00:17 -08:00
xorg-server.m4 macros: clarify documentation 2012-11-05 13:24:57 -06: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