Linux/NVIDIA Screen Tearing Fix
Screen Tearing on NVIDIA
One of the most annoying things that has bugged me for years while using an NVIDIA graphics card with Linux is the screen tearing which happens while gaming or watching videos. You can see if your current setup suffers from this by viewing the example video below in full screen.
If you see breaks in the black lines while they are scrolling, then you have screen tearing too. It's most notable in games or watching things like Netflix or movies in "VLC" or "mpv".
After moving to Manjaro Xfce a few years ago, I didn't notice this any more as it was somehow fixed for me on that desktop environment. However, when I switched to using "Awesome" window manager, I noticed that the problem came back even while using the "picom" compositor.
The Permanent Fix
After a bit of tinkering I found a solution - it involves setting the "Force Composition Pipeline" to ON in the nvidia-settings. The config file for the settings are saved to is /etc/X11/xorg.conf
. However, for the changes to remain permanent on Manjaro after a reboot, they need to be saved to /etc/X11/mhwd.d/nvidia.conf
by running the nvidia-settings
as root.
Open the "nvidia-settings" in sudo to perform the fix,
1sudo nvidia-settings
- Select "X Server Display Configuration" on the left panel.
- Press the "Advanced" button and tick "Force Composition Pipeline" for all of your displays in the Layout panel.
:memo: Don't enable "Force Full Composition Pipeline" or you may notice a performance hit while gaming.
IMPORTANT
Pressing the "Save to X Configuration File" button, you'll see that the location for the nvidia settings points to /etc/X11/xorg.conf
, DO NOT SAVE YOUR NEW SETTINGS HERE IF YOU ARE ON MANJARO. Instead, save your changes to /etc/X11/mhwd.d/nvidia.conf
This is the settings the NVIDIA driver will use after a reboot. You can test the results by pressing Apply in NVIDIA-Settings.
You can view the changes after a reboot if you wish by opening a terminal and typing,
1nvidia-settings --query CurrentMetaMode
If everything is correctly configured, you should see that in the output that ForceCompositionPipeline=On
for each of your displays.
You should now have no screen tearing while watching videos or playing games on Manjaro while using an NVIDIA graphics card, and the changes you made will remain after a reboot.