If you have some immediate suggestions by just reading the tile, please share it. If it doesn’t apply to my setup or if it’s something I’ve already described trying, I’ll note it in a response to your comment. I’m grateful for any consideration just the same.
Intro:
After the 545 driver update from Nvidia, I’ve decided to check out Wayland through Hyrpland as a compositor (though my issue is the same when using Wayland via KDE). Everything is working fine, except games.
Problem:
Every game I’ve tried so far has the same jittering issues. I believe the GPU is rendering old frames onto the screen, resulting an image of frame1->2->3->4->5->4->6. This causes everything to jitter and look somewhat blurry.
I’ve seen this problem described before in the context of using variable refresh rates like freesync or G-sync, but while my monitor has support for these features, they are disabled and I don’t desire to use them.
Everything else seems to be working fine.
My Setup:
Most Relevant:
nvidia-dkms, version 545.29.02
nvidia_drm.modeset=1 in grub
MODULES=(nvidia nvidia_modeset nvidia__uvm nvidia_drm) in mkinitcpio.conf
QT_QPA_PLATFROM=wayland in /etc/environment
General:
Kernel: 6.6.1-arch1-1
Compositor: Hyprland
Hardware:
CPU: AMD Ryzen 9 7900X, iGPU disabled in BIOS
GPU: GeForce RTX 4090
Can’t solve it with Gamescope:
My plan was to just escape these issues by using gamescope, but whatever I try to launch through gamescope seems to only render the first (couple) frames of whatever I’m launching, then rendering stops and I either see a still image of the last frame rendered or a black screen. I can’t normally stop gamescope either, I have to kill the process, at which point I either experience a brief freezing of the system until its killed or the entire DE crashes and I’m thrown back into the CLI.
I’m not at all married to using gamescope, but if a fix for gamescope is easier than a fix for my Wayland issue, I’d be just as happy.
Do you have direct scanout enabled? On my computer, jittering happens on XWayland applications when they’re not rendered fullscreen with direct scanout, so I can just work around this issue by making the app fullscreen (always assuming that
no_direct_scanout
is set tofalse
in the config file)