Vulkan-driveren bruger nu Valves ACO build-backend

I kodebasen, der bruges til at danne Mesa 20.2-versionen, RADV-driveren, Vulkan til AMD-chips skiftet til backend standard at kompilere shaders »ACO«, udviklet af Valve som et alternativ til LLVM shader-kompilatoren.

Denne specificerede ændring blev gjort med slutningen af ​​at opnå en stigning i produktiviteten af ​​spillene og en reduktion i lanceringstiden.

Forandringen fra RADV-controller til ny backend blev muliggjort efter at have opnået paritet i ACO-funktionalitet med den gamle AMD-udviklede backend til AMDGPU-driveren, som fortsat bruges i RadeonSI OpenGL-driveren.

Test af Valve viste, at ACO er næsten dobbelt så hurtig som AMDGPU shader build-kompilatoren og viser en stigning i FPS i nogle spil, når man kører på systemer med RADV-driveren.

AMD OpenGL- og Vulkan-driverne bruger i øjeblikket en shader-compiler, der er en del af LLVM-upstream-projektet. Dette projekt er enormt og har mange forskellige mål, og online-kompilering af game shaders er blot et af dem. 

Det kan føre til afvejninger i udviklingen, hvor forbedring af spil-specifik funktionalitet er vanskeligere, end det ellers ville være, eller hvor spil-specifikke funktioner ofte ved et uheld bliver brudt af LLVM-udviklere, der arbejder på andre ting.

Backend af ACO sigter mod at sikre, at koden genereres på den mest optimale måde muligt for game app shaders og opnå meget høj kompileringshastighed.

ACO det er skrevet i C ++, udviklet under hensyntagen til anvendeligheden til JIT-kompilering, og brug de hurtige til at gentage datastrukturer, undgå markørbaserede strukturer som sammenkædede lister og strenge fra at bruge def. Den mellemliggende repræsentation af koden er fuldstændig baseret på SSA (Single Static Allocation) og giver mulighed for tildeling af poster, nøjagtigt beregnet posten baseret på shader.

Den mellemliggende repræsentation af koden er fuldstændigt baseret på SSA (Single Static Allocation) og giver mulighed for tildeling af poster, nøjagtigt beregnet posten baseret på shader.

I øjeblikket understøttes kun pixels (fragmenter) og bereg shaders på diskrete AMD GPU'er (dGPU VI +). ACO samler imidlertid allerede korrekt shaders til alle testede spil, herunder komplekse shaders fra Shadow of the Tomb Raider og Wolfenstein II.

Den foreslåede ACO-prototype til testen det er næsten dobbelt så hurtigt som AMDGPU shader-compileren og viser en stigning i FPS i nogle spil, når de køres på systemer med RADV-controlleren.

For at forstå lidt mere om relevansen af ​​at vedtage Valves kode er det vigtigt at sætte den i forgrunden Målet er at garantere den mest optimale kodegenerering muligt til spilapp-shaders såvel som meget høj kompileringshastighed.

Shader-compileren tilgængelig i Mesa bruger LLVM-komponenter, De tillader ikke at opnå den ønskede kompileringshastighed og tillader ikke fuld kontrol af kontrolflowet, hvilket tidligere har allerede forårsaget alvorlige fejl.

Derudover undgåelse af LLVM gør det muligt at implementere en mere aggressiv analyse uoverensstemmelser og finere log-belastningsstyring, hvilket muliggør mere effektiv eksekverbar filgenerering.

Endelig er det også Det er vigtigt at bemærke, at ACO i øjeblikket kun fungerer for Mesa RADV Vulkan-controlleren. Men ACO-udviklerne har bekræftet, at deres næste skridt vil være at begynde at arbejde på at udvide ACOs muligheder for at understøtte OpenGL RadeonSI-driveren, så ACO i fremtiden og for denne driver kan erstatte standard LLVM-skyggecompileren.

Hvor meget dem, der foretrækker at fortsætte med den backend, der tidligere blev brugt fra LLVM shader-kompilatoren kan de gå tilbage til det, de skal bare ændre en variabel.

Den miljøvariabel, der leveres til at foretage denne ændring, er "RADV_DEBUG = llvm".


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Varierende tung sagde han

    Og hvordan vælger en bruger, hvilken backend de vil køre et spil med? Hvilke filer skal den ændre?