Ape — nova implementação de software aberto do Vulkan ICD

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

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster