aboutsummaryrefslogtreecommitdiffstats
path: root/xorg-server-hwcursor-gamma
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server-hwcursor-gamma')
-rw-r--r--xorg-server-hwcursor-gamma/.gitignore3
-rw-r--r--xorg-server-hwcursor-gamma/0001-When-an-cursor-is-set-it-is-adjusted-to-use-the.patch55
-rw-r--r--xorg-server-hwcursor-gamma/0002-Fix-for-full-and-semi-transparency-under-negative-im.patch86
-rw-r--r--xorg-server-hwcursor-gamma/0003-Use-Harms-s-suggest-do-not-use-inline-if.-And-fix-si.patch54
-rw-r--r--xorg-server-hwcursor-gamma/PKGBUILD136
-rw-r--r--xorg-server-hwcursor-gamma/PKGBUILD.old133
-rw-r--r--xorg-server-hwcursor-gamma/nvidia-add-modulepath-support.patch851
l---------xorg-server-hwcursor-gamma/upload1
-rwxr-xr-xxorg-server-hwcursor-gamma/watch25
-rw-r--r--xorg-server-hwcursor-gamma/xserver-autobind-hotplug.patch302
-rw-r--r--xorg-server-hwcursor-gamma/xvfb-run180
-rw-r--r--xorg-server-hwcursor-gamma/xvfb-run.1282
12 files changed, 0 insertions, 2108 deletions
diff --git a/xorg-server-hwcursor-gamma/.gitignore b/xorg-server-hwcursor-gamma/.gitignore
deleted file mode 100644
index 903de3e..0000000
--- a/xorg-server-hwcursor-gamma/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-!/CVE-2013-6424.diff
-!/xvfb-run.1
-!/revert-udev-changes.diff
diff --git a/xorg-server-hwcursor-gamma/0001-When-an-cursor-is-set-it-is-adjusted-to-use-the.patch b/xorg-server-hwcursor-gamma/0001-When-an-cursor-is-set-it-is-adjusted-to-use-the.patch
deleted file mode 100644
index 5eeb826..0000000
--- a/xorg-server-hwcursor-gamma/0001-When-an-cursor-is-set-it-is-adjusted-to-use-the.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From e63b5656a6509ece2d5ffb1fb962911519163988 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Mattias=20Andr=C3=A9e?= <maandree@operamail.com>
-Date: Tue, 15 Apr 2014 02:45:25 +0200
-Subject: [PATCH 1/3] When an cursor is set, it is adjusted to use the gamma
- ramps of the CRTC:s that it is loaded on.
-
-This could be improved to be done in
-`crtc->funcs->load_cursor_argb` with more
-accurate adjustments. But I was not able to
-find where `crtc->funcs->load_cursor_argb`
-is implement.
-
-Additionally, `xf86_reload_cursors` should be
-called when the gamma settings changes. This
-way the cursor's colours are adjusted to use
-the gamma settings directly when the gamma
-is modified rather than the next time its
-image changes.
----
- hw/xfree86/modes/xf86Cursors.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/hw/xfree86/modes/xf86Cursors.c b/hw/xfree86/modes/xf86Cursors.c
-index 2b0db34..3cb499f 100644
---- a/hw/xfree86/modes/xf86Cursors.c
-+++ b/hw/xfree86/modes/xf86Cursors.c
-@@ -242,6 +242,12 @@ xf86_crtc_convert_cursor_to_argb(xf86CrtcPtr crtc, unsigned char *src)
- }
- else
- bits = 0;
-+ if (crtc->gamma_red && crtc->gamma_size == 256) {
-+ bits = (bits & 0xFF000000) |
-+ ((crtc->gamma_red[(bits >> 16) & 255] >> 8) << 16) |
-+ (crtc->gamma_green[(bits >> 8) & 255] & 0xFF00) |
-+ (crtc->gamma_blue[bits & 255] >> 8);
-+ }
- cursor_image[y * cursor_info->MaxWidth + x] = bits;
- }
- crtc->funcs->load_cursor_argb(crtc, cursor_image);
-@@ -541,6 +547,12 @@ xf86_crtc_load_cursor_argb(xf86CrtcPtr crtc, CursorPtr cursor)
- bits = cursor_source[yin * source_width + xin];
- else
- bits = 0;
-+ if (crtc->gamma_red && crtc->gamma_size == 256) {
-+ bits = (bits & 0xFF000000) |
-+ ((crtc->gamma_red[(bits >> 16) & 255] >> 8) << 16) |
-+ (crtc->gamma_green[(bits >> 8) & 255] & 0xFF00) |
-+ (crtc->gamma_blue[bits & 255] >> 8);
-+ }
- cursor_image[y * image_width + x] = bits;
- }
-
---
-1.9.2
-
diff --git a/xorg-server-hwcursor-gamma/0002-Fix-for-full-and-semi-transparency-under-negative-im.patch b/xorg-server-hwcursor-gamma/0002-Fix-for-full-and-semi-transparency-under-negative-im.patch
deleted file mode 100644
index 3a41a81..0000000
--- a/xorg-server-hwcursor-gamma/0002-Fix-for-full-and-semi-transparency-under-negative-im.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 7b34ab1dbeb4a1e29d7475af65f42e1cb6f60de8 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Mattias=20Andr=C3=A9e?= <maandree@operamail.com>
-Date: Sat, 19 Apr 2014 19:36:05 +0200
-Subject: [PATCH 2/3] Fix for full and semi-transparency under negative image.
-
----
- hw/xfree86/modes/xf86Cursors.c | 49 +++++++++++++++++++++++++++++++-----------
- 1 file changed, 37 insertions(+), 12 deletions(-)
-
-diff --git a/hw/xfree86/modes/xf86Cursors.c b/hw/xfree86/modes/xf86Cursors.c
-index 3cb499f..5afd740 100644
---- a/hw/xfree86/modes/xf86Cursors.c
-+++ b/hw/xfree86/modes/xf86Cursors.c
-@@ -209,6 +209,41 @@ set_bit(CARD8 *image, xf86CursorInfoPtr cursor_info, int x, int y, Bool mask)
- }
-
- /*
-+ * Remap a cursor pixel according to the gamma ramps
-+ */
-+static CARD32
-+cursor_gamma_correct(xf86CrtcPtr crtc, CARD32 bits)
-+{
-+ float alpha;
-+ CARD32 old_red, new_red;
-+ CARD32 old_green, new_green;
-+ CARD32 old_blue, new_blue;
-+
-+ if (!(crtc->gamma_red && crtc->gamma_size == 256))
-+ return bits;
-+
-+ alpha = (float)((bits >> 24) & 255) / 255.f;
-+
-+ old_red = (bits >> 16) & 255;
-+ old_green = (bits >> 8) & 255;
-+ old_blue = (bits >> 0) & 255;
-+
-+ new_red = (crtc->gamma_red [old_red ]) >> 8;
-+ new_green = (crtc->gamma_green[old_green]) >> 8;
-+ new_blue = (crtc->gamma_blue [old_blue ]) >> 8;
-+
-+ new_red = new_red * alpha + old_red * (1 - alpha);
-+ new_green = new_green * alpha + old_green * (1 - alpha);
-+ new_blue = new_blue * alpha + old_blue * (1 - alpha);
-+
-+ new_red = new_red < 0 ? 0 : new_red > 255 ? 255 : new_red;
-+ new_green = new_green < 0 ? 0 : new_green > 255 ? 255 : new_green;
-+ new_blue = new_blue < 0 ? 0 : new_blue > 255 ? 255 : new_blue;
-+
-+ return (bits & 0xFF000000) | (new_red << 16) | (new_green << 8) | (new_blue << 0);
-+}
-+
-+/*
- * Load a two color cursor into a driver that supports only ARGB cursors
- */
- static void
-@@ -242,12 +277,7 @@ xf86_crtc_convert_cursor_to_argb(xf86CrtcPtr crtc, unsigned char *src)
- }
- else
- bits = 0;
-- if (crtc->gamma_red && crtc->gamma_size == 256) {
-- bits = (bits & 0xFF000000) |
-- ((crtc->gamma_red[(bits >> 16) & 255] >> 8) << 16) |
-- (crtc->gamma_green[(bits >> 8) & 255] & 0xFF00) |
-- (crtc->gamma_blue[bits & 255] >> 8);
-- }
-+ bits = cursor_gamma_correct(crtc, bits);
- cursor_image[y * cursor_info->MaxWidth + x] = bits;
- }
- crtc->funcs->load_cursor_argb(crtc, cursor_image);
-@@ -547,12 +577,7 @@ xf86_crtc_load_cursor_argb(xf86CrtcPtr crtc, CursorPtr cursor)
- bits = cursor_source[yin * source_width + xin];
- else
- bits = 0;
-- if (crtc->gamma_red && crtc->gamma_size == 256) {
-- bits = (bits & 0xFF000000) |
-- ((crtc->gamma_red[(bits >> 16) & 255] >> 8) << 16) |
-- (crtc->gamma_green[(bits >> 8) & 255] & 0xFF00) |
-- (crtc->gamma_blue[bits & 255] >> 8);
-- }
-+ bits = cursor_gamma_correct(crtc, bits);
- cursor_image[y * image_width + x] = bits;
- }
-
---
-1.9.2
-
diff --git a/xorg-server-hwcursor-gamma/0003-Use-Harms-s-suggest-do-not-use-inline-if.-And-fix-si.patch b/xorg-server-hwcursor-gamma/0003-Use-Harms-s-suggest-do-not-use-inline-if.-And-fix-si.patch
deleted file mode 100644
index 35875ec..0000000
--- a/xorg-server-hwcursor-gamma/0003-Use-Harms-s-suggest-do-not-use-inline-if.-And-fix-si.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From b167a4d01048fc624fdf95faffa74099e5bd8efb Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Mattias=20Andr=C3=A9e?= <maandree@operamail.com>
-Date: Mon, 21 Apr 2014 01:05:35 +0200
-Subject: [PATCH 3/3] Use Harms's suggest: do not use inline if. And fix
- signness issue: CARD32 is unsigned, which results in that if a value because
- less than zero it would be incorrectly corrected to be 255 rather than 0.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Mattias Andrée <maandree@operamail.com>
----
- hw/xfree86/modes/xf86Cursors.c | 18 +++++++++++-------
- 1 file changed, 11 insertions(+), 7 deletions(-)
-
-diff --git a/hw/xfree86/modes/xf86Cursors.c b/hw/xfree86/modes/xf86Cursors.c
-index 5afd740..b18b7e6 100644
---- a/hw/xfree86/modes/xf86Cursors.c
-+++ b/hw/xfree86/modes/xf86Cursors.c
-@@ -214,10 +214,10 @@ set_bit(CARD8 *image, xf86CursorInfoPtr cursor_info, int x, int y, Bool mask)
- static CARD32
- cursor_gamma_correct(xf86CrtcPtr crtc, CARD32 bits)
- {
-- float alpha;
-- CARD32 old_red, new_red;
-- CARD32 old_green, new_green;
-- CARD32 old_blue, new_blue;
-+ float alpha;
-+ int32_t old_red, new_red;
-+ int32_t old_green, new_green;
-+ int32_t old_blue, new_blue;
-
- if (!(crtc->gamma_red && crtc->gamma_size == 256))
- return bits;
-@@ -236,9 +236,13 @@ cursor_gamma_correct(xf86CrtcPtr crtc, CARD32 bits)
- new_green = new_green * alpha + old_green * (1 - alpha);
- new_blue = new_blue * alpha + old_blue * (1 - alpha);
-
-- new_red = new_red < 0 ? 0 : new_red > 255 ? 255 : new_red;
-- new_green = new_green < 0 ? 0 : new_green > 255 ? 255 : new_green;
-- new_blue = new_blue < 0 ? 0 : new_blue > 255 ? 255 : new_blue;
-+ /* Make sure the floating point operations did not yeild invalid results. */
-+ if (new_red < 0x00) new_red = 0x00;
-+ if (new_red > 0xFF) new_red = 0xFF;
-+ if (new_green < 0x00) new_green = 0x00;
-+ if (new_green > 0xFF) new_green = 0xFF;
-+ if (new_blue < 0x00) new_blue = 0x00;
-+ if (new_blue > 0xFF) new_blue = 0xFF;
-
- return (bits & 0xFF000000) | (new_red << 16) | (new_green << 8) | (new_blue << 0);
- }
---
-1.9.2
-
diff --git a/xorg-server-hwcursor-gamma/PKGBUILD b/xorg-server-hwcursor-gamma/PKGBUILD
deleted file mode 100644
index 564c316..0000000
--- a/xorg-server-hwcursor-gamma/PKGBUILD
+++ /dev/null
@@ -1,136 +0,0 @@
-# Maintainer: Mattias Andrée <m@`base64 -d`(bWFhbmRyZWU).se>
-# Maintainer of the xorg-server package: AndyRTR <andyrtr@archlinux.org>
-# Maintainer of the xorg-server package: Jan de Groot <jgc@archlinux.org>
-
-_pkgname=xorg-server
-pkgname=xorg-server-hwcursor-gamma
-epoch=2
-pkgver=1.19.6
-pkgrel=2 # 1.19.6+13+gd0d1a694f-1 in the xorg-server package
-pkgdesc="Xorg X server with patch to apply gamma ramps on hardware cursors"
-depends=(libepoxy libxdmcp libxfont2 libpciaccess libdrm pixman libgcrypt libxau xorg-server-common libxshmfence libgl xf86-input-libinput)
-provides=("xorg-server=${pkgver}" 'X-ABI-VIDEODRV_VERSION=23' 'X-ABI-XINPUT_VERSION=24.1' 'X-ABI-EXTENSION_VERSION=10.0' 'x-server')
-conflicts=('xorg-server' 'nvidia-utils<=331.20' 'glamor-egl' 'xf86-video-modesetting')
-replaces=('glamor-egl' 'xf86-video-modesetting')
-arch=('i686' 'x86_64')
-license=('custom')
-url="http://xorg.freedesktop.org"
-makedepends=('pixman' 'libx11' 'mesa' 'mesa-libgl' 'xf86driproto' 'xcmiscproto' 'xtrans' 'bigreqsproto' 'randrproto'
- 'inputproto' 'fontsproto' 'videoproto' 'presentproto' 'compositeproto' 'recordproto' 'scrnsaverproto'
- 'resourceproto' 'xineramaproto' 'libxkbfile' 'libxfont2' 'renderproto' 'libpciaccess' 'libxv'
- 'xf86dgaproto' 'libxmu' 'libxrender' 'libxi' 'dmxproto' 'libxaw' 'libdmx' 'libxtst' 'libxres'
- 'xorg-xkbcomp' 'xorg-util-macros' 'xorg-font-util' 'glproto' 'dri2proto' 'libgcrypt' 'libepoxy'
- 'xcb-util' 'xcb-util-image' 'xcb-util-renderutil' 'xcb-util-wm' 'xcb-util-keysyms' 'dri3proto'
- 'libxshmfence' 'libunwind')
-source=(https://xorg.freedesktop.org/releases/individual/xserver/${_pkgname}-${pkgver}.tar.bz2
- nvidia-add-modulepath-support.patch
- xserver-autobind-hotplug.patch
- xvfb-run
- xvfb-run.1
- 0001-When-an-cursor-is-set-it-is-adjusted-to-use-the.patch
- 0002-Fix-for-full-and-semi-transparency-under-negative-im.patch
- 0003-Use-Harms-s-suggest-do-not-use-inline-if.-And-fix-si.patch)
-sha256sums=('a732502f1db000cf36a376cd0c010ffdbf32ecdd7f1fa08ba7f5bdf9601cc197'
- '914a8d775b708f836ae3f0eeca553da3872727a2e4262190f4d5c01241cb14e8'
- 'fcaf536e4fc307958923b58f2baf3d3102ad694efc28506f6f95a9e64483fa57'
- 'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9'
- '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776'
- 'bea348631dedd66475d84ac2cfe0840f22a80a642b4680d73fead4749e47f055'
- 'be9169b937b5d0b44f7f05d7c08aaa5f0c1092e128ce261d9cb350f09dfe1fb0'
- '0a643ae83e03faee0f4db669a33c5b3c99edbba5c86cde2c83962ae536d31081')
-
-prepare() {
- cd "${_pkgname}-${pkgver}"
-
- #msg2 'Apply hardware cursors gamma adjustments patches'
- #patch -Np1 -i ../0001-When-an-cursor-is-set-it-is-adjusted-to-use-the.patch
- #patch -Np1 -i ../0002-Fix-for-full-and-semi-transparency-under-negative-im.patch
- #patch -Np1 -i ../0003-Use-Harms-s-suggest-do-not-use-inline-if.-And-fix-si.patch
-
- # merged upstream in trunk
- msg2 'apply nvidia patch'
- patch -Np1 -i ../nvidia-add-modulepath-support.patch
-
- # patch from Fedora, not yet merged
- msg2 'apply fedora patch'
- patch -Np1 -i ../xserver-autobind-hotplug.patch
-
- autoreconf -vfi
-}
-
-build() {
- # Since pacman 5.0.2-2, hardened flags are now enabled in makepkg.conf
- # With them, module fail to load with undefined symbol.
- # See https://bugs.archlinux.org/task/55102 / https://bugs.archlinux.org/task/54845
- export CFLAGS="${CFLAGS/-fno-plt}"
- export CXXFLAGS="${CXXFLAGS/-fno-plt}"
- export LDFLAGS="${LDFLAGS/,-z,now}"
-
- cd "${_pkgname}-${pkgver}"
- ./configure --prefix=/usr \
- --enable-ipv6 \
- --enable-dri \
- --enable-dmx \
- --enable-xvfb \
- --enable-xnest \
- --enable-composite \
- --enable-xcsecurity \
- --enable-libunwind \
- --enable-xorg \
- --enable-xephyr \
- --enable-glamor \
- --disable-xwayland \
- --enable-kdrive \
- --enable-kdrive-kbd \
- --enable-kdrive-mouse \
- --enable-config-udev \
- --disable-systemd-logind \
- --disable-suid-wrapper \
- --enable-install-setuid \
- --enable-record \
- --disable-xfbdev \
- --disable-xfake \
- --disable-static \
- --libexecdir=/usr/lib/xorg-server \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --with-xkb-path=/usr/share/X11/xkb \
- --with-xkb-output=/var/lib/xkb \
- --with-fontrootdir=/usr/share/fonts \
- --with-sha1=libgcrypt \
- --without-systemd-daemon
-
-# --without-dtrace \
-# --disable-linux-acpi --disable-linux-apm \
-
- make
-
- # Disable subdirs for make install rule to make splitting easier
- sed -e 's/^DMX_SUBDIRS =.*/DMX_SUBDIRS =/' \
- -e 's/^XVFB_SUBDIRS =.*/XVFB_SUBDIRS =/' \
- -e 's/^XNEST_SUBDIRS =.*/XNEST_SUBDIRS = /' \
- -e 's/^KDRIVE_SUBDIRS =.*/KDRIVE_SUBDIRS =/' \
- -e 's/^XWAYLAND_SUBDIRS =.*/XWAYLAND_SUBDIRS =/' \
- -i hw/Makefile
-}
-
-package() {
- cd "${_pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}" install
-
- # distro specific files must be installed in /usr/share/X11/xorg.conf.d
- install -m755 -d "${pkgdir}/etc/X11/xorg.conf.d"
-
- rm -rf "${pkgdir}/var"
-
- rm -f "${pkgdir}/usr/share/man/man1/Xserver.1"
- rm -f "${pkgdir}/usr/lib/xorg/protocol.txt"
-
- install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server"
- ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server/COPYING"
-
- rm -rf "${pkgdir}/usr/lib/pkgconfig"
- rm -rf "${pkgdir}/usr/include"
- rm -rf "${pkgdir}/usr/share/aclocal"
-}
-
diff --git a/xorg-server-hwcursor-gamma/PKGBUILD.old b/xorg-server-hwcursor-gamma/PKGBUILD.old
deleted file mode 100644
index c3bb4a9..0000000
--- a/xorg-server-hwcursor-gamma/PKGBUILD.old
+++ /dev/null
@@ -1,133 +0,0 @@
-# Maintainer: Mattias Andrée <`base64 -d`(bWFhbmRyZWUK)@member.fsf.org>
-# Maintainer of the xorg-server package: AndyRTR <andyrtr@archlinux.org>
-# Maintainer of the xorg-server package: Jan de Groot <jgc@archlinux.org>
-
-_pkgname=xorg-server
-pkgname=xorg-server-hwcursor-gamma
-pkgver=1.18.2
-pkgrel=1 # 4 in xorg-server
-pkgdesc="Xorg X server with patch to apply gamma ramps on hardware cursors"
-depends=(libepoxy libxdmcp libxfont libpciaccess libdrm pixman libgcrypt libxau xorg-server-common libxshmfence libgl xf86-input-evdev)
-provides=("xorg-server=${pkgver}" 'X-ABI-VIDEODRV_VERSION=20' 'X-ABI-XINPUT_VERSION=22.1' 'X-ABI-EXTENSION_VERSION=9.0' 'x-server')
-conflicts=('xorg-server' 'nvidia-utils<=331.20' 'glamor-egl' 'xf86-video-modesetting')
-replaces=('glamor-egl' 'xf86-video-modesetting')
-arch=('i686' 'x86_64')
-license=('custom')
-url="http://xorg.freedesktop.org"
-makedepends=('pixman' 'libx11' 'mesa' 'mesa-libgl' 'xf86driproto' 'xcmiscproto' 'xtrans' 'bigreqsproto' 'randrproto'
- 'inputproto' 'fontsproto' 'videoproto' 'presentproto' 'compositeproto' 'recordproto' 'scrnsaverproto'
- 'resourceproto' 'xineramaproto' 'libxkbfile' 'libxfont' 'renderproto' 'libpciaccess' 'libxv'
- 'xf86dgaproto' 'libxmu' 'libxrender' 'libxi' 'dmxproto' 'libxaw' 'libdmx' 'libxtst' 'libxres'
- 'xorg-xkbcomp' 'xorg-util-macros' 'xorg-font-util' 'glproto' 'dri2proto' 'libgcrypt' 'libepoxy'
- 'xcb-util' 'xcb-util-image' 'xcb-util-renderutil' 'xcb-util-wm' 'xcb-util-keysyms' 'dri3proto'
- 'libxshmfence' 'libunwind')
-source=(${url}/releases/individual/xserver/${_pkgname}-${pkgver}.tar.bz2
- xvfb-run
- xvfb-run.1
- 0001-glamor-swizzle-RED-to-0-for-alpha-textures.patch
- 0001-Xext-vidmode-Reduce-verbosity-of-GetModeLine.patch
- 0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch
- 0001-When-an-cursor-is-set-it-is-adjusted-to-use-the.patch
- 0002-Fix-for-full-and-semi-transparency-under-negative-im.patch
- 0003-Use-Harms-s-suggest-do-not-use-inline-if.-And-fix-si.patch)
-sha256sums=('022142b07f6477d140dcc915902df326408a53ca3a352426a499f142b25d632d'
- 'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9'
- '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776'
- '10c66c10f4f71930e2ac3f6e07881e228ca88542af449d2c69c7744ec87335df'
- '72755a652e72144e3f28c8fa959b4a6df5def838db3cde5077a626e97baab591'
- '70c84bf1f7cbc818692fb56f57c8b8ef2ea057bc05380b2f797ecba742b7ce31'
- 'bea348631dedd66475d84ac2cfe0840f22a80a642b4680d73fead4749e47f055'
- 'be9169b937b5d0b44f7f05d7c08aaa5f0c1092e128ce261d9cb350f09dfe1fb0'
- '0a643ae83e03faee0f4db669a33c5b3c99edbba5c86cde2c83962ae536d31081')
-
-prepare() {
- cd "${_pkgname}-${pkgver}"
-
- msg2 'Fix red tint in Firefox'
- patch -Np1 -i ../0001-glamor-swizzle-RED-to-0-for-alpha-textures.patch
-
- msg2 'Fix flooding of Xorg log file'
- patch -Np1 -i ../0001-Xext-vidmode-Reduce-verbosity-of-GetModeLine.patch
-
- msg2 'Fix FS#48549'
- patch -Np1 -i ../0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch
-
- msg2 'Apply hardware cursors gamma adjustments patches'
- patch -Np1 -i ../0001-When-an-cursor-is-set-it-is-adjusted-to-use-the.patch
- patch -Np1 -i ../0002-Fix-for-full-and-semi-transparency-under-negative-im.patch
- patch -Np1 -i ../0003-Use-Harms-s-suggest-do-not-use-inline-if.-And-fix-si.patch
-}
-
-build() {
- cd "${_pkgname}-${pkgver}"
- ./configure --prefix=/usr \
- --enable-ipv6 \
- --enable-dri \
- --enable-dmx \
- --enable-xvfb \
- --enable-xnest \
- --enable-composite \
- --enable-xcsecurity \
- --enable-libunwind \
- --enable-xorg \
- --enable-xephyr \
- --enable-glamor \
- --disable-xwayland \
- --enable-kdrive \
- --enable-kdrive-kbd \
- --enable-kdrive-mouse \
- --enable-config-udev \
- --disable-systemd-logind \
- --disable-suid-wrapper \
- --enable-install-setuid \
- --enable-record \
- --disable-xfbdev \
- --disable-xfake \
- --disable-static \
- --libexecdir=/usr/lib/xorg-server \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --with-xkb-path=/usr/share/X11/xkb \
- --with-xkb-output=/var/lib/xkb \
- --with-fontrootdir=/usr/share/fonts \
- --with-sha1=libgcrypt \
- --without-systemd-daemon
-
-# --without-dtrace \
-# --disable-linux-acpi --disable-linux-apm \
-
- make
-
- # Disable subdirs for make install rule to make splitting easier
- sed -e 's/^DMX_SUBDIRS =.*/DMX_SUBDIRS =/' \
- -e 's/^XVFB_SUBDIRS =.*/XVFB_SUBDIRS =/' \
- -e 's/^XNEST_SUBDIRS =.*/XNEST_SUBDIRS = /' \
- -e 's/^KDRIVE_SUBDIRS =.*/KDRIVE_SUBDIRS =/' \
- -e 's/^XWAYLAND_SUBDIRS =.*/XWAYLAND_SUBDIRS =/' \
- -i hw/Makefile
-}
-
-package() {
- cd "${_pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}" install
-
- # distro specific files must be installed in /usr/share/X11/xorg.conf.d
- install -m755 -d "${pkgdir}/etc/X11/xorg.conf.d"
-
- # Needed for non-mesa drivers, libgl will restore it
- mv "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so" \
- "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.xorg"
-
- rm -rf "${pkgdir}/var"
-
- rm -f "${pkgdir}/usr/share/man/man1/Xserver.1"
- rm -f "${pkgdir}/usr/lib/xorg/protocol.txt"
-
- install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server"
- ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server/COPYING"
-
- rm -rf "${pkgdir}/usr/lib/pkgconfig"
- rm -rf "${pkgdir}/usr/include"
- rm -rf "${pkgdir}/usr/share/aclocal"
-}
-
diff --git a/xorg-server-hwcursor-gamma/nvidia-add-modulepath-support.patch b/xorg-server-hwcursor-gamma/nvidia-add-modulepath-support.patch
deleted file mode 100644
index 584b91c..0000000
--- a/xorg-server-hwcursor-gamma/nvidia-add-modulepath-support.patch
+++ /dev/null
@@ -1,851 +0,0 @@
-From c17e544b271ced65483692103d39ed1188d4ca25 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Tue, 27 Sep 2016 14:30:10 +0200
-Subject: [PATCH xserver v2 5/7] xfree86: Remove redundant ServerIsNotSeat0
- check from xf86CallDriverProbe
-
-If foundScreen is TRUE, then all the code below the removed if
-will not execute until we reach the return foundScreen; at the
-end, so this entire if block is redundant.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- hw/xfree86/common/xf86Bus.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
-index 5b93940..27c6b1b 100644
---- a/hw/xfree86/common/xf86Bus.c
-+++ b/hw/xfree86/common/xf86Bus.c
-@@ -82,8 +82,6 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only)
- if (!xf86DoConfigure && drv->platformProbe != NULL) {
- foundScreen = xf86platformProbeDev(drv);
- }
-- if (ServerIsNotSeat0() && foundScreen)
-- return foundScreen;
- #endif
-
- #ifdef XSERVER_LIBPCIACCESS
---
-2.9.3
-
-From 74bc0fff3a6ca233e56b3fb2971bca97b5a4f8b5 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Fri, 30 Sep 2016 11:59:04 +0200
-Subject: [PATCH xserver v2 6/7] xfree86: Make adding unclaimed devices as GPU
- devices a separate step
-
-This is primarily a preparation patch for fixing the xserver exiting with
-a "no screens found" error even though there are supported video cards,
-due to the server not recognizing any card as the primary card.
-
-This also fixes the (mostly theoretical) case of a platformBus capable
-driver adding a device as GPUscreen before a driver which only supports
-the old PCI probe method gets a chance to claim it as a normal screen.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- hw/xfree86/common/xf86Bus.c | 4 ++++
- hw/xfree86/common/xf86platformBus.c | 15 +++++++++++++++
- hw/xfree86/common/xf86platformBus.h | 6 ++++++
- 3 files changed, 25 insertions(+)
-
-diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
-index 27c6b1b..a3a9898 100644
---- a/hw/xfree86/common/xf86Bus.c
-+++ b/hw/xfree86/common/xf86Bus.c
-@@ -125,6 +125,10 @@ xf86BusConfig(void)
- xf86CallDriverProbe(xf86DriverList[i], FALSE);
- }
-
-+ for (i = 0; i < xf86NumDrivers; i++) {
-+ xf86platformAddGPUDevices(xf86DriverList[i]);
-+ }
-+
- /* If nothing was detected, return now */
- if (xf86NumScreens == 0) {
- xf86Msg(X_ERROR, "No devices detected.\n");
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index 39fb1dd..8dd0d5d 100644
---- a/hw/xfree86/common/xf86platformBus.c
-+++ b/hw/xfree86/common/xf86platformBus.c
-@@ -475,6 +475,21 @@ xf86platformProbeDev(DriverPtr drvp)
- isGPUDevice(devList[i]) ? PLATFORM_PROBE_GPU_SCREEN : 0);
- }
-
-+ return foundScreen;
-+}
-+
-+int
-+xf86platformAddGPUDevices(DriverPtr drvp)
-+{
-+ Bool foundScreen = FALSE;
-+ GDevPtr *devList;
-+ int j;
-+
-+ if (!drvp->platformProbe)
-+ return FALSE;
-+
-+ xf86MatchDevice(drvp->driverName, &devList);
-+
- /* if autoaddgpu devices is enabled then go find any unclaimed platform
- * devices and add them as GPU screens */
- if (xf86Info.autoAddGPU) {
-diff --git a/hw/xfree86/common/xf86platformBus.h b/hw/xfree86/common/xf86platformBus.h
-index a7335b9..0f5c0ef 100644
---- a/hw/xfree86/common/xf86platformBus.h
-+++ b/hw/xfree86/common/xf86platformBus.h
-@@ -41,6 +41,7 @@ struct xf86_platform_device {
- #ifdef XSERVER_PLATFORM_BUS
- int xf86platformProbe(void);
- int xf86platformProbeDev(DriverPtr drvp);
-+int xf86platformAddGPUDevices(DriverPtr drvp);
-
- extern int xf86_num_platform_devices;
- extern struct xf86_platform_device *xf86_platform_devices;
-@@ -156,6 +157,11 @@ xf86PlatformMatchDriver(char *matches[], int nmatches);
-
- extern void xf86platformVTProbe(void);
- extern void xf86platformPrimary(void);
-+
-+#else
-+
-+static inline int xf86platformAddGPUDevices(DriverPtr drvp) { return FALSE; }
-+
- #endif
-
- #endif
---
-2.9.3
-
-From 02bcb6f189c4ad8b2e73ce99cfa3c10f0c244a88 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Fri, 30 Sep 2016 12:29:09 +0200
-Subject: [PATCH xserver v2 7/7] xfree86: Try harder to find atleast 1 non GPU
- Screen
-
-If we did not find any non GPU Screens, try again ignoring the notion
-of any video devices being the primary device. This fixes Xorg exiting
-with a "no screens found" error when using virtio-vga in a
-virtual-machine and when using a device driven by simpledrm.
-
-This is a somewhat ugly solution, but it is the best I can come up with
-without major surgery to the bus and probe code.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- hw/xfree86/common/xf86.h | 1 +
- hw/xfree86/common/xf86Bus.c | 26 +++++++++++++++++++++++---
- hw/xfree86/common/xf86Globals.c | 1 +
- hw/xfree86/common/xf86pciBus.c | 4 ++++
- hw/xfree86/common/xf86platformBus.c | 4 ++++
- 5 files changed, 33 insertions(+), 3 deletions(-)
-
-diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h
-index e54c811..f724688 100644
---- a/hw/xfree86/common/xf86.h
-+++ b/hw/xfree86/common/xf86.h
-@@ -55,6 +55,7 @@
- extern _X_EXPORT int xf86DoConfigure;
- extern _X_EXPORT int xf86DoShowOptions;
- extern _X_EXPORT Bool xf86DoConfigurePass1;
-+extern _X_EXPORT Bool xf86ProbeIgnorePrimary;
- extern _X_EXPORT Bool xorgHWAccess;
-
- extern _X_EXPORT DevPrivateKeyRec xf86ScreenKeyRec;
-diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
-index a3a9898..9836803 100644
---- a/hw/xfree86/common/xf86Bus.c
-+++ b/hw/xfree86/common/xf86Bus.c
-@@ -117,14 +117,34 @@ xf86BusConfig(void)
- int i, j;
-
- /*
-- * Now call each of the Probe functions. Each successful probe will
-- * result in an extra entry added to the xf86Screens[] list for each
-- * instance of the hardware found.
-+ * 3 step probe to (hopefully) ensure that we always find at least 1
-+ * (non GPU) screen:
-+ *
-+ * 1. Call each drivers probe function normally,
-+ * Each successful probe will result in an extra entry added to the
-+ * xf86Screens[] list for each instance of the hardware found.
- */
- for (i = 0; i < xf86NumDrivers; i++) {
- xf86CallDriverProbe(xf86DriverList[i], FALSE);
- }
-
-+ /*
-+ * 2. If no Screens were found, call each drivers probe function with
-+ * ignorePrimary = TRUE, to ensure that we do actually get a
-+ * Screen if there is atleast one supported video card.
-+ */
-+ if (xf86NumScreens == 0) {
-+ xf86ProbeIgnorePrimary = TRUE;
-+ for (i = 0; i < xf86NumDrivers && xf86NumScreens == 0; i++) {
-+ xf86CallDriverProbe(xf86DriverList[i], FALSE);
-+ }
-+ xf86ProbeIgnorePrimary = FALSE;
-+ }
-+
-+ /*
-+ * 3. Call xf86platformAddGPUDevices() to add any additional video cards as
-+ * GPUScreens (GPUScreens are only supported by platformBus drivers).
-+ */
- for (i = 0; i < xf86NumDrivers; i++) {
- xf86platformAddGPUDevices(xf86DriverList[i]);
- }
-diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c
-index 07cfabf..e962b75 100644
---- a/hw/xfree86/common/xf86Globals.c
-+++ b/hw/xfree86/common/xf86Globals.c
-@@ -152,6 +152,7 @@ XF86ConfigPtr xf86configptr = NULL;
- Bool xf86Resetting = FALSE;
- Bool xf86Initialising = FALSE;
- Bool xf86DoConfigure = FALSE;
-+Bool xf86ProbeIgnorePrimary = FALSE;
- Bool xf86DoShowOptions = FALSE;
- DriverPtr *xf86DriverList = NULL;
- int xf86NumDrivers = 0;
-diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
-index 8158c2b..9adfee5 100644
---- a/hw/xfree86/common/xf86pciBus.c
-+++ b/hw/xfree86/common/xf86pciBus.c
-@@ -352,6 +352,10 @@ xf86ComparePciBusString(const char *busID, int bus, int device, int func)
- Bool
- xf86IsPrimaryPci(struct pci_device *pPci)
- {
-+ /* Add max. 1 screen for the IgnorePrimary fallback path */
-+ if (xf86ProbeIgnorePrimary && xf86NumScreens == 0)
-+ return TRUE;
-+
- if (primaryBus.type == BUS_PCI)
- return pPci == primaryBus.id.pci;
- #ifdef XSERVER_PLATFORM_BUS
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index 8dd0d5d..063e81c 100644
---- a/hw/xfree86/common/xf86platformBus.c
-+++ b/hw/xfree86/common/xf86platformBus.c
-@@ -114,6 +114,10 @@ xf86_find_platform_device_by_devnum(int major, int minor)
- static Bool
- xf86IsPrimaryPlatform(struct xf86_platform_device *plat)
- {
-+ /* Add max. 1 screen for the IgnorePrimary fallback path */
-+ if (xf86ProbeIgnorePrimary && xf86NumScreens == 0)
-+ return TRUE;
-+
- if (primaryBus.type == BUS_PLATFORM)
- return plat == primaryBus.id.plat;
- #ifdef XSERVER_LIBPCIACCESS
---
-2.9.3
-
-From c57c1e53ea3d76ebba5b2a23b7260817d3e6b921 Mon Sep 17 00:00:00 2001
-From: Hans De Goede <hdegoede@redhat.com>
-Date: Mon, 12 Dec 2016 17:03:12 +0100
-Subject: [PATCH xserver 1/6] xfree86: Free devlist returned by xf86MatchDevice
-
-xf86MatchDevice returns a dynamically allocated list of GDevPtr-s,
-free this when we're done with it.
-
-Reviewed-by: Adam Jackson <ajax@redhat.com>
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- hw/xfree86/common/xf86platformBus.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index 063e81c..16d934f 100644
---- a/hw/xfree86/common/xf86platformBus.c
-+++ b/hw/xfree86/common/xf86platformBus.c
-@@ -479,6 +479,8 @@ xf86platformProbeDev(DriverPtr drvp)
- isGPUDevice(devList[i]) ? PLATFORM_PROBE_GPU_SCREEN : 0);
- }
-
-+ free(devList);
-+
- return foundScreen;
- }
-
-@@ -505,6 +507,8 @@ xf86platformAddGPUDevices(DriverPtr drvp)
- }
- }
-
-+ free(devList);
-+
- return foundScreen;
- }
-
---
-2.9.3
-
-From 08b84d72878e43401e99059c3c926dfa42a360c3 Mon Sep 17 00:00:00 2001
-From: Hans De Goede <hdegoede@redhat.com>
-Date: Mon, 12 Dec 2016 17:03:13 +0100
-Subject: [PATCH xserver 2/6] xfree86: Make OutputClassMatches take a
- xf86_platform_device
-
-Make OutputClassMatches directly take a xf86_platform_device as argument,
-rather then an index into xf86_platform_devices. This makes things
-easier for callers which already have a xf86_platform_device pointer.
-
-Reviewed-by: Adam Jackson <ajax@redhat.com>
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- hw/xfree86/common/xf86platformBus.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index 16d934f..25a9040 100644
---- a/hw/xfree86/common/xf86platformBus.c
-+++ b/hw/xfree86/common/xf86platformBus.c
-@@ -214,9 +214,10 @@ MatchToken(const char *value, struct xorg_list *patterns,
- }
-
- static Bool
--OutputClassMatches(const XF86ConfOutputClassPtr oclass, int index)
-+OutputClassMatches(const XF86ConfOutputClassPtr oclass,
-+ struct xf86_platform_device *dev)
- {
-- char *driver = xf86_platform_odev_attributes(index)->driver;
-+ char *driver = dev->attribs->driver;
-
- if (!MatchToken(driver, &oclass->match_driver, strcmp))
- return FALSE;
-@@ -234,7 +235,7 @@ xf86OutputClassDriverList(int index, char *matches[], int nmatches)
- return 0;
-
- for (cl = xf86configptr->conf_outputclass_lst; cl; cl = cl->list.next) {
-- if (OutputClassMatches(cl, index)) {
-+ if (OutputClassMatches(cl, &xf86_platform_devices[index])) {
- char *path = xf86_platform_odev_attributes(index)->path;
-
- xf86Msg(X_INFO, "Applying OutputClass \"%s\" to %s\n",
---
-2.9.3
-
-From 9cd3cc75269d9196898487b5712ee47b8291e077 Mon Sep 17 00:00:00 2001
-From: Hans De Goede <hdegoede@redhat.com>
-Date: Mon, 12 Dec 2016 17:03:14 +0100
-Subject: [PATCH xserver 3/6] xfree86: Add options support for OutputClass
- Options
-
-Add support for setting options in OutputClass Sections and having these
-applied to any matching output devices.
-
-Reviewed-by: Adam Jackson <ajax@redhat.com>
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- hw/xfree86/common/xf86Option.c | 5 ++++-
- hw/xfree86/common/xf86platformBus.c | 42 +++++++++++++++++++++++++++++++++++++
- hw/xfree86/common/xf86platformBus.h | 2 ++
- hw/xfree86/man/xorg.conf.man | 10 +++++++++
- hw/xfree86/parser/OutputClass.c | 6 ++++++
- hw/xfree86/parser/xf86Parser.h | 1 +
- 6 files changed, 65 insertions(+), 1 deletion(-)
-
-diff --git a/hw/xfree86/common/xf86Option.c b/hw/xfree86/common/xf86Option.c
-index 0e8bc1f..929724d 100644
---- a/hw/xfree86/common/xf86Option.c
-+++ b/hw/xfree86/common/xf86Option.c
-@@ -44,6 +44,7 @@
- #include "xf86Xinput.h"
- #include "xf86Optrec.h"
- #include "xf86Parser.h"
-+#include "xf86platformBus.h" /* For OutputClass functions */
- #include "optionstr.h"
-
- static Bool ParseOptionValue(int scrnIndex, XF86OptionPtr options,
-@@ -64,7 +65,7 @@ static Bool ParseOptionValue(int scrnIndex, XF86OptionPtr options,
- *
- * The order of precedence for options is:
- *
-- * extraOpts, display, confScreen, monitor, device
-+ * extraOpts, display, confScreen, monitor, device, outputClassOptions
- */
-
- void
-@@ -79,6 +80,8 @@ xf86CollectOptions(ScrnInfoPtr pScrn, XF86OptionPtr extraOpts)
- pScrn->options = NULL;
-
- for (i = pScrn->numEntities - 1; i >= 0; i--) {
-+ xf86MergeOutputClassOptions(pScrn->entityList[i], &pScrn->options);
-+
- device = xf86GetDevFromEntity(pScrn->entityList[i],
- pScrn->entityInstanceList[i]);
- if (device && device->options) {
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index 25a9040..a698c6c 100644
---- a/hw/xfree86/common/xf86platformBus.c
-+++ b/hw/xfree86/common/xf86platformBus.c
-@@ -310,6 +310,48 @@ xf86platformProbe(void)
- return 0;
- }
-
-+void
-+xf86MergeOutputClassOptions(int entityIndex, void **options)
-+{
-+ const EntityPtr entity = xf86Entities[entityIndex];
-+ struct xf86_platform_device *dev = NULL;
-+ XF86ConfOutputClassPtr cl;
-+ XF86OptionPtr classopts;
-+ int i = 0;
-+
-+ switch (entity->bus.type) {
-+ case BUS_PLATFORM:
-+ dev = entity->bus.id.plat;
-+ break;
-+ case BUS_PCI:
-+ for (i = 0; i < xf86_num_platform_devices; i++) {
-+ if (MATCH_PCI_DEVICES(xf86_platform_devices[i].pdev,
-+ entity->bus.id.pci)) {
-+ dev = &xf86_platform_devices[i];
-+ break;
-+ }
-+ }
-+ break;
-+ default:
-+ xf86Msg(X_DEBUG, "xf86MergeOutputClassOptions unsupported bus type %d\n",
-+ entity->bus.type);
-+ }
-+
-+ if (!dev)
-+ return;
-+
-+ for (cl = xf86configptr->conf_outputclass_lst; cl; cl = cl->list.next) {
-+ if (!OutputClassMatches(cl, dev) || !cl->option_lst)
-+ continue;
-+
-+ xf86Msg(X_INFO, "Applying OutputClass \"%s\" options to %s\n",
-+ cl->identifier, dev->attribs->path);
-+
-+ classopts = xf86optionListDup(cl->option_lst);
-+ *options = xf86optionListMerge(*options, classopts);
-+ }
-+}
-+
- static int
- xf86ClaimPlatformSlot(struct xf86_platform_device * d, DriverPtr drvp,
- int chipset, GDevPtr dev, Bool active)
-diff --git a/hw/xfree86/common/xf86platformBus.h b/hw/xfree86/common/xf86platformBus.h
-index 0f5c0ef..70d9ec8 100644
---- a/hw/xfree86/common/xf86platformBus.h
-+++ b/hw/xfree86/common/xf86platformBus.h
-@@ -42,6 +42,7 @@ struct xf86_platform_device {
- int xf86platformProbe(void);
- int xf86platformProbeDev(DriverPtr drvp);
- int xf86platformAddGPUDevices(DriverPtr drvp);
-+void xf86MergeOutputClassOptions(int entityIndex, void **options);
-
- extern int xf86_num_platform_devices;
- extern struct xf86_platform_device *xf86_platform_devices;
-@@ -161,6 +162,7 @@ extern void xf86platformPrimary(void);
- #else
-
- static inline int xf86platformAddGPUDevices(DriverPtr drvp) { return FALSE; }
-+static inline void xf86MergeOutputClassOptions(int index, void **options) {}
-
- #endif
-
-diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man
-index 7d0c524..8928a53 100644
---- a/hw/xfree86/man/xorg.conf.man
-+++ b/hw/xfree86/man/xorg.conf.man
-@@ -1280,6 +1280,16 @@ For example:
- Check the case-sensitive string
- .RI \*q matchdriver \*q
- against the kernel driver of the device.
-+.PP
-+When an output device has been matched to the
-+.B OutputClass
-+section, any
-+.B Option
-+entries are applied to the device. See the
-+.B Device
-+section below for a description of the remaining
-+.B Option
-+entries.
- .SH "DEVICE SECTION"
- The config file may have multiple
- .B Device
-diff --git a/hw/xfree86/parser/OutputClass.c b/hw/xfree86/parser/OutputClass.c
-index 8064e0c..f813ee6 100644
---- a/hw/xfree86/parser/OutputClass.c
-+++ b/hw/xfree86/parser/OutputClass.c
-@@ -36,6 +36,7 @@ static const xf86ConfigSymTabRec OutputClassTab[] = {
- {ENDSECTION, "endsection"},
- {IDENTIFIER, "identifier"},
- {DRIVER, "driver"},
-+ {OPTION, "option"},
- {MATCH_DRIVER, "matchdriver"},
- {-1, ""},
- };
-@@ -60,6 +61,8 @@ xf86freeOutputClassList(XF86ConfOutputClassPtr ptr)
- free(group);
- }
-
-+ xf86optionListFree(ptr->option_lst);
-+
- prev = ptr;
- ptr = ptr->list.next;
- free(prev);
-@@ -112,6 +115,9 @@ xf86parseOutputClassSection(void)
- else
- ptr->driver = xf86_lex_val.str;
- break;
-+ case OPTION:
-+ ptr->option_lst = xf86parseOption(ptr->option_lst);
-+ break;
- case MATCH_DRIVER:
- if (xf86getSubToken(&(ptr->comment)) != STRING)
- Error(QUOTE_MSG, "MatchDriver");
-diff --git a/hw/xfree86/parser/xf86Parser.h b/hw/xfree86/parser/xf86Parser.h
-index 9c4b403..897edab 100644
---- a/hw/xfree86/parser/xf86Parser.h
-+++ b/hw/xfree86/parser/xf86Parser.h
-@@ -338,6 +338,7 @@ typedef struct {
- char *identifier;
- char *driver;
- struct xorg_list match_driver;
-+ XF86OptionPtr option_lst;
- char *comment;
- } XF86ConfOutputClassRec, *XF86ConfOutputClassPtr;
-
---
-2.9.3
-
-From ab1a65b7755d081b41188104b21f4d21eaa3187b Mon Sep 17 00:00:00 2001
-From: Hans De Goede <hdegoede@redhat.com>
-Date: Mon, 12 Dec 2016 17:03:15 +0100
-Subject: [PATCH xserver 4/6] xfree86: xf86platformProbe: split finding
- pci-info and setting primary GPU
-
-This is a preparation patch for allowing an OutputClass section to
-override the default primary GPU device selection.
-
-Reviewed-by: Adam Jackson <ajax@redhat.com>
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- hw/xfree86/common/xf86platformBus.c | 23 +++++++++++++++--------
- 1 file changed, 15 insertions(+), 8 deletions(-)
-
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index a698c6c..39b3248 100644
---- a/hw/xfree86/common/xf86platformBus.c
-+++ b/hw/xfree86/common/xf86platformBus.c
-@@ -145,16 +145,9 @@ platform_find_pci_info(struct xf86_platform_device *pd, char *busid)
-
- iter = pci_slot_match_iterator_create(&devmatch);
- info = pci_device_next(iter);
-- if (info) {
-+ if (info)
- pd->pdev = info;
-- pci_device_probe(info);
-- if (pci_device_is_boot_vga(info)) {
-- primaryBus.type = BUS_PLATFORM;
-- primaryBus.id.plat = pd;
-- }
-- }
- pci_iterator_destroy(iter);
--
- }
-
- static Bool
-@@ -307,6 +300,20 @@ xf86platformProbe(void)
- platform_find_pci_info(&xf86_platform_devices[i], busid);
- }
- }
-+
-+ for (i = 0; i < xf86_num_platform_devices; i++) {
-+ struct xf86_platform_device *dev = &xf86_platform_devices[i];
-+
-+ if (!dev->pdev)
-+ continue;
-+
-+ pci_device_probe(dev->pdev);
-+ if (pci_device_is_boot_vga(dev->pdev)) {
-+ primaryBus.type = BUS_PLATFORM;
-+ primaryBus.id.plat = dev;
-+ }
-+ }
-+
- return 0;
- }
-
---
-2.9.3
-
-From d75ffcdbf8c1e3c8e0d46debcd533a9f2560f0a8 Mon Sep 17 00:00:00 2001
-From: Hans De Goede <hdegoede@redhat.com>
-Date: Mon, 12 Dec 2016 17:03:16 +0100
-Subject: [PATCH xserver 5/6] xfree86: Allow overriding primary GPU detection
- from an OutputClass section
-
-Allow using:
-
-Option "PrimaryGPU" "yes"
-
-In an OutputClass section to override the default primary GPU device
-selection which selects the GPU used as output by the firmware.
-
-If multiple output devices match an OutputClass section with
-the PrimaryGPU option set, the first one enumerated becomes the
-primary GPU.
-
-Reviewed-by: Adam Jackson <ajax@redhat.com>
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- hw/xfree86/common/xf86platformBus.c | 19 +++++++++++++++++++
- hw/xfree86/man/xorg.conf.man | 12 +++++++++++-
- 2 files changed, 30 insertions(+), 1 deletion(-)
-
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index 39b3248..fc17d15 100644
---- a/hw/xfree86/common/xf86platformBus.c
-+++ b/hw/xfree86/common/xf86platformBus.c
-@@ -286,6 +286,7 @@ xf86platformProbe(void)
- {
- int i;
- Bool pci = TRUE;
-+ XF86ConfOutputClassPtr cl;
-
- config_odev_probe(xf86PlatformDeviceProbe);
-
-@@ -301,6 +302,24 @@ xf86platformProbe(void)
- }
- }
-
-+ /* First see if there is an OutputClass match marking a device as primary */
-+ for (i = 0; i < xf86_num_platform_devices; i++) {
-+ struct xf86_platform_device *dev = &xf86_platform_devices[i];
-+ for (cl = xf86configptr->conf_outputclass_lst; cl; cl = cl->list.next) {
-+ if (!OutputClassMatches(cl, dev))
-+ continue;
-+
-+ if (xf86CheckBoolOption(cl->option_lst, "PrimaryGPU", FALSE)) {
-+ xf86Msg(X_CONFIG, "OutputClass \"%s\" setting %s as PrimaryGPU\n",
-+ cl->identifier, dev->attribs->path);
-+ primaryBus.type = BUS_PLATFORM;
-+ primaryBus.id.plat = dev;
-+ return 0;
-+ }
-+ }
-+ }
-+
-+ /* Then check for pci_device_is_boot_vga() */
- for (i = 0; i < xf86_num_platform_devices; i++) {
- struct xf86_platform_device *dev = &xf86_platform_devices[i];
-
-diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man
-index 8928a53..79b71a8 100644
---- a/hw/xfree86/man/xorg.conf.man
-+++ b/hw/xfree86/man/xorg.conf.man
-@@ -1285,11 +1285,21 @@ When an output device has been matched to the
- .B OutputClass
- section, any
- .B Option
--entries are applied to the device. See the
-+entries are applied to the device. One
-+.B OutputClass
-+specific
-+.B Option
-+is recognized. See the
- .B Device
- section below for a description of the remaining
- .B Option
- entries.
-+.TP 7
-+.BI "Option \*qPrimaryGPU\*q \*q" boolean \*q
-+This option specifies that the matched device should be treated as the
-+primary GPU, replacing the selection of the GPU used as output by the
-+firmware. If multiple output devices match an OutputClass section with
-+the PrimaryGPU option set, the first one enumerated becomes the primary GPU.
- .SH "DEVICE SECTION"
- The config file may have multiple
- .B Device
---
-2.9.3
-
-From b5dffbbac193aa640ffcfa0a431c21b862854e53 Mon Sep 17 00:00:00 2001
-From: Hans De Goede <hdegoede@redhat.com>
-Date: Mon, 12 Dec 2016 17:03:17 +0100
-Subject: [PATCH xserver 6/6] xfree86: Add ModulePath support for OutputClass
- config Sections
-
-Allow OutputClass config snippets to modify the module-path.
-
-Note that any specified ModulePaths will be pre-pended to the normal
-ModulePath. The idea behind this is that any output hardware specific
-modules should have preference over the normal modules.
-
-One use-case for this is the nvidia binary driver, this allows a
-config snippet like this:
-
-Section "OutputClass"
- MatchDriver "nvidia"
- Modulepath "/usr/lib64/nvidia/modules"
-EndSection
-
-To get the nvidia glx specific glx module loaded, but only when the
-nvidia kernel driver is loaded.
-
-Together with the glvnd work done recently, this allows the nouveau
-+ mesa and nvidia-binary userspace stacks to co-exist on the same
-system without any ldconfig / xorg.conf tweaking and the xserver will
-automatically do the right thing depending on which kernel driver
-(nouveau or nvidia) is loaded.
-
-Reviewed-by: Adam Jackson <ajax@redhat.com>
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- hw/xfree86/common/xf86platformBus.c | 23 +++++++++++++++++++++++
- hw/xfree86/loader/loadmod.c | 1 +
- hw/xfree86/man/xorg.conf.man | 16 ++++++++++++++++
- hw/xfree86/parser/OutputClass.c | 15 +++++++++++++++
- hw/xfree86/parser/xf86Parser.h | 1 +
- 5 files changed, 56 insertions(+)
-
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index fc17d15..0b5795f 100644
---- a/hw/xfree86/common/xf86platformBus.c
-+++ b/hw/xfree86/common/xf86platformBus.c
-@@ -40,6 +40,7 @@
- #include "hotplug.h"
- #include "systemd-logind.h"
-
-+#include "loaderProcs.h"
- #include "xf86.h"
- #include "xf86_OSproc.h"
- #include "xf86Priv.h"
-@@ -287,6 +288,7 @@ xf86platformProbe(void)
- int i;
- Bool pci = TRUE;
- XF86ConfOutputClassPtr cl;
-+ char *old_path, *path = NULL;
-
- config_odev_probe(xf86PlatformDeviceProbe);
-
-@@ -300,8 +302,29 @@ xf86platformProbe(void)
- if (pci && (strncmp(busid, "pci:", 4) == 0)) {
- platform_find_pci_info(&xf86_platform_devices[i], busid);
- }
-+
-+ /*
-+ * Deal with OutputClass ModulePath directives, these must be
-+ * processed before we do any module loading.
-+ */
-+ for (cl = xf86configptr->conf_outputclass_lst; cl; cl = cl->list.next) {
-+ if (!OutputClassMatches(cl, &xf86_platform_devices[i]))
-+ continue;
-+
-+ if (cl->modulepath && xf86ModPathFrom != X_CMDLINE) {
-+ old_path = path;
-+ XNFasprintf(&path, "%s,%s", cl->modulepath,
-+ path ? path : xf86ModulePath);
-+ free(old_path);
-+ xf86Msg(X_CONFIG, "OutputClass \"%s\" ModulePath extended to \"%s\"\n",
-+ cl->identifier, path);
-+ LoaderSetPath(path);
-+ }
-+ }
- }
-
-+ free(path);
-+
- /* First see if there is an OutputClass match marking a device as primary */
- for (i = 0; i < xf86_num_platform_devices; i++) {
- struct xf86_platform_device *dev = &xf86_platform_devices[i];
-diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c
-index 8bf6836..940f5fc 100644
---- a/hw/xfree86/loader/loadmod.c
-+++ b/hw/xfree86/loader/loadmod.c
-@@ -184,6 +184,7 @@ LoaderSetPath(const char *path)
- if (!path)
- return;
-
-+ FreeStringList(defaultPathList);
- defaultPathList = InitPathList(path);
- }
-
-diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man
-index 79b71a8..00ebf56 100644
---- a/hw/xfree86/man/xorg.conf.man
-+++ b/hw/xfree86/man/xorg.conf.man
-@@ -1300,6 +1300,22 @@ This option specifies that the matched device should be treated as the
- primary GPU, replacing the selection of the GPU used as output by the
- firmware. If multiple output devices match an OutputClass section with
- the PrimaryGPU option set, the first one enumerated becomes the primary GPU.
-+.PP
-+A
-+.B OutputClass
-+Section may contain
-+.B ModulePath
-+entries. When an output device matches an
-+.B OutputClass
-+section, any
-+.B ModulePath
-+entries in that
-+.B OutputClass
-+are pre-pended to the search path for loadable Xorg server modules. See
-+.B ModulePath
-+in the
-+.B Files
-+section for more info.
- .SH "DEVICE SECTION"
- The config file may have multiple
- .B Device
-diff --git a/hw/xfree86/parser/OutputClass.c b/hw/xfree86/parser/OutputClass.c
-index f813ee6..01b348f 100644
---- a/hw/xfree86/parser/OutputClass.c
-+++ b/hw/xfree86/parser/OutputClass.c
-@@ -36,6 +36,7 @@ static const xf86ConfigSymTabRec OutputClassTab[] = {
- {ENDSECTION, "endsection"},
- {IDENTIFIER, "identifier"},
- {DRIVER, "driver"},
-+ {MODULEPATH, "modulepath"},
- {OPTION, "option"},
- {MATCH_DRIVER, "matchdriver"},
- {-1, ""},
-@@ -53,6 +54,7 @@ xf86freeOutputClassList(XF86ConfOutputClassPtr ptr)
- TestFree(ptr->identifier);
- TestFree(ptr->comment);
- TestFree(ptr->driver);
-+ TestFree(ptr->modulepath);
-
- xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) {
- xorg_list_del(&group->entry);
-@@ -115,6 +117,19 @@ xf86parseOutputClassSection(void)
- else
- ptr->driver = xf86_lex_val.str;
- break;
-+ case MODULEPATH:
-+ if (xf86getSubToken(&(ptr->comment)) != STRING)
-+ Error(QUOTE_MSG, "ModulePath");
-+ if (ptr->modulepath) {
-+ char *path;
-+ XNFasprintf(&path, "%s,%s", ptr->modulepath, xf86_lex_val.str);
-+ free(xf86_lex_val.str);
-+ free(ptr->modulepath);
-+ ptr->modulepath = path;
-+ } else {
-+ ptr->modulepath = xf86_lex_val.str;
-+ }
-+ break;
- case OPTION:
- ptr->option_lst = xf86parseOption(ptr->option_lst);
- break;
-diff --git a/hw/xfree86/parser/xf86Parser.h b/hw/xfree86/parser/xf86Parser.h
-index 897edab..e014048 100644
---- a/hw/xfree86/parser/xf86Parser.h
-+++ b/hw/xfree86/parser/xf86Parser.h
-@@ -337,6 +337,7 @@ typedef struct {
- GenericListRec list;
- char *identifier;
- char *driver;
-+ char *modulepath;
- struct xorg_list match_driver;
- XF86OptionPtr option_lst;
- char *comment;
---
-2.9.3
-
diff --git a/xorg-server-hwcursor-gamma/upload b/xorg-server-hwcursor-gamma/upload
deleted file mode 120000
index 1e7a8be..0000000
--- a/xorg-server-hwcursor-gamma/upload
+++ /dev/null
@@ -1 +0,0 @@
-../upload \ No newline at end of file
diff --git a/xorg-server-hwcursor-gamma/watch b/xorg-server-hwcursor-gamma/watch
deleted file mode 100755
index ec1e783..0000000
--- a/xorg-server-hwcursor-gamma/watch
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-[ -f 'PKGBUILD?h=packages%2Fxorg-server' ] && rm 'PKGBUILD?h=packages%2Fxorg-server'
-
-wget 'https://projects.archlinux.org/svntogit/packages.git/plain/trunk/PKGBUILD?h=packages/xorg-server' >/dev/null 2>/dev/null
-
-mv 'PKGBUILD?h=packages%2Fxorg-server' PKGBUILD.upstream.new
-
-if [ $? = 0 ]; then
- [ -f unfetchable ] && rm unfetchable
- grep ^pkg < PKGBUILD.upstream.new | md5sum > new-sum
- touch sum
- if [ "$(cat sum)" = "$(cat new-sum)" ]; then
- rm new-sum
- else
- mv new-sum sum
- diff PKGBUILD.upstream.{old,new} > PKGBUILD.upstream.diff
- mv PKGBUILD.upstream.{new,old}
- echo 'xorg-server-hwcursor-gamma'
- fi
-elif [ ! -f unfetchable ]; then
- touch unfetchable
- echo 'xorg-server-hwcursor-gamma (unfetchable)'
-fi
-
diff --git a/xorg-server-hwcursor-gamma/xserver-autobind-hotplug.patch b/xorg-server-hwcursor-gamma/xserver-autobind-hotplug.patch
deleted file mode 100644
index 8025cbd..0000000
--- a/xorg-server-hwcursor-gamma/xserver-autobind-hotplug.patch
+++ /dev/null
@@ -1,302 +0,0 @@
-From 4471df41ea6e94834a2b10643ca7fcd69682d276 Mon Sep 17 00:00:00 2001
-From: Dave Airlie <airlied@redhat.com>
-Date: Fri, 17 Aug 2012 09:49:24 +1000
-Subject: [PATCH xserver v3] 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>
----
-Changes in v2:
--Make the default enabled instead of installing a xorg.conf
- snippet which enables it unconditionally
-Changes in v3:
--Handle GPUScreen autoconfig in randr/rrprovider.c, looking at
- rrScrPriv->provider, rather then in hw/xfree86/modes/xf86Crtc.c
- looking at xf86CrtcConfig->provider. This fixes the autoconfig not
- working with the nvidia binary driver
----
- 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 21daf1a..df3ca50 100644
---- a/hw/xfree86/common/xf86Config.c
-+++ b/hw/xfree86/common/xf86Config.c
-@@ -719,6 +719,7 @@ typedef enum {
- FLAG_DRI2,
- FLAG_USE_SIGIO,
- FLAG_AUTO_ADD_GPU,
-+ FLAG_AUTO_BIND_GPU,
- FLAG_MAX_CLIENTS,
- FLAG_IGLX,
- } FlagValues;
-@@ -778,6 +779,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,
-@@ -857,6 +860,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 e962b75..0d1e31b 100644
---- a/hw/xfree86/common/xf86Globals.c
-+++ b/hw/xfree86/common/xf86Globals.c
-@@ -136,6 +136,7 @@ xf86InfoRec xf86Info = {
- #else
- .autoAddGPU = FALSE,
- #endif
-+ .autoBindGPU = TRUE,
- };
-
- const char *xf86ConfigFile = NULL;
-@@ -197,6 +198,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 a544b65..b0cba3d 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 "xf86Bus.h"
-@@ -298,6 +299,19 @@ xf86PrivsElevated(void)
- }
-
- 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
- InstallSignalHandlers(void)
- {
- /*
-@@ -871,6 +885,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();
-@@ -1389,6 +1405,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 c1f8a18..9a3d0df 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 c29b3cc..4c5f54b 100644
---- a/hw/xfree86/common/xf86Privstr.h
-+++ b/hw/xfree86/common/xf86Privstr.h
-@@ -102,6 +102,7 @@ typedef struct {
- MessageType dri2From;
-
- Bool autoAddGPU;
-+ Bool autoBindGPU;
- } xf86InfoRec, *xf86InfoPtr;
-
- #ifdef DPMSExtension
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index 063e81c..42789ca 100644
---- a/hw/xfree86/common/xf86platformBus.c
-+++ b/hw/xfree86/common/xf86platformBus.c
-@@ -48,6 +48,7 @@
- #include "Pci.h"
- #include "xf86platformBus.h"
- #include "xf86Config.h"
-+#include "xf86Crtc.h"
-
- #include "randrstr.h"
- int platformSlotClaimed;
-@@ -579,6 +580,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 def9bfc..8df6b7d 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 7d0c524..3e596e4 100644
---- a/hw/xfree86/man/xorg.conf.man
-+++ b/hw/xfree86/man/xorg.conf.man
-@@ -673,6 +673,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 706e9a7..66999d5 100644
---- a/randr/randrstr.h
-+++ b/randr/randrstr.h
-@@ -976,6 +976,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 f9df67e..abc5685 100644
---- a/randr/rrprovider.c
-+++ b/randr/rrprovider.c
-@@ -482,3 +482,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.9.3
-
diff --git a/xorg-server-hwcursor-gamma/xvfb-run b/xorg-server-hwcursor-gamma/xvfb-run
deleted file mode 100644
index 4c2f4e0..0000000
--- a/xorg-server-hwcursor-gamma/xvfb-run
+++ /dev/null
@@ -1,180 +0,0 @@
-#!/bin/sh
-
-# $Id: xvfb-run 2027 2004-11-16 14:54:16Z branden $
-
-# This script starts an instance of Xvfb, the "fake" X server, runs a command
-# with that server available, and kills the X server when done. The return
-# value of the command becomes the return value of this script.
-#
-# If anyone is using this to build a Debian package, make sure the package
-# Build-Depends on xvfb, xbase-clients, and xfonts-base.
-
-set -e
-
-PROGNAME=xvfb-run
-SERVERNUM=99
-AUTHFILE=
-ERRORFILE=/dev/null
-STARTWAIT=3
-XVFBARGS="-screen 0 640x480x8"
-LISTENTCP="-nolisten tcp"
-XAUTHPROTO=.
-
-# Query the terminal to establish a default number of columns to use for
-# displaying messages to the user. This is used only as a fallback in the event
-# the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while the
-# script is running, and this cannot, only being calculated once.)
-DEFCOLUMNS=$(stty size 2>/dev/null | awk '{print $2}') || true
-if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" >/dev/null 2>&1; then
- DEFCOLUMNS=80
-fi
-
-# Display a message, wrapping lines at the terminal width.
-message () {
- echo "$PROGNAME: $*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS}
-}
-
-# Display an error message.
-error () {
- message "error: $*" >&2
-}
-
-# Display a usage message.
-usage () {
- if [ -n "$*" ]; then
- message "usage error: $*"
- fi
- cat <<EOF
-Usage: $PROGNAME [OPTION ...] COMMAND
-Run COMMAND (usually an X client) in a virtual X server environment.
-Options:
--a --auto-servernum try to get a free server number, starting at
- --server-num
--e FILE --error-file=FILE file used to store xauth errors and Xvfb
- output (default: $ERRORFILE)
--f FILE --auth-file=FILE file used to store auth cookie
- (default: ./.Xauthority)
--h --help display this usage message and exit
--n NUM --server-num=NUM server number to use (default: $SERVERNUM)
--l --listen-tcp enable TCP port listening in the X server
--p PROTO --xauth-protocol=PROTO X authority protocol name to use
- (default: xauth command's default)
--s ARGS --server-args=ARGS arguments (other than server number and
- "-nolisten tcp") to pass to the Xvfb server
- (default: "$XVFBARGS")
--w DELAY --wait=DELAY delay in seconds to wait for Xvfb to start
- before running COMMAND (default: $STARTWAIT)
-EOF
-}
-
-# Find a free server number by looking at .X*-lock files in /tmp.
-find_free_servernum() {
- # Sadly, the "local" keyword is not POSIX. Leave the next line commented in
- # the hope Debian Policy eventually changes to allow it in /bin/sh scripts
- # anyway.
- #local i
-
- i=$SERVERNUM
- while [ -f /tmp/.X$i-lock ]; do
- i=$(($i + 1))
- done
- echo $i
-}
-
-# Clean up files
-clean_up() {
- if [ -e "$AUTHFILE" ]; then
- XAUTHORITY=$AUTHFILE xauth remove ":$SERVERNUM" >>"$ERRORFILE" 2>&1
- fi
- if [ -n "$XVFB_RUN_TMPDIR" ]; then
- if ! rm -r "$XVFB_RUN_TMPDIR"; then
- error "problem while cleaning up temporary directory"
- exit 5
- fi
- fi
-}
-
-# Parse the command line.
-ARGS=$(getopt --options +ae:f:hn:lp:s:w: \
- --long auto-servernum,error-file:,auth-file:,help,server-num:,listen-tcp,xauth-protocol:,server-args:,wait: \
- --name "$PROGNAME" -- "$@")
-GETOPT_STATUS=$?
-
-if [ $GETOPT_STATUS -ne 0 ]; then
- error "internal error; getopt exited with status $GETOPT_STATUS"
- exit 6
-fi
-
-eval set -- "$ARGS"
-
-while :; do
- case "$1" in
- -a|--auto-servernum) SERVERNUM=$(find_free_servernum) ;;
- -e|--error-file) ERRORFILE="$2"; shift ;;
- -f|--auth-file) AUTHFILE="$2"; shift ;;
- -h|--help) SHOWHELP="yes" ;;
- -n|--server-num) SERVERNUM="$2"; shift ;;
- -l|--listen-tcp) LISTENTCP="" ;;
- -p|--xauth-protocol) XAUTHPROTO="$2"; shift ;;
- -s|--server-args) XVFBARGS="$2"; shift ;;
- -w|--wait) STARTWAIT="$2"; shift ;;
- --) shift; break ;;
- *) error "internal error; getopt permitted \"$1\" unexpectedly"
- exit 6
- ;;
- esac
- shift
-done
-
-if [ "$SHOWHELP" ]; then
- usage
- exit 0
-fi
-
-if [ -z "$*" ]; then
- usage "need a command to run" >&2
- exit 2
-fi
-
-if ! which xauth >/dev/null; then
- error "xauth command not found"
- exit 3
-fi
-
-# tidy up after ourselves
-trap clean_up EXIT
-
-# If the user did not specify an X authorization file to use, set up a temporary
-# directory to house one.
-if [ -z "$AUTHFILE" ]; then
- XVFB_RUN_TMPDIR="$(mktemp -d -t $PROGNAME.XXXXXX)"
- AUTHFILE="$XVFB_RUN_TMPDIR/Xauthority"
-fi
-
-# Start Xvfb.
-MCOOKIE=$(mcookie)
-XAUTHORITY=$AUTHFILE xauth source - << EOF >>"$ERRORFILE" 2>&1
-add :$SERVERNUM $XAUTHPROTO $MCOOKIE
-EOF
-XAUTHORITY=$AUTHFILE Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP >>"$ERRORFILE" \
- 2>&1 &
-XVFBPID=$!
-sleep "$STARTWAIT"
-if ! kill -0 $XVFBPID 2>/dev/null; then
- echo "Xvfb failed to start" >&2
- exit 1
-fi
-
-# Start the command and save its exit status.
-set +e
-DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 2>&1
-RETVAL=$?
-set -e
-
-# Kill Xvfb now that the command has exited.
-kill $XVFBPID
-
-# Return the executed command's exit status.
-exit $RETVAL
-
-# vim:set ai et sts=4 sw=4 tw=80:
diff --git a/xorg-server-hwcursor-gamma/xvfb-run.1 b/xorg-server-hwcursor-gamma/xvfb-run.1
deleted file mode 100644
index 137d3a1..0000000
--- a/xorg-server-hwcursor-gamma/xvfb-run.1
+++ /dev/null
@@ -1,282 +0,0 @@
-.\" $Id: xvfb-run.1 2138 2005-01-17 23:40:27Z branden $
-.\"
-.\" Copyright 1998-2004 Branden Robinson <branden@debian.org>.
-.\"
-.\" This is free software; you may redistribute it and/or modify
-.\" it under the terms of the GNU General Public License as
-.\" published by the Free Software Foundation; either version 2,
-.\" or (at your option) any later version.
-.\"
-.\" This is distributed in the hope that it will be useful, but
-.\" WITHOUT ANY WARRANTY; without even the implied warranty of
-.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-.\" GNU General Public License for more details.
-.\"
-.\" You should have received a copy of the GNU General Public License with
-.\" the Debian operating system, in /usr/share/common-licenses/GPL; if
-.\" not, write to the Free Software Foundation, Inc., 59 Temple Place,
-.\" Suite 330, Boston, MA 02111-1307 USA
-.\"
-.\" We need the URL macro from groff's www macro package, but also want
-.\" things to work all right for people who don't have it. So we define
-.\" our own URL macro and let the www macro package override it if it's
-.\" available.
-.de URL
-\\$2 \(laURL: \\$1 \(ra\\$3
-..
-.if \n[.g] .mso www.tmac
-.TH xvfb\-run 1 "2004\-11\-12" "Debian Project"
-.SH NAME
-xvfb\-run \- run specified X client or command in a virtual X server environment
-.SH SYNOPSIS
-.B xvfb\-run
-[
-.I options
-]
-.I command
-.SH DESCRIPTION
-.B xvfb\-run
-is a wrapper for the
-.BR Xvfb (1x)
-command which simplifies the task of running commands (typically an X
-client, or a script containing a list of clients to be run) within a virtual
-X server environment.
-.PP
-.B xvfb\-run
-sets up an X authority file (or uses an existing user\-specified one),
-writes a cookie to it (see
-.BR xauth (1x))
-and then starts the
-.B Xvfb
-X server as a background process.
-The process ID of
-.B Xvfb
-is stored for later use.
-The specified
-.I command
-is then run using the X display corresponding to the
-.B Xvfb
-server
-just started and the X authority file created earlier.
-.PP
-When the
-.I command
-exits, its status is saved, the
-.B Xvfb
-server is killed (using the process ID stored earlier), the X authority
-cookie removed, and the authority file deleted (if the user did not specify
-one to use).
-.B xvfb\-run
-then exits with the exit status of
-.IR command .
-.PP
-.B xvfb\-run
-requires the
-.B xauth
-command to function.
-.SH OPTIONS
-.TP
-.B \-a\fR,\fB \-\-auto\-servernum
-Try to get a free server number, starting at 99, or the argument to
-.BR \-\-server\-num .
-.TP
-.BI \-e\ file \fR,\fB\ \-\-error\-file= file
-Store output from
-.B xauth
-and
-.B Xvfb
-in
-.IR file .
-The default is
-.IR /dev/null .
-.TP
-.BI \-f\ file \fR,\fB\ \-\-auth\-file= file
-Store X authentication data in
-.IR file .
-By default, a temporary directory called
-.IR xvfb\-run. PID
-(where PID is the process ID of
-.B xvfb\-run
-itself) is created in the directory specified by the environment variable
-.B TMPDIR
-(or
-.I /tmp
-if that variable is null or unset), and the
-.BR tempfile (1)
-command is used to create a file in that temporary directory called
-.IR Xauthority .
-.TP
-.B \-h\fR,\fB \-\-help
-Display a usage message and exit.
-.TP
-.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber
-Use
-.I servernumber
-as the server number (but see the
-.B \-a\fR,\fB \-\-auto\-servernum
-option above).
-The default is 99.
-.TP
-.B \-l\fR,\fB \-\-listen\-tcp
-Enable TCP port listening in the X server.
-For security reasons (to avoid denial\-of\-service attacks or exploits),
-TCP port listening is disabled by default.
-.TP
-.BI \-p\ protocolname \fR,\fB\ \-\-xauth\-protocol= protocolname
-Use
-.I protocolname
-as the X authority protocol to use.
-The default is \(oq.\(cq, which
-.B xauth
-interprets as its own default protocol, which is MIT\-MAGIC\-COOKIE\-1.
-.TP
-.BI \-s\ arguments \fR,\fB\ \-\-server\-args= arguments
-Pass
-.I arguments
-to the
-.B Xvfb
-server.
-Be careful to quote any whitespace characters that may occur within
-.I arguments
-to prevent them from regarded as separators for
-.BR xvfb\-run 's
-own arguments.
-Also, note that specification of \(oq\-nolisten tcp\(cq in
-.I arguments
-may override the function of
-.BR xvfb\-run 's
-own
-.B \-l\fR,\fB \-\-listen\-tcp
-option, and that specification of the server number (e.g., \(oq:1\(cq) may
-be ignored because of the way the X server parses its argument list.
-Use the
-.B xvfb\-run
-option
-.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber
-to achieve the latter function.
-The default is \(oq\-screen 0 640x480x8\(cq.
-.TP
-.BI \-w\ delay \fR,\fB\ \-\-wait= delay
-Wait
-.I delay
-seconds after launching
-.B Xvfb
-before attempting to start the specified command.
-The default is 3.
-.SH ENVIRONMENT
-.TP
-.B COLUMNS
-indicates the width of the terminal device in character cells.
-This value is used for formatting diagnostic messages.
-If not set, the terminal is queried using
-.BR stty (1)
-to determine its width.
-If that fails, a value of \(oq80\(cq is assumed.
-.TP
-.B TMPDIR
-specifies the directory in which to place
-.BR xvfb\-run 's
-temporary directory for storage of the X authority file; only used if the
-.B \-f
-or
-.B \-\-auth\-file
-options are not specified.
-.SH "OUTPUT FILES"
-.PP
-Unless the
-.B \-f
-or
-.B \-\-auth\-file
-options are specified, a temporary
-directory and file within it are created (and deleted) to store the X
-authority cookies used by the
-.B Xvfb
-server and client(s) run under it.
-See
-.BR tempfile (1).
-If \-f or \-\-auth\-file are used, then the specified X authority file is
-only written to, not created or deleted (though
-.B xauth
-creates an authority file itself if told to use use that does not already
-exist).
-.PP
-An error file with a user\-specified name is also created if the
-.B \-e
-or
-.B \-\-error\-file
-options are specifed; see above.
-.SH "EXIT STATUS"
-.B xvfb\-run
-uses its exit status as well as output to standard error to communicate
-diagnostics.
-The exit status of \(oq1\(cq is not used, and should be interpreted as failure
-of the specified command.
-.TP
-0
-.B xvfb\-run
-only uses this exit status if the
-.B \-h\fR,\fB \-\-help
-option is given.
-In all other situations, this may be interpreted as success of the specified
-command.
-.TP
-2
-No command to run was specified.
-.TP
-3
-The
-.B xauth
-command is not available.
-.TP
-4
-The temporary directory that was going to be used already exists; since
-.B xvfb\-run
-produces a uniquely named directory, this may indicate an attempt by another
-process on the system to exploit a temporary file race condition.
-.TP
-5
-A problem was encountered while cleaning up the temporary directory.
-.TP
-6
-A problem was encountered while using
-.BR getopt (1)
-to parse the command\-line arguments.
-.SH EXAMPLES
-.TP
-.B xvfb\-run \-\-auto\-servernum \-\-server\-num=1 xlogo
-runs the
-.BR xlogo (1x)
-demonstration client inside the
-.B Xvfb
-X server on the first available server number greater than or equal to 1.
-.TP
-.B xvfb\-run \-\-server\-args="\-screen 0 1024x768x24" ico \-faces
-runs the
-.BR ico (1x)
-demonstration client (and passes it the
-.B \-faces
-argument) inside the
-.B Xvfb
-X server, configured with a root window of 1024 by 768 pixels and a color
-depth of 24 bits.
-.PP
-Note that the demo X clients used in the above examples will not exit on
-their own, so they will have to be killed before
-.B xvfb\-run
-will exit.
-.SH BUGS
-See
-.URL "http://bugs.debian.org/xvfb" "the Debian Bug Tracking System" .
-If you wish to report a bug in
-.BR xvfb\-run ,
-please use the
-.BR reportbug (1)
-command.
-.SH AUTHOR
-.B xfvb\-run
-was written by Branden Robinson and Jeff Licquia with sponsorship from
-Progeny Linux Systems.
-.SH "SEE ALSO"
-.BR Xvfb (1x),
-.BR xauth (1x)
-.\" vim:set et tw=80: