Релиз Mesa 24.3, свободной реализации OpenGL и Vulkan
После трёх месяцев разработки опубликован релиз свободной реализации API OpenGL и Vulkan - Mesa 24.3.0. Первый выпуск ветки Mesa 24.3.0 имеет экспериментальный статус - после проведения окончательной стабилизации кода будет выпущена стабильная версия 24.3.1.
В Mesa 24.3 доступна поддержка графического API Vulkan 1.3 в драйверах anv для GPU Intel, radv для GPU AMD, NVK для GPU NVIDIA, tu для GPU Qualcomm, в программном растеризаторе lavapipe (lvp), в режиме эмулятора (vn) и в v3dv (GPU Broadcom VideoCore для Raspberry Pi 4+). Поддержка Vulkan 1.0 реализована в драйверах dzn (реализация Vulkan поверх Direct3D 12) и panvk (GPU ARM Mali).
В 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).
Основные новшества:
- В драйвере v3dv обеспечена полная поддержка графического API Vulkan 1.3 для GPU VideoCore, используемых на платах Raspberry Pi 4 и Raspberry Pi 5.
- Добавлен новый Vulkan-драйвер gfxstream-vk, который может применяться для виртуализации API Vulkan и доступа к данному графическому API из гостевых систем на базе Linux, Android и Fuchsia. Драйвер используется Google в эмуляторе Android, эмуляторе Fuchsia, в облачных сервисах c Android и в Android Automotive OS (AAOS).
- В интерфейс интеграции графического API Vulkan с оконными системами (WSI, Windowing System Integration) добавлена поддержка Vulkan-расширения VK_PRESENT_MODE_FIFO_KHR для применения в окружениях на базе Wayland протокола FIFO, позволяющего при выводе использовать ожидание завершения вертикальной развёртки (vblank) вместо использования callback-вызовов при каждой готовности отобразить новый кадр, что решает проблему с высокой нагрузкой на GPU при использовании VSync.
- На системах с GPU Intel на базе архитектуры Xe2 по умолчанию включено сжатие буферов глубины (z-буферов).
- В OpenGL-драйвер iris и Vulkan-драйвер ANV добавлена начальная поддержка GPU Intel на базе архитектуры Xe3, задействованной в процессорах Panther Lake.
В драйвер NVK (NVIDIA) добавлена поддержка Vulkan-расширений:
- VK_EXT_descriptor_buffer
- VK_EXT_post_depth_coverage
- VK_EXT_legacy_vertex_attributes
- VK_KHR_maintenance7
- VK_KHR_dynamic_rendering_local_read
- VK_NV_compute_shader_derivatives
- VK_KHR_compute_shader_derivatives
- VK_KHR_shader_float_controls2
- VK_EXT_host_image_copy (для GPU Turing+)
- VK_KHR_shader_quad_control
- VK_KHR_fragment_shading_rate
- VK_EXT_depth_clamp_zero_one
- VK_EXT_device_generated_commands
В драйвер RADV (AMD) добавлена поддержка Vulkan-расширений:
В драйвер ANV (Intel) добавлена поддержка Vulkan-расширений
В драйвер hasvk (Intel Ivy Bridge, Haswell и Broadwell) добавлена поддержка Vulkan-расширений:
- В драйверы hk, tu, v3dv и lvp добавлена поддержка Vulkan-расширения VK_KHR_shader_relaxed_extended_instruction.
Добавлена поддержка новых расширений OpenGL:
- GL_KHR_shader_subgroup в драйвер radeonsi
- GL_OVR_multiview в драйвер zink
- GL_OVR_multiview2 в драйвер zink
- GL_ARB_draw_indirect в драйвер etnaviv/HALTI5+
- GL_EXT_draw_buffers2 в драйвер etnaviv/HALTI5+
- GL_ARB_draw_buffers_blend в драйвер etnaviv/HALTI5+
- GL_ARB_framebuffer_no_attachments в драйвер etnaviv
- GL_ARB_timer_query в драйвер Panfrost
- GL_EXT_disjoint_timer_query в драйвер Panfrost