Linux – 3D OpenGL
+
= 
Direct Rendering Infrastructure (DRI)
Der Linux-Kernel erlaubt keinen direkten Hardware- oder Speicherzugriff. Die Hardware wird also vollständig von der Benutzerebene abgeschirmt, um die Stabilität zu bewahren. Ältere Systeme wie MacOS 9 oder Win 9x, erlauben dieses und sind somit sehr instabil und sehr anfällig. Mit dem XFree86 >= 4.0 Grafiksystem ist die DRI (Direct Rendering Infrastructure) durch die Firma Precision Insight entstanden. Mit dem GLX von dem Unternehmen SGI und das Direct Rendering in dem X Server integriert, bietet die DRI eine hoch optimierte direkte Verbindung zur Grafik-Hardware.
i386, Alpha und SPARC Hardware-Architekturen werden unterstützt. Intel’s SSE (Multimedia Extensions), MMX und AMD’s 3DNow-Erweiterungen werden ebenso bei entsprechender CPU genutzt. Die DRI für 3D-Beschleunigung unterstützt folgende Grafikchips:
- Matrox’s G200 und G400/G450
- ATI’s Rage 128 – Rage Fury/Magnum, XPERT 2000, 128, 99, All-in-Wonder 128, Rage 128 PCI
- ATI’s Radeon 7000, 7200, 7500, 8500, 9000, 9100 SDR/DDR AGP
- Intel’s i810, i815, i830
- 3Dfx Banshee, Voodoo 3/4/5, Velocity 100/200
- 3Dlabs Oxygen GMX 2000 (MX/Gamma based)
- VIA CLE266
- SIS 6326/530/300
Um sich aus erster Quelle über den Entwicklungsstand zu informieren, ist die DRI Sourceforge-Seite aufzusuchen. Dort ist auch eine aktuelle Seite mit einer Status-Übersicht der unterstützten Grafikkarten. Auch eine gute tabellarische Übersicht der 3D-Grafikchips gibt es.
Oft gemachter Fehler im Umgang mit der DRI
Die DRI benötigt immmer einen entsprechenden Treiber in Form eines Kernel-Moduls für die Grafikkarte. Dieses Treiber-Modul befindet sich bei einem Kernel 2.6.17 z.B. in:
/lib/modules/2.6.17/kernel/drivers/char/drm/
Und dieses muss exakt zum verwendeten Kernel passen!
Gerade die Treiber von nVidia, ATI, Intel oder Matrox müssen zur Linux Distribution und dem Kernel passen. Ebenso zur verwendeten XFree86-/Xorg-Version. Wenn kein fertiger Treiber angeboten wird, hat man leider Pech gehabt! – Hersteller wechseln!
Dann hilft vielleicht noch ein “Quellen-Paket”, mit diesem man sich den Treiber selbst kompilieren kann. Wenn aber die Hersteller keine Informationen und Daten über die Grafikkarten herausgeben, kann niemand einen Treiber schreiben.
Utah-GLX
Utah-GLX bietet Hardware-beschleunigtes OpenGL für eine bestimmte Anzahl von 3D-Chips, ist aber ursprünglich nur für den älteren XFree86 3.3.x, ohne modulare Treiber, entwickelt worden. Mittlerweile aber auch für XFree86 4.0.x.
Entwickelt wurde das GLX von SGI als Erweiterung des X Window Systems, um das OpenGL-Rendering im X-Server einfach zu integrieren. SGI hat dazu die Quellen und Schnittstellen veröffentlicht. Das Haupt-Rendering geschiet duch die Mesa 3D, einer freien OpenGL-Umsetzung. Utah-GLX unterstützt folgende ältere Grafikkarten:
Mit dem aktuellem XFree 4.x.x:
Und unter dem alten XFree 3.3.x:
Wer also noch XFree86 in der alten 3.3.x Version einsetzt, kann mit Utah-GLX und den oben angegebenen Chips/Karten recht gute Leistungen unter Linux im 3D-Betrieb erhalten.
Mesa 3D
Die 3D Grafik-Library Mesa 3D wurde ursprünglich nur für Unix-/X11-Systeme als freie Implementierung von OpenGL entwickelt. Mittlerweile werden auch viele andere Systeme vom Amiga bis Windows unterstützt.
John Carmack, Chefentwickler von id Software, hatte vor Jahren noch eine sehr großzügige Spende übermittelt, Q*ke3 z.B. nutzt die Mesa 3D als Renderer unter Linux mit X11. Software-beschleunigt ist die Mesa 3D alleine ohne die DRI, eine langsame CPU-intensive Möglichkeit. Auch das GLX von SGI basiert auf der freien Mesa 3D. Die Mesa 3D (Software beschleunigt) ist nur bei anspruchslosen Anwendungen oder Spielen zu empfehlen, da hier die CPU die volle Arbeit übernimmt und die 3D-Fähigkeiten des Grafikchips nicht entfaltet und genutzt werden.
Grafikkarten-Treiber
Die meisten Grafikkarten laufen mit dem aktuellen XFree86/Xorg ohne Probleme. Die Treiber werden als Kernel-Modul zusammen mit einem Xorg-Modul geladen. Die ganze Hardware-Konfiguration für die Grafikanzeige übernimmt die Datei /etc/X11/xorg.conf oder bei älteren Distributionen auch noch die Datei /etc/X11/XF86Config. Diese muss entsprechend angepasst werden, entweder bequem mit grafischen Werkzeugen der Distribution oder aber per Hand mit einem Editor.
Hersteller wie ATI, nVidia, Intel und Matrox bieten eigene “Closed-Source-Treiber” an. Diese müssen vom Hersteller unbedingt mit dem Kernel der Distribution vorkompiliert worden sein. Die Datei /etc/X11/xorg.conf muss auf den Treiber-Namen angepasst werden. Der nVIDIA eigene Xorg-Treiber heißt: “nvidia”. Der “einfachere” Open-Source-Treiber vom Xorg/XFree86 heißt kurz: “nv”.
Dieser bietet aber leider nur eine einfache Leistung in 3D und 2D (Video-Erweiterungen und 2D-Rendering), weil die Hersteller nicht mithelfen oder eben keine Spezifikationen an die Treiber-Entwickler weitergeben.
Es existiert also immer ein Kernel-Modul, das z.B. nach /lib/modules/2.6.17/kernel/drivers/video/ (im Falle von nVidia z.B) wandert und eins für XFree/Xorg. Dieses sollte nach der Installation in: /usr/X11R6/lib/modules/drivers/ (alter XFree86) oder beim aktuellen Xorg in: /usr/lib/xorg/modules/drivers/ zu finden sein, damit es geladen werden kann.
nVidia Forceware Linux-Treiber
nVidia bietet für XFree86/Xorg >= 4.0.1 Linux-Treiber an. Oder direkt über den FTP-Server: ftp://download.nvidia.com/XFree86/
Unterstützt werden ein optimierter und Hardware-beschleunigter 2D- und 3D-Betrieb, TwinView, Flat Panels, Dual Monitor, DMA, ein eigener nVidia-AGP und der Linux-Kernel AGP, OpenGL, FSAA (Full Scene Anti-Aliasing), Anisotropic Filtering, alle GL-Extensions, composite, bis hin zu den X Render Extensions für Kantenglättung bei Type1 und TrueType Fonts. Der neue schnelle PCI-Express-Bus läuft auch problemlos. Ab der Version 1.0-9629 laufen auch der 3D OpenGL Composite/Window Manager compiz und beryl mit dem lang ersehnten Support von: “GLX_EXT_texture_from_pixmap”.
Beim aktuellen nVidia-Treiber ist ein Programm für die Grafik-Einstellungen des nVidia-Treibers namens nvidia-settings dabei, dass hilfreiche Informationen liefert und auch eine erweiterte Konfiguration des Treibers bietet.
nVidia Treiber
Der Linux-Treiber wurde aufgesplittet, so dass es 3 Treiber gibt.
Folgende aktuellen nVidia-Grafikkarten laufen mit dem neuesten nVidia-Treiber 1.0-97xx:
- GeForce FX 5xxx
- GeForce PCX 4xxx/5xxx
- GeForce 6xxx/7xxx/8xxx
- GeForce Go 5xxx/6xxx/7xxx (mobile)
- Quadro 4/FX
- Quadro NVS 110M
Folgende nVidia-Grafikkarten laufen mit dem nVidia-Treiber 1.0-96xx:
- GeForce2 MX/MX 400/MX 200/MX 100
- GeForce3 / Ti 200/500
- GeForce4 MX/Ti 4xxx
- Quadro DCC/NVS 50
- Quadro 4xx/7xx/9xx
- Quadro2 MXR/EX/Go
Folgende ältere nVidia-Grafikkarten laufen mit dem nVidia-Legacy-Treiber 1.0-7xxx:
- TNT/TNT2/TNT2 Pro/Ultra
- TNT2 M64/M64 Pro/Ultra
- Vanta / Vanta LT
- GeForce 256/DDR
- GeForce2 Pro/GTS/Ultra/Ti
- Quadro
- Quadro2 Pro
Laufzeit-Informationen zum nVida-Treiber unter X erhält man z.B. im xterm (Terminal) mit dem Befehl:
cat /proc/driver/nvidia/registry (Aktuelle Einstellungen des Treibers)
cat /proc/driver/nvidia/version (Treiber- und Compiler-Version)
cat /proc/driver/nvidia/agp/status (AGP Status)
cat /proc/driver/nvidia/agp/host-bridge (Host-Bridge)
cat /proc/driver/nvidia/cards/0 (Grafikkarten-Modell, IRQ, Bussystem,…)
nVidia bietet eine ausführliche Installationsanleitung für die Installation und Konfiguration mit Linux.
Mit dem Tool NVClock kann die die Temperatur, Pipesanzahl, Speicher- und Grafikprozessor-Taktraten von nVidia-Chips auslgelesen werden.
Ein gdesklet für den GNOME Desktop, dass die Grafikkarten-Temperatur, -Typ und die Taktraten von nVidia-Chips ausliest wurde auch geschrieben.
- Ubuntu nVidia Howto
- nForcersHQ Linux Forum
- Aktuelle Linux Beta-Treiber
- NVIDIA Linux Forum
- nouveau – Open Source 3D-Treiber für nVidia Grafikkarten
ATI Linux-Treiber (AMD) Catalyst
ATI bietet für X.Org 6.7, 6.8, 6.9, 7.0, 7.1 und XFree86 4.3 (ältere Distributionen) Linux-Treiber mit voller Hardware-3D-Beschleunigung für x86 (32 Bit) und x86-64 (64 Bit) an.
Folgende Ati-Chips werden unterstützt:
- Radeon 8500
- Radeon 9000
- Radeon 9100
- Radeon 9500
- Radeon 9700
- Radeon 9800
- Radeon X1xxx
- Ati Mobile
- FireGL 8700/8800/…
Weitere Linux-Fragen werden in der ATI Linux FAQ beantwortet
Für Ubuntu eine Ati/fglrx Ubuntu-Anleitung und die inoffizielle Ubuntu Ati Linux-Treiber-Anleitung.
Matrox Linux-Treiber
Matrox bietet Linux-Treiber für Xorg / XFree86 >= 4.0.2 an. Unterstützt werden Grafikkarten mit den Matrox-Chips:
- G200
- G400
- G450
- G550
- G650
- G750
- Parhelia
Diese Treiber (Module) basieren auf der DRI (Direct Rendering Infrastructure) und benötigen den Kernel AGP-Support durch das Modul agpgart oder wie bei Fedora Core in den Linux Kernel integriert. Matrox-Karten bieten immer noch für den Office- und Grafikbearbeitungs-Betrieb eine sehr gute Leistung und top Bildqualität, die man nicht vergessen sollte. Auch mit mehreren Displays kombiniert, sind die Karten spitze.
Generic KYRO Linux-Treiber
Für Grafikkarten mit PowerVR KYRO-Chip bietet Imagination Technologies Linux-Treiber an. Diese bringen einen Hardware-beschleunigten 2D- und 3D-Betrieb mit XFree/Xorg > 4.0 und Kernel 2.4.x oder >= 2.5.8. Die 3D-Darstellung wird über die DRI angesteuert. Unterstützt werden anscheinend alle PowerVR KYRO-Chips.
Intel® Linux-Treiber
Eine Übersicht von Linux Distributionen, ob die Intel-Hardware von Linux unterstützt wird, bietet diese Seite:
Die (experimentellen) Open Source Linux Graphics Driver für 2D und 3D sind zu finden bei:
Intel® bietet für die Centrino® Notebooks mit integriertem Grafikchip onboard Linux-Treiber für folgende Grafikchips an:
- i830M
- i845G
- i852GM
- i855GM
- i865G
- i910GL / i915G
Intel Linux Grafik-Treiber [IntelGraphics_060704.tar.gz]
Für folgenden aktuelle Intel® Centrino® Notebooks mit folgenden integrierten Grafikchips:
- 852GM/GME/GMV
- 855GM/GME
- 865G/GV
- 915G/GV, 910GL/GML
- 915GM/GMS
- 945G / 945GM
Intel Linux Grafik-Treiber [Intel-3.4.3006-20051209.i386.tar.gz]
Immer die Datei README.txt zum Treiber für die Installation und Konfiguration vorher lesen! Der agpgart (AGP-Treiber) und das DRM (-Modul) im Kernel-Verzeichnis ist hierfür erforderlich.
S3 Graphics – Linux-Treiber
Linux-Treiber für Grafikkaten von S3 Graphics.
VIA integrated Graphics – Linux-Treiber
Linux-Treiber für VIA Grafikchips
Links:
- linux-gamers.net
- holarse-linuxgaming.de
- Linuxgames News und Infos aus der Spiele-Welt mit Linux
- Linux Game Tome
- Linux Gamers FAQ
- Loki Game Installers für Win-/Linux-Spiele
- Bluesnews