След два години работа консорциумът Khronos, който се занимава с разработка на графични стандарти, публикува спецификация Vulkan 1.3, определяща API за достъп до графичните и изчислителните възможности на GPU. Новата спецификация включва поправки и разширения, натрупани през последните две години. Подчертава се, че изискванията на спецификацията Vulkan 1.3 са насочени към графично оборудване от клас OpenGL ES 3.1, което ще позволи поддръжката на новия графичен API на всички GPU, които поддържат Vulkan 1.2. Инструментариумът Vulkan SDK се планира да бъде публикуван в средата на февруари. Освен основната спецификация се планира предлагането на допълнителни разширения за мобилни и настолни устройства от среден и висок клас, което ще бъде осъществено в рамките на редакцията „Vulkan Milestone“.
Същевременно беше представен план за реализиране на поддръжката на новата спецификация и допълнителните разширения в графичните карти и драйверите на устройствата. Продукти с поддръжка на Vulkan 1.3 се подготвят за пускане от компании като Intel, AMD, ARM и NVIDIA. Например, компанията AMD обяви за предстояща поддръжка на Vulkan 1.3 в серията графични карти AMD Radeon RX Vega, както и във всички карти, базирани на архитектурата AMD RDNA. Компанията NVIDIA се подготвя да публикува драйвери с поддръжка на Vulkan 1.3 за Linux и Windows. Компанията ARM ще добави поддръжка на Vulkan 1.3 в GPU Mali.
Основни нововъведения:
- Реализирана е поддръжка на опростени проходи за рендериране (Streamlining Render Passes, VK_KHR_dynamic_rendering), което позволява започване на рендерирането без създаване на проходи за рендериране и обекти на фреймбуфера.
- Добавени са нови разширения за опростяване на управлението на компилацията на графичния конвейер (pipeline, набор от операции, който преобразува векторни графични примитиви и текстури в пикселно представяне).
- VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 — добавят допълнителни динамични състояния за намаляване на броя на компилираните и прикрепените обекти на състоянието.
- VK_EXT_pipeline_creation_cache_control — предоставя разширени инструменти за управление на времето и начина на компилиране на конвейерите.
- VK_EXT_pipeline_creation_feedback — предоставя информация за скомпилираните конвейери, за да се опрости профилирането и отстраняването на грешки.
- Редица възможности е прехвърлена от опционални в задължителни. Например, задължителна сега е реализацията на буферни адреси (VK_KHR_buffer_device_address) и моделът на паметта Vulkan, който определя как паралелно изпълняващите се потоци могат да достъпват споделени данни и операции за синхронизация.
- Предоставени са средства за точно управление на подгрупи (VK_EXT_subgroup_size_control), чрез които производителите могат да предложат поддръжка на различни размери на подгрупите, а разработчиците - да избират необходимия размер.
- Предоставено е разширение VK_KHR_shader_integer_dot_product, което може да се използва за оптимизация на работата на рамките за машинно обучение, благодарение на хардуерно ускорение на операциите по скаларното произведение.
- Общо в състава са включени 23 нови разширения:
- 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
- Добавен е нов тип обекти VkPrivateDataSlot. Реализирани са 37 нови команди и над 60 структури.
- Актуализирана е спецификацията SPIR-V 1.6, която определя универсално за всички платформи междинно представяне на шейдери, което може да се прилага както за графика, така и за паралелни изчисления. SPIR-V предвижда отделна фаза на компилацията на шейдерите в междинно представяне, което позволява създаването на фронтенд за различни високоуровневи езици. На базата на различни високоуровневи реализации се генерира единен междинен код, който може да се използва от драйверите на OpenGL, Vulkan и OpenCL без прилагане на вграден компилатор на шейдери.
- Предложена е концепция за профили на съвместимост. Първият базов профил (baseline profile) за платформата Android е подготвен от компанията Google, който ще улесни определянето на нивото на поддръжка на разширени способности на Vulkan на устройството, надхвърлящи спецификацията на Vulkan 1.0. За повечето устройства, поддръжката на профила ще може да бъде осигурена без инсталиране на OTA обновления.
Напомняме, че API Vulkan се отличава с коренно опростяване на драйверите, изнасяне на генерирането на команди за GPU на страната на приложението, възможност за свързване на отладъчни слоеве, унификация на API за различни платформи и прилагане на предварително компилирано междинно представяне на кода за изпълнение на страната на GPU. За да осигури висока производителност и предсказуемост, Vulkan предлага на приложенията средства за директно управление на операциите на GPU и вградена поддръжка на многопоточна обработка на команди за GPU, което минимизира разходите, произведени от драйвера, а възможностите, реализирани на страната на драйвера, значително се опростяват и стават по-предсказуеми. Например, операции като управление на паметта и обработка на грешки, реализирани в OpenGL на страната на драйвера, в Vulkan са изнесени на ниво приложение.
Vulkan обхваща всички налични платформи и предоставя единен API за настолни, мобилни системи и Web, позволявайки използването на един общ API за различни графични процесори и области на приложение. Благодарение на многослойната архитектура на Vulkan, която предвижда създаването на инструменти, работещи с всякакви GPU, производителите на оборудване могат да използват при разработката стандартни инструменти за проверка на кода, отстраняване на грешки и профилиране. За създаване на шейдове се предлага ново преносимо междинно представяне SPIR-V, базирано на LLVM и използващо общи с OpenCL основни технологии. За управление на устройства и екрани в Vulkan се предлага интерфейс WSI (Window System Integration), който решава приблизително същите задачи, като EGL в OpenGL ES. Поддръжката на WSI от кутията е налична в Wayland – всички приложения, използващи Vulkan, могат да се стартират в среда с непроменени сървъри Wayland. Поддержка работы через WSI также предусмотрена для Android, X11 (с DRI3), Windows, Tizen, macOS и iOS.
Източник: opennet.ru
