Objavljen grafički standard Vulkan 1.3

Nakon dvije godine rada, konzorcij za grafičke standarde Khronos objavio je specifikaciju Vulkan 1.3, koja definira API za pristup grafičkim i računskim mogućnostima GPU-a. Nova specifikacija uključuje ispravke i proširenja akumulirane tokom dvije godine. Napominje se da su zahtjevi specifikacije Vulkan 1.3 dizajnirani za grafičku opremu klase OpenGL ES 3.1, što će osigurati podršku za novi grafički API u svim GPU-ovima koji podržavaju Vulkan 1.2. Planirano je da Vulkan SDK alati budu objavljeni sredinom februara. Pored glavne specifikacije, planirana je ponuda dodatnih ekstenzija za srednje i high-end mobilne i desktop uređaje, koji će biti podržani u sklopu izdanja „Vulkan Milestone“.

Istovremeno, predstavljen je plan implementacije podrške za novu specifikaciju i dodatna proširenja u grafičkim karticama i drajverima uređaja. Intel, AMD, ARM i NVIDIA se pripremaju za izdavanje proizvoda koji podržavaju Vulkan 1.3. Na primjer, AMD je najavio da će uskoro podržati Vulkan 1.3 u AMD Radeon RX Vega seriji grafičkih kartica, kao i na svim karticama baziranim na AMD RDNA arhitekturi. NVIDIA se priprema za objavljivanje drajvera sa podrškom za Vulkan 1.3 za Linux i Windows. ARM će dodati podršku za Vulkan 1.3 Mali GPU-ovima.

Glavne inovacije:

  • Implementirana je podrška za pojednostavljene prolaze renderiranja (Streamlining Render Passes, VK_KHR_dynamic_rendering), što vam omogućava da počnete s renderiranjem bez kreiranja prolaza za renderiranje i objekata framebuffera.
  • Dodata su nova proširenja kako bi se pojednostavilo upravljanje kompilacijom grafičkog cevovoda (cevovod, skup operacija koji pretvara primitive vektorske grafike i teksture u prikaze piksela).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - dodajte dodatna dinamička stanja da smanjite broj kompajliranih i pripojenih objekata stanja.
    • VK_EXT_pipeline_creation_cache_control - Pruža napredne kontrole kada i kako se sastavljaju cjevovodi.
    • VK_EXT_pipeline_creation_feedback - Pruža informacije o kompajliranim cjevovodima radi lakšeg profiliranja i otklanjanja grešaka.
  • Brojne karakteristike su prebačene sa opcionih na obavezne. Na primjer, implementacija referenci bafera (VK_KHR_buffer_device_address) i Vulkan memorijskog modela, koji definira kako istovremene niti mogu pristupiti zajedničkim podacima i operacijama sinhronizacije, sada su obavezne.
  • Fino-zrnasta kontrola podgrupa (VK_EXT_subgroup_size_control) je obezbeđena tako da dobavljači mogu pružiti podršku za više veličina podgrupa, a programeri mogu odabrati veličinu koja im je potrebna.
  • Osigurana je ekstenzija VK_KHR_shader_integer_dot_product, koja se može koristiti za optimizaciju performansi okvira za strojno učenje zahvaljujući hardverskom ubrzanju operacija dot proizvoda.
  • Uključeno je ukupno 23 nova proširenja:
    • 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_sinhronizacija2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formati
    • VK_EXT_prošireno_dinamičko_stanje
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_image_robusstness
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_privatni_podaci
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_podgrupa_kontrole_veličine
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formati
  • Dodan novi tip objekta VkPrivateDataSlot. Implementirano je 37 novih komandi i više od 60 struktura.
  • SPIR-V 1.6 specifikacija je ažurirana kako bi definirala srednju reprezentaciju shadera koja je univerzalna za sve platforme i može se koristiti i za grafiku i za paralelno računanje. SPIR-V uključuje odvajanje zasebne faze kompilacije shadera u srednju reprezentaciju, koja vam omogućava da kreirate frontendove za različite jezike visokog nivoa. Na osnovu različitih implementacija visokog nivoa, odvojeno se generiše jedan srednji kod, koji mogu koristiti OpenGL, Vulkan i OpenCL drajveri bez upotrebe ugrađenog kompajlera shadera.
  • Predložen je koncept profila kompatibilnosti. Google je prvi koji je objavio osnovni profil za Android platformu, koji će olakšati određivanje nivoa podrške za napredne Vulkan mogućnosti na uređaju izvan Vulkan 1.0 specifikacije. Za većinu uređaja, podrška za profil se može pružiti bez instaliranja OTA ažuriranja.

Podsjetimo da je Vulkan API poznat po svom radikalnom pojednostavljenju drajvera, prijenosu generiranja GPU komandi na stranu aplikacije, mogućnosti povezivanja slojeva za otklanjanje grešaka, objedinjavanju API-ja za različite platforme i korištenju unaprijed kompajliranih posredni prikaz koda za izvršenje na strani GPU-a. Da bi se osigurale visoke performanse i predvidljivost, Vulkan pruža aplikacijama direktnu kontrolu nad GPU operacijama i izvornu podršku za GPU multi-threading, što minimizira opterećenje drajvera i čini mogućnosti na strani vozača mnogo jednostavnijim i predvidljivijim. Na primjer, operacije kao što su upravljanje memorijom i rukovanje greškama, implementirane u OpenGL na strani drajvera, premeštene su na nivo aplikacije u Vulkanu.

Vulkan obuhvata sve dostupne platforme i pruža jedan API za desktop, mobilne i web, omogućavajući korištenje jednog zajedničkog API-ja u više GPU-ova i aplikacija. Zahvaljujući Vulkanovoj višeslojnoj arhitekturi, što znači alatima koji rade sa bilo kojim GPU-om, OEM-ovi mogu koristiti standardne alate za pregled koda, otklanjanje grešaka i profilisanje tokom razvoja. Za kreiranje shadera, predložena je nova prenosiva srednja reprezentacija, SPIR-V, zasnovana na LLVM-u i dijeljenju osnovnih tehnologija sa OpenCL-om. Za kontrolu uređaja i ekrana, Vulkan nudi WSI (Window System Integration) interfejs, koji rešava približno iste probleme kao EGL u OpenGL ES. WSI podrška je dostupna iz kutije u Wayland-u - sve aplikacije koje koriste Vulkan mogu raditi u okruženju neizmijenjenih Wayland servera. Mogućnost rada preko WSI-a također je omogućena za Android, X11 (sa DRI3), Windows, Tizen, macOS i iOS.

izvor: opennet.ru

Dodajte komentar