След три месеца разработка бе представено изданието на свободната реализация на API OpenGL и Vulkan — Mesa 26.1.0. Първото издание на клон 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, в софтуерния растеризатор lavapipe (lvp) и в режим на емулятор (vn). В драйверите v3dv (GPU Broadcom VideoCore за Raspberry Pi 4+) и dzn (реализация на Vulkan над Direct3D 12) се поддържа Vulkan 1.0, в драйвера kk (KosmicKrisp, Vulkan над Metal) — Vulkan 1.1, а в драйвера pvr (GPU Imagination PowerVR) — Vulkan 1.2.
В Mesa също е осигурена пълна поддръжка на OpenGL 4.6 за драйверите iris (GPU Intel Gen 8+), radeonsi (AMD), Crocus (стари GPU Intel Gen4-Gen7), AMD (r600), zink, llvmpipe, virgl (виртуален GPU Virgil3D за QEMU/KVM), freedreno (Qualcomm Adreno), 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
