Po dvoch rokoch práce konsorcium Khronos, zamerané na vývoj grafických štandardov, zverejnilo špecifikáciu Vulkan 1.3, ktorá určuje API na prístup k grafickým a výpočtovým možnostiam GPU. Nová špecifikácia zohľadňuje opravy a rozšírenia za posledné dva roky. Je uvedené, že požiadavky špecifikácie Vulkan 1.3 sú určené pre grafické zariadenia triedy OpenGL ES 3.1, čo umožní podporu nového grafického API vo všetkých GPU, ktoré podporujú Vulkan 1.2. Nástroje Vulkan SDK plánujú zverejniť v polovici februára. Okrem hlavnej špecifikácie sa plánujú ponúknuť aj ďalšie rozšírenia pre mobilné a desktopové zariadenia strednej a vyššej triedy, ktorých podpora bude zabezpečená v rámci vydania „Vulkan Milestone“.
Súčasne bol predstavený plán realizácie podpory novej špecifikácie a ďalších rozšírení v grafických kartách a ovládačoch zariadení. Produkty s podporou Vulkan 1.3 sú v príprave od spoločností Intel, AMD, ARM a NVIDIA. Napríklad spoločnosť AMD oznámila, že plánuje čoskoro zabezpečiť podporu Vulkan 1.3 pre sériu grafických kariet AMD Radeon RX Vega, ako aj pre všetky karty založené na architektúre AMD RDNA. Spoločnosť NVIDIA sa pripravuje zverejniť ovládače s podporou Vulkan 1.3 pre Linux a Windows. Spoločnosť ARM pridá podporu Vulkan 1.3 do GPU Mali.
Hlavné novinky:
- Bola implementovaná podpora zjednodušených priechodov renderovania (Streamlining Render Passes, VK_KHR_dynamic_rendering), ktoré umožňujú začať renderovanie bez vytvárania priechodov renderovania a objektov rámcov.
- Boli pridané nové rozšírenia na zjednodušenie správy kompilácie grafického potrubia (pipeline, súbor operácií, ktorý premieňa vektorové grafické primitíva a textúry na pixelové zobrazenie).
- VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 — pridávajú ďalšie dynamické stavy na zníženie počtu kompilovaných a pripojených objektov stavu.
- VK_EXT_pipeline_creation_cache_control — poskytuje rozšírené nástroje na správu toho, kedy a ako kompilovať potrubia.
- VK_EXT_pipeline_creation_feedback — poskytuje informácie o skompilovaných potrubiach na zjednodušenie profilovania a ladenia.
- Rôzne možnosti boli prevedené z voliteľných na povinné. Napríklad implementácia vyrovnávacích odkazov (VK_KHR_buffer_device_address) a model pamäte Vulkan, ktorý určuje, ako môžu paralelne vykonávané vlákna pristupovať k zdieľaným údajom a operáciám synchronizácie, sú teraz povinné.
- Boli poskytnuté prostriedky presného riadenia podskupín (VK_EXT_subgroup_size_control), pomocou ktorých môžu výrobcovia poskytovať podporu pre viaceré veľkosti podskupín a vývojári si môžu vybrať požadovanú veľkosť.
- Bola poskytnutá rozšírenie VK_KHR_shader_integer_dot_product, ktoré sa môže použiť na optimalizáciu fungovania rámcov strojového učenia vďaka hardvérovo akcelerovaným operáciám skalárneho súčinu.
- Celkom je zahrnutých 23 nových rozšírení:
- 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
- Bol pridaný nový typ objektov VkPrivateDataSlot. Implementovaných bolo 37 nových príkazov a viac ako 60 štruktúr.
- Bola aktualizovaná špecifikácia SPIR-V 1.6, ktorá určuje univerzálny medzi platformami medzičlánok pre shadery, ktorý sa môže použiť pre grafiku aj paralelné výpočty. SPIR-V predpokladá vyčlenenie samostatnej fázy kompilácie shaderov do medzičlánku, čo umožňuje vytvárať frontend pre rôzne vysokoúrovňové jazyky. Na základe rôznych vysokoúrovňových implementácií je samostatne generovaný jediný medzičlánkový kód, ktorý môžu používať ovládače OpenGL, Vulkan a OpenCL bez použitia vstavaného kompilátora shaderov.
- Bola navrhnutá koncepcia profilov kompatibility. Prvým je základný profil (baseline profile) pripravený spoločnosťou Google pre platformu Android, ktorý zjednoduší určovanie úrovne podpory rozšírených funkcií Vulkan na zariadení, ktoré presahujú špecifikáciu Vulkan 1.0. Pre väčšinu zariadení bude možné podporiť profil bez inštalácie OTA aktualizácií.
Pripomíname, že API Vulkan sa vyznačuje radikálnym zjednodušením ovládačov, presunom generovania príkazov GPU na stranu aplikácie, možnosťou pripojenia ladících vrstiev, unifikovaním API pre rôzne platformy a použitím predkompilovaného intermediárneho zobrazenia kódu na vykonávanie na strane GPU. Aby sa zabezpečila vysoká výkonnosť a predvídateľnosť, Vulkan poskytuje aplikáciám prostriedky na priamu správu operácií GPU a vstavanú podporu pre viacvláknové spracovanie príkazov GPU, čím sa minimalizujú režijné náklady spôsobené ovládačom a možnosti implementované na strane ovládača sa podstatne zjednodušujú a stávajú sa predvídateľnejšími. Napríklad také operácie, ako je správa pamäte a spracovanie chýb, implementované v OpenGL na strane ovládača, sú v Vulkan presunuté na úroveň aplikácie.
Vulkan pokrýva všetky dostupné platformy a poskytuje jednotné API pre desktopové, mobilné systémy a Web, čo umožňuje používať jedno spoločné API pre rôzne grafické procesory a oblasti použitia. Vďaka viacvrstvovej architektúre Vulkan, ktorá predpokladá vytváranie nástrojov fungujúcich s akýmkoľvek GPU, môžu výrobcovia hardvéru pri vývoji využívať štandardné nástroje na testovanie kódu, ladenie a profilovanie. Na vytváranie shaderov je k dispozícii nové prenosné intermediárne zobrazenie SPIR-V, založené na LLVM a využívajúce spoločné technológie s OpenCL. Na správu zariadení a obrazoviek v Vulkan je navrhnuté rozhranie WSI (Window System Integration), ktoré rieši približne tie isté úlohy ako EGL v OpenGL ES. Podpora WSI je mimo krabice prístupná v Wayland — všetky aplikácie používajúce Vulkan môžu bežať v prostredí nemodifikovaných Waylandu. serverov Wayland. Možnosť práce cez WSI je tiež zabezpečená pre Android, X11 (s DRI3), Windows, Tizen, macOS a iOS.
Zdroj: opennet.ru
