Zverejnený grafický štandard Vulkan 1.3

Po dvoch rokoch práce konzorcium grafických štandardov Khronos zverejnilo špecifikáciu Vulkan 1.3, ktorá definuje API pre prístup ku grafickým a výpočtovým schopnostiam GPU. Nová špecifikácia zahŕňa opravy a rozšírenia nahromadené počas dvoch rokov. Je potrebné poznamenať, že požiadavky špecifikácie Vulkan 1.3 sú navrhnuté pre grafické vybavenie triedy OpenGL ES 3.1, čo zabezpečí podporu pre nové grafické API vo všetkých GPU, ktoré podporujú Vulkan 1.2. Nástroje Vulkan SDK majú byť zverejnené v polovici februára. Okrem hlavnej špecifikácie sa plánuje ponuka ďalších rozšírení pre mobilné a desktopové zariadenia strednej a vyššej triedy, ktoré budú podporované v rámci edície „Vulkan Milestone“.

Zároveň je predstavený plán implementácie podpory pre novú špecifikáciu a ďalšie rozšírenia v grafických kartách a ovládačoch zariadení. Intel, AMD, ARM a NVIDIA sa pripravujú na vydanie produktov podporujúcich Vulkan 1.3. AMD napríklad oznámilo, že čoskoro bude podporovať Vulkan 1.3 v rade grafických kariet AMD Radeon RX Vega, ako aj vo všetkých kartách založených na architektúre AMD RDNA. NVIDIA sa pripravuje na zverejnenie ovládačov s podporou pre Vulkan 1.3 pre Linux a Windows. ARM pridá podporu pre Vulkan 1.3 do GPU Mali.

Hlavné inovácie:

  • Bola implementovaná podpora pre zjednodušené vykresľovacie priechody (Streamlining Render Passes, VK_KHR_dynamic_rendering), čo vám umožňuje začať s vykresľovaním bez vytvárania vykresľovacích priechodov a objektov framebufferu.
  • Boli pridané nové rozšírenia, ktoré zjednodušujú správu kompilácie grafického potrubia (pipeline, súbor operácií, ktoré premieňajú primitívy vektorovej grafiky a textúry na pixelové reprezentácie).
    • VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - pridanie ďalších dynamických stavov na zníženie počtu skompilovaných a pripojených objektov stavu.
    • VK_EXT_pipeline_creation_cache_control - Poskytuje pokročilé kontroly, kedy a ako sa zostavujú kanály.
    • VK_EXT_pipeline_creation_feedback - Poskytuje informácie o skompilovaných kanáloch na uľahčenie profilovania a ladenia.
  • Množstvo funkcií sa presunulo z voliteľných na povinné. Napríklad implementácia referencií vyrovnávacej pamäte (VK_KHR_buffer_device_address) a pamäťového modelu Vulkan, ktorý definuje, ako môžu súbežné vlákna pristupovať k zdieľaným dátam a synchronizačným operáciám, sú teraz povinné.
  • Je k dispozícii jemné ovládanie podskupiny (VK_EXT_subgroup_size_control), takže predajcovia môžu poskytovať podporu pre viaceré veľkosti podskupín a vývojári si môžu vybrať veľkosť, ktorú požadujú.
  • Bolo poskytnuté rozšírenie VK_KHR_shader_integer_dot_product, ktoré možno použiť na optimalizáciu výkonu rámcov strojového učenia vďaka hardvérovej akcelerácii operácií bodových produktov.
  • Celkovo je zahrnutých 23 nových rozšírení:
    • VK_KHR_copy_commands2
    • VK_KHR_dynamic_rendering
    • VK_KHR_format_feature_flags2
    • Údržba VK_KHR4
    • 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_formáty
    • 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
  • Pridaný nový typ objektu VkPrivateDataSlot. Implementovalo sa 37 nových príkazov a viac ako 60 štruktúr.
  • Špecifikácia SPIR-V 1.6 bola aktualizovaná, aby definovala prechodnú shaderovú reprezentáciu, ktorá je univerzálna pre všetky platformy a môže byť použitá pre grafiku aj paralelné výpočty. SPIR-V zahŕňa oddelenie samostatnej fázy kompilácie shadera do strednej reprezentácie, ktorá vám umožňuje vytvárať rozhrania pre rôzne jazyky na vysokej úrovni. Na základe rôznych implementácií na vysokej úrovni sa samostatne vygeneruje jeden prechodný kód, ktorý môžu používať ovládače OpenGL, Vulkan a OpenCL bez použitia vstavaného kompilátora shaderov.
  • Navrhuje sa koncept profilov kompatibility. Google ako prvý vydal základný profil pre platformu Android, ktorý uľahčí určenie úrovne podpory pokročilých funkcií Vulkan na zariadení nad rámec špecifikácie Vulkan 1.0. Pre väčšinu zariadení je možné poskytnúť podporu profilu bez inštalácie aktualizácií OTA.

Pripomeňme, že Vulkan API sa vyznačuje radikálnym zjednodušením ovládačov, prenosom generovania príkazov GPU na aplikačnú stranu, možnosťou prepojenia ladiacich vrstiev, zjednotením API pre rôzne platformy a použitím predkompilovaného prechodná reprezentácia kódu na vykonanie na strane GPU. Aby bol zaistený vysoký výkon a predvídateľnosť, Vulkan poskytuje aplikáciám priamu kontrolu nad operáciami GPU a natívnu podporu GPU multi-threading, čo minimalizuje réžiu ovládača a robí funkcie na strane ovládača oveľa jednoduchšie a predvídateľnejšie. Napríklad operácie, ako je správa pamäte a spracovanie chýb, implementované v OpenGL na strane ovládača, sú presunuté na aplikačnú úroveň vo Vulkan.

Vulkan pokrýva všetky dostupné platformy a poskytuje jediné API pre desktop, mobil a web, čo umožňuje použitie jedného spoločného API na viacerých GPU a aplikáciách. Vďaka viacvrstvovej architektúre Vulkan, čo znamená nástroje, ktoré fungujú s akýmkoľvek GPU, môžu OEM používať štandardné nástroje na kontrolu kódu, ladenie a profilovanie počas vývoja. Na vytváranie shaderov sa navrhuje nová prenosná prostredná reprezentácia, SPIR-V, založená na LLVM a zdieľaní základných technológií s OpenCL. Na ovládanie zariadení a obrazoviek ponúka Vulkan rozhranie WSI (Window System Integration), ktoré rieši približne rovnaké problémy ako EGL v OpenGL ES. Podpora WSI je vo Waylande k dispozícii hneď po vybalení – všetky aplikácie využívajúce Vulkan môžu bežať v prostredí neupravených serverov Wayland. Schopnosť pracovať cez WSI je poskytovaná aj pre Android, X11 (s DRI3), Windows, Tizen, macOS a iOS.

Zdroj: opennet.ru

Pridať komentár