Compositor high refresh rate works, but only sometimes

If I drag a window around on my screen, it’s usually very choppy—not up to my monitor’s refresh rate, and not at a steady cadence. However, if I start playing a video or a 3D application (e.g. glxgears), that particular window will move buttery-smooth on my main monitor. I would like all my windows to run this way, if it’s possible.

I have a mixed-refresh setup (main monitor 144Hz, aux monitor 60Hz) running on a 20-series Nvidia card with proprietary drivers (510). I am running Fedora 35, using X11 (not Wayland).

I’ve tried the “Force full composition pipeline” settings in the Nvidia control panel, but I didn’t notice any effect. The monitors’ refresh rates are set properly in Settings, and also show correctly in xrandr.

And just to head off some likely comments—yes, I know that the real solution here is Wayland. I’ve tried it out on my machine, and I was pleased to see that the compositing was basically perfect. However, it wasn’t stable enough to use for more than 30-60 minutes at the time I tested it out. Since X11 is clearly able to refresh at 144Hz sometimes, I’m just hoping there’s a trick to get that behavior all of the time. Or maybe Wayland/Nvidia will be ready for prime-time in F36, that would be cool… :wink:

1 Like

You did not say whether this is a laptop with the dual GPU feature or if the system has only one GPU. With that info it may be possible to give better advice. Please post the output of inxi -Fzx so we can see the actual hardware of concern.

On my laptop with dual GPU (intel IGP and nvidia GPU) I find that setting the nvidia GPU as primary has solved all my graphics issues and things just work as they are supposed to. The IGP is never used so there are no conflicts between devices and graphics output.

1 Like

Thanks for the reply. I should have mentioned, I’m using a desktop system with a single, discrete GPU. My CPU lacks an iGPU.

$ inxi -Fzx
System:
  Kernel: 5.16.14-200.fc35.x86_64 x86_64 bits: 64 compiler: gcc
    v: 2.37-10.fc35 Desktop: GNOME 41.4 Distro: Fedora release 35 (Thirty Five)
Machine:
  Type: Desktop System: Gigabyte product: Z390 AORUS PRO WIFI v: N/A
    serial: <superuser required>
  Mobo: Gigabyte model: Z390 AORUS PRO WIFI-CF v: x.x
    serial: <superuser required> UEFI: American Megatrends v: F11
    date: 10/15/2019
Battery:
  Device-1: hid-e8:06:88:53:6f:cf-battery model: Apple Wireless Keyboard
    charge: N/A status: Discharging
CPU:
  Info: 8-core model: Intel Core i9-9900K bits: 64 type: MT MCP
    arch: Coffee Lake rev: D cache: L1: 512 KiB L2: 2 MiB L3: 16 MiB
  Speed (MHz): avg: 5098 high: 5172 min/max: 800/5100 cores: 1: 5099
    2: 5093 3: 5096 4: 5104 5: 5054 6: 5098 7: 5098 8: 5172 9: 5131 10: 5081
    11: 5079 12: 5095 13: 5101 14: 5101 15: 5129 16: 5045 bogomips: 115200
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
  Device-1: NVIDIA TU102 [GeForce RTX 2080 Ti Rev. A] vendor: eVga.com.
    driver: nvidia v: 510.47.03 bus-ID: 01:00.0
  Display: x11 server: X.Org v: 1.20.14 driver: X: loaded: nvidia
    unloaded: fbdev,modesetting,nouveau,vesa gpu: nvidia resolution:
    1: 2560x1440~144Hz 2: 1080x1920~60Hz
  OpenGL: renderer: NVIDIA GeForce RTX 2080 Ti/PCIe/SSE2
    v: 4.6.0 NVIDIA 510.47.03 direct render: Yes
Audio:
  Device-1: Intel Cannon Lake PCH cAVS vendor: Gigabyte driver: snd_hda_intel
    v: kernel bus-ID: 00:1f.3
  Device-2: NVIDIA TU102 High Definition Audio vendor: eVga.com.
    driver: snd_hda_intel v: kernel bus-ID: 01:00.1
  Device-3: C-Media CM6631A Audio Processor type: USB
    driver: hid-generic,snd-usb-audio,usbhid bus-ID: 1-13.4:9
  Sound Server-1: ALSA v: k5.16.14-200.fc35.x86_64 running: yes
  Sound Server-2: PipeWire v: 0.3.48 running: yes
Network:
  Device-1: Intel Cannon Lake PCH CNVi WiFi driver: iwlwifi v: kernel
    bus-ID: 00:14.3
  IF: wlo1 state: up mac: <filter>
  Device-2: Intel Ethernet I219-V vendor: Gigabyte driver: e1000e v: kernel
    port: N/A bus-ID: 00:1f.6
  IF: eno2 state: down mac: <filter>
Bluetooth:
  Device-1: Intel Bluetooth 9460/9560 Jefferson Peak (JfP) type: USB
    driver: btusb v: 0.8 bus-ID: 1-14:5
  Report: rfkill ID: hci0 rfk-id: 0 state: up address: see --recommends
Drives:
  Local Storage: total: 6.41 TiB used: 2.42 TiB (37.7%)
  ID-1: /dev/nvme0n1 vendor: Intel model: SSDPEKNW010T8 size: 953.87 GiB
    temp: 38.9 C
  ID-2: /dev/nvme1n1 vendor: Intel model: SSDPEKNW010T8 size: 953.87 GiB
    temp: 36.9 C
  ID-3: /dev/sda vendor: Seagate model: ST5000LM000-2AN170 size: 4.55 TiB
Partition:
  ID-1: / size: 952.28 GiB used: 118.62 GiB (12.5%) fs: btrfs
    dev: /dev/nvme0n1p3
  ID-2: /boot size: 973.4 MiB used: 245.5 MiB (25.2%) fs: ext4
    dev: /dev/nvme0n1p2
  ID-3: /boot/efi size: 598.8 MiB used: 13.9 MiB (2.3%) fs: vfat
    dev: /dev/nvme0n1p1
  ID-4: /home size: 952.28 GiB used: 118.62 GiB (12.5%) fs: btrfs
    dev: /dev/nvme0n1p3
Swap:
  ID-1: swap-1 type: zram size: 8 GiB used: 0 KiB (0.0%) dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 27.8 C pch: 61.0 C mobo: N/A gpu: nvidia
    temp: 55 C
  Fan Speeds (RPM): N/A gpu: nvidia fan: 13%
Info:
  Processes: 559 Uptime: 48m Memory: 15.55 GiB used: 3.13 GiB (20.2%)
  Init: systemd runlevel: 5 Compilers: gcc: 11.2.1 Packages: 10
  note: see --pkg Shell: Zsh v: 5.8.1 inxi: 3.3.13

My only additional question (well 2 really) is to ask if 1) you installed the nvidia driver from rpmfusion, and 2) if you have copied the file /usr/share/X11/xorg.conf.d/nvidia.conf to /etc/X11/xorg.conf.d/nvidia.conf.
That file is provided when installing from rpmfusion and does contain some configs that may help if you choose to copy it over then reboot.

All of my nvidia driver packages are from rpmfusion-nonfree-nvidia-driver or @commandline. The only one I manually installed was akmod-nvidia, everything else was installed automatically.

$ dnf info --installed *nvidia*|grep -iP "from repo|name"
Name         : akmod-nvidia
From repo    : rpmfusion-nonfree-nvidia-driver
Name         : kmod-nvidia-5.16.12-200.fc35.x86_64
From repo    : @commandline
Name         : kmod-nvidia-5.16.14-200.fc35.x86_64
From repo    : @commandline
Name         : kmod-nvidia-5.16.18-200.fc35.x86_64
From repo    : @commandline
Name         : nvidia-settings
From repo    : rpmfusion-nonfree-nvidia-driver
Name         : xorg-x11-drv-nvidia
From repo    : rpmfusion-nonfree-nvidia-driver
Name         : xorg-x11-drv-nvidia-cuda-libs
From repo    : rpmfusion-nonfree-nvidia-driver
Name         : xorg-x11-drv-nvidia-kmodsrc
From repo    : rpmfusion-nonfree-nvidia-driver
Name         : xorg-x11-drv-nvidia-libs
From repo    : rpmfusion-nonfree-nvidia-driver
Name         : xorg-x11-drv-nvidia-power
From repo    : rpmfusion-nonfree-nvidia-driver

I had not copied that file over. Unfortunately, I don’t see any difference after copying and rebooting.

This is a list of all the nvidia packages I have installed. There are a few that are missing on your system and I have no idea if they may affect your display or not, but maybe?

$ dnf list installed *nvidia*
Installed Packages
akmod-nvidia.x86_64                                           3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
kmod-nvidia-5.16.15-201.fc35.x86_64.x86_64                    3:510.47.03-2.fc35                    @@commandline                   
kmod-nvidia-5.16.16-200.fc35.x86_64.x86_64                    3:510.60.02-1.fc35                    @@commandline                   
kmod-nvidia-5.16.18-200.fc35.x86_64.x86_64                    3:510.60.02-1.fc35                    @@commandline                   
nvidia-modprobe.x86_64                                        3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
nvidia-persistenced.x86_64                                    3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
nvidia-settings.x86_64                                        3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
nvidia-xconfig.x86_64                                         3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia.x86_64                                    3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-cuda.x86_64                               3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-cuda-libs.i686                            3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-cuda-libs.x86_64                          3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-devel.x86_64                              3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-kmodsrc.x86_64                            3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-libs.i686                                 3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-libs.x86_64                               3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-power.x86_64                              3:510.60.02-1.fc35                    @rpmfusion-nonfree-nvidia-driver

The way you posted yours I cannot see the version of the drivers so I assume it is up to date as is mine.

Thanks. I tried installing your full list of packages, but still no luck. Here’s what I’ve got now:

$ dnf list installed *nvidia*
Installed Packages
akmod-nvidia.x86_64                        3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
kmod-nvidia-5.16.12-200.fc35.x86_64.x86_64 3:510.47.03-2.fc35 @@commandline     
kmod-nvidia-5.16.14-200.fc35.x86_64.x86_64 3:510.60.02-1.fc35 @@commandline     
kmod-nvidia-5.16.18-200.fc35.x86_64.x86_64 3:510.60.02-1.fc35 @@commandline     
nvidia-modprobe.x86_64                     3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
nvidia-persistenced.x86_64                 3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
nvidia-settings.x86_64                     3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
nvidia-xconfig.x86_64                      3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia.x86_64                 3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-cuda.x86_64            3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-cuda-libs.i686         3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-cuda-libs.x86_64       3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-devel.x86_64           3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-kmodsrc.x86_64         3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-libs.i686              3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-libs.x86_64            3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver
xorg-x11-drv-nvidia-power.x86_64           3:510.60.02-1.fc35 @rpmfusion-nonfree-nvidia-driver

Most of the missing packages were cuda-related, development files, or 32-bit versions. All of our packages are the same version, except for the 2 older kmods.

My instinct is that video/3D content forces the compositor to update the window at/above the content’s framerate, while other windows get updated at some much lower, “fallback” rate. Is there some way to set a forced refresh rate? Maybe some kind of GNOME config tweak?