[How-To] PRIME sync - eliminacja efektu szarpanego obrazu (tearing) w konfiguracji z kartami Nvidia i Intel (Optimus)

Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 7504
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 18.04
Środowisko graficzne: GNOME
Architektura: x86_64

[How-To] PRIME sync - eliminacja efektu szarpanego obrazu (tearing) w konfiguracji z kartami Nvidia i Intel (Optimus)

Post autor: mario_7 » 28 sie 2018, 23:14

Sprawdzone na Ubuntu 16.04 oraz 18.04 z nvidia-prime.
Podczas wykonywania tego poradnika należy myśleć co się robi - można uszkodzić system.

O co chodzi? O usunięcie efektu szarpanego obrazu widocznego zwłaszcza w grach lub podczas oglądania filmów. W przypadku laptopów bardzo często widoczne jest to dopiero na zewnętrznych monitorach.
Prosty test: https://www.youtube.com/watch?v=5xkNy9gfKOg - jeśli pionowe paski nie są równe, tylko ze schodkami, albo po prostu poszarpane - to znaczy, że synchronizacja obrazu nie działa.
Ten poradnik pozwala taką synchronizację włączyć dla popularnej kombinacji kart - Intel (karta zintegrowana) i Nvidia (karta dyskretna) - zwanej Optimus i często spotykanej w laptopach. Tak dokładnie - chodzi o sytuację, gdy wyjście HDMI podłączone jest do karty zintegrowanej, a karta dyskretna uzyskuje dostęp do tego wyjścia poprzez renderowanie do buforu graficznego karty zintegrowanej. PRIME Sync pozwala robić to dobrze.

Zakładam, że do obsługi karty dyskretnej wykorzystywany jest mechanizm nvidia-prime oraz w panelu Nvidia włączona jest dyskretna karta graficzna - Nvidia.

Aktualizacja poniżej opisanych pakietów może spowodować uszkodzenie trybu graficznego i konieczność ratowania się z konsoli - zostałeś/aś ostrzeżony/a.

1. (tylko dla Ubuntu 16.04) Potrzebny jest świeży Xorg i kernel:

Kod: Zaznacz cały

sudo apt install --install-recommends linux-generic-hwe-16.04 xserver-xorg-hwe-16.04
2. Potrzebne są nowe sterowniki Nvidia:

Kod: Zaznacz cały

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-396
3. Potrzebne są nowe sterowniki Mesa:

Kod: Zaznacz cały

sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
Jeśli nastąpi aktualizacja wszystkich pakietów związanych z mesa i sterownikami xorg, to właśnie o to chodziło.
Natomiast czasem mogą się pojawić problemy - część pakietów może być wstrzymana ze względu na różne zależności, albo pojawi się propozycja usunięcia połowy systemu...
Wtedy trzeba kombinować - należy przerwać aktualizację i wymusić instalację wybranych pakietów, aby zależności nie usunęły istotnych elementów systemu.
U mnie na wstrzymane pakiety i sugestie usunięcia połowy systemu pomogło:

Kod: Zaznacz cały

sudo apt install libegl1-mesa libegl1-mesa:i386 libwayland-egl1 libgtk-3-0:i386 libsdl2-2.0-0:i386
Dzięki u mnie temu wszystkie pakiety ładnie się zaktualizowały.

4. Należy wymusić aby sterownik Nvidia działał w trybie modeset:
Dla Ubuntu 16.04:

Kod: Zaznacz cały

echo "options nvidia_396_drm modeset=1" | sudo tee /etc/modprobe.d/zz-nvidia-modeset.conf
sudo update-initramfs -u
Dla Ubuntu 18.04:

Kod: Zaznacz cały

echo "options nvidia_drm modeset=1" | sudo tee /etc/modprobe.d/zz-nvidia-modeset.conf
sudo update-initramfs -u
Po restarcie systemu polecenie

Kod: Zaznacz cały

xrandr --verbose | grep PRIME
powinno zwrócić

Kod: Zaznacz cały

	PRIME Synchronization: 1
Jeśli jest 0, to należy sprawdzić wynik tego polecenia:
dla Ubuntu 16.04:

Kod: Zaznacz cały

sudo cat /sys/module/nvidia_396_drm/parameters/modeset
dla Ubuntu 18.04:

Kod: Zaznacz cały

sudo cat /sys/module/nvidia_drm/parameters/modeset
Polecenie powinno zwrócić literę Y. Jeśli jest N, to trzeba inaczej wymusić tryb modeset:

Kod: Zaznacz cały

sudo gedit /etc/default/grub
W linii

Kod: Zaznacz cały

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
należy dopisać:
dla Ubuntu 16.04: nvidia-396-drm.modeset=1 - linia ma wyglądać tak:

Kod: Zaznacz cały

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-396-drm.modeset=1"
dla Ubuntu 18.04: nvidia-drm.modeset=1 - linia ma wyglądać tak:

Kod: Zaznacz cały

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1"
Zmiany należy zapisać i wykonać:

Kod: Zaznacz cały

sudo update-grub
Po restarcie

Kod: Zaznacz cały

xrandr --verbose | grep PRIME
powinno zwrócić

Kod: Zaznacz cały

	PRIME Synchronization: 1
Szarpanie obrazu powinno ustąpić.

Więcej o PRIME sync:
https://devtalk.nvidia.com/default/topi ... onization/
https://www.x.org/wiki/Events/XDC2016/P ... e-sync.pdf
Czytelnia - poczytaj, Google - poszukaj
ODPOWIEDZ

Wróć do „Hardware-Multimedia”