Shop menü

VULKAN: AZ OPENGL ÉS A GLNEXT ÚJ NEVE

A Vulkan nagyon nagy mértékben épít az AMD Mantle API-jának 1.0-s kiadására, ám praktikus okokból sok téren különbözik is tőle.
Víg Ferenc (J.o.k.e.r)
Víg Ferenc (J.o.k.e.r)
Vulkan: az OpenGL és a glNext új neve

Az OpenCL és az OpenGL mögött álló Khronos Group több érdekes bejelentést is időzített erre a hétre, ami nem is túl meglepő, hiszen az MWC (Mobile World Congress) mellett ezen a héten rendezik meg a GDC-t (Game Developer's Conference) is, így minden vállalat ellövi majd az egyes alkalmazásprogramozási-interfészekhez kapcsolódó bejelentéseit.

Galéria megnyitása

A Khronos 2014 augusztusában rántotta le a leplet alacsonyszintű hardverelérést biztosító fejlesztéséről, amely a glNext nevet viseli, azaz az OpenGL következő generációját képviseli. Az új API a Mantle és a DirectX 12 alapkoncepcióját követve alacsonyszintű hozzáférést biztosít a grafikus alrendszerhez, de előbbieknél komolyabb jelentőséggel bír, hiszen a világ első alacsony szintű, platformok között működő API-jának minősül. A 2014-es bejelentés tulajdonképpen csak együttműködésre való felhívás volt, most azonban érdekes részletek is napvilágot láttak a glNext újításaival kapcsolatban.

Első és legfontosabb, hogy a glNext-et végre elnevezték, így mostantól a Vulkan névre hallgat. Az új név nagyon komoly változásokat takar, ugyanis e név alatt egyesül az asztali OpenGL API és a mobil OpenGL ES API. A korábban felvázolt irány persze az új név bevezetése után sem változik: továbbra is egy nyílt, platformok között működő, alacsony szintű hardverelérést biztosító API készítése a cél, amely számos előnyt kínál (hála például a jelentősen csökkentett draw call overhead-nek, vagy a gyorsabb shader fordításnak).

A Vulkan érkezésével fejlődésre lehet számítani fejlesztőeszközök terén is, aminek ideje volt, mert e téren az OpenGL korábban több jogos kritikát is kapott. A Vulkan esetében egységes validációs és hibakereső rétegek állnak rendelkezésre, amelyek beilleszthetőek a renderelési láncba és használhatóak a fejlesztés során, ez pedig nagy könnyebbséget jelent a fejlesztők számára. A megfelelőségi tesztek szintén nagy hangsúlyt kapnak, amelyek az OpenGL esetében évekig hiányoztak és amelyek nagy segítséget jelentettek a Khronos legfrissebb API-jainak fejlesztésében – itt gondoljunk például a WebCL-re. A megfelelőségi tesztelés részben nyitott lesz, ugyanis a fejlesztők benyújthatnak majd új teszteket, amelyeket a Khronos szakembergárdája el fog bírálni.

A végleges Vulkan specifikáció egyelőre még nem áll rendelkezésre, de a Khronos szerint nagyon hasonlít majd a Mantle API-ra és a DirectX 12-re, így azok a fejlesztők, akik ezeken az API-kon dolgoznak, a Vulkan API-val is elboldogulnak majd.

Érdekes tény, hogy a Vulkan fejlesztésében komoly szerepe van az AMD Mantle API 1.0-s kiadásának, hiszen gyakorlatilag erre alapoz a Vulkan. Persze fontos megjegyezni, hogy a Vulkan nem egyenlő a Mantle API-val, mindössze a Vulkan fejlesztésének felgyorsítását szolgálta, így a Vulkan több téren is különbözik tőle. A Mantle leszármazottjának tekinthető Vulkan esetében számos olyan Mantle szolgáltatást száműztek, amelyek nem feleltek meg a céloknak – itt részben a HLSL-re, illetve minden egyéb olyan megoldásra kell gondolni, amelyek akadályozták, hogy az új API klönböző gyártók termékeivel is együttműködjön –, a kivett funkcionalitást pedig egyéb szükséges összetevőkkel, illetve jobb funkcionalitással pótolták.

Shader programozás felől nézve a Vulkan elég széles repertoárból gazdálkodhat majd a későbbiekben. Eleinte a GLSL lesz a Vulkan fő shader programozási nyelve, de hosszabb távon egyéb programozási nyelvek támogatására is lehet számítani, például a C++-éra is, amit az Apple Metal API-ja egyébként már támogat.

Hardveres támogatás terén a Khronos jelenlegi álláspontja szerint minden olyan platform megfelel majd, amely rendelkezik OpenGl ES 3.1-es vagy frissebb támogatással, azaz minden modern mobil és asztali GPU kompatibilis lesz a Vulkan API-val.

A Vulkan API specifikációja még ebben az évben megjelenhet, ám abból kiindulva, hogy a Khronos elsőként mindig ideiglenes specifikációt ad ki, a végleges változat egy picit késhet a DirectX 12-höz képest, ami még év vége előtt elrajtol. Az előzetes specifikáció megjelenésekor már pontosabb képet kaphatunk azzal kapcsolatban, hogy mely platformok és GPU-k kapnak Vulkan támogatást, valamint az is kiderülhet, mely játékok támaszkodnak elsőként az új API-ra.

Itt a SPIR-V is

A Khronos a Vulkan mellett a SPIR legújabb változatát, a SPIR-V-t is bejelentette. A SPIR egy speciális fordító, amely egy köztes állapotot biztosít a shader forráskódja és a lefordított bináris között. Ez a módszer garantálja, hogy a szabványos shader kód gond nélkül lefut majd az adott, Vulkan API-t támogató hardvereken – ez pedig komoly előrelépés az OpenGL-hez képest.

Azáltal, hogy a Vulkan a SPIR-V köré épül, a fejlesztők több programozási nyelven is készíthetnek tartalmakat a Vulkan API-ra, így gyakorlatilag bármilyen kód lefuttatható a Vulkan API-n, ha azt le lehet fordítani SPIR szintre. Ez a gyakorlat hasonló ahhoz, amit a Khronos csoport az OpenCL esetében folytat – a SPIR ugye pont az OpenCL miatt született meg.

A fentiek miatt a Vulkan shaderek esetében már nem kötelező nyers magas szintű GLSL kódot használni, ehelyett az említett köztes állapotban is leszállítható a kód. Hosszabb távon a SPIR-V jóvoltából a fejlesztők szabadon keverhetik majd a grafikai és számítási terhelésfajtákat, hiszen a SPIR-V mindkettőt ki tudja szolgálni. Ezzel együtt a Vulkan rugalmasabb is lesz, hiszen nem csak a GLSL programozási nyelvet támogathatja, hanem egyéb programozási nyelveket is, hála a SPIR-V bevetésének.

Neked ajánljuk

    Tesztek

      Kapcsolódó cikkek

      Vissza az oldal tetejére