Hardware 3D Accelerationsvejledning
1.
Introduktion
Hvad er hardware 3D acceleration og hvorfor vil jeg have det?
Med hardware 3D acceleration, bruger du den tre-dimensionelle
gengivelsesgrafik-processor på dit grafikkort i stedet for at optage
værdifulde CPU-ressourcer for at tegne 3D-billeder. Det er også
refereret til, som "hardware acceleration" i stedet for "software
acceleration", fordi at uden denne 3D acceleration ville din CPU være
tvunget til at tegne alt, selv ved at bruge
Mesa-softwaregengivelsesbiblioteker, som tager en stor del af
processorydelsen. Imens Xorg typisk understøtter 2D hardware
acceleration, mangler den ofte hardware 3D
acceleration. Tre-dimensionel hardware acceleration er værdifuldt i
situationer, hvor det kræver gengivelse af 3D objekter, såsom spil, 3D
CAD og modelering.
Hvordan får jeg hardware 3D acceleration?
I mange situationer, eksisterer både binære og open-source (frie)
drivere. Open-source drivere ses helst, da vi bruger Linux og
open-source er en af de underliggende principper. Somme tider er
binære drivere det eneste valg, det er f.eks tilfældet med nVidias
grafikkorte. Binære drivere inkluderer media-video/mgavideo til
Matrox og media-video/ati-drivers til ATI kort. Andre open-source
drivere inkluderer media-video/kyro-kernel til KyroII kort og
media-video/ati-gatos til ATI cards, hvis mål er at understøtte ATI's
video færdigheder i større grad.
Hvad er DRI?
Direct Rendering Infrastructure (dri.sourceforge.net), også
kendt som DRI, er et framework for at tillade direkte adgang til
grafik-hardwaren på en sikker og effektiv metode. Det inkluderer
ændringer til X-serveren med nogle klient-biblioteker og til
kernen. Den første og brugbare løsning af DRI er at skabe hurtige
OpenGL-gennemførsler.
Hvad er X11-DRM og hvordan relaterer den sig til normalt Xorg?
X11-DRM er en forøgelse af Xorg som tilføjer 3D
acceleration til grafikkorte, ved at tilføje de moduler der er
nødvendige for direct rendering til kernen.
Formålet
Denne vejledning er for folk der ikke kan få deres direct rendering
til at virke med Xorg alene. X11-DRM virker til 3dfx, gamma, intel,
matrox, rage128, radeon, mach64 og sis300 driver serierne. Se DRI hjemmesiden for mere info
og dokumentation.
Feedback
For forslag, spørgsmål etc., email Donnie Berkholz.
2.
Installation af Xorg og opsætning af din kerne
Installation af Xorg
Læs venligst vores Xorg
opsætningsguide(engelsk) for at få Xorg op at køre.
Opsætning af din kerne
Undersøg dit chipset og aktiver kun dette.
Kode oversigt 2.1: Undersøgelse af dit AGP chipset |
# emerge pciutils; lspci | grep AGP
# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
|
Hvis ikke dit chipset understøttes af kernen, så kan du måske opnå
nogen succes ved at sende agp=try_unsupported med som et kerne
parameter. Dette vil bruge Intel's generiske routiner til AGP
support. For at tilføje denne parameter skal du redigere din
bootloaders opsætningsfil!
De fleste, hvis ikke alle, kerner skulle have disse
indstillinger. Dette var opsat ved at bruge gentoo-sources-2.4.20-r5:
Kode oversigt 2.2: At konfigurere kernen |
# 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
|
Kode oversigt 2.3: make menuconfig muligheder |
Processor type and features --->
<*> MTRR (Memory Type Range Register) support
Character devices --->
<M> /dev/agpgart (AGP Support)
[*] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support
[ ] Direct Rendering Manager (XFree86 DRI support)
|
Hvis du bruger en 2.4 kerne, så vær sikker på at Direct Rendering
Manager (DRM) er slået fra. X11-DRM pakker leverer sin egen. Brugere
af 2.6 kerne bør slå den Direct Rendering Manager (DRM) til da
X11-DRM pakken pt. ikke understøtter 2.6 kerner endnu.
At kompilere og installere din kerne
Kode oversigt 2.4: Kompilere og installere kerne |
# make dep && make clean bzImage modules modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot
|
Hvis du vil have at din kerne skal kaldes noget andet end bzImage,
vær sikker på at kopiere det til /boot/yourname i stedet for. Glem
ikke at opsætte grub.conf eller lilo.conf og køre /sbin/lilo hvis du
bruger LILO.
3.
Installation af X11-DRM og opsætning af direct rendering
Installation af X11-DRM
Advarsel:
Hvis du er bruger af en 2.6 kerne, så spring denne sektion over og gå
til Configure Xorg.conf.
|
Kode oversigt 3.1: At installere X11-DRM |
# emerge x11-drm
|
Opsætning af Xorg.conf
Åben /etc/X11/xorg.conf med din
yndlings-redigeringsprogram og rediger det til at aktivere DRI og GLX.
Kode oversigt 3.2: xorg.conf |
...
Section "Module"
Load "dri"
Load "glx"
...
EndSection
...
Section "Device"
Driver "radeon"
...
EndSection
...
Section "dri"
Mode 0666
EndSection
|
Hvis du bruger en anden driver, erstat "radeon" med din driver.
4.
Testning af 3D acceleration
Genstart til din nye kerne
Genstart din computer for at køre den nye kerne. Det er tid til at se
om du har direct rendering og hvor god den er.
Kode oversigt 4.1: Test af gengivelse |
# startx
# glxinfo | grep rendering
direct rendering: Yes
# glxgears
|
5.
Brug af CVS-kildekoderne
Advarsel:
Gør ikke dette hvis din pakke virkede.
|
Behøver jeg CVS-kildekoderne?
Først skal du se efter om x11-drm pakken virker. Hvis det ikke gør
og tjekket dine log filer for at verificere at det ikke er en
konfigurationsfejl, så skal du måske overveje CVS kildekoderne. Der er
også daglige snapshots af driverne til rådighed, hvis du ikke har lydt
til at bygge hele den fulde CVS.
Understøtter CVS-kilderne dit kort?
Se efter på DRIs understøttede
grafikkort-liste for at se om CVS understøtter dit kort. Selvom
den ikke gør, men understøtter en lignende grafikkort, prøv det
alligevel.
Følg CVS instruktionerne
DRI projektet har selv et dokument omkring CVS kompilering. Læs
venligst dokumentet
(engelsk) og følg instruktionerne op til Installing for
XFree86 eller
Installing for X.org parterne.
Installation af CVS
Verificer at DRI-kerne-modul(er) er blevet bygget til dit system:
Kode oversigt 5.1: Verifikation |
# cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel; ls
|
Til 3dfx Voodoo, bør du se tdfx.o. Til Matrox
G200/G400, bør du se mga.o. Til ATI Rage 128, bør du se
r128.o. Til ATI Radeon, bør du se
radeon.o. Til Intel i810, bør du se
i810.o. Hvis DRI-kerne-modul(er) fejler ved bygningen,
bør du verificere at du bruger den rigtige version af
Linux-kernen. Den sidste nye kerne er ikke altid understøttet.
Installer hen over din XFree86 eller X.org installation. Du vil måske sørge for at
lave en sikkerhedskopi af xfree eller xorg-x11.
Kode oversigt 5.2: At backe Xorg op |
# quickpkg xorg-x11
# make install
|
Følg "Konfigurer Xorg" sektionen ovenfor.
For at hente det rigtige DRM modul i din kørende kerne, skal du
kopiere kerne modulet til /lib/modules/`uname
-r`/kernel/drivers/char/drm/ og kør modules-update og
genstart din X server. Hvis du ikke kører den kerne som du vil bruge
det i, så skal du i stedet for `uname -r`, bruge den kernes navn.
Advarsel:
Vær sikker på at du fjerner et ældre DRI kerne modul, der måske
allerede er hentet. Bemærk at nogle DRM moduler kræver at agpgard
modulet bliver hentet først.
|
6.
Fusk lidt med din ydelse
Få mest ud af direct rendering (direkte gengivelse)
Et par få valg kan forbedre ydelsen med op til 30 procent (eller mere)
end standarden. Sæt dem i /etc/X11/xorg.conf.
Kode oversigt 6.1: xorg.conf |
Section "Device"
Option "AGPMode" "4"
Option "AGPFastWrite" "True"
Option "EnablePageFlip" "True"
...
EndSection
|
Hvis du vil have et sæt på endnu flere egenskaber, tag et kig på features
listing på DRIs hjemmeside.
7.
Fejlfinding
Det virker ikke. Jeg har lige rekompileret min kerne eller
skiftet til en ny en.
Hver gang du bygger din kerne om eller skifter til en anden kerne
bliver du nødt til at bygge dit kerne modul igen. Bemærk at du ikke er
nødt til at emerge xfree eller xorg-x11 igen, men at du bliver nødt
til at emerge x11-drm igen.
Det virker ikke. Jeg har ikke rendering, og jeg ved ikke hvorfor.
Prøv insmod radeon før du starter X-serveren. Prøv også at
bygge agpgart som en modul i stedet for ind i kernen.
Når jeg kører startx, får jeg følgende fejlbesked: "[drm] failed to load kernel module agpgart"
Det er fordi du har kompileret agpgart ind i kernen, i stedet for som
et modul. Ignorér det medmindre du har problemer.
Direct rendering virker ikke, og i /var/log/Xorg.0.log har jeg en fejl om at driver-versionerne er for lille.
Du bruger ikke x11-drm driveren. Se efter om du har kompileret DRM
og driveren ind i kernen, som du ikke skulle.
Jeg har et Radeon grafikkort, og jeg vil gerne have TV-Out.
Kig efter ati-gatos driverne. emerge -s gatos.
Det virker ikke. Mit kort er så utroligt nyt og sej, at det ikke er understøttet overhovedet.
Prøv at brug de binære drivere. Til ati-driverne, er der en liste på
http://www.schneider-digital.de/html/download_ati.html.
Hvis de ikke understøtter det, brug fbdev. Det er langsomt, men det
virker.
Jeg har et PCI-grafikkort og det virker ikke. Hjælp!
I sektionen "Device" aktivér ForcePCIMode.
Kode oversigt 7.1: At slå ForcePCIMode til |
Option "ForcePCIMode" "True"
|
8.
Anerkendelse
-
Christopher Webber for at foreslå et fejlfindings spørgsmål omkring
at skifte eller rekompilere kerner
-
Steve, for at foreslå konsistens mellem tilfældene af dri og DRI i
XF86Config
9.
Referencer
- http://forums.gentoo.org/viewtopic.php?t=46681
- http://forums.gentoo.org/viewtopic.php?t=29264
- http://dri.sourceforge.net/
- http://www.retinalburn.net/linux/dri_status.html
Indholdet i dette dokument er autoriseret under en Creative Commons -
Attribution / Share Alike licens.
|