Release av Mesa 21.2, en gratis implementering av OpenGL och Vulkan

Efter tre månaders utveckling publicerades släppet av en gratis implementering av OpenGL och Vulkan API - Mesa 21.2.0. Den första utgåvan av Mesa 21.2.0-grenen har en experimentell status - efter den slutliga stabiliseringen av koden kommer en stabil version 21.2.1 att släppas.

Mesa 21.2 inkluderar fullt stöd för OpenGL 4.6 för drivrutiner för 965, iris (Intel), radeonsi (AMD), zink och llvmpipe. OpenGL 4.5-stöd är tillgängligt för AMD (r600) och NVIDIA (nvc0) GPU:er och OpenGL 4.3-stöd för virgl (Virgil3D virtuell GPU för QEMU/KVM). Vulkan 1.2-stöd är tillgängligt för Intel- och AMD-kort, såväl som i emulatorläge (vn), Vulkan 1.1-stöd är tillgängligt för Qualcomm GPU:er och lavapipe-programvaran rasterizer, och Vulkan 1.0 är tillgängligt för Broadcom VideoCore VI GPU:er (Raspberry Pi 4) .

Huvudsakliga innovationer:

  • Asahi OpenGL-drivrutinen ingår med initialt stöd för GPU:n som ingår i Apple M1-chips. Drivrutinen använder Gallium-gränssnittet och stöder de flesta funktionerna i OpenGL 2.1 och OpenGL ES 2.0, men är ännu inte lämplig för att köra de flesta spel. Drivrutinskoden är baserad på Gallium referens noop-drivrutinen, med en del kod som överförs från Panfrost-drivrutinen som utvecklas för ARM Mali GPU.
  • Crocus OpenGL-drivrutinen ingår med stöd för äldre Intel GPU:er (baserade på Gen4-Gen7 mikroarkitekturer), som inte stöds av Iris-drivrutinen. Till skillnad från i965-drivrutinen är den nya drivrutinen baserad på Gallium3D-arkitekturen, som lägger ut minneshanteringsuppgifter till DRI-drivrutinen i Linux-kärnan och ger en färdig tillståndsspårare med stöd för en återanvändningscache av utdataobjekt.
  • PanVk-drivrutinen ingår, vilket ger stöd för Vulkan grafik-API för ARM Mali Midgard och Bifrost GPU:er. PanVk utvecklas av Collabora-anställda och är positionerat som en fortsättning på utvecklingen av Panfrost-projektet, som ger stöd till OpenGL.
  • Panfrost-drivrutinen för Midgard GPU:er (Mali T760 och nyare) och Bifrost GPU:er (Mali G31, G52, G76) stöder OpenGL ES 3.1. Framtida planer inkluderar arbete med att öka prestanda på Bifrost-chips och implementering av GPU-stöd baserat på Valhall-arkitekturen (Mali G77 och nyare).
  • 32-bitars x86-byggen använder sse87-instruktioner istället för x2-instruktioner för matematiska beräkningar.
  • Nouveau nv50-drivrutinen för NVIDIA GT21x GPU (GeForce GT 2×0) stöder OpenGL ES 3.1.
  • Vulkan-drivrutinen TURNIP och OpenGL-drivrutinen Freedreno, utvecklad för Qualcomm Adreno GPU, har initialt stöd för Adreno a6xx gen4 GPU (a660, a635).
  • RADV (AMD) Vulkan-drivrutinen har lagt till stöd för primitiv utslaktning med NGG (Next-Gen Geometry) shader-motorer. Möjligheten att bygga RADV-drivrutinen på Windows-plattformen med hjälp av MSVC-kompilatorn har implementerats.
  • Förberedande arbete har utförts i ANV Vulkan-drivrutinen (Intel) och Iris OpenGL-drivrutinen för att ge support för de kommande Intel Xe-HPG (DG2) grafikkorten. Detta inkluderar initiala funktioner relaterade till ray tracing och stöd för ray tracing shaders.
  • Lavapipe-drivrutinen, som implementerar en mjukvaru-rasterizer för Vulkan API (analog med llvmpipe, men för Vulkan, översättning av Vulkan API-anrop till Gallium API), stöder läget "wideLines" (ger stöd för linjer med en bredd som överstiger 1.0).
  • Stöd för dynamisk upptäckt och laddning av alternativa GBM (Generic Buffer Manager) backends har implementerats. Ändringen syftar till att förbättra Wayland-stödet på system med NVIDIA-drivrutiner.
  • Zink-drivrutinen (en implementering av OpenGL API ovanpå Vulkan, som gör att du kan få hårdvaruaccelererad OpenGL om systemet har drivrutiner begränsade till att endast stödja Vulkan API) stöder OpenGL-tilläggen GL_ARB_sample_locations, GL_ARB_sparse_buffer, GL_ARB_shader_group_vote, GL_filter_ARB_maxure och GL_filter_ARB_maxure. Tillagda DRM-formatmodifierare (Direct Rendering Manager, VK_EXT_image_drm_format_modifier-tillägget aktiverat).
  • Stöd för tillägg har lagts till i Vulkan-drivrutinerna RADV (AMD), ANV (Intel) och lavapipe:
    • 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).

Källa: opennet.ru

Lägg en kommentar