Opcionális funkciók itt is
A Vulkan a DirectX 12-höz hasonlóan számos opcionális funkciót is támogat. Azt tudni kell, hogy a Mantle API alacsonyabb szintű és több lehetőséget kínál, mint a Microsoft API-ja, így az a funkcionalitás, amit az AMD kidolgozott, csak részben jó. Főleg azért, mert ha a Vulkan kötelezővé tenné a Mantle API 1.0-s verziójának összes funkcióját, akkor csak a GCN architektúrára épülő Radeonok lennének képesek támogatni. Ez nyilvánvalóan nem járható út a Khronos Group számára, így számos Mantle API-ban elérhető funkciót opcionálisan támogathatóvá tettek. Ide tartozik az aszinkron compute és aszinkron DMA képessége, illetve részben a bindless bekötési modell is.
A jó hír, hogy a Khronos Group talált járható utakat mindenki számára, így a Mantle 1.0 összes képessége elérhető a Vulkan API-ban. Például az aszinkron compute olyan hardvereket igényel, amelyek parancsprocesszorai képesek több compute parancslistát kezelni, az aszinkron DMA több DMA motort igényel a grafikus vezérlőn belül, míg a bindless bekötési modell esetében arra van szükség, hogy a leírótáblákat direkten a multiprocesszorba töltse be a hardver, de ezek mellett még számos opcionális képesség van, amelyeket a Vulkan API kiterjesztésekhez köt.
Ebből a szempontból a Khronos Group a Mantle 1.0-t alulról egészítette ki, így kidolgoztak egy alternatív bekötési modellt, és ezt azok a hardverek is képesek támogatni, amelyek a leírótáblákat a textúrázó mintavételezőjébe töltik be. Gyakorlatilag ide tartozik minden grafikus vezérlő a GCN architektúrára épülő Radeonokat leszámítva. Úgy működik, hogy a program futtatásának megkezdésekor történik egy ellenőrzés, ami szerint az alkalmazás be fogja sorolni a hardvereket a két bekötési szint egyikére. A teljes funkcionalitású szint lényegében ugyanaz, ami a Mantle API-ban van, míg a korlátozott szintet a piacon lévő összes modernebb hardver képes majd támogatni. A korlátozás egyébként főleg a leírótáblák számára, illetve a pufferformátumok kezelésére, ezen belül is az adatok olvasásának és írásának párhuzamosítására vonatkozik. Ahhoz, hogy ebből a program oldalán ne legyen gond, a fejlesztőknek majd ki kell jelölniük, hogy mely effektek igénylik a teljes funkcionalitású szintet és mely effektek futhatnak a korlátozott szinten.
Nyilván áldozat nélkül nem lehet megoldani az összes hardver tökéletes kezelését, ahogy az a DirectX 12-nek sem megy. Ebben a Vulkan API sem kivétel, és ezért kell számos opcionális funkciót kínálni, de a program futni fog, akkor is, ha nem minden hardveren aktiválható minden effekt. Ebből a szempontból a DirectX 12 és a Vulkan API is nagyszerű munkát végez.
A Vulkan API-hoz egyébként már készül egy gyártófüggetlen debugger is. Utóbbi nyilván nagyon fontos fejlesztőeszköz, és az AMD a Mantle API mellett nem adta át a GPUPerfStudio kiegészítését, vagyis ezt a problémát a Khronos Groupnak kellett megoldania. Megtudtuk, hogy a Vulkan API publikus debuggerét a Valve és a Codeplay szakemberei készítik John Kessenich segítségével.
A Vulkan API jelenleg csak a kiválasztott fejlesztőknek érhető el, de ez gyorsan meg fog változni, így hamarosan bárki megkezdheti vele a munkát. Emellett az AMD még márciusban kiad egy 450 oldalas programozói segédletet, ami megkönnyíti majd az alacsony szintű hardverelérést biztosító API-khoz a munkát. Ez a könyv elsődlegesen a Mantle API-hoz készült, de a kiemelten sok hasonlóság miatt a Khronos Group nagyon ajánlja majd az elolvasását a Vulkan API-ban gondolkodó fejlesztőknek is. Annál is inkább, mert az egyetemeken oktatott, grafikus API-kkal kapcsolatos tantárgyakban átadott tudás nem elegendő az alacsony szintű hardverelérés mellett, ezek a rendszerek ugyanis teljesen máshogy működnek, mint a tradicionális API-k, tehát másképp is kell rájuk programozni.
A jelenlegi információk szerint a gyártók nagyon érdeklődnek a Vulkan API iránt. Az AMD nyilván adott volt, de az NVIDIA, az ARM, az Imagination és a Vivante is bejelentette már a készülő támogatást. Mindemellett számos professzionális szoftvereket fejlesztő cég is közölte, hogy Vulkan API-ra váltanak az OpenGL-ről.
A Khronos Group a hivatalos bejelentés mellett elmondta, hogy az OpenGL és az OpenGL ES API-k is fejlődnek tovább, így a Vulkan nem ezek leváltója, hanem ezek kiegészítője lesz.
Abu85