Po třech měsících vývoje bylo zveřejněno vydání bezplatné implementace API OpenGL a Vulkan, Mesa 21.2.0. První vydání větve Mesa 21.2.0 má experimentální status – po finální stabilizaci kódu vyjde stabilní verze 21.2.1.
Mesa 21.2 má plnou podporu OpenGL 4.6 pro ovladače 965, iris (Intel), radeonsi (AMD), zink a llvmpipe. Podpora OpenGL 4.5 je k dispozici pro GPU AMD (r600) a NVIDIA (nvc0) a OpenGL 4.3 pro virgl (virtuální GPU Virgil3D pro QEMU/KVM). Podpora Vulkan 1.2 je k dispozici pro karty Intel a AMD a také v režimu emulátoru (vn), podpora Vulkan 1.1 je k dispozici pro GPU Qualcomm a softwarový rasterizér lavapipe a Vulkan 1.0 pro GPU Broadcom VideoCore VI (Raspberry Pi 4).
Hlavní inovace:
- Ovladač asahi OpenGL je součástí počáteční podpory pro GPU dodávané v čipech Apple M1. Ovladač používá rozhraní Gallium a podporuje většinu funkcí OpenGL 2.1 a OpenGL ES 2.0, ale zatím není vhodný pro spouštění většiny her. Kód ovladače je založen na noop referenčním ovladači Gallium, přičemž některé kódy jsou přeneseny z ovladače Panfrost vyvinutého pro GPU ARM Mali.
- Ovladač Crocus OpenGL je součástí podpory pro starší GPU Intel (založené na mikroarchitekturách Gen4-Gen7), které ovladač Iris nepodporuje. Na rozdíl od ovladače i965 je nový ovladač založen na architektuře Gallium3D, která outsourcuje úlohy správy paměti ovladači DRI v jádře Linuxu a poskytuje připravený sledovač stavu s podporou mezipaměti pro opětovné použití výstupních objektů.
- Je zahrnut ovladač PanVk, který poskytuje podporu pro grafické rozhraní API Vulkan pro GPU ARM Mali Midgard a Bifrost. PanVk je vyvíjen zaměstnanci Collabora a je umístěn jako pokračování vývoje projektu Panfrost, který poskytuje podporu pro OpenGL.
- Ovladač Panfrost pro GPU Midgard (Mali T760 a novější) a GPU Bifrost (Mali G31, G52, G76) podporuje OpenGL ES 3.1. Mezi další plány patří práce na zvýšení výkonu na čipech Bifrost a podpora GPU založených na architektuře Valhall (Mali G77 a novější).
- 32bitová sestavení pro architekturu x86 používají pro matematické výpočty instrukce sse87 místo instrukcí x2.
- Ovladač Nouveau nv50 pro GPU NVIDIA GT21x (GeForce GT 2x0) podporuje OpenGL ES 3.1.
- Ovladač TURNIP Vulkan a ovladač Freedreno OpenGL vyvinutý pro GPU Qualcomm Adreno mají počáteční podporu pro GPU Adreno a6xx gen4 (a660, a635).
- Do ovladače RADV (AMD) Vulkan byla přidána podpora primitivního vybíjení pomocí shader NGG (Next-Gen Geometry) enginů. Implementována schopnost sestavit ovladač RADV na platformě Windows pomocí kompilátoru MSVC.
- Ovladač ANV Vulkan (Intel) a ovladač Iris OpenGL byly připraveny na podporu nadcházejících grafických karet Intel Xe-HPG (DG2). To zahrnuje počáteční funkce související s ray tracingem a podporou shaderů pro ray tracing.
- Ovladač lavapipe s implementací softwarového rasterizéru pro Vulkan API (podobný llvmpipe, ale pro Vulkan, který překládá volání Vulkan API do Gallium API) podporuje režim „wideLines“ (poskytuje podporu pro řádky o šířce větší než 1.0 ).
- Implementována podpora pro dynamické zjišťování a načítání alternativních backendů GBM (Generic Buffer Manager). Cílem změny je zlepšit podporu Wayland na systémech s ovladači NVIDIA.
- Ovladač Zink (implementace OpenGL API nad Vulkanem, která vám umožňuje získat hardwarově akcelerované OpenGL, když má systém ovladače omezené pouze na podporu Vulkan API) podporuje rozšíření OpenGL GL_ARB_sample_locations, GL_ARB_sparse_buffer, GL_ARB_shader_group_vote, GL_filtermin_clock_texture_GL_ARB_clock_texture_ Přidány modifikátory formátu DRM (Direct Rendering Manager, včetně rozšíření VK_EXT_image_drm_format_modifier).
- Přidána podpora pro rozšíření ovladačů RADV (AMD), ANV (Intel) a lavapipe Vulkan:
- VK_EXT_provoking_vertex (RADV);
- VK_EXT_extended_dynamic_state2 (RADV);
- VK_EXT_global_priority_query (RADV);
- VK_EXT_physical_device_drm (RADV);
- VK_KHR_shader_subgroup_uniform_control_flow (RADV, ANV);
- VK_EXT_color_write_enable (RADV);
- VK_EXT_acquire_drm_display (RADV, ANV);
- VK_EXT_vertex_input_dynamic_state(lavapipe);
- VK_EXT_line_rasterization(lavapipe);
- VK_EXT_multi_draw(ANV, lavapipe, RADV);
- VK_KHR_separate_depth_stencil_layouts (lavapipe);
- VK_EXT_separate_stencil_usage(lavapipe);
- VK_EXT_extended_dynamic_state2 (lavapipe).
Zdroj: opennet.ru