(57)【特許請求の範囲】
【請求項１】
ピクセルを含むイメージを表示する装置であって、
ワードでアクセスでき、かつピクセルに対応するピクセル・アドレスを有し、ピクセル・アドレスそれぞれに対応するピクセルがどのように表示されるかを示すピクセル値を保持するように動作するメモリと、
前記メモリ中の前記ピクセル値を初期ピクセル・アドレスおよびビットマップに従って修正するように動作するプロセッサとを含み、前記ビットマップが、
ａ）第１のアドレス・オフセットと、
ｂ）０でない第１のピクセル・セット・サイズと、
ｃ）ピクセルの第１のセットのピクセル値であって、前記第１のピクセル・セットの長さが前記第１のピクセル・セット・サイズによって示され、前記第１のピクセル・セットの発端が前記初期ピクセル・アドレスおよび前記第１のアドレス・オフセットによってアドレス指定され、前記ビットマップ中の前記第１のピクセル・セット中のワード境界が前記メモリ中の対応するピクセル・セット中のワード境界に整合するピクセル値と、
ｄ）０でない後続のアドレス・オフセットと、
ｅ）０でない後続のピクセル・セット・サイズと、
ｆ）ピクセルの後続のセットのピクセル値であって、前記後続のピクセル・セットの長さが前記後続のピクセル・セット・サイズによって示され、前記後続のピクセル・セットの発端が前記後続のアドレス・オフセットによって増分的にアドレス指定され、前記ビットマップ中の前記後続のピクセル・セットのワード境界が前記メモリ中の対応するピクセル・セット中のワード境界に整合するピクセル値とを含む装置。
【請求項２】
前記ビットマップが前記後続のアドレス・オフセット、前記後続のピクセル・セット・サイズおよび後続のピクセル値の少なくとも１つ以上の反復をさらに含む請求項１に記載の装置。
【請求項３】
前記反復の終了が、フラグ値である前記後続のアドレス・オフセットの値によって示される請求項２に記載の装置。
【請求項４】
前記反復の終了が、フラグ値である前記後続のピクセル・セット・サイズの値によって示される請求項２に記載の装置。
【請求項５】
ユーザ入力の表示を与えるように動作するユーザ入力装置と、
前記ビットマップを保持するように動作する記憶装置と、
前記ユーザ入力装置から前記ユーザ入力表示を受け取り、かつ前記記憶装置から前記ビットマップを受け取り、前記ビットマップを前記プロセッサに与えるように動作する中央処理装置とをさらに含む請求項１に記載の装置。
【請求項６】
ユーザ入力の表示を与えるように動作するユーザ入力装置と、
前記ビットマップを保持するように動作する記憶装置とをさらに含み、
前記プロセッサがさらに、前記ユーザ入力装置から前記ユーザ入力表示を受け取り、かつ前記記憶装置から前記ビットマップを受け取るように動作する請求項１に記載の装置。
【請求項７】
ワード整合が異なる複数のビットマップを含むソフトウェアを実行するように動作する中央処理装置をさらに含み、前記ソフトウェアが、前記複数のビットマップのうち前記プロセッサが実行するビットマップを、前記ビットマップに従って修正されるピクセルの前記メモリ中のワード整合に基づいて選択する請求項１に記載の装置。
【請求項８】
前記プロセッサがさらに、ワード整合が異なる複数のビットマップを含むソフトウェアを実行するように動作し、前記ソフトウェアが、前記複数のビットマップのうち実行するビットマップを、前記複数のビットマップに従って修正されるピクセルの前記メモリ中のワード整合に基づいて選択する請求項１に記載の装置。
【請求項９】
前記ビットマップ中のピクセル・セット中のワード境界が前記メモリ中の対応するピクセル・セット中のワード境界に整合するように前記ビットマップがコンパイルされたときに前記ビットマップのピクセル整合が調整される請求項１に記載の装置。
【請求項１０】
ピクセルを含むイメージを表示する方法であって、
ピクセルそれぞれに対応するメモリ中のアドレスのピクセル値に従ってピクセルを表示するステップと、
前記メモリ中の前記ピクセル値をビットマップに従って修正するように前記ビットマップを処理するステップとを含み、前記ビットマップが、
ａ）第１のアドレス・オフセットと、
ｂ）０でない第１のピクセル・セット・サイズと、
ｃ）ピクセルの第１のセットのピクセル値であって、前記第１のピクセル・セットの長さが前記第１のピクセル・セット・サイズによって示され、前記第１のピクセル・セットの発端が前記初期ピクセル・アドレスおよび前記第１のアドレス・オフセットによってアドレス指定され、前記ビットマップ中の前記第１のピクセル・セット中のワード境界が前記メモリ中の対応するピクセル・セット中のワード境界に整合するピクセル値と、
ｄ）０でない後続のアドレス・オフセットと、
ｅ）０でない後続のピクセル・セット・サイズと、
ｆ）ピクセルの後続のセットのピクセル値であって、前記後続のピクセル・セットの長さが前記後続のピクセル・セット・サイズによって示され、前記後続のピクセル・セットの発端が前記後続のアドレス・オフセットによって増分的にアドレス指定され、前記ビットマップ中の前記後続のピクセル・セットのワード境界が前記メモリ中の対応するピクセル・セット中のワード境界に整合するピクセル値とを含む方法。
【請求項１１】
前記ビットマップが前記後続のアドレス・オフセット、前記後続のピクセル・セット・サイズおよび後続のピクセル値の少なくとも１つ以上の反復をさらに含む請求項１０に記載の方法。
【請求項１２】
前記反復の終了が、フラグ値である前記後続のアドレス・オフセットの値によって示される請求項１０に記載の方法。
【請求項１３】
前記反復の終了が、フラグ値である前記後続のピクセル・セット・サイズの値によって示される請求項１０に記載の方法。
【請求項１４】
ユーザ入力の表示を与えるユーザ入力装置と、
前記ビットマップを与える記憶装置と、
前記ユーザ入力装置から前記ユーザ入力表示を受け取り、かつ前記記憶装置から前記ビットマップを受け取り、前記ビットマップを前記プロセッサに与えるように中央処理装置とをさらに含む請求項１０に記載の方法。
【請求項１５】
ユーザ入力の表示を与えるユーザ入力装置と、
前記ビットマップを与える記憶装置とをさらに含み、
前記プロセッサが、前記ユーザ入力装置から前記ユーザ入力表示を受け取り、かつ前記記憶装置から前記ビットマップを受け取る請求項１０に記載の方法。
【請求項１６】
複数のビットマップのうち処理するビットマップを、前記複数のビットマップに従って修正されるピクセルの前記メモリ中のワード整合に基づいて選択するステップをさらに含み、前記複数のビットマップがそれらのワード整合が異なる請求項１０に記載の方法。
【請求項１７】
前記ビットマップ中のピクセル・セット中のワード境界が前記メモリ中の対応するピクセル・セット中のワード境界に整合するように前記ビットマップがコンパイルされたときに前記ビットマップのピクセル整合が調整された請求項１０に記載の方法。
【発明の詳細な説明】
発明の分野
本発明は、デジタル・コンピュータの制御下でグラフィック情報を表示する方法に関する。特に、本発明は、転送されたデータを圧縮し、ワード整合することによってピクセル・データのブロック転送（ビットブリット：bitblits）を高速化する方法に関する。
発明の背景
グラフィック情報を表示するコンピュータなどデジタル・システムは、一般にユーザに表示されたイメージ領域を画素すなわちピクセルに分割する。表示されたイメージは、しばしば幅３２０ピクセル（またはピクセル／線）×高さ２４０ピクセル（または線／フレーム）から１２８０×１０２４ピクセルまでの長方形のアレイである。
各ピクセルがオンまたはオフである場合、情報のただ１つのビットをピクセルごとに記憶する必要がある。一般に、８、１６または３２ビット／ピクセルのフレーム・バッファまたはディスプレイ・メモリを使用して、複数のカラーまたはグレー・シェードがサポートされる。
ディスプレイ・メモリ中のピクセル情報を適時に更新する場合に問題が生じる。コンピュータ・システムのホスト・プロセッサまたは中央処理装置（ＣＰＵ）がディスプレイ・メモリを直接更新する場合、かなりの帯域幅を有するデータ通信チャネルまたはバスがそれらの間に備えられなければならない。例えば、ターゲット・スペシフィケーションが円滑な動きを与えるために１２８０×１０２４ディスプレイ中の各ピクセルごとに１秒当たり３０回再書込みまたは転送する場合、約４２，０００，０００ビット／秒の転送帯域幅が必要になる。
そのような高帯域幅は、バスがそれを伝達するため、ならびにメモリ・デバイスまたはＣＰＵが更新する情報を記憶または生成するために費用がかかる。より穏やかな例でもまだかなりの帯域幅が必要になる。８ビット・ピクセルの６４０×４８０イメージは、５，０００，０００ビット／秒を使用して約１／２秒で完全に再書込みできる。従来技術のシステムはこの帯域幅要件を小さくしようと試みるものである。
必要な帯域幅を小さくできる１つの方法は、表示するすべてのピクセルのピクセル情報を転送しないことである。例えば、変化したピクセルのピクセル・データまたはアドレスのみを転送することである。しかしながら、この手法には、個々のピクセルの転送に読取り修正書込み動作が必要であるという欠点がある。
複数のピクセルがしばしば単一のメモリまたはバス・ワード中にパックされる。８ビット・ピクセルは１６ビット・ワード当たり２個または３２ビット・ワード当たり４個パックし、１６ビット・ピクセルは３２ビット・ワード当たり２個パックするのが普通である。これらの場合単一のピクセルを修正するために、ディスプレイ・メモリ・ワードの前の内容を読み取り、そのワード中の不変のピクセルのデータを変化したピクセルのデータとともに再書込みしなければならない。
必要な帯域幅を小さくできる他の方法は、ビット・ブロック転送またはビットブリット動作と呼ばれるものである。ビットブリットでは、ディスプレイ・メモリ中の長方形領域を指定し、その領域中のピクセルのデータを転送する。しかしながら、類似の問題がしばしばこの手法に関して生じる。
転送するセット中、または転送する長方形の各線中の最初および最後のピクセルが偶然ワード境界上に落ちなかった場合、セットを開始し、終了するか、または長方形の各線を開始し、終了するディスプレイ・メモリ・ワード用に上述の読取り修正書込みサイクルを使用しなければならない。しかしピクセル・セット中のワード境界が修正されたピクセルのソースとディスプレイ・メモリとの間に偶然整列した場合、内部ワードを転送するのにもピクセルをワード中にシフトする必要がある。
必要な帯域幅を小さくできる他の方法は、ラン・レングス・コード化と呼ばれるものである。ラン・レングス・コード化されたビットマップでは、ピクセルの隣接するセット中に書き込むべきピクセル・データの単一のコピーとともにピクセルのカウントが与えられ、そのセットの長さがピクセル・カウントによって与えられる。ＣＰＵおよびＣＰＵとディスプレイ・メモリの間のバスから、グラフィックス・プロセッサまたはアクセラレータにそのようなビットマップを容認させ、ビットマップ中でコード化されたラン・レングスに従ってディスプレイ・メモリを更新させることによってそのようなビットマップを解釈し、転送する負担を取り除くことができる。
必要な帯域幅を小さくできる他の方法は、クロマ・キー・コード化と呼ばれるものである。クロマ・キー・コード化されたビットマップでは、特定の値のピクセルのデータを転送したときはいつでも、ピクセル・データはアドレス指定されたピクセルに書き込まれる新しいカラーではない。そうではなく、そのディスプレイ・メモリに書き込まれるイメージ・オーバレイはその特定のピクセルに対して透過的である。したがって、グラフィックス・アクセラレータは、ビットマップ中でそのようにコード化されたピクセルに対してディスプレイ・メモリ中のピクセル・データを変更しない。一般に、クロマ・キーとして使用される特定の値は、ホスト・コンピュータ上で実行するアプリケーション・ソフトウェアによってプログラムでき、グラフィックス・アクセラレータによって解釈される。
ラン・レングス・コード化ならびにクロマ・キー・コード化には、不変のピクセルに対してもピクセル・データが転送されるという欠点がある。さらに、ラン・レングス・コード化ならびにクロマ・キー・コード化には、転送されたピクセル・データがディスプレイ・メモリ中の対応するピクセルのワード境界に整合するワード境界を有しないときにかなりの追加の処理がしばしば必要になるという欠点がある。この追加の処理は、転送するセットの境界での起こりうる読取り修正書込み動作および転送するすべてのピクセルに対してワード中のピクセル・データの起こりうる再整合を含。
必要なバスおよびプロセッサ帯域幅を小さくできる他の方法は、表示する長方形領域またはウィンドウに対してピクセル・データを保持するために必要とされるよりも大きいディスプレイ・メモリを備えることである。ディスプレイ・メモリの表示されない部分はビットマップを保持できる。グラフィックス・アクセラレータは、ホストＣＰＵ上で実行するソフトウェアによってそうするように命令されたときにこれらのビットマップをディスプレイ・ウィンドウ中に移動できる。しかしながら、この手法は、移動する各ワードごとに少なくとも２つのアクセス・サイクルが必要であるためにディスプレイ・メモリに性能ネックが生じる。
したがって、ディスプレイ・メモリ中のピクセルの一部のみを更新するときに必要な帯域幅および処理を小さくする方法が必要である。
発明の概要
本発明は、ピクセル・データを高速バスからフレーム・バッファまたはディスプレイ・メモリ中に迅速に転送する方法および装置である。本発明のグラフィックス・ディスプレイ性能は従来技術よりも大幅に改善される。これは、一部は転送されたピクセル情報を圧縮すること、一部は転送された情報中のピクセルをディスプレイ・メモリ中の対応するピクセルにワード整合すること、および一部はディスプレイ・メモリ中での転送を回避することによって達成される。
転送されたピクセル・データは、転送によって修正されないピクセルに対してピクセル・データが転送されないように圧縮される。そうではなく、スキップする修正されないピクセル・データのカウントは修正されるピクセルに対してピクセル情報の各セットに先行する。
転送されたピクセル・データは、転送された対応するピクセルの各セット中のワード間の境界が、ディスプレイ・メモリ中に記憶された対応するピクセル、すなわち転送のターゲット・アドレスのピクセル中のそれらに一致するように整合する。このワード整合は、ディスプレイ・メモリ中のピクセル・データを修正するグラフィックス・アクセラレータのタスクを大幅に高速化する。この高速化は、この整合を保証する負担を、転送を開始するアプリケーション・ソフトウェアに負わせるという代償を払って達成される。
コックピットなど静的なイメージの場合、必要な整合は、ソフトウェアによって使用されるイメージ情報がビットマップ中にコンパイルされるときに達成できる。
スプライトなど動的なイメージの場合、必要な整合は、スプライトのピクセル・データの可能なすべてのワード整合を異なるビットマップ・バージョン中にコンパイルすることによって達成できる。実行時、アプリケーション・ソフトウェアは、スプライトの現在位置を使用して、転送すべきスプライトのビットマップのバージョンを動的に選択する。
ピクセル・データは、ディスプレイ・メモリ中のある位置（現在のディスプレイ・ウィンドウ外の位置など）から他の位置（現在のディスプレイ・ウィンドウ内の位置など）に転送されるのではなく、主メモリからディスプレイ・メモリ中に転送される。ディスプレイ・メモリ中の転送では、ディスプレイ・メモリの読取りならびに書込みを行う必要がある。すなわち、転送される各ワード当たり少なくとも２つのメモリ・アクセスが常に必要である。高速バスからディスプレイ・メモリ中への転送は、転送される各ワード当たり必要なメモリ・アクセス・サイクルがただ１つで済むのでより速くなる。
本発明の一実施態様は、高速バスを介して圧縮され、事前整合されたビットマップを受け取るグラフィックス・アクセラレータを含む。ビットマップは、主メモリ中に記憶され、グラフィックス・アクセラレータ中の先入れ先出し（ＦＩＦＯ）レジスタ中へのホストＣＰＵソフトウェア書込みか、またはホストＣＰＵソフトウェアによって開始され、ホストＣＰＵソフトウェアと無関係に実行する直接メモリ・アクセス（ＤＭＡ）を介して高速バス上に置かれる。グラフィックス・アクセラレータの一実施態様は、１ＭＢまたは４ＭＢのディスプレイ・メモリを含み、パイプライン・アーキテクチャを使用して実施される。
本発明の他の実施態様では、ホストＣＰＵ上で実行するソフトウェアは事前に整合されたピクセル情報をディスプレイ・メモリに直接書き込む。この実施態様では、グラフィックス・アクセラレータは任意選択である。
【図面の簡単な説明】
本発明を以下の図面に図示する。図面中、周知の回路は分かり易いようにブロック図で示す。これらの図面は、説明および読者の理解を助けるためのものである。本発明は、図示の好ましい実施形態および設計代替例に限定されるものではない。
第１図は、本発明が効率的にサポートする２つのタイプのグラフィックス・オブジェクト、すなわち移動スプライトおよび静止スプライトを示す図である。
第２ａ図は、本発明による例のビットマップがどのようにしてユーザに表示されるかを示す図である。
第２ｂ図は、本発明によって解釈したときに例のビットマップの表示をもたらす対応するデータ構造を示す図である。
第３（ａ）図は、３２ビット・ディスプレイ・メモリ中の一組の隣接する１６ビット・ピクセルの２つの可能な整合を示す図である。
第３（ｂ）図は、３２ビット・ディスプレイ・メモリ中の一組の隣接する８ビット・ピクセルの４つの可能な整合を示す図である。
第４図は、コンピュータ・ゲームなどアプリケーション・ソフトウェアが、移動スプライトの現在位置に応じてグラフィックス・アクセラレータに転送すべきビットマップ・バージョンを選択するために実施しなければならないステップを示す図である。
第５図は、本発明を実施できるグラフィックス・アクセラレータ中の主要な構成要素を示す図である。
第６図は、本発明を使用するコンピュータ・システム中の主要な構成要素を示す図である。
発明の詳細な説明
概要
本発明の様々な代替実施形態および設計代替例を本明細書に開示するが、これらは説明した実施形態および代替例に限定されるものではない。使用できる代替実施形態および形態および詳細の様々な変更および本発明の原理、精神または範囲から逸脱することなく本発明を実施できることを当業者なら認識できよう。
特に、本明細書に記載の本発明の実施形態は、高速バス、特に３２ビット業界標準周辺装置インタフェース（ＰＣＩ）バスおよびＩｎｔｅｌ互換Ｐｅｎｔｉｕｍ(R)（またはそれ以上）ホストＣＰＵを有するパーソナル・コンピュータ・システム中で動作するように設計される。ＰＣＩバスは、ホストＣＰＵを１つまたは複数のユーザ入力装置、１つまたは複数の記憶装置、およびグラフィックス・アクセラレータまたはフレーム・バッファ・ディスプレイ・メモリとリンクする。８、１６または３２ビット／ピクセル深さがサポートされる。ゲーム・アプリケーション・ソフトウェアをサポートする設計詳細は省略してある。本発明の精神または範囲から逸脱しない多数の他の代替設計があることを当業者には明らかであろう。
第１図に、コックピット１０１およびスプライト１０２がスクリーン１００上のコンピュータ・システム・ユーザにとってどのように見えるかを示す。「コックピット」は、ディスプレイ・スクリーン上に静止しているビットマップに与えられる名前である。「スプライト」は、ディスプレイ・スクリーン上の様々な位置に現れるビットマップに与えられる名前である。
第１図に示される特定のコックピット中には透明な３つの角形領域および３つの円形領域がある。コックピット１０１をグラフィックス・ディスプレイ・メモリに書き込むとき、コックピット１０１中のこれらの透明なピクセルの現在の値を不変にしておかなければならない。同様に、スプライト１０２は、区画ボックス１０３中の色付きまたは不透明のピクセルならびに透明なピクセルから構成される。この場合も、スプライト１０２がディスプレイ・メモリに書き込まれるときに透明なピクセルを不変にしておかなければならない。
高速転送ビットマップのフォーマット
第２ａ図に、特定例のビットマップがスクリーン上にどのように現れるかを示す。ビットマップの第１のピクセルは（４、５）、すなわちライン４、ピクセル５に位置する。この特定の例では、ディスプレイ・スクリーンは、左上角のライン０、ピクセル０から始まり、右上角のライン０、ピクセル９９まで続き、ライン当たり１００個のピクセルを与える。第２ａ図に示される例のビットマップは、高さ４ライン、幅１０ピクセルの長方形である。長方形の中心をはずれて高さ２ライン、幅４のピクセルの透明な領域がある。
第２ｂ図に、第２ａ図に示されるスプライトまたはコックピットを表す高速ビットマップ・データ構造２９９を示す。ビットマップ・データ構造２９９は、８ビットのピクセル深さ、または１バイト／ピクセル、および３２ビット毎ワードのワード・サイズをとる。第２ｂ図の各行は、２つの１６ビット数値または４つの８ビット・ピクセル値に分割される３２ビット・ワードを表す。
ビットマップ・データ構造２９９は、後続の情報が高速ビットマップ・フォーマットであることを指定するコマンド・ワード、転送高速ビットマップ２００から始まる。一般に、本発明は、これも他のコマンドおよびフォーマットをサポートするグラフィックス・システム、例えば、長方形領域中のすべてのピクセルをディスプレイ・メモリ中に書き込む従来の長方形ビットブリット中で使用される。転送高速ビットマップ２００は、グラフィックス・アクセラレータまたはホスト・ソフトウェアに後続のビットマップをどのように解釈するかを通知する。転送高速ビットマップ・コマンドはビットマップ・データ構造２９９の１つの３２ビット・ワードを占拠する。
ビットマップ・データ構造２９９の第２のワード、ワード２０１は、ビットマップの左上角に描画される初期ピクセル・アドレスを含む。初期アドレスは、行および列アドレス、すなわち（４、５）として、ピクセル・カウント・アドレス、すなわち４０５として、またはデータ構造２９９が１バイト／ピクセル・ディスプレイ・メモリに基づいているのでこの場合も４０５であるメモリ・バイト・アドレスとして表すことができる。
表示するビットマップがスクリーン上で移動できるスプライトである場合、スプライトは、ワード２０１中の値を変更するだけで異なるアドレスに表示できる。ただし、新しいアドレスはディスプレイ・メモリ・ワード中にピクセルの同じ整合を有することを条件とする。
表示するビットマップが静止したコックピットである場合、ビットマップ・ワード中のピクセルの整合をディスプレイ・メモリ・ワード中のターゲット・ピクセルの整合に一致させることは、イメージ・データがビットマップ中にコンパイルされるときに静的に達成される。いくつかのコックピットでは、本発明によって加えられる整合制約を満足することを保証するために、コックピットを表すビットマップ中のピクセル整合を調整する必要がある。
コマンド・ワード２００および初期ピクセル・アドレス２０１の後、ビットマップ・データ構造２９９は描画すべきピクセルをできるだけ多数の組の隣接するピクセルに分割する。データ構造２９９の末尾は、ピクセル・オフセットの他の反復またはピクセル・セット・サイズが予想される場所に現れる０などフラグ値によって示される。
第２ａ図に示されるピクセル・セット２１０は例のビットマップの最上行である。第２ｂ図に示されるビットマップ２９９のセクション２１０のようにビットマップ・データ構造中の４つのワードによって表される。セクション２１０の第１のワードは第１のアドレス・オフセット２１１および第１のピクセル・セット・サイズ２１２に分割される。例のビットマップの場合、初期ピクセル・アドレス２０１は例のビットマップが表示されるアドレスであるので、第１のアドレス・オフセット２１１は０である。第１のピクセル・セット・サイズ２１２は例のビットマップの最上ラインが長さ１０ピクセルであるので１０である。本発明の代替実施形態では、アドレス・オフセット値およびピクセル・セット・サイズはバイトまたはピクセル・カウントで指定できる。ビットマップ２９９の場合、これらの代替表示はピクセル当たり１バイトであるので同じビットマップ・データ構造をつくり出す。
セクション２１０の残りの３つのワードは例のビットマップの最上行のピクセル値である。それらはターゲット・アドレス（すなわち、それらが書込みまたは描画されるアドレス、またはそれらが転送されるアドレス）がディスプレイ・メモリのワード中に整合するのと同じ形でビットマップ２９９のワード中に整合する。
本発明の一実施形態では、各ラインはワード境界から始まる。したがって、任意のライン中のピクセル５はそのラインの第２のワードの第２のピクセル位置に位置する。ビットマップ・データ構造２９９が解釈されるとき、バイト２１３の内容は無視され、したがってバイト２１３は第２ｂ図では指定しない値として示される。同様に、バイト２１４は無視され、指定しない値として示される。したがって、第２ａ図に示されるピクセル・セット２１０はビットマップ・データ構造２９９のセクション２１０中でコード化される。
同様に、例のビットマップの第２の行上のピクセルの第１のセットはデータ構造２９９のセクション２２０中に表示される。例のビットマップはそれらのピクセル中で透明であるので、後続のアドレス・オフセット２２１はスキップすべき数、すなわち不変のままにしておくべき数を指定する。この場合、９０個のピクセルがスキップされる（１行−１０個のピクセル）。後続のピクセル・セット・サイズ２２２はピクセル・セット２２０の長さ（すなわちどのくらい多くの隣接するピクセルを描画すべきか）を指定する。この場合、３つのピクセルを描画する。これら３つのピクセルのピクセル・データはデータ構造２９９のセクション２２０の次のワード中に与えられる。これらのピクセル値は、ディスプレイ・メモリ中のターゲット・ピクセルのワード境界に整合し、したがってバイト２２３は指定しない。
データ構造２９９のセクション２３０の後続のアドレス・オフセット２３１は、修正すべき次のセットのピクセルの前に５つのピクセルをスキップするか、または透明にしておくよう指定する。後続のピクセル・セット・サイズ２３２は、２つのピクセルを修正し、それにより例のビットマップ値の透明な領域の最上ラインを形成するよう指定する。これらのピクセル値は、データ構造セクション２３０の第２のワードによって与えられ、この場合もディスプレイ・メモリ中のターゲット・ピクセルのワード境界に整合し、バイト２３３および２３４は指定しない。
同様に、データ構造セクション２４０は、９０個のピクセルをスキップし、３つのピクセルを書き込むよう指定する。データ構造セクション２４０の第２のワードはワード整合したピクセル値を書き込むよう指定する。データ構造セクション２５０は、２つのピクセルのセットを書き込む前に５つの透明なピクセルをスキップするよう指定し、書き込むべき整合したピクセル値を含む第２のワードを有する。データ構造セクション２６０は、後続のピクセル・セット・サイズ２６２中に１０個のピクセルを書き込む前に、後続のアドレス・オフセット２６１中で９０個のピクセルをスキップするよう指定する。書き込むべきワード整合したピクセル値はデータ構造セグメント２６０の次の３つのワード中で与えられる。
ピクセル・セット２６０は例のビットマップを完了する。ビットマップの末尾は、後続のピクセル・オフセット２０２の０値および後続のピクセル・セット・サイズ２０３の０値（すなわち０ワード）によってデータ構造２９９値に示される。
ビットマップ・データ構造２９９は、長方形ビットブリット、ランレングス・コード化、またはクロマ・キー・コード化に基づく従来技術の技法よりもかなり圧縮される。この圧縮が行われるのは、転送すべきビットマップがそれぞれオフセットを介して、すなわち初期オフセット２１１を介して別々にアドレス指定される隣接するピクセルのセットに分割されるためであるが、２２１、２３１、２４１、２５１、２６１など構造のオフセットのビットマップ中で多数の反復が行われる。ビットマップ・データ構造のこの圧縮はグラフィックス・ディスプレイ性能を高める。
メモリおよびビットマップ・ワード中のピクセル・データの整合
第３図に、３２ビット・ワード中の１６ビット・ピクセルおよび８ビット・ピクセルの可能な整合を示す。本発明の整合特徴は、ワードが２つまたはそれ以上のピクセルを含むことを条件として、任意のワード・サイズおよび任意のピクセル・サイズに適用できることが当業者には明らかであろう。
第３ａ図に、１６ビット・ピクセルを３２ビット・ワード中にパックするときに生じる可能な場合を示す。場合３１０は、ビットマップまたはピクセル・セットの第１のピクセルが偶然ワード中の第１の１６ビットを占拠したときに生じる。場合３１１は、ビットマップまたはセットの第１のピクセルがワード中の第２の１６ビットを占拠したときに生じる。場合３１０および３１１は、３２ビット・ワード中にパックした１６ビットマップ・ピクセルのただ２つの可能性である。
第３ｂ図に、８ビット・ピクセルを３２ビット・ワード中にパックするときに生じる可能な場合を示す。場合３２０は、ビットマップまたはピクセル・セットの第１のピクセルが偶然３２ビット・ワードの発端に整合したときに生じる。場合３２０では、第１のワードはピクセル・セットの最初の４つのピクセルを含み、ピクセル５は第２のワードを開始する。
場合３２１は、ピクセル・セットの第１のピクセルがワード１  ３０１中の第２のピクセルである場合に生じる。場合３２０では、ピクセル１、２、および３は第１のワード中の最後のピクセルであり、ピクセル４および５はワード２  ２０２中の第１のピクセルである。
同様に、場合３２２は、ピクセル・セットの第１のピクセルがワード中の第２のピクセルである場合に生じる。この場合、ワード３０１はその最後の２つのピクセルとしてピクセル１およびピクセル２を含み、ワード３０２はその最初の３つのピクセルとしてピクセル３、４、および５を含む。
場合３２３は、ピクセル・セットの第１のピクセルがワード中の最後のピクセルである場合に生じる。場合３２３では、ワード３０１はその最後のピクセルとしてピクセル１を含み、ワード３０２はピクセル２〜５を含む。場合３２０、３２１、３２２、および３２３は８ビット・ピクセルを３２ビット・ワード中にパックするときに生じうる唯一の場合である。
ソフトウェアでスプライト・ビットマップ・バージョンを動的に選択する
第４図は、スプライト用に使用するビットマップのバージョンを動的に選択するためにゲームなどアプリケーション・ソフトウェアによって使用される手順を記述する流れ図である。このアプリケーション・ソフトウェアは、一般に第６図に示されるＣＰＵ６０１などホストＣＰＵプロセッサ上で実行する。
第４図に示される手順では、スプライトがスクリーン上の任意の位置に移動でき、かつ４つの８ビット・ピクセルがビットマップ中の各３２ビット・ワード中にパックされると仮定する。これらの条件を仮定すれば、第３図に関して示される場合３２０、３２１、３２２、および３２３に対応する４つのビットマップ・バージョンが必要である。スプライトが１つおきのピクセル位置にしか描画できない場合、または１６ビット・ピクセルが３２ビット・ワード中にパックされる場合、スプライトを表示するためにただ２つのビットマップ・バージョンが必要である。
手順は、４０１でスプライトを表示すべき位置を計算することによって始まる（ステップ４０２）。次に、計算した位置の最小桁の２つのビットをテストする（ステップ４０３）。このテストはこれら２つのビットの４つの可能な値に応じて制御を４つの異なるステップに渡す。ステップ４０４、４０５、４０６、または４０７の１つは計算した位置の最後の２つのビット中の値に応じて制御を受け取る。
これらのステップはそれぞれスプライトの対応するビットマップ・バージョンをこの位置に使用すべきものとして選択する。４つの異なるビットマップ・バージョンは、各バージョン中に表示されるピクセル・データのワード整合のみ異なる。次いで、これらのステップはそれぞれ制御をステップ４０８に渡し、そこで選択したビットマップ・バージョンをディスプレイ・メモリ中の計算した位置に書き込むか、または制御を渡す。これで手順を終了する（４０９）。
静止コックピットはコンパイルのときに事前整合しなければならない
本発明によれば、静止ビットマップ、またはコックピットでもターゲット・ディスプレイ・メモリ・ワードに対してピクセル整合する必要がある。ビットマップが静止している場合、そのただ１つのバージョンが必要であるが、そのバージョンは、アプリケーション・ソフトウェアまたはそのデータ・ファイルをコンパイルするときに事前整合しなければならない。ビットマップの「自然な」整合、すなわち先頭の指定しないピクセルを有しない整合が必要なワード整合を与えない場合、ビットマップをコンパイルするときにビットマップの整合を調整しなければならない。
グラフィックス・アクセラレータ・アーキテクチャ
第５図に、本発明の一実施形態で使用されるグラフィックス・アクセラレータ５００のアーキテクチャを示す。グラフィックス・アクセラレータ５００はＰＣＩインタフェース５６０を介してＰＣＩバス（図示せず）から第２図に示されるデータ構造２９９など高速ビットマップ・データ構造を受け取る。
ＰＣＩインタフェース５６０は、ＰＣＩバスから受け取った情報がＲＩＳＣプロセッサ５１０によって解釈すべきグラフィックス・アクセラレータ・コマンドであるかどうか、またはＶＧＡコントローラ５７０によって解釈すべきビデオ・グラフィックス・アレイ（ＶＧＡ）コマンドであるかどうかを決定する。
ＶＧＡコントローラ５７０はホストＣＰＵ上で動作するＶＧＡベースのソフトウェアとの互換性を与える。ＶＧＡコントローラ５７０は本発明の動作にとって重要でないが、グラフィックス・アクセラレータ５７０のコスト効果性を高める。
ＲＩＳＣプロセッサ５１０の性能は、当技術分野において周知のように命令キャッシュ５４０およびデータ・キャッシュ５３０によって高められる。ＲＩＳＣプロセッサ５１０は、命令キャッシュ５４０およびダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）制御装置５５０を介してＲＩＳＣプロセッサ５１０が使用できる電気的にプログラム可能な読取り専用メモリ（ＥＰＲＯＭ）５９３中に記憶されたマイクロ構造ファイルに基づいて様々なグラフィックス・アクセラレータ・コマンドを解釈する。
ＲＩＳＣプロセッサ５１０によって解釈されたコマンドは本発明の転送高速ビットマップ・コマンドを含む。ＲＩＳＣプロセッサ５１０はまた、いくつかのピクセルの情報を高速で変換するためにシザリング、パターンおよびテクスチャ回路５２１、フォッグ・ブレンド、カラー・スペース、およびＺバッファ回路５２２、ならびに描画回路５２３を含むピクセル・エンジン５２０を必要とする。
陰極線管（ＣＲＴ）コントローラ（ＣＲＴＣ）５５１、ビデオ先入れ先出し（ＦＩＦＯ）５５２、およびデジタルアナログ変換器（ＤＡＣ）５９１は当技術分野において周知である。
ダイナミック読取り専用メモリ（ＤＲＡＭ）５９２は、表示すべきピクセル値を保持するフレーム・バッファまたはディスプレイ・メモリを保持する。一般に、ＤＲＡＭ５９２は、ＤＲＡＭ５９２中のウィンドウからとられる表示された現在のピクセル値に必要なよりも大きい。本発明は、ＤＲＡＭ５９２中のピクセル・データの転送を必要としない。これは、そのような転送は常に転送されるワード当たりＤＲＡＭ５９２の２つのアクセス・サイクルを必要とし、ピクセル整合に応じて、ＤＲＡＭ５９２の読取り修正書込みサイクルが必要な隣接するピクセルのセットの末尾を除いてＰＣＩバスからＤＲＡＭ５９２中への転送は１つのみを必要とするためである。
グラフィックス・アクセラレータを有するコンピュータ・システム・アーキテクチャ
第６図は、本発明の様々な実施形態がその中で動作できる例示プログラム可能コンピュータ・システム６１１のアーキテクチャ・ブロック図である。
コンピュータ・システム６１１は、一般に命令やデータなど情報を伝達するバス６０９を含む。本発明の一実施形態では、バス６０９はＰＣＩバスである。コンピュータ・システム６１１はさらに、一般にバス６０９に結合され、プログラムされた命令に従って情報を処理するホスト中央処理装置（ＣＰＵ）６０１、バス６０９に結合され、ホストＣＰＵ６０１の情報を記憶する主メモリ６０２、およびバス６０９に結合され、情報を記憶するデータ記憶装置６０８を含む。コンピュータ・システム６１１のデスクトップ設計の場合、上記の構成要素は一般にシャシ（図示せず）中に位置する。
ホストＣＰＵ６０１は、特にＩｎｔｅｌ社製の３８６、４８６Ｐｅｎｔｉｕｍ(R)または互換プロセッサでよい。主メモリ６０２は、ホストＣＰＵ６０１の動的情報を記憶するランダム・アクセス・メモリ（ＲＡＭ）、ホストＣＰＵ８０１の静的情報および命令を記憶する読取り専用メモリ（ＲＯＭ）、または両方のタイプのメモリの組合せでよい。
コンピュータ・システム６１１の代替設計では、データ記憶装置６０８はコンピュータ読取り可能情報を記憶する任意の媒体でよい。適切な候補には、読取り専用メモリ（ＲＯＭ）、ハード・ディスク・ドライブ、移動可能な媒体を有するディスク・ドライブ（例えばフロッピ磁気ディスクや光ディスク）、移動可能な媒体を有するテープ・ドライブ（例えば、磁気テープ）、フラッシュ・メモリ（すなわちフラッシュ半導体メモリで実施されるディスク状の記憶装置）。これらの組合せ、または読取りまたは書込みコンピュータ読取り可能媒体をサポートする他の装置も使用できる。
コンピュータ・システム６１１の入出力装置は、一般にそれぞれバス６０９に結合されたディスプレイ装置６０５、英数字入力装置６０６、位置入力装置６０７および通信インタフェース６０３を含む。データ記憶装置６０８はフロッピ・ディスクなど移動可能な媒体をサポートする場合、入出力装置とも考えられる。通信インタフェース６０３は、他のコンピュータ・システム６０４とホストＣＰＵ６０１または主メモリ６０２との間で情報を伝達する。
英数字入力装置６０６は、一般にアルファベット・キー、数字キーおよびファンクション・キーを有するキーボードであるが、アルファベットまたは数字を入力するように動作するタッチ敏感スクリーンまたは他のデバイスでもよい。
位置入力装置６０７は、コンピュータ・ユーザがボタン・プレスなどコマンド選択、およびディスプレイ装置６０５上の見える記号、ポインタまたはカーソルなどの二次元運動を入力することを可能にする。位置入力装置６０７は一般にマウスまたはトラックボールであるが、ジョイスティックや特殊キーや英数字入力装置６０６上のキー・シーケンス・コマンドなど、ユーザが指定した方向または量の信号意図運動をサポートする任意の装置も使用できる。ディスプレイ装置６０５は、液晶ディスプレイ、陰極線管、またはユーザが認識できるグラフィック・イメージまたは英数字を生成するのに適した任意の他の装置でよい。
第６図に示される本発明の一実施形態では、ディスプレイ装置６０５は第５図に示されるグラフィックス・アクセラレータ５００によって制御される。グラフィックス・アクセラレータ５００は、ディスプレイ装置６０５上に表示されるピクセルの値を保持するディスプレイ・メモリ６１２をその中に含む。
グラフィックス・アクセラレータ５００は、ピクセル値の操作、変更、または変換を行う様々なコマンドを迅速に実施、実行、または解釈するように動作できる。例えば、グラフィックス・アクセラレータ５００は、ビットマップ・データ構造２９９を解釈し、ディスプレイ・メモリ６１２中のピクセル値を修正する。高速ビットマップ中の隣接するピクセルの各セット中の最初または最後のピクセルがメモリ・ワード境界に整合しない場合、ホストＣＰＵは読取り修正書込みサイクルを実施する。これでビットマップが透明であるピクセルを無修正にされる。
本発明は、例コンピュータ・システム６１１だけでなく、広い範囲のプログラム可能なコンピュータ・システム中で動作できることが当業者には明らかであろう。
本発明のソフトウェア実施形態
本発明の代替実施形態（図示せず）はグラフィックス・アクセラレータ５００を省略する。代わりに、ホストＣＰＵ６０１はディスプレイ・メモリ６１２中のピクセル・データを直接制御し、操作し、管理する。ディスプレイ・メモリ６１２中の現在のディスプレイ・ウィンドウの内容はディスプレイ装置６０５中に表示される。
ホストＣＰＵ６０１上で実行するソフトウェアは、例えば、ビットマップ・データ構造２９９を解釈し、それに応じてディスプレイ・メモリ６１２中のピクセル値を修正する。高速ビットマップ中の隣接するピクセルの各セット中の最初または最後のピクセルがメモリ・ワード境界に整合しない場合、ホストＣＰＵは読取り修正書込みサイクルを実施する。これでビットマップが透明であるピクセルを無修正にされる。
第６図に示される実施形態と比較して、ソフトウェア実施形態はコストがより低いが、より多くのホストＣＰＵの帯域幅および処理能力を消費する。上述の従来技術と比較して、この代替ソフトウェア実施形態はより高い性能を有する。
結論
本明細書で説明したように、本発明は、圧縮され、ワード整合されたビットマップを高速ブロック転送する新規かつ有利な方法および装置を提供する。代替実施形態、設計代替例および形状および詳細の様々な変更が使用でき、かつ本発明の原理、精神または範囲から逸脱することなく本発明を実施できることを当業者なら理解できよう。例えば、広い範囲の設計がビットマップ・データ構造２９９およびグラフィックス・アクセラレータ５００に対して存在する。
下記の請求の範囲は本発明の範囲を示す。これらの請求の範囲の意味、またはその同等性の範囲、またはそのいずれかに入るいかなる変形も本発明の範囲内に入る。
【図１】
0003734226.tif 000002
【図２Ａ】
0003734226.tif 000003
【図２Ｂ】
0003734226.tif 000004
【図３】
0003734226.tif 000005
【図４】
0003734226.tif 000006
【図５】
0003734226.tif 000007
【図６】
0003734226.tif 000008