Præsenteret ny eksperimentel Vulkan-driver Ape — en åben softwareimplementering af Vulkan ICD, skrevet næsten helt på Zig og uden at bruge Mesa-kode. Projektet har endnu ikke til formål at blive brugt kommercielt: forfatteren beskriver det direkte som et læringsforsøg "at samle en driver manuelt" og advarer mod at bruge Ape i seriøse projekter. Koden er offentliggjort under licensen MIT.
Interessen for Ape opstod efter at i specifikationen Vulkan blev tilføjet en særskilt vendor ID for Ape og driver ID for ApeSoft. Den relevante pull request i repositoryet KhronosGroup/Vulkan-Docs blev smeltet 6. juni 2026. I kommentaren angav forfatteren, at han arbejder på en hobby Vulkan-driver og nærmer sig at bestå alle Vulkan 1.0-tests.
Essensen af Ape er, at det ikke er en driver til et specifikt grafikkort, men en programmatisk Vulkan-renderer, tæt på formålet med Mesa Lavapipe: Vulkan-kommandoer udføres gennem sin egen implementation, uden at anvende hardware GPU-driveren. Samtidig er Ape ikke baseret på Mesa og er skrevet som en selvstændig kodebase i Zig.
Hvad Ape allerede kan gøre
Fungerer som Vulkan ICD.
Ape er designet som Installable Client Driver — det vil sige som en driver, der kan opfanges af den standard Vulkan loader gennem ICD-manifestet. Efter bygningen foreslår forfatteren at angive Vulkan-laderen den relevante manifest-fil. Dette gør projektet til mere end bare en samling eksperimenter, men til en rigtig implementering af Vulkan-driveren, dog stadig som et læringsprojekt. Vulkan-laderen er netop beregnet til at opdage og forbinde flere ICD-drivere i systemet.Helt skrevet i Zig.
Den primære kodebase for Ape er skrevet i Zig; på den primære forge-side for projektet er sproget angivet som Zig 99,9%. Phoronix fremhæver specifikt, at projektet ikke afhænger af Mesa og er implementeret netop i Zig, ikke i C/C++. Grafiske drivere skrives traditionelt i C/C++, og Ape viser, at Vulkan ICD kan implementeres også i et mere moderne systemprogrammeringssprog.Der er en softwareimplementering af ApeSoft.
I projektet er der выделена программная реализация Soft, som findes indeni selve driverens kodebase. Den bruger sin egen SPIR-V-ætterfortolker og sin egen renderer. Ape accepterer ikke blot Vulkan-kald, men forsøger også selv at udføre shaders og rendering på CPU'en.Bygning understøttes gennem Zig build.
For software implementation, the README specifies the build method using the command zig build soft. After that, you need to configure the Vulkan loader for the ICD manifest. So far, this is clearly a tool for developers and enthusiasts, not a package you can just install and run.A significant part of Vulkan 1.0 has been implemented.
The README lists the status of Vulkan 1.0 functions. Among the implemented features are creation of instances and devices, memory allocation, buffers, images, command buffers, render passes, framebuffers, graphics pipelines, compute pipelines, shader modules, descriptor sets, swapchains, and basic rendering commands. In terms of implemented functionalities, the project has already progressed beyond the 'hello triangle' experiment, but still needs to undergo testing and address unfinished elements to achieve the status of a fully compatible driver.There are drawing and compute commands.
The implemented functions include vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch, and vkCmdDispatchIndirect. Ape covers not only the basic infrastructure of Vulkan but also two key API scenarios: graphics rendering and compute pipelines.Swapchain and output through Wayland are supported.
The implementation status includes vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, as well as checks for Wayland presentation support. The presence of a swapchain and Wayland surface indicates that the driver is aimed not just at offline testing, but also at displaying images in a real window environment in Linux.Part of the WSI for X11 and Windows is still in progress.
vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR, and the corresponding presentation support check functions are marked as WIP. Wayland is already present, but X11/Windows support has not yet reached a finished state.Some elements of Vulkan 1.0 are not yet ready or supported.
The WIP status indicates, for example, vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, some dynamic states, and timestamp commands. Sparse functions like vkQueueBindSparse and vkGetImageSparseMemoryRequirements are marked as unsupported. Ape is close to Vulkan 1.0 in coverage, but is not yet a universal substitute for a standard Vulkan driver.New developments in rendering and synchronization have emerged.
The project history notes changes such as the addition of primitive restart, integer texture sampling, mip/lod control during sampling, and the implementation of binary semaphores on June 5–6. The project actively develops towards practical compatibility with Vulkan tests and real graphics scenarios.The project does not aim for performance.
Forfatteren skriver direkte, at Ape er skabt til at studere Vulkan og ikke sigter mod at være en effektiv eller produktionsklar driver. Ape skal betragtes som et forskningsprojekt, en læringsimplementering af Vulkan og et eksperiment med Zig, ikke som en konkurrent til Mesa RADV, ANV, NVK eller Lavapipe.
Ape er ikke interessant, fordi det kan erstatte Mesa i morgen, men fordi det er en selvstændig implementering af Vulkan ICD på Zig med sin egen SPIR-V-fortolker, software-renderer og allerede mærkbar dækning af Vulkan 1.0. For almindelige brugere er der endnu ikke meget nytte, men for driverudviklere, runtime-forfattere og dem der studerer Vulkan's interne struktur, ser projektet ud som en nysgerrig, levende testplads.
Kilde: linux.org.ru
