Lansarea Mesa 21.2, o implementare gratuită a OpenGL și Vulkan

După trei luni de dezvoltare, a fost publicată lansarea unei implementări gratuite a API-ului OpenGL și Vulkan - Mesa 21.2.0. Prima lansare a ramurii Mesa 21.2.0 are un statut experimental - după stabilizarea finală a codului, va fi lansată o versiune stabilă 21.2.1.

Mesa 21.2 include suport complet pentru OpenGL 4.6 pentru driverele 965, iris (Intel), radeonsi (AMD), zink și llvmpipe. Suportul OpenGL 4.5 este disponibil pentru GPU-urile AMD (r600) și NVIDIA (nvc0), iar suportul OpenGL 4.3 pentru virgl (GPU virtual Virgil3D pentru QEMU/KVM). Suportul Vulkan 1.2 este disponibil pentru cardurile Intel și AMD, precum și în modul emulator (vn), suportul Vulkan 1.1 este disponibil pentru GPU-urile Qualcomm și rasterizatorul software lavapipe, iar Vulkan 1.0 este disponibil pentru GPU-urile Broadcom VideoCore VI (Raspberry Pi 4). .

Principalele inovații:

  • Driverul asahi OpenGL este inclus cu suportul inițial pentru GPU inclus în cipurile Apple M1. Driverul folosește interfața Gallium și acceptă majoritatea caracteristicilor OpenGL 2.1 și OpenGL ES 2.0, dar nu este încă potrivit pentru rularea majorității jocurilor. Codul driverului se bazează pe driverul noop de referință Gallium, cu un cod portat din driverul Panfrost dezvoltat pentru GPU-ul ARM Mali.
  • Driverul Crocus OpenGL este inclus cu suport pentru GPU-uri Intel mai vechi (bazate pe microarhitecturi Gen4-Gen7), care nu sunt acceptate de driverul Iris. Spre deosebire de driverul i965, noul driver se bazează pe arhitectura Gallium3D, care externalizează sarcinile de gestionare a memoriei către driverul DRI din kernel-ul Linux și oferă un monitor de stare gata făcut cu suport pentru un cache de reutilizare a obiectelor de ieșire.
  • Driverul PanVk este inclus, oferind suport pentru API-ul grafic Vulkan pentru GPU-urile ARM Mali Midgard și Bifrost. PanVk este dezvoltat de angajații Collabora și este poziționat ca o continuare a dezvoltării proiectului Panfrost, care oferă suport pentru OpenGL.
  • Driverul Panfrost pentru GPU Midgard (Mali T760 și mai nou) și GPU Bifrost (Mali G31, G52, G76) acceptă OpenGL ES 3.1. Planurile viitoare includ lucrări de creștere a performanței pe cipurile Bifrost și implementarea suportului GPU bazat pe arhitectura Valhall (Mali G77 și mai nou).
  • Build-urile x32 pe 86 de biți folosesc instrucțiuni sse87 în loc de instrucțiuni x2 pentru calcule matematice.
  • Driverul Nouveau nv50 pentru GPU NVIDIA GT21x (GeForce GT 2×0) acceptă OpenGL ES 3.1.
  • Driverul Vulkan TURNIP și driverul OpenGL Freedreno, dezvoltat pentru GPU Qualcomm Adreno, au suport inițial pentru GPU Adreno a6xx gen4 (a660, a635).
  • Driverul Vulkan RADV (AMD) a adăugat suport pentru eliminarea primitivă folosind motoarele de shader NGG (Next-Gen Geometry). A fost implementată capacitatea de a construi driverul RADV pe platforma Windows folosind compilatorul MSVC.
  • Au fost efectuate lucrări pregătitoare în driverul ANV Vulkan (Intel) și driverul Iris OpenGL pentru a oferi suport pentru viitoarele plăci grafice Intel Xe-HPG (DG2). Aceasta include caracteristici inițiale legate de ray tracing și suport pentru ray tracing shaders.
  • Driverul lavapipe, care implementează un rasterizer software pentru API-ul Vulkan (analog cu llvmpipe, dar pentru Vulkan, traducerea apelurilor Vulkan API în API-ul Gallium), acceptă modul „wideLines” (oferă suport pentru linii cu o lățime care depășește 1.0).
  • A fost implementat suport pentru descoperirea dinamică și încărcarea backend-urilor GBM (Generic Buffer Manager). Schimbarea are ca scop îmbunătățirea suportului Wayland pe sistemele cu drivere NVIDIA.
  • Driverul Zink (o implementare a API-ului OpenGL peste Vulkan, care vă permite să obțineți OpenGL accelerat hardware dacă sistemul are drivere limitate la suportarea numai API-ul Vulkan) acceptă extensiile OpenGL GL_ARB_sample_locations, GL_ARB_sparse_buffer, GL_ARB_shader_group_vote, GL_ARB_ARB_maxure și GL_ARB_CAR_minure. S-au adăugat modificatori de format DRM (Direct Rendering Manager, extensia VK_EXT_image_drm_format_modifier activată).
  • Suport pentru extensii a fost adăugat la driverele Vulkan RADV (AMD), ANV (Intel) și lavapipe:
    • VK_EXT_provoking_vertex (RADV);
    • VK_EXT_extended_dynamic_state2 (RADV);
    • VK_EXT_global_priority_query (RADV);
    • VK_EXT_dispozitiv_fizic_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).

Sursa: opennet.ru

Adauga un comentariu