debian/changelog | 6 + debian/patches/228_autobind_gpu.patch | 109 ++++++++++++++++++++++++++++++++++ debian/patches/series | 1 3 files changed, 116 insertions(+)
New commits: commit 7fa9af0aa4b78bf6be4422be3acb4b0ae982af0d Author: Maarten Lankhorst <maarten.lankho...@canonical.com> Date: Fri Sep 14 11:30:05 2012 +0200 Add patch to autobind gpu's diff --git a/debian/changelog b/debian/changelog index ea4f6bf..6f2eca3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +xorg-server (2:1.13.0-0ubuntu2) UNRELEASED; urgency=low + + * Add patch to autobind gpu's + + -- Maarten Lankhorst <maarten.lankho...@canonical.com> Fri, 14 Sep 2012 11:29:40 +0200 + xorg-server (2:1.13.0-0ubuntu1) quantal; urgency=low * Merge from unreleased debian git. diff --git a/debian/patches/228_autobind_gpu.patch b/debian/patches/228_autobind_gpu.patch new file mode 100644 index 0000000..0350a83 --- /dev/null +++ b/debian/patches/228_autobind_gpu.patch @@ -0,0 +1,109 @@ +From: Dave Airlie <airl...@redhat.com> + +This isn't for merging, ideally now that randr exposes providers, the desktop +environments would start to add support for them, so when they appear they +DE would bind/unbind them etc. + +However until that glorious future arrives I've written an autoconfigure +patch. I'm shipping this in F17 while I kick at GNOME. + +Dave. + +--- + hw/xfree86/common/xf86Init.c | 12 ++++++++++++ + hw/xfree86/common/xf86platformBus.c | 3 +++ + hw/xfree86/modes/xf86Crtc.c | 25 +++++++++++++++++++++++++ + 3 files changed, 40 insertions(+) + +diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c +index e4a6b86..a79aeb5 100644 +--- a/hw/xfree86/common/xf86Init.c ++++ b/hw/xfree86/common/xf86Init.c +@@ -361,6 +361,16 @@ xf86CreateRootWindow(WindowPtr pWin) + return ret; + } + ++extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master); ++static void ++xf86AutoConfigOutputDevices(void) ++{ ++ int i; ++ ++ for (i = 0; i < xf86NumGPUScreens; i++) ++ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]); ++} ++ + static void + InstallSignalHandlers(void) + { +@@ -927,6 +937,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) + for (i = 0; i < xf86NumGPUScreens; i++) + AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); + ++ xf86AutoConfigOutputDevices(); ++ + xf86VGAarbiterWrapFunctions(); + if (sigio_blocked) + OsReleaseSIGIO(); +diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c +index 24b9473..502d3c4 100644 +--- a/hw/xfree86/common/xf86platformBus.c ++++ b/hw/xfree86/common/xf86platformBus.c +@@ -383,6 +383,8 @@ xf86platformProbeDev(DriverPtr drvp) + return foundScreen; + } + ++extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master); ++ + int + xf86platformAddDevice(int index) + { +@@ -442,6 +444,7 @@ xf86platformAddDevice(int index) + + /* attach unbound to 0 protocol screen */ + AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); ++ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]); + + return 0; + } +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 1947c5b..153c795 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -3260,3 +3260,28 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn) + crtc->x = crtc->y = 0; + } + } ++ ++ ++void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master) ++{ ++ RRProviderPtr master_provider; ++ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(master); ++ xf86CrtcConfigPtr slave_config = XF86_CRTC_CONFIG_PTR(pScrn); ++ ++ master_provider = config->randr_provider; ++ ++ if ((master->capabilities & RR_Capability_SinkOffload) && ++ pScrn->capabilities & RR_Capability_SourceOffload) { ++ /* source offload */ ++ ++ DetachUnboundGPU(pScrn->pScreen); ++ AttachOffloadGPU(master->pScreen, pScrn->pScreen); ++ slave_config->randr_provider->offload_sink = master_provider; ++ } else if ((master->capabilities & RR_Capability_SourceOutput) && ++ pScrn->capabilities & RR_Capability_SinkOutput) { ++ /* sink offload */ ++ DetachUnboundGPU(pScrn->pScreen); ++ AttachOutputGPU(master->pScreen, pScrn->pScreen); ++ slave_config->randr_provider->output_source = master_provider; ++ } ++} +-- +1.7.10.2 + +_______________________________________________ +xorg-de...@lists.x.org: X.Org development +Archives: http://lists.x.org/archives/xorg-devel +Info: http://lists.x.org/mailman/listinfo/xorg-devel + diff --git a/debian/patches/series b/debian/patches/series index 6cb788a..c81ae16 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -19,6 +19,7 @@ 208_switch_on_release.diff 226_fall_back_to_autoconfiguration.patch 227_null_ptr_midispcur.patch +228_autobind_gpu.patch # Temporary, until it's reviewed & accepted upstream 500_pointer_barrier_thresholds.diff -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1tcswr-0006gu...@vasks.debian.org