diff options
author | kyak | 2021-11-11 19:21:00 +0300 |
---|---|---|
committer | kyak | 2021-11-11 19:21:00 +0300 |
commit | 3d591ee1c6b34780b41852c608d7bfda215a3015 (patch) | |
tree | 33193cb2271ed8c1082b12e6de225f06fc91bdf9 | |
parent | 4abe311138707d924fc3a31806b9a1a3395605c0 (diff) | |
download | aur-3d591ee1c6b34780b41852c608d7bfda215a3015.tar.gz |
updpkg: xorg-server 21.1.1-2
-rw-r--r-- | .SRCINFO | 28 | ||||
-rw-r--r-- | 0001-v2-FS-58644.patch | 57 | ||||
-rw-r--r-- | 0002-fix-libshadow-2.patch | 30 | ||||
-rw-r--r-- | PKGBUILD | 39 | ||||
-rw-r--r-- | xserver-autobind-hotplug.patch | 293 |
5 files changed, 20 insertions, 427 deletions
@@ -1,6 +1,6 @@ pkgbase = xorg-server-bug865 - pkgver = 1.20.13 - pkgrel = 3 + pkgver = 21.1.1 + pkgrel = 2 url = https://xorg.freedesktop.org arch = x86_64 groups = xorg @@ -15,6 +15,7 @@ pkgbase = xorg-server-bug865 makedepends = libxfont2 makedepends = libpciaccess makedepends = libxv + makedepends = libxcvt makedepends = libxmu makedepends = libxrender makedepends = libxi @@ -35,23 +36,14 @@ pkgbase = xorg-server-bug865 makedepends = systemd makedepends = meson makedepends = git - source = https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.20.13.tar.xz - source = https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.20.13.tar.xz.sig - source = xserver-autobind-hotplug.patch - source = 0001-v2-FS-58644.patch - source = 0002-fix-libshadow-2.patch + source = https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-21.1.1.tar.xz + source = https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-21.1.1.tar.xz.sig source = xvfb-run source = xvfb-run.1 source = freedesktop-bug-865.patch - validpgpkeys = 7B27A3F1A6E18CD9588B4AE8310180050905E40C - validpgpkeys = C383B778255613DFDB409D91DB221A6900000011 - validpgpkeys = DD38563A8A8224537D1F90E45B8A2D50A0ECD0D3 - validpgpkeys = 3BB639E56F861FA2E86505690FDD682D974CA72A - sha512sums = 4e0b7bd4e070dc52cb2c51c2056feb133de2c0487d359392ed63abba9702910cd2e2983e9415973d8d6e9672eac78be6f39202687fc56610877914ce722554b3 + validpgpkeys = FD0004A26EADFE43A4C3F249C6F7AE200374452D + sha512sums = 8608ed9c1537c95e8a3adea5e3e372a3c5eb841f8e27c84283093f22fb1909e16a800006510da684b13f8f237f33b8a4be3e2537f5f9ab9af4c5ad12770eef0d sha512sums = SKIP - sha512sums = d84f4d63a502b7af76ea49944d1b21e2030dfd250ac1e82878935cf631973310ac9ba1f0dfedf10980ec6c7431d61b7daa4b7bbaae9ee477b2c19812c1661a22 - sha512sums = 74e1aa0c101e42f0f25349d305641873b3a79ab3b9bb2d4ed68ba8e392b4db2701fcbc35826531ee2667d3ee55673e4b4fecc2a9f088141af29ceb400f72f363 - sha512sums = 3d3be34ad9fa976daec53573d3a30a9f1953341ba5ee27099af0141f0ef7994fa5cf84dc08aae848380e6abfc10879f9a67f07601c7a437abf8aef13a3ec9fe1 sha512sums = 4154dd55702b98083b26077bf70c60aa957b4795dbf831bcc4c78b3cb44efe214f0cf8e3c140729c829b5f24e7466a24615ab8dbcce0ac6ebee3229531091514 sha512sums = de5e2cb3c6825e6cf1f07ca0d52423e17f34d70ec7935e9dd24be5fb9883bf1e03b50ff584931bd3b41095c510ab2aa44d2573fd5feaebdcb59363b65607ff22 sha512sums = 81be7b0ecd9de850f0c740762d37c7489f12b34eb6adb19b3d3077f66d66e48e1206eff4bd29e50f5640509390a08fa138a4664b60d90878d4d17cb1f6919baf @@ -72,11 +64,11 @@ pkgname = xorg-server-bug865 depends = libdrm depends = libxshmfence depends = libxcvt - provides = X-ABI-VIDEODRV_VERSION=24.0 - provides = X-ABI-XINPUT_VERSION=24.1 + provides = X-ABI-VIDEODRV_VERSION=25.2 + provides = X-ABI-XINPUT_VERSION=24.4 provides = X-ABI-EXTENSION_VERSION=10.0 provides = x-server - provides = xorg-server=1.20.13 + provides = xorg-server=21.1.1 conflicts = nvidia-utils<=331.20 conflicts = glamor-egl conflicts = xf86-video-modesetting diff --git a/0001-v2-FS-58644.patch b/0001-v2-FS-58644.patch deleted file mode 100644 index bb2e463e9539..000000000000 --- a/0001-v2-FS-58644.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 17584285d296acaa80f131ca0e8b75eff675962b Mon Sep 17 00:00:00 2001 -From: fafryd <dz1125.bug.tracker@gmail.com> -Date: Sun, 20 May 2018 14:30:43 +0200 -Subject: [PATCH] v2 FS#58644 - ---- - hw/xfree86/common/meson.build | 13 +++++++++++++ - hw/xfree86/meson.build | 12 +++++++----- - 2 files changed, 20 insertions(+), 5 deletions(-) - -diff --git a/hw/xfree86/common/meson.build b/hw/xfree86/common/meson.build -index 514999ff6..0eff6e488 100644 ---- a/hw/xfree86/common/meson.build -+++ b/hw/xfree86/common/meson.build -@@ -1,3 +1,16 @@ -+if get_option('suid_wrapper') -+ x_sh = configure_file( -+ input: '../Xorg.sh.in', -+ output: 'Xorg', -+ configuration: conf_data, -+ ) -+ install_data( -+ x_sh, -+ install_mode: 'rwxr-xr-x', -+ install_dir: join_paths(get_option('prefix'), get_option('bindir')), -+ ) -+endif -+ - srcs_xorg_common = [ - 'xf86fbBus.c', - 'xf86noBus.c', -diff --git a/hw/xfree86/meson.build b/hw/xfree86/meson.build -index cacf56d4c..d1295d404 100644 ---- a/hw/xfree86/meson.build -+++ b/hw/xfree86/meson.build -@@ -145,11 +145,13 @@ if get_option('suid_wrapper') - install_dir: get_option('libexecdir'), - # install_mode: ['r-sr-xr-x', 0, 0], - ) -- configure_file( -- input: 'Xorg.sh.in', -- output: 'Xorg', -- configuration: conf_data, -- install_dir: join_paths(get_option('prefix'), get_option('bindir')), -+ meson.add_install_script( -+ 'sh', '-c', -+ 'chmod u+s @0@@1@/@2@'.format( -+ '${DESTDIR}', -+ join_paths(get_option('prefix'), get_option('libexecdir')), -+ 'Xorg.wrap' -+ ) - ) - endif - --- -2.17.0 - diff --git a/0002-fix-libshadow-2.patch b/0002-fix-libshadow-2.patch deleted file mode 100644 index d98c6fd4beda..000000000000 --- a/0002-fix-libshadow-2.patch +++ /dev/null @@ -1,30 +0,0 @@ -From a530b6e8923f2b9153a773c8618a1e2f41619288 Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Tue, 30 Apr 2019 18:01:27 -0400 -Subject: [PATCH] meson: Fix libshadow.so linkage - -Don't link against fb, it's the driver's responsibility to load that -first. Underlinking like this is unpleasant but this matches what -autotools does. - -Fixes: xorg/xserver#540 ---- - hw/xfree86/dixmods/meson.build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/hw/xfree86/dixmods/meson.build b/hw/xfree86/dixmods/meson.build -index 835d23215..0562b630f 100644 ---- a/hw/xfree86/dixmods/meson.build -+++ b/hw/xfree86/dixmods/meson.build -@@ -34,7 +34,7 @@ shared_module( - c_args: xorg_c_args, - dependencies: common_dep, - link_whole: libxserver_miext_shadow, -- link_with: [fb, e], -+ link_with: e, - - install: true, - install_dir: module_dir, --- -2.22.0 - @@ -4,34 +4,26 @@ pkgbase=xorg-server-bug865 pkgname=xorg-server-bug865 -pkgver=1.20.13 -pkgrel=3 +pkgver=21.1.1 +pkgrel=2 arch=('x86_64') license=('custom') groups=('xorg') url="https://xorg.freedesktop.org" makedepends=('xorgproto' 'pixman' 'libx11' 'mesa' 'mesa-libgl' 'xtrans' - 'libxkbfile' 'libxfont2' 'libpciaccess' 'libxv' + 'libxkbfile' 'libxfont2' 'libpciaccess' 'libxv' 'libxcvt' 'libxmu' 'libxrender' 'libxi' 'libxaw' 'libxtst' 'libxres' 'xorg-xkbcomp' 'xorg-util-macros' 'xorg-font-util' 'libepoxy' 'xcb-util' 'xcb-util-image' 'xcb-util-renderutil' 'xcb-util-wm' 'xcb-util-keysyms' 'libxshmfence' 'libunwind' 'systemd' 'meson' 'git') +#source=(${pkgbase}-${pkgver}::git+https://gitlab.freedesktop.org/xorg/xserver.git#commit=27a0ee32ccef8d621aaa758c804fc9a5ceeb5a56 source=(https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-${pkgver}.tar.xz{,.sig} - xserver-autobind-hotplug.patch - 0001-v2-FS-58644.patch - 0002-fix-libshadow-2.patch xvfb-run # with updates from FC master xvfb-run.1 freedesktop-bug-865.patch) -validpgpkeys=('7B27A3F1A6E18CD9588B4AE8310180050905E40C' - 'C383B778255613DFDB409D91DB221A6900000011' - 'DD38563A8A8224537D1F90E45B8A2D50A0ECD0D3' - '3BB639E56F861FA2E86505690FDD682D974CA72A') -sha512sums=('4e0b7bd4e070dc52cb2c51c2056feb133de2c0487d359392ed63abba9702910cd2e2983e9415973d8d6e9672eac78be6f39202687fc56610877914ce722554b3' +validpgpkeys=('FD0004A26EADFE43A4C3F249C6F7AE200374452D') # Povilas Kanapickas <povilas@radix.lt> +sha512sums=('8608ed9c1537c95e8a3adea5e3e372a3c5eb841f8e27c84283093f22fb1909e16a800006510da684b13f8f237f33b8a4be3e2537f5f9ab9af4c5ad12770eef0d' 'SKIP' - 'd84f4d63a502b7af76ea49944d1b21e2030dfd250ac1e82878935cf631973310ac9ba1f0dfedf10980ec6c7431d61b7daa4b7bbaae9ee477b2c19812c1661a22' - '74e1aa0c101e42f0f25349d305641873b3a79ab3b9bb2d4ed68ba8e392b4db2701fcbc35826531ee2667d3ee55673e4b4fecc2a9f088141af29ceb400f72f363' - '3d3be34ad9fa976daec53573d3a30a9f1953341ba5ee27099af0141f0ef7994fa5cf84dc08aae848380e6abfc10879f9a67f07601c7a437abf8aef13a3ec9fe1' '4154dd55702b98083b26077bf70c60aa957b4795dbf831bcc4c78b3cb44efe214f0cf8e3c140729c829b5f24e7466a24615ab8dbcce0ac6ebee3229531091514' 'de5e2cb3c6825e6cf1f07ca0d52423e17f34d70ec7935e9dd24be5fb9883bf1e03b50ff584931bd3b41095c510ab2aa44d2573fd5feaebdcb59363b65607ff22' '81be7b0ecd9de850f0c740762d37c7489f12b34eb6adb19b3d3077f66d66e48e1206eff4bd29e50f5640509390a08fa138a4664b60d90878d4d17cb1f6919baf') @@ -39,16 +31,6 @@ sha512sums=('4e0b7bd4e070dc52cb2c51c2056feb133de2c0487d359392ed63abba9702910cd2e prepare() { cd "xorg-server-${pkgver}" - # patch from Fedora, not yet merged - patch -Np1 -i ../xserver-autobind-hotplug.patch - - # Fix rootless xorg - FS#58644 - # https://bugs.freedesktop.org/show_bug.cgi?id=106588 - patch -Np1 -i ../0001-v2-FS-58644.patch - - # Fix libshadow.so: libfb.so => not found - merge in master - patch -Np1 -i ../0002-fix-libshadow-2.patch - # The patch for freedesktop bug 865 patch -Np1 -i "${srcdir}/freedesktop-bug-865.patch" } @@ -62,7 +44,6 @@ build() { export LDFLAGS=${LDFLAGS/,-z,now} arch-meson xorg-server-$pkgver build \ - -D os_vendor="Archlinux" \ -D ipv6=true \ -D xvfb=true \ -D xnest=true \ @@ -71,6 +52,7 @@ build() { -D xephyr=true \ -D glamor=true \ -D udev=true \ + -D dtrace=false \ -D systemd_logind=true \ -D suid_wrapper=true \ -D xkb_dir=/usr/share/X11/xkb \ @@ -102,18 +84,17 @@ package_xorg-server-bug865() { libpciaccess libdrm libxshmfence libxcvt) # FS#52949 # see xorg-server-*/hw/xfree86/common/xf86Module.h for ABI versions - we provide major numbers that drivers can depend on # and /usr/lib/pkgconfig/xorg-server.pc in xorg-server-devel pkg - provides=('X-ABI-VIDEODRV_VERSION=24.0' 'X-ABI-XINPUT_VERSION=24.1' 'X-ABI-EXTENSION_VERSION=10.0' 'x-server' "xorg-server=$pkgver") + provides=('X-ABI-VIDEODRV_VERSION=25.2' 'X-ABI-XINPUT_VERSION=24.4' 'X-ABI-EXTENSION_VERSION=10.0' 'x-server' "xorg-server=$pkgver") conflicts=('nvidia-utils<=331.20' 'glamor-egl' 'xf86-video-modesetting' 'xorg-server') replaces=('glamor-egl' 'xf86-video-modesetting') install=xorg-server.install - _install fakeinstall/usr/bin/{Xorg,gtf} - ln -s /usr/bin/Xorg "${pkgdir}/usr/bin/X" + _install fakeinstall/usr/bin/{X,Xorg,gtf} _install fakeinstall/usr/lib/Xorg{,.wrap} _install fakeinstall/usr/lib/xorg/modules/* _install fakeinstall/usr/share/X11/xorg.conf.d/10-quirks.conf _install fakeinstall/usr/share/man/man1/{Xorg,Xorg.wrap,gtf}.1 - _install fakeinstall/usr/share/man/man4/{exa,fbdevhw,modesetting}.4 + _install fakeinstall/usr/share/man/man4/{exa,fbdevhw,inputtestdrv,modesetting}.4 _install fakeinstall/usr/share/man/man5/{Xwrapper.config,xorg.conf,xorg.conf.d}.5 # distro specific files must be installed in /usr/share/X11/xorg.conf.d diff --git a/xserver-autobind-hotplug.patch b/xserver-autobind-hotplug.patch deleted file mode 100644 index 86b96a23e4bf..000000000000 --- a/xserver-autobind-hotplug.patch +++ /dev/null @@ -1,293 +0,0 @@ -From 471289fa1dc359555ceed6302f7d9605ab6be3ea Mon Sep 17 00:00:00 2001 -From: Dave Airlie <airlied@redhat.com> -Date: Mon, 2 Apr 2018 16:49:02 -0400 -Subject: [PATCH] autobind GPUs to the screen - -This is a modified version of a patch we've been carry-ing in Fedora and -RHEL for years now. This patch automatically adds secondary GPUs to the -master as output sink / offload source making e.g. the use of -slave-outputs just work, with requiring the user to manually run -"xrandr --setprovideroutputsource" before he can hookup an external -monitor to his hybrid graphics laptop. - -There is one problem with this patch, which is why it was not upstreamed -before. What to do when a secondary GPU gets detected really is a policy -decission (e.g. one may want to autobind PCI GPUs but not USB ones) and -as such should be under control of the Desktop Environment. - -Unconditionally adding autobinding support to the xserver will result -in races between the DE dealing with the hotplug of a secondary GPU -and the server itself dealing with it. - -However we've waited for years for any Desktop Environments to actually -start doing some sort of autoconfiguration of secondary GPUs and there -is still not a single DE dealing with this, so I believe that it is -time to upstream this now. - -To avoid potential future problems if any DEs get support for doing -secondary GPU configuration themselves, the new autobind functionality -is made optional. Since no DEs currently support doing this themselves it -is enabled by default. When DEs grow support for doing this themselves -they can disable the servers autobinding through the servers cmdline or a -xorg.conf snippet. - -Signed-off-by: Dave Airlie <airlied@gmail.com> -[hdegoede@redhat.com: Make configurable, fix with nvidia, submit upstream] -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - hw/xfree86/common/xf86Config.c | 19 +++++++++++++++++++ - hw/xfree86/common/xf86Globals.c | 2 ++ - hw/xfree86/common/xf86Init.c | 20 ++++++++++++++++++++ - hw/xfree86/common/xf86Priv.h | 1 + - hw/xfree86/common/xf86Privstr.h | 1 + - hw/xfree86/common/xf86platformBus.c | 4 ++++ - hw/xfree86/man/Xorg.man | 7 +++++++ - hw/xfree86/man/xorg.conf.man | 6 ++++++ - randr/randrstr.h | 3 +++ - randr/rrprovider.c | 22 ++++++++++++++++++++++ - 10 files changed, 85 insertions(+) - -diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c -index 2c1d335..d7d7c2e 100644 ---- a/hw/xfree86/common/xf86Config.c -+++ b/hw/xfree86/common/xf86Config.c -@@ -643,6 +643,7 @@ typedef enum { - FLAG_DRI2, - FLAG_USE_SIGIO, - FLAG_AUTO_ADD_GPU, -+ FLAG_AUTO_BIND_GPU, - FLAG_MAX_CLIENTS, - FLAG_IGLX, - FLAG_DEBUG, -@@ -699,6 +700,8 @@ static OptionInfoRec FlagOptions[] = { - {0}, FALSE}, - {FLAG_AUTO_ADD_GPU, "AutoAddGPU", OPTV_BOOLEAN, - {0}, FALSE}, -+ {FLAG_AUTO_BIND_GPU, "AutoBindGPU", OPTV_BOOLEAN, -+ {0}, FALSE}, - {FLAG_MAX_CLIENTS, "MaxClients", OPTV_INTEGER, - {0}, FALSE }, - {FLAG_IGLX, "IndirectGLX", OPTV_BOOLEAN, -@@ -779,6 +782,22 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts) - } - xf86Msg(from, "%sutomatically adding GPU devices\n", - xf86Info.autoAddGPU ? "A" : "Not a"); -+ -+ if (xf86AutoBindGPUDisabled) { -+ xf86Info.autoBindGPU = FALSE; -+ from = X_CMDLINE; -+ } -+ else if (xf86IsOptionSet(FlagOptions, FLAG_AUTO_BIND_GPU)) { -+ xf86GetOptValBool(FlagOptions, FLAG_AUTO_BIND_GPU, -+ &xf86Info.autoBindGPU); -+ from = X_CONFIG; -+ } -+ else { -+ from = X_DEFAULT; -+ } -+ xf86Msg(from, "%sutomatically binding GPU devices\n", -+ xf86Info.autoBindGPU ? "A" : "Not a"); -+ - /* - * Set things up based on the config file information. Some of these - * settings may be overridden later when the command line options are -diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c -index e890f05..7b27b4c 100644 ---- a/hw/xfree86/common/xf86Globals.c -+++ b/hw/xfree86/common/xf86Globals.c -@@ -131,6 +131,7 @@ xf86InfoRec xf86Info = { - #else - .autoAddGPU = FALSE, - #endif -+ .autoBindGPU = TRUE, - }; - - const char *xf86ConfigFile = NULL; -@@ -191,6 +192,7 @@ Bool xf86FlipPixels = FALSE; - Gamma xf86Gamma = { 0.0, 0.0, 0.0 }; - - Bool xf86AllowMouseOpenFail = FALSE; -+Bool xf86AutoBindGPUDisabled = FALSE; - - #ifdef XF86VIDMODE - Bool xf86VidModeDisabled = FALSE; -diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c -index ea42ec9..ec255b6 100644 ---- a/hw/xfree86/common/xf86Init.c -+++ b/hw/xfree86/common/xf86Init.c -@@ -76,6 +76,7 @@ - #include "xf86DDC.h" - #include "xf86Xinput.h" - #include "xf86InPriv.h" -+#include "xf86Crtc.h" - #include "picturestr.h" - #include "randrstr.h" - #include "glxvndabi.h" -@@ -237,6 +238,19 @@ xf86PrivsElevated(void) - return PrivsElevated(); - } - -+static void -+xf86AutoConfigOutputDevices(void) -+{ -+ int i; -+ -+ if (!xf86Info.autoBindGPU) -+ return; -+ -+ for (i = 0; i < xf86NumGPUScreens; i++) -+ RRProviderAutoConfigGpuScreen(xf86ScrnToScreen(xf86GPUScreens[i]), -+ xf86ScrnToScreen(xf86Screens[0])); -+} -+ - static void - TrapSignals(void) - { -@@ -770,6 +784,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) - input_unlock(); -@@ -1278,6 +1294,10 @@ ddxProcessArgument(int argc, char **argv, int i) - xf86Info.iglxFrom = X_CMDLINE; - return 0; - } -+ if (!strcmp(argv[i], "-noautoBindGPU")) { -+ xf86AutoBindGPUDisabled = TRUE; -+ return 1; -+ } - - /* OS-specific processing */ - return xf86ProcessArgument(argc, argv, i); -diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h -index 4fe2b5f..6566622 100644 ---- a/hw/xfree86/common/xf86Priv.h -+++ b/hw/xfree86/common/xf86Priv.h -@@ -46,6 +46,7 @@ - extern _X_EXPORT const char *xf86ConfigFile; - extern _X_EXPORT const char *xf86ConfigDir; - extern _X_EXPORT Bool xf86AllowMouseOpenFail; -+extern _X_EXPORT Bool xf86AutoBindGPUDisabled; - - #ifdef XF86VIDMODE - extern _X_EXPORT Bool xf86VidModeDisabled; -diff --git a/hw/xfree86/common/xf86Privstr.h b/hw/xfree86/common/xf86Privstr.h -index 21c2e1f..6c71863 100644 ---- a/hw/xfree86/common/xf86Privstr.h -+++ b/hw/xfree86/common/xf86Privstr.h -@@ -98,6 +98,7 @@ typedef struct { - - Bool autoAddGPU; - const char *debug; -+ Bool autoBindGPU; - } xf86InfoRec, *xf86InfoPtr; - - /* ISC's cc can't handle ~ of UL constants, so explicitly type cast them. */ -diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c -index cef47da..913a324 100644 ---- a/hw/xfree86/common/xf86platformBus.c -+++ b/hw/xfree86/common/xf86platformBus.c -@@ -49,6 +49,7 @@ - #include "Pci.h" - #include "xf86platformBus.h" - #include "xf86Config.h" -+#include "xf86Crtc.h" - - #include "randrstr.h" - int platformSlotClaimed; -@@ -665,6 +666,9 @@ xf86platformAddDevice(int index) - } - /* attach unbound to 0 protocol screen */ - AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); -+ if (xf86Info.autoBindGPU) -+ RRProviderAutoConfigGpuScreen(xf86ScrnToScreen(xf86GPUScreens[i]), -+ xf86ScrnToScreen(xf86Screens[0])); - - RRResourcesChanged(xf86Screens[0]->pScreen); - RRTellChanged(xf86Screens[0]->pScreen); -diff --git a/hw/xfree86/man/Xorg.man b/hw/xfree86/man/Xorg.man -index 13a9dc3..745f986 100644 ---- a/hw/xfree86/man/Xorg.man -+++ b/hw/xfree86/man/Xorg.man -@@ -283,6 +283,13 @@ is a comma separated list of directories to search for - server modules. This option is only available when the server is run - as root (i.e, with real-uid 0). - .TP 8 -+.B \-noautoBindGPU -+Disable automatically setting secondary GPUs up as output sinks and offload -+sources. This is equivalent to setting the -+.B AutoBindGPU -+xorg.conf(__filemansuffix__) file option. To -+.B false. -+.TP 8 - .B \-nosilk - Disable Silken Mouse support. - .TP 8 -diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man -index 9589262..8d51e06 100644 ---- a/hw/xfree86/man/xorg.conf.man -+++ b/hw/xfree86/man/xorg.conf.man -@@ -672,6 +672,12 @@ Enabled by default. - If this option is disabled, then no GPU devices will be added from the udev - backend. Enabled by default. (May need to be disabled to setup Xinerama). - .TP 7 -+.BI "Option \*qAutoBindGPU\*q \*q" boolean \*q -+If enabled then secondary GPUs will be automatically set up as output-sinks and -+offload-sources. Making e.g. laptop outputs connected only to the secondary -+GPU directly available for use without needing to run -+"xrandr --setprovideroutputsource". Enabled by default. -+.TP 7 - .BI "Option \*qLog\*q \*q" string \*q - This option controls whether the log is flushed and/or synced to disk after - each message. -diff --git a/randr/randrstr.h b/randr/randrstr.h -index f94174b..092d726 100644 ---- a/randr/randrstr.h -+++ b/randr/randrstr.h -@@ -1039,6 +1039,9 @@ RRProviderLookup(XID id, RRProviderPtr *provider_p); - extern _X_EXPORT void - RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider); - -+extern _X_EXPORT void -+RRProviderAutoConfigGpuScreen(ScreenPtr pScreen, ScreenPtr masterScreen); -+ - /* rrproviderproperty.c */ - - extern _X_EXPORT void -diff --git a/randr/rrprovider.c b/randr/rrprovider.c -index e4bc2bf..e04c18f 100644 ---- a/randr/rrprovider.c -+++ b/randr/rrprovider.c -@@ -485,3 +485,25 @@ RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider) - - WriteEventsToClient(client, 1, (xEvent *) &pe); - } -+ -+void -+RRProviderAutoConfigGpuScreen(ScreenPtr pScreen, ScreenPtr masterScreen) -+{ -+ rrScrPrivPtr pScrPriv = rrGetScrPriv(pScreen); -+ rrScrPrivPtr masterPriv = rrGetScrPriv(masterScreen); -+ RRProviderPtr provider = pScrPriv->provider; -+ RRProviderPtr master_provider = masterPriv->provider; -+ -+ if (!provider || !master_provider) -+ return; -+ -+ if ((provider->capabilities & RR_Capability_SinkOutput) && -+ (master_provider->capabilities & RR_Capability_SourceOutput)) { -+ pScrPriv->rrProviderSetOutputSource(pScreen, provider, master_provider); -+ RRInitPrimeSyncProps(pScreen); -+ } -+ -+ if ((provider->capabilities & RR_Capability_SourceOffload) && -+ (master_provider->capabilities & RR_Capability_SinkOffload)) -+ pScrPriv->rrProviderSetOffloadSink(pScreen, provider, master_provider); -+} --- -2.16.2 - |