Dlaczego rozrywanie wideo jest takim problemem w Linuksie?


101

Używam wielu wariantów Linuksa (głównie pochodnych Debiana) od ponad dekady. Jednym z problemów, których nie udało mi się rozwiązać w zadowalający sposób, jest kwestia poziomego rozrywania lub niewłaściwej implementacji Vsync.

Mówię to, ponieważ używam używanych 5 różnych dystrybucji na 4 różnych komputerach z różnymi monitorami i kartami graficznymi Nvidia / AMD / ATI / Intel; za każdym razem występował problem z rozrywaniem wideo przy nawet niewielkim ruchu.

To duży problem, zwłaszcza, że ​​nawet Windows XP nie ma tych problemów na nowoczesnym sprzęcie. Jeśli ktokolwiek zamierza używać Linuksa do czegokolwiek, dlaczego miałby chcieć pokazywać ciągłe defekty podczas robienia czegoś innego niż CLI?

Zgaduję, że albo niewielu programistów wie o tym problemie, albo starają się je naprawić. Próbowałem prawie każdego kompozytora i zwykle najlepsze, co mogą zrobić, to zminimalizować problem, ale go nie wyeliminować. Czy nie powinno to być tak proste, jak synchronizacja z częstotliwością odświeżania monitora? Czy jest jakaś polityka wśród społeczności OSS, która uniemożliwia komukolwiek kod, który to naprawia?

Za każdym razem, gdy prosiłem o pomoc w tej sprawie w przeszłości, jest to traktowane jako przypadek skrajny (co trudno mi uwierzyć, biorąc pod uwagę liczbę razy, gdy powielałem problem) lub otrzymuję potencjalne rozwiązania, które co najwyżej minimalizują łzawienie.


2
Nie wspominasz, którego DE używasz. KDE radzi sobie z łzami od około roku.
Sparhawk

1
Jak można łatwo odtworzyć problem? Na komputerze Debian / Ubuntu / Mint?
Xen2050,

50
Ten XKCD po prostu wydaje się pasować tutaj tak dobrze ...
Angew

Moje doświadczenia z łzami były zupełnie inne. Jestem bardzo zadowolony z grania i oglądania filmów w systemie Linux. Steam naprawdę sprawił, że Linux stał się opłacalną platformą dla świetnych gier. Ostatnio gram w Witcher 2 i Talos Principle i nie widziałem żadnej łzy w ciągu około 50 godzin gry. Jest tak z kartą Nvidia z zastrzeżonymi sterownikami na Arch. Zgadzam się z Xen2050, że to pytanie byłoby bardziej przydatne, gdyby podano dokładne specyfikacje dla twoich kompilacji. Nie zaprzeczam, że jest problem, właśnie miałem bardzo dobre doświadczenia.
labirynt

Gdy komponowanie Nvidii rozwiązało problem, kiedy korzystałem z Nvidii w 2007 roku. Jednak nie na pełnym ekranie, ponieważ okna pełnoekranowe wyłączają kompozytor, zakładam, że myślę, że uruchomisz grę OpenGL. W przypadku Intela próbowałeś ustawić sekcję „Urządzenie” Opcja „TearFree” „prawda” w X? Podwaja użycie pamięci RAM wideo, ale myślę, że będzie działać.
Zan Lynx

Odpowiedzi:


92

Wynika to z faktu, że serwer X jest przestarzały, nieodpowiedni do dzisiejszego sprzętu graficznego i zasadniczo cała bezpośrednia komunikacja za pomocą karty graficznej odbywa się jako rozszerzenie („łatka”) nad starożytnym rozdętym rdzeniem. Serwer X nie ma wbudowanej synchronizacji między użytkownikiem renderującym okno a ekranem wyświetlającym okno, więc zawartość zmienia się w trakcie renderowania. Jest to jeden z dobrze znanych problemów serwera X (ma wiele, cały model tego, co serwer robi i jest nieaktualny - obsługa zdarzeń w oknach, metadane dotyczące okien, graficzne elementy podstawowe do bezpośredniego rysowania ...). Zestawy narzędzi do widżetów przede wszystkim chcą przeświecać to wszystko, ale łzawienie nadal stanowi problem, ponieważ nie ma mechanizmu, który by to poradził. Dodatkowe problemy powstają, gdy masz wiele kart wymagających różnych sterowników,

Wayland, który nieco nie entuzjastycznie próbuje zastąpić X, wspiera pedantyczną synchronizację vsync w swoim rdzeniu i reklamuje się, że każda klatka jest idealnie idealna.

Jeśli szybko przejdziesz do wyszukiwarki Google „Wayland Video Tearing”, znajdziesz więcej informacji na ten temat.


38
+1ponieważ „X jest problemem, spójrz na Waylanda.” Śmiertelnie, to poprawna odpowiedź.
HalosGhost

2
@HalosGhost Wayland Evangelism on the go :) wciąż brak obsługi sesji sieciowych?
kagali-san

3
@ kagali-san Nie powiedziałem, że Wayland był doskonały (nie jest). Ale to zdecydowanie lepsze niż X. :)
HalosGhost

8
@ kagali-san: Weston został połączony z backendem RDP zaledwie rok temu, jeśli uznasz, że ma to jakiś związek z pytaniem o zrywanie wideo.
grawitacja

3
@orion: i dzięki tobie ta strona jest teraz wynikiem nr 1 dla wayland video tearing: P
Tobia Tesan

16

Łzawienie ekranu pojawia się głównie z dwóch powodów - sterowników, których jeszcze nie ma, oraz braku vsync w przypadku niektórych menedżerów okien.

Jeśli chodzi o sterowniki, zarówno darmowe, jak i zastrzeżone sterowniki obsługują komponowanie bez łez (nvidia i amd oba). Należy pamiętać, że np. Włączenie pulpitu bez łez w katalizatorze ( fglrx) może powodować spadanie klatek i opóźnienia, więc zwykle jest domyślnie wyłączone. Jeśli chodzi o otwarty sterownik, vsync powinien być domyślnie włączony. Tak więc problem zrywania ekranu można rozwiązać, wypróbowując różne sterowniki i konfigurując je.

Jeśli chodzi o menedżery okien, wiadomo, że Openbox, Awesome i inne lekkie WMS nie obsługują bez łez. XFCE (konkretnie xfwm) naprawił to w ostatnich wydaniach, 4.11 / 12 ma teraz Vsync. Główne środowiska pulpitu również nie mają problemów z rozrywaniem, w tym GNOME, KDE, Unity i Cinnamon.

Jeśli nadal doświadczasz zrywania ekranu, możesz wypróbować innego menedżera kompozycji, takiego jak Compton lub Kwin. Kwin jest menedżerem okien dla KDE i mam doświadczenie w używaniu kwin w XFCE, gdy nie wspierało vsync i działało naprawdę dobrze.

Tak więc rozwiązaniem jest eksperymentowanie, co jest zepsute w jednej kombinacji sterownika / wm, może działać w innej. Wierzę, że sytuacja wkrótce się poprawi, ponieważ sterowniki open source stają się coraz bardziej zaawansowane, a przejście na Wayland może pozbyć się starych problemów z Xorg.


5
Nie całkiem. KDE (z Kwinem lub innym kompozytorem) wciąż łzy jak diabli z NVidią lub Intelem.
Ivan

1
Openbox itp. Działają bez łez - wystarczy uruchomić osobny kompozytor, np. Compton działa cudownie.
wingedsubmariner

1
@wingedsubmariner, kiedy macie na myśli openbox, czy macie również na myśli fluxboksa?
nass

niezwykle pomocne jest również zwrócenie uwagi na stan WM w różnych środowiskach okien.
nass

@nass Absolutnie. Menedżer okien nigdy nie jest czynnikiem ograniczającym.
wingedsubmariner

14

Jeśli używasz sterownika nvidia> = 365.20, spróbuj włączyć opcję „Wymuś pełny układ potoku” w nvidia-settings.

wprowadź opis zdjęcia tutaj


nVidia Quadro na Lenovo W520, Fedora 25 i to zadziałało :)
Jerther

4
także jeśli nie masz takiej opcji, kliknij „Ustawienia zaawansowane” w dolnej części okna, a pojawi się. dlaczego ten „pełny potok kompozycji” nie jest domyślnie włączony?
Rast

1
@Rast Ponieważ kiedyś występowały problemy z wydajnością.
Ruslan,

BTW, wygląda na to, że przynajmniej sterowniki Intela mają również TearFreeopcję, którą można umieścić w odpowiedniej Devicesekcji. Właśnie go wypróbowałem, a wyniki są bardzo podobne do Full Pipeline nvidii.
Ruslan,

Nie mogę uzyskać ustawienia do zapisania przy ponownym uruchomieniu Próbowałem utworzyć plik ~ / .xinitrc i umieścić w nim „nvidia-settings --load-config-only &. / Etc / X11 / xinit / xinitrc”, ale to nie działa
FragmentalStew

9

Miałem tutaj mocne łzawienie i teraz zostało to rozwiązane.

Po przeczytaniu ( cudownego wyjaśnienia ) sposobu działania serwera Xorg zdałem sobie sprawę, że X serwer maluje aktualizacje okien bezpośrednio na kartę pamięci w dowolnym momencie, chyba że użyjesz menedżera okien z włączonym komponowaniem.

Po włączeniu komponowania menedżer okien zbiera wszystkie zmiany z różnych buforów pamięci okna, tworzy wynikowy obraz dla całego ekranu i zrzuca go na kartę graficzną na jednym zdjęciu.

Większość współczesnych dystrybucji ma menedżera okien do komponowania. KWin dla KDE, Mutter dla Gnome, Muffin dla Cynamonu, Marco dla Mate, Xfwm dla XFCE itp. Jednak składanie można wyłączyć, aby oszczędzać zasoby.

W moim przypadku komponowanie zostało wyłączone w KDE4. Po włączeniu łza zniknęła. EDYCJA : Musiałem także zmienić w opcjach KWin strategię VSync z Automatycznej na Ponownie użyj zawartości ekranu , aby pozbyć się łzy, tak jak wyjaśniono w tym raporcie błędu specyficznym dla kwin .

Ważnym czynnikiem mogą być również opcje sterownika. W moim przypadku domyślne opcje działają poprawnie. Arch Wiki ma świetną dokumentację na temat opcji różnych kart graficznych, takich jak karty Intel lub karty NVIDIA .

Aby sprawdzić, czy opcja jest włączona w bieżącej konfiguracji xorg, możesz sprawdzić dziennik. Na przykład, aby sprawdzić, czy DRI jest włączony:

cat /var/log/Xorg.0.log | grep DRI

1
W XFCE (w Xubuntu 16.04) komponowanie jest domyślnie włączone, ale synchronizacja z pionowym pustym miejscem nie jest . Użyj xfwm4-tweaks-settingspolecenia, aby wyświetlić aplikację ulepszania, a na karcie Kompozytor znajdziesz powyższą opcję. Włączenie to zrobiło ogromną różnicę i można to sprawdzić tutaj: vsynctester.com/index.html (włącz / wyłącz tę funkcję podczas wyświetlania animacji). To nie jest idealne, ale są pewne pominięte klatki, ale znacznie lepiej niż wtedy, gdy jest wyłączone.
karatedog

1

Rozwiązanie jest tutaj: Linux Mint 17.3 MATE jest teraz wyposażony w Compton .

Wystarczy przejść do Desktop Settings-> Windows-> Window Manageri wybrać Metacity + Compton. Otóż ​​to.

Mam kartę graficzną AMD i działa ona po wyjęciu z pudełka sterownika open source.

W przypadku zastrzeżonego sterownika AMD, gdy filmy HTML5 są zmaksymalizowane do pełnego ekranu, możesz zobaczyć niebieski kolor, który wypełni cały ekran. Aby to naprawić, utwórz i chmod +xskrypt poniżej:

#!/bin/bash
killall compton 2> /dev/null
compton -b --unredir-if-possible

Uruchom go przy każdym ponownym uruchomieniu systemu, ale nie próbuj go dodawać Startup Applications- z jakiegoś powodu może to spowodować przerwanie uruchamiania.


0

W Peppermint Linux, przejdź do Preferencje> Centrum kontroli mięty pieprzowej, wybierz Efekty pulpitu i włącz „Włącz efekty pulpitu” i „Synchronizuj rysunek do pionowego pustego miejsca”.


0

Używam Linux Mint XFCE i ten problem frustrował mnie od dłuższego czasu. Znalazłem rozwiązanie dla mojego laptopa ze zintegrowaną kartą graficzną Intela i rozwiązało to problem łzawienia . Na moim pulpicie z kartą NVIDIA, które nie mogą działać. Ale właśnie znalazłem winowajcę.

Mam natychmiastowy wzrost wydajności po wyłączeniu komponowania okien. Oto jak możesz to zrobić:

Przejdź do Wszystkie ustawienia / Ulepszenia Menedżera okien / Kompozytor i wyłącz to wszystko.

Pamiętaj, że jest to specyficzne dla dystrybucji, a moja to Mennica z XFCE i nie mam pojęcia, jak znaleźć podobne rzeczy na innych dystrybucjach.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.