RPi-VK-Drive: el controlador de GPU con soporte Vulkan para placas RPI antiguas
Hace ya algún tiempo, la fundación Raspberry Pi, junto con Igalia, dieron a conocer al público en general el trabajo en conjunto sobre el desarrollo de un controlador Vulkan para las placas Raspberry Pi en el cual de manera inicial dijeron que este sería compatible únicamente con la placa más nueva que es la “Raspberry Pi 4” y fue así como iniciaron la etapa inicial de desarrollo y la cual no mención como tal una fecha en específico de cuando estaría listo el controlador o sobre cuando seria apto para lanzar algunas aplicaciones reales.
Lo único que mencionaron era que esto podría ser posible en la segunda mitad del 2020, dentro de las especificaciones del controlador se mencionó que este se limita a la compatibilidad con el acelerador de gráficos VideoCore VI, utilizado desde el modelo Raspberry Pi 4 y que no podría ser compatible con placas mas antiguas, es decir del modelo 3b+ hacia atrás quedaban descartadas.
Además, mencionaban que, en comparación con OpenGL, el uso de Vulkan puede mejorar el rendimiento de las aplicaciones gráficas y los juegos.
Con esta noticia muchos fanáticos y poseedores de una Raspberry Pi que no era el modelo 4, quedaron decepcionados pues sintieron que fueron hechos a un lado y que prácticamente anunciaban que ya no merece la pena trabajar en continuar dando soporte para alguna de estas placas.
Pero, ahora en noticias mas recientes, tal parece que las cosas han cambiado ya que un desarrollador vino a demostrar lo contrario.
Sobre RPi-VK-Driver 1.0
Martin Thomas, un ingeniero de NVIDIA fue es el responsable del desarrollo de RPi-VK-Driver el cual es un controlador abierto que a palabras de su autor:
“El controlador fue desarrollado por, sin embargo, el desarrollo se llevó a cabo como un proyecto personal, no relacionado con NVIDIA (el controlador se desarrolló los últimos dos años en su tiempo libre).”
Esta primera versión del controlador abierto RPi-VK-Driver 1.0 se distribuye bajo la licencia MIT y en el se implementa el soporte de API de gráficos Vulkan para placas Raspberry Pi más antiguas que se incluyen con la GPU Broadcom Videocore IV.
El controlador es adecuado para todos los modelos de placas Raspberry Pi lanzadas antes de Raspberry Pi 4.
De los modelos soportados, en el repositorio se mencionan los siguientes:
- Cero
- Cero w
- 1 modelo A
- 1 modelo A +
- 1 modelo B
- 1 modelo B +
- 2 Modelo B
- 3 Modelo A +
- 3 Modelo B
- 3 Modelo B +
- Compute Module1
- Compute Module 3
- Compute Module 3 lite
- Compute Module 3+
- Compute Module 3+ lite
Dado que las capacidades de la GPU VideoCore IV, que están equipadas con modelos antiguos de Raspberry Pi, no son suficientes para la implementación completa de Vulkan, el controlador implementa solo un subconjunto de la API de Vulkan, que no cubre todo el estándar, pero trata de seguirlo hasta donde el equipo lo permita.
Sin embargo, la funcionalidad disponible es suficiente para muchas aplicaciones y juegos, y el rendimiento está muy por delante de los controladores OpenGL debido a una administración de memoria más eficiente, procesamiento de subprocesos múltiples de comandos de GPU y control directo de las operaciones de GPU.
El controlador también admite funciones como MSAA (Anti-aliasing multisample), sombreadores de bajo nivel y contadores de rendimiento. De las limitaciones, hay una falta de soporte para sombreadores GLSL, que aún no están disponibles en esta etapa de desarrollo.
En cuanto al autor, podemos destacar que fue quien también se encargó de publicó el port del juego Quake 3 para Raspberry Pi, que sirve como demostración de las capacidades del nuevo controlador.
El juego se basa en el motor ioQuake3, al que se agregó un back-end de renderizado modular basado en Vulkan, desarrollado originalmente por el proyecto Quake III Arena Kenny Edition . Al usar el nuevo controlador en el juego, era posible renderizar más de 100 cuadros por segundo (FPS) en la placa Raspberry Pi 3B + a una salida de 720p.
Finalmente, en cuanto a la implementacion de este controlador así como para conocer mas información al respecto, pueden consultar el repositorio del controlador en el siguiente enlace.