![]() |
Figura 1: Firefox VAAPI es una realidad para drivers Open-Source. |
Al referirnos a la aceleración por hardware se entiende que el GPU procesará contenido multimedia (como es el caso de videos) para liberar al CPU de esa carga de trabajo, mantener un mejor rendimiento, presentar menores temperaturas y reducir el consumo de energía (vital para ordenadores portátiles). Naturalmente, el usuario de un navegador web (llámese: Firefox, Chrome, Edge, etc.) no se preocupa por estos detalles y dan por echo que la aceleración por hardware funciona correctamente, esto casi siempre se cumple en Windows, pero en el sistema operativo del pingüino la situación se complica y más aún si el PC/portátil posee múltiples GPUs.
Esta publicación mostrará el estado actual de la aceleración por hardware en el navegador web Mozilla Firefox, el proceso para su activación, configuración, pruebas de rendimiento, uso de códecs H.264 y VP9 en sistemas con multi-GPU usando GNU/Linux.
NOTA: Esta publicación es válida para portátiles con gráficos híbridos equipados con un iGPU Intel o APU y dGPU AMD o Nvidia.
NOTA: Esta publicación es válida para portátiles con gráficos híbridos que utilizan drivers Open-Source.
ADVERTENCIA: Esta publicación NO es válida para portátiles con gráficos híbridos que utilizan drivers privativos como "nvidia".
ADVERTENCIA: Este contenido (procedimientos y benchmarks) es válido para Firefox 84. En un futuro podrían variar.
- i965-va-driver
- mesa-va-drivers
- intel-media-va-driver (*)
- intel-media-va-driver-non-free (*)
- vainfo
- intel-gpu-tools
- radeontop
(*) Dependencias mutuamente excluyentes.
- i965-va-driver ("sudo apt install i965-va-driver")
- mesa-va-drivers ("sudo apt install mesa-va-drivers")
- intel-media-va-driver ("sudo apt install intel-media-va-driver")
- intel-media-va-driver-non-free ("sudo apt install intel-media-va-driver-non-free")
- vainfo ("sudo apt install vainfo")
- intel-gpu-tools ("sudo apt install intel-gpu-tools")
- radeontop ("sudo apt install radeontop")
- HP Pavilion G4-2082la
- Dual Boot: Windows 10 + Kubuntu 20.04 LTS
- Intel HD 3000 + AMD Radeon HD 7670M
En general (considerando navegadores web, reproductores de video, etc.), la aceleración por hardware permite utilizar el GPU (Unidad de procesamiento gráfico) para renderizar contenido de interés y liberar al CPU de esta carga pesada de trabajo porque el primero posee un hardware más especializado.
Las ventajas y desventajas de la aceleración por hardware son:
- Menor uso de CPU.
- Menor consumo de energía.
- Menor temperatura de CPU.
- Mayor rendimiento al renderizar.
- Codificar y decodificar simultáneamente en distintos GPUs para ganar rendimiento.
- GPUs antiguos pierden soporte por adopción de nuevos códecs.
- Los navegadores web pueden limitar la resolución de videos si son reproducidos con códecs antiguos.
- Una mala implementación genera corrupción, pantalla verde, entre otros problemas en el contenido reproducido.
- En GNU/Linux el soporte (actual) mediante drivers VAAPI y navegadores web es muy limitado.
II. ¿Qué es VAAPI y cuáles son los códecs que puedo utilizar?
VAAPI (Video Acceleration API) es una especificación que proporciona el acceso al hardware de gráficos (GPU) y la aceleración de video para su procesamiento. La aceleración de video incluye códecs de video, mezclas de sub-imágenes y renderizado.
En GNU/Linux, es prácticamente un estándar para codificar y decodificar, incluso es una opción seleccionable en OBS Studio (para cierto hardware).
En cuanto a los códecs, estos nos permiten visualizar/generar contenido multimedia con un menor o mayor costo de GPU dependiendo del hardware soportado.
Para saber qué códecs se pueden usar, deberemos preparar el escenario:
[1]. Abrir un terminal.
[2]. Instalar el driver VAAPI de interés según la Tabla 1:
Tabla 1: Dependencias que instalan los drivers VAAPI para GPUs Intel, AMD y Nvidia.
-
Driver VAAPI
Intel
i965-va-driver
intel-media-va-driver
intel-media-va-driver-non-free
AMD/Nvidia
mesa-va-drivers
- sudo apt install i965-va-driver intel-media-va-driver mesa-va-drivers
NOTA: En mi caso, poseo un iGPU Intel y un dGPU AMD Radeon, el comando anterior se encuentra adaptado a este conjunto de GPUs.
[3]. Instalar vainfo:
- sudo apt install vainfo
[4]. Ver los dispositivos DRI que renderizan contenido. En un terminal:
- ls /dev/dri/
En mi caso, la salida es:
![]() |
Figura 2: Se muestran 2 dispositivos renderizadores. |
- by-path card0 card1 renderD128 renderD129
La línea anterior nos dice que el PC/portátil posee 2 GPUs: "renderD128" y "renderD129"..
Entonces, los dispositivos DRI son (tomar nota de este dato):
- /dev/dri/renderD128
- /dev/dri/renderD129
[5]. Ver nombres de drivers para identificar los dispositivos DRI. En un terminal:
- sudo cat /sys/kernel/debug/dri/128/name
- sudo cat /sys/kernel/debug/dri/129/name
En mi caso, las salidas respectivas son:
![]() |
Figura 3: "i965" es el nombre del driver de Intel que representa al iGPU, "radeon" es el nombre del driver de Radeon que representa al dGPU. |
- i915 dev=0000:00:02.0 unique=0000:00:02.0
- radeon dev=0000:01:00.0 master=pci:0000:01:00.0 unique=0000:01:00.0
De las líneas anteriores inferimos que "renderD128" es el iGPU Intel (por usar el driver "i965") y "renderD129" es el dGPU Radeon (por usar el driver "radeon"). Tomar nota de este dato.
NOTA: El paso 5 es muy importante, muchas veces damos por sentado que el primer dispositivo DRI (D128) es el iGPU, pero en algunos escenarios esta suposición puede ser errada.
[6]. Listar los drivers VAAPI instalados:
- ls /usr/lib/x86_64-linux-gnu/dri/*drv_video.so
La salida, en mi caso es:
![]() |
Figura 4: Los archivos mostrados en la salida se encuentran asociados al driver VAAPI. |
Donde, los archivos de interés son los terminados en "drv_video.so". En la Tabla 2 se muestra la equivalencia de estos archivos y los Drivers VAAPI:
Tabla 2: Equivalencia entre archivos VAAPI y Drivers VAAPI.
|
Archivos VAAPI |
Driver VAAPI |
Intel |
i965_drv_video.so |
i965 |
iHD_drv_video.so |
iHD |
|
Nvidia |
nouveau_drv_video.so |
nouveau |
Radeon |
r600_drv_video.so |
r600 |
radeonsi_drv_video.so |
radeonsi |
[7]. Mostrar información de códecs VAAPI teniendo en cuenta los dispositivos DRI y los Drivers VAAPI. En un terminal, ejecutar:
- LIBVA_DRIVER_NAME=i965 vainfo --display drm --device /dev/dri/renderD128
- LIBVA_DRIVER_NAME=radeonsi vainfo --display drm --device /dev/dri/renderD129
NOTA: Existen PCs/portátiles que pueden usar 2 drivers VAAPI para el iGPU y una forma de especificarlo es mediante la variable "LIBVA_DRIVER_NAME". Dicha variable puede ser omitida.
NOTA: La opción "--device" y su argumento (/dev/dri/renderD12X) puede ser omitida si el PC/portátil posee 1 GPU.
La salida se cada comando se muestra a continuación:
![]() |
Figura 5: Se muestran los códecs compatibles con el iGPU Intel usando el driver VAAPI "i965". |
![]() |
Figura 6: Se muestran los códecs compatibles con el dGPU Radeon usando el driver VAAPI "radeonsi". |
Si todo resultó correcto, veremos 2 columnas, donde la primera representa el códec compatible y la segunda la compatibilidad con la codificación o decodificación. En este caso, nos interesa la decodificación.
La forma de interpretar si el driver es capaz de codificar o decodificar es: Si la segunda columna dice "VAEntrypointVLD" significa que el GPU es capaz de decodificar el formato de la primera columna. Si dice "VAEntrypointEncSlice" significa que puede codificar.
De la salida anterior, para el iGPU y dGPU vemos que es posible la decodificación en H.264, pero no en VP8, VP9 y AV1 (por ser GPUs antiguos).
NOTA: Puede darse el caso que un Driver VAAPI no sea compatible con un GPU, como es el caso de "iHD" con Intel HD 3000 tal como se muestra en la siguiente figura.
![]() |
Figura 7: Error al tratar de utilizar el Driver VAAPI "iHD" con el GPU Intel HD 3000. |
III. ¿Cuál es el estado actual de los navegadores web en GNU/Linux?
Los 3 principales y más conocidos navegadores son Mozilla Firefox, Google Chrome y Microsoft Edge. Por el momento, Edge no cuenta con aceleración por hardware (y no hay noticias al respecto), Google Chrome tiene VAAPI, pero en algunas versiones nuevas se pierde y Chromium cuenta con un parche no oficial que lo habilita. Mozilla Firefox fue el primero en dar el gran paso: VAAPI se encuentra disponible para decodificar video tanto en Xorg como en Wayland.
La versión actual (al momento de esta publicación) de Firefox es la 84 (al igual que la primera en soportar VAAPI: 75) y no tienen VAAPI habilitado por defecto, el motivo es que aún falta mejorar y solucionar varios problemas.
IV. ¿Cómo habilitar la aceleración por hardware en Firefox?
Primero debemos determinar si estamos usando Xorg o Wayland. Las distribuciones Kubuntu, KDE Neon y similares, en la actualidad usan Xorg; para otras distribuciones, es tan fácil como abrir el "Monitor del sistema" y buscar el proceso "xorg" o "wayland", si encuentran "xorg" significa que están en Xorg, lo mismo aplica para "wayland". En esta publicación se considera el caso de Xorg, para Wayland usar la equivalencia que aparece en la Tabla 4.
Para habilitar la aceleración por hardware, deberemos haber instalado los drivers VAAPI tal como vimos anteriormente, entonces procedemos de la siguiente manera:
[1]. Abrir Firefox y en la barra de direcciones ejecutar:
- about:config
[2]. Habilitar el compositor "OpenGL" o "WebRender" cambiando su valor a "True":
![]() |
Figura 8: Habilitando el primer "Flag" en Firefox. Este es el primer paso para reducir el uso del CPU. |
- layers.acceleration.force-enabled
- gfx.webrender.all
NOTA: El compositor OpenGL es "layers.acceleration.force-enabled" y WebRender es "gfx.webrender.all".
[3]. Modificar los "Flags" mostrados en la Tabla 3:
Tabla 3: Flags a modificar para preparar la aceleración por hardware en Firefox.
Flags |
Valor |
Descripción considerando el valor |
media.ffmpeg.vaapi.enabled |
True |
Permite el uso de VA-API con FFmpeg |
media.ffvpx.enabled |
False |
Desactiva decodificadores internos para VP8/VP9 |
media.av1.enabled |
False |
Desactiva el códec AV1 en varios sitios |
NOTA: La modificación de "media.av1.enabled" es opcional. Si el Driver VAAPI soporta decodificación AV1, entonces dejarlo como "True".
[4]. Cerrar Firefox, abrir un terminal y ejecutar el comando con los prefijos-variables adecuados de la Tabla 4 y considerando los datos de la Tabla 5, 6 y 7:
Tabla 4: Variables de entorno para ejecutar Firefox en Xorg y Wayland con aceleración por Hardware.
|
Xorg |
Wayland |
Variable 1 |
MOZ_WAYLAND_DRM_DEVICE |
MOZ_WAYLAND_DRM_DEVICE |
Variable 2 |
LIBVA_DRIVER_NAME |
LIBVA_DRIVER_NAME |
Variable 3 |
MOZ_X11_EGL |
MOZ_ENABLE_WAYLAND |
Tabla 5: Explicación de las variables de entorno de la Tabla 4.
Variable | Tipo de argumento | Descripción |
MOZ_WAYLAND_DRM_DEVICE | String | Selecciona el dispositivo DRI |
LIBVA_DRIVER_NAME | String | Selecciona el driver VAAPI |
MOZ_X11_EGL / MOZ_ENABLE_WAYLAND | integer |
Habilita la aceleración por hardware (0,1) |
Tabla 6: Argumentos de la variable "MOZ_WAYLAND_DRM_DEVICE" y "LIBVA_DRIVER_NAME" para un iGPU Intel HD 3000 y AMD Radeon 7600M (puede variar en otros PCs/portátiles, ver capitulo 2).
Variable |
Argumentos |
MOZ_WAYLAND_DRM_DEVICE |
/dev/dri/renderD128 /dev/dri/renderD129 |
LIBVA_DRIVER_NAME |
i965 r600 radeonsi |
Tabla 7: Equivalencia entre archivos VAAPI y Drivers VAAPI (Puede variar en otros PCs/portátiles, ver capitulo 2).
| Archivos VAAPI | Driver VAAPI |
Intel | i965_drv_video.so | i965 |
iHD_drv_video.so | iHD | |
Nvidia | nouveau_drv_video.so | nouveau |
Radeon | r600_drv_video.so | r600 |
radeonsi_drv_video.so | radeonsi |
Entonces:
Para utilizar el iGPU Intel con el Driver VAAPI "i965" el comando es:
- MOZ_WAYLAND_DRM_DEVICE=/dev/dri/renderD128 LIBVA_DRIVER_NAME=i965 MOZ_X11_EGL=1 firefox
Para utilizar el dGPU Radeon con el Driver VAAPI "radeonsi" el comando es:
- MOZ_WAYLAND_DRM_DEVICE=/dev/dri/renderD129 LIBVA_DRIVER_NAME=radeonsi MOZ_X11_EGL=1 firefox
De manera similar se puede dirigir el GPU de interés con el Driver VAAPI deseado, por ejemplo "nouveau" para el GPU Nvidia.
NOTA: En algunos casos no es necesario especificar "MOZ_WAYLAND_DRM_DEVICE" y "LIBVA_DRIVER_NAME" para utilizar el iGPU Intel (dependerá del orden de asignación de los dispositivos DRI). El argumento de ambas variables se obtienen del capitulo 2.
V. ¿Cómo configurar los códecs en Firefox para una correcta aceleración por hardware?
Por defecto, Firefox y otros navegadores utilizan códecs H.264/AVC1, VP8, VP9, etc. El códec que funciona en la gran mayoría de dispositivos es H.264/AVC1 tal como se vio en la salida del comando "vainfo" en el capítulo 2.
El problema surge con códecs más actuales que el GPU utilizado, como es el caso de Intel HD 3000 y Radeon 7600M (GPUs del años 2011) utilizados en este ejemplo. Entonces, por más que configuremos y activemos la aceleración por hardware VAAPI no funcionará si utilizamos un códec no soportado por el GPU. Es por eso que instalaremos una extensión.
NOTA: Tener en cuenta que si el video que deseamos reproducir no tiene versión H.264/AVC1, entonces se reproducirá con un códec más actual (VP8, VP9, etc.) y la extensión no funcionará. La extensión no va a generar mágicamente un video H.264, sólo va a seleccionar una versión de dicho video con el códec deseado si es que existe en la plataforma.
[1]. Abrir el "Menú" e ingresar a la opción "Complementos".
[2]. Buscar e instalar "h264ify" (existen alternativas).
[3]. Clic en el nuevo icono y activar el check "Enable h264ify"
![]() |
Figura 9: h264ify permite bloquear todos los códecs y forzar H.264 en sitios como YouTube. |
[4]. Reiniciar el navegador con las variables configuradas del capitulo 4.
[5]. En un video de YouTube, realizar clic derecho y clic en la opción "Estadísticas". Deberían ver en apartado "Codecs" la palabra "avc1", eso quiere decir que se usa el códec H.264.
![]() |
Figura 10: Códec H.264 habilitado en YouTube. |
NOTA: Si el GPU utilizado soporta los códec VP8, VP9, AV1, etc. No es necesario instalar "h264ify".
NOTA: YouTube bloquea la resolución de videos a un máximo de 1080p 60 FPS al utilizar el códec H.264.
VI. ¿Cómo verificar si la aceleración por hardware funciona correctamente en Firefox?
Al reproducir cualquier video deberíamos notar un menor uso de CPU una vez configurado el códec (opcional) y con VAAPI activado. Pero también existen otras formas de comprobarlo:
[1]. Abrir Firefox con las variables de entorno correctas en un terminal.
[2]. Reproducir cualquier video de YouTube.
[3]. Abrir el terminal donde se ejecutó Firefox y verificar que la salida contenga las líneas de la siguiente imagen:
![]() |
Figura 11: Firefox con el Driver VAAPI "i965" funcionando sin ningún error con el códec H.264. |
![]() |
Figura 12: Firefox con el Driver VAAPI "r600" funcionando sin ningún error con el códec H.264. |
NOTA: De producirse algún error, es muy probable que el driver VAAPI no se esté dirigiendo hacia el dispositivo DRI correcto, en ese escenario la aceleración por hardware puede encontrase desactivada o puede estar realizando llamadas adicionales con un mayor consumo de CPU (siguiente figura). Para solucionar este problema, realizar de nuevo el capítulo 4 y verificar que no existan errores en la salida de "vainfo".
![]() |
Figura 13: Firefox con el Driver VAAPI "i965" provocando errores con el driver "iHD" (no compatible con Intel HD 3000) y realizando llamadas adicionales con el códec H.264. |
Alternativamente, si utilizan un GPU Intel o Radeon, es posible el uso de 2 herramientas: intel_gpu_top y radeontop.
[1]. En un terminal, instalar la dependencia de interés:
- sudo apt install intel-gpu-tools
- sudo apt install radeontop
[2.1]. Para el caso de un GPU Intel, ejecutar:
- sudo intel_gpu_top
![]() |
Figura 14: Intel_gpu_top muestra que no se utiliza la decodificación de video. |
![]() |
Figura 15: Intel_gpu_top muestra que se utiliza la decodificación de video. |
Intel_gpu_top mostrará estadísticas del GPU Intel. Nos interesa el apartado que dice "Video". El valor mostrado representa el porcentaje de uso de GPU dedicado únicamente a la decodificación por hardware.
[2.2]. Para el caso de un GPU Radeon, ejecutar:
- sudo radeontop
![]() |
Figura 16: Radeontop casi no muestra actividad. |
![]() |
Figura 17: Radeontop muestra un mayor uso de VRAM al momento de decodificar video y el terminal no muestra errores de VAAPI. |
Radeontop mostrará estadísticas del GPU Radeon, aquí no existe (al menos en el GPU Radeon 7600M) una estadística exclusiva para la decodificación por hardware, pero debería mostrarse actividad siempre y cuando se dirija el driver VAAPI (en este caso "r600") al dispositivo DRI Radeon al momento de reproducir un video con la condicional que el GPU Radeon sea el dGPU o GPU secundario.
NOTA: En sistema que poseen múltiples GPUs, es necesario agregar la opción --bus nbus (Donde "nbus", representa el número de bus asignado al GPU Radeon de interés). El comando final, como ejemplo, sería: sudo radeontop --bus 1.
VII. ¿La variable DRI_PRIME es de utilidad en esta ocasión?
Es cierto que DRI_PRIME (0 o 1 como argumento) como prefijo es capaz de forzar la aplicación deseada al iGPU o dGPU, pero en el caso de VAAPI en Firefox esto no es así.
En otras palabras, Firefox en su totalidad se puede ejecutar en el iGPU y el contenido que utilice VAAPI puede ser dirigido al iGPU o dGPU sin la necesidad de la intervención de DRI_PRIME.
También, se puede decir que DRI_PRIME no lo es todo y existen otras formas de llamar al GPU secundario.
VIII. ¿Es necesario siempre usar el terminal para abrir Firefox con VAAPI activado?
La respuesta es: NO. El terminal se usa para descartar problemas.
Una vez que estén satisfechos con el comando para activar VAAPI en Firefox, entonces es posible la creación/modificación del lanzador del navegador, tal como se ve en la Figura 18:
![]() |
Figura 18: Lanzador de Firefox con VAAPI. |
Para el caso de distribuciones con el escritorio KDE Plasma, es tan fácil como modificar la sección "Orden" con el comando que incluye todas las variables de entorno, en mi caso es:
- env MOZ_WAYLAND_DRM_DEVICE=/dev/dri/renderD128 LIBVA_DRIVER_NAME=i965 MOZ_X11_EGL=1 firefox %u
NOTA: Para que la "Orden" funcione, la línea debe empezar con la palabra "env".
NOTA: El comando final "%u" se utiliza para abrir enlaces externos dirigidos a Firefox, es opcional.
IX. Pruebas de rendimiento
Ahora, empecemos con las pruebas. La variable analizada es el porcentaje de uso de CPU. Se utilizaron 2 portátiles:
- HP Pavilion G4-2082la [i5-2450M (2C/4T), 8 GB RAM @1600 MHz Dual Channel]
- Dual Boot: Windows 10 + Kubuntu 20.04 LTS
- Intel HD 3000 + AMD Radeon HD 7670M
- DELL 7567 [i7-7700HQ (4C/8T), 16 GB RAM @2400 MHz Dual Channel]
- Dual Boot: Windows 10 + Kubuntu 20.04 LTS
- Intel HD 630 + Nvidia GTX 1050ti
Prueba 01:
Se reprodujo el siguiente video de YouTube a la resolución 1080p 60 FPS con el códec H.264 en ambos equipos de prueba. La toma de datos fue de 100 s a partir del minuto 3:58.
Los resultados se muestran en la Figura 19 y 20:
![]() |
Figura 19: Uso de CPU en la reproducción de un video en Firefox con H.264. HP Pavilion g4-2082la. |
![]() |
Figura 20: Uso de CPU en la reproducción de un video en Firefox con H.264. DELL 7567. |
Podemos concluir que:
- El uso promedio de CPU (i5-2450M) al usar el dGPU Radeon 7600M es 23.31% con un mínimo de 15.60% y un máximo de 39.00%.
- El uso promedio de CPU (i5-2450M) al usar el iGPU Intel HD 3000 es 28.81% con un mínimo de 16.40% y un máximo de 50.70%.
- El uso promedio de CPU (i5-2450M) al usar VAAPI es prácticamente la mitad que al no usar la aceleración por hardware.
- El uso promedio de CPU (i7-7700HQ) al usar el iGPU Intel HD 630 con el driver VAAPI "i965" es 17.49% con un mínimo de 11.90% y un máximo de 30.20%.
- El uso promedio de CPU (i7-7700HQ) al uso el iGPU Intel HD 630 con el driver VAAPI "iHD" es 17.59% con un mínimo de 10.80% y un máximo de 28.70%.
- El uso promedio de CPU (i7-7700HQ) al usar VAAPI es prácticamente igual (~3% menos) que al no usar VAAPI, pero el primero es más estable debido a que en el segundo escenario llega a un máximo de 43.50%.
Prueba 02:
Se reprodujo el siguiente video de YouTube a la resolución 1080p 60 FPS con el códec VP9 en el equipo de prueba 2. La toma de datos fue de 100 s a partir del minuto 8:41.
NOTA: No se realizó la prueba en el Equipo de prueba 1 porque no soporta el códec VP9.
El resultado se muestra en la Figura 21:
![]() |
Figura 21: Uso de CPU en la reproducción de un video en Firefox con VP9. DELL 7567. |
Podemos concluir que:
- El uso promedio de CPU (i7-7700HQ) al usar el iGPU Intel HD 630 con el Driver VAAPI "i965" es 18.43% con un mínimo de 11.50% y un máximo de 29.20%.
- El uso promedio de CPU (i7-7700HQ) al usar el iGPU Intel HD 630 con el Driver VAAPI "iHD" es 17.91% con un mínimo de 12.80% y un máximo de 26.80%.
- El uso promedio de CPU (i7-7700HQ) al usar VAAPI es inferior (~6% menos) que al no usar VAAPI, pero el primero es más estable debido a que en el segundo escenario llega a un máximo de 48.80%.
X. Usar la aceleración por hardware en Firefox Linux ¿Vale la pena?
La respuesta es complicada, me explico:
Vale la pena siempre y cuando utilicemos un PC/Laptop con un CPU de bajas prestaciones (2C/4T) porque prácticamente reducimos en la mitad el porcentaje de uso de CPU (depende del PC/portátil) y esa liberación la podemos aprovechar para otras tareas.
Pero, mientras el número de núcleos de un procesador sea mayor (4C/8T en adelante), la mejora en rendimiento no es tan apreciable porque podemos liberar al CPU de ~3% a ~6% de carga dependiendo del códec empleado. Aunque desde el punto de vista de la estabilidad de uso de CPU, si es conveniente.
Entonces, ¿Cuál es el motivo por el cuál el porcentaje uso de CPU sigue siendo alto en Firefox por más que tengamos VAAPI activo?
La respuesta es, no se sabe, pero podemos especular. VAAPI funciona muy bien, de eso no hay duda. Si reproducimos el mismo contenido de YouTube pero en VLC (obviamente configurando el software para usar VAAPI) se obtiene un bajo uso de CPU (para estas pruebas es de ~5% a ~10%) en comparación con Firefox. De aquí se concluye que: O Firefox tiene problemas en su programación para renderizar contenido multimedia por más que se tenga la ayuda de VAAPI o el problema es el mismo Linux en si. Me explico, muchos navegadores web ya utilizan VAAPI, pero su implementación aún estaría ligada al CPU para transferir el contenido al GPU (para su decodificación final), entonces por más que utilicemos VAAPI, este no es 100% GPU dependiente como es el caso en Windows.
NOTA: Chromium con VAAPI también posee el mismo problema, por lo que se puede inferir que muchos navegadores en GNU/Linux tendrían un comportamiento similar.
NOTA: Las pruebas realizadas pueden variar en otros equipos, les invito a darle una oportunidad a VAAPI.