Вышла новая версия свободной реализации API OpenGL и Vulkan - Mesa 21.2
Основные новшества:
- Добавлен OpenGL-драйвер
asahi
с начальной поддержкой графического процессора, поставляемого в чипах Apple M1. Драйвер использует интерфейс Gallium и поддерживает большую часть возможностей OpenGL 2.1 и OpenGL ES 2.0. Код драйвера основан на эталонном Gallium-драйвереnoop
с переносом некоторого кода из драйвераPanfrost
, развиваемого для GPU ARM Mali. - Добавлен OpenGL-драйвер
Crocus
с поддержкой старых GPU Intel (на базе микроархитектур с 4-го по 7-ое поколение), не поддерживаемых драйвером 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 2x0) реализована поддержка 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-драйвереIris
проведена подготовительная работа по обеспечению поддержки грядущих видеокарт 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).
>>> Подробности