Vulkan (API)

Vulkan
Vulkan logo
Тип API для 3D графіки
Автор Khronos Group в співпраці з AMD[1][2][3][4][5]
Розробник Khronos Group
Стабільний випуск (6 вересня 2016)
Платформа кросплатформова програма
Операційна система багатоплатформне
Мова програмування C++[6] і C
Стан розробки Активний
Ліцензія Apache License, Version 2.0[d][7] і Apache License
Репозиторій github.com/KhronosGroup/Vulkan-Headers
Вебсайт khronos.org/Vulkan

Vulkan  — багатоплатформний прикладний програмний інтерфейс для 3D графіки і супровідних обчислень, представлене компанією Khronos Group. Початково розробка даного API була в рамках ініціативи OpenGL наступного покоління і на деяких презентаціях проект був анонсований під назвою «glNext», який був покликаний вирішити наявні проблеми та недоліки OpenGL, згодом цей проект отримав саме назву Vulkan. Враховуючи основні принципи, використані в розробці Vulkan, — його застосування має принести перевагу в швидкодії в порівнянні з OpenGL, шляхом ефективнішого використання GPU. Деякі компоненти Vulkan були позичені з іншого API — Mantle від компанії AMD, який свого часу також створювався для заміни вже наявних DirectX і OpenGL.

Огляд[ред. | ред. код]

Основною метою створення Vulkan є раціональніше використання можливостей GPU і CPU в порівнянні з OpenGL. Він впроваджує пряміший контроль над роботою GPU і в свою чергу зменшує навантаження на CPU. Основні переваги:

  • OpenGL використовує високорівневу мову програмування GLSL для написання шейдерів, який примушує кожен OpenGL драйвер імплементувати свій особистий компілятор для GLSL, який виконується під час роботи додатку, щоб транслювати шейдерні програми в виконуваний код для цільової платформи. Vulkan — замість цього забезпечує проміжний бінарний формат під назвою SPIR-V (Standard Portable Intermediate Representation), аналогічний бінарному формату в який компілюється HLSL шейдери на основі DirectX. Це в свою чергу, знімає навантаження для розробників драйверів, дозволяючи робити компіляцію шейдерів на етапі розробки. Також дозволяє розробникам застосунків створювати шейдерні програми на інших мовах, а не тільки на GLSL.[8]
  • Багатоплатформне API, яке підтримується і на звичайних комп'ютерах з високопродуктивними відеокартами, і на мобільних пристроях.
  • Покращена підтримка сучасних систем, які використовують багатонитевість.
  • Зниження навантаження на CPU в ситуаціях, коли процесор є слабкою ланкою, що дозволяє збільшити пропускну здатність для GPU-обчислень і візуалізації.

Історія[ред. | ред. код]

Влітку 2014 року компанія Khronos Group почала проект для створення наступного сучаснішого графічного API. У липні 2014 року на SIGGRAPH, проект був публічно анонсований з закликами до участі.

Згідно організації США по патентах і товарних знаках, товарний знак «Vulkan» був зареєстрований 19 лютого 2015 року.[9]

Vulkan був офіційно представлений і анонсований на Game Developers Conference 2015.

З березня 2015 року, Valve анонсувала Source 2, ігровий рушій з підтримкою графічного API Vulkan.[10][11]

На початку 2015 року, LunarG (фінансується Valve) був розроблений і представлений драйвер від Intel для Linux, котрий дозволив Vulkan мати сумісність з графічною системою HD 4000.[12]

18 грудня 2015 року, Khronos Group заявила про те, що специфікація версії Vulkan 1.0 практично завершена і буде випущена коли будуть доступні сумісні драйвери.[13]

1 березня 2022 року було випущено Vulkan SC 1.0, що містить графіку та обчислення Vulkan для критично важливої галузі безпеки, водночас базуючись на стандарті Vulkan 1.2.[14]

Сумісність[ред. | ред. код]

Згідно інформації з офіційних джерел Khronos, Vulkan сумісний на пристроях, які на момент випуску підтримують OpenGL ES 3.1 — для мобільних або OpenGL 4.x — для звичайних, і новіших версіях.[15] Для підтримки Vulkan потребуватиме нових драйверів.

Компанія Апаратні засоби Підтримка Vulkan 1.0
Мікроархітектура Випущена Графічні чипи Відеокарти Linux Microsoft Windows Android Nougat і наступні[16]
AMD
GCN 4-ого покоління червень 2016 Polaris 10, Polaris 11, Vega 10 AMD Radeon Rx 400 серії AMDGPU PRO (тільки Ubuntu)[17][18] Radeon Software[19] Н/Д
GCN 3-ого покоління серпень 2014 Tonga, Fiji, Carrizo Radeon R9 серії
GCN 2-ого покоління березень 2013 Bonaire, Hawaii, Kaveri, Kabini, Temash, Mullins, Beema, Carrizo-L Radeon HD 7790, PlayStation 4, Xbox One В розробці
GCN 1-ого покоління лютий 2012 Oland, Cape Verde, Pitcairn, Tahiti Radeon HD 77xx–7900 серії
TeraScale 3 грудень 2010 Aruba (Trinity/Richland), Barts, Turks, Caicos, Cayman Radeon HD 7xxx–76xx серії, Radeon HD 6000 серії не підтримується
TeraScale 2 вересень 2009 Cedar, Cypress, Juniper, Redwood, Palm, Sumo Radeon HD 5000 серії
TeraScale травень 2007 R600, RV630, RV610, RV790, RV770, … Radeon HD 2000 серії, Radeon HD 3000, Radeon HD 4000 серії
Nvidia
Pascal травень 2016 GP100, GP104, GP106, GP107 GeForce 10 серії, Tegra X2 Nvidia GeForce драйвери[20][21] Nvidia GeForce драйвери Так
Maxwell 2.0 вересень 2014 GM200, GM204, GM206, GM20B GeForce 900 серії, Tegra
Maxwell 1.0 лютий 2014 GM107, GM108 GeForce GTX 750 Ti, GTX 750, GTX 860M
Kepler березень 2012 GK110, GK104, GK106, GK107, GK208 GeForce 600 Series, GeForce 700 Series, Tegra
Fermi березень 2010 GF100, GF104, GF106, GF108, GF110, GF114, GF116, GF119 GeForce 400, GeForce 500 серій не підтримується
Tesla 2.0 червень 2008 GT200, GT215, GT216, GT218, GeForce 200, GeForce 300 серій
Tesla 1.0 листопад 2006 G80, G84, G86, G92, G94, G96, G98 GeForce 8, GeForce 9, GeForce 100 серій
Intel
Kaby Lake січень 2017 Mesa[22][23] 15.40.20 Н/Д
Skylake серпень 2015 Core i3-/i5-/i7-6000, Pentium G4xxx, Celeron G39xx
Broadwell червень 2015 Core i3-/i5-/i7-5000 не підтримується
Haswell вересень 2012 Core i3-/i5-/i7-4000, Pentium G3xxx, Celeron G18xx
Ivy Bridge квітень 2012 Core i3-/i5-/i7-3000,Pentium G2xxx, Celeron G16xx
Sandy Bridge січень 2011 Core i3-/i5-/i7-2000, Pentium Gxxx, Celeron Gxxx не підтримується
Westmere січень 2010 Core i3-/i5-/i7-xxx, Pentium G69xx, Celeron G1101
Imagination Technologies
PowerVR серії 8XE лютий 2016 GE8200, GE8300 PowerVR Graphics SDK v4.1[24]
PowerVR серії 7XT листопад 2014 GT7200, GT7400, GT7600, GT7800, GT7900 Apple A9
PowerVR серії 7XE листопад 2014 GE7400, GE7800
PowerVR серії 6XT січень 2014 GX6240, GX6250, GX6450, GX6650 Apple A8, A8X, MediaTek MT8173, MT8176,
PowerVR серії 6XE січень 2014} G6050, G6060, G6100 (XE), G6110 RK3368
PowerVR серії Rogue січень 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 серії 5XT січень 2009 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 не підтримується
Qualcomm
Adreno 500 серії Adreno 510, Adreno 530 Snapdragon 430, 625, 650, 652, 820 1.0[25]
Adreno 400 серії Snapdragon 415, 615, 616, 617, 805, 808, 810
Adreno 300 серії Snapdragon 200, 208, 210, 212, 400, 410, 412, 600, 800, 801 не підтримується
ARM
Bifrost[26] червень 2016 Mali-G71, … В очікуванні 1.0[27]
Midgard 4-го покоління кінець 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 3-ого покоління жовтень 2013 Mali-T760, … Exynos 7420, Exynos 5433, MT6752, MT6732, RK3288
Midgard 2-покоління серпень 2012 Mali-T600 серії, T720 Exynos 5250, 5260, 5410, 5420, 5422, 5430, 5800, 7580, Mediatek MT6735, MT6753, Kirin 920, 925, 930, 935 не підтримується

Посилання[ред. | ред. код]

  1. Hruska, Joel. Not dead yet: AMD’s Mantle powers new Vulkan API, VR efforts. Extreme Tech. Архів оригіналу за 22 квітня 2016. Процитовано 26 червня 2015.
  2. Kirsch, Nathan. Is AMD Mantle Dead As We Have Known It? Vulcan API Uses Mantle Technology for OpenGL. Legit Reviews. Архів оригіналу за 26 червня 2015. Процитовано 25 червня 2015.
  3. Shilov, Anton. AMD: Vulkan absorbed ‘best and brightest’ parts of Mantle. KitGuru. Архів оригіналу за 26 червня 2015. Процитовано 26 червня 2015.
  4. Koduri, Raja (4 березня 2015). On APIs and the future of Mantle. AMD. Архів оригіналу за 20 травня 2015. Процитовано 19 травня 2015. ...(T)he Khronos Group has selected Mantle to serve as the foundation for Vulkan....
  5. Michaud, Scott (3 березня 2015). GDC 15: Khronos Acknowledges Mantle's Start of Vulkan. PC Perspective. Архів оригіналу за 20 травня 2015. Процитовано 19 травня 2015.
  6. https://github.com/KhronosGroup/Vulkan-Docs/blob/1.0/src/vulkan/vulkan.h
  7. https://github.com/KhronosGroup/Vulkan-Hpp/blob/master/LICENSE.txt
  8. Kessenich, John. An Introduction to SPIR-V (PDF). Khronos Group. Архів оригіналу (PDF) за 9 березня 2015. Процитовано 5 березня 2015.
  9. Trademark Status & Document Retrieval. tsdr.uspto.gov. Архів оригіналу за 11 травня 2013. Процитовано 9 листопада 2015.
  10. Valve announces Source 2 engine, free for developers. Polygon. Архів оригіналу за 5 березня 2015. Процитовано 9 листопада 2015.
  11. GDC 2015: Valve Announces Source 2 Engine - IGN. IGN. Архів оригіналу за 4 березня 2015. Процитовано 9 листопада 2015.
  12. Larabel, Michael (5 березня 2015). Valve Developed An Intel Linux Vulkan GPU Driver. Phoronix. Процитовано 8 серпня 2017.
  13. Woods, Shannon (12 серпня 2015). Low-overhead rendering with Vulkan. Android Developers Blog. Архів оригіналу за 20 жовтня 2021.
  14. Vulkan SC - Vulkan graphics for the safety critical industry. The Khronos Group (англ.). 22 лютого 2019. Процитовано 30 березня 2022.
  15. Vulkan overview (PDF) (англ.). February 2016. Архів оригіналу (PDF) за 8 грудня 2015. Процитовано 27 грудня 2015.
  16. The Android platform includes an Android-specific implementation of the Vulkan API specification from the Khronos Group. Архів оригіналу за 26 вересня 2016. Процитовано 10 вересня 2016.
  17. Архівована копія. Архів оригіналу за 16 вересня 2016. Процитовано 10 вересня 2016.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  18. Архівована копія. Архів оригіналу за 24 жовтня 2016. Процитовано 10 вересня 2016.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  19. Архівована копія. Архів оригіналу за 25 лютого 2016. Процитовано 10 вересня 2016.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  20. Архівована копія. Архів оригіналу за 22 жовтня 2016. Процитовано 10 вересня 2016.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  21. Архівована копія. Архів оригіналу за 8 квітня 2016. Процитовано 10 вересня 2016.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  22. Open-source Vulkan drivers for Intel hardware. 16 лютого 2016. Архів оригіналу за 15 лютого 2017. Процитовано 10 вересня 2016.
  23. Larabel, Michael (8 липня 2016). Mesa 12.0 Released With OpenGL 4.3 Support, Intel Vulkan & Many Other Features. Phoronix. Архів оригіналу за 16 серпня 2016. Процитовано 9 липня 2016.
  24. Архівована копія. Архів оригіналу за 31 травня 2016. Процитовано 10 вересня 2016.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  25. =http://www.prnewswire.com/news-releases/qualcomm-announces-vulkan-api-support-on-the-adreno-530-gpu-300221252.html [Архівовано 31 жовтня 2016 у Wayback Machine.]
  26. ARM Bifrost GPU Architecture. 30 травня 2016. Архів оригіналу за 21 жовтня 2016. Процитовано 10 вересня 2016.
  27. ARM® Mali™GPUs with Vulkan Conformance. Архів оригіналу за 4 грудня 2016. Процитовано 10 вересня 2016.

Див. також[ред. | ред. код]

  • OpenGL — Інше API створене Khronos Group.
  • OpenGL ES — підмножина графічного інтерфейсу OpenGL для мобільних пристроїв.
  • Mantle — Низькорівневе API від компанії AMD.
  • Direct3D — Набір API для графіки 2D і 3D, для платформи Windows.
  • Metal (API)[en] — API для графіки розроблене спеціально для iOS and OS X.
  • Game Developers Conference — конференція для професійних розробників комп'ютерних ігор.