Představení nový experimentální Vulkan ovladač Ape — otevřená softwarová implementace Vulkan ICD, napsaná téměř výhradně v Zig a nevyužívající kód Mesa. Projekt zatím neaspiruje na průmyslové využití: autor jej přímo popisuje jako učební pokus "sestavit ovladač vlastníma rukama" a varuje, aby se Ape nepoužíval v vážných projektech. Kód je publikován pod licencí MIT.
Zájem o Ape se objevil poté, co do specifikace Vulkan byl přidán samostatný vendor ID pro Ape a driver ID pro ApeSoft. Příslušný pull request v repozitáři KhronosGroup/Vulkan-Docs byl sloučen 6. června 2026. V komentáři autor uvedl, že pracuje na amatérském Vulkan ovladači a blíží se k průchodu všemi testy Vulkan 1.0.
V podstatě, Ape není ovladač pro konkrétní grafickou kartu, ale softwarový Vulkan render, blízký účelu k Mesa Lavapipe: Vulkan příkazy se vykonávají vlastní implementací, bez dotazování na hardwarový GPU ovladač. Přitom Ape není založen na Mesě a je napsán jako samostatná kódová základna v Zig.
Co už umí Ape
Funguje jako Vulkan ICD.
Ape je koncipován jako Installable Client Driver — tedy jako ovladač, který může být připojen standardním Vulkan loaderem přes ICD manifest. Po sestavení autor doporučuje uvést loaderu Vulkan odpovídající manifestový soubor. To činí projekt nejen souborem experimentů, ale skutečnou implementací Vulkan ovladače, i když učební. Vulkan loader je skutečně navržen pro detekci a připojení několika ICD ovladačů v systému.Úplně napsán v Zig.
Hlavní kódová základna Ape je napsána v Zig; na hlavní forge stránce projektu je jazyk uveden jako Zig 99,9%. Phoronix zvlášť zdůrazňuje, že projekt nezávisí na Mesě a je realizován pouze v Zig, nikoli v C/C++. Grafické ovladače se tradičně píší v C/C++, a Ape ukazuje, že Vulkan ICD lze implementovat i na modernějším systémovém jazyce.Existuje softwarová implementace ApeSoft.
V projektu je vyčleněna softwarová implementace Soft, která se nachází uvnitř samotné kódové základny ovladače. Používá vlastní SPIR-V interpretátor a vlastní renderer. Ape nejen přijímá Vulkan volání, ale snaží se samostatně vykonávat shadery a renderování na CPU.Podporuje sestavení přes Zig build.
Pro programovou implementaci je v README uveden způsob sestavení pomocí příkazu zig build soft. Poté je třeba nakonfigurovat Vulkan loader na ICD manifest. Zatím je to jasně nástroj pro vývojáře a nadšence, ne balíček "nainstaluj a spusť".Byla realizována značná část Vulkan 1.0.
V README je uveden seznam stavu funkcí Vulkan 1.0. Mezi realizovanými jsou vytváření instance a zařízení, alokace paměti, buffery, obrázky, command buffery, render pass, framebuffer, grafický pipeline, compute pipeline, shader moduly, descriptor sety, swapchain a základní vykreslovací příkazy. Sada realizovaných funkcí posunula projekt už dál než "hello triangle" experiment, ale k tomu, aby se stal plně kompatibilním ovladačem, je potřeba ještě provést testy a uzavřít nedokončená místa.Jsou zde příkazy pro vykreslování a výpočty.
Ve seznamu realizovaných funkcí jsou označeny vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch a vkCmdDispatchIndirect. Ape pokrývá nejen základní infrastrukturu Vulkan, ale i dva klíčové scénáře API: grafické vykreslování a výpočetní pipeline.Podporovány jsou swapchain a výstup přes Wayland.
Ve stavu implementace jsou označeny vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, stejně jako ověření podpory prezentace Wayland. Přítomnost swapchain a Wayland povrchu znamená, že ovladač není zaměřen pouze na offline testy, ale i na zobrazování obrázků v reálném okně Linuxu.Část WSI pro X11 a Windows je zatím ve vývoji.
vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR a odpovídající funkce ověřující podporu prezentace jsou označeny jako WIP. Wayland již existuje, ale podpora pro X11/Windows ještě není připravena.Některé prvky Vulkan 1.0 zatím nejsou připraveny nebo nejsou podporovány.
Ve stavu WIP jsou například uvedeny vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, část dynamických stavů a timestamp příkazy. Sparse funkce jako vkQueueBindSparse a vkGetImageSparseMemoryRequirements jsou označeny jako unsupported. Ape je blízko Vulkan 1.0 v rozsahu, ale ještě není univerzální náhradou za normální Vulkan ovladač.Objevily se nové úpravy vykreslování a synchronizace.
V historii projektu byly od 5. do 6. června zaznamenány změny jako například přidání primitive restart, integer texture sampling, řízení mip/lod při výběru a implementace binary semaphores. Projekt se aktivně vyvíjí směrem k praktické kompatibilitě s testy Vulkan a reálnými grafickými scénáři.Projekt si neklade za cíl výkon.
Autor přímo uvádí, že Ape byl vytvořen k prozkoumání Vulkanu a nesnaží se být výkonným nebo produkčně připraveným ovladačem. Vnímat Ape je třeba jako výzkumný projekt, vzdělávací implementaci Vulkanu a experiment s Zig, nikoli jako konkurenta Mesa RADV, ANV, NVK nebo Lavapipe.
Stručně řečeno, Ape je zajímavý nikoli tím, že by ho bylo možné zítra nasadit jako náhradu za Mesa, ale tím, že se jedná o samostatnou implementaci Vulkan ICD na Zig s vlastním SPIR-V interpretem, softwarovým rendererem a již viditelným pokrytím Vulkan 1.0. Pro běžné uživatele zatím přínos není velký, avšak pro vývojáře ovladačů, autory runtime a lidi studující vnitřní fungování Vulkanu projekt vypadá jako zajímavé živé laboratoř.
Zdroj: linux.org.ru
