După trei luni de dezvoltare, a fost lansată implementarea open source a API-urilor OpenGL și Vulkan, Mesa 26.1.0. Prima versiune a ramurii Mesa 26.1.0 este experimentală; după stabilizarea completă a codului, va fi lansată versiunea stabilă, 26.1.1.
Mesa 26.1 adaugă suport pentru API-ul grafic Vulkan 1.4 în driverele ANV pentru GPU-uri Intel, RADV pentru GPU-uri AMD, NVK pentru GPU-uri NVIDIA, HoneyKrisp (hk) pentru GPU-uri Apple, Turnip pentru GPU-uri Qualcomm, PanVK pentru GPU-uri ARM Mali, rasterizatorul software lavapipe (lvp) și modul emulator (vn). Driverele v3dv (Broadcom VideoCore GPU pentru Raspberry Pi 4+) și dzn (Vulkan over Direct3D 12) acceptă Vulkan 1.0, driverul kk (KosmicKrisp, Vulkan over Metal) acceptă Vulkan 1.1, iar driverul pvr (Imagination PowerVR GPU) acceptă Vulkan 1.2.
Mesa oferă, de asemenea, suport complet OpenGL 4.6 pentru iris (GPU-uri Intel Gen 8+), radeonsi (AMD), Crocus (GPU-uri Intel Gen4-Gen7 mai vechi), AMD (r600), zink, llvmpipe, virgl (GPU virtual virgil3D pentru QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (strat OpenGL peste DirectX 12) și asahi (GPU AGX utilizat în cipurile Apple M1 și M2). Suportul OpenGL 4.5 este disponibil pentru GPU-urile NVIDIA (nvc0). Suportul OpenGL 3.3 este disponibil în driverele softpipe (rasterizator software) și nv50 (NVIDIA NV50). OpenGL 3 este acceptat în driverele panfrost (GPU ARM Mali) și v3.1d (GPU Broadcom VideoCore).
Principalele inovații:
- Driverele pentru GPU-urile Intel (Iris, Crocus și ANV) acceptă acum acces direct la GPU de la mașinile virtuale folosind contexte native în VirtIO-GPU. Contextele native îmbunătățesc performanța atunci când se lucrează cu un GPU virtual (virtio-gpu-gl) într-un sistem guest prin transmiterea directă a comenzilor către GPU-ul gazdă.
- Suportul pentru OpenGL ES 2.0 a fost adăugat pentru GPU-urile PowerVR prin intermediul driverului Zink, permițând OpenGL cu accelerare hardware pe dispozitivele care acceptă API-ul Vulkan.
- Driverul OpenCL rusticl necesită acum o bibliotecă stdlib C++ legată static pentru a funcționa corect cu aplicații care utilizează biblioteci stdlib C++ native.
- Driverul Radeonsi (AMD) a adăugat suport pentru extensia OpenGL GL_NV_timeline_semaphore.
- Driverul panfrost (ARM Mali) este acum compatibil cu extensia OpenGL GL_EXT_shader_image_load_store.
- Driverul v3d (Broadcom VideoCore) acceptă acum extensia OpenGL GL_ARB_sample_shading.
- S-a adăugat suport pentru extensiile Vulkan:
- VK_ARM_scheduling_controls pentru panvk
- VK_EXT_acquire_drm_display pentru panvk
- VK_EXT_astc_decode_mode pentru panvk
- VK_EXT_attachment_feedback_loop_dynamic_state pentru panvk
- VK_EXT_attachment_feedback_loop_layout pentru panvk
- VK_EXT_blend_operation_advanced pentru lavapipe
- VK_EXT_color_write_enable pentru panvk
- VK_EXT_conditional_rendering pentru panvk
- VK_EXT_depth_clamp_control pentru panvk
- VK_EXT_descriptor_heap pentru RADV (când se setează 'export RADV_EXPERIMENTAL=heap')
- VK_EXT_hdr_metadate pentru v3dv
- Modificator_format_drm_imagine_VK_EXT pentru PVR
- VK_EXT_image_view_min_lod pentru panvk
- VK_EXT_legacy_dithering pentru panvk
- VK_EXT_map_memory_placed pentru panvk
- VK_EXT_nested_command_buffer pentru panvk
- VK_EXT_non_seamless_cube_map pentru pvr
- VK_EXT_prezență_sincronizare pentru RADV, NVK, Turnip, ANV, Honeykrisp, panvk
- VK_EXT_primitive_restart_index pentru RADV
- VK_EXT_rgba10x6_formate pentru panvk
- VK_EXT_shader_atomic_float pentru panvk
- VK_EXT_shader_stencil_export pentru panvk
- VK_EXT_zero_initializare_memorie_dispozitiv pentru panvk
- VK_KHR_copy_memory_indirect pentru nvk, RADV/GFX8+
- Comenzi VK_KHR_device_address_pentru RADV
- VK_{KHR,EXT}_{suprafață,lanț de schimb}_întreținere1 pentru panvk
- VK_KHR_get_display_properties2 pentru panvk
- VK_KHR_get_surface_capabilities2 pentru panvk
- VK_KHR_cozi_sincronizate_intern pentru RADV
- VK_KHR_maintenance4 pentru pvr
- Proprietăți_executabile_VK_KHR_pipeline pentru pvr
- VK_KHR_present_id pentru panvk, v3dv
- VK_KHR_present_wait pentru panvk, v3dv
- VK_KHR_sampler_ycbcr_conversion pentru pvr
- VK_KHR_shader_integer_dot_product pentru pvr
- VK_KHR_shader_untyped_pointers pentru panvk
- VK_KHR_swapchain_mutable_format pentru panvk
- VK_QCOM_procesare_imagini pentru Turnip
- Tipul descriptorului_mutabil_VK_VALVE pentru panvk
- VK_VALVE_shader_mixed_float_dot_product pentru RADV (Vega20, Navi14, RDNA2+)
- Extensii OpenCL implementate:
- cl_khr_subgroup_ballot pentru asahi, iris, llvmpipe, radeonsi și zink
- cl_xr_subgroup_clustered_reduce pentru asahi, llvmpipe, radeonsi și zink
- cl_khr_subgroup_extended_types pentru asahi, iris, llvmpipe, radeonsi și zink
- cl_khr_subgroup_non_uniform_aritmetic pentru asahi, llvmpipe, radeonsi și zink
- cl_khr_subgroup_non_uniform_vote pentru asahi, iris, llvmpipe, radeonsi și zink
- cl_khr_subgroup_rotate pentru asahi, llvmpipe și zink
- Driverul VirGL, care implementează un GPU virtual pentru QEMU, nu mai este întreținut și va fi eliminat, cu excepția cazului în care cineva este dispus să preia mentenanța sa.
Sursa: opennet.ru
