Anleitung für Hardware 3D-Beschleunigung
1.
Einführung
Was ist 3D Hardware-Beschleunigung und wofür brauche ich es?
Mit 3D Hardware-Beschleunigung wird dreidimensionales Rendern
vom Prozessor der Grafikkarte übernommen, anstatt wertvolle
Rechenleistung der CPU für das Darstellen von 3D Bildern abzuzweigen.
Dies wird auch als "Hardware-Beschleunigung" bezeichnet,
im Gegensatz zur "Software Beschleunigung", wo die CPU mit Hilfe
der Mesa Software Bibliotheken das Zeichnen übernimmt. Während
Xorg in der Regel 2D Hardware-Beschleunigung unterstützt, gibt es
bei der 3D-Beschleunigung einige Lücken. Spiele, 3D-CAD und
Modellierungen kommen in der Regel nicht ohne 3D
Hardware-Beschleunigung aus.
Wie erhalte ich 3D Hardware-Beschleunigung?
In den meisten Fällen existieren sowohl binäre als auch Open-Source
Treiber. Letztere sind zu bevorzugen, da wir nun einmal Linux verwenden
und Open Source eines unserer Hauptprinzipien ist. In machen Fällen
sind binäre Treiber oft die einzige Möglichkeit, wie zum Beispiel mit den
nVidia Karten. Binäre Treiber in Portage sind x11-drivers/nvidia-drivers
für nVidia-Karten und x11-drivers/ati-drivers für ATI-Karten.
Was ist DRI?
Die Direct Rendering
Infrastruktur, besser bekannt unter dem Kürzel DRI ist eine effiziente
Schnittstelle, die direkten und dennoch sicheren Zugang zur Grafikhardware
ermöglicht. Sie beinhaltet Änderungen am X Server, verschiedenen
Client-Bibliotheken und dem Kernel selbst. Hauptverwendungszweck für DRI sind
schnelle OpenGL Implementierungen.
Was ist der DRM und was verbindet es mit dem normalen Xorg?
Der DRM (Direct Rendering Manager) ist eine Erweiterung zu Xorg, die 3D
Hardware-Beschleunigung für bestimmte Karten bereitstellt, indem es die
entsprechenden Kernelmodule für Direct Rendering beinhaltet.
Zweck dieser Dokumentation
Diese Dokumentation richtet sich an alle, die Direct Rendering in der Xorg
Standardumgebung nicht zum Laufen bekommen.
Der DRM funktioniert mit den folgenden Treibern:
- 3dfx
- i8x0
- matrox
- rage128
- radeon
- mach64
- sis300
- via
Weitere Informationen erhält man auf der DRI Homepage.
Feedback
Weitere Vorschläge, Fragen oder Mails können an Donnie Berkholz gerichtet werden.
2.
Installation von Xorg und Kernel Konfiguration
Installation von Xorg
Lesen Sie bitte unseren Leitfaden zur Xorg Konfiguration um Xorg
zu installieren und einzurichten.
Kernelkonfiguration
Zunächst sollte der Chipsatz sondiert werden und die Unterstützung
für diesen aktiviert werden.
Befehlsauflistung 2.1: Prüfen des AGP-Chipsatzes |
# emerge pciutils; lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
|
Wenn Ihr Chipsatz vom Kernel nicht unterstützt wird, könnten Sie unter
Umständen Erfolg damit haben agp=try_unsupported als Kernelparameter
zu übergeben. Dies wird Intels generische Routinen für AGP Unterstützung
verwenden. Um diesen Parameter hinzuzufügen editieren Sie bitte Ihre
Bootloader Konfigurationsdatei!
Dies sollte mit meisten, wenn nicht allen, Kerneln funktionieren. In diesem Fall
erfolgte die Konfiguration unter einem gentoo-sources Standardkernel.
Befehlsauflistung 2.2: Konfigurieren des Kernels |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 2007-02-14 20:12 /usr/src/linux -> linux-2.6.18-gentoo-r4
# cd /usr/src/linux
# make menuconfig
|
Befehlsauflistung 2.3: Optionen in make menuconfig |
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Device drivers --->
Character devices --->
<M> /dev/agpgart (AGP Support)
<M> Intel 440LX/BX/GX, I8xx and E7x05 support
<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
|
Den Kernel kompilieren und installieren
Befehlsauflistung 2.4: Kompilieren und Installieren des Kernels |
# make && make modules_install
|
Vergessen Sie nicht die grub.conf oder lilo.conf
anzupassen und /sbin/lilo auszuführen, wenn Sie LILO benutzen.
3.
Konfiguration von Direct Rendering
Konfiguration von Xorg.conf
Öffnen Sie/etc/X11/xorg.conf mit Ihrem Lieblingseditor und fügen
Sie die Funktionen für DRI und GLX hinzu.
Befehlsauflistung 3.1: xorg.conf |
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
...
EndSection
...
Section "dri"
Mode 0666
EndSection
|
Änderungen in modules.autoload.d
Sie werden den Modulnamen, den Ihre Karte verwendet, zu
/etc/modules.autoload.d/kernel-2.6 hinzufügen müssen um
sicherzustellen, dass das Modul automatisch beim Systemstart geladen wird.
Befehlsauflistung 3.2: /etc/modules.autoload.d/kernel-2.6 editieren |
intel-agp
|
Notiz:
Wenn Sie agpgart als Modul kompiliert haben werden Sie es auch in
/etc/modules.autoload.d/kernel-2.6 hinzufügen müssen.
|
4.
3D Beschleunigung testen
Neustart mit dem neuen Kernel
Nachdem Sie Ihren Computer neu gestartet haben und sich als normaler Benutzer
angemeldet haben, wollen wir schauen, ob Direct Rendering aktiviert wurde und
wie gut es funktioniert. Stellen Sie bitte vor Ausführen dieser Befehle sicher,
dass das Paket mesa-progs installiert ist, da glxinfo und
glxgears in diesem enthalten sind.
Befehlsauflistung 4.1: Rendering testen |
$ startx
$ glxinfo | grep rendering
direct rendering: Yes
$ glxgears
|
Notiz:
Die FPS könnten durch die Aktualisierungsrate Ihres Monitors eingeschränkt
sein. Beachten Sie dies, falls glxgears lediglich 70-100 FPS berichtet.
games-fps/ut2004-demo ist ein besseres Werkzeug zum Benchmarken, da es
Leistungsergebnisse zurückgibt, welche im Alltag auftreten könnten.
|
5.
Performance Tuning
Das Meiste aus Direct Rendering herausholen
Einige Optionen können die Performance um 30 Prozent (oder mehr) steigern,
gegenüber den Standardeinstellungen. Setzen Sie diese in
/etc/X11/xorg.conf. Jedoch werden Sie zuerst überprüfen müssen
ob Ihr Motherboard und Ihre Grafikkarte diese Optionen unterstützen.
Lassen Sie uns zuerst nachsehen ob Ihre Grafikkarte Fast-Writes unterstützt.
Wir tun dies durch genaue Betrachtung der Ausgabe von lspci. Genauer
gesagt sehen wir uns die "VGA compatible controller" Informationen an.
Befehlsauflistung 5.1: Grafikkarte überprüfen |
# lspci -vv
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY (prog-if 00 [VGA])
. . .
Capabilities: [58] AGP version 2.0
Status: RQ=48 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
|
Es wird eine ganze Menge an Informationen produziert; wir suchen nach FW
im "Status" Unterabschnitt des AGP "Capabilities" Abschnitts. Wenn FW+
in der "Status" Zeile vorhanden ist, bedeutet es, dass Ihre Karte Fast-Writes
unterstützt. Wir können nun überprüfen ob das Motherboard Fast-Writes
unterstützt.
Wichtig:
Wenn Sie nicht FW+ sondern stattdessen FW- sehen, können Sie
Fast-Writes in xorg.conf nicht aktivieren. Ihre Karte unterstützt
Fast-Writes nicht.
|
Lassen Sie uns nun sicherstellen, dass auch das Motherboard Fast-Writes
unterstützt. Dieses Mal ist der "Host bridge" Abschnitt Ihrer lspci
Ausgabe relevant.
Befehlsauflistung 5.2: Überprüfung des Motherboards |
# lspci -vv
00:00.0 Host bridge: Intel Corporation 82830 830 Chipset Host Bridge (rev 02)
. . .
Capabilities: [a0] AGP version 2.0
Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA+ ITACoh- GART64- HTrans- 64bit- FW+ AGP3- Rate=x1,x2,x4
|
Untersuchen Sie auch hier den "Status" Unterabschnitt Ihres AGP "Capabilities"
Abschnitts. Suchen Sie nach FW. Wenn Sie FW+ sehen unterstützt
Ihr Motherboard Fast-Writes.
Wichtig:
Denken Sie daran dass die Information über Ihre Grafikkarte und die Information
über Ihr Motherboard die gleiche FW Fähigkeit anzeigen müssen. Wenn
eines der beiden Geräte FW- in "Status" anzeigt, können Sie Fast-Writes
in xorg.conf nicht aktivieren.
|
Vorausgesetzt alles ist soweit in Ordnung und Ihr Motherboard und Ihre
Grafikkarte unterstützten Fast-Writes, lassen Sie uns nun die Option in
/etc/X11/xorg.conf aktivieren und die beste Performance aus Ihrer
Hardware herausholen.
Befehlsauflistung 5.3: xorg.conf |
Section "Device"
Option "AGPMode" "4"
Option "AGPFastWrite" "True"
Option "EnablePageFlip" "True"
...
EndSection
|
Warnung:
Aktivieren von AGPFastWrite bei einem VIA-Chipsatz wird mit großer
Wahrscheinlichkeit dazu führen, dass Ihr Rechner einfriert. VIA-Chipsätze
arbeiten nicht gut mit Fast-Writes zusammen, setzen Sie diese Einstellung also
auf eigenes Risiko.
|
Notiz:
Denken Sie daran, dass Sie zuerst im BIOS die entsprechenden Optionen aktiveren
müssen, wenn Sie wollen, dass Fast-Writes korrekt funktionieren.
|
Für weitere Tuning Optionen sollte die Feature Matrix oder
die Feature
Liste auf Sourceforge konsultiert werden.
6.
Problembehebung
Es funktioniert einfach nicht. Ich habe kein Rendering und ich weiß
nicht warum.
Versuchen Sie ein modprobe radeon vor dem Starten des X-Servers
(ersetzen Sie radeon durch den Namen ihres Treibers).
Versuchen Sie außerdem agpgart direkt in den Kernel zu kompilieren, anstatt
ein Modul zu erstellen.
Beim Ausführen von startx erhalte ich folgenden Fehler:
"[drm] failed to load kernel module agpgart"
Dies erscheint immer, wenn agpgart direkt in den Kernel einkompiliert wird.
Sie können dies getrost ignorieren.
Ich besitze eine Radeon und möchte TV-Out nutzen
Die ursprünglich vom GATOS Projekt
entwickelten Treiber wurden in Xorgs Codebasis eingebunden. Sie brauchen
nichts besonderes, um TV-Out nutzen zu können;
x11-drivers/xf86-video-ati wird gut funktionieren.
Es funktioniert immer noch nicht. Meine Karte ist so neu und
megaobercool, dass sie nicht unterstützt wird.
Probieren Sie die binären Treiber aus. Eine Liste für ati-drivers gibt es
auf http://ati.amd.com/support/drivers/linux/linux-radeon.html (für
x86) und auf
http://ati.amd.com/support/drivers/linux64/linux64-radeon.html (für
amd64). Sollte es für Ihre Karte noch keine Treiber geben, probieren Sie fbdev.
Es ist langsam, funktioniert aber.
Ich habe eine PCI-Karte, die nicht arbeiten will. Hilfe!
Bearbeiten Sie /etc/X11/xorg.conf. Aktivieren Sie ForcePCIMode
im Abschnitt "Device".
Befehlsauflistung 6.1: Aktivieren von ForcePCIMode |
Option "ForcePCIMode" "True"
|
7.
Danksagungen
-
Christopher Webber für seinen Vorschlag, in den FAQ den Kernel neu zu
kompilieren.
-
Steve für seinen Vorschlag, die Konsistenz zwischen dri und DRI in der
XF86Config
8.
Referenzen
- http://forums.gentoo.org/viewtopic.php?t=46681
- http://forums.gentoo.org/viewtopic.php?t=29264
- http://dri.freedesktop.org/
- http://www.retinalburn.net/linux/dri_status.html
Die Inhalte dieses Dokuments sind unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert.
|