Tras tres meses de desarrollo, se presenta la versión de la implementación libre de la API OpenGL y Vulkan — Mesa 25.2.0. La primera versión de la rama Mesa 25.2.0 tiene un estatus experimental, y se lanzará una versión estable 25.2.1 tras la finalización de la estabilización del código.
En Mesa 25.2, se ofrece soporte para la API gráfica Vulkan 1.4 en los controladores ANV para GPU Intel, RADV para GPU AMD, NVK para GPU NVIDIA, Asahi para GPU Apple, Turnip para GPU Qualcomm, PanVK para GPU ARM Mali, en el rasterizador por software lavapipe (lvp) y en modo emulador (vn). En los controladores v3dv (GPU Broadcom VideoCore para Raspberry Pi 4+) y dzn (implementación de Vulkan sobre Direct3D 12) se soporta Vulkan 1.0.
Mesa también proporciona soporte completo para OpenGL 4.6 en los controladores iris (GPU Intel Gen 8+), radeonsi (AMD), Crocus (antiguos GPU Intel Gen4-Gen7), AMD (r600), zink, llvmpipe, virgl (GPU virtual Virgil3D para QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (capa para la operación de OpenGL sobre DirectX 12) y asahi (GPU AGX, utilizado en los chips Apple M1 y M2). El soporte de OpenGL 4.5 está disponible para GPU NVIDIA (nvc0). La compatibilidad con OpenGL 3.3 está presente en los controladores softpipe (rasterizador por software) y nv50 (NVIDIA NV50). En los controladores panfrost (GPU ARM Mali) y v3d (GPU Broadcom VideoCore) se soporta OpenGL 3.1.
Novedades principales:
- En el controlador Vulkan PanVK para dispositivos con GPU ARM Mali basados en la arquitectura V10, como Mali-G610 y Mali-G310, se ha añadido soporte para la API gráfica Vulkan 1.4 (anteriormente se soportaba Vulkan 1.2).
- En el controlador OpenGL r600 para antiguos GPU AMD (hasta la serie Radeon HD 7000 incluida) se ha añadido soporte para la API gráfica OpenGL 4.6 (anteriormente se soportaba OpenGL 4.5).
- En el controlador Vulkan NVK se ha añadido soporte para GPU NVIDIA basadas en las microarquitecturas Blackwell y Kepler (GTX 600/700). Para GPU Blackwell se ha implementado soporte para Vulkan 1.4, y para GPU Kepler se ha añadido la API Vulkan 1.2 (versiones más recientes de Vulkan no se soportan debido a limitaciones de hardware). Para las GPU NVIDIA basadas en la microarquitectura Maxwell, se garantiza la compatibilidad total con Vulkan 1.4.
- Se ha optimizado la operación del compilador de shaders NAK, escrito en el lenguaje Rust y utilizado en el controlador NVK. En las dependencias del controlador NVK se ha incluido el paquete crate rustc-hash, lo que ha permitido reducir el tiempo de compilación de shaders en aproximadamente un 12%.
- El soporte de OpenGL para GPUs NVIDIA Maxwell, Pascal y Volta se ha cambiado por defecto del controlador Nouveau al uso del controlador Zink en conjunto con el controlador Vulkan NVK. Zink también se utiliza para proporcionar soporte de OpenGL en sistemas con GPUs Blackwell (no se planea agregar soporte para GPUs Blackwell en el controlador OpenGL Nouveau). Zink ofrece una implementación de OpenGL 4.6 sobre Vulkan, lo que permite obtener OpenGL acelerado por hardware en dispositivos que soportan la API Vulkan. El rendimiento de Zink es comparable al de las implementaciones nativas de OpenGL.
- Se ha incrementado significativamente el rendimiento del controlador Vulkan Honeykrisp para procesadores gráficos suministrados en los chips Apple M1/M2.
- Los controladores Vulkan RADV (GPU AMD) y ANV (Intel) han agregado soporte para la aceleración de hardware en la decodificación de video en formato VP9. Esta capacidad se ha implementado mediante la extensión Vulkan VK_KHR_video_decode_vp9, preparada en primavera por el grupo de trabajo de Vulkan WG. La aceleración por hardware está disponible para GPUs AMD a partir de la GPU Navi 10 basada en la microarquitectura RDNA 1.0.
- En el controlador Vulkan RADV para GPUs AMD basadas en las microarquitecturas RDNA3 y RDNA4, se ha mejorado el rendimiento de la trazabilidad de rayos y se ha mejorado el soporte para la tecnología de supermuestreo FSR 4 (FidelityFX Super Resolution). Se ha agregado la opción de ajustar las prioridades para la cola de comandos (extensión OpenCL cl_khr_priority_hints).
- En el controlador OpenGL radeonsi para las antiguas familias de GPUs AMD Evergreen y Cayman, se ha implementado soporte para OpenGL 4.6. Se ha agregado soporte para memoria virtual compartida (SVM, Shared Virtual Memory).
- En el controlador OpenGL Iris y el controlador Vulkan ANV se ha implementado soporte para GPUs utilizados en los procesadores Intel Wildcat Lake. En Iris y ANV también se ha declarado la estabilidad del soporte para GPUs Intel basados en la arquitectura Xe3, utilizados en los procesadores Panther Lake. Se ha mejorado el soporte para las familias de GPUs Xe2 y Xe3. En el controlador Iris se ha agregado soporte para memoria virtual compartida (SVM, Shared Virtual Memory).
- En el controlador OpenGL freedreno se ha agregado soporte para la GPU Adreno X1-45, utilizada en el SoC Qualcomm Snapdragon X Plus.
- Se ha continuado el desarrollo del controlador OpenCL Rusticl, escrito en el lenguaje Rust y que ha reemplazado al controlador Clover. En Rusticl se ha agregado soporte para SVM (Shared Virtual Memory), imágenes en el espacio de color sRGB (formatos CL_sRGBA y CL_sBGRA), y el formato FP16 (extensión OpenCL cl_khr_fp16 para los controladores asahi, freedreno, llvmpipe, panfrost, radeonsi y zink).
- Se ha añadido el frontend Gallium3D MFT (Media Foundation Transform), permitiendo el uso del controlador D3D12 (Direct3D 12) para implementar otras API gráficas. Desarrollado por Microsoft para WSL (Windows Subsystem for Linux).
- Se ha eliminado el soporte para la infraestructura DRI2 (Direct Rendering Infrastructure), que ha sido sustituida por la interfaz DRI3, que utiliza DMA-BUF para proporcionar acceso directo a la tarjeta gráfica. Se menciona que la interfaz DRI3 lleva más de 10 años en existencia, que DRI2 está obsoleta y que todos los controladores de GPU compatibles han implementado la interfaz DRI3.
- Se ha dejado de dar soporte a los métodos obsoletos de compartir búferes, quedando solamente la posibilidad de utilizar dma-buf.
- Se ha interrumpido el soporte para versiones de libX11 que no garantizan un funcionamiento seguro en aplicaciones multihilo. Se ha dejado solamente el soporte para libX11 1.8 (abril de 2022) y versiones más recientes que utilizan la llamada XInitThreads().
- Se ha declarado obsoleto y desactivado de forma predeterminada el soporte de la extensión EGL EGL_WL_bind_wayland_display, implementada para Wayland. Para intercambiar búferes de píxeles entre el cliente y el servidor Wayland se sugiere utilizar el protocolo Wayland linux_dmabuf. Para restaurar el soporte, requiere incluir el flag "-Dlegacy-wayland=bind-wayland-display" durante la compilación. Xwayland admite un funcionamiento correcto sin EGL_WL_bind_wayland_display desde la versión 24.1 (mayo de 2024).
- Se ha eliminado el controlador OpenCL obsoleto Clover. Para OpenCL se debe utilizar el controlador RustiCL, que es más funcional y admite más versiones de OpenCL.
- En el controlador ANV (Intel) se ha implementado la extensión Vulkan:
- VK_KHR_shader_bfloat16
- En el controlador RADV (AMD) se han implementado las extensiones 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
- En el controlador NVK (NVIDIA) se han implementado las extensiones Vulkan:
- VK_EXT_zero_initialize_device_memory
- VK_KHR_cooperative_matrix
- En el controlador zink se ha implementado la extensión Vulkan:
- NV_timeline_semaphore
- En el controlador v3d (GPU Broadcom VideoCore para Raspberry Pi 4+) se ha implementado la extensión OpenGL:
- en v3d GL_ARB_blend_func_extended
- En el controlador panfrost se han implementado las extensiones OpenGL:
- GL_KHR_texture_compression_astc_hdr
- GL_ARB_shader_clock
- GL_EXT_shader_realtime_clock
- En el controlador asahi (Apple) se ha implementado la extensión OpenGL:
- GL_KHR_texture_compression_astc_hdr
- En el controlador r600 (AMD) se han implementado las extensiones OpenGL
- GL_EXT_window_rectangles
- GL_EXT_shader_image_load_store
- En el controlador PanVK (GPU ARM Mali) se han implementado las extensiones 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
Fuente: opennet.ru
