Grafiikkastandardi Vulkan 1.3 julkaistu

Kahden vuoden työn jälkeen grafiikkastandardien konsortio Khronos on julkaissut Vulkan 1.3 -spesifikaation, joka määrittelee API:n GPU:iden grafiikka- ja laskentaominaisuuksien käyttöön. Uusi spesifikaatio sisältää kahden vuoden aikana kertyneet korjaukset ja laajennukset. On huomattava, että Vulkan 1.3 -määrityksen vaatimukset on suunniteltu OpenGL ES 3.1 -luokan grafiikkalaitteistoille, mikä varmistaa tuen uudelle grafiikka-API:lle kaikissa Vulkan 1.2:ta tukevissa GPU:issa. Vulkan SDK -työkalut on tarkoitus julkaista helmikuun puolivälissä. Päämäärittelyn lisäksi on tarkoitus tarjota lisälaajennuksia keskitason ja huippuluokan mobiili- ja pöytätietokoneisiin, joita tuetaan osana "Vulkan Milestone" -versiota.

Samalla esitellään suunnitelma uuden spesifikaation tuen ja lisälaajennusten käyttöönotosta näytönohjainkortteihin ja laiteajureihin. Intel, AMD, ARM ja NVIDIA valmistautuvat julkaisemaan Vulkan 1.3:a tukevia tuotteita. Esimerkiksi AMD ilmoitti, että se tukee pian Vulkan 1.3:a AMD Radeon RX Vega -sarjan näytönohjainkorteissa sekä kaikissa AMD RDNA -arkkitehtuuriin perustuvissa korteissa. NVIDIA valmistautuu julkaisemaan Vulkan 1.3 -ajureita Linuxille ja Windowsille. ARM lisää tuen Vulkan 1.3:lle Malin GPU:ille.

Tärkeimmät innovaatiot:

  • Yksinkertaistettujen renderöintipajojen tuki (Streamlining Render Passes, VK_KHR_dynamic_rendering) on ​​otettu käyttöön, joten voit aloittaa renderöinnin luomatta renderöintipasseja ja framebuffer-objekteja.
  • Uusia laajennuksia on lisätty yksinkertaistamaan grafiikan liukuhihnan kokoamisen hallintaa (pipeline, toimintosarja, joka muuttaa vektorigrafiikkaprimitiivit ja tekstuurit pikseliesitysiksi).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - lisää dynaamisia tiloja vähentääksesi käännettyjen ja liitettyjen tilaobjektien määrää.
    • VK_EXT_pipeline_creation_cache_control - Tarjoaa edistyneitä ohjausobjekteja siihen, milloin ja miten liukuhihnat käännetään.
    • VK_EXT_pipeline_creation_feedback – Antaa tietoja käännetyistä putkistoista profiloinnin ja virheenkorjauksen helpottamiseksi.
  • Useita ominaisuuksia on siirretty valinnaisista pakollisiin. Esimerkiksi puskuriviittausten (VK_KHR_buffer_device_address) toteutus ja Vulkan-muistimalli, joka määrittelee kuinka samanaikaiset säikeet voivat päästä käsiksi jaettuun dataan ja synkronointitoimintoihin, ovat nyt pakollisia.
  • Tarkka alaryhmän ohjaus (VK_EXT_subgroup_size_control) on saatavilla, jotta toimittajat voivat tarjota tukea useille alaryhmien kokoille ja kehittäjät voivat valita tarvitsemansa koon.
  • VK_KHR_shader_integer_dot_product-laajennus on toimitettu, jota voidaan käyttää koneoppimiskehysten suorituskyvyn optimointiin pistetuotteen toimintojen laitteistokiihdytyksen ansiosta.
  • Mukana on yhteensä 23 uutta laajennusta:
    • VK_KHR_copy_commands2
    • VK_KHR_dynaaminen_renderöinti
    • VK_KHR_format_feature_flags2
    • VK_KHR_huolto4
    • 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_muodot
    • VK_EXT_laajennettu_dynamiikka_tila
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_kuvakuvaus
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_tietosuojatiedot
    • VK_EXT_shader_demote_to_helper_kutsu
    • VK_EXT_subgroup_size_control
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_työkalutiedot
    • VK_EXT_ycbcr_2plane_444_formats
  • Lisätty uusi objektityyppi VkPrivateDataSlot. Toteutettiin 37 uutta komentoa ja yli 60 rakennetta.
  • SPIR-V 1.6 -spesifikaatio on päivitetty määrittelemään keskitason varjostimen, joka on universaali kaikille alustoille ja jota voidaan käyttää sekä grafiikkaan että rinnakkaislaskennassa. SPIR-V sisältää erillisen varjostimen käännösvaiheen erottamisen väliesitykseen, jonka avulla voit luoda käyttöliittymät useille korkean tason kielille. Erilaisten korkean tason toteutusten perusteella generoidaan erikseen yksi välikoodi, jota voivat käyttää OpenGL-, Vulkan- ja OpenCL-ajurit ilman sisäänrakennettua shader-kääntäjää.
  • Yhteensopivuusprofiilien käsitettä ehdotetaan. Google on ensimmäinen, joka julkaisi Android-alustan perusprofiilin, jonka avulla on helpompi määrittää edistyneiden Vulkan-ominaisuuksien tukitaso laitteissa, jotka ylittävät Vulkan 1.0 -spesifikaatiot. Useimmille laitteille profiilituki voidaan tarjota ilman OTA-päivitysten asentamista.

Muistakaamme, että Vulkan API on huomattava ajurien radikaalista yksinkertaistamisesta, GPU-komentojen generoinnin siirtämisestä sovelluspuolelle, mahdollisuudesta yhdistää virheenkorjauskerroksia, API:n yhtenäistämisestä eri alustoille ja esikäännetyn koodin väliesitys suoritettavaksi GPU-puolella. Korkean suorituskyvyn ja ennustettavuuden varmistamiseksi Vulkan tarjoaa sovelluksille suoran hallinnan GPU-toimintoihin ja natiivituen GPU:n monisäikeisyydelle, mikä minimoi ohjaimen ylimääräiset kustannukset ja tekee kuljettajapuolen ominaisuuksista paljon yksinkertaisempia ja ennakoitavampia. Esimerkiksi ajurin puolella OpenGL:ssä toteutetut toiminnot, kuten muistinhallinta ja virheiden käsittely, siirretään Vulkanissa sovellustasolle.

Vulkan kattaa kaikki saatavilla olevat alustat ja tarjoaa yhden API:n pöytäkoneille, mobiililaitteille ja webille, mikä mahdollistaa yhden yhteisen API:n käytön useiden GPU:iden ja sovellusten välillä. Vulkanin monikerroksisen arkkitehtuurin ansiosta, mikä tarkoittaa työkaluja, jotka toimivat minkä tahansa GPU:n kanssa, OEM-valmistajat voivat käyttää alan standardityökaluja koodin tarkistamiseen, virheenkorjaukseen ja profilointiin kehityksen aikana. Shadereiden luomiseen ehdotetaan uutta kannettavaa väliesitystä, SPIR-V:tä, joka perustuu LLVM:ään ja jakaa ydinteknologioita OpenCL:n kanssa. Laitteiden ja näyttöjen ohjaamiseen Vulkan tarjoaa WSI (Window System Integration) -rajapinnan, joka ratkaisee suunnilleen samat ongelmat kuin EGL OpenGL ES:ssä. WSI-tuki on heti saatavilla Waylandissa – kaikki Vulkan-sovellukset voivat toimia muokkaamattomien Wayland-palvelimien ympäristössä. Mahdollisuus työskennellä WSI:n kautta on myös saatavilla Androidille, X11:lle (DRI3), Windowsille, Tizenille, macOS:lle ja iOS:lle.

Lähde: opennet.ru

Lisää kommentti