Vulkan (API)

Spécification et API 3D développée par Khronos Group et succédant à OpenGL et OpenGL ES
Vulkan
Description de l'image Vulkan logo.svg.
Description de l'image Vulkaninfo with vkcube screenshot.png.
Informations
Développé parKhronos GroupVoir et modifier les données sur Wikidata
Première version
Dernière version 1.3.283 ()[1]Voir et modifier les données sur Wikidata
Dépôtgithub.com/KhronosGroup/Vulkan-HeadersVoir et modifier les données sur Wikidata
Écrit en C++ et CVoir et modifier les données sur Wikidata
Système d'exploitationMicrosoft Windows, Linux, Android, iOS et macOSVoir et modifier les données sur Wikidata
EnvironnementMultiplateformeVoir et modifier les données sur Wikidata
Type Interface de programmationVoir et modifier les données sur Wikidata
LicenceLicence Apache version 2.0 et licence ApacheVoir et modifier les données sur Wikidata
Site webwww.vulkan.orgVoir et modifier les données sur Wikidata

Chronologie des versions

Vulkan d'abord annoncé sous l'appellation OpenGL Next est une spécification proposée par le consortium Khronos Group pour la programmation graphique. Elle est mise en œuvre par plusieurs constructeurs de cartes graphiques sous forme d'une interface de programmation portant le même nom et a pour but de remplacer à terme OpenGL et ses dérivés en exploitant plus efficacement les architectures informatiques modernes[2]. 25 ans après la création d'OpenGL, elle vise à unifier les versions mobile (OpenGL ES) et bureau (OpenGL), fonctionne nativement sur Microsoft Windows, GNU/Linux et Android, ainsi que sous MacOS et iOS via la portability initiative (l'API MoltenVK)[3] en se basant sur Metal[réf. souhaitée]. Une première version est sortie en , supportée entre autres par AMD et Nvidia[4], et est compatible avec tout système supportant OpenGL ES 3.1[5].

Historique

Vulkan se fonde sur le travail effectué par AMD sur l'API Mantle (en), et auparavant, au sein de Mesa 3D, par Gallium3D (réduction de la couche du pilote graphique et relation plus directe au GPU et à sa mémoire). En particulier son module LLVMpipe qui permet la précompilation dans un langage intermédiaire et une meilleure utilisation des architectures de microprocesseurs multi-cœurs[6] des architectures modernes pour le rendu 3D.

Les développeurs du pilote libre Vulkan, pour processeurs graphiques Intel, décrivent Vulkan comme un « Gallium3D 2.0 ». Le langage SPIR utilisant à l'origine LLVM[7], SPIR-V qui en est une version modifiée permettra une implémentation de LLVM pour son interprétation[8].

Avancées majeures

Parmi les avantages[2] :

  • Meilleure gestion du multiprocesseur, les différents processeurs pouvant envoyer en parallèle des commandes à exécuter ;
  • Un pilote simplifié, en donnant au CPU davantage d'accès aux commandes du GPU et à la gestion de sa mémoire ;
  • Une meilleure adaptation aux plates-formes mobiles avec notamment la gestion du cas d'une mémoire unifiée et du rendu où chaque thread est dédié à un des rectangles formant l'affichage (dallage).
  • Le langage SPIR-V qui permettra de simplifier le travail des pilotes dans l'interprétation des shaders.
  • La simplification des pilotes et le langage unifié devraient permettre de réduire, pour les développeurs d'application, les difficultés de portabilité du matériel d'un constructeur à un autre
  • Calculs non graphiques[9] sur le GPU, comme OpenCL, à qui il succède[Information douteuse].

Microsoft a de son côté sorti DirectX 12, la dernière génération de son API Graphique, et Apple a sorti son API Metal[réf. souhaitée]. Tous deux ont pour projet d'utiliser les mêmes accès bas niveau au matériel et la portabilité mobile que Mantle ou Vulkan, mais ont l'inconvénient de ne pas être multiplateformes.

Étant donné l'ouverture de l'API, la portabilité et les gains de performances, différents éditeurs de jeux ont déjà annoncé le support de celle-ci par leur moteur, avant même les spécifications définitives, comme le moteur Source 2 de Valve[10],[11]

La bibliothèque libre GLOVE convertit les appels OpenGL ES, glsl et EGL en appels Vulkan[12].

Les pilotes libres d'accélération 3D matérielle Mesa 3D pour GNU/Linux comportent trois pilotes permettant de convertir différentes API 3D vers Vulkan, et de bénéficier ainsi de ses performances et plus faible consommation énergétique avec des applications qui sont conçues pour :

  • D9VK (obsolète car dorénavant inclus dans DXVK), convertit les appels Direct3D versions 9 vers des appels Vulkan ;
  • DXVK, convertit les appels Direct3D versions 9, 10 et 11 vers des appels Vulkan[13] ;
  • VKD3D, convertit les appels Direct3D versions 12 vers des appels Vulkan[14] ;
  • Zink, convertit les appels OpenGL et OpenGL ES en appel Vulkan, il est intégré à partir du , la bibliothèque, via le sous-système Gallium de Mesa[15], il est placé entre la couche OpengGL state tracker de Gallium et les pilotes Vulkan[12], entre la couche du state tracker OpenGL et le pilote Vulkan[12].

Participants

Les principales sociétés participant à la norme[5] sont : AMD, Apple, ARM, Blizzard, Broadwell, Codeplay (en), Continental, Electronic Arts, Epic Games, Imagination Technologies, Intel, Lucasfilm, Mediatek, Oculus VR, Oxide, Pixar, Samsung, Sony, TransGaming (en), Unity, Godot Engine, Valve, Vivante, Qt[16].

Support

Historique

  • En AMD, Intel et Nvidia proposent une version beta de leurs pilotes supportant Vulkan[17],[18].
  • Le , The Talos Principle de Croteam devient le 1er jeu vidéo supportant partiellement Vulkan.
  • Le , une mise à jour de la version stable des pilotes Windows et Linux par Nvidia permet l'utilisation de Vulkan[19].
  • En , la préversion d'Android Nougat pour développeurs prévoit l'utilisation des API 3D Vulkan[20],[21].
  • La future console de jeux Switch de Nintendo est certifiée Vulkan le [22]
  • Lors de la conférence SDC 2016, en , la société Samsung annonce que son prochain modèle de smartphone utilisera Vulkan, et annonce des gains en durée de vie de la batterie[23].
  • Fin , Unity annonce que les jeux Android basés sur son moteur disposent en beta de Vulkan, ce qui permet des performances améliorées d'environ 35%, et une consommation énergétique moindre[24].
  • En , un premier moteur de jeu vidéo libre se basant sur Vulkan, Intrinsic, est publié sur GitHub[25].
  • En , Intel annonce que la partie graphique de ses processeurs supportera Vulkan[26].
  • En , Valve, LunarG et The Brenwill Workshop annoncent que le jeu vedette de Valve, Dota 2, est porté via MoltenVK (implémentation de Metal en Vulkan) sur MacOS avec un gain de performances de 50% par rapport à la version OpenGL [3].
  • En , les développeurs du moteur de jeu libre Godot, annoncent qu'ils vont s'orienter vers Vulkan et Open GL ES 2.0, plutôt qu'OpenGL ES 3.0[27]. Il devrait être prêt pour Godot 4.0[28], qui devrait sortir en 2022.
  • En , les développeurs du moteur 3D libre OGRE, annoncent qu'ils sont en train de porter le moteur sur Vulkan[29].

Compatibilité matérielle

SociétéMatérielSupport de Vulkan 1.0
MicroarchitectureDisponible depuisGPUs (Die)Carte graphique/SoCLinuxMicrosoft Windows (Windows 7 et supérieur)Android Nougat et supérieur[30]
AMD
RDNA 3rd11/2022Navi 31,32,33

Phoenix

Radeon RX 7000 Séries
RDNA 2nd10/2020Navi 21,22,23,24

Rembrandt, Raphael, Dragon Range

Radeon RX 6000 Séries
RDNA 1st07/2019Navi 10,12,14Radeon RX 5000 Séries
GCN 5th08/2017Vega 10,12

Vega 20

Raven Ridge, Picasso, Renoir, Cezanne

Radeon Rx Vega series

Radeon VII

AMDGPU PRO (Ubuntu & RHEL)[31],[32]
Mesa/RADV[33]
Radeon Software[34]NC
GCN 4th06/2016Polaris 10,11,12 Polaris 20,21,22

Polaris 30

Radeon Rx 400 Series

Radeon Rx 500 Séries

GCN 3rd08/2014Tonga, Fiji, Carrizo, Bristol RidgeRadeon R9 Fury Series

Radeon R9 380 SeriesRadeon R9 285

GCN 2nd03/2013Bonaire, Hawaii, Kaveri, Kabini, Temash, Mullins, Beema, Carrizo-LRadeon HD 7790, R9 390 Séries, R7 360, R9 290 Séries, R7 260 SériesPlayStation 4, Xbox OneEn cours d'implémentation
GCN 1st02/2012Oland, Cape Verde, Pitcairn, Tahiti, HainanRadeon HD 77..–7900 Series , R9 280 , 270 Séries, R7 250 Séries, R9/R7 370 Séries
TeraScale 312/2010Aruba (Trinity/Richland), CaymanRadeon HD 6900 Seriesnon supporté
TeraScale 209/2009Cedar, Cypress, Juniper, Redwood, Palm, Sumo, Barts, Turks, Caicos, LlanoRadeon HD 5000 Series

Radeon HD 6000 Séries

TeraScale 105/2007R600, RV630, RV610, RV790, RV770, …Radeon HD 2000 Series, HD 3000, HD 4000
NvidiaAda Lovelace09/2022AD102, AD103, AD104, AD106, AD107GeForce RTX 40
Ampere09/2020GA100, GA102, GA103, GA104, GA106, GA107GeForce RTX 30
Turing09/2018TU102, TU104, TU106, TU116, TU117GeForce RTX 20
GeForce 16
Volta06/2017GV100, GV10BTITAN V
Pascal05/2016GP100, GP104, GP106, GP107, GP108, GP10BGeForce 10 series, Tegra X2Nvidia GeForce driver[35],[36]Nvidia GeForce driver[36]Oui
Maxwell 209/2014GM200, GM204, GM206, GM20BGeForce 900 series, Tegra X1
Maxwell 102/2014GM107, GM108GeForce GTX 750 Ti, GTX 750, GTX 860M
Kepler03/2012GK110, GK104, GK106, GK107, GK208GeForce 600 series, GeForce 700 series, Tegra K1
Fermi03/2010GF100, GF104, GF106, GF108, GF110, GF114, GF116, GF117, GF119GeForce 400 series, GeForce 500 seriesnon supporté
Tesla 2.006/2008GT200, GT215, GT216, GT218,GeForce 200 series, GeForce 300 series
Tesla 1.011/2006G80, G84, G86, G92, G94, G96, G98GeForce 8 series, GeForce 9 series, GeForce 100 series
Intel GPUXe "Alchemist"06/2022ACM-G10, ACM-G11, ACM-G12, Meteor LakeARC A Séries
Xe-LP10/2020DG1

Rocket Lake, Alder Lake, Raptor Lake

Xe DG1

Iris Xe

Intel CPUMeteor LakeCore "Ultra" 100 Séries
Raptor Lake09/2022Core i3-/i5-/i7-13000

Core i3-/i5-/i7-14000

Alder Lake11/2021Core i3-/i5-/i7-12000
Rocket Lake03/2021Core i5-/i7-11000
Comet Lake04/2020Core i3-/i5-/i7-10000
Coffee Lake10/2017Core i3-/i5-/i7-8000

Core i3-/i5-/i7-9000

Mesa[37],[38]Intel graphics[39]NC
Kaby Lake01/2017Core i3-/i5-/i7-7000
Skylake08/2015Core i3-/i5-/i7-6000, Pentium G4..., Celeron G39..Prévu
Broadwell09/2014Core M-5Y.., Core i3-/i5-/i7-5000non supporté
Haswell09/2012Core i3-/i5-/i7-4000, Pentium G3..., Celeron G18..
Ivy Bridge04/2012Core i3-/i5-/i7-3000, Pentium G2..., Celeron G16..
Sandy Bridge01/2011Core i3-/i5-/i7-2000, Pentium G..., Celeron G...non supporté
Westmere02/2012Core i3-/i5-/i7-..., Pentium G69.., Celeron G1101
Imagination TechnologiesPowerVR Series 8XE02/2016GE8200, GE8300PowerVR Graphics SDK v4.1[40]
PowerVR Series 7XT11/2014GT7200, GT7400, GT7600, GT7800, GT7900Apple A9, Helio X30 (MT679?)
PowerVR Series 7XE11/2014GE7400, GE7800
PowerVR Series 6XT01/2014GX6240, GX6250, GX6450, GX6650Apple A8, A8X, MediaTek MT8173, MT8176,
PowerVR Series 6XE01/2014G6050, G6060, G6100 (XE), G6110RK3368
PowerVR Series 6 (Rogue)01/2012G6100, G6200, G6230, G6400, G6430, G6630MediaTek MT6595M, MT6595T, MT6595M, MT6795, MT8135, Helio X10 (MT6795), LG H13, Apple A7, Atom Z3460, Z3480, Z3530, Z3560, Z3570, Z3580
PowerVR Series 5XT01/2012SGX543, SGX544, SGX554Apple S1, A5, A5X, A6, A6X, NovaThor L8540, L8580, L9540, TI OMAP 4470, 5430, 5432, MediaTek MT5327, MT6589M, MT6589T, MT6589, MT8117, MT8121, MT8125, MT8389, Atom Z2460, Z2520, Z2560, Z2580, Z2760, Exynos 5410non supporté
Qualcomm
Adreno 600 seriesAdreno 640Snapdragon 8551.1[41]
Adreno 500 seriesAdreno 510, Adreno 530, Adreno 540Snapdragon 430, 625, 650, 652, 820, 821, 835, 8451.0[42]
Adreno 400 seriesSnapdragon 415, 615, 616, 617, 805, 808, 810
Adreno 300 seriesSnapdragon 200, 208, 210, 212, 400, 410, 412, 600, 800, 801non supporté
ARM
Bifrost[43]06/2016Mali-G71, Mali-G51Kirin 9601.0[44]
Midgard 4thQ4 2015Mali-T860, Mali-T830, Mali-T880Exynos 8890, Exynos 7870, Kirin 950, 955, MediaTek MT6738, MT6750, Helio X20 (MT6797), X25 (MT6797T), P10 (MT6755), P20 (MT6757)
Midgard 3rd10/2013Mali-T760, …Exynos 7420, Exynos 5433, MT6752, MT6732, RK3288
Midgard 2nd08/2012Mali-T600 series, T720Exynos 5250, 5260, 5410, 5420, 5422, 5430, 5800, 7580, Mediatek MT6735, MT6753, Kirin 920, 925, 930, 935non supporté

Jeux compatibles

Moteurs de jeux compatibles

  • Amazon Lumberyard[45]
  • Source 2 – En , Valve annonce que Source 2, successeur du moteur originel Source, supportera Vulkan[46],[47].
  • Serious Engine 4 – En , Croteam annonce le support de Vulkan dans leur moteur[48].
  • Unreal Engine 4 – En , Epic Games annonce le support de Vulkan lors d'un événement organisé par Samsung[49],[50].
  • id Tech 6 – En , id Software annonce le support de Vulkan pour la version 6 de leur moteur[51].
  • id Tech 7
  • CryEngineCrytek a annoncé vouloir inclure le support de Vulkan pour son CryEngine[52].
  • Unity – Support Vulkan à partir de la version 5.6[53] pour Android, Linux et Windows. Le support dans l'éditeur est disponible à partir de la version 2018.2[54].
  • Xenko – Le support a été rajouté en [55].
  • Intrinsic – Un moteur de jeu libre publié sur GitHub[56].
  • Torque 3D MIT - En , la communauté de développeurs annonce penser au support de Vulkan[57].
  • Armory Engine - Moteur de jeu libre intégré dans Blender 3D.
  • Godot Game Engine 4.0 (beta)-moteur de jeu libre.

Annexes

Notes et références

Bibliographie

  • Ryan Smith, « Next Generation OpenGL Becomes Vulkan: Additional Details Released », AnandTech,‎ (lire en ligne)

Lien externe

🔥 Top keywords: