Ape — нова отворена софтуерна реализация на Vulkan ICD

Представен нов експериментален Vulkan драйвер Ape — отворена софтуерна реализация на Vulkan ICD, написана почти изцяло на Zig и не използваща кода на Mesa. Проектът засега не претендира за индустриално приложение: авторът го описва направо като учебен опит „да се събере драйвер на ръка“ и предупреждава да не се използва Ape в сериозни проекти. Кодът е публикуван под лиценз MIT.


Интересът към Ape се появи след като в спецификацията Vulkan беше добавен отделен vendor ID за Ape и driver ID за ApeSoft. Съответстващият pull request в репозитория KhronosGroup/Vulkan-Docs беше слетен на 6 юни 2026 година. В коментара авторът отбеляза, че работи по любителски Vulkan драйвер и се приближава до преминаването на всички тестове на Vulkan 1.0.

По същество, Ape не е драйвер за конкретна видеокарта, а софтуерен Vulkan рендерер, близък по предназначение на Mesa Lavapipe: Vulkan командите се изпълняват чрез собствената реализация, без обращение към хардуерния GPU драйвер. В същото време Ape не е основан на Mesa и е написан като самостоятелна кодова база на Zig.

Какво вече може Ape

  • Работи като Vulkan ICD.
    Ape е оформен като Installable Client Driver — тоест като драйвер, който може да бъде схващан от стандартния Vulkan loader чрез ICD манифест. След компилирането, авторът предлага да посочи на загрузчика Vulkan съответния manifest файл. Това прави проекта не просто набор от експерименти, а истинска реализация на Vulkan драйвера, макар и учебна. Vulkan loader е точно проектиран за откритие и свързване на няколко ICD драйвера в системата.

  • Напълно написан на Zig.
    Основната кодова база на Ape е написана на Zig; на основната страница на проекта езикът е посочен като Zig 99,9%. Phoronix отделно подчертава, че проектът не зависи от Mesa и е реализиран именно на Zig, а не на C/C++. Графичните драйвери традиционно се пишат на C/C++, а Ape показва, че Vulkan ICD може да бъде реализиран и на по-съвременен системен език.

  • Има софтуерна реализация на ApeSoft.
    В проекта е отделена софтуерна реализация Soft, която се намира вътре в самата кодова база на драйвера. Тя използва собствен SPIR-V интерпретатор и собствен рендерер. Ape не просто приема Vulkan повиквания, а се опитва самостоятелно да изпълнява шейдъри и рендеринг на CPU.

  • Поддържа се компилация чрез Zig build.
    За програмиране в README е указано как да се компилира с командата zig build soft. След това трябва да конфигурирате Vulkan loader с ICD manifest. Все още това е явно инструмент за разработчици и ентусиасти, а не пакет "инсталирай и стартирай".

  • Постигната е значителна част от Vulkan 1.0.
    В README е предоставен списък с статус на функциите на Vulkan 1.0. Сред реализираните са създаване на инстанция и устройство, разпределение на памет, буфери, изображения, command buffers, render pass, framebuffer, graphics pipeline, compute pipeline, shader modules, descriptor sets, swapchain и основни команди за рендеринг. По отношение на наборът от реализирани функции проектът вече е преминал извън експеримента "hello triangle", но все още му е нужно да премине проверка и да затвори незавършените места, за да достигне статуса на пълен съвместим драйвер.

  • Налице са команди за рендеринг и изчисления.
    В списъка с реализирани функции са включени vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch и vkCmdDispatchIndirect. Ape покрива не само основната инфраструктура на Vulkan, но и два ключови сценария на API: графичен рендеринг и изчислителни пайплайни.

  • Поддържат се swapchain и изход чрез Wayland.
    В статус на реализация са включени vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, а също и проверки за поддръжка на Wayland presentation. Наличието на swapchain и Wayland повърхност означава, че драйверът е насочен не само към офлайн тестове, но и към изхода на изображението в реална прозоречна среда в Linux.

  • Част от WSI за X11 и Windows все още е в работа.
    vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR и съответните функции за проверка на поддръжка на presentation са отбелязани като WIP. Wayland вече е наличен, а поддръжката за X11/Windows все още не е доведена до готово състояние.

  • Някои елементи на Vulkan 1.0 все още не са готови или не се поддържат.
    В статус WIP са посочени, например, vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, част от динамичните състояния и команди за времеви марки. Sparse функции като vkQueueBindSparse и vkGetImageSparseMemoryRequirements са отбелязани като unsupported. Ape е близък до Vulkan 1.0 по обхват, но все още не е универсална замяна на нормален Vulkan драйвер.

  • Появиха се нови подобрения в рендеринга и синхронизацията.
    В историята на проекта от 5–6 юни са отбелязани промени като добавяне на primitive restart, integer texture sampling, управление на mip/lod при избор и внедряване на бинарни семафори. Проектът активно се развива в посока практическа съвместимост с тестовете на Vulkan и реалните графични сценарии.

  • Проектът не цели производителност.
    Авторът заявява, че Ape е създаден за изучаване на Vulkan и не се стреми да бъде производителен или готов за производство драйвер. Ape следва да се възприема като изследователски проект, учебна реализация на Vulkan и експеримент с Zig, а не като конкурент на Mesa RADV, ANV, NVK или Lavapipe.

В крайна сметка, Ape е интересен не заради възможността утре да замести Mesa, а заради това, че е самостоятелна реализация на Vulkan ICD на Zig с собствен SPIR-V интерпретатор, софтуерен рендерер и вече забележимо покритие на Vulkan 1.0. За обикновените потребители ползата е малка, но за разработчиците на драйвери, авторите на рантайми и хората, изучаващи вътрешната структура на Vulkan, проектът изглежда като любопитен жив полигон.

Източник: linux.org.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster