Vulkan продолжает эволюционировать, и каждое обновление спецификации приносит не только технические уточнения, но и новые возможности для разработчиков. Версия 1.4.348 — очередной шаг вперёд, добавляющий четыре расширения, каждое из которых решает свои задачи — от нейросетевых вычислений на Arm до подсказок по производительности очередей на Qualcomm.
Четыре новых расширения
VK_EXT_primitive_restart_index: кастомный индекс перезапуска примитивов
Самое интересное расширение в этом релизе — VK_EXT_primitive_restart_index. Оно позволяет задавать произвольный индекс перезапуска примитивов (custom primitive restart index). Над расширением работали:
- Майк Блюменкранц (Mike Blumenkrantz) из Valve (известный по работе над драйвером Zink — реализации OpenGL поверх Vulkan).
- Инженеры LunarG, Igalia и NVIDIA.
Для сообщества Linux-гейминга это важно, так как расширение помогает в эмуляции OpenGL поверх Vulkan. Это ещё один шаг к тому, чтобы старые OpenGL-игры и приложения могли работать через современный стек Vulkan.
VK_ARM_data_graph_instruction_set_tosa: поддержка нейросетевых операций
Расширение от Arm добавляет поддержку набора инструкций TOSA.001000.1 для использования в графах данных через VK_ARM_data_graph. TOSA (Tensor Operator Set Architecture) — это архитектура тензорных операторов, предназначенная для операций над целыми тензорами в глубоких нейронных сетях.
VK_ARM_scheduling_controls (revision 2): обновлённый контроль планирования
Второе расширение от Arm — VK_ARM_scheduling_controls — получило обновление до второй редакции. Добавлены новые параметры контроля диспетчеризации и другие изменения, дающие разработчикам больше возможностей для тонкой настройки планирования задач на GPU.
VK_QCOM_queue_perf_hint: подсказки по производительности очередей
Расширение от Qualcomm позволяет приложениям передавать драйверу подсказки (hints) о желаемых ограничениях энергопотребления и влиянии на тактовую частоту устройства. Это особенно актуально для мобильных устройств, где баланс между производительностью и энергоэффективностью критичен.
А что у NVIDIA?
NVIDIA выпустила бета-драйвер 595.44.05 для Linux, который уже включает поддержку нескольких свежих расширений Vulkan:
- VK_KHR_device_fault
- VK_KHR_shader_abort
- VK_KHR_shader_constant_data
- VK_EXT_device_memory_report
- VK_EXT_primitive_restart_index (то самое, о котором мы говорили выше)
Бета-драйвер также содержит несколько исправлений. Загрузить его можно на developer.nvidia.com.
Детальное описание всех изменений в Vulkan 1.4.348 доступно в репозитории Vulkan-Docs на GitHub.