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