Aller au contenu
Vulkan, l'API graphique de Khronos : ce qu'elle change

Vulkan, l'API graphique de Khronos : ce qu'elle change

Par Camille V.

9 min de lecture
Lien copié dans le presse-papiers
Camille V.

Ouvrez les paramètres de rendu d'un moteur récent et il y a de bonnes chances qu'un backend Vulkan apparaisse dans la liste, entre DirectX et Metal, sans que personne ne prenne jamais le temps de dire ce qu'il fait vraiment. Je le croise depuis des années dans Blender et dans les notes de version des moteurs de jeu, et je m'aperçois que je n'avais jamais posé la définition noir sur blanc.

Vulkan est un standard graphique ouvert et multiplateforme, maintenu par le consortium Khronos, conçu pour qu'un même code cible plusieurs types d'appareils. La version actuelle de la spécification est la 1.4.360. Godot l'utilise par défaut depuis sa version 4.0, Unity et Unreal Engine le proposent aussi, et Apple y accède via une couche de compatibilité, MoltenVK, avec ses propres limites.

Un standard, pas un produit d'un seul éditeur#

C'est le premier point que je trouve mal expliqué ailleurs : Vulkan n'appartient à personne en particulier. Il est piloté par le Khronos Group, le même consortium industriel qui gère d'autres standards graphiques, et la page officielle du projet le présente comme « un standard industriel multiplateforme permettant aux développeurs de cibler un large éventail d'appareils avec la même API graphique ». Concrètement, cela veut dire que le code écrit pour Vulkan n'est pas verrouillé sur un système ou un fabricant : la même logique de rendu peut, en théorie, tourner sur Windows, Linux, Android et, via une couche dédiée, sur les plateformes Apple.

La spécification elle-même est un document vivant, publié et versionné par Khronos. Au moment où j'écris, la révision en vigueur est la 1.4.360, avec l'ensemble des extensions enregistrées. Ce n'est pas un détail cosmétique : une API qui documente publiquement chaque révision, chaque extension et chaque limite de conformité permet à un studio de savoir exactement sur quelle version il s'appuie, et depuis quand.

Ce que le multithreading change vraiment#

La promesse qu'on entend le plus souvent sur Vulkan, c'est qu'il « réduit la charge CPU ». Le problème, c'est que je n'ai trouvé aucune source primaire de Khronos qui donne un pourcentage global et généralisable. Les chiffres du type « 25 à 40 % de gain » circulent partout, mais aucun document officiel ne les porte : je ne les reprendrai pas ici, même avec des précautions.

Ce qui existe, en revanche, c'est une mesure précise et documentée par le Vulkan Documentation Project, l'échantillon officiel de Khronos sur l'enregistrement multithreadé des command buffers. Sur une scène à forte densité de draw calls (environ 1 800), diviser la charge d'enregistrement des commandes sur 8 buffers répartis sur 8 threads apporte un gain de performance de 15 %. C'est un cas mesuré, avec son protocole, pas une moyenne extrapolée à n'importe quel jeu. La nuance compte : sur une scène avec beaucoup moins de draw calls, ce gain n'a aucune raison d'être identique.

Cette capacité à répartir le travail de rendu sur plusieurs threads CPU est justement l'argument technique central de Vulkan face aux API plus anciennes, conçues à une époque où le rendu graphique reposait sur un seul thread principal. Vulkan expose le pilotage bas niveau du GPU de façon explicite, ce qui laisse au moteur (et pas au pilote graphique) la responsabilité de répartir ce travail.

Godot, Unity, Unreal : trois adoptions, trois niveaux de confiance#

Godot est le cas le mieux documenté du trio. Godot 4.0, sorti le 1er mars 2023, a introduit deux nouveaux backends Vulkan, Clustered et Mobile, tout en gardant un renderer de compatibilité OpenGL pour le matériel bas de gamme. Dans la documentation actuelle du moteur (version 4.7), le renderer Forward+ (par défaut sur desktop) et le renderer Mobile (par défaut sur mobile) s'appuient tous deux sur Vulkan, Direct3D 12 ou Metal comme pilote de rendu.

Unity va dans le même sens, mais avec moins de précision officielle : sa documentation confirme le support de Vulkan aux côtés de DirectX, Metal et OpenGL selon la plateforme cible, sans préciser sur laquelle il est activé par défaut. J'aurais aimé pouvoir vous dire depuis quelle version exacte, mais je n'ai trouvé aucune page officielle qui le confirme avec un numéro de version fiable : je préfère ne rien avancer plutôt que de recycler un chiffre qui traîne sur des forums.

Pour Unreal Engine, la prudence est encore plus de mise. Une synthèse assez répandue indique que Vulkan serait le choix par défaut sur Linux depuis la version 4.21, et sur Android quand le support Vulkan et OpenGL ES 3.2 sont tous deux activés (avec repli automatique vers OpenGL ES si le matériel ne suit pas). Mais je n'ai pas mis la main sur une page officielle Epic Games qui le confirme noir sur blanc, donc je le rends en confiance moyenne : c'est probable, pas établi.

Et sur Mac ? MoltenVK, avec ses limites#

Vulkan n'existe pas nativement sur les plateformes Apple. La passerelle s'appelle MoltenVK, un projet maintenu dans le dépôt officiel de Khronos, qui traduit les appels Vulkan vers Metal. Le support cible macOS, iOS, tvOS, visionOS, les simulateurs et Mac Catalyst, avec l'architecture Apple Silicon. C'est une bonne nouvelle pour la portabilité, avec un bémol assumé par le projet lui-même : MoltenVK n'est pas totalement conforme à la spécification Vulkan, une petite partie des fonctionnalités reste hors de portée sur cette couche de compatibilité.

Là où ça va : la Roadmap 2026#

Khronos ne laisse pas Vulkan sur ses acquis. Le blog officiel a présenté la Roadmap Vulkan 2026, portée par une nouvelle extension, VK_EXT_descriptor_heap, décrite comme une refonte complète du système de descripteurs actuel, avec un accès direct à la mémoire des descripteurs tout en préservant la compatibilité avec les anciens descriptor sets. Cette étape marque, selon Khronos, une hausse significative des fonctionnalités exigées des implémentations haut de gamme, au-delà de ce que demandait Vulkan 1.4.

Vulkan face au reste du paysage#

ÉlémentVulkanGodotUnityUnreal Engine
Gouvernance / éditeurKhronos Group (standard ouvert)Fondation GodotUnity TechnologiesEpic Games
Statut VulkanVersion 1.4.360 (spécification officielle)Backend par défaut depuis 4.0 (desktop et mobile)Supporté, défaut non précisé officiellementDéfaut Linux/Android selon des sources secondaires (confiance moyenne)
Plateformes citées par KhronosWindows 10, Nintendo Switch, macOS/iOS via MoltenVK, Linux, Android, HarmonyOS---

Réponse directe : Vulkan, en une phrase#

Vulkan est un standard graphique ouvert, maintenu par Khronos, qui donne aux moteurs un accès plus direct et plus explicite au GPU, notamment pour répartir le travail de rendu sur plusieurs threads CPU. Il est adopté par défaut dans Godot, disponible dans Unity et Unreal Engine, et accessible sur les plateformes Apple via MoltenVK, avec des limites de conformité documentées.

FAQ#

Vulkan, c'est quoi exactement ?#

Un standard graphique ouvert et multiplateforme maintenu par le Khronos Group. Il permet à un même code de cibler plusieurs types d'appareils avec la même API, plutôt que de dépendre d'un pilote propriétaire lié à un seul système ou fabricant.

Vulkan est-il plus rapide que les API plus anciennes ?#

Il n'existe pas de pourcentage global et sourcé qui réponde à cette question pour tous les cas. Le seul chiffre documenté par Khronos porte sur un cas précis : 15 % de gain en répartissant l'enregistrement des commandes sur 8 buffers et 8 threads, sur une scène à environ 1 800 draw calls.

Vulkan fonctionne-t-il sur Mac ?#

Oui, via MoltenVK, une couche de compatibilité hébergée dans le dépôt officiel de Khronos qui traduit les appels Vulkan vers Metal. Elle couvre macOS, iOS, tvOS, visionOS et Apple Silicon, mais le projet précise lui-même qu'elle n'est pas totalement conforme à la spécification Vulkan.

Quels moteurs de jeu utilisent Vulkan ?#

Godot l'utilise par défaut depuis sa version 4.0, sur desktop comme sur mobile. Unity le propose officiellement, sans préciser sur quelle plateforme il est activé par défaut. Unreal Engine le proposerait par défaut sur Linux et Android, une information relayée par plusieurs sources mais non confirmée sur une page officielle Epic Games.

Qu'est-ce que la Roadmap Vulkan 2026 change ?#

Elle introduit l'extension VK_EXT_descriptor_heap, une refonte du système de descripteurs qui donne un accès direct à la mémoire des descripteurs tout en gardant la compatibilité avec les anciens descriptor sets. C'est une exigence supplémentaire pour les implémentations haut de gamme, au-delà de Vulkan 1.4.

Vulkan va-t-il remplacer OpenGL ?#

Rien dans les sources officielles consultées ne permet d'affirmer un calendrier de remplacement. Ce qu'on observe, c'est une adoption croissante côté moteurs : Godot garde d'ailleurs volontairement un renderer de compatibilité OpenGL pour le matériel qui ne suit pas.

Ce que je retiens, en refermant ce dossier, c'est que Vulkan ressemble à un meuble à monter sans notice mais avec le contrôle total sur chaque vis : plus de travail pour le développeur, mais plus rien laissé au hasard côté GPU. La partie descripteurs de la Roadmap 2026 (VK_EXT_descriptor_heap) me demande encore une relecture avant de la resituer clairement dans un pipeline de production, alors si vous creusez ce sujet en parallèle, je suis preneuse de vos retours. En attendant, la prochaine fois que Vulkan apparaît dans un menu de paramètres, que ce soit dans Blender, dans Omniverse ou dans un moteur de jeu, vous saurez enfin ce que ce mot recouvre. Pour aller plus loin sur le choix d'un moteur, la rédaction a détaillé les différences entre Unity et Unreal Engine, et sur la partie rendu, mon collègue a creusé le ray tracing et le path tracing. Vulkan touche aussi au rendu final avec Nanite et Lumen, même si ces deux technologies restent indépendantes de l'API graphique choisie.

Sources#

Lien copié dans le presse-papiers

À lire aussi