Disclaimer :
Dit document is niet juist en is niet meer onderhouden.
|
Handleiding voor 3D hardware
1.
Inleiding
Wat is hardware 3D en waarom zou ik dat willen?
Met 3D berekeningen via de grafische processor (GPU) worden
3D objecten weergegeven zonder buitensporig gebruik van de hoofd processor
(CPU), waardoor veel rekenkracht bespaard kan worden. Er wordt vaak
gesproken over "hardware accelaration" in plaats van "software accelaration",
omdat zonder gebruik te maken van de 3D mogelijkheden van de GPU alle 3D
berekeningen via Mesa software bibliotheken worden gedaan. Dit kost echter
veel meer rekenkracht en dat wilt wilt u waarschijnlijk voorkomen. Xorg
maakt echter standaard alleen gebruik van de 2D hardware, maar niet
van de mogelijkheden voor 3D. Deze 3D hardware ondersteuning is met name nuttig
voor spellen, 3D CAD en modelleren.
Hoe maak ik gebruik van mijn 3D hardware?
In veel gevallen bestaan zowel open source als binaire drivers. Open source
drivers worden aangeraden omdat open soiree een van de onderliggende principes
van het Linux besturingsysteem is. Soms zijn de binaire drivers echter de enige
optie, zoals bij de nVidia kaarten. Binaire drivers zijn bijvoorbeeld
x11-drivers/nvidia-driver en mx11-drivers/nvidia-legacy-drivers voor nVidia
kaarten en media-video/ati-drivers voor ATI kaarten. Open source drivers zijn
onder andere media-video/kyro-kernel voor KyroII kaarten en
media-video/ati-gatos voor ATI kaarten, waarmee wordt geprobeerd om ATI's video
ondersteuning beter te gebruiken.
Wat is DRI?
De Direct Rendering
Infrastructure, ook wel DRI genoemd, is een raamwerk dat de aansturing
van de grafische hardware op een efficiënte en veilige manier regelt. Het bevat
aanpassingen aan de X server, verschillende bibliotheken en de kernel. Een van
de belangrijkste toepassingen van DRI is OpenGL, waarmee de snelle OpenGL
implementatie wordt aangestuurd.
Wat is X11-DRM en hoe werkt het samen met Xorg?
X11-DRM is een uitbreiding voor Xorg, waarmee 3D hardware aansturing
wordt toegevoegd, door de benodigde kernel modules toe te voegen.
Doel
Deze handleiding is voor degenen die direct rendering niet werkende krijgen
met enkel Xorg. Xorg-DRM werkt voor 3dfx, gamma, intel, matrox, rage128, radeon,
mach64 en sis300 drivers. Degenen met een VIA kaart moeten x11-drm niet
gebruiken, maar kiezen voor de ingebouwde DRI in de nieuwere kernels
(>2.6.13). Zie ook de DRI pagina
voor meer informatie.
Feedback
Voor suggesties, vragen enzovoorts, email Donnie Berkholz.
2.
Het installeren van Xorg en instellen van de kernel
Het installeren van Xorg
Lees de X Server Handleiding om Xorg
te installeren en in te stellen.
Instellen van de kernel
Zoek eerst uit welke chipset u gebruikt en activeer de ondersteuning
hiervoor.
Codevoorbeeld 2.1: De AGP chipset opzoeken |
# emerge pciutils; lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
|
Als uw chipset niet wordt ondersteund door de kernel, kan het zijn dat het
meegeven van de optie agp=try_unsupported aan de kernel u de
ondersteuning levert. U kunt deze parameter toevoegen via de instellingen van
uw bootloader!
De meeste, of zelfs alle, kernels horen de onderstaande opties te hebben. We
hebben hier gebruik gemaakt van gentoo-sources-2.4.20-r5.
Codevoorbeeld 2.2: Het instellen van de kernel |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 22 May 29 18:20 /usr/src/linux -> linux-2.4.20-gentoo-r5
# cd /usr/src/linux
# make menuconfig
|
Codevoorbeeld 2.3: make menuconfig opties |
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Character devices --->
<*> /dev/agpgart (AGP Support)
[M] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support
< > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
|
Zorg ervoor dat de Direct Rendering Manager (DRM) uit staat. Het
X11-DRM pakket zal zijn eigen interface gebruiken.
Compileer en installeer de kernel
Codevoorbeeld 2.4: Compileren en installeren van de kernel |
# make dep && make clean bzImage modules modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot
|
Indien u de kernel anders wil noemen dan bzImage, zorg er dan voor
dat u deze naar /boot/naamvanimage kopieert. Vergeet niet
grub.conf of lilo.conf in te stellen en /sbin/lilo uit te voeren indien
u LILO gebruikt.
3.
Installeren van X11-DRM en instellen van direct rendering
Het installeren van X11DRM
Codevoorbeeld 3.1: Het installeren van X11-drm |
# emerge x11-drm
|
Het instellen van Xorg.conf
Sommige chips werken alleen wanneer u xorg-x11 overnieuw compileert met
USE="insecure-drivers". Dit geldt voor de mach64, unichrome en savage
chips onder xorg-x11-6.8.2 en ook voor de mach64 en unichrome chips onder
xorg-x11-6.8.99.x. Gebruikers met een savage kaart moeten xorg-x11-6.8.99.x
niet gebruiken, omdat de ondersteuning voor savage in deze versie niet werkt.
Codevoorbeeld 3.2: Overnieuw compileren van xorg-x11 |
# echo "x11-base/xorg-x11 insecure-drivers" >> /etc/portage/package.use
# emerge xorg-x11
|
Open het bestand /etc/X11/xorg.conf met uw tekst editor en pas
deze aan om DRI en GLX te activeren.
Codevoorbeeld 3.3: xorg.conf |
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
...
EndSection
...
Section "dri"
Mode 0666
EndSection
|
Indien u een andere kaart hebt, vervang dan "radeon" door de juiste naam.
Veranderingen in modules.autoload.d
Om de module voor uw grafische kaart automatisch te starten wanneer uw systeem
opstart, u de module naam toevoegen in
/etc/modules.autoload.d/kernel-2.6.
Codevoorbeeld 3.4: Het aanpassen van /etc/modules.autoload.d/kernel-2.6 |
intel-agp
|
Nota:
Als u agpgart als losse module hebt gecompileerd, moet u deze toevoegen in
/etc/modules.autoload.d/kernel-2.6.
|
4.
Het testen van de 3D aansturing
Opstarten met de nieuwe kernel
Start uw computer op met de nieuwe kernel en log in als een standaard gebruiker,
zodat we kunnen kijken of direct rendering nu werkt en of u er wel zo veel
voordeel bij hebt als dat gezegd wordt.
Codevoorbeeld 4.1: Het renderen testen |
$ startx
$ glxinfo | grep rendering
direct rendering: Yes
$ glxgears
|
5.
De CVS broncode gebruiken
Waarschuwing:
Doe dit niet indien het al werkt!
|
Hebt u de CVS broncode wel nodig?
Allereerst moet u controleren of het x11-drm pakket werkt. Indien dat
niet het geval is en u hebt uw logbestanden erop nagekeken dat het niet
een foute instelling is, dan kunt u overwegen om de CVS broncode te gebruiken.
Hier vindt u ook dagelijkse updates van de drivers die u kunt gebruiken als
u liever geen volledige CVS op zet.
Ondersteunt de CVS broncode uw kaart?
Controleer de lijst van
ondersteunde kaarten om te zien of de CVS versie uw kaart ondersteunt.
Als dat niet het geval is, kunt u de drivers voor een gelijkwaardige kaart
proberen.
Volg de CVS instructies
Het DRI project heeft een eigen document met instructies over het gebruik
van de CVS broncode. Lees dit document en volg de
instructies om X.org te installeren.
Het installeren van de CVS
Kijk of de DRI module(s) voor de kernel zijn gecompileerd:
Codevoorbeeld 5.1: Verificatie van de kernel module(s) |
# cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel; ls
|
Voor de 3df Voodoo kaart, zie tdfx.o. Voor de Matrox G200/G400 zie
mga.o. Voor de ATI Rage 128, zie r128.o. Voor de ATI
radeon, zie radeon.o en voor de Intel i810, zie i810.
Als de DRI module(s) niet juist zijn gecompileerd, kijk dan eerst of u de
juiste versie van de kernel gebruikt. De allernieuwste kernels worden nog niet
altijd ondersteund.
Installeer nu Xorg overnieuw. Het is verstandig om een back-up te maken van
xorg-x11.
Codevoorbeeld 5.2: Een back-up maken van xorg-x11 |
# quickpkg xorg-x11
# make install
|
Volg nu de bovenstaande paragraaf "het instellen van xorg".
Om de juiste DRM modules te laden voor de kernel, kopieert u de module
naar /lib/modules/'uname -r'/kernel/drivers/char/drm/ en draait
modules-update. Daarna start u de X server overnieuw. Wanneer u een
andere kernel draait dan waarvoor u de module maakt, gebruikt u de naam
van de kernel in plaats van 'uname -r',.
Waarschuwing:
Zorg ervoor dat u eerst de oude DRI modules de-activeert! Let er ook op dat
sommige DRM modules niet werken als de agpgart module niet eerst is geladen.
|
6.
De prestaties verbeteren
Het meeste uit direct rendering krijgen
Sommige opties kunnen de prestaties met wel 30% (of meer) verbeteren ten op
zichte van de standaard instellingen. U kunt de opties aanzetten via
/etc/X11/xorg.donf.
We gaan nu eerst kijken of uw video kaart "fast writes" ondersteunt. We doen dit
door de resultaten van het commando lspci te bekijken. We zoeken hier
specifiek naar de informatie voor de "VGA compatible controller"
Codevoorbeeld 6.1: Video kaart check |
# 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
|
Tussen al deze informatie zijn we op zoek naar de letters FW in het stukje
"Status" van het onderdeel AGP "Capabilites". Als we FW+ vinden, betekent
dit dat de video kaart "fast writes" ondersteunt. We gaan dan kijken of het
moederbord ook "fast writes" ondersteunt.
Belangrijk:
Wanneer u FW- ziet staan in plaats van FW+, dan kunt u "fast
writes" niet instellen in xorg.conf. Uw grafische kaart ondersteunt
dit dan niet.
|
Nu gaan we kijken of het moederbord ook "fast writes" ondersteunt. Deze keer
zoeken we in het stuk "Host bridge" van uw lspci resultaten.
Codevoorbeeld 6.2: Motherboard check |
# 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
|
Ook hier kijken we naar "Status" in het onderdeel AGP "Capabilities". Zoek hier
weer naar FW. Indien u FW+ ziet staan, ondersteunt uw moederbord
"fast writes".
Belangrijk:
Let er op dat zowel bij uw video kaart, als bij uw moederbord, hetzelfde moet
staan bij FW. Als een van beiden FW- laat zien, kunt u geen
gebruik maken van "fast writes" via xorg.conf.
|
Als zowel uw moederbord als uw grafische kaart ondersteuning voor "fast writes"
geeft, kunt u de optie inschakelen in /etc/X11/xorg.conf en betere
prestaties van uw hardware verwachten
Codevoorbeeld 6.3: xorg.conf |
Section "Device"
Option "AGPMode" "4"
Option "AGPFastWrite" "True"
Option "EnablePageFlip" "True"
EndSection
|
Waarschuwing:
Het inschakelen van AGPFastWrite op een VIA Chipset zal uw machine zeer
waarschijnlijk laten vast lopen. VIA Chipsets werken slecht samen met "fast
writes", het gebruik van deze optie is dus voor eigen risico.
|
Nota:
Denk eraan, om "fast writes" juist te laten functioneren moet u eerst de juiste
opties instellen in uw BIOS.
|
Als u meer opties wilt instellen, kijk dan in de feature matrix
(Engelstalig) op de DRI web site of op de features
lijst (Engelstalig) op Sourceforge.
7.
Problemen
Het werkt niet. Ik heb mijn kernel overnieuw gecompileerd of de nieuwe
kernel net gestart.
Wanneer u een nieuwe kernel compileert of een andere kernel gaat gebruiken,
moet u de kernel modules ook overnieuw compileren. U hoeft xorg-x11 niet
overnieuw te compileren, x11-drm echter wel.
Het werkt niet. Ik heb geen rendering, maar ik weet niet waarom
niet
Probeer insmod radeon voordat u de X server start. Probeer ook agpgart
in de kernel te compileren, in plaats van als module.
Als ik startx draai, krijg ik de foutmelding: "[drm] failed to
load kernel module agpgart"
Dit komt omdat u agpgart in de kernel hebt gecompileerd in plaats van als
module. Negeer deze waarschuwing, tenzij u er problemen mee hebt.
Direct rendering werkt niet, en in /var/log/Xorg.0.log staat een
foutmelding dat de driver te oud is.
U gebruikt de x11-drm driver niet. Kijk na of u DRM en de driver in uw kernel
hebt. Dat is niet de bedoeling.
Ik heb een Radeon en wil TV-out.
Probeer de ati-gatos drivers. emerge -s gatos.
Het werkt niet. Mijn kaart is zo nieuw dat er nog geen enkele
ondersteuning voor is.
Probeer de binary drivers. Voor ATI-drivers, kijk in de lijst op
http://www.schneider-digital.de/html/download_ati.php (Engelstalig).
Als u hier geen ondersteuning vind, kunt u altijd nog fbdev gebruiken. Het is
traag, maar het werkt.
Ik heb een PCI kaart die niet werkt
Stel bij de paragraaf "Device" de functie ForcePCIMode in:
Codevoorbeeld 7.1: ForcePCIMode gebruiken |
Option "ForcePCIMode" "True"
|
8.
Dankwoord
-
Christopher Webber voor de vraag over het veranderen of overnieuw
compileren van de kernel.
-
Steve, voor het wijzen op de verschillen tussen dri en DRI in XF86Config.
9.
Referenties (Engelstalig)
- 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
The contents of this document are licensed under the Creative Commons -
Attribution / Share Alike license.
|