Cirrus チップセットユーザ向けの情報 Harm Hanemaayer (H.Hanemaayer@inter.nl.net), Randy Hendry (randy@sgi.com) (64xx), Corin Anderson (corina@the4cs.com) 5 November 1998 The X Japanese Documentation Project 18 January 1999 ____________________________________________________________ 目次 1. サポートしているチップセット 2. 基本設定 3. XF86Config のオプション 4. モードについて 5. リニアアドレッシングと 16bpp/24bpp/32bpp モード 6. ``cl64xx'' ドライバ 7. "cirrus" ドライバでのトラブル対策 8. テストを行った機器構成 9. ドライバの変更 10. 日本語訳について ______________________________________________________________________ 1. サポートしているチップセット Cirrus のチップセット用には、"cirrus" と "cl64xx" と呼ばれる2つの異な る SVGA ドライバがあります。 "cirrus" ドライバは 256 色の(アクセラレー タ付き)SVGA サーバと(アクセラレータ無し)白黒サーバで用いられています。 ハードウェア構成によっては、SVGA サーバは 16, 24, 32bpp の truecolor モードをサポートします。"cl64xx" ドライバは 256 色の SVGA サーバと 16 色サーバ、白黒 サーバで用いられています。特に断っていない限りは、この 文書では "cirrus" ドライバについて記述しているものとします。次の Cirrus Logic 製チップセットがサポートされています: CL-GD5420 ISA SVGA チップセット, 1Mバイト; 最大ドットクロックは 45 MHz (256 色サーバ)。拡張書き込みモードによるアクセラレータ機能(この サーバでは、スクロールと塗りつぶしに用いています)。このチップ セットは 256 色の 1024x768 ノンインターレースはサポートしていま せん。 CL-GD5422 5420の改良版(32 ビット内蔵メモリインターフェース)。最大ドットク ロックは 80 MHz です。 CL-GD6205/6215/6225/6235 5420 とほぼ互換のラップトップ用チップセット。ドットクロックは 25 MHz のみサポートしています(外部ディスプレイではそれ以上も可能)。 これらのチップセットを使った時に起こる問題がいくつか報告されてい ます(特に外付けディスプレイ使用時)。"noaccel" オプションを調べて みてください。 CL-GD6420/6440 これらのチップセットは 542x シリーズとは互換はありませんが、 "cl64xx" ドライバでサポートされています。このチップセットは最近 のラップトップに搭載されており、昔の Cirrus チップセット (5410/AVGA2)と似た部分を持っています。このドライバは他の 64xx チップセットに対しても動作しています。このドライバに対する設定用 の識別子は "cl6420" と "cl6440" です。このドライバについては 「``cl64xx ドライバ''」セクションで詳しく説明します。 CL-GD5424 基本的には 5422 の VLB 版ですが、5426 に似ている点もいくつかあり ます。 CL-GD5426 ISA バスと VLB 両方をサポートしており、2M バイトまでメモリを搭載 できます。アクセラレーション性能を向上させるには BitBLT エンジン を搭載してください(BitBLT は画像転送とテキスト表示に有効です)。 ドットクロックの上限は 85 MHz です。 CL-GD5428 5426 の改良版です。 CL-GD5429 5428 の改良版で、より高い MCLK 値を公式にサポートし、メモリマッ プド I/O を搭載しています。 CL-GD5430 5429 に似ていますが、543x のコアを持っています(32 ビットホストイ ンタフェース)。64 ビットメモリモードは持っていません。 CL-GD5434 64 ビット内蔵メモリインタフェースを持った `Alpine' の系列のチッ プです。このチップは、2M バイトのメモリを搭載すると 64 ビットモ ードしかサポートしません。1M バイトしかメモリを積んでいなければ 性能は厳しく制限されます。110 MHz までのドットクロックをサポート します(新しいチップセットは 135 MHz をサポートしています)。 CL-GD5436 高度に最適化した 5434 です。 CL-GD5440 CL-GD5430 に似ており、CL-GD5430 として検出されます。 CL-GD5446 Alpine 系列の2次元アクセラレータの一つで、CL-GD5436 に似ていま す。 CL-GD5480 同期グラフィックスRAM(SGRAM)をサポートした、Alpine 系列の新しい チップです。 CL-GD5462, CL-GD5464 and CL-GD5465 Laguna VisualMedia 系列の 2 次元アクセラレータです。これらのチッ プセットは Rambus RDRAM メモリを使っています。CL-GD5462 は 64 ビット 2 次元アクセラレータであり、BitBlit エンジンとビデオウィ ンドウ(現在のサーバでは使用していません)、ハードウェアカーソルに 対応しています。白黒モードはテストされていません。CL-GD5464 は Laguna 系列の次のチップで、 CL-GD5465 の最新のチップです。どちら もテストされています。サポートしましたがテストしていません。 CL-GD7541/7542/7543/7548 5428/3x と一部互換性があるラップトップ用のチップセットです。いく つかの環境でテストは行ったのですが、全ての環境で正しく動作するわ けではないようです。 CL-GD7555 このチップに対しては、754x 系列の 64 ビット拡張がサポートされて います。ただしサポートは制限付きで、テストされておらず、自動検出 も行われません。 Chipset "clgd7555" という行で指定してください。 サポートしている色の深さそれぞれについての最大ドットクロック値のリスト を示します: 白黒 8 bpp(256色) 16 bpp 24 bpp 32 bpp CL-GD62x5 45 MHz 45 MHz CL-GD5420 80 MHz 45 MHz (1) CL-GD542x/512K 80 MHz 45 MHz CL-GD5422/24 80 MHz 80 MHz 40 MHz 27 MHz CL-GD5426/28 85 MHz 85 MHz 45 MHz (2) 28 MHz CL-GD5429 85 MHz 85 MHz 50 MHz 28 MHz CL-GD5430 85 MHz 85 MHz 45 MHz (2) 28 MHz CL-GD5434/1Mb 85 MHz 85 MHz 42 MHz 28 MHz CL-GD5434/2Mb 85 MHz 110/135 MHz 85 MHz 28 MHz 45/50 MHz (2) CL-GD5436/1Mb 85 MHz 110 MHz (3) 60 MHz (3) 40 MHz (3) CL-GD5436/2Mb 85 MHz 135 MHz 85 MHz 85 MHz (3) 60 MHz (3) CL-GD5446/1Mb 85 MHz 110 MHz (3) 60 MHz (3) 40 MHz (3) CL-GD5446/2Mb 85 MHz 135 MHz 85 MHz 85 MHz (3) 60 MHz (3) CL-GD5462 170 MHz 170 Mhz 170 MHz 170 MHz 135 MHz CL-GD5464/65 170 MHz 230 Mhz 170 MHz 170 MHz 135 MHz CL-GD5480 85 MHz 200 MHz 100 MHz 100 MHz 50 MHz CL-GD754x 80 MHz 80 MHz 40 MHz (4) (5) (1) メモリが 512K の場合 (2) 高い MCLK 値を設定すると 50 MHz。 (3) メモリクロックに依存します。 (4) この値は一部のチップに対しては低すぎるかもしれません。 (5) 有効にしてテストすれば、この深さでも実際に動作するかもしれません。 大まかに言うと、仮想的/物理的な画面解像度はビデオメモリの量の制約を受 けます: 白黒 8 bpp 16 bpp 24 bpp 32 bpp 256K 800x600 640x400 512K 1152x900 800x600 640x400 1024K 1600x1200 1152x900 800x600 680x510 2048K 2304x1728 1600x1200 1152x900 960x720 800x600 4096K 2304x1728 2272x1704 1600x1200 1360x1020 1152x900 546x チップの場合、上の表はあまり正確ではありません。仮想画面の幅は任 意ですが、画面のピッチ を次の表のうち、最も近い値に切り上げましょう。 従って、画面上の各行はビデオメモリは単に表示を行うだけの量よりも多くの ビデオメモリを必要とします。ビデオメモリを最大限使うには、以下のピクセ ル幅の表から仮想デスクトップの幅を選択してください: 8bpp: 640, 1024, 1280, 1664, 2048, 2560, 3328, 4096, 5120, 6656 16bpp: 320, 512, 640, 832, 1024, 1280, 1664, 2048, 2560, 3328 24bpp: 640, 1024, 1280, 1664, 2048, 2560, 3328, 4096, 5120, 6656 32bpp: 160, 256, 320, 416, 512, 640, 832, 1024, 1280, 1664 他の Cirrus 製チップセットでは、アクセラレータ機能を使う場合には、仮想 画面の幅を 32 の倍数にするとよいでしょう。モニタの水平方向のタイミング は 2048 以下にしなければいけません。 より大きい色の深さで XF86_SVGA を動作させるには、次のオプションを X サ ーバ渡してください: startx -- -bpp 16 5-6-5 RGB ('6万4千色', XGA) startx -- -bpp 16 -weight 555 5-5-5 RGB ('Hicolor') (5462 では使えません) startx -- -bpp 24 8-8-8 RGB truecolor startx -- -bpp 32 8-8-8 XRGB truecolor (543X/46/6X のみ) 2. 基本設定 `XF86Setup' や`xf86config' プログラムを使用して XF86Config ファイルを 生成することをお勧めします。このプログラムは高解像度, 8bpp の動作する 設定を作成してくれます。使用するモニタに、より適したモードタイミング 値(例: 1152x900モード)を Monitor セクションに記入することもできます。 ドライバのオプションに関する詳しい説明は次のセクションで行いますので、 ここでは基本的なものについて簡単に述べます。 全てのチップセットにおいて、Clockchip "cirrus" 行をDevice セクションに 書くと便利な場合があります。こうしておくと、サーバがサポートしている固 定のドットクロックの組み合わせの中から選ぶのではなく、任意のドットク ロックを使うことができます。この指定は、低解像度モード用に 12.6 MHz の ドットクロックを使いたい場合に必要になります。しかし、このオプションを 使用すると、クロック周波数が不安定になっておかしな現象が起こることがあ るので、絶対に必要な時だけ使用してください。 BitBLT エンジンを積んだチップ全てに対して、新しい XAA(XFree86 Acceleration Architecture)が使われています。このコードはまだベータ段階 です。グラフィックスの再描画がうまくいかない場合、"noaccel" オプション を試してください。メモリマップト I/O を使っている場合には、 "no_mmio" で十分かもしれません。 色の深さ 16bpp, 24bpp 32bpp で動作できるようにするため、また 8bpp 時の 性能を向上させるためにはリニアアドレッシングを使わなければなりません。 PCI バス環境では、リニアアドレッシングはデフォルトの操作モードです。こ れを無効にするには "nolinear" を指定します。他のタイプのバスの場合、一 般的にはローカルバス上の 543x で使用可能です。また、システムのメモリが 16Mb いかであれば、ローカルバスの 542x と ISA の 543x カードでも使用可 能です。この場合には "linear" オプションを指定しなければなりませんし、 たぶん Membase のアドレスも指定しなければなりません。詳しい説明につい ては、後のセクションを参照してください。 Alpine 系列全てのカードに対して、メモリマップト I/O はデフォルトの操作 モードです。5429 の場合には、"mmio" オプションを使ってメモリマップト I/O を有効にできますが、テストは行われていません。 最後になりますが、読者のみなさんが 546x チップをお持ちならば、これは PCI バスか AGP バスに接続されているでしょう。この場合は、メモリマップ ト I/O やリニアフレームバッファ空間がシステムメモリと衝突していても問 題はありません。PCI 空間は 4GB 近くのアドレスまでマップされています。 mmio と リニアフレームバッファはシステム上で全く干渉しないので、 "linear", Membase, "mmio" オプションは無視されます(メモリマップと I/O とリニアアドレッシングの両方が使われます)。 3. XF86Config のオプション `Clocks' コマンドは使わないでください。クロックは固定(つまり、検出は行 わない)ですし、(各チップセットにがサポートしている最大クロック値を除い て)カードによる変化も無いはずです。 以下に挙げるオプションは、Cirrus ドライバ専用のものです。オプションは それぞれ、XF86Config ファイルの `svga' ドライバのセクション内の、オプ ションを適用する色の深さの Screen サブセクションで指定しなければなりま せん。(Device セクションで指定することにより、全ての色の深さでオプショ ンを有効にすることができます)。 Option "noaccel" このオプションはアクセタレータ機能を無効にします。このオプション が役に立つのは、アクセラレーション機能のバグや高いドットクロック 値、速い DRAM のタイミング等に関連する問題に対処する時です。ただ し、性能は悪くなります(それでも、ローカルバスでは問題ないでしょ う)。 Option "fast_dram" "med_dram" "slow_dram" (5424/6/8/9, 543x, 5446, 546x)" これらのオプション は、内蔵メモリクロック(MCLK, ただし 546x の場合は BCLK) レジスタ に他の数値を設定するものです。普通は BIOS にプログラムされている デフォルト値なら大丈夫ですが、どうしても必要でない限りはこのオプ ションで無茶をしないでください。 "fast_dram" オプションはビデオカードの内蔵メモリクロック(MCLK)レ ジスタの値をより高く設定します(最近のチップはデフォルトで十分高 い値を使っています)。通常、このレジスタに触ることはないのです が、標準の CL-GD542x BIOS はこのレジスタをいくらか低い側(チップ の仕様で制限されています)の値に初期化するようです。この値が低い と、高いドットクロックモードの時に性能に悪影響が出ます。この影響 は、拡張 RAS タイミングが使われる(これはサーバが検出を行う時に示 されます)場合に特に顕著です。このオプションが適切かどうかを決定 する際には、DRAM の実際の速度は決定的な要素ではありません。ある CL-GD5426 ベースのカード(MCLK をこの値(0x22)に設定するための DOS のドライバが付属しています)は 80ns の DRAM を搭載し、拡張 RAS タ イミングを使っていますがは、高い MCLK 値でも安定して動作するよう です。 カスタマイズされた BIOS が標準値でない高い値への初期化を行う(主 に有名どころの)カードがあります。 "slow_dram" オプションは、MCLK を標準の CL-GD542x BIOS が使う 値(0x1c)に設定します。MCLK の値が高すぎると、スクリーンにちらつ くピクセルの縦縞ができたり、テキストにおかしなピクセルが現われた り、 X を終了した後にテキストモードのフォントのピクセルが欠ける という現象が起きます(MCLK を低すぎる値にしても、よく似た現象が起 きることがある点に注意してください)。 起動時にドライバは MCLK レジスタの値を表示します(この値をまず確 認してください)。また、レジスタの値に何らかの変化があれば、それ も表示します。 典型的な MCLK の値: 0x1c (50 MHz) これは普通、BIOS のデフォルト値です。"slow_dram" オプションで 強制指定できます。 0x1f (55 MHz) "med_dram" オプションで使用する値です。 542x ベースのカードで 扱える最大値は、リニアアドレッシングを有効にすれば扱えるよう です。 0x22 (60 MHz) ほとんどの(拡張 RAS)542x カードでは扱えると思われる値であり、 "fast_dram" オプションで使われます。 542x チップの公式な最大周波数は 50 MHz です。5434 の公式仕様でも 50 MHz (0x1c) で、5429 と 5430 の場合はたぶん 60Hz(0x22)です。現 在のリビジョンの 5434(E 以降)は 64 MHz の MLCK をグラフィックス モードでサポートし、ドライバはこれを自動的にプログラムします。こ れが問題を引き起こした場合は "slow_dram" オプションを使用してく ださい。 DRAM のバンド幅で決めるクロックの上限について、ドライバは MLCK も考慮します。 564x チップの場合、BCLK は Rambus アクセスクロックです。典型的な 値は 258 MHz から 300 MHz の範囲にあります。問題が起こる場合に は(黒い市松模様が画面に表示される等)、"med_dram" オプションか "slow_dram" オプションを試してください。 どんな場合であれ、問題さえ起きなければ(性能や高いドットクロック での安定性)、DRAM 関係のオプションを使わないに越したことはありま せん。 Option "no_bitblt" 5426/28/29/3x/46/6x/754x で使用する場合、このオプションは BitBLT エンジンの仕様を無効にする効果がありますが(5424 では効果はありま せん)、一部のアクセラレーション機能はそのままです。これは BitBLT エンジンを使う機能に関連する問題に対処する際に役に立ちます。性能 は著しく悪くなります。 Option "no_imageblt" このオプションは用いられなくなりました。"xaa_no_color_exp" オプ ションの効果はいくらか似ています。 chipset "clgd54xx" 強制的に与えられたチップセットを検出します。サポートされているの にうまく検出されないチップセットを使う時や、サポートされている チップセットに互換と思われる未サポートのチップセットを使う時に便 利です。 videoram 1024 (または別の値) このオプションは検出したビデオメモリの量を上書きし、指定された量 のメモリがカードに載っているふりをして動作します。このオプション が役に立つのは、メモリ 2MB のカードにおいて DRAM の構成がドライ バが上位のメモリ領域を有効にする方法と互換でない時や、メモリの検 出がうまく行かない時です。このオプションは Device セクションで行 わなければなりません。 Option "fifo_conservative" (5424/6/8/9/3x/46/6x/754x) このオプションは、高いドットクロック値(>= 65 MHz)に対する CRT の FIFO の閾値を安全側の値に設定し、性能は落ちるものの、縞が光った り、画面が揺れたり、スクリーン上で水平方向に表示が繰り返した り(特に、この現象はスクロール等の BitBLT 操作を行っている途中に 起こります)するといった問題をたぶん緩和します。 Option "fifo_aggressive" (5424/6/8/9/3x/46/6x/754x) このオプションは CRT の FIFO の閾値を危険側の値に設定します。つ まり、ドットクロック値が低い時に使うのと同じ値にします。理論的に はドットクロック値が高い時の性能が良くなりますが、大抵の場合は効 果がありません。しかし、546x を使っている場合には、水平の縞が 減ったり、その他の表示がおかしくなる問題(表示が左にずれる等)を解 決することもあります。 Option "no_2mb_banksel" (542x) このオプションを使うと、ドライバは 2M バイトカードの上位 1M 分の メモリを有効にするための「DRAM バンク選択」ビットの設定を行いま せん。これは 1MB 以上のメモリを使う仮想スクリーンの設定を行って いる時に、512x8 の DRAM を積んでいるマシンでは役に立つでしょ う(256Kx4/16 DRAM の場合には役に立ちません)。 Option "probe_clocks" このオプションを指定すると、カードのドットクロック値の検出を強制 的に行います。このオプションは必ずしも必要ではありません。という のも、Cirrus 製のチップセットは全てのクロック値が固定かつ同じ値 だからです。 Clockchip "cirrus" このオプションはプログラマブルクロックを有効にします。このオプ ションは Device セクションで指定しなければなりません。このオプ ションを使うと、モードが使うクロックは自動的に選択されま す。Clocks 行を指定してはいけません。このオプションは 320x200 の ダブルスキャンモードに対して 12.5 MHz を使うことを可能にします。 一部の周波数は不安定(スクリーンが「波打つ」)かもしれない点に注意 してください。安定だと保証できるのは(デフォルトのクロック値のよ うに)テストを行った周波数だけです。 Option "linear" (VL-bus 用 542x/6/8/9/3x/754x) このオプションはリニアアドレッシングを有効にします。リニアアド レッシングはフレームバッファ全体を上位アドレスのシステムメモリを 越える部分にマップするもので、SVGA のバンク切り替えを不要にしま す。これにより 256 色モード時の性能は向上します。また、現在は 16bpp, 24bpp, 32bpp 時にはリニアアドレッシングが必要です。詳しく はセクション 4 を参照してください。 Option "nolinear" (PCI バス用 542x/6/8/9/3x/754x) PCI バス用のチップ全てについて、リニアアドレッシングはデフォルト の操作モードです。このような構成の場合、このオプションはリニアア ドレッシングを無効にします。 Membase 0x00e00000 (または別のアドレス) (542x/6/8/9/3x/46/754x) このオプションはリニアフレームバッファの物理的なベースアドレスを 設定します。このオプションは Device セクションで指定しなければな りません。 PCI でないカードでリニアアドレッシングを使う場合に は、この指定が必要です。 Option "favour_bitblt" (5426 only) このオプションは使われなくなりました。 Option "mmio" (5429, 7548) このオプションは、543x/5429 が BitBLT エンジンとやりとりをすると きにメモリマップト I/O を使うようにします。これにより、少し速く なります。 BitBLT エンジンを使わない時(例えば、"no_bitblt" 使用 時)には、このオプションは無効です。 Option "no_mmio" (543x/4x) このオプションは、デフォルトの操作モードでメモリマップト I/O を 使うチップに対して、メモリマップト I/O を使わないようにします。 Option "sw_cursor" (542x/3x/46/6x) このオプションはチップの機能であるハードウェアカーソルを無効にし ます。カーソルがおかしい時には、このオプションを試しましょう。特 に、5434/6 で 85MHz 以上のドットクロックを使う時にはこのオプショ ンを試しましょう。というのも、これらのチップはこのクロックではハ ードウェアカーソルのサポートが完全ではないからです。 Option "clgd6225_lcd" 62x5 を使っている一部のノート PC における白色の最大値に関する問 題を回避するためのオプションです。 Option "no_pixmap_cache" (BitBLT チップ全てにおいて)XAA を使っている時、このオプションは XAA におけるピックスマップキャッシュを使わないようにします。これ により、描画に関するバグの一部に対処できます。 Option "xaa_no_color_exp" XAA を使っている時、このオプションは XAA がハードウェアの色展開 機能を使わないようにします。このオプションも、描画に関するバグの 一部に対処できます。 Option "no_stretch" (754x) 800x600 の LCD で 640x480 表示を自動的に拡大する(水平・垂直方向 に伸ばす)機能を無効にします。 Option "pci_retry" (546x) PCI ベースのカードの性能調節機能を有効にします。この機能が有効な らば、ドライバのコードは PCI バスでできる限り速くデータを送ろう とします。大抵の場合このオプションは安全ですが、他の PCI デバイ ス(PCI のネットワークカードやサウンドカード、SCSI コントローラ 等)と組み合わせた時に問題を起こすかもしれません。このオプション を選択して時は、より安全な方法(VGA コマンドキューのポーリング)が 使われます。 4. モードについて アクセラレーション付きの 256 色ドライバは作業用空間をビデオメモリに確 保します。また、ハードウェアカーソルもビデオメモリを 1K (546x では 2K) 使います。したがって、1024x1024 の仮想解像度はメモリ 1MB のビデオカー ドで使うことはできません。 古いチップでは、ドットクロック周波数を高くしすぎると、描画に使うビデオ メモリのバンド幅(542x/3x/46/6x の場合、この量は起動時に表示されます)が ほとんどない時にグラフィックス操作(特に BitBLT)の性能に悪影響が現われ ます。542x/3x チップの場合、デフォルトの MCLK 設定(0x1c)と 32 ビットメ モリインタフェースを使うと、ドットクロック値が 65 MHz の時の性能は、 ドットクロック値が 25MHz の時の半分になることもあります。メモリのバン ド幅が足りなくなり、動作が遅くなった場合には、許容できる範囲でドットク ロックをできるだけ低くしましょう。例えば、14 インチや 15 インチのディ スプレイでは、800x600 を高いリフレッシュレート(ドットクロック50 MHz)で 使い、大きな仮想スクリーンと組み合わせるのも悪くないでしょう。 2MB のメモリを積んでいる 5434 ベースのカードでは、ドットクロックが高い 時にももっとうまく動作します。DRAM のバンド幅は基本的に 542x シリーズ の倍です。543x チップは DRAM のバンド幅をもっと有効に利用します。同じ ことが 544x にも言えます。 5. リニアアドレッシングと 16bpp/24bpp/32bpp モード 現在、SVGA サーバのフレームバッファのコードでは、 16bpp, 24bpp, 32bpp を使うにはリニアアドレッシングが必要になります。色の深さ別の Screen セ クションで Option "linear" を指定することで、リニアアドレッシングを有 効にすることができます。MemBase の設定(Device セクション)も多分必要で す。(ただし、PCI カードであればこれらの値は自動的に選択されます。この ようなカードには、 5446, 546x や 543x ベースの一部のカード等がありま す。) カードの設定は異なるものがいろいろあります。 ISA バス用の 542x/543x を使っており、かつシステムのメモリが 16MB 以上 でならば、リニアアドレッシングを使うことはできません。申し訳ないです が、 16bpp も駄目です。メモリが 14MB 以下であれば、 `MemBase 0x00e00000' を指定することによりフレームバッファを 14MB の位置にマップ することができるかもしれません。`e' の後には 0 が 5 個あります。残念な がら、ISA カードの多くはリニアアドレッシングをサポートしていません。 VESA ローカルバス用の 5424/26/28/29 を使っている場合、話はもっと複雑で す。リニアアドレッシングに関して 2 つの異なるタイプがあるのです。 o ISA バスのカードと同様に、16MB 以下の領域にしかマップを行えないカー ド。ほとんどのカードはこれに該当します。同じ制限が当てはまります (つまり、システムのメモリが 16MB 未満でなければなりません)。 o A26 ラインに接続し、64MB + 14MB または 64MB の位置に必ずマップを行 うカード。この場合には `MemBase 0x04e00000' または `MemBase 0x04000000' を指定してください。この指定は、A26 ラインを実装した VLB マザーボードを使うことを前提にしています。この位置ではな く、0x2000000 にマップするカードがあるかもしれませんし、5429 等の最 近のカードは通常、0x03e00000 (62MB) にマップするようです。 設定を行うにはおそらく試行錯誤するしか無いでしょう。システムのメモ リが 16MB より小さい場合、MemBase の値を「誤って」設定すると全くグ ラフィックスが表示されなくなるでしょう。ですが、多分 ctrl-alt- backspace のキー操作でサーバを終了させることができます。 メモリが 16MB 以上の場合、前者のタイプのカードを使うと(後者のタイプで も頭の悪い VLB マザーボードを使っている時)はマシンがクラッシュするで しょう(たぶん突発的にハードリブートします)。 カードのタイプは自分の目で見て調べることもできます。カードの A26 にピ ンがあれば、これは 64MB 以上の位置にマップを行うことができると思われま す。これを行うには、カードを取り出してください。VESA ローカルバスのピ ン(これはカードのスロットでない側にある小さいコネクタピンです)の右側を 見てください(全てのチップはボードのこちら側に装着されます)。ここには 45 本のピンがあります。このピンには内側から順に 1 番から 45 番までの番 号が付いています(つまりカードの端に最も近いピンが 45番です)。内側から 数えていくと、17 番目のピンはたぶんありませんが、18-20番目のピンがあり ます。21 番目のピンが A30 で、22 番目が A28, 23番目が A26 です。つま り、 21-23 番のピンがなければ、このカードは 64MB 以上の位置へのマッピ ングは行えません。21 番と 22 番の位置に隙間しかなく(あるいは、どちらも 存在する)、かつ 23 番の位置にピンがある場合には、このカードはたぶん 64MB を越える位置へマップを行うことができます。カード上のそのピンの近 くに回路があれば、その可能性はさらに高くなります。 ローカルバス用の 543x を使う場合には、問題はもっと単純になりますが (Cirrus Logic の Windows 用ドライバはこれを用いています)、それでも問題 が無いわけではありません。 PCI バス用のカードを使う場合、フレームバッファのベースアドレスを格納す る PCI 構成レジスタというものがあります。PCI カードが検出されると、ド ライバはこのレジスタを自動的に読み込みます。`scanpci' プログラムを使え ば、PCI 構成を読み出し、ベースアドレスを表示することができます。 VESA ローカルバスの場合、543x カードのほとんどはデフォルトのアドレスが 64MB であり、ジャンパ設定で 2048MB と 32MB にすることができます。これ については多分カードに付属の説明書か、MS-Windows の system.ini ファイ ルに(linearaddr = <メガバイト単位のオフセット> 等と)書かれていると思い ます。このように設定を変更できる仕様は、アドレスピンでベースアドレスを 変えることができない実装の VLB マザーボードがたくさんあることが分かっ た後に、Cirrus Logic が追加したものです。MemBase が指定されなければ、 ドライバはデフォルトの 64MB であるものとします。MemBase の設定の例をい くつか示します: MemBase 0x02000000 32Mb MemBase 0x04000000 64Mb MemBase 0x80000000 2048Mb 最後に 546x カードの場合ですが、これを持っているなら運がいいと言えま しょう。心配するような「問題」は全くありません。546X は常にリニアアド レッシングとメモリマップト I/O を使うことができますし、4GB 近くまでの メモリアドレスを使うことができます。PCI 万歳! XAA のおかげで、現在は 16bpp と 32bpp モードで完全にアクセラレーション が効きます。5436/46, 546X のような最近のチップでは、24bpp でも完全にア クセラレーションが効きます。したがって、表示するビット数は 4 倍まで増 えますが、X サーバが遅くなりすぎることはないはずです。24bpp モードと 32bpp モードは限られたカードでしかサポートされていないことと、少なくと も 2MB のメモリを積んでいなければならない点に注意してください。 XF86Config ファイルの "Screen" セクションでは、使いたい色の深さそれぞ れに対して "Display" サブセクションで定義を行わなければなりません。こ の時、Modes と仮想スクリーンのサイズもサブセクションごとに指定します。 例(ビデオメモリ 2MB の場合)を以下に示します: 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 6. ``cl64xx'' ドライバ cl64xx ドライバは多くのラップトップで使われている cl-gd6440 をサポート しています。例えば、Nan Tan Computer 製の NP9200, NP3600 等があり、こ のマシンは Sager や ProStar に OEM 供給されています。また、 Texas Instruments の TI4000 シリーズもサポートしています。 このモードは LCD 専用モード、CRT 専用モード、チップの SimulScan モード で動作します。SimulScan モードを使うと、LCD と外部 CRT ディスプレイを 同時に使うことができます。LCD モードと SimulScan モードの解像度は 640x480 ですが、CRT 専用モードでは標準 VESA モードの 640x480, 600x800, 1024x768 がテストされています。1024x768 インタレースモードは、デバッグ は全くされておらず、テストしたマシンでは動作しませんでした。 ドキュメントに書かれているこのチップのドットクロック値の操作上限はコア 電圧に関係します。特に、5.0V の時は最大ドットクロック値は 65MHz で、 3.3V の時は 40MHz です。ドライバはコア電圧をチェックし、最大ドットク ロック値を対応する値に制限します。これにより、最大解像度はリフレッシュ レートが 60Hz の時に約 1024x768 に変わります。内蔵クロックジェネレータ をこの制限より高くプログラムされてしまうことあります。これは、サーバの 起動時に瞬間的にチップの操作上限を越えるクロック値が検出された場合に起 こります。ですから、有効な値が一度得られたら、XF86Config の Clocks 行 を使うことをお勧めします。この設定を行うと、サーバの起動時間も劇的に短 くなります。クロック値は X サーバに -probeonly オプションを付けて実行 すれば検出することができます(-probeonly オプションに関する詳しいこと は、XFree86 のオンラインマニュアルを参照してください)。 データシートを見ると、チップがサポートしているビデオメモリの構成は 1MB だけです。ですから、この大きさはドライバに直接設定されていますが、必要 であれば、このデフォルトのサイズを XF86Config で上書きできるはずです。 また、ビデオメモリが 1M ならば、仮想スクリーン(例えば 1024x1024)が使え るはずですし、これは CRT 専用スクリーンモードでも使えるはずです。しか し、LCD を使っている場合(LCD, SimulScan)は必ず、チップはビデオ RAM の 上位アドレスの部分を内部的なアクセラレーションのために使います。した がって、仮想スクリーンに使えるビデオメモリの最大値は約 0.75 MB (1024x768 等で使えます)になります。これを越える大きさの仮想解像度を設 定した場合、アクセラレーションが効いている領域が表示された時に、圧縮と エイリアシングがかかった縞とでも言えるような変なものが表示されるでしょ う。 現在は、このドライバは LCD, CRT, SimulScan 間のスクリーンモード切り替 えをサポートしていません。また、少なくとも NP9200 上では、このモードは OS の起動時で BIOS がまだ有効な時に(例えば Linux なら LILO 等で)選択し なければなりません。 XF86Config ファイルの ModeLine オプションのような スクリーンモードの種類の選択を追加をできるようにし、X サーバ上から動的 なスクリーンモード切り替えをできるようにすべきです。最後になりますが、 このドライバは現在はチップが持つ電源切断の省電力機能は全くサポートして いませんし、スクリーンブランク時に LCD のバックライトを消す機能もサポ ートしていません。将来のリリースではこれらの機能を全て実装したいと思っ ています。 CL-GD6420 に関するメモ: ビデオメモリの量は必ずしも正しく検出されません。ドライバのソースコード には 2 つの方法が組み込まれていますが、片方は使わないようになっていま す。Device セクションの VideoRam 行でビデオメモリの量を指定する方が良 いでしょう。CRT モードや SimulScan モードでは、ドットクロック値 25.175 MHz で標準の 640x480 60Hz のモードタイミングを使いましょう。LCD 専用モ ードの時は同じモードタイミングを使いますが、ドットクロック値は 16.257 MHz にしましょう。標準の 800x600 56Hz も CRT モードでサポートされてい ます。 cl6440 を ``cl64xx'' ドライバで使って不具合を見つけた場合には、まず Randy Hendry に連絡してください。 7. "cirrus" ドライバでのトラブル対策 まず最初に、XF86Config で選択したデフォルトのモードをモニタがサポート していること、つまり水平同期の上限が正しいことを確認してください。まず は標準の 25.175 MHz のクロックの 640x480x256(水平同期に 31.5 だけを指 定します)から始め、お使いの設定でドライバが動作することを確認するのが 良いでしょう。使われるデフォルトのモードは常にモード行に最初に書かれた モードで、タイミングのセクションの解像度を指定するための最も高いドット クロック値とともに使われます。 VESA 標準モードのタイミングは、一部のモニタで問題を起こすことがあるの で注意してください(水平同期信号を増やしてみましょう。つまり真ん中の 2 つの水平タイミング値の差を大きくするか、または全ての水平タイミングのパ ラメータを 16 か 32 の倍数にします)。 ビデオ信号が届いているが、画面が同期出来ない場合。 モニターが扱えないモードを使っているのです。標準でないモードを 使っている場合、少し数値をいじる必要があるかもしれません。モニタ ーが取り扱える標準モードと標準周波数の場合、似たようなモードと周 波数の組合せに対する別の異なるタイミングを見つけてください。 高いドットクロックでの水平のぶれ この問題は、スクロールのような描画操作が行われている時に顕著にな ります。 542x/3x/46/6x/754x を使う場合は、 "fifo_conservative" オプションを試してください。これでうまく行かない時 は、"fast_dram" オプションを試すか、ドットクロックを下げてみてく ださい。これでも十分でない場合は、 "noaccel" オプションか、 "no_bitblt" オプションが多分有効でしょう。546x を使っている時 は、"fifo_aggressive" オプションを試すこともできます。 (描画操作 に依存しないで)いつも画面全体が水平方向に波打ったり、揺れたりす る現象です。おそらくドットクロックが高すぎるのでしょう。また、近 い MCLK 値が衝突を起こしていることも考えられます。ドットクロック を下げてみてください。また、モードのタイミングをずらしてみても良 いでしょう。2 番目の水平クロック値をいくらか増やしてみてくださ い。ドットクロックが 65 MHz の 1024x768 モード(約 60Hz)では、次 の値が役に立つでしょう: "1024x768" 65 1024 1116 1228 1328 768 783 789 818 Clockchip "cirrus" を用いてプログラマブルクロックを使っている場合 は、これを無効にし、デフォルトのクロック値の組合せを使ってくださ い。 起動後にクラッシュやハングしてしまう(画面が真っ暗になることもありま す)。 "noaccel" オプションを試してみましょう。これで動作すれば、多少性 能が良くなる "no_bitblt" を試してください。 BIOS の設定が大丈夫 かどうか確認してください。特に 0xa0000-0xaffff をキャッシングし ないようにしてください。裏 DRAM のリフレッシュをを無効にしても良 いでしょう。 グラフィック操作の後にクラッシュやハングしたり、スクリーンにゴミが 残る。 この問題が起こると、アクセラレータ機能のいずれかのバグや、あるい は BitBLT エンジンの問題に関係しているかもしれません。 "noaccel" オプションや "no_bitblt" オプションを試してみてください。また、 BIOS の設定も確認しましょう。 サーバが `Blitter timeout' というメッセージを出力する。 前の項目と同じです。 画面が垂直方向に周り込んでいる。(542x/3x/46 の場合) DRAM の構成に問題があることを示しています。カードに 2 メガバイト のメモリを搭載している場合は、"no_2mb_banksel" オプションを試し てください。ただし、1 メガバイトだけを仮想スクリーンに使う場合 は、videoram "1024" を使ってください。 端末ウィンドウの文字が崩れる。 標準でないビデオの実装についてこの問題が報告されています。 "no_bitblt" オプションを使ってください。 ノート PC 用チップセットで縞が出る、あるいはハングする。 この現象が起こるのは、ドットクロック値が高すぎて描画のためのバン ド幅が十分取れない場合(例: 512K バイトのカードで 40MHz を使う場 合)や、(5422 のような形式の)アクセラレーション機能を使っている場 合です。 時々テキストのピクセルがおかしくなったり、ウィンドウの枠を動かすと ゴミピクセルが残る。 多分、MCLK の設定が高すぎることに関係しています(バンクモードが大 丈夫でも、リニアアドレッシングで問題になることがあります)。 チップセットが検出できない。 持っているチップセットに最も近いものの型を強制的に指定してみま しょう。 時々、おかしな短い線分(たいてい白い)が表示される システムからのビデオメモリに対する BitBLT 操作における問題に関係 しています。気になる場合には、"no_imageblt" オプションを試してみ ましょう。 うまくテキストモードが復元しない この現象はいくつかの構成で報告されています。XFree86 3.1 で は、SVGA サーバの検出結果が Chipset 行を要求し、543x のレジスタ を壊していたこともあります。普通は、テキストモードのフォントを セットするユーティリティ (Linux では setfont, runx, restorefont)を使ってフォントを復元することができます。 ドットクロックを非常に高くするとシステムの動作が不規則になる カードやマザーボードの設計が悪いために、ビデオカードのドットク ロックを高くするとシステムの他の部分(例: ディスク I/O)と衝突する ことがあります。この現象は 5428 ベースの PCI カードの一部で起 こっています(これは滅多にありません。というのも、5428 チップは PCI をサポートしていないからです)。 マウスカーソルが表示されなかったり、スクリーンに 2 つ表示される ドットクロックが高い場合、グラフィックカードのハードウェアカーソ ルが正しく動作しません。"sw_cursor" オプションを試すか、スクリー ンのリフレッシュレートを下げましょう。 スクリーンの右端や下端にランダムなピクセルやゴミピクセルが現われる この問題は普通、スクリーンのディスプレイサイズよりも大きい仮想ス クリーンのサイズを使っているときに起こります。ゴミピクセルはフレ ームバッファの未使用の部分で、各スキャンラインがバイト境界にまた がらないように調整している結果として起こります。余計なピクセルを 無くすには、スクリーンのピクセル幅が 128/(bpp 値) で割り切れるよ うな表示モードを使うことです。 スクリーンが右端に水平に回り込む(546x) 上の項目と同じです。 スクリーンが最初は正しく表示されるが、その後真っ白になってしま う(564x)。 この問題は通常、色の深さが大きい時とスクリーンが速く書き換えられ ている時(長いファイルを cat で出力している時や、大きいウィンドウ をぐるぐると動かしている時)に起こります。RamBus メモリが激しく使 いすぎになるのです。まずは Option "med_dram" を使ってください。 これでも問題が解決しなければ Option "slow_dram" を使います。 これ以外のスクリーン描画関連の問題については、"noaccel" オプションを試 してください("no_bitblt" の効果が無い場合)。 このドキュメントに載っていないようなドライバ関連の問題が生じた場合や、 アクセラレーション付き機能のバグを発見した場合は、XFree86 チームに連絡 するか(現在のドライバのメンテナである Corin Anderson には、 corina@the4cs.com で連絡できます)、Usenet のニュースグループ "comp.windows.x.i386unix" に投稿を行ってください。 実際のところ、(成功でも失敗でも)報告は大歓迎です。テストがまだ行われて いない機器構成の場合はなおさらです。報告は BetaReport フォーム (report@XFree86.org にメールを出してください)を使って行うことができま す。そのうちに www.xfree86.org で公開されるベータリリースを狙うという のもよいでしょう。 8. テストを行った機器構成 バージョン 3.3.3 をテストした機器構成を以下に示します: CL-GD5446(メモリ 2MB, PCI バス用) CL-GD5464(メモリ 2MB, PCI バス用) CL-GD5465(メモリ 4MB, PCI バス用) CL-GD5480(メモリ 4MB, PCI バス用) CL-GD5465(メモリ 4MB, AGP バス用) バージョン 3.3 では、以下の機器構成である程度のテストが行われています: CL-GD5446(メモリ 2MB, PCI バス用) 85 MHz 以上のドットクロックのサポートは修正されました。16bpp 時 にスティプルを行うと、ウィンドウ枠の端が壊れたりおかしい色で表示 される問題が報告されています。オプション "xaa_no_pixmap_cache" を使うと問題が解決します。 CL-GD5464(メモリ 4MB, PCI バス用) CL-GD7543(PCI バス用) XFree86 3.2A で導入された変更についてのテストが行われている機器構成の リストを示します。一部の機器についてはテストの量が大変少なく、まとめは 不完全です。テストに協力できるならば、是非そうしてください。最新の情報 を得るには、このドキュメントの最新版(www.xfree86.org にあります)を チェックしてください。 CL-GD5426 (VL バス用) この構成は、初期バージョンの XAA コードでしかテストされていませ ん。 CL-GD5434 (メモリ 2MB, VL バス用) MMIO 操作がサポートされています。この構成は初期バージョンの XAA コードでしかテストされていません。 CL-GD5436 (メモリ 2MB, PCI バス用) CL-GD5446 (メモリ 2MB, PCI バス用) MMIO モードでうまく動作します。32bpp モードはおそらく動作しませ ん。 8bpp 時には 85 MHz 以上のドットクロックのサポートは動作した り動作しなかったりします。 CL-GD5462 (メモリ 2MB, PCI バス用) CL-GD5462 (メモリ 4MB, PCI バス用) CL-GD5464 (メモリ 4MB, PCI バス用) 8bbp, 16bpp, 24bpp, 32bpp でうまく動作します。CL-GD5464 は 16bpp でうまく動作しますが、オプション -weight 555 を指定してくださ い。 CL-GD7543 (PCI バス用) TFT ディスプレイ(TI TravelMate 5000)で 8bpp, 16bpp が動作しまし た。前のバージョン(3.2)では壊れていると報告がありました。動作す る構成もありますが、正しく動作しない構成も報告されていま す。800x600 のディスプレイでは、ドットクロックの推奨値は TFT の 場合は 40MHz で、DSTN の場合は 33.7 MHz です。これに対応する垂直 同期は、TFT の場合は 33.7kHz で、DSTN の場合は 38.6kHz です。し かし、VESA 標準の 40MHz 800x600 のタイミングで問題が起こるという 報告があります。これを解決する方法は、4番目の垂直タイミング値を 小さくするか、ドットクロック値を 36MHz にすることです。 最新状態でのテストデータではないですが、以下の構成も御覧ください: CL-GD5429 (VL バス用) BitBLT 操作は 3.2 で修正されています。MMIO は動作しませんが、3.2 や 3.2A ではテストされていません。 CL-GD5430 (PCI バス用) うまく動作します。24bpp には不具合がありますが、以降のバージョ ン(3.2A) で修正されているはずです。 CL-GD5430, CL-GD5436, CL-GD5446(メモリ 1MB) 16bpp 時に、これらのチップが 1MB のメモリを積んだ CL-GD5434 と同 じ扱いを必要とするかどうかがわかればよいのですが…。 CL-GD5434, (メモリ 1MB, PCI バス用) 8bpp, 16bpp, 24bpp でうまく動作します。16bpp における「static」 問題は既に解決されました。MMIO 操作はサポートされています。 CL-GD5436, CL-GD5446 (メモリ 1MB) この構成に対する FIFO 設定は特に不明確です。 CL-GD7541 CL-GD7548 7543 と互換のはずですが、テストは行われていません。報告による と、3.2 では動作したそうなので、3.2A で動作しない理由はありませ ん。 9. ドライバの変更 XFree86 3.3.2 からの変更点: o 546x における透過的なスクリーン-スクリーンコピーの修正。 o 546x においても、組み込みのスクリーンセーバが正しく画面をブランクさ せられるようになりました。 o ドライバは 546x に対し、スクリーンの高さが 1024 スキャンラインより 大きい時にはハードウェアカーソルの使用を禁止するようになりました(ポ インタが2つ表示される問題の修正です)。 o CPU-スクリーンの BitBLT 転送が 5465 では無効になるようにしました。 これは、5465 AGP 使用時にシステムが止まってしまうことを防ぐためで す。 o 5480 で高解像度モードを使用したときに起こる表示の問題を修正しまし た。 XFree86 3.2A からの変更点: o 一部のチップでメモリマップト I/O 操作を行ったときにサーバがクラッ シュするバグを修正しました。 o 5436, 5446 における 80MHz 以上のドットクロックの扱いを直しました。 o CL-GD7555 を予備的にサポートしました(検出はまだ行いません)。 o CL-GD5480 と CL-GD5465 のサポートを追加しました。 o 一部の Alpine 系チップにおける 32bpp モードを修正しました。 o Laguna 系チップ向けに 230MHz までのドットクロックのサポートを追加し ました。 XFree86 3.2 からの変更点: o BitBLT エンジンを持つ全てのチップに対して、XAA を使ってアクセラレー ションを改良しました。 o Laguna シリーズ(546x)に対して XAA を使ってアクセラレーションを改良 しました。 o 5430 の 24bpp モードを修正しました。 o 754x のサポートを改良しました。これは LCD の拡大表示や/中央表示のサ ポートを含みます。 $XFree86: xc/programs/Xserver/hw/xfree86/doc/Japanese/README.cirrus,v 3.1.2.2 1999/11/26 15:23:17 hohndel Exp $ $XConsortium: cirrus.sgml /main/12 1996/10/28 05:43:32 kaleb $ 10. 日本語訳について 日本語訳は X Japanese Documentation Project が行いました( 翻訳(XFree86 3.2): 岡本一幸 , 更新(XFree86 3.3.3 対応): 藤原輝嘉 )。問題点の指摘や ご意見は藤原まで御連絡ください。原文の著作権は XFree86 プロジェクト社 にあり、日本語訳の著作権は X Japanese Documentation Project にありま す。