Autor: Spass
Ostatnia aktualizacja: 11.03.2019
« Sposób na pozbycie się rozrywania obrazu (ang. screen tearing)
Co to takiego ten "screen tearing"? Według artykułu na Wikipedii jest to "błąd w wyświetlaniu grafiki komputerowej polegający na tym, że wyświetlacz jednocześnie pokazuje informacje pochodzące z więcej niż jednej klatki". Objawia się to dostrzegalnym horyzontalnym "poszarpaniem" okien podczas ruchu lub filmów wideo. Niestety problem ten występuje na Xfce dość często. Łatwo to sprawdzić otwierając jakieś okno programu i obserwować jak zachowuje się, gdy szybko przesuwamy je w lewo i prawo (łapiąc i ruszając kursorem myszy za pasek tytułowy okna). U niektórych "tearing" widoczny będzie podczas oglądania filmów wideo. Niektórym użytkownikom nie będzie to przeszkadzało, niektórzy nawet nie zwrócą na to większej uwagi. Jednak jeśli widzisz u siebie to zjawisko i chcesz się go pozbyć, poniżej mamy kilka wskazówek dla poszczególnych kart graficznych, które powinny temu zaradzić.

Niektórzy użytkownicy zgłaszają jednak, że poniższe modyfikacje mogą wpłynąć negatywnie na wydajność w niektórych aplikacjach. Jeśli zaobserwujesz u siebie podobne objawy, usuń lub wyczyść utworzony wcześniej plik konfiguracyjny i zrestartuj komputer. Na końcu poradnika piszemy jak to zrobić.

Dla zintegrowanych kart graficznych Intel

Tu sprawa jest dość prosta - włączymy opcję sterownika "TearFree". Musimy w tym celu stworzyć odpowiedni plik konfiguracyjny /etc/X11/xorg.conf.d/20-intel.conf i umieścić w nim odpowiednie treści. Najpierw stwórzmy niezbędny folder poleceniem:
sudo mkdir /etc/X11/xorg.conf.d/

Teraz utworzymy w nim plik konfiguracyjny o nazwie 20-intel.conf. W tym celu otwórz aplikację Uruchom program skrótem klawiaturowym lewy Alt+F2, wklej tam i uruchom następujące polecenie:
pkexec mousepad /etc/X11/xorg.conf.d/20-intel.conf

W razie potrzeby zastąp "mousepad" innym edytorem tekstu. Po wpisaniu naszego hasła, powinien otworzyć się edytor tekstowy (puste okno). Wklej tam następującą treść:
Section "Device"
  Identifier   "Intel Graphics"
  Driver   "intel"
  Option   "TearFree" "true"
EndSection

Zapisz plik i zamknij okno edytora. Po ponownym uruchomieniu komputera "screen tearing" nie powinien już występować lub powinien być znacznie ograniczony.

Dla kart graficznych NVIDIA

Jeśli korzystasz ze sterownika własnościowego NVIDIA, możesz skorzystać z opcji sterownika "Force Full Composition Pipeline". Aby sprawdzić czy działa ona u ciebie poprawnie, uruchom to polecenie w terminalu:
nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

Powyższe polecenie powinno uruchomić się bez żadnych błędów, ekran na moment mignie i nie powinniśmy dostrzec żadnych nieprawidłowości. Przetestuj to zmieniając szybko położenie jakiegoś okna, "screen tearing" nie powinien być już widoczny. Jeśli wszystko się zgadza, dodamy opcję "Force Full Composition Pipeline" do pliku konfiguracyjnego, aby włączała się ona domyślnie przy starcie systemu. Pierwsze polecenie zrzuci aktualną konfigurację karty graficznej do pliku /etc/X11/xorg.conf, następnie przeniesiemy go we właściwe miejsce.
sudo nvidia-xconfig

sudo mkdir /etc/X11/xorg.conf.d/

sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.d/20-nvidia.conf

Teraz otworzymy i zedytujemy ten plik. W tym celu otwórz aplikację Uruchom program skrótem klawiaturowym lewy Alt+F2, wklej tam i uruchom następujące polecenie:
pkexec mousepad /etc/X11/xorg.conf.d/20-nvidia.conf

W razie potrzeby zastąp "mousepad" innym edytorem tekstu. Po wpisaniu naszego hasła, powinien otworzyć się edytor tekstowy z widoczną aktualną konfiguracją naszej karty graficznej. Większość sekcji w tym pliku jest zbędna i możemy je bez obaw usunąć zostawiając tylko sekcję "Device". Następnie poniżej jej musimy wkleić sekcję "Screen" według wzorca widocznego poniżej. Tak więc nasz końcowy plik powinien wyglądać następująco:
(sekcja "Device" będzie wyglądała u ciebie nieco inaczej, istotna w tym przypadku jest sekcja "Screen")
Section "Device"
  Identifier   "Device0"
  Driver   "nvidia"
  VendorName   "NVIDIA Corporation"
  BoardName   "GeForce GTX 1050 Ti"
EndSection

Section "Screen"
  Identifier   "Screen0"
  Device   "Device0"
  Monitor   "Monitor0"
  Option   "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
  Option   "AllowIndirectGLXProtocol" "off"
  Option   "TripleBuffer" "on"
EndSection

Zapisz plik i zamknij okno edytora. Po ponownym uruchomieniu komputera "screen tearing" nie powinien już występować lub powinien być znacznie ograniczony.

Alternatywną opcją, którą warto przetestować w przypadku, gdy powyższy sposób z jakichś względów nie zadziała (lub też jest dla kogoś za trudny), jest dodanie do Uruchamianych programów w ustawieniach Sesja i uruchamianie takiego polecenia:
nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"

Efekt powinien być widoczny po zrestartowaniu sesji. Nie korzystaj z obu sposobów jednocześnie.

Dla kart graficznych AMD

Podobnie jak w przypadku zintegrowanych kart graficznych Intel, skorzystamy z opcji sterownika "TearFree". Musimy w tym celu stworzyć plik konfiguracyjny i umieścić w nim odpowiednie treści. Dla nowszych kart graficznych AMD będzie to plik /etc/X11/xorg.conf.d/20-amdgpu.conf, a dla starszych (seria HD 6000 i wcześniejsze) /etc/X11/xorg.conf.d/20-radeon.conf. Najpierw stwórzmy niezbędny folder poleceniem:
sudo mkdir /etc/X11/xorg.conf.d/

Nowsze karty

Teraz utworzymy w tym folderze plik konfiguracyjny o nazwie 20-amdgpu.conf. W tym celu otwórz aplikację Uruchom program skrótem klawiaturowym lewy Alt+F2, wklej tam i uruchom następujące polecenie:
pkexec mousepad /etc/X11/xorg.conf.d/20-amdgpu.conf

W razie potrzeby zastąp "mousepad" innym edytorem tekstu. Po wpisaniu naszego hasła, powinien otworzyć się edytor tekstowy (puste okno). Wklej tam następującą treść:
Section "Device"
  Identifier   "AMD"
  Driver   "amdgpu"
  Option   "TearFree" "true"
EndSection

Następnie zapisz plik i zamknij okno edytora. Po ponownym uruchomieniu komputera "screen tearing" nie powinien już występować lub powinien być znacznie ograniczony.

Starsze karty

Dla kart graficznych z serii HD 6000 i wcześniejszych tworzymy natomiast plik konfiguracyjny 20-radeon.conf. W tym celu otwórz aplikację Uruchom program skrótem klawiaturowym lewy Alt+F2, wklej tam i uruchom następujące polecenie:
pkexec mousepad /etc/X11/xorg.conf.d/20-radeon.conf

Powinno otworzyć się okno edytora z pustym plikiem. Wklej do niego następującą zawartość:
Section "Device"
  Identifier   "Radeon"
  Driver   "radeon"
  Option   "TearFree" "on"
EndSection

Następnie zapisz plik i zamknij okno edytora. Po ponownym uruchomieniu komputera "screen tearing" nie powinien już występować lub powinien być znacznie ograniczony.

Co w przypadku ewentualnych problemów?

Powyższe zmiany w plikach konfiguracyjnych nie powinny spowodować żadnych problemów, rady te są sprawdzone przez wielu użytkowników różnych dystrybucji Linuksa. Jednakże w przypadku ewentualnych problemów (np. brak możliwości uruchomienia systemu, czarny ekran zamiast pulpitu itp.) pamiętaj, że możesz cofnąć wprowadzone zmiany przechodząc na konsolę tekstową, powiedzmy tty2 skrótem klawiaturowym Ctrl+Alt+F2 i tam po zalogowaniu usunąć lub zedytować poszczególne pliki konfiguracyjne. Dla przykładu dla kart NVIDIA wprowadzone zmiany usuniemy całkowicie używając tej komendy (usuwa ona plik konfiguracyjny):
sudo rm /etc/X11/xorg.conf.d/20-nvidia.conf

Możemy też w razie potrzeby zedytować plik konfiguracyjny i wprowadzić w nim niezbędne poprawki w edytorze:
sudo nano /etc/X11/xorg.conf.d/20-nvidia.conf

Wprowadzone w edytorze GNU nano zmiany zapisujemy skrótem Ctrl+O, edytor zamykamy skrótem Ctrl+X. Restartujemy komputer.

Odnośniki i źródła

Artykuł na Arch Wiki dla zintegrowanych kart graficznych Intel
Artykuł na Arch Wiki dla kart graficznych NVIDIA
Artykuł na Arch Wiki dla kart graficznych AMD (sterownik amdgpu)
Artykuł na Arch Wiki dla kart graficznych AMD (sterownik radeon)