A Khronos Szövetség, amely grafikai szabványok fejlesztésével foglalkozik,
a specifikációt , amely meghatározza az API-t a GPU grafikai és számítási lehetőségeihez való hozzáféréshez. Az új specifikáció két évnyi javítást egyesít. . Az új Vulkan verziót támogató driverek már az Intel cégtől, , ARM, Imagination Technologies és . A Mesa Vulkan 1.2 támogatása elérhető a (AMD kártyák) és (Intel) driverek számára. A Vulkan 1.2 támogatását a , és a .
Fő :
- a shader programozási nyelv alkalmazásához megfelelő állapotba, , amelyet a Microsoft fejlesztett ki a DirectX-hez. Az HLSL támogatása a Vulkanban lehetővé teszi, hogy ugyanazokat az HLSL shadereket használják Vulkanra és DirectX-re épülő alkalmazásokban, illetve megkönnyíti az HLSL SPIR-V-ra való fordítását. A shaderek fordításához a Microsoft által 2017-ben nyilvánosságra hozott, LLVM technológiára épülő
fordítót ajánljuk. A Vulkan támogatása külön backend-en keresztül valósul meg, amely lehetővé teszi az HLSL SPIR-V shader köztes ábrázolásra való fordítását. A megvalósítás nemcsak az
HLSL beépített lehetőségeit öleli fel, beleértve a matematikai típusokat, vezérlési áramlásokat, funkciókat, halmazokat, erőforrástípusokat, névtereket, Shader Model 6.2-t, struktúrákat és metódusokat, hanem lehetővé teszi a Vulkan-specifikus kiterjesztések, mint például az NVIDIA VKRay alkalmazását is. A Vulkan fölötti HLSL módjában sikerült működésre bírni olyan játékokat, mint a Destiny 2, Red Dead Redemption II, Assassin’s Creed Odyssey és Tomb Raider. - Frissítve lett a , amely meghatározza az összes platformra vonatkozó köztes shader ábrázolást, amely grafikai és párhuzamos számításokra egyaránt alkalmazható.
A SPIR-V megköveteli a shaderek köztes reprezentációba való lefordításához külön fázis kialakítását, amely lehetővé teszi különböző magas szintű nyelvekhez front-end-ek létrehozását. Különböző magas szintű megvalósítások alapján egy egységes köztes kód generálódik, amelyet az OpenGL, Vulkan és OpenCL driverek tudnak használni beépített shader fordító alkalmazása nélkül.
- A Vulkan alap API-jába 23 kiterjesztés került be, amelyek javították a teljesítményt, növelték a vizualizáció minőségét és egyszerűsítették a fejlesztést. A hozzáadott kiterjesztések között szerepel:
- (Timeline semaphore), egységes szinkronizációs megoldások a host és a device queue-k között (egyetlen primitív használatát teszi lehetővé a device és host közti multidirekcionális szinkronizációhoz, anélkül, hogy külön primitíveket (VkFence és VkSemaphore) kellene alkalmazni). Az új szemaforok monoton növekvő 64 bites értékkel vannak megjelenítve, amelyet több szálban is nyomon követhetünk és frissíthetünk.

- Lehetőség számok csökkentett pontosságú típusaival való használatra a shader-ekben;
- HLSL kompatibilis memóriaelrendezés variáns;
- Nem kapcsolódó erőforrások (bindless), amelyek megszüntetik a shader-ek számára elérhető erőforrások számának korlátait a rendszer memória és a GPU memória közös virtuális tér használatával;
- , amely meghatározza, hogyan férhetnek hozzá a párhuzamosan végrehajtott szálak a közösen használt adatokhoz és szinkronizációs műveletekhez;
- a leírók újrahasználatéért több shader-en belül;
- Bútorreferenciák.
Teljes lista az újonnan hozzáadott kiterjesztésekről:
- (Timeline semaphore), egységes szinkronizációs megoldások a host és a device queue-k között (egyetlen primitív használatát teszi lehetővé a device és host közti multidirekcionális szinkronizációhoz, anélkül, hogy külön primitíveket (VkFence és VkSemaphore) kellene alkalmazni). Az új szemaforok monoton növekvő 64 bites értékkel vannak megjelenítve, amelyet több szálban is nyomon követhetünk és frissíthetünk.
- több mint 50 új struktúra és 13 funkció;
- Rövidített specifikációs verziók készültek a tipikus célplatformokra, amelyek megkönnyítik a munkát olyan platformokon, ahol még nem támogatják az összes kiterjesztést, és lehetővé teszik az API Vulkan alapvető funkcióinak szelektív aktiválásának elkerülését.
- Folyamatosan dolgoznak a más grafikus API-kkal való hordozhatóság biztosításán. Például a Vulkan-ban javasolt kiterjesztések lehetővé teszik az OpenGL (), OpenCL (, ), OpenGL ES (GLOVE, Angle) és DirectX (, ) tranzitálását a Vulkan API-n keresztül, valamint fordítva, lehetővé téve a Vulkan működését olyan platformokon, ahol nem támogatják natívan ( és OpenGL és DirectX felett működve, és gfx-rs a Metal felett való működéshez.
A DirectX és HLSL-jel való kompatibilitás javítása érdekében kiterjesztések kerültek hozzáadásra:
VK_KHR_host_query_reset, VK_KHR_uniform_buffer_standard_layout, VK_EXT_scalar_block_layout, VK_KHR_separate_stencil_usage, VK_KHR_separate_depth_stencil_layouts, valamint a SPIR-V-hez HLSL-specifikus funkciók kerültek implementálásra.
A jövőbeli tervek között szerepel a gépi tanulás, a sugárkövetés, a videókódolás és -dekódolás, a VRS (változó arányú árnyékolás) és a Mesh-árnyékolók támogatásának fejlesztése.
Emlékeztetünk, hogy a Vulkan API alapvető egyszerűsítést hoz a meghajtókban, a GPU parancsgenerálás áthelyezésével az alkalmazás oldalára, a hibakeresési rétegek csatlakoztatásának lehetőségével, az API-k egységesítésével különböző platformokhoz, és a GPU-n történő végrehajtáshoz használt előre lefordított köztes kód alkalmazásával. A nagy teljesítmény és előrejelezhetőség biztosítása érdekében a Vulkan közvetlen irányítást biztosít a GPU műveletek felett a helyi szálkezelés támogatásával, ami minimalizálja a meghajtó által bevezetett költségeket, míg a meghajtónál megvalósított funkciók jelentősen egyszerűsödnek és előrejelezhetőbbé válnak. Például olyan műveletek, mint a memóriakezelés és a hibakezelés, amelyeket az OpenGL a meghajtó oldalán valósít meg, a Vulkanban az alkalmazás szintjére kerülnek.
A Vulkan minden elérhető platformot lefed, és egységes API-t biztosít asztali, mobil rendszerek és Web számára, lehetővé téve egy közös API használatát különböző grafikus processzorok és alkalmazási területek esetén. A Vulkan több rétegű architektúrájának köszönhetően, amely lehetővé teszi olyan eszközök létrehozását, amelyek bármilyen GPU-val dolgoznak, a hardvergyártók szabványos eszközöket alkalmazhatnak a kód ellenőrzésére, hibakeresésére és profilozására a fejlesztés során. Az árnyékolók létrehozásához új hordozható köztes képviselő, az SPIR-V, amely az LLVM alapjain működik, és közös technológiákat használ az OpenCL-lel. Az eszközök és képernyők kezelésére a Vulkan WSI (Ablak Rendszer Integráció) interfészt ajánlja, amely hasonló feladatokat lát el, mint az EGL az OpenGL ES-ben. A WSI támogatása alapértelmezés szerint elérhető a Waylandben - minden, Vulkan-t használó alkalmazás futtatható a módosítatlan Wayland szerverek környezetében. Az Android, X11 (c DRI3), Windows, Tizen, macOS és iOS számára is biztosított a WSI-n keresztüli működés.
Forrás: opennet.ru


