Standardul grafic Vulkan 1.3 a fost publicat

După doi ani de muncă, consorțiul de standarde grafice Khronos a publicat specificația Vulkan 1.3, care definește un API pentru accesarea capacităților grafice și de calcul ale GPU-urilor. Noua specificație încorporează corecții și extinderi acumulate pe parcursul a doi ani. Se observă că cerințele specificației Vulkan 1.3 sunt concepute pentru echipamentele grafice din clasa OpenGL ES 3.1, ceea ce va asigura suport pentru noul API grafic în toate GPU-urile care acceptă Vulkan 1.2. Instrumentele Vulkan SDK sunt planificate să fie publicate la mijlocul lunii februarie. Pe lângă specificația principală, este planificat să ofere extensii suplimentare pentru dispozitivele mobile și desktop de gamă medie și înaltă, care vor fi acceptate ca parte a ediției „Vulkan Milestone”.

În același timp, este prezentat un plan de implementare a suportului pentru noua specificație și extensii suplimentare în plăcile grafice și driverele de dispozitiv. Intel, AMD, ARM și NVIDIA se pregătesc să lanseze produse care acceptă Vulkan 1.3. De exemplu, AMD a anunțat că va suporta în curând Vulkan 1.3 în seria de plăci grafice AMD Radeon RX Vega, precum și în toate plăcile bazate pe arhitectura AMD RDNA. NVIDIA se pregătește să publice drivere cu suport pentru Vulkan 1.3 pentru Linux și Windows. ARM va adăuga suport pentru Vulkan 1.3 la GPU-urile Mali.

Principalele inovații:

  • A fost implementat suportul pentru treceri de randare simplificate (Streamlining Render Passes, VK_KHR_dynamic_rendering), permițându-vă să începeți randarea fără a crea treceri de randare și obiecte framebuffer.
  • Au fost adăugate noi extensii pentru a simplifica gestionarea compilației conductelor de grafică (pipeline, un set de operații care transformă primitivele și texturile graficelor vectoriale în reprezentări de pixeli).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - adăugați stări dinamice suplimentare pentru a reduce numărul de obiecte de stare compilate și atașate.
    • VK_EXT_pipeline_creation_cache_control - Oferă controale avansate asupra când și cum sunt compilate conductele.
    • VK_EXT_pipeline_creation_feedback - Oferă informații despre conductele compilate pentru a ușura profilarea și depanarea.
  • O serie de caracteristici au fost transferate de la opțional la obligatoriu. De exemplu, implementarea referințelor de buffer (VK_KHR_buffer_device_address) și modelul de memorie Vulkan, care definește modul în care firele concurente pot accesa datele partajate și operațiunile de sincronizare, sunt acum obligatorii.
  • Controlul subgrupurilor cu granulație fină (VK_EXT_subgroup_size_control) este furnizat astfel încât furnizorii să poată oferi suport pentru mai multe dimensiuni de subgrup și dezvoltatorii pot selecta dimensiunea de care au nevoie.
  • A fost furnizată extensia VK_KHR_shader_integer_dot_product, care poate fi utilizată pentru a optimiza performanța cadrelor de învățare automată datorită accelerării hardware a operațiunilor cu produse punct.
  • Sunt incluse un total de 23 de noi extinderi:
    • VK_KHR_copiere_comenzi2
    • 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_sincronizare2
    • VK_KHR_zero_initialize_workgroup_memory
    • VK_EXT_4444_formats
    • VK_EXT_stare_dinamică_extinsă
    • VK_EXT_extended_dynamic_state2
    • VK_EXT_robustețea_imaginei
    • VK_EXT_inline_uniform_block
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_data_private
    • VK_EXT_shader_demote_to_helper_invocation
    • Controlul mărimii_subgrupului_VK_EXT
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_tooling_info
    • VK_EXT_ycbcr_2plane_444_formats
  • S-a adăugat un nou tip de obiect VkPrivateDataSlot. Au fost implementate 37 de comenzi noi și peste 60 de structuri.
  • Specificația SPIR-V 1.6 a fost actualizată pentru a defini o reprezentare intermediară de umbrire care este universală pentru toate platformele și poate fi utilizată atât pentru grafică, cât și pentru calcul paralel. SPIR-V implică separarea unei faze separate de compilare a shader-ului într-o reprezentare intermediară, care vă permite să creați front-end-uri pentru diferite limbaje de nivel înalt. Pe baza diferitelor implementări la nivel înalt, un singur cod intermediar este generat separat, care poate fi utilizat de driverele OpenGL, Vulkan și OpenCL fără a utiliza compilatorul de shader încorporat.
  • Se propune conceptul de profile de compatibilitate. Google este primul care lansează un profil de bază pentru platforma Android, ceea ce va facilita determinarea nivelului de suport pentru capabilitățile avansate Vulkan pe un dispozitiv dincolo de specificația Vulkan 1.0. Pentru majoritatea dispozitivelor, suportul pentru profil poate fi furnizat fără a instala actualizări OTA.

Să reamintim că API-ul Vulkan se remarcă prin simplificarea radicală a driverelor, transferul generației de comenzi GPU către aplicație, capacitatea de a conecta straturi de depanare, unificarea API-ului pentru diverse platforme și utilizarea unui program precompilat. reprezentare intermediară a codului pentru execuție pe partea GPU. Pentru a asigura performanță și predictibilitate înaltă, Vulkan oferă aplicațiilor control direct asupra operațiunilor GPU și suport nativ pentru procesarea comenzilor GPU cu mai multe fire, ceea ce minimizează supraîncărcarea driverului și face capabilitățile la nivel de șofer mult mai simple și mai previzibile. De exemplu, operațiuni precum gestionarea memoriei și gestionarea erorilor, implementate în OpenGL pe partea șoferului, sunt mutate la nivelul aplicației în Vulkan.

Vulkan se întinde pe toate platformele disponibile și oferă un singur API pentru desktop, mobil și web, permițând utilizarea unui singur API comun pe mai multe GPU-uri și aplicații. Datorită arhitecturii cu mai multe straturi a lui Vulkan, care înseamnă instrumente care funcționează cu orice GPU, OEM-urile pot folosi instrumente standard din industrie pentru revizuirea codului, depanare și profilare în timpul dezvoltării. Pentru crearea de shadere, este propusă o nouă reprezentare intermediară portabilă, SPIR-V, bazată pe LLVM și partajarea tehnologiilor de bază cu OpenCL. Pentru a controla dispozitivele și ecranele, Vulkan oferă interfața WSI (Window System Integration), care rezolvă aproximativ aceleași probleme ca EGL în OpenGL ES. Suportul WSI este disponibil imediat în Wayland - toate aplicațiile care folosesc Vulkan pot rula într-un mediu de servere Wayland nemodificate. Abilitatea de a lucra prin WSI este oferită și pentru Android, X11 (cu DRI3), Windows, Tizen, macOS și iOS.

Sursa: opennet.ru

Adauga un comentariu