Mesa 17.1 steigert 3D-Performance von Linux

Viele Spiele laufen mit dem neuen Mesa schneller und flüssiger. Davon profitiert insbesondere die Radeon-GPUs.

In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen
Mesa 17.1: Neue Grafiktreibersammlung steigert 3D-Performance von Linux
Lesezeit: 7 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Das jetzt erhältliche Mesa 17.1 und die darin enthaltenen Grafiktreiber warten mit einer langen Reihe von Verbesserungen auf, um die 3D-Performance moderner Linux-Systeme zu steigern. Die neue Version der Grafikbibliothek und Treibersammlung bringt zudem Support für eine neue Generation von Grafikprozessoren von AMD. Diese und andere Verbesserungen werden unter anderem die Spieletauglichkeit von Linux-Distributionen wie Fedora, OpenSuse und Ubuntu steigern; schließlich richten diese standardmäßig die 3D-Treiber von Mesa ein.

Eine der Verbesserungen zum Steigern der Grafikleistung ist der "OpenGL Threaded Dispatch". Bei ihm werden die von Programmen abgesetzten OpenGL-Befehle nicht direkt im Programmkontext abgearbeitet, sondern an einen eigenen Thread überstellt; die OpenGL-Verarbeitung kann so auf anderen Prozessorkernen laufen, was die Last auf Mehrkernsystemen besser verteilt. In manchen Spielen bringt das kaum etwas, in einigen aber sehr viel: Bei Borderlands 2 soll die Bildrate in einigen Szenen um bis zu 70 Prozent steigen.

Man muss die Technik allerdings durch Setzen der Umgebungsvariable mesa_glthread=true explizit aktivieren, denn in einzelnen Programmen bereitet sie Schwierigkeiten. Das ist bei Nvidias proprietärem Grafiktreiber nicht anders: Er beherrscht mit den "Threaded Optimizations" einen ähnlichen Ansatz, den man allerdings über andere Umgebungsvariablen aktiviert.

Einen flüssigeren Spielverlauf verspricht der neue Binary Shader Cache des Treibers Radeonsi, der in den letzten Jahren gefertigte AMD-GPUs unterstützt. Diese Cache-Funktion speichert Shader-Programme nach dem ersten Kompilieren im System. Beim nächsten Einsatz der für Grafikeffekte genutzten Shader braucht der Treiber sie lediglich zu laden. Bei komplexeren Shadern gelingt das viel schneller als ein erneutes Kompilieren. Die proprietären Linux- und Windows-Treiber von AMD und Nvidia nutzen diesen Trick deshalb schon seit vielen Jahren. Einzelne Spiele laufen dadurch um einiges schneller; in vielen vermeidet der Ansatz zudem Ruckler, die bislang häufiger bei Szenenwechseln auftraten.

Bei einem Kurztest mit Mesa 17.1 und einer R9 290 lief der Superposition Benchmark flüssiger und schneller.

Die Vorteile dieser beiden Verbesserungen sind nicht nur messbar, sondern auch spürbar: In Kurztests liefen einige Spiele mit einer Radeon R9 290 deutlich flüssiger und erreichten zugleich höhere Bildraten. Das ist aber nicht nur den beiden neuen Techniken zu verdanken, sondern auch einigen anderen Performance-Verbesserungen am Treiber Radeonsi. Dieser wird maßgeblich von AMD-Mitarbeitern vorangetrieben – aber auch Valve hat einige Optimierungen beigesteuert.

Mitarbeiter von AMD und Intel haben ihre Treiber zudem um Unterstützung für einige optionale OpenGL-Befehle erweitert. Auf dem Grafikkern von Core-i-3000er-Prozessoren laufen jetzt deutlich mehr Spiele: Bei diesen und anderen Ivy-Bridge-CPUs beherrscht der Treiber nicht mehr nur OpenGL 3.3, sondern jetzt OpenGL 4.2.

Größere Fortschritte gab es auch bei den beiden in Mesa enthaltenen Vulkan-Treibern, die die modernen GPUs von AMD und Intel unterstützen. Dadurch implementieren die beiden jetzt einige der Funktionen, die Version 1.0.42 der Grafik-Programmierschnittstelle spezifiziert hat. Der Intel-Treiber "Anv" unterstützt jetzt Multisample Anti-Aliasing (MSAA). Der unabhängig von AMD entstandene Radeon-Treiber "Radv" beherrscht jetzt Tessellation Shader und Geometry Shader. Ferner gab es eine Reihe von Detailverbesserungen, durch die Radv mehr 3D-Leistung locker macht und zugleich auch die Vulkan-Spezifikation besser umsetzt, sodass die Validierungsprogramme nichts mehr zu meckern haben sollten.

Der Radeonsi-Treiber des neuen Mesa unterstützt zudem AMDs Grafikprozessoren der neuen "Vega"-Architektur. Linux-Distributionen werden dadurch mittelfristig neue High-End-Grafikkarten der Radeon-RX-Serie unterstützen, die AMD noch im ersten Halbjahr einführen wird. Vorerst kommt man mit dem neuen Treiber aber nicht sonderlich weit, denn bei Mesa 17.1 beherrscht Radeonsi auf Vega-GPUs lediglich OpenGL 3.1 – zu wenig für viele moderne Games. Besserung ist aber bereits in Sicht: Das in zirka drei bis vier Monaten erwartete Mesa 17.2 wird OpenGL 4.5 auf Vega unterstützen, denn entsprechende Verbesserungen haben AMDs Mitarbeiter bereits in den Hauptentwicklungszweig von Mesa eingebracht.

Letztlich ist aber noch einiges mehr nötig, bis Linux-Distributionen die 3D-Beschleunigung von Vega-GPUs vollautomatisch bereitstellen, wie es bei nahezu allen aktuellen Radeon-Karten der Fall ist. Denn auch das Backend "Amdgpu" von LLVM muss Vega-GPUs unterstützten, denn auf das greift Radeonsi bei der Arbeit an vielen Stellen zurück. Bislang findet sich entsprechender Code allerdings nur im Entwicklungszweig von LLVM, aus dem im Spätsommer LLVM 5.0 hervorgehen dürfte.

Ferner baut Radeonsi auf dem im Kernel angesiedelten Grafiktreiber auf, der ebenfalls "Amdgpu" heißt. Der wird Vega aber erst ab Linux 4.12 unterstützen, das Anfang Juli erscheinen dürfte. Dort wird der Treiber aber noch keine Bildausgabe ermöglichen, weil es einige Unstimmigkeiten zwischen AMD- und Kernel-Entwicklern gab, die größere Umbauten am Treibercode erforderlich machten. Diese Anpassungen sind im Gange; derzeit sieht es eher nicht danach aus, dass diese schon rechtzeitig für Linux 4.13 fertig werden. Daher ist unklar, ob Ubuntu 17.10 und andere im Herbst erscheinende Distributionen die neuen Radeon-Grafikkarten ordentlich unterstützen werden.

Bei den meisten der jüngst von AMD vorgestellten Grafikkartenserie Radeon RX 500 ist die Treiber-Situation deutlich besser: Die verschiedenen Komponenten der Grafiktreiber-Architektur von Linux-Distributionen unterstützen die Modelle 560, 570 und 580 bereits ziemlich gut, da sie eng mit ihren Vorgängern der 400er-Reihe verwandt sind. Unter aktuell ausgestatteten Linux-Distributionen laufen die Karten daher vollautomatisch und liefern eine Performance, die sich vor den proprietären 3D-Treibern von AMD nicht zu verstecken braucht.

Anders sieht es bei der Radeon RX 550 aus: Sie erfordert derzeit Mesa 17.1, weil den Programmierern ein bislang nur dort korrigiertes Missgeschick unterlaufen ist. Der Kernel-Treiber Amdgpu unterstützt diese unter dem Codenamen "Polaris 12" bekannten Grafikchips seit Linux 4.10, einzelne aber erst ab Linux 4.11.

Mesa 17.1 bringt aber noch viele weitere Neuerungen. Neben dem Binary Shader Cache in Radeonsi gab es noch einen "TGSI Shader Cache". Durch ihn können die auf Gallium3D aufbauenden Treiber Radeonsi und Nouveau ihre "Intermediate Representation" auf Datenträgern ablegen, um diesen beim Verarbeiten von Grafikbefehlen entstehenden Zwischencode später erneut verwenden zu können.

Ohnehin sind die erwähnten Verbesserungen nur die Highlights bei den im PC-Bereich gängigen Grafikchips. Darüber hinaus gab es noch viele andere Verbesserungen – nicht nur bei den erwähnten Treibern, sondern auch bei jenen für Grafikeinheiten, die in ARM-SoCs stecken. Unter diesen Mesa-Treiber ist etwa "Vc4", der die Grafikchips der verschiedenen Raspberry-Pi-Modelle unterstützt. Auch bei ihm gab es einige Optimierungen, die die Grafikperformance steigern.

Details zu den weiteren Neuerungen finden sich auf der Mesa-Homepage und in der Freigabe-Mail zu Mesa 17.1. Wie üblich gilt die erste Version einer neuen Mesa-Release-Reihe als Entwicklerversion; auf Stabilität bedachte Anwender sollten daher auf Mesa 17.1.1. warten. (thl)