fintux n00b
Joined: 07 Feb 2004 Posts: 17 Location: Oulu, Finland
|
Posted: Thu May 13, 2004 6:01 pm Post subject: Xorg ja DRI/DRM |
|
|
Ihmetyttää kovasti tuo DRI/DRM-toteutus, etenkin Xorgin kanssa. Jos vain joku vastaisi seuraaviin kysymyksiin, kun en ole niihin englanninkielisiltä sivuilta löytänyt vastauksia, ainakaan mitään selkeitä.
1. DRM/DRI tuen saaminen tuntuu vaativan aika monen asian toimimista juuri oikein. Ensinnä aloitetaan kernelistä, jossa käännetään DRI/DRM-tuki (XFree86 4.1.0+). Mitä virkaa tällä kernel-moduulilla on, ja toimiiko se myös Xorgin kanssa?
2. Seuraavaksi tulee Xorg, joka asentaa omia moduuliensa lähdekoodeja hakemistoon /usr/sr/xorg-x11-6.7.0. Hakemistossa ajettu "make install" kopioi hakemistoon /lib/modules/x.y.z/kernel/drivers/char/drm muutamia moduleja. Ne eivät kuitenkaan lataudu modprobella / insmodilla, vaan tulee seuraava virheilmoitus:
Code: | insmod: error inserting '/blaa blaa/i830.o': -1 Invalid module format |
Sen sijaan maken kopioimatta jättänyt tiedosto i830.ko latautuu ongelmitta. Mistä tämä oikein johtuu?
3. Ovatko nuo kohdan 1 ja 2 ajurit toisiaan täydentäviä, vai korvaavatko nuo xorgin ajurit nuo kernelin ajurit?
4. Onko drm/dri-tuki vaatimus laitteistopohjaiselle 3D-kiihdytykselle? Esim. glxgearsin antama nopeus on n. 260 fps. Näytönohjaimena on i830M, joka käyttää jaettua muistia. Jo suhteellisen yksinkertaiset opengl-näytönsäästäjätkin tuntuvat pätkivän, mutta windows-puolella kiihdytys tuntuu ihan riittävältä, tosin en ole juuri pelejä windowsissakaan pelannut. Onko kyse siitä, että renderöinti tapahtuukin ohjelmallisesti, vai onko vain ajurien optimointi vielä kesken?
5. Glxinfo antaa mm. seuraavia tietoja:
Code: | direct rendering: Yes
OpenGL renderer string: Mesa DRI Intel(R) 830M 20021115 x86/MMX/SSE
glu version: 1.3 |
Jos glxinfo väittää, että se käyttää dri/drm:ää, niin miksi dri pitää vielä erikseen ladata cvs:llä?
6. Kun sen dri/drm:n kuitenkin lataa, sen sivuilla olevan ohjeen mukaan, niin minkä takia ladataan esim. XF86Setup ym. ym. ym.? Kuitenkin ohjeiden pitäisi olla myös xorgia varten, ja toisaalta xorghan on jo koneella muutenkin. Tämä siis tapahtuu jo ohjeiden toisessa vaiheessa, jossa käsketään ladata drm (eli ei mitään puhetta xfreestä tms).
edit:
Sain tongittua vastaukset osaan kysymyksistä:
2. Virhe johtuu siitä, että .o -päätteinen tiedosto on kernel-version 2.4.x moduuli, kun taas .ko -päätteinen 2.6.x. sarjan moduuli.
3. Kernelin ja x.orgin moduulit eivät täydennä toisiaan, vaan kernelin moduulit pitää poistaa käytöstä että xorgin moduulit toimivat.
4. Tähän ongelmaan en saanut vielä kunnollista vastausta, mutta jotain suuntaa-antavaa kuitenkin. i830:n ajurin (joka on siis X:ssä DRI/DRM:ää lukuunottamatta sama kuin i810:n ajuri) laitteistokiihdytyksen sanotaan toimivan vain 16 ja 24 bpp tiloissa. Joissain paikoissa taas mainitaan, että se toimii vain 16 ja 32 bpp tiloissa, mutta edes koko i830 ajuri ei tue 32 bpp tilaa. Toisaalta ainakin minulla 24 bpp tila asettaa framebuffer:in 32 bpp tilaan, jossa taas laitteistopohjainen kiihdytys ei toimi. Eli ainoaksi mahdollisuudeksi jäänee 16 bpp, jos haluaa laitteistopohjaisen kiihdytyksen.
5. Ymmärsin asian niin, että voi käyttää joko kernel/xorg- tai xorg/xorg-ajuriyhdistelmää, sitä, mikä ero niillä on, en tiedä. Vaihtaminen xorg/xorg-yhdistelmään nosti fps:ää ehkä aavistuksen verran, muttei kovin ratkaisevasti.
6. Huomasin jälkeen päin, että kyseessä on ilmeisesti enimmäkseen tyhjiä hakemistoja. Tosin vie tuo hakemistorakenne silti käännöksen jälkeen lähes 800 megatavua!
Huomasin kuitenkin tällaisen erikoisen asian: kun jättää framebufferin pois kernelistä, nousee glxgears:in fps lähes 300:aan. Ja jos vähentää näytön tilaa 24 bpp:stä 16 bpp:hen, niin fps on miltei 600. |
|