Релиз Mesa 25.0, свободной реализации OpenGL и Vulkan

После трёх месяцев разработки опубликован релиз свободной реализации API OpenGL и Vulkan – Mesa 25.0.0. Первый выпуск ветки Mesa 25.0.0 имеет экспериментальный статус – после проведения окончательной стабилизации кода будет выпущена стабильная версия 25.0.1.

В Mesa 25.0 доступна поддержка графического API Vulkan 1.4 в драйверах anv для GPU Intel, radv для GPU AMD, NVK для GPU NVIDIA, Asahi для GPU Apple, Turnip для GPU Qualcomm и в программном растеризаторе lavapipe (lvp).
В режиме эмулятора (vn) поддерживается API Vulkan 1.3, в драйвере PanVK для GPU ARM Mali – Vulkan 1.1, а в драйверах v3dv (GPU Broadcom VideoCore для Raspberry Pi 4+) и dzn (реализация Vulkan поверх Direct3D 12) – Vulkan 1.0.

В Mesa также обеспечивается полная поддержка OpenGL 4.6 для драйверов iris (GPU Intel Gen 8+), radeonsi (AMD), Crocus (старые GPU Intel Gen4-Gen7), zink, llvmpipe, virgl (виртуальный GPU Virgil3D для QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (прослойка для организации работы OpenGL поверх DirectX 12) и asahi (GPU AGX, используемый в чипах Apple M1 и M2). Поддержка OpenGL 4.5 доступна для GPU AMD (r600) и NVIDIA (nvc0). Поддержка OpenGL 3.3 присутствует в драйверах softpipe (программный растеризатор) и nv50 (NVIDIA NV50).

Основные новшества:

  • В Vulkan-драйверах anv (Intel), radv (AMD), NVK (NVIDIA), Asahi (Apple), PanVK (ARM Mali) и Turnip (Qualcomm), а также программном растеризаторе lavapipe (lvp) заявлена поддержка API Vulkan 1.4 (ранее поддерживалась версия Vulkan 1.3).
  • В Vulkan-драйвере RADV добавлена начальная поддержка GPU AMD RDNA4 (GFX12, серия AMD Radeon RX 9000).
  • Драйвер RadeonSI переведён на использование бэкенда компиляции шейдеров ACO, созданный компанией Valve в качестве альтернативы компилятору шейдеров LLVM. Бэкенд ACO нацелен на обеспечение генерации кода, насколько это возможно оптимального для шейдеров игровых приложений, а также на достижение очень высокой скорости компиляции. ACO написан на языке С++, разрабатывается с оглядкой на возможность применения для JIT-компиляции и использует быстрые для перебора структуры данных, избегая структур на основе указателей.
  • Добавлен драйвер amdgpu_virtio, позволяющий гостевой системе использовать OpenGL- и Vulkan-драйверы radeonsi, radeonsi_drv_video и radv, предоставляемые хост-окружением. Доступ осуществляется через VirtIO, что обеспечивает высокую производительность 3D-ускорения в виртуальной машине. Заявлено, что производительность amdgpu_virtio выше, чем при использовании драйверов virgl и venus, ранее разработанных для доступа к Vulkan и OpenGL из гостевых систем.
  • Расширены возможности OpenGL-драйвера Panfrost для GPU ARM Mali. Включён по умолчанию механизм “transaction elimination”, отбрасывающий избыточные операции (например, отбрасываются операции перезаписи фрагментов, не изменившимися с прошлой отрисовки). Добавлена поддержка инкрементальной отрисовки, позволяющая снизить потребление памяти при рендеринге большого числа объектов за счёт раздельной обработки фрагментов (tile). Добавлена поддержка режима AFBC 32×8, применяемого для оптимизации работы с буфером вывода (scan-out buffer) в некоторых дисплейных контроллерах. Максимально поддерживаемая ширина и высота текстур увеличена с 8192 до 32768 пикселей. Добавлена поддержка режима текстурирования MTK_FMT_MOD_TILE_16L32S, при котором фрагментированные данные копируются во временный нефрагментированный буфер перед отрисовкой (используется для работы с аппаратными декодировщиками видео, присутствующими в SoC MediaTek).
  • В драйвер ANV (Intel) добавлена поддержка Vulkan-расширений для декодирования видео в формате AV1.
  • В Vulkan-драйвере PanVK для GPU ARM Mali на базе архитектуры V10, таких как Mali-G610 и Mali-G310, реализована поддержка API Vulkan 1.1 (ранее поддерживалась версия Vulkan 1.0). PanVK включён в список драйверов, доступных для использования в Mesa по умолчанию (ранее PanVK не отображался в списке драйверов и для его использования нужно было выставлять переменную окружения). На системах ARM сборка PanVK включена по умолчанию.
  • В драйвере PanVK реализованы Vulkan-расширения:
  • В драйвер RADV (AMD) добавлена поддержка Vulkan-расширений VK_KHR_maintenance8 и VK_KHR_depth_clamp_zero_one.
  • В драйвер rusticl добавлена поддержка OpenCL-расширения [[https://registry.khronos.org/OpenCL/sdk/3.0/docs/man/html/cl_khr_depth_images.html cl_khr_depth_images.
  • Release. Ссылка here.