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