Vulkan (API)
Vulkan — багатоплатформний прикладний програмний інтерфейс для 3D графіки і супровідних обчислень, представлене компанією Khronos Group. Початково розробка даного API була в рамках ініціативи OpenGL наступного покоління і на деяких презентаціях проект був анонсований під назвою «glNext», який був покликаний вирішити наявні проблеми та недоліки OpenGL, згодом цей проект отримав саме назву Vulkan. Враховуючи основні принципи, використані в розробці Vulkan, — його застосування має принести перевагу в швидкодії в порівнянні з OpenGL, шляхом ефективнішого використання GPU. Деякі компоненти Vulkan були позичені з іншого API — Mantle від компанії AMD, який свого часу також створювався для заміни вже наявних DirectX і OpenGL.
Тип | API для 3D графіки |
---|---|
Автор(и) | Khronos Group в співпраці з AMD[1][2][3][4][5] |
Розробник | Khronos Group |
Стабільний випуск | (6 вересня 2016) |
Версії | 1.3.204 (25 січня 2022)[6] |
Репозиторій | github.com/KhronosGroup/Vulkan-Headers |
Платформа | крос-платформова програма |
Операційна система | багатоплатформне |
Мова програмування | C[7] |
Стан розробки | Активний |
Ліцензія | Apache License, Version 2.0d[8] |
Вебсайт | khronos.org/Vulkan |
Vulkan у Вікісховищі |
Огляд
Основною метою створення Vulkan є раціональніше використання можливостей GPU і CPU в порівнянні з OpenGL. Він впроваджує пряміший контроль над роботою GPU і в свою чергу зменшує навантаження на CPU. Основні переваги:
- OpenGL використовує високорівневу мову програмування GLSL для написання шейдерів, який примушує кожен OpenGL драйвер імплементувати свій особистий компілятор для GLSL, який виконується під час роботи додатку, щоб транслювати шейдерні програми в виконуваний код для цільової платформи. Vulkan — замість цього забезпечує проміжний бінарний формат під назвою SPIR-V (Standard Portable Intermediate Representation), аналогічний бінарному формату в який компілюється HLSL шейдери на основі DirectX. Це в свою чергу, знімає навантаження для розробників драйверів, дозволяючи робити компіляцію шейдерів на етапі розробки. Також дозволяє розробникам застосунків створювати шейдерні програми на інших мовах, а не тільки на GLSL.[9]
- Багатоплатформне API, яке підтримується і на звичайних комп'ютерах з високопродуктивними відеокартами, і на мобільних пристроях.
- Покращена підтримка сучасних систем, які використовують багатонитевість.
- Зниження навантаження на CPU в ситуаціях, коли процесор є слабкою ланкою, що дозволяє збільшити пропускну здатність для GPU-обчислень і візуалізації.
Історія
Влітку 2014 року компанія Khronos Group почала проект для створення наступного сучаснішого графічного API. У липні 2014 року на SIGGRAPH, проект був публічно анонсований з закликами до участі.
Згідно організації США по патентах і товарних знаках, товарний знак «Vulkan» був зареєстрований 19 лютого 2015 року.[10]
Vulkan був офіційно представлений і анонсований на Game Developers Conference 2015.
З березня 2015 року, Valve анонсувала Source 2, ігровий рушій з підтримкою графічного API Vulkan.[11][12]
На початку 2015 року, LunarG (фінансується Valve) був розроблений і представлений драйвер від Intel для Linux, котрий дозволив Vulkan мати сумісність з графічною системою HD 4000.
18 грудня 2015 року, Khronos Group заявила про те, що специфікація версії Vulkan 1.0 практично завершена і буде випущена коли будуть доступні сумісні драйвери.
Сумісність
Згідно інформації з офіційних джерел Khronos, Vulkan сумісний на пристроях, які на момент випуску підтримують OpenGL ES 3.1 — для мобільних або OpenGL 4.x — для звичайних, і новіших версіях.[13] Для підтримки Vulkan потребуватиме нових драйверів.
Компанія | Апаратні засоби | Підтримка Vulkan 1.0 | ||||||
---|---|---|---|---|---|---|---|---|
Мікроархітектура | Випущена | Графічні чипи | Відеокарти | Linux | Microsoft Windows | Android Nougat і наступні[14] | ||
AMD | ||||||||
GCN 4-ого покоління | червень 2016 | Polaris 10, Polaris 11, Vega 10 | AMD Radeon Rx 400 серії | AMDGPU PRO (тільки Ubuntu)[15][16] | Radeon Software[17] | Н/Д | ||
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 драйвери[18][19] | 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[20][21] | 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[22] | |||||
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[23] | |||||
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[24] | червень 2016 | Mali-G71, … | В очікуванні | 1.0[25] | ||||
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. Процитовано 26 червня 2015.
- Kirsch, Nathan. Is AMD Mantle Dead As We Have Known It? Vulcan API Uses Mantle Technology for OpenGL. Legit Reviews. Процитовано 25 червня 2015.
- Shilov, Anton. AMD: Vulkan absorbed ‘best and brightest’ parts of Mantle. KitGuru. Процитовано 26 червня 2015.
- Koduri, Raja (4 березня 2015). On APIs and the future of Mantle. AMD. Процитовано 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. Процитовано 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. Khronos Group. Процитовано 5 березня 2015.
- Trademark Status & Document Retrieval. tsdr.uspto.gov. Процитовано 9 листопада 2015.
- Valve announces Source 2 engine, free for developers. Polygon. Процитовано 9 листопада 2015.
- GDC 2015: Valve Announces Source 2 Engine - IGN. IGN. Процитовано 9 листопада 2015.
- Vulkan overview (англ.). February 2016.
- The Android platform includes an Android-specific implementation of the Vulkan API specification from the Khronos Group.
- http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-PRO-Beta-Driver-for-Vulkan-Release-Notes.aspx
- https://community.amd.com/community/gaming/blog/2016/02/16/radeon-gpus-are-ready-for-the-vulkan-graphics-api
- Архівована копія. Архів оригіналу за 25 лютого 2016. Процитовано 10 вересня 2016.
- http://www.nvidia.com/download/driverResults.aspx/101818/en-us
- https://developer.nvidia.com/vulkan-driver
- Open-source Vulkan drivers for Intel hardware. 16 лютого 2016.
- Larabel, Michael (8 липня 2016). Mesa 12.0 Released With OpenGL 4.3 Support, Intel Vulkan & Many Other Features. Phoronix. Процитовано 9 липня 2016.
- http://blog.imgtec.com/powervr/imagination-announces-vulkan-sdk-for-powervr-rogue-gpus
- =http://www.prnewswire.com/news-releases/qualcomm-announces-vulkan-api-support-on-the-adreno-530-gpu-300221252.html
- ARM Bifrost GPU Architecture. 30 травня 2016.
- ARM® Mali™GPUs with Vulkan Conformance.
Див. також
- OpenGL — Інше API створене Khronos Group.
- OpenGL ES — підмножина графічного інтерфейсу OpenGL для мобільних пристроїв.
- Mantle — Низькорівневе API від компанії AMD.
- Direct3D — Набір API для графіки 2D і 3D, для платформи Windows.
- Metal (API) — API для графіки розроблене спеціально для iOS and OS X.
- Game Developers Conference — конференція для професійних розробників комп'ютерних ігор.