[PATCH v5 00/13] PRIME Synchronization

poma pomidorabelisima at gmail.com
Wed May 11 14:39:36 UTC 2016

On 29.04.2016 07:41, Dave Airlie wrote:
> On 13 April 2016 at 14:17, Alex Goins <agoins at nvidia.com> wrote:
>> 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.)
>> Previous cover letters:
>>     v4: https://lists.x.org/archives/xorg-devel/2016-March/048944.html
>>     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
>> I wasn't able to get any of my questions answered in the last thread, so I
>> addressed the issues how I saw fit. Aside from some small tweaks, the biggest
>> changes in this patch set involve resolving the ambiguity with
>> rrSetScanoutPixmap(). Instead of using multiple calls to rrSetScanoutPixmap() to
>> setup scanout pixmaps for flipping, the scanout pixmap setting is done
>> implicitly in rrEnableSharedPixmapFlipping().
>> There are two new patches that fix outstanding bugs with
>> drmmode_set_scanout_pixmap(), with details in their respective commit messages:
>>     modesetting: Internal storage of scanout pixmaps
>>     modesetting: Always tear down scanout pixmap
>> Getting RRReplaceScanoutPixmap() working with synchronization would require an
>> ABI change to pass in two pixmaps instead of one, so I just made it fail
>> gracefully in the synchronized case. None of the drivers that I implemented
>> PRIME synchronization for seem to use RRReplaceScanoutPixmap(). In fact, I
>> believe it is currently broken with the modesetting driver without the above 2
>> patches.
> Okay I've finally gotten around to playing with these today. I'm using
> a i915 + nouveau
> system with nouveau running as the master. Both using modesetting DDX.
> The basics seem to work okay, but I am seeing some issues I'm not 100% sure
> are the fault of these patches.
> Scenario 1:
> start X, start mutter against X (using DRI3), start gnome-terminal,
> drag g-t around
> seems smooth.
> set provider output, xrandr in a new display, drag g-t around, I get
> choppy rendering
> on the main display, the offloaded display is smooth!
> I don't think this happens with DRI2 mutter, so I'm not 100% sure what
> is going on there,
> I assume it's something to do with page flipping not being allowed for
> present anymore.
> Scenario 2:
> start X, set provider output, xrandr in a new display, start mutter in
> DRI3 mode, things
> go horribly wrong. Again it seems fine in DRI2 mode. so I expect this
> is some interaction
> with the present extension fighting this.
> I'm going to try and look at the interfaces a bit more now that I have
> it running on a machine.
> Dave.

Generally speaking nouveau/DRI3 -is- half-broken,
talk to Skeggs and try to solve it once and for all.

More information about the xorg-devel mailing list