Дата публикации:Wed, 19 Feb 2025 21:57:34 +0300
После трёх месяцев разработки опубликован релиз свободной реализации 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 32x8, применяемого для оптимизации работы с буфером вывода (scan-out buffer) в некоторых дисплейных контроллерах.
Максимально поддерживаемая ширина и высота текстур увеличена с 8192 до 32768 пикселей.
Добавлена поддержка режима текстурирования MTK_FMT_MOD_TILE_16L32S, при котором фрагментированные данные копируются во временный нефрагментированный буфер перед отрисовкой (используется для работы с аппаратными декодировщиками видео, присутствующими в SoC MediaTek).
В Vulkan-драйвере PanVK для GPU ARM Mali на базе архитектуры V10, таких как Mali-G610 и Mali-G310, реализована поддержка API Vulkan 1.1 (ранее поддерживалась версия Vulkan 1.0). PanVK включён в список драйверов, доступных для использования в Mesa по умолчанию (ранее PanVK не отображался в списке драйверов и для его использования нужно было выставлять переменную окружения). На системах ARM сборка PanVK включена по умолчанию.
В драйвере PanVK реализованы Vulkan-расширения:
-
[url=https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_map_memory2.html]VK_KHR_map_memory2[/url]
[url=https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_global_priority.html]VK_EXT_global_priority[/url]
[url=https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_pipeline_robustness.html]VK_EXT_pipeline_robustness[/url]
[url=https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_provoking_vertex.html]VK_EXT_provoking_vertex[/url]
VK_KHR_maintenance8 и VK_KHR_depth_clamp_zero_one.
В драйвер rusticl добавлена поддержка OpenCL-расширения cl_khr_depth_images.
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=62752