【誤訳訂正書】
【提出日】平成16年11月29日(2004.11.29)
【誤訳訂正１】
【訂正対象書類名】特許請求の範囲
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】
１つ以上のプリミティブのレンダリング中に第１メモリから第２メモリへの追い出しを禁止する方法であって、
前記第１メモリを定値に初期化するステップと、
制御データ信号を含む命令を供給するステップと、
レンダリング中に前記命令を処理するステップと、
前記制御データ信号に基づいて、前記第１メモリから前記第２メモリへの追い出しが存在するべきかどうかを判断するステップと
を備える、方法。
【請求項２】
前記制御データ信号に基づいて前記第１メモリから前記第２メモリへの追い出しを禁止するステップを更に備える、請求項１に記載の方法。
【請求項３】
前記制御データ信号に基づいて前記第１メモリから前記第２メモリへの追い出しを許可するステップを更に備える、請求項１に記載の方法。
【請求項４】
前記制御データ信号に基づいて前記第１メモリから前記第２メモリへの追い出しを禁止するステップが、制御データ信号に基づいてデプス・キャッシュからデプス・バッファへのデプス書き出しを禁止するステップを更に備える、請求項２に記載の方法。
【請求項５】
制御データ信号を含む命令を供給するステップが、
デプス書き出しディゼーブル値を含むゾーン制御命令を供給するステップと、
ゾーン制御レジスタに制御データ信号をロードするステップと
を更に備える、請求項１に記載の方法。
【請求項６】
前記制御データ信号に基づいて前記第１メモリから前記第２メモリへの追い出しを許可するステップが、制御データ信号に基づいてデプス・キャッシュからデプス・バッファへのデプス書き出しを許可するステップを更に備える、請求項３に記載の方法。
【請求項７】
デプス・キャッシュからデプス・バッファへの追い出しが必要な場合に自動的にデプス書き出しをオーバーライドするステップを更に備える、請求項６に記載の方法。
【請求項８】
デプス・キャッシュからデプス・バッファへの追い出しが必要な場合に自動的にデプス書き出しをオーバーライドするステップが、デプス・キャッシュからデプス・バッファへの追い出しが非同期グラフィック・コンテキスト・スイッチに応答する場合に自動的にデプス書き出しをオーバーライドするステップを更に備える、請求項７に記載の方法。
【請求項９】
制御データ信号を禁止する命令を供給するステップと
レンダリング中に前記命令を処理するステップと
を更に備える、請求項１に記載の方法。
【請求項１０】
１つ以上のプリミティブを含むシーンをレンダリングする装置であって、
定値に初期化されてデプス値を格納する第１メモリ領域と、
第２メモリ領域と、
前記第１メモリ領域から前記第２メモリ領域へのデプス値の追い出しを制御する書き出し制御信号を格納する制御メモリ領域と
を備える、装置。
【請求項１１】
前記制御信号が、前記第１メモリ領域から前記第２メモリ領域への追い出しを禁止する、請求項１０に記載の装置。
【請求項１２】
前記制御信号が、前記第１メモリ領域から前記第２メモリ領域への追い出しを許可する、請求項１０に記載の装置。
【請求項１３】
前記第１メモリ領域がデプス・キャッシュである、請求項１０に記載の装置。
【請求項１４】
前記第２メモリ領域がデプス・バッファである、請求項１０に記載の装置。
【請求項１５】
プリミティブが通る領域に対応した複数のビニング・メモリ領域と
デプス値制御信号に応答し、制御信号を含む命令を供給するビニング・エンジンと、
前記制御メモリ領域のレジスタに命令をロードするためのレンダリング・エンジンと
を更に備える、請求項１０に記載の装置。
【請求項１６】
１つ以上のプリミティブのレンダリング中に第１メモリから第２メモリへの追い出しを禁止するためにプロセッサによって実行可能な複数の機械可読命令を格納する機械可読媒体であって、
第１メモリを定値へと初期化させる命令と、
制御データ信号を含む命令を供給させる命令と、
レンダリング中に前記命令を処理させる命令と
前記制御データ信号に基づいて、前記第１メモリから前記第２メモリへの追い出しが存在するべきかどうかを判断させる命令と、
を備える、機械可読媒体。
【請求項１７】
前記制御データ信号に基づいて前記第１メモリから前記第２メモリへの追い出しを禁止させる命令を更に備える、請求項１６に記載の機械可読媒体。
【請求項１８】
前記制御データ信号に基づいて前記第１メモリから前記第２メモリへの追い出しを許可させる命令を更に備える、請求項１６に記載の機械可読媒体。
【請求項１９】
前記制御データ信号に基づいて前記第１メモリから前記第２メモリへの追い出しを禁止させる命令が、制御データ信号に基づいてデプス・キャッシュからデプス・バッファへのデプス書き出しを禁止させる命令を更に備える、請求項１７に記載の機械可読媒体。
【請求項２０】
制御データ信号を含む命令を供給させる命令が、
デプス書き出しディゼーブル値を含むゾーン制御命令を供給させる命令と、
ゾーン制御レジスタに制御データ信号をロードさせる命令と
を更に備える、請求項１６に記載の機械可読媒体。
【請求項２１】
前記制御データ信号に基づいて前記第１メモリから前記第２メモリへの追い出しを許可させる命令が、制御データ信号に基づいてデプス・キャッシュからデプス・バッファへのデプス書き出しを許可させる命令を更に備える、請求項１９に記載の機械可読媒体。
【請求項２２】
デプス・キャッシュからデプス・バッファへの追い出しが必要な場合に自動的にデプス書き出しをオーバーライドさせる命令を更に備える、請求項２１に記載の機械可読媒体。
【請求項２３】
デプス・キャッシュからデプス・バッファへの追い出しが必要な場合に自動的にデプス書き出しをオーバーライドさせる命令が、デプス・キャッシュからデプス・バッファへの追い出しが非同期グラフィック・コンテキスト・スイッチに応答する場合に自動的にデプス書き出しをオーバーライドさせる命令を更に備える、請求項２２に記載の機械可読媒体。
【請求項２４】
制御データ信号を禁止する命令を供給させる命令と、
レンダリング中に前記命令を処理させる命令と
を更に備える、請求項１６に記載の機械可読媒体。
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【書類名】明細書
【発明の名称】ゾーン・レンダリングにおけるデプス書き出し禁止
【技術分野】
【０００１】
本発明は、広義にはグラフィック・システムに関し、より詳細には、デプス・キャッシュからデプス・バッファへのデータ転送を制御する方法および装置に関する。
【背景技術】
【０００２】
コンピュータグラフィック・システムは、２次元のビデオディスプレイ・スクリーンにオブジェクトの図形表現を表示するために一般に使用される。現在のコンピュータグラフィック・システムは高度に詳細な描写を提供し、様々なアプリケーションにおいて使用される。典型的なコンピュータグラフィック・システムにおいて、表示画面上で表わされるオブジェクトはグラフィック・プリミティブへと分類される。プリミティブは、グラフィックディスプレイの基本的な構成要素であり、点、線、ベクトル、および三角形や四角形のような多角形を備えていて良い。典型的には、表示画面上で表わされている１つ以上のオブジェクトの視界を表わすグラフィック・プリミティブを再現または描写するために、ハードウェア／ソフトウェアスキームが実施される。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
再現される三次元のオブジェクトのプリミティブは、プリミティブ・データに関してホストコンピュータによって定義される。例えば、プリミティブが三角形である場合、ホストコンピュータは、各頂点の赤、緑、青（ＲＧＢ）の色の値と同様に、頂点のＸ、ＹおよびＺ座標の点に関してプリミティブを定義して良い。その他の追加のプリミティブ・データが、特定のアプリケーションにおいて使用されても良い。
【０００４】
イメージ・レンダリングは、高級なオブジェクトベースの記述を、ある表示装置上のディスプレイ用のグラフィックイメージへと変換する事である。例えば、イメージ・レンダリングの動作は、三次元のオブジェクトまたはシーンの数学的モデルをビットマップ方式のイメージへと変換する際に生じる。イメージ・レンダリングの別の例として、ＨＴＭＬドキュメントをコンピュータ・モニタ上に表示されるイメージへの変換が挙げられる。典型的には、グラフィック・レンダリング・エンジンと称されるハードウェアデバイスはこれらの図形処理タスクを実行する。通常、グラフィック・レンダリング・エンジンは、グラフィック出力装置にその後出力されるメモリバッファに或るシーンをレンダリングするが、幾つかのレンダリング・エンジンは、出力装置にこれらの２次元の出力を直接描く事が出来る。このグラフィック・レンダリング・エンジンは、プリミティブ・データを書き出し、各プリミティブ、および各画素のＲＧＢ色調の値を表す表示画面画素を計算する。
【０００５】
グラフィック・レンダリング・システム（あるいはサブシステム）は、本願明細書においては、アプリケーション・プログラムとグラフィック出力装置との間の全ての処理レベルについて言及している。グラフィック・エンジンは、ゾーン・レンダリングを含む１つ以上のレンダリング・モードを提供して良い。ゾーン・レンダリングは、レンダー・キャッシュとも称されるゾーンサイズの色調およびデプス・キャッシュを用いる事によって、全体的な３Ｄレンダリングの性能を向上させる事を試みる。最適なレンダー・キャッシュの使用によって、画素の色調およびデプス・メモリ読み書きのボトルネックが低減される。
【０００６】
ゾーン・レンダリングにおいて、スクリーンは複数のゾーンのアレイに細分される。各ゾーンのサブイメージをレンダリングするのに必要な命令を設定するプリミティブおよび状態設定を保持するために使用されるゾーン毎の命令ビンが、第１パスで生成される。プリミティブがゾーンを通る（または、通る可能性がある）と判断される場合は常に、対応するプリミティブ命令が該ゾーンのためのビンに配置される。幾つかのプリミティブは、複数のゾーンを通り得、その場合は、プリミティブ命令は、対応するビン中において複製される。このプロセスは、全シーンがビン中でソートされるまで継続される。イメージの各ゾーンのビンを生成する第１パスに続いて、第２のゾーン毎のレンダリング・パスが実行される。具体的には、最終イメージを生成するために、全てのゾーンのためのビンがレンダリングされる。通常、各シーンは一度に１つのゾーンずつレンダリングされる。
【０００７】
通常、ゾーンのサイズは、レンダー・キャッシュのサイズおよび編成に対応する。レンダー・キャッシュは、レンダリング・プロセッサによって最近使用されたピクセルデータを格納し、この情報が外部記憶装置に格納されている場合よりも高速にレンダリング・プロセッサによって利用可能とするように為される。具体的には、レンダー・キャッシュは、各ゾーン内において、中間デプスの読み書きを取り扱う。通常、このデータは、レンダー・キャッシュからメインメモリのデプス・バッファへと書き出される。例えば、デプス値は、コンテキストスイッチあるいは部分的なレンダリングおよび（または）シーンの再開の結果、レンダー・キャッシュからデプス・バッファへと追い出される。レンダー・キャッシュからデプス・バッファへの追い出しが、通常は次のゾーンのレンダリング中に生じる。しかしながら、レンダー・キャッシュが中間値の読み書きを行うので、通常はレンダー・キャッシュからデプス・バッファへと追い出された値を読む必要は無い。デプス・バッファに値を書き出す事は、不必要にシステムの他の部分に対しても、またメモリバスに対しても、負荷を実質的に増加させ、システムの演算を遅らせてしまう。
【０００８】
従って、デプス・キャッシュから対応するデプス・バッファへの追い出しを許可（イネーブル）および（または）禁止（ディゼーブル）する方法、装置、および、システムが必要とされている。
【発明を実施するための最良の形態】
【０００９】
本発明は、ゾーン・レンダリング・システムの、デプス・キャッシュから対応するメモリに存在するデプス・バッファへのデプス値などの追い出しを制御するためのデプス書き出しを禁止する装置および方法を提供する。デプス書き出しの禁止の構成は、イネーブル／ディゼーブル・ビット１７８に関する制御信号に応じて、内部レンダー・キャッシュ１７２から対応するデプス・バッファ１７４への書き出しを許可／禁止するための追い出し検出ロジック１７６を実施するメモリ・コントローラ１８２を備える。デプス・バッファ書き出しが禁止されている旨がデプス書き出しイネーブル／ディゼーブル・ビットに示されている場合、レンダー・キャッシュ１７２（通常は次のゾーン１６４のレンダリング中に生じる）からの追い出し１８０によって、デプス・バッファ１７４に書き出される代わりに、追い出されたデータを破棄させる。具体的には、デプス・キャッシュが、ゾーンのレンダリングの開始時において定値に初期化（クリアー）されるので、デプス・バッファが読み込まれる必要は無い。デプス・キャッシュは、各ゾーン内において、中間値のデプス読み取り／書き出しを扱う。
【００１０】
シーンがレンダリングされた後、メモリに存在するデプス・バッファは通常は要求されないので、デプス・バッファにデプス値を書き出す必要は通常は存在しない。シーンがレンダリングされた後、或るゾーンに対する最終のデプス値は、デプス・バッファに書き出されるよりはむしろこのように破棄されて良い。最終のデプス値をデプス・バッファへ書き出す事を省略する事によって、全体的に必要とされる帯域幅が低減され、これによって、特に帯域幅の制限されたシステムにおける性能を向上させる。デプス・キャッシュからデプス・バッファへの追い出しが必要な場合、本発明の実施形態は、デプス書き出し禁止構成の自動オーバーライドを更に提供する。
【００１１】
当業者は、本発明が３Ｄレンダリング、プリミティブ等に制限されていないことを認識するであろう。より正確に言えば、実際の実施例は３Ｄ、２−１／２Ｄ、２Ｄプリミティブ等に利用されて良い。本発明は、ゾーンがレンダリングされた後、少なくともいくつかの実施例においてデータが要求されない場合に、キャッシュからバッファへの全ての一時データの書き出しを防ぐために利用する事が出来る。さらに、レンダリング・モードは「ゾーン・レンダリング」を含んで良いが、これに限定されるものでは無い。通常、本発明の実施形態は、プリミティブがスクリーンの至る所でレンダリングされるような非ゾーン・レンダリングの実施例において使用するために採用する事も出来る。このような実施例において、キャッシュのサイズはイメージのサイズに応じてサイジングされるであろう。
【００１２】
この詳細な説明において、多数の特定の詳細が、本発明についての完全な理解を提供するために記載される。しかしながら、本発明がこれらの特定の詳細を用いる事無く実施され得る事が、当業者にとって理解されるであろう。また、公知の方法、手順、コンポーネントおよび回路は、本発明を不明瞭にしないような方法で詳細に記載される。
【００１３】
後述の詳細な説明の一部分は、コンピュータ内のデータ・ビット即ち二進信号に対する演算のアルゴリズムおよび記号による表示として記述される。これらのアルゴリズムの記述および描写は、或る当業者が他の当業者にこれらの作業の手順を伝達するために使用される手段である。１つのアルゴリズムが本願明細書に記載され、通常は、本アルゴリズムは所望の結果に結びつくステップの首尾一貫したシーケンスであると見做される。ステップは、物理量の物理的な操作を含んでいる。これらの量は、格納、転送、組合せ、比較、そして操作が可能である電気的または磁気的信号の形式を通常は採るが、これに制限されない。これらの信号をビット、値、要素、シンボル、文字、項、数または同種のものとして参照する事は、主に一般的慣習の理由のために簡便であり得ると知られている。しかしながら、これらおよび同様の語句は、適切な物理量に対応していて、これらの数量に適用される便利な標識に過ぎないということを理解するべきである。後述の議論から明らかなものとして以下特定に記載されない限り、本願明細書全体を通して、「処理」あるいは「計算」あるいは「判断」または同種の語句を用いた議論は、コンピューティング・システムのレジスタおよび（または）メモリ内の物理（電子）量で表されたデータを、他のコンピューティング・システムのメモリ、レジスタ、または他の情報格納・伝送または表示装置内の物理量として同様に示されるデータへと変換するコンピュータまたはコンピューティング・システムあるいは同様の電子計算デバイスの動作および処理の事を指す。
【００１４】
本発明の実施形態は、ハードウェアかソフトウェア、あるいは双方の組合せによって実施されて良い。しかしながら、本発明の実施形態は、少なくとも１つのプロセッサ、（揮発性および不揮発性メモリおよび（または）記憶素子を備える）データ記憶システム、少なくとも１つの入力装置および少なくとも１つの出力装置を備えるプログラマブル・システム上で実行されるコンピュータ・プログラムとして実施されて良い。本願明細書に記載された記述された機能を行ない、かつ出力情報を生成するために、プログラムコードが入力データに供給されて良い。出力情報が、公知の方法で１つ以上の出力装置に供給されて良い。このアプリケーションの目的のために、処理システムは、例えばデジタル・シグナル・プロセッサ（ＤＳＰ）、マイクロ・コントローラ、特定用途向けＩＣ（ＡＳＩＣ）あるいはマイクロプロセッサのようなプロセッサを備える任意のシステムを含んでいる。
【００１５】
プログラムは、処理システムと通信するために、高級プロシージャー型またはオブジェクト指向プログラミング言語で実施されて良い。もし望まれれば、プログラムは、アセンブリまたは機械語で実施されても良い。実際、本発明は任意の特定のプログラム言語の範囲に制限されていない。いずれの場合においても、言語はコンパイル言語であっても良いし、インタープリター言語であっても良い。
【００１６】
プログラムは、記憶媒体あるいはデバイスがここに記述された手順を行うために処理システムによって読み込まれる場合に、処理システムを構成し操作するために汎用または専用プログラマブル処理システムによって判読可能な記憶媒体あるいはデバイス（例えばハードディスク・ドライブ、フロッピーディスクドライブ、読み取り専用メモリ（ＲＯＭ）、ＣＤ−ＲＯＭデバイス、フラッシュ・メモリ・デバイス、ディジタル他用途ディスク（ＤＶＤ）あるいは他の記憶装置）上に格納されて良い。本発明の実施形態は、処理システムとともに使用されるように構成された機械可読記憶媒体として実施されると見做されて良く、記憶媒体は、本願明細書に記載される機能を実行する特定の方法で処理システムを作動させるように構成される。
【００１７】
このような種類の処理システムの一例が、図１に示される。システム１００の一例は、例えば本願明細書に記載された実施形態のような本発明における方法の処理を実行するために使用されてもよい。サンプル・システム１００は、インテル株式会社から入手可能なマイクロプロセッサに基づいた処理システムを示すが、他のシステム（他のマイクロプロセッサ、エンジニアリングワークステーション、セットトップ・ボックスおよびその他同種のものを備えるパーソナルコンピュータ（ＰＣ）を含む）が使用されても良い。一実施形態において、システム１００は、例えばマイクロソフト株式会社から入手可能なウィンドウズ（登録商標）オペレーティングシステムの或るバージョンを実行していて良いが、他のＯＳおよびＧＵＩが使用されても良い。
【００１８】
図１は、本発明の一実施形態におけるシステム１００のブロック線図である。コンピュータ・システム１００は、中央処理装置１０２と、グラフィック装置１０６を含むグラフィックおよびメモリ・コントローラ１０４と、メモリ１０８と、表示装置１１４とを備える。プロセッサ１０２はデータ信号を処理し、複雑命令セットコンピュータ（ＣＩＳＣ）マイクロプロセッサ、限定命令セット計算機（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、命令セットの組合せを実施するプロセスあるいはデジタル・シグナル・プロセッサのような他のプロセッサ・デバイスであって良い。プロセッサ１０２は、システム１００においてプロセッサ１０２と他のコンポーネントとの間のデータ信号を伝送する共通バス１１２に接続されて良い。図１は例示の目的のために描かれているに過ぎない。本発明は、独立したグラフィック装置を備える構成において使用されても良い。
【００１９】
プロセッサ１０２は、本願明細書に記載されるようなデータを操作するべくメモリ１０８あるいはグラフィックおよびメモリ・コントローラの１０４と通信するために、共通バス１１２上に信号を出力する。プロセッサ１０２は、メモリ１０８から得るソフトウェア命令に応じてこのような信号を出力する。メモリ１０８は、動的ランダムアクセス記憶装置（ＤＲＡＭ）デバイス、静的ランダムアクセス記憶装置（ＳＲＡＭ）デバイスあるいは他のメモリ素子であって良い。メモリ１０８は、プロセッサ１０２、グラフィック装置１０６あるいは他の或るデバイスによって実行され得るデータ信号によって表わされる命令および（または）データを格納して良い。命令および（または）データは、本発明の任意のおよび（または）全ての技術を実行するプログラムを備えて良い。メモリ１０８は、ソフトウェアおよび（または）データを更に含んで良い。幾つかの実施形態において、グラフィック装置１０６は、イメージをレンダリングするために必要になったメモリ集約的なタスクの多くをプロセッサ１０２からオフロードして良い。グラフィック装置１０６は信号を処理し、例えば複雑命令セットコンピュータ（ＣＩＳＣ）マイクロプロセッサ、限定命令セット計算機（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、命令セットの組合せを実施するプロセスあるいはデジタル・シグナル・プロセッサのような他のプロセッサ・デバイスであって良い。グラフィック装置１０６は、レンダー・キャッシュ１１０および表示装置１１４を含むシステム１００におけるグラフィック装置１０６と他のコンポーネントとの間のデータ信号を伝送する共通バス１１２に接続されて良い。以下詳細に議論されるように、レンダー・キャッシュ１１０は、ゾーン・レンダリングのために中間値を読み書きする。グラフィック装置１０６は、ディスプレイ１１４の特定の画素に特定の属性（例えば色調）の書き出し等を行ない、表示装置１１４上に複雑なプリミティブを描くレンダリング・ハードウェアを備える。グラフィックコントローラ１０４によってレンダリングされて処理されたイメージを表示するために、グラフィックおよびメモリ・コントローラ１０４は表示装置１１４と通信する。表示装置１１４はコンピュータ・モニタ、テレビジョンセット、平面パネルディスプレーあるいは他の適切な表示装置を含んで良い。
【００２０】
メモリ１０８は、表示のためにグラフィック・プリミティブのイメージを構築するために、１つ以上のレンダリング・プログラムを備え得るホスト・オペレーティング・システムを格納する。システム１００は、少なくともホスト・レンダリング・プログラムによってハンドリングされるグラフィック・プリミティブの或る一部分をレンダリングする性能を向上するために、カスタマイズされたハードウェア論理機構あるいはコプロセッサを使用するグラフィック・アクセラレーターのようなグラフィック装置１０６を含んでいる。ホスト・オペレーティング・システム・プログラムおよびそのホスト・グラフィック適用業務プログラム・インターフェース（ＡＰＩ）は、ドライバ・プログラムによってグラフィック装置１０６を制御する。
【００２１】
図２および図３を参照して、ゾーン・レンダリング・システム１２０上で実施される様々なグラフィック・オブジェクトの実施形態１６０（例えばジオメトリープリミティブ（つまり三角形や線分）１６２）が示される。ゾーン・レンダリングにおいて、スクリーンは、通常は複数の長方形状のゾーン・アレイ１６４へ細分されるが、他の幾何学的な形状が代わりに使用されても良い。各ゾーン１６４は、１つのビンに対応付けられる。各ビン１２８は、不連続物理メモリページ内に格納された一連のコマンド・バッファ１３４を含んでいる。ビン１２８は、このように一続きの独立した物理ページとしてむしろ実施される。
【００２２】
ゾーン１６４へプリミティブ１６２（またそれらの属性）を割り当てる過程は、ビニング（ｂｉｎｎｉｎｇ）と称される。「ビン」１２８は、各ゾーンに対して使用される理論バッファの事であり、通常は、ビン１２８が一連の命令バッチ・バッファ１３４として実現される。ビニングは、どのプリミティブ１６２がどの特定の区域１６４に存在するかを判断するための必要な計算を実行し、これは専用ハードウェアおよび（または）ソフトウェアの実施例によって行う事が出来る。
【００２３】
プリミティブ１６２がゾーン１６４を通る場合、対応するプリミティブ命令は、通ったゾーン１６４に対応するビン１２８に配置される。従って、ゾーン毎の命令ビン１２８は、各サブイメージをレンダリングするために必要とされるプリミティブ命令および状態を設定する命令を格納するために使用され、各プリミティブ１６２のスクリーンスペース範囲をゾーン１６４のアレイと比較することによって生成される。従って、プリミティブ１６２が受信される際、本発明は、各プリミティブがどのゾーン１６４を通るかを判断し、プリミティブ命令をこれらのゾーン１６４のそれぞれに対応するビン１２８へと複製する。
【００２４】
１つの典型的な実施例において、ドライバ１２２は、グラフィック・ビニング・エンジン１２６によって解析される１セットのプリミティブ命令を書き上げる。プリミティブ１６２が通った各ゾーン１６４については、グラフィック・ビニング・エンジンが、通過ゾーン１６４に対応するバッファ１３４に対応するプリミティブ命令を書き出す。幾つかのプリミティブ１６２は、２つ以上のゾーン１６４を通り得、プリミティブ命令は複数の通過ゾーン１６４に対応する複数のビン１２８において複製される。例えば、図３の中で描かれた稲妻は９つのゾーン１６４を通る。全シーンがビン１２８中においてソートされるまで本プロセスは継続される。
【００２５】
図２を参照して、典型的な実施例において、シーン入力リスト１２４と称されるグラフィック・プリミティブおよび状態を設定する命令ストリームは、グラフィック・ビニング・エンジン１２６に対応するグラフィック・ビニング・エンジン・リング・バッファ１２５に先ず入力される。シーン入力リスト１２４は、適用業務プログラム・インターフェース（ＡＰＩ）によって受信されるような単一の、一時的に配列されたシーン記述であって良い。グラフィック・ビニング・エンジン１２６は、ハードウエア・ビニング・エンジン（ＨＷＢ）１２６として通常は実施される。当業者は、ソフトウェアのビナー、またはソフトウェアおよびハードウェアのビナーが同様に使用され得る事を認識するであろう。グラフィック・ビニング・エンジン１２６はシーン入力リスト１２４を解析し、各プリミティブ１６２のどのゾーン１６４を通るかを判断する。
【００２６】
前述されたように、ゾーン１６４はビン１２８と対応付けられている。グラフィック・ビニング・エンジン１２６は、各プリミティブ１６２のスクリーンスペース範囲をゾーン１６４のアレイと比較し、対応するビン１２８へ対応するプリミティブ・コマンドを複製する。ビン１２８は、不連続物理メモリページ内に通常格納された、一連のコマンド・バッファ１３４として構成される。ビン・リストは、各ビン１３２を含むバッファ１３４のリストである。ページは、ビン・メモリ・プール（ＢＭＰ）１４０に最初は分配される。ビン・ポインタ・リスト１３０はこのページのページ数によって初期化され、各ビン・リスト１３２に書き出しポインタを格納する。
【００２７】
グラフィック・ビニング・エンジン１２６は、シーン入力リスト１２４に含まれる対応する状態を設定する命令を解析する事によって、現在のグラフィック状態を維持する。任意のビン１２８にプリミティブ・コマンドを配置するのに先立って、グラフィック・ビニング・エンジン１２６は、通常は任意の要求された状態を設定する命令によってビン１２８のプリミティブ・コマンドを優先する。
【００２８】
シーン入力リスト１２４が完全に解析された後、対応するビン（つまりビン０、ビン１、ビンｎ−１）は、シーンをレンダリングするためにグラフィック・レンダリング・エンジン１３６によって使用される準備が出来ている。以下詳述されるように、グラフィック・ビニング・エンジン１２６に未決シーン・カウンタ１４８中のレジスタを１個分インクリメントさせ、かつビニングされたシーンのレンダリングを始めさせるために、これらの命令はシーン入力リスト１２４の終端部に含まれている。例えば、グラフィック・ビニング・エンジン１２６は、パス１５６を経由して、グラフィック・レンダリング・エンジン１３６に対応するグラフィック・レンダリング・エンジン・リング・バッファ１５７にレンダリング命令を送信する。
【００２９】
レンダリング：一旦プリミティブ１６２が全てソートされ、コマンド構造が完成した後、シーン中の１つのゾーン１６４を一度にレンダリングするために、第２パスが行なわれる。プリミティブ１６２が通る各ゾーン１６４のためにビンを構築する第１パスに続いて、第２のゾーン毎のレンダリング・パスが実行される。具体的には、全てのゾーン１６４用のビン１２８は、最終イメージを生成するためにレンダリングされ、各シーンは一度に１つのゾーン１６４にレンダリングされる。ゾーン１６４がレンダリングされる順番は、通常は重要では無い。次のゾーン１６４がレンダリングされるのに先立って、特定のゾーン１６４内の画素に触れるプリミティブ１６２に対応するビン１２８が全てレンダリングされる。単一のプリミティブ１６２は多くのゾーン１６４を通り得、これによって、複数の複製が必要とされる。その結果、複数のゾーン１６４を通るプリミティブ１６２は、複数回（即ち、通るゾーン１６４の個数だけ）レンダリングされる。
【００３０】
図３および図４を参照して、プリミティブ１６２が、レンダー・キャッシュ１７２と合致したゾーン１６４を通ることによってソートされた結果として、レンダリングの性能が向上する。この情報は、デプス・キャッシュ１７２内の、レンダリング・エンジン１３６による後の使用に利用可能である記憶アドレスに格納される。グラフィック装置１０６は、一度にスクリーン上の小さい部分（つまりゾーン１６４）のみで動作するので、レンダー・キャッシュ１７２の中に全ゾーン１６４のためのフレームバッファーコンテンツを保持する事が出来る。レンダー・キャッシュ１７２は、各ゾーン１６４内において、中間値のデプスの読み書きを扱う。ゾーン１６４の寸法は、通常はレンダー・キャッシュ１７２のサイズおよび編成に合わせられた定値である。この機構によってレンダー・キャッシュ１７２は最適化された利益を提供する。即ち、キャッシュに格納されたデータの再利用が、ゾーン１６４の空間干渉性を利用する事によって最大化される。ゾーン・レンダリングにおいて、最終イメージの１ゾーン１６４を同時に生成するための必要最小限の色調メモリ書き出しのみが実行され、色調メモリ読み込みおよびデプス・メモリ読み込み／書き出しが最小化されるか、もしくは同時に行われる事が避けられる。従って、レンダー・キャッシュ１７２によって、メモリ・トラフィックが著しく低減され、次のプリミティブ１６２に進むのに先立って各プリミティブ１６２を描く従来のレンダリングと比べて、性能が向上される。従って、シーンがレンダリングされた後にメモリ中に存在するデプス・バッファ１７４が必要で無い場合は常に、レンダー・キャッシュ１７２に格納されたゾーン１６４に対する最終のデプス値は、デプス・バッファ１７４に書き出されるのではなく、むしろ破棄されても良い。
【００３１】
図４は、デプス書き出し禁止構成の実施形態１７０のブロック線図を示す。デプス書き出し禁止構成は、イネーブル／ディゼーブル・ビット１７８の形をしている制御信号に応じて内部レンダー・キャッシュ１７２から対応するデプス・バッファ１７４への書き出しを許可／禁止するために追い出し検出ロジック１７６を実施するメモリ・コントローラ１８２を備える。デプス・バッファ書き出しが禁止されている旨がデプス書き出しイネーブル／ディゼーブル・ビットに示されている場合、レンダー・キャッシュ１７２（通常は、次のゾーン１６４のレンダリング中に生じる）からの追い出し１８０は、デプス・バッファ１７４に書き出される代わりに、追い出されたデータを破棄させる。最終のデプス値書き出しが行われない事によって、全体的に必要とされる帯域幅を低減し、従って、特に帯域幅が制限されたシステム構成における性能が向上する。
【００３２】
デプス・バッファ書き出しが許可されている旨がデプス書き出しイネーブル／ディゼーブル・ビットに示されている場合、メモリ・コントローラ１８２はライトバック・サイクルを実行する。メモリ・コントローラ１８２がバスを開放する場合、レンダリング・プロセッサはメモリバスにキャッシュ・データを書き出す。このデータは、デプス・バッファ１７４に達する。
【００３３】
図５は、デプス・キャッシュ１７２、デプス・バッファメモリ領域１７４、およびグラフィック・ビニング・エンジン１２６、グラフィック・レンダリング・エンジン１３６およびゾーン制御レジスタ１８２を含むグラフィック装置１０６の詳細ブロック線図である。デプス・バッファメモリ領域１７４は、グラフィック・ビニング・エンジン１２６およびグラフィック・レンダリング・エンジン１３６による使用に対する画素ごとのデプスおよびステンシル値を格納するために通常使用される２次元の表面である。デプス・バッファメモリ領域１７４に対応するデプス・キャッシュ１７２は、ゾーン・レンダリング・モードにおける色調とデプス値を保持する。「デプス書き出しディゼーブル」の特徴が有効である場合、デプス・キャッシュからデプス・バッファへの追い出しが妨げられる。「デプス書き出しイネーブル」の特徴は、デプス・バッファの形式にかかわらず、デプス・バッファに対するデプス値の書き出しを許可／禁止するためのビットによって実施されて良い。
【００３４】
図４および５を参照して、ゾーン制御レジスタ１８４は、デプスの格納のためにデプス書き出しディゼーブル・フィールド１８６を含む複数のフィールドを含んでおり、通常は１ビット以上で実施されて、制御信号１７８を書き出す。メモリ・コントローラ１８２は、デプス・キャッシュ１７２からデプス・バッファ１７４への追い出しが行なわれるべきかどうかを判断するために、デプス書き出し制御ビット１７８を使用する。一実施形態において、ゾーン制御レジスタ１８４は、デプス書き出しディゼーブル・ビット１７８のようなデプス書き出し制御ビットを実行する。
【００３５】
オペレーションにおいて、グラフィック・アプリケーション（図示されない）は、ゾーン制御命令１１６を含む命令１８８を命令ストリームへ供給する。命令１８８はメモリ領域１６６に格納され、それらを復号し実行するグラフィック・ビニング・エンジン１２６およびグラフィック・レンダリング・エンジン１３６にアクセス可能である。ゾーン・レンダリング・モードにおいて、ゾーン制御レジスタ１８４は、命令ストリームからのゾーン制御命令１１６の処理の間にアクティブなレジスタであるように製作される。
【００３６】
典型的な実施例において、デプス書き出し禁止制御命令１１８は、ゾーン制御レジスタ１８４にロードされるデプス書き出し管理値１７８（ローカル制御アドレス＋デプス書き出しディゼーブル・ビット）を供給する。デプス・キャッシュ１７２からデプス・バッファ１７４への通常の追い出し１８０が防がれるように、デプス書き出しディゼーブル・フィールド１８６によって、グラフィック・アプリケーション・ソフトあるいは操作ソフトウェアがデプス書き出し禁止状態を許可状態にする事を要求する事が可能となる。具体的には、ビニング段階において、プリミティブ１６２はデプス・キャッシュ１７２と合致するゾーン１６４へ分解される。グラフィック装置１０６は、一度にスクリーン上の小さい部分（つまりゾーン１６４）のみで動作するので、レンダー・キャッシュ１７２の中に全ゾーン１６４のためのフレームバッファーコンテンツを保持する事が出来る。最終イメージの１ゾーン１６４を同時に生成するための必要最小限の色調メモリ書き出しのみが実行され、色調メモリ読み込みおよびデプス・バッファ１７４に対するデプス・メモリ読み込み／書き出しが最小化されるか、もしくは同時に行われる事が避けられる。（定値である）クリアーされたデプス値が生成され、デプス・バッファ１７４に書き出され得る。同様に、（定値である）クリアーされたステンシル値が、デプス・バッファ１７４に書き出される。デプスあるいは他のメモリ領域の高速クリアーを行うために、特別のプリミティブが使用されても良い。ゾーン制御レジスタ１８４のデプス書き出しディゼーブル・ビット１７８が設定される場合、デプス追い出し検出ロジック１７６によって、デプス・バッファ１７４へのデプス値の書き出し１８０が禁止される。
【００３７】
デプス・キャッシュ１７２からデプス・バッファ１７４への追い出しが必要である場合、本発明の実施形態は、デプス書き出し禁止構成１７０の自動オーバーライドを更に提供する。デプス書き出し許可制御命令１６８は、ゾーン制御レジスタ１８２にロードされるデプス書き出し管理値（ローカル制御アドレスおよびデプス書き出しイネーブル・ビット）１７８を提供する。デプス書き出しイネーブル・フィールド２０４によって、グラフィック・アプリケーション・ソフトあるいは操作ソフトウェアがデプス書き出しを許可状態にして、追い出し１８０がデプス・キャッシュ１７２からデプス・バッファ１７４へと書き出される事を可能にする。
【００３８】
デプス・バッファ１７４に書き出されたデプス・キャッシュ１７２からの追い出しは様々な状況で必要であり、ここに議論された構成のうちの如何なるものにも制限されていない。例えば、部分的にビニングされたシーンをレンダリングする場合や、キャッシュがフラッシュされた場合や、キャッシュ中の新しいデータのライン用のスペースを提供するために有効なキャッシュ・ラインの割振りが解除される場合や、またはデータの唯一の有効コピーがキャッシュ中に存在し、グラフィック・エンジン１０６がそのデータの使用を必要とする、または部分的に重ね書きする事を必要とする場合に、デプス・キャッシュ１７２は、複数のコンテキスト・アプリケーションにおいてデプス・バッファ１７４へデータを書き出す事を必要とし得る。これらの場合のそれぞれにおいて、メモリ中のデータが古くなっていない事を保証するべくメモリへの書き出しが要求されるように、唯一の有効なデータのコピーがデプス・キャッシュ１７２に存在し得る。
【００３９】
例えば、デプス書き出し制御回路は、グラフィック・レンダリング・エンジン１３６を使用して、複数の表示装置上に複数のイメージをレンダリングするシステムおよび方法と共に使用する事が出来ることができる。グラフィック・レンダリング・エンジン１３６は、第１の独立したイメージに関する命令、および第２の独立したイメージに関する命令の処理を交換しても良い。具体的には、グラフィック・レンダリング・エンジン１３６は、異なるリング・バッファメモリ領域からの処理命令と、同じ命令ストリーム内の２つの異なるグラフィック・アプリケーションからの処理命令との間で切り替わっても良い。グラフィック・レンダリング・エンジン１３６は、第２の独立したイメージに関する命令を処理し始める前に第１の独立したイメージに関する命令の全てを完全に処理し終わるまで待機する必要は無い。コンテキスト・スイッチングを簡便化するために、レンダリングの完成に先立って、他のグラフィック・コンテキストあるいは目的のために、デプス・キャッシュ１７２が使用される必要がある。このような場合、適切なグラフィック・コンテキストのデプス・バッファに、デプス書き出す必要がある。必要な場合、以前に書き出されたデプス値は、その後にデプス・キャッシュ１７２へと読み込む事が出来る。そのような追い出しを許可する事によって、キャッシュに入れられたデプス値１８０が、適切なグラフィック・コンテキストのデプス・バッファ１７４に書き出されることが可能になる。
【００４０】
（メモリ・リソースを解放し、および（または）部分的なシーン結果への中間アクセスを許可するために）部分的にビニングされたシーンをレンダリングし、その後レジュームされる必要がある場合に、デプス・キャッシュ１７２からデプス・バッファ１７４への追い出し１８０が望まれ得る。シーンが完全にビニングされる前に、１シーンのゾーン１６４が時々レンダリングされる。この状況は、全シーンがビニングされることが許容され得ないリソース（命令、頂点あるいは組織メモリ）限界から発生し得る。
【００４１】
具体的に、追加のフリーメモリを用意する事が出来ない場合、グラフィック・レンダリング・エンジン１３６は、ビン・メモリを解放するために部分的にビニングされたシーンをレンダリングし、次に、シーンの残りのビニングを再開する。典型的な実施形態において、同期エンド・シーン・ビット２０６を設定するゾーン制御レジスタ１８４の直接書き出しが行なわれる。これによって、グラフィック・ビニング・エンジン１２６が、（ａ）バッチ・バッファを終了させる命令によって全ての有効なビン１２８を閉じさせ、（ｂ）内部にキャッシュされた全てのデータ（例えばキャッシュされたビン・ポインタ１３２）をフラッシュさせ、（ｃ）ビニングの再開に際して、全ての必要な状態が第１プリミティブ１６２が受信する前にビン１２８に挿入されるようにするべく、ビン１２８に関する状態トラッキング情報を修正させる。ビン・シーン・レジスタ２０８の直接書き出しによって、未決シーン・カウンタ１４８がインクリメントされる。連続的なシーンのレンダリングはデプス値がメモリに書き出される事を要求するので、部分的なシーンをレンダリングする前にデプス書き出しイネーブル・ビット２０４がクリアーされる。レジューム・ビット２１０を設定するためのゾーン制御レジスタ１８４の直接書き出しによって、シーンのビニングがレジュームされる。
【００４１】
具体的に、追加のフリーメモリを用意する事が出来ない場合、グラフィック・レンダリング・エンジン１３６は、ビン・メモリを解放するために部分的にビニングされたシーンをレンダリングし、次に、シーンの残りのビニングを再開する。典型的な実施形態において、同期エンド・シーン・ビット２０６を設定するゾーン制御レジスタ１８４の直接書き出しが行なわれる。これによって、グラフィック・ビニング・エンジン１２６が、（ａ）バッチ・バッファを終了させる命令によって全ての有効なビン１２８を閉じさせ、（ｂ）内部にキャッシュされた全てのデータ（例えばキャッシュされたビン・ポインタ１３２）をフラッシュさせ、（ｃ）ビニングの再開に際して、全ての必要な状態が第１プリミティブ１６２が受信する前にビン１２８に挿入されるようにするべく、ビン１２８に関する状態トラッキング情報を修正させる。ビン・シーン・レジスタ２０８の直接書き出しによって、未決シーン・カウンタ１４８がインクリメントされる。連続的なシーンのレンダリングはデプス値がメモリに書き出される事を要求するので、部分的なシーンをレンダリングする前にデプス書き出しイネーブル・ビット２０４がクリアーされる。レジューム・ビット２１０を設定するためのゾーン制御レジスタ１８４の直接書き出しによって、シーンのビニングがレジュームされる。
【００４２】
本発明は、ゾーン１６４のレンダリングにおいて、演算の競合（例えばデュアル・ディスプレイ）による待ち時間を増加させる事を更に防ぎ、シーン・リソース（ビン・リスト・メモリ、組織メモリ等の）上のハード限界を有効に取り除く。
【００４３】
他の典型的な実施例は、他のリングによるゾーン１６４のレンダリングの割込みである。ここで、他のリング（実際、他のリングへの論理的なコンテキストスイッチ）において行なわれたレンダリングは、デプス・キャッシュ１７２からの追い出しが強制されるだろう。ゾーン１６４のレンダリングをレジュームするために、中間の色調およびデプス値がデプス・バッファ１７４のようなメモリに存在するバッファに書き出される必要があり、デプス・キャッシュ１７２が取得出来なかった箇所が、ゾーンの色調とデプス値を引き続き要求される際はデプス・キャッシュ１７２に戻す。
【００４４】
更に他の典型的な実施例において、論理的なコンテキストスイッチまたはフラッシュ操作によるデプス・キャッシュ１７２からの追い出し１８０は、デプス書き出しディゼーブル・ビット１７８によってゲート制御されない。ゾーン・レンダリングがレジュームされる場合、デプス書き出しディゼーブル・ビット１７８の設定が回復され、その後、デプス追い出し（例えば書き出し）がゲート制御される。
【００４５】
更に、別の実施形態は、目標の色調および  （または）デプス・バッファ１７４（それはまだレンダリングされていない）へのアクセスを試みる。このアクセスもまた、ロック操作によって明示的に、あるいはレンダリングされる予定の色調またはデプス・バッファ１７４を読み込むコピー操作によって暗示的に行なわれる。この場合、デプス書き出しディゼーブルの特徴は、通常はシーン・レンダリングの最終局面中のみ使用される。
【００４６】
図６は、デプス・キャッシュ１７２からデプス・バッファ１７４へのデプス値の追い出しを禁止するための実施形態１９０のフローチャートである。ゾーン・レンダリングにおいて、通常色調お呼びデプス値を保持する内部レンダー・キャッシュ１７２は、定値へと初期化（クリアー）される（ステップ１９２）。要求に応じて、（定値である）クリアーされたデプス値が生成され、デプス・バッファ１７４に書き出される。同様に、要求に応じて、（定値である）クリアーされたステンシル値がデプス・バッファ１７４に書き出される。デプスあるいは他のバッファの高速クリアーを行うために、特別のプリミティブが使用されても良い。
【００４７】
特定のゾーン制御レジスタが、対応するリング・バッファメモリ領域に格納されている命令ストリームからのゾーン制御命令の処理中にアクティブのレジスタであるように為される（ステップ１９４）。典型的な実施例において、グラフィック・アプリケーションは命令ストリームへ命令を供給する。グラフィック・レンダリング・エンジンは、命令中にどのような情報（例えば、ゾーン制御、または適用する状態変数、またはレンダリングされるプリミティブゾーン）が存在するかを見出すために、命令ストリームからの特定の命令を復号する。これらの命令は、通常特定の表示装置に対応するリング・バッファメモリ領域に格納されて良い。その後、グラフィック・レンダリング・エンジンが命令を実行する。
【００４８】
典型的な実施例において、ゾーン制御命令は、ゾーン制御レジスタにロードされるために、デプス書き出しディゼーブル値（ローカル制御アドレス＋デプス書き出しディゼーブル・ビット）を提供する（ステップ１９６）。
【００４９】
レンダー・キャッシュ１７２からデプス・バッファ１７４へのデプスおよび（または）他の（ステンシル値のような）値１８０が追い出されるべきかどうかが決定される（ステップ１９８）。例えば、実施形態１７０は、ゾーン・レンダリングのようなこれらのレンダリング構成を検知し、レンダリングまたは他のキャッシュがデータを保持するために用いられ、そしてデプス・バッファ１７４に対する通常の追い出しは必要で無い。本発明は、デプス書き出しディゼーブル値（ローカル制御アドレス＋デプス書き出しディゼーブル・ビット）がゾーン制御レジスタにロードされたかどうかを検知する事が出来る。
【００５０】
追い出しが望まれない場合、つまり、ゾーン制御レジスタのデプス書き出しディゼーブル・ビット１７８が設定される場合（ステップ１９８）、デプス追い出し検出ロジック１７６によって、レンダリング・キャッシュ１７２からデプス・バッファ１７４への追い出し１８０が禁止される（ステップ２００）。典型的な実施例において、レンダー・キャッシュ１７２からデプス・バッファ１７４への追い出し１８０が防がれるように、デプス書き出しディゼーブル・フィールドによって、グラフィック・アプリケーション・ソフトまたは操作ソフトウェアがデプス書き出し禁止状態を許可状態にするように要求する事が可能となる。
【００５１】
以上、特許法の必要条件に従って本発明を記載したが、当業者は、これらの特定の要求または条件を満たすために本発明に対して特定の改変および変更を実行する方法を理解する。この種の改変および変更は、添付の特許請求の範囲にて説明される本発明の範囲および精神から逸脱する事無く為され得るものである。
【図面の簡単な説明】
【００５２】
【図１】ゾーン・レンダリングにおけるデプス書き出しをディゼーブルにするグラフィック装置の実施形態を備えるコンピュータ・システムの実施形態のブロック線図である。
【図２】グラフィック・ビニング・エンジンおよびグラフィック・レンダリング・エンジンを備えるグラフィック装置の実施形態のブロック線図である。
【図３】ゾーンおよび幾何学的なプリミティブを含むゾーン・レンダラー・スクリーンの眺めの実施形態の例を示す。
【図４】デプス書き出しディゼーブル・システムの実施形態のブロック線図を示す。
【図５】中央処理装置、メモリ、およびデプス書き出しディゼーブル装置の実施形態を有するグラフィック装置を備えるコンピュータ・システムの実施形態の詳細ブロック線図である。
【図６】デプス書き出しディゼーブル装置を有効または無効にする過程の実施形態のフローチャートである。
【誤訳訂正３】
【訂正対象書類名】図面
【訂正対象項目名】図１
【訂正方法】変更
【訂正の内容】
【図１】
2005514712.tif 000001
【誤訳訂正４】
【訂正対象書類名】図面
【訂正対象項目名】図４
【訂正方法】変更
【訂正の内容】
【図４】
2005514712.tif 000002
【誤訳訂正５】
【訂正対象書類名】図面
【訂正対象項目名】図５
【訂正方法】変更
【訂正の内容】
【図５】
2005514712.tif 000003
【誤訳訂正６】
【訂正対象書類名】図面
【訂正対象項目名】図６
【訂正方法】変更
【訂正の内容】
【図６】
2005514712.tif 000004