Após três meses de desenvolvimento, é lançado o release da implementação livre da API OpenGL e Vulkan — Mesa 25.2.0. A primeira versão da branch Mesa 25.2.0 tem status experimental — após a estabilização final do código, será lançada a versão estável 25.2.1.
No Mesa 25.2, há suporte para a API gráfica Vulkan 1.4 nos drivers ANV para GPUs Intel, RADV para GPUs AMD, NVK para GPUs NVIDIA, Asahi para GPUs da Apple, Turnip para GPUs Qualcomm e PanVK para GPUs ARM Mali, além do rasterizador software lavapipe (lvp) e no modo emulador (vn). Nos drivers v3dv (GPU Broadcom VideoCore para Raspberry Pi 4+) e dzn (implementação do Vulkan sobre Direct3D 12) é suportado o Vulkan 1.0.
O Mesa também oferece suporte completo para OpenGL 4.6 nos drivers iris (GPU Intel Gen 8+), radeonsi (AMD), Crocus (antigas GPUs Intel Gen4-Gen7), AMD (r600), zink, llvmpipe, virgl (GPU virtual Virgil3D para QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (camada para executar OpenGL sobre DirectX 12) e asahi (GPU AGX, usada nos chips Apple M1 e M2). O suporte para OpenGL 4.5 está disponível para GPUs NVIDIA (nvc0). O suporte para OpenGL 3.3 está presente nos drivers softpipe (rasterizador software) e nv50 (NVIDIA NV50). Nos drivers panfrost (GPU ARM Mali) e v3d (GPU Broadcom VideoCore) é suportado OpenGL 3.1.
Principais novidades:
- No driver Vulkan PanVK para dispositivos com GPU ARM Mali baseados na arquitetura V10, como Mali-G610 e Mali-G310, foi adicionado suporte para a API gráfica Vulkan 1.4 (anteriormente suportava Vulkan 1.2).
- No driver OpenGL r600 para antigas GPUs AMD (até a série Radeon HD 7000 inclusive), foi adicionado suporte para a API gráfica OpenGL 4.6 (anteriormente suportava OpenGL 4.5).
- No driver Vulkan NVK foi adicionado suporte para GPUs NVIDIA baseadas nas microarquiteturas Blackwell e Kepler (GTX 600/700). Para GPUs Blackwell, foi implementado suporte ao Vulkan 1.4, enquanto para GPUs Kepler, o suporte foi para a API Vulkan 1.2 (versões mais novas do Vulkan não são suportadas devido a limitações de hardware). Para GPUs NVIDIA baseadas na microarquitetura Maxwell, foi garantida total compatibilidade com Vulkan 1.4.
- O compilador de shaders NAK, escrito em Rust e utilizado no driver NVK, foi otimizado. O pacote crate rustc-hash foi incluído como dependência para o driver NVK, permitindo reduzir o tempo de compilação dos shaders em cerca de 12%.
- O suporte ao OpenGL para GPUs NVIDIA Maxwell, Pascal e Volta foi alterado por padrão do driver Nouveau para o uso do driver Zink em conjunto com o driver Vulkan NVK. O Zink também é utilizado para garantir suporte ao OpenGL em sistemas com GPUs Blackwell (não está nos planos adicionar suporte ao GPU Blackwell no driver OpenGL Nouveau). O Zink fornece uma implementação do OpenGL 4.6 sobre Vulkan, permitindo obter OpenGL acelerado por hardware em dispositivos que suportam a API Vulkan. O desempenho do Zink é próximo ao desempenho das implementações nativas do OpenGL.
- A performance do driver Vulkan Honeykrisp para processadores gráficos fornecidos nos chips Apple M1/M2 foi significativamente aumentada.
- O suporte à aceleração de hardware para decodificação de vídeos no formato VP9 foi adicionado aos drivers Vulkan RADV (GPU AMD) e ANV (Intel). Esta funcionalidade foi implementada através da extensão Vulkan VK_KHR_video_decode_vp9, preparada pela equipe de trabalho da Vulkan WG na primavera. A aceleração de hardware está disponível para GPUs AMD começando pela GPU Navi 10 baseada na microarquitetura RDNA 1.0.
- No driver Vulkan RADV para GPUs AMD com microarquiteturas RDNA3 e RDNA4, a performance de ray tracing foi melhorada e o suporte para a tecnologia de super amostragem FSR 4 (FidelityFX Super Resolution) foi aprimorado. Foi adicionada a possibilidade de configurar prioridades para a fila de comandos (extensão OpenCL cl_khr_priority_hints).
- No driver OpenGL radeonsi para as famílias mais antigas de GPUs AMD Evergreen e Cayman, foi implementado o suporte ao OpenGL 4.6. Foi adicionado o suporte à memória virtual compartilhada (SVM, Shared Virtual Memory).
- No driver OpenGL Iris e no driver Vulkan ANV, foi implementado suporte para GPUs utilizadas nos processadores Intel Wildcat Lake. No Iris e no ANV, também foi anunciada a estabilidade do suporte às GPUs Intel baseadas na arquitetura Xe3, utilizadas nos processadores Panther Lake. O suporte para as famílias de GPUs Xe2 e Xe3 foi aprimorado. No driver Iris, foi adicionada a suporte à memória virtual compartilhada (SVM, Shared Virtual Memory).
- No driver OpenGL freedreno, foi adicionado suporte para a GPU Adreno X1-45, utilizada no SoC Qualcomm Snapdragon X Plus.
- O desenvolvimento do driver OpenCL Rusticl, escrito em Rust e que substituiu o driver Clover, foi continuado. No Rusticl, foi adicionado suporte a SVM (Shared Virtual Memory), imagens no espaço de cores sRGB (formatos CL_sRGBA e CL_sBGRA), formato FP16 (extensão OpenCL cl_khr_fp16 para drivers asahi, freedreno, llvmpipe, panfrost, radeonsi e zink).
- Adicionado o front-end Gallium3D MFT (Media Foundation Transform), permitindo o uso do driver D3D12 (Direct3D 12) para implementar outras APIs gráficas. Desenvolvido pela Microsoft para o WSL (Windows Subsystem for Linux).
- Removido o suporte para a infraestrutura DRI2 (Direct Rendering Infrastructure), sendo substituída pela interface DRI3, que utiliza DMA-BUF para acesso direto à placa de vídeo. O motivo mencionado é que a interface DRI3 existe há mais de 10 anos, a DRI2 está obsoleta, e todos os drivers de GPU suportados já implementaram a interface DRI3.
- Parada do suporte a métodos obsoletos de trabalho com buffers — apenas a possibilidade de usar dma-buf foi mantida.
- Suspenso o suporte para versões libX11 que não garantem operação segura em aplicativos multithread. Apenas a libX11 1.8 (abril de 2022) e versões mais novas que usam a chamada XInitThreads() foram mantidas.
- O suporte para a extensão EGL EGL_WL_bind_wayland_display, implementada para o Wayland, foi declarado obsoleto e desativado por padrão. Para troca de buffers de pixels entre cliente e servidor Wayland, é sugerido usar o protocolo Wayland linux_dmabuf. Para reverter o suporte, é necessário especificar a flag "-Dlegacy-wayland=bind-wayland-display" durante a compilação. O Xwayland suporta operação correta sem EGL_WL_bind_wayland_display a partir da versão 24.1 (maio de 2024).
- Removido o driver OpenCL Clover obsoleto. Para OpenCL, deve-se usar o driver RustiCL, que é mais funcional e suporta mais versões do OpenCL.
- O driver ANV (Intel) implementou a extensão Vulkan:
- VK_KHR_shader_bfloat16
- O driver RADV (AMD) implementou as extensões 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
- O driver NVK (NVIDIA) implementou as extensões Vulkan:
- VK_EXT_zero_initialize_device_memory
- VK_KHR_cooperative_matrix
- O driver zink implementou a extensão Vulkan:
- NV_timeline_semaphore
- O driver v3d (GPU Broadcom VideoCore para Raspberry Pi 4+) implementou a extensão OpenGL:
- no v3d GL_ARB_blend_func_extended
- O driver panfrost implementou as extensões OpenGL:
- GL_KHR_texture_compression_astc_hdr
- GL_ARB_shader_clock
- GL_EXT_shader_realtime_clock
- O driver asahi (Apple) implementou a extensão OpenGL:
- GL_KHR_texture_compression_astc_hdr
- O driver r600 (AMD) implementou as extensões OpenGL
- GL_EXT_window_rectangles
- GL_EXT_shader_image_load_store
- O driver PanVK (GPU ARM Mali) implementou as extensões 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_topologia_primativa_lista_reiniciar
- VK_EXT_imagem_2d_visão_de_3d
- VK_EXT_texel_buffer_alignment
- VK_EXT_shader_subgrupo_votação
- VK_EXT_shader_subgrupo_voar
- VK_KHR_load_store_op_none
- VK_EXT_carregar_armazenar_op_nenhum
- VK_EXT_inline_uniform_block
- VK_EXT_texture_compression_astc_hdr
- VK_EXT_clampeamento_de_profundidade_zero_um
- VK_KHR_clampeamento_de_profundidade_zero_um
- VK_EXT_controle_de_corte_de_profundidade
- VK_KHR_unified_image_layouts
- VK_KHR_modelo_de_memória_vulkan
- VK_EXT_indexação_de_descriptor
- VK_KHR_manutencão6
- VK_KHR_relogio_shader
- VK_KHR_shader_atômico_int64
- VK_KHR_timestamps_calibrados
- VK_EXT_mapa_cubo_não_seamesless
- VK_ARM_propriedades_núcleo_shader
- VK_KHR_cópia_de_imagem_host
Fonte: opennet.ru
