Реліз Mesa 26.1, вільної реалізації OpenGL та Vulkan

Після трьох місяців розробки представлений реліз вільної реалізації API OpenGL та Vulkan – Mesa 26.1.0. Перший випуск гілки Mesa 26.1.0 має експериментальний статус – після проведення остаточної стабілізації коду буде випущено стабільну версію 26.1.1.

У Mesa 26.1 доступна підтримка графічного API Vulkan 1.4 в драйверах ANV для GPU Intel, RADV для GPU AMD, NVK для GPU NVIDIA, HoneyKrisp (hk) для GPU Apple, Turnip для GPU Qualcomm, PanVK для GPU ARM Mali, в програмному емулятора (vn). У драйверах v3dv (GPU Broadcom VideoCore для Raspberry Pi 4+) і dzn (реалізація Vulkan поверх Direct3D 12) підтримується Vulkan 1.0, у драйвері kk (KosmicKrisp, Vulkan поверх Metal) - Vulkan 1.1, а драйвері pulG.

Mesa також забезпечується повна підтримка OpenGL 4.6 для драйверів iris (GPU Intel Gen 8+), radeonsi (AMD), Crocus (старі GPU Intel Gen4-Gen7), AMD (r600), zink, llvmpipe, virgl (віртуальний GPU Virgil3D для QEMU/ d3d12 (прошарку для організації роботи OpenGL поверх DirectX 12) та asahi (GPU AGX, що використовується в чіпах Apple M1 та M2). Підтримка OpenGL 4.5 доступна для GPU NVIDIA (nvc0). Підтримка OpenGL 3.3 є у драйверах softpipe (програмний розтеризатор) і nv50 (NVIDIA NV50). У драйверах panfrost (GPU ARM Mali) та v3d (GPU Broadcom VideoCore) підтримується OpenGL 3.1.

Основні нововведення:

  • У драйвери для GPU Intel (Iris, Crocus та ANV) додана можливість безпосередньо працювати з GPU з віртуальних машин, використовуючи нативні контексти (native context) у VirtIO-GPU. Нативні контексти дозволяють підвищити продуктивність роботи з віртуальним GPU (virtio-gpu-gl) із гостьової системи за рахунок прямої передачі команд у реальний хостовий GPU.
  • Для GPU PowerVR додано підтримку OpenGL ES 2.0, реалізовану через драйвер Zink, що дозволяє отримати апаратно прискорений OpenGL на пристроях, що підтримують API Vulkan.
  • Для OpenCL-драйвера rusticl тепер потрібна статично зібрана бібліотека C++ stdlib для коректної роботи з додатками, які використовують власні C++ stdlib.
  • До драйвера radeonsi (AMD) додано підтримку OpenGL-розширення GL_NV_timeline_semaphore.
  • До драйвера panfrost (ARM Mali) додано підтримку OpenGL-розширення GL_EXT_shader_image_load_store.
  • До драйвера v3d (Broadcom VideoCore) додано підтримку OpenGL-розширення GL_ARB_sample_shading.
  • Додана підтримка Vulkan-розширень:
    • VK_ARM_scheduling_controls для panvk
    • VK_EXT_acquire_drm_display для panvk
    • VK_EXT_astc_decode_mode для panvk
    • VK_EXT_attachment_feedback_loop_dynamic_state для panvk
    • VK_EXT_attachment_feedback_loop_layout для panvk
    • VK_EXT_blend_operation_advanced для lavapipe
    • VK_EXT_color_write_enable для panvk
    • VK_EXT_conditional_rendering для panvk
    • VK_EXT_depth_clamp_control для panvk
    • VK_EXT_descriptor_heap для RADV (при виставленні 'export RADV_EXPERIMENTAL=heap')
    • VK_EXT_hdr_metadata для v3dv
    • VK_EXT_image_drm_format_modifier для pvr
    • VK_EXT_image_view_min_lod для panvk
    • VK_EXT_legacy_dithering для panvk
    • VK_EXT_map_memory_placed для panvk
    • VK_EXT_nested_command_buffer для panvk
    • VK_EXT_non_seamless_cube_map для pvr
    • VK_EXT_present_timing для RADV, NVK, Turnip, ANV, Honeykrisp, panvk
    • VK_EXT_primitive_restart_index для RADV
    • VK_EXT_rgba10x6_formats для panvk
    • VK_EXT_shader_atomic_float для panvk
    • VK_EXT_shader_stencil_export для panvk
    • VK_EXT_zero_initialize_device_memory для panvk
    • VK_KHR_copy_memory_indirect для nvk, RADV/GFX8+
    • VK_KHR_device_address_commands для RADV
    • VK_{KHR,EXT}_{surface,swapchain}_maintenance1 для panvk
    • VK_KHR_get_display_properties2 для panvk
    • VK_KHR_get_surface_capabilities2 для panvk
    • VK_KHR_internally_synchronized_queues для RADV
    • VK_KHR_maintenance4 для pvr
    • VK_KHR_pipeline_executable_properties для pvr
    • VK_KHR_present_id для panvk, v3dv
    • VK_KHR_present_wait для panvk, v3dv
    • VK_KHR_sampler_ycbcr_conversion для pvr
    • VK_KHR_shader_integer_dot_product для pvr
    • VK_KHR_shader_untyped_pointers для panvk
    • VK_KHR_swapchain_mutable_format для panvk
    • VK_QCOM_image_processing для Turnip
    • VK_VALVE_mutable_descriptor_type для panvk
    • VK_VALVE_shader_mixed_float_dot_product для RADV (Vega20, Navi14, RDNA2+)
  • Реалізовано OpenCL-розширення:
    • cl_khr_subgroup_ballot для asahi, iris, llvmpipe, radeonsi та zink
    • cl_khr_subgroup_clustered_reduce для asahi, llvmpipe, radeonsi та zink
    • cl_khr_subgroup_extended_types для asahi, iris, llvmpipe, radeonsi та zink
    • cl_khr_subgroup_non_uniform_arithmetic для asahi, llvmpipe, radeonsi та zink
    • cl_khr_subgroup_non_uniform_vote для asahi, iris, llvmpipe, radeonsi та zink
    • cl_khr_subgroup_rotate для asahi, llvmpipe та zink
  • Драйвер VirGL з реалізацією віртуального GPU для QEMU залишився без супроводу і буде вилучений, якщо не знайдеться, хто бажає взяти його супровід у свої руки.

Джерело: opennet.ru