Vulkan (API)

Développé par | Khronos Group |
---|---|
Première version | |
Dernière version | 1.1.127 ()[1] |
Écrit en | C |
Système d'exploitation | Linux, Android et Microsoft Windows |
Environnement | Multiplate-forme |
Langues | Anglais |
Type | Interface de programmation |
Licences | Licence Open Publication License (en) pour les spécifications[2], et propriétaire pour le logo et la marque. |
Site web | www.khronos.org/vulkan/ |
Vulkan d'abord annoncé sous l'appellation OpenGL Next est une interface de programmation graphique proposée par le consortium Khronos Group et qui a pour but de remplacer à terme OpenGL et ses dérivés en exploitant plus efficacement les architectures informatiques modernes[3]. 25 ans après la création d'OpenGL, il 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)[4] en se basant sur Metal [5]. Une première version est sortie en février 2016, supportée entre autres par AMD et Nvidia[6], et est compatible avec tout système supportant OpenGL ES 3.1[7].
HistoriqueModifier
Vulkan se base 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[8] 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[9], SPIR-V qui en est une version modifiée permettra une implémentation d'LLVM pour son interprétation[10].
Avancées majeuresModifier
Parmi les avantages[3] :
- 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ée à 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é devrait 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[11] 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 [5]. 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 multi-plateforme.
É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[12],[13]
La bibliothèque libre GLOVE, convertit les appels OpenGL ES, glsl et EGL en appels Vulkan[14],[15].
Les pilotes libres d'accélération 3D matérielle Mesa 3D pour GNU/Linux, comporte 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 ne sont conçu pour :
- D9VK, convertit les appels Direct3D versions 9 vers des appels Vulkan ;
- DXVK, convertit les appels Direct3D versions 10 et 11 vers des appels Vulkan[16] ;
- VKD3D, convertit les appels Direct3D versions 12 vers des appels Vulkan[17] ;
- Zink, convertit les appels OpenGL et OpenGL ES en appel Vulkan, il est intégré à partir du 28 octobre 2019, la bibliothèque, via le sous-système Gallium de Mesa[18], il est placé entre la couche OpengGL state tracker de Gallium et les pilotes Vulkan[14], entre la couche du state tracker OpenGL et le pilote Vulkan[15].
ParticipantsModifier
Les principales sociétés participant à la norme[7] 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, Valve, Vivante, Qt[19].
SupportModifier
HistoriqueModifier
- En février 2016 AMD, Intel et Nvidia proposent une version beta de leurs pilotes supportant Vulkan[20],[21].
- Le 17 février 2016, The Talos Principle de Croteam devient le 1er jeu vidéo supportant partiellement Vulkan.
- Le 9 avril 2016, une mise à jour de la version stable des pilotes Windows et Linux par Nvidia permet l'utilisation de Vulkan[22].
- En avril 2016, la préversion d'Android N pour développeurs prévoit l'utilisation des API 3D Vulkan[23],[24],[25].
- La future console de jeux Switch de Nintendo est certifiée Vulkan le 18 décembre 2016[26]
- Lors de la conférence SDC 2016, en mai 2016, 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[27].
- Fin septembre 2016, 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[28].
- En octobre 2016, un premier moteur de jeu vidéo libre se basant sur Vulkan, Intrinsic, est publié sur GitHub[29].
- En février 2017, Intel annonce que la partie graphique de ses processeurs supportera Vulkan[30].
- En février 2018, Valve, LunarG et The Brenwill Workshop annoncent que le jeu vedette de Valve, DOTA2 est porté via MoltenVK (implémentation de Metal en Vulkan) sur MacOS avec un gain de performances de 50% par rapport à la version OpenGL [4].
- En février 2018, 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[31]. Il devrait être prêt pour Godot 4.0[32], qui devrait sortir en 2020.
- En novembre 2018, les développeurs du moteur 3D libre OGRE, annoncent qu'ils sont en train de porter le moteur sur Vulkan[33].
Compatibilité matérielleModifier
Société | Matériel | Support de Vulkan 1.0 | ||||||
---|---|---|---|---|---|---|---|---|
Microarchitecture | Disponible depuis | GPUs (Die) | Carte graphiques/SoC | Linux | Microsoft Windows(Windows 7 et supérieur) | Android Nougat et supérieur[34] | ||
AMD | ||||||||
GCN 5th | 08/2017 | Vega 10 | Radeon Rx Vega series | Mesa/RADV[37] |
NC | |||
GCN 4th | 06/2016 | Polaris 10, Polaris 11, Vega 10 | Radeon Rx 400 Series | |||||
GCN 3rd | 08/2014 | Tonga, Fiji, Carrizo | Radeon R9 Series | |||||
GCN 2nd | 03/2013 | Bonaire, Hawaii, Kaveri, Kabini, Temash, Mullins, Beema, Carrizo-L | Radeon HD 7790, PlayStation 4, Xbox One | En cours d'implémentation | ||||
GCN 1st | 02/2012 | Oland, Cape Verde, Pitcairn, Tahiti, Hainan | Radeon HD 77xx–7900 Series | |||||
TeraScale 3 "Northern Islands" |
12/2010 | Aruba (Trinity/Richland), Barts, Turks, Caicos, Cayman | Radeon HD 7xxx–76xx Series, Radeon HD 6000 Series | non supporté | ||||
TeraScale 2 "Evergreens" |
09/2009 | Cedar, Cypress, Juniper, Redwood, Palm, Sumo | Radeon HD 5000 Series | |||||
TeraScale 1 | 05/2007 | R600, RV630, RV610, RV790, RV770, … | Radeon HD 2000 Series, HD 3000, HD 4000 | |||||
Nvidia | ||||||||
Pascal | 05/2016 | GP100, GP104, GP106, GP107 | GeForce 10 series, Tegra X2 | |||||
Maxwell 2 | 09/2014 | GM200, GM204, GM206, GM20B | GeForce 900 series, Tegra X1 | |||||
Maxwell 1 | 02/2014 | GM107, GM108 | GeForce GTX 750 Ti, GTX 750, GTX 860M | |||||
Kepler | 03/2012 | GK110, GK104, GK106, GK107, GK208 | GeForce 600 series, GeForce 700 series, Tegra K1 | |||||
Fermi | 03/2010 | GF100, GF104, GF106, GF108, GF110, GF114, GF116, GF119 | GeForce 400 series, GeForce 500 series | non supporté | ||||
Tesla 2.0 | 06/2008 | GT200, GT215, GT216, GT218, | GeForce 200 series, GeForce 300 series | |||||
Tesla 1.0 | 11/2006 | G80, G84, G86, G92, G94, G96, G98 | GeForce 8 series, GeForce 9 series, GeForce 100 series | |||||
Intel | ||||||||
Coffee Lake | 10/2017 | Core i3-/i5-/i7-8000 | NC | |||||
Kaby Lake | 01/2017 | Core i3-/i5-/i7-7000 | ||||||
Skylake | 08/2015 | Core i3-/i5-/i7-6000, Pentium G4xxx, Celeron G39xx | Prévu | |||||
Broadwell | 09/2014 | Core M-5Yxx, Core i3-/i5-/i7-5000 | non supporté | |||||
Haswell | 09/2012 | Core i3-/i5-/i7-4000, Pentium G3xxx, Celeron G18xx | ||||||
Ivy Bridge | 04/2012 | Core i3-/i5-/i7-3000, Pentium G2xxx, Celeron G16xx | ||||||
Sandy Bridge | 01/2011 | Core i3-/i5-/i7-2000, Pentium Gxxx, Celeron Gxxx | non supporté | |||||
Westmere | 02/2012 | Core i3-/i5-/i7-xxx, Pentium G69xx, Celeron G1101 | ||||||
Imagination Technologies | ||||||||
PowerVR Series 8XE | 02/2016 | GE8200, GE8300 | ||||||
PowerVR Series 7XT | 11/2014 | GT7200, GT7400, GT7600, GT7800, GT7900 | Apple A9, Helio X30 (MT679?) | |||||
PowerVR Series 7XE | 11/2014 | GE7400, GE7800 | ||||||
PowerVR Series 6XT | 01/2014 | GX6240, GX6250, GX6450, GX6650 | Apple A8, A8X, MediaTek MT8173, MT8176, | |||||
PowerVR Series 6XE | 01/2014 | G6050, G6060, G6100 (XE), G6110 | RK3368 | |||||
PowerVR Series 6 (Rogue) | 01/2012 | G6100, G6200, G6230, G6400, G6430, G6630 | MediaTek MT6595M, MT6595T, MT6595M, MT6795, MT8135, Helio X10 (MT6795), LG H13, Apple A7, Atom Z3460, Z3480, Z3530, Z3560, Z3570, Z3580 | |||||
PowerVR Series 5XT | 01/2012 | SGX543, SGX544, SGX554 | Apple 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 5410 | non supporté | ||||
Qualcomm | ||||||||
Adreno 600 series | Adreno 640 | Snapdragon 855 | ||||||
Adreno 500 series | Adreno 510, Adreno 530, Adreno 540 | Snapdragon 430, 625, 650, 652, 820, 821, 835, 845 | ||||||
Adreno 400 series | Snapdragon 415, 615, 616, 617, 805, 808, 810 | |||||||
Adreno 300 series | Snapdragon 200, 208, 210, 212, 400, 410, 412, 600, 800, 801 | non supporté | ||||||
ARM | ||||||||
Bifrost[47] | 06/2016 | Mali-G71, Mali-G51 | Kirin 960 | |||||
Midgard 4th | Q4 2015 | Mali-T860, Mali-T830, Mali-T880 | Exynos 8890, Exynos 7870, Kirin 950, 955, MediaTek MT6738, MT6750, Helio X20 (MT6797), X25 (MT6797T), P10 (MT6755), P20 (MT6757) | |||||
Midgard 3rd | 10/2013 | Mali-T760, … | Exynos 7420, Exynos 5433, MT6752, MT6732, RK3288 | |||||
Midgard 2nd | 08/2012 | Mali-T600 series, T720 | Exynos 5250, 5260, 5410, 5420, 5422, 5430, 5800, 7580, Mediatek MT6735, MT6753, Kirin 920, 925, 930, 935 | non supporté |
Jeux compatiblesModifier
Moteurs de jeux compatiblesModifier
- Source 2 – En mars 2015, Valve annonce que Source 2, successeur du moteur originel Source, supportera Vulkan[49],[50].
- Serious Engine 4 – En février 2016,Croteam annonce le support de Vulkan dans leur moteur[51].
- Unreal Engine 4 – En février 2016, Epic Games annonce le support de Vulkan lors d'un événement organisé par Samsung[52],[53].
- id Tech 6 – En mai 2016, id Software annonce le support de Vulkan pour la version 6 de leur moteur[54].
- id Tech 7
- CryEngine – Crytek a annoncé vouloir inclure le support de Vulkan pour son CryEngine[55].
- Unity – Support Vulkan à partir de la version 5.6[56] pour Android, Linux et Windows. Le support dans l'éditeur est disponible à partir de la version 2018.2[57].
- Xenko – Le support a été rajouté en juillet 2016[58].
- Intrinsic – Un moteur de jeu libre publié sur GitHub[59].
- Torque 3D MIT - En avril 2016, la communauté de développeurs annonce penser au support de Vulkan[60].
- Armory Engine - Moteur de jeu libre intégré dans Blender 3D.
AnnexesModifier
Notes et référencesModifier
- (en) « Vulkan® 1.1.127 - A Specification (anglais) »
- (en) « Open Publication License »(Archive • Wikiwix • Archive.is • Google • Que faire ?),
- Smith 2015.
- (en) « Portability Initiative - », The Khronos Group, (lire en ligne, consulté le 28 février 2018)
- (en) « Metal (API) », Wikipedia, (lire en ligne, consulté le 28 février 2018)
- http://www.zdnet.fr/actualites/le-khronos-group-officialise-la-releve-d-opengl-39832898.html
- https://www.khronos.org/assets/uploads/developers/library/overview/2015_vulkan_v1_Overview.pdf
- (en) « Gallium3D LLVM »,
- Ryan Smith, « Khronos @ SIGGRAPH 2013: OpenGL 4.4, OpenCL 2.0, & OpenCL 1.2 SPIR Announced », Anandtech, (consulté le 5 avril 2015)
- (en) « Learning More About The Intel Vulkan Driver, Linux Vulkan Plans », phoronix,
- https://www.khronos.org/assets/uploads/developers/library/2015-gtc/Khronos-Overview-GTC_Mar15.pdf
- (en) Philip Kollar, « Valve announces Source 2 engine, free for developers »
- Mike Mahardy, « GDC 2015: Valve Announces Source 2 Engine », IGN
- LittleWhite, « GLOVE et Zink Deux implémentations d'OpenGL sur Vulkan », sur jeux.developpez.com,
- LittleWhite, « GLOVE et Zink Deux implémentations d'OpenGL sur Vulkan », sur jeux.developpez.com,
- (en) « DXVK, Vulkan-based D3D11 and D3D10 implementation for Linux / Wine », sur compte Github de doitsujin
- (en) « D3D12 to Vulkan translation library », sur source.winehq.org
- (en) « zink: introduce opengl over vulkan », sur cgit.freedesktop.org,
- (en-US) « The Qt Company joins Khronos Group and promotes Vulkan - Qt Blog », Qt Blog, (lire en ligne, consulté le 21 février 2017)
- http://www.touslesdrivers.com/index.php?v_page=3&v_code=6124
- http://jeux.developpez.com/actu/96093/Intel-propose-un-pilote-Vulkan-open-source/
- http://www.ginjfo.com/actualites/composants/cartes-graphiques/vulkan-nvidia-drivers-windows-linux-20160409
- http://www.silicon.fr/lapi-3d-vulkan-sinvite-dans-android-n-developer-preview-2-144859.html
- http://www.nextinpact.com/news/99472-android-n-2e-developer-preview-amene-support-vulkan.htm
- http://www.tomshardware.fr/articles/android-n-vulkan,1-59353.html
- http://www.p-nintendo.com/news/khronos-certifie-la-switch-pour-vulkan-245969
- http://www.01net.com/actualites/vulkan-l-api-qui-ferait-du-bien-a-la-batterie-de-votre-smartphone-970624.html
- Clément Grandjean, « Vulkan : les jeux Unity seront bientôt plus fluides sous Android », sur frandroid,
- « Un moteur de jeu vidéo basé sur Vulkan », sur Toolinux.com,
- Jérôme Gianoli, « Support complet de Vulkan sous Windows, les Intel HD Graphics 21.20.16.4590 débarquent », sur Ginjfo, (consulté le 18 février 2017)
- (en) Juan Linietsky, « Moving to Vulkan (and ES 2.0) instead of OpenGL ES 3.0 »,
- (en) Rémi Verschelde, « Dev snapshot: Godot 3.2 alpha 1 »,
- (en) Matias Goldberg, « Vulkan Progress Report »,
- (en) « The Android platform includes an Android-specific implementation of the Vulkan API specification from the Khronos Group »,
- (en) « AMDGPU-PRO 16.40 Released For Ubuntu & Red Hat Linux Systems »,
- https://community.amd.com/community/gaming/blog/2016/02/16/radeon-gpus-are-ready-for-the-vulkan-graphics-api
- (en) Michael Larabel, « Testing The Open-Source "RADV" Radeon Vulkan Driver vs. AMDGPU-PRO », sur Phoronix,
- (en) « AMD Radeon Software version 16.15.1009 supports Vulkan »,
- http://www.nvidia.com/download/driverResults.aspx/101818/en-us
- (en) « Vulkan Driver Support », sur NVIDIA Developer, Nvidia (consulté le 4 avril 2016)
- (en) « Open-source Vulkan drivers for Intel hardware »,
- (en) Michael Larabel, « Mesa 12.0 Released With OpenGL 4.3 Support, Intel Vulkan & Many Other Features », sur Phoronix, (consulté le 9 juillet 2016)
- https://software.intel.com/en-us/blogs/2016/03/14/new-intel-vulkan-beta-1540204404-graphics-driver-for-windows-78110-1540 15.40.20
- (en-US) « Imagination announces Vulkan SDK for PowerVR Rogue GPUs », sur Imagination Blog, PowerVR Developer Technology Team, (consulté le 27 avril 2016)
- (en) « Snapdragon 855: The premier mobile platform for a new decade of 5G, AI, and XR »
- (en) « Qualcomm announces Vulkan API support for Adreno 5xx and 4xx GPUs »
- (en) « ARM Bifrost GPU Architecture »,
- (en) « ARM® Mali™GPUs with Vulkan Conformance »
- (en) Philip Kollar, « Valve announces Source 2 engine, free for developers », (consulté le 3 mars 2015)
- (en) Mike Mahardy, « GDC 2015: Valve Announces Source 2 Engine », IGN, (lire en ligne)
- (en) « The Talos Principle will support Vulkan »,
- (en) « Epic Games adds Vulkan support to Unreal Engine 4 », sur bit-tech (consulté le 24 février 2016)
- (en) « Epic Games Unveils ProtoStar at Samsung Galaxy Unpacked », sur www.unrealengine.com (consulté le 24 février 2016)
- (en) « id announces Doom running on Vulkan »,
- http://www.tweaktown.com/news/53506/directx-12-vulkan-support-way-cryengine/index.html
- https://unity3d.com/fr/unity/whats-new/unity-5.6.0
- https://unity3d.com/fr/unity/whats-new/unity-2018.2.0
- (en) « Xenko 1.7β released! »,
- http://www.intrinsic-engine.com/
- http://forums.torque3d.org/viewtopic.php?t=617#p5148
BibliographieModifier
- Ryan Smith, « Next Generation OpenGL Becomes Vulkan: Additional Details Released », AnandTech, (lire en ligne)
Lien externeModifier
- (en) Khronos Group, « 2015 vulkan v1 Overview »