Opublikowano wydanie bezpłatnej implementacji API OpenGL i Vulkan - Mesa 24.1.0. Pierwsze wydanie gałęzi Mesa 24.1.0 ma status eksperymentalny - po ostatecznej stabilizacji kodu zostanie wydana stabilna wersja 24.1.1.
Mesa 24.0 zapewnia obsługę graficznego API Vulkan 1.3 w anv dla procesorów graficznych Intel, radv dla procesorów graficznych AMD, NVK dla procesorów graficznych NVIDIA, tu dla procesorów graficznych Qualcomm, w rasteryzatorze oprogramowania lavapipe (lvp) oraz w trybie emulatora (vn). Obsługa Vulkan 1.0 jest zaimplementowana w sterownikach v3dv (procesor graficzny Broadcom VideoCore VI z Raspberry Pi 4) i dzn (implementacja Vulkan na bazie Direct3D 12).
Mesa zapewnia także pełną obsługę OpenGL 4.6 dla iris (procesory graficzne Intel Gen 8+), radeonsi (AMD), Crocus (starsze procesory graficzne Intel Gen4-Gen7), zink, llvmpipe, virgl (wirtualny procesor graficzny Virgil3D dla QEMU/KVM), sterowniki freedreno ( Qualcomm Adreno), d3d12 (warstwa organizująca pracę OpenGL na bazie DirectX 12) i asahi (procesor graficzny AGX stosowany w chipach Apple M1 i M2). Obsługa OpenGL 4.5 jest dostępna dla procesorów graficznych AMD (r600) i NVIDIA (nvc0). Obsługa OpenGL 3.3 jest dostępna w sterownikach softpipe (rasterizer programowy) i nv50 (NVIDIA NV50).
Główne innowacje:
- Sterownik asahi, opracowany dla procesora graficznego AGX stosowanego w chipach Apple ARM, zapewnia obsługę OpenGL 4.6 i OpenGL ES 3.2.
- Znacząco poprawiona wydajność sterownika NVK dla procesorów graficznych NVIDIA opartych na Turing (serie GeForce GTX 16xx, RTX 20xx i Quadro RTX), Ampere (serie GeForce RTX 30xx i RTX A2000/4000/5000/6000) oraz Ada (GeForce RTX 4xxx, RTX seria) mikroarchitektury 4000 SFF, RTX 4xxx/5000/6000 Ada). Sterownik uznawany jest przez szerokie grono użytkowników za gotowy do codziennego użytku. Obsługa Vulkan 1.3 w NVK jest certyfikowana przez konsorcjum Khronos. Ulepszona praca nad warstwą NVK DXVK, która zapewnia implementację Direct3D 9, 10 i 11.
- Dodano zmianę, która pozwala na użycie sterownika Zink (implementacja OpenGL na Vulkan) w celu zapewnienia obsługi OpenGL 4.6 na systemach z nową serią kart graficznych NVIDIA (począwszy od GeForce RTX 20xx), które mogą powodować problemy w standardowym Nouveau Sterownik OpenGL (NVC0). Aby włączyć Zink, zamiast NVC0, ustaw zmienną środowiskową „NOUVEAU_USE_ZINK=1”.
- Sterownik Panfrost dodaje obsługę procesorów graficznych Mali G610, Mali G310 i Mali T600.
- Wszystkie sterowniki Vulkan obsługują Explicit Sync dla Wayland i X11. Funkcja Explicit Sync umożliwia aplikacjom informowanie menedżera kompozytów, gdy klatka jest gotowa do wyświetlenia na ekranie, co pomaga zmniejszyć opóźnienia i wyeliminować artefakty podczas wyświetlania grafiki.
- Możliwości sterownika d3d12 zostały rozszerzone, zapewniając warstwę z implementacją OpenGL na bazie DirectX 12.
- Sterownik V3DV, opracowany dla procesora graficznego Broadcom VideoCore (używanego w płytach Raspberry Pi), dodał obsługę renderowania dynamicznego.
- Sterownik ANV Vulkan (Intel) został przekonwertowany w celu korzystania z asynchronicznych operacji mapowania pamięci wideo (Asynchronous VM_BIND). W przypadku procesorów graficznych opartych na architekturze Intel Xe, która jest używana w kartach graficznych Intel Arc i zintegrowanej grafice, począwszy od procesorów Tiger Lake, dodano możliwość resetowania zrzutów stanu w celu debugowania zawieszeń GPU. Poczyniono przygotowania do obsługi GPU dla układów Intel LunarLake (Xe 2).
- Dodano obsługę nowych rozszerzeń Vulkan:
- VK_EXT_map_memory_placed dla sterowników RADV, ANV i NVK
- VK_KHR_shader_subgroup_rotate dla RADV, ANV i NVK
- VK_KHR_load_store_op_none dla RADV, ANV, NVK i rzepy
- VK_KHR_line_rasteryzacja dla RADV, ANV, NVK i rzepy
- VK_KHR_index_type_uint8 dla RADV, ANV, NVK i rzepy
- VK_KHR_shader_expect_assume dla wszystkich sterowników Vulkan
- VK_KHR_shader_maximal_reconvergence dla RADV, ANV i NVK
- VK_KHR_shader_quad_control dla RADV
- VK_KHR_shader_subgroup_uniform_control_flow dla NVK
- VK_EXT_device_address_binding_report dla RADV
- VK_EXT_external_memory_dma_buf dla lavapipe
- VK_EXT_queue_family_foreign dla lavapipe
- VK_EXT_shader_object dla RADV
- VK_EXT_nested_command_buffer dla NVK i RADV
- VK_EXT_queue_family_foreign dla NVK
- VK_EXT_image_drm_format_modifier dla NVK
Źródło: opennet.ru
