Wydanie Mesa 21.2, darmowej implementacji OpenGL i Vulkan

Po trzech miesiącach rozwoju opublikowano wydanie bezpłatnej implementacji API OpenGL i Vulkan, Mesa 21.2.0. Pierwsze wydanie gałęzi Mesa 21.2.0 ma status eksperymentalny - po ostatecznej stabilizacji kodu zostanie wydana stabilna wersja 21.2.1.

Mesa 21.2 ma pełną obsługę OpenGL 4.6 dla sterowników 965, iris (Intel), radeonsi (AMD), zink i llvmpipe. Obsługa OpenGL 4.5 jest dostępna dla procesorów graficznych AMD (r600) i NVIDIA (nvc0), a OpenGL 4.3 dla virgl (wirtualny procesor graficzny Virgil3D dla QEMU/KVM). Obsługa Vulkan 1.2 jest dostępna dla kart Intel i AMD, a także w trybie emulatora (vn), obsługa Vulkan 1.1 jest dostępna dla procesorów graficznych Qualcomm i rasteryzatora oprogramowania lavapipe, a Vulkan 1.0 dla procesorów graficznych Broadcom VideoCore VI (Raspberry Pi 4).

Główne innowacje:

  • Sterownik asahi OpenGL jest dołączony do wstępnej obsługi procesora graficznego dostarczanego w układach Apple M1. Sterownik wykorzystuje interfejs Gallium i obsługuje większość funkcji OpenGL 2.1 i OpenGL ES 2.0, ale nie jest jeszcze odpowiedni do uruchamiania większości gier. Kod sterownika jest oparty na referencyjnym sterowniku noop Gallium, z pewnym kodem przeniesionym ze sterownika Panfrost opracowanego dla procesora graficznego ARM Mali.
  • Dołączony sterownik Crocus OpenGL z obsługą starszych procesorów graficznych Intel (opartych na mikroarchitekturach Gen4-Gen7), które nie są obsługiwane przez sterownik Iris. W przeciwieństwie do sterownika i965, nowy sterownik jest oparty na architekturze Gallium3D, która zleca zadania zarządzania pamięcią sterownikowi DRI w jądrze Linuksa i zapewnia gotowe narzędzie do śledzenia stanu z obsługą pamięci podręcznej ponownego wykorzystania obiektów wyjściowych.
  • Dołączony jest sterownik PanVk, zapewniający obsługę graficznego interfejsu API Vulkan dla procesorów graficznych ARM Mali Midgard i Bifrost. PanVk jest rozwijany przez pracowników Collabora i jest pozycjonowany jako kontynuacja rozwoju projektu Panfrost, który zapewnia wsparcie dla OpenGL.
  • Sterownik Panfrost dla GPU Midgard (Mali T760 i nowsze) oraz GPU Bifrost (Mali G31, G52, G76) obsługuje OpenGL ES 3.1. W dalszych planach są prace nad zwiększeniem wydajności na układach Bifrost oraz obsługa GPU opartych o architekturę Valhall (Mali G77 i nowsze).
  • Kompilacje 32-bitowe dla architektury x86 używają instrukcji sse87 zamiast instrukcji x2 do obliczeń matematycznych.
  • Sterownik Nouveau nv50 dla procesora graficznego NVIDIA GT21x (GeForce GT 2x0) obsługuje OpenGL ES 3.1.
  • Sterownik TURNIP Vulkan i sterownik Freedreno OpenGL opracowane dla procesorów graficznych Qualcomm Adreno mają wstępną obsługę procesorów graficznych Adreno a6xx gen4 (a660, a635).
  • Do sterownika RADV (AMD) Vulkan dodano obsługę prymitywnego cullingu przy użyciu silników shaderów NGG (geometria nowej generacji). Zaimplementowano możliwość budowania sterownika RADV na platformie Windows przy użyciu kompilatora MSVC.
  • Sterownik ANV Vulkan (Intel) i sterownik Iris OpenGL zostały przygotowane do obsługi nadchodzących kart graficznych Intel Xe-HPG (DG2). Obejmuje to wstępne funkcje związane z ray tracingiem i wsparciem shaderów dla ray tracingu.
  • Sterownik lavapipe z implementacją rasteryzatora programowego dla API Vulkan (podobny do llvmpipe, ale dla Vulkan, który tłumaczy wywołania API Vulkan na API Gallium) obsługuje tryb „wideLines” (zapewnia obsługę linii o szerokości większej niż 1.0 ).
  • Wdrożono obsługę dynamicznego wykrywania i ładowania alternatywnych backendów GBM (Generic Buffer Manager). Zmiana ma na celu poprawę obsługi Wayland w systemach ze sterownikami NVIDIA.
  • Sterownik Zink (implementacja API OpenGL na Vulkan, która pozwala uzyskać akcelerację sprzętową OpenGL, gdy system ma sterowniki ograniczone do obsługi API Vulkan) obsługuje rozszerzenia OpenGL GL_ARB_sample_locations, GL_ARB_sparse_buffer, GL_ARB_shader_group_vote, GL_ARB_texture_filter_minmax i GL_ARB_shader_clock. Dodano modyfikatory formatu DRM (Direct Rendering Manager, dołączone rozszerzenie VK_EXT_image_drm_format_modifier).
  • Dodano obsługę rozszerzeń sterowników RADV (AMD), ANV (Intel) i 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 (potok lawowy);
    • VK_EXT_line_rasteryzacja (lavapipe);
    • VK_EXT_multi_draw(ANV, lavapipe, RADV);
    • VK_KHR_separate_depth_stencil_layouts (rurka lawowa);
    • VK_EXT_separate_stencil_usage(pipe);
    • VK_EXT_extended_dynamic_state2 (rurka lawowa).

Źródło: opennet.ru

Dodaj komentarz