API Vulkan: qué es y cómo ayuda a mejorar el rendimiento

API Vulkan: qué es y cómo ayuda a mejorar el rendimiento

Roberto Sole

Las tarjetas gráficas son muy potentes, pero se deben comunicar con muchas cosas, como con el procesador o el sistema operativo. Es necesario que exista un elemento que permita la comunicación entre componentes, recopilando la información. Una tarea que realizan las API gráficas principalmente. Hay varias actualmente, siendo una de las más importantes Vulkan, que es de código abierto.

 

¿Qué es una API?

Antes de hablar sobre Vulkan, necesitamos explicaros un poco este concepto. Una API significa interfaz de programa de aplicación, que no es otra cosa un conjunto de código que permite que diferentes aplicaciones se comuniquen.

De manera muy sencilla, una API es un software que entregará una solicitud. Se utilizan para todo. Un ejemplo sería la aplicación del tiempo de nuestro smartphone, que nos dice la temperatura, si llueve y otros muchos datos. Lo que hace es conectar mediante una API a un servicio de información metrológico y nos plasma esta información.

Se utilizan API para prácticamente cualquier servicio que nos muestre información. Hablamos de páginas de reservas de hoteles, aplicaciones de comida a domicilio, web de reserva de vuelos, etc. Todos estos conectan con otros servicios y nos dan la información más precisa según nuestras necesidades.

 

¿Qué es Vulkan?

Es una API específicamente diseñada para aplicación de gráficos 3D en tiempo real como son los videojuegos. Lo que hace es comunicarse con la GPU de nuestra tarjeta gráfica y decirle que entornos o partes del juego debe renderizar. Aunque esto es una explicación básica, sí que es una gran parte de su función.

Vulkan está desarrollada por Khronos Group, una empresa sin ánimo de lucro. Esta API se basa en OpenGL, que es su predecesora, pero con importantes mejoras de funcionamiento. Se combina con la API Mantle, desarrollada por parte de AMD y quien da mucho soporte a esta solución open source.

Debemos decir que Vulkan no es la API más popular para el desarrollo de videojuegos, es PhysX, que esta desarrollada y mantenida por Microsoft.

Vulkan es una API desarrollada para que tenga un bajo consumo de recursos del procesador. Lo que busca es ofrecer un trabajo lo más eficiente posible, permitiendo que el procesador realice otras tareas.

Los dos pilares de Vulkan son: que es de código abierto y multiplataforma. Que sea de código abierto quiere decir que los desarrolladores no deben pagar por utilizar esta API. Además, que sea multiplataforma significa que se puede desarrollar el juego para ser ejecutado en PC y consolas sin necesidad de conversiones que empeoren la calidad del juego.

api vulkan

 

Principales características

Se centra en ofrecer diferentes ventajas que no ofrecen el resto de API. Principalmente, permite un control más directo de la GPU de la tarjeta gráfica y un menor uso del procesador. Las ventajas de Vulkan son las siguientes:

 

API unificada

Es una solución universal pensada para ordenadores de sobremesa, dispositivos móviles y consolas. Permite a los desarrolladores mayores facilidades, ya que pueden desarrollar para una plataforma e importar para el resto de manera más sencilla

 

Multiplataforma

Vulkan no está pensada para funcionar en un único sistema operativo o factor de forma como DirectX. Entre otros, se puede usar en Android, Linux, Nintendo Switch, Raspberry Pi, Tizen, Fuchsia y Windows. Además, mediante MoltenVK se da soporte para macOS, iOS y tvOS sin costes integrándose con la API Metal de Apple

 

Reducido uso de la CPU

Utiliza el sistema de procesamiento por lotes para reducir el impacto en el procesador. Incluye otras optimizaciones de bajo nivel para esto mismo. Se consigue menor uso del procesador, dejando más espacio de este para realizar otras tareas. Sobre todo, es interesante para dispositivos moviles con potencia más limitada.

comunicación vulkan cpu gpu

 

Amigable con subprocesos múltiples

DirectX 11 tenía el problema de estar optimizado para solo utilizar un núcleo del procesador. Una actualización posterior agrego la capacidad de utilizar varios núcleos, pero no funcionaba muy bien, no hacía buen escalado. Vulkan desde el principio aposto por multinúcleo de manera clara con una arquitectura de subprocesos modernizada.

 

Shaders precompilados

Integra un sistema de shaders ya traducido a un formato binario intermedio denominado SPIR-V (representación intermedia portátil estándar). Este es un sistema análogo al formato binario HLSL de DirectX.

Realizar una precompilación permite mejorar la velocidad de inicialización de la aplicación y permite utilizar una mayor variedad de shaders por escena. Vulkan solo necesita realizar una optimización especifica de la GPU y genera código. Permite un mantenimiento de controlador más sencillo y paquetes de controladores potencialmente más pequeños.

 

Otros

Hay otros aspectos interesantes en esta API:

  • Gestión unificada de núcleos y shaders gráficos, eliminando la necesidad de una API independiente junto a la API de gráficos
  • Ray Tracing mediante conjunto de extensiones con varios proveedores análogas a OptiX y DirectX Ray Tracing
 

Soporte por los principales fabricantes

Vamos a dar un pequeño vistazo a como dan soporte los mayores fabricantes de hardware, tarjetas gráficas y procesadores a Vulkan.

 

Intel

Desde marzo de 2023, la compañía ofrece soporte por drivers a Vulkan de manera separada para Windows y Linux.

Los procesadores Intel Skylake mediante Ice Lake admiten hasta la API Vulkan 1.3 con soporte limitado después de julio de 2022. Estos procesadores se han descatalogado y solo se realizan correcciones de errores. Los Iris Lake y posteriores tienen compatibilidad completa a partir de marzo de 2023.

Para Linux, a partir de marzo de 2023, se da soporte incompleto para Haswell sin compatibilidad para Vulkan 1.0. Haswell, Ivy Bridge y Broadwell dan soporte heredado en el driver Mesa HASVK. Para Skylake y procesadores posteriores tienen soporte mediante controlador Mesa ANV.

 

AMD

Quién más da soporte, ya que ha regalado su API Mantle para el desarrollo de Vulkan. Son grandes defensores de esta nueva API de tipo open source y sus controladores Windows periódicamente agregan soporte a las últimas caracteristicas de Vulkan.

La compañía ofrece un controlador de código abierto para Linux denominado AMDVLK. También ofrece el controlador AMDGPU-PRO pensado para tarjetas gráficas profesionales, no para modelos gaming.

Valve, Red Hat, Google y otras compañías tienen el controlador Mesa RADV que está disponible desde marzo de 2023 y es compatible con tarjetas gráficas GCN y RDNA de AMD.

 

NVIDIA

Ofrece soporte en sus controladores para Windows y Linux para todas las versiones de Vulkan. Aunque, el rendimiento de los juegos basados en Vulkan ofrecen peor rendimiento que en componentes de AMD.

Desde marzo de 2023 existe el controlador experimental para Linux, incompleto y de código abierto Mesa NVK.

soporte vulkan

 

Android y smartphone

El sistema operativo Android 9 Pie agrega soporte opcional para Vulkan 1.1 y Android 10 requiere que todos los dispositivos de 64 bits sean compatibles con dicha versión de la API.

Para Linux y algunos dispositivos Chrome OS hay un controlador Mesa de código abierto. Este ofrece soporte para las gráficas Arm Mali (Midgard y Bifrost), Qualcomm Adreno y Broadcom VideoCore VI.

 

Apple

Ningún dispositivo de Apple lanzado a partir de junio de 2022 agrega soporte para la API Vulkan. Solamente se da soporte mediante la librería de código abierto MoltenVK. Combina esta API con Metal para dar a los dispositivos iOS y macOS, pero con limitaciones.

 

Conclusión

Vulkan es una API muy polivalente, lo cual despierta el interés de muchos desarrolladores de videojuegos. Tiene algunas caracteristicas mejores que DirectX, sobre todo, en gestión del procesador. Pero, DirectX es propiedad de Microsoft y cuenta con el apoyo de Intel y NVIDIA.

Desgraciadamente, el mayor apoyo para Khronos Group es por parte de AMD. Google y Red Hat son otras dos grandes empresas que dan soporte a esta importante API. Solamente Apple es la única empresa grandes que no da soporte y «bloquea» su uso.

¡Sé el primero en comentar!