[gdm: 1/2] gdm.rules: Keep wayland enabled in all nvidia configurations allowing it
- From: Marco Trevisan <marcotrevi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm: 1/2] gdm.rules: Keep wayland enabled in all nvidia configurations allowing it
- Date: Fri, 24 Sep 2021 02:41:44 +0000 (UTC)
commit e29606c4b63452e851b02da86b1c71f585aa6200
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Wed Sep 8 19:22:23 2021 +0200
gdm.rules: Keep wayland enabled in all nvidia configurations allowing it
Nvidia drivers since version 470 supports both native wayland and
accelerated Xwayland. The latter also works in hybrid configurations
using nvidia Optimus (the session will run using the main integrated
GPU, but it will be possible to use switcherooctl to run applications
using the discrete nvidia card).
However, the gdm rules were including a line that was supposed to
disable such scenario, but it didn't actually work as expected, so we
can safely remove it, without changing the behavior.
At the same time we can tune the rules so that, when the nvidia-drm
module is loaded, if the driver version is minor than 470, wayland is
disabled.
data/61-gdm.rules.in | 35 +++++++++++++++++++++++++++--------
1 file changed, 27 insertions(+), 8 deletions(-)
---
diff --git a/data/61-gdm.rules.in b/data/61-gdm.rules.in
index 8566bf55e..1156f0d33 100644
--- a/data/61-gdm.rules.in
+++ b/data/61-gdm.rules.in
@@ -1,10 +1,29 @@
# disable Wayland on Hi1710 chipsets
-ATTR{vendor}=="0x19e5", ATTR{device}=="0x1711", RUN+="@libexecdir@/gdm-runtime-config set daemon
WaylandEnable false"
-# disable Wayland on hybrid systems with vendor nvidia driver
-# default to Xorg on single gpu vendor nvidia systems
-DRIVER=="nvidia", ENV{GDM_HAS_VENDOR_NVIDIA_DRIVER}="1"
-DRIVER=="nvidia", RUN+="@libexecdir@/gdm-runtime-config set daemon PreferredDisplayServer xorg"
-SUBSYSTEM=="drm", KERNEL=="card[1-9]*", ENV{GDM_HAS_NVIDIA_DRIVER}=="1",
RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable false"
-ACTION=="add", SUBSYSTEM=="module", KERNEL=="nvidia_drm", ATTR{parameters/modeset}=="N",
RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable false"
+ATTR{vendor}=="0x19e5", ATTR{device}=="0x1711", GOTO="gdm_disable_wayland"
+
# disable Wayland if modesetting is disabled
-IMPORT{cmdline}="nomodeset", RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable false"
+IMPORT{cmdline}="nomodeset", SUBSYSTEM=="drm", KERNEL=="card[0-9]*", GOTO="gdm_disable_wayland"
+
+# Disable wayland when nvidia modeset is disabled or when drivers are a lower
+# version than 470, in any case always prefer Xorg
+KERNEL!="nvidia_drm", GOTO="gdm_nvidia_drm_end"
+SUBSYSTEM!="module", GOTO="gdm_nvidia_drm_end"
+ACTION!="add", GOTO="gdm_nvidia_drm_end"
+# disable wayland if nvidia-drm modeset is not enabled
+ATTR{parameters/modeset}!="Y", GOTO="gdm_disable_wayland"
+# disable wayland for nvidia drivers versions lower than 470
+ATTR{version}=="4[0-6][0-9].*|[0-3][0-9][0-9].*|[0-9][0-9].*|[0-9].*", GOTO="gdm_disable_wayland"
+GOTO="gdm_prefer_xorg"
+LABEL="gdm_nvidia_drm_end"
+
+GOTO="gdm_end"
+
+LABEL="gdm_prefer_xorg"
+RUN+="@libexecdir@/gdm-runtime-config set daemon PreferredDisplayServer xorg"
+GOTO="gdm_end"
+
+LABEL="gdm_disable_wayland"
+RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable false"
+GOTO="gdm_end"
+
+LABEL="gdm_end"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]