Dopo tre mesi di sviluppo, è disponibile il rilascio dell'implementazione open source delle API OpenGL e Vulkan — Mesa 25.3.0. Il tag della nuova versione è stato pubblicato il 15 novembre, ma l'annuncio sul sito è apparso solo ieri (tuttavia, non è stato ancora annunciato nella newsletter). Il primo rilascio della branch Mesa 25.3.0 ha uno stato sperimentale: dopo la fase finale di stabilizzazione del codice, sarà rilasciata una versione stabile 25.3.1.
In Mesa 25.3 è disponibile il supporto per l'API grafica Vulkan 1.4 nei driver ANV per GPU Intel, RADV per GPU AMD, NVK per GPU NVIDIA, HoneyKrisp (hk) per GPU Apple, Turnip per GPU Qualcomm, PanVK per GPU ARM Mali, nel rasterizzatore software lavapipe (lvp) e nella modalità emulatore (vn). Nei driver v3dv (GPU Broadcom VideoCore per Raspberry Pi 4+) e dzn (implementazione di Vulkan su Direct3D 12) è supportato Vulkan 1.0, nel driver kk (KosmicKrisp, Vulkan su Metal) è supportato Vulkan 1.1, mentre nel driver pvr (GPU Imagination PowerVR) è supportato Vulkan 1.2.
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:
- È stato introdotto un nuovo driver Vulkan KosmicKrisp (kk) che implementa l'API grafica Vulkan sopra l'API Metal sviluppata da Apple e utilizzata in macOS. Il driver è stato creato da LunarG per l'uso su computer Mac con chip Apple Silicon. Nella forma attuale, il driver è completamente compatibile con l'API Vulkan 1.1, ma si osserva che è già molto vicino alla realizzazione del supporto per Vulkan 1.3.
- È stato aggiunto il driver ethos per NPU Arm Ethos-U65.
- Nel driver Vulkan pvr, sviluppato per GPU Imagination PowerVR, è stato garantito il supporto per Vulkan 1.2.
- Nel driver Vulkan RADV sono state aggiunte ottimizzazioni che aumentano notevolmente la velocità del motore di esecuzione dei grandi modelli linguistici Llama.cpp quando si utilizza il backend Vulkan su sistemi con GPU AMD. In alcuni test, la configurazione basata sul driver RADV è risultata più veloce del driver AMDVLK e del stack ROCm del 31% nell'elaborazione delle richieste (test 'pp' — prompt processing) e del 4% nella generazione dei token (test 'tg' — token generation).
- È stata rimossa la supporto per l'interfaccia VDPAU (Video Decode and Presentation API for Unix) sviluppata da NVIDIA. Le motivazioni della rimozione includono la possibilità di utilizzare VDPAU solo su sistemi con X11 e OpenGL, a causa della mancanza di supporto per Wayland e Vulkan. Inoltre, l'API VDPAU presenta delle limitazioni che non consentono di decodificare correttamente alcuni flussi video. Si consiglia di utilizzare l'API VA-API (Video Acceleration API), che può essere utilizzata con Wayland e Vulkan e ha un migliore supporto nelle applicazioni.
- Nel driver Zink, che implementa OpenGL 4.6 su Vulkan, è stata introdotta la supporto per i mesh shader, che offrono un'alternativa nella generazione di collezioni di primitivi geometrici.
- Nel driver rusticl è stato aggiunto il supporto per le estensioni OpenCL per lavorare con i semafori (cl_khr_semaphore e cl_khr_external_semaphore).
- Nel compilatore degli shader è stata aggiunta la funzionalità per sostituire gli shader SPIR-V.
- Implementato un layer Vulkan per supportare la tecnologia AMD Anti-Lag, che riduce il ritardo tra le chiamate a vkQueueSubmit o vkQueueSubmit2 e l'inizio dell'esecuzione delle operazioni, permettendo di ridurre i ritardi nella visualizzazione nei giochi.
- Aggiunto il supporto per le estensioni OpenGL:
- GL_EXT_mesh_shader per zink
- GL_ARB_robust_buffer_access_behavior per Panfrost
- GL_KHR_robust_buffer_access_behavior per Panfrost
- GL_KHR_robustness per Panfrost e v3d
- GL_ATI_meminfo per r300
- GL_NVX_gpu_memory_info per r300
- GL_NV_shader_atomic_int64 per radeonsi e Panfrost V9+
- GL_NV_representative_fragment_test per zink
- EGL_EXT_create_context_robustness per Panfrost V10+
- Nel driver ANV (Intel) è stato implementato l'estensione Vulkan: VK_KHR_shader_untyped_pointers
- Nel driver RADV (AMD) sono state implementate le estensioni Vulkan:
- VK_EXT_ycbcr_2plane_444_formats
- VK_KHR_shader_untyped_pointers
- VK_KHR_video_encode_intra_refresh
- VK_KHR_video_encode_quantization_map
- Nel driver NVK (NVIDIA) sono state implementate le estensioni Vulkan:
- VK_AMD_buffer_marker
- VK_KHR_maintenance8
- VK_KHR_maintenance9
- VK_NVX_image_view_handle
- Nel driver HoneyKrisp (Apple) è stata implementata l'estensione OpenGL: VK_KHR_maintenance9
- Nel driver PanVK (GPU ARM Mali) sono state implementate le estensioni Vulkan:
- VK_ARM_shader_core_builtins
- VK_EXT_mutable_descriptor_type
- VK_KHR_maintenance7
- VK_KHR_maintenance8
- VK_KHR_maintenance9
- Le estensioni Vulkan sono implementate nel driver pvr (GPU Imagination PowerVR):
- VK_EXT_border_color_swizzle
- VK_EXT_color_write_enable
- VK_EXT_custom_border_color
- VK_EXT_depth_clamp_zero_one
- VK_EXT_depth_clip_enable
- VK_EXT_extended_dynamic_state
- VK_EXT_extended_dynamic_state2
- VK_EXT_extended_dynamic_state3
- VK_EXT_image_2d_view_of_3d
- VK_EXT_line_rasterization
- VK_EXT_map_memory_placed
- VK_EXT_physical_device_drm
- VK_EXT_provoking_vertex
- VK_EXT_queue_family_foreign
- VK_EXT_robustness2
- VK_EXT_separate_stencil_usage
- VK_EXT_shader_demote_to_helper_invocation
- VK_EXT_shader_replicated_composites
- VK_EXT_vertex_attribute_divisor
- VK_EXT_zero_initialize_device_memory
- VK_KHR_buffer_device_address
- VK_KHR_create_renderpass2
- VK_KHR_dedicated_allocation
- VK_KHR_depth_stencil_resolve
- VK_KHR_descriptor_update_template
- VK_KHR_device_group
- VK_KHR_device_group_creation
- VK_KHR_imageless_framebuffer
- VK_KHR_line_rasterization
- VK_KHR_maintenance1
- VK_KHR_maintenance2
- VK_KHR_maintenance3
- VK_KHR_map_memory2
- VK_KHR_multiview
- VK_KHR_robustness2
- VK_KHR_sampler_mirror_clamp_to_edge
- VK_KHR_separate_depth_stencil_layouts
- VK_KHR_shader_draw_parameters
- VK_KHR_shader_float_controls
- VK_KHR_shader_non_semantic_info
- VK_KHR_shader_relaxed_extended_instruction
- VK_KHR_shader_subgroup_extended_types
- VK_KHR_shader_terminate_invocation
- VK_KHR_spirv_1_4
- VK_KHR_swapchain_mutable_format
- VK_KHR_vertex_attribute_divisor
- VK_KHR_wayland_surface
- Le estensioni OpenCL sono implementate:
- cl_ext_immutable_memory_objects
- cl_khr_external_semaphore per radeonsi e zink
- cl_khr_external_semaphore_sync_fd per radeonsi e zink
- cl_khr_semaphore per radeonsi e zink
È da notare anche il rilascio della nuova versione della specifica Vulkan 1.4.333, che introduce la nuova estensione VK_EXT_ray_tracing_invocation_reorder, migliorando le prestazioni del ray tracing nei test di ben il 47% con l'uso di SER (Shader Execution Reordering) in vk_gltf_renderer.
Fonte: opennet.ru
