Nvidia display tearing with System76 drivers

Laptop: Sytem76 Bonobo 15, 2024
PopOS 22.04
NVIDIA GeForce RTX 4080
x11 (not Wayland)

After unpacking the laptop, I slotted in the NVMe stick that was running PopOS 22.04 on a Dell XPS 9710 laptop. It booted straight away, though the external display wasn’t available, so I suppose it was using the built-in/Intel GPU. After runnnig the apt driver update, the Nvidia GPU became available, but had terrible graphic tearing issues where the most active parts of the display would jump and refresh constantly. I logged a call with System76, which advised me the following:

It looks like the problem is that you installed the Nvidia driver for Ubuntu, trying to set it up with Prime. Although you are correct that this is an Optimus laptop that would normally use Prime, we have found that using our packaging results in a better experience.

# add the system76 PPA
sudo apt-add-repository -y ppa:system76-dev/stable
sudo apt update
# remove the current Nvidia packages
sudo apt purge ~nnvidia
# make sure we are getting the most recent release
sudo apt update
# make sure apt and dpkg were not interrupted
sudo dpkg --configure -a  
sudo apt install -f  
# remove supporting libraries as well
sudo apt autoremove --purge
# install the nvidia driver
sudo apt install system76-driver-nvidia
# reboot the system to start using the new driver
sudo reboot

I did follow the steps, but the problem remains the same, i.e., screen tearing when using Nvidia graphics, somehow stable in hybrid mode if low graphic activity, and no issue of the sort with internal graphics.

This is the output from nvidia-smi:

# nvidia-smi 
Sat Mar 16 21:02:48 2024       

| NVIDIA-SMI 550.54.14              Driver Version: 550.54.14      CUDA Version: 12.4     |

| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |

|   0  NVIDIA GeForce RTX 4080 ...    Off |   00000000:02:00.0 Off |                  N/A |
| N/A   46C    P8              4W /  150W |       9MiB /  12282MiB |      0%      Default |
|                                         |                        |                  N/A |

| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |

|    0   N/A  N/A      2619      G   /usr/lib/xorg/Xorg                              4MiB |

It is to be noted that upon running nvidia-settings while on the Nvidia graphics, the following error occurs:

** (nvidia-settings:92652): WARNING **: 21:23:21.908: PRIME: Failed to execute child process “/usr/bin/prime-supported” (No such file or directory)

This is the output of nvidia-settings, looking for PRIME:
enter image description here

I’m not sure why prime-supported is missing, but when I try to install it, it reports the following:

# apt install nvidia-prime
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
pop-desktop : PreDepends: pop-de-gnome but it is not going to be installed
Recommends: libreoffice-calc but it is not going to be installed
Recommends: libreoffice-impress but it is not going to be installed
Recommends: libreoffice-writer but it is not going to be installed
Recommends: libreoffice-ogltrans
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

# apt install pop-desktop
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
pop-desktop is already the newest version (2.0.0~1697231037~22.04~733a5e2).
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

# apt install pop-de-gnome
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
pop-de-gnome is already the newest version (2.0.0~1697231037~22.04~733a5e2).
pop-de-gnome set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

EDIT 1

# apt list --installed|grep -i system76
gnome-shell-extension-system76-power/jammy,jammy,now 2.0.6~1710179797~22.04~b484f01 all [installed,automatic]
linux-firmware/jammy,now 20240202.git36777504-0ubuntu1+system76~1707150982~22.04~57636e6 amd64 [installed,automatic]
linux-system76/jammy,now 6.6.10.76060610.202401051437~1709085277~22.04~31d73d8 amd64 [installed]
system76-acpi-dkms/jammy,now 1.0.2~1707324865~22.04~19ad0c5 amd64 [installed]
system76-dkms/jammy,now 1.0.14~1707324875~22.04~da04fd6 amd64 [installed]
system76-driver-nvidia/jammy,jammy,now 20.04.87~1710180195~22.04~5d0680a all [installed]
system76-driver/jammy,jammy,now 20.04.87~1710180195~22.04~5d0680a all [installed]
system76-firmware-daemon/jammy,now 1.0.59~1709142062~22.04~5250a40 amd64 [installed,automatic]
system76-io-dkms/jammy,now 1.0.3~1707324885~22.04~3dd4c32 amd64 [installed]
system76-oled/jammy,now 0.1.5~1664307225~22.04~98f778d amd64 [installed,automatic]
system76-power/jammy,now 1.1.26~1710180257~22.04~d7f73b2 amd64 [installed,automatic]
system76-scheduler/jammy,now 2.0.0~1701988455~22.04~b8d6545 amd64 [installed,automatic]
system76-wallpapers/jammy,jammy,now 18.04.2~1611351210~22.04~52abc1e all [installed,automatic]

# apt list --installed|grep -i nvidia
libnvidia-cfg1-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
libnvidia-common-550/jammy,jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a all [installed,automatic]
libnvidia-compute-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
libnvidia-compute-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a i386 [installed,automatic]
libnvidia-decode-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
libnvidia-decode-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a i386 [installed,automatic]
libnvidia-egl-wayland1/jammy,now 1:1.1.13-2pop1~1707162632~22.04~c5241b5 amd64 [installed,automatic]
libnvidia-encode-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
libnvidia-encode-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a i386 [installed,automatic]
libnvidia-extra-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
libnvidia-fbc1-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
libnvidia-fbc1-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a i386 [installed,automatic]
libnvidia-gl-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
libnvidia-gl-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a i386 [installed,automatic]
nvidia-compute-utils-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
nvidia-dkms-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
nvidia-driver-525/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
nvidia-driver-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
nvidia-firmware-550-550.54.14/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
nvidia-kernel-common-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
nvidia-kernel-source-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
nvidia-settings/jammy,now 510.47.03-0ubuntu1 amd64 [installed,automatic]
nvidia-utils-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]
system76-driver-nvidia/jammy,jammy,now 20.04.87~1710180195~22.04~5d0680a all [installed]
xserver-xorg-video-nvidia-550/jammy,now 550.54.14-1pop0~1709151545~22.04~c91e06a amd64 [installed,automatic]

Is what System76 saying true, i.e., prime shouldn’t be used in this case?

Please run nvidia-bug-report.sh as root and attach the resulting nvidia-bug-report.log.gz file to your post.

1 Like

Thanks for coming back to me on this. Enclosed is the requested data.
nvidia-bug-report.log.gz (496.1 KB)

I’ve generated another log file while switched to Nvidia graphics – the first log was while on Hybrid mode. See enclosed.
nvidia-bug-report.log.gz (511.1 KB)

Which disply is “tearing”, the internal or the external?

1 Like

It is the internal display. One thing to note is that when running nvidia-settings, it complains about prime-supported missing.

(nvidia-settings:6285): GLib-GObject-CRITICAL **: 07:45:57.900: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

** (nvidia-settings:6285): WARNING **: 07:45:58.099: PRIME: Failed to execute child process “/usr/bin/prime-supported” (No such file or directory)
** Message: 07:45:58.099: PRIME: is it supported? no

From what I was told by System76, prime should not be involved at this point, i.e., after having installed the nvidia system76 drivers, but it is not the case in my setup.

Also, system76 asked me to switch from x11 to Wayland by setting WaylandEnable=true in /etc/gdm3/custom.conf, which I did, but upon reboot, Wayland wasn’t enabled. It is still running on x11.

$ echo $XDG_SESSION_TYPE
x11
$ echo $WAYLAND_DISPLAY

$ loginctl
SESSION  UID USER  SEAT  TTY 
      3 1000 linux seat0 tty2
     c1  111 gdm   seat0 tty1

2 sessions listed.
$ loginctl show-session 3 -p Type
Type=x11
$ loginctl show-session c1 -p Type
Type=x11

Now, I do not know if all this matters, but if you need more info, I’ll be happy to provide more.

One thing to note is that when switching to Nvidia graphics after setting WaylandEnable=true, the primary display automatically switched to the external display. I then set it back to the internal display, but upon reboot it switched the primary display back to the external display. I eventually switched back to Hybrid because of the tearing and this display switch thingy.

I’m enclosing two screenshots of nvidia-settings.

The second screenshots:

This is the info on Xorg vs. Wayland given by System76 earlier today:

So, yes, some screen tearing is expected under Xorg. Wayland is the solution, but the problem is that NVIDIA does not play nicely with Wayland at this moment.

I do not know if that’s really the case, that said.

Then you’re poking at the wrong gpu. In your initial post, you were running the nvidia gpu in offload mode, so it didn’t have any effect on the output on the internal display run by the intel igpu.
When you provided the nvidia-bug-report.log, you had switched to nvidia as primary gpu.

If I’m not wrong, the first log was provided while running in hybrid mode, so the Nvidia GPU was indeed in offload mode. The 2nd Nvidia log was run when running on the Nvidia GPU, however, as the primary GPU, i.e., after swithing to it in the main menu, which initiated a reboot. The log was taken after reboot.
Do you need me to run any other test in order to collect any other data?

I also need to add – though obvious – that there’s no or very little tearing in hybrid mode when there’s no too much graphic load.

Please switch to offload mode and disconnect the external monitor. This should take the nvidia gpu out of the equation. Then check if you still observe tearing and create a new nvidia-bug-report.log if so.

Revisiting your old logs, there is something always redecting all displays, like running xrandr in fast succession, flooding the xorg logs and most likely making the xserver lag. Might be the external monitor due to an nvidia driver bug or something completely different.

Sure, I can do that. What is offoad mode? It is Nvidia mode? There are Internal, Hybrid, Nvidia and Compute modes availalble.

I see. Should I unplug the external monitor, switch to Nvidia graphics, reboot and collect the logs again?

“Hybrid” should be the offload mode.

So

  • switch to “Hybrid”
  • disconnect external monitor
  • use it for a while
  • create nvidia-bug-report.log

OK, understood. I’m on Hybrid mode right now, so I will disconnect the external monitor, use it for a while, then collect logs again. Thanks.

Enclosed logs have been collected after unpluggin the external display while still in Hybrid mode. I don’t know if I kept it running long enough, but if not, let me know and I’ll run it again a while later.

If you need me to reboot before collecting the logs once more, let me know.

nvidia-bug-report.log.gz (441.6 KB)