xserver-multidpi/hw/xfree86
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
..
common xf86: restrict when we auto add devices as gpu devices. 2015-06-30 12:17:55 +10:00
ddc Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
dixmods Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
doc xfree86: Remove the memory of MTRR awareness 2014-09-16 11:58:53 -04:00
dri Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
dri2 Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
drivers modesetting: Implement page flipping support for Present. 2015-06-30 13:44:09 +10:00
exa xfree86/exa: xf86GetOptValString returns const char * now 2014-01-12 10:14:50 -08:00
fbdevhw Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
glamor_egl glamor: Share code for put_image handling. 2014-06-15 23:20:09 +01:00
i2c Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
int10 int10: Fix error check for pci_device_map_legacy 2015-03-13 12:31:21 +10:00
loader Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
man xserver: add xorg.conf support for gpu devices. (v2.1) 2015-04-27 13:40:40 +10:00
modes xf86Rotate: remove unused macros. 2015-06-30 12:17:55 +10:00
os-support xfree86: drop if 0 hunk 2015-05-20 11:53:36 +10:00
parser xserver: add xorg.conf support for gpu devices. (v2.1) 2015-04-27 13:40:40 +10:00
ramdac cursor: drop ARGB_CURSOR 2015-06-30 12:17:51 +10:00
shadowfb Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
utils Add XNFcallocarray() to allow xnfcalloc() to check for overflow 2015-04-21 16:57:07 -07:00
vbe Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
vgahw Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
x86emu Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
.gitignore Xorg: Add Xorg.wrap to hw/xfree86/.gitignore 2014-04-18 11:39:16 +02:00
Makefile.am xfree86: rename Xorg.bin to Xorg 2015-01-05 09:53:58 +10:00
sdksyms.sh symbols: Fix sdksyms.sh to cope with gcc5 2015-03-13 12:31:21 +10:00
xorg-wrapper.c xfree86: rename Xorg.bin to Xorg 2015-01-05 09:53:58 +10:00
Xorg.sh.in xfree86: rename Xorg.bin to Xorg 2015-01-05 09:53:58 +10:00
xorgconf.cpp xfree86: fix wrong DontZap documentation (#71113) 2014-05-24 20:02:56 +10:00