Mittwoch, 11. März 2015

Remove video tearing from nVidia GTX 600/700/Titan series on Linux

Background Story:
A few days back I switched from KUbuntu to Arch Linux, mainly because wanted more control over my System and also because I was not to Happy with KDE anymore.
On Arch Linux the first Window Manager I tried was Plasma5, and I managed to fix a screen tearing issue with the help of some of its setting. But overall I found Plasma to be a bit buggy on some parts and felt that I needed some other Window Manager, wich was why I switched to XFCE one or two days later.
The problem: Screen tearing in XFCE, no matter what I tried to fix it (Using compton, some edits in the .xinitrc file ...), it just stayed and after something I changed it even got quite a bit worse. After searching the web for a while I found this little change to your xorg.conf that fixed it right away:

The Solution:
I found a way to fix my problem at this page:
https://wiki.manjaro.org/index.php?title=Remove_video_tearing_from_nVidia_GTX_600/700/Titan_series

It says to add this line to your screen section in /etc/X11/xorg.conf:
Option "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }" A problem I had with that was the following: I use three monitors and also I used nvidia-settings to generate my xorg.conf file.
nvidia-settings seems to auto-generate the part Option "metamodes" "nvidia-auto-select +0+0 so you just need to add the part in the curly brackets. Also, if you have multiple monitors, this thing will look slightly different:
Option "metamodes" "VGA-0: nvidia-auto-select +0+0, DVI-D-0: nvidia-auto-select +3200+0 , HDMI-0: nvidia-auto-select +1280+0" So as you can see the option has one part for each monitor. You then just need to add the {ForceFullCompositionPipeline=On} part to every monitor, so my end result was this line:
Option "metamodes" "VGA-0: nvidia-auto-select +0+0 {ForceFullCompositionPipeline=On}, DVI-D-0: nvidia-auto-select +3200+0 {ForceFullCompositionPipeline=On} , HDMI-0: nvidia-auto-select +1280+0 {ForceFullCompositionPipeline=On}"