[How-To] PRIME sync - eliminacja efektu szarpanego obrazu (tearing) - Nvidia i Intel (Optimus) - oraz naprawa Vulkan

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

[How-To] PRIME sync - eliminacja efektu szarpanego obrazu (tearing) - Nvidia i Intel (Optimus) - oraz naprawa Vulkan

Post autor: mario_7 »

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 (zazwyczaj najlepiej jest zainstalować najnowsze dostępne dla posiadanej karty):

Kod: Zaznacz cały

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-396   # może być już dostępny nowszy sterownik!
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 temu u mnie wszystkie pakiety ładnie się zaktualizowały.

4. Należy wymusić aby sterownik Nvidia działał w trybie modeset:
Dla Ubuntu 16.04:
(poniższe polecenie jest prawidłowe dla zainstalowanej wcześniej wersji sterownika - należy zaktualizować numer wersji sterownika, jeśli została zainstalowana inna wersja)

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:
(poniższe polecenie jest prawidłowe dla zainstalowanej wcześniej wersji sterownika - należy zaktualizować numer wersji sterownika, jeśli została zainstalowana inna wersja)

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:
(poniższe polecenie jest prawidłowe dla zainstalowanej wcześniej wersji sterownika - należy zaktualizować numer wersji sterownika, jeśli została zainstalowana inna wersja)

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

Aktualizacja:
Niestety zastosowanie tej dobroci powoduje, póki co nierozwiązany, problem z Vulkanem (czyli DXVK, Steam Play, Lutris itp.) - z jakiegoś powodu Vulkan nie potrafi się prawidłowo uruchomić z poziomu zwykłego użytkownika. Objawia się to gdy używamy do logowania menedżera gdm3 - uruchamianie aplikacji używających Vulkana zwróci błąd VK_ERROR_INITIALIZATION_FAILED lub podobny (prawdopodobnie związany z grafiką).
Problem został opisany na Launchpad:
https://bugs.launchpad.net/nvidia-drive ... ug/1800465
https://bugs.launchpad.net/ubuntu/+sour ... ug/1769857
https://bugs.launchpad.net/ubuntu/+sour ... ug/1716857

Aby rozwiązać ten problem wystarczy po uruchomieniu systemu jednorazowo wykonać takie polecenie:

Kod: Zaznacz cały

sudo vulkaninfo
W razie braku polecenia vulkaninfo można je zainstalować tak:

Kod: Zaznacz cały

sudo apt install vulkan-tools
Później już jako zwykły użytkownik można uruchamiać pozostałe aplikacje.
ODPOWIEDZ

Wróć do „Hardware-Multimedia”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 28 gości