Drejtuesi i Vulkan tani përdor backend-in ACO të Valve

Në bazën e kodit të përdorur për të formuar versionin Mesa 20.2, shoferi RADV, Vulkan për patate të skuqura AMD kaloi në backend parazgjedhur për të përpiluar hije »ACO«, zhvilluar nga Valve si një alternativë ndaj përpiluesit të shaderit LLVM.

Ky ndryshim i specifikuar u bë me përfundimin e marrjes së një rritje në produktivitetin e lojrave dhe një zvogëlim në kohën e nisjes së tij.

Ndryshimi nga kontrollori RADV te backend i ri ishte e mundur pas arritjes së barazisë në funksionalitetin e ACO me prapavijën e vjetër AMD të zhvilluar për drejtuesin AMDGPU, i cili vazhdon të përdoret në drejtuesin RadeonSI OpenGL.

Testimi nga Valve tregoi që ACO është pothuajse dy herë më shpejt se përpiluesi i ndërtimit shader AMDGPU dhe demonstron një rritje të FPS në disa lojëra kur funksionon në sisteme me drejtuesin RADV.

Drejtuesit AMD OpenGL dhe Vulkan aktualisht përdorin një përpilues hije që është pjesë e projektit LLVM në rrjedhën e sipërme. Ky projekt është i madh dhe ka shumë qëllime të ndryshme, dhe përpilimi në internet i hijezuesve të lojërave është vetëm një prej tyre. 

Kjo mund të çojë në shkëmbime zhvillimi, ku përmirësimi i funksionalitetit specifik të lojës është më i vështirë se sa do të ishte ndryshe, ose ku tiparet specifike të lojës shpesh prishen aksidentalisht nga zhvilluesit e LLVM që punojnë për gjëra të tjera.

Mbështetja e ACO synon të sigurojë që kodi të gjenerohet në mënyrën më optimale e mundur për hijeshuesit e aplikacioneve të lojës dhe për të arritur shpejtësi shumë të lartë të përpilimit.

ACO është shkruar në C ++, zhvilluar duke mbajtur parasysh zbatueshmërinë për përpilimin e EPH, dhe përdorni ato të shpejta për të përsëritur mbi strukturat e të dhënave, shmangia e strukturave të bazuara në tregues si listat e lidhura dhe vargjet nga përdorimi i def. Përfaqësimi i ndërmjetëm i kodit bazohet plotësisht në SSA (Alokimi i Vetëm Statik) dhe lejon caktimin e regjistrave, duke llogaritur saktësisht rekordin bazuar në shader.

Përfaqësimi i ndërmjetëm i kodit bazohet plotësisht në SSA (Alokimi i Vetëm Statik) dhe lejon caktimin e regjistrave, duke llogaritur saktësisht rekordin bazuar në shader.

Tani mbështeten vetëm pikselët (fragmente) dhe llogarit hijeshuesit në GPU diskrete AMD (dGPU VI +). Sidoqoftë, ACO tashmë mbledh në mënyrë korrekte hijezuesit për të gjitha lojërat e testuara, duke përfshirë hijezuesit komplekse nga Shadow of the Tomb Raider dhe Wolfenstein II.

Prototipi i propozuar ACO për provën është pothuajse dy herë më i shpejtë se përpiluesi i shader AMDGPU dhe demonstron një rritje të FPS në disa lojëra kur ekzekutohen në sisteme me kontrolluesin RADV.

Për të kuptuar pak më shumë në lidhje me rëndësinë e miratimit të kodit të Valve, është e rëndësishme të theksojmë që objektivi është garantimi i krijimit sa më optimal të kodit për hijeshuesit e aplikacioneve të lojërave, si dhe shpejtësi shumë të lartë të përpilimit.

Përpiluesi i hijeve i disponueshëm në Mesa përdor komponentët LLVM, që nuk lejojnë të arrihet shpejtësia e dëshiruar e përpilimit dhe nuk lejojnë kontroll të plotë të rrjedhës së kontrollit, i cili në të kaluarën tashmë ka shkaktuar gabime serioze.

Përveç kësaj, shmangia e LLVM bën të mundur zbatimin e një analize më agresive mospërputhjet dhe menaxhimi më i imët i ngarkesës së regjistrit, duke bërë të mundur krijimin më efikas të skedarit ekzekutues.

Së fundmi, është gjithashtu Importantshtë e rëndësishme të theksohet se për momentin ACO punon vetëm për kontrolluesin Mesa RADV Vulkan. Por zhvilluesit e ACO-së kanë konfirmuar që hapi i tyre i ardhshëm do të jetë të fillojnë të punojnë në zgjerimin e aftësive të ACO-së për të mbështetur drejtuesin OpenGL RadeonSI, në mënyrë që në të ardhmen dhe për këtë drejtues, ACO të mund të zëvendësojë përpiluesin e parazgjedhur të LLVM shader. .

Sa shumë ata që preferojnë të vazhdojnë me pjesën e prapme që është përdorur më parë nga përpiluesi LLVM shader, ata mund të kthehen tek ai, ata thjesht duhet të ndryshojnë një ndryshore.

Ndryshorja e mjedisit që është dhënë për të bërë këtë ndryshim është "RADV_DEBUG = llvm".


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   Të ndryshme dijo

    Dhe si zgjedh një përdorues me cilën backend të drejtojë një lojë? Çfarë skedarësh duhet të modifikojë?