Vulkan je revoluční grafické API navržené tak, aby minimalizovalo režii procesoru (CPU) a poskytlo vývojářům přímou kontrolu nad grafickým hardwarem. Na rozdíl od svého předchůdce, OpenGL, Vulkan předpokládá, že programátor přesně ví, co dělá, a nese plnou zodpovědnost za správu paměti a synchronizaci.
Tradiční API jako OpenGL fungovala jako „černá skříňka“. Ovladač dělal mnoho rozhodnutí za programátora (správa paměti, kontrola chyb), což vedlo k nekonzistentnímu výkonu a vysoké zátěži jednoho jádra CPU.
Vulkan toto mění:
Vulkan vyžaduje mnohem více kódu (tzv. boilerplate) pro inicializaci, ale odměnou je předvídatelný výkon.
Ve Vulkanu se příkazy (vykresli, zkopíruj, vypočítej) neposílají na GPU okamžitě. Zapisují se do Command Bufferů, které lze připravovat v několika vláknech současně. Tyto buffery se následně odesílají do fronty (Queue) k vykonání na GPU.
Všechny stavy (shadery, míchání barev, hloubkový test) se definují dopředu při startu aplikace do objektů typu Pipeline. To eliminuje „záškuby“ (stuttering) během hry, které v OpenGL vznikaly kompilací shaderů za běhu.
Vulkan nepoužívá shadery v textové podobě (jako GLSL), které by musel ovladač kompilovat. Místo toho používá SPIR-V – binární mezikód (podobně jako LLVM IR pro procesory).
Vulkan soupeří s dalšími moderními API, ale jeho hlavní silou je otevřenost.
| API | Výrobce | Platformy |
|---|---|---|
| Vulkan | Khronos Group | Windows, Linux, Android, Nintendo Switch. |
| DirectX 12 | Microsoft | Windows, Xbox. |
| Metal | Apple | macOS, iOS. |
Poznámka k Apple: Apple Vulkan nativně nepodporuje, ale komunita vyvinula vrstvu MoltenVK, která překládá volání Vulkanu do Metal API.
—
Zajímavost: Vulkan je evolucí API zvaného Mantle, které původně vyvinula společnost AMD. AMD následně darovalo kód skupině Khronos, aby se stal základem pro otevřený průmyslový standard.