Gentoo Logo

Anleitung für Hardware 3D-Beschleunigung

Inhalt:

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)
(Je nach entsprechender Hardware kann dies anders aussehen.)

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
(Stellen Sie sicher, dass /usr/src/linux auf
Ihren aktuellen Kernel zeigt.)
# 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)
  (Die agpgart-Option erscheint unter 64-Bit Kerneln nicht; Wählen Sie einfach die Unterstützung für Ihren Chipsatz.)
  <M> Intel 440LX/BX/GX, I8xx and E7x05 support
(Wählen Sie Ihren Chipsatz anstatt des hier genannten.)
  <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"
     (Ersetzen Sie radeon mit dem Namen Ihres Treibers.)
     ...
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

(Ändern Sie den Modulnamen wie benötigt.)
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
(Es ist nicht notwendig Module für Ihren Treiber oder agpgart zu laden, auch wenn Sie diese als Module kompiliert haben.)
(Diese werden automatisch geladen.)
$ glxinfo | grep rendering
direct rendering: Yes
(Kommt hier "No" haben Sie keine 3D Beschleunigung)
$ glxgears
(Prüft die Framerate pro Sekunde (FPS) im Standardfenster. Diese sollte deutlich höher sein, als vor der Konfiguration des DRMs. Führen Sie diesen Test am besten durch, wenn die CPU nicht beschäftigt ist.)

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"
(Dies steigerte die FPS von 609 auf 618.)
     Option     "AGPFastWrite" "True"
(Dies hatte keinen messbaren Effekt, kann aber die Instabilität des Computers erhöhen.)
(Eventuell muss es im BIOS zusätzlich aktiviert werden.)
     Option     "EnablePageFlip" "True"
(Dies steigerte die FPS von 618 auf 702. Angeblich soll es riskant sein, aber wenige Leute haben Probleme gemeldet.)
     ...
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

  1. Christopher Webber für seinen Vorschlag, in den FAQ den Kernel neu zu kompilieren.
  2. Steve für seinen Vorschlag, die Konsistenz zwischen dri und DRI in der XF86Config

8.  Referenzen

  1. http://forums.gentoo.org/viewtopic.php?t=46681
  2. http://forums.gentoo.org/viewtopic.php?t=29264
  3. http://dri.freedesktop.org/
  4. http://www.retinalburn.net/linux/dri_status.html


Drucken

Aktualisiert 23. August 2007

Zusammenfassung: Dieses Dokument ist ein Leitfaden um 3D Beschleunigung unter Verwendung des DRM mit Xorg in Gentoo Linux einzurichten.

Donnie Berkholz
Autor

Jorge Paulo
Bearbeiter

Joshua Saddler
Bearbeiter

Jens Schittenhelm
Übersetzer

Jan Hendrik Grahl
Korrektor

Marcel Klein
Übersetzer

Tobias Heinlein
Übersetzer

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Bytemark

Bytemark

Linux World Expo

Linux World Expo

Copyright 2001-2008 Gentoo Foundation, Inc. Questions, Comments? Contact us.