Vulkan-drivrutinen använder nu Valves ACO-byggbackend

I kodbasen som används för att bilda Mesa 20.2-versionen, RADV-föraren, Vulkan för AMD-chips bytte till backend standard att kompilera shaders »ACO«, utvecklat av Valve som ett alternativ till LLVM-skuggkompilatorn.

Denna specificerade ändring gjordes i slutet av att öka produktiviteten för spelen och en minskning av lanseringstiden.

Ändringen från RADV-styrenheten till den nya backenden var möjligt efter att ha uppnått paritet i ACO-funktionalitet med den gamla AMD-utvecklade backend för AMDGPU-drivrutinen, som fortsätter att användas i RadeonSI OpenGL-drivrutinen.

Test av Valve visade att ACO är nästan dubbelt så snabbt som AMDGPU-shader-byggkompilatorn och visar en ökning av FPS i vissa spel när man kör på system med RADV-drivrutinen.

AMD OpenGL- och Vulkan-drivrutinerna använder för närvarande en skuggkompilator som ingår i LLVM-uppströmsprojektet. Det projektet är enormt och har många olika mål, och online-sammanställningen av spelskuggare är bara ett av dem. 

Det kan leda till utvecklingsavvägningar, där det är svårare att förbättra spelspecifik funktionalitet än annars, eller där spelspecifika funktioner ofta av misstag bryts av LLVM-utvecklare som arbetar med andra saker.

Backend av ACO syftar till att säkerställa att koden genereras på det mest optimala sättet möjligt för spelappskuggare och uppnår mycket hög sammanställningshastighet.

ACO det är skrivet i C ++, utvecklat med tanke på användbarheten för JIT-sammanställning, och använda de snabba för att itera över datastrukturer, undvika pekarbaserade strukturer som länkade listor och strängar från att använda def. Mellanrepresentationen av koden är helt baserad på SSA (Single Static Allocation) och möjliggör tilldelning av poster, exakt beräkning av posten baserat på skuggningen.

Mellanrepresentationen av koden är helt baserad på SSA (Single Static Allocation) och möjliggör tilldelning av poster, exakt beräkning av posten baserat på skuggningen.

För närvarande stöds endast pixlar (fragment) och beräkna shaders på diskreta AMD-grafikprocessorer (dGPU VI +). ACO samlar emellertid redan korrekt shaders för alla testade spel, inklusive komplexa shaders från Shadow of the Tomb Raider och Wolfenstein II.

Den föreslagna ACO-prototypen för provet det är nästan dubbelt så snabbt som AMDGPU-skuggkompilatorn och visar en ökning av FPS i vissa spel när de körs på system med RADV-styrenheten.

För att förstå lite mer om relevansen av att anta Valves kod är det viktigt att förgrunda det Målet är att garantera en så optimal kodgenerering som möjligt för spelappskuggare samt mycket hög sammanställningshastighet.

Shader-kompilatorn som finns i Mesa använder LLVM-komponenter, som inte tillåter att uppnå önskad sammanställningshastighet och inte tillåter full kontroll av kontrollflödet, vilket tidigare har orsakat allvarliga fel.

Dessutom, undvikande av LLVM gör det möjligt att genomföra en mer aggressiv analys avvikelser och finare logghantering, vilket möjliggör effektivare generering av körbar fil.

Slutligen är det också Det är viktigt att notera att ACO just nu fungerar för Mesa RADV Vulkan-styrenheten. Men ACO-utvecklarna har bekräftat att deras nästa steg kommer att vara att börja arbeta med att utöka ACO: s funktioner för att stödja OpenGL RadeonSI-drivrutinen, så att ACO i framtiden och för den här drivrutinen kan ersätta standard LLVM-skuggkompilatorn.

Hur mycket de som föredrar att fortsätta med den backend som användes tidigare från LLVM-skuggkompilatorn kan de gå tillbaka till det, de måste bara ändra en variabel.

Miljövariabeln som tillhandahålls för att göra denna förändring är "RADV_DEBUG = llvm".


Innehållet i artikeln följer våra principer om redaktionell etik. Klicka på för att rapportera ett fel här.

En kommentar, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras.

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Varierande Heavy sade

    Och hur väljer en användare vilken backend man vill köra ett spel med? Vilka filer har den att ändra?