XFree86 P9000 サーバ リリースノート Erik Nygren (nygren@mit.edu) 1998 December 29 The X Japanese Documentation Project 1999 November 22 ____________________________________________________________ Table of Contents 1. 変更履歴 2. サポートしているカード 2.1 Diamond Viper VLB 2.2 Diamond Viper PCI 3. Orchid P9000 と互換カード 4. Viper Pro および他の P9100, P9130 カード (サポートはしていません!!) 5. アクセラレーション 6. XFree86-DGA 機能拡張のサポート 7. ハイカラーとトゥルーカラー 8. 雑記 9. オペレーティングシステム別の注意事項 9.1 NetBSD 10. XF86Config 11. 既知のバグ 12. クレジット 13. 日本語訳について ______________________________________________________________________ 1. 変更履歴 1998.10.13: o 仮想端末にいるときにスクリーンセーバの有効/無効を切替えようとす るとサーバがクラッシュしてしまうバグを修正しました。(Erik Nygren) 1997.01.30: o Diamond Viper PCI カードの MemBase 値と IOBase 値の検出機能を追 加しました (Karl Anders Oygard) o DPMI によるスクリーン保護のサポートを追加しました(Karl Anders さ んに感謝) 1996.03.31: o XFree86-DGA 機能拡張のサポートを追加しました(Erik Nygren) 1995.05.24: o p9000frect.c に追加を行いました: 8/16bpp 時のソリッド長方形塗り 潰しのアクセラレーション(Henrik Harmsen) o スティプル塗り潰しを p9000frect.c に追加しました。ま た、p9000ImageFill が修正された際のタイル塗り潰しのためのスタブ を追加しました (Chris Mason) o p9000pntwin.c に追加を行いました: 8/16/32bpp 時のウィンドウのペ イント操作のアクセラレーション (Henrik Harmsen) o bpp が大きいときの描画機能のために p9000gc16.c と p9000gc32.c を 追加しました(Henrik Harmsen) o p9000im.c へ追加を行いました: p9000Image[Op]Stipple と p9000ImageFill。現在は ImageFill に少し問題があり、使用はされて いません(Chris Mason) o p9000PixAlu と p9000PixOpAlu を追加しました。追加したの は、pixel1 の opaque 操作と transparent 操作 のための miniterm->alu 変換です。 (Chris Mason) o p9000text.c に追加を行いました: キャッシュ無しのポリテキスト機能 とイメージテキスト機能。イメージテキスト機能は遅すぎるので使われ ていません :( (Chris Mason) 1995.05.21: o p9000init.c を修正しました。vram_128 オプションを正しく扱えるよ うにしました。これにより、ドライバはメモリが 1MB の全ての Viper カードで正しく動作するようになりました。(Erik Nygren) 1995.01.29: o P9000.sgml を更新しました。PCIDUMP.EXE でなく Robin さんの scanpci を使って記述するようにしました。 1995.01.15: o アクセラレーション付きの線の描画における、端点処理の問題を修正し ました。 (Chris Mason) o p9000QuadAlu[GXset] を 1 でなく 0 に修正しました。 (Erik Nygren) 1995.01.14: o XF86Config の Clocks 行を使わなくなりました。これで、このサーバ の操作は、プログラマブルクロックを使用する他のサーバの操作と統一 性が取れたものになったはずです。(Erik Nygren) o 1MB のカードを使っているユーザは、自動検出に失敗したときに XF86Config ファイルで明示的に videoRam を指定できるようになりま した。新しい vram_128 オプションを使うと、 128Kx8 の SIMM を強制 的に検出させることもできます。(Erik Nygren) o p9000line.c と p9000seg.c を追加しました。これは p9000 の矩形/ク リッピングエンジンを使ったアクセラレーション付きの線描画のための コードです。クリッピング長方形 1 つの場合は数段速く、クリッピン グ領域が複数ある場合はソフトウェアクリッピングを使って高速化でき るかもしれません。この部分にはまだバグがあり、xtest の XDrawLines テストにおいては「Cap style incorrect for thin line and CapNotLast」というエラーが出ます。しかし、XDrawLine テストや XDrawSegments テストではエラーは出ません。 [このバグは 1995.01.15 付けのパッチで修正されました](Chris Mason) o p9000blt.c, と p9000win.c を変更し、矩形/blit エンジンの空きを待 つようにしました。矩形/blit を行う前に SR_ISSUE_QBN をチェック し、それから blit 操作を行います。そして全ての blit 操作が終了し たときに p9000QBNotBusy を実行します。(Chris Mason) o p9000init.c を修正し、矩形メタ座標描画モードを使って画面をクリア するようにしました。長方形モードでは CINDEX レジスタが正しく更新 されないようです。色を 0 から 1(黒) に変更しました。(Chris) o p9000QuadAlu を追加しました。矩形を描画するとき、X の入力に対応 するのは p9000 では前景マスクです。blit/pixel8/pixel1 操作をする とき、これは p9000 の入力マスクであり、p9000alu 検索テーブルを使 わなければなりません。(Chris Mason) o p9000reg.h にレジスタをいくつか追加しました. (Chris Mason) 1994.09.20: o 16bpp が動作しない原因であった問題を修正しました。(Erik Nygren) 1994.09.16: o 16bpp モードと 32bpp モードにおける画面ブランクのサポートを追加 しました。画面ブランクは、単に planemask を変更するのではな く、RAMDAC の電源を切るようになりました。(Chris Mason, Erik Nygren) o XF86Config のオプション指定が原因となる問題をさらにいくつか修正 しました。(Erik Nygren) o XF86Config のオプション指定が原因となる問題をさらにいくつか修正 しました。(Erik Nygren) o Orchid P9000 における最大クロック値をできるだけ修正しました。 (Harry Langenbacher, Erik Nygren) 1994.09.15: o XF86Config を変更してもほぼ確実に動作するようになりました。 (Erik Nygren) o カーソル処理のコードにおいて、RAMDAC への書き込みの前に VTSema を参照するようにしました。これは x11perf を使うとサーバがクラッ シュしていた原因でした。(Erik Nygren) 1994.09.08: o xdm とサーバの再起動に関する問題を修正しました。(Erik Nygren) o CopyArea において ImageRead を使えるように修正しました。(Chris Mason) o プログラム中のコメントを標準に準拠させました :-) (Erik Nygren) 1994.09.05: o BIOS による Viper PCI の検出を修正しました。(Bob Hollinger) o Orchid P9000 のサポートを修正しました。(Harry Langenbacher) o クロックのコードにおいてデータ型を変更しました。(Harry Langenbacher) o クロック値とその他のレジスタ値の復元を修正し、svgalib と一緒に 使ってもうまく動作するようにしました。(Chris Mason, Harry, Erik) 1994.08.29: o Viper PCI で必要だったので、xf86_OSlib.h におけるメモリ領域の数 を 2 から 3 に増やしました。(Erik Nygren) o 短い動作停止を行う方法(p9000vga.c 内)を outb(0x80,0) に変更しま した。(Erik) o 水平解像度からシステム設定を決めるルーチンを書き直しました。ま た、検出において有効な水平解像度をチェックするようにしまし た。(Erik Nygren) o 全ての色の深さに対して MoveWindow のアクセラレーションを追加しま した。 32bpp でも opaque move 操作がいい感じで動くようになりまし た! (Chris Mason) o アクセラレーションに細かい修正を加えました。アクセラレーションが デフォルトで有効になるようにしました。(Chris Mason) o "noaccel" オプションを追加しました。(Erik Nygren) o Viper PCI 向けの修正を何ヶ所か行いました。(Matt Thomas) 1994.07.21: o Viper PCI の基本的なサポート - 全然テストしていないので無効にし てあります。(Erik Nygren) o Orchid P9000 の基本的なサポート - 未完成であり、テストも全くし ていないので無効にしてあります。(Erik Nygren) o アクセラレーションの基本的なサポート - 未完成であり、完全にはテ ストできていないので無効にしてあります。(Erik Nygren, Chris Mason) 1994.07.08: o 16bpp と 32bpp での TrueColor のサポート (Erik Nygren) o 色の復元に関する問題はたぶん直りました (Erik Nygren) o Xconfig における "Modes" 行の処理方法を変更しました。 o バンク切替えのサポートを削除しました :-( 2. サポートしているカード 2.1. Diamond Viper VLB 全ての Viper VLB カードはこのサーバで動作するはずです、たぶん ... :-) Diamond は Viper PCI で使っているのと同じ BIOS を一部の Viper VLB にも 組み込んでいるため、実際には Viper VLB を使っているのに Viper PCI が検 出されることがあります。そうなった場合、XF86Config ファイルに chipset "vipervlb" を書いてください。 2.2. Diamond Viper PCI XF86Config ファイルで chipset "viperpci" を指定する必要があるかもしれ ません。 以前は MemBase と IOBase の値はユーザが調べなければなりませんでした。 現在はこれらの値は自動的に検出されます。 3. Orchid P9000 と互換カード Orchid P9000 と Weitek のボード設計に基づく他のカード(STAR 2000 等)は 現在は動作するはずです。これらのカードで問題が起きた場合には、 harry@brain.jpl.nasa.gov まで御連絡ください。 XF86Config の Device セ クションで chipset "orchid_p9000" を指定してください。 4. Viper Pro および他の P9100, P9130 カード (サポートはしていませ ん!!) これらのカードは、このサーバではサポートされていませんが、SVGA サーバ の p9x00 ドライバでサポートされています。 5. アクセラレーション 一部のアクセラレーション用コードが動作していますが、たぶんまだバグがあ るでしょう。現在実装されているのは、ごく一部のアクセラレーション機能だ けです。アクセラレーションに関する作業を行う前には、 nygren@mit.edu ま で連絡してくだされば、お互いに二度手間を省くことができると思いま す。"noaccel" オプションを使ってアクセラレーション機能を無効にすること ができます。現在アクセラレーションが有効なのは以下の機能です: o ハードウェアカーソル (8/16/32bpp) o MoveWindow 操作(8/16/32bpp) o CopyArea 操作(8bpp) 6. XFree86-DGA 機能拡張のサポート 現在は XFree86-DGA 機能拡張がサポートされています。P9000 のハードウェ ア的な制限のため、XF86DGASetViewPort の実装は完全でない点に注意してく ださい。SetViewPort コマンドと SetVidPage コマンドはハックされていて、 特定の条件の下でダブルバッファリングができるようになっています。 1MB のメモリを積んだカードや、xres*yres*Bpp が 1024K より大きいモード の場合、ダブルバッファリングはサポートされません。この場合、返されるバ ンクサイズはビデオメモリの量と同じになります。XF86DGASetViewPort コマ ンドと XF86DGASetVidPage コマンドを使っても何も起こりません。 2MB のメモリを積んだカードや、virtualX*virtualY*Bpp が 1024K より小さ いモードの場合、SetViewPort と SetVidPage の動作を変えてダブルバッファ リングを有効にすることができます。XF86DGAGetVideo が返すバンクサイズは xres*yres*Bpp となります。このモードでは、書き込み、読み出し、表示が可 能なバッファを 2 つ持つことができます。XF86DGASetVidPage を使って、I/O に使うバッファ 0 と バッファ 1 を切替えることができます。どちらのバッ ファを選択していても、オフセット無しのリニアアパーチャを通して利用する ことができます。ypos < yres という条件で XF86DGASetViewPort を呼び出す と、バッファ 0 が表示されます。ypos >= yres ならばバッファ 1 が表示さ れるでしょう。この動作の結果として、必要に応じてバンク切替えを行うプロ グラムと2つの垂直に隣接しているバンクを使うプログラムは、P9000 特有の 変更をすることなしに動作するはずです。 7. ハイカラーとトゥルーカラー 現在は 16ビットと 24ビットのトゥルーカラーがサポートされています。24 ビットカラーは実際には 32bpp である点に注意してください。トゥルーカラ ーを使用するには、サーバ起動時に -bpp オプションを使います。例を以下に 示します: startx -- -bpp 32 startx -- -bpp 16 startx -- -bpp 16 -weight 555 startx -- -bpp 16 -weight 565 これらのモードでは、まだ正しく動作しないアプリケーションがたくさんあり ます。これに関する指摘は筆者にしないでください。アプリの作者が既に問題 を解決していなければ、彼らに知らせてくだい。悪いのは彼らですからね... :-) 問題の例: xv 3.00 32bpp と 16bpp では 24ビットイメージをうまく扱えます。8bpp モー ドでは 8ビットイメージをうまく扱えません。 Mosaic 2.1 16bpp と 32bpp 両方でカラーマップの扱いに問題があります。バー ジョン 2.4 等の新しい Mosaic はうまく動作します。 mpeg_play 16bpp モードでは全く動作しません。-DRS6000 オプションを付けてコ ンパイルし、``-dither color'' オプションを付けて実行すると 24bpp でうまく動作します。 xpaint 2.1 どのモードでもうまく動作しますが、選択ツールボックスの色の要求に バグがあります。この問題は新しいバージョンでは直っていると思いま す。 8. 雑記 現在は、テキストの復元に関する問題は修正されているはずです。色の復元に 関する問題も修正されているはずです。svgalib を利用するプログラムと同時 に X サーバを動作させることだってできます! 実際のところ、Diamond 社は大変オープンかつ協力的になりました。コードを 書くときに NDA(守秘契約)へのサインは要りませんし、Diamond 社は提供した 情報について占有権を主張しません。 まだ解決されていない問題の 1 つにドットクロックの最大速度があります。 現在は 110MHz を越えているという警告を出力して 135MHz に設定します。 Diamond はドキュメント中で 135MHz が最大値であるとしていますが、実験に よると Viper の一部のカードには 110MHz の bt485 が載っていることが明ら かになっています。135MHz を使わないと、大きなモニタで 1280x1024 で表示 を行うことはできません。Diamond の主張によると、全ての Viper カードに は 135MHz の bt485 (またはその互換チップ)が載っているとのことです。読 者の皆さんのお持ちのチップがこれより遅い場合、Diamond 社の技術サポート に連絡して、ボードを交換してもらうための RMA を送ってもらいましょう。 9. オペレーティングシステム別の注意事項 物理ハイメモリのリニア領域をメモリマップできるオペレーティングシステム では動作するはずです。このようなオペレーティングシステムには Linux, FreeBSD, SVR4 等があります。 9.1. NetBSD NetBSD の場合、アパーチャドライバをインストールする必要があります。 apNetBSD.shar ファイルを展開し (xc/programs/Xserver/hw/xfree86/etc/apNetBSD.shar にあります)、これに 付属する README を読んでください。 10. XF86Config XF86Config ファイルの modes 行の扱いは変わりました。 virtual 行は完全 に無視されるようになりました。モード行のそれぞれのモードが調べられ、そ の中で利用可能な最初のモードが選択されます(つまり、使用可能なメモリで 動作する最初のモード等)。有効であり、同じディメンジョンを持つ他のモー ドも使用されます。それ以外のモードは無視されます。 XF86Config ファイルの Device セクションで現在サポートされているキーワ ードを以下に示します: VideoRAM 1024 または 2048 (``3MB'' の Orchid P9000 カードでは 2048 を 使ってください) ChipSet "vipervlb", "viperpci", "orchid_p9000" のいずれか MemBase Viper VLB: 0xA0000000, 0x20000000, 0x80000000 のいずれか (指定がなければ 0x80000000 がデフォルト値です) Orchid P9000: 0xC0000000, 0xD0000000, 0xE0000000 のいずれか (この指定はジャ ンパに合わせて行わなければ「なりません」) Viper PCI: PCIDUMP.EXE の出力に対応する任意の値 IOBase Viper PCI: PCIDUMP.EXE の出力に対応する任意の値 その他のカード: 未使用 Clocks 使用するモードの項目で使うクロック値に対応する、 25 から 135 ま での任意の数値。現在はこの行は無視され、クロック値は自動的に合わ せられるようになりました。 Option "sw_cursor" ソフトウェアカーソルを使用します "vram_128" 128Kx8 SIMM の構成で 1024K の VRAM が載っている場合に使います "sync_on_green" グリーン信号上に同期信号を生成します。ほとんど(全て?)の P9000 ベースは、この機能をサポートしていません。 "noaccel" ハードウェアアクセラレーションが問題が起す場合に、これを無効 にします Modes ほとんど全ての有効なモード(この値は水平方向の解像度を制約するの で、水平方向の解像度にはどんな値でも使えるわけではありません) XF86Config の Display セクションで現在サポートされているキーワードを以 下に示します: Depth 8: 256 色用の 8bpp を使います(デフォルト) 15 または 16: 6万5千 色まで使える 16bpp を使います 24 または 32: 1600万色まで使える 32bpp(sparse 24 bpp) を使います Weight Depth の値が 15 から 16 ならば 555 か 565 です。そうでない場合、 この値は無視されます。この数字は 1 つのピクセルに割り当てられる 赤、緑、青のビット数です(デフォルト値は 565です) Viper VLB 用の XF86Config の例の一部を以下に示します: Section "Device" Identifier "ViperVLB" VendorName "Diamond" BoardName "Viper VLB" Videoram 2048 # This is mandatory Membase 0x80000000 # This is mandatory on non-ViperVLB's IOBase 0xe000 # Use this ONLY on ViperPCI's EndSection Section "Screen" Driver "accel" Device "ViperVLB" Monitor "NEC4FGe" Subsection "Display" Depth 8 # This line is optional Modes "1024x768" "800x600" EndSubsection EndSection 11. 既知のバグ 現在は、X サーバと xdm, olvm を一緒に使った場合に問題が起こります。ま た、Linux で 仮想端末の切り替えでも問題が起こります。 仮想端末に移動している際にカーソル形状が変化すると、仮想端末から戻った 際には正しく表示されません。これはカーソルがウィンドウ間を移動するまで (そして、色と形状が変わるまで)続きます。 メモリの検出は動作しません。カードに載っているメモリの量は明示的に指定 する必要があります。1MB のカードを使っている場合、XF86Config の Device セクションに VideoRAM 1024 と書いてみてください。これが動作しなけれ ば、Device セクションに Option "vram_128" と追加してみてください。 12. クレジット P9000 のコードの開発に貢献した主なメンバーを以下に示します: o Erik Nygren (nygren@mit.edu) o Harry Langenbacher (harry@brain.jpl.nasa.gov) o Chris Mason (clmtch@osfmail.isc.rit.edu) o Henrik Harmsen (harmsen@eritel.se) Viper PCI サーバを動作させる際に協力してくれた Matt Thomas さん (thomas@lkg.dec.com) と Bob Hollinger さん (bob@interaccess.com) に 感謝します。 バンク切り替えのパッチは残念ながら統合できませんでしたが、作者の David Moews さん (dmoews@xraysgi.ims.uconn.edu) に深く感謝します。 Andy, David, Dave, Jon, Michael, Bob, XFree86 のコアチームの皆さん、そ して全ての人にありがとう! これから数ヵ月はアクセラレーション等の作業を行う予定です。パッチを作成 したら、どうか筆者 (nygren@mit.edu) まで送ってください。 $XFree86: xc/programs/Xserver/hw/xfree86/doc/Japanese/README.P9000,v 1.1.2.3 1999/12/28 12:13:48 hohndel Exp $ $XConsortium: P9000.sgml /main/9 1996/05/12 20:58:05 kaleb $ 13. 日本語訳について 日本語訳は X Japanese Documentation Project が行いました (翻訳: 藤原輝 嘉 , 校正: 山下純 司 )。問題 点の指摘やご意見は藤原まで御連絡ください。原文の著作権は XFree86 プロ ジェクト社にあり、日本語訳の著作権は X Japanese Documentation Project にあります。