PrĂ©sentĂ© nouvelle expĂ©rience pilote Vulkan Ape â implĂ©mentation logicielle ouverte de l'ICD Vulkan, Ă©crite presque entiĂšrement en Zig et n'utilisant pas le code de Mesa. Le projet ne prĂ©tend pas encore Ă une utilisation industrielle : l'auteur le dĂ©crit directement comme une tentative pĂ©dagogique de « rĂ©aliser un pilote manuellement » et avertit de ne pas utiliser Ape dans des projets sĂ©rieux. Le code est publiĂ© sous une licence MIT.
L'intĂ©rĂȘt pour Ape est apparu aprĂšs que la spĂ©cification Vulkan a ajoutĂ© un identifiant de fournisseur distinct pour Ape et un identifiant de pilote pour ApeSoft. La demande de tirage correspondante dans le dĂ©pĂŽt KhronosGroup/Vulkan-Docs a Ă©tĂ© fusionnĂ©e le 6 juin 2026. Dans le commentaire, l'auteur a indiquĂ© qu'il travaillait sur un pilote Vulkan amateur et qu'il se rapprochait de la rĂ©ussite de tous les tests Vulkan 1.0.
En essence, Ape n'est pas un pilote pour une carte graphique spécifique, mais un rendu Vulkan logiciel, similaire à Mesa Lavapipe : les commandes Vulkan sont exécutées par sa propre implémentation, sans appel au pilote GPU matériel. Toutefois, Ape n'est pas basé sur Mesa et est écrit comme une base de code autonome en Zig.
Ce que Ape sait déjà faire
Fonctionne comme un ICD Vulkan.
Ape est conçu comme un Installable Client Driver â c'est-Ă -dire comme un pilote qui peut ĂȘtre pris en charge par le chargeur Vulkan standard via un manifeste ICD. AprĂšs la compilation, l'auteur propose d'indiquer au chargeur Vulkan le fichier manifeste correspondant. Cela rend le projet non seulement un ensemble d'expĂ©rimentations, mais une vĂ©ritable rĂ©alisation de pilote Vulkan, bien que pĂ©dagogique. Le chargeur Vulkan est justement conçu pour dĂ©tecter et connecter plusieurs pilotes ICD dans le systĂšme.EntiĂšrement Ă©crit en Zig.
La base de code principale d'Ape est Ă©crite en Zig ; sur la page principale du projet, le langage est indiquĂ© comme Zig 99,9 %. Phoronix souligne en particulier que le projet ne dĂ©pend pas de Mesa et est rĂ©alisĂ© prĂ©cisĂ©ment en Zig, et non en C/C++. Les pilotes graphiques sont traditionnellement Ă©crits en C/C++, et Ape montre que l'ICD Vulkan peut aussi ĂȘtre rĂ©alisĂ© sur un langage systĂšme plus moderne.Il existe une rĂ©alisation logicielle d'ApeSoft.
Le projet met en avant une rĂ©alisation logicielle Soft, qui se trouve Ă l'intĂ©rieur mĂȘme de la base de code du pilote. Elle utilise son propre interprĂ©teur SPIR-V et son propre moteur de rendu. Ape ne se contente pas d'accepter les appels Vulkan, mais cherche Ă exĂ©cuter indĂ©pendamment les shaders et le rendu sur le CPU.La construction est prise en charge via Zig build.
Pour la réalisation logicielle, le README indique comment compiler avec la commande zig build soft. Ensuite, il faut configurer le chargeur Vulkan sur le manifeste ICD. Pour l'instant, c'est clairement un outil destiné aux développeurs et aux passionnés, plutÎt qu'un package « installé et exécuté ».Une partie significative de Vulkan 1.0 a été réalisée.
Le README fournit une liste de l'état des fonctions Vulkan 1.0. Parmi celles réalisées, on trouve la création d'instances et de dispositifs, l'allocation de mémoire, des tampons, des images, des buffers de commandes, des passes de rendu, des framebuffers, des pipelines graphiques, des pipelines de calcul, des modules de shader, des ensembles de descripteurs, une swapchain et des commandes de rendu de base. En termes de fonctionnalités réalisées, le projet a déjà dépassé l'expérimentation du « triangle hello », mais il lui reste encore à passer des tests et à combler les lacunes pour atteindre le statut de pilote pleinement compatible.Des commandes de rendu et de calcul sont disponibles.
Dans la liste des fonctions réalisées, on note vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch et vkCmdDispatchIndirect. Ape couvre non seulement l'infrastructure de base de Vulkan, mais aussi deux scénarios clés de l'API : le rendu graphique et les pipelines de calcul.La swapchain et la sortie via Wayland sont prises en charge.
Dans l'Ă©tat de rĂ©alisation, on note vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, ainsi que des contrĂŽles de prise en charge de la prĂ©sentation Wayland. La prĂ©sence d'une swapchain et d'une surface Wayland signifie que le pilote est destinĂ© non seulement aux tests hors ligne, mais aussi Ă la sortie d'images dans un environnement de fenĂȘtres Linux rĂ©el.Une partie du WSI pour X11 et Windows est encore en cours de dĂ©veloppement.
vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR et les fonctions associĂ©es de vĂ©rification du support de prĂ©sentation sont marquĂ©es comme WIP. Wayland est dĂ©jĂ prĂ©sent, tandis que le support pour X11/Windows n'est pas encore achevĂ©.Certains Ă©lĂ©ments de Vulkan 1.0 ne sont pas encore prĂȘts ou ne sont pas pris en charge.
Dans l'état WIP, on trouve, par exemple, vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, certaines états dynamiques et des commandes de timestamp. Les fonctions Sparse comme vkQueueBindSparse et vkGetImageSparseMemoryRequirements sont marquées comme non prises en charge. Ape est proche de Vulkan 1.0 en termes de couverture, mais n'est pas encore un remplacement universel pour un pilote Vulkan normal.De nouvelles améliorations en matiÚre de rendu et de synchronisation ont été apportées.
Dans l'historique du projet, des modifications ont Ă©tĂ© notĂ©es les 5 et 6 juin, telles que l'ajout du redĂ©marrage des primitives, de l'Ă©chantillonnage de textures entiĂšres, de la gestion de mip/lod lors de l'Ă©chantillonnage et de la mise en Ćuvre de sĂ©maphores binaires. Le projet Ă©volue activement dans le sens de la compatibilitĂ© pratique avec les tests Vulkan et des scĂ©narios graphiques rĂ©els.Le projet ne vise pas la performance.
L'auteur affirme directement qu'Ape est conçu pour explorer Vulkan et n'a pas pour but d'ĂȘtre un pilote performant ou prĂȘt pour la production. On doit considĂ©rer Ape comme un projet de recherche, une implĂ©mentation Ă©ducative de Vulkan et une expĂ©rience avec Zig, plutĂŽt que comme un concurrent de Mesa RADV, ANV, NVK ou Lavapipe.
Au final, Ape est intéressant non pas parce qu'il sera demain un remplaçant de Mesa, mais parce que c'est une implémentation autonome de Vulkan ICD en Zig avec son propre interpréteur SPIR-V, un moteur de rendu logiciel et une couverture already visible de Vulkan 1.0. Pour les utilisateurs ordinaires, l'utilité est encore limitée, mais pour les développeurs de pilotes, les auteurs de runtimes et les personnes étudiant l'architecture interne de Vulkan, le projet apparaßt comme un laboratoire vivant fascinant.
Source : linux.org.ru
