Khronose konsortsium, mis arendab graafikastandardeid,
RTMP protokolli spetsifikatsiooni, mis sisaldas vigu ja ei olnud sisuliselt täielik. Sel ajal hakkasid arendajad meisterdama oma rakendusi selle protokolli järgi, mille tulemusena ilmus server Wowza. 2011. aastal esitas Adobe Wowza vastu kohtuhagi RTMP-ga seotud patentide ebaseadusliku kasutamise tõttu, kuid neli aastat hiljem lahendati konflikt rahumeelselt. , määratlev API, mis võimaldab juurdepääsu GPU graafika- ja arvutusvõimele. Uus spetsifikatsioon sisaldas kahte aastat kogunenud parandusi ja . Uue Vulkan versiooni toetavad draiverid on juba ettevõtte Intel, , ARM, Imagination Technologies ja . Mesa toetas Vulkan 1.2 draivereid (AMD graafikakaardid) ja (Intel). Vulkan 1.2 tuge on rakendatud ka silumisprogrammis , ja valik näidisprojekte .
Peamised :
- shadersi programmeerimiskeel , mille on välja töötanud ettevõte Microsoft DirectX-i jaoks. HLSL-i tugi Vulkanis võimaldab HLSL shaderite kasutamist Vulkan ja DirectX baasil rakendustes, samuti lihtsustab HLSL-i tõlkimist SPIR-V-ks. Shaderite kompileerimiseks soovitatakse kasutada standardset kompilaatorit
, mille avas ettevõte Microsoft 2017. aastal ja mis põhineb LLVM tehnoloogial. Vulkan toetab HLSL-i läbi eraldi backend'i, mis võimaldab HLSL-i tõlkimist shaderite vahepealseks esitamiseks SPIR-V. Rakendus hõlmab mitte ainult kõiki HLSL-i sisseehitatud võimalusi,
, sealhulgas matemaatilisi tüüpe, juhtimisvooge, funktsioone, kogumeid, ressursitüüpe, nimesüsteeme, Shader Model 6.2, struktuure ja meetodeid, vaid võimaldab ka kasutada Vulkanile spetsiifilisi laiendusi, nagu näiteks NVIDIA VKRay. HLSL-i kasutamine Vulkanis on võimaldanud selliste mängude nagu Destiny 2, Red Dead Redemption II, Assassin’s Creed Odyssey ja Tomb Raider töötamise. - , on uuendatud spesifikatsioon , mis määratleb universaalset vaheesitust shenderitena, mida saab rakendada nii graafika kui ka paralleelse arvutamise jaoks.
SPIR-V eeldab shaderite vahepealse väljundi õigeaegset eraldamist, mis võimaldab luua erinevate kõrgema taseme keelte esitlemiseks eraldi esitlejad. Erinevate kõrgema taseme rakenduste põhjal genereeritakse ühtne vahepealne kood, mida saavad kasutada OpenGL, Vulkan ja OpenCL draiverid ilma sisseehitatud shenderit täiendava kompilaatorita.
- Vulkanis on põhi API-sse lisatud 23 laiendust, mis on suurendanud jõudlust, parandanud visuaalset kvaliteeti ja lihtsustanud arendust. Lisatud laiendite seas on:
- (Timeline semaphore), mis ühtlustavad hostiga ja seadmete järjekordade vahelise sünkroniseerimise (võimaldavad kasutada ühte primitiivi kõigil suundadel sünkroniseerimiseks seadme ja hosti vahel, ilma et oleks vaja eraldi primitiive VkFence ja VkSemaphore). Uued semaforid on esitatud monotonselt suurenevas 64-bitises väärtuses, mida saab jälgida ja uuendada mitmetes lõngades.

- Võime kasutada shenderites madala täpsusega numbrilisi tüüpe;
- HLSL-iga ühilduv mäluaadressimise variant;
- Sidumata ressursid (bindless), mis vabastavad shenderite arvulisest piirangust, kasutades süsteemimälu ja GPU mälu ühist virtuaalset ruumi;
- , mis määratleb, kuidas paralleelselt täidetavad lõngad saavad ligipääsu ühiselt kasutatavatele andmetele ja sünkroniseerimisoperatsioonidele;
- aitab deskriptorite paigutuste korduvkasutamisel mitmes shenderis;
- Buferiviidikud.
Lisatud laiendite täielik nimekiri:
- (Timeline semaphore), mis ühtlustavad hostiga ja seadmete järjekordade vahelise sünkroniseerimise (võimaldavad kasutada ühte primitiivi kõigil suundadel sünkroniseerimiseks seadme ja hosti vahel, ilma et oleks vaja eraldi primitiive VkFence ja VkSemaphore). Uued semaforid on esitatud monotonselt suurenevas 64-bitises väärtuses, mida saab jälgida ja uuendada mitmetes lõngades.
- üle 50 uue struktuuri ja 13 funktsiooni;
- On ette valmistatud lühendatud spetsifikatsioonid tüüpiliste sihtplatvormide jaoks, mis lihtsustavad tööd platvormidel, kus kõik laiendused ei ole veel toetatud, ja võimaldavad ilma valikulise aktiveerimiseta saavutada Vulkan API põhifunktsionaalsust.
- On jätkatud tööd projekti nimel tagada ühilduvus teiste graafika API-dega. Näiteks Vulkanis on ettepanekud laienduste kohta, mis võimaldavad OpenGL-i (), OpenCL (, ), OpenGL ES (GLOVE, Angle) ja DirectX-i (, ) tõlgitakse Vulkan API kaudu, samuti, vastupidi, et võimaldada Vulkanit platvormidel, kus pole selle põhi tuge ( ja OpenGL-i ja DirectX-i kohal töötamiseks, ja gfx-rs töötamiseks Metal'i kohal).
Selleks, et parandada ühilduvust DirectX-i ja HLSL-iga, on lisatud laiendused
VK_KHR_host_query_reset, VK_KHR_uniform_buffer_standard_layout, VK_EXT_scalar_block_layou, VK_KHR_separate_stencil_usage, VK_KHR_separate_depth_stencil_layouts, samuti on SPIR-V-is rakendatud HLSL-i spetsiifilised funktsioonid.
Tulevikus plaanitakse laienduste arendamist masinõppe, kiirteki, video kodeerimise ja dekodeerimise, VRS (muutlik säritus) ja Mesh shenderite toetamiseks.
Tuletame meelde, et API Vulkan drive'ide kardinaalne lihtsustamine, GPU käsu genereerimise viimine rakenduse külge, silumise kihtide ühendamise võimalus, API ühtlustamine erinevatele platvormidele ja eelkompilleeritud vahevormi koodi rakendamine GPU poolselt. Kõrge jõudluse ja ettearvatavuse tagamiseks annab Vulkan rakendustele vahendid GPU operatsioonide otseseks juhtimiseks ning sisseehitatud toetuse GPU käsu mitmeüheliseks töötlemiseks, mis minimeerib draiveri kaasnevaid kulusid. Draiveripoolseid funktsioone lihtsustatakse ja muudetakse ettearvatavamaks. Näiteks on mäluhalduse ja veakäitlemise operatsioonid, mis OpenGL'is toimuvad draiveri tasemel, Vulkanis viidud rakenduse tasemele.
Vulkan katab kõik saadaval olevad platvormid ja pakub ühtset API-d lauaarvutitele, mobiilsüsteemidele ja Veebile, võimaldades kasutada ühte üldist API-d erinevate graafikakaartide ja rakendusalade jaoks. Vulkani kihtide arhitektuuri tõttu, mis hõlbustab tööriistade loomist, mis töötavad erinevate GPU-dega, saavad riistvaratootjad kasutada oma arendustes standardseid tööriistu kodeerimise kontrollimiseks, silumiseks ja profilakseerimiseks. Shaderite loomiseks pakutakse uut ülekantavat vahevormi SPIR-V, mis põhineb LLVM-l ja kasutab OpenCL-iga ühiseid põhitehnoloogiaid. Seadmete ja ekraanide haldamiseks pakutakse Vulkanis WSI (Window System Integration) liidest, millel on sarnased funktsioonid EGL-le OpenGL ES-is. WSI toeta on koheselt saadaval Waylandis — kõik rakendused, mis kasutavad Vulkanit, saavad töötada muutmata Wayland serverites. WSI töötlust toetatakse samuti Androidi, X11 (koos DRI3), Windowsi, Tizeni, macOS ja iOS-i jaoks.
Allikas: opennet.ru


