Ape — una nuova implementazione software aperta del Vulkan ICD

Presentato nuovo esperimento driver Vulkan Ape — implementazione software open source dell'ICD Vulkan, scritta quasi interamente in Zig e non utilizza il codice di Mesa. Il progetto non è ancora destinato a scopi industriali: l'autore lo descrive esplicitamente come un tentativo didattico di "assemblare 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 è stata aggiunta una vendor ID separata alla specifica per il Ape e un driver ID per ApeSoft. La relativa pull request nel repository KhronosGroup/Vulkan-Docs è stata unita 6 giugno 2026. Nella nota, l'autore ha indicato di lavorare a un driver Vulkan amatoriale e di essere vicino a superare tutti i test Vulkan 1.0.

In sostanza, Ape non è un driver per una specifica scheda video, ma un renderer Vulkan software, simile a Mesa Lavapipe: i comandi Vulkan vengono eseguiti dalla propria implementazione, senza fare riferimento al driver GPU hardware. Inoltre, Ape non è basato su Mesa ed è scritto come base di codice autonoma in Zig.

Cosa sa già fare Ape

  • Funziona come ICD Vulkan.
    Ape è progettato come Installable Client Driver — cioè come un driver che può essere rilevato dal loader Vulkan standard tramite il manifesto ICD. Dopo la compilazione, l'autore suggerisce di indicare al loader Vulkan il file manifesto corrispondente. Questo rende il progetto non solo un insieme di esperimenti, ma una vera e propria implementazione di un driver Vulkan, anche se didattico. Il loader Vulkan è progettato per rilevare e collegare più driver ICD nel sistema.

  • Completamente scritto in Zig.
    La principale base di codice di Ape è scritta in Zig; nella pagina principale del progetto, il linguaggio è indicato come Zig 99,9%. Phoronix sottolinea che il progetto non dipende da Mesa ed è implementato 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 realizzato anche in un linguaggio di sistema più moderno.

  • C'è una implementazione software di ApeSoft.
    Nel progetto è presente una implementazione software Morbido, che si trova all'interno della stessa base di codice del driver. Utilizza un proprio interprete SPIR-V e un proprio renderer. Ape non si limita a ricevere le chiamate Vulkan, ma cerca di eseguire shader e renderizzazione sul CPU.

  • Supporta la compilazione tramite Zig build.
    Per l'implementazione software, nel README è indicato il modo di compilazione con il comando zig build soft. Dopo di che bisogna configurare il loader Vulkan sul manifesto ICD. Finora è chiaramente uno strumento per sviluppatori e appassionati, non un pacchetto "installato e avviato".

  • È stata implementata una parte significativa di Vulkan 1.0.
    Nel README è presente un elenco dello stato delle funzioni Vulkan 1.0. Tra quelle implementate ci sono la creazione di istanze e dispositivi, allocazione di memoria, buffer, immagini, command buffers, render pass, framebuffer, graphics pipeline, compute pipeline, shader modules, descriptor sets, swapchain e comandi di rendering di base. In termini di funzioni implementate, il progetto ha già superato l'esperimento del "triangolo ciao", ma deve ancora affrontare una verifica e chiudere i posti incompleti prima di poter essere considerato un driver compatibile.

  • Ci sono comandi di rendering e compute.
    Nell'elenco delle funzioni implementate si notano vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch e vkCmdDispatchIndirect. Ape copre non solo le infrastrutture di base di Vulkan, ma anche due scenari chiave dell'API: rendering grafico e pipeline di calcolo.

  • Supporta swapchain e output tramite Wayland.
    Nello stato di implementazione sono segnati vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, così come le verifiche del supporto per la presentazione Wayland. La presenza dello swapchain e della superficie Wayland significa che il driver è destinato non solo a test offline, ma anche all'output delle immagini in un vero ambiente desktop Linux.

  • Parte del WSI per X11 e Windows è ancora in lavorazione.
    vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR e le funzioni corrispondenti per la verifica del supporto della presentazione sono contrassegnate come WIP. Wayland è già presente, mentre il supporto per X11/Windows non è ancora stato completato.

  • Alcuni elementi di Vulkan 1.0 non sono ancora pronti o supportati.
    Nello stato WIP sono segnati, 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 una sostituzione universale per un normale driver Vulkan.

  • Sono stati apportati aggiornamenti recenti al rendering e alla sincronizzazione.
    Nella cronologia del progetto, il 5-6 giugno sono stati segnati cambiamenti come l'aggiunta del primitive restart, campionamento delle texture intere, gestione di mip/lod durante il campionamento e implementazione dei semafori binari. Il progetto si sviluppa attivamente nella direzione della compatibilità pratica con i test di Vulkan e scenari grafici reali.

  • Il progetto non si pone l'obiettivo delle prestazioni.
    L'autore afferma chiaramente che Ape è stato creato per studiare Vulkan e non mira a essere un driver performante o pronto per la produzione. Ape dovrebbe essere visto come un progetto di ricerca, un'implementazione didattica di Vulkan e un esperimento con Zig, piuttosto che come un concorrente di Mesa RADV, ANV, NVK o Lavapipe.

In sintesi, Ape è interessante non perché si possa sostituire Mesa domani, ma perché è un'implementazione autonoma di Vulkan ICD in Zig con un proprio interprete SPIR-V, un renderer software e una copertura già significativa di Vulkan 1.0. Per gli utenti comuni, i benefici sono ancora limitati, ma per i sviluppatori di driver, gli autori di runtime e coloro che studiano la struttura interna di Vulkan, il progetto appare come un interessante laboratorio vivente.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster