Die Neuerungen von Linux 4.15

Seite 8: VR-Unterstützung und Grafiktreiber

Inhaltsverzeichnis

Linux 4.15 bringt Verbesserungen für VR-Brillen wie die HTC Vive.

Aus Angst vor Zurückweisung durch Linus Torvalds haben die Kernel-Entwickler die DC-Patches unabhängig vom Gros der Änderungen an Grafiktreibern eingereicht. Unter denen waren mehrere Patches von Keith Packard, der seit den 80ern in die Entwicklung von Software zur Nutzung von Grafikhardware für unixoide Betriebssysteme involviert ist. Um solche geht es auch diesmal: Durch die von ihm eingebrachte "DRM_Object Lease Infrastructure" kann der Display-Server die Kontrolle über Teilfunktionen der Grafikhardware an VR-Software überstellen, damit diese die Ressourcen frei und ungestört verwenden kann (u. a. 1, 2, 3, 4).

Letztlich ist der Ansatz somit eine Umgehungsstraße für den X-Server, denn bei der Ansteuerung von der auch Head-mounted Displays (HMD) genannten VR-Brillen ist er mehr im Weg denn Hilfe. Packard hat Ideen und Ziele des Ganzen vor einigen Wochen in einem Vortrag, von dem eine Video-Aufzeichnung und die Präsentationsfolien im Netz stehen, näher erläutert. Weitere Details liefert er in vier Blog-Beiträgen (1, 2, 3, 4).

Unabhängig davon flossen noch einige Änderungen ein, um die Bildschirme in VR-Brillen als "Non-Desktop Displays" zu kennzeichnen. Desktop-Umgebungen können damit erkennen, dass mit diesen Monitoren kein Mehrschirmbetrieb sinnvoll ist, damit die Desktops die Bedienoberfläche nicht dorthin ausdehnen oder dort spiegeln (1, 2, 3).

Neben dem DC-Code gab es noch zahlreiche weitere Änderungen am Amdgpu-Treiber. Darunter einige von einem Valve-Entwickler entwickelte Patches, die den Einsatz von VR-Brillen mit Radeon-GPUs zu optimieren versprechen. Das soll mit Prioritäten gelingen, mit denen VR-Software die für sie nötigen Berechnungen als wichtiger kennzeichnen kann. Das soll letztlich Ruckler und andere zu Unwohlsein führende Faktoren mit VR-Brillen reduzieren. Konkret haben die Änderungen eine neue Programmierschnittstelle geschaffen, durch die ein Prozess die Prioritäten von Aufgaben ändern kann, die andere Prozesse zur Abarbeitung an den Grafikchip geschickt haben (u. a. 1, 2, 3, 4, 5). Spielentwickler können diese Funktion über die Vulkan-Extension VK_EXT_global_priority nutzen, die Mesa 17.3 mitbringt.

Darüber hinaus hat Amdgpu einen weiteren Codepfad zur Hash-Berechnung bekommen. Er ermöglicht zum Beispiel die effiziente Behandlung von Hardware-Fehlern und -Interrupts, was Speicher- und Prozessorlast erheblich reduziert.

Grundlegende Umbauten gab es auch am Treiber Amdkfd, über den sich moderne Radeon-GPUs für Rechenaufgaben nutzen lassen. AMDs Entwickler hatten diese eine Weile unabhängig weiterentwickelt und den in Linux enthaltenen Code etwas schleifen lassen. Der unabhängig entstandene Code fließt jetzt mehr und mehr in den Kernel ein. Dadurch verschwindet jetzt allerdings der Support für das Rechnen mit GPUs, für die der Radeon-Treiber des Kernels zuständig ist. Das umfasst vornehmlich die Chips der Southern- und Sea-Islands-Generation, die etwa auf den Radeon-HD-Karten 7750 bis 7970 und vielen RX-Karten der 200er- und 300er-Serie sitzen. Anwender sollen auf Amdgpu ausweichen, der diese GPUs betreuen kann; Details hierzu finden sich im Kernel-Log zu Linux 4.13.

Bei Intels Grafiktreiber haben die Entwickler den Support der Core-i-8000er-Prozessoren verbessert, die zur Coffee-Lake-Generation zählen. Dadurch unterstützt der Treiber diese seit September in Notebooks und seit Oktober für Desktop-PCs erhältlichen Prozessoren jetzt auch, ohne dass man beim Start den Kernel-Parameter i915.alpha_support=1 angibt.

Der Treiber nutzt jetzt automatisch IPC (Isochronous Priority Control). Die GPU kann dadurch letztlich zur Darstellung aktuell benötigte Bildschirminhalte bevorzugt aus dem Speicher auslesen, was Wartezeiten reduziert, die zu Rucklern führen könnten. Geringeren Overhead beim Speicherzugriff verspricht der Support für Transparent-Huge-Pages in der Speicherverwaltung des i915-Treibers (u. a. 1, 2, 3).

Die Entwickler des für Nvidia-GPus zuständigen Treibers Nouveau haben den Code zur Speicherverwaltung grundlegend überarbeitet (u. a. 1, 2), damit der Treiber neuere Chips besser abbilden kann. Folgepatches nutzen das, um damit Huge Pages und einige andere Features bei vielen Chips der letzten Jahre zu unterstützten (u. a. 1, 2, 3). Der beim Ansprechen von Nvidias Tegra-GPUs involvierte Treiber Host1x unterstützt nun den als Tegra X2 oder Tegra186 bekannten System-on-Chip (SoC), der unter anderem auf dem Jetson-TX2-Board sitzt.

86 von knapp 1500 Änderungen an Grafiktreibern fand deren Betreuer hervorhebenswert.

(Bild: git.kernel.org )

Der Kernel bringt jetzt auch einen Bildschimtreiber für das Raspberry Pi 7-inch Touchscreen Panel mit, das die Raspberry-Pi Foundation selbst bewirbt. Der für die Grafik des beliebten Kleinstcomputers zuständige Treiber VC4 bringt jetzt eine Funktion mit, um als Cache verwendete Puffer zu verwerfen, wenn der Arbeitsspeicher knapp wird.

Die Entwickler haben einen zuverlässigeren Weg geschaffen, den Kernel-Grafiktreiber manuell mit EDID-Daten zur korrekten Monitoransteuerung zu versorgen. Das gelingt über den neuen Kernel-Parameter drm.edid_firmware=. Interessant ist das etwa für Situationen, bei denen der Monitor fehlerhafte Informationen liefert oder diese bei einem KVM-Switch hängen bleiben. Der bislang verwendete Parameter drm_kms_helper.edid_firmware= funktioniert aber weiterhin.

Die genannten Neuerungen sind nur einige von 85 Änderungen, die der Maintainer des Direct Rendering Managers (DRM) von Linux in seinem Merge-Kommentar zu den wichtigsten Änderungen bei Grafiktreibern hervorhebt. Allein dieser Merge enthielt fast 1500 der für Linux 4.15 vorgenommenen Änderungen.