After three months of development, the release of the free implementation of OpenGL and Vulkan API — Mesa 25.2.0 is presented. The first release of the Mesa 25.2.0 branch has experimental status — a stable version 25.2.1 will be released after the final code stabilization.
Mesa 25.2 offers support for the Vulkan 1.4 graphics API in the ANV drivers for Intel GPUs, RADV for AMD GPUs, NVK for NVIDIA GPUs, Asahi for Apple GPUs, Turnip for Qualcomm GPUs, PanVK for ARM Mali GPUs, in the software rasterizer lavapipe (lvp) and in emulator mode (vn). Vulkan 1.0 is supported in the v3dv drivers (Broadcom VideoCore GPU for Raspberry Pi 4+) and dzn (implementation of Vulkan over Direct3D 12).
Mesa also provides full support for OpenGL 4.6 for the iris drivers (Intel Gen 8+ GPUs), radeonsi (AMD), Crocus (old Intel Gen4-Gen7 GPUs), AMD (r600), zink, llvmpipe, virgl (virtual GPU Virgil3D for QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (layer for running OpenGL on DirectX 12), and asahi (GPU AGX used in Apple M1 and M2 chips). OpenGL 4.5 support is available for NVIDIA GPUs (nvc0). OpenGL 3.3 is present in the softpipe (software rasterizer) and nv50 (NVIDIA NV50) drivers. OpenGL 3.1 is supported in the panfrost (ARM Mali GPU) and v3d (Broadcom VideoCore GPU) drivers.
Key innovations:
- In the PanVK Vulkan driver for devices with ARM Mali GPUs based on the V10 architecture, such as Mali-G610 and Mali-G310, support for the Vulkan 1.4 graphics API has been added (previously supported Vulkan 1.2).
- In the r600 OpenGL driver for older AMD GPUs (up to and including the Radeon HD 7000 series), support for the OpenGL 4.6 graphics API has been added (previously supported OpenGL 4.5).
- In the NVK Vulkan driver, support for NVIDIA GPUs based on the Blackwell and Kepler microarchitectures (GTX 600/700) has been added. For Blackwell GPUs, Vulkan 1.4 support is implemented, while for Kepler GPUs — Vulkan 1.2 (newer Vulkan versions are not supported due to hardware limitations). Full compatibility with Vulkan 1.4 is ensured for NVIDIA GPUs based on Maxwell microarchitecture.
- The shader compiler NAK, written in Rust and used in the NVK driver, has been optimized. The rustc-hash crate package has been included as a dependency for the NVK driver, which has reduced shader compilation time by approximately 12%.
- OpenGL support for NVIDIA Maxwell, Pascal, and Volta GPUs is now switched by default from the Nouveau driver to using the Zink driver in conjunction with the NVK Vulkan driver. Zink is also used to provide OpenGL support on systems with Blackwell GPUs (there are no plans to add Blackwell GPU support to the Nouveau OpenGL driver). Zink provides an implementation of OpenGL 4.6 on top of Vulkan, allowing for hardware-accelerated OpenGL on devices that support the Vulkan API. Zink's performance is close to that of the native OpenGL implementations.
- The performance of the Honeykrisp Vulkan driver for graphics processors supplied in Apple M1/M2 chips has been significantly increased.
- Hardware acceleration for VP9 video decoding has been added to the RADV (AMD GPU) and ANV (Intel) Vulkan drivers. This capability is realized through the VK_KHR_video_decode_vp9 Vulkan extension, which was prepared in spring by the Vulkan WG working group. Hardware acceleration is available for AMD GPUs starting from the Navi 10 architecture based on RDNA 1.0.
- In the RADV Vulkan driver for AMD GPUs based on RDNA3 and RDNA4 architectures, ray tracing performance has been improved, and support for FSR 4 (FidelityFX Super Resolution) super sampling technology has been enhanced. A feature for setting priorities for the command stream queue has been added (OpenCL extension cl_khr_priority_hints).
- In the radeonsi OpenGL driver for older AMD GPU families Evergreen and Cayman, support for OpenGL 4.6 has been implemented. Shared Virtual Memory (SVM) support has also been added.
- Support for GPUs used in Intel Wildcat Lake processors has been implemented in the Iris OpenGL driver and the ANV Vulkan driver. Stable support for Intel GPUs based on the Xe3 architecture, used in Panther Lake processors, has also been announced in Iris and ANV. Support for Xe2 and Xe3 GPU families has been improved. The Iris driver has added Shared Virtual Memory (SVM) support.
- Support for the Adreno X1-45 GPU used in Qualcomm Snapdragon X Plus SoCs has been added to the freedreno OpenGL driver.
- The development of the Rusticl OpenCL driver, written in Rust and replacing the Clover driver, continues. Rusticl has added support for SVM (Shared Virtual Memory), images in sRGB color space (formats CL_sRGBA and CL_sBGRA), and the FP16 format (OpenCL extension cl_khr_fp16 for asahi, freedreno, llvmpipe, panfrost, radeonsi, and zink drivers).
- The Gallium3D frontend MFT (Media Foundation Transform) has been added, allowing the use of the D3D12 (Direct3D 12) driver for implementing other graphics APIs. Developed by Microsoft for WSL (Windows Subsystem for Linux).
- Support for the DRI2 (Direct Rendering Infrastructure) has been removed, with DRI3 being introduced for direct access to the video adapter, utilizing DMA-BUF. It is noted that the DRI3 interface has existed for over 10 years, DRI2 is now outdated, and all supported GPU drivers have long implemented the DRI3 interface.
- Support for outdated buffer sharing methods has been discontinued — only the use of dma-buf is available.
- Support for libX11 versions that do not ensure safe operation in multi-threaded applications has been discontinued. Only support for libX11 1.8 (April 2022) and later releases, which use the XInitThreads() call, remains.
- Support for the EGL extension EGL_WL_bind_wayland_display, implemented for Wayland, has been deprecated and disabled by default. To share pixel buffers between the client and proxy server Wayland, the linux_dmabuf Wayland protocol is suggested. To restore support, the flag ‘-Dlegacy-wayland=bind-wayland-display’ must be specified during the build. Xwayland supports correct operation without EGL_WL_bind_wayland_display starting from the 24.1 release (May 2024).
- The outdated OpenCL driver Clover has been removed. For OpenCL, the RustiCL driver should be used, which is more functional and supports more versions of OpenCL.
- The Vulkan extension has been implemented in the ANV (Intel) driver:
- VK_KHR_shader_bfloat16
- Vulkan extensions have been implemented in the RADV (AMD) driver:
- 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
- Vulkan extensions have been implemented in the NVK (NVIDIA) driver:
- VK_EXT_zero_initialize_device_memory
- VK_KHR_cooperative_matrix
- The Vulkan extension has been implemented in the zink driver:
- NV_timeline_semaphore
- The OpenGL extension has been implemented in the v3d (GPU Broadcom VideoCore for Raspberry Pi 4+) driver:
- on v3d GL_ARB_blend_func_extended
- OpenGL extensions have been implemented in the panfrost driver:
- GL_KHR_texture_compression_astc_hdr
- GL_ARB_shader_clock
- GL_EXT_shader_realtime_clock
- The OpenGL extension has been implemented in the asahi (Apple) driver:
- GL_KHR_texture_compression_astc_hdr
- OpenGL extensions have been implemented in the r600 (AMD) driver:
- GL_EXT_window_rectangles
- GL_EXT_shader_image_load_store
- Vulkan extensions have been implemented in the PanVK (GPU ARM Mali) driver:
- 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
Source: opennet.ru
