Пускане на Mesa 26.1, безплатна реализация на OpenGL и Vulkan

След три месеца разработка, беше пусната Mesa 26.1.0, имплементацията с отворен код на OpenGL и Vulkan API. Първата версия на Mesa 26.1.0 е експериментална; след като кодът бъде напълно стабилизиран, ще бъде пусната стабилната версия, 26.1.1.

Mesa 26.1 добавя поддръжка за графичния API Vulkan 1.4 в драйверите ANV за графични процесори Intel, RADV за графични процесори AMD, NVK за графични процесори NVIDIA, HoneyKrisp (hk) за графични процесори Apple, Turnip за графични процесори Qualcomm, PanVK за графични процесори ARM Mali, софтуерния растеризатор lavapipe (lvp) и емулаторния режим (vn). Драйверите v3dv (Broadcom VideoCore GPU за Raspberry Pi 4+) и dzn (Vulkan over Direct3D 12) поддържат Vulkan 1.0, драйверът kk (KosmicKrisp, Vulkan over Metal) поддържа Vulkan 1.1, а драйверът pvr (Imagination PowerVR GPU) поддържа Vulkan 1.2.

Mesa също така предоставя пълна поддръжка на OpenGL 4.6 за iris (графични процесори Intel Gen 8+), radeonsi (AMD), Crocus (по-стари графични процесори Intel Gen4-Gen7), AMD (r600), zink, llvmpipe, virgl (виртуален графичен процесор virgil3D за QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (OpenGL слой върху DirectX 12) и asahi (AGX графичен процесор, използван в чиповете Apple M1 и M2). Поддръжката на OpenGL 4.5 е налична за графични процесори NVIDIA (nvc0). Поддръжката на OpenGL 3.3 е налична в драйверите softpipe (софтуерен растеризатор) и nv50 (NVIDIA NV50). OpenGL 3 се поддържа в драйверите panfrost (графичен процесор ARM Mali) и v3.1d (графичен процесор Broadcom VideoCore).

Основни иновации:

  • Драйверите за графични процесори Intel (Iris, Crocus и ANV) вече поддържат директен достъп до графичния процесор от виртуални машини, използвайки нативни контексти във VirtIO-GPU. Нативните контексти подобряват производителността при работа с виртуален графичен процесор (virtio-gpu-gl) в гост система, като директно предават команди към действителния графичен процесор на хоста.
  • Добавена е поддръжка на OpenGL ES 2.0 за графични процесори PowerVR чрез драйвера Zink, което позволява хардуерно ускорен OpenGL на устройства, поддържащи Vulkan API.
  • Драйверът rusticl OpenCL вече изисква статично свързана C++ stdlib библиотека, за да работи правилно с приложения, които използват оригинални C++ stdlib библиотеки.
  • Драйверът за radeonsi (AMD) е добавил поддръжка за разширението GL_NV_timeline_semaphore за OpenGL.
  • Драйверът panfrost (ARM Mali) вече поддържа разширението OpenGL GL_EXT_shader_image_load_store.
  • Драйверът v3d (Broadcom VideoCore) вече поддържа разширението GL_ARB_sample_shading за OpenGL.
  • Добавена поддръжка за 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_условно_рендиране за 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 за видеорегистратор
    • VK_EXT_image_view_min_lod за panvk
    • VK_EXT_legacy_дитеринг за 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_формати за 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_вътрешно_синхронизирани_опашки за RADV
    • VK_KHR_maintenance4 за видеорегистратор
    • 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 за видеорегистратор
    • VK_KHR_shader_untyped_pointers за panvk
    • VK_KHR_swapchain_mutable_format за panvk
    • VK_QCOM_обработка_на_изображения за 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_xr_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, който имплементира виртуален графичен процесор за QEMU, вече не се поддържа и ще бъде премахнат, освен ако някой не е готов да поеме поддръжката му.

Източник: opennet.ru