
После трех месяцев активной разработки разработчики представили релиз Mesa 26.1 — свободной реализации графических API OpenGL и Vulkan. Первый выпуск новой ветки имеет экспериментальный статус: после завершения финальной стабилизации кода команда выпустит стабильную версию с индексом 26.1.1.
В свежем релизе Mesa 26.1 доступна полноценная поддержка современного графического интерфейса Vulkan 1.4. Она реализована в драйверах ANV для графических процессоров Intel, RADV для решений от AMD, NVK для видеокарт NVIDIA, HoneyKrisp (hk) для чипов Apple, Turnip для мобильной графики Qualcomm, PanVK для чипов ARM Mali, а также в программном растеризаторе lavapipe (lvp) и в режиме эмулятора (vn). Драйверы v3dv (для GPU Broadcom VideoCore в Raspberry Pi 4+) и dzn (прослойка Vulkan поверх Direct3D 12) получили поддержку Vulkan 1.0, драйвер kk (KosmicKrisp, работающий поверх Metal) теперь поддерживает Vulkan 1.1, а драйвер pvr для графики Imagination PowerVR обновился до Vulkan 1.2.
Кроме того, в пакете обеспечена полная поддержка стандарта OpenGL 4.6 для целого ряда драйверов: iris (Intel Gen 8+), radeonsi (AMD), Crocus (устаревшие графические чипы Intel Gen4–Gen7), AMD (r600), zink, llvmpipe, virgl (виртуальный GPU Virgil3D для гипервизоров QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (интерфейс для запуска OpenGL поверх DirectX 12) и asahi (графика AGX в чипсетах Apple M1 и M2). Для видеокарт NVIDIA (nvc0) доступна поддержка OpenGL 4.5. Стандарт OpenGL 3.3 поддерживают программный растеризатор softpipe и драйвер nv50 (NVIDIA NV50), а OpenGL 3.1 реализован в драйверах panfrost (ARM Mali) и v3d (Broadcom VideoCore).
Главные нововведения и улучшения
В фирменные драйверы для графических чипов Intel (Iris, Crocus и ANV) добавлена возможность прямой работы с GPU из виртуальных машин с использованием нативных контекстов (native context) в VirtIO-GPU. Подобный подход позволяет заметно повысить производительность виртуального графического процессора (virtio-gpu-gl) в гостевой системе за счет прямой передачи команд на хостовый GPU.
Для аппаратных решений PowerVR реализована поддержка OpenGL ES 2.0 через прослойку Zink, что позволяет использовать ускоренный на уровне железа OpenGL на устройствах с поддержкой интерфейса 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_rgba10×6_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, iris, llvmpipe, radeonsi и zink
cl_khr_subgroup_non_uniform_vote для asahi, iris, llvmpipe, radeonsi и zink
cl_khr_subgroup_rotate для asahi, llvmpipe и zink
Популярный драйвер VirGL, отвечающий за работу виртуального графического процессора в QEMU, на данный момент остался без постоянного сопровождения. Если в сообществе не найдется энтузиаст, готовый взять на себя его поддержку, компонент будет удален из будущих релизов проекта.






