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

После трёх месяцев разработки опубликован релиз свободной реализации 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 добавлена поддержка расширений:
Release. Ссылка here.