Lanzamiento de Mesa 25.2, una implementación gratuita de OpenGL y Vulkan

Después de tres meses de desarrollo, se ha lanzado la implementación gratuita de la API de OpenGL y Vulkan, Mesa 25.2.0. La primera versión de la rama Mesa 25.2.0 tiene un estado experimental: después de la estabilización final del código, se lanzará una versión estable 25.2.1.

Mesa 25.2 añade compatibilidad con 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, el rasterizador de software lavapipe (lvp) y el modo emulador (vn). Vulkan 3 es compatible con los controladores v4dv (GPU Broadcom VideoCore para Raspberry Pi 3+) y dzn (una implementación de Vulkan basada en Direct12D 1.0).

Mesa también ofrece compatibilidad total con OpenGL 4.6 para iris (GPU Intel Gen 8+), radeonsi (AMD), Crocus (GPU Intel Gen 4-Gen 7 anteriores), AMD (r600), zink, llvmpipe, virgl (GPU virtual Virgil3D para QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (capa OpenGL sobre DirectX 12) y asahi (GPU AGX utilizada en los chips Apple M1 y M2). La compatibilidad con OpenGL 4.5 es compatible con las GPU NVIDIA (nvc0). Los controladores softpipe (rasterizador de software) y nv3.3 (NVIDIA NV50) son compatibles con OpenGL 50. Los controladores panfrost (GPU ARM Mali) y v3d (GPU Broadcom VideoCore) son compatibles con OpenGL 3.1.

Principales novedades:

  • El controlador PanVK Vulkan para dispositivos con GPU ARM Mali basadas en la arquitectura V10, como Mali-G610 y Mali-G310, se ha actualizado para admitir la API de gráficos Vulkan 1.4 (anteriormente se admitía Vulkan 1.2).
  • El controlador OpenGL r600 para GPU AMD más antiguas (hasta la serie Radeon HD 7000 inclusive) ahora agrega soporte para la API de gráficos OpenGL 4.6 (anteriormente se admitía OpenGL 4.5).
  • El controlador NVK Vulkan añade compatibilidad con las GPU NVIDIA Blackwell y Kepler (GTX 600/700). Las GPU Blackwell son compatibles con Vulkan 1.4, mientras que las GPU Kepler son compatibles con la API Vulkan 1.2 (las versiones más recientes de Vulkan no son compatibles debido a limitaciones de hardware). Las GPU NVIDIA Maxwell son totalmente compatibles con Vulkan 1.4.
  • Se ha optimizado el compilador de sombreadores NAK, escrito en Rust y utilizado en el controlador NVK. Se ha añadido el paquete rustc-hash a las dependencias del controlador NVK, lo que ha reducido el tiempo de compilación del sombreador en aproximadamente un 12 %.
  • La compatibilidad con OpenGL para las GPU NVIDIA Maxwell, Pascal y Volta se ha cambiado por defecto del controlador Nouveau al controlador Zink, junto con el controlador NVK Vulkan. Zink también se utiliza para proporcionar compatibilidad con OpenGL en sistemas con GPU Blackwell (no está previsto que el controlador OpenGL de Nouveau añada compatibilidad con GPU Blackwell). Zink proporciona una implementación de OpenGL 4.6 sobre Vulkan, lo que permite la aceleración por hardware de OpenGL en dispositivos compatibles con la API de Vulkan. El rendimiento de Zink es similar al de las implementaciones nativas de OpenGL.
  • Rendimiento significativamente mejorado del controlador Honeykrisp Vulkan para las GPU que se encuentran en los chips Apple M1/M2.
  • Los controladores Vulkan RADV (GPU AMD) y ANV (Intel) se han actualizado para admitir la aceleración por hardware para la decodificación de vídeo en formato VP9. Esta función se implementa mediante la extensión Vulkan VK_KHR_video_decode_vp9, preparada por el grupo de trabajo Vulkan en primavera. La aceleración por hardware está disponible para las GPU AMD a partir de la GPU Navi 10 basada en la microarquitectura RDNA 1.0.
  • El controlador RADV Vulkan para GPU AMD basadas en las microarquitecturas RDNA3 y RDNA4 mejora el rendimiento del trazado de rayos y la compatibilidad con la tecnología de supermuestreo FSR 4 (FidelityFX Super Resolution). Se ha añadido la posibilidad de configurar prioridades para la cola de flujo de comandos (extensión OpenCL cl_khr_priority_hints).
  • El controlador OpenGL de radeonsi para las familias de GPU AMD Evergreen y Cayman anteriores ahora es compatible con OpenGL 4.6. Se ha añadido compatibilidad con memoria virtual compartida (SVM).
  • El controlador OpenGL Iris y el controlador Vulkan ANV son compatibles con las GPU utilizadas en los procesadores Intel Wildcat Lake. Iris y ANV también anunciaron compatibilidad estable con las GPU Intel basadas en la arquitectura Xe3, utilizadas en los procesadores Panther Lake. Se ha mejorado la compatibilidad con las familias de GPU Xe2 y Xe3. El controlador Iris ahora es compatible con la memoria virtual compartida (SVM).
  • El controlador OpenGL freedreno se ha actualizado para admitir la GPU Adreno X1-45 utilizada en el SoC Qualcomm Snapdragon X Plus.
  • Se continuó el desarrollo del controlador OpenCL de Rusticl, escrito en el lenguaje Rust y que reemplaza al controlador Clover. Rusticl ahora admite SVM (Memoria Virtual Compartida), 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 añadió la interfaz MFT (Media Foundation Transform) de Gallium3D, lo que permite usar el controlador D3D12 (Direct3D 12) para implementar otras API gráficas. Desarrollado por Microsoft para WSL (Subsistema de Windows para Linux).
  • Se eliminó la compatibilidad con DRI2 (Infraestructura de Renderizado Directo), que fue reemplazada por la interfaz DRI3 que utiliza DMA-BUF para organizar el acceso directo al adaptador de vídeo. La razón es que la interfaz DRI3 existe desde hace más de 10 años, DRI2 está obsoleta desde hace tiempo y todos los controladores de GPU compatibles la han implementado desde hace tiempo.
  • Se ha descontinuado el soporte para métodos heredados de trabajo con buffers: solo se ha conservado la capacidad de usar dma-buf.
  • Se ha eliminado el soporte para las versiones de libX11 que no son seguras para subprocesos, y solo queda soporte para libX11 1.8 (abril de 2022) y versiones más nuevas que usan la llamada XInitThreads().
  • La compatibilidad con la extensión EGL EGL_WL_bind_wayland_display implementada para Wayland ha quedado obsoleta y está deshabilitada de forma predeterminada. Para intercambiar búferes de píxeles entre el cliente y servidor Se propone que Wayland utilice el protocolo Wayland linux_dmabuf. Para reactivarlo, es necesario especificar el indicador "-Dlegacy-wayland=bind-wayland-display" durante la compilación. Xwayland funciona correctamente sin EGL_WL_bind_wayland_display a partir de la versión 24.1 (mayo de 2024).
  • Se ha eliminado el controlador obsoleto Clover de OpenCL. Para OpenCL, se recomienda usar el controlador RustiCL, que es más funcional y compatible con más versiones de OpenCL.
  • El controlador ANV (Intel) implementa la extensión Vulkan:
    • VK_KHR_shader_bfloat16
  • El controlador RADV (AMD) implementa extensiones Vulkan:
    • VK_KHR_shader_bfloat16
    • VK_KHR_robustez2
    • VK_EXT_inicialización_cero_de_la_memoria_del_dispositivo
    • VK_EXT_scalar_block_layout
    • VK_KHR_mantenimiento9
    • Diseños de imágenes unificadas VK_KHR
    • VK_KHR_shader_float8
    • Copia de imagen del host VK_EXT
  • El controlador NVK (NVIDIA) implementa extensiones Vulkan:
    • VK_EXT_inicialización_cero_de_la_memoria_del_dispositivo
    • Matriz cooperativa VK_KHR
  • El controlador zink implementa la extensión Vulkan:
    • Semáforo de línea de tiempo NV
  • El controlador v3d (GPU Broadcom VideoCore para Raspberry Pi 4+) implementa la extensión OpenGL:
    • en v3d GL_ARB_blend_func_extended
  • El controlador panfrost implementa las siguientes extensiones OpenGL:
    • GL_KHR_compresión_de_textura_astc_hdr
    • Reloj del sombreador GL_ARB
    • Reloj en tiempo real del sombreador GL_EXT
  • El controlador asahi (Apple) implementa la extensión OpenGL:
    • GL_KHR_compresión_de_textura_astc_hdr
  • El controlador r600 (AMD) implementa extensiones OpenGL
    • Rectángulos de ventana GL_EXT
    • GL_EXT_shader_image_load_store
  • El controlador PanVK (GPU ARM Mali) implementa extensiones Vulkan:
    • VK_EXT_entrada_de_vértice_estado_dinámico/estado_dinámico_de_entrada_de_vértice
    • Estado dinámico de entrada de vértice VK_EXT
    • Divisor de atributos de vértice VK_EXT
    • VK_KHR_mantenimiento4
    • VK_KHR_mantenimiento5
    • Visualización en modo directo VK_EXT
    • 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_invocación
    • VK_EXT_shader_demote_to_helper_invocación
    • Compuestos replicados de sombreadores VK_EXT
    • Control de sesgo de profundidad VK_EXT
    • Reinicio de la lista de topología primitiva VK_EXT
    • VK_EXT_imagen_vista_2d_de_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_profundidad_clamp_zero_one
    • Abrazadera de profundidad VK_KHR cero uno
    • Control de recorte de profundidad VK_EXT
    • Diseños de imágenes unificadas VK_KHR
    • VK_KHR_vulkan_memory_model
    • VK_EXT_descriptor_indexing
    • VK_KHR_mantenimiento6
    • VK_KHR_shader_clock
    • VK_KHR_shader_atomic_int64
    • VK_KHR_calibrated_timestamps
    • VK_EXT_mapa_de_cubo_sin_costuras
    • Propiedades del núcleo del sombreador VK_ARM
    • Copia de imagen del host VK_KHR

Fuente: opennet.ru

Añadir un comentario