Jak rozchodit kartu s čipem od 3dfx v Linuxu

Pokusím se zde popsat návod, jak jsem tento problém řešil já."How-to" na internetu mi moc nevyhovovaly z  důvodu, žeodkazovaly na již nefunkční odkazy. Tím pádem je nebylo možné použit jsou zastaralé.

Stručná historie 3dfx

Společnost 3dfx vznikla roku 1994 a jejím zakladatelem byl Gordon Campbell. Vedoucí celého vývoje byl Scott Sellers.

Roku 1996 vydala firma první graficky akcelerátor a to Diamond Monster 3D, jednalo se o přídavný akcelerátor využívající podporu API 3dfx Glide*, který je založen na OpenGl* vytvořen firmou SGI (Silicon Graphic Inc.). Karta vyžaduje ještě 2D kartu. Jako první hra, která dokázala využit tento akcelerátor, byl první díl Lary Croft od společnosti Core design. Karta měla značnou výhodu v tom, že odlehčila procesoru, jádro mělo takt 45 - 50 Mhz a byla vyráběna 50-ti mikronovou technologii.

V první polovině roku 1997 se na trh dostala karta zvaná Voodoo Rush, která si ovšem tak dobře nevedla. Jádro běželo na 45Mhz a výrobní technologie byla 0,35 mikronu.

V listopadu 1998 se na trh dostává přídavný akcelerátor zvaný Voodoo 2, který je osazen 8 nebo 12M pamětí a takt se pohyboval v rozmezí od 90 - 100 0,35m, záleželo na výrobci. Karta podporuje zapojení do tzv. SLI (Scan-Line Interface) modu. Pomocí speciálního kabelu s druhou Voodoo 2-takto propojené karty dosahovaly rozlišení až 1024x768. U 12-ti megabajtových modelů takto propojené karty obsahovaly 24Mb paměti. V polovině roku představila společnost 3dfx kartu, která na sobě nesla jak 2D jádro, tak 3D. Jednalo se o VooDoo Banshee o taktu 100 - 125 0,35 mikronu ve verzích pci i agp a 16 mb. Koncem roku 1998 koupila společnost 3dfx OEM-výrobce grafických karet STB. Tento rok byl pro firmu velmi úspěšný. Vydává ještě další kartu tzv. low-end a to Voodoo 3 velocity 100 s pamětí o velikosti 8mb a její o něco silnější kolegyni Voodoo 3 velocity 200 s 16Mb pamětí.

Rok 1999 - na trhu se objevuje nova grafická karta a to Voodoo 3 ve verzích 2000 o taktu 143 a 3000 o taktu 166, jednalo se o verze pci i agp se zpožděním. Téhož roku byla uvedena ještě karta Voodoo 3 3500 doplněna o TV-tunner a fm-tunner na taktu 183. Ještě v tomto roce byla ohlášena karta Voodoo 4 4500 166mhz 0,25 mikronu s 32Mb a dána na trh byla začátkem roku 2000.

Koncem roku 2000 byla vydána Voodoo 5 5500 166 (143-183) Mhz 0,25 mikronu s 64 a dvěma čipy vsa 100 a ne moc rozšířená Voodoo 5 6000 o 4 čipech VSA 100 a 128Mb pamětí.

To bylo něco úvodem a teď k samotnému zprovoznění

Požadavky

Jako první bude zapotřebí vlastnit nějakou tu kartu od již zmíněné firmy a to 3dfx. Návod se bude týkat karet Voodoo 3 a výše, protože pro Voodoo 1,2 je postup odlišný. Dále bude potřeba navštívit pár odkazů a udělat několik činností, které popíšu níže. Dalším předpokladem je OS Linux a to je pro začátek asi vše. Testováno na:

Slackware9.1,fluxbox 0.9.9 a 0.9.10 develop version Kernelech 2.6.x radu 2.6.4 jsem nezkoušel Xfree 4.3.0 Voodoo 5,3,Banshee.

First step:

Navštívíme stránku http://sourceforge.net/projects/glide/ a stáhneme binární verzi glidu. Po dotaženi rozbalíme a soubory libglide3.a a libglide.so přesuneme do /usr/lib/*.* přesně jak píšou v přiloženém txt souboru. Když se vás bude systém ptát na přepsání, potvrďte OK.

Second step:

Nyní se pustíme do nastavování kernelu, což může být trochu složitější než předchozí krok, ale ve skutečnosti se není čeho bát. Můžeme použít stávající kernel z distribuce nebo stáhnout novější. Nový kernel stáhneme z kernel.org. Zaměříme se na řadu 2.6.x a stáhneme poslední stabilní. Podotýkám, že tento krok není tšeba (myslím stahovat nové jádro), ale pro optimalizaci systému je žádoucí. Po stažení nového jádra v době psaní je to 2.6.8.1 (stable), obsah archivu nakopírujeme do /usr/src/linux-CISLO-VERZE. Nyní je potřeba vytvořit symbolický odkaz na nové zdrojové soubory pod názvem Linux. Ve stejném adresář, pokud existuje, tak stávající smažeme a pomoci příkazu ln -si vytvoříme nový aktuální.

Výpis může vypadat takto:

linux -> /usr/src/linux-2.6.5/
linux-2.6.5

Je vidět, že používám jádro verze 2.6.5 Pokud máme již připraveno, vrhneme se na nastavení konfiguračního souboru a to takto:

cd /usr/src/linux;make menuconfig

Vyskočí jakési okno. Popíšu zde pouze jak nastavit ovladač pro Voodoo kartu, nikoliv jak optimalizovat kernel pro váš systém

Takže zvolíme položky :

Device Drivers --->
Character devices --->
[*] Direct Rendering Manager (XFree86 4.1.0and higher DRI support)

Otevře se nám nabídka, kde vybereme

<M> 3dfx Banshee/Voodoo3+

M značí, že se jedná o modul; *, že se zakompiluje přímo do kernelu. Zvolme tedy M, ať nám jádro tolik nezabírá.

Framebuffer

Jestliže budeme chtít v konzoli používat driver využívající FrameBuffer, například, protože budeme chtít nastavit rozlišení a frekvenci obrazovky nebo přhrávání videa, tak zakompilujme i tento driver tdfxfb najdeme ho v:

Device Drivers --->
Graphics support --->
[*] Support for frame buffer devices

dále v této podsekci zvolíme driver pro konzoli a to

<*> 3Dfx Banshee/Voodoo3 display support JAKO * !

přesuneme se do podsekce

Console display driver support --->

kde zaškrtáme tyto volby:

[*] Video mode selection support
<*>Framebuffer Console support
[*] Select compiled-in fonts
[*] VGA 8x16font

Podotýkám, že tento odstavec (frambuffer) není nutný pro zprovoznění akcelerace v systému X, jedná se o konzolový ovladač, tudíž lze odstavec přeskočit, pokud nemáte zájem tuto funkci využívat.

Vyjedeme zpět a dáme uložit změny. Poté stačí zadat kombinaci make modules;make modules_install a potřebné moduly, či modul se nám nainstaluje. Pokud jsme si optimalizovali kernel nebo použili framebuffer, bylo by před kroky make odules;make modules_install potřeba provést make bzImage a pote nainstalovat moduly, u jader 2.6.x odpadá make dep.

Po nainstalovaní si ověříme, zda se modul vůbec nainstaloval a to takto: modinfo tdfx (tdfx je název modulu neboli ovladače) výpis u mě je :

bash-2.05b# modinfo tdfx
author: VA Linux Systems Inc.
description: 3dfx Banshee/Voodoo3+
license: GPL and additional rights
vermagic: 2.6.7 preempt K7 gcc-3.2
depends:

To značí, že modul je v systému.

Pokud by se nám z nějakých důvodů ovladač z jádra nezamlouval (najdou se i tací), je tu možnost stáhnout ze stránky www pomoci CVS DRM (Direct rendering manager), který podporuje DRI (Direc rendering infrastructure) jsou tam přesně popsány kroky, jak to stáhnout. Potřebujeme tedy jenom drm, pokud by přesto někdo nevěděl, jak stáhnout-tak pomocí:

cvs -d:pserver:anonymous@cvs.freedesktop.org:/cvs/dri login
cvs -z3 -d:pserver:anonymous@cvs.freedesktop.org:/cvs/dri co drm

Po stažení vstoupíme do adresáře drm, tedy třeba cd /home/novak/drm/linux-2.6 po vstupu do daného adresáře zadáme příkaz make, pro zkompilování potřebných ovladačů, vznikne jich více, ale nás zajímají pouze tdfx. Lze zkompilovat i s omezením jen na konkrétní driver-takto make DRM_MODULES="tdfx".Driver si zkopírujeme na nějaké příslušné místo cp tdfx.ko /příslušné/místo tento driver obsahuje navíc parametr pro počet grafických karet v pc, ale nevidím v tom moc smysl. Kdo má v pc více jak jednu grafickou kartu, že ? I když možná někdo ano. Modul pak načteme do jádra pomocí insmod /prislusne/misto/tdfx.ko. Tento ovladač je nezávislí na jádře, jak se můžeme dočíst v dokumentaci.

Third step:

No, řekl bych, že nejhorší je za námi. Teď už jen upravit konfigurační soubor X-ek a můžeme začít využívat 3d akceleraci. Pokud se uvedené věci ve vašem konfiguračním souboru nenachází, tak budeme muset vyhledat sekci:

Načtení modulu pro GLX a DRI


Load "dri"
Load "glx"

EndSection

Zajištění užití akcelerace i ostatním uživatelům


Section "DRI " Mode 0666
EndSection

ted vyhledejme tuto sekci:

Section "Device"
Identifier "Voodoo5" # typ karty
VendorName "3dfx" # výrobce
Driver "tdfx" # Ovladač zařízení,měl by se načíst při spuštění X
EndSection

typ karty si můžeme vymyslet, ale musí souhlasit s tím, co uvedeme v sekci monitor u položky Devices viz. Dále driver zapíšeme pod jeho názvem, tedy tdfx a výrobce si můžeme také vymyslet.

Nyní najdeme sekci :

Section "Screen"
Identifier"Screen 1"
Device "Voodoo5" # Zařízení
Monitor "My monitor" # Název monitoru

No a pokud to vyplníme dle přiložených údajů, uložíme.

Fourth step:

Restartujeme X-ka ctrl+alt+backspace a znova nahodíme, pokud jste výše zmíněné kroky prováděli v konzoli, tak pouze zapneme x-ka pomoci příkazu startx. Pokud jsem provedli kroky správně, měly by x-ka naskočit, pokud ne zkontrolujeme údaje v X86config, popřípadě logy. Jestliže narazíme na výpis něco v tom smyslu, že nelze nalézt tdfx ovladač, zkontrolujeme, zda se nám "natáhl" do jádra příkazem lsmod | grep tdfx, když se ve výpisu neobjeví, tak ho tam budeme muset vložit ručně a to modprobe tdfx. Pro odstranění slouží příkaz rmmod tdfx.

Akceleraci zjistíme takto:

bash-2.05b$ glxinfo | grep rendering
direct rendering: Yes

Pokud vidíme Yes, můžeme si pogratulovat, akcelerace je funkční, pokud ne, je něco špatně. Příčin může být mnoho: jako první bych zkusil projít výše uvedené kroky znovu a pokud ani to nezafunguje, tak mě zkuste kontaktovat, pokusím se pomoci.

Jak jsou na tom ovladače po zániku firmy.

Poslední ovladač je psaný pro Voodoo 3 a novější modely s tímto ovladačem fungují, ale odrazilo se to na jejich výkonu. Zejména modely V5, kde je výkon velice žalostný. Pokud budete chtít otestovat funkčnost na nějaké hře, doporučuji Unreal Tournament, důvodem je jeho snadná instalace v Linuxu a "dostačující" plynulost chodu.

Ještě jako příklad přiložím svůj X86config pro představu, jak by to asi mělo být.

Odkaz na config je zde.

V případě nejasností, či nepřesností v návodu prosím o kontakt.

Vysvětlení některých pojmů

Glide

Byl vyvíjen jako implementace pro DOS, Windows, a Macintosh, na Linux ho portoval Daryll Strauss. Jedna se o knihovnu, kterou využívá 3dfx hardware.

API (Application Programming Interface)

Je soubor programovacích funkcí a procedur s přesně definovaným způsobem chovaní, jedná se o standart pro 3D grafiku a renderování.

OpenGL

Dalo by se říci, že se jedná o softwarové rozhraní ke grafické kartě. Vyvinuto bylo společností SGI na základě produktu Iris GL. Hlavní sila OpenGL je v tom, že je nezávislí na HW platformách a na programovacím jazyku. Pomoci OpenGl lze plně využít možnosti grafické karty.

Mesa

Mesa je volna implementace OpenGL API, napsaná Brianem Paulem, za pomocí mnoha dalších vývojářů. Nejedná se o plnohodnotný OpenGl, ale na linuxových platformách je hojně rozšířená. Obsahuje soubor 3D grafických knihoven, který je velmi podobný jako u OpenGl.