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

Upewnijmy 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):

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).