Dopo tre mesi di sviluppo, presentiamo il rilascio dell'implementazione open source delle API OpenGL e Vulkan — Mesa 25.2.0. Il primo rilascio della serie Mesa 25.2.0 ha uno stato sperimentale — dopo la stabilizzazione finale del codice, sarà rilasciata la versione stabile 25.2.1.
In Mesa 25.2 è disponibile il supporto per l'API grafica Vulkan 1.4 nei driver ANV per GPU Intel, RADV per GPU AMD, NVK per GPU NVIDIA, Asahi per GPU Apple, Turnip per GPU Qualcomm, PanVK per GPU ARM Mali, nel rasterizzatore software lavapipe (lvp) e nella modalità emulatore (vn). I driver v3dv (GPU Broadcom VideoCore per Raspberry Pi 4+) e dzn (implementazione di Vulkan sopra Direct3D 12) supportano Vulkan 1.0.
Mesa offre anche il supporto completo per OpenGL 4.6 per i driver iris (GPU Intel Gen 8+), radeonsi (AMD), Crocus (vecchie GPU Intel Gen4-Gen7), AMD (r600), zink, llvmpipe, virgl (GPU virtuale Virgil3D per QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (intermediario per gestire OpenGL sopra DirectX 12) e asahi (GPU AGX utilizzato nei chip Apple M1 e M2). Il supporto per OpenGL 4.5 è disponibile per GPU NVIDIA (nvc0). Il supporto per OpenGL 3.3 è presente nei driver softpipe (rasterizzatore software) e nv50 (NVIDIA NV50). Nei driver panfrost (GPU ARM Mali) e v3d (GPU Broadcom VideoCore) è supportato OpenGL 3.1.
Novità principali:
- Nel driver Vulkan PanVK per dispositivi con GPU ARM Mali basati sull'architettura V10, come Mali-G610 e Mali-G310, è stato aggiunto il supporto per l'API grafica Vulkan 1.4 (in precedenza era supportato Vulkan 1.2).
- Nel driver OpenGL r600 per le vecchie GPU AMD (fino alla serie Radeon HD 7000 inclusa) è stato aggiunto il supporto per l'API grafica OpenGL 4.6 (in precedenza era supportato OpenGL 4.5).
- Nel driver Vulkan NVK è stata aggiunta la supporto per le GPU NVIDIA basate sulle microarchitetture Blackwell e Kepler (GTX 600/700). Per le GPU Blackwell è supportato Vulkan 1.4, mentre per le GPU Kepler è disponibile l'API Vulkan 1.2 (versioni più recenti di Vulkan non sono supportate a causa di limitazioni hardware). Per le GPU NVIDIA basate sulla microarchitettura Maxwell è garantita la piena compatibilità con Vulkan 1.4.
- È stata ottimizzata l'operatività del compilatore di shader NAK, scritto in linguaggio Rust e utilizzato nel driver NVK. Tra le dipendenze del driver NVK è stato incluso il pacchetto crate rustc-hash, che ha permesso di ridurre il tempo di compilazione degli shader di circa il 12%.
- Il supporto OpenGL per GPU NVIDIA Maxwell, Pascal e Volta è passato di default dal driver Nouveau all'uso del driver Zink in combinazione con il driver Vulkan NVK. Zink è anche utilizzato per garantire il supporto OpenGL sui sistemi con GPU Blackwell (non si prevede di aggiungere supporto per le GPU Blackwell nel driver OpenGL Nouveau). Zink fornisce un'implementazione di OpenGL 4.6 sopra Vulkan, permettendo di ottenere OpenGL accelerato hardware su dispositivi che supportano l'API Vulkan. Le prestazioni di Zink sono vicine a quelle delle implementazioni native di OpenGL.
- È stata significativamente aumentata la performance del driver Vulkan Honeykrisp per le GPU fornite nei chip Apple M1/M2.
- Nei driver Vulkan RADV (GPU AMD) e ANV (Intel) è stata aggiunta la supporto per l'accelerazione hardware della decodifica video nel formato VP9. Questa funzionalità è stata realizzata tramite l'estensione Vulkan VK_KHR_video_decode_vp9, preparata dalla Vulkan WG durante la primavera. L'accelerazione hardware è disponibile per le GPU AMD a partire da Navi 10 basate sull'architettura micro RDNA 1.0.
- Nel driver Vulkan RADV per GPU AMD basate sulle microarchitetture RDNA3 e RDNA4, sono state migliorate le prestazioni del ray tracing e il supporto della tecnologia di super campionamento FSR 4 (FidelityFX Super Resolution). È stata aggiunta la possibilità di impostare priorità per la coda dei comandi (estensione OpenCL cl_khr_priority_hints).
- Nel driver OpenGL radeonsi per le vecchie famiglie di GPU AMD Evergreen e Cayman è stato implementato il supporto per OpenGL 4.6. È stato aggiunto il supporto per la memoria virtuale condivisa (SVM, Shared Virtual Memory).
- Nel driver OpenGL Iris e nel driver Vulkan ANV è stata implementata la supporto per le GPU utilizzate nei processori Intel Wildcat Lake. Inoltre, in Iris e ANV è stata annunciata la stabilizzazione del supporto per le GPU Intel basate sull'architettura Xe3, utilizzate nei processori Panther Lake. È stato migliorato il supporto per le famiglie di GPU Xe2 e Xe3. Nel driver Iris è stata aggiunta la supporto per la memoria virtuale condivisa (SVM, Shared Virtual Memory).
- Nel driver OpenGL freedreno è stato aggiunto il supporto per la GPU Adreno X1-45, utilizzata nel SoC Qualcomm Snapdragon X Plus.
- Continua lo sviluppo del driver OpenCL Rusticl, scritto in linguaggio Rust e subentrato al driver Clover. In Rusticl è stato aggiunto il supporto per SVM (Shared Virtual Memory), immagini nello spazio colore sRGB (formati CL_sRGBA e CL_sBGRA), e il formato FP16 (estensione OpenCL cl_khr_fp16 per i driver asahi, freedreno, llvmpipe, panfrost, radeonsi e zink).
- È stato aggiunto il front-end Gallium3D MFT (Media Foundation Transform), che consente di utilizzare il driver D3D12 (Direct3D 12) per l'implementazione di altre API grafiche. Sviluppato da Microsoft per WSL (Windows Subsystem for Linux).
- È stata rimossa la supporto per l'infrastruttura DRI2 (Direct Rendering Infrastructure), sostituita dall'interfaccia DRI3 che utilizza DMA-BUF per l'accesso diretto alla scheda video. La motivazione fornita è che l'interfaccia DRI3 esiste da oltre 10 anni, DRI2 è obsoleta e tutti i driver GPU supportati hanno già implementato l'interfaccia DRI3.
- È stata interrotta la supporto per i metodi obsoleti di gestione dei buffer: è rimasta solo l'opzione di utilizzare dma-buf.
- È stata interrotta la supporto per le versioni di libX11 che non garantiscono un funzionamento sicuro nelle applicazioni multithread. È rimasta solo la supporto per libX11 1.8 (aprile 2022) e le versioni successive che utilizzano la chiamata XInitThreads().
- È stata dichiarata obsoleta e disabilitata per impostazione predefinita la supporto per l'estensione EGL EGL_WL_bind_wayland_display, implementata per Wayland. Per lo scambio di buffer pixel tra il client e server Wayland si propone di utilizzare il protocollo Wayland linux_dmabuf. Per ripristinare il supporto, è necessario specificare il flag "-Dlegacy-wayland=bind-wayland-display" durante la compilazione. Xwayland supporta il funzionamento corretto senza EGL_WL_bind_wayland_display a partire dalla versione 24.1 (maggio 2024).
- Rimosso il driver OpenCL obsoleto Clover. Per OpenCL si consiglia di utilizzare il driver RustiCL, più funzionale e compatibile con più versioni di OpenCL.
- Il driver ANV (Intel) ha implementato l'estensione Vulkan:
- VK_KHR_shader_bfloat16
- Nel driver RADV (AMD) sono state implementate le estensioni 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
- Nel driver NVK (NVIDIA) sono state implementate le estensioni Vulkan:
- VK_EXT_zero_initialize_device_memory
- VK_KHR_cooperative_matrix
- Il driver zink ha implementato l'estensione Vulkan:
- NV_timeline_semaphore
- Il driver v3d (GPU Broadcom VideoCore per Raspberry Pi 4+) ha implementato l'estensione OpenGL:
- su v3d GL_ARB_blend_func_extended
- Il driver panfrost ha implementato le estensioni OpenGL:
- GL_KHR_texture_compression_astc_hdr
- GL_ARB_shader_clock
- GL_EXT_shader_realtime_clock
- Il driver asahi (Apple) ha implementato l'estensione OpenGL:
- GL_KHR_texture_compression_astc_hdr
- Il driver r600 (AMD) ha implementato le estensioni OpenGL
- GL_EXT_window_rectangles
- GL_EXT_shader_image_load_store
- Il driver PanVK (GPU ARM Mali) ha implementato le estensioni 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
Fonte: opennet.ru
