Реліз 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 _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).

Джерело: opennet.ru

Додати коментар або відгук