След три месеца разработка беше представен релизът на свободно реализирания API OpenGL и Vulkan — Mesa 25.2.0. Първият изход на клона Mesa 25.2.0 има експериментален статус — след окончателна стабилизация на кода ще бъде пусната стабилна версия 25.2.1.
В Mesa 25.2 е налична поддръжка на графичния API Vulkan 1.4 в драйверите ANV за GPU Intel, RADV за GPU AMD, NVK за GPU NVIDIA, Asahi за 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.
В 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.
Основни нововъведения:
- В Vulkan-драйвера PanVK за устройства с GPU ARM Mali на база архитектура V10, като Mali-G610 и Mali-G310, е добавена поддръжка на графичния API Vulkan 1.4 (по-рано се поддържаше Vulkan 1.2).
- В OpenGL-драйвера r600 за стари GPU AMD (до серия Radeon HD 7000 включително) е добавена поддръжка на графичния API OpenGL 4.6 (по-рано се поддържаше OpenGL 4.5).
- В Vulkan-драйвера NVK е добавена поддръжка за GPU NVIDIA на базата на микропроектирания Blackwell и Kepler (GTX 600/700). За GPU Blackwell е реализирана поддръжка на Vulkan 1.4, а за GPU Kepler — API Vulkan 1.2 (по-нови версии на Vulkan не се поддържат поради хардуерни ограничения). За GPU NVIDIA на базата на микропроектирания Maxwell е осигурена пълна съвместимост с Vulkan 1.4.
- Оптимизирана е работата на компилатора на шейдъри NAK, написан на езика Rust и използван в драйвера NVK. В списъка на зависимостите към драйвера NVK е добавен crate-пакет rustc-hash, благодарение на който беше постигнато намаляване на времето за компилация на шейдърите с около 12%.
- Поддръжката на OpenGL за GPU NVIDIA Maxwell, Pascal и Volta по подразбиране е преместена от драйвера Nouveau към използването на драйвера Zink в комбинация с Vulkan-драйвера NVK. Zink също така е включен за осигуряване на поддръжка на OpenGL на системи с GPU Blackwell (не се планира добавяне на поддръжка на GPU Blackwell в OpenGL-драйвера Nouveau). Zink предоставя реализация на OpenGL 4.6 върху Vulkan, което позволява получаването на хардуерно ускорен OpenGL на устройства, поддържащи API Vulkan. Производителността на Zink е близка до производителността на родните реализации на OpenGL.
- Значително е повишена производителността на Vulkan-драйвера Honeykrisp за графични процесори, предоставяни в чиповете Apple M1/M2.
- В Vulkan-драйверите RADV (GPU AMD) и ANV (Intel) е добавена поддръжка на хардуерно ускорение на декодиране на видео във формат VP9. Тази възможност е реализирана чрез Vulkan-разширението VK_KHR_video_decode_vp9, подготвено през пролетта от работната група на Vulkan WG. Хардуерното ускорение е достъпно за GPU AMD, започвайки от GPU Navi 10 на базата на микроархитектура RDNA 1.0.
- В Vulkan-драйвера RADV за GPU AMD на базата на микроархитектури RDNA3 и RDNA4 е повишена производителността на трасировката на лъчи и е подобрена поддръжката на технологията за суперсемплинг FSR 4 (FidelityFX Super Resolution). Добавена е възможност за настройка на приоритетите за опашката на командите (OpenCL-разширение cl_khr_priority_hints).
- В OpenGL-драйвера radeonsi за стари поколения GPU AMD Evergreen и Cayman е реализирана поддръжка на OpenGL 4.6. Добавена е поддръжка на споделена виртуална памет (SVM, Shared Virtual Memory).
- В OpenGL-драйвера Iris и Vulkan-драйвера ANV е реализирана поддръжка на GPU, използвани в процесорите Intel Wildcat Lake. В Iris и ANV също е обявена стабилна поддръжка на GPU Intel на базата на архитектура Xe3, използвана в процесорите Panther Lake. Подобрена е поддръжката на семействата GPU Xe2 и Xe3. В драйвера Iris е добавена поддръжка на споделена виртуална памет (SVM, Shared Virtual Memory).
- В OpenGL-драйвера freedreno е добавена поддръжка на GPU Adreno X1-45, който се използва в SoC Qualcomm Snapdragon X Plus.
- Продължава развитието на OpenCL-драйвера Rusticl, написан на езика Rust и заменил драйвера Clover. В Rusticl е добавена поддръжка на SVM (Shared Virtual Memory), изображения в цветното пространство sRGB (формати CL_sRGBA и CL_sBGRA), формат FP16 (OpenCL-разширение cl_khr_fp16 за драйверите asahi, freedreno, llvmpipe, panfrost, radeonsi и zink).
- Добавен е Gallium3D фронтенд MFT (Media Foundation Transform), който позволява използването на D3D12 (Direct3D 12) драйвер за реализиране на други графични API. Разработен е от Microsoft за WSL (Windows Subsystem for Linux).
- Премахната е поддръжката на DRI2 (Direct Rendering Infrastructure), която беше заменена от интерфейса DRI3, използващ DMA-BUF за организиране на директен достъп до видеоадаптера. Причината е, че интерфейсът DRI3 съществува повече от 10 години, DRI2 е остарял, а всички поддържани GPU драйвери са прехвърлили на DRI3.
- Поддръжката на остарели методи за работа с буфери е спряна — оставена е само възможността за използване на dma-buf.
- Поддръжката на версии libX11, които не осигуряват безопасна работа в многопоточни приложения, е прекратена. Оставена е само поддръжка на libX11 1.8 (април 2022) и по-нови версии, които използват извикването XInitThreads().
- Обявена е за остаряла и е деактивирана по подразбиране поддръжката на EGL разширението EGL_WL_bind_wayland_display, реализирано за Wayland. За обмен на пикселови буфери между клиента и сървъра. Wayland се предлага да се използва протоколът linux_dmabuf. За възстановяване на поддръжката е необходим флаг „-Dlegacy-wayland=bind-wayland-display“ по време на компилация. Xwayland поддържа коректна работа без EGL_WL_bind_wayland_display от версия 24.1 (май 2024).
- Премахнат е остарелият OpenCL драйвер Clover. За OpenCL се препоръчва да се използва драйверът RustiCL, който е по-функционален и поддържа повече версии на OpenCL.
- В драйвера ANV (Intel) е реализирано Vulkan разширение:
- VK_KHR_shader_bfloat16
- В драйвера RADV (AMD) са реализирани Vulkan разширения:
- VK_KHR_shader_bfloat16
- VK_KHR_robustness2
- VK_EXT_zero_initialize_device_memory
- VK_EXT_scalar_block_layout
- VK_KHR_maintenance9
- VK_KHR_unified_image_layouts
- VK_KHR_shader_float8
- VK_EXT_host_image_copy
- В драйвера NVK (NVIDIA) са реализирани Vulkan разширения:
- VK_EXT_zero_initialize_device_memory
- VK_KHR_cooperative_matrix
- В драйвера zink е реализирано Vulkan разширение:
- NV_timeline_semaphore
- В драйвера v3d (GPU Broadcom VideoCore за Raspberry Pi 4+) е реализирано OpenGL разширение:
- on v3d GL_ARB_blend_func_extended
- В драйвера panfrost са реализирани OpenGL разширения:
- GL_KHR_texture_compression_astc_hdr
- GL_ARB_shader_clock
- GL_EXT_shader_realtime_clock
- В драйвера asahi (Apple) е реализирано OpenGL разширение:
- GL_KHR_texture_compression_astc_hdr
- В драйвера r600 (AMD) са реализирани OpenGL разширения
- GL_EXT_window_rectangles
- GL_EXT_shader_image_load_store
- В драйвера PanVK (GPU ARM Mali) са реализирани Vulkan разширения:
- VK_EXT_vertex_input_dynamic_state/vertexInputDynamicState
- VK_EXT_vertex_input_dynamic_state
- VK_EXT_vertex_attribute_divisor
- VK_KHR_maintenance4
- VK_KHR_maintenance5
- VK_EXT_direct_mode_display
- VK_EXT_extended_dynamic_state
- VK_KHR_shader_quad_control
- VK_KHR_draw_indirect_count
- VK_KHR_shader_integer_dot_product
- VK_KHR_shader_terminate_invocation
- VK_EXT_shader_demote_to_helper_invocation
- VK_EXT_shader_replicated_composites
- VK_EXT_depth_bias_control
- VK_EXT_primitive_topology_list_restart
- VK_EXT_image_2d_view_of_3d
- VK_EXT_texel_buffer_alignment
- VK_EXT_shader_subgroup_ballot
- VK_EXT_shader_subgroup_vote
- VK_KHR_load_store_op_none
- VK_EXT_load_store_op_none
- VK_EXT_inline_uniform_block
- VK_EXT_texture_compression_astc_hdr
- VK_EXT_depth_clamp_zero_one
- VK_KHR_depth_clamp_zero_one
- VK_EXT_depth_clip_control
- VK_KHR_unified_image_layouts
- VK_KHR_vulkan_memory_model
- VK_EXT_descriptor_indexing
- VK_KHR_maintenance6
- VK_KHR_shader_clock
- VK_KHR_shader_atomic_int64
- VK_KHR_calibrated_timestamps
- VK_EXT_non_seamless_cube_map
- VK_ARM_shader_core_properties
- VK_KHR_host_image_copy
Източник: opennet.ru
