Vydání Mesa 21.2, bezplatné implementace OpenGL a Vulkan

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

Přidat komentář