XFree86[tm] 4.0 リリースノート : X サーバ
Previous: はじめに
Next: X のライブラリとクライアント

2. X サーバ

XFree86 3.3.x では X サーバのバイナリが複数個あり、それぞれのサーバは 異なるハードウェアを動作させる。XFree86 4.0 はこれとは異なり、 XFree86 と呼ばれるバイナリひとつだけを使う。このバイナリは ひとつまたは複数個のドライバを静的にリンクできるし、もっと普通の使い方 としてビデオドライバやその他に必要なモジュールを動的にロードできる。

XFree86 4.0 の X サーバは Intel/x86 プラットフォーム用のほとんど の UNIX(R) および UNIX 系 OS に対応している。これに加えて、Alpha および PowerPC プラットフォーム用の Linux にも対応している。この他の アーキテクチャや OS に対応するための作業も進行中、あるいは将来の計画に なっている。

2.1. ローダとモジュール

XFree86 の X サーバには組み込みのランタイムローダが組み込まれています。 これは Metro Link 社が寄付 しました。このローダはよく使われるたいていのフォーマットの 普通のオブジェクトファイルやライブラリをロードできます。このローダは OS ネイティブの動的ローダ対応に頼らないため、動的ロード機能を持たない OS でも動作し、モジュールを OS に依存しないようにできます(ただし、当然 ながら CPU のアーキテクチャには依存します)。つまり、例えば Linux/x86 でコンパイルしたモジュールを Solaris/x86, FreeBSD, あるいは何と OS/2 上で動作する X サーバでロードできます。この方法の主な利点のひとつは、 モジュールが更新されたときに様々な OS でモジュールを再コンパイルする 必要がないことです。我々はこの利点を生かし、メジャーリリースの合間でも もっとこまめにモジュールを更新しようと考えています。

バージョン 4.0 のローダは Intel(x86), Alpha, PowerPC プラットフォーム に対応しています。また Sparc プラットフォームにも予備的に対応していま すが、まだ使われていません。

X サーバがモジュールを使う対象は、ビデオドライバ、X サーバの機能拡張、 フォントのラスタライザ、入力デバイスのドライバ、フレームバッファの レイヤ(mfb, cfb 等)、一部のドライバ(XAA等)が使う内部コンポーネント等で す。

このリリースで使われているモジュールのインタフェース(API と ABI)はまだ 予告無しに変更されるかもしれません。4.0 リリースの時点では モジュールのインターフェースに関する後方互換性を保とうとしていますが (つまり 4.0 のモジュールが将来の X サーバのコアバイナリで動作するとい うこと)、必ずそうなることは保証できません。将来のリリースでは モジュールのインタフェースをしっかりと文書化して確定しようと考えていま す。それができれば後方互換性の実現は容易になるでしょう。

モジュールのセキュリティに関する注意

XFree86 の X サーバは root 権限で動作します。つまり X サーバがロードするモジュールも root 権限で動作します。 そのため、どんなユーザも入手先が信頼できるローダブルモジュール しか使わないことをお勧めします。将来のリリースでは我々が提供し たモジュールの署名/検査を行う機構が使えるようになると考えてい ます。

2.2. 設定ファイル

X サーバの設定ファイルのフォーマットは、新しい機能のいくつかを扱うため に拡張されています。xf86config ユーティリティを使うと基本的な 設定ファイルを生成できますが、その後にある程度は手で編集する必要がある かもしれません。X サーバは基本的な設定ファイルの生成にも先行的に対応し ています。これは(root になって) "XFree86 -configure" を実行す ると作れます。X サーバに生成させるのではなく、サンプルの XF86Config.eg ファイルを雛型として使うこともできます。この サンプルファイルは /usr/X11R6/lib/X11 にインストールされてい ます。XF86Setup ユーティリティは現在は使えませんが、開発作業 は進めています。

主な変更点はこの文書で押えていますが、全体を網羅した情報については XF86Config のオンラインマニュアルを見てください。

設定ファイルの検索パスは拡張されており、/etc/X11/usr/X11R6/etc/X11 ディレクトリが追加されています。検索パスの 厳密な説明は XF86Config のオンラインマニュアルに書かれています。

2.3. コマンド行オプション

新しく X サーバに追加されたコマンド行オプションは以下の通りです:

-depth n

サーバが動作する際の色の深さを指定します。 ほとんどのドライバでは 8 がデフォルト値です。ほとんどのドライバ は 8, 15, 16, 24 に対応しています。一部のドライバは 1, 4 にも 対応しています。他の深さに対応しているドライバもあるかもしれま せん。注意する点は、前のバージョンで指定していた ``bpp'' と深 さは違うことです。深さは、ピクセルの値を決める上で意味がある ビットの数です。bpp は各ピクセルが使うビット数の合計であり、使 わないビットも数えます。従来の -bpp オプションはもう 認識しません。なぜなら、bpp はサーバの動作を指定するのによい方 法ではないからです。

-fbbpp n

フレームバッファで使う bpp のフォーマットを指定します。24 ビット モードで、フレームバッファのフォーマットがドライバがデフォルト で選ぶものと異なる場合に使えます。大抵の場合は使う必要はありません。

-pixmap24

クライアント側のピックスマップのフォーマットを バージョン 3.3.x のサーバで良く使われる packed 24 ビットフォーマット にします。デフォルト値はこれよりも使われている 32 ビットフォーマット です。普通はこのオプションを指定する必要はありません。

-pixmap32

クライアント側のピックスマップのフォーマットを 32 ビット フォーマットにします。これがデフォルト値なので、普通は指定する 必要はありません。

-layout name

設定ファイル内のどの ServerLayout セクションを使うのかを指定し ます。このオプションを指定しなければ、最初の ServerLayout セクションが使われます。ServerLayout セクションがなければ 最初の Screen セクションが使われます。

-screen name

設定ファイル中のどの Screen セクションを使うのかを指定します。 このオプションが指定されていなければ、最初の ServerLayout セクションが使われます。ServerLayout セクションがなければ最初 の Screen セクションが使われます。

-keyboard name

設定ファイル内のどの InputDevice セクションをコアキーボードの 設定に使うのかを指定します。このオプションは -screen オプションと組み合わせて使えます。

-pointer name

設定ファイル内のどの InputDevice セクションをコアポインタの 設定に使うのかを指定します。このオプションは -screen オプションと組み合わせて使えます。

-modulepath path

モジュールの検索パスを指定します。パスはサーバモジュールを探す ディレクトリ(絶対パス)のコンマ区切りのリストです。この オプションで指定すると、設定ファイルで指定した値は上書きされま す。このオプションが使えるのはサーバを root ユーザで 実行した時だけです。

-logfile file

ログのファイル名を指定します。このオプションで指定すると デフォルト値が上書きされます。このオプションが使えるのはサーバ を root ユーザで実行した時だけです。

-scanpci

scanpci モジュールをロードして実行することを指示しま す。これにより、PCI バスのスキャンが行われます。

-logverbose [n]

ログファイルの表示の詳しさを指定します。デフォルト値は 3 です。 The default is 3.

3.3.x から変更があった X サーバのコマンド行オプションは以下の通りです:

-verbose [n]

標準エラー出力に出力するメッセージの詳しさを指定します。この オプションを複数回指定すると、メッセージをより詳しくできます し(3.3.x と同じ)、詳しさを数値で明示的に指定することもできます。 デフォルトの詳しさのレベルは 1 です。

-xf86config filename

このオプションは拡張され、root でないユーザでも設定ファイル名 を選択指定できるようになりました。この場合は、設定ファイルの 検索パスはファイルを特定するために使います。これにより、ユーザ はシステム管理者が用意した複数の設定ファイルの中からひとつを 選べるようになります。

2.4. XAA

XFree86 のアクセラレーションアーキテクチャ (XAA, XFree86 Acceleration Architecture) は完全に最初から書き直しました。ほとんどのドライバは XAA モジュールを使っ てアクセラレーションを実装しています。

2.5. マルチヘッド

今回のリリースではいくつかのマルチヘッド設定に対応しています。主に 複数の PCI/AGP カードを使う設定です。ただし、この辺りはまだ開発中です。 将来のリリースではうまく動作するものも増えると思います。うまく動作する ことが分かっているのは、ほとんどが Matrox の(対応)カードを複数枚使う場 合です。

大きな問題点のひとつは、マシンの起動時に初期化されなかったカードを ドライバがうまく初期化できないことです。この問題はほとんどの ドライバが使っている INT10 対応(セカンダリのカードを「ソフトブート」で きるようになります)でいくらかましになりましたが、解決しなければならな い問題がまだ他に残っている場合もあります。カードの組合せによっては、 プライマリのドライバを入れ換える(PCI のスロットを変えるか、システムの BIOS でプライマリカードの指定を変更する)ことによって状況がよくなること もあります。

2.6. Xinerama

Xinerama は複数の物理的な画面をひとつの画面のように動作させるための X サーバの機能拡張です。X11 の従来のマルチヘッド機能では、ウィンドウは 物理的な画面間をまたぐことや画面間を移動することはできませんでした。 Xinerama はこの制限を取り払います。しかし Xinerama は物理的な画面の ルートウィンドウの深さが全て同じであることを要求します。したがって、例 えば 8 ビットの画面を 16 ビットの画面と組み合わせて Xinerama モードで 使うことはできません。

Xinerama はデフォルトでは有効になっていません。X サーバのコマンド行 オプション +xinerama で有効にできます。

Xinerama は X11R6.4 に含まれていました。今回の XFree86 のリリースに含 まれているバージョンは、性能と正しさを向上するために完全に書き直したも のです。

既知の問題:

2.7. XVideo 機能拡張

XVideo 機能拡張が今回のリリースに含まれていますが、説明を書いてくれる 人がいませんでした。

2.8. DGA バージョン 2

DGA 2.0 はほぼ完成していますが、まだ全てのドライバに実装されているわけ ではありません。クライアントライブラリのために前もって用意されている 文書が xc/programs/Xserver/hw/xfree86/DGA にあります。バージョン 1.0 への後方互換性もある程度確保されています。 この情報は古くなっています。

2.9. DDC

VESA(R) ディスプレイデータチャネル(DDC[tm], Display Data Channel) 標準を使うとモニタからビデオカードへモニタ自身に関する情報(特に 対応しているスクリーン解像度やリフレッシュレート)を送らせることができ ます。

ほとんどのビデオドライバで一部または完全な DDC 対応が利用できます。 DDC はデフォルトで有効になりますが、"Device" セクションで無効にできま す(Option "NoDDC" とします)。XFree86 は DDC のバージョン 1 と バージョン 2 に対応しています。 Option "NoDDC1", Option "NoDDC2" とすれば両者を別々 に無効にすることもできます。

X サーバはディスプレイから取り出した DDC 情報を起動時に出力しますが、 この情報はまだモード行を決めるためには使われていません。一部のドライバ では、X サーバに設定ファイルを生成させる時に新しい -configure オプションを使うと DDC 情報を使います。

DDC を受けて起こる動作は変更されました。いくつかのドライバは DDC 情報を使って画面の大きさとピッチを設定します。この動作は、 X サーバのコマンド行オプション -dpi 75 を使って DDC を使わな い場合のデフォルト値である 75 に明示的に再設定するか、または設定 ファイルの "Monitor" セクションの "DisplaySize" キーワードを使って 画面のディメンジョンを適切に指定することによって上書き設定できます。

2.10. GLX とダイレクトレンダリングインフラストラクチャ (DRI)

Precision InsightRed Hat, SGI, 3Dfx, Intel, ATI, Matrox から資金提供と技術支援を受け、X11 のウィンドウ内で 3D レンダリングを行 うための機能拡張である GLX の統合を行ってきました。コアとなる 3D レンダリングコンポーネントは Mesa ライブラリでした。 SGI は GLX 機能拡張の枠組をオープンなライセンスの下で公開しました。 この機能拡張は本質的に 3D ライブラリと X ウィンドウシステムを結びつけ るものです。Precision Insight はこれらのコンポーネントを XFree86 の X サーバに組み込み、Direct Rendering Infrastructure (DRI) を追加しました。Direct Rendering は 3D データを直接グラフィックス ハードウェアに送るための高度に最適化された経路を提供します。今回の リリースでは 3Dfx Banshee と Voodoo3 グラフィックスカードを ダイレクトレンダリングに対応させるための完全な実装が用意されています。 追加のダイレクトレンダリング用ドライバは 2000 の前半のうちには 3Dfx, Intel, ATI, Matrox のボードでも使えるようになるでしょう。DRI 互換のドライバについての最新情報は SourceForgeDRI Project にあります。

2.11. X-Video 機能拡張 (Xv)

XvQueryPortAttributes 関数が追加され、また XvImages もサポートされるよ うになりました。XvImages は別の色空間(YUV など)を使う XImages であり、 共有メモリセグメント経由で X サーバに渡すことができます。これにより クライアントはハードウェアによる質の高いスケーリングやフィルタリングを 使いながら YUV データを表示できます。XvImages は現時点では Matrox G200/G400 カードでしか使えません。

2.12. 他の機能拡張

XFree86-Misc 機能拡張は新しいサーバアーキテクチャにはまだ完全には移植 できていません。将来のリリースでは移植は完了するはずです。

XFree86-VidModeExtension は更新されており、新しいサーバアークテクチャ への移植はほぼできています。モードの検査周りでは必要な作業がまだ残って いるので、この機能拡張を使うときには注意が必要です。この機能拡張は 実行時にガンマ値の設定を変える機能や、利用可能なモードに変える機能に 対応しています。新しい xgamma ユーティリティはこの機能を使え るようにします。バージョン 3.3.x の機能拡張との互換性も保持されていま す。この機能拡張の足りない部分や新しい機能は、将来のリリースでは できるようになるはずです。

2.13. ドライバ

XFree86 4.0 には以下のドライバが含まれています:


ドライバ名説明
apmAlliance Pro Motion
atiATI
chipsChips & Technologies
cirrusCirrus Logic
cyrix (*)Cyrix MediaGX
fbdevLinux fbdev
glideGlide2x (3Dfx)
glint3Dlabs, TI
i740Intel i740
i810Intel i810
mgaMatrox
neomagicNeoMagic
nvNVIDIA
r128ATI Rage 128
renditionRendition
s3virgeS3 ViRGE
sisSiS
tdfx3Dfx
tgaDEC TGA
tridentTrident
tsengTseng Labs
vgaGeneric VGA

(*) が付いたドライバは、先行的な形で今回のリリースに入っていますが、 まだ完成していなかったり、安定していなかったりします。

2.13.1. APM

これは Alliance AT3D/AT25/AT24 チップ用のドライバです。 8, 15, 16, 24, 32 ビット(32 ビットはチップの制限で 24bpp 扱い)で アクセラレーション機能に比較的うまく対応しています。AP6422 チップへの 先行的な対応も行っていますが、割とバグも多いです。このチップはまだ 3.3.x サーバでサポートされていません。Xv ドライバはほとんど OK です。 glide2x 用の Rush 機能拡張は動作し、結果のオーバーレイを含む追加機能も いくつかあります。DGA と DGA2 のテストも OK でした。 詳しい情報は README.apm にあります。

2.13.2. Chips & Technologies

C&T についての情報は README.chips にあります。

2.13.3. s3virge

s3virge ドライバは 3.3.x の SVGA S3 ViRGE ドライバを移植したものです。 したがって、このドライバの機能と安定度は XFree86 の前のリリースと同じ はずです。XFree86 4.0 共通の改良により、先行的に使える利点がいくつか 追加されています。

まだ実装されていないかテストが不十分な機能のうち主だったものは以下の通 りです:

詳しい情報は README.s3virge にあります。

2.13.4. TGA

今回のリリースで TGA ドライバはアクセラレーションが使えるようになり、8 プレーンと 24 プレーンのフレームバッファに対応しました。これは Linux/Alpha で動作することが分かっています。詳しい情報については README.DECtga ファイルを見てくださ い。

2.13.5. Matrox

MGA ドライバは XFree86 3.3.4 と同じ範囲のハードウェアに対応しています が、マルチヘッド対応や(落ちたりしない)オーバーレイ対応(8 ビット + 24 ビット)等の改良がたくさん行われています。

サーバを 32 bpp で起動した時(-fbbpp 32)に "overlay" オプションを指定していると 8+24 モードが有効になり ます。現在の実装は不要な exposure イベントを捨てる最適化がまだできてい ないので、将来のリリースではこのオプションの性能はもっと向上するでしょ う。デフォルトでは、オーバーレイを表すカラーキーは 255 ですが、個々の 問題を回避するためにこの値を "ColorKey" オプションを使って変 えられます。キーに指定できる値は 2-255 です。

このリリースでは G400 と特に G400 MAX の性能を向上させています。また G200/G400 チップでの XvImage 対応とメモリ量の自動検出機能の改善も行わ れています。

詳しい情報はオンラインマニュアルの mga に載っています。

2.13.6. ATI

ATI ドライバに関する情報は README.ati に載っ ています。現在のバージョンではアクセラレーションは効きません。 アクセラレーションへの対応は将来のリリースで計画しています。

2.13.7. NVIDIA

"nv" ドライバは全ての Riva TNT アクセラレータと GeForce, Quadro アクセラレータに対応しています。DGA 2.0 にも対応しています。

詳しい情報は nv のオンラインマニュアルにあります。

2.13.8. Glide

このドライバは Voodoo1, Voodoo2 ボード用です。このドライバは 3DFX の Glide API (これは Linux 同様に入手できます)上で X を動かします。 このドライバを動かすためには Glide 2.x をインストールしている必要があ ります。このドライバはハードウェアアクセラレーションはまったく使いませ ん(これらのボードには 2D アクセラレーション機能がないため)がかなり高速 です。というのも、CPU はローカルの RAM に対してレンダリングし、 それからブロックごとボードにコピーするからです。残念ながら、Voodoo 1/2 ボードの解像度は割と限られています。Voodoo1 は 800x600, Voodoo 2 は 1024x768 までしか出せません。しかし、それでも Xinerama や マルチヘッドモードの 2 つめのヘッドとしてはある程度使えるでしょう。

16 bpp と 24 bpp モードに対応しています(24 ビットは 32 ビットの疎な packed モードです)。

このドライバについてのもっと詳しい情報は XFree86 の 'glide' の オンラインマニュアルに載っています。オンラインマニュアルを読む前に このドライバを動かすのはやめた方がいいでしょう。

Voodoo Banshee と Voodoo3 移行のボードでは、tdfx ドライバを使ってくだ さい。このドライバは直接ハードウェアとやりとりするので、ずっと高速です。

2.13.9. GLINT

"glint" ドライバは 3Dlabs/Texas Instruments GLINT/Permedia チップに対 応しています。8, 15, 16, 24 ビットの深さでは(一部のチップには深さの制 限があります)対応はかなりよくできています(3.3.x よりもよい)。 8+24 のオーバーレイにも対応しています。ボードによっては Xv 機能拡張に も対応しています。

このドライバについての詳しい情報は 'glint' ドライバの オンラインマニュアルに載っています。


XFree86[tm] 4.0 リリースノート : X サーバ
Previous: はじめに
Next: X のライブラリとクライアント