新着レビュー

玄人指向 GFX5200-A128C(GeForceFX5200) 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,図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。
対応OSWindowsMe/98/XP/2000
付属品 ドライバCD
保証1年間
製造元Palit [a]
注意:
a. http://www.palit.com.tw/

図 1. 図1.GFX5200-A128C

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_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カーネルを利用するため、 カーネルの再構築に関しては説明を行いません。 テスト環境は表2表1の通りです。

表 2. 表1.テスト環境

項目内容備考
マザーボードRIO WORKS PDVIAVIA 82C691 (Apollo Pro)
CPUPentium III 600MHz 
HDDIBM-DPTA-372730, 25GB, UDMA66 
メモリ320MB 
ビデオカードGeForce 5200 128M AGP玄人指向 GFX5200-A128C [a]
モニターiiyama S702G 17インチ 
FreeBSDFreeBSD 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」リンクをたどってください。

図 2. 図1.ドライバの選択画面

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などの 標準的な方法で作成すると良いでしょう。 この場合、Drivernvと 認識されるはずです。 ここで書き換えた部分は図3リスト1の通りです。 特に注意する必要がある点は以下の通りです。

  • Moduleセクションで、 Load "dri"をコメントアウトする。

    また、設定されていない場合、 Load "glx"を追加する。

    更に、Load "GLcore"がある場合は、 コメントアウトする。

  • Deviceセクションで、 Drivernvから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セクションの 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(図4図2)は、エンジンのシリンダの描画を通して、 エンジンの回転数の大きさでグラフィックスの描画性能を測定します。 利用するグラフィックプリミティブ(基本操作)も限られているため、 大まかな性能を知るために利用すると良いでしょう。 標準出力などに結果を出力することができないため、 この結果は目視で確認できた大体の値です。 驚くべきことに、 nvidiaドライバはnvドライバの10倍以上の成績を出しています。

図 4. 図2.nvidiaドライバでのxengineの動作

xgc(図5図3)では、 グラフィックプリミティブの性能を測定できます。 特に性能が向上している部分は「Put Image」です。 以前の結果に比べてnvドライバも健闘していますが、 やはりnvidiaドライバが、150倍以上も高速です。 他の項目は双方ともそれほど大きな開きは無いようです。

図 5. 図3.nvidiaドライバでのxgcの動作

glxgears(図6図4)は、 OpenGLを利用して3つの歯車を回転させるベンチマークです。 ここで、OpenGL部分の実装性能を知ることができます。 nvidiaドライバでは高速に回転しすぎているため、 震えているだけのように見えます。 15倍の性能が出ているため、 OpenGLを使ったゲームなどをする場合には有効でしょう。

図 6. 図4.glxgears

表 3. 表2.ベンチマークの結果

コマンドベンチマーク名GFX5200-A128C(NVIDIAドライバ)GFX5200-A128C(nvドライバ)備考
xgcCopy Area0.000.01 
xgcPoints0.0130.021100000 points
xgcLines0.0000.003501 lines of length 349
xgcSegments0.0000.003500 segments
xgcRectangles0.0000.003Total line length 159200
xgcArcs0.0030.003 
xgcFilled Polygons0.0030.003 
xgcFilled Rectangles0.000.0010586800 pixels
xgcFilled Arcs0.0030.005 
xgcPut Image0.2847.29 
xgcText 80.000.01200 strings
xgcImage Text 80.000.01200 strings
xgcText 160.000.0050 strings
xgcImage Text 160.000.0150 strings
xengine 40000rpm前後3200rpm前後benchmarks/xengine
glxgears 2053.04FPS134.182FPS100回平均

○まとめ

今回のドライバは、FreeBSD 5系でも動作するようになっているところが 非常に嬉しい点です。 また、対応するチップセットも増えていますので、 以前うまく動作できなかった人もチャレンジしてみる価値はあると思います。

基本的にREADMEREADME.Linuxは 良く読んで作業を行うようにしましょう。 また、基本的なXF86Configの設定ももう一度 確認してください。 筆者は、Monitorセクションの HoritzSyncVertRefreshの設定が まずかったため、はまってしまいました。

参考文献

[1] 「ついに出た! FreeBSD版 NVIDIAドライバ!!(β版)」, FreeBSD Press編集部, FreeBSD Press, No.14, (2003).