Ya podemos usar Vulkan en Raspberry Pi 4

Después de casi 10 meses desde su anuncio, ya podemos usar Vulkan en Raspberry Pi 4. Y no estamos hablando de una implementación que ha hecho la comunidad, como el caso de Vulkan en Raspberry Pi 3. Si no que son unos drivers oficiales programados por Igalia que se han añadido a la biblioteca de MESA y que, una vez que estén probados, se añadirán a los repositorios de Raspberry Pi OS y estarán disponibles para todo el mundo.

Como ya conocemos, Vulkan es una API que nos permite un acceso más rápido a la tarjeta gráfica y un mejor aprovechamiento de los núcleos del procesador, aumentando el rendimiento gráfico de la Raspberry Pi. Para poder hacer uso de esta API, la tarjeta gráfica tiene que ser compatible a nivel de hardware, cosa que pasa con la VideoCore VI que lleva esta Raspberry Pi. Una vez que cumplimos esos requisitos, y si el programa o juego que queremos usar tiene implementada esta API, notaremos una mejora en el rendimiento del mismo. Pero eso si, si el procesador lo permite.

Y es que cuando hablamos de procesador, el de la Raspberry Pi 4 es suficiente para muchas tareas, pero no para cosas pesadas. Si queremos emular algún sistema más o menos nuevo como puede ser Wii, PSP o PlayStation 2, o jugar a juegos como Doom III, todavía nos encontraremos con que el rendimiento no es el mismo que en un ordenador en condiciones.

Pero no solo buscamos un mejor rendimiento usando Vulkan en Raspberry Pi 4. También queremos una mayor compatibilidad con programas nuevos, como puede ser Blender, que en sus últimas versiones solo da soporte a esta API para el manejo de gráficos.

Es posible que hayas venido aquí para probar tu mismo Vulkan en Raspberry Pi 4. Así que, después de entrar un poco en detalles con lo que es Vulkan y que beneficios nos trae, vamos a ver como instalarlo, probarlo y luego decidir si se queda.

Instalando Vulkan en Raspberry Pi 4

Como he explicado antes, esta implementación de Vulkan para Raspberry Pi 4 está dentro de los drivers MESA a partir de su versión 20.3. Si queremos usar estos nuevos drivers nos toca compilarlos e instalarlos a mano, hasta que se añadan a Raspberry Pi OS. El proceso es muy parecido tanto si usamos el sistema operativo de 32 bits como el de 64 bits, con algunas diferencias. Pero una vez tenemos instalado estos nuevos drivers, ya podremos usar todo lo que ya está implementado de Vulkan en nuestra Raspberry Pi 4.

Lo primero que hacemos es lo mismo de siempre, que es asegurarnos de que tenemos Raspberry Pi OS actualizado, ya que en este caso vamos a usar este sistema operativo para la prueba. Para ello, escribiremos el siguiente comando en una terminal:

sudo apt update && sudo apt upgrade -y

Una vez que hemos actualizado todo, ahora tenemos que instalar todas las dependencias necesarias para compilar MESA 20.3. Esto lo haremos con el siguiente comando en la terminal:

sudo apt install -y libxcb-randr0-dev libxrandr-dev \
        libxcb-xinerama0-dev libxinerama-dev libxcursor-dev \
        libxcb-cursor-dev libxkbcommon-dev xutils-dev \
        xutils-dev libpthread-stubs0-dev libpciaccess-dev \
        libffi-dev x11proto-xext-dev libxcb1-dev libxcb-*dev \
        bison flex libssl-dev libgnutls28-dev x11proto-dri2-dev \
        x11proto-dri3-dev libx11-dev libxcb-glx0-dev \
        libx11-xcb-dev libxext-dev libxdamage-dev libxfixes-dev \
        libva-dev x11proto-randr-dev x11proto-present-dev \
        libclc-dev libelf-dev git build-essential mesa-utils \
        libvulkan-dev ninja-build libvulkan1 python-mako \
        libdrm-dev libxshmfence-dev libxxf86vm-dev libunwind-dev \
		valgrind libzstd-dev vulkan-tools -y

Dependiendo de los paquetes que tengamos ya instalados, este comando tardará más o menos en terminar, aunque no suele tardar más de unos minutos. Una vez haya terminado de instalarse todo, procederemos con la instalación de mako y meson, que nos ayudarán a compilar MESA 20.3 y así tener Vulkan en Raspberry Pi 4. Estos dos programas son scripts de Python, por lo que la forma de instalarlo será diferente. Además, también trataremos de desinstalar meson, por si lo hemos instalado desde los repositorios de Raspberry Pi OS, ya que tendremos una versión antigua. Todo esto lo haremos poniendo en la terminal los siguientes comandos:

sudo apt purge meson -y
sudo pip3 install meson
sudo pip3 install mako

Una vez tenemos todo instalado, necesitamos tener el código fuente de MESA para poder compilarlo y así poder acceder a la API de Vulkan en Raspberry Pi 4. Para poder descargar el código fuente usaremos la herramienta git en la terminal, poniendo lo siguiente:

cd ~
git clone https://gitlab.freedesktop.org/mesa/mesa.git mesa_vulkan
cd mesa_vulkan

Ahora estaremos en el directorio donde tenemos descargado el código fuente de MESA para poder compilarlo. Aun así, tenemos que indicarle como compilarlo correctamente para nuestra Raspberry Pi 4, de forma que podamos usar Vulkan correctamente. Dependiendo de la arquitectura de Raspberry Pi OS tendremos que poner una línea diferente para configurar meson y que MESA se compile correctamente. Aquí abajo te dejo las líneas dependiendo del sistema operativo que estamos usando:

Configurando meson para Raspberry Pi OS de 32 bits

CFLAGS="-mcpu=cortex-a72 -mfpu=neon-fp-armv8" CXXFLAGS="-mcpu=cortex-a72 -mfpu=neon-fp-armv8" meson --prefix /usr -Dplatforms=x11 -Dvulkan-drivers=broadcom -Ddri-drivers= -Dgallium-drivers=kmsro,v3d,vc4 -Dbuildtype=release build

Configurando meson para Raspberry Pi OS de 64 bits

CFLAGS="-mcpu=cortex-a72" CXXFLAGS="-mcpu=cortex-a72" meson --prefix /usr -Dplatforms=x11 -Dvulkan-drivers=broadcom -Ddri-drivers= -Dgallium-drivers=kmsro,v3d,vc4 -Dbuildtype=release build

Si no hemos tenido ningún error, deberíamos tener una pantalla como la de la imagen superior indicándonos que ya podemos compilar MESA. Para ello, pondremos los siguientes comandos en la terminal, haciendo que comience el proceso, tardará unos 20 minutos.

ninja -C build -j4
sudo ninja -C build install
Terminando de compilar MESA 20.3

Una vez ha terminado todo, veremos una pantalla como la que tenemos encima, indicando que todo se ha copiado correctamente. Ahora nos toca reiniciar y ya podremos usar la API de Vulkan en Raspberry Pi 4. Recuerda que la mejor forma de reiniciar la Raspberry Pi es desde el propio sistema operativo y no desenchufándola y volviéndola a enchufar. Para reiniciarla, yo suelo hacerlo desde la terminal con este comando:

sudo reboot

Y ahora que ya hemos reiniciado, la mejor forma de comprobar que funciona Vulkan en nuestra Raspberry Pi 4 es mediante alguna utilidad, como puede ser vkcube, que podemos usar con el siguiente comando en la terminal:

vkcube

¿Cómo funciona Vulkan en Raspberry Pi 4?

Como podemos ver en la imagen de vkcube, Vulkan en Raspberry Pi 4 funciona, pero no está exento de errores. Aunque tengamos la API implementada en MESA, esto no quiere decir que todas las funciones de Vulkan estén ya implementadas o sean compatibles con la tarjeta gráfica de la Raspberry Pi 4, por lo que aún queda tiempo para que Vulkan tenga la misma compatibilidad en la Raspberry Pi que en un ordenador normal.

Esto no significa que no podamos usar Vulkan en Raspberry Pi 4. Se puede usar y funciona. Y esto quiere decir que muchos de los programas y juegos que usan esta API podrán funcionar sin problemas en Raspberry Pi una vez se adapte su código fuente a la arquitectura ARM, aunque dependiendo del procesador que necesiten, no tendrán un rendimiento óptimo.

Después de buscar cosas para poder probar la API de Vulkan en Raspberry Pi 4 con programas exigentes, he hecho un par de pruebas con el emulador Dolphin para Wii y GameCube, y el emulador PPSSPP para PSP, con resultados interesantes.

Para empezar, estos emuladores encontraban 2 adaptadores de Vulkan. Uno de ellos era V3D 4.2 y el otro era llvmpipe, lo cual me ha parecido curioso. Después de probar ambos dispositivos en ambos emuladores puedo contaros que tal va, aunque lo que he probado es una parte mínima de todos los programas que podemos usar con Vulkan en Raspberry Pi 4.

Para empezar hablaremos de Dolphin. Este emulador nos permite jugar a juegos de GameCube y Wii desde hace bastante tiempo, y cuenta con una versión para ARM de 64 bits, por lo que podemos usarlo sin problemas en Raspberry Pi OS de 64 bits. Si actualizamos MESA a la versión 20.3 podemos usar también Vulkan, con diferentes resultados dependiendo del adaptador que configuremos para renderizar la imagen.

Si usamos V3D 4.2 como adaptador, el rendimiento que conseguiremos es similar al que tendríamos utilizando OpenGL, que en mi caso es bastante malo, lo que hace ese juego injugable. En el caso de llvmpipe el rendimiento es mejor, pero se produce una cosa llamada vertex explosion que hace que los polígonos parpadeen y, aunque tengamos mejor rendimiento que con OpenGL, no podamos jugar al juego debido a los fallos gráficos que nos encontramos.

Diferencia entre Vulkan y OpenGL con el emulador Dolphin en Raspberry Pi 4

Con el emulador PPSSPP vemos diferentes resultados usando la API de Vulkan en Raspberry Pi 4 a los que nos hemos encontrado antes. Con ambos adaptadores tenemos una imagen sin errores y mucho más definida que en el caso de OpenGL. Los problemas vienen con el rendimiento de la API de Vulkan, siendo un poco peor que el de OpenGL en este emulador.

Aun así, la implementación de la API de Vulkan en Raspberry Pi 4 hará que muchos programas y juegos que no eran compatibles puedan serlo, y combinado con box86 podremos conseguir una gran máquina para nuestro entretenimiento por un precio ridículo.

Si ya has probado Vulkan en Raspberry Pi 4, deja un comentario con tus resultados para que los demás sepamos el rendimiento en otros juegos y programas y así saber mejor si estos avances nos darán una buena alegría a todos los usuarios.

Más información:

[themoneytizer id=»32486-28″]

Deja un comentario