Linux – 3D OpenGL

+ =

Direct Rendering Infrastructure (DRI)


DRIDer 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:

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-GLXUtah-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

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 settings

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.

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:

nach oben