Релиз 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-драйвере 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).
Источник: http://www.opennet.ru/opennews/art.shtml? num=55593
© OpenNet