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.
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.
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.
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.
Vulkan vs DirectX, ¿cuál es mejor?
Actualmente al igual que con muchas otras cosas, hay gente que se pregunta cual de las dos API más utilizadas actualmente es mejor, ya que al final hay juegos que te permiten activar ambas, como puede ser el caso de Red Dead Redemption 2. En general puede ser que nos queramos decantar por una o por otra dependiendo de nuestra experiencia con ellas, pero por lo general Vulkan resulta mejor por algunas razones de vital importancia en la industria de los videojuegos, como el hecho de que se trata de una aplicación de código abierto como bien hemos indicado.
Esto puede parecer que no es la gran cosa, pero para los desarrolladores es algo que les permite implementarla de una forma más sencilla, ya que al final se trata de una API extremadamente polivalente, algo que como tal, DirectX no puede ofrecer. Por otra parte, Vulkan ofrece una serie de características que son mejores que la API desarrollada por Microsoft, sobre todo si nos centramos en cómo cada una de ellas realiza la gestión del procesador, siendo la de la API de código abierto más eficiente que la que podemos encontrar por parte de DirectX.
Pero el mayor problema y diferencia que vamos a encontrar actualmente entre estas dos API esta bastante claro, y es el hecho de que la desarrolladora de Vulkan no es capaz de acercarse a los números que es capaz de manejar Microsoft. Esto se traduce directamente en el apoyo que proporcionan algunas de las empresas más grandes del sector, ya que mientras que a la API de Khronos Group la apoyan grandes compañías como AMD, Google y Red Hat, no pueden competir directamente con los apoyos de DirectX, que además de tener a Microsoft detrás también cuentan con la ayuda tanto de NVIDIA como de Intel.
Por otra parte, existe un gran problema para Vulkan, y es el hecho de que una de las compañías más grandes en términos de sistemas informáticos directamente ni se molesta en darle soporte, bloqueando de forma «indirecta» el uso de esta en sus ordenadores. En este caso hablamos de Apple, que siendo junto con todas las mencionadas anteriormente una de las grandes compañías que controlan el sector de la tecnología, no tienen ningún tipo de soporte para la API de Vulkan