Опубликован релиз свободной реализации API OpenGL и Vulkan – Mesa 22.3.0. Первый выпуск ветки Mesa 22.3.0 имеет экспериментальный статус – после проведения окончательной стабилизации кода будет выпущена стабильная версия 22.3.1.
В Mesa 22.3 доступна поддержка графического API Vulkan 1.3 в драйверах anv для GPU Intel, radv для GPU AMD, tu для GPU Qualcomm и в режиме эмулятора (vn). Поддержка Vulkan 1.1 реализована в программном растеризаторе lavapipe (lvp), а Vulkan 1.0 в драйвере v3dv (GPU Broadcom VideoCore VI из Raspberry Pi 4).
В Mesa также обеспечивается полная поддержка OpenGL 4.6 для драйверов 965, iris (Intel), radeonsi (AMD), zink и llvmpipe. Поддержка OpenGL 4.5 доступна для GPU AMD (r600), NVIDIA (nvc0) и Qualcomm Adreno (freedreno), OpenGL 4.3 для virgl (виртуальный GPU Virgil3D для QEMU/KVM), а OpenGL 4.2 для драйвера d3d12 (прослойка для организации работы OpenGL поверх DirectX 12).
- В драйвере freedreno для GPU Qualcomm Adreno обеспечена поддержка графического API OpenGL 4.5, а в драйвере для эмулятора (vn) поддержка API Vulkan 1.3.
- В драйвере Panfrost реализована возможность кэширования шейдеров на диске и добавлена поддержка GPU Mali T620. Драйвер совместим со спецификацией OpenGL 3.1 и OpenGL ES 3.1.
- В Vulkan-драйвере RADV (AMD) добавлена поддержка GPU GFX11/RDNA3 (серия Radeon RX 7000). Проведена оптимизация кода для трассировки лучей. Добавлена поддержка пиксельных форматов R8G8B8, B8G8R8 и R16G16B16, а также 64-разрядных форматов вершинного буфера. Добавлена поддержка флага extendedDynamicState2PatchControlPoints, определяющего поддержку расширения VK_EXT_extended_dynamic_state2. Интегрирован Radeon Raytracing Analyzer.
- В состав включён драйвер Rusticl с реализацией спецификации OpenCL 3.0, определяющей API и расширения языка С для организации кросс-платформенных параллельных вычислений. Драйвер написан на языке Rust, разработан с использованием предоставляемого в Mesa интерфейса Gallium и выступает в роли аналога присутствующего в Mesa OpenCL-фронтэнда Clover. Clover уже давно находится в заброшенном состоянии и rusticl позиционируется как его будущая замена. Поддержка Rust и rusticl по умолчанию отключена и требует сборки с явным указанием опций “-D gallium-rusticl=true -Dllvm=enabled -Drust_std=2021”. При сборке в качестве дополнительных зависимостей необходимы компилятор rustc, генератор привязок bindgen, LLVM, инструментарий SPIRV-Tools и транслятор SPIRV-LLVM-Translator.
- В драйвере RadeonSI включена по умолчанию поддержка многопоточной отрисовки через OpenGL.
- Представлен Mesa-DB, новый тип кэша шейдеров, сохраняющий данные в одном файле.
- Добавлена поддержка расширений OpenGL:
- GL_ARB_shader_clock для llvmpipe.
- GL_KHR_blend_equation_advanced_coherent для zink.
- GL_NV_shader_atomic_float для llvmpipe.
- Добавлена поддержка Vulkan-расширений:
- VK_KHR_shader_clock для lavapipe.
- VK_EXT_attachment_feedback_loop_layout для RADV, lavapipe.
- VK_KHR_global_priority для RADV.
- VK_EXT_load_store_op_none для RADV.
- VK_EXT_mutable_descriptor_type для RADV.
- VK_EXT_shader_atomic_float для lvp.
- VK_EXT_shader_atomic_float2 для lvp.
- VK_EXT_image_robustness для v3dv.
- VK_EXT_extended_dynamic_state3 для lavapipe, RADV и ANV.
- VK_EXT_extended_dynamic_state2 для RADV.
- VK_EXT_pipeline_robustness для v3dv.
- VK_EXT_mesh_shader для ANV.