Firefox i przyśpieszenie sprzętowe

Jeszcze nigdy w historii internetu przeglądarki nie miały takiego apetytu na zasoby naszych komputerów. Pożerają one lwią cześć pamięci RAM a wykres wykorzystania CPU każe się nam zastanowić, czy to nie czas na aktualizację sprzętu. Nie jest to jednak wina tylko i wyłącznie przeglądarek, gdyż one po prostu próbują nadążyć za obsługą pojawiających się trendów i technologii webowych. Rosną też nasze wymagania, jak choćby wyższa jakość materiałów wideo na popularnym Youtube. To jednocześnie jeden z pierwszych serwisów, który masowo zastąpił odtwarzacz we Flashu protegowanym odtwarzaczem w HTML5. Niestety, pod Linuksem maksymalna rozdzielczość filmów oferowanych przez Youtube to „jedynie” 720p. A wszystko za sprawą domyślnie wyłączonego w Firefoksie przyśpieszenia sprzętowego.

Aby nie świecić oczami przed użytkownikami innych systemów, możemy w paru prostych krokach przekonać Firefoksa, by korzystał z mocy drzemiącej w naszym GPU. Wystarczy do tego celu jedynie karta about:config oraz świadomość, że opcje które za chwilę przestawimy nie na darmo zostały domyślnie wyłączone. Mogą pojawić się wywrotki przeglądarki, samego playera na Youtube (i tam, gdzie jest aktywnie używane HTML5) i należy to wszystko potraktować testowo – choć nie wyklucza się również prawidłowego funkcjonowania całości (np. u mnie działa).

Zaczynamy zatem od wspomnianego about:config. Na początku wyszukujemy tam ciągów zawierających mediasource i przestawiamy na true (dwuklik) następujące:

media.mediasource.enabled

media.mediasource.webm.enabled

Teraz wyszukujemy layers. i podobnie ustawiamy na true:

layers.acceleration.force-enabled

layers.offmainthreadcomposition.enabled

firefox_hwsupportUpewnijmy się jeszcze, że to coś dało. Udajmy się do zakładki about:support i przyjrzyjmy się tabeli opisującej grafikę. Interesuje nas przede wszystkim obecność wartości 1/1 OpenGL (OMTC). W starszych wersjach Firefoksa (<41) może być jeszcze konieczny taki zabieg:
sudo bash -c "echo export MOZ_USE_OMTC=1 >> /etc/X11/Xsession.d/90environment"

Powyższe powinno wystarczyć, by na Youtube zobaczyć możliwość wybrania rozdzielczości wideo od 1080p w górę.

Możemy iść krok dalej i uskutecznić również obsługę MSE & H.264. W tym celu ponownie przechodzimy do about:config i odnajdujemy ciągi zawierające media.fragmented-mp4. Przestawiamy na true następujące z nich:

media.mediasource.mp4.enabled

media.fragmented-mp4.exposed

media.fragmented-mp4.gmp.enable

Na false natomiast przestawiamy:

media.fragmented-mp4.use-blank-decoder

W ten sposób można pozbyć się paru kompleksów, choćby tego związanego z obsługiwanymi formatami przez odtwarzacz HTML5 (http://youtube.com/html5):

firefox_html5

Jak wspomniałem, nie u każdego to może zadziałać jak należy, głównie za sprawą sterowników graficznych i naszej karty. Warto przyjrzeć się poradom samej Mozilli, a w ostateczności przeprowadzić proces odwrotny do opisanego powyżej (choć powinno wystarczyć przestawienie jedynie layers.acceleration.force-enabled). 

15 komentarzy

  1. O super 🙂 z Firefox Nightly działa wręcz to pięknie! Nie muszę już Opery do wideo w FullHD używać.

  2. Zależy od obciążenia, ale prawie na pewno negatywny. Generalnie używanie karty graficznej na lapku to zły pomysł, jeżeli chce się dużo pracować (baz dostępnej ładowarki OFC), więc lepiej ograniczać to do minimum.

  3. Po włączeniu tego klucza : media.mediasource.webm.enabled,zamiast dźwięku mam pisk taki jak w obrazie kontrolnym 🙁

  4. To już raczej zależy też od procka i ekranu, jak ktoś ma tylko 720p może żyć bez akceleracji.

  5. To jest dobry materiał testowy :

    https://www.youtube.com/watch?v=y8Qh7AYPtN4

    1080p 50 klatek na sek. 😉

    Mi na Ubuntu “padaczy” w wszystkich możliwych przeglądarkach , nawet dźwiek szarpie i zatrzymuje się…!

    W Windows 10 64-bit w Firefoxie 41.0.1 na tym samym sprzęcie gubi pojedyncze klatki…

    Jak jest z tym u Was ?

    Coś sterowniki NVIDIA są gorzej zooptymalizowane ? że nie wyrabiają z dekodowaniem 50 klatek na sek. ?

    Co może być przyczyną ?

    W statystykach dla nerdów kodek mp4 ma inną nazwę pod Ubuntu i Windows ? Tak ma być ?”

  6. Co ciekawe u mnie powyższy testowy materiał śmiga i na firefoksie (bez stosowania technik opisanych w artykule) i pod chromium. Myślę że kluczem do sukcesu pod firefoxem jest wtyczka user agent overrider z ustawionym firefoxem 26. Dzięki temu youtube odtwarza film poprzez starego flasha i jakości HD są dostępne.

    Moja grafa: GeForce 7300 GT/PCIe/SSE2

  7. Nie było to wyłączone,ale po wyłączeniu nie wszystkie filmy chodziły na Youtube,podczas gdy te same filmy bez problemu chodziły na Google Chrome.Firefox jest jednak w tyle za Chrome.

  8. Już wiem co pozwala na płynne odtwarzanie tego materiału 😉
    W obu systemach Ubuntu i Windows należy doinstalować dodatek magic actions for youtube.
    Następnie w opcjach zaznaczyć Use MP4/AVC video stream.
    Wtedy jest dużo lepiej.
    Jednak największą płynność osiąga się używając tak jak napisałeś playera we flashu.
    Można to prosto zrobić zaznaczając w opcjach magic action opcję force player : flash

    Moja grafika to GeForce GT 720/PCIe/SSE2

  9. Jakiś miesiąc lub dwa temu próbowałem tego (włączenia przyśpieszenia OMTC w OpenGL) niestety obraz był czarny, jakby powoli się odświeżał. Musiałem minimalizować Firefoksa i znowu go maksymalizować aby zobaczyć co jest na ekranie przeglądarki i tak w koło. Było zbuggowane więc wyłączyłem. Tak miałem na sterownikach Catalyst. Ktoś wie jak teraz działa na Catalyst?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Post comment

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.