Të paraqitura eksperimentale të re Shoferi Vulkan Ape — një implementim programor i hapur i Vulkan ICD, i shkruar pothuajse tërësisht në Zig dhe që nuk përdor kodin Mesa. Projekti aktualisht nuk pretendon për përdorim industrial: autori e përshkruan atë si një përpjekje edukative për "të ndërtuar një shofer me duar" dhe paralajmëron që të mos përdoret Ape në projekte serioze. Kodi është publikuar nën licencën MIT.
Interesi për Ape u shfaq pasi në specifikimin Vulkan u shtua një identifikues vendor i veçantë për Ape dhe identifikues shoferi për ApeSoft. Kërkesa për ndryshim përkatëse në depozitat e KhronosGroup/Vulkan-Docs u miratua më 6 qershor 2026. Në koment, autori theksoi se po punon për një shofer Vulkan amator dhe po i afrohet kalimit të të gjitha testeve Vulkan 1.0.
Në esencë, Ape nuk është një shofer për një kartë grafike specifike, por një renderues programor Vulkan, i afërt në qëllim me Mesa Lavapipe: komandat Vulkan ekzekutohen nga implementimi i vet, pa iu drejtuar shoferit të aparatëve GPU. Megjithatë, Ape nuk bazohet në Mesa dhe është shkruar si një bazë kodi e pavarur në Zig.
Çfarë di të bëjë Ape
Funksionon si Vulkan ICD.
Ape është i strukturuar si Shoferi i Klientit të Instaluar — domethen si si si si si si si e si standard në loader Vulkan përmes manifestit të ICD. Pas ndërtimit, autori ofron të tregojë loader-it Vulkan për skedarin përkatës të manifestit. Kjo e bën projektin jo thjesht një grup eksperimentesh, por një realizim të vërtetë të drejtuesit Vulkan, ndonëse më shumë si një mësim. Loader-i Vulkan është projektuar për të zbuluar dhe lidhur disa drejtues ICD në sistem.Plotësisht i shkruar në Zig.
Baza kryesore e kodit të Ape është e shkruar në Zig; në faqen kryesore të projektit, gjuha është e përmendur si Zig 99,9%. Phoronix veçon se projekti nuk varet nga Mesa dhe është implementuar pikërisht në Zig, e jo në C/C++. Drejtuesit grafik tradicionalisht shkruhen në C/C++, ndërsa Ape tregon se ICD Vulkan mund të realizohet edhe në një gjuhë më moderne sistemore.Ka një implementim softuerik të ApeSoft.
Në projekt është theksuar implementimi softuerik E Zbutur, i cili ndodhet brenda vetë bazës së kodit të drejtuesit. Ai përdor interpretuesin SPIR-V dhe rendererin e vet. Ape nuk thjesht pranon thirrjet Vulkan, por përpiqet të ekzekutojë vetë shader-at dhe renderimin në CPU.Për të mbështetur ndërtimin përmes Zig build.
Për realizimin e programit, në README është treguar mënyra e ndërtimit me komandën zig build soft. Pasi të bëhet kjo, duhet të konfiguroni Vulkan loader për manifestin ICD. Deri tani, kjo është një mjet qartë për zhvilluesit dhe entuziastët, jo një paketë "instalo dhe fillo".Është realizuar një pjesë e konsiderueshme e Vulkan 1.0.
Në README është përfshirë një listë e statusit të funksioneve Vulkan 1.0. Midis atyre të realizuara është krijimi i instancës dhe pajisjes, alokimi i memories, bufereve, imazheve, command buffers, render pass, framebuffer, graphics pipeline, compute pipeline, shader modules, descriptor sets, swapchain dhe komandat bazë të renditjes. Sipas grupit të funksioneve të realizuara, projekti ka kaluar përtej eksperimentit "hello triangle", por për të arritur statusin e një driveri të plotë dhe të kompatibël, ende duhet të kalojë verifikimin dhe të mbyllë zonat e papërfunduara.Ka komanda për renditje dhe compute.
Në listën e funksioneve të realizuara janë të shënuara vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect, vkCmdDrawIndexedIndirect, vkCmdDispatch dhe vkCmdDispatchIndirect. Ape mbulon jo vetëm infrastrukturën themelore të Vulkan, por edhe dy skenarë kyç të API: renditjen grafike dhe pipeline të llogaritjes.Mundësohet swapchain dhe dalje përmes Wayland.
Në statusin e implementimit janë shënuar vkCreateSwapchainKHR, vkQueuePresentKHR, vkCreateWaylandSurfaceKHR, si dhe kontrollet për mbështetje të Wayland presentation. Prania e swapchain dhe sipërfaqes Wayland do të thotë se drejtuesi është orientuar jo vetëm për teste offline, por edhe për daljen e imazhit në një mjedis të vërtetë dritareje në Linux.Disa pjesë të WSI për X11 dhe Windows janë ende në punë.
vkCreateXcbSurfaceKHR, vkCreateXlibSurfaceKHR, vkCreateWin32SurfaceKHR dhe funksionet përkatëse për kontrollin e mbështetjes për presentation janë shënuar si WIP. Wayland tashmë është i pranishëm, ndërsa mbështetja për X11/Windows ende nuk është përfunduar.Disa elemente të Vulkan 1.0 ende nuk janë të gatshme ose nuk mbështeten.
Në statusin WIP janë shënuar, për shembull, vkCreatePipelineCache, vkCreateSemaphore, vkGetQueryPoolResults, vkMergePipelineCaches, disa gjendje dinamike dhe komandat timestamp. Funksionet Sparse si vkQueueBindSparse dhe vkGetImageSparseMemoryRequirements janë shënuar si të pa mbështetura. Ape është afër Vulkan 1.0 në mbulim, por ende nuk është një zëvendësim universale për një drejtues të zakonshëm Vulkan.Kanë dalë përmirësime të reja në rendering dhe sinkronizim.
Në historinë e projektit, më 5–6 qershor shënohen ndryshime si shtimi i rikthimit primitiv, sampling i teksturave integer, menaxhimi i mip/lod gjatë tërheqjes dhe implementimi i semaforëve binarë. Projekti po zhvillohet aktivisht drejt përputhshmërisë praktike me testet Vulkan dhe skenarët grafikë realë.Projekti nuk ka si qëllim performancën.
Autori e shpreh qartë se Ape është krijuar për të studiuar Vulkan dhe nuk përpiqet të jetë një driver me performancë të lartë ose i gatshëm për prodhim. Duhet të perceptohet Ape si një projekt hulumtues, një implementim edukativ të Vulkan dhe një eksperiment me Zig, dhe jo si një konkurrues ndaj Mesa RADV, ANV, NVK ose Lavapipe.
Në përfundim, Ape është interesante jo për faktin se mund të zëvendësohet nesër me Mesa, por për faktin se është një implementim autonom i Vulkan ICD në Zig me një interpretues SPIR-V, renderues programor dhe një mbulim të dukshëm të Vulkan 1.0. Për përdoruesit e zakonshëm ka pak dobi, por për zhvilluesit e drivave, autorët e runtime-eve dhe ata që studiojnë strukturën e brendshme të Vulkan, projekti duket si një poligon interesant dhe aktiv.
Burimi: linux.org.ru
