Driverul Vulkan folosește acum backend-ul de construcție ACO al lui Valve

În baza de cod utilizată pentru a forma versiunea Mesa 20.2, driverul RADV, Vulkan pentru cipuri AMD a trecut la backend implicit pentru a compila umbrere »ACO«, dezvoltat de Valve ca alternativă la compilatorul de shader-uri LLVM.

Această modificare specificată s-a făcut odată cu obținerea unei creșteri a productivității jocurilor și o reducere a timpului său de lansare.

Schimbarea de la controlerul RADV la noul backend a fost posibilă după atingerea parității în funcționalitatea ACO cu vechiul backend dezvoltat de AMD pentru driverul AMDGPU, care continuă să fie utilizat în driverul RadeonSI OpenGL.

Testarea efectuată de Valve a arătat că ACO este aproape de două ori mai rapidă decât compilatorul de construcție a shader-ului AMDGPU și demonstrează o creștere a FPS în unele jocuri atunci când rulează pe sisteme cu driverul RADV.

Driverele AMD OpenGL și Vulkan folosesc în prezent un compilator shader care face parte din proiectul LLVM upstream. Acest proiect este imens și are o mulțime de obiective diferite, iar compilarea online a jocurilor de umbrire este doar unul dintre ele. 

Acest lucru poate duce la compromisuri de dezvoltare, în care îmbunătățirea funcționalității specifice jocului este mai dificilă decât ar fi altfel sau în care caracteristicile specifice jocului sunt adesea rupte accidental de către dezvoltatorii LLVM care lucrează la alte lucruri.

Backend-ul ACO își propune să se asigure că codul este generat în cel mai optim mod este posibil pentru umbrele aplicațiilor de joc și atinge o viteză de compilare foarte mare.

ACO este scris în C ++, dezvoltat ținând cont de aplicabilitatea pentru compilarea JIT, și utilizați cele rapide pentru a itera asupra structurilor de date, evitând ca structurile bazate pe pointer, cum ar fi listele și șirurile legate, să folosească def. Reprezentarea intermediară a codului se bazează complet pe SSA (Single Static Allocation) și permite alocarea înregistrărilor, calculând cu exactitate înregistrarea pe baza shader-ului.

Reprezentarea intermediară a codului se bazează complet pe SSA (Single Static Allocation) și permite alocarea înregistrărilor, calculând cu exactitate înregistrarea pe baza shader-ului.

În prezent sunt acceptate doar pixeli (fragmente) și calculați umbrele pe GPU-uri AMD discrete (dGPU VI +). Cu toate acestea, ACO colectează deja corect umbrele pentru toate jocurile testate, inclusiv umbrele complexe din Shadow of the Tomb Raider și Wolfenstein II.

Prototipul ACO propus pentru test este aproape de două ori mai rapid decât compilatorul AMDGPU shader și demonstrează o creștere a FPS în unele jocuri atunci când rulează pe sisteme cu controlerul RADV.

Pentru a înțelege un pic mai mult despre relevanța adoptării codului Valve, este important să preconizăm acest lucru obiectivul este de a garanta cea mai optimă generare de cod posibilă pentru umbrele aplicațiilor de joc, precum și viteza de compilare foarte mare.

Compilatorul shader disponibil în Mesa folosește componente LLVM, care nu permit atingerea vitezei de compilare dorite și nu permit controlul deplin al fluxului de control, care în trecut a provocat deja erori grave.

În plus, evitarea LLVM face posibilă implementarea unei analize mai agresive discrepanțe și gestionarea mai bună a încărcării jurnalului, permițând generarea mai eficientă a fișierelor executabile.

În cele din urmă, este, de asemenea Este important de reținut că în acest moment ACO funcționează numai pentru controlerul Mesa RADV Vulkan. Dar dezvoltatorii ACO au confirmat că următorul lor pas va fi să înceapă să lucreze la extinderea capabilităților ACO pentru a susține driverul OpenGL RadeonSI, astfel încât în ​​viitor și pentru acest driver, ACO să poată înlocui compilatorul implicit de shaver LLVM.

Cât costă cei care preferă să continue cu backend-ul care a fost folosit anterior de la compilatorul LLVM shader, pot reveni la el, trebuie doar să schimbe o variabilă.

Variabila de mediu care este furnizată pentru a face această modificare este „RADV_DEBUG = llvm”.


Un comentariu, lasă-l pe al tău

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Varyheavy el a spus

    Și cum alege un utilizator cu ce backend să ruleze un joc? Ce fișiere trebuie să modifice?