bpasinski.de

Vulkan unter Linux – radeon & amdgpu mit Hybridgrafik

Gepostet am 14. September 2019 in Anleitung, GPU, Linux, Vulkan

Die Einrichtung von Vulkan unter Linux kann auf manchen Systemen mit Hybridgrafik etwas Konfigurationsaufwand bedeuten. Es folgt eine kleine Anleitung für alle, die auf die selben Probleme wie ich bei der Einrichtung von Vulkan stoßen. Als Distribution verwende ich Xubuntu 18.04.3.

Disclaimer

Die hier beschriebenen Schritte stellen einen tiefgreifenden Eingriff in die Systemkonfiguration dar, die ein System im nicht mehr bootfähigen Zustand zurücklassen können. Es kann sein, dass diese Schritte nur auf bestimmer Hardware zu einem brauchbaren Ergebnis führen.

Die Ausgangssitutation

Seit 2013 besitze ich einen MSI GX60 1AC Gaming Laptop mit Hybridgrafik (AMD A10-4600M mit integrierter Radeon HD 7660G und eine dedizierte Radeon HD 7970M), welchen ich ein paar Jahre problemlos mit Windows nutzen konnte. Da die Treibersituation allerdings schon ab 2016 schlechter wurde, habe ich mich entschlossen dieses Gerät auf Linux zu migrieren. Der konkrete Grund liegt beim Treiberinstaller: Sobald die ältere Grafikeinheit, die nicht mehr unterstützt wird, erkannt wird, bricht die Installation ab und hinterlässt ein System ohne jegliche Grafikbeschleunigung. In Verbindung mit automatischen Treiberaktualisierungen via Windows Update war dies eine ziemlich nervige Situation.

Unter Linux lief das Gerät ohne Konfigurationsaufwand wieder einwandfrei. Beide Grafikeinheiten werden erkannt, die Beschleunigung mit OpenGL 4 funktioniert und mit der Umgebungsvariable DRI_PRIME kann zwischen den Grafikeinheiten gewechselt werden.

Dort kam für beide Grafikeinheiten der radeon-Treiber zum Einsatz. Allerdings unterstützte der Treiber nur OpenGL als Grafik-API.

Die Einführung der Wine-Distribution Proton bei Steam brachte mit DXVK mir erstmals ein Grund, Vulkan zu nutzen.

Schritt 1 – Bootparameter einrichten

Um Vulkan nutzen zu können, muss der Linux-Kernel angewiesen werden, die richtigen Treiber zu laden. Dazu muss in der Datei /etc/default/grub die Zeile GRUB_CMDLINE_LINUX_DEFAULT ergänzt werden:

...
GRUB_CMDLINE_LINUX="quiet splash radeon.cik_support=0 amdgpu.cik_support=1 radeon.si_support=0 amdgpu.si_support=1"
...

Damit die Änderungen angewendet werden, muss noch folgendes ausgeführt werden:

$ sudo update-grub

Schritt 2 (optional) – X-Server konfigurieren

Unter Umständen ist eine Anpassung der Konfiguration des X-Servers notwendig. Bei mir war dies der Fall, da der X-Server mit zwei aktiven Grafiktreibern nicht zurecht kam und einfach nicht mehr startete.

In dem Verzeichnis /usr/share/X11/xorg.conf.d befinden sich die Dateien 10-amdgpu.conf und 10-radeon.conf. Diese Dateien müssen entfernt und durch eine neue Datei mit dem Namen 10-gpu.conf ersetzt werden. Die neue Datei muss dabei folgenden Inhalt bekommen:

Section "OutputClass"
	Identifier "AMD"
	Driver "modesetting"
	Option "DRI3"
EndSection

Schritt 3 – Neu starten

Das System muss einmal neu gestartet werden, um die Kernelparameter zu übernehmen.

Schritt 4 – Libraries installieren

Mit den Befehlen

$ sudo apt-get update
$ sudo apt-get install mesa-vulkan-drivers libvulkan1 vulkan-utils

werden die benötigten Libraries und ein paar optionale Tools installiert. Wenn nach der Installation das Tool „vulkaninfo“ keinen Fehler ausgibt, ist die Installation von Vulkan abgeschlossen.

Das Tool vulkaninfo gibt keine nennenswerten Fehler aus.

Schritt 4.1 – 32-Bit-Unterstützung

Damit auch 32-Bit-Anwendungen unterstützt werden, müssen noch 32-Bit-Versionen der Libraries installiert werden:

$ sudo apt-get install mesa-vulkan-drivers:i386 libvulkan1:i386

Danach können auch die 32-Bit-Anwendungen Vulkan nutzen.

Schritt 5 – Der Test

Im Paket vulkan-utils befindet sich das Tool vulkan-smoketest, welches dem Programm glxgears für OpenGL entspricht.

Wenn die Ausgabe der obigen entspricht, funktioniert Vulkan nun auf dem System.