diff options
-rw-r--r-- | metadata/md5-cache/x11-base/xorg-server-1.20.13-r100 | 18 | ||||
-rw-r--r-- | metadata/md5-cache/x11-base/xorg-server-21.1.1-r100 | 18 | ||||
-rw-r--r-- | metadata/pkg_desc_index | 2 | ||||
-rw-r--r-- | x11-base/xorg-server/Manifest | 2 | ||||
-rw-r--r-- | x11-base/xorg-server/files/xorg-server-21.1.1-DPI-revert.patch | 133 | ||||
-rw-r--r-- | x11-base/xorg-server/files/xserver-autobind-hotplug.patch | 293 | ||||
-rw-r--r-- | x11-base/xorg-server/xorg-server-21.1.1-r100.ebuild (renamed from x11-base/xorg-server/xorg-server-1.20.13-r100.ebuild) | 150 |
7 files changed, 208 insertions, 408 deletions
diff --git a/metadata/md5-cache/x11-base/xorg-server-1.20.13-r100 b/metadata/md5-cache/x11-base/xorg-server-1.20.13-r100 deleted file mode 100644 index 36e0bc2f..00000000 --- a/metadata/md5-cache/x11-base/xorg-server-1.20.13-r100 +++ /dev/null @@ -1,18 +0,0 @@ -BDEPEND=sys-devel/flex sys-devel/gnuconfig >=app-portage/elt-patches-20170815 || ( >=sys-devel/automake-1.16.2-r1:1.16 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 x86-winnt? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) virtual/pkgconfig doc? ( doc? ( || ( app-text/asciidoc dev-ruby/asciidoctor ) app-text/xmlto app-doc/doxygen app-text/docbook-xml-dtd:4.1.2 app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.3 ) ) -DEFINED_PHASES=compile configure install postinst postrm prepare unpack -DEPEND=media-libs/libglvnd[X] dev-libs/openssl:0= >=x11-apps/iceauth-1.0.2 >=x11-apps/rgb-1.0.3 >=x11-apps/xauth-1.0.3 x11-apps/xkbcomp >=x11-libs/libdrm-2.4.89 >=x11-libs/libpciaccess-0.12.901 >=x11-libs/libXau-1.0.4 >=x11-libs/libXdmcp-1.0.2 >=x11-libs/libXfont2-2.0.1 >=x11-libs/libxkbfile-1.0.4 >=x11-libs/libxshmfence-1.1 >=x11-libs/pixman-0.27.2 >=x11-misc/xbitmaps-1.0.1 >=x11-misc/xkeyboard-config-2.4.1-r3 dmx? ( x11-libs/libXt >=x11-libs/libdmx-1.0.99.1 >=x11-libs/libX11-1.1.5 >=x11-libs/libXaw-1.0.4 >=x11-libs/libXext-1.0.99.4 >=x11-libs/libXfixes-5.0 >=x11-libs/libXi-1.2.99.1 >=x11-libs/libXmu-1.0.3 x11-libs/libXrender >=x11-libs/libXres-1.0.3 >=x11-libs/libXtst-1.0.99.2 ) kdrive? ( >=x11-libs/libXext-1.0.5 x11-libs/libXv ) xephyr? ( x11-libs/libxcb[xkb] x11-libs/xcb-util x11-libs/xcb-util-image x11-libs/xcb-util-keysyms x11-libs/xcb-util-renderutil x11-libs/xcb-util-wm ) !minimal? ( >=x11-libs/libX11-1.1.5 >=x11-libs/libXext-1.0.5 >=media-libs/mesa-18[X(+),egl(+),gbm(+)] >=media-libs/libepoxy-1.5.4[X,egl(+)] ) udev? ( virtual/libudev:= ) unwind? ( sys-libs/libunwind ) >=x11-apps/xinit-1.3.3-r1 systemd? ( sys-apps/dbus sys-apps/systemd ) elogind? ( sys-apps/dbus sys-auth/elogind[pam] sys-auth/pambase[elogind] ) !!x11-drivers/nvidia-drivers[-libglvnd(+)] >=x11-base/xorg-proto-2018.4 >=x11-libs/xtrans-1.3.5 dmx? ( doc? ( || ( www-client/links www-client/lynx www-client/w3m ) ) ) -DESCRIPTION=X.Org X servers -EAPI=7 -HOMEPAGE=https://www.x.org/wiki/ https://gitlab.freedesktop.org/xorg/xserver/xorg-server -INHERIT=xorg-3 multilib flag-o-matic toolchain-funcs -IUSE=dmx kdrive xephyr xnest xorg xvfb debug +elogind ipv6 minimal selinux suid systemd test +udev unwind xcsecurity doc -KEYWORDS=~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux -LICENSE=MIT -PDEPEND=xorg? ( >=x11-base/xorg-drivers-1.20 ) -RDEPEND=media-libs/libglvnd[X] dev-libs/openssl:0= >=x11-apps/iceauth-1.0.2 >=x11-apps/rgb-1.0.3 >=x11-apps/xauth-1.0.3 x11-apps/xkbcomp >=x11-libs/libdrm-2.4.89 >=x11-libs/libpciaccess-0.12.901 >=x11-libs/libXau-1.0.4 >=x11-libs/libXdmcp-1.0.2 >=x11-libs/libXfont2-2.0.1 >=x11-libs/libxkbfile-1.0.4 >=x11-libs/libxshmfence-1.1 >=x11-libs/pixman-0.27.2 >=x11-misc/xbitmaps-1.0.1 >=x11-misc/xkeyboard-config-2.4.1-r3 dmx? ( x11-libs/libXt >=x11-libs/libdmx-1.0.99.1 >=x11-libs/libX11-1.1.5 >=x11-libs/libXaw-1.0.4 >=x11-libs/libXext-1.0.99.4 >=x11-libs/libXfixes-5.0 >=x11-libs/libXi-1.2.99.1 >=x11-libs/libXmu-1.0.3 x11-libs/libXrender >=x11-libs/libXres-1.0.3 >=x11-libs/libXtst-1.0.99.2 ) kdrive? ( >=x11-libs/libXext-1.0.5 x11-libs/libXv ) xephyr? ( x11-libs/libxcb[xkb] x11-libs/xcb-util x11-libs/xcb-util-image x11-libs/xcb-util-keysyms x11-libs/xcb-util-renderutil x11-libs/xcb-util-wm ) !minimal? ( >=x11-libs/libX11-1.1.5 >=x11-libs/libXext-1.0.5 >=media-libs/mesa-18[X(+),egl(+),gbm(+)] >=media-libs/libepoxy-1.5.4[X,egl(+)] ) udev? ( virtual/libudev:= ) unwind? ( sys-libs/libunwind ) >=x11-apps/xinit-1.3.3-r1 systemd? ( sys-apps/dbus sys-apps/systemd ) elogind? ( sys-apps/dbus sys-auth/elogind[pam] sys-auth/pambase[elogind] ) !!x11-drivers/nvidia-drivers[-libglvnd(+)] !systemd? ( gui-libs/display-manager-init ) selinux? ( sec-policy/selinux-xserver ) -REQUIRED_USE=!minimal? ( || ( dmx kdrive xephyr xnest xorg xvfb ) ) elogind? ( udev ) ?? ( elogind systemd ) xephyr? ( kdrive ) -RESTRICT=!test? ( test ) -SLOT=0/1.20.13 -SRC_URI=https://www.x.org/releases/individual/xserver/xorg-server-1.20.13.tar.xz -_eclasses_=autotools c9df06c186913b43eb211100ef5fe2cf edos2unix 33e347e171066657f91f8b0c72ec8773 eutils dab5d8ec471d025b79c9e6906bcf3bff flag-o-matic 4134b5c0fb719b9161d10bdaba9e09e5 gnuconfig 262062cef0ba4f22b397193da514a350 libtool 241a8f577b9781a42a7421e53448a44e multilib 4b66d835ec72e021e359bb81eacfe988 strip-linguas ac3ee41ee2d31d8c41a77c0838320cc7 toolchain-funcs 9ea1c67b6f8315fdc2568abb674519aa wrapper 4251d4c84c25f59094fd557e0063a974 xorg-3 cd706b673da66bddf59f910d089761d6 -_md5_=bb1a6a8b357a9e7fd8221314616caadd diff --git a/metadata/md5-cache/x11-base/xorg-server-21.1.1-r100 b/metadata/md5-cache/x11-base/xorg-server-21.1.1-r100 new file mode 100644 index 00000000..e140f70f --- /dev/null +++ b/metadata/md5-cache/x11-base/xorg-server-21.1.1-r100 @@ -0,0 +1,18 @@ +BDEPEND=sys-devel/flex sys-devel/gnuconfig >=app-portage/elt-patches-20170815 || ( >=sys-devel/automake-1.16.2-r1:1.16 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 x86-winnt? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) virtual/pkgconfig doc? ( doc? ( || ( app-text/asciidoc dev-ruby/asciidoctor ) app-text/xmlto app-doc/doxygen app-text/docbook-xml-dtd:4.1.2 app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.3 ) ) >=dev-util/meson-0.58.2-r1 >=dev-util/ninja-1.8.2 dev-util/meson-format-array +DEFINED_PHASES=compile configure install postinst postrm prepare test unpack +DEPEND=media-libs/libglvnd[X] dev-libs/openssl:0= >=x11-apps/iceauth-1.0.2 >=x11-apps/rgb-1.0.3 >=x11-apps/xauth-1.0.3 x11-apps/xkbcomp >=x11-libs/libdrm-2.4.89 >=x11-libs/libpciaccess-0.12.901 >=x11-libs/libXau-1.0.4 >=x11-libs/libXdmcp-1.0.2 >=x11-libs/libXfont2-2.0.1 >=x11-libs/libxcvt-0.1.0 >=x11-libs/libxkbfile-1.0.4 >=x11-libs/libxshmfence-1.1 >=x11-libs/pixman-0.27.2 >=x11-misc/xbitmaps-1.0.1 >=x11-misc/xkeyboard-config-2.4.1-r3 >=x11-libs/libXext-1.0.5 x11-libs/libXv xephyr? ( x11-libs/libxcb[xkb] x11-libs/xcb-util x11-libs/xcb-util-image x11-libs/xcb-util-keysyms x11-libs/xcb-util-renderutil x11-libs/xcb-util-wm ) !minimal? ( >=x11-libs/libX11-1.1.5 >=x11-libs/libXext-1.0.5 >=media-libs/mesa-18[X(+),egl(+),gbm(+)] >=media-libs/libepoxy-1.5.4[X,egl(+)] ) udev? ( virtual/libudev:= ) unwind? ( sys-libs/libunwind ) >=x11-apps/xinit-1.3.3-r1 selinux? ( sys-libs/libselinux ) systemd? ( sys-apps/dbus sys-apps/systemd ) elogind? ( sys-apps/dbus sys-auth/elogind[pam] sys-auth/pambase[elogind] ) !!x11-drivers/nvidia-drivers[-libglvnd(+)] >=x11-base/xorg-proto-2021.4.99.2 >=x11-libs/xtrans-1.3.5 doc? ( x11-base/xorg-sgml-doctools ) +DESCRIPTION=X.Org X servers +EAPI=7 +HOMEPAGE=https://www.x.org/wiki/ https://gitlab.freedesktop.org/xorg/xserver/xorg-server +INHERIT=xorg-3 meson +IUSE=xephyr xnest xorg xvfb debug +elogind minimal selinux suid systemd test +udev unwind xcsecurity doc +KEYWORDS=~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux +LICENSE=MIT +PDEPEND=xorg? ( >=x11-base/xorg-drivers-21.1 ) +RDEPEND=media-libs/libglvnd[X] dev-libs/openssl:0= >=x11-apps/iceauth-1.0.2 >=x11-apps/rgb-1.0.3 >=x11-apps/xauth-1.0.3 x11-apps/xkbcomp >=x11-libs/libdrm-2.4.89 >=x11-libs/libpciaccess-0.12.901 >=x11-libs/libXau-1.0.4 >=x11-libs/libXdmcp-1.0.2 >=x11-libs/libXfont2-2.0.1 >=x11-libs/libxcvt-0.1.0 >=x11-libs/libxkbfile-1.0.4 >=x11-libs/libxshmfence-1.1 >=x11-libs/pixman-0.27.2 >=x11-misc/xbitmaps-1.0.1 >=x11-misc/xkeyboard-config-2.4.1-r3 >=x11-libs/libXext-1.0.5 x11-libs/libXv xephyr? ( x11-libs/libxcb[xkb] x11-libs/xcb-util x11-libs/xcb-util-image x11-libs/xcb-util-keysyms x11-libs/xcb-util-renderutil x11-libs/xcb-util-wm ) !minimal? ( >=x11-libs/libX11-1.1.5 >=x11-libs/libXext-1.0.5 >=media-libs/mesa-18[X(+),egl(+),gbm(+)] >=media-libs/libepoxy-1.5.4[X,egl(+)] ) udev? ( virtual/libudev:= ) unwind? ( sys-libs/libunwind ) >=x11-apps/xinit-1.3.3-r1 selinux? ( sys-libs/libselinux ) systemd? ( sys-apps/dbus sys-apps/systemd ) elogind? ( sys-apps/dbus sys-auth/elogind[pam] sys-auth/pambase[elogind] ) !!x11-drivers/nvidia-drivers[-libglvnd(+)] !systemd? ( gui-libs/display-manager-init ) selinux? ( sec-policy/selinux-xserver ) +REQUIRED_USE=!minimal? ( || ( xephyr xnest xorg xvfb ) ) elogind? ( udev ) ?? ( elogind systemd ) +RESTRICT=!test? ( test ) +SLOT=0/21.1.1 +SRC_URI=https://www.x.org/releases/individual/xserver/xorg-server-21.1.1.tar.xz +_eclasses_=autotools c9df06c186913b43eb211100ef5fe2cf eapi8-dosym cd7d420bb5be5ee079f27239ce76b8f5 edos2unix 33e347e171066657f91f8b0c72ec8773 eutils dab5d8ec471d025b79c9e6906bcf3bff flag-o-matic 4134b5c0fb719b9161d10bdaba9e09e5 gnuconfig 262062cef0ba4f22b397193da514a350 libtool 241a8f577b9781a42a7421e53448a44e meson 9f3e84959ae1d60e19bc91f212774dcc multilib 4b66d835ec72e021e359bb81eacfe988 multiprocessing 61c959fc55c15c00bbb1079d6a71370b ninja-utils a4dab848a4490e8e48cf0baab3e61bc2 python-utils-r1 a8b7938ade305f087865de7e52d079b5 strip-linguas ac3ee41ee2d31d8c41a77c0838320cc7 toolchain-funcs 9ea1c67b6f8315fdc2568abb674519aa wrapper 4251d4c84c25f59094fd557e0063a974 xorg-3 cd706b673da66bddf59f910d089761d6 +_md5_=c1af138a69347527d753644ff92b3036 diff --git a/metadata/pkg_desc_index b/metadata/pkg_desc_index index fe123818..8334de7c 100644 --- a/metadata/pkg_desc_index +++ b/metadata/pkg_desc_index @@ -84,7 +84,7 @@ virtual/rust 100: Virtual for Rust language compiler virtual/tmpfiles 0-r100: Virtual to select between different tmpfiles.d handlers virtual/udev 1000: Virtual to select between different udev daemon providers x11-base/xorg-drivers 1.20-r100: Meta package containing deps on all xorg drivers (dummy package) -x11-base/xorg-server 1.20.13-r100: X.Org X servers +x11-base/xorg-server 21.1.1-r100: X.Org X servers x11-base/xwayland 21.1.2.901-r11: Standalone X server running under Wayland x11-drivers/nvidia-drivers 470.63.01: NVIDIA Accelerated Graphics Driver x11-drivers/nvidia-drivers-legacy 390.144-r3: NVIDIA Accelerated Graphics Driver diff --git a/x11-base/xorg-server/Manifest b/x11-base/xorg-server/Manifest index de7291d1..6b5fa2ca 100644 --- a/x11-base/xorg-server/Manifest +++ b/x11-base/xorg-server/Manifest @@ -1 +1 @@ -DIST xorg-server-1.20.13.tar.xz 5122260 BLAKE2B 4435d25d8b379142fcc4bf60d82e52417ac3ab22a77ededa1472785d67c23bfb95be8e10465fc4859645405b8e580d6dcb262caea39c408e724d0e5ea61b37af SHA512 4e0b7bd4e070dc52cb2c51c2056feb133de2c0487d359392ed63abba9702910cd2e2983e9415973d8d6e9672eac78be6f39202687fc56610877914ce722554b3 +DIST xorg-server-21.1.1.tar.xz 4958508 BLAKE2B fadac208773700b91003ef18d46e6f2c6b501e59b7491c943f406641e9ff3837a8126034c023e9b6d2d4131ee438c1ef94fa458af1828d4be325519b47069a79 SHA512 8608ed9c1537c95e8a3adea5e3e372a3c5eb841f8e27c84283093f22fb1909e16a800006510da684b13f8f237f33b8a4be3e2537f5f9ab9af4c5ad12770eef0d diff --git a/x11-base/xorg-server/files/xorg-server-21.1.1-DPI-revert.patch b/x11-base/xorg-server/files/xorg-server-21.1.1-DPI-revert.patch new file mode 100644 index 00000000..89d8e265 --- /dev/null +++ b/x11-base/xorg-server/files/xorg-server-21.1.1-DPI-revert.patch @@ -0,0 +1,133 @@ +https://gitlab.freedesktop.org/xorg/xserver/-/commit/35af1299e73483eaf93d913a960e1d1738bc7de6 + +From: Povilas Kanapickas <povilas@radix.lt> +Date: Sat, 13 Nov 2021 17:23:54 +0200 +Subject: [PATCH] Revert "hw/xfree86: Propagate physical dimensions from DRM + connector" + +Quite a lot of applications currently expect the screen DPI exposed by +the X server to be 96 even when the real display DPI is different. +Additionally, currently Xwayland completely ignores any hardware +information and sets the DPI to 96. Accordingly the new behavior, even +if it fixes a bug, should not be enabled automatically to all users. + +A better solution would be to make the default DPI stay as is and enable +the correct behavior with a command line option (maybe -dpi auto, or +similar). For now let's just revert the bug fix. + +This reverts commit 05b3c681ea2f478c0cb941c2f8279919cf78de6d. + +Signed-off-by: Povilas Kanapickas <povilas@radix.lt> +--- a/hw/xfree86/common/xf86Helper.c ++++ b/hw/xfree86/common/xf86Helper.c +@@ -55,7 +55,6 @@ + #include "xf86Xinput.h" + #include "xf86InPriv.h" + #include "mivalidate.h" +-#include "xf86Crtc.h" + + /* For xf86GetClocks */ + #if defined(CSRG_BASED) || defined(__GNU__) +@@ -852,9 +851,8 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y) + { + MessageType from = X_DEFAULT; + xf86MonPtr DDC = (xf86MonPtr) (pScrn->monitor->DDC); +- int probedWidthmm, probedHeightmm; ++ int ddcWidthmm, ddcHeightmm; + int widthErr, heightErr; +- xf86OutputPtr compat = xf86CompatOutput(pScrn); + + /* XXX Maybe there is no need for widthmm/heightmm in ScrnInfoRec */ + pScrn->widthmm = pScrn->monitor->widthmm; +@@ -864,15 +862,11 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y) + /* DDC gives display size in mm for individual modes, + * but cm for monitor + */ +- probedWidthmm = DDC->features.hsize * 10; /* 10mm in 1cm */ +- probedHeightmm = DDC->features.vsize * 10; /* 10mm in 1cm */ +- } +- else if (compat && compat->mm_width > 0 && compat->mm_height > 0) { +- probedWidthmm = compat->mm_width; +- probedHeightmm = compat->mm_height; ++ ddcWidthmm = DDC->features.hsize * 10; /* 10mm in 1cm */ ++ ddcHeightmm = DDC->features.vsize * 10; /* 10mm in 1cm */ + } + else { +- probedWidthmm = probedHeightmm = 0; ++ ddcWidthmm = ddcHeightmm = 0; + } + + if (monitorResolution > 0) { +@@ -898,15 +892,15 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y) + pScrn->widthmm, pScrn->heightmm); + + /* Warn if config and probe disagree about display size */ +- if (probedWidthmm && probedHeightmm) { ++ if (ddcWidthmm && ddcHeightmm) { + if (pScrn->widthmm > 0) { +- widthErr = abs(probedWidthmm - pScrn->widthmm); ++ widthErr = abs(ddcWidthmm - pScrn->widthmm); + } + else { + widthErr = 0; + } + if (pScrn->heightmm > 0) { +- heightErr = abs(probedHeightmm - pScrn->heightmm); ++ heightErr = abs(ddcHeightmm - pScrn->heightmm); + } + else { + heightErr = 0; +@@ -915,17 +909,17 @@ xf86SetDpi(ScrnInfoPtr pScrn, int x, int y) + /* Should include config file name for monitor here */ + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Probed monitor is %dx%d mm, using Displaysize %dx%d mm\n", +- probedWidthmm, probedHeightmm, pScrn->widthmm, ++ ddcWidthmm, ddcHeightmm, pScrn->widthmm, + pScrn->heightmm); + } + } + } +- else if (probedWidthmm && probedHeightmm) { ++ else if (ddcWidthmm && ddcHeightmm) { + from = X_PROBED; + xf86DrvMsg(pScrn->scrnIndex, from, "Display dimensions: (%d, %d) mm\n", +- probedWidthmm, probedHeightmm); +- pScrn->widthmm = probedWidthmm; +- pScrn->heightmm = probedHeightmm; ++ ddcWidthmm, ddcHeightmm); ++ pScrn->widthmm = ddcWidthmm; ++ pScrn->heightmm = ddcHeightmm; + if (pScrn->widthmm > 0) { + pScrn->xDpi = + (int) ((double) pScrn->virtualX * MMPERINCH / pScrn->widthmm); +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -3256,10 +3256,8 @@ xf86OutputSetEDID(xf86OutputPtr output, xf86MonPtr edid_mon) + free(output->MonInfo); + + output->MonInfo = edid_mon; +- if (edid_mon) { +- output->mm_width = 0; +- output->mm_height = 0; +- } ++ output->mm_width = 0; ++ output->mm_height = 0; + + if (debug_modes) { + xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n", +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -806,12 +806,6 @@ xf86RandR12CreateScreenResources(ScreenPtr pScreen) + mmWidth = output->conf_monitor->mon_width; + mmHeight = output->conf_monitor->mon_height; + } +- else if (output && +- (output->mm_width > 0 && +- output->mm_height > 0)) { +- mmWidth = output->mm_width; +- mmHeight = output->mm_height; +- } + else { + /* + * Otherwise, just set the screen to DEFAULT_DPI +GitLab diff --git a/x11-base/xorg-server/files/xserver-autobind-hotplug.patch b/x11-base/xorg-server/files/xserver-autobind-hotplug.patch deleted file mode 100644 index 86b96a23..00000000 --- a/x11-base/xorg-server/files/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 - diff --git a/x11-base/xorg-server/xorg-server-1.20.13-r100.ebuild b/x11-base/xorg-server/xorg-server-21.1.1-r100.ebuild index 4f6c1564..b8aa75db 100644 --- a/x11-base/xorg-server/xorg-server-1.20.13-r100.ebuild +++ b/x11-base/xorg-server/xorg-server-21.1.1-r100.ebuild @@ -5,7 +5,8 @@ EAPI=7 XORG_DOC=doc XORG_TARBALL_SUFFIX="xz" -inherit xorg-3 multilib flag-o-matic toolchain-funcs +XORG_EAUTORECONF="no" +inherit xorg-3 meson EGIT_REPO_URI="https://gitlab.freedesktop.org/xorg/xserver.git" DESCRIPTION="X.Org X servers" @@ -14,8 +15,8 @@ if [[ ${PV} != 9999* ]]; then KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" fi -IUSE_SERVERS="dmx kdrive xephyr xnest xorg xvfb" -IUSE="${IUSE_SERVERS} debug +elogind ipv6 minimal selinux suid systemd test +udev unwind xcsecurity" +IUSE_SERVERS="xephyr xnest xorg xvfb" +IUSE="${IUSE_SERVERS} debug +elogind minimal selinux suid systemd test +udev unwind xcsecurity" RESTRICT="!test? ( test )" CDEPEND=" @@ -30,28 +31,14 @@ CDEPEND=" >=x11-libs/libXau-1.0.4 >=x11-libs/libXdmcp-1.0.2 >=x11-libs/libXfont2-2.0.1 + >=x11-libs/libxcvt-0.1.0 >=x11-libs/libxkbfile-1.0.4 >=x11-libs/libxshmfence-1.1 >=x11-libs/pixman-0.27.2 >=x11-misc/xbitmaps-1.0.1 >=x11-misc/xkeyboard-config-2.4.1-r3 - dmx? ( - x11-libs/libXt - >=x11-libs/libdmx-1.0.99.1 - >=x11-libs/libX11-1.1.5 - >=x11-libs/libXaw-1.0.4 - >=x11-libs/libXext-1.0.99.4 - >=x11-libs/libXfixes-5.0 - >=x11-libs/libXi-1.2.99.1 - >=x11-libs/libXmu-1.0.3 - x11-libs/libXrender - >=x11-libs/libXres-1.0.3 - >=x11-libs/libXtst-1.0.99.2 - ) - kdrive? ( - >=x11-libs/libXext-1.0.5 - x11-libs/libXv - ) + >=x11-libs/libXext-1.0.5 + x11-libs/libXv xephyr? ( x11-libs/libxcb[xkb] x11-libs/xcb-util @@ -69,6 +56,7 @@ CDEPEND=" udev? ( virtual/libudev:= ) unwind? ( sys-libs/libunwind ) >=x11-apps/xinit-1.3.3-r1 + selinux? ( sys-libs/libselinux ) systemd? ( sys-apps/dbus sys-apps/systemd @@ -81,16 +69,10 @@ CDEPEND=" !!x11-drivers/nvidia-drivers[-libglvnd(+)] " DEPEND="${CDEPEND} - >=x11-base/xorg-proto-2018.4 + >=x11-base/xorg-proto-2021.4.99.2 >=x11-libs/xtrans-1.3.5 - dmx? ( - doc? ( - || ( - www-client/links - www-client/lynx - www-client/w3m - ) - ) + doc? ( + x11-base/xorg-sgml-doctools ) " RDEPEND="${CDEPEND} @@ -107,10 +89,10 @@ REQUIRED_USE="!minimal? ( || ( ${IUSE_SERVERS} ) ) elogind? ( udev ) - ?? ( elogind systemd ) - xephyr? ( kdrive )" + ?? ( elogind systemd )" UPSTREAMED_PATCHES=( + "${FILESDIR}"/${P}-DPI-revert.patch ) PATCHES=( @@ -118,7 +100,6 @@ PATCHES=( "${FILESDIR}"/${PN}-1.12-unloadsubmodule.patch # needed for new eselect-opengl, bug #541232 "${FILESDIR}"/${PN}-1.18-support-multiple-Files-sections.patch - "${FILESDIR}"/xserver-autobind-hotplug.patch ) src_configure() { @@ -127,83 +108,64 @@ src_configure() { # sysconfdir is used for the xorg.conf location; same applies # NOTE: fop is used for doc generating; and I have no idea if Gentoo # package it somewhere - local XORG_CONFIGURE_OPTIONS=( - $(use_enable ipv6) - $(use_enable debug) - $(use_enable dmx) - $(use_enable kdrive) - $(use_enable test unit-tests) - $(use_enable unwind libunwind) - $(use_enable !minimal record) - $(use_enable !minimal xfree86-utils) - $(use_enable !minimal dri) - $(use_enable !minimal dri2) - $(use_enable !minimal dri3) - $(use_enable !minimal glamor) - $(use_enable !minimal glx) - $(use_enable xcsecurity) - $(use_enable xephyr) - $(use_enable xnest) - $(use_enable xorg) - $(use_enable xvfb) - $(use_enable udev config-udev) - $(use_with doc doxygen) - $(use_with doc xmlto) - $(use_with systemd systemd-daemon) - --disable-xwayland - --enable-libdrm - --sysconfdir="${EPREFIX}"/etc/X11 - --localstatedir="${EPREFIX}"/var - --with-fontrootdir="${EPREFIX}"/usr/share/fonts - --with-xkb-output="${EPREFIX}"/var/lib/xkb - --disable-config-hal - --disable-linux-acpi - --without-dtrace - --without-fop - --with-os-vendor=Gentoo - --with-sha1=libcrypto - CPP="$(tc-getPROG CPP cpp)" + + local emesonargs=( + --localstatedir "${EPREFIX}/var" + --sysconfdir "${EPREFIX}/etc/X11" + --buildtype $(usex debug debug plain) + -Db_ndebug=$(usex debug false true) + $(meson_use doc docs) + $(meson_use !minimal dri1) + $(meson_use !minimal dri2) + $(meson_use !minimal dri3) + $(meson_use !minimal glamor) + $(meson_use !minimal glx) + $(meson_use udev) + $(meson_use udev udev_kms) + $(meson_use unwind libunwind) + $(meson_use xcsecurity) + $(meson_use xephyr) + $(meson_use xnest) + $(meson_use xorg) + $(meson_use xvfb) + -Ddefault_font_path="${EPREFIX}"/usr/share/fonts + -Ddrm=true + -Ddtrace=false + -Dipv6=true + -Dhal=false + -Dlinux_acpi=false + -Dlinux_apm=false + -Dsha1=libcrypto + -Dxkb_output_dir="${EPREFIX}/var/lib/xkb" ) if use systemd || use elogind; then - XORG_CONFIGURE_OPTIONS+=( - --enable-systemd-logind - --disable-install-setuid - $(use_enable suid suid-wrapper) + emesonargs+=( + -Dsystemd_logind=true + $(meson_use suid suid_wrapper) ) else - XORG_CONFIGURE_OPTIONS+=( - --disable-systemd-logind - --disable-suid-wrapper - $(use_enable suid install-setuid) + emesonargs+=( + -Dsystemd_logind=false + $(meson_use suid suid_wrapper) ) fi - xorg-3_src_configure + meson_src_configure } -server_based_install() { +src_install() { + meson_src_install + + #The new meson build system do not leave X symlink + ln -s Xorg "${ED}"/usr/bin/X + if ! use xorg; then rm -f "${ED}"/usr/share/man/man1/Xserver.1x \ "${ED}"/usr/$(get_libdir)/xserver/SecurityPolicy \ "${ED}"/usr/$(get_libdir)/pkgconfig/xorg-server.pc \ "${ED}"/usr/share/man/man1/Xserver.1x || die fi -} - -src_install() { - xorg-3_src_install - - server_based_install - - if ! use minimal && use xorg; then - # Install xorg.conf.example into docs - dodoc "${S}"/hw/xfree86/xorg.conf.example - - rm \ - "${ED}"/usr/bin/cvt \ - "${ED}"/usr/share/man/man1/cvt.1 || die - fi # install the @x11-module-rebuild set for Portage insinto /usr/share/portage/config/sets @@ -212,8 +174,6 @@ src_install() { # enable clicks using touchpad (https://bugs.redcorelinux.org/show_bug.cgi?id=48) insinto /usr/share/X11/xorg.conf.d doins "${FILESDIR}"/99-synaptics-overrides.conf - - find "${ED}"/var -type d -empty -delete || die } pkg_postrm() { |