След почти три години работа, консорциумът Khronos, занимаващ се с разработката на графични стандарти, публикува спецификация Vulkan 1.4, която определя API за достъп до графичните и изчислителните възможности на GPU. Новата спецификация обедини натрупаните разширения, които преди това бяха позиционирани като опционални, и предостави редица нови възможности, като повишила минималните изисквания към оборудването. Инструментарият Vulkan SDK планира да бъде публикуван през януари 2025 година.
Продукти с поддръжка на Vulkan 1.4 готвят за пускане компании като AMD, Arm, Imagination, Intel, NVIDIA, Qualcomm и Samsung. Отворените драйвери за GPU AMD (radv), Apple M1/M2 (honeykrisp), Intel (anv), NVIDIA (nvk) и Qualcomm (tu), разработвани от проекта Mesa, вече преминаха всички тестове за съвместимост с Vulkan 1.4 от комплекта CTS (Khronos Conformance Test Suite) и са включени в списъка на сертифицираните драйвери. Списъкът включва също драйвери от Samsung и Qualcomm за платформата Android, както и драйвери за GPU PowerVR D-Series DXT* от Imagination Technologies и проприетарни драйвери NVIDIA.
Основни нововъведения:
- Добавена е поддръжка за механизма „Streaming Transfers“, предназначен за осигуряване на поточно предаване на големи обеми данни между основната система (хост) и графичното устройство, без да се прекъсва рендеринга и без да се намалява неговата производителност. Механизмът е реализиран чрез новото разширение VK_EXT_host_image_copy, поддръжката на което е опционална.
- Преведени в разряда на задължителните функции, насочени към повишаване на производителността:
- Push Descriptors — възможност за записване на актуализации на дескриптори директно в командния буфер, вместо създаване на отделни набори дескриптори и тяхното свързване с командния буфер.
- VK_KHR_dynamic_rendering_local_read — позволява извършване на четене от вложени буфери (attachments) и ресурси, записани от предходни фрагментни шейдъри, в рамките на динамични проходи на рендеринга (render pass).
- VK_EXT_scalar_block_layout — позволява използването на C-подобна структура за блокове SPIR-V, в която нескалярните типове могат да се подравняват на базата на размера на техните компоненти.
- В състава са включени разширенията VK_KHR_maintenance5 и VK_KHR_maintenance6, предоставящи помощни команди и структури за опростяване на управлението на ресурсите и шейдърите.
- Гарантирано поддържане на рендеринг с резолюция 8K (7680 x 4320 пиксела) и използване на до 8 независими буфера за рендеринг.
- Включени са следните разширения:
- VK_KHR_global_priority
- VK_KHR_index_type_uint8
- VK_KHR_line_rasterization
- VK_KHR_load_store_op_none
- VK_KHR_map_memory2
- VK_KHR_push_descriptor
- VK_KHR_shader_expect_assume
- VK_KHR_shader_float_controls2
- VK_KHR_shader_subgroup_rotate
- VK_KHR_vertex_attribute_divisor
- VK_EXT_pipeline_protected_access
- VK_EXT_pipeline_robustness
- Много възможности, които по-рано бяха опционални, сега са задължителни.
- Добавен е голям брой нови команди и структури.
API Vulkan се отличава с радикално опростяване на драйверите, преминаване на генерирането на команди за GPU на страната на приложението, възможност за свързване на отладъчни слоеве, унификация на API за различни платформи и използване на предварително компилирано междинно представяне на кода за изпълнение на GPU.
За осигуряване на висока производителност и предсказуемост, Vulkan предоставя на приложенията средства за директно управление на операциите на GPU и вградено поддържане на многопоточна обработка на команди за GPU, което минимизира разходите, внесени от драйвера, а възможностите, реализируеми на страната на драйвера, стават значително опростени и по-предсказуеми. Например, операции като управление на паметта и обработка на грешки, реализирани в OpenGL на страната на драйвера, в Vulkan са преместени на ниво приложение.
Vulkan обхваща всички налични платформи и предоставя единен API за настолни, мобилни системи и Web, позволявайки използването на един общ API за различни графични процесори и области на приложение. Благодарение на многослойната архитектура на Vulkan, която предвижда създаването на инструменти, работещи с всякакви GPU, производителите на хардуер могат да използват типични инструменти за проверка на кода, отстраняване на грешки и профилиране.
За създаване на шейдери се предлага преносимо междинно представяне SPIR-V, базирано на LLVM и използващо общи с OpenCL базови технологии. C Vulkan също може да се използва език за шейдери HLSL, който се прилага в DirectX, чрез транслацията му в SPIR-V. За управление на устройства и екрани в Vulkan се предлага интерфейс WSI (Window System Integration), който решава почти същите задачи, както EGL в OpenGL ES. Поддръжката на WSI е налична по подразбиране в Wayland – всичките приложения, използващи Vulkan, могат да се стартират в среда на немодифицирани. сървъри Wayland. Поддержка работы через WSI также предусмотрена для Android, X11 (с DRI3), Windows, Tizen, macOS и iOS.
Източник: opennet.ru
