Avaldatud graafikastandard Vulkan 1.3

Pärast kaheaastast tööd on graafikastandardite konsortsium Khronos avaldanud Vulkan 1.3 spetsifikatsiooni, mis määratleb API GPU-de graafika- ja arvutusvõimalustele juurdepääsuks. Uus spetsifikatsioon sisaldab kahe aasta jooksul kogutud parandusi ja laiendusi. Märgitakse, et Vulkan 1.3 spetsifikatsiooni nõuded on mõeldud OpenGL ES 3.1 klassi graafikaseadmetele, mis tagab uue graafika API toe kõigis Vulkan 1.2 toetavates GPU-des. Vulkan SDK tööriistad on kavas avaldada veebruari keskel. Lisaks põhispetsifikatsioonile on kavas pakkuda kesk- ja tipptasemel mobiil- ja lauaarvutitele mõeldud lisalaiendusi, mida hakatakse toetama “Vulkan Milestone” väljaande raames.

Samal ajal tutvustatakse plaani uue spetsifikatsiooni ja täiendavate laienduste toe juurutamiseks graafikakaartides ja seadme draiverites. Intel, AMD, ARM ja NVIDIA valmistuvad Vulkan 1.3 toetavate toodete väljalaskmiseks. Näiteks teatas AMD, et hakkab peagi toetama Vulkan 1.3 AMD Radeon RX Vega graafikakaartide seerias, aga ka kõigis AMD RDNA arhitektuuril põhinevates kaartides. NVIDIA valmistub avaldama draivereid, mis toetavad Vulkan 1.3 Linuxi ja Windowsi jaoks. ARM lisab Mali GPU-dele toe Vulkan 1.3-le.

Peamised uuendused:

  • Rakendatud on lihtsustatud renderduskäikude tugi (Streamlining Render Passes, VK_KHR_dynamic_rendering), mis võimaldab teil alustada renderdamist ilma renderduskäike ja kaadripuhvri objekte loomata.
  • Graafikakonveieri kompileerimise (konveieri, toimingute komplekt, mis muudab vektorgraafika primitiivid ja tekstuurid pikslite esitusteks) haldamise lihtsustamiseks on lisatud uusi laiendusi.
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 – lisage täiendavaid dünaamilisi olekuid, et vähendada kompileeritud ja lisatud olekuobjektide arvu.
    • VK_EXT_pipeline_creation_cache_control – pakub täpsemaid juhtelemente selle kohta, millal ja kuidas torujuhtmeid kompileeritakse.
    • VK_EXT_pipeline_creation_feedback – annab teavet kompileeritud torujuhtmete kohta, et hõlbustada profileerimist ja silumist.
  • Mitmed funktsioonid on valikulisest üle viidud kohustuslikuks. Näiteks on nüüd kohustuslikud puhvrite viidete (VK_KHR_buffer_device_address) ja Vulkani mälumudeli rakendamine, mis määrab, kuidas samaaegsed lõimed pääsevad juurde jagatud andmetele ja sünkroonimistoimingutele.
  • Pakutakse täpset alamrühma juhtimist (VK_EXT_subgroup_size_control), et müüjad saaksid pakkuda tuge mitme alamrühma suuruse jaoks ja arendajad saavad valida vajaliku suuruse.
  • Pakutakse laiendust VK_KHR_shader_integer_dot_product, mida saab kasutada masinõppe raamistike jõudluse optimeerimiseks tänu punktitoote toimingute riistvaralisele kiirendusele.
  • Kokku on kaasatud 23 uut laiendust:
    • VK_KHR_copy_commands2
    • VK_KHR_dünaamiline_renderdamine
    • VK_KHR_format_feature_flags2
    • VK_KHR_hooldus4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_sünkroonimine2
    • VK_KHR_null_initialize_workgroup_memory
    • VK_EXT_4444_formaadid
    • VK_EXT_laiendatud_dünaamiline_olek
    • VK_EXT_laiendatud_dünaamiline_olek2
    • VK_EXT_image_robustness
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_privaatsed andmed
    • VK_EXT_shader_demote_to_helper_kutsumine
    • VK_EXT_subgroup_size_control
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tööriistade_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Lisati uus objektitüüp VkPrivateDataSlot. Rakendati 37 uut käsku ja enam kui 60 struktuuri.
  • SPIR-V 1.6 spetsifikatsiooni on värskendatud, et määratleda vahepealne varjundi esitus, mis on universaalne kõikidele platvormidele ja mida saab kasutada nii graafika kui ka paralleelse andmetöötluse jaoks. SPIR-V hõlmab eraldi varjundi kompileerimise faasi eraldamist vahepealseks esituseks, mis võimaldab luua erinevate kõrgetasemeliste keelte kasutajaliideseid. Erinevate kõrgetasemeliste teostuste põhjal genereeritakse eraldi üks vahekood, mida saavad kasutada OpenGL-i, Vulkani ja OpenCL-i draiverid ilma sisseehitatud shaderi kompilaatorit kasutamata.
  • Pakutakse välja ühilduvusprofiilide kontseptsioon. Google on esimene, kes avaldab Androidi platvormi baasprofiili, mis muudab Vulkan 1.0 spetsifikatsioonist kõrgemate Vulkani võimaluste toe taseme määramise lihtsamaks. Enamiku seadmete puhul saab profiilituge pakkuda ilma OTA värskendusi installimata.

Tuletagem meelde, et Vulkan API on tähelepanuväärne draiverite radikaalse lihtsustamise, GPU käskude genereerimise ülekandmise rakenduse poolele, võimalusega ühendada silumiskihte, erinevate platvormide API ühendamise ja eelkompileeritud Koodi vahepealne esitus GPU poolel täitmiseks. Kõrge jõudluse ja prognoositavuse tagamiseks pakub Vulkan rakendusi, millel on otsene kontroll GPU toimingute üle ja natiivne tugi GPU mitme lõime jaoks, mis minimeerib draiveri kulusid ja muudab draiveripoolsed võimalused palju lihtsamaks ja prognoositavamaks. Näiteks juhipoolses OpenGL-is rakendatud toimingud, nagu mäluhaldus ja veakäsitlus, viiakse Vulkanis rakenduse tasemele.

Vulkan hõlmab kõiki saadaolevaid platvorme ja pakub üht API-d lauaarvutitele, mobiilseadmetele ja veebile, võimaldades kasutada ühte ühist API-d mitmes GPU-s ja rakenduses. Tänu Vulkani mitmekihilisele arhitektuurile, mis tähendab tööriistu, mis töötavad mis tahes GPU-ga, saavad originaalseadmete tootjad kasutada arenduse ajal koodi ülevaatamiseks, silumiseks ja profiilide koostamiseks tööstusstandardi tööriistu. Varjutajate loomiseks pakutakse välja uus kaasaskantav vaheesitus SPIR-V, mis põhineb LLVM-il ja jagab põhitehnoloogiaid OpenCL-iga. Seadmete ja ekraanide juhtimiseks pakub Vulkan liidest WSI (Window System Integration), mis lahendab ligikaudu samad probleemid, mis OpenGL ES-is EGL. WSI tugi on Waylandis karbist väljas – kõik Vulkanit kasutavad rakendused võivad töötada muutmata Waylandi serverite keskkonnas. WSI kaudu töötamise võimalus on saadaval ka Androidi, X11 (koos DRI3-ga), Windowsi, Tizeni, macOS-i ja iOS-i jaoks.

Allikas: opennet.ru

Lisa kommentaar