Ape — nueva implementación de software abierto de Vulkan ICD

Presentado nuevo experimento controlador Vulkan Ape — implementación de software abierta de Vulkan ICD, escrita casi en su totalidad en Zig y no usa código de Mesa. El proyecto no tiene aspiraciones industriales: el autor lo describe directamente como un intento educativo de "construir un controlador a mano" y advierte no usar Ape en proyectos serios. El código se publica bajo la licencia MIT.


El interés por Ape surgió después de que se añadiera a la especificación Vulkan un ID de proveedor separado para Ape y un ID de controlador para ApeSoft. La solicitud de extracción correspondiente en el repositorio KhronosGroup/Vulkan-Docs fue fusionada el 6 de junio de 2026. En el comentario, el autor indicó que está trabajando en un controlador Vulkan amateur y se está acercando a pasar todas las pruebas de Vulkan 1.0.

Esencialmente, Ape no es un controlador para una tarjeta gráfica específica, sino un renderizador Vulkan de software, similar en función a Mesa Lavapipe: los comandos de Vulkan se ejecutan mediante su propia implementación, sin recurrir al controlador del GPU de hardware. Además, Ape no está basado en Mesa y se escribió como una base de código independiente en Zig.

Lo que ya puede hacer Ape

  • Funciona como un ICD de Vulkan.
    Ape está diseñado como Installable Client Driver — es decir, como un controlador que puede ser recogido por el cargador estándar de Vulkan a través del manifiesto ICD. Después de compilar, el autor sugiere señalar al cargador de Vulkan el archivo de manifiesto correspondiente. Esto convierte al proyecto no solo en un conjunto de experimentos, sino en una verdadera implementación de un controlador Vulkan, aunque sea educativa. El cargador de Vulkan está diseñado precisamente para detectar y conectar varios controladores ICD en el sistema.

  • Totalmente escrito en Zig.
    La base de código principal de Ape está escrita en Zig; en la página principal del proyecto, el lenguaje se indica como Zig 99,9%. Phoronix destaca por separado que el proyecto no depende de Mesa y se implementa precisamente en Zig, y no en C/C++. Los controladores gráficos tradicionalmente se escriben en C/C++, y Ape demuestra que el ICD de Vulkan se puede implementar también en un lenguaje de sistema más moderno.

  • Hay una implementación de software de ApeSoft.
    El proyecto incluye una implementación de software de Soft, que se encuentra dentro de la propia base de código del controlador. Utiliza su propio intérprete SPIR-V y su propio renderizador. Ape no solo acepta llamadas de Vulkan, sino que intenta ejecutar shaders y renderizar en CPU de manera independiente.

  • Se admite la construcción a través de Zig build.
    Para la implementación del software, el README indica el método de compilación utilizando el comando zig build soft. Después de esto, es necesario configurar el cargador de Vulkan en el manifiesto ICD. Hasta ahora, esto es claramente una herramienta para desarrolladores y entusiastas, y no un paquete "instalado y ejecutado".

  • Se ha implementado una parte significativa de Vulkan 1.0.
    En el README se proporciona una lista del estado de las funciones de Vulkan 1.0. Entre las funciones implementadas están la creación de instancias y dispositivos, la asignación de memoria, buffers, imágenes, command buffers, render pass, framebuffer, gráficos pipeline, compute pipeline, shader modules, descriptor sets, swapchain y comandos básicos de renderizado. Con el conjunto de funciones implementadas, el proyecto ya ha ido más allá del experimento del "hello triangle", pero aún necesita pasar una verificación para obtener el estatus de un controlador completamente compatible y cerrar los espacios no terminados.

  • Existen comandos de renderizado y computación.
    En la lista de funciones implementadas se destacan vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch y vkCmdDispatchIndirect. Ape cubre no solo la infraestructura básica de Vulkan, sino también dos escenarios clave de API: renderizado gráfico y pipelines de computación.

  • Se admiten swapchain y salida a través de Wayland.
    En el estado de implementación se indican vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, así como las verificaciones de soporte de presentación de Wayland. La presencia del swapchain y la superficie Wayland significa que el controlador está orientado no solo a pruebas fuera de línea, sino también a la salida de imágenes en un entorno de ventana real en Linux.

  • Una parte de WSI para X11 y Windows aún está en desarrollo.
    vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR y las funciones correspondientes de verificación de soporte de presentación se marcan como WIP. Wayland ya está presente, mientras que el soporte de X11/Windows aún no está listo.

  • Algunos elementos de Vulkan 1.0 aún no están listos o no son compatibles.
    En el estado WIP, se citan, por ejemplo, vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, algunas estados dinámicos y comandos de timestamp. Las funciones Sparse como vkQueueBindSparse y vkGetImageSparseMemoryRequirements se marcan como no compatibles. Ape se acerca a Vulkan 1.0 en cobertura, pero aún no es un reemplazo universal para un controlador normal de Vulkan.

  • Han surgido nuevas mejoras en renderizado y sincronización.
    En la historia del proyecto, se registran cambios como la adición de primitive restart, muestreo de texturas enteras, control de mip/lod en la selección y la implementación de semáforos binarios. El proyecto se desarrolla activamente en la dirección de una compatibilidad práctica con las pruebas de Vulkan y escenarios gráficos reales.

  • El proyecto no tiene como objetivo la eficiencia.
    El autor menciona que Ape fue creado para estudiar Vulkan y no busca ser un controlador productivo o listo para producción. Debe considerarse Ape como un proyecto de investigación, una implementación educativa de Vulkan y un experimento con Zig, y no como un competidor de Mesa RADV, ANV, NVK o Lavapipe.

En resumen, Ape es interesante no porque se pueda instalar mañana en lugar de Mesa, sino porque es una implementación independiente de Vulkan ICD en Zig con su propio intérprete de SPIR-V, renderizador de software y una cobertura ya notable de Vulkan 1.0. Para los usuarios comunes, aún hay poco beneficio, pero para los desarrolladores de controladores, autores de runtimes y personas que estudian la estructura interna de Vulkan, el proyecto se presenta como un curioso campo de pruebas.

Fuente: linux.org.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster