Runforrest World

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:

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 ^^

#guia