次のページ 前のページ 目次へ

4. リニアアドレッシング と 16bpp/24bpp/32bpp モード

現在、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 種類の異なるタイプのカードがあります:

多分、試行錯誤に頼らないといけないでしょう。16M バイトより少ないメモリならば `誤った' membase を設定するとグラフィック画面は表示できませんが、多分コントロール+オルタネート+バックスペースを同時に押すと戻ってこれます。

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


次のページ 前のページ 目次へ