Hey all,
please tell me about your experience with modern Nvidia GPU’s and Wayland. Because mine is just terrible.
I have an RTX 3060 OC (12GB) and the card works very well on Windows and X11. My distribution is Fedora Linux 39 (KDE Plasma) with the rpmfusion repos enabled. I use Nvidia’s proprietary driver in its latest version from there, which is currently 545.29.06. Kernel 6.6.13. So it all seems very modern and up-to-date.
But everything comes crashing down when I try to use this GPU on Wayland. Yesterday I wanted to just watch a movie with mpv. After about 10 minutes, the screen started to flicker like an old CRT monitor running at a low refresh rate. I had to reboot to make it work again. Watched for another half hour or so and the screen just turned off and never turned back on again. Even switching to a console with Ctrl+F1 didn’t work, but the system was still running.
The console is full of Nvidia-related errors and I have a ton of graphical glitches when I open up VS Code, for example - only part of the application refreshes properly sometimes, it seems a bit like part of the UI rendering is just massively lagging behind.
Keep in mind that all of these problems go away as soon as I switch to X11 or Windows. Is it just me or are Nvidia’s drivers hot garbage and basically alpha software? I regret not going with an AMD card at this point. Even the Intel UHD620 in my notebook performs better than this.
Edit: I tried upgrading to the 550 beta driver now and it just segfaults in libnvidia-glcore.so when I try to run anything Wayland-related. Can’t even get to sddm with it anymore and have to start KDE from a TTY. Of course, xorg still works fine.
Edit #2: I was finally upgrade to the 550 beta, had to switch to Fedora 40 (which is the development branch) and patch the driver so the kernel module can be compiled. It seems to work a bit better, the UI lag isn’t as massive and there are fewer glitches in VS Code. Still far from perfect, though - I still have out of order frames in Steam games and YouTube videos which are really annoying.
An example of what I see when I run dmesg when Wayland is active:
[ 18.181604] [drm] [nvidia-drm] [GPU ID 0x00008100] Failed to ioremap_wc NvKmsKapiMemory 0x00000000c73546fd [ 18.181622] ------------[ cut here ]------------ [ 18.181623] WARNING: CPU: 1 PID: 1902 at drivers/dma-buf/dma-buf.c:1526 dma_buf_vmap+0xf0/0x100 [ 18.181626] Modules linked in: nvidia_drm(POE) nvidia_modeset(POE) nf_conntrack_netbios_ns nf_conntrack_broadcast nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nvidia_uvm(POE) nft_ct nft_chain_nat nf_nat nf_conntrack nvidia(POE) nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables nfnetlink qrtr bnep sunrpc intel_rapl_msr intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp iwlmvm kvm_intel snd_seq_midi snd_seq_midi_event mac80211 kvm snd_hda_codec_hdmi libarc4 snd_usb_audio snd_hda_intel irqbypass snd_intel_dspcfg snd_intel_sdw_acpi snd_hda_codec vfat snd_usbmidi_lib rapl snd_ump fat snd_hda_core iwlwifi snd_rawmidi mc snd_hwdep btusb snd_seq btrtl snd_seq_device btintel iTCO_wdt btbcm intel_cstate btmtk intel_pmc_bxt snd_pcm ipmi_ssif iTCO_vendor_support cfg80211 snd_timer bluetooth intel_uncore snd mei_me pcspkr video soundcore mei lpc_ich i2c_i801 i2c_smbus ioatdma rfkill acpi_ipmi ipmi_si ipmi_devintf ipmi_msghandler acpi_power_meter acpi_pad [ 18.181662] joydev loop zram crct10dif_pclmul crc32_pclmul crc32c_intel polyval_clmulni polyval_generic mxm_wmi ixgbe ghash_clmulni_intel nvme sha512_ssse3 ast sha256_ssse3 sha1_ssse3 nvme_core i2c_algo_bit mdio dca nvme_common wmi fuse [ 18.181672] CPU: 1 PID: 1902 Comm: kwin_wayland Tainted: P S W OE 6.6.13-200.fc39.x86_64 #1 [ 18.181674] Hardware name: Supermicro X10DRi/X10DRI-T, BIOS 3.4a 08/16/2021 [ 18.181675] RIP: 0010:dma_buf_vmap+0xf0/0x100 [ 18.181677] Code: c0 01 89 43 28 48 85 c9 74 1c 48 8b 43 30 48 8b 53 38 49 89 04 24 49 89 54 24 08 eb c3 0f 0b b8 ea ff ff ff eb bc 0f 0b 0f 0b <0f> 0b eb b4 b8 ea ff ff ff eb ad e8 10 36 4b 00 90 90 90 90 90 90 [ 18.181678] RSP: 0018:ffffc9000835fae8 EFLAGS: 00010282 [ 18.181680] RAX: 00000000fffffff4 RBX: ffff88812076dc00 RCX: 0000000000000027 [ 18.181681] RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffff88885f861580 [ 18.181682] RBP: ffffc9000835fb10 R08: 0000000000000000 R09: ffffc9000835f938 [ 18.181683] R10: 0000000000000003 R11: ffff88907ff42c28 R12: ffff88810e7c9898 [ 18.181684] R13: ffff88810e7c9898 R14: ffff88810e7c9898 R15: 0000000000000000 [ 18.181685] FS: 00007fb77685aec0(0000) GS:ffff88885f840000(0000) knlGS:0000000000000000 [ 18.181687] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 18.181688] CR2: 0000563fd8fb62d8 CR3: 0000000120dbe004 CR4: 00000000001706e0 [ 18.181689] Call Trace: [ 18.181690] <TASK> [ 18.181691] ? dma_buf_vmap+0xf0/0x100 [ 18.181693] ? __warn+0x81/0x130 [ 18.181695] ? dma_buf_vmap+0xf0/0x100 [ 18.181697] ? report_bug+0x171/0x1a0 [ 18.181700] ? handle_bug+0x3c/0x80 [ 18.181702] ? exc_invalid_op+0x17/0x70 [ 18.181704] ? asm_exc_invalid_op+0x1a/0x20 [ 18.181708] ? dma_buf_vmap+0xf0/0x100 [ 18.181710] ? dma_buf_vmap+0x81/0x100 [ 18.181712] drm_gem_shmem_vmap+0x2b/0x1b0 [ 18.181715] ? dma_resv_get_singleton+0x46/0x140 [ 18.181717] drm_gem_vmap+0x22/0x50 [ 18.181720] drm_gem_vmap_unlocked+0x2a/0x50 [ 18.181722] drm_gem_fb_vmap+0x41/0x120 [ 18.181725] drm_atomic_helper_prepare_planes+0x17a/0x210 [ 18.181727] drm_atomic_helper_commit+0x78/0x140 [ 18.181729] drm_mode_atomic_ioctl+0xa57/0xc70 [ 18.181733] ? __pfx_drm_mode_atomic_ioctl+0x10/0x10 [ 18.181735] drm_ioctl_kernel+0xd6/0x180 [ 18.181737] drm_ioctl+0x26d/0x4b0 [ 18.181738] ? __pfx_drm_mode_atomic_ioctl+0x10/0x10 [ 18.181742] __x64_sys_ioctl+0x97/0xd0 [ 18.181745] do_syscall_64+0x60/0x90 [ 18.181748] ? __x64_sys_ioctl+0xaf/0xd0 [ 18.181750] ? syscall_exit_to_user_mode+0x2b/0x40 [ 18.181752] ? do_syscall_64+0x6c/0x90 [ 18.181754] ? syscall_exit_to_user_mode+0x2b/0x40 [ 18.181756] ? do_syscall_64+0x6c/0x90 [ 18.181758] ? syscall_exit_to_user_mode+0x2b/0x40 [ 18.181760] ? do_syscall_64+0x6c/0x90 [ 18.181762] ? syscall_exit_to_user_mode+0x2b/0x40 [ 18.181764] ? do_syscall_64+0x6c/0x90 [ 18.181766] ? do_syscall_64+0x6c/0x90 [ 18.181769] entry_SYSCALL_64_after_hwframe+0x6e/0xd8 [ 18.181771] RIP: 0033:0x7fb77b52f17d [ 18.181775] Code: 04 25 28 00 00 00 48 89 45 c8 31 c0 48 8d 45 10 c7 45 b0 10 00 00 00 48 89 45 b8 48 8d 45 d0 48 89 45 c0 b8 10 00 00 00 0f 05 <89> c2 3d 00 f0 ff ff 77 1a 48 8b 45 c8 64 48 2b 04 25 28 00 00 00 [ 18.181776] RSP: 002b:00007ffd48b3ca20 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [ 18.181778] RAX: ffffffffffffffda RBX: 0000563fd9356ac0 RCX: 00007fb77b52f17d [ 18.181779] RDX: 00007ffd48b3cac0 RSI: 00000000c03864bc RDI: 0000000000000014 [ 18.181779] RBP: 00007ffd48b3ca70 R08: 0000000000000007 R09: 0000000000000002 [ 18.181780] R10: 0000000000000002 R11: 0000000000000246 R12: 00007ffd48b3cac0 [ 18.181781] R13: 00000000c03864bc R14: 0000000000000014 R15: 0000563fd92bee30 [ 18.181783] </TASK> [ 18.181784] ---[ end trace 0000000000000000 ]---