Recupera la aceleración por hardware en Ivy Bridge y Haswell en Wayland
Desde hace bastante tiempo las IGPUs de la familia de procesadores Ivy Bridge y Haswell han experimentado problemas con la aceleración por hardware en wayland, esto se debe a que el protocolo wlr_drm fué eliminado y esto hizo que la aceleración por hardware se perdiera aunque Intel cuando aún desarrollaba el driver libva-intel-driver ofrecia parches para solucionar este problema pero lamentablemente fué descontinuado hace un año.
En esta entrada relativamente corta quiero dar un tutorial sobre como instalarlo en Arch Linux y Void Linux.
¿Qué es este fork?
Intel VA-API Driver IRQL es un fork del antiguo controlador libva-intel-driver, su objetivo principal es restaurar la aceleración por hardware en determinadas iGPUs de Intel antiguas, especialmente en las familias Ivy Bridge y Haswell.
Las mejoras más destacables se resumen en:
- Soporte funcional en navegadores basados en chromium.
- Soporte asincrono completo (
vaSyncBuffer). - Soluciona los problemas de la exportación de búferes de vídeo de 3 planos y añade soporte para el formato de color ARGB.
Ya con estas mejoras se puede decir que el driver es un buen reemplazo y mejor que el driver original aparte de ofrecer la aceleración por hardware.
Para consultar más información respecto a este fork podemos leer el readme del proyecto su repositorio está aquí: https://github.com/irql-notlessorequal/intel-vaapi-driver
Instalando el driver
La instalación del driver no es tan dificil aunque depende bastante de la distribución, en este caso solo me enfocaré en Arch y Void en otras distros quizás sea necesario compilar.
Arch Linux:
El autor del driver tiene un PKGBUILD en AUR disponible, con este PKGBUILD podremos instalar el driver tranquilamente usando nuestro AUR helper de preferencia.
Nota a tomar en cuenta antes de comenzar con la instalación:
Si usas CachyOS o el repositorio Chaotic AUR este driver lo podrás encontrar en el repositorio del ya mencionado Cachy y en Chaotic.
Con yay:
yay -S libva-intel-driver-irql
Con paru
paru -S libva-intel-driver-irql
Tengan en cuenta que esto removerá libva-intel-driver ya que este mismo driver se llama igual.
Void Linux:
En Void Linux no existe ningún paquete, pero por suerte e armado un template que nos permite empaquetarlo con xbps-src.
Entonces hacemos lo siguente:
Descargamos el template, cuando ya tengamos el template descargado lo abrimos y editamos el campo archs= quitando -musl al final ya que el template compilará para musl pero tambien funcionará en glibc, Otra cosa a tomar en cuenta es que recomiendo crear una carpeta para el template que se llame igual que el paquete (libva-intel-driver-irql) y de ahí metemos nuestro template a la carpeta.
Si no tenemos xbps-src entonces lo instalamos clonando void-packages con el siguente comando:
git clone https://github.com/void-linux/void-packages.git
Cuando ya se haya clonado entonces tomamos nuestra carpeta con el template adentro y lo movemos a la carpeta srcpkgs.
Ahora instalamos nuestro paquete deseado pero primero tenemos que hacer esto ya que es bastante importante:
./xbps-src binary-bootstrap
Simplemente dejamos que se instale todo y cuando esté listo entonces escribimos ./xbps-src pkg libva-intel-driver-irql con esto empezará a compilar.
Si ya a terminado de compilar exitosamente entonces nos vamos a /void-packages/hostdir/binpkgs/ ahí encontraremos nuestro paquete .xbps, para poder instalarlo seguimos lo siguente:
sudo xbps-rindex -a *.xbps && sudo xbps-install --repository=$PWD libva-intel-driver-irql
Con esto tendriamos nuestro paquete instalado y funcionando.
Comprobando que se haya instalado
Para comprobar si realmente se instaló y la aceleración por hardware está funcionando solo debemos de escribir vainfo en nuestra terminal y recibiremos algo similar a esto:
vainfo
Trying display: wayland
libva info: VA-API version 1.24.0
libva info: User environment variable requested driver 'i965'
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_24
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.24 (libva 2.24.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Haswell Desktop - 2.4.5
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264MultiviewHigh : VAEntrypointVLD
VAProfileH264MultiviewHigh : VAEntrypointEncSlice
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileH264StereoHigh : VAEntrypointEncSlice
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
Normalmente antes de tener este driver instalado recibiremos un mensaje más corto similar a este que es el que nos da el driver oficial:
Trying display: wayland
libva info: VA-API version 1.24.0
libva info: User environment variable requested driver 'i965'
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_9
error: failed to resolve wl_drm_interface(): Symbol not found: wl_drm_interface
libva error: /usr/lib64/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
Con el fork que recien instalamos no nos sucederá esto y la aceleración funcionará de lo esperado.
Palabras finales
Esto a sido todo, muchas gracias por leer y si te gustó esta entrada entonces puedes compartirsela a otras personas ^^