[PATCH v3 0/9] PRIME Synchronization
Alex Goins
agoins at nvidia.com
Fri Feb 12 04:39:11 UTC 2016
Pinging in case this got buried.
Thanks,
Alex
> Hello all,
>
> These patches change the xserver to support setting up PRIME with double
> buffering, and implement double buffered PRIME sink 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.)
>
> Previous cover letters:
> v2: http://lists.x.org/archives/xorg-devel/2016-January/048434.html
> v1: http://lists.x.org/archives/xorg-devel/2015-November/048039.html
>
> In this patch set there are a few changes:
> 1) Moved some of the ABI functions into rrScrPrivRec instead of
> ScreenRec.
>
> In the case of (rr)StartFlippingPixmapTracking(), it was
> because I needed to add the RRCrtc as a parameter so that the source
> driver can be aware of the outputs being used.
>
> In the case of (rr)(Enable/Disable)SharedPixmapFlipping(), I was
> previously passing in the xf86CrtcPtr as a void*, which is kind of
> gross. It makes more sense to pass in the RRCrtcPtr and get the
> xf86CrtcPtr from there, necessitating an rrScrPrivRec ABI function.
>
> It may be best to move all of the ABI functions to rrScrPrivRec
> regardless of whether or not they need to use RandR-specific data
> types, since none of them make sense without RandR enabled. However,
> since the old pixmap sharing functions are in ScreenRec, I left
> functions there where possible. If you would prefer them in
> rrScrPrivRec, just let me know.
>
> 2) Made damage get flushed to the kernel driver for both scanout
> pixmaps, rather than just the latest one to get damage registered.
>
> 3) Added comments to the output property code indicating that it will
> need to be reworked if an when we support different source providers
> for different outputs.
>
> 4) Made RandR check the current value of the output property if there
> is no pending value. Previously, it failed to correctly pick up on
> the default value, although it didn't cause a visible bug since with
> no value it defaults to TRUE.
>
> 5) Made RandR set the output property to 0 if it has to fall back to
> unsynchronized PRIME, so that if the user checks the value it will
> reflect the current state of the system.
>
> 6) Made RandR fall back on unsynchronized pixmap sharing if the PRIME
> flipping functions fail.
>
> 7) Blacklisted UDL for PRIME synchronization in the modesetting driver,
> making it fail rrEnableSharedPixmapFlapping() so that RandR falls
> back on unsynchronized PRIME. UDL has several issues that prevent it
> from working properly with PRIME synchronization.
>
> See commit message for "modesetting: Blacklist UDL from PRIME sync"
> for details.
>
> Thanks, Alex @ NVIDIA Linux Driver Team
>
> Alex Goins (9):
> xf86: Add PRIME flipping functions to Screen
> 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
>
> hw/xfree86/drivers/modesetting/driver.c | 96 ++++++--
> hw/xfree86/drivers/modesetting/drmmode_display.c | 282 +++++++++++++++++++++--
> hw/xfree86/drivers/modesetting/drmmode_display.h | 17 +-
> hw/xfree86/modes/xf86Crtc.h | 4 +
> hw/xfree86/modes/xf86RandR12.c | 4 +-
> include/scrnintstr.h | 14 ++
> randr/randrstr.h | 17 ++
> randr/rrcrtc.c | 158 +++++++++++--
> randr/rrprovider.c | 57 +++++
> 9 files changed, 599 insertions(+), 50 deletions(-)
>
> --
> 1.9.1
>
>
More information about the xorg-devel
mailing list