După doi ani de muncă, consorțiul Khronos, care se ocupă cu dezvoltarea standardelor grafice, a publicat specificația Vulkan 1.3, care definește API-ul pentru accesul la capabilitățile grafice și de calcul ale GPU-ului. Noua specificație a integrat modificările și extinderile acumulate în cei doi ani. Se observă că cerințele specificației Vulkan 1.3 sunt concepute pentru echipamente grafice de clasă OpenGL ES 3.1, ceea ce va permite suportul noii API grafice pe toate GPU-urile care suportă Vulkan 1.2. Kitul de instrumente Vulkan SDK este planificat să fie publicat la mijlocul lunii februarie. Pe lângă specificația de bază, se intenționează să fie oferite extensii suplimentare pentru dispozitive mobile și desktop de clasă medie și superioară, a căror suport va fi asigurat în cadrul ediției „Vulkan Milestone”.
În același timp, a fost prezentat planul de implementare a suportului pentru noua specificație și extensiile suplimentare în plăcile video și driverele dispozitivelor. Produse cu suport pentru Vulkan 1.3 sunt pregătite pentru lansare de companii precum Intel, AMD, ARM și NVIDIA. De exemplu, compania AMD a anunțat că va asigura în curând suport pentru Vulkan 1.3 în seria de plăci grafice AMD Radeon RX Vega, precum și în toate plăcile bazate pe arhitectura AMD RDNA. Compania NVIDIA se pregătește să publice drivere cu suport pentru Vulkan 1.3 pentru Linux și Windows. Compania ARM va adăuga suport pentru Vulkan 1.3 în GPU-urile Mali.
Noutăți principale:
- A fost implementat suportul pentru trecerile de redare simplificate (Streamlining Render Passes, VK_KHR_dynamic_rendering), care permit începerea redării fără a crea treceri de redare și obiecte de cadru.
- Au fost adăugate noi extensii pentru simplificarea gestionării compilării pipeline-ului grafic (pipeline, un set de operațiuni care transformă primitivele grafice vectoriale și texturile în reprezentarea pixelilor).
- VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 — adaugă stări dinamice suplimentare pentru a reduce numărul de obiecte de stare compilate și atașate.
- VK_EXT_pipeline_creation_cache_control — oferă instrumente extinse pentru gestionarea momentului și modului de compilare a pipeline-urilor.
- VK_EXT_pipeline_creation_feedback — oferă informații despre pipeline-urile compilate pentru a simplifica profilarea și depanarea.
- O serie de funcționalități au fost mutate din opționale în obligatorii. De exemplu, acum este obligatorie implementarea adreselor de dispozitive tampon (VK_KHR_buffer_device_address) și a modelului de memorie Vulkan, care defineste modul în care firele de execuție paralele pot accesa datele partajate și operațiunile de sincronizare.
- Sunt furnizate instrumente pentru controlul precis al subgrupurilor (VK_EXT_subgroup_size_control), prin care producătorii pot oferi suport pentru mai multe dimensiuni de subgrupuri, iar dezvoltatorii pot alege dimensiunea necesară.
- A fost introdusă extensia VK_KHR_shader_integer_dot_product, care poate fi utilizată pentru optimizarea performanței cadrelor de învățare automată, datorită accelerării hardware a operațiunilor de produs scalar.
- În total, sunt incluse 23 de extensii noi:
- 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_synchronization2
- VK_KHR_zero_initialize_workgroup_memory
- VK_EXT_4444_formats
- 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_subgroup_size_control
- VK_EXT_texel_buffer_alignment
- VK_EXT_texture_compression_astc_hdr
- VK_EXT_tooling_info
- VK_EXT_ycbcr_2plane_444_formats
- A fost adăugat un nou tip de obiecte VkPrivateDataSlot. Au fost implementate 37 de comenzi noi și peste 60 de structuri.
- A fost actualizată specificația SPIR-V 1.6, care definește o reprezentare intermediară universală pentru toate platformele pentru shadere, care poate fi folosită atât pentru grafică, cât și pentru calcule paralele. SPIR-V presupune alocarea unei faze separate de compilare a shaderelor în reprezentarea intermediară, posibilind crearea de frontend-uri pentru diferite limbaje de nivel înalt. Pe baza diferitelor implementări de nivel înalt, se generează un cod intermediar unic, care poate fi utilizat de driverele OpenGL, Vulkan și OpenCL fără aplicarea unui compilator de shadere încorporat.
- A fost propusă o concept de profile de compatibilitate. Prima companie care a pregătit un profil de bază (baseline profile) pentru platforma Android este Google, care va simplifica determinarea nivelului de suport al capacităților extinse Vulkan pe dispozitiv, care depășesc specificația Vulkan 1.0. Pentru majoritatea dispozitivelor, suportul profilului va putea fi asigurat fără instalarea actualizărilor OTA.
Reamintim că API Vulkan se remarcă prin simplificarea drastică a driverelor, transferul generării comenzilor GPU către aplicație, posibilitatea de a conecta straturi de depanare, unificarea API-ului pentru diverse platforme și utilizarea unei reprezentări intermediare precompilate a codului pentru a fi executată pe GPU. Pentru a asigura performanța ridicată și predictibilitatea, Vulkan oferă aplicațiilor instrumente pentru gestionarea directă a operațiunilor GPU și suport încorporat pentru procesarea multi-thread a comenzilor GPU, ceea ce minimizează supraîncărcarea generată de driver, iar capacitățile realizate la nivel de driver devin semnificativ mai simple și mai previzibile. De exemplu, operațiuni precum gestionarea memoriei și tratarea erorilor, realizate în OpenGL la nivel de driver, sunt transferate în Vulkan la nivelul aplicației.
Vulkan acoperă toate platformele disponibile și oferă un API unic pentru sisteme desktop, mobile și web, permițând utilizarea unui API comun pentru diverse procesoare grafice și domenii de aplicare. Datorită arhitecturii multilayer a Vulkan, care implică crearea de instrumente care funcționează cu orice GPU, producătorii de hardware pot utiliza instrumente standardizate pentru verificarea codului, depanare și profilare în dezvoltare. Pentru crearea shader-elor, este propusă o nouă reprezentare intermediară portabilă SPIR-V, bazată pe LLVM și utilizând tehnologii fundamentale comune cu OpenCL. Pentru gestionarea dispozitivelor și ecranelor, Vulkan oferă o interfață WSI (Window System Integration), care îndeplinește aproximativ aceleași sarcini ca EGL în OpenGL ES. Suportul WSI este disponibil „out of the box” în Wayland — toate aplicațiile care utilizează Vulkan pot fi rulate în medii nemodificate. servere Wayland. Posibilitatea de a lucra prin WSI este, de asemenea, asigurată pentru Android, X11 (cu DRI3), Windows, Tizen, macOS și iOS.
Sursa: opennet.ro
