Kernel-Log – Was 2.6.38 bringt (1): Grafik | heise online

Kernel-Log – Was 2.6.38 bringt (1): Grafik

Der Kernel 2.6.38 spricht AMDs neue Fusion-CPUs an und ermöglicht 2D- und 3D-Beschleunigung bei vielen aktuellen GeForce- und Radeon-Grafikkarten. Die Grafikkerne in Intels Prozessoren und Chipsätzen sollen sparsamer arbeiten; neue Page-Flip-Funktionen gehen Bild-Flackern, Tearing und unvollständigem Rendering an den Kragen.

vorlesen Druckansicht 3 Kommentare lesen
Lesezeit: 12 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Keine fünf Tage nach dem Ende des Merge Window von 2.6.38 hat Linus Torvalds schon die zweite Vorabversion von Linux 2.6.38 veröffentlicht. Grund für diesen schnellen Nachschlag am vergangenen Samstag waren aber keine größeren Fehler in 2.6.38-rc1, sondern weltliche Dinge: Torvalds ist am Sonntag zur diesjährigen Linux.conf.au (LCA) gereist, die trotz der Überflutungen diese Woche im australischen Brisbane stattfindet. Vorher wollte er testen, ob er auf dem für die Reise vorgesehen Computer alle zur Kernel-Entwicklung und -Freigabe nötigen Dinge installiert hat.

In der Freigabe-Mail deutetet Torvalds an, von nun an strikter zu sein und nichts mehr aufzunehmen, was nicht eindeutig der Stabilisierung dient; alle größeren Änderungen müssen bis zum 39er-Kernel warten. Der jetzige Entwicklungsstand von 2.6.38 dürfte sich daher nicht sonderlich von der finalen Version unterscheiden, die Ende März oder Anfang April erscheinen dürfte.

Das Kernel-Log kann daher schon jetzt einen umfassenden Überblick über die wichtigsten Neuerungen des 38er-Kernels geben. Wie üblich werden wir die Informationen über mehrere Artikel verteilen, die sich nach und nach den verschiedenen Funktionsbereichen des Kernels annehmen. Den Anfang der Serie "Was 2.6.38 bringt" machen die wichtigsten Änderungen rund um die Unterstützung für Grafikhardware; in den kommenden Wochen folgen Artikel zur Netzwerkunterstützung, zu Storage-Hardware, Dateisystemen, Treibern, Architektur-Code und der Infrastruktur des Kernels.

Die Radeon-DRM/KMS-Treiber des Kernels unterstützen nun auch den Grafikkern der von AMD unter dem Oberbegriff Fusion vermarkteten und Anfang Januar eingeführten Bobcat-Prozessoren (u. a. 1, 2, 3, 4, 5, 6). Im Schnellverfahren stieß auch die Unterstützung für die Radeon-HD-Modelle 62xx bis 68xx zum Kernel (u. a. 1, 2, 3, 4), denn die war erst zwei Tage nach Beginn des Merge Window von 2.6.38 veröffentlicht worden. Die Chips auf diesen seit Oktober verkauften Grafikkarten gehören zur "Northern Islands" (NI) genannten Familie, zu der auch die GPUs (Graphics Processing Units) der im Dezember vorgestellten Radeon-HD-Modelle 6950 und 6970 zählen – Letztere werden aber noch nicht unterstützt, da sich ihre Cayman-Chips in einigen Belangen deutlich von den anderen GPUs der 6000er-Serie unterscheiden.

Die 2D- und 3D-Beschleunigung dieser AMD-GPUs lässt sich zusammen mit neuen Versionen von Libdrm, Mesa 3D und den Radeon-Treiber für X.org nutzen. Für die Bobcat-Prozessoren bringt Mesa 7.10 bereits alles wichtige mit, während man für die 6000er-Radeons noch auf den Entwicklerzweig zurückgreifen muss. Auch für passende X.org-Treiber muss man vorerst die Entwicklerquellen bemühen.

Der Radeon-DRM/KMS-Treiber beherrscht jetzt die schnelleren Übertragungsmodi von PCIe 2.0. Man muss die doppelt so schnelle Datenübertragung aber über einen Modul-Parameter "pcie_gen2=1" explizit einschalten, da die Funktion auf manchen Systemen zu Problemen führt.

Der DRM/KMS-Treiber für Grafikchips von Intel aktiviert bei den Grafikkernen der Anfang Januar vorgestellten Sandy-Bridge-Prozessoren (Core-Serien i3-2000, i5-2000 und i7-2000) nun wenn möglich den Self-Refresh, um die Leistungsaufnahme zu reduzieren. Auch beim Ironlake-Grafikkern der Vorgänger-CPUs (u. a. Core i3 sowie manche i5 und i7) aktiviert der Kernel diese Funktion nun wieder, nachdem sie aufgrund von Problemen vorübergehend lahm gelegt wurde (1, 2) – der Entwickler schreibt im Commit-Kommentar zu einem der Patches, dass die Leistungsaufnahme seines Vaio-Ironlake-Notebooks um 0,5 Watt sank. Keine solchen Messwerte gibt es für die Patches, die eine RC6 genannte Stromsparfunktion zur automatischen Absenkung des Taktes auf aktuellen und älteren Intel-Prozessoren und -Chipsätzen aktiviert (1, 2, 3).

Durch den Dynamic Render P-state Support und die Overclocking-Unterstützung kann der Grafikkern von Sandy-Bridge-CPUs jetzt die Taktfrequenz ändern, was je nach Umgebungsbedingungen die Performance steigert oder den Stromverbrauch reduziert. Der Treiber für Intels Grafikkerne nutzt ab 2.6.38 eine Hardware-Funktion zum Erkennen von Display-Wechseln – dadurch kann eine wiederholte, Strom kostende Abfrage der angeschlossenen Wiedergabegeräte entfallen.

Der Nouveau-DRM-Treiber von 2.6.38 wird alles Nötige zum Nutzen der 2D- und 3D-Beschleunigung der auch als NVC0 bezeichneten Fermi-Chips mitbringen, die auf den GeForce-Modellen der 400er- und 500er-Serie sitzen (u. a. 1, 2, 3, 4). Um diese Funktionen zu nutzen, bedarf es derzeit einer proprietären Firmware sowie Unterstützung in Libdrm, Mesa 3D und dem Nouveau-Treiber für X.org. Die Nachfolger der derzeit aktuellen Libdrm- und Mesa-3d-Versionen 2.4.23 respektive 7.10 dürften diese mitbringen, da Entwicklerversionen dieser Komponenten bereits alles Nötige enthalten (1, 2, 3). Um Leistung und Zuverlässigkeit zu steigern, haben die Entwickler den Nouveau-DRM/KMS-Treiber für die NV50-Chips (GeForce 8, GeForce 9, GeForce 100, GeForce 200, GeForce 300) an einigen Stellen verbessert – unter anderem beim VM-Code und der Speicherverwaltung.

Fedora hat diese Beschleunigungsfunktionen für Fermi-Chips bereits in den Entwicklerzweig Rawhide integriert, aus dem im Mai die Fedora 15 hervorgehen soll. In Zukunft wird die Distribution die Mesa-3D-Unterstützung für den Nouveau-Treiber zudem standardmäßig installieren – bislang fand sich diese in einem optionalen und als experimentell gekennzeichneten Paket. Andere Distributionen dürften diesem Beispiel früher oder später folgen.

Die DRM-Infrastruktur haben die Kernel-Hacker um Unterstützung für die im Commit-Kommentar detailliert erläuterten und für die Einhaltung der OpenML (Open Media Library) wichtigen "Precision Vblank Timestamps" erweitert. Mit ihnen stellt der Kernel auf wenige Mikrosekunden präzise Zeitstempel zur Verfügung, über die Anwendungen erkennen können, wann die Ausgabe eines neuen Bildes begonnen hat ("Doublebuffer Swap"). Das ist beispielsweise für Anwendungen wichtig, die Tonausgabe oder die Kontrolle anderer Geräte sehr genau mit dem Bildaufbau synchronisieren müssen. Implementiert wurde die Technik für Anwendungen in der experimentellen Psychologie und Neurowissenschaft; sie kann allerdings auch dabei helfen, um Videoplayback, Animationen oder Desktop-Effekte ruckelfrei(er) darzustellen.

Die ebenfalls neue und via DRI2 nutzbare Pageflipping-Unterstützung kann diese Zeitstempel ebenfalls zu Hilfe nehmen. Durch sie ist der Kernel besser und effizienter als zuvor in der Lage, die Freigabe eines aktualisierten Bildes mit dem Moment zu synchronisieren, in dem die Grafik-Hardware mit der Ausgabe eines neuen Bilds beginnt (Vsync). Das beseitigt Bildstörungen wie Flackern, Tearing oder unvollständiges Rendering, da vermieden wird, dass die obere und untere Hälfte eines angezeigten Bildes zu einem alten und einem neuen Bild gehören – etwa verschiedene Frames eines Films. Die für beide Funktionen nötige Unterstützung in den Grafiktreibern bieten ab dem 38er-Kernel die Treiber für AMD (1, 2) und Intel (1, 2); der Treiber für Nvidia bieten bislang nur Page-Flip-Unterstützung (1, 2).

Einige kleinere Verbesserungen gab es an vga_switcheroo, mit dem sich bei bestimmten Notebooks zwischen leistungsfähigeren Grafikchip und Chipsatz- beziehungsweise Prozessor-Grafik umschalten lässt. Der Treiber udlfb zum Anbinden von USB-2.0-Monitoren via DisplayLink ist im Staging-Bereich nun so weit gereift, dass er diesen verlassen konnte und bei den anderen Framebuffer-Treibern zu Hause ist; Einsatzhinweise zum Treibers liefert die Kernel-Dokumentation.

Viele kleinere, aber keineswegs unbedeutende Neuerungen finden sich in der folgenden Liste mit den englischen Commit-Überschriften der jeweiligen Änderung. Die Einträge verlinken genau wie viele der Verweise im vorangegangenen Text auf das Webfrontend des von Linus Torvalds gepflegten Git-Zweigs mit den "offiziellen" Kernel-Quellen auf Kernel.org. Der über diese Links angezeigten Commit-Kommentar und der darunter ausgegebene Patch liefern zahlreiche weitere Informationen zur jeweiligen Änderungen.

Vor jedem Link finden sich in eckigen Klammern einige Buchstaben und Zahlen. Ein "C" kennzeichnet Patches mit Änderungen an Kconfig-Dateien, welche die Konfigurationsoptionen samt der zugehörigen Hilfetexte enthalten, die bei der Kernel-Konfiguration über "make menuconfig", "make xconfig" und ähnliche Werkzeuge angezeigt werden. Ein "D" steht bei Patches, die die Dokumentation verändern, die im Kernel-Zweig unterhalb von Documentation/ liegt. Ein "N" weist Änderungen aus, die eine neue Datei anlegen. Die Zahl vermittelt einen groben Eindruck zur Größe des Patches: eine "1" steht für Änderungen, die inklusive Kommentar zwischen 10 und 20 KByte groß sind, eine "2" für solche, die zwischen 20 und 30 KByte Umfang haben; Änderungen ohne Zahl sind kleiner als 10 KByte, Patches mit einer "9" hingegen 90 KByte oder größer.

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf den Identi.ca- und Twitter-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca und Twitter als "@kernellogauthor". (thl). (thl)