Elrajtolt a Vulkan API
Megjelent a Vulkan, mely a következő évek egyik meghatározó multiplatform grafikus API-ja lehet. Az Apple-ön kívül jóformán mindenki készül támogatással, a Vulkan az asztali Windows operációs rendszerek mellett Linuxra és Androidra is elérhető lesz.
Közleményben adott hírt legújabb, Vulkan névre hallgató grafikus API-jának megjelenéséről a Khronos Group. Az alacsony szintű hozzáférést biztosító, jelenleg 1.0-s verziónál járó multiplatform API a PC-k, illetve a virtuális valóság mellett az ultramobil szegmenst is célozza. Utóbbi területen pedig jó esély van a sikerre, hisz a Google már javában dolgozik az Androidos implementáción.
A Mantle API öröksége
A Gitlab mint DevSecOps platform (x) Gyere el Radovan Baćović (Gitlab, Data Engineer) előadására a november 7-i DevOps Natives meetupon.
A Vulkan az AMD Mantle alapjaira épül, amit a nyílt API-kkal foglalkozó Khronos Group bizonyos helyeken módosított, illetve kiegészített. Ezzel a DirectX 12-höz és a Metal API-hoz mért relatíve nagy lemaradásból sokat faraghattak a fejlesztők, hisz az AMD korábbi munkásságának hála az alapokat kvázi készen kapták. (Erre utal az elnevezés is, ugyanis vulkánok a földköpeny (mantle) megnyílásával törnek ki.) Az AMD és a Khronos közti megegyezés részletei nem ismertek, ugyanakkor a szorosabb együttműködésből bizonyosan mindkét fél profitálhat. A Mantle az AMD-hez való kötöttsége miatt nem lett sikertörténet, nagyjából két és fél év alatt mindössze hét darab az API-t (is) támogató játék jelent meg.
A Khronosszal kötött egyezséggel viszont nem vész teljesen kárba a korábbi munka. A Mantle öröksége megmarad, az AMD pedig később profitálhat a korábbi ismeretekből, ami segítség lehet a konkurensekkel vívott harcok során. Az AMD-hez köthető gyökerek ennek ellenére nem jelentenek hátrányt a többi (bizonyos esetekben konkurens) cég számára, a fejlesztési munkálatok során az összes releváns vállalattal egyeztetett a Khronos Group, melyek egy része eredményezte a különféle módosításokat és kiegészítéseket. Erre egy példa a shader erőforrásrögzítő rendszer, mely jelentősen eltér a Mantle esetében alkalmazottól.
Az alapvető célkitűzéseket a módosítások nem befolyásolták, a fejlesztők elsődleges célja egy alacsony szintű hozzáférést és alacsony többletterhelést (overhead) biztosító multiplatform API létrehozása volt, mely sikerrel emelkedhet az elmúlt években egyre nagyobb korlátot jelentő OpenGL fölé. Az API egyik ezt elősegítő újítása a sokmagos processzorok hatékonyabb kihasználása. Például a parancspufferhez már több mag/szál is rendelhető, miközben a parancsok sorrendjéért ezzel párhuzamosan egy másik végrehajtóegység felel. Ez a compute képességekre is jótékony hatással lehet, a grafikus megjelenítéshez szükséges kalkulációkkal párhuzamosan futhatnak általános számítási műveletek.
Mivel a Vulkan az OpenGL mellett egyúttal az OpenGL ES-t is leváltaná, a Khronos lehetőséget biztosít különféle egyedi feature setek alkalmazására, amire az OpenGL esetében nem volt kidolgozott koncepció. Erre elsősorban az egyes, eltérő felhasználási területekre (PC, ultramobil, konzol, beágyazott) tervezett GPU-k közti nagyobb különbségek miatt volt szükség, ugyanis a feature setek bizonyos szintű rugalmasságot biztosítanak, amivel a fejlesztőknek kevesebb kompromisszumot kellett kötniük az egységes keretrendszer megalkotásakor.
A rugalmasságot tovább növeli, hogy a Khronos első körben az egyes rendszereket fejlesztő vállalatok kezébe adja a feature setek kidolgozásának jogát. Androidnál a készítők éltek is a lehetőséggel, a mobilos rendszerhez a Google fejleszti a feature setet. A Microsoft ezzel szemben nem foglalkozik a kérdéssel, ami a saját fejlesztésű DirectX szempontjából nem meglepő. Ennek okán a Windows rendszerekhez a Khronos készíti a feature setet, és ugyanezt fogja megkapni a Linux is, ami átjárhatóság szempontjából pozitív lehet. Ezek kialakítása egyelőre nem történt meg, a Khronos ehhez jelenleg megfelelő mennyiségű visszajelzést vár a fejlesztők részéről. Valószínűsíthető, hogy az asztali rendszerekhez fejlesztett feature set alapját az OpenGL 4.5, az ultramobilos variánsét pedig az OpenGL ES 3.2 adja majd.
Széleskörű támogatottság
A tervezési munkálatok során a támogatottságra is komoly hangsúlyt helyeztek. A fejlesztőcsapat úgy próbálta kialakítani az API-t, hogy a legtöbb OpenGL-t és OpenGL ES-t támogató eszköznek a Vulkan se jelentsen problémát. A Khronos megoldásának egyik nagy előnye, hogy a DirectX 12-vel szemben nem követeli meg a WDDM 2.0 támogatást, ezzel pedig még akár Windows XP alatt is működhet az API, már amennyiben ahhoz a hardver gyártója hajlandó megfelelő meghajtót írni.
Az ultramobil támogatottság kérdése részben már tavaly tisztázódott, amikor a Google bejelentette, hogy az Android megkapja a Vulkan támogatást, sőt a mobilos operációs rendszerben az első helyen fog állni a Khronos modern API-ja. A Google ugyanakkor azt továbbra sem árulta el, hogy pontosan melyik Android verzió tartalmazza majd alapértelmezetten a Vulkant, feltehetőleg az Android N esetében már mindenhol megoldott lesz a támogatás. Ennek ellentmond az Nvidia egyik friss bejegyzése, mely szerint erre kevesebbet kell várni, és hamarosan a Marshmallow is megkapja a szükséges frissítést.
A támogatók közül jelenleg egyetlen nagy cég, az Apple, illetve annak két operációs rendszere marad ki. Bár a vállalat részt vett a Vulkan fejlesztésének első fázisában, később kilépett a munkacsoportból. A döntés nem meglepő, a háttérben nyilvánvalóan a saját fejlesztésű API, a Metal áll, amit az Apple szájíze szerint, (részben) a saját hardvereinek megfelelően készíthetett el. Mindez sajnálatosan keresztülhúzza az Android-iOS, illetve a Windows-OS X párosok egyszerű átjárhatóságát, ezért a fejlesztőknek majd bizonyos esetekben middleware-hez kell nyúlniuk.
Androidos hardverek tekintetében az Imagination, a Qualcomm, az ARM, valamint az Nvidia újabb hardverei biztosíthatnak Vulkan támogatást. Ebbe az Adreno 500-as sorozat, Mali "Midgard", az Imagination PowerVR "Rogue", illetve az Nvidia Kepler, vagy annál újabb mikroarchitektúra tartozik bele. A PC-s hardverek listájába az AMD összes GCN-alapú GPU-ja, az Intel Broadwell (vagy újabb), illetve az Nvidia Kepler (vagy újabb) sorolható be.
Az 1.0-ás API támogatásához szükséges különféle meghajtók terén a rendszer jól áll, a fejlesztők elmondása szerint már legalább 30 driver teljesítette sikerrel a Khronos minőségtesztjét. Androidhoz a Qualcomm és az Nvidia meghajtója is átment a teszteken, Linuxhoz pedig az Imagination, az Intel, illetve az Nvidia is előrukkolt driverekkel, az ARM meghajtói pedig jelenleg tesztelés alatt állnak. Windowshoz egyelőre az AMD és az Nvidia kínál fejlesztői bétákat.
SDK és szoftver is érkezik
A bejelentéssel különféle fejlesztői segédletek is érkeztek, dokumentumok, referenciák, forráskódok, validálók és loaderek. A Vulkan SDK fejlesztését a Valve-támogatott LunarG végzi, mely természetesen Linuxhoz és Windowshoz egyaránt elkészült, illetve hamarosan befut az Androidhoz készült verzió is.
Ezzel párhuzamosan már Vulkan API-t támogató játék is elérhető. A Croteam által fejlesztett The Talos Principle egyelőre csupán béta szinten, elsősorban demonstrációs célzattal támogatja az új API-t, így a teljesítmény közel sem tökéletes. A ComputerBase tesztje ezt alá is támasztja, a Vulkan egyelőre rendre elmarad a DirectX 11 teljesítményétől.
Az OpenGL is marad
A Khronos bejelentésében hangsúlyozta, hogy egyelőre biztosan nem tervezik az OpenGL száműzését. Ennek egyik oka, hogy bár a Vulkan sok tekintetben kedvezőbb, ugyanakkor ennek ára a jóval bonyolultabb programozhatóság, ami nem minden esetben éri meg a plusz erőfeszítést.