新着レビュー 玄人指向 GFX5200-A128C(GeForceFX5200) by 編集部 (武藤武士/mutoh@OpenEdu.org) <まくら> 玄人指向()は、 「サポート質問一切不可」の 「玄人」向けのブランドとして一部の自作ユーザなどに有名です。 実際には、Melcoのブランドであることが知られていますが、 今回はビデオカード2つをお借りすることができましたので、 FreeBSDでの動作について検証したいと思います。 もともと、FreeBSDユーザにとって、一般のメーカがサポートしてくれる範囲というのは、 WindowsやMacOSなどの「一般的な」OSだけですから、 デバイスに関する情報さえ詳しく分かっていれば、 サポートサービスは不要と考えても問題ないと思います。 現に、今回レビューを行ったビデオカードは、 FreeBSDで問題なく動作しています。 </まくら> ○製品情報 玄人指向GFX5200-A128C()は、 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。 対応OS WindowsMe/98/XP/2000 付属品 ドライバCD 保証 1年間 製造元 Palit
図1.GFX5200-A128C
GeForceFX5200搭載ですから、FreeBSD用のnvidiaドライバが動作します。 従って、FreeBSDで選ぶには適当なカードだと言えるでしょう。
○FreeBSD版NVIDIAドライバのインストール ○○対応デバイスの確認 対応デバイス一覧はドライバ同梱のdoc/README.Linux (app-a)に記述されています。 チップセットを確認するためには、scanpciを スーパユーザで利用してください。 今回の場合、以下のようになります。 # scanpci (前略) 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ドライバではサポートされていますので、 こちらを利用することになるでしょう。 ○○環境の準備 以前、参考文献で 紹介したドライバでは、4-stable系でのサポートでした。 今回のドライバは、5-current系でのサポート(推奨はリリースの利用)が 行われています。 基本的な動作環境は以下の通りです。 FreeBSD 4.7R以降のstableもしくは、 5-current。 stableの場合、 USER_LDTSYSVSHMオプションつきのカーネル。 ただし、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カーネルを利用するため、 カーネルの再構築に関しては説明を行いません。 テスト環境は表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 モニター iiyama S702G 17インチ FreeBSD FreeBSD 5.1-RELEASE #0: Tue Jul 15 17:09:33 JST 2003 /usr/obj/usr/src/sys/GENERIC i386
○○ドライバのダウンロード FreeBSD版のNVIDIAドライバはnVIDIAのサイト () から取得できます。 トップページ上部のバーから、「DOWNLOAD DRIVERS」を選択します。 ここで表示されるページ(図1)で、 「Graphic Driver」→「GeForce and TNT」→「FreeBSD」と選択して、 [Go!]ボタンを押せば入手できるのですが、 ブラウザによってはうまく動作しないようです。 この場合、上部の「Linux and FreeBSD Drivers」リンクをたどってください。
図1.ドライバの選択画面
FreeBSD版の最新バージョンは1.0-4365になっています。 ファイル名はNVIDIA-FreeBSD-x86-1.0-4365.tar.gzです。
○○ドライバのインストール ドライバのインストールは入手したアーカイブを展開し、 作成されたディレクトリに移動して、 make setupを行います。 その後、適切なXF86Configを作成することになります。 # tar NVIDIA-FreeBSD-x86-1.0-4365.tar.gz # cd NVIDIA-FreeBSD-x86-1.0-4365 # make setup XF86Configは、 XFree86 などの 標準的な方法で作成すると良いでしょう。 この場合、Drivernvと 認識されるはずです。 ここで書き換えた部分はリスト1の通りです。 特に注意する必要がある点は以下の通りです。 Moduleセクションで、 Load "dri"をコメントアウトする。 また、設定されていない場合、 Load "glx"を追加する。 更に、Load "GLcore"がある場合は、 コメントアウトする。 Deviceセクションで、 Drivernvからnvidiaに変更する。
リスト1.<filename>XF86Config</filename>の変更部分 ] #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セクションの HoritzSyncVertRefreshは お手持ちのモニタや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に含まれる、 xgcglxgearsxengine(benchmarks/xengine)を 利用します。 xengine(図2)は、エンジンのシリンダの描画を通して、 エンジンの回転数の大きさでグラフィックスの描画性能を測定します。 利用するグラフィックプリミティブ(基本操作)も限られているため、 大まかな性能を知るために利用すると良いでしょう。 標準出力などに結果を出力することができないため、 この結果は目視で確認できた大体の値です。 驚くべきことに、 nvidiaドライバはnvドライバの10倍以上の成績を出しています。
図2.nvidiaドライバでの<command>xengine</command>の動作
xgc(図3)では、 グラフィックプリミティブの性能を測定できます。 特に性能が向上している部分は「Put Image」です。 以前の結果に比べてnvドライバも健闘していますが、 やはりnvidiaドライバが、150倍以上も高速です。 他の項目は双方ともそれほど大きな開きは無いようです。
図3.nvidiaドライバでの<command>xgc</command>の動作
glxgears(図4)は、 OpenGLを利用して3つの歯車を回転させるベンチマークです。 ここで、OpenGL部分の実装性能を知ることができます。 nvidiaドライバでは高速に回転しすぎているため、 震えているだけのように見えます。 15倍の性能が出ているため、 OpenGLを使ったゲームなどをする場合には有効でしょう。
図4.<command>glxgears</command>
表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系でも動作するようになっているところが 非常に嬉しい点です。 また、対応するチップセットも増えていますので、 以前うまく動作できなかった人もチャレンジしてみる価値はあると思います。 基本的にREADMEREADME.Linuxは 良く読んで作業を行うようにしましょう。 また、基本的なXF86Configの設定ももう一度 確認してください。 筆者は、Monitorセクションの HoritzSyncVertRefreshの設定が まずかったため、はまってしまいました。 1 「ついに出た! FreeBSD版 NVIDIAドライバ!!(β版)」 FreeBSD Press編集部 FreeBSD Press No.14 (2003)