From: Dave Airlie <airl...@redhat.com> This adds support for setting the offload sink to the xf86 ddx.
Signed-off-by: Dave Airlie <airl...@redhat.com> --- hw/xfree86/modes/xf86Crtc.c | 5 ++++- hw/xfree86/modes/xf86RandR12.c | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index 9e43c40..e5f58e7 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -728,7 +728,10 @@ xf86CrtcCloseScreen(ScreenPtr screen) /* detach any providers */ if (config->randr_provider) { - if (config->randr_provider->output_source) { + if (config->randr_provider->offload_sink) { + DetachOffloadGPU(screen); + config->randr_provider->offload_sink = NULL; + } else if (config->randr_provider->output_source) { DetachOutputGPU(screen); config->randr_provider->output_source = NULL; } else diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c index ce1bfe3..079331f 100644 --- a/hw/xfree86/modes/xf86RandR12.c +++ b/hw/xfree86/modes/xf86RandR12.c @@ -1791,6 +1791,32 @@ xf86RandR14ProviderSetOutputSource(ScreenPtr pScreen, } static Bool +xf86RandR14ProviderSetOffloadSink(ScreenPtr pScreen, + RRProviderPtr provider, + RRProviderPtr sink_provider) +{ + if (!sink_provider) { + if (provider->offload_sink) { + ScreenPtr cmScreen = pScreen->current_master; + DetachOutputGPU(pScreen); + AttachUnboundGPU(cmScreen, pScreen); + } + + provider->offload_sink = NULL; + return TRUE; + } + + if (provider->offload_sink == sink_provider) + return TRUE; + + DetachUnboundGPU(pScreen); + AttachOffloadGPU(sink_provider->pScreen, pScreen); + + provider->offload_sink = sink_provider; + return TRUE; +} + +static Bool xf86RandR14ProviderSetProperty(ScreenPtr pScreen, RRProviderPtr randr_provider, Atom property, RRPropertyValuePtr value) @@ -1858,6 +1884,7 @@ xf86RandR12Init12(ScreenPtr pScreen) rp->rrSetConfig = NULL; rp->rrProviderSetOutputSource = xf86RandR14ProviderSetOutputSource; + rp->rrProviderSetOffloadSink = xf86RandR14ProviderSetOffloadSink; rp->rrProviderSetProperty = xf86RandR14ProviderSetProperty; rp->rrProviderGetProperty = xf86RandR14ProviderGetProperty; -- 1.7.10.2 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel