Presenteras ny experimentell Vulkan-drivrutin Ape â en öppen programvaruimplementation av Vulkan ICD, nĂ€stan helt skriven pĂ„ Zig och anvĂ€nder inte Mesa-kod. Projektet strĂ€var Ă€nnu inte efter industriell tillĂ€mpning: författaren beskriver det som ett lĂ€rande försök att "bygga en drivrutin för hand" och varnar för att anvĂ€nda Ape i seriösa projekt. Koden publiceras under en licens MIT.
Intresset för Ape vÀxte efter att i specifikationen Vulkan fick en separat vendor-ID för Ape och driver-ID för ApeSoft. Den relevanta pull requesten i KhronosGroup/Vulkan-Docs-arkivet har blivit sammanslagen 6 juni 2026. I kommentaren angav författaren att de arbetar med en amatör Vulkan-drivrutin och nÀrmar sig att klara alla tester för Vulkan 1.0.
Egentligen Àr Ape inte en drivrutin för ett specifikt grafikkort, utan en programvarubaserad Vulkan-renderare, nÀra beslÀktad med Mesa Lavapipe: Vulkan-kommandon utförs av den egna implementationen, utan att vÀnda sig till den hÄrdvarubaserade GPU-drivrutinen. Samtidigt Àr Ape inte baserad pÄ Mesa och Àr skriven som en sjÀlvstÀndig kodbas i Zig.
Vad Ape redan kan
Fungerar som Vulkan ICD.
Ape Ă€r utformad som Installable Client Driver â alltsĂ„ som en drivrutin som kan fĂ„ngas upp av den standard Vulkan loadern genom ICD-manifestet. Efter kompilering föreslĂ„r författaren att ange Vulkan-loadern till den relevanta manifestfilen. Detta gör projektet till mer Ă€n bara en samling experiment, utan en verklig implementation av en Vulkan-drivrutin, Ă€ven om det Ă€r ett utbildningsprojekt. Vulkan-loadern Ă€r just avsedd för att upptĂ€ckta och ansluta flera ICD-drivrutiner i systemet.Helt skriven i Zig.
Den huvudsakliga kodbasen för Ape Àr skriven i Zig; pÄ huvudforge-sidan för projektet anges sprÄket som Zig 99,9%. Phoronix betonar sÀrskilt att projektet inte beror pÄ Mesa och Àr implementerat just i Zig, istÀllet för C/C++. Grafiska drivrutiner skrivs traditionellt i C/C++, och Ape visar att Vulkan ICD kan implementeras Àven pÄ ett modernare systemprogrammeringssprÄk.Det finns en programvaruimplementation av ApeSoft.
I projektet har en programvaruimplementation uteslutits Mjuk, som ligger inom sjÀlva kodbasen för drivrutinen. Den anvÀnder sin egen SPIR-V-tolkar och sin egen renderare. Ape tar inte bara emot Vulkan-anrop, utan försöker ocksÄ sjÀlvstÀndigt utföra shaders och rendering pÄ CPU:n.Stöd för byggnation genom Zig build.
För den programvaruimplementering som anges i README anvÀnds kommandot zig build soft för att bygga. DÀrefter mÄste Vulkan-laddaren konfigureras med ICD-manifestet. Detta Àr fortfarande tydligt ett verktyg för utvecklare och entusiaster, snarare Àn ett paket för «installera och köra».En betydande del av Vulkan 1.0 har implementerats.
I README finns en lista över statusen för Vulkan 1.0-funktioner. Bland de implementerade finns skapande av instans och enhet, minnesallokering, buffertar, bilder, kommandobuffertar, renderpass, framebuffer, grafikpipeline, berÀkningspipeline, shadermoduler, deskriptorsatser, swapchain och grundlÀggande renderingskommandon. Genom uppsÀttningen av implementerade funktioner har projektet redan gÄtt lÀngre Àn «hello triangle»-experimentet, men för att uppnÄ status som en fullstÀndig kompatibel drivrutin behöver det fortfarande genomgÄ tester och avsluta utestÄende delar.Det finns renderings- och berÀkningskommandon.
I listan över implementerade funktioner noteras vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch och vkCmdDispatchIndirect. Ape tÀcker inte bara den grundlÀggande infrastrukturen för Vulkan, utan Àven tvÄ viktiga API-scenario: grafisk rendering och berÀkningspipelines.Swapchain och utdata via Wayland stöds.
I implementationsstatusen noteras vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, samt kontroller för stöd för Wayland-presentation. NÀrvaron av swapchain och Wayland-yta innebÀr att drivrutinen Àr inriktad pÄ inte bara offline-tester, utan ocksÄ pÄ att producera grafik i en verklig fönsterhanteringsmiljö i Linux.Delen WSI för X11 och Windows Àr fortfarande under arbete.
vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR och motsvarande funktioner för kontroller av presentationsstöd Àr markerade som WIP. Wayland Àr redan nÀrvarande, medan X11/Windows-stödet Ànnu inte Àr helt fÀrdigt.Vissa delar av Vulkan 1.0 Àr fortfarande inte klara eller stöds inte.
I WIP-statusen nÀmns till exempel vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, vissa dynamiska tillstÄnd och timestamp-kommandon. Sparse-funktioner som vkQueueBindSparse och vkGetImageSparseMemoryRequirements har markerats som unsupported. Ape nÀrmar sig Vulkan 1.0 i omfattning, men Àr fortfarande inte en universell ersÀttning för en riktig Vulkan-drivrutin.Det har kommit nya uppdateringar för rendering och synkronisering.
I projektets historia den 5â6 juni noterades förĂ€ndringar som tillĂ€gg av primitive restart, integer texture sampling, hantering av mip/lod vid sampling och implementering av binĂ€ra semaforer. Projektet utvecklas aktivt mot praktisk kompatibilitet med Vulkan-tester och verkliga grafiska scenarier.Projektet syftar inte till prestanda.
Författaren pÄstÄr direkt att Ape Àr skapat för att studera Vulkan och strÀvar inte efter att vara en produktionsklar eller högpresterande drivrutin. Ape bör uppfattas som ett forskningsprojekt, en utbildningsimplementering av Vulkan och ett experiment med Zig, snarare Àn en konkurrent till Mesa RADV, ANV, NVK eller Lavapipe.
Sammanfattningsvis Àr Ape intressant inte för att man kan ersÀtta Mesa med den imorgon, utan för att det Àr en sjÀlvstÀndig implementering av Vulkan ICD pÄ Zig med en egen SPIR-V-tolkare, programvarurenare och redan mÀrkbart stöd för Vulkan 1.0. För vanliga anvÀndare finns det fortfarande lite nytta, men för drivrutinsutvecklare, skapare av miljöer och mÀnniskor som studerar Vulkan inre funktioner ser projektet ut som en fascinerande levande experimentanlÀggning.
KĂ€lla: linux.org.ru
