Kompania Valve në listën e shpërndarjes për zhvilluesit e Mesa compiler-i i ri i shenjave për Vulkan-drajverin RADV, si një alternativë për compiler-in e shenjave nga AMDGPU, i përdorur në drajverët OpenGL dhe Vulkan RadeonSI dhe RADV për çipat grafikë AMD.
Pas përfundimit të testimit dhe përmirësimit të funksionalitetit, ACO planifikohet të ofrohet për t'u përfshirë në përbërjen kryesore të Mesa.
Kodi i propozuar nga Valve synon të sigurojë gjenerimin e kodit, sa më optimal të jetë e mundur për shenjat e aplikacioneve lojëra, si dhe për të arritur një shpejtësi shumë të madhe të kompilimit. Compiler-i aktual në Mesa përdor komponentë LLVM, të cilët nuk lejojnë arritjen e shpejtësisë së dëshiruar të kompilimit dhe nuk lejojnë kontrollin e plotë të rrjedhës së menaxhimit, çka në të kaluarën ka shkaktuar probleme serioze. Për më tepër, largimi nga LLVM ofron mundësinë për të realizuar një analizë më agresive të dallimeve dhe për të menaxhuar më mirë ngarkesën në regjistrat, që lejon gjenerimin e skedarëve ekzekutivë më efikas.
ACO është e shkruar në gjuhën C++, e ndërtuar me një sy nga mundësia e përdorimit për kompilimin JIT, dhe përdor struktura të dhënash të shpejta për përcaktimin, duke shmangur strukturat të bazuara në tregues, siç janë listat e lidhura dhe zinxhirët def-use. Paraqitja ndërmjetëse e kodit është plotësisht e bazuar në (Static Single Assignment) dhe lejon kryerjen e shpërndarjes së regjistrave, duke llogaritur saktësisht regjistrin në varësi të shayderit.
Aktualisht, për momentin mb supporting vetëm shayderat pixel (fragment) dhe ata të llogaritjes në GPU të dedikuara AMD (dGPU VI+). Megjithatë, ACO tashmë kompilon korrektisht shayderat për të gjitha lojërat e testuara, duke përfshirë shayderat e ndërlikuara nga lojërat Shadow of the Tomb Raider dhe Wolfenstein II. Prototipi i propozuar për testim ACO është gati dy herë më i shpejtë se kompajleri i shayderave AMDGPU në shpejtësinë e kompilimit dhe tregon rritje FPS në disa lojëra, gjatë funksionimit në sisteme me drejtuesin RADV.
Burimi: opennet.ru
