Seit Firefox 80 kann der Browser endlich auch unter Linux zum Abspielen von Videos die Hilfe der Grafikkarte via VA-API in Anspruch nehmen. Das ist total wichtig auf älteren Systemen mit schwachem Prozessor, aber auch bei modernen Systemen hilft es dabei die Prozessorlast und damit den Lüfterlärm niedrig zu halten. Die Grafikkarte hat mit solcher Videodekodierung normalerweise null Probleme.
Das funktioniert nur mit einer AMD-Grafikkarte, vielleicht auch mit nouveau als freiem Nvidia-Treiber, aber auf jeden Fall bisher nicht mit dem proprietären Treiber von Nvidia. Das sollte angesichts Nvidias Linuxfeindlichkeit keine Überraschung sein.
Auf meinem System halbierte die Beschleunigung im ersten Test die Prozessorlast des Firefox-Videothreads, ohne dass die Grafikkarte auch nur den Lüfter hochregelte.
htop zeigte zuerst 50%:
Mit aktivierter VA-API sank die Last auf 25%:
Aber das Ergebnis war nicht stabil. In späteren Tests behauptete Firefox zwar, VA-API sei aktiv. Während des Abspielens kamen aber nur noch vereinzelte Dekodierungsausgaben vom Start des Videos ins Log. Bei 1440p- und 4K-Videos sind sie wieder konstant da, aber solche Videos sehen gerade so aus:
Die Funktion ist also mit gutem Grund auch unter Firefox 80 noch nicht als Standard aktiv.
Beschleunigung aktivieren
Wer die Beschleunigung trotzdem aktivieren will: Im Bugtracker wird der Großteil erklärt.
Stell erstmal sicher, dass VA-API auf dem System installiert sind. Bei mir unter void gab es dafür drei Pakete:
- libva
- libva-intel-driver (Für Intel-Grafikkarten)
- mesa-vaapi (Für AMD-Grafikkarten)
Nun zu Firefox selbst. In about:config müssen zwei Einstellungen aktiviert werden:
media.ffmpeg.vaapi.enabled
media.ffmpeg.dmabuf-textures.enabled
Gleichzeitig musst du aufgrund eines Bugs
media.ffvpx.enabled
deaktivieren.
Zudem muss wegen einer Sandbox-Funktion seit Firefox 86
media.rdd-vpx.enabled
deaktiviert werden.
Doch das reicht noch nicht. Beim Start von Firefox muss man zudem MOZ_X11_EGL=1
voranstellen. Außerdem muss das neue WebRender-Backend aktiv sein. Das kann mit MOZ_WEBRENDER=1
beim Start erzwungen werden (via).
Start und Test
Um das ganze zu testen starte Firefox so:
MOZ_WEBRENDER=1 MOZ_X11_EGL=1 MOZ_LOG="PlatformDecoderModule:5" firefox 2>&1 | grep 'VA-API'
Wenn dann beim Abspielen von Videos Zeilen wie diese auftauchen funktioniert es:
8946:[Child 20521: MediaPDecoder #2]: D/PlatformDecoderModule DMABUF/VA-API Got one frame output with pts=42000000dts=41999999 duration=33333 opaque=-9223372036854775808
Bevor ich WebRender aktiviert hatte sah ich dagegen diese Fehlermeldung:
41:[Child 18537: MediaController #2]: D/PlatformDecoderModule DMA-Buf/VA-API can't be used, WebRender/DMA-Buf is disabled
Es ist toll, dass die Grafikkartenbeschleunigung endlich auch Linux-Firefox erreicht und nochmal besser, dass dabei auch an X11 gedacht wird und sie nicht im nicht praxistauglichen Wayland verschwindet. Schade, dass die Funktion noch nicht stabil ist, aber das dürfte sich jetzt angesichts der generellen Verfügbarkeit schnell ändernMittlerweile funktioniert die Beschleunigung auch stabil, was toll ist.
Edit 02.03.2021: Ergänzt um Hinweise zu Intel-Grafikkarten und die nötige Deaktivierung von media.rdd-vpx.enabled
, Fazit angepasst.
onli blogging am : Warum ich von meinem PineTab ausgerechnet auf ein Microsoft Surface Pro umstieg
Vorschau anzeigen