Pärast kolme kuu arendustööd on avaldatud OpenGL ja Vulkani API vabavara rakenduse versioon — Mesa 21.2.0. Esimene versioon harust Mesa 21.2.0 on eksperimentaalse staatusega — pärast koodi lõplikku stabiliseerimist väljastatakse stabiilne versioon 21.2.1.
Mesa 21.2 rakendab täielikku OpenGL 4.6 tuge draiveritele 965, iris (Intel), radeonsi (AMD), zink ja llvmpipe. OpenGL 4.5 tugi on saadaval AMD (r600) ja NVIDIA (nvc0) GPU-de jaoks, samas kui OpenGL 4.3 on saadaval virgl (virtuaalne GPU Virgil3D QEMU/KVM jaoks). Vulkan 1.2 tugi on rakendatud Intel ja AMD kaartide jaoks, samuti emuleerimismoodus (vn), Vulkan 1.1 tugi on saadaval Qualcomm GPU-dele ja programmipõhisele rasteriseerijale lavapipe, ning Vulkan 1.0 Broadcom VideoCore VI (Raspberry Pi 4) GPU-dele.
Põhilised uuendused:
- Komplekti on included OpenGL-draiver asahi algse toetuse graafikaprotsessori jaoks, mis on saadaval Apple M1 kiipide seas. Draiver kasutab Galliumi liidest ja toetab suuremat osa OpenGL 2.1 ja OpenGL ES 2.0 funktsioone, kuid ei ole praegu sobiv enamikku mänge käivitamiseks. Draiveri kood põhineb referents Gallium-draiveril noop, kus on edastatud osa koodist Panfrost draiverist, mis on arendamisel ARM Mali GPU jaoks.
- Komplektis on OpenGL-draiver Crocus, mis toetab vanemaid Intel GPU-sid (Gen4-Gen7 mikroarhitektuuril), mida Iris draiver ei toeta. Erinevalt i965 draiverist põhineb uus draiver Gallium3D arhitektuuril, mis suunab mälu haldamise ülesanded DRI-draiveri poole Linuxi tuumas ja pakub valmis olekute jälgijat, mis toetab välja renderdatud objektide vahemälu taaskasutamist.
- Komplektis on PanVk draiver, mis pakub Vulkan graafilise API tuge ARM Mali Midgardi ja Bifrost GPU-dele. PanVk-d arendavad ettevõtte Collabora töötajad ja seda peetakse Panfrost projekti arendamise jätkuks, mis toetab OpenGL-i.
- Panfrost draiveris on Midgardi GPU-dele (Mali T760 ja uuemad) ja Bifrost GPU-dele (Mali G31, G52, G76) rakendatud OpenGL ES 3.1 tugi. Edasiste plaanide hulka kuulub Bifrost kindlasti jõudluse suurendamine ja Valhall arhitektuuril põhinevate GPU-de toe rakendamine (Mali G77 ja uuemad).
- 32-bitistes järkjärgudes x86 arhitektuuri jaoks on matemaatiliste arvutuste jaoks kasutatud sse2 korraldusi x87 korralduste asemel.
- Nouveau nv50 draiveris on NVIDIA GT21x GPU (GeForce GT 2×0) jaoks rakendatud OpenGL ES 3.1 tugi.
- Vulkan draiver TURNIP ja OpenGL draiver Freedreno, mis on arendatud Qualcomm Adreno GPU-de jaoks, on algselt toetatud GPU Adreno a6xx gen4 (a660, a635).
- Vulkan draiver RADV (AMD) on saanud toe primitiivide lõhkumiseks (primitive culling) kasutades NGG (Next-Gen Geometry) Shaderi mootorit. RADV draiveri ehitamise võimalus Windowsi platvormil MSVC kompilaatoriga on pälvinud samuti toetust.
- Vulkan draiver ANV (Intel) ja OpenGL draiver Iris on teinud eeltööd, et tagada toetus tulevastele Intel Xe-HPG (DG2) graafikakaartidele. Sealhulgas on lisatud algsed võimalused, mis on seotud kiirte jälgimise (ray tracing) ja kiirte jälgimise shadeerimise toega.
- Draiveris lavapipe, mis rakendab tarkvara rasteriseerijat Vulkan API jaoks (sarnane llvmpipe'ile, kuid Vulkan jaoks, mis teisendab API Vulkan'i kutsed API Gallium'iks) on toeks 'wideLines' režiim (toetab jooni, mille laius ületab 1.0).
- Toetatakse dünaamilist avastamist ja alternatiivsete GBM (Generic Buffer Manager) taustade laadimist. Muudatus on suunatud Waylandi toe parandamisele NVIDIA draiveritega süsteemides.
- Zink draiveris (OpenGL API rakendus Vulkan'i kohal, mis võimaldab saada riistvara kiirendatud OpenGL'i süsteemides, kus draiverid toetavad ainult Vulkan API-d) toetab OpenGL laiendusi GL_ARB_sample_locations, GL_ARB_sparse_buffer, GL_ARB_shader_group_vote, GL_ARB_texture_filter_minmax ja GL_ARB_shader_clock. Lisatud on DRM (Direct Rendering Manager) formaadi modifikaatorid (k.a VK_EXT_image_drm_format_modifier laiendus).
- Vulkan-draiveritesse RADV (AMD), ANV (Intel) ja lavapipe on lisatud toimetamisprotsesside tugi:
- 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).
Allikas: opennet.ru
