xserver/hw/xfree86
Sultan Alsawaf 2d272b705c modesetting: coalesce vblank events to avoid DRM event queue exhaustion
The DRM event queue in the kernel is quite small and can be easily
exhausted by DRI clients. When the event queue is full, that means nothing
can be queued onto it anymore, which can lead to incorrect presentation
times for DRI clients and failure when attempting to queue a page flip.

To make matters worse, once an event is placed onto the kernel's event
queue, there's no straightforward way to prematurely remove it from the
kernel's event queue in userspace, which means that aborting a sequence
number doesn't free up space in the event queue.

Since vblank events from DRI clients are the largest consumers of the
event queue, and since it's often easy to know the desired target MSC of
their vblank events without querying the kernel for a CRTC's current MSC,
we can coalesce vblank events occurring at the same MSC such that only one
of them is placed onto the kernel's event queue, instead of allowing
duplicate vblank events to pollute the event queue.

This is achieved by tracking the next kernel-queued event's MSC on a
per-CRTC basis and then running all of that CRTC's vblank event handlers
which have reached their target MSC when the queued MSC is signaled.

Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
2022-12-19 23:56:27 -08:00
..
common xfree86: make xf86RotateCrtcRedisplay public 2022-12-19 23:56:27 -08:00
ddc print_edid: Fix a format string error 2022-06-26 09:16:42 +00:00
dixmods Remove autotools support 2021-10-27 13:15:40 +03:00
doc Remove autotools support 2021-10-27 13:15:40 +03:00
dri Remove autotools support 2021-10-27 13:15:40 +03:00
dri2 Remove autotools support 2021-10-27 13:15:40 +03:00
drivers modesetting: coalesce vblank events to avoid DRM event queue exhaustion 2022-12-19 23:56:27 -08:00
exa Remove autotools support 2021-10-27 13:15:40 +03:00
fbdevhw Remove autotools support 2021-10-27 13:15:40 +03:00
glamor_egl Remove autotools support 2021-10-27 13:15:40 +03:00
i2c Remove autotools support 2021-10-27 13:15:40 +03:00
int10 Remove autotools support 2021-10-27 13:15:40 +03:00
loader Remove autotools support 2021-10-27 13:15:40 +03:00
man xf86: allow DDX driver for GPU/PCI hot-plug 2022-11-16 15:47:46 +00:00
modes xfree86: make xf86RotateCrtcRedisplay public 2022-12-19 23:56:27 -08:00
os-support xf86: allow DDX driver for GPU/PCI hot-plug 2022-11-16 15:47:46 +00:00
parser Remove autotools support 2021-10-27 13:15:40 +03:00
ramdac Replace "the the" with a single "the" in docs & comments 2022-03-31 13:27:57 -07:00
shadowfb Remove autotools support 2021-10-27 13:15:40 +03:00
utils Remove autotools support 2021-10-27 13:15:40 +03:00
vgahw Remove autotools support 2021-10-27 13:15:40 +03:00
x86emu x86emu: re-align breaks in ins() and outs() 2022-03-31 20:44:06 +00:00
xkb Remove autotools support 2021-10-27 13:15:40 +03:00
.gitignore Xorg: Add Xorg.wrap to hw/xfree86/.gitignore 2014-04-18 11:39:16 +02:00
Xorg.sh.in xfree86: rename Xorg.bin to Xorg 2015-01-05 09:53:58 +10:00
meson.build meson: Support building Xnest and Xorg on darwin 2022-06-26 09:16:42 +00:00
sdksyms.sh Consolidate fourcc.h 2020-09-15 11:43:16 +02:00
xorg-wrapper.c Fix various spelling errors 2019-10-01 17:05:28 +00:00
xorgconf.cpp Fix spelling/wording issues 2020-07-05 13:07:33 -07:00