Компания Collabora объявила о реализации в драйвере PanVK поддержки графического API Vulkan 1.1 (ранее поддерживалась только версия Vulkan 1.0). Драйвер обеспечивает поддержку графического API Vulkan на устройствах с GPU ARM на базе архитектуры V10, таких как Mali-G610 и Mali-G310. Помимо поддержки Vulkan 1.1 в код PanVK добавлена поддержка многих расширений из более новых версий Vulkan, но полная совместимость с Vulkan 1.2 пока не достигнута. Реализованы следующие расширения:
- VK_KHR_8bit_storage
- VK_KHR_dedicated_allocation
- VK_KHR_global_priority
- VK_KHR_index_type_uint8
- VK_KHR_map_memory2
- VK_KHR_multiview (v10+)
- VK_KHR_shader_draw_parameters
- VK_KHR_shader_float16_int8
- VK_KHR_shader_non_semantic_info
- VK_KHR_shader_relaxed_extended_instruction
- VK_KHR_shader_subgroup_rotate (v10+)
- VK_KHR_vertex_attribute_divisor
- VK_KHR_zero_initialize_workgroup_memory
- VK_EXT_4444_formats
- VK_EXT_global_priority_query
- VK_EXT_global_priority
- VK_EXT_host_query_reset
- VK_EXT_image_robustness
- VK_EXT_pipeline_robustness
- VK_EXT_provoking_vertex
- VK_EXT_queue_family_foreign
- VK_EXT_sampler_filter_minmax (v10+)
- VK_EXT_scalar_block_layout
- VK_EXT_subgroup_size_control (v10+)
- VK_EXT_tooling_info
Поддержка Vulkan 1.1 в PanVK уже принята в ветку, на базе которой разрабатывается релиз Mesa 25.0. Кроме того, PanVK включён в список драйверов, доступных для использования в Mesa по умолчанию (ранее PanVK не отображался в списке драйверов и для его использования нужно было выставлять переменную окружения). На системах ARM сборка PanVK включена по умолчанию. Код для поддержки отдельных расширений Vulklan 1.2 передан для включения в основной состав Mesa.
Отдельно отмечено расширение функциональности открытого OpenGL-драйвера Panfrost, разрабатываемого для GPU ARM Mali параллельно с Vulkan-драйвером PanVK:
- Для более эффективного использования пропускной способности в драйвере включён по умолчанию механизм “transaction elimination”, отбрасывающий избыточные операции (например, отбрасываются операции перезаписи фрагментов, не изменившимися с прошлой отрисовки).
- Добавлена поддержка инкрементальной отрисовки, позволяющей выполнять рендеринг большого числа объектов без избыточного потребления памяти за счёт раздельной обработки фрагментов (tile).
- Добавлена поддержка режима AFBC 32×8, применяемого для оптимизации работы с буфером вывода (scan-out buffer).
- Максимально поддерживаемая ширина и высота текстур увеличена с 8192 до 32768 пикселей.
- Добавлена поддержка режима текстурирования MediaTek MTK_FMT_MOD_TILE_16L32S, при котором фрагментированные данные копируются во временный нефрагментированный буфер перед отрисовкой (используется для работы с аппаратными декодировщиками видео, присутствующими в SoC MediaTek).