新着レビュー 玄人指向 GFX5200-A128C by 編集部 (武藤武士/mutoh@OpenEdu.org) <まくら> 玄人指向(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)。 128M DDRビデオメモリを搭載し、 DVI出力、TV-OUT出力機能を持ちます。ただし、変換ケーブルなどは付属しないので、注意してください。 表1.玄人指向GFX5200-A128Cの仕様 ┌──┬──────────────────────────────────┐ │主な│256bitの2D&3DグラフィックアクセラレータであるnVIDIA製 GeForceFX 5200│ │仕様│GPU搭載。 DDR 128MBのビデオメモリ搭載。 DirectX9.0対応。 Support: │ │ │RGB、DVI、TV-Out。 │ ├──┼──────────────────────────────────┤ │対応│WindowsMe/98/XP/2000 │ │OS │ │ ├──┼──────────────────────────────────┤ │付属│ドライバCD │ │品 │ │ ├──┼──────────────────────────────────┤ │保証│1年間 │ ├──┼──────────────────────────────────┤ │製造│Palit [a] │ │元 │ │ ├──┴──────────────────────────────────┤ │注: │ │a. http://www.palit.com.tw/ │ └─────────────────────────────────────┘ 図1.GFX5200-A128C [img/gfx5200-a128c.jpg (http://kuroutoshikou.com/products/gboard/gfx5200-a128c.jpg)] GeForceFX5200搭載ですから、FreeBSD用のnvidiaドライバが動作します。従って、FreeBSDで選ぶには適当なカードだと言えるでしょう。 ○FreeBSD版NVIDIAドライバのインストール ○○対応デバイスの確認 対応デバイス一覧はドライバ同梱の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カーネルを利用するため、カーネルの再構築に関しては説明を行いません。テスト環境は?0表1の通りです。 表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」を選択します。 ここで表示されるページ(?0図1)で、「Graphic Driver」→「GeForce and TNT」→「FreeBSD」と選択して、 [Go!]ボタンを押せば入手できるのですが、ブラウザによってはうまく動作しないようです。この場合、上部の「Linux and FreeBSD Drivers」リンクをたどってください。 図1.ドライバの選択画面 [img/GeForce-drivers.tiff] 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と認識されるはずです。ここで書き換えた部分は?0リスト1の通りです。特に注意する必要がある点は以下の通りです。 ・ Moduleセクションで、 Load "dri"をコメントアウトする。 また、設定されていない場合、 Load "glx"を追加する。 更に、Load "GLcore"がある場合は、コメントアウトする。 ・ Deviceセクションで、 Driverを nvからnvidiaに変更する。 リスト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" # [] #Option "CrtcNumber" # 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(図2)は、エンジンのシリンダの描画を通して、エンジンの回転数の大きさでグラフィックスの描画性能を測定します。利用するグラフィックプリミティブ(基本操作)も限られているため、大まかな性能を知るために利用すると良いでしょう。標準出力などに結果を出力することができないため、この結果は目視で確認できた大体の値です。驚くべきことに、 nvidiaドライバはnvドライバの10倍以上の成績を出しています。 図2.nvidiaドライバでのxengineの動作 [img/xengine-nvidia.tiff] xgc(図3)では、グラフィックプリミティブの性能を測定できます。特に性能が向上している部分は「Put Image」です。以前の結果に比べてnvドライバも健闘していますが、やはりnvidiaドライバが、150倍以上も高速です。他の項目は双方ともそれほど大きな開きは無いようです。 図3.nvidiaドライバでのxgcの動作 [img/xgc-nvidia.tiff] glxgears(図4)は、 OpenGLを利用して3つの歯車を回転させるベンチマークです。ここで、OpenGL部分の実装性能を知ることができます。 nvidiaドライバでは高速に回転しすぎているため、震えているだけのように見えます。 15倍の性能が出ているため、OpenGLを使ったゲームなどをする場合には有効でしょう。 図4.glxgears [img/glxgears-nvidia.tiff] 表2.ベンチマークの結果 ┌────┬─────┬─────────┬────────┬───────┐ │コマンド│ベンチマー│GFX5200-A128C │GFX5200-A128C(nv│備考 │ │ │ク名 │(NVIDIAドライバ) │ドライバ) │ │ ├────┼─────┼─────────┼────────┼───────┤ │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 │0.003 │0.003 │ │ │ │Polygons │ │ │ │ ├────┼─────┼─────────┼────────┼───────┤ │xgc │Filled │0.00 │0.00 │10586800 │ │ │Rectangles│ │ │pixels │ ├────┼─────┼─────────┼────────┼───────┤ │xgc │Filled │0.003 │0.005 │ │ │ │Arcs │ │ │ │ ├────┼─────┼─────────┼────────┼───────┤ │xgc │Put Image │0.28 │47.29 │ │ ├────┼─────┼─────────┼────────┼───────┤ │xgc │Text 8 │0.00 │0.01 │200 strings │ ├────┼─────┼─────────┼────────┼───────┤ │xgc │Image Text│0.00 │0.01 │200 strings │ │ │8 │ │ │ │ ├────┼─────┼─────────┼────────┼───────┤ │xgc │Text 16 │0.00 │0.00 │50 strings │ ├────┼─────┼─────────┼────────┼───────┤ │xgc │Image Text│0.00 │0.01 │50 strings │ │ │16 │ │ │ │ ├────┼─────┼─────────┼────────┼───────┤ │xengine │ │40000rpm前後 │3200rpm前後 │benchmarks/ │ │ │ │ │ │xengine │ ├────┼─────┼─────────┼────────┼───────┤ │glxgears│ │2053.04FPS │134.182FPS │100回平均 │ └────┴─────┴─────────┴────────┴───────┘ ○まとめ 今回のドライバは、FreeBSD 5系でも動作するようになっているところが非常に嬉しい点です。また、対応するチップセットも増えていますので、以前うまく動作できなかった人もチャレンジしてみる価値はあると思います。 基本的にREADMEとREADME.Linuxは良く読んで作業を行うようにしましょう。また、基本的なXF86Configの設定ももう一度確認してください。筆者は、MonitorセクションのHoritzSyncとVertRefreshの設定がまずかったため、はまってしまいました。 参考文献) [1] 「ついに出た! FreeBSD版 NVIDIAドライバ!!(β版)」, FreeBSD Press編集部,FreeBSD Press, No.14, (2003).