nemrég Khronos bejelentette a Vulkan 1.2 specifikáció új verziójának kiadását, ezt definiálják API a GPU grafikus és számítási képességeinek eléréséhez. A két év alatt felhalmozott javításokat és kiterjesztéseket beépítették az új specifikációba.
Vulkán figyelemre méltó a járművezetők drasztikus egyszerűsítése miatt, hozza a GPU parancsgenerálást az alkalmazás oldalára, a hibakeresési rétegek összekapcsolásának képességét, unify API több platformra és egy előre lefordított középkód reprezentációt használjon a GPU oldalán történő végrehajtáshoz.
A Vulkan 1.2 fő újdonságai
Ez kitűnika HLSL shader programozási nyelv megvalósítása a Microsoft fejlesztette ki a DirectX-hez készen áll az általános használatra (A Vulkanban található HLSL támogatás csak a HLSL árnyékolók használatát teszi lehetővé a Vulkan és DirectX alapú alkalmazásokban, és egyszerűsíti a HLSL-ről a SPIR-V-re történő fordítást is.)
Javasoljuk, hogy a szokásos DXC fordítót használja árnyékolók fordításához, amelyet a Microsoft 2017-ben nyitott meg és az LLVM technológiára épül. A Vulkan támogatás külön háttérprogramon keresztül valósul meg, amely lehetővé teszi a HLSL lefordítását a SPIR-V árnyékolók köztes ábrázolásává.
A megvalósítás nemcsak a HLSL összes beépített szolgáltatását lefedi, beleértve a matematikai típusokat, a vezérlési folyamatokat, a függvényeket, a készleteket, az erőforrás típusokat, a névtereket, a Shader Model 6.2-t, a struktúrákat és a módszereket, hanem lehetővé teszi a Vulkan speciális kiterjesztéseinek használatát, mint pl. VKRay az NVRIA-tól.
HLSL módban a Vulkan tetején, lehetőség nyílt olyan játékok munkájának megszervezésére, mint a Destiny 2, a Red Dead Redemption II, az Assassin's Creed Odyssey és a Tomb Raider.
Szintén meg kell jegyezni, hogy a SPIR-V 1.5 specifikációt frissítették, amely meghatározza az árnyékolók univerzális köztes reprezentációját minden platformon, amely grafikára és párhuzamosan egyaránt használható.
A Vulkan core API 23 kiterjesztést tartalmaz a termelékenység növelése érdekében, javítja a kijelző minőségét és egyszerűsíti a fejlesztést.
Tőlük találhatunk Szemafor idővonal: amelyek egyesítik a szinkronizációt a gazda és az eszköz várakozási soraival (lehetővé teszik az eszköz és a gazda közötti minden irányú szinkronizálás primitívjének használatát külön VkFence és VkSemaphore primitívek használata nélkül).
Ezeket egy monoton növekvő 64 bites érték képviseli, amely több szálon keresztül követhető és frissíthető.
A specifikáció rövidebb változatai elkészültek a tipikus célplatformokra, amely leegyszerűsíti az olyan platformokon végzett munkát, amelyeknél még nem minden bővítmény támogatott, és lehetővé teszi a Vulkan API alapvető képességeinek szelektív aktiválását.
A többi változás közül amelyek kiemelkednek:
- Folytatódott a munka egy grafikus API-k hordozhatósági projektjén.
- Számos típusok használata árnyékolókban csökkentett pontossággal
- HLSL-kompatibilis memóriaelrendezési lehetőség
- Kötelezettség nélküli (nem kötött) erőforrások, amelyek a rendszermemória és a GPU-memória megosztott virtuális terének használatával megszüntetik az árnyékolók számára rendelkezésre álló erőforrások korlátozását.
- Hivatalos memóriamodell, amely meghatározza, hogy a párhuzamos szálak hogyan férhetnek hozzá a megosztott adatokhoz és szinkronizálási műveletekhez
- Indexelők indexelése a tervleírók újrafelhasználására több árnyékolóban;
- Pufferkötések.
- A bővítmények teljes listája hozzáadva
- Több mint 50 új struktúra és 13 funkció került hozzá
Végül a jövőre vonatkozó tervek közül kiemelkedik a gépi tanulás, a sugárkövetés, a videó kódolás és dekódolás kiterjesztéseinek fejlesztése, a VRS (változó sebességű árnyékolás) és a hálós árnyékolók támogatása.
Az Intel, az AMD, az ARM, az Imagination Technologies és az NVIDIA már kiadta az illesztőprogramokat amelyek támogatják a Vulkan új verzióját.
Míg az esete Mesa (ingyenes járművezetők), se a Vulkan 1.2 támogatást kínálja a RADV illesztőprogramok számára (AMD kártyák) és ANV illesztőprogramok (Intel). A Vulkan 1.2 támogatás a RenderDoc 1.6 hibakeresőben, a LunarG Vulkan SDK-ban és a Vulkan-Minták együttesében is megvalósításra kerül.