[PATCH v3 9/9] modesetting: Blacklist UDL from PRIME sync
agoins at nvidia.com
Wed Feb 3 05:22:50 CET 2016
UDL (USB 2.0 DisplayLink DRM driver) has strange semantics when it comes to
vblank events and damage tracking when page flipping.
When doing a page flip, it will instantly raise a vblank event without
waiting for vblank. However, it has no support for DRM_IOCTL_WAIT_VBLANK.
It also seems to have some issues with damage tracking when page flipping.
It's possible to get something semi-working by hacking around these issues,
but even then there isn't much value-add vs single buffered PRIME, and it
reduces maintainability and adds additional risks to the modesetting driver
when running with more well-behaved DRM drivers.
Work needs to be done on UDL in order to properly support synchronized
PRIME. For now, just blacklist it, causing RandR to fall back to
v3: Initial commit
Signed-off-by: Alex Goins <agoins at nvidia.com>
hw/xfree86/drivers/modesetting/drmmode_display.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
index d074682..0b0f01d 100644
@@ -416,8 +416,14 @@ drmmode_EnableSharedPixmapFlipping(xf86CrtcPtr crtc, drmmode_ptr drmmode)
drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+ drmVersionPtr version = drmGetVersion(drmmode->fd);
drmmode_crtc->enable_flipping = TRUE;
+ /* UDL has several issues that prevent double buffering */
+ if (!strncmp("udl", version->name, version->name_len))
+ drmmode_crtc->enable_flipping = FALSE;
More information about the xorg-devel