[PATCH v4 00/13] PRIME Synchronization
Alex Goins
agoins at nvidia.com
Fri Mar 4 02:47:45 UTC 2016
Hello all,
These patches change the xserver to support setting up PRIME with double
buffering, and implement double buffered PRIME sink and source support in
the modesetting driver. In addition to these changes, I've upstreamed a
couple of patches to the i915 DRM driver that mesh with these, and have
implemented double buffered PRIME source support in the NVIDIA proprietary
driver (pending release.)
With this patch set you can test without needing the NVIDIA proprietary
driver. I tested with i915 as the sink and Nouveau as the source.
Before patches: http://i.imgur.com/favNJcA.jpg
After patches: http://i.imgur.com/pUUZ6sE.jpg
They also improve performance significantly when using a modesetting source
by cutting down the number of copies to one per vblank.
Previous cover letters:
v3: http://lists.x.org/archives/xorg-devel/2016-February/048677.html
v2: http://lists.x.org/archives/xorg-devel/2016-January/048434.html
v1: http://lists.x.org/archives/xorg-devel/2015-November/048039.html
The biggest change in this patch set from the last one is the
implementation of double buffered PRIME source support in the modesetting
driver. Note that this is a basic implementation designed to exercise all
of the new ABI functions. It lacks some of the more advanced functionality,
such as fenced asynchronous presentation, and OpenGL syncing to the sink's
vblank. The RRCrtcPtr argument to rrStartFlippingPixmapTracking() is
designed to make the source aware of which outputs are on the crtc for use
with OpenGL synchronization, but isn't used here. Everything else is
exercised.
The most notable change other than source support is disabling reverse
PRIME for Glamor-accelerated i915 sinks, the rationale for which can be
found in "modesetting: Disable Reverse PRIME for i915."
Aside from those, it's just a few bug fixes and style changes. The details
can be found in their respective changelogs.
Thanks, Alex @ NVIDIA Linux Driver Team
Alex Goins (13):
xf86: Add PRIME flipping functions to Screen
modesetting: scanout_pixmap_gpu one call only
randr/xf86: Add PRIME Synchronization / Double Buffer
randr: Add ability to turn PRIME sync off
randr: Cleanup rrSetupPixmapSharing()
modesetting: Properly clean up w/ PRIME syncing
modesetting: Implement PRIME syncing as a sink
modesetting: Fix mmap leak in scanout_pixmap_cpu
modesetting: Suspend and resume flipping with DPMS
modesetting: Blacklist UDL from PRIME sync
modesetting: Disable Reverse PRIME for i915
modesetting: Consistent whitespace in driver.c
modesetting: Implement PRIME syncing as a source
hw/xfree86/drivers/modesetting/driver.c | 289 ++++++++++++++++++++---
hw/xfree86/drivers/modesetting/drmmode_display.c | 281 ++++++++++++++++++++--
hw/xfree86/drivers/modesetting/drmmode_display.h | 23 +-
hw/xfree86/modes/xf86Crtc.h | 4 +
hw/xfree86/modes/xf86RandR12.c | 4 +-
include/scrnintstr.h | 14 ++
randr/randrstr.h | 17 ++
randr/rrcrtc.c | 164 +++++++++++--
randr/rrprovider.c | 57 +++++
9 files changed, 782 insertions(+), 71 deletions(-)
--
1.9.1
More information about the xorg-devel
mailing list