[PATCH v3 0/9] PRIME Synchronization

Dave Airlie airlied at gmail.com
Thu Feb 18 00:31:10 UTC 2016

On 12 February 2016 at 14:39, Alex Goins <agoins at nvidia.com> wrote:
> Pinging in case this got buried.

Is there any reason this only addresses one direction in the
-modesetting driver.

In theory shouldn't we able to expose both source and sink bits in -modesetting?
(esp when glamor is enabled).

A complete implementation can make it easier to validate what is being
done here.

I'm trying to eek out some time to look at this.


>> 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
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel

More information about the xorg-devel mailing list