Article de reference

Volcan

Vulkan est une API multiplateforme de bas niveau et à faible surcharge , ainsi qu'un standard ouvert pour les graphiques et le calcul 3D . Son objectif était de remédier aux lac...

Vulkan est une API multiplateforme de bas niveau et à faible surcharge , ainsi qu'un standard ouvert pour les graphiques et le calcul 3D . Son objectif était de remédier aux lacunes d' OpenGL et de permettre aux développeurs de mieux contrôler le GPU . Il est conçu pour prendre en charge une grande variété de GPU, de CPU et de systèmes d'exploitation, et il est également conçu pour fonctionner avec les CPU multicœurs modernes .

Aperçu

Vulkan cible les applications graphiques 3D en temps réel à hautes performances, telles que les jeux vidéo et les médias interactifs , ainsi que le calcul hautement parallélisé . Vulkan est destiné à offrir des performances supérieures et une utilisation plus efficace du processeur et du processeur graphique par rapport aux anciennes API OpenGL et Direct3D 11. Pour ce faire, il fournit une API de niveau considérablement inférieur pour l'application par rapport aux anciennes API, qui ressemble davantage au fonctionnement des GPU modernes.

Vulkan est comparable à l'API Metal d'Apple et à Direct3D 12 de Microsoft . En plus de sa faible utilisation du processeur, Vulkan est conçu pour permettre aux développeurs de mieux répartir le travail entre plusieurs cœurs de processeur .

Vulkan a été annoncé pour la première fois par le groupe à but non lucratif Khronos Group lors de la GDC 2015. L'API Vulkan était initialement appelée « initiative OpenGL de nouvelle génération » ou « OpenGL next » par Khronos, mais l'utilisation de ces noms a été interrompue lorsque « Vulkan » a été annoncé.

Vulkan est dérivé et construit sur des composants de l'API Mantle d' AMD , qui a été donnée par AMD à Khronos dans le but de donner à Khronos une base sur laquelle commencer à développer une API de bas niveau qu'ils pourraient standardiser dans l'ensemble de l'industrie.

Caractéristiques

OpenGL et Vulkan sont tous deux des API de rendu. Dans les deux cas, le GPU exécute les shaders , tandis que le CPU exécute tout le reste.

Vulkan est destiné à fournir une variété d'avantages par rapport aux autres API ainsi qu'à son prédécesseur, OpenGL . Vulkan offre une charge de travail plus faible, un contrôle plus direct sur le GPU et une utilisation plus faible du processeur. Le concept global et l'ensemble des fonctionnalités de Vulkan sont similaires aux concepts observés dans Mantle et adoptés plus tard par Microsoft avec Direct3D 12 et Apple avec Metal .

Les avantages attendus de Vulkan par rapport aux API de la génération précédente sont les suivants :

Multiplateforme

Vulkan est disponible sur plusieurs systèmes d'exploitation et architectures modernes et fournit une API unique pour les périphériques graphiques de bureau et mobiles, alors qu'auparavant ceux-ci étaient respectivement répartis entre OpenGL et OpenGL ES . Comme OpenGL, et contrairement à Direct3D 12, l'API Vulkan n'est pas verrouillée sur un seul système d'exploitation ou facteur de forme d'appareil. Vulkan fonctionne nativement sur Android , Linux , BSD Unix , QNX , Haiku , Nintendo Switch , Raspberry Pi , Stadia , Fuchsia , Tizen et Windows 7 , 8 , 10 et 11. MoltenVK fournit un support tiers sous licence libre macOS , iOS et tvOS en s'appuyant sur l'API Metal d'Apple.

Utilisation réduite du processeur

Vulkan réduit la charge sur les processeurs grâce à l'utilisation du traitement par lots et d'autres optimisations de bas niveau, réduisant ainsi les charges de travail du processeur et laissant le processeur libre d'effectuer plus de calculs ou de rendus que ce qui serait autrement possible.

Conception conviviale pour le multithreading

Direct3D 11 et OpenGL 4 ont été initialement conçus pour être utilisés avec des processeurs monocœurs et n'ont reçu d'augmentation que pour être exécutés sur des processeurs multicœurs. Même lorsque les développeurs d'applications utilisent ces augmentations, ces API ne s'adaptent généralement pas bien aux processeurs multicœurs. Vulkan offre une évolutivité améliorée sur les processeurs multicœurs grâce à l'architecture de threading modernisée.

Shaders précompilés

OpenGL utilise le langage de haut niveau GLSL pour écrire les shaders , ce qui oblige chaque pilote OpenGL à implémenter son propre compilateur pour GLSL. Celui-ci s'exécute ensuite lors de l'exécution de l'application pour traduire les shaders du programme en code machine du GPU. En revanche, les pilotes Vulkan sont censés ingérer des shaders déjà traduits dans un format binaire intermédiaire appelé SPIR-V (Standard Portable Intermediate Representation), analogue au format binaire dans lequel les shaders HLSL sont compilés dans Direct3D . En permettant la précompilation des shaders, la vitesse d'initialisation de l'application est améliorée et une plus grande variété de shaders peut être utilisée par scène. Un pilote Vulkan n'a besoin que d'effectuer une optimisation et une génération de code spécifiques au GPU, ce qui facilite la maintenance des pilotes et des packages de pilotes potentiellement plus petits. Les développeurs d'applications peuvent désormais également plus facilement obscurcir le code de shader propriétaire, car les shaders ne sont pas stockés directement sous forme de code source. Cependant, des outils sont fournis qui peuvent décompiler SPIR-V en code de haut niveau lisible par l'homme.

Autres

OpenGL contre Vulkan

En 2016, NVIDIA a déclaré que « OpenGL reste une excellente option pour de nombreux cas d'utilisation, car il présente une complexité et une charge de maintenance bien inférieures à celles de Vulkan, tout en offrant dans de nombreux cas d'excellentes performances globales. »

AMD déclare que « Vulkan prend en charge le contrôle de proximité, ce qui permet des performances plus rapides et une meilleure qualité d'image sur Windows 7, Windows 8.1, Windows 10 et Linux. Aucune autre API graphique n'offre la même combinaison puissante de compatibilité avec les systèmes d'exploitation, de fonctionnalités de rendu et d'efficacité matérielle. »

Versions

Vulkan 1.0

Vulkan 1.0 est sorti en février 2016.

Vulkan 1.1

Lors du SIGGRAPH 2016, Khronos a annoncé que Vulkan bénéficierait d'un support pour les fonctionnalités multi-GPU automatiques, similaires à celles proposées par Direct3D 12. Le support multi-GPU inclus dans l'API supprime le besoin de SLI ou Crossfire qui nécessitent que les cartes graphiques soient du même modèle. L'API multi-GPU permet à l'API de répartir intelligemment la charge de travail entre deux ou plusieurs GPU complètement différents. Par exemple, les GPU intégrés inclus dans le CPU peuvent être utilisés en conjonction avec un GPU dédié haut de gamme pour une légère amélioration des performances.

Le 7 mars 2018, Vulkan 1.1 a été publié par le groupe Khronos. Cette première mise à jour majeure de l'API a standardisé plusieurs extensions, telles que la multi-vue, les groupes de périphériques, le partage inter-processus et inter-API, les fonctionnalités de calcul avancées, la prise en charge HLSL et la prise en charge YCbCr . Dans le même temps, elle a également apporté une meilleure compatibilité avec DirectX 12, la prise en charge explicite de plusieurs GPU, la prise en charge du lancer de rayons , et a jeté les bases de la prochaine génération de GPU. Parallèlement à Vulkan 1.1, SPIR-V a été mis à jour vers la version 1.3.

Vulkan 1.2

Le 15 janvier 2020, Vulkan 1.2 a été publié par le groupe Khronos. Cette deuxième mise à jour majeure de l'API intègre 23 extensions Vulkan éprouvées supplémentaires couramment utilisées dans la norme Vulkan de base. Certaines des fonctionnalités les plus importantes sont « des sémaphores de chronologie pour une synchronisation facilement gérée », « un modèle de mémoire formel pour définir précisément la sémantique de la synchronisation et des opérations de mémoire dans différents threads » et « l'indexation des descripteurs pour permettre la réutilisation des dispositions des descripteurs par plusieurs shaders ». Les fonctionnalités supplémentaires de Vulkan 1.2 améliorent sa flexibilité lorsqu'il s'agit d'implémenter d'autres API graphiques sur Vulkan, notamment « la disposition standard de tampon uniforme », « la disposition de blocs scalaires » et « l'utilisation de pochoirs séparés ».

Vulkan 1.3

Le 25 janvier 2022, Vulkan 1.3 a été publié par le groupe Khronos. Cette troisième mise à jour majeure de l'API intègre 23 extensions Vulkan éprouvées supplémentaires couramment utilisées dans la norme Vulkan de base. Vulkan 1.3 se concentre sur la réduction de la fragmentation en rendant les nouvelles fonctionnalités non facultatives pour qu'un appareil soit considéré comme compatible Vulkan 1.3. Les nouvelles fonctionnalités de Vulkan 1.3 incluent le rendu dynamique, l'état dynamique supplémentaire, l'API de synchronisation améliorée et les profils d'appareils.

Vulkan 1.4

Le 3 décembre 2024, Vulkan 1.4 a été publié par le groupe Khronos.

Fonctionnalités prévues

Lors de la sortie d'OpenCL 2.2, le groupe Khronos a annoncé qu'OpenCL convergerait, dans la mesure du possible, avec Vulkan pour permettre une flexibilité de déploiement de logiciels OpenCL sur les deux API. Cela a maintenant été démontré par Premiere Rush d' Adobe en utilisant le compilateur open source clspv pour compiler des quantités importantes de code de noyau OpenCL C à exécuter sur un runtime Vulkan pour un déploiement sur Android.

Histoire

Le groupe Khronos a lancé un projet visant à créer une API graphique de nouvelle génération en juillet 2014 lors d'une réunion de lancement chez Valve . Lors du SIGGRAPH 2014, le projet a été annoncé publiquement avec un appel à participants.

Selon l'Office américain des brevets et des marques, la marque Vulkan a été déposée le 19 février 2015.

Vulkan a été officiellement nommé et annoncé lors de la Game Developers Conference 2015, bien que des spéculations et des rumeurs centrées sur une nouvelle API existaient auparavant et la désignaient sous le nom de « glNext ».

2015

Début 2015, LunarG (financé par Valve ) a développé et présenté un pilote Linux pour Intel qui a permis la compatibilité Vulkan sur les cartes graphiques intégrées de la série HD 4000, bien que les pilotes open source Mesa ne soient pas entièrement compatibles avec OpenGL 4.0 avant la fin de l'année. Il existe toujours la possibilité de prise en charge de Sandy Bridge, car il prend en charge le calcul via Direct3D11.

Le 10 août 2015, Google a annoncé que les futures versions d' Android prendraient en charge Vulkan. Android 7.x « Nougat » a lancé la prise en charge de Vulkan le 22 août 2016. Android 8.0 « Oreo » offre une prise en charge complète.

Le 18 décembre 2015, le groupe Khronos a annoncé que la version 1.0 de la spécification Vulkan était presque terminée et serait publiée lorsque les pilotes conformes seraient disponibles.

2016

La spécification complète de Vulkan et le SDK open source de Vulkan ont été publiés le 16 février 2016.

2018

Le 26 février 2018, Khronos Group a annoncé que l'API Vulkan était désormais disponible pour tous sur macOS et iOS via la bibliothèque MoltenVK , qui permet à Vulkan de fonctionner sur Metal . D'autres nouveaux développements ont été présentés au SIGGRAPH 2018. Auparavant, MoltenVK était une solution propriétaire et sous licence commerciale, mais Valve a conclu un accord avec le développeur Brenwill Workshop Ltd pour ouvrir MoltenVK sous la licence Apache 2.0 et, par conséquent, la bibliothèque est désormais disponible sur GitHub. Valve a également annoncé que Dota 2 peut, à partir du 26 février 2018, fonctionner sur macOS en utilisant l'API Vulkan, qui est basée sur MoltenVK.

2019

Le 25 février 2019, le groupe de travail Vulkan Safety Critical (SC) a été annoncé pour apporter l'accélération GPU Vulkan aux industries critiques pour la sécurité.

Le service de streaming de jeux en cloud Stadia de Google a utilisé Vulkan sur des serveurs basés sur Linux avec des GPU AMD .

2020

Le 15 janvier 2020, Vulkan 1.2 est sorti.

Parallèlement à la sortie de Vulkan 1.2, le groupe Khronos a publié un article de blog qui considérait que la prise en charge HLSL dans Vulkan avait atteint le statut « prêt pour la production », compte tenu des améliorations apportées au compilateur DXC de Microsoft et au compilateur glslang de Khronos, ainsi que des nouvelles fonctionnalités de Vulkan 1.2 qui améliorent la prise en charge HLSL.

Le 3 février 2020, la Fondation Raspberry Pi a annoncé qu'elle travaillait sur un pilote Vulkan open source pour son Raspberry Pi , un ordinateur monocarte populaire. Le 20 juin 2020, un ingénieur graphique a révélé qu'il en avait créé un après deux ans de travail capable d'exécuter VkQuake3 à plus de 100 FPS sur le petit ordinateur.

Le 17 mars 2020, Khronos Group a publié les extensions Ray Tracing , basées sur l'extension propriétaire de Nvidia , avec quelques extensions majeures et de nombreuses modifications mineures, qui à leur tour étaient basées sur l'API OptiX de Nvidia . Le 23 novembre 2020, ces extensions Ray Tracing ont été finalisées.

Le 24 novembre 2020, la Raspberry Pi Foundation a annoncé que son pilote pour le Raspberry Pi 4 est conforme à Vulkan 1.0.

2022

Le 25 janvier 2022, Vulkan 1.3 est sorti.

Le 1er mars 2022, Vulkan SC 1.0 a été publié, apportant des graphiques et des calculs Vulkan pour l'industrie critique pour la sécurité tout en étant basé sur la norme Vulkan 1.2.

Le 1er août 2022, la Raspberry Pi Foundation a annoncé que son pilote pour le Raspberry Pi 4 est conforme à Vulkan 1.2.

Le 1er septembre 2022, Mesh Shading pour Vulkan est sorti.

2024

Une nouvelle feuille de route Vulkan a été annoncée le 25 janvier 2024. Une nouvelle extension pour le décodage de la vidéo AV1 a été publiée le 1er février 2024.

Assistance auprès de plusieurs fournisseurs

Capture d'écran de vulkaninfo, montrant des informations sur les instances Vulkan prises en charge et vkcube, un programme pour tester l'implémentation de Vulkan sur un système

Les spécifications initiales indiquaient que les pilotes Vulkan pouvaient être implémentés sur tout matériel prenant en charge OpenGL ES 3.1 ou OpenGL 4.x et versions ultérieures. Étant donné que la prise en charge de Vulkan nécessite de nouveaux pilotes graphiques, cela n'implique pas nécessairement que chaque périphérique existant prenant en charge OpenGL ES 3.1 ou OpenGL 4.x disposera de pilotes Vulkan.

Intel

Depuis mars 2023, Intel a divisé la prise en charge des pilotes Vulkan sur Windows et sur Linux . Tous les pilotes sont développés par Intel.

Sous Windows, Skylake à Ice Lake prennent en charge jusqu'à Vulkan 1.3, avec un support limité après juillet 2022 car les futures mises à jour ne couvriront que les correctifs de sécurité. Iris Xe et les versions plus récentes sont entièrement prises en charge à partir de mars 2023.

Sous Linux, depuis mars 2023, le support Vulkan pour Haswell est incomplet car il n'est pas compatible avec Vulkan 1.0. Outre Haswell, Ivy Bridge et Broadwell sont également pris en charge par un pilote Vulkan hérité dans Mesa appelé HASVK. Skylake et les versions plus récentes sont prises en charge par un pilote dans Mesa appelé ANV.

DMLA

Sous Windows, Vulkan 1.2 est pris en charge de GCN 1.0 à GCN 3.0, sans autre mise à jour prévue après juin 2021. GCN 4.0 et les versions plus récentes prennent en charge Vulkan 1.3.

Sous Linux, il existe différents pilotes Vulkan avec une prise en charge matérielle variable et qui se chevauche. Il existe le pilote Vulkan open source appelé AMDVLK, développé par AMD, qui reflète la prise en charge de Windows. Il existe également le pilote propriétaire appelé AMDGPU-PRO dont l'utilisation n'est pas recommandée pour la plupart des utilisateurs en mars 2023.

Il existe également le pilote recommandé appelé RADV dans Mesa développé par Valve, Red Hat, Google et d'autres. Ce pilote prend en charge toutes les cartes GCN et RDNA depuis mars 2023. La prise en charge de ce pilote RADV pour GCN 1.0 à GCN 2.0 nécessite que sa prise en charge expérimentale dans le module du noyau amdgpu soit activée.

NVIDIA

Sous Windows et Linux, il existe le pilote Vulkan développé par NVIDIA qui prend en charge Vulkan 1.2 sur les cartes Kepler sans autre mise à jour prévue après septembre 2021. Maxwell et les versions plus récentes prennent en charge Vulkan 1.3.

NVK, un pilote Vulkan expérimental et open source pour Linux basé sur nouveau , a été annoncé en octobre 2022. Il a été fusionné avec Mesa principal en août 2023. Le pilote prend actuellement en charge Vulkan 1.3

GPU Android et mobiles

La plupart des appareils Android modernes prennent en charge Vulkan. Android 7.0 Nougat inclut la prise en charge facultative de Vulkan 1.0, Android 9.0 Pie inclut la prise en charge facultative de Vulkan 1.1, et Android 10 s'attend (mais n'exige pas) que tous les appareils 64 bits non à faible mémoire prennent en charge Vulkan 1.1. Android 13 s'attend dans les mêmes conditions à la prise en charge de Vulkan 1.3. Sur Linux et certains appareils ChromeOS , le pilote open source Mesa prend en charge le matériel Arm Mali (Midgard et Bifrost), Qualcomm Adreno et Broadcom VideoCore VI .

Pomme

Depuis juin 2022, les appareils Apple ne fournissent pas de support natif pour l'API Vulkan. La prise en charge de Vulkan est disponible via la bibliothèque open source MoltenVK , qui fournit une implémentation Vulkan en plus de l' API graphique Metal fournie sur les appareils iOS et macOS, bien qu'elle présente certaines limitations concernant certaines fonctionnalités API avancées.

En juin 2022, la version 1.3.217 de Vulkan a ajouté la prise en charge des objets Metal, facilitant l'importation et l'exportation entre les deux API. En décembre 2022, la version 1.3.236 de Vulkan a ajouté de petits correctifs pour l'interaction avec Apple Metal.

Huawei et la Fondation OpenAtom

Depuis août 2023, Huawei fournit des supports pour Vulkan NAPI natif avec le shader SPIR-V standard de l'industrie depuis HarmonyOS 4.0 API 10 et étendu au système HarmonyOS NEXT . Il a été adopté comme extension du projet open source du consortium d'OpenAtom , OpenHarmony avec une pile graphique plus récente pour le système, le moteur logiciel 3D ArkGraphics qui a récemment été open source depuis mai 2024 sur OpenHarmony 5.0 beta 1 qui était auparavant exclusif au kit de développement propriétaire HarmonyOS NEXT, sur des fonctionnalités de pipelines graphiques personnalisées.

Rétrocompatibilité

Vulkan n'est pas rétrocompatible avec OpenGL , bien qu'il existe certains projets qui implémentent OpenGL sur Vulkan, comme ANGLE de Google et Zink de Mesa .

Vulkan n'est pas non plus compatible avec d'autres API graphiques telles que Direct3D , Metal et Mantle , mais des implémentations de ces API existent au-dessus de Vulkan :

  • Direct3D possède un certain nombre d'implémentations, à savoir DXVK pour Direct3D 8, 9, 10 et 11, et VKD3D-Proton pour la prise en charge de Direct3D 12. D'autres versions plus anciennes de Direct3D peuvent être activées avec d'autres logiciels associés tels que Wine .
  • Metal dispose d'une implémentation tierce en cours de développement nommée Indium, destinée à être utilisée avec la couche de compatibilité Darling .
  • Mantle dispose d'une implémentation tierce en cours de développement nommée GRVK, pour prendre en charge les anciens jeux Mantle.

Les API graphiques spécifiques à la plateforme implémentées sur Vulkan peuvent également fonctionner sur d'autres plateformes. Par exemple, DXVK fournit une bibliothèque partagée alternative destinée à être utilisée nativement sur Linux (sans la couche de compatibilité Wine ) pour faciliter le portage des jeux.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index