Kaks aastat töötanud konsortsium Khronos, mis tegeleb graafikastandardite arendamisega, avaldas spetsifikatsiooni Vulkan 1.3, mis määratleb API juurdepääsuks GPU graafika- ja arvutusvõimele. Uus spetsifikatsioon hõlmab kahe aasta jooksul kogunenud parandusi ja täiendusi. Märgitakse, et Vulkan 1.3 spetsifikatsiooni nõudmised on loodud OpenGL ES 3.1 klassi graafikaseadmete jaoks, mis võimaldab toetada uut graafilist API-d kõigis GPU-des, mis toetavad Vulkan 1.2. Vulkan SDK tööriistakomplekti plaanitakse avaldada veebruari keskel. Peale põhi-spetsifikatsiooni pakutakse ka täiendavaid laiendusi keskmise ja kõrge klassi mobiilsete ja lauaarvutite jaoks, mille toe rakendamine toimub redaktsiooni „Vulkan Milestone“ raames.
Samaajalselt esitatakse plaan uue spetsifikatsiooni ja täiendavate laienduste toetamiseks graafikakaartides ja seadme draivides. Vulkan 1.3 toega tooted on valmis väljastamiseks ettevõtetelt Intel, AMD, ARM ja NVIDIA. Näiteks on AMD teatanud peatsest Vulkan 1.3 toe pakkumisest AMD Radeon RX Vega graafikakaartide seerias ning kõikides AMD RDNA arhitektuuril põhinevates kaartides. NVIDIA plaanib avaldada Vulkan 1.3 toetavad draiverid Linuxile ja Windowsile. ARM lisab Vulkan 1.3 toe Mali GPU-le.
Põhilised uuendused:
- On rakendatud lihtsustatud renderdusprotsesside toetust (Streamlining Render Passes, VK_KHR_dynamic_rendering), mis võimaldavad alustada renderdamist ilma renderdusprotsesside ja framebufferi objektide loomiseta.
- On lisatud uusi laiendusi graafikapipeline'i (pipeline) kompileerimise haldamise lihtsustamiseks, mis on toimingute kogum, mis muudab vektorgraafilised primitiivid ja tekstuurid piksli esituseks.
- VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 — lisavad täiendavaid dünaamilisi olekuid, et vähendada kompileeritavate ja kinnitatud olekuobjektide arvu.
- VK_EXT_pipeline_creation_cache_control — pakub täiustatud tööriistu torude kompileerimise kontrollimiseks ja ajastamiseks.
- VK_EXT_pipeline_creation_feedback — annab teavet kompileeritud torude kohta, et lihtsustada profiilimisi ja tõrkeotsingut.
- Rida võimalusi on muudetud valikulistest kohustuslikeks. Näiteks on nüüd kohustuslik rakendada pöördfaili viiteid (VK_KHR_buffer_device_address) ja Vulkan'i mälu mudelit, mis määratleb, kuidas paralleelselt töötavad lõimed saavad ligipääsu jagatud andmetele ja sünkroniseerimise operatsioonidele.
- On pakutud täpset alagruppide juhtimise tööriista (VK_EXT_subgroup_size_control), mille abil tootjad saavad pakkuda mitme alagrupi suuruse toetust ning arendajad saavad valida vajaliku suuruse.
- On antud VK_KHR_shader_integer_dot_product laiendus, mida saab kasutada masinõppe raamistikute töö optimeerimiseks, tänu skalaarkorrutuse operatsioonide riistvaras kiirendamisele.
- Kokku sisaldab see 23 uut laiendust:
- VK_KHR_copy_commands2
- VK_KHR_dynamic_rendering
- VK_KHR_format_feature_flags2
- VK_KHR_maintenance4
- VK_KHR_shader_integer_dot_product
- VK_KHR_shader_non_semantic_info
- VK_KHR_shader_terminate_invocation
- VK_KHR_synchronization2
- VK_KHR_zero_initialize_workgroup_memory
- VK_EXT_4444_formats
- VK_EXT_extended_dynamic_state
- VK_EXT_extended_dynamic_state2
- VK_EXT_image_robustness
- VK_EXT_inline_uniform_block
- VK_EXT_pipeline_creation_cache_control
- VK_EXT_pipeline_creation_feedback
- VK_EXT_private_data
- VK_EXT_shader_demote_to_helper_invocation
- VK_EXT_subgroup_size_control
- VK_EXT_texel_buffer_alignment
- VK_EXT_texture_compression_astc_hdr
- VK_EXT_tooling_info
- VK_EXT_ycbcr_2plane_444_formats
- Lisatud uus objektide tüüp VkPrivateDataSlot. Rakendatud 37 uut käsku ja üle 60 struktuuri.
- Uuendatud SPIR-V 1.6 spetsifikatsioon, mis määratleb universaalse, platvormideülese vahepealse esitluse shaderite jaoks, mis saab kasutada nii graafikas kui ka paralleelsetes arvutustes. SPIR-V eeldab shaderite kompileerimise eraldi etappi vahepealsesse esitusesse, mis võimaldab luua erinevale kõrgtaseme keelele frontende. Erinevate kõrgtaseme rakenduste põhjal genereeritakse eraldi ühtne vaheline kood, mida saavad kasutada OpenGL, Vulkan ja OpenCL draiverid ilma sisseehitatud shaderi kompilaatorit kasutamata.
- Pakutud välja ühilduvuse profiilide kontseptsioon. Esimese ettevõttena on Google valmistanud ette baselai profili Android platvormile, mis lihtsustab seadmes Vulkan'i laiendatud võimaluste toe taseme määratlemist, mis ületab Vulkan 1.0 spetsifikatsiooni. Enamiku seadmete puhul saab profiili tuge pakkuda ilma OTA-uuenduste installimiseta.
Tulet meelde, et Vulkan API paistab silma draiverite kardinaalse lihtsustamisega, GPU käsu genereerimise viimisega rakenduse küljele, võimalusega ühendada silte, API ühtlustamisega erinevatele platvormidele ning eelkompileeritud vahepealse koodi esitusvormi kasutamisega GPU poolsel täitmisel. Kõrgete jõudluse ja ennustatavuse tagamiseks pakub Vulkan rakendustele vahendeid GPU operatsioonide otseseks juhtimiseks ning sisseehitatud toe mitme lõime töötlemise GPU käskudele, mis vähendab draiveri poolt kaasnevaid kulusid ning draiveri poolel rakendatavad funktsioonid lihtsustuvad ja muutuvad ennustatavamaks. Näiteks sellised toimingud nagu mälu haldamine ja veahaldus, mis on OpenGL-is rakendatud draiveri poolel, on Vulkanis viidud rakenduse tasemele.
Vulkan katab kõikidel saadaval platvormidel, pakkudes ühtset API-d lauaarvutite, mobiilsüsteemide ja veebiplatvormide jaoks. See võimaldab kasutada ühte ühist API-d erinevate graafikakaartide ja rakenduste jaoks. Vulkani mitmekihiline arhitektuur, mis hõlmab seadmete jaoks tööriistade loomist, mis töötavad erinevate GPU-dega, võimaldab riistvaratootjatel kasutada arendamisel kohandatud tööriistu koodi kontrollimiseks, silumiseks ja profiliseerimiseks. Shaderite loomine toimub uue ülekantava vaheformaadi SPIR-V kaudu, mis toetub LLVM-ile ja kasutab OpenCL-iga ühist tehnoloogiat. Seadmete ja ekraanide haldamiseks pakub Vulkan WSI (Window System Integration) liidest, mis lahendab ligikaudu sama ülesande nagu EGL OpenGL ES-is. WSI tugi on välja pakutud Waylandis — kõik Vulkanit kasutavad rakendused saavad töötada muutmata keskkonnas. serverite Wayland. WSI kaudu töötamise võimalus on samuti tagatud Androidi, X11 (koos DRI3), Windowsi, Tizeni, macOS-i ja iOS-i jaoks.
Allikas: opennet.ru
