Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:dirkmueller:acdc:as_python3_module
xorg-x11-server.16783
n_xserver-optimus-autoconfig-hack.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File n_xserver-optimus-autoconfig-hack.patch of Package xorg-x11-server.16783
From 3216e0c618cc330f053ed36a749c8d8cfeb87a2f Mon Sep 17 00:00:00 2001 From: Dave Airlie <airlied@redhat.com> Date: Fri, 17 Aug 2012 09:49:24 +1000 Subject: [PATCH] autobind GPUs to the screen, (v3) this is racy and really not what we want for hotplug going forward, but until DE support is in GNOME its probably for the best. v2: fix if config or slave config is NULL v3: fix multi useful slaves v4: do not unbound GPUs before attaching them compatibility fix for 5c7af02b10 -- Michal Srb <msrb@suse.com> DO NOT UPSTREAM. Signed-off-by: Dave Airlie <airlied@gmail.com> --- hw/xfree86/common/xf86Init.c | 12 ++++++++++++ hw/xfree86/common/xf86platformBus.c | 3 +++ hw/xfree86/modes/xf86Crtc.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) Index: xorg-server-1.19.6/hw/xfree86/common/xf86Init.c =================================================================== --- xorg-server-1.19.6.orig/hw/xfree86/common/xf86Init.c +++ xorg-server-1.19.6/hw/xfree86/common/xf86Init.c @@ -297,6 +297,16 @@ xf86PrivsElevated(void) return privsElevated; } +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) { @@ -872,6 +882,8 @@ InitOutput(ScreenInfo * pScreenInfo, int for (i = 0; i < xf86NumGPUScreens; i++) AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); + xf86AutoConfigOutputDevices(); + xf86VGAarbiterWrapFunctions(); if (sigio_blocked) input_unlock(); Index: xorg-server-1.19.6/hw/xfree86/common/xf86platformBus.c =================================================================== --- xorg-server-1.19.6.orig/hw/xfree86/common/xf86platformBus.c +++ xorg-server-1.19.6/hw/xfree86/common/xf86platformBus.c @@ -489,6 +489,8 @@ xf86platformProbeDev(DriverPtr drvp) return foundScreen; } +extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master); + int xf86platformAddDevice(int index) { @@ -560,6 +562,7 @@ xf86platformAddDevice(int index) } /* attach unbound to 0 protocol screen */ AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); + xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]); RRResourcesChanged(xf86Screens[0]->pScreen); RRTellChanged(xf86Screens[0]->pScreen); Index: xorg-server-1.19.6/hw/xfree86/modes/xf86Crtc.c =================================================================== --- xorg-server-1.19.6.orig/hw/xfree86/modes/xf86Crtc.c +++ xorg-server-1.19.6/hw/xfree86/modes/xf86Crtc.c @@ -3462,3 +3462,29 @@ 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); + + if (!config || !slave_config) + return; + + master_provider = config->randr_provider; + + if ((master->capabilities & RR_Capability_SinkOffload) && + pScrn->capabilities & RR_Capability_SourceOffload) { + /* source offload */ + AttachOffloadGPU(master->pScreen, pScrn->pScreen); + slave_config->randr_provider->offload_sink = master_provider; + } + if ((master->capabilities & RR_Capability_SourceOutput) && + pScrn->capabilities & RR_Capability_SinkOutput) { + /* sink offload */ + AttachOutputGPU(master->pScreen, pScrn->pScreen); + slave_config->randr_provider->output_source = master_provider; + } +}
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor