Ape — uus avatud tarkvara teostus Vulkan ICD

Esitletud uus eksperimentaalne Vulkan-juht Ape — avatud tarkvara rakendus Vulkan ICD, kirjutatud peaaegu täielikult Zig ja mitte kasutades Mesa koodi. Projekt ei pretendeeri veel tööstuslikule kasutusele: autor kirjeldab seda otseselt kui õppe katset "kokku panna juhi käsitsi" ja hoiatab Ape'i mitte kasutada tõsistes projektides. Kood on avaldatud litsentsi alusel MIT.


Huvi Ape vastu tekkis pärast seda, kui Vulkani spetsifikatsiooni oli lisatud eraldi tootja ID Ape ja juhi ID ApeSoft. Vastav pull request KhronosGroup/Vulkan-Docs hoidlas on ühendatud 6. juunil 2026. Kommenteerides märkis autor, et töötab hobi Vulkan-juhi kallal ja läheneb kõikide Vulkan 1.0 testide läbimisele.

Sisuliselt ei ole Ape konkreetse graafikakaardi juht, vaid programmeeritud Vulkan-renderija, mis on määratletud sarnasena Mesa Lavapipele: Vulkan-käsklusi teostatakse enda teostuse vahendusel, ilma et pöörduks hardware GPU-juhi poole. Samuti ei põhine Ape Mesa'l ja on kirjutatud iseseisva koodibaasina Zigis.

Mida Ape juba oskab

  • Töötama kui Vulkan ICD.
    Ape on kujundatud kui Installable Client Driver — see, it functions like a driver that can be picked up by the standard Vulkan loader through the ICD manifest. After building, the author suggests indicating the Vulkan loader to the appropriate manifest file. This transforms the project from just a set of experiments into a real Vulkan driver implementation, albeit one for educational purposes. The Vulkan loader is designed to detect and connect multiple ICD drivers in the system.

  • Completely written in Zig.
    The main codebase of Ape is written in Zig; the main forge page of the project lists the language as Zig 99.9%. Phoronix specifically emphasizes that the project does not depend on Mesa and is implemented specifically in Zig, not in C/C++. Graphics drivers are traditionally written in C/C++, and Ape demonstrates that Vulkan ICD can also be implemented in a more modern system language.

  • There is a software implementation of ApeSoft.
    The project highlights a software implementation Pehme, which resides within the driver’s codebase itself. It utilizes its own SPIR-V interpreter and its own renderer. Ape not only accepts Vulkan calls but also attempts to perform shaders and rendering on the CPU independently.

  • Building is supported through Zig build.
    Programmi rakendamise jaoks on README-s näidatud viisi, kuidas koguda zig build soft. Seejärel peate seadistama Vulkan loaderi ICD manifesti. Praegu on see selgelt tööriist arendajatele ja entusiastidele, mitte paketile, mille "installid ja käivitad".

  • Vulkan 1.0 on realiseeritud märkimisväärne osa.
    README-s on esitatud Vulkan 1.0 funktsioonide staatuse loetelu. Teostatud funktsioonide hulka kuuluvad eksemplari ja seadme loomine, mälu eraldamine, puhvrid, pildid, käskude puud, render pass, framebuffer, graafika torujuhe, arvutus torujuhe, shaderi moodulid, deskriptorikomplektid, vahetusketid ja põhilised joonistus käsklused. Teostatud funktsioonide valiku poolest on projekt juba edasi liikunud kaugemale kui "hello triangle" katse, kuid täieliku ühilduva draiveri staatuse saavutamiseks peab see veel läbib kontrolli ja sulgema lõpetamata kohad.

  • On olemas joonistamis- ja arvutus käsklused.
    Teostatud funktsioonide hulgas on märgitud vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch ja vkCmdDispatchIndirect. Ape katab mitte ainult Vulkan põhitaristut, vaid ka kahte võtmesüsteemi API-d: graafilist joonistamist ja arvutus pipe-line.

  • Toetatakse vahetusketti ja väljundit läbi Waylandi.
    Täidesaatmise staatuses on esile tõstetud vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR ning Waylandi esitusviisi toimetulekute kontrollid. Swapchaini ja Waylandi pinda olemasolu näitab, et draiver on sihitud mitte ainult offline-testidele, vaid ka pildi kuvamisele tõelises Linuxi akna keskkonnas.

  • WSI osa X11 ja Windows jaoks on veel arendamisel.
    vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR ning vastavad esitusmeetodi toetuse kontrollimise funktsioonid on märgitud töö käigus. Wayland on juba olemas, X11/Windowsi tugi ei ole veel valmis.

  • Mõned Vulkan 1.0 elemended ei ole veel valmis või ei ole toetatud.
    WIP staatuse alla kuuluvad näiteks vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, osa dünaamilisi olekuid ja timestamp-käsklusi. Sparse-funktsioonid nagu vkQueueBindSparse ja vkGetImageSparseMemoryRequirements on märgitud kui toetamata. Ape on Vulkan 1.0-ga kattuvuse osas lähedane, kuid ei ole veel universaalne asendus tavalisele Vulkan-draiverile.

  • On toimunud värskendusi renderdamise ja sünkroniseerimise osas.
    Projektis tähistatakse 5.–6. juunil muudatusi, nagu primitiivne taaskäivitamine, terviktekstuuride proovivõtmine, mip/lod juhtimine proovivõtu ajal ja binaarsete semaforide rakendamine. Projekt areneb aktiivselt just praktilise ühilduvuse suunas Vulkanite testide ja tegelike graafikaskeemide osas.

  • Projekt ei sea eesmärgiks jõudlust.
    Autor kirjutab otse, et Ape on loodud Vulkaniga tutvumiseks ning ei püüa olla jõudluselt või tootmisvalmiduse poolest konkurentsivõimeline. Apet on mõistlik käsitleda kui teadusprojekti, õpikute rakendust Vulkanile ning eksperimenti Zigi abil, mitte kui konkurenti Mesa RADV, ANV, NVK või Lavapipe'ile.

Kokkuvõttes on Ape huvitav mitte selle pärast, et seda saaks homme Mesa asemele paigaldada, vaid selle pärast, et tegemist on iseseisva Vulkan ICD rakendusega Zigil, millel on oma SPIR-V tõlgendaja, tarkvaraline renderdaja ja juba märkimisväärne Vulkan 1.0 katvus. Tavaliste kasutajate jaoks on praegu kasu vähe, kuid draiverite arendajate, jooksukeskkondade autorite ja Vulkan'i sisemist koostisosade uurijate jaoks paistab projekt olevat huvitav elav katseala.

Allikas: linux.org.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster