Két év munka után a grafikai szabványok fejlesztésével foglalkozó Khronos konzorcium közzétette a Vulkan 1.3 specifikációját, amely meghatározza az API-t a GPU grafikai és számítási lehetőségeihez való hozzáféréshez. Az új specifikáció magában foglalja az elmúlt két évben felhalmozott javításokat és kiterjesztéseket. Megjegyzik, hogy a Vulkan 1.3 specifikáció követelményei az OpenGL ES 3.1 osztályú grafikai hardverre vonatkoznak, ami lehetővé teszi az új grafikai API támogatását minden olyan GPU esetében, amely támogatja a Vulkan 1.2-t. A Vulkan SDK eszközkészletét február közepén tervezik közzétenni. Az alap specifikáción kívül további kiterjesztéseket is terveznek kínálni középkategóriás és felső kategóriás mobil és asztali eszközök számára, amelyek támogatása a „Vulkan Milestone” kiadás keretein belül történik.
Egyidejűleg bemutatták az új specifikáció és a további kiterjesztések támogatásának megvalósítási tervét a grafikus kártyákban és az eszközmeghajtókban. A Vulkan 1.3 támogatásával készülő termékeket az Intel, AMD, ARM és NVIDIA cégek tervezik kiadni. Például az AMD bejelentette, hogy hamarosan biztosítja a Vulkan 1.3 támogatását az AMD Radeon RX Vega grafikus kártyák sorozatában, valamint minden AMD RDNA architektúrával rendelkező kártyán. Az NVIDIA készül, hogy kiadjon a Vulkan 1.3 támogatását tartalmazó meghajtókat Linux és Windows operációs rendszerekhez. Az ARM pedig hozzáadja a Vulkan 1.3 támogatást a Mali GPU-hoz.
Főbb újítások:
- Megvalósult az egyszerűsített renderelési átjárók támogatása (Streamlining Render Passes, VK_KHR_dynamic_rendering), amelyek lehetővé teszik a renderelést anélkül, hogy renderelési átjárókat és framebuffer objektumokat kellene létrehozni.
- Új kiterjesztéseket adtak hozzá a grafikus csővezeték (pipeline) fordításának egyszerűsítésére, amely egy műveletsorozat, amely a vektorgrafikai primitíveket és textúrákat pixel képviselővé alakítja.
- VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 — további dinamikus állapotokat adnak hozzá a fordított és csatlakoztatott állapotobjektumok számának csökkentéséhez.
- VK_EXT_pipeline_creation_cache_control — kiterjesztett eszközöket biztosít arra vonatkozóan, hogy mikor és hogyan kell a csővezetékeket fordítani.
- VK_EXT_pipeline_creation_feedback — információt nyújt a lefordított csővezetékekről, amely egyszerűsíti a profilvizsgálatot és a hibakeresést.
- Számos lehetőség kötelezővé vált az opcionális helyett. Például kötelezővé vált a puffertartományok megvalósítása (VK_KHR_buffer_device_address) és a Vulkan memória modell, amely meghatározza, hogyan férhetnek hozzá a párhuzamosan futó szálak a megosztott adatokhoz és a szinkronizálási műveletekhez.
- Pontosan vezérelhetők a szubcsoportok (VK_EXT_subgroup_size_control), lehetővé téve a gyártóknak, hogy támogassanak több szubcsoport méretet, miközben a fejlesztők kiválaszthatják a kívánt méretet.
- Az VK_KHR_shader_integer_dot_product kiterjesztés elérhető, amely optimalizálja a gépi tanulási keretrendszerek működését a skaláris szorzási műveletek hardveres gyorsításának köszönhetően.
- Összesen 23 új kiterjesztés került bevezetésre:
- 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
- Új VkPrivateDataSlot objektumtípus került hozzáadásra. 37 új parancs és több mint 60 struktúra valósult meg.
- Frissítve lett a SPIR-V 1.6 specifikáció, amely egy univerzális közbenső reprezentációt definiál minden platform számára, amely felhasználható grafikához és párhuzamos számításokhoz egyaránt. A SPIR-V lehetővé teszi a shaderek közbenső reprezentációs fordításának elkülönített fázisának létrehozását, ami lehetővé teszi, hogy különböző magas szintű nyelvekhez front-endeket hozzanak létre. Különböző magas szintű megvalósítások alapján egyetlen közbenső kódot generálnak, amelyet az OpenGL, a Vulkan és az OpenCL illesztőprogramjai használhatnak beépített shader fordító használata nélkül.
- Javasolták a kompatibilitási profilok koncepcióját. A Google elsőként készített egy alapprofilt (baseline profile) az Android platform számára, amely megkönnyíti a Vulkan bővített funkcióinak támogatási szintjének megállapítását az eszközön, amely meghaladja a Vulkan 1.0 specifikációt. A legtöbb eszköz számára a profil támogatásának biztosítása OTA-frissítések telepítése nélkül is lehetséges lesz.
Emlékeztetjük, hogy a Vulkan API figyelemre méltóan egyszerűsíti a driverek működését, lehetővé téve a GPU parancsgenerálás átvitelét az alkalmazás oldalára, debug rétegek csatlakoztatását, az API egységesítését különböző platformok számára, valamint a kód előkódolt, köztes reprezentációjának alkalmazását a GPU oldalán történő végrehajtáshoz. A Vulkan a magas teljesítmény és kiszámíthatóság érdekében közvetlen irányítást biztosít a GPU műveletek felett, és beépített támogatást kínál a GPU parancsok párhuzamos feldolgozásához, minimalizálva a driverek által okozott költségeket, miközben a driver oldalon megvalósított lehetőségek is egyszerűsödnek és kiszámíthatóbbá válnak. Például a memória kezelés és hibakezelés, amelyet az OpenGL a driver oldalán valósít meg, a Vulkanban az alkalmazás szintjére kerül áthelyezésre.
A Vulkan lefedi az összes elérhető platformot, és egységes API-t biztosít desktop, mobil rendszerek és Web számára, lehetővé téve egy közös API használatát különböző grafikus processzorokkal és alkalmazási területekkel. A Vulkan többrétegű architektúrája lehetővé teszi olyan eszközök létrehozását, amelyek bármely GPU-val működnek, a gyártók pedig hagyományos eszközöket használhatnak a kód ellenőrzésére, debugolására és profilozására. Az új hordozható köztes reprezentáció, a SPIR-V, amely az LLVM alapjaira épül és közös alaptechnológiákat használ az OpenCL-lel, szintén a shaderek létrehozásához készült. A Vulkanban a WSI (Window System Integration) interfész kezelési funkciókat kínál az eszközökhöz és kijelzőkhöz, amely nagyjából ugyanezeket a feladatokat látja el, mint az EGL az OpenGL ES-ben. A WSI támogatás natívan elérhető a Waylandban – minden Vulkan-t használó alkalmazás gond nélkül futtatható változtatások nélkül. szerverek Wayland. A WSI-n keresztüli működés lehetősége biztosított az Android, X11 (DRI3-tól), Windows, Tizen, macOS és iOS számára.
Forrás: opennet.ru
