GNOME desktop animations slower with NVIDIA 560 driver than they were with 550

I’ve just recently returned to Linux after many years and am getting back into the swing of things. I’m pretty happy with my setup; the only thing that I can’t seem to figure out after hours of tinkering is how to get smooth GNOME animations on my setup, which includes NVIDIA Geforce 2080, dual displays (one HDMI at 75hz and one DP at 60hz).

After reading countless posts about NVIDIA drivers and GNOME performance with multiple displays with different refresh rates, and Mutter-tripplebuffer patches, I would be inclined to give up for now and wait for an eventual patch… but I’m not convinced because I actually managed to get smooth animations at some point during my tinkering. I can’t remember if I even had a Mutter patch installed at that time. What I do know is that the animations were smoother with NVIDIA-550 driver than they are with 555 or 560.

I’m using the RPMFusion-nonfree NVIDIA driver now and I’m wondering if there is a setting that I’m missing that would improve performance. Here is a list of relevant info and things I’ve tried (unfortunately I have ADHD and didn’t do a great job documenting everything so it’s pretty likely I’ve left some things out).

System Details Report


Report details

  • Date generated: 2024-09-01 13:05:19

Hardware Information:

  • Hardware Model: Dell Inc. G5 5090
  • Memory: 64.0 GiB
  • Processor: Intel® Core™ i9-9900K × 8
  • Graphics: NVIDIA GeForce RTX™ 2080
  • Disk Capacity: 3.0 TB

Software Information:

  • Firmware Version: 1.26.0
  • OS Name: Fedora Linux 40 (Workstation Edition)
  • OS Build: (null)
  • OS Type: 64-bit
  • GNOME Version: 46
  • Windowing System: Wayland
  • Kernel Version: Linux 6.10.6-200.fc40.x86_64

Things I tried

  • Enabled mutter/experimental-features/"variable-refresh-rate" in dconf Editor
  • rixieua/mutter-patched (I disabled this after it didn’t work)

Output of lsmod

$ lsmod | grep nvidia
nvidia_drm            135168  60
nvidia_modeset       1650688  12 nvidia_drm
nvidia_uvm           6844416  0
nvidia              72577024  254 nvidia_uvm,nvidia_modeset
i2c_nvidia_gpu         12288  0
video                  81920  2 dell_wmi,nvidia_modeset

Grub config

$ cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet selinux=0 nvidia_drm.modeset=1 nvidia_drm.fbdev=1 rd.driver.blacklist=nouveau modprobe.blacklist=nouveau"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

modprobe.d

cat /etc/modprobe.d/nvidia.conf 
blacklist nouveau
options nvidia NVreg_PreserveVideoMemoryAllocations=1 # Added to fix issue where gnome-shell would crash when waking from suspend

That’s all the details I can think of for now. Any help with this is appreciated.

I am on an older card than you are, RTX 4060, but be curious if you ran glmark2 on both drivers. This is output from mine. I also upgraded to F41 branched release and am on kernel 6.11

glmark2 2023.01

OpenGL Information
GL_VENDOR:      Intel
GL_RENDERER:    Mesa Intel(R) Graphics (RPL-P)
GL_VERSION:     4.6 (Compatibility Profile) Mesa 24.2.0
Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
Surface Size:   800x600 windowed

[build] use-vbo=false: FPS: 3407 FrameTime: 0.294 ms
[build] use-vbo=true: FPS: 3836 FrameTime: 0.261 ms
[texture] texture-filter=nearest: FPS: 4113 FrameTime: 0.243 ms
[texture] texture-filter=linear: FPS: 4397 FrameTime: 0.227 ms
[texture] texture-filter=mipmap: FPS: 4671 FrameTime: 0.214 ms
[shading] shading=gouraud: FPS: 3427 FrameTime: 0.292 ms
[shading] shading=blinn-phong-inf: FPS: 3364 FrameTime: 0.297 ms
[shading] shading=phong: FPS: 3378 FrameTime: 0.296 ms
[shading] shading=cel: FPS: 2872 FrameTime: 0.348 ms
[bump] bump-render=high-poly: FPS: 1731 FrameTime: 0.578 ms
[bump] bump-render=normals: FPS: 4710 FrameTime: 0.212 ms
[bump] bump-render=height: FPS: 4629 FrameTime: 0.216 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 2265 FrameTime: 0.442 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 1128 FrameTime: 0.887 ms
[pulsar] light=false:quads=5:texture=false: FPS: 3470 FrameTime: 0.288 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 1096 FrameTime: 0.912 ms
[desktop] effect=shadow:windows=4: FPS: 1962 FrameTime: 0.510 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 925 FrameTime: 1.082 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1261 FrameTime: 0.793 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 969 FrameTime: 1.032 ms
[ideas] speed=duration: FPS: 2661 FrameTime: 0.376 ms
[jellyfish] : FPS: 1991 FrameTime: 0.502 ms
[terrain] : FPS: 495 FrameTime: 2.022 ms
[shadow] : FPS: 3799 FrameTime: 0.263 ms
[refract] : FPS: 874 FrameTime: 1.145 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 4104 FrameTime: 0.244 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 2915 FrameTime: 0.343 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3031 FrameTime: 0.330 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 2867 FrameTime: 0.349 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2967 FrameTime: 0.337 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 2885 FrameTime: 0.347 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 2891 FrameTime: 0.346 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3534 FrameTime: 0.283 ms

glmark2 Score: 2805

Not to sound difficult on my own first post here, but given how much time I’ve already spent switching back and forth between drivers, breaking and fixing them, I would really rather avoid doing any more of that if possible. If you insist that this will very likely help us figure out the problem, I will gladly do so.

However, I am fairly certain the issue is more related to gnome-shell than overall performance as everything else (videos, games, etc) looks perfectly smooth. The only thing that looks choppy are the gnome-shell animations. Some of them look to me like they’re capped at 60fps (refresh rate of my secondary monitory), while others (such as overview transition) lag to varying degrees.

Here’s the output of glxmark2 on my currently installed 560 driver.

=======================================================
    glmark2 2023.01
=======================================================
    OpenGL Information
    GL_VENDOR:      NVIDIA Corporation
    GL_RENDERER:    NVIDIA GeForce RTX 2080/PCIe/SSE2
    GL_VERSION:     4.6.0 NVIDIA 560.35.03
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
    Surface Size:   800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 5158 FrameTime: 0.194 ms
[build] use-vbo=true: FPS: 6682 FrameTime: 0.150 ms
[texture] texture-filter=nearest: FPS: 6654 FrameTime: 0.150 ms
[texture] texture-filter=linear: FPS: 6539 FrameTime: 0.153 ms
[texture] texture-filter=mipmap: FPS: 6623 FrameTime: 0.151 ms
[shading] shading=gouraud: FPS: 6585 FrameTime: 0.152 ms
[shading] shading=blinn-phong-inf: FPS: 6489 FrameTime: 0.154 ms
[shading] shading=phong: FPS: 6473 FrameTime: 0.155 ms
[shading] shading=cel: FPS: 6400 FrameTime: 0.156 ms
[bump] bump-render=high-poly: FPS: 6285 FrameTime: 0.159 ms
[bump] bump-render=normals: FPS: 6598 FrameTime: 0.152 ms
[bump] bump-render=height: FPS: 6533 FrameTime: 0.153 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 6365 FrameTime: 0.157 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 5937 FrameTime: 0.168 ms
[pulsar] light=false:quads=5:texture=false: FPS: 6523 FrameTime: 0.153 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 4299 FrameTime: 0.233 ms
[desktop] effect=shadow:windows=4: FPS: 5718 FrameTime: 0.175 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1414 FrameTime: 0.708 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 1867 FrameTime: 0.536 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 1568 FrameTime: 0.638 ms
[ideas] speed=duration: FPS: 6235 FrameTime: 0.160 ms
[jellyfish] <default>: FPS: 6264 FrameTime: 0.160 ms
[terrain] <default>: FPS: 1608 FrameTime: 0.622 ms
[shadow] <default>: FPS: 6069 FrameTime: 0.165 ms
[refract] <default>: FPS: 3365 FrameTime: 0.297 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 6550 FrameTime: 0.153 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 6480 FrameTime: 0.154 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 6553 FrameTime: 0.153 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 6513 FrameTime: 0.154 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 6510 FrameTime: 0.154 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 6531 FrameTime: 0.153 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 6513 FrameTime: 0.154 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 6500 FrameTime: 0.154 ms
=======================================================
                                  glmark2 Score: 5647 
=======================================================

I just re-enabled rixieua/mutter-patched and it’s looking pretty good now. I don’t think I really changed anything else… gnome-shell overview still doesn’t look perfect but overall I think this is good enough.

Have you considered disabling animations?

gsettings set 'org.gnome.desktop.interface' 'enable-animations' 'false'

I’m not convinced GNOME animations on any hardware can be 100% always-smooth, and disabling the animations also speeds up UX interactions.

1 Like