VIA chipsetes alaplapi videokártyák DRI használa

A HupWiki-ből...

Ez a leírás az alábbi, angol nyelvű HOWTO alapján készült: http://sourceforge.net/docman/display_doc.php?docid=26963&group_id=102048 Köszönet érte Jaxon Lee-nek

az alapverziót fordított: Kyjan

Wikibe dolgozta: Bbt


Tartalomjegyzék

Feltevések

  • Először is, had szögezzem le, hogy a dokumentum megírásakor azt feltételezem, hogy nem vagy teljesen kezdő Linuxból, tehát a forráskódú programok lefordítása, illetve az esetlegesen bekövetkező parancssori hibaelhárítás nem fog számodra gondot okozni.
  • Feltételezem, hogy a 2.6.x-es kernelszériát használod. Az eredeti leírás szerzője szerint elvileg működnie kell 2.4.x-es szériával is, de sem ő, sem én nem próbáltuk ezt ki. Rendelkezésedre kell állnia a rendszereden futó kernel-forrásnak.

(ezt pl. UHU esetében a dpkg -i parancs segítségével tudod telepíteni a 2. CD-ről, Frugalware esetén egy pacman -Sy kernel-source megteszi).

  • Olyan hardware-dnek kell lennie, amelyeket ez a projekt támogat. Az Unichrome projekt a VIA unichrome 3D grafikus kártyákat támogatja, amelyek a következő alaplapi chipsetekkel fordulnak elő: VIA CLE266, KM400/KN400, K8M8000 és PM800/CN400.
  • Ezek az alaplapi chip-setek többnyire a VIA Epia-M rendszerekben, valamint néhány laptopban találhatók. (Az én laptopom pl. egy ECS G320-as, és CLE266-os chipsettel rendelkezik.)

Amire szükségünk lesz

Ezek a via.ko és a drm.ko. Betöltés után egyszerűen "via" és "drm" néven futnak, ha lsmod segítségével lekéred a betöltött modulok listáját, így keresd őket. (A másik kettő, amire szükségünk lesz, hogy a DRM működjön, a via_agpés az agpart. Ezek már nagy valószínűséggel be vannak konfigurálva és be vannak töltve, amennyiben bármelyik népszerű disztribúciót használod. Ha mégsem, akkor kernelfordításra lesz szükséged, az azonban már nem ennek a HOWTO-nak a tárgya. Néhány DRM modul elérhető a kernel által, de sajnos a VIA nem tartozik közéjük. Tehát nekünk kell lefordítanunk, és betennünk a megfelelő helyre. A VIA DRM nem része az Unichrome projektnek. Van egy saját honlapja freedesktop.org-on, ahonnét le tudod tölteni a CVS snapshotokat. A honlap címe: http://dri.freedesktop.org/snapshots

  • A Unichrome Xorg képernyőmeghajtó.

Ezt a csomagot megtaláljátok a Unichrome Sourceforge oldalán: http://sourceforge.net/projects/unichrome a unichrome-xfree86 alatt. (Ne hagyd, hogy ez elbátortalanítson, működik x.org alatt itt tökéletesen. Töltsd le a release-30 fájlt, aminek a dátuma 2005. 01.26. Ez a fájl ad neked egy x.org drivert, aminek a neve via_drv.o. Ez már önmagában is egy jó alternativa a vesa driver helyett, amit jelenleg használsz. Ez már önmagában is megerősíti a video lejátszást, de a DRI még nem működik. Még!

  • A unichrome-3D-meghajtók.

Ez itt a varázslat. Töltsd le ezt a csomagot a Unichrome Sourceforge oldaláról. Ez a csomag tartalmaz két pici fájlt, amelyek mindent megcsinálnak. Ezek a fájlok a LibGL.so.1.2 és a unichrome_dri.so.

Fordítsunk le mindent

  • Először is ellenőrizd, hogy a kernel forrásod tökéletesen fel van-e telepítve. Ha nincsen, akkor ez a része a dolognak nem fog működni. Csomagold ki a VIA DRM snapshot-ot, és nyugodtan hagyj figyelmen kívül mindent a /dripkg/drm/linux-core könyvtáron kívül. Lépj be ebbe a könyvtárba, és gépeld be a következő parancsot:
make DRM_MODULES="via" 

(nem szükséges, hogy root legyél.) Dőlj hátra nagyjából két percig, és figyeld, ahogy a modul lefordul. Amikor végzett, másold a via.ko és a drm.ko modulokat rootként a

/lib/modules/2.6.xxx/kernel/drivers/char/drm/ 

könyvtárba. Gépeld be a

depmod -a 

parancsot, hogy a rendszer regisztrálja a drivert. Most pedig teszteljük le a munkánkat a

modprobe via 

parancs kiadásával. Ezzel egy időben be kell töltődnie a drm modulnak automatikusan. Hogy ellenőrizni tudd a modulok hibamentes betöltődését, nézd meg a dmesg kimenetét. Az enyém így néz ki:

[drm] Initialized via 2.6.3 20050523 on minor 0: VIA Technologies, Inc.
VT8623 [Apollo CLE266] integrated CastleRock graphics
agpgart: Found an AGP 2.0 compliant device at 0000:00:00.0.
agpgart: Putting AGP V2 device at 0000:00:00.0 into 4x mode
agpgart: Putting AGP V2 device at 0000:01:00.0 into 4x mode

Bármilyen hibaüzenet azt jelzi, hogy a DRM modul nem fog betöltödni, vagy pedig valamilyen kernel-kiadásbeli hibád van. (Pl. nem a disztribúciódhoz kiadott kernelt használtad, vagy nem annak a forrását, ami fut jelenleg a rendszereden.)

Megjegyzés: Nincs szükséged arra, hogy ezeket a modulokat a jövőben kézzel töltsd be. A

startx

parancs automatikusan be fogja tölteni őket, amikor szüksége lesz rájuk. Abban az esetben, ha udev-et használsz, vagy módosítanod kell udev hozzáférési engedélyeit a

/dev/dri/card0 

vonatkozásában, amihez én nem tudok eleget, hogy elmagyarázzam, hogyan kell, vagy pedig a via drivert kell betöltened egy helyi script által és kézzel átállítani a hozzáférési jogokat a

/dev/dri/card0 esetében MIELŐTT elindítod az X-et.
  • Na, most jött el a súlyemelés ideje. Emlékszel, hogy beszéltünk arról, hogy szükségünk lesz az x.org forráskódjára? Nos, csomagold ki, és láss hozzá a fordításhoz. (Ellenőrizd, hogy a forráskód megfeleljen a gépeden futó x.org verziójának). Csomagolj ki mindent, menj be az
xc 

könyvtárba, és add ki a

make World

parancsot. Javaslom, keress egy jó könyvet, menj el pizzázni, esetleg nézz meg egy filmet, mivel ez az én laptopomon (1 Ghz VIA C3as proci, 256 MB RAM) 3 órát vett igénybe!! Elképzelhető, hogy nem lett volna szükségem mind a 7 x.org forrásfájlra, de nem tudom, hogy melyiket lehetett volna kihagyni, így neked is ezt javaslom, hogy inkább fordíts rá több időt. A közel három óra elteltével vagy végeztél, vagy pedig valamilyen hibával megállt a fordítás, de nekünk ez már mindenképpen jó. Lépj be a

/xc/programs/Xserver/hw/xfree86/drivers 

könyvtárba, és töröld a via alkönyvtár tartalmát, majd csomagold ki ide az unichrome-r-30 drivert. Még mindig az /xc/programs/Xserver/hw/xfree86/drivers könyvtárban állva add ki a

make Makefiles 

parancsot. Aztán ugorj bele az új via alkönyvtáradba, és

make

majd

make install, természetesen rootként. Ha minden rendben van, egy kis fájl jött létre via_drv.o névvel, és bemásolódott a 
/usr/X11R6/lib/modules/drivers könyvtáradba. Ha mégsem, másold oda kézzel. Majdnem végeztünk!
  • Csináljunk néhány biztonsági másolatot.

Azt javaslom, hogy a /root könyvtáradban hozz létre egy safe könyvtárat, és ide másold be az alábbi fájlokat:

/usr/X11/lib/libGL.so.1.2. 

Ezt követően bontsd ki a nyilt forráskódú 3D driveredet, mert eljött a varázslás ideje. Cseréld ki a libGL.so.1.2 fájlt azzal, amit a csomagban találtál. Aztán ugorj a

/usr/X11/lib/modules/dri könyvtárba, és írd felül a unichrome_dri.so fájlt.

Csinálhatsz egy szimlinket a unichrome_dri.so állományra, via_dri.so névvel, de nem szükséges. Nos, a programok telepítgetésével és fordításával készen is vagyunk.

Beállítás

a.) Először is a jogosultságok. Ez egy csúnya megoldás, de nem volt időm megtanulni az udev működését. Rootként írd be a következő parancsot:

chmod 666 /dev/dri/card0

Ez engedélyezni fogja egy egyszerű felhasználó számára is a dri használatát. Az eredeti leírás szerzője ezt a parancsot betette a /etc/rc.d/rc.local fájlba, közvetlenül a

modprobe via 

parancs után, nekem erre UHU-Linux 1.2 alatt nem volt szükségem.


b.) Következő lépésként nyisd meg a /etc/X11/xorg.conf fájlodat egy szövegszerkesztővel. (pl. joe, mcedit, vagy valamelyik hasonló. Jó fiú voltál, ugye, és csináltál biztonsági másolatot?) Engedélyezned kell a DRI használatát a Load "dri" sor hozzáadásával. Ez többnyire a Load "glx" sor után következik. Aztán, meg kell hívnunk a drivert, és megfelelően bekonfigurálni. Ez nálam a következőképpen néz ki:

Section "Device"
Identifier "VIA Unichrome"
Driver "via"
VendorName "VIA"
Option "DisableIRQ"
Option "EnableAGPDMA"
EndSection

A Driver és az Option soroknak szó szerint így kell lennie, de meghívhatsz más opciókat is, amíg minden passzol a "Screen" részben megadottakhoz. Ime az enyém:

Section "Screen"
Identifier "Accelerated"
Device "VIA Unichrome"
Monitor "UHU-Monitor"
DefaultDepth 24
SubSection "Display"
Depth 8
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 15
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480"
EndSubSection
EndSection

A "ServerLayout" rész pedig aktiválja az "Accelerated" képernyőt

Section "ServerLayout"
Identifier "Simple Layout"
Screen "Accelerated"
InputDevice "UHU-Keyboard" "CoreKeyboard"
EndSection

És végül, ne felejtsük el átállítani a DRI jogosultságait az X-hez. Valahol az xorg.conf-ban (nekem a legvégén) kell lennie a következőnek:

Section "DRI"
Mode 0666
Group "video"
EndSection

Végeztünk! Kipróbálhatjuk, hogy működik-e a DRI illetve a 3D?

Tesztelés és hibaelhárítás

  • Arra kérnélek, hogy bootolj egy parancssort. Ne fusson az X felület, mert az akadályozhatja a hibaelhárítást.
  • Állítsd be az ablakkezelődet valami egyszerűre, pl. blackbox, windowmaker, így nem kell várnod 5 percet, míg a KDE betöltődik.
  • írd be, hogy startx, dobj át sót a vállad felett, és reménykedj.
  • Ha minden működik, akkor a dri-nek is mennie kell. Nyiss meg egy terminált, és írd be: export LIBGL_DEBUG=verbose (Ez egy fontos dolog, el ne felejtsd!), aztán írd, hogy glxinfo. Ha minden rendben van, látnod kell egy "direct rendering: Yes" feliratot, ha nem, akkor pedig hibaüzeneteket, hogy miért nem működik.
  • A glxgears meg fogja neked mutatni, hogy milyen fps értékekre számíthatszmost a gépedtől. Az iménti beállításokkal az én laptopom kb. 970 fps-t produkál, szemben a vesa-s 96-al. Megérte, igaz?