Ape — uus avatud tarkvaraline Vulkan ICD rakendus

Esitletud uus eksperimentaalne Vulkan-draiver Ape — avatud tarkvaraline Vulkan ICD rakendus, mis on peaaegu tĂ€ielikult kirjutatud Zig ja ei kasuta Mesa koodi. Projekt ei pretendeeri veel tööstuslikule kasutusele: autor kirjeldab seda otse kui Ă”pikogemust "draiveri ise kokku panemiseks" ja hoiatab, et Ape't ei tohi tĂ”sistes projektides kasutada. Kood on avaldatud litsentsi all MIT.


Huvi Ape vastu tekkis pĂ€rast seda, kui Vulkan spetsifikatsiooni lisas eraldi tootja ID Ape ja draiveri ID ApeSoft. Vastav pull request KhronosGroup/Vulkan-Docs repository's on ĂŒhendatud 6. juuni 2026. Kommenteerides mĂ€rkis autor, et töötab harrastuslikul Vulkan-draiveril ja on lĂ€henemas kĂ”ikide Vulkan 1.0 testide lĂ€bimisele.

Sisuliselt on Ape mitte draiver konkreetse graafikakaardi jaoks, vaid tarkvaraline Vulkan-renderdaja, mis on sarnane Mesa Lavapipele: Vulkan-kÀsklused tÀidetakse oma implementeerimise kaudu, ilma et pöördutaks riistvara GPU-draiveri poole. Samuti ei pÔhine Ape Mesal ning on kirjutatud iseseisva koodibaasina Zig'is.

Mida Ape juba oskab

  • Töötab kui Vulkan ICD.
    Ape on kujundatud kui Installable Client Driver — see tĂ€hendab, et see on draiver, mida saab tavaline Vulkan loader lĂ€bi ICD-manifesti aktiveerida. PĂ€rast koostamist soovitab autor viidata Vulkan loaderile vastavale manifestifailile. See muudab projekti mitte lihtsalt eksperimentide kogumiks, vaid tĂ”eliseks Vulkan-draiveri rakenduseks, kuigi Ă”ppelaadi. Vulkan loader on ette nĂ€htud mitme ICD-draiveri avastamiseks ja ĂŒhendamiseks sĂŒsteemis.

  • TĂ€ielikult kirjutatud Zig'is.
    Peamine Ape koodibaas on kirjutatud Zig'is; projekti pĂ”hiforge-lehe peal on keel mĂ€rgitud kui Zig 99,9%. Phoronix rĂ”hutab eraldi, et projekt ei sĂ”ltu Mesast ja on teostatud just Zig'is, mitte C/C++-s. Graafikadraiverid kirjutatakse traditsiooniliselt C/C++-s, kuid Ape nĂ€itab, et Vulkan ICD-d saab teostada ka uuemas sĂŒsteemikeeles.

  • On olemas tarkvaraline rakendus ApeSoft.
    Projektis on eraldatud tarkvaraline rakendus Soft, mis asub draiveri koodibaasis. See kasutab enda SPIR-V-interpretaatorit ja enda renderdajat. Ape mitte ainult ei vĂ”ta vastu Vulkan-kutseid, vaid pĂŒĂŒab ka iseseisvalt tĂ€ita shadereid ja renderdamist CPU-l.

  • Toetatakse koostamist lĂ€bi Zig build.
    README-s on kirjas, kuidas koguda kĂ€ske zig build soft. PĂ€rast seda tuleb seadistada Vulkan loader ICD manifestile. Praegu on see selgelt arendajate ja entusiastide tööriist, mitte paket, mida „paigaldad ja kĂ€ivitad”.

  • Suurem osa Vulkan 1.0 on rakendatud.
    README-s on loetletud Vulkan 1.0 funktsioonide olek. Rakendatud on nĂ€iteks eksemplari ja seadme loomine, mĂ€lu jagamine, puhvrid, pildid, kĂ€skude puhvrid, renderdamise protsess, framebuffer, graafikupipeline, arvutuspipeline, shader-modulid, descriptor-seeriate, swapchain ja pĂ”hijoonistuskomplektid. Rakendatud funktsioonide hulgas on projekt juba kaugemale jĂ”udnud kui „tere kolmnurk”-katse, kuid tĂ€ielik ĂŒhilduv draiveri staatus on veel saavutamata ja jĂ€rele on jÀÀnud lĂ”petamata kohad.

  • On olemas joonistus- ja arvutuskĂ€sud.
    Rakendatud funktsioonide seas on vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch ja vkCmdDispatchIndirect. Ape hÔlmab mitte ainult Vulkan pÔhistruktuuri, vaid ka kahte peamist API stsenaariumi: graafiline renderdamine ja arvutuspipeline.

  • Toetatakse swapchain'i ja vĂ€ljundit lĂ€bi Waylandi.
    Rakendamise olekus on tÀhistatud vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR ja Waylandi esituse toe kontrollimise uuringud. Swapchain'i ja Waylandi pinna olemasolu tÀhendab, et draiver on suunatud mitte ainult offline-testimisele, vaid ka pildi kuvamisele reaalsetes Linuxi akna keskkondades.

  • X11 ja Windowsi WSI osa on veel töös.
    vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR ja vastavad esituse toe kontrollimise funktsioonid on mÀrgitud WIP-na. Wayland on juba olemas, samas pole X11/Windowsi tugi veel valmimiseni jÔudnud.

  • MĂ”ned Vulkan 1.0 elemendid ei ole veel valmis vĂ”i ei ole toetatud.
    WIP olekus on tĂ€histatud nĂ€iteks vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, osa dĂŒnaamilistest olekutest ja timestamp-kĂ€sud. Sparse-funktsioonid nagu vkQueueBindSparse ja vkGetImageSparseMemoryRequirements on mĂ€rgitud kui mitte toetatud. Ape on hĂ”lmatud Vulkan 1.0 ulatusest, kuid ei ole veel universaalne asendus normaalsele Vulkan draiverile.

  • On toimunud vĂ€rsked tĂ€iustused renderdamises ja sĂŒnkroniseerimises.
    Projekti ajaloos on 5–6 juunil mĂ€rgitud muudatused, nagu primitive restart, tĂ€isarvude tekstuuride proovivĂ”tt, mip/lod juhtimine proovivĂ”tmisel ja binaarsete semaforite rakendamine. Projekt areneb aktiivselt praktilise ĂŒhilduvuse suunas Vulkanitestide ja tegelike graafiliste stsenaariumitega.

  • Projekt ei sea eesmĂ€rgiks tulemuslikkust.
    Autor ĂŒtleb otse, et Ape on loodud Vulkani Ă”ppimiseks ega pĂŒĂŒdle olema tootmisvalmiduse vĂ”i jĂ”udluse poolest. Ape tuleks kĂ€sitleda uurimisprojekti, Vulkani Ă”pikuna ja Zig-iga katsetamisena, mitte konkurendina Mesa RADV, ANV, NVK vĂ”i Lavapipe vastu.

KokkuvÔttes on Ape huvitav mitte selle poolest, et seda saaks homme Mesa asemel kasutada, vaid selle poolest, et see on iseseisev Vulkan ICD rakendus Zig-is, millel on oma SPIR-V tÔlkija, tarkvaraline renderdus ja juba mÀrkimisvÀÀrne Vulkan 1.0 katvus. Tava kasutajatele pole sellest veel palju kasu, kuid draiverite arendajate, kÀitiste autorite ja Vulkani sisemise struktuuri uurijate jaoks paistab see projekt huvitava elava katsevÀljana.

Allikas: linux.org.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster