Po trzech miesiącach prac rozwojowych zaprezentowano wydanie wolnej implementacji API OpenGL i Vulkan — Mesa 25.2.0. Pierwsza wersja gałęzi Mesa 25.2.0 ma status eksperymentalny — po ostatecznej stabilizacji kodu zostanie wydana stabilna wersja 25.2.1.
Mesa 25.2 oferuje wsparcie dla API graficznego Vulkan 1.4 w sterownikach ANV dla procesorów graficznych Intel, RADV dla procesorów graficznych AMD, NVK dla procesorów graficznych NVIDIA, Asahi dla procesorów graficznych Apple, Turnip dla procesorów graficznych Qualcomm, PanVK dla procesorów graficznych ARM Mali, w programowym rastrowaniu lavapipe (lvp) oraz w trybie emulatora (vn). W sterownikach v3dv (procesor graficzny Broadcom VideoCore dla Raspberry Pi 4+) oraz dzn (implementacja Vulkan na Direct3D 12) obsługiwany jest Vulkan 1.0.
W Mesa zapewniono również pełne wsparcie dla OpenGL 4.6 w sterownikach iris (procesory graficzne Intel Gen 8+), radeonsi (AMD), Crocus (starsze procesory graficzne Intel Gen4-Gen7), AMD (r600), zink, llvmpipe, virgl (wirtualny procesor graficzny Virgil3D dla QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (warstwa do uruchamiania OpenGL na DirectX 12) oraz asahi (procesory graficzne AGX używane w chipach Apple M1 i M2). Wsparcie dla OpenGL 4.5 dostępne jest dla procesorów graficznych NVIDIA (nvc0). Obsługa OpenGL 3.3 jest obecna w sterownikach softpipe (programowy rastrowacz) oraz nv50 (NVIDIA NV50). W sterownikach panfrost (procesory graficzne ARM Mali) oraz v3d (procesory graficzne Broadcom VideoCore) obsługiwane jest OpenGL 3.1.
Główne nowości:
- W sterowniku Vulkan PanVK dla urządzeń z procesorami graficznymi ARM Mali opartymi na architekturze V10, takich jak Mali-G610 i Mali-G310, dodano wsparcie dla API graficznego Vulkan 1.4 (wcześniej wspierano Vulkan 1.2).
- W sterowniku OpenGL r600 dla starszych procesorów graficznych AMD (do serii Radeon HD 7000 włącznie) dodano wsparcie dla API graficznego OpenGL 4.6 (wcześniej wspierano OpenGL 4.5).
- W sterowniku Vulkan NVK dodano wsparcie dla procesorów graficznych NVIDIA opartych na mikroarchitekturach Blackwell i Kepler (GTX 600/700). Dla procesorów graficznych Blackwell wprowadzono wsparcie dla Vulkan 1.4, natomiast dla procesorów graficznych Kepler — API Vulkan 1.2 (nowsze wersje Vulkan nie są wspierane z powodu ograniczeń sprzętowych). Dla procesorów graficznych NVIDIA opartych na mikroarchitekturze Maxwell zapewniono pełną zgodność z Vulkan 1.4.
- Optymalizowano działanie kompilatora shaderów NAK, napisanego w języku Rust i wykorzystywanego w sterowniku NVK. Do zależności sterownika NVK dodano paczkę crate rustc-hash, dzięki czemu udało się skrócić czas kompilacji shaderów o około 12%.
- Wsparcie OpenGL dla GPU NVIDIA Maxwell, Pascal i Volta zostało domyślnie zmienione z kierowcy Nouveau na użycie kierowcy Zink w połączeniu z kierowcą Vulkan NVK. Zink jest również używany do zapewnienia wsparcia OpenGL na systemach z GPU Blackwell (w kierowcy OpenGL Nouveau nie planują dodawania wsparcia dla GPU Blackwell). Zink udostępnia implementację OpenGL 4.6 na Vulkanie, umożliwiającą uzyskanie sprzętowego przyspieszenia OpenGL na urządzeniach wspierających API Vulkan. Wydajność Zink jest bliska wydajności natywnych implementacji OpenGL.
- Znacznie zwiększono wydajność kierowcy Vulkan Honeykrisp dla procesorów graficznych dostarczanych w chipach Apple M1/M2.
- W kierowcach Vulkan RADV (GPU AMD) i ANV (Intel) dodano wsparcie dla sprzętowego przyspieszenia dekodowania wideo w formacie VP9. Możliwość ta została zrealizowana dzięki rozszerzeniu Vulkan VK_KHR_video_decode_vp9, które przygotowała wiosną grupa robocza Vulkan WG. Sprzętowe przyspieszenie jest dostępne dla GPU AMD począwszy od GPU Navi 10 w oparciu o mikroarchitekturę RDNA 1.0.
- W kierowcy Vulkan RADV dla GPU AMD opartych na mikroarchitekturach RDNA3 i RDNA4 zwiększono wydajność śledzenia promieni i poprawiono wsparcie dla technologii supersampling FSR 4 (FidelityFX Super Resolution). Dodano możliwość dostosowywania priorytetów dla kolejki wątku poleceń (rozszerzenie OpenCL cl_khr_priority_hints).
- W kierowcy OpenGL radeonsi dla starszych rodzin GPU AMD Evergreen i Cayman wprowadzono wsparcie dla OpenGL 4.6. Dodano wsparcie dla współdzielonej pamięci wirtualnej (SVM, Shared Virtual Memory).
- W kierowcy OpenGL Iris oraz Vulkan ANV wprowadzono wsparcie dla GPU stosowanych w procesorach Intel Wildcat Lake. W Iris i ANV ogłoszono również stabilne wsparcie dla GPU Intel opartych na architekturze Xe3, wykorzystywanej w procesorach Panther Lake. Poprawiono wsparcie dla rodzin GPU Xe2 i Xe3. W kierowcy Iris dodano wsparcie dla współdzielonej pamięci wirtualnej (SVM, Shared Virtual Memory).
- W kierowcy OpenGL freedreno dodano wsparcie dla GPU Adreno X1-45, stosowanego w SoC Qualcomm Snapdragon X Plus.
- Kontynuowane jest rozwijanie kierowcy OpenCL Rusticl, napisanego w języku Rust i zastępującego kierowcę Clover. W Rusticl dodano wsparcie dla SVM (Shared Virtual Memory), obrazów w przestrzeni kolorów sRGB (formaty CL_sRGBA i CL_sBGRA), formatu FP16 (rozszerzenie OpenCL cl_khr_fp16 dla kierowców asahi, freedreno, llvmpipe, panfrost, radeonsi i zink).
- Dodano frontend Gallium3D MFT (Media Foundation Transform), pozwalający na wykorzystanie sterownika D3D12 (Direct3D 12) do wdrażania innych interfejsów API graficznych. Opracowane przez Microsoft dla WSL (Windows Subsystem for Linux).
- Usunięto wsparcie dla infrastruktury DRI2 (Direct Rendering Infrastructure), zastąpione przez interfejs DRI3, który wykorzystuje DMA-BUF do organizacji bezpośredniego dostępu do karty graficznej. Podano, że interfejs DRI3 istnieje już ponad 10 lat, DRI2 jest przestarzały, a wszystkie wspierane sterowniki GPU dawno wdrożyły interfejs DRI3.
- Zaprzestano wspierania przestarzałych metod współpracy z buforami — pozostawiono jedynie możliwość użycia dma-buf.
- Zakończono wsparcie dla wersji libX11, które nie zapewniają bezpiecznej pracy w aplikacjach wielowątkowych. Pozostawiono wyłącznie wsparcie dla libX11 1.8 (kwiecień 2022) i nowszych, wykorzystujących wywołanie XInitThreads().
- Ogłoszono przestarzałym i wyłączono domyślnie wsparcie dla rozszerzenia EGL_EGL_WL_bind_wayland_display, zaimplementowanego dla Wayland. Do wymiany buforów pikselowych pomiędzy klientem a serwerem Wayland proponuje się użycie protokołu Wayland linux_dmabuf. Aby przywrócić wsparcie, należy użyć flagi „-Dlegacy-wayland=bind-wayland-display” podczas kompilacji. Xwayland wspiera poprawne działanie bez EGL_WL_bind_wayland_display od wydania 24.1 (maj 2024).
- Usunięto przestarzały sterownik OpenCL Clover. Dla OpenCL należy użyć sterownika RustiCL, bardziej funkcjonalnego i wspierającego większą ilość wersji OpenCL.
- W sterowniku ANV (Intel) zaimplementowano rozszerzenie Vulkan:
- VK_KHR_shader_bfloat16
- W sterowniku RADV (AMD) zaimplementowano rozszerzenia 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
- W sterowniku NVK (NVIDIA) zaimplementowano rozszerzenia Vulkan:
- VK_EXT_zero_initialize_device_memory
- VK_KHR_cooperative_matrix
- W sterowniku zink zaimplementowano rozszerzenie Vulkan:
- NV_timeline_semaphore
- W sterowniku v3d (GPU Broadcom VideoCore dla Raspberry Pi 4+) zaimplementowano rozszerzenie OpenGL:
- on v3d GL_ARB_blend_func_extended
- W sterowniku panfrost zaimplementowano rozszerzenia OpenGL:
- GL_KHR_texture_compression_astc_hdr
- GL_ARB_shader_clock
- GL_EXT_shader_realtime_clock
- W sterowniku asahi (Apple) zaimplementowano rozszerzenie OpenGL:
- GL_KHR_texture_compression_astc_hdr
- W sterowniku r600 (AMD) zaimplementowano rozszerzenia OpenGL
- GL_EXT_window_rectangles
- GL_EXT_shader_image_load_store
- W sterowniku PanVK (GPU ARM Mali) zaimplementowano rozszerzenia 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
Źródło: opennet.ru
