5

I read that in order to avoid screen tearing I should enable the option "Force full composition pipeline" on nvidia settings[¹]. However that option doesn't seem to be available in my system.

enter image description here

enter image description here

I thought nvidia-settings might have been held back but according to the blog post below, that option should be available in this version:

enter image description here

Am I missing something?

Thanks

[¹]https://www.gamingonlinux.com/articles/how-to-an-update-on-fixing-screen-tearing-on-linux-with-an-nvidia-gpu.8892

  • Do you experience screen tearing? If not, ignore that advice. If you do then you'll have to enable that in a different way (CCSM is one possibility) because hybrid graphics are a entirely different beast and, as clearly stated in Nvidia X Server settings , PRIME displays cannot be controlled by nvidia settings (...) – user692175 Oct 25 '17 at 1:35
  • Yes I am experiencing screen tearing, Is there a guide on how to solve this with Prime Displays?, Thanks – Filipe Dias Oct 25 '17 at 9:50
  • I think it can be done by installing CCSM and enabling the "force full redraw" or something like that. – user692175 Oct 25 '17 at 12:23
  • I tried it but it doesn't solve the problem – Filipe Dias Oct 26 '17 at 7:29
  • Please see my answer below. Forcing the composition pipeline is not how to deal with tearing in the more recent Nvidia hardware/drivers. – Vanessa Deagan Jan 5 '18 at 22:36
2

I feel your pain. I always have problems trying to figure out how to get rid of tearing on my laptops that have both an Nvidia dGPU (Dedicated GPU) and the iGPU (Integrated GPU).

I'm going to take a stab in the dark and guess that you're system is a PRIME system, in which case the composition pipeline options will not be available (even adding them manually to your xorg.conf file won't work - it'll probably just make your screen go dark).

I think what you're looking for (again, just guessing) is PRIME Synchronization - this is Nvidia's new way of syncing screens.

Try this:

  • Create a file in your /etc/modprobe.d directory called zz-nvidia-tearing.conf.
  • Add the following line to it: options nvidia_387_drm modeset=1 (change "387" to your driver version).
  • From the terminal: sudo update-initramfs -u
  • Reboot.
  • Check is PRIME sync is enabled: xrandr --prop | less

You should see something like:

Screen 0: minimum 8 x 8, current 3840 x 1080, maximum 16384 x 16384
eDP-1-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
        EDID: 
                00ffffffffffff0030e4210500000000
                001a0104951f1178ea9d35945c558f29
                1e505400000001010101010101010101
                0101010101012e3680a070381f403020
                350035ae1000001a542b80a070381f40
                3020350035ae1000001a000000fe004c
                4720446973706c61790a2020000000fe
                004c503134305746362d535042360075
        PRIME Synchronization: 1 

The important line is the last line. If, for some reason, your PRIME sync still isn't enabled (i.e. set to "1"), then try editing the last line of your /etc/modprobe.d/nvidia-graphics-drivers.conf - change it to:

options nvidia_387_drm modeset=1

(again, obviously changing "387" to the version of your installed Nvidia driver).

Don't forget to run:

sudo update-initramfs -u

after you make any changes to any file in /etc/modprobe.d.

If that still doesn't work (which it should, so long as you're using Nvidia driver 370 or higher), then you can try adding the following to your GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub:

nvidia-drm.modeset=1

I don't know what your GRUB_CMDLINE_LINUX_DEFAULT looks like, but after you add the line above, it could look something like this:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1"

I find it astonishing that Nvidia do not enable PRIME Sync by default on hardware the supports it. The reason given is because it doesn't play nicely with SLI - but how many Linux users actually use SLI? I have yet to see any.

If you have any more questions, ask away, I'll try to answer them.

Good luck!

  • This tecnique of Prime Synchronization (putting options nvidia_387_drm modeset=1 inside a config file in modprobe.d) completely broke my system. At restart, kubuntu restarted into a black screen. After 3 hours the solution was to remove a corrupted xorg.conf file: mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak – rtrtrt Dec 6 '18 at 23:56
1

No you just need to Save X Configuration to somewhere...then only the composition setting will be continued for next reboot...So click "Save To X Configuration File" successfully...thats it.

1

In the latest (as of writing this) Nvidia Binary Drivers 430.26 there is such option (of course I am assuming here that the driver is properly installed and works) :

enter image description here

But if it does not show up for You for some reason there is another way to enable it via xorg.conf file.

Here is how it looks like in my system:

Edit /etc/X11/xorg.conf file and the following code to the Screen section (note that there will be more options in Yours) :

Section "Screen"
    Option "metamodes" "3440x1440_75 +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On};"
EndSection

Save and then reboot system.

Another possible way is to use nvidia-settings :

$ nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline=On, ForceFullCompositionPipeline=On }"
0

As an Ubuntu user I've come across this horrible tearing issue and also the installer-freeze issue, both of them related to using an NVIDIA gpu based hardware. I'd like to resolve both problems in this single answer, so here it goes:

The system I'm working with is an Ubuntu 18.04 LTS amd64 running on a Core i7 with a built-in HD Graphics gpu and an NVIDIA GEFORCE GTX 960M gpu.

1st, Ubuntu installer freezes at startup: this is caused by the presence of the NVIDIA chip, so, in order to correct it, boot the installer and press E when the GRUB shows up. Go to the end of the LINUX line and add nouveau.modeset=0. Then continue the booting process by pressing F10. Install the system normally and, when finished, remove the installer media from the computer, reboot the system and log into your account.

Continue below:

2nd, the horrible display tearing problem or the unsynchronized PRIME display: this is caused by an improper configuration of the PRIME display (the system needs to properly offload the graphics in a multiple gpu system configuration), so, firstly, install the proper GPU drivers in the system. In my case, the 390 version driver corresponds to the GTX 960M gpu, so, for example, it would be needed to perform a sudo apt-get install nvidia-driver-390. If the proper driver version is available, I would prefer doing it from the main repositories rather than from a PPA.

After the driver libraries have been installed, go to a terminal and open gedit as a super user with sudo gedit. Then, open the system file /etc/default/grub, locate the line that shows the nouveau.modeset=0 code we set earlier and delete it entirely. Replace that line with GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1" and save. Close gedit and, in the terminal, perform a GRUB update, by doing a sudo update-grub.

After this has been done, close everything and reboot the system. Everything should be working fine now!

Notes:

  1. My guided steps are a summary of other users' advices and I've performed these steps at least thrice with the same great result. I've decided to write my own guide because the ones I used always had some uncovered issues that I had to go through to get the system working properly.

  2. In order to identify your correspondent NVIDIA driver version you can check their official drivers download page, selecting the proper model and linux 64-bit as the operating system. The results will show the proper version number.

  3. If you want to learn about what a PRIME display is and why it is so cumbersome, you can check this link: https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/

Good luck!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.