Nach drei Monaten Entwicklung wurde die freie Implementierung der API OpenGL und Vulkan - Mesa 25.2.0 - veröffentlicht. Die erste Version der Reihe Mesa 25.2.0 hat den Status experimentell - nach der abschließenden Stabilisierung des Codes wird die stabile Version 25.2.1 veröffentlicht.
In Mesa 25.2 ist Unterstützung für die Grafik-API Vulkan 1.4 in den ANV-Treibern für Intel-GPUs, RADV für AMD-GPUs, NVK für NVIDIA-GPUs, Asahi für Apple-GPUs, Turnip für Qualcomm-GPUs, PanVK für ARM Mali-GPUs, im Software-Rasterizer lavapipe (lvp) und im Emulationsmodus (vn) verfügbar. In den v3dv-Treibern (Broadcom VideoCore für Raspberry Pi 4+) und dzn (Implementierung von Vulkan über Direct3D 12) wird Vulkan 1.0 unterstützt.
In Mesa wird auch vollständige Unterstützung für OpenGL 4.6 für die Iris-Treiber (Intel GPU der Generation 8+), radeonsi (AMD), Crocus (alte Intel-GPUs der Generation 4-7), AMD (r600), zink, llvmpipe, virgl (virtuelle GPU Virgil3D für QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (Schicht zur Ausführung von OpenGL über DirectX 12) und asahi (GPU AGX, verwendet in den Apple M1- und M2-Chips) bereitgestellt. Unterstützung für OpenGL 4.5 ist für NVIDIA-GPUs (nvc0) verfügbar. Unterstützung für OpenGL 3.3 ist in den softpipe (Software-Rasterizer)- und nv50 (NVIDIA NV50)-Treibern vorhanden. In den panfrost-(GPU ARM Mali)- und v3d-(GPU Broadcom VideoCore)-Treibern wird OpenGL 3.1 unterstützt.
Hauptneuheiten:
- Im Vulkan-Treiber PanVK für Geräte mit ARM Mali-GPUs der V10-Architektur, wie Mali-G610 und Mali-G310, wurde Unterstützung für die Grafik-API Vulkan 1.4 hinzugefügt (zuvor wurde Vulkan 1.2 unterstützt).
- Im OpenGL-Treiber r600 für alte AMD-GPUs (bis einschließlich Radeon HD 7000-Serie) wurde Unterstützung für die Grafik-API OpenGL 4.6 hinzugefügt (zuvor wurde OpenGL 4.5 unterstützt).
- Im Vulkan-Treiber NVK wurde Unterstützung für NVIDIA-GPUs auf Basis der Mikroarchitekturen Blackwell und Kepler (GTX 600/700) hinzugefügt. Für die Blackwell-GPUs wurde Unterstützung für Vulkan 1.4 realisiert, während für die Kepler-GPUs die API Vulkan 1.2 (neuere Vulkan-Versionen werden aufgrund von Hardwarebeschränkungen nicht unterstützt) bereitgestellt wird. Für NVIDIA-GPUs auf Basis der Mikroarchitektur Maxwell wurde volle Kompatibilität mit Vulkan 1.4 gewährleistet.
- Der Shader-Compiler NAK, der in Rust geschrieben und im NVK-Treiber verwendet wird, wurde optimiert. In die Abhängigkeiten des NVK-Treibers wurde das crate-Paket rustc-hash aufgenommen, wodurch die Kompilierungszeit der Shader um etwa 12 % verkürzt werden konnte.
- Die Unterstützung für OpenGL auf NVIDIA Maxwell, Pascal und Volta GPUs wurde standardmäßig vom Nouveau-Treiber auf die Verwendung des Zink-Treibers in Verbindung mit dem Vulkan-Treiber NVK umgeschaltet. Zink wird auch verwendet, um die OpenGL-Unterstützung auf Systemen mit Blackwell-GPUs bereitzustellen (der Nouveau OpenGL-Treiber plant nicht, Unterstützung für Blackwell-GPUs hinzuzufügen). Zink bietet eine Implementierung von OpenGL 4.6 über Vulkan, die hardwarebeschleunigtes OpenGL auf Geräten ermöglicht, die die Vulkan-API unterstützen. Die Leistung von Zink ist vergleichbar mit der von nativen OpenGL-Implementierungen.
- Die Leistung des Vulkan-Treibers Honeykrisp für die in Apple M1/M2-Chips gelieferten Grafikkarten wurde erheblich verbessert.
- Die Vulkan-Treiber RADV (AMD GPUs) und ANV (Intel) haben die Unterstützung für hardwarebeschleunigte VP9-Video-Dekodierung hinzugefügt. Diese Funktionalität wurde durch die Vulkan-Erweiterung VK_KHR_video_decode_vp9 bereitgestellt, die im Frühjahr von der Vulkan-WG entwickelt wurde. Hardwarebeschleunigung ist für AMD GPUs ab der Navi 10-Architektur auf Basis der RDNA 1.0 verfügbar.
- Im Vulkan-Treiber RADV für AMD GPUs auf der Grundlage der RDNA3- und RDNA4-Architekturen wurde die Leistung bei Raytracing erhöht und die Unterstützung der FSR 4 (FidelityFX Super Resolution)-Technologie verbessert. Es wurde die Möglichkeit hinzugefügt, Prioritäten für die Befehlswarteschlange einzustellen (OpenCL-Erweiterung cl_khr_priority_hints).
- Im OpenGL-Treiber radeonsi wurde für alte AMD GPU-Familien Evergreen und Cayman Unterstützung für OpenGL 4.6 implementiert. Unterstützt wird jetzt auch Shared Virtual Memory (SVM, Shared Virtual Memory).
- Im OpenGL-Treiber Iris und Vulkan-Treiber ANV wurde Unterstützung für GPUs implementiert, die in Intel Wildcat Lake-Prozessoren verwendet werden. In Iris und ANV wurde auch stabile Unterstützung für Intel-GPUs auf Basis der Xe3-Architektur, die in Panther Lake-Prozessoren eingesetzt wird, angekündigt. Die Unterstützung der GPU-Familien Xe2 und Xe3 wurde verbessert. Im Iris-Treiber wurde die Unterstützung für Shared Virtual Memory (SVM, Shared Virtual Memory) hinzugefügt.
- Im OpenGL-Treiber freedreno wurde die Unterstützung für die GPU Adreno X1-45 hinzugefügt, die in SoCs von Qualcomm Snapdragon X Plus verwendet wird.
- Die Entwicklung des OpenCL-Treibers Rusticl, der in Rust geschrieben ist und den Clover-Treiber ersetzt, wurde fortgesetzt. In Rusticl wurde Unterstützung für SVM (Shared Virtual Memory), Bilder im Farbraum sRGB (Formate CL_sRGBA und CL_sBGRA) und das FP16-Format (OpenCL-Erweiterung cl_khr_fp16 für die Treiber asahi, freedreno, llvmpipe, panfrost, radeonsi und zink) hinzugefügt.
- Gallium3D-Frontend MFT (Media Foundation Transform) hinzugefügt, das es ermöglicht, den D3D12 (Direct3D 12)-Treiber für die Implementierung anderer Grafik-APIs zu verwenden. Entwickelt von Microsoft für WSL (Windows Subsystem for Linux).
- Unterstützung für die DRI2 (Direct Rendering Infrastructure) Infrastruktur wurde entfernt, die durch die DRI3-Schnittstelle ersetzt wurde, die direkten Zugang zur Grafikkarte mit DMA-BUF ermöglicht. Als Grund wird angegeben, dass die DRI3-Schnittstelle seit über 10 Jahren existiert, DRI2 bereits veraltet ist und alle unterstützten GPU-Treiber die DRI3-Schnittstelle implementiert haben.
- Unterstützung für veraltete Methoden zur Zusammenarbeit mit Puffer wurde eingestellt – es bleibt nur die Möglichkeit der Nutzung von dma-buf.
- Unterstützung für libX11-Versionen, die keinen sicheren Betrieb in Mehrprozessanwendungen gewährleisten, wurde eingestellt. Es wird nur Unterstützung für libX11 1.8 (April 2022) und neuere Versionen, die den Aufruf XInitThreads() verwenden, beibehalten.
- Die Unterstützung der EGL-Erweiterung EGL_WL_bind_wayland_display, die für Wayland implementiert wurde, wurde als veraltet erklärt und standardmäßig deaktiviert. Um Pixelpuffer zwischen Client und Server Wayland auszutauschen, wird empfohlen, das Wayland-Protokoll linux_dmabuf zu verwenden. Um die Unterstützung wiederherzustellen, muss während des Builds das Flag „-Dlegacy-wayland=bind-wayland-display“ angegeben werden. Xwayland unterstützt einen korrekten Betrieb ohne EGL_WL_bind_wayland_display seit der Version 24.1 (Mai 2024).
- Der veraltete OpenCL-Treiber Clover wurde entfernt. Für OpenCL sollte der funktionsreichere Treiber RustiCL verwendet werden, der mehr Versionen von OpenCL unterstützt.
- Im ANV (Intel) Treiber wurde die Vulkan-Erweiterung implementiert:
- VK_KHR_shader_bfloat16
- Im RADV (AMD) Treiber wurden die Vulkan-Erweiterungen implementiert:
- 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
- Im NVK (NVIDIA) Treiber wurden die Vulkan-Erweiterungen implementiert:
- VK_EXT_zero_initialize_device_memory
- VK_KHR_cooperative_matrix
- Im zink Treiber wurde die Vulkan-Erweiterung implementiert:
- NV_timeline_semaphore
- Im v3d (GPU Broadcom VideoCore für Raspberry Pi 4+) Treiber wurde die OpenGL-Erweiterung implementiert:
- on v3d GL_ARB_blend_func_extended
- Im panfrost Treiber wurden die OpenGL-Erweiterungen implementiert:
- GL_KHR_texture_compression_astc_hdr
- GL_ARB_shader_clock
- GL_EXT_shader_realtime_clock
- Im asahi (Apple) Treiber wurde die OpenGL-Erweiterung implementiert:
- GL_KHR_texture_compression_astc_hdr
- Im r600 (AMD) Treiber wurden die OpenGL-Erweiterungen implementiert
- GL_EXT_window_rectangles
- GL_EXT_shader_image_load_store
- Im PanVK (GPU ARM Mali) Treiber wurden die Vulkan-Erweiterungen implementiert:
- 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
Quelle: opennet.ru
