Nové multiplatformní grafické API se bude jmenovat Vulkan. Ve jménu nebude obsažena zavedená značka „OpenGL“, a má to dobrý důvod. Toto API bude znamenat radikální obrat ve vývoji OpenGL. Nepůjde totiž o revizi, ale o zcela nové API, které se úplně zbaví jakékoliv zpětné kompatibility. Ta v stávajících verzích OpenGL vytváří značnou zátěž, která komplikuje implementaci v ovladačích i vývoj programů. Vulkan bude naproti tomu postaven na zelené louce bez více jak 20 let starých omezení a problémů.
Vulkan má podobné cíle jako DirectX 12 – má dojít k celkové redukci komplexity, která dnes při vykreslování přes tradiční vysokoúrovňová API stojí mnoho ztraceného výkonu. Zároveň má být systém nativně vícevláknový, má více sedět moderním GPU a také má být zvýšen výkon při kompilování kódu shaderů.
Nové API bude nízkoúrovňové. To znamená, že kontrola nad alokací paměti, vlákny a dalšími prostředky bude přímo v rukou aplikace, zatímco dnes je spíše nepřímá a velká část práce se děje netransparentně v rámci ovladače bez možnosti ji řídit. Pod Vulkanem bude mít aplikace mnohem lepší možnosti k využití potenciálu GPU, zároveň ale také bude mít větší „odpovědnost“. Práce blíže k hardwaru bude na programátory klást větší nároky.
OpenGL a mobilní OpenGL ES se opět spojí do jednoho
Kromě toho, že eliminuje dvacet let nastřádané „bagáže“, přinese Vulkan ještě jednu radikální změnu. Toto API totiž skloubí sféry vlivu klasického, „velkého“ OpenGL a jeho zjednodušené mobilní verze, OpenGL ES. V budoucnu by se tudíž stejné API Vulkan kromě desktopových systémů mělo používat i na mobilních platformách jako je Android či v embedded systémech.
Působnost Vulkanu by mohla být hodně široká, má totiž být schopné provozu na všech GPU s podporou OpenGL ES 3.1 (pokud ovšem výrobce dodá nový ovladač). OpenGL ES 3.1 bylo finalizováno loni a přineslo mobilní verzi OpenGL například compute shader. Chybí v něm ovšem například povinná podpora pro teselaci nebo geometry shader, což by znamenalo, že tyto funkce pod Vulkanem nebudou zajištěny a vývojáři s nimi nebudou moci automaticky počítat. Svědčí to asi o tom, že OpenGL je v současnosti silné hlavně díky své jednodušší mobilní verzi (na Androidu, iOS) a tím pádem se také tímto směrem odvíjí budoucí evoluce.
Využije Vulkan práci odvedenou na API Mantle?
Fandíte-li AMD, bude pro vás zajímavá informace, že Vulkan je údajně úzce spjat s nízkoúrovňovým API Mantle, specifickým pro Radeony architektury GCN. Není to ovšem tak, že by šlo přímo standardizaci tohoto API pod razítkem Khronosu. AMD dalo skutečně Mantle k dispozici coby výchozí materiál pro vývoj nové generace OpenGL, nicméně tento základ projde nejrůznějšími změnami, přestavbami a přídavky od dalších subjektů. Něco z Mantle tedy bude převzato, jiné prvky, zejména pokud nejsou multiplatformní nebo jsou příliš specifické pro Radeony, naopak budou nahrazeny. Tak například byl změněn jazyk shaderů z HLSL – zprvu se místo něj použije tradiční GLSL z OpenGL, eventuálně by se ale měly programovat i v dalších jazycích, například C++.
Do Vulkanu ale přispívá celá řada dalších firem (pochopitelně Nvidia, ale též prakticky kdokoliv, kdo nějak pracuje s GPU; hodně je zde softwarových firem a vývojářů her a enginů). Stačí se podívat na následující slajd.
Participující firmy údajně k vývoji přispěly velkou měrou, takže prý práce rychle pokračují. Nicméně i tak se asi Vulkan dostane do praxe až s určitým zpožděním oproti DirectX 12, jež se coby součást Windows 10 objeví už letos. Nějaké prvotní specifikace, po nichž mají brzy přijít i první implementace, mají sice být hotové před koncem roku, finální verze se ale letos určitě nestihne a celý proces nutně zabere minimálně část roku 2016. Jak už bylo řečeno, Vulkan bude potřebovat od základu novou podporu v grafických ovladačích, což nebude nic triviálního.