AMD Radeon RX 5600 XT unter openSUSE mit Mesa 20 und aktuellem Kernel betreiben
Ich habe mir vor kurzem ein neues Gaming PC Setup zusammengestellt, welches unter anderem die Grafikkarte AMD Radeon RX 5600 XT beinhaltet. Da diese erst vor ein paar Wochen erschienen ist, ist die Unterstützung unter Linux nur mit den neuesten Systemkomponenten möglich. Diese beinhalten:
Komponenten für eine optimale Unterstützung
- aktueller Linux Kernel mit Kernel Modul amdgpu
- aktuelles Mesa 20.0.0+
- aktuelles libdrm aus dem aktuellsten git Stand kompiliert (gültig bis eine neuere Version als 2.4.100 erscheint)
Details
Mesa selbst
Das zusammenspiel aller Komponenten herauszufinden war gar nicht so einfach. Ich selbst nutze ja openSUSE (aktuell 15.1). Den Kernel konnte ich einfach über das Zusatzrepository Kernel:Stable aktualisieren. Um Mesa musste ich mich leider komplett selbst kümmern, da es zum initialen Zeitpunkt nur einen Release Candidate gab. Gesagt getan. Beim Paketbau der neuen Version bin ich über ein paar selbstverschuldete Fehler gestoßen, die ich nicht weiter erläutern möchte. Allerdings gibt es ein paar Dinge zu beachten. Ich habe die Pakete aktualisiert und alle direkten Abhängigkeiten. Mein erster Fehler, der mich leider wesentlich mehr Zeit gekostet hat als erwartet, war die fehlende Aktualisierung von der Komponente libgbm. Diese gehört zur Mesa, hat aber an sich keine direkte Abhängigkeit. Bevor ich diese aktualisiert hatte, startete der XServer nicht, da libGLX_mesa.so den Fehler undefined symbol: gbm_format_get_name zurückgegeben hatte. Erster Fehler beseitigt.
libdrm
Der zweite Fehler war weitaus kniffliger zu identifizieren. Die Bibliothek /usr/lib64/libdrm_amdgpu.so.1 war zu alt, und hat meine Grafikkarte nicht identifizieren können, da die Vendor ID noch nicht hinterlegt war. Dies hat sich darin geäußert, dass der XServer DRI (Direct Rendering Interface), 3D und 2D Beschleunigung abgeschalten hat, und demnach u.A. kein openGL und Vulkan auf dem System möglich war. Aufgefallen ist mir das durch den Aufruf des Programs glxinfo, welches aber eine sehr missverständliche Fehlermeldung ausgab.
Dadurch habe ich einen anderen Fehler vermutet, dass er swrast nicht laden konnte. Was ich nicht wusste ist, dass swrast der Software Renderer ist, welcher nur zum Einsatz kommt, wenn keine Hardware für Hardwarebeschleunigung zur Verfügung steht. Die swrast Bibliotheken unter /usr/lib64/dri/ waren nämlich vorhanden. Den Tip bzgl. Software Rendering hat mir ein netter Helfer aus der IRC Community um Mesa gegeben. Darüber und zusätzlich ein wenig auf der Suchmaschine der Wahl suchen, brachte mich auf das Ergebnis, dass es ggf. an libdrm liegen könnte. Dieser git Commit im Gitlab Projekt hat mich dann auch stutzig gemacht. Leider wurde seit vier Monaten keine neue Version mehr veröffentlicht, daher musste ich den aktuellen git Stand kompilieren. Am Kompilierprozess hat sich nichts geändert, weswegen das bauen eines aktualisierten RPMS kein Problem war. Nach dem Update des Pakets libdrm_amdgpu1 funktionierte dann das Testprogramm glxinfo auch wieder und meine Grafikkarte ist einsatzbereitt.
Das fertige Repository findet man hier
Hinzufügen kann man es mit den folgenden Befehlen:
openSUSE Leap 15.1
openSUSE Leap 15.2
openSUSE Tumbleweed
Anschließend kann man mit folgenden Befehlen Mesa und alle relevanten Komponenten aktualisieren
Bei Fragen zur Abhängigkeitsauflösung wechselt man den Vendor natürlich auf home_seilerphilipp_mesa.
Bei Bedarf aktualisiert man die gleichen Pakete mit -32bit Suffix.