Khronos konsortsium, mis tegeleb graafika standardite arendamisega,
spetsifikatsiooni , määratlev API graafika- ja arvutusvõimekuse juurdepääsuks GPU-le. Uus spetsifikatsioon sisaldas kahe aastaga kogunenud parandusi ja . Uue versiooni Vulkanit toetavad draiverid on juba ettevõtted Intel, , ARM, Imagination Technologies ja . Mesa draiverite toetamine Vulkan 1.2 jaoks on pakkuda (AMD kaardid) ja (Intel). Vulkan 1.2 tugi on ellu viidud ka debuggeris , ja näidisprogrammide kogumid .
Peamised :
- jõudis laialdase kasutamise ettevalmistusse šaderite programmeerimiskeel , mille on välja töötanud Microsoft DirectX-i jaoks. HLSL-i tugi Vulkanis võimaldab HLSL-šadereid kasutada rakendustes, mis põhinevad Vulkanil ja DirectX-il, ning lihtsustab HLSL-i tõlkimist SPIR-V-ks. Šaderite kompileerimiseks on soovitatav kasutada standardset kompilaatorit
, mille Microsoft avas 2017. aastal ja mis põhineb LLVM-tehnoloogial. Vulkanit toetatakse eraldi backend'i kaudu, mis võimaldab HLSL-i tõlkida šaderite vahe-esitusele SPIR-V. Teostus katab mitte ainult kõik HLSL-i sisseehitatud võimalused, sealhulgas matemaatilised tüübid, juhtimisvood, funktsioonid, kogud, ressursitüübid, nimed, Shader Model 6.2, struktuurid ja meetodid, vaid võimaldab ka kasutada Vulcani spetsiifilisi laiendusi, nagu NVIDIA VKRay. HLSL-i režiimis Vulkaniga on õnnestunud korraldada selliste mängude nagu Destiny 2, Red Dead Redemption II, Assassin's Creed Odyssey ja Tomb Raider tööd.
Specifikatsioon on uuendatud - SPIR-V 1.5 SPIR-V hõlmab šaderite vahe-esitusele tõlkimise eraldi faasi, mis võimaldab luua erinevatele kõrgetasemelistele keeledele front-end’e. Erinevate kõrgetasemeliste teostuste alusel genereeritakse üks vahe-kood, mida saavad kasutada OpenGL, Vulkan ja OpenCL draiverid ilma sisseehitatud šaderite kompilaatorita.
Põhise API-s Vulkan on lisatud 23 laiendust, mis on võimaldanud suurendada jõudlust, parandada visuaalset kvaliteeti ja lihtsustada arendust. Lisatud laienduste seas on:
- Kronoloogilised semaforid
- (Timeline semaphore), hostiga ja seadmete järjekordade ühtlustamine (võimaldab kasutada ühte primitiivi seadme ja hosti vahelise universaalse süsynkroneerimise jaoks, ilma et oleks vaja eraldi primitiive VkFence ja VkSemaphore). Uued semaforid on esindatud monotoonselt suureneva 64-bitise väärtusega, mida saab jälgida ja mitmes lõimes uuendada.

- Võimalus kasutada shaderites madala täpsusega numbrilisi tüüpe;
- HLSL-i ühilduv mälu paigutuse variant;
- Sidumata ressursid (bindless), mis eemaldavad shaderite jaoks saadaval olevate ressursside arvu piiri, kasutades süsteemimälu ja GPU mälu ühiseid virtuaalseid ruume;
- , määratledes, kuidas samaaegselt töötavad lõimud saavad juurdepääsu jagatud andmetele ja süsynkroneerimise operatsioonidele;
- deskriptorite paigutuste uuesti kasutamiseks mitmes shaderis;
- Puhversuviidud.
Täielik nimekiri lisatud laiendustest:
- (Timeline semaphore), hostiga ja seadmete järjekordade ühtlustamine (võimaldab kasutada ühte primitiivi seadme ja hosti vahelise universaalse süsynkroneerimise jaoks, ilma et oleks vaja eraldi primitiive VkFence ja VkSemaphore). Uued semaforid on esindatud monotoonselt suureneva 64-bitise väärtusega, mida saab jälgida ja mitmes lõimes uuendada.
- üle 50 uue struktuuri ja 13 funktsiooni;
- Valmistatud lühendatud spetsiifikad tüüpiliste sihtplatvormide jaoks, mis lihtsustavad töötamist platvormidel, mille jaoks ei ole veel toetatud kõiki laiendusi, võimaldades toimida ilma põhifunktsioonide valikulise aktiveerimiseta Vulkan API-s.
- Tööd jätkatakse projekti üle, et tagada ühilduvus teiste graafikate API-dega. Näiteks on Vulkanis pakutud laiendusi, mis võimaldavad tõlkida OpenGL (), OpenCL (, ), OpenGL ES (GLOVE, Angle) ja DirectX (, ) läbi Vulkan API, samuti vastupidiselt, et tagada Vulkani töötamine platvormidel, millel puudub tema kohene tugi ( ja OpenGL-i ja DirectX-i peal töötamiseks, ja gfx-rs Metalil töötamiseks).
DirektX-i ja HLSL-i ühilduvuse parandamiseks on lisatud laiendusi
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, ning SPIR-V-s on rakendatud HLSL-i spetsiifilisi võimalusi.
Tulevikus kavatsetakse arendada masinõppe, kiirte jälgimise, video kodeerimise ja dekodeerimise laiendusi, VRS (muutuvate kiirusetöötluste) ja Mesh-šedereid.
Meenutame, et Vulkan API tähendab juurdepääsu lihtsustamist, GPU käskude genereerimise viimist rakenduse külge, võimalust ühenduda silumise kihtidega, API ühtlustamist erinevatele platvormidele ja eelkompileeritud vahevormi koodi kasutamist GPU poolel. Vulkan pakub rakendustele vahendeid GPU operatsioonide otseseks haldamiseks ja sisseehitatud toimetulekud mitmeharulise GPU käsu töötlemiseks, mis minimeerib draiverite poolt tekitatud kulusid. Draiveri tasemel elluviidud funktsioonid muutuvad oluliselt lihtsamaks ja ennustatavamaks. Näiteks operatsioonid, nagu mälu haldamine ja vigade töötlemine, mis avanevad OpenGL-is draiveri tasemel, on Vulkanis rakenduse tasemele viidud.
Vulkan katab kõik saadaval olevad platvormid ja pakub ühtset API-d lauaarvuti-, mobiilsüsteemide ja Veebi jaoks, võimaldades kasutada ühte üldist API-d erinevate graafikaprotsessorite ja rakendusalade jaoks. Vulkani mitmekihiline arhitektuur, mis eeldab tööriistade loomist, mis töötavad kõigi GPU-dega, võimaldab riistvaratootjatel kasutada arendamisel standardseid tööriistu koodi kontrollimiseks, silumiseks ja profileerimiseks. Shaderite loomine põhineb uuel ülekantaval vaheformenel SPIR-V, mis on loodud LLVM-i baasil ja kasutab OpenCL-iga jagatud põhitehnoloogiaid. Seadmete ja ekraanide haldamiseks pakub Vulkan WSI (Akna Süsteemi Integreerimise) liidest, mis lahendab umbes samu ülesandeid nagu EGL OpenGL ES-is. WSI tugi on vaikimisi saadaval Waylandis — kõik Vulkanit kasutavad rakendused saavad töötada muutumatutes Waylandi serverikeskkondades. WSI kaudu tööd hõlbustatakse ka Androidi, X11 (DRI3 koos), Windowsi, Tizenit, macOS-i ja iOS-i jaoks.
Allikas: opennet.ru


