glide(4) Glide 用ビデオドライバ

書式

Section "Device"
Identifier "devname"
Driver "glide"
  ...
EndSection

先に読むべき資料は他にある

このドライバを動かすためには特殊な要件を満たす必要がある。 つまり、Glide がインストールされており、libglide2x.so にリンクが張られ ている必要がある。 その方法については、「説明」セクションの2番目の段落を読むこと。

説明

glide は Glide 機能を持つビデオボード(3Dfx, Voodoo ボード等)用のXFree86 ドラ イバである。このドライバは主に Voodoo 1 と Voodoo2 ボード用である。 最近 3Dfx から出たボードは 2D 機能を組み込みで持っているので、 Voodoo 用とは別のドライバを使うか、fbdev(4) ドライバを使うことが 望ましい。 このドライバは多少特殊である。というのも、Voodoo 1 と 2 は 2D グラフィックスを行うためには作られていないからである。したがって、この ドライバはハードウェアアクセラレーション機能を持たない(2D 用の アクセラレーションがなく、3D 用だけがある)。その代わりに、このドライバ は完全に RAM 上に存在する「シャドウ」フレームバッファを利用している。 このシャドウフレームバッファ内の選択された部分は、適切なタイミングで Voodoo ボードにコピーされる。そのため、このドライバの速度は CPU に非常 に大きく依存する。しかし、現在の CPU は実際のところデータの移動よりも かなり早いので、いずれにせよ非常に良い速度が得られる。特に シャドウフレームバッファ全体がキャッシュ上にある場合は高速である。

このドライバを使うには、既に Glide がインストールされている必要がある (この文章を書いている時点では、Glide は http://glide.xxedgexx.com/3DfxRPMS.html から入手できる)。 また、/usr/X11R6/lib/modules ディレクトリに libglide2x.so ファイルを指 すシンボリックリンクを作ることにより、libglide2x.so ファイルが置かれて いる場所を XFree86 に教える必要がある。 例えば以下のようにする(libglide2x.so は /usr/lib にあるものとする):

# ln -s /usr/lib/libglide2x.so /usr/X11R6/lib/modules

/dev/3dfx が既にインストールされている場合、CPU が MTRR レジスタを持っ ていれば、glide ドライバは MTRR レジスタを(glide ライブラリを利用して) 有効にできる(http://glide.xxedgexx.com/MTRR.html を参照)。 これは Voodoo ボードへのデータのコピーを 2.7 倍にも高速化できるので非 常に重要である。というのも、このドライバは大量のデータをコピーするから である…。これは強く求められる。

glide ドライバは 16, 24 ビットカラーモードに対応している。24 ビット カラーモードは 32 ビットのフレームバッファを使用する(24 ビット packed ピクセルフレームバッファには対応していない)。 Voodoo ボードは 16 ビットカラーしか表示できないが、シャドウフレーム バッファは 24 ビットカラーで動作できる点に注意すること。 24 ビットモードに対応していることのポイントは、実際に 24 ビットカラー モードで動作する別のボードと同時に使い、Xinerama を使ったマルチヘッド 構成が可能となる点である。(Xinerama を使うには、全てのボードの色の深さ は同じでなければならない。)

対応している解像度は 640x480, 800x600, 960x720, 1024x768, 1280x1024, 1600x1200 である。全ての Voodoo ボードで全てのモードが動作 するわけではない点に注意すること。Voodoo 2 ボードは 1024x768 より大き な解像度に対応していないようであるし、Voodoo 1 ボードは 800x600 を超え られないようである。 サーバから


  (EE) GLIDE(0): grSstWinOpen returned ...

のようなメッセージを受け取った場合には、 ドライバは対応していてもハードウェアは対応していない解像度を使おうとし たと思われる。

対応しているリフレッシュレートは 60Hz, 75Hz, 85Hz である。 リフレッシュレートは通常のモード行から以下の表を使って得られる:

モード行のリフレッシュレート 使われるリフレッシュレート

   0-74 Hz

  60 Hz

  74-84 Hz

  75 Hz

  84-   Hz

  85 Hz

したがって、例えば 70Hz のリフレッシュレートを持つモード行を使う場合は、 実際には 60Hz のリフレッシュレートしか得られない。

glide ドライバでどの Voodoo ボードを使うかの選択は、"Device" セクションの "GlideDevice" というオプションを使って行う。(このオプションがなければ、 最初に見つかったボードがその Device セクションのボードとして選択される。) 例えば、最初の Voodoo ボードを使う場合の Device セクションは以下のよう になる:

Section "Device"

   Identifier  "Voodoo"

   Driver      "glide"

   Option      "dpms" "on"

   Option      "GlideDevice" "0"
EndSection

複数の Voodoo ボードがある場合は、別の "Device" セクションを用意し、そ の GlideDevice オプションの値を 1 にする。その後も同様である。 (複数の Voodoo ボードを利用できるが、SLI が設定されているボードは一枚 のボードとして扱われる。)

マルチヘッドおよび Xinerama の構成はサポートされている。

DPMS によるスクリーン保護は部分的にサポートされている。"standby" およ び "suspend" モードは単に画面を黒く塗りつぶすだけである。"off" モード は Voodoo ボードの電源を切るので、正しく動作する。

glide ドライバは、ディスプレイのサイズと異なる仮想画面のサイズには対応 していない。

対応ハードウェア

glide ドライバは Glide で利用できる全てのボード(3Dfx Voodoo ボード等)に対応している。

詳しい設定

詳細設定の一般的な部分については XF86Config(5x) を参照すること。 このセクションではこのドライバ固有の詳細設定のみを扱う。

オプションは以下のものがサポートされている( Options 項目):

Option "OnAtExit" "boolean"
真であれば、サーバが終了したときに Voodoo ボードの電源が入ったままにな る。このオプションが役立つのはマルチヘッド設定の時で、Voodoo ボードだ けが 2 番目のモニタに繋がっていて、かつサーバを終了させた時に信号が途 絶えるのが好まない場合である。 このオプションは Device セクションに記述すること。
Option "GlideDevice" "integer"
使用する Voodoo ボード(あるいは、SLI 設定のボード群)を選択する。 最初のボードの値は 0, 2 番目のボードの値は 1 でなければならない。以降 も同様である。 このオプションがなければ、最初に見つかった Voodoo ボードが選択される。 このオプションは Device セクションに記述すること。

設定例

以下に示すのは、2 つモニタを使ったマルチヘッド構成で使われる XF86Config ファイルの一部の例である。最初のモニタは fbdev ドライバで動 作し、2 番目のモニタは glide ドライバで動作する。


Section "Monitor"

   Identifier      "Monitor 1"

   VendorName      "Unknown"

   ModelName       "Unknown"

   HorizSync       30-70

   VertRefresh     50-80


# 1024x768 @ 76 Hz, 62.5 kHz hsync

   Modeline "1024x768" 85 1024 1032 1152 1360 768 784 787 823
EndSection


Section "Monitor"

   Identifier      "Monitor 2"

   VendorName      "Unknown"

   ModelName       "Unknown"

   HorizSync       30-70

   VertRefresh     50-80


# 1024x768 @ 76 Hz, 62.5 kHz hsync

   Modeline "1024x768" 85 1024 1032 1152 1360 768 784 787 823
EndSection


Section "Device"

   Identifier  "fb"

   Driver      "fbdev"

   Option      "shadowfb"

   Option      "dpms" "on"
# 筆者のビデオカードは AGP バス上にあり、通常は
# PCI bus 1, device 0, function 0 の位置にある。

   BusID       "PCI:1:0:0"
EndSection


Section "Device"
# 筆者は Voodoo 2 ボードを持っている

   Identifier  "Voodoo"

   Driver      "glide"

   Option      "dpms" "on"
# 次の行で、最初のボードを使うことを指示する

   Option      "GlideDevice" "0"
EndSection


Section "Screen"

  Identifier    "Screen 1"


  Device        "fb"


  Monitor       "Monitor 1"


  DefaultDepth  16


  Subsection "Display"

    Depth       16


    Modes       "1024x768"


  EndSubSection
EndSection


Section "Screen"

  Identifier    "Screen 2"


  Device        "Voodoo"


  Monitor       "Monitor 2"


  DefaultDepth  16


  Subsection "Display"

    Depth       16


    Modes       "1024x768"


  EndSubSection
EndSection


Section "ServerLayout"

  Identifier    "Main Layout"

# 画面 1 は左側、画面 2 は右側に置かれる

  Screen        "Screen 2" 


  Screen        "Screen 1" "" "" "Screen 2" ""

EndSection

この設定ファイルを使い、コマンドラインオプション +xinerama を付けて サーバを実行すると、2 つのモニタで 1 つの大きな領域が表示される。 ウィンドウは両方のモニタ間を行き来できるし、モニタ間にまたがることもで きる。Xinerama 機能拡張を使った X サーバの起動は、以下のコマンドで行え る:

$ xinit -- +xinerama

作者

作者: Henrik Harmsen