現在、SVGA サーバが非アクセラレータの 16-ビットと 32-ビットピクセルを サポートするにはリニアアドレッシングが必須です。この制約はうまくいけば 将来的にはずされるでしょう。"linear" オプション は深さを指定する screen 節で指定することでリニアアドレッシングを有効にし、又 MemBase を (device 節で) 設定する必要があるでしょう(けれども 5446, 546x と いくつかの 5436 を基にした ビデオカードのような PCI カードでは自動的に選択されます)。 カードによって異なる構成がいくつもあります。
ISA バス用の 542x/543x と 16M バイトかそれ以上のシステムメモリの場合は
リニアアドレッシングは不可能です。16bpp は使えません、すいません。14M
バイト以下のメモリの場合は `MemBase 0x00e00000
' を使うことでフ
レームバッファを 14M バイトに割り付けることが可能です。`e' の後ろにゼロ
を5つ付けてください。残念ながら多くの ISA カードはリニアアドレッシング
をサポートしていません。
VESA ローカルバス用の 5424/26/28/29 の場合は、状況はもっと復雑です。 リニアアドレッシングについて2種類の異なるタイプのカードがあります:
MemBase 0x04e00000
' か又は
`MemBase 0x04000000
' を指定しましょう。A26 を 持っている VLB
マザーボードを仮定しています。またはカードが 0x2000000 に割り付けると
か、 5429 のような最近のカードは通常 0x03e00000 (62M バイト) に割り付
けています。16M バイト以上のメモリの場合は、最初のタイプのカード(と間抜けな VLB マ ザーボードの2番目のタイプも)でハングします(多分ハードリブートが自発 的に起ります)。
カードのタイプは目で確認して分かります。カードに A26 ピンがあれば、64M バイト以上に割り付けるものでしょう。確認を行うには、カードを抜いて下さ い。VESA ローカルバスのピン(カードのスロットでない側から見てコネクタピ ンの小さい方の細長い小片)で、右側(全てのチップが実装されている面)を 詳しくみてください。ここに 45 個のピンがあります。内側から 1 から 45 ま で番号を振ります(カードの端の方が45 番です)。内側から数えて、17 番目 のピンが無く、18 番目から 20 番目まではあると思います。21 番目が A30 で、22 番目が A28 、23 番目が A26 です。そして、21 番目から 23 番目のピ ンが無い場合、カードは 64M バイト以上に割り付けることは出来ません。21 番目と 22 番目が空いていて(または両方あり)且つ 23 番目がピンがある場 合、64M バイト以上に多分割り当てます。カード上のピンのそばに小さな回路 がある場合、かなり見込みがあると思います。
ローカルバス上の 543x カードはより単純(Cirrus Logic 社の winsows のドライバがこれをつかっています)ですが、問題が無いわけではありません。
PCI バス上のカードでは、PCI カードを探査したときに自動的にドライバが読 み込むフレームバッファの基底アドレスを格納している PCI 構成レジスタを 持っています。`scanpci' プログラムは PCI 構成を読み出し基底アドレ スを見ます。
VESA ローカルバス上では、殆どの 543x カードは 64M バイトの標準的な割り 付けアドレスを持っていて、オプションで 2048M バイト と 32M バイトをジャ ンパピンで設定します。これはカードに同梱の資料に書かれているか、MS- Windows の system.ini ファイルに (linearaddr = <offset in megabytes > 等と) 書かれているでしょう。Cirrus Logic が多くの VLB マザーボード の実装状況を調査し加えたもので、これらと異なるアドレスピンには実装しな いのです。ドライバは MemBase の指定が無い場合は標準の 64M バイトを仮定します。MemBase の例を少し示します:
MemBase 0x02000000 32Mb
MemBase 0x04000000 64Mb
MemBase 0x80000000 2048Mb
最後に、546X ビデオカードの場合はラッキーかも。心配するような "困難" は ないでしょう。'6X は常にリニアアドレッシングとメモリマップド I/O と 4GB 近いメモリアドレスを使用出来ます。PCI をどうぞ!
16bpp と 32bpp モードは(スクロール、テキスト、塗りつぶし)に限定した アクセラレータ機能がありますがそれでも遅いと感じるでしょう。でも、 (543x が持っているような)優秀なローカルバスインターフェースが十分助け になるでしょう。標準の fbc フレームバッファプログラムは白黒の点描と ビットマップではとても遅いでしょう。 32bpp モードは最低 2M バイトのメモリを搭載した一部のビデオカードでのみ サポートしています。
XF86Config
の "Screen"
節のなかの、
"Display"
項(subsection) に Modes と 仮想画面の大きさを分けて動かしたい深さ毎に
定義しなければいけません。例(2M バイトのビデオメモリの場合)は:
Section "screen"
SubSection "Display"
Depth 8
Virtual 1280 1024
ViewPort 0 0
Modes "640x480" "800x600" "1024x768"
Option "linear"
EndSubSection
SubSection "Display"
Depth 16
Virtual 1024 992
ViewPort 0 0
Modes "640x480" "800x600" "1024x768"
Option "linear"
EndSubSection
SubSection "Display"
Depth 32
Virtual 832 600
ViewPort 0 0
Modes "640x480" "800x600"
Option "linear"
EndSubSection
EndSection