Kernel-Log – Was 2.6.33 bringt (3): Grafik

Die nächste Linux-Version bringt nicht nur erstmals den KMS-Grafiktreiber Nouveau für Nvidia-Grafikhardware mit, sondern auch eine Vielzahl von Verbesserungen für die AMD/ATI- und Intel-Grafiktreiber mit Unterstützung für Kernel-based Modesetting (KMS).

In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
Lesezeit: 11 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Ende vergangener Woche hat Linus Torvalds mit Linux 2.6.33-rc6 die sechste Vorabversion der Ende Februar oder Anfang März erwarteten Linux-Version 2.6.33 veröffentlicht. Die Rate und der Umfang der Änderungen geht wie an diesem Abschnitt des Entwicklungszyklus üblich langsam zurück; Torvalds schreibt, dass die Entwicklung an einen Punkt gelange, wo die Dinge größtenteils funktionieren sollten ('[...]we're getting to that stage of the release cycle where things mostly should "just work"[...]')

Thema dieses dritten Teils der Mini-Serie "Was 2.6.33 bringt" sind die Neuheiten rund um die Unterstützung von Grafikhardware. Den bedeutsamsten Änderungen bei der Netzwerkunterstützung sowie bei Dateisystemen und dem Storage-Subsystem hatten sich der erste und zweite Teil der Serie gewidmet.

Wie bereits gemeldet, haben die Kernel-Entwickler nach heftigem Drängen von Linus Torvalds den Kernel-Teil des Nouveau-Treibers für GeForce-Grafikkerne als Staging-Treiber in den Linux-Kernel aufgenommen. Die Kernel-Version 2.6.33 wird daher das bislang nur bei GPUs von AMD/ATI und Intel unterstützte Kernel-based Mode-Setting (KMS) auch mit vielen Grafikchips von Nvidia beherrschen. Das ermöglicht einen flackerfreien Startvorgang, eine schnelle Umschaltung zwischen X-Server und Textkonsole sowie eine zuverlässigere Reinitialisierung der Grafikhardware beim Aufwachen aus systemweiten Schlafzuständen.

Der auf dem neuen Kernel-Code aufsetzende Nouveau-Treiber für X.org beherrscht bereits den via RandR konfigurierbaren Zweischirmbetrieb sowie mit neueren GeForce-Modellen Xvideo-Beschleunigung – der bislang von vielen Distributionen für Nvidia-Hardware verwendete X.org-Treiber "nv" (korrekt "xf86-video-nv") kann beides nicht. 3D-Beschleunigung bietet allerdings keiner der beiden Treiber; für den mittels Reverse Engineering entwickelten Nouveau-Treiber ist sie in Arbeit, aber derzeit noch hochgradig experimentell.

Für 3D-Unterstützung braucht man daher weiter den proprietären Grafiktreiber von Nvidia, der bei manchen Grafikkarten auch erforderlich ist, um die Lüftersteuerung zu aktivieren. Nvidias Treiber arbeiten allerdings nur, wenn man der Nouveau-KMS-Code nicht aktiv ist – das lässt sich etwa durch Angabe des Kernel-Parameter "nomodeset" beim Booten bewerkstelligen.

Kurz vor der Aufnahme von Nouveau hatten die Entwickler noch einige Änderungen vorgenommen, durch die der Treiber den zuvor integrierten und häufig als "Firmware" eingestuften Bestandteil ctxprogs bei Bedarf nachlädt. Einige Distributionen liefern diesen bei neueren GPUs benötigten, gelegentlich auch "Voodoo" genannten Nicht-Open-Source-Code mit aus; allerdings ist unklar, ob das überhaupt rechtmäßig ist, da dieser Code aus den proprietären Grafiktreibern extrahiert wurde.

Ein Entwickler nahm die Diskussionen um diese Problematik zum Anlass, Open-Source-Code zu entwickeln, der Ctxprogs ersetzt. Dieser Code wurde einige Tage nach der Aufnahme von Nouveau ebenfalls für Linux 2.6.33 eingepflegt – bislang unterstützt er allerdings nur die GPUs der NV40-Generation, die auf GeForce-Karten der Serien 6000 und 7000 sitzen.

Mit der Aufnahme des KMS-Treiber-Codes in den Kernel entfernten die Nouveau-Entwickler Anfang Januar ungefähr fünfzehntausend Codezeilen im Nouveau-Treiber für X.org, die sich um das Setzen der Video-Modi ohne KMS gekümmert haben; das soll Wartung und Weiterentwicklung von Nouveau vereinfachen. Damit sind sie nicht alleine, denn auch aus dem Intel-Grafiktreiber für X.org ist in der Anfang Januar freigegeben Treiberversion 2.10 der Code zum "User-Modesetting" (UMS) entfernt. Diese und zukünftige Versionen der Treiber sind daher auf Kernel mit KMS-Unterstützung angewiesen, was für eine recht zügige Verbreitung der noch vergleichsweise jungen Technik führen dürfte.

Die Version 2.10 der Intel-Grafiktreiber bietet zusammen mit dem bei 2.6.33 neuen "drmmode overlay support" im KMS-Treiber für Intel-GPUs nun auch Unterstützung für Video Overlays. Zahlreiche Verbesserungen gab es für die Ironlake-Grafikkerne, die in Westmere-CPUs wie den Anfang des Jahres vorgestellten Dual-Core-Prozessoren der Core-Baureihen i3 und i5 stecken. Der Intel-KMS-Treiber bietet nun auch Unterstützung für Auflösungen mit 30-Bit-Farbtiefe.

Der von den KMS-Treibern genutzte DRM (Direct Rendering Manager) des Kernels und der darauf aufsetzende Intel-Treiber bieten jetzt ein Interface, durch das Grafiktreiber in Zukunft die Darstellung von neuem Bildschirminhalt besser mit dem Bildwechsel synchronisieren können. Das soll die "Tearing" genannten Bildverzerrungen reduzieren oder vermeiden, die besonders bei der Video-Wiedergabe störend sein können.

Damit der Kernel-seitige "Page Flipping Support" nutzbar ist, mussten die Entwickler das DRI2-Protokoll erweitern. Die Technik wird daher erst mit Mesa 7.8, X-Server 1.9 und der noch in Entwicklung befindlichen Version 2.11 des Intel-Grafiktreibers für X.org funktionieren – weitere Details zum Thema finden sich in einem ausführlichen Blog-Eintrag von PCI-Subsystem-Betreuer und Treiber-Entwickler Jesse Barnes.

Der DRM- und KMS-Code des Kernels für Radeon-Grafikchips unterstützt nun die Monitoransteuerung via DisplayPort (1, 2) und eDP (embedded DisplayPort); zudem beherrscht er die Audio-Ausgabe über HDMI. Die ebenfalls neue IRQ-Unterstützung für r6xx- und r7xx-GPUs ermöglicht die Erkennung von Monitorwechseln ohne wiederkehrende Abfragen (Polling) und ist bei Radeon-Karten eine Voraussetzung für den oben erwähnten Page Flipping Support – das ganze funktioniert aber nur in Verbindung mit einer aktualisierten Firmware.

Darüber hinaus gab es zahlreiche kleinere Korrekturen und Verbesserungen am Radeon-KMS-Treiber. Durch die ist der Code nun so weit gereift, dass die Entwickler die Klassifizierung für den Staging-Bereich des Kernels, der unreife und minderwertige Treiber ausnimmt, entfernten und im Commit-Kommentar andeuten, dass der Treiber-Code stabil genug zum Einsatz in Linux-Distributionen sei.

Neu zum Kernel stieß auch der KMS-Treiber xmgfx für die virtuelle, in Gastsystemen sichtbare SVGA2-Grafikhardware einiger VMWare-Hypervisor. Auch dieser Treiber ist ähnlich wie die KMS-Treiber für GeForce- und Radeon-Grafikhardware anfangs als Staging-Treiber gekennzeichnet, weil mindestens die für 3D-Unterstützung zuständige Treiber-Schnittstellen noch Anpassungen benötigen. Über einen Nokia-Entwickler fanden zudem das Display-Subsystem und weitere Treiber für OMAP2/3-Prozessoren den Weg in den Kernel – solche ARM-CPUs kommen etwa bei Nokias n900 oder dem Beagle Board zum Einsatz.

Viele weiteren nicht ganz so wichtige, 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 Kernel-Quellen auf Kernel.org. Im Webfrontend liefern normalerweise der Commit-Kommentar und der Patch selbst zahlreiche weitere Informationen zur jeweiligen Änderungen.

Weitere Hintergründe und Informationen rund um die Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Ausgaben des Kernel-Log. (thl)