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]
З березня 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 потребуватиме нових драйверів.
↑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....
↑Архівована копія. Архів оригіналу за 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 (посилання)
↑Архівована копія. Архів оригіналу за 31 травня 2016. Процитовано 10 вересня 2016.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)