Vulkan: nová generace OpenGL bez historické zátěže, čerpající z Mantle

4. 3. 2015

Sdílet

 Autor: Redakce

Pokud vám leží na srdci multiplatformní 3D grafika, tak už možná víte, že po Mantle od AMD a DirectX 12 od Microsoftu pracuje na nízkoúrovňovém grafickém API nové generace také konsorcium Khronos Group, současný správce platformy OpenGL. Takzvané „OpenGL Next“ dostalo nyní na konferenci GDC 2015 oficiální jméno a jeho tvůrci se oficiálně podělili o první detaily ohledně tohoto počinu, který do světa OpenGL zdá se přinese bezprecedentní revoluci.

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ů.

Grafické API Vulkan, nová nízkoúrovňová generace OpenGL

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.

Grafické API Vulkan, nová nízkoúrovňová generace OpenGL

 

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.

Grafické API Vulkan, nová nízkoúrovňová generace OpenGL

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.

Logo API Vulkan

 

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.

Grafické API Vulkan, nová nízkoúrovňová generace OpenGL

ICTS24

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.

Zdroje: Khronos, AnandTech