It cost me a lot of time to troubleshoot the screen tearing. So I want to share my solution for everyone with the same frustrating tearing issues. My private setup is a Lenovo Ideapad (gaming) with Nvidia and Intel (Prime) GPU. I use the laptop screen and an external 24″ HDMI display.
In Windows 10 everything goes smooth but when I switch my dual boot to Linux than the frustrations begin.
I tried a lot of different Linux distributions (Fedora, Solus, Ubuntu, Pop_OS!, Arch Linux, OpenSuse, and Zorin OS) and I try KDE Plasma, Gnome, and Budgie a lot of hacks for all these systems to get a smooth Linux GUI without screen tearing or other lag.
But I don’t like manual modifications/hacks to get the Nvidia setup smooth. Especially the proprietary Nvidia drivers can break your system easily. So this fix is easy to remember and easy to switch if you want the power saver back to full and use the Intel driver instead of the Nvidia one.
Important, choose your display!
What you have to keep in mind when you have a lot of screen tearing is to make a decision. Use your laptop display or external display. You can fix both displays but not at the same time in a smooth way. If I found a solution in the feature I will post it on my blog. But in the meanwhile, I use only one screen at the same time.
This procedure is for Ubuntu 20.04 LTS but it will work for other distributions for sure.
Install the driver
After a fresh ubuntu installation, Nvidia and HDMI do not work as they should be. So, kick off the first command and reboot.
$ sudo ubuntu-drivers autoinstall
Configure Nvidia driver Part I
Now configure the Nvidia/Intel prime in on-demand mode. So you can do further configuration in the nvidia-settings gui
$ sudo prime-select on-demand
- And reboot again
- Now start Nvidia settings and switch to NVIDIA (Performance Mode)
- Click save and….. reboot!
Turn off one display
Go to your KDE or Gnome display settings and turn off one display. KDE saves these settings so when you plug out the HDMI cable afterward KDE will activate your laptop display. And of course, when you plug in your HDMI cable next time he will turn off your laptop display.
Configure Nvidia driver Part II
These steps are optional but needed for a better performance.
- Start nvidia-settings > GPU 0 > PowerMixer
- Change the Preffered Mode to “Prefer Maximum Performance”
Last but not least: Firefox hardware rendering
For some compatibility reasons, hardware rendering in Firefox is turned off by default. So you have to enable it.
- Set layers.acceleration.force-enabled to true
- Quit Firefox and restart it
Some debug information
I always use this YouTube video to check if the screen tearing is varnished completely
When you want to see if your have the right drivers loaded, use this command:
$ lspci -k | grep -EA3 'VGA|3D|Display'
And you can start an application with max video power with this command. Change gears to your own program off course. But I like gears because you can see the FPS realtime (see the screen what a differance 😉 )
$ __NV_PRIME_RENDER_OFFLOAD=1 glxgears
nvidia-smi you can see if nvidia is running the application
Enjoy your tearing free Linux 🙂