<まくら>
玄人指向(http://www.kuroutoshikou.com/)は、 「サポート質問一切不可」の 「玄人」向けのブランドとして一部の自作ユーザなどに有名です。 実際には、Melcoのブランドであることが知られていますが、 今回はビデオカード2つをお借りすることができましたので、 FreeBSDでの動作について検証したいと思います。
もともと、FreeBSDユーザにとって、一般のメーカがサポートしてくれる範囲というのは、 WindowsやMacOSなどの「一般的な」OSだけですから、 デバイスに関する情報さえ詳しく分かっていれば、 サポートサービスは不要と考えても問題ないと思います。 現に、今回レビューを行ったビデオカードは、 FreeBSDで問題なく動作しています。
</まくら>
玄人指向GFX5200-A128C(http://kuroutoshikou.com/products/gboard/gfx5200-a128c.html)は、 NVIDIA GeForceFX5200搭載のビデオカードです(表1表1,図1図1)。 128M DDRビデオメモリを搭載し、 DVI出力、TV-OUT出力機能を持ちます。 ただし、変換ケーブルなどは付属しないので、注意してください。
表 1. 表1.玄人指向GFX5200-A128Cの仕様
主な仕様 | 256bitの2D&3DグラフィックアクセラレータであるnVIDIA製 GeForceFX 5200 GPU搭載。 DDR 128MBのビデオメモリ搭載。 DirectX9.0対応。 Support:RGB、DVI、TV-Out。 |
対応OS | WindowsMe/98/XP/2000 |
付属品 | ドライバCD |
保証 | 1年間 |
製造元 | Palit [a] |
注意: a. http://www.palit.com.tw/ |
GeForceFX5200搭載ですから、FreeBSD用のnvidiaドライバが動作します。 従って、FreeBSDで選ぶには適当なカードだと言えるでしょう。
対応デバイス一覧はドライバ同梱のdoc/README.Linux (app-a)に記述されています。 チップセットを確認するためには、scanpciを スーパユーザで利用してください。 今回の場合、以下のようになります。
# scanpci -vv
(前略)
pci bus 0x0001 cardnum 0x00 function 0x00: vendor 0x10de device 0x0322
nVidia Corporation Device unknown
STATUS 0x02b0 COMMAND 0x0007
CLASS 0x03 0x00 0x00 REVISION 0xa1
BIST 0x00 HEADER 0x00 LATENCY 0x20 CACHE 0x00
BASE0 0xdc000000 addr 0xdc000000 MEM
BASE1 0xd0000008 addr 0xd0000000 MEM PREFETCHABLE
MAX_LAT 0x01 MIN_GNT 0x05 INT_PIN 0x01 INT_LINE 0x0b
device部分の0x0322から、
表と照らし合わせて、GeForce FX 5200であることが確認できます。
現状でも、RIVA 128/128ZX チップセットは対応されていません。 しかし、XFree86でサポートされているnvドライバではサポートされていますので、 こちらを利用することになるでしょう。
以前、参考文献[1]で 紹介したドライバでは、4-stable系でのサポートでした。 今回のドライバは、5-current系でのサポート(推奨はリリースの利用)が 行われています。 基本的な動作環境は以下の通りです。
FreeBSD 4.7R以降のstableもしくは、 5-current。
stableの場合、 USER_LDTと SYSVSHMオプションつきのカーネル。 ただし、GENERICカーネルにはSYSVSHMは 標準で含まれる。
currentの場合、GENERICカーネルで動作。 USER_LDTは廃止されているので、注意が必要。
以下のバージョンより新しいXFree86環境。
XFree86-4.2.0_1, XFree86-libraries-4.2.1_1, XFree86-Server-4.2.1_3, XFree86-clients-4.2.1_1
今回は、5.1Rでの環境構築を行います。 GENERICカーネルを利用するため、 カーネルの再構築に関しては説明を行いません。 テスト環境は表2表1の通りです。
表 2. 表1.テスト環境
項目 | 内容 | 備考 |
---|---|---|
マザーボード | RIO WORKS PDVIA | VIA 82C691 (Apollo Pro) |
CPU | Pentium III 600MHz | |
HDD | IBM-DPTA-372730, 25GB, UDMA66 | |
メモリ | 320MB | |
ビデオカード | GeForce 5200 128M AGP | 玄人指向 GFX5200-A128C [a] |
モニター | iiyama S702G 17インチ | |
FreeBSD | FreeBSD 5.1-RELEASE #0: Tue Jul 15 17:09:33 JST 2003 /usr/obj/usr/src/sys/GENERIC i386 | |
注意: a. http://kuroutoshikou.com/products/gboard/gfx5200-a128c.html |
FreeBSD版のNVIDIAドライバはnVIDIAのサイト (http://www.nvidia.com/) から取得できます。 トップページ上部のバーから、「DOWNLOAD DRIVERS」を選択します。
ここで表示されるページ(図2図1)で、 「Graphic Driver」→「GeForce and TNT」→「FreeBSD」と選択して、 [Go!]ボタンを押せば入手できるのですが、 ブラウザによってはうまく動作しないようです。 この場合、上部の「Linux and FreeBSD Drivers」リンクをたどってください。
FreeBSD版の最新バージョンは1.0-4365になっています。 ファイル名はNVIDIA-FreeBSD-x86-1.0-4365.tar.gzです。
ドライバのインストールは入手したアーカイブを展開し、 作成されたディレクトリに移動して、 make setupを行います。 その後、適切なXF86Configを作成することになります。
# tar zxf
NVIDIA-FreeBSD-x86-1.0-4365.tar.gz
# cd NVIDIA-FreeBSD-x86-1.0-4365
# make setup
XF86Configは、
XFree86 -configure
などの
標準的な方法で作成すると良いでしょう。
この場合、Driverはnvと
認識されるはずです。
ここで書き換えた部分は図3リスト1の通りです。
特に注意する必要がある点は以下の通りです。
Moduleセクションで、 Load "dri"をコメントアウトする。
また、設定されていない場合、 Load "glx"を追加する。
更に、Load "GLcore"がある場合は、 コメントアウトする。
Deviceセクションで、 Driverを nvからnvidiaに変更する。
図 3. リスト1.XF86Configの変更部分
--- XF86Config.GeForceFX5200.old Wed Jul 16 15:22:10 2003 +++ XF86Config Thu Jul 24 10:53:38 2003 @@ -18,7 +18,7 @@ Section "Module" Load "extmod" Load "glx" - Load "dri" +# Load "dri" Load "dbe" Load "record" Load "xtrap" @@ -44,6 +44,8 @@ VendorName "iiyama" ModelName "S702G" Option "DPMS" + HorizSync 27-96 + VertRefresh 50-160 EndSection Section "Device" @@ -63,7 +65,7 @@ #Option "FPDither" # [<bool>] #Option "CrtcNumber" # <i> Identifier "Card0" - Driver "nv" + Driver "nvidia" VendorName "nVidia Corporation" BoardName "Unknown Board" BusID "PCI:1:0:0" @@ -73,6 +75,7 @@ Identifier "Screen0" Device "Card0" Monitor "Monitor0" + DefaultDepth 16 SubSection "Display" Depth 1 EndSubSection
Monitorセクションの HoritzSyncとVertRefreshは お手持ちのモニタやLCDにあわせた設定にしてください。 また、DefaultDepthもお好みで設定してください。
テスト環境では、この設定で2048×1536という巨大な空間が広がります。
以下のファイルがインストールされます。
カーネルモジュール
/boot/kernel/nvidia.ko
XFree86用ドライバ群
/usr/X11R6/lib/modules/drivers/nvidia_drv.o
/usr/X11R6/lib/modules/extensions/libglx.so
/usr/X11R6/lib/modules/extensions/libglx.so.1
OpenGLサポートライブラリ
/usr/X11R6/lib/libGL.so
/usr/X11R6/lib/libGL.so.1
/usr/X11R6/lib/libGLcore.so
/usr/X11R6/lib/libGLcore.so.1
Linuxlator用OpenGLサポートライブラリ
/compat/linux/usr/lib/libGL.so.1
/compat/linux/usr/lib/libGL.so.1.0.4365
/compat/linux/usr/lib/libGLcore.so.1
/compat/linux/usr/lib/libGLcore.so.1.0.4365
デバイスに関しては、5系ではブート時に作成されます。 テスト環境では以下のようなデバイスが作成されています。
/dev/nvidia0
/dev/nvidiactl
更に、/boot/loader.confに、自動的に nvidia_load="YES"が追加され、 次回の起動時からカーネルモジュールnvidia.koが 読み込まれるようになります。
ここでは、nvドライバとnvidiaドライバとの性能比較を行います。 他のビデオカードとの比較に関しては、 RD92-A128Cの記事の方を参照してください。
ベンチマークには、x11/XFree86-clients-4.3.0_2に含まれる、 xgcとglxgears、 xengine(benchmarks/xengine)を 利用します。
xengine(図4図2)は、エンジンのシリンダの描画を通して、 エンジンの回転数の大きさでグラフィックスの描画性能を測定します。 利用するグラフィックプリミティブ(基本操作)も限られているため、 大まかな性能を知るために利用すると良いでしょう。 標準出力などに結果を出力することができないため、 この結果は目視で確認できた大体の値です。 驚くべきことに、 nvidiaドライバはnvドライバの10倍以上の成績を出しています。
xgc(図5図3)では、 グラフィックプリミティブの性能を測定できます。 特に性能が向上している部分は「Put Image」です。 以前の結果に比べてnvドライバも健闘していますが、 やはりnvidiaドライバが、150倍以上も高速です。 他の項目は双方ともそれほど大きな開きは無いようです。
glxgears(図6図4)は、 OpenGLを利用して3つの歯車を回転させるベンチマークです。 ここで、OpenGL部分の実装性能を知ることができます。 nvidiaドライバでは高速に回転しすぎているため、 震えているだけのように見えます。 15倍の性能が出ているため、 OpenGLを使ったゲームなどをする場合には有効でしょう。
表 3. 表2.ベンチマークの結果
コマンド | ベンチマーク名 | GFX5200-A128C(NVIDIAドライバ) | GFX5200-A128C(nvドライバ) | 備考 |
---|---|---|---|---|
xgc | Copy Area | 0.00 | 0.01 | |
xgc | Points | 0.013 | 0.021 | 100000 points |
xgc | Lines | 0.000 | 0.003 | 501 lines of length 349 |
xgc | Segments | 0.000 | 0.003 | 500 segments |
xgc | Rectangles | 0.000 | 0.003 | Total line length 159200 |
xgc | Arcs | 0.003 | 0.003 | |
xgc | Filled Polygons | 0.003 | 0.003 | |
xgc | Filled Rectangles | 0.00 | 0.00 | 10586800 pixels |
xgc | Filled Arcs | 0.003 | 0.005 | |
xgc | Put Image | 0.28 | 47.29 | |
xgc | Text 8 | 0.00 | 0.01 | 200 strings |
xgc | Image Text 8 | 0.00 | 0.01 | 200 strings |
xgc | Text 16 | 0.00 | 0.00 | 50 strings |
xgc | Image Text 16 | 0.00 | 0.01 | 50 strings |
xengine | 40000rpm前後 | 3200rpm前後 | benchmarks/xengine | |
glxgears | 2053.04FPS | 134.182FPS | 100回平均 |
今回のドライバは、FreeBSD 5系でも動作するようになっているところが 非常に嬉しい点です。 また、対応するチップセットも増えていますので、 以前うまく動作できなかった人もチャレンジしてみる価値はあると思います。
基本的にREADMEとREADME.Linuxは 良く読んで作業を行うようにしましょう。 また、基本的なXF86Configの設定ももう一度 確認してください。 筆者は、Monitorセクションの HoritzSyncとVertRefreshの設定が まずかったため、はまってしまいました。