Három hónap fejlesztés után megjelent az OpenGL és Vulkan API szabad implementációja — Mesa 25.2.0. Az 25.2.0 verzió első kiadása kísérleti státuszú — a kód végső stabilizálása után az 25.2.1 stabil verzió kerül kiadásra.
A Mesa 25.2 támogatja a Vulkan 1.4 grafikus API-t az ANV meghajtókban Intel GPU-hoz, RADV AMD GPU-hoz, NVK NVIDIA GPU-hoz, Asahi Apple GPU-hoz, Turnip Qualcomm GPU-hoz, PanVK ARM Mali GPU-hoz, a lavapipe (lvp) programozott raszterizálóban és emulátor módban (vn). A v3dv (Broadcom VideoCore GPU Raspberry Pi 4+ számára) és a dzn (Vulkan implementáció a Direct3D 12 fölött) meghajtókban Vulkan 1.0 támogatás található.
A Mesában teljes körű OpenGL 4.6 támogatás biztosított az iris (Intel Gen 8+ GPU), radeonsi (AMD), Crocus (régi Intel Gen4-Gen7 GPU), AMD (r600), zink, llvmpipe, virgl (virtuális GPU Virgil3D a QEMU/KVM-hez), freedreno (Qualcomm Adreno), d3d12 (átjáró, amely lehetővé teszi az OpenGL működését a DirectX 12 felett) és asahi (AGX GPU, amelyet az Apple M1 és M2 chipek használnak) meghajtókhoz. Az OpenGL 4.5 támogatás elérhető NVIDIA GPU-hoz (nvc0). Az OpenGL 3.3 támogatás jelen van a softpipe (programozott raszterizáló) és nv50 (NVIDIA NV50) meghajtókban. A panfrost (ARM Mali GPU) és a v3d (Broadcom VideoCore GPU) meghajtók támogatják az OpenGL 3.1-et.
Főbb újítások:
- A PanVK Vulkan-meghajtóban, ARM Mali GPU-val rendelkező V10 architektúrára épülő eszközök, mint például a Mali-G610 és Mali-G310, bevették a Vulkan 1.4 grafikus API támogatását (korábban Vulkan 1.2-t támogatták).
- Az OpenGL r600 meghajtóban, régi AMD GPU-khoz (Radeon HD 7000 sorozatig bezárólag) bevették a Vulkan 4.6 grafikus API támogatását (korábban OpenGL 4.5 volt támogatott).
- Az NVK Vulkan-meghajtóban a Blackwell és Kepler architektúrára épülő NVIDIA GPU-k támogatása vált elérhetővé (GTX 600/700). A Blackwell GPU-k számára bevezették a Vulkan 1.4 támogatását, míg a Kepler GPU-hoz a Vulkan 1.2 API-t (újabb Vulkan verziókat hardveres korlátozások miatt nem támogatják). A Maxwell architektúrára épülő NVIDIA GPU-k teljes kompatibilitással rendelkeznek a Vulkan 1.4-el.
- Optimalizálták a NAK shadert fordítójának munkáját, amely Rust nyelven íródott és az NVK meghajtóban alkalmazzák. Az NVK meghajtó függőségei közé bevették a rustc-hash crate csomagot, amellyel körülbelül 12%-kal sikerült csökkenteni a shaderek fordítási idejét.
- Az OpenGL támogatás az NVIDIA Maxwell, Pascal és Volta GPU-hoz alapértelmezetten a Nouveau meghajtóról a Zink meghajtó használatára váltott a Vulkan NVK meghajtóval. A Zink szintén alkalmazva van az OpenGL támogatás biztosítására Blackwell GPU-val rendelkező rendszereken (a Nouveau OpenGL meghajtó nem tervezi a Blackwell GPU támogatását). A Zink egy 4.6-os OpenGL implementációt kínál a Vulkan fölött, lehetővé téve a hardveresen gyorsított OpenGL-t a Vulkan API-t támogató eszközökön. A Zink teljesítménye közel áll az natív OpenGL implementációk teljesítményéhez.
- Jelentősen megnövekedett a Honeykrisp Vulkan-meghajtó teljesítménye, amelyet az Apple M1/M2 chipek grafikus feldolgozói biztosítanak.
- A RADV (AMD GPU) és ANV (Intel) Vulkan-meghajtókba integrálva lett a VP9 videodekódolás hardveres gyorsításának támogatása. Ez a lehetőség a Vulkan VK_KHR_video_decode_vp9 kiterjesztésének segítségével valósult meg, amelyet a Vulkan WG munkacsoport készített el tavasszal. A hardveres gyorsítás az AMD Navi 10 GPU-tól kezdődően elérhető, amely az RDNA 1.0 mikroarchitektúrára épül.
- A RADV Vulkan-meghajtóban az AMD RDNA3 és RDNA4 mikroarchitektúrájú GPU-k számára javult a sugárkövetési teljesítmény, emellett pedig a FSR 4 (FidelityFX Super Resolution) szupermintavételi technológia támogatása is fejlődött. Lehetővé vált a parancsfeldolgozó sor (OpenCL kiterjesztés: cl_khr_priority_hints) prioritásainak beállítása.
- Az OpenGL radeonsi meghajtóban a régi AMD Evergreen és Cayman GPU családok számára 4.6-os OpenGL támogatás készült. Továbbá bevezetésre került a megosztott virtuális memória (SVM, Shared Virtual Memory) támogatása is.
- Az Iris OpenGL-meghajtóban és az ANV Vulkan-meghajtóban megvalósult az Intel Wildcat Lake processzorokhoz használt GPU-k támogatása. Az Iris és ANV meghajtóban stabil támogatást nyújtanak az Intel Xe3 architektúrára alapozott GPU-k számára is, amelyek a Panther Lake processzorokban találhatók. Fejlődött az Xe2 és Xe3 GPU családok támogatása is. Az Iris meghajtóban hozzáadódott a megosztott virtuális memória (SVM, Shared Virtual Memory) támogatása.
- A freedreno OpenGL-meghajtóban hozzáadták az Adreno X1-45 GPU támogatását, amely a Qualcomm Snapdragon X Plus SoC-ben található.
- Folyamatosan fejlődik a Rusticl OpenCL-meghajtó, amely Rust nyelven készült és a Clover meghajtó helyébe lép. A Rusticl-hez hozzáadták a megosztott virtuális memória (SVM) támogatását, az sRGB színteret használó képek támogatását (CL_sRGBA és CL_sBGRA formátumok), valamint az FP16 formátumot (OpenCL kiterjesztés cl_khr_fp16 az asahi, freedreno, llvmpipe, panfrost, radeonsi és zink meghajtókhoz).
- Hozzáadva a Gallium3D frontend MFT (Media Foundation Transform), amely lehetővé teszi a D3D12 (Direct3D 12) illesztőprogram használatát más grafikai API-k megvalósításához. A Microsoft fejlesztette ki a WSL (Windows Subsystem for Linux) számára.
- Eltávolítva a DRI2 (Direct Rendering Infrastructure) infrastruktúra támogatása, amelynek helyére a DRI3 interfész lépett, amely DMA-BUF-ot használ a közvetlen hozzáférés megszervezésére a videoadapterhez. Az indoklás szerint a DRI3 interfész már több mint 10 éve létezik, a DRI2 régóta elavult, és minden támogatott GPU-illesztőprogram már megvalósította a DRI3 interfészt.
- A régi pufferszinkronizálás módszerek támogatása leállítva — csak a dma-buf használata maradt lehetőség.
- A libX11 nem biztonságos többszálú alkalmazásokkal való működésének régi módszereinek támogatása leállítva. Csak a libX11 1.8 (2022 áprilisi) és újabb verziók támogatása maradt, amelyek használják az XInitThreads() hívást.
- Elavultnak nyilvánítva és alapértelmezés szerint letiltva az EGL_WL_bind_wayland_display EGL-kibővítése, amelyet a Wayland számára valósítottak meg. A pixel pufferek cseréjére a kliens és a szerverrel Wayland között a linux_dmabuf Wayland-protokollt ajánlott használni. A támogatás visszaállításához a -Dlegacy-wayland=bind-wayland-display flag-et kell megadni a fordítás során. Az Xwayland a 24.1-es kiadástól (2024 május) kezdve megfelelően működik az EGL_WL_bind_wayland_display nélkül.
- Eltávolítva az elavult OpenCL-illesztőprogramot, a Clover-t. OpenCL-hez a RustiCL illesztőprogramot javasolt használni, amely funkcionálisan gazdagabb és támogat több OpenCL verziót.
- Az ANV (Intel) illesztőprogramban a Vulkan-kibővítés megvalósítva:
- VK_KHR_shader_bfloat16
- A RADV (AMD) illesztőprogramban a Vulkan-kibővítések megvalósítva:
- 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
- A NVK (NVIDIA) illesztőprogramban a Vulkan-kibővítések megvalósítva:
- VK_EXT_zero_initialize_device_memory
- VK_KHR_cooperative_matrix
- A zink illesztőprogramban a Vulkan-kibővítés megvalósítva:
- NV_timeline_semaphore
- A v3d (GPU Broadcom VideoCore a Raspberry Pi 4+ számára) illesztőprogramban az OpenGL-kibővítés megvalósítva:
- on v3d GL_ARB_blend_func_extended
- A panfrost illesztőprogramban az OpenGL-kibővítések megvalósítva:
- GL_KHR_texture_compression_astc_hdr
- GL_ARB_shader_clock
- GL_EXT_shader_realtime_clock
- A asahi (Apple) illesztőprogramban az OpenGL-kibővítés megvalósítva:
- GL_KHR_texture_compression_astc_hdr
- A r600 (AMD) illesztőprogramban az OpenGL-kibővítések megvalósítva
- GL_EXT_window_rectangles
- GL_EXT_shader_image_load_store
- A PanVK (GPU ARM Mali) illesztőprogramban a Vulkan-kibővítések megvalósítva:
- 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
Forrás: opennet.ru
