Издање Меса 26.1, бесплатна имплементација ОпенГЛ-а и Вулкана

Након три месеца развоја, објављена је имплементација отвореног кода OpenGL и Vulkan API-ја, Mesa 26.1.0. Прво издање гране Mesa 26.1.0 је експериментално; након што се код потпуно стабилизује, биће објављена стабилна верзија, 26.1.1.

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

Меса такође пружа пуну подршку за 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 графичка картица).

Главне иновације:

  • В драйверы для 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.
  • Додата подршка за Вулкан екстензије:
    • 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 остался без сопровождения и будет удалён, если не найдётся желающий взять его сопровождение в свои руки.

Извор: опеннет.ру