Opublikowano wydanie wolnej implementacji interfejsu API OpenGL i Vulkan — Mesa 24.1.0. Pierwsza wersja gałęzi Mesa 24.1.0 ma status eksperymentalny — po zakończeniu stabilizacji kodu zostanie wydana stabilna wersja 24.1.1.
W Mesa 24.0 dostępne jest wsparcie dla graficznego interfejsu API Vulkan 1.3 w sterownikach anv dla GPU Intel, radv dla GPU AMD, NVK dla GPU NVIDIA, tu dla GPU Qualcomm, w programowym rastrowym lavapipe (lvp) oraz w trybie emulatora (vn). Wsparcie dla Vulkan 1.0 zrealizowano w sterownikach v3dv (GPU Broadcom VideoCore VI z Raspberry Pi 4) oraz dzn (implementacja Vulkan na Direct3D 12).
W Mesa zapewniono również pełne wsparcie dla OpenGL 4.6 dla sterowników iris (GPU Intel Gen 8+), radeonsi (AMD), Crocus (stare GPU Intel Gen4-Gen7), zink, llvmpipe, virgl (wirtualny GPU Virgil3D dla QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (warstwa umożliwiająca działanie OpenGL na DirectX 12) i asahi (GPU AGX, używany w chipach Apple M1 i M2). Wsparcie dla OpenGL 4.5 dostępne jest dla GPU AMD (r600) oraz NVIDIA (nvc0). Wsparcie dla OpenGL 3.3 występuje w sterownikach softpipe (programowy rasteryzator) oraz nv50 (NVIDIA NV50).
Główne nowości:
- W sterowniku asahi, rozwijanym dla GPU AGX używanego w chipach ARM Apple, zapewniono wsparcie dla OpenGL 4.6 oraz OpenGL ES 3.2.
- Znacząco poprawiono działanie sterownika NVK dla GPU NVIDIA opartych na mikroarchitekturze Turing (series GeForce GTX 16xx, RTX 20xx i Quadro RTX), Ampere (series GeForce RTX 30xx i RTX A2000/4000/5000/6000) oraz Ada (series GeForce RTX 4xxx, RTX 4000 SFF, RTX 4xxx/5000/6000 Ada). Sterownik uznano za gotowy do codziennego użytku przez szeroką gamę użytkowników. Wsparcie dla Vulkan 1.3 w NVK uzyskało certyfikację od konsorcjum Khronos. Ulepszono działanie na NVK warstwa DXVK, która oferuje implementację Direct3D 9, 10 oraz 11.
- Dodano zmianę, która umożliwia użycie sterownika Zink (implementacja OpenGL na Vulkan) w celu zapewnienia wsparcia dla OpenGL 4.6 na systemach z nowymi seriami kart graficznych NVIDIA (począwszy od GeForce RTX 20xx), z którymi mogą występować problemy w standardowym sterowniku OpenGL Nouveau (NVC0). Aby włączyć Zink zamiast NVC0, należy ustawić zmienną środowiskową "NOUVEAU_USE_ZINK=1".
- W sterowniku Panfrost dodano wsparcie dla GPU Mali G610, Mali G310 oraz Mali T600.
- We wszystkich sterownikach Vulkan zrealizowano wsparcie dla jawnej synchronizacji (Explicit Sync) dla Wayland i X11. Explicit Sync pozwala aplikacjom informować menedżera kompozycji o gotowości do wyświetlenia klatki, co pozwala na zmniejszenie opóźnień i eliminację artefaktów podczas wyświetlania grafiki.
- Rozszerzono możliwości sterownika d3d12, który zapewnia warstwę z implementacją OpenGL na DirectX 12.
- W sterowniku V3DV, rozwijanym dla GPU Broadcom VideoCore (stosowanym w płytkach Raspberry Pi), dodano wsparcie dla dynamicznego renderowania.
- Sterownik Vulkan ANV (Intel) przeszedł na użycie asynchronicznych operacji mapowania pamięci wideo (Asynchronous VM_BIND). Dla GPU opartych na architekturze Intel Xe, które są wykorzystywane w kartach graficznych Intel serii Arc oraz w zintegrowanej grafice, począwszy od procesorów Tiger Lake, dodano możliwość zrzutu stanów dla debugowania zawieszeń GPU. Przygotowano wsparcie dla układów GPU Intel LunarLake (Xe 2).
- Dodano wsparcie dla 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 Turnip
- VK_KHR_line_rasterization dla RADV, ANV, NVK i Turnip
- VK_KHR_index_type_uint8 dla RADV, ANV, NVK i Turnip
- 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
