Il driver Vulkan ora utilizza il backend di build ACO di Valve

Nella base del codice utilizzata per formare la versione Mesa 20.2, il driver RADV, Vulkan per chip AMD passato al backend predefinito per compilare shader »ACO«, sviluppato da Valve in alternativa al compilatore shader LLVM.

Questa modifica specifica è stato fatto con la fine di ottenere un aumento della produttività dei giochi e una riduzione del tempo di lancio.

La svolta dal controller RADV al nuovo backend è stato reso possibile dopo aver raggiunto la parità nella funzionalità ACO con il vecchio backend sviluppato da AMD per il driver AMDGPU, che continua ad essere utilizzato nel driver OpenGL RadeonSI.

I test di Valve hanno mostrato che ACO è quasi il doppio più veloce del compilatore di build shader AMDGPU e dimostra un aumento dell'FPS in alcuni giochi quando vengono eseguiti su sistemi con driver RADV.

I driver AMD OpenGL e Vulkan attualmente utilizzano un compilatore shader che fa parte del progetto upstream LLVM. Quel progetto è enorme e ha molti obiettivi diversi, e la compilazione online di shader di gioco è solo uno di questi. 

Ciò può portare a compromessi di sviluppo, in cui migliorare le funzionalità specifiche del gioco è più difficile di quanto non sarebbe altrimenti, o dove le funzionalità specifiche del gioco vengono spesso interrotte accidentalmente dagli sviluppatori LLVM che lavorano su altre cose.

Il backend di ACO mira a garantire che il codice sia generato nel modo più ottimale possibile per gli shader delle app di gioco e raggiungere una velocità di compilazione molto elevata.

ACO è scritto in C ++, sviluppato tenendo presente l'applicabilità per la compilazione JIT, e usa quelli veloci per iterare sulle strutture di dati, evitando che strutture basate su puntatori come liste collegate e stringhe utilizzino def. La rappresentazione intermedia del codice è completamente basata su SSA (Single Static Allocation) e consente l'allocazione dei record, calcolando con precisione il record in base allo shader.

La rappresentazione intermedia del codice è completamente basata su SSA (Single Static Allocation) e permette l'assegnazione dei record, calcolando con precisione il record in base allo shader.

Attualmente sono supportati solo i pixel (frammenti) e calcolare shader su GPU AMD discrete (dGPU VI +). Tuttavia, ACO raccoglie già correttamente gli shader per tutti i giochi testati, inclusi gli shader complessi di Shadow of the Tomb Raider e Wolfenstein II.

Il prototipo ACO proposto per il test è quasi due volte più veloce del compilatore shader AMDGPU e dimostra un aumento degli FPS in alcuni giochi quando eseguiti su sistemi con controller RADV.

Per capire un po 'di più sull'importanza dell'adozione del codice di Valve, è importante metterlo in primo piano l'obiettivo è garantire la generazione di codice più ottimale possibile per shader di app di gioco, nonché velocità di compilazione molto elevate.

Il compilatore shader disponibile in Mesa utilizza componenti LLVM, che non consentono di raggiungere la velocità di compilazione desiderata e non consentono il pieno controllo del flusso di controllo, che in passato ha già causato gravi errori.

Inoltre, evitando LLVM è possibile implementare un'analisi più aggressiva discrepanze e una migliore gestione del carico di registro, consentendo una generazione di file eseguibili più efficiente.

Infine, lo è anche È importante notare che al momento ACO funziona solo per il controller Mesa RADV Vulkan. Ma gli sviluppatori di ACO hanno confermato che il loro prossimo passo sarà iniziare a lavorare sull'espansione delle capacità di ACO per supportare il driver OpenGL RadeonSI, in modo che in futuro e per questo driver, ACO possa sostituire il compilatore shader LLVM predefinito.

Quanto coloro che preferiscono continuare con il backend utilizzato in precedenza dal compilatore shader LLVM, possono tornare ad esso, devono solo cambiare una variabile.

La variabile di ambiente fornita per apportare questa modifica è "RADV_DEBUG = llvm".


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Varia pesante suddetto

    E come fa un utente a scegliere con quale backend eseguire un gioco? Quali file deve modificare?