Ape — nova otvorena softverska implementacija Vulkan ICD.

Predstavljen novi eksperimentalni Vulkan driver Ape — otvorena softverska implementacija Vulkan ICD, napisana gotovo u potpunosti na Zig i ne koristi kod Mesa. Projekat za sada ne pretenduje na industrijsku primjenu: autor izravno opisuje njegovu kao obrazovnu pokušaj „skupiti driver vlastitim rukama“ i upozorava da se Ape ne koristi u ozbiljnim projektima. Kod je objavljen pod licencom MIT.


Interes za Ape se pojavio nakon što u specifikaciju Vulkan je dodat odvojeni vendor ID za Ape i driver ID za ApeSoft. Odgovarajući pull request u repozitoriju KhronosGroup/Vulkan-Docs je spojen 6. lipnja 2026. godine. U komentaru, autor je naveo da radi na amaterskom Vulkan driveru i bliži se prolasku svih testova Vulkan 1.0.

U suštini, Ape nije driver za određenu grafičku karticu, već softverski Vulkan renderer, blizak po namjeni Mesa Lavapipe: Vulkan naredbe se izvršavaju snagom vlastite implementacije, bez pozivanja na hardverski GPU driver. Pri tome, Ape nije zasnovan na Mesu i napisan je kao samostalna kodna baza na Zig.

Što već može Ape

  • Funkcionira kao Vulkan ICD.
    Ape je definiran kao Installable Client Driver — dakle kao driver koji se može preuzeti od strane standardnog Vulkan loader-a putem ICD manifesta. Nakon kompilacije, autor predlaže da se loaderu Vulkan navede odgovarajući manifest-fajl. To projekt čini ne samo skupom eksperimenata, već pravom implementacijom Vulkan drivera, iako obrazovnom. Vulkan loader je upravo dizajniran za otkrivanje i povezivanje više ICD drivera u sustavu.

  • Potpuno napisan na Zig.
    Osnovna kodna baza Ape napisana je na Zig; na glavnoj forge stranici projekta je jezik naveden kao Zig 99.9%. Phoronix posebno naglašava da projekat ne zavisi od Mese i da je implementiran upravo na Zigu, a ne na C/C++. Grafički driveri se tradicionalno pišu na C/C++, a Ape pokazuje da se Vulkan ICD može implementirati i na modernijem sistemskom jeziku.

  • Postoji softverska implementacija ApeSoft.
    U projektu je izdvojena softverska implementacija Soft, koja se nalazi unutar same kodne baze drivera. Ona koristi vlastiti SPIR-V interpreter i vlastiti renderer. Ape ne samo da prihvaća Vulkan pozive, već pokušava samostalno izvršavati shadere i renderiranje na CPU-u.

  • Podržava kompilaciju putem Zig build.
    Za programsku implementaciju u README je navedena metoda sastavljanja putem naredbe zig build soft. Nakon toga, potrebno je konfigurirati Vulkan loader prema ICD manifestu. Iako je ovo jasno alat za programere i entuzijaste, a ne paket 'instaliraj i pokreni'.

  • Značajan dio Vulkan 1.0 je implementiran.
    U README-u je naveden popis statusa funkcija Vulkan 1.0. Među implementiranim su: stvaranje instance i uređaja, alokacija memorije, buffere, slike, command buffers, render pass, framebuffer, graphics pipeline, compute pipeline, shader moduli, descriptor setovi, swapchain i osnovne naredbe za crtanje. Po skupu implementiranih funkcija, projekt je već napredovao dalje od 'hello triangle' eksperimenta, ali mu još uvijek treba provjera da bi postao potpuno kompatibilni driver i zatvoriti nedovršena mjesta.

  • Postoje naredbe za crtanje i računalne operacije.
    Na popisu implementiranih funkcija označeni su vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch i vkCmdDispatchIndirect. Ape pokriva ne samo osnovnu infrastrukturu Vulkan, već i dva ključna scenarija API-ja: grafičko crtanje i računalne pipeline.

  • Podržani su swapchain i izlaz preko Waylanda.
    U statusu implementacije označeni su vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, kao i provjere podrške za Wayland prezentaciju. Prisutnost swapchain i Wayland površine znači da je driver usmjeren ne samo na offline testove, već i na isporuku slika u stvarno okruženje prozora Linuxa.

  • Dijelovi WSI za X11 i Windows su još u radu.
    vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR i odgovarajuće funkcije za provjeru podrške za prezentaciju označene su kao WIP. Wayland je već prisutan, a podrška za X11/Windows još nije dovedena do završetka.

  • Neki elementi Vulkan 1.0 trenutno nisu spremni ili nisu podržani.
    U statusu WIP navedeni su, na primjer, vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, dio dinamičkih stanja i timestamp naredbe. Sparse funkcije kao što su vkQueueBindSparse i vkGetImageSparseMemoryRequirements označene su kao unsupported. Ape je blizu Vulkan 1.0 po opsegu, ali još nije univerzalna zamjena za normalni Vulkan driver.

  • Pojavili su se novi dodaci za renderiranje i sinkronizaciju.
    U povijesti projekta 5–6. lipnja zabilježene su izmjene kao što su dodavanje primitive restart, integer texture sampling, upravljanje mip/lod pri uzorkovanju i implementacija binarnih semafora. Projekt se aktivno razvija u smjeru praktične kompatibilnosti s Vulkan testovima i stvarnim grafičkim scenarijima.

  • Projekt ne postavlja cilj performansi.
    Autor izravno navodi da je Ape stvoren za istraživanje Vulkana i ne nastoji biti učinkovita ili produkcijski spremna izvedba. Ape se treba smatrati istraživačkim projektom, obrazovnom implementacijom Vulkana i eksperimentom s Zigom, a ne kao konkurent Mesa RADV, ANV, NVK ili Lavapipa.

U konačnici, Ape nije zanimljiv zbog mogućnosti zamjene za Mesu sutra, već zato što je to samostalna implementacija Vulkan ICD na Zigu s vlastitim SPIR-V interpreterom, softverskim rendererom i već značajnim pokrićem Vulkana 1.0. Za obične korisnike trenutno nema velike koristi, ali za programere drajvera, autore runtime-a i ljude koji istražuju unutarnju strukturu Vulkana, projekt izgleda kao zanimljiv živopisni poligon.

Izvor: linux.org.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster