Hirdetés

Mostantól OpenCL C kódokkal is etethető Vulkan API

A Codeplay és a Google nyílt forráskódú eszköze egyelőre még prototípus, de rendkívül ígéretes fejlesztés.

A Vulkan API egyik sajátossága volt már az első verzió óta, hogy az egyetlen nyelv, amit elfogadott az a SPIR-V volt. Ez nyilván egy fontos koncepciót valósított meg, ugyanis a Khronos Group már az elején elárulta, hogy a céljuk a magasabb szintű nyelvek szempontjából a szabad választás lehetősége, de persze az elején, illetve még ma is a GLSL nyelv az egyetlen normálisan támogatott forma a Vulkan API-ban. Ez azonban nem marad így örökké, ugyanis mindig is az volt a terv, hogy az OpenCL C nyelvből is fordítható legyen SPIR-V kód. Ez eddig leginkább azért nem valósult meg a Vulkan API-ban, mert valójában nem egy, hanem két SPIR-V verzió van: egy a grafikai és egy a compute API-hoz. Annak tehát nincs túl sok jelentősége, hogy OpenCL API-val már lehetséges OpenCL C nyelvből SPIR-V kódot fordítani, a Vulkan API-n belül ugyanis ennek a kódnak a használata nem lehetséges,  köszönhetően az eltérő specifikációknak.

Hirdetés

A jó hír, hogy a Vulkan API-t a Khronos Group folyamatosan egészíti ki, így korábban például elérhetővé vált a KHR_variable_pointers nevű SPIR-V és Vulkan kiterjesztés, amelyek a pointer értékek hordozhatóságát javítják, így a SPIR-V grafikai verziója közelebb került a compute specifikációkhoz, emellett az előző héten elérhetővé váltak a VK_KHR_16bit_storage és SPV_KHR_16bit_storage kiterjesztések is. Ezek elsődlegesen a Codeplay fejlesztései, és a Google segítségével megvalósított "clspv" nevű projekthez volt rájuk szükség.

A nem túl figyelemfelkeltő "clspv" név egy olyan nyílt forráskódú eszközt rejt, amely lehetővé teszi az OpenCL C nyelv részhalmazának SPIR-V-re történő fordítását, méghozzá úgy, hogy a kapott kódot a Vulkan API-n is lehessen futtatni. A fejlesztés egyelőre prototípus állapotban van, tartalmaz ismert hibákat is, viszont rengeteg kernel fordításával megbirkózik. A rendszer a legújabb LLVM és Clang kódra épít, a fordítás szempontjából pedig először SPIR-re, majd SPIR-V-re fordít.

Hosszabb távon nyilván a cél az lenne, hogy a Vulkan API-hoz írható legyen OpenCL C-ben is shader, amelyet le lehet fordítani SPIR-V-re. Ez azért kritikus fontosságú, mert a Vulkan API a compute nyelv szempontjából a GLSL 4.5-re épít, ami rendkívül túlkoros az elérhető képességek tekintetében, ami pedig korlátozhatja a szoftverfejlesztéseket. A OpenCL C nyelv elérhetővé tétele jelentősen javítana az aktuális helyzeten. A "clspv" az alábbi oldalon érhető el.

Hirdetés

Fotóznál vagy videóznál? Mutatjuk, melyik okostelefon mire való igazán!

PR Vásárlás előtt érdemes megnézni, mit kínálnak az aktuális telefonok, ha igazán ütős képeket vagy profi mozgóképeket szeretnénk készíteni.

Azóta történt

Előzmények