Prezentat experiment nou driver Vulkan Ape — o implementare software deschis a Vulkan ICD, scrisă aproape în întregime în Zig și care nu utilizează cod Mesa. Proiectul nu pretinde încă utilizare industrială: autorul îl descrie explicit ca o încercare educațională de a "asambla driverul manual" și avertizează împotriva utilizării Ape în proiecte serioase. Codul este publicat sub licența MIT.
Interesul pentru Ape a apărut după ce în specificația Vulkan a fost adăugat un vendor ID separat pentru Ape și driver ID pentru ApeSoft. Cererea de pull corespunzătoare în repository-ul KhronosGroup/Vulkan-Docs a fost fuzionată 6 iunie 2026. În comentariu, autorul a menționat că lucrează la un driver Vulkan amator și se apropie de finalizarea tuturor testelor Vulkan 1.0.
În esență, Ape nu este un driver pentru o placă grafică specifică, ci un renderer Vulkan software, similar ca scop cu Mesa Lavapipe: comenzile Vulkan sunt executate prin intermediul propriei implementări, fără a apela la driverul hardware GPU. În același timp, Ape nu se bazează pe Mesa și este scris ca o bază de cod independentă în Zig.
Ce poate deja face Ape
Funcționează ca un ICD Vulkan.
Ape este structurat ca Installable Client Driver — adică un driver care poate fi preluat de loaderul standard Vulkan prin manifestul ICD. După compilare, autorul sugerează specificarea manifestului corespunzător loaderului Vulkan. Aceasta transformă proiectul dintr-un simplu set de experimente într-o adevărată implementare a driverului Vulkan, chiar dacă este educațională. Loaderul Vulkan este conceput pentru a detecta și conecta mai multe drivere ICD în sistem.Scris complet în Zig.
Baza principală de cod a Ape este scrisă în Zig; pe pagina principală a proiectului, limbajul este specificat ca Zig 99,9%. Phoronix subliniază în mod special că proiectul nu depinde de Mesa și este realizat exact în Zig, nu în C/C++. Driverele grafice sunt în mod tradițional scrise în C/C++, iar Ape arată că un ICD Vulkan poate fi implementat și într-un limbaj de sistem mai modern.Există o implementare software ApeSoft.
Proiectul include o implementare software Moale, care se află în interiorul bazei de cod a driverului. Aceasta utilizează un interpreter SPIR-V și un renderer propriu. Ape nu acceptă doar apeluri Vulkan, ci încearcă să execute singur shader-ele și renderizarea pe CPU.Se suportă compilarea prin Zig build.
Pentru implementarea software, README-ul specifică modul de compilare utilizând comanda zig build soft. După aceea, trebuie să configurați loaderul Vulkan pe manifestul ICD. Până acum, acesta este clar un instrument pentru dezvoltatori și entuziaști, și nu un pachet „instalează și pornește”.O parte semnificativă din Vulkan 1.0 a fost implementată.
În README este prezentată o listă cu starea funcțiilor Vulkan 1.0. Printre cele implementate se numără crearea de instance și dispozitive, alocarea de memorie, bufere, imagini, command buffers, render pass, framebuffer, graphics pipeline, compute pipeline, shader modules, descriptor sets, swapchain și comenzi de bază pentru randare. Proiectul a avansat deja dincolo de experimentul „hello triangle”, dar trebuie să treacă prin teste pentru a deveni un driver compatibil complet.Există comenzi pentru randare și calcul.
În lista funcțiilor implementate sunt incluse vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch și vkCmdDispatchIndirect. Ape acoperă nu doar infrastructura de bază a Vulkan, ci și două scenarii cheie ale API-ului: randarea grafică și pipeline-urile de calcul.Swapchain și output-ul prin Wayland sunt suportate.
În stadiul de implementare sunt notate vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, precum și verificări pentru suportul prezentării Wayland. Prezența swapchain-ului și a suprafeței Wayland înseamnă că driverul este destinat nu doar testelor offline, ci și afișării imaginilor în mediul de feronici Linux real.Partea de WSI pentru X11 și Windows este încă în lucru.
vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR și funcțiile corespunzătoare de verificare a suportului pentru prezentare sunt marcate ca WIP. Wayland este deja prezent, iar suportul X11/Windows nu este încă finalizat.Unele elemente din Vulkan 1.0 nu sunt pregătite sau nu sunt suportate încă.
În stadiul WIP sunt menționate de exemplu, vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, o parte din stările dinamice și comenzile timestamp. Funcțiile sparse precum vkQueueBindSparse și vkGetImageSparseMemoryRequirements sunt marcate ca nesuportate. Ape este aproape de Vulkan 1.0 ca acoperire, dar încă nu este un înlocuitor universal pentru un driver Vulkan normal.Au apărut îmbunătățiri recente în randare și sincronizare.
În istoria proiectului din 5-6 iunie sunt menționate schimbări precum adăugarea primitive restart, sampling-ul texturilor integer, controlul mip/lod la selectie și implementarea semaforelor binare. Proiectul se dezvoltă activ în direcția compatibilității practice cu testele Vulkan și scenariile grafice reale.Proiectul nu are ca obiectiv performanța.
Autorul spune direct că Ape este creat pentru studierea Vulkan și nu are ca obiectiv să fie un driver performant sau gata pentru producție. Ape ar trebui perceput ca un proiect de cercetare, o implementare educațională a Vulkan și un experiment cu Zig, nu ca un competitor al Mesa RADV, ANV, NVK sau Lavapipe.
În esență, Ape este interesant nu pentru că ar putea înlocui Mesa mâine, ci pentru că este o implementare independentă a Vulkan ICD pe Zig, cu un interpreter SPIR-V propriu, un renderer software și o acoperire deja notabilă a Vulkan 1.0. Pentru utilizatorii obișnuiți, beneficiile sunt încă limitate, dar pentru dezvoltatorii de drivere, autorii de runtime-uri și cei care studiază arhitectura internă a Vulkan, proiectul oferă un teren experimentat și interesant.
Sursa: linux.org.ru
