My last videocards since 2011 was Nvidia based cards: I owned gtx 560, gtx 960, gtx 1060, rtx 2060super, and now by august 2023 on my main setup I own a rtx 3070ti.
I tried to use most of thems under Windows and under Linux. Under Windows there’s absolutely no problems, drivers are unique and official released by mother company. But under Linux?
Nvidia cards drivers were official released by Nvidia on Linux since 1999, so for long period until now. They were always closed propretary code, and only by 2022 Nvidia start releasing Nvidia kernel modules under GPL license.
For what I have to say and for my experience I remember a couple of times I was trying to install official Nvidia drivers on Linux, and for doing that it’s a bit tricky because before installing Nvidia package, you need to blacklist noeveau, the default graphic module in Linux kernel.
Since when Nvidia modules where open source relesed I would say it becomes so easy install Nvidia drivers in every distribution: I tried Arch and some Ubuntu derivates, the process is the same on each distribution. Once installed the base system, go in official distribution repositories and download Nvidia driver relative at your hardware. Et voila! They will run flawless without any problems.
For my experience I had a problem with Nvidia drivers and Debian 12 bookworm, because once installed the base system I was stuck in a black screen. How I resolved this? Simple! I logged in a rescue terminal and I downloaded Nvidia drivers from official Debian repositories. How it went? Everything went fine after installing the corresponding Nvidia drivers.
I have to say until 1 year ago I was using Nvidia Surround functionality offered natively by Nvidia drivers running under Windows where you can use 2 or more monitors for obtaing a single big monitors, for a complete videogames or multimedia immersion.
So, excited, I bought 2 equals 1080p at 75hz monitors by MSI, very decent monitors. But sadly I was not able to enjoy Nvidia surrond on Linux, because I found Nvidia surround development is still nowdays so immature. Maybe in future? Who knows.
A point that make me difficult decision from using Windows or Linux as primary computer was also this, but I was enjoying more gaming under Linux. So?
After understanding this, and as I want to continue my Linux journey, I bought a 144hz curve monitor, 32 inches and 3440x1440 resolution, for enjoy ultrawide gaming experience on a single monitor. Now on my daily computer I have 2 monitors setup, one 32’’ ultrawide and one 27’’ 1080p. The problem I had on Linux is that fullscreen games on primary monitor with a different refresh rate from other monitor will run at maximum refresh rate of the second monitor. So on my 144hz monitor I was playing videogames at 75fps. I asked in a local Italian Linux community and they said me “you can’t do it, Nvidia drivers can’t support it”. Is it really true? So I went deeply and I discovered these guys were wrong, since I found a very good documentation on reddit:
The steps I followed were those:
-
add __GL_SYNC_DISPLAY_DEVICE=DP-0 at the end of /etc/environment (modify DP-0 with your current primary monitor on your setup, you can get the string with xrandr)
-
run nvidia-settings, go to OpenGL Settings and uncheck Allow Flipping
-
create a custom sh file containg those lines:
#!/bin/bash
nvidia-settings --load-config-only &
-
make sure to launch this script at system startup (in XFCE it’s so easy do it)
-
reboot the machine
After followed these steps it works like a charm, I was able to run natively 144hz videogames in ultrawide primary monitor, and the second monitor was running at 75hz, it’s default refresh rate.
Now I know it’s a little tricky/specific behaviour, but someone it might be useful follow this guideline.
In conclusion I want to say Nvidia marriage in Linux nowdays is not so bad, drivers are present in most distribution repositories, and in some cases, for example in POP!_OS, Nvidia drivers are natively builted into distribution iso, so install the system and run it without any kind of problem.
The same for Nvidia modules, they are released for any modern kernel, you might found some mismatch headers version, but in general, if you stuck with distribution repository mainline release, there will always compatibility with Nvidia cards in latest kernel, even in some LTS releases.