Presentato nuovo esperimento driver Vulkan Ape — una realizzazione software open source di Vulkan ICD, scritta quasi interamente in Zig e che non utilizza codice Mesa. Il progetto attualmente non è destinato a usi industriali: l'autore lo descrive esplicitamente come un tentativo didattico di "costruire un driver a mano" e avverte di non utilizzare Ape in progetti seri. Il codice è pubblicato sotto licenza MIT.
L'interesse per Ape è emerso dopo che nella specifica Vulkan è stato aggiunto un vendor ID separato per Ape e un driver ID per ApeSoft. La pull request corrispondente nel repository KhronosGroup/Vulkan-Docs è stata fusa 6 giugno 2026. Nei commenti, l'autore ha indicato di lavorare su un driver Vulkan amatoriale e sta avvicinandosi al superamento di tutti i test Vulkan 1.0.
Di fatto, Ape non è un driver per una scheda video specifica, ma un renderer Vulkan software, simile in funzione a Mesa Lavapipe: i comandi Vulkan vengono eseguiti tramite la propria implementazione, senza utilizzare un driver GPU hardware. Inoltre, Ape non si basa su Mesa ed è scritto come base di codice indipendente in Zig.
Cosa può già fare Ape
Funziona come Vulkan ICD.
Ape è strutturato come Installable Client Driver — ovvero come un driver che può essere caricato dal loader Vulkan standard attraverso un manifest ICD. Dopo la compilazione, l'autore suggerisce di indicare al loader Vulkan il file manifest corretto. Questo rende il progetto non solo un insieme di esperimenti, ma una vera implementazione di driver Vulkan, anche se didattica. Il loader Vulkan è infatti progettato per rilevare e connettere più driver ICD nel sistema.Completamente scritto in Zig.
La base di codice principale di Ape è scritta in Zig; nella pagina principale del progetto, il linguaggio è indicato come Zig 99,9%. Phoronix sottolinea separatamente che il progetto non dipende da Mesa ed è realizzato specificamente in Zig, e non in C/C++. I driver grafici sono tradizionalmente scritti in C/C++, e Ape dimostra che l'ICD Vulkan può essere implementato anche in un linguaggio di sistema più moderno.C'è una realizzazione software di ApeSoft.
Nel progetto è evidenziata una realizzazione software Soft, che si trova all'interno della stessa base di codice del driver. Essa utilizza un proprio interprete SPIR-V e un proprio renderer. Ape non si limita a ricevere chiamate Vulkan, ma cerca di eseguire autonomamente shader e rendering sulla CPU.Supporta la compilazione tramite Zig build.
Per l'implementazione software, nel README è indicato il metodo di build con il comando zig build soft. Dopo di che, è necessario configurare il caricatore Vulkan per il manifest ICD. Al momento, questo è chiaramente uno strumento per sviluppatori ed entusiasti, e non un pacchetto "installato e avviato".È stata implementata una parte significativa di Vulkan 1.0.
Nel README è presente un elenco dello stato delle funzionalità di Vulkan 1.0. Tra le implementate ci sono la creazione di un'istanza e di un dispositivo, la gestione della memoria, buffer, immagini, command buffers, render pass, framebuffer, graphics pipeline, compute pipeline, shader modules, descriptor sets, swapchain e comandi di rendering di base. Per quanto riguarda le funzionalità implementate, il progetto ha già superato l'esperimento del "triangolo hello", ma deve ancora passare il controllo e completare le aree non finite per raggiungere lo stato di driver compatibile completo.Sono disponibili comandi di rendering e compute.
Nell'elenco delle funzionalità implementate sono segnalati vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch e vkCmdDispatchIndirect. Ape copre non solo l'infrastruttura di base di Vulkan, ma anche due scenari chiave dell'API: il rendering grafico e i pipeline di calcolo.Sono supportati swapchain e output tramite Wayland.
Nello stato di implementazione sono segnati vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, così come le verifiche del supporto alla presentazione di Wayland. La presenza di uno swapchain e di una superficie Wayland significa che il driver è destinato non solo per test offline, ma anche per l'output delle immagini in un vero ambiente finestra di Linux.Una parte di WSI per X11 e Windows è ancora in lavorazione.
vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR e le relative funzioni di verifica del supporto alla presentazione sono contrassegnate come WIP. Wayland è già presente, mentre il supporto per X11/Windows non è ancora completamente pronto.Alcuni elementi di Vulkan 1.0 non sono ancora pronti o non sono supportati.
Nello stato WIP sono indicati, ad esempio, vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, parte degli stati dinamici e dei comandi di timestamp. Le funzioni sparse come vkQueueBindSparse e vkGetImageSparseMemoryRequirements sono contrassegnate come non supportate. Ape è vicino a Vulkan 1.0 per copertura, ma non è ancora un sostituto universale di un normale driver Vulkan.Sono state introdotte nuove migliorie nel rendering e nella sincronizzazione.
La cronologia del progetto evidenzia il 5-6 giugno come periodo di modifiche, inclusa l'aggiunta di primitive restart, campionamento di texture intere, gestione di mip/lod durante il campionamento e implementazione di semafori binari. Il progetto si sta sviluppando attivamente verso la compatibilità pratica con i test di Vulkan e scenari grafici reali.Il progetto non ha come obiettivo le prestazioni.
L'autore afferma chiaramente che Ape è stato creato per studiare Vulkan e non aspira a essere un driver performante o pronto per la produzione. Ape dovrebbe essere considerato un progetto di ricerca, un'implementazione didattica di Vulkan e un esperimento con Zig, piuttosto che un concorrente di Mesa RADV, ANV, NVK o Lavapipe.
In sostanza, Ape è interessante non perché potrà sostituire Mesa domani, ma perché rappresenta un'implementazione autonoma di Vulkan ICD su Zig con un proprio interprete SPIR-V, un renderer software e già una copertura significativa di Vulkan 1.0. Per gli utenti comuni, i benefici sono ancora scarsi, ma per gli sviluppatori di driver, scrittori di runtime e persone che studiano la struttura interna di Vulkan, il progetto appare come un curioso laboratorio vivo.
Fonte: linux.org.ru
