Nella base di codice utilizzata per la generazione della versione Mesa 20.2, il passaggio del driver Vulkan RADV per chip AMD all'uso predefinito del backend per la compilazione degli shader "ACO",sviluppato da Valve come alternativa al compilatore di shader LLVM. Questa modifica porterà a un incremento delle prestazioni nei giochi e a una riduzione dei tempi di avvio. Per ripristinare il vecchio backend è disponibile la variabile d'ambiente "RADV_DEBUG=llvm".
Il passaggio del driver RADV al nuovo backend è stato possibile dopo che l'ACO ha raggiunto la parità funzionale con il vecchio backend sviluppato da AMD per il driver AMDGPU, che continua ad essere utilizzato nel driver OpenGL RadeonSI. I test effettuati da Valve , dimostrano che l'ACO è quasi due volte più veloce del compilatore di shader AMDGPU in termini di velocità di compilazione e mostra un aumento del FPS in alcuni giochi quando vengono eseguiti su sistemi con il driver RADV.
Il backend ACO è progettato per garantire la generazione di codice ottimale possibile per gli shader delle applicazioni di gioco, nonché per raggiungere una velocità di compilazione molto elevata. L'ACO è scritto in C++ ed è sviluppato tenendo conto della possibilità di utilizzo per la compilazione JIT, impiegando strutture dati veloci per la scansione, evitando strutture basate su puntatori. La rappresentazione intermedia del codice si basa completamente su SSA (Static Single Assignment) e consente la distribuzione dei registri, calcolando precisamente il registro in base allo shader.
Nota: Attualmente l'ACO funziona solo per il driver Vulkan Mesa RADV. Tuttavia, gli sviluppatori di ACO , affermano che il loro prossimo passo sarà iniziare a lavorare sull'estensione delle funzionalità dell'ACO per garantire il supporto per il driver OpenGL RadeonSI, in modo che in futuro l'ACO possa sostituire il compilatore di shader LLVM come default anche per questo driver.
Fonte: opennet.ru
