Vulkan 1.4.325 – Új kiterjesztés: típus nélküli mutatók a shaderekben

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

kami911 képe

A Vulkan 1.4.325 verzió pénteken jelent meg, és egy fontos újdonságot hozott: a VK_KHR_shader_untyped_pointers kiterjesztést, amely lehetővé teszi a típus nélküli mutatók (untyped pointers) használatát a shaderekben. A kiterjesztés a SPIR-V SPV_KHR_untyped_pointers bővítményre épül, és alternatívát kínál az eddigi szigorúan típushoz kötött mutatókkal szemben. A típus nélküli mutatók lényege, hogy a shader-kód átértelmezheti (reinterpretálhatja) a memóriában tárolt adatokat és atomi műveleteket anélkül, hogy a változó deklarált adattípusához kellene ragaszkodnia, és mindezt extra konverziós utasítások nélkül.

Ez többek között:

  • Hatékonyabbá teszi a magas szintű nyelvek sablonos (templated) betöltési/mentési műveleteinek fordítását.
  • Egyszerűsíti azon shaderek írását, amelyek támogatják bizonyos műveleteket, de nem rendelkeznek közvetlen tárolási támogatással kisebb adattípusokra (például 16 bites lebegőpontos típusokra).

Fejlesztői együttműködés

A kiterjesztés fejlesztésében több iparági szereplő vett részt, köztük a Google, az Arm, a LunarG és az AMD mérnökei. A SPIR-V regiszter hivatalos leírása kiemeli, hogy a típus nélküli mutatók hasonló rugalmasságot nyújtanak, mint a magas szintű nyelvekben alkalmazott pointer casting technika, vagyis a mutatók típusának futásidőben történő újraértelmezése.
Például lehetőség nyílik lebegőpontos vektor betöltésére egy olyan változóból, amely eredetileg egész számok tömbjeként lett deklarálva.

Illesztőprogram-támogatás

A kiadás után azonnal megjelent a támogatás a Mesa NVK (NVIDIA) és ANV (Intel) illesztőprogramokban. A RADV (AMD) meghajtóhoz szükséges merge request még függőben van, de várhatóan napokon belül elérhető lesz.

A Vulkan 1.4.325 frissítés kisebb hibajavításokat is tartalmaz, amelyek a specifikáció pontosítását szolgálják, de a legnagyobb figyelmet egyértelműen az új típus nélküli mutatókat lehetővé tevő kiterjesztés kapta.