From 51181871e9db716546e9593216220389de0d8b03 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 4 Mar 2022 14:11:03 -0500 Subject: data: Disable wayland on nvidia if suspend is broken The vendor nvidia driver scrambles texture memory during suspend, and only restores it under certain situations. This commit tries to detect those situations and only use wayland in those cases. --- data/61-gdm.rules.in | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'data') diff --git a/data/61-gdm.rules.in b/data/61-gdm.rules.in index 6b36bcbc..02a10e9c 100644 --- a/data/61-gdm.rules.in +++ b/data/61-gdm.rules.in @@ -22,6 +22,18 @@ KERNEL!="nvidia", GOTO="gdm_nvidia_end" SUBSYSTEM!="module", GOTO="gdm_nvidia_end" ACTION!="add", GOTO="gdm_nvidia_end" RUN+="/usr/bin/touch /run/udev/gdm-machine-has-vendor-nvidia-driver" + +# Check if suspend/resume services necessary for working wayland support is available +TEST{0711}!="/usr/bin/nvidia-sleep.sh", GOTO="gdm_disable_wayland" +TEST{0711}!="/usr/lib/systemd/system-sleep/nvidia", GOTO="gdm_disable_wayland" +IMPORT{program}="/bin/sh -c \"sed -e 's/: /=/g' -e 's/\([^[:upper:]]\)\([[:upper:]]\)/\1_\2/g' -e 's/[[:lower:]]/\U&/g' -e 's/^/NVIDIA_/' /proc/driver/nvidia/params\"" +ENV{NVIDIA_PRESERVE_VIDEO_MEMORY_ALLOCATIONS}!="1", GOTO="gdm_disable_wayland" +IMPORT{program}="/bin/sh -c 'echo NVIDIA_HIBERNATE=`systemctl is-enabled nvidia-hibernate`'" +ENV{NVIDIA_HIBERNATE}!="enabled", GOTO="gdm_disable_wayland" +IMPORT{program}="/bin/sh -c 'echo NVIDIA_RESUME=`systemctl is-enabled nvidia-resume`'" +ENV{NVIDIA_RESUME}!="enabled", GOTO="gdm_disable_wayland" +IMPORT{program}="/bin/sh -c 'echo NVIDIA_SUSPEND=`systemctl is-enabled nvidia-suspend`'" +ENV{NVIDIA_SUSPEND}!="enabled", GOTO="gdm_disable_wayland" LABEL="gdm_nvidia_end" # If this machine has an internal panel, take note, since it's probably a laptop -- cgit v1.2.1