[gdm/disable-hybrid-nvidia: 2/5] data: Disable wayland on nvidia if suspend is broken




commit a0da7a7ded4de5a1665e078fe2f6d8b14d424433
Author: Ray Strode <rstrode redhat com>
Date:   Fri Mar 4 14:11:03 2022 -0500

    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(+)
---
diff --git a/data/61-gdm.rules.in b/data/61-gdm.rules.in
index 6b36bcbc0..02a10e9c5 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]