После трёх месяцев разработки опубликован релиз свободной реализации API OpenGL и Vulkan – Mesa 21.2.0. Первый выпуск ветки Mesa 21.2.0 имеет экспериментальный статус – после проведения окончательной стабилизации кода будет выпущена стабильная версия 21.2.1.
В Mesa 21.2 реализована полная поддержка OpenGL 4.6 для драйверов 965, iris (Intel), radeonsi (AMD), zink и llvmpipe. Поддержка OpenGL 4.5 доступна для GPU AMD (r600) и NVIDIA (nvc0), а OpenGL 4.3 для virgl (виртуальный GPU Virgil3D для QEMU/KVM). Поддержка Vulkan 1.2 реализована для карт Intel и AMD, а также в режиме эмулятора (vn), поддержка Vulkan 1.1 доступна для GPU Qualcomm и программного растеризатора lavapipe, а Vulkan 1.0 для GPU Broadcom VideoCore VI (Raspberry Pi 4).
- В состав включён OpenGL-драйвер asahi с начальной поддержкой графического процессора, поставляемого в чипах Apple M1. Драйвер использует интерфейс Gallium и поддерживает большую часть возможностей OpenGL 2.1 и OpenGL ES 2.0. Код драйвера основан на эталонном Gallium-драйвере noop с переносом некоторого кода из драйвера Panfrost, развиваемого для GPU ARM Mali.
- В состав включён OpenGL-драйвер Crocus с поддержкой старых GPU Intel (на базе микроархитектур Gen4-Gen7), не поддерживаемых драйвером Iris. В отличие от драйвера i965 новый драйвер основан на архитектуре Gallium3D, выносящей задачи управления памятью на сторону DRI-драйвера в ядре Linux и предоставляющей готовый трекер состояний с поддержкой кэша повторного использования выводимых объектов.
- В состав включён драйвер PanVk, предоставляющий поддержку графического API Vulkan для GPU ARM Mali Midgard и Bifrost. PanVk развивается сотрудниками компании Collabora и позиционируется как продолжение развития проекта Panfrost, обеспечивающего поддержку OpenGL.
- В драйвере Panfrost для GPU Midgard (Mali T760 и новее) и GPU Bifrost (Mali G31, G52, G76) реализована поддержка OpenGL ES 3.1. Из дальнейших планов отмечается проведение работы по увеличению производительности на чипах Bifrost и реализация поддержки GPU на базе архитектуры Valhall (Mali G77 и новее).
- В 32-разрядных сборках для архитектуры x86 вместо инструкций x87 для математических вычислений задействованы инструкции sse2.
- В драйвере Nouveau nv50 для GPU NVIDIA GT21x (GeForce GT 2×0) реализована поддержка OpenGL ES 3.1.
- В Vulkan-драйвер TURNIP и OpenGL-драйвер Freedreno, развиваемые для GPU Qualcomm Adreno, реализована начальная поддержка GPU Adreno a6xx gen4 (a660, a635).
- В Vulkan-драйвер RADV (AMD) добавлена поддержка отсеивания примитивов (primitive culling) с использованием шейдерных движков NGG (Next-Gen Geometry). Реализована возможность сборки драйвера RADV на платформе Windows с использованием компилятора MSVC.
- В Vulkan-драйвере ANV (Intel) и OpenGL-драйвере проведена подготовительная работа по обеспечению поддержки грядущих видеокарт Intel Xe-HPG (DG2). В том числе включены начальные возможности, связанные с трассировкой лучей и поддержкой шейдеров для трассировки лучей.
- В драйвере lavapipe с реализацией программного растеризатора для API Vulkan (аналог llvmpipe, но для Vulkan, выполняющий трансляцию вызовов API Vulkan в API Gallium) реализована поддержка режима “wideLines” (обеспечивает поддержку линий с шириной, превышающей значение 1.0).
- Реализована поддержка динамического обнаружения и загрузки альтернативных бэкендов GBM (Generic Buffer Manager). Изменение нацелено на улучшение поддержки Wayland на системах с драйверами NVIDIA.
- В драйвере Zink (реализация API OpenGL поверх Vulkan, которая позволяет получить аппаратно ускоренный OpenGL при наличии в системе драйверов, ограниченных поддержкой только API Vulkan) реализована поддержка OpenGL-расширений GL_ARB_sample_locations, GL_ARB_sparse_buffer, GL_ARB_shader_group_vote, GL_ARB_texture_filter_minmax
и GL_ARB_shader_clock.
Добавлены модификаторы формата DRM (Direct Rendering Manager, включено расширение VK_EXT_image_drm_format_modifier). - В Vulkan-драйверы RADV (AMD), ANV (Intel) и lavapipe добавлена поддержка расширений:
- VK_EXT_provoking_vertex (RADV);
- VK_EXT_extended_dynamic_state2 (RADV);
- VK_EXT_global_priority_query (RADV);
- VK_EXT_physical_device_drm (RADV);
- VK_KHR_shader_subgroup_uniform_control_flow (RADV, ANV);
- VK_EXT_color_write_enable (RADV);
- VK_EXT_acquire_drm_display (RADV, ANV);
- VK_EXT_vertex_input_dynamic_state (lavapipe);
- VK_EXT_line_rasterization (lavapipe);
- VK_EXT_multi_draw (ANV, lavapipe, RADV);
- VK_KHR_separate_depth_stencil_layouts (lavapipe);
- VK_EXT_separate_stencil_usage (lavapipe);
- VK_EXT_extended_dynamic_state2 (lavapipe).