zurück zum Artikel

Grafiktreiber unter Linux: Kaum Besserung in Sicht

| Thorsten Leemhuis

Schicke 3D-Effekte sollen dem Linux-Desktop zu neuer Ansehnlichkeit verhelfen. Die schönsten Effekte bleiben ohne leistungsfähige Grafiktreiber jedoch unerreichbar – und gerade die sorgen immer wieder für Streitigkeiten und Probleme.

Dave Airlie, Mitentwickler bei X.org und beim Linux-Kernel, fasst in seinem Vortrag auf dem Ottawa Linux Symposium (OLS [1]) den aktuellen Stand rund um Linux-Grafikkartentreiber unter dem Titel "Open Source Graphic Drivers – They Don’t Kill Kittens" (PDF [2], Seite 19 bis 26) zusammen. Dabei hält er sich mit Kritik in die verschiedensten Richtungen keineswegs zurück.

Unter den Grafikchipherstellern erntet praktisch nur Intel Lob: Der mit einem Stückzahlmarktanteil von rund 32 Prozent [3] größte Desktop-Grafikchiphersteller entwickelt zusammen mit der Firma Tungsten Graphics [4] den Open-Source-Treiber "i810". Einen eigenen, proprietären Treiber pflegt Intel nicht. Der i810-Treiber bietet umfassende 3D-Unterstützung. Mit Ausnahme des gestern vorgestellten [5] G965 kann er alle Intel-Chipsätze mit integrierter Grafik ansprechen – für den Neuling dürften aktualisierte Treiber vermutlich in Kürze verfügbar sein.

Aber auch bei Intel ist nicht alles eitel Sonnenschein: Airlie mokiert, dass die Open-Source-Gemeinde seit dem i830 keine technischen Dokumente zur Treiberentwicklung mehr erhalte, lediglich Tungsten Graphics würden die nötigen Informationen noch zur Verfügung stehen. Ebenfalls nicht unproblematisch: Der Treiber ist zur Einstellung der Auflösung auf die Hilfe der Video BIOS Extensions (VBE) angewiesen. Da in vielen Grafik-BIOSen selbst gängige Auflösungen in den VBE-Tabellen fehlen, lassen sich unter Linux einige Auflösungen häufig nicht einstellen – erst Programme wie 915resolution [6] schaffen Abhilfe, indem sie das Grafik-BIOS zur Laufzeit modifizieren und fehlende Auflösungen nachtragen. Das ist beispielsweise auf zahlreichen Notebooks nötig, um das Display mit der nativen Auflösung anzusteuern. Ein neuer, derzeit noch experimenteller Treiber umgeht diese Limitierung.

In unseren eigenen Tests bei c't [7] sind weitere Probleme mit dem Intel-Treiber aufgetreten. So arbeitet der Zweischirmbetrieb zumeist nicht oder nur mit fehlerhafter Darstellung. Der TV-Ausgang liegt häufig brach oder sendet nur ein NTSC-Signal, mit dem die meisten hiesigen Anzeigegeräte nicht umgehen können. Und die auf der Intel-Homepage angebotenen Treiber-Updates lassen sich zumeist nur von Experten installieren: Für den 945GM etwa stellt das Unternehmen ein rund 22 MByte großes tgz-Paket [8] mit den kompletten Quelltexten von X.org 6.8 mit einem aktualisierten Treiber bereit. Diesen Brocken zu übersetzen und in das eigene Linux-System einzuspielen dürfte manchen Linux-Anwender überfordern. Zudem fehlen dem Ende vergangenen Jahres von Intel freigegebenen Quellcode zahlreiche Korrekturen für in letzter Zeit gefundene Sicherheitslücken.

Der demnächst von AMD übernommene [9] Grafikchiphersteller steht massiv unter Kritik. Früher unterstützte ATI die Open-Source-Gemeinde vorbildlich und stellte – nicht zuletzt durch Druck eines großen Kunden – genug Informationen zur Entwicklung freier Grafikkartentreiber mit 3D-Unterstützung für die r100- und r200-Serien (Radeon 7xxx, 8xxx und 9xxx bis zu 9250) zur Verfügung. Mittlerweile gibt sich das Unternehmen jedoch verschlossen – Airlie zählt es zur Gruppe der "kitten killers". So hat ATI nur noch ausgewählte Entwickler mit Informationen zu den r300- und r400-Chips (Radeon 9500 bis x850) versorgt, die zudem nur die Programmierung eines 2D-Treibers ohne 3D-Unterstützung ermöglichten. Die Open-Source-Gemeinde hat jedoch im r300-Projekt [10] per Reverse-Engineering anderer Treiber einiges über die 3D-Hardware herausgefunden und unterstützt die 3D-Beschleunigung mit verbesserten Treiber.

Für die aktuellen r500-Chips (Radeon x1300 bis x1900) hat ATI keinerlei Informationen an Open-Source-Entwickler herausgegeben. Die meisten Linux-Distributionen installieren daher Treiber, die den Grafikchip über VESA-Funktionen ansteuern. Damit lassen sich nur bestimmte Auflösungen bei zumeist flimmernden Bildwiederholraten ansteuern. Zudem ruckeln bereits Videos mit geringen Datenraten bei der Wiedergabe, da die VESA-Treiber keine Video-Beschleunigung bieten.

Airlie konnte jedoch den Treiber für ältere ATI-Chips so modifizieren, dass er auch grundlegend mit einer Radeon x1300 zusammenarbeitet. Airlie nutzte bei der Entwicklung allerdings Dokumentation und Programme, die ihm ATI unter einem NDA (Non-disclosure agreement) zur Verfügung gestellt hatte. Daher kann er die seit Monaten fertige, nur rund 600 Zeilen Code umfassende Erweiterung nicht ohne Zustimmung seitens ATI freigeben. Etwas frustriert berichtet Airlie, dass das Unternehmen schon seit vier Monaten alle Anfragen wegen einer Veröffentlichungserlaubnis ignoriere. Laut Airlies Blog [11] soll sich daran auch nach dem Vortrag auf der wichtigen Entwicklerkonferenz nichts geändert haben.

Für Besitzer neuerer ATI-Karten bleibt daher nur der von ATI selbst entwickelte Closed-Source-Treiber "fglrx". Der jedoch hat eine Reihe von Problemen, ist beispielsweise auf einigen Grafikkarten langsamer als der Open-Source-Treiber und führt auch schon mal anfangs zu Systemabstürzen bei Software wie Doom3, die die 3D-Funktionen nutzen.

Auch in den c't-Tests zeigten sich zahlreiche Probleme. Schon das Einspielen des Treibers mit ATIs Installationsprogramm erweist sich auf vielen Distributionen als schwierig. Immer wieder erlebten wir Schwierigkeiten beim Übersetzen des Kernel-Moduls für sehr aktuelle Kernel-Versionen. Zudem hinkt ATI der eigenen Hardwareentwicklung hinterher: Die X1xxx-Chips etwa unterstützt das Unternehmen erst mit einer Mitte April 2006 vorgestellten Treiber-Version – da waren die Grafikkarten mit den neuen Chips schon ein halbes Jahr verfügbar.

Auch Nvidia hat früher Spezifikationen für seine Grafikchips offen gelegt, etwa für den riva-Chip, für den so ein Open-Source-Treiber mit 3D-Beschleunigung entwickelt werden konnten. Für neuere Grafikkerne stellt Nvidia keine Dokumentation mehr bereit, entwickelt aber selbst an dem im Rahmen des X.org-Projekts gepflegten Treiber "nv" mit. Der unterstützt allerdings weder 3D-Beschleunigung noch Zweischirmbetrieb oder den TV-Ausgang und gilt zudem als schwer verständlich geschrieben.

Unterdes programmieren einige Entwickler im Rahmen des Nouveau-Projekts [12] an einem Open-Source-Treiber, der auch die Nutzung der 3D-Beschleunigungsfunktionen ermöglicht. Dazu wollen sie ähnlich wie beim r300-Projekt auf Reverse-Engineering zurückgreifen.

Immerhin gilt Nvidias proprietärer Treiber "nvidia" als der beste unter den Closed-Source-Grafiktreibern. Er lässt sich relativ einfach installieren, funktioniert mit nahezu allen Nivida-Chips, ermöglicht eine umfassende Nutzung der Grafikkartenfunktionen und erwies sich in unseren Tests als recht zuverlässig.

Für Matrox-Karten bis zum G550 gibt es brauchbare Open-Source-Treiber, neuere Chips unterstützt nur ein Closed-Source-Treiber. VIA und SiS wirft Airlie eine schlechte Zusammenarbeit mit der Open-Source-Gemeinde vor, deren Ursachen er in kulturellen Unterschieden vermutet. Beide Firmen veröffentlichen ab und an Linux-Treiber zusammen mit einer Presseinformation, aber dass Linux die Grafikhardware recht gut unterstützt, ist vor allem Treiber-Projekten wie Unichrome [13] und Openchrome [14] für VIA-Chips sowie Thomas Winischofers [15] Engagement für freie SiS-Treiber [16] zu verdanken.

Bleiben die bekannten Nachteile von Closed-Source-Treibern. Ein Betriebssystem, in dem man Closed-Source-Treiber in den Kernel oder X.org lädt, ist eben kein Open-Source-System mehr; die mit einem GPL-Betriebssystem wie Linux gewonnenen Freiheiten gehen verloren. So arbeiten die Closed-Source-Treiber nicht auf von Linux durchaus unterstützten Systemen wie PPC- oder Sparc-Hardware; selbst auf x64-Treiber mussten die Linux-Anwender erst einmal warten.

Wenn der Support für einen ältere Chip in den proprietären Treibern entfernt wird, bleibt nur der Kauf einer neuer Hardware: Ältere Treiberversionen funktionieren irgendwann mit neuen Kernel- oder X.org-Versionen nicht mehr – in den ersten Distributionen mit Kernel 2.6 etwa ließen sich die Nvidia-Treiber nicht nutzen, der Umstieg auf das modulare X.org 7.0 setzte den ATI-Treiber erst einmal außer Gefecht. Schon minimale Änderungen am Kernel oder an X.org können Änderungen am Treiber nötig machen, die den Zugang zu den Quelltexten erfordern. Mit X.org 7.1 kommen die proprietären Treiber der beiden großen Grafikchiphersteller auch zwei Monate nach dessen Vorstellung nicht zurecht.

Airlie spekuliert, dass Patente wohl der Hauptgrund seien, warum die Hersteller ihre Treiber nicht offenlegen wollen. Aber selbst für Anhänger finsterer Verschwörungstheorien, die hinter allem Übel Microsoft vermuten, findet er Argumente: So habe kein Grafikchiphersteller mehr Spezifikationen freigeben, nachdem seine Hardware in einer Xbox verbaut wurde oder die Chips DirectX-8.0 implementierten.

Zudem handelt man sich mit proprietären Kerneltreibern möglicherweise ein Lizenzproblem ein: Einige Kernel-Entwickler sehen dadurch ihr Copyright am Kernel verletzt. Ihr Argument: Jeder Treiber, der Kernelschnittstellen nutzt, sein ein von Kernel abgeleitetes Werk ("derived work"), das nach den Bestimmungen der GNU General Public License (GPL), der der Kernel unterliegt, ebenfalls unter der GPL – also mit Quelltexten – veröffentlicht werden muss.

Greg Kroah-Hartman, heute einer der wichtigsten Kernel-Entwickler, der bereits in der Vergangenheit durch sein Engagement für Open-Source-Treiber mehrfach [17] aufgefallen [18] ist, äußert sich dazu in seiner OLS-Keynote [19] unmissverständlich: "Closed source linux kernel modules are illegal". Anschließend legt er mit "Closed source Linux kernel modules are unworkable" und "Closed source Linux kernel modules are unethical" nach.

Alles in allem ist die Situation rund um Grafiktreiber unter Linux weiterhin alles andere als rosig. Einzig für Intel-Chipsätze mit integrierter Grafik erhält der Linux-Anwender akzeptable Treiber. Da sie mittlerweile für die meisten Ansprüche ausreichend 3D-Leistung bieten und das System anders als früher nicht mehr ausbremsen, dürften die Intel-Chips für zahlreiche Linux-Anwender eine akzeptable Lösung dastellen.

Für aktuelle 3D-Shooter reicht die Leistung der integrierten Chipsätze jedoch nicht aus; hohe 3D-Performance liefern erst Grafikkarten mit aktuellen ATI- oder Nvidia-Chip. Die Empfehlung unter Linux lautet eindeutig Nvidia: Hier gibt es offene 2D-Treiber, die ausreichen, solange man auf Zweischirmbetrieb und 3D-Beschleunigung verzichten kann, und proprietäre Treiber, die fast alle Funktionen der Grafikkarten unterstützen – solange die Kernel-Entwickler diese Treiber noch zulassen. (thl [20])


Weitere Hintergründe rund um Grafiktreiber liefert: (thl [21])


URL dieses Artikels:
https://www.heise.de/-221959

Links in diesem Artikel:
[1] http://www.linuxsymposium.org/2006/
[2] http://www.linuxsymposium.org/2006/linuxsymposium_procv1.pdf
[3] https://www.heise.de/news/Nvidia-baut-Vorsprung-vor-ATI-aus-172239.html
[4] http://www.tungstengraphics.com/
[5] https://www.heise.de/news/Zweiter-Streich-fuer-Intels-neuen-Core-2-Duo-145666.html
[6] http://www.geocities.com/stomljen/
[7] http://www.ctmagazin.de
[8] http://downloadfinder.intel.com/scripts-df-external/Detail_Desc.aspx?agr=N&Inst=Yes&ProductID=955&DwnldID=9722&strOSs=39&OSFullName=Linux*&lang=eng
[9] https://www.heise.de/news/AMD-uebernimmt-ATI-fuer-5-4-Milliarden-Dollar-144435.html
[10] http://r300.sourceforge.net/
[11] http://airlied.livejournal.com/31180.html
[12] http://nouveau.freedesktop.org
[13] http://unichrome.sourceforge.net/
[14] http://www.openchrome.org/
[15] http://www.winischhofer.net/
[16] http://www.winischhofer.eu/linuxsisvga.shtml
[17] https://www.heise.de/news/Warnschuss-an-Hersteller-von-Closed-Source-Treibern-fuer-Linux-150712.html
[18] https://www.heise.de/news/Streit-um-stabiles-Treiber-API-fuer-Linux-145282.html
[19] http://www.kroah.com/log/linux/ols_2006_keynote.html
[20] mailto:thl@heise.de
[21] mailto:thl@ct.de
[22] http://www.heise.de/kiosk/archiv/ct/06/12/222/