Apresentado novo experimento driver Vulkan Ape — uma implementação de software aberta do Vulkan ICD, escrita quase inteiramente em Zig e que não utiliza código Mesa. O projeto ainda não está destinado a uso industrial: o autor descreve-o explicitamente como uma tentativa educacional de "construir um driver manualmente" e avisa para não usar Ape em projetos sérios. O código está publicado sob a licença MIT.
O interesse por Ape surgiu após a especificação Vulkan ter adicionado um ID de fornecedor separado para Ape e um ID de driver para ApeSoft. O pull request correspondente no repositório KhronosGroup/Vulkan-Docs foi mesclado 6 de junho de 2026. No comentário, o autor mencionou que está trabalhando em um driver Vulkan amador e está se aproximando de passar todos os testes do Vulkan 1.0.
Basicamente, Ape não é um driver para uma placa de vídeo específica, mas sim um renderizador Vulkan de software, próximo em finalidade ao Mesa Lavapipe: os comandos Vulkan são executados pela sua própria implementação, sem recorrer ao driver de GPU de hardware. Além disso, Ape não é baseado no Mesa e foi escrito como uma base de código independente em Zig.
O que Ape já consegue
Funciona como ICD Vulkan.
Ape é estruturado como Installable Client Driver — ou seja, como um driver que pode ser capturado pelo carregador padrão do Vulkan através do manifesto do ICD. Após a compilação, o autor sugere informar ao carregador do Vulkan sobre o manifesto correspondente. Isso torna o projeto não apenas um conjunto de experimentos, mas uma verdadeira implementação de driver Vulkan, ainda que educacional. O carregador Vulkan é projetado para detectar e conectar vários drivers ICD no sistema.Completamente escrito em Zig.
A base de código principal do Ape foi escrita em Zig; na página principal do projeto, a linguagem é indicada como Zig 99,9%. O Phoronix destaca separadamente que o projeto não depende do Mesa e foi implementado especificamente em Zig, e não em C/C++. Drivers gráficos são tradicionalmente escritos em C/C++, e Ape mostra que um ICD Vulkan pode ser implementado também em uma linguagem de sistema mais moderna.Há uma implementação de software do ApeSoft.
O projeto destaca uma implementação de software Soft, que está dentro da própria base de código do driver. Ela utiliza seu próprio intérprete SPIR-V e seu próprio renderizador. Ape não apenas aceita chamadas Vulkan, mas tenta executar shaders e renderização de forma independente na CPU.Suporte para compilação via Zig build.
Para a implementação do software, o README menciona como compilar com o comando zig build soft. Depois disso, é necessário configurar o carregador Vulkan no manifesto ICD. Até agora, isso é claramente uma ferramenta para desenvolvedores e entusiastas, e não um pacote "instalou e executou".Uma parte significativa do Vulkan 1.0 foi implementada.
O README inclui uma lista do status das funcionalidades do Vulkan 1.0. Entre as implementadas estão a criação de instâncias e dispositivos, alocação de memória, buffers, imagens, command buffers, render pass, framebuffer, graphics pipeline, compute pipeline, módulos de shader, conjuntos de descritores, swapchain e comandos básicos de desenho. Com o conjunto de funcionalidades implementadas, o projeto já ultrapassou o experimento "hello triangle", mas ainda precisa passar por verificações e fechar lacunas inacabadas para ser considerado um driver plenamente compatível.Existem comandos de desenho e de computação.
Na lista de funções implementadas, estão destacadas vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch e vkCmdDispatchIndirect. Ape cobre não apenas a infraestrutura básica do Vulkan, mas também dois cenários principais da API: renderização gráfica e pipelines de computação.O swapchain e a saída via Wayland são suportados.
Entre os status de implementação, estão vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, além de verificações de suporte para a apresentação Wayland. A presença do swapchain e da superfície Wayland indica que o driver é voltado não apenas para testes offline, mas também para exibir imagens em um ambiente de janelas real no Linux.Parte do WSI para X11 e Windows ainda está em desenvolvimento.
As funções vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR e as correspondentes funções de verificação de suporte para apresentação estão marcadas como WIP. O suporte para Wayland já está presente, enquanto o suporte para X11/Windows ainda não está finalizado.Alguns elementos do Vulkan 1.0 ainda não estão prontos ou não são suportados.
No status WIP, estão, por exemplo, vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, parte dos estados dinâmicos e comandos de timestamp. Funções sparse como vkQueueBindSparse e vkGetImageSparseMemoryRequirements estão marcadas como unsupported. Ape se aproxima do Vulkan 1.0 em termos de cobertura, mas ainda não é uma substituta universal para um driver Vulkan normal.Foram feitas novas melhorias na renderização e na sincronização.
Na história do projeto, de 5 a 6 de junho, foram registradas alterações como a adição de primitive restart, amostragem de texturas inteiras, controle de mip/lod durante a amostragem e a implementação de semáforos binários. O projeto tem se desenvolvido ativamente em direção à compatibilidade prática com os testes do Vulkan e cenários gráficos reais.O projeto não tem como objetivo a performance.
O autor afirma diretamente que o Ape foi criado para estudar Vulkan e não tem o objetivo de ser um driver de alto desempenho ou pronto para produção. Deve-se encarar o Ape como um projeto de pesquisa, uma implementação educacional do Vulkan e uma experiência com Zig, e não como um concorrente do Mesa RADV, ANV, NVK ou Lavapipe.
Em resumo, o Ape é interessante não por poder ser usado como substituto do Mesa, mas porque é uma implementação independente do Vulkan ICD em Zig, com seu próprio interpretador SPIR-V, renderizador de software e já uma cobertura significativa do Vulkan 1.0. Para usuários comuns, ainda há pouco benefício, mas para desenvolvedores de drivers, criadores de runtimes e pessoas estudando a estrutura interna do Vulkan, o projeto se apresenta como um curioso campo de experimentação.
Fonte: linux.org.ru
