現在、SVGA サーバが 16-ビット、24-ビットと 32-ビットピクセルを サポートするにはリニアアドレッシングが必須です。(この制約はうまくいけば 将来的にはずされるでしょう。しかしごく最近の PCI バスを使用する新しいカード では、リニアアドレッシングが問題ない事もあり、現在リニアアドレッシングを 無効にすることは他の機能より優先順位が下がっています。 "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 モードは今回完全に高速化されました。XAA に感謝します。 5436/46 と 546X のような最近のチップでは 24bpp も完全に高速化されました。 多くのデータを 4 倍以上高速に表示するので X サーバをかなり遅く感じは しないでしょう。 24bpp と 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