On 12 February 2016 at 14:39, Alex Goins <ago...@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. Dave. >> 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@lists.x.org: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: https://lists.x.org/mailman/listinfo/xorg-devel _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel