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 moving over to the “Awesome” window manager I noticed that it came back, and even using the “picom” compositor didn’t fix it.
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 that these settings are normally 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,
- 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.
📝 Don’t enable “Force Full Composition Pipeline” or you may notice a performance hit while gaming.
Pressing the “Save to X Configuration File” button, you’ll see that the location for the nvidia settings points to
/etc/X11/xorg.conf, NO NOT SAVE YOUR NEW SETTINGS HERE IF YOU ARE ON MANJARO. Instead, save your changes to
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,
nvidia-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.