El controlador Vulkan ara fa servir el backend de compilació ACO de Valve

A la base de codi utilitzada per formar la versió Taula 20.2, el controlador RADV, Vulkan per xips AMD es va canviar a l'backend predeterminat per compilar ombrejadors »ACO«, desenvolupat per Valve com una alternativa a l'compilador de ombrejadors LLVM.

Aquest canvi especificat es va realitzar amb la finalitzar d'obtenir un augment en la productivitat dels jocs i una reducció en el seu temps de llançament.

el canvi de el controlador RADV a el nou backend va ser possible després d'assolir la paritat en la funcionalitat de l'ACO amb l'antic backend desenvolupat per AMD per al controlador AMDGPU, que continua utilitzant-se en el controlador RadeonSI OpenGL.

Les proves realitzades per Valve van mostrar que l'ACO és gairebé el doble de ràpid que el compilador de compilació de ombrejadors AMDGPU i demostra un augment en FPS en alguns jocs quan s'executa en sistemes amb el controlador RADV.

Els controladors AMD OpenGL i Vulkan actualment fan servir un compilador de ombrejadors que és part de el projecte ascendent LLVM. Aquest projecte és enorme i té molts objectius diferents, i la compilació en línia de ombrejadors de jocs només és un d'ells. 

Això pot donar lloc a compensacions de desenvolupament, on millorar la funcionalitat específica d'el joc és més difícil del que seria d'una altra manera, o on les característiques específiques de el joc sovint es trenquen accidentalment pels desenvolupadors de LLVM que treballen en altres coses.

El backend de ACO té com a objectiu garantir que el codi es generi de la manera més òptima possible per als ombrejadors d'aplicacions de jocs i aconseguir una velocitat de compilació molt alta.

ACO està escrit en C ++, desenvolupat tenint en compte l'aplicabilitat per a la compilació JIT, i utilitza els ràpids per iterar sobre estructures de dades, evitant estructures basades en punters com llistes vinculades i cadenes d'ús de def. La representació intermèdia de el codi es basa completament en SSA (Assignació estàtica individual) i permet l'assignació de registres, calculant amb precisió el registre en funció de l'ombreig.

La representació intermèdia de el codi es basa completament en SSA (Assignació estàtica individual) i permet l'assignació de registres, calculant amb precisió el registre en funció de l'ombreig.

Actualment, només s'admeten píxels (Fragments) i ombrejadors informàtics en GPU AMD discretes (DGPU VI +). No obstant això, l'ACO ja recull correctament els ombrejadors per a tots els jocs provats, inclosos els ombrejadors complexos de Shadow of the Tomb Raider i Wolfenstein II.

El prototip de l'ACO proposat per a la prova és gairebé el doble de ràpid que el compilador d'ombrejat AMDGPU i demostra un augment en FPS en alguns jocs quan s'executen en sistemes amb el controlador RADV.

Per entendre una mica més sobre la rellevància que té el adoptar el codi de Valve és important posar sobre primer pla que es té com a objectiu garantir la generació de codi el més òptim possible per als ombrejadors d'aplicacions de jocs, així com per aconseguir una velocitat de compilació molt alta.

El compilador de ombrejadors disponible a Taula utilitza components LLVM, que no permeten arribar a la velocitat de compilació desitjada i no permeten el control total de l'flux de control, que en el passat ja ha causat seriosos errors.

A més, evitar LLVM fa possible implementar una anàlisi més agressiu de discrepàncies i administrar més finament la càrrega en els registres, el que permet la generació d'arxius executables més eficients.

Finalment, també és important tenir en compte que de moment ACO funciona només per al controlador Taula RADV Vulkan. Però els desenvolupadors de l'ACO han confirmat que la següent passa serà començar a treballar en l'expansió de les capacitats de l'ACO per admetre el controlador OpenGL RadeonSI, de manera que en el futur i per a aquest controlador, ACO pugui reemplaçar el compilador de ombreig LLVM predeterminat .

I pel que fa als que prefereixen continuar amb el backend que s'utilitzava anteriorment de l'compilador de ombreig LLVM, poden tornar-hi, només que han de canviar una variable.

La variable d'entorn que es proporciona per fer aquest canvi és «RADV_DEBUG = LLVM».


El contingut d'l'article s'adhereix als nostres principis de ètica editorial. Per notificar un error punxa aquí.

Un comentari, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà.

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   VaryHeavy va dir

    I com fa un usuari per triar amb quina backend s'executa un joc? ¿Quins fitxers ha de modificar?