Grafikkstandard Vulkan 1.3 publisert

Etter to års arbeid har grafikkstandardkonsortiet Khronos publisert Vulkan 1.3-spesifikasjonen, som definerer en API for tilgang til grafikk- og databehandlingsmulighetene til GPUer. Den nye spesifikasjonen inneholder korreksjoner og utvidelser akkumulert over to år. Det bemerkes at kravene til Vulkan 1.3-spesifikasjonen er designet for OpenGL ES 3.1-klassens grafikkutstyr, som vil sikre støtte for det nye grafikk-APIet i alle GPUer som støtter Vulkan 1.2. Vulkan SDK-verktøyene er planlagt publisert i midten av februar. I tillegg til hovedspesifikasjonen er det planlagt å tilby ytterligere utvidelser for mellomstore og avanserte mobile og stasjonære enheter, som vil bli støttet som en del av «Vulkan Milestone»-utgaven.

Samtidig presenteres en plan for å implementere støtte for den nye spesifikasjonen og tilleggsutvidelser i grafikkort og enhetsdrivere. Intel, AMD, ARM og NVIDIA forbereder seg på å gi ut produkter som støtter Vulkan 1.3. For eksempel annonserte AMD at de snart vil støtte Vulkan 1.3 i AMD Radeon RX Vega-serien med grafikkort, samt i alle kort basert på AMD RDNA-arkitekturen. NVIDIA forbereder seg på å publisere drivere med støtte for Vulkan 1.3 for Linux og Windows. ARM vil legge til støtte for Vulkan 1.3 til Mali GPUer.

Hovedinnovasjoner:

  • Støtte for forenklet gjengivelsespass (Streamlining Render Passes, VK_KHR_dynamic_rendering) er implementert, slik at du kan begynne å gjengi uten å lage gjengivelsespass og framebuffer-objekter.
  • Nye utvidelser er lagt til for å forenkle administrasjonen av kompilering av grafikkpipeline (pipeline, et sett med operasjoner som gjør vektorgrafikkprimitiver og teksturer til pikselrepresentasjoner).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - legg til flere dynamiske tilstander for å redusere antall kompilerte og vedlagte tilstandsobjekter.
    • VK_EXT_pipeline_creation_cache_control - Gir avanserte kontroller over når og hvordan pipelines kompileres.
    • VK_EXT_pipeline_creation_feedback - Gir informasjon om kompilerte rørledninger for å gjøre profilering og feilsøking enklere.
  • En rekke funksjoner er overført fra valgfri til obligatorisk. For eksempel er implementeringen av bufferreferanser (VK_KHR_buffer_device_address) og Vulkan-minnemodellen, som definerer hvordan samtidige tråder kan få tilgang til delte data og synkroniseringsoperasjoner, nå obligatoriske.
  • Finkornet undergruppekontroll (VK_EXT_subgroup_size_control) er gitt slik at leverandører kan gi støtte for flere undergruppestørrelser og utviklere kan velge størrelsen de trenger.
  • VK_KHR_shader_integer_dot_product-utvidelsen er gitt, som kan brukes til å optimalisere ytelsen til maskinlæringsrammeverk takket være maskinvareakselerasjon av dot-produktoperasjoner.
  • Totalt 23 nye utvidelser er inkludert:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • VK_KHR_vedlikehold4
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_non_semantic_info
    • VK_KHR_shader_terminate_invocation
    • VK_KHR_synkronisering2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formater
    • 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_undergruppe_størrelse_kontroll
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • Lagt til en ny objekttype VkPrivateDataSlot. 37 nye kommandoer og mer enn 60 strukturer ble implementert.
  • SPIR-V 1.6-spesifikasjonen har blitt oppdatert for å definere en mellomskyggerepresentasjon som er universell for alle plattformer og kan brukes til både grafikk og parallell databehandling. SPIR-V innebærer å separere en separat shader-kompileringsfase i en mellomrepresentasjon, som lar deg lage grensesnitt for ulike høynivåspråk. Basert på ulike implementeringer på høyt nivå, genereres en enkelt mellomkode separat, som kan brukes av OpenGL-, Vulkan- og OpenCL-drivere uten å bruke den innebygde shader-kompilatoren.
  • Konseptet med kompatibilitetsprofiler er foreslått. Google er den første som lanserer en grunnlinjeprofil for Android-plattformen, som vil gjøre det enklere å bestemme støttenivået for avanserte Vulkan-funksjoner på en enhet utover Vulkan 1.0-spesifikasjonen. For de fleste enheter kan profilstøtte tilbys uten å installere OTA-oppdateringer.

La oss huske at Vulkan API er kjent for sin radikale forenkling av drivere, overføring av generering av GPU-kommandoer til applikasjonssiden, muligheten til å koble til feilsøkingslag, foreningen av API for ulike plattformer og bruken av en forhåndskompilert mellomrepresentasjon av kode for utførelse på GPU-siden. For å sikre høy ytelse og forutsigbarhet, gir Vulkan applikasjoner med direkte kontroll over GPU-operasjoner og innebygd støtte for GPU-flertråding, noe som minimerer driveroverhead og gjør funksjonene på førersiden mye enklere og mer forutsigbare. For eksempel flyttes operasjoner som minnehåndtering og feilhåndtering, implementert i OpenGL på førersiden, til applikasjonsnivå i Vulkan.

Vulkan spenner over alle tilgjengelige plattformer og gir én enkelt API for skrivebord, mobil og web, slik at én felles API kan brukes på tvers av flere GPUer og applikasjoner. Takket være Vulkans flerlagsarkitektur, som betyr verktøy som fungerer med alle GPUer, kan OEM-er bruke industristandardverktøy for kodegjennomgang, feilsøking og profilering under utvikling. For å lage shaders, foreslås en ny bærbar mellomrepresentasjon, SPIR-V, basert på LLVM og deler kjerneteknologier med OpenCL. For å kontrollere enheter og skjermer tilbyr Vulkan WSI-grensesnittet (Window System Integration), som løser omtrent de samme problemene som EGL i OpenGL ES. WSI-støtte er tilgjengelig umiddelbart i Wayland - alle applikasjoner som bruker Vulkan kan kjøres i et miljø med umodifiserte Wayland-servere. Muligheten til å jobbe via WSI er også gitt for Android, X11 (med DRI3), Windows, Tizen, macOS og iOS.

Kilde: opennet.ru

Legg til en kommentar