Der Vulkan-Treiber verwendet jetzt das ACO-Build-Backend von Valve

In der Codebasis, die zur Bildung der Mesa 20.2-Version verwendet wurde, der RADV-Treiber, Vulkan für AMD-Chips auf Backend umgestellt Standardmäßig zu kompilieren Shader »ACO«, entwickelt von Valve als Alternative zum LLVM-Shader-Compiler.

Diese angegebene Änderung wurde mit dem Ende einer Steigerung der Produktivität der Spiele getan und eine Verkürzung der Startzeit.

Ändern Sie vom RADV-Controller zum neuen Backend war nach Erreichen der Parität in der ACO-Funktionalität mit dem alten AMD-Backend möglich für den AMDGPU-Treiber, der weiterhin im RadeonSI OpenGL-Treiber verwendet wird.

Tests von Valve haben gezeigt, dass ACO fast doppelt so schnell ist wie der AMDGPU-Shader-Build-Compiler und in einigen Spielen einen Anstieg der FPS zeigt, wenn es auf Systemen mit dem RADV-Treiber ausgeführt wird.

Die AMD OpenGL- und Vulkan-Treiber verwenden derzeit einen Shader-Compiler, der Teil des LLVM-Upstream-Projekts ist. Dieses Projekt ist riesig und hat viele verschiedene Ziele, und die Online-Zusammenstellung von Game-Shadern ist nur eines davon. 

Dies kann zu Kompromissen bei der Entwicklung führen, bei denen die Verbesserung der spielspezifischen Funktionalität schwieriger ist als sonst oder bei denen spielspezifische Funktionen häufig versehentlich von LLVM-Entwicklern unterbrochen werden, die an anderen Dingen arbeiten.

Das Backend von ACO möchte sicherstellen, dass der Code optimal generiert wird möglich für Game App Shader und erreichen eine sehr hohe Kompilierungsgeschwindigkeit.

ACO es ist in C ++ geschrieben, entwickelt unter Berücksichtigung der Anwendbarkeit für die JIT-Kompilierung, und verwenden Sie die schnellen, um über Datenstrukturen zu iterieren, Vermeiden, dass zeigerbasierte Strukturen wie verknüpfte Listen und Zeichenfolgen def verwenden. Die Zwischendarstellung des Codes basiert vollständig auf SSA (Single Static Allocation) und ermöglicht die Zuordnung von Datensätzen, wobei der Datensatz basierend auf dem Shader genau berechnet wird.

Die Zwischendarstellung des Codes basiert vollständig auf SSA (Single Static Allocation) und ermöglicht die Zuordnung von Datensätzen, wobei der Datensatz basierend auf dem Shader genau berechnet wird.

Derzeit werden nur Pixel unterstützt (Fragmente) und Berechnen von Shadern auf diskreten AMD-GPUs (dGPU VI +). ACO sammelt jedoch bereits korrekt Shader für alle getesteten Spiele, einschließlich komplexer Shader von Shadow of the Tomb Raider und Wolfenstein II.

Der vorgeschlagene ACO-Prototyp für den Test Es ist fast doppelt so schnell wie der AMDGPU-Shader-Compiler und zeigt eine Erhöhung der FPS in einigen Spielen, wenn sie auf Systemen mit dem RADV-Controller ausgeführt werden.

Um ein wenig mehr über die Relevanz der Übernahme des Valve-Codes zu verstehen, ist es wichtig, dies in den Vordergrund zu stellen Ziel ist es, eine möglichst optimale Codegenerierung zu gewährleisten für Game App Shader sowie sehr hohe Kompilierungsgeschwindigkeit.

Der in Mesa verfügbare Shader-Compiler verwendet LLVM-Komponenten. Dies ermöglicht nicht das Erreichen der gewünschten Kompilierungsgeschwindigkeit und ermöglicht nicht die vollständige Kontrolle des Kontrollflusses, was in der Vergangenheit bereits zu schwerwiegenden Fehlern geführt hat.

Zusätzlich Durch die Vermeidung von LLVM kann eine aggressivere Analyse durchgeführt werden Diskrepanzen und eine feinere Protokolllastverwaltung ermöglichen eine effizientere Generierung ausführbarer Dateien.

Endlich ist es auch so Es ist wichtig zu beachten, dass ACO derzeit nur für den Mesa RADV Vulkan Controller funktioniert. Die ACO-Entwickler haben jedoch bestätigt, dass ihr nächster Schritt darin bestehen wird, die Funktionen von ACO zur Unterstützung des OpenGL RadeonSI-Treibers zu erweitern, damit ACO in Zukunft und für diesen Treiber den Standard-LLVM-Shader-Compiler ersetzen kann.

Wie viel diejenigen, die es vorziehen, mit dem zuvor verwendeten Backend fortzufahren Vom LLVM-Shader-Compiler können sie darauf zurückgreifen. Sie müssen lediglich eine Variable ändern.

Die Umgebungsvariable, die bereitgestellt wird, um diese Änderung vorzunehmen, ist "RADV_DEBUG = llvm".


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   VariierenHeavy sagte

    Und wie wählt ein Benutzer das Backend aus, mit dem er ein Spiel ausführen möchte? Welche Dateien muss geändert werden?