JP4071196B2 - ゾーン・レンダリング用の自動メモリ管理 - Google Patents

ゾーン・レンダリング用の自動メモリ管理 Download PDF

Info

Publication number
JP4071196B2
JP4071196B2 JP2003558793A JP2003558793A JP4071196B2 JP 4071196 B2 JP4071196 B2 JP 4071196B2 JP 2003558793 A JP2003558793 A JP 2003558793A JP 2003558793 A JP2003558793 A JP 2003558793A JP 4071196 B2 JP4071196 B2 JP 4071196B2
Authority
JP
Japan
Prior art keywords
memory
scene
binning
rendering
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003558793A
Other languages
English (en)
Other versions
JP2005525617A5 (ja
JP2005525617A (ja
Inventor
アディトヤ スリーニバス
ピーター ドイル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2005525617A publication Critical patent/JP2005525617A/ja
Publication of JP2005525617A5 publication Critical patent/JP2005525617A5/ja
Application granted granted Critical
Publication of JP4071196B2 publication Critical patent/JP4071196B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory

Description

本発明は、広義にはグラフィック・システムに関し、より詳細には、グラフィック・レンダリング・システムに関する。
コンピュータグラフィック・システムは、2次元のビデオ表示装置・スクリーンにオブジェクトの図形表現を表示するために一般に使用される。現在のコンピュータグラフィック・システムは高度に詳細な描写を提供し、様々なアプリケーションにおいて使用される。典型的なコンピュータグラフィック・システムにおいて、表示画面上で表わされるオブジェクトはグラフィック・プリミティブへと分類される。プリミティブは、グラフィック表示装置の基本的な構成要素であり、点、線、ベクトル、および三角形や四角形のような多角形を備えていて良い。典型的には、表示画面上で表わされている1つ以上のオブジェクトの視界を表わすグラフィック・プリミティブをレンダリング即ち描写するために、ハードウェア/ソフトウェアスキームが実施される。なお、本出願の国際調査、又は対応米国出願の米国での審査において、下記の文献が発見されている。
米国特許第6046752号明細書 米国特許第6344852号明細書 米国特許第6380935号明細書 米国特許第6396473号明細書 国際公開第01/37220号パンフレット
レンダリングされる三次元のオブジェクトのプリミティブは、プリミティブ・データに関してホストコンピュータによって定義される。例えば、プリミティブが三角形である場合、ホストコンピュータは、各頂点の赤、緑、青(RGB)の色の値と同様に、頂点のX、YおよびZ座標の点に関してプリミティブを定義して良い。その他の追加のプリミティブ・データが、特定のアプリケーションにおいて使用されても良い。
イメージ・レンダリングは、高級なオブジェクトベースの記述を、ある表示装置上の表示装置用のグラフィックイメージへと変換する事である。例えば、イメージ・レンダリングの動作は、三次元のオブジェクトまたはシーンの数学的モデルをビットマップ方式のイメージへと変換する際に生じる。イメージ・レンダリングの別の例として、HTMLドキュメントをコンピュータ・モニタ上に表示されるイメージへの変換が挙げられる。典型的には、グラフィック・レンダリング・エンジンと称されるハードウェアデバイスはこれらの図形処理タスクを実行する。通常、グラフィック・レンダリング・エンジンは、グラフィック出力装置にその後出力されるバッファに或るシーンをレンダリングするが、幾つかのレンダリング・エンジンは、出力装置にこれらの2次元の出力を直接描く事が出来る。このグラフィック・レンダリング・エンジンは、プリミティブ・データを書き込み、各プリミティブ、および各画素のRGB色調の値を表す表示画面画素を計算する。
グラフィック・レンダリング・システム(あるいはサブシステム)は、本願明細書においては、アプリケーション・プログラムとグラフィック出力装置との間の全ての処理レベルについて言及している。グラフィック・エンジンは、ゾーン・レンダリングを含む1つ以上のレンダリング・モードを提供して良い。ゾーン・レンダリングは、レンダー・キャッシュを最適に用いる事によって、全体的な3Dレンダリングの性能を向上させる事を試み、その結果、画素の色調およびデプス・メモリ読書きボトルネックが低減される。ゾーン・レンダリングにおいて、スクリーンは多くのゾーンへと細分化され、各サブ・イメージをレンダリングするのに必要な命令を設定するプリミティブおよび状態の全部を保持するために使用されるゾーン毎の命令ビンが生成される。プリミティブがゾーンと交差する(または、交差する可能性がある)場合は常に、このプリミティブ命令が該ゾーンのためのビンに配置される。幾つかのプリミティブは、複数のゾーンと交差し得、その場合は、プリミティブ命令は、対応するビン中において複製される。このプロセスは、全シーンがビン中でソートされるまで継続される。プリミティブによって交差した各ゾーン用のビンを構築する第1パスに続いて、第2のゾーン毎のレンダリング・パスが実行される。具体的には、最終イメージを生成するために、全てのゾーンのためのビンがレンダリングされる。通常、各シーンは一度に1つのゾーンずつレンダリングされる。
従来のゾーン・レンダリング・システムは、それらが広範囲に亘るソフトウェア介入および(または)、ビニングおよびレンダリングためのビン・メモリ関数および複数のシーンのキューイング等(これらに限定されない)の多数の機能の管理を必要とする点において非能率的である。
従って、ビニング段階とレンダリング段階との間においてビン・メモリを自動管理する方法、装置、およびシステムが必要とされている。
本発明は、ビニング段階とレンダリング段階と間のビン・メモリの自動管理を提供する事により、ゾーン・レンダリングのようなタイル状ベースのレンダリングにおいてグラフィックの性能を最適化する。本発明の実施形態は、ビン・バッファを構築し、かつそれらがレンダリングにおいて使用された後にこれらを再利用するために、ビナーおよびレンダラーが自動的に物理メモリページのプールを共有するメカニズムを提供する。これは、例外的な条件の場合を除き、ソフトウェアが介入する必要無く複数のビニングされたシーンが同時に待機し得る様な方法において行なわれる。この様に、ゾーン・レンダリング・ビン・バッファメモリのソフトウェア管理の必要性は実質的に最小化される。これらの特性によって、システム・パフォーマンスが向上する。
この詳細な説明において、多数の特定の詳細が、本発明についての完全な理解を提供するために記載される。しかしながら、本発明がこれらの特定の詳細を用いる事無く実施され得る事が、当業者にとって理解されるであろう。また、公知の方法、手順、コンポーネントおよび回路は、本発明を不明瞭にしないような方法で詳細に記載される。
後述の詳細な説明の一部分は、コンピュータ内のデータ・ビット即ち二進信号に対する演算のアルゴリズムおよび記号による表示として記述される。これらのアルゴリズムの記述および描写は、或る当業者が他の当業者にこれらの作業の手順を伝達するために使用される手段である。1つのアルゴリズムが本願明細書に記載され、通常は、本アルゴリズムは所望の結果に結びつくステップの首尾一貫したシーケンスであると見做される。ステップは、物理量の物理的な操作を含んでいる。これらの量は、格納、転送、組合せ、比較、そして操作が可能である電気的または磁気的信号の形式を通常は採るが、これに制限されない。これらの信号をビット、値、要素、シンボル、文字、項、数または同種のものとして参照する事は、主に一般的慣習の理由のために簡便であり得ると知られている。しかしながら、これらおよび同様の語句は、適切な物理量に対応していて、これらの数量に適用される便利な標識に過ぎないということを理解するべきである。後述の議論から明らかなものとして以下特定に記載されない限り、本願明細書全体を通して、「処理」あるいは「計算」あるいは「判断」または同種の語句を用いた議論は、コンピューティング・システムのレジスタおよび(または)メモリ内の物理(電子)量で表されたデータを、他のコンピューティング・システムのメモリ、レジスタ、または他の情報格納・伝送または表示装置内の物理量として同様に示されるデータへと変換するコンピュータまたはコンピューティング・システムあるいは同様の電子計算デバイスの動作および処理の事を指す。
本発明の実施形態は、ハードウェアかソフトウェア、あるいは双方の組合せによって実施されて良い。しかしながら、本発明の実施形態は、少なくとも1つのプロセッサ、(揮発性および不揮発性メモリおよび(または)記憶素子を備える)データ記憶システム、少なくとも1つの入力装置および少なくとも1つの出力装置を備えるプログラマブル・システム上で実行されるコンピュータ・プログラムとして実施されて良い。本願明細書に記載された記述された機能を行ない、かつ出力情報を生成するために、プログラムコードが入力データに供給されて良い。出力情報が、公知の方法で1つ以上の出力装置に供給されて良い。このアプリケーションの目的のために、処理システムは、例えばデジタル・シグナル・プロセッサ(DSP)、マイクロ・コントローラ、特定用途向けIC(ASIC)あるいはマイクロプロセッサのようなプロセッサを備える任意のシステムを含んでいる。
プログラムは、処理システムと通信するために、高級プロシージャー型またはオブジェクト指向プログラミング言語で実施されて良い。もし望まれれば、プログラムは、アセンブリまたは機械語で実施されても良い。実際、本発明は任意の特定のプログラム言語の範囲に制限されていない。いずれの場合においても、言語はコンパイル言語であっても良いし、インタープリター言語であっても良い。
プログラムは、記憶媒体あるいはデバイスがここに記述された手順を行うために処理システムによって読み込まれる場合に、処理システムを構成し操作するために汎用または専用プログラマブル処理システムによって判読可能な記憶媒体あるいはデバイス(例えばハードディスク・ドライブ、フロッピーディスクドライブ、読み取り専用メモリ(ROM)、CD−ROMデバイス、フラッシュ・メモリ・デバイス、ディジタル他用途ディスク(DVD)あるいは他の記憶装置)上に格納されて良い。本発明の実施形態は、処理システムとともに使用されるように構成された機械可読記憶媒体として実施されると見做されて良く、記憶媒体は、本願明細書に記載される機能を実行する特定の方法で処理システムを作動させるように構成される。
このような種類の処理システムの一例が、図1に示される。システム100の一例は、例えば本願明細書に記載された実施形態のような本発明における方法の処理を実行するために使用されてもよい。サンプル・システム100は、インテル株式会社から入手可能なマイクロプロセッサに基づいた処理システムを示すが、他のシステム(他のマイクロプロセッサ、エンジニアリングワークステーション、セットトップ・ボックスおよびその他同種のものを備えるパーソナルコンピュータ(PC)を含む)が使用されても良い。一実施形態において、システム100は、例えばマイクロソフト株式会社から入手可能なウィンドウズ(登録商標)オペレーティングシステムの或るバージョンを実行していて良いが、他のOSおよびGUIが使用されても良い。
図1は、本発明の一実施形態におけるシステム100のブロック線図である。コンピュータ・システム100は、中央処理装置102と、グラフィック装置106を含むグラフィックおよびメモリ・コントローラ104と、メモリ108と、表示装置114とを備える。プロセッサ102はデータ信号を処理し、複雑命令セットコンピュータ(CISC)マイクロプロセッサ、限定命令セット計算機(RISC)マイクロプロセッサ、超長命令語(VLIM)マイクロプロセッサ、命令セットの組合せを実施するプロセスあるいはデジタル・シグナル・プロセッサのような他のプロセッサ・デバイスであって良い。プロセッサ102は、システム100においてプロセッサ102と他のコンポーネントとの間のデータ信号を伝送する共通バス112に接続されて良い。図1は例示の目的のために描かれているに過ぎない。本発明は、離散的グラフィック装置を備える構成において使用されても良い。
プロセッサ102は、本願明細書に記載されるようなデータを操作するべくメモリ108あるいはグラフィックおよびメモリ・コントローラ104と通信するために、共通バス112上に信号を出力する。プロセッサ102は、メモリ108から得るソフトウェア命令に応じてこのような信号を出力する。メモリ108は、動的ランダムアクセス記憶装置(DRAM)デバイス、静的ランダムアクセス記憶装置(SRAM)デバイスあるいは他のメモリ素子であって良い。メモリ108は、プロセッサ102、グラフィック装置106あるいは他の或るデバイスによって実行され得るデータ信号によって表わされる命令および(または)データを格納して良い。命令および(または)データは、本発明の任意のおよび(または)全ての技術を実行するプログラムを備えて良い。メモリ108は、ソフトウェアおよび(または)データを更に含んで良い。必ずしも必要と言う訳では無いが、アクセスの局所性の利点によって、グラフィック装置106によるメモリーアクセスの速度を向上させるためにキャッシュメモリ110が使用されてもよい。
幾つかの実施形態において、グラフィック装置106は、イメージをレンダリングするために必要になったメモリ集約的なタスクの多くをプロセッサ102からオフロードして良い。グラフィック装置106は信号を処理し、例えば複雑命令セットコンピュータ(CISC)マイクロプロセッサ、限定命令セット計算機(RISC)マイクロプロセッサ、超長命令語(VLIM)マイクロプロセッサ、命令セットの組合せを実施するプロセスあるいはデジタル・シグナル・プロセッサのような他のプロセッサ・デバイスであって良い。グラフィック装置106は、レンダー・キャッシュ110および表示装置114を含むシステム100におけるグラフィック装置106と他のコンポーネントとの間のデータ信号を伝送する共通バス112に接続されて良い。グラフィック装置106は、表示装置114の特定の画素に特定の属性(例えば色調)の書き込み等を行ない、表示装置114上に複雑なプリミティブを描くレンダリング・ハードウェアを備える。グラフィックコントローラ104によってレンダリングされて処理されたイメージを表示するために、グラフィックコントローラ104によってレンダリングされて処理されたイメージを表示するために、グラフィックおよびメモリ・コントローラ104は表示装置114と通信する。表示装置114はコンピュータ・モニタ、テレビジョンセット、平面パネルディスプレーあるいは他の適切な表示装置を含んで良い。
メモリ108は、表示のためにグラフィック・プリミティブのイメージを構築するために、1つ以上のレンダリング・プログラムを備え得るホスト・オペレーティング・システムを格納する。システム100は、少なくともホスト・レンダリング・プログラムによってハンドリングされるグラフィック・プリミティブの或る一部分をレンダリングする性能を向上するために、カスタマイズされたハードウェア論理メカニズムあるいはコプロセッサを使用するグラフィック・アクセラレーターのようなグラフィック装置106を含んでいる。ホスト・オペレーティング・システム・プログラムおよびそのホスト・グラフィック適用業務プログラム・インターフェース(API)は、ドライバ・プログラムによってグラフィック装置106を制御する。
図2および図3を参照して、ゾーン・レンダリング・システム120上で実施される様々なグラフィック・オブジェクトの実施形態160(例えばジオメトリープリミティブ(つまり三角形や線分)162)が示される。ゾーン・レンダリングにおいて、スクリーンは、通常は複数の長方形状のゾーン・アレイ164へ細分されるが、他の幾何学的な形状が代わりに使用されても良い。各ゾーン164は、1つのビンに対応付けられる。各ビン128は、不連続物理メモリページ内に格納された一連のコマンド・バッファ134を含んでいる。ビン128は、このように一続きの独立した物理ページとしてむしろ実施される。
プリミティブ162がゾーン164と交差する場合、対応するプリミティブ命令は、交差したゾーン164に対応したビン128に配置される。各サブイメージのレンダリング用に必要であり、かつ各プリミティブ162のスクリーンスペースの範囲とゾーン164のアレイとの比較によって生成されるプリミティブ命令および状態設定命令を保持するために、ゾーン毎の命令ビン128が用いられる。従って、プリミティブ162が受信される際に、どのゾーン164が各プリミティブ162と交差するかを判断し、ゾーン164のそれぞれに対応したビン128に対してプリミティブ命令を複製する。ゾーン164へプリミティブ142(またそれらの属性)を割り振る過程は、ビニング(binning)と称される。「ビン」128は、各ゾーンに対して使用される理論バッファの事であり、通常は、ビン128は一連の命令バッチ・バッファ134として実現される。ビニングは、どのプリミティブ162がどの特定のゾーン164に存在するかを判断するための必要な計算を実行し、これは専用ハードウェアおよび(または)ソフトウェアの実施例によって行う事が出来る。1つの典型的な実施例において、ドライバ122は、プリミティブ162が交差する各ゾーン164用のグラフィック・ビニング・エンジン126によって解析される1セットの命令を書き込む。
幾つかのプリミティブ162は、2つ以上のゾーン164と交差し得、プリミティブ命令は複数の交差ゾーン164に対応する複数のビン128において複製される。例えば、図3の中で描かれた稲妻は9つのゾーン164と交差する。全シーンがビン128中においてソートされるまで本プロセスは継続される。
一旦、プリミティブ162が格納され、コマンド構造が完了した後、第2パスは、一度に1ゾーン164のシーンをレンダリングするように為される。プリミティブ162によって交差した各ゾーン164のためにビンを構築する第1パスに続いて、ゾーン毎の第2のレンダリング・パスが実行される。具体的には、全てのゾーン164用のビン128が最終イメージを生成するためにレンダリングされる際に、一度につき1つのゾーン164のシーンがレンダリングされる。ゾーン164のレンダリングされる順番は重要では無い。次のゾーン164がレンダリングされる前に、特定のゾーン164内の画素に触れるプリミティブ162に対応するビン128が全てレンダリングされる。単一のプリミティブ162は多数のゾーン164と交差し得、これによって、多数の複製が必要とされ得る。その結果、複数のゾーン164と交差するプリミティブ162は複数回(つまり、交差するゾーン164の数だけ)レンダリングされる。
レンダリング性能は、レンダー・キャッシュ110と心合しているゾーン164へと分割されているプリミティブ162の結果として向上する。グラフィック装置106は、一度にスクリーン上の小さい部分(つまりゾーン164)のみで動作するので、レンダー・キャッシュ110の中に全ゾーン164のためのフレームバッファーコンテンツを保持する事が出来る。ゾーン164の寸法は、通常はレンダー・キャッシュ110のサイズおよび編成に合わせられた定値である。このメカニズムによって、レンダー・キャッシュ110は最適な利益――ゾーン164の空間干渉性を利用する事によるキャッシュデータの再利用の最大化――が提供される。ゾーン・レンダリング・モードの使用を通じて、一度に1ゾーン164の最終イメージを生成するために実行される必要のあるカラー・メモリ書込みが最少化され、カラー・メモリ読み込みおよびデプス・メモリ読み込み/書き出しが最小限にされるか回避する事が出来る。従って、レンダー・キャッシュ110を使用する事によってメモリ・トラフィックが著しく低減され、次のプリミティブへと継続する前に各プリミティブを完全に引き出す従来のレンダラーに関する性能を向上させる。
図2を参照して、典型的な実施例において、シーン入力リスト124と称されるグラフィック・プリミティブおよび状態設定命令ストリームは、最初にグラフィック・ビニング・エンジン126に対応するグラフィック・ビニング・エンジン・リング・バッファ125に入力される。シーン入力リスト124は、適用業務プログラム・インターフェースによって受信されるような単一で一時的な配列のシーン記述であって良い。グラフィック・ビニング・エンジン126は、ハードウエア・ビニング・エンジン(HWB)126として通常は実施される。当業者は、ソフトウェアのビナー、またはソフトウェアおよびハードウェアのビナーが同様に使用され得る事を認識するであろう。グラフィック・ビニング・エンジン126はシーン入力リスト124を解析し、各プリミティブ162がどのゾーン164と交差するかを判断する。
前述されたように、ゾーン164はビン128と対応付けられている。グラフィック・ビニング・エンジン126は、各プリミティブ162のスクリーンスペース範囲をゾーン164のアレイと比較し、対応するビン128へ対応するプリミティブ・コマンドを複製する。図5を参照して詳述されるように、ビン128は、不連続物理メモリページ内に通常は格納される一連のコマンド・バッファ134として構成される。ビン・リストは、各ビン128を含むバッファ134のリストである。ページは、BMP140に最初に割り振られる。ビン・ポインタ・リスト130はこのページのページ数によって初期化され、ビン・リスト132に書き込みポインタを格納する。
グラフィック・ビニング・エンジン126は、シーン入力リスト124に含まれる対応する状態設定命令を解析する事によって、現在のグラフィック状態を維持する。任意のビン128にプリミティブ・コマンドを配置するのに先立って、グラフィック・ビニング・エンジン126は、通常は任意の要求された状態を設定する命令によってビン128のプリミティブ・コマンドを優先する。
シーン入力リスト124が完全に解析された後、対応するビンの集合(つまりビン0、ビン1、ビンn−1)は、シーンをレンダリングするためにグラフィック・レンダリング・エンジン136によって使用される準備が完了する。以下詳述されるように、グラフィック・ビニング・エンジン126に保留シーン・カウンタ148中のレジスタを1個分インクリメントさせるため、およびビニングされたシーンのレンダリングを開始させるために、これらの命令はシーン入力リスト124の終端部に含まれている。例えば、グラフィック・ビニング・エンジン126は、レンダリング命令を、パス156を経由して、グラフィック・レンダリング・エンジン136に対応するグラフィック・レンダリング・エンジン・リング・バッファ157に送信する。
図4は、ビン・メモリ・プール・メモリ領域180、および、グラフィック・ビニング・エンジン126とグラフィック・レンダリング・エンジン136とBMPリング・バッファ・レジスタ174とビン・コントロール・レジスタ182と保留シーン・カウンタ148を備えるグラフィック装置の一実施形態を示す詳細ブロック線図である。BMPリング・バッファメモリ領域180は、ビナー125によって利用される事が可能な物理ページを解放するためにポインタのリストを保持する。各ビン128の初期バッファが設定された後、シーン生成命令ストリームが生成される。
図5を参照して、カレント・ビン・ポインタ132およびビン128を備えるビン・ポインタ・リスト(BPL)130の実施形態が例証される。メモリ中で維持されたビン・ポインタ・リスト130は、各ビン128のために、最初のカレント・ポインタ132および後続のカレント・ポインタ132をビン・ポインタ・リスト132に格納するために使用される。BMPリング・バッファメモリ領域180は、ビナー125によって使用される事が可能である物理ページを解放するためにポインタ・リストを保持する。具体的には、ビン・ポインタ・リスト130は、ビン・ポインタ132に物理的に隣接し、かつサイズが合わせられたアレイであり、ビン・ポインタ・リスト130のサイズは、グラフィック装置106にサポートされたビン128の最大値と等しいか、およそ等しい。各ビン・ポインタ142はビン状態値に加えて、ビン128用のカレント・ビン書き込みポインタ(例えば物理的なワードアドレス)を含んでいる。典型的な実施形態において、ビン・ポインタ132はタイル状の様態で格納され、8つのDwords(256ビットのキャッシュ・ライン)のそれぞれが、幅1×高さ4の1つの長方形グループであるビン128のビン・ポインタ142の再配置された1つのリストを含む。
図6を参照して、BMPリング・バッファメモリ領域180の実施形態が例証される。BMP140に関するBMPリング・バッファメモリ領域180は、グラフィック・ビニング・エンジン126による使用に際して利用可能な物理ページを解放するためにポインタのリストを保持する。リング・バッファメモリ領域180は、システム・メモリ108あるいは専用のメモリのいずれかに位置して良い。利用可能なフリーページ146のページ数が生成され、BMPリング・バッファ144に配置されて良い。BMPリング・バッファメモリ領域180に対応するBMPリング・バッファ・レジスタ174が、レジスタ内に複数のフィールドを有していて良い。BMPリング・バッファ・レジスタ174の実施形態に含まれるフィールドは、先頭アドレスフィールド(S)166、バッファ長フィールド(L)168、ゲット・オフセットフィールド(G)170、プット・オフセットフィールド(P)172、および他のフィールドを含むが、これらに制限されるものでは無い。BMPリング・バッファ・レジスタ174は、BMPリング・バッファメモリ領域180の先頭166および長さ168を定義し、2つの「オフセット」、即ち、ゲット・オフセット170およびプット・オフセット172をBMPリング・バッファメモリ領域180内に有する。BMP140自身は、物理的に隣接するメモリのアライメントされたリスト中に格納される。該メモリは通常4KBであり、開始物理ページ数およびページ数によって表されるサイズ(通常4KB)によって定義される。
グラフィック・ビニング・エンジン126およびグラフィック・レンダリング・エンジン136を備えるグラフィック装置106は、ゲット・オフセット・レジスタ170およびプットおよびプット・オフセット・レジスタ172を経由してBMPリング・バッファメモリ領域180にアクセスする。BMP140は、最初に初期化され、BMP先頭166およびBMPサイズ168を提供するBMPレジスタを書き込むことによって指定される。フリーページの完全なコンプリメントを示すために、ゲット・オフセット170およびプット・オフセット172は、全てのビナーの使用に先立って通常0へと初期化される。
図4を参照して、グラフィック装置106は、レジスタ内の複数のフィールドを含むビン・コントロール・レジスタ182を更に備える。ビン・コントロール・レジスタ182の実施形態内に含まれるフィールドは、再始動ビット184、同期シーン終端ビット186、再開ビット188、および他のフィールドを含むが、これらに制限されない。一旦BMP140が増加すれば、シーンのビニングが、再始動ビット184を設定するビン・コントロール・レジスタ182の直接の書き込みによって再開される。
ビニングされたシーンがレンダリングされると、ビン・メモリが割り振られ、続いて次のシーンをビニングする際に備えて再利用される。具体的には、各バッチ・バッファ134は、物理アドレスおよび再利用ビットを指定するバッチ・バッファ開始命令によって開始される。各バッチ・バッファ134をレンダリングする際、グラフィック・レンダリング・エンジン136はバッチ・バッファ開始命令を復号し実行する。グラフィック・レンダリング・エンジン136は、物理アドレスを指定して「再利用」ビット・セットを有するバッチ・バッファ開始命令によって開始されたバッチ・バッファ134の処理終了の時点で、BMP140にフリーページ146を挿入する。このプロセスによって、ビン・バッファメモリ134(つまりページ)がソフトウェアを介入させる事無く自動的に再利用されることが可能になる。プット・オフセット172は、次に解放されるバッファ134のページ数が書き込まれる位置をプット・オフセット172のグラフィック・レンダリング・エンジン136に通知する。グラフィック・レンダリング・エンジン136は、実行の終了とともに、BMP140にビン・バッファ134のページを返すためにプット・オフセット172を使用する。
グラフィック・ビニング・エンジン126およびグラフィック・レンダリング・エンジン136は、ビニングされたシーンの全てを監視してカウントする保留シーン・カウンタ148と通信する。保留シーン・カウンタ148は0へと初期化され、保留シーン・カウンタ148が0でない場合、少なくとも1つのビニングされたシーンが現在処理されている事を示す。保留シーンが存在しない場合、保留シーン・カウンタ148は0である。1つのシーンがビニングされる毎に、保留シーン・カウンタ148がインクリメントされる。相応して、ビニングされたシーンがレンダリングされるごとに、保留シーン・カウンタ148がディクリメントされる。具体的に、各ビン128のレンダリングのためのグラフィック状態を初期化するために、特別の命令がシーン・レンダリング・リスト124の終端に配置され、保留シーン・カウンタ148を1つ分ディクリメントする。保留シーン・カウンタ148が1までディクリメントした際、レンダリングのために待機している完全なシーンは存在しない。
BMPリング・バッファメモリ領域180は1つ以上のビン・ポインタ・リスト130を保持する事が出来、この場合、各ビン・ポインタ・リスト130は、最初のビン・バッファ(1つのゾーン当たり1つのページ数)用に使用される物理ページ数のリストである。複数のビン・リスト(通常は2つのバッファに対して2個)によって、グラフィック・ビニング・エンジン126が能動的に現在のシーンをビニングしている間に、次のシーンのビニングを開始する事が出来る。現在のシーンのビニングが完了する前に次のシーンのビニングを開始する事を可能にするために、2つ以上のビン・ポインタ・リスト130が、ビナー128に複数のバッファを用いた入力を供給するために使用される。該装置が複数の物理メモリ空間をサポートする場合、BMPリング・バッファメモリ領域180のDwordエントリーは、物理ページ数および対応するメモリ容量セレクションを含んでいる。
図4および図5を参照して、新しいビン・バッファ134を作成するプロセスにおいて、グラフィック・ビニング・エンジン126は、BMP140からフリーページ数を抽出し、1つが利用可能であると仮定する。具体的には、シーンのビニングの最中に、利用可能なフリーページが存在するかを判断するために、グラフィック・ビニング・エンジン126はBMPリング・バッファメモリ領域180にクエリーを発行する。ゲット・オフセット170は、検索する次の利用可能なフリーページ146のページ数のオフセットを、グラフィック・ビニング・エンジン126に通知する。グラフィック・ビニング・エンジン126は、ビン128を構築するのに必要な物理ページ146を得るためにこのオフセットを使用する。グラフィック・ビニング・エンジン126がフリーページ数146の抽出を試みるがBMP140が空である事が判った場合、グラフィック・ビニング・エンジン126は、「保留の」ビニングされたシーンが1つでも存在するかどうかを判断するために保留シーン・カウンタ148にクエリーを発行する。保留シーン・カウンタ148が0でない場合、フリーページ146が利用可能になるか、もしくは保留シーン・カウンタ148が0になるまで、グラフィック・ビニング・エンジン126は使用されていないままである。
保留シーン・カウンタ148が0である場合、保留のビニングされたシーンは存在せず、従って解放されたページのソースが存在する可能性は存在しない。この時点において、BMP140は、追加のフリーページ数146の必要な数を提供するのに必要なサイズだけBMP140を増加させることによって増加する。典型的な実施例において、BMP140は4KBの倍数で増加する。その後、追加のフリーページ数が増加したBMP140に挿入され、従って、BMPリング・バッファ・レジスタ166、168、170および172が調節される。フリーページ146の新しいリストが、BMPリング・バッファメモリ領域180の先頭に配置され、ポインタが調整される。例えば、グラフィック・ビニング・エンジン126が新しい複数のポインタ値を使用することを再開する事のみによって、両方のポインタが移動されて良い。その後、グラフィック・ビニング・エンジン126はBMP140からフリーページ数146を抽出し、ビニング・プロセスを継続する。
追加のフリーメモリを用意する事が出来ない場合、グラフィック・レンダリング・エンジン136は、ビン・メモリを解放するために部分的にビニングされたシーンをレンダリングし、次に、シーンの残りのビニングを再開する。典型的な実施形態において、同期シーン終端ビット186を設定するビン・コントロール・レジスタ182の直接書込みが行なわれる。これによって、グラフィック・ビニング・エンジン126が、(a)バッチ・バッファを終了させる命令によって全ての有効なビン128を閉じさせ、(b)内部にキャッシュされた全てのデータ(例えばキャッシュされたビン・ポインタ132)をフラッシュさせ、(c)ビニングの再開に際して、全ての必要な状態が第1プリミティブ162が受信する前にビン128に挿入されるようにするべく、ビン128に関する状態トラッキング情報を修正させる。部分的にビニングされたシーンをレンダリングするのに必要な他の処置が更に講じられる。これらの処置は、保留シーン・カウンタ148をインクリメントさせるためのビン・シーンの直接書き込み、および部分的なシーンをレンダリングする前にゾーン制御レジスタのデプス書込みイネーブル・ビットが確実にクリアーされるような処置を含むが(シーンの継続的なレンダリングによってデプス値がメモリに書き出される必要があるので)、これらに制限されるものでは無い。
再開ビット188を設定するために、シーンのビニングは、ビン・コントロール・レジスタ182の直接書き込みによって再開される。上述されたように、同期エンド・シーン操作によって、変化を追跡するために用いられるビン・ビット・ベクトルの全てが複数のグループを示すように為され、従って、各ビン128は任意の新しいプリミティブ出力に先立って現在の状態によってリフレッシュされる。
物理アドレスを指定し、かつ「再利用」ビット・セットを有するバッチ・バッファ開始命令によって開始されたバッチ・バッファの処理の終了時に、グラフィック・レンダリング・エンジン136は、BMP140にフリーページ数146を挿入する。このプロセスによって、ビン・バッファメモリ(つまりページ)がソフトウェアの介入無しで自動的に再利用される事が出来る。ビニングされたシーンがレンダリングされると、次のシーンのビニングの際の使用のために、ビン・メモリが割り振られ、再利用される。具体的には、プット・オフセット172は、次に解放されるバッファのページ数を書き込む位置を、プット・オフセット172のグラフィック・レンダリング・エンジン136に通知する。これらの実行が完了すると、グラフィック・レンダリング・エンジン136は、BMP140にビン・バッファ134のページを返すためにプット・オフセット172を使用する。
図7は、バッファメモリの自動再利用を含む自動メモリ管理の実施のための実施形態200を例証するフローチャートである。
先ず、複数のページがBMP140に割り振られる(ステップ202)。その後、BMP140が初期化される(ステップ204)。BMP140は、BMP先頭166およびBMPサイズ168を提供するBMPバッファー・レジスタを書き込むことによって指定される。フリーページの完全なコンプリメントを示すために、任意のビナーの使用に先立って、BMPのゲット・オフセット170およびプット・オフセット172が0へと初期化される。
その後、ビン・ポインタ・リスト130は初期化され、物理ページ数が割り振られる(ステップ206)。本発明は、シーンのビニングの最中に利用可能なフリーページが存在するかどうかを判断する(ステップ208)。グラフィック・ビニング・エンジン126がフリーページ数146の抽出を試みるがBMP140が空である事が判った場合、グラフィック・ビニング・エンジン126は、2つの動作のうちの1つを行う。「保留」のビニングされたシーンが存在する場合(即ち、保留シーン・カウンタ148が0でない場合)(ステップ210)、フリーページ146が利用可能になるか、もしくは保留シーン・カウンタ148が0になるまで、グラフィック・ビニング・エンジン126は待機する。
グラフィック・ビニング・エンジン126がメモリ不足状態となり、かつ「保留の」ビニングされたシーンが存在しない(即ち解放される可能性の有るページのソースが存在しない)場合、メモリ不足による割り込みが生成される。この時点において、ソフトウェアが、BMP140を「増加させる」ことによって増加したフリーページを提供するオプションを有している(ステップ218)。先ず、必要な数の追加のフリーページ数146を提供するのに必要なサイズだけBMPを増加させることによってBMP140が増加する。その後、追加のフリーページ数は増加したBMP140へと挿入され、従って、ゲット/プット・オフセット・レジスタ166、168、170および172が調節される。フリーページ146が利用可能となる場合(ステップ212)、グラフィック・ビニング・エンジン126は、BMP140から該ページ数146を抽出し、ビニング・プロセスを継続する。
保留シーン・カウンタ148が0である場合(ステップ210)、もしくは待機中に0となる場合(ステップ212)、グラフィック・ビニング・エンジン126は、プロセッサ割込み(ステップ214)を生成し得るメモリ不足例外を発生させる。
この時点において、ソフトウェアが追加のフリーメモリを利用可能にする事が出来る場合(ステップ216)、BMP140は増加し、追加のフリーページ146が挿入され、再始動ビット184を設定するために、ビン・コントロール・レジスタ182の直接の書き込みによってシーンのビニングが再開される(ステップ218)。
追加のフリーメモリ(ステップ216)を用意する事が出来ない場合、BMP140は「空の」状態でないと見做され、ビン・メモリを解放するために部分的にビニングされたシーンが強制的にレンダリングされ、続いて、残りのシーンのビニングが再開される(ステップ220)。グラフィック・レンダリング・エンジン136は、ビン・メモリを解放するために部分的にビニングされたシーンをレンダリングし、次に、シーンの残りのビニングを再開する。典型的な実施形態において、同期シーン終端ビット186を設定するビン・コントロール・レジスタ182の直接書込みが行なわれる。これによって、グラフィック・ビニング・エンジン126が、(a)バッチ・バッファを終了させる命令によって全ての有効なビン128を閉じさせ、(b)内部にキャッシュされた全てのデータ(例えばキャッシュされたビン・ポインタ132)をフラッシュさせ、(c)ビニングの再開に際して、全ての必要な状態が第1プリミティブ162が受信する前にビン128に挿入されるようにするべく、ビン128に関する状態トラッキング情報を修正させる。部分的にビニングされたシーンをレンダリングするのに必要な他の処置が更に講じられる。シーンのビニングは、再開ビットを設定するために、ビン・コントロール・レジスタの直接の書き込みによって再開される。上述されたように、同時エンド・シーン操作によって、変化を追跡するために用いられるビン・ビット・ベクトルの全てが複数のグループを示すように為され、従って、各ビン128は任意の新しいプリミティブ出力に先立って現在の状態によってリフレッシュされる。
従って、本発明において、ビナーおよびレンダラーは、ビニングの段階中にビン・バッファを構築し、続いてレンダリング段階中にそれらを再利用するために、自動的に物理メモリページのプールを共有する。これは、ソフトウェアによる介入を最小限にして複数のビニングされたシーンが同時に待機し得るような様態で行なわれる。
以上、特許法の必要条件に従って本発明を記載したが、当業者は、これらの特定の要求または条件を満たすために本発明に対して特定の改変および変更を実行する方法を理解する。この種の改変および変更は、添付の特許請求の範囲にて説明される本発明の範囲および精神から逸脱する事無く為され得るものである。なお、本発明に係る装置は、プリミティブを含むシーンをレンダリングするための装置であって、ゾーンへプリミティブを割り振るビニング・エンジンと、シーンをレンダリングするレンダリング・エンジンと、ビニング・エンジンとレンダリング・エンジンとの間のメモリページを管理する自動メモリマネージャとを備え、ビニング・エンジンとレンダリング・エンジンが、メモリページを格納するメモリ領域と、BMPリング・バッファ・レジスタおびビン・コントロール・レジスタを含む複数のメモリ領域レジスタとを備え、BMPリング・バッファ・レジスタが、再利用コマンドを含むバッファ命令によって開始されたバッファを構築するために、ビニング・エンジンがメモリページを検索することができるメモリ領域中の記憶場所を示すための情報を備え、ビン・コントロール・レジスタが、レンダリングされたバッファに関する再利用コマンドに応じてメモリページをレンダリング・エンジンが自動的に返す事が出来るメモリ領域中の記憶場所を示すための情報を備える。また、ビニング・エンジンが、ゾーンに対応するバッファを形成するためにメモリページを使用してもよい。また、バッファ命令が、物理アドレスおよび再利用ビットを含んでもよい。そして、レンダリング・エンジンが各バッファをレンダリングする場合、レンダリング・エンジンがバッファ命令を復号し実行してもよく、更に、レンダリング・エンジンが、バッファ命令で開始されたバッファの処理の終了の際にメモリ領域にバッファを挿入し、これによってバッファが自動的に再利用されることを可能にしてもよい。そして、ビニング・エンジンが、複数のシーンをキューイングするために複数のビン・リストを利用してもよい。また、本発明に係る実施形態は、シーンをビニングし、レンダリングするためにメモリを自動管理する方法であってよく、メモリページを割り振るステップと、タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義するステップと、メモリ領域にメモリページを格納するステップと、シーンのビニングを簡便化するためにメモリページを検索するステップと、メモリページが自動的に再利用されるように、シーンをレンダリングした後に検索されたメモリページをメモリ領域へ返すステップとを備えてもよい。また、ビニングとレンダリングのためにアクセス可能なメモリ領域を定義するステップが、次に利用可能なメモリページのページ数が利用される箇所である第1オフセットを定義するステップと、次に開放されるメモリページのページ数が書き込まれる箇所である第2オフセットを定義するステップとを更に備えてもよい。そして、シーンのビニングを簡便化するためにメモリページを検索するステップが、ビニングに必要なメモリページを取得するために第1オフセットを利用するステップを更に備えてもよい。
ゾーン・レンダリングにおける自動メモリ管理用グラフィック装置の実施形態を備えるコンピュータ・システムの実施形態のブロック線図である。 グラフィック・ビニング・エンジン、グラフィック・レンダリング・エンジン、ビン、ビン・メモリ・プール、ビン・ポインタ・リストおよびシーン・カウンタを備えるグラフィック装置の実施形態のブロック線図である。 ゾーンおよび幾何学的なプリミティブを含むゾーン・レンダラー・スクリーンの実施形態の例を示す。 ビン・メモリ・プール・メモリ領域、および、グラフィック・ビニング・エンジンとグラフィック・レンダリング・エンジンとビン・メモリ・プール・リング・バッファ・レジスタとコントロール・レジスタと保留シーン・カウンタとを備えるグラフィック装置の実施形態を示す詳細ブロック線図である。 ビン・ポインタ・リストおよび対応するビンの実施形態を示す詳細ブロック線図である。 ビン・メモリ・プール・リング・バッファメモリ領域および対応するビン・メモリ・プール・リング・バッファ・レジスタの実施形態を示すブロック線図である。 自動メモリ管理のプロセスの実施形態を示すフローチャートである。

Claims (47)

  1. リミティブを含むシーンをレンダリングするための装置であって、
    ビニング・エンジンと、
    レンダリング・エンジンと、
    前記ビニング・エンジンと前記レンダリング・エンジンとの間のメモリページを管理する自動メモリマネージャと
    を備え、
    前記ビニング・エンジンと前記レンダリング・エンジンが、
    メモリページを格納するメモリ領域と、
    BMPリング・バッファ・レジスタおびビン・コントロール・レジスタを含む複数のメモリ領域レジスタと、
    を備え、
    記BMPリング・バッファ・レジスタが、再利用コマンドを含むバッファ命令によって開始されたバッファを構築するために、前記ビニング・エンジンがメモリページを検索することができるメモリ領域中の記憶場所を示すための情報を備え、
    記ビン・コントロール・レジスタが、レンダリングされたバッファに関する前記再利用コマンドに応じてメモリページを前記レンダリング・エンジンが自動的に返す事が出来るメモリ領域中の記憶場所を示すための情報を備える、装置。
  2. 前記ビニング・エンジンが、ゾーンに対応するバッファを形成するために前記メモリページを使用する、請求項1に記載の装置。
  3. 前記ビニング・エンジンが、どのゾーンにおいて幾何学的なオブジェクトが交差するかを判断し、ゾーンに対応するオブジェクト命令を前記交差したゾーンに対応するバッファへと複製する、請求項2に記載の装置。
  4. 記BMPリング・バッファ・レジスタに応じた前記ビニング・エンジンが、ゾーンに対応するビンを形成するために利用可能なメモリページを抽出する、請求項1に記載の装置。
  5. 前記ビニング・エンジンが、グラフィック・ビニング・エンジンである、請求項1に記載の装置。
  6. 前記バッファ命令が、物理アドレスおよび再利用ビットを含む、請求項1に記載の装置。
  7. 前記レンダリング・エンジンが各バッファをレンダリングする場合、前記レンダリング・エンジンが前記バッファ命令を復号し実行する、請求項1に記載の装置。
  8. 前記レンダリング・エンジンが、前記バッファ命令で開始されたバッファの処理の終了の際に前記メモリ領域にフリーページを挿入し、これによってバッファが自動的に再利用されることを可能にする、請求項1に記載の装置。
  9. 記ビン・コントロール・レジスタが、次に利用可能なバッファのページ数を書き込む位置のオフセットを前記レンダリング・エンジンに通知する、請求項1に記載の装置。
  10. 前記レンダリング・エンジンが、メモリ・プールにバッファの前記ページを返すために、次に利用可能な前記バッファのページ数を書き込む位置のオフセットについて前記レンダリング・エンジンへの通知の実行の完了に伴って前記オフセットを使用する、請求項9に記載の装置。
  11. 前記メモリ領域が複数のビン・リストを保持し、各ビン・リストが、最初のビン・バッファ用に使用される物理ページ数のリストである、請求項1に記載の装置。
  12. 前記ビニング・エンジンが、複数のシーンをキューイングするために前記複数のビン・リストを利用する、請求項11に記載の装置。
  13. 前記ビニング・エンジンが、第1シーンをビニングしている間に第2シーンのビニングを開始するために前記複数のビン・リストを利用する、請求項12に記載の装置。
  14. ビニングされたシーン数をカウントするために、前記ビニング・エンジンと前記レンダリング・エンジンと通信可能な保留シーン・カウンタを更に備える、請求項1に記載の装置。
  15. シーンがビニングされる毎に、前記保留シーン・カウンタがインクリメントされる、請求項14に記載の装置。
  16. ビニングされたシーンがレンダリングされる毎に、前記保留シーン・カウンタがディクリメントされる、請求項14に記載の装置。
  17. 記保留シーン・カウンタが、シーンがレンダリングされた後に実行された命令に応じてディクリメントされる、請求項14に記載の装置。
  18. 保留のビニングされたシーンが存在せず、利用可能なメモリページを前記メモリ領域へ割り振る事が可能である事を前記保留シーン・カウンタが示す場合、前記メモリ領域が追加のメモリページを格納する、請求項14に記載の装置。
  19. 保留のビニングされたシーンが存在せず、利用可能なメモリページが前記メモリ領域へ割り振る事が不可能である事を前記保留シーン・カウンタが示す場合、前記レンダリング・エンジンが部分的にビニングされたシーンをレンダリングする、請求項14に記載の装置。
  20. 前記部分的にビニングされたシーンをレンダリングした後、前記レンダリング・エンジンが、前記部分的にビニングされたシーンのバッファの処理の終了に際して対応するバッファを前記メモリ領域に対して返し、これによって、バッファが自動的に再利用されることが可能になる、請求項19に記載の装置。
  21. 前記ビン・コントロール・レジスタは、バッファが再利用された後、前記部分的にビニングされたシーンのビニングを再開するために再開ビットを供給する、請求項20に記載の装置。
  22. シーンをビニングし、レンダリングするためにメモリを自動管理する方法であって、
    メモリページを割り振るステップと、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義するステップと、
    前記メモリ領域に前記メモリページを格納するステップと、
    前記シーンのビニングを簡便化するために前記メモリページを検索するステップと、
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返すステップと
    を備え、
    ビニングとレンダリングのために前記アクセス可能なメモリ領域を定義するステップが、
    次に利用可能なメモリページのページ数が利用される箇所である第1オフセットを定義するステップと、
    次に開放されるメモリページのページ数が書き込まれる箇所である第2オフセットを定義するステップと
    を備える、方法。
  23. シーンのビニングを簡便化するためにメモリページを検索するステップが、
    ビニングに必要な前記メモリページを取得するために前記第1オフセットを利用するステップを更に備える、
    請求項22に記載の方法。
  24. 前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返すステップが、
    実行に際して、前記メモリ領域にメモリページを返すために前記第2オフセットを利用するステップ
    を備える、請求項22に記載の方法。
  25. シーンをビニングし、レンダリングするためにメモリを自動管理する方法であって、
    メモリページを割り振るステップと、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義するステップと、
    前記メモリ領域に前記メモリページを格納するステップと、
    前記シーンのビニングを簡便化するために前記メモリページを検索するステップと、
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返すステップと
    を備え、
    ビニングとレンダリングのために前記アクセス可能なメモリ領域にメモリページを格納するステップが、
    物理ページ数および対応するメモリ容量セレクションによって格納された各メモリページを識別するステップ
    を備える、方法。
  26. シーンをビニングし、レンダリングするためにメモリを自動管理する方法であって、
    メモリページを割り振るステップと、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義するステップと、
    前記メモリ領域に前記メモリページを格納するステップと、
    前記シーンのビニングを簡便化するために前記メモリページを検索するステップと、
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返すステップと、
    各シーンのビニングに続いて保留シーン・カウンタの値をインクリメントするステップと、
    ビニングされたシーンのレンダリングを開始するステップと
    を備える、方法。
  27. シーンをビニングし、レンダリングするためにメモリを自動管理する方法であって、
    メモリページを割り振るステップと、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義するステップと、
    前記メモリ領域に前記メモリページを格納するステップと、
    前記シーンのビニングを簡便化するために前記メモリページを検索するステップと、
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返すステップと
    を備え、
    ビニングされたシーンのレンダリングを開始するステップが、
    前記シーンに対応するレンダリング・リストをフォーマットするステップと、
    前記レンダリング・リストを処理した後に保留シーン・カウンタをディクリメントするステップと
    を備える、方法。
  28. シーンをビニングし、レンダリングするためにメモリを自動管理する方法であって、
    メモリページを割り振るステップと、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義するステップと、
    前記メモリ領域に前記メモリページを格納するステップと、
    前記シーンのビニングを簡便化するために前記メモリページを検索するステップと、
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返すステップと、
    シーンのビニング中に、利用可能なフリーメモリページが存在するかどうかを判断するステップと
    を備える、方法。
  29. 保留シーン・カウンタが0でない場合にフリーページを待機するステップと、
    前記メモリ領域から、利用可能となる場合にメモリページを抽出するステップと、
    前記シーンのビニングを再開するステップと
    を更に備える、請求項28に記載の方法。
  30. 保留シーン・カウンタが0で、かつフリーメモリが利用可能である場合に、前記メモリ領域を増加させるステップと、
    前記メモリ領域に追加のフリーページを挿入するステップと、
    前記シーンのビニングを再開するステップと
    を更に備える、請求項28に記載の方法。
  31. 保留シーン・カウンタが0で、かつフリーメモリが利用可能でない場合に、ビニングされたシーンの一部分をレンダリングするステップと、
    レンダリングされていないシーンの残りの一部分のビニングを再開するステップと
    を備える、請求項28に記載の方法。
  32. シーンをビニングし、レンダリングするためにメモリを自動管理する方法であって、
    メモリページを割り振るステップと、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義するステップと、
    前記メモリ領域に前記メモリページを格納するステップと、
    前記シーンのビニングを簡便化するために前記メモリページを検索するステップと、
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返すステップと
    を備え、
    前記メモリ領域が複数のビン・リストを保持し、各ビン・リストが、最初のビン・バッファ用に使用されるメモリページのリストである、方法。
  33. 複数のシーンをキューイングするために前記複数のビン・リストを利用するステップ
    を更に備える、請求項32に記載の方法。
  34. 第1シーンをビニングしている間に第2シーンのビニングを開始するために前記複数のビン・リストを利用するステップ
    を更に備える、請求項33に記載の方法。
  35. シーンをビニングおよびレンダリングするために自動的にメモリを管理するプロセッサによって実行可能なプログラムであって、コンピュータを、
    メモリページを割り振る手段、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義する手段、
    前記メモリ領域に前記メモリページを格納する手段、
    前記シーンのビニングを簡便化するために前記メモリページを検索する手段、および
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返す手段
    として機能させ、
    ビニングとレンダリングのためにアクセス可能なメモリ領域を定義する手段が、
    次に利用可能なメモリページのページ数が利用される箇所である第1オフセットを定義する手段と、
    次に開放されるメモリページのページ数が書き込まれる箇所である第2オフセットを定義する手段と
    を備える、プログラム。
  36. シーンのビニングを簡便化するためにメモリページを検索する手段が
    ビニングに必要な前記メモリページを取得するために前記第1オフセットを利用する手段
    を備える、請求項35に記載のプログラム。
  37. 前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返す手段が
    実行に際して、前記メモリ領域にメモリページを返すために前記第2オフセットを利用する手段
    を備える、請求項35に記載のプログラム。
  38. シーンをビニングおよびレンダリングするために自動的にメモリを管理するプロセッサによって実行可能なプログラムであって、コンピュータを、
    メモリページを割り振る手段、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義する手段、
    前記メモリ領域に前記メモリページを格納する手段、
    前記シーンのビニングを簡便化するために前記メモリページを検索する手段、および
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返す手段
    として機能させ、
    ビニングとレンダリングのためにアクセス可能なメモリ領域にメモリページを格納する手段が、
    物理ページ数および対応するメモリ容量セレクションによって格納された各メモリページを識別する手段
    を備える、プログラム。
  39. シーンをビニングおよびレンダリングするために自動的にメモリを管理するプロセッサによって実行可能なプログラムであって、コンピュータを、
    メモリページを割り振る手段、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義する手段、
    前記メモリ領域に前記メモリページを格納する手段、
    前記シーンのビニングを簡便化するために前記メモリページを検索する手段、および
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返す手段、
    各シーンのビニングに続いて保留シーン・カウンタの値をインクリメントする手段、および
    ビニングされたシーンのレンダリングを開始する手段
    として機能させる、プログラム。
  40. シーンをビニングおよびレンダリングするために自動的にメモリを管理するプロセッサによって実行可能なプログラムであって、コンピュータを、
    メモリページを割り振る手段、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義する手段、
    前記メモリ領域に前記メモリページを格納する手段、
    前記シーンのビニングを簡便化するために前記メモリページを検索する手段、および
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返す手段
    として機能させ、
    ビニングされたシーンのレンダリングを開始する手段が、
    前記シーンに対応するレンダリング・リストをフォーマットする手段と、
    前記レンダリング・リストを処理した後に保留シーン・カウンタをディクリメントする手段と
    を備える、プログラム。
  41. シーンをビニングおよびレンダリングするために自動的にメモリを管理するプロセッサによって実行可能なプログラムであって、コンピュータを、
    メモリページを割り振る手段、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義する手段、
    前記メモリ領域に前記メモリページを格納する手段、
    前記シーンのビニングを簡便化するために前記メモリページを検索する手段、
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返す手段、および
    シーンのビニング中に、利用可能なフリーメモリページが存在するかどうかを判断する手段
    として機能させる、プログラム。
  42. 前記コンピュータを、
    保留シーン・カウンタが0でない場合にフリーページを待機する手段、
    前記メモリ領域から、利用可能となる場合にメモリページを抽出する手段、および
    前記シーンのビニングを再開する手段
    として更に機能させる、請求項41に記載のプログラム。
  43. 前記コンピュータを、
    保留シーン・カウンタが0で、かつフリーメモリが利用可能である場合、前記メモリ領域を増加する手段、
    前記メモリ領域に追加のフリーページを挿入する手段、および
    前記シーンのビニングを再開する手段
    として更に機能させる、請求項41に記載のプログラム
  44. 保留シーン・カウンタが0で、かつフリーメモリが利用可能でない場合に、ビニングされたシーンの一部分をレンダリングする手段、および
    レンダリングされていないシーンの残りの一部分のビニングを再開する手段
    として更に機能させる、請求項41に記載のプログラム。
  45. シーンをビニングおよびレンダリングするために自動的にメモリを管理するプロセッサによって実行可能なプログラムであって、コンピュータを、
    メモリページを割り振る手段、
    タイルベースでレンダリングされるイメージのビニングとレンダリングのために、アクセス可能なメモリ領域を定義する手段、
    前記メモリ領域に前記メモリページを格納する手段、
    前記シーンのビニングを簡便化するために前記メモリページを検索する手段、および
    前記メモリページが自動的に再利用されるように、前記シーンをレンダリングした後に検索されたメモリページを前記メモリ領域へ返す手段
    として機能させ、
    前記メモリ領域が複数のビン・リストを保持し、各ビン・リストが、最初のビン・バッファ用に使用されるメモリページのリストである、プログラム。
  46. 前記コンピュータを、
    複数のシーンをキューイングするために前記複数のビン・リストを利用する手段
    として更に機能させる、請求項45に記載のプログラム
  47. 前記コンピュータを、
    第1シーンをビニングしている間に第2シーンのビニングを開始するために前記複数のビン・リストを利用する手段
    として更に機能させる、請求項46に記載のプログラム
JP2003558793A 2001-12-31 2002-12-11 ゾーン・レンダリング用の自動メモリ管理 Expired - Fee Related JP4071196B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/038,921 US6747658B2 (en) 2001-12-31 2001-12-31 Automatic memory management for zone rendering
PCT/US2002/039791 WO2003058555A2 (en) 2001-12-31 2002-12-11 Automatic memory management for zone rendering

Publications (3)

Publication Number Publication Date
JP2005525617A JP2005525617A (ja) 2005-08-25
JP2005525617A5 JP2005525617A5 (ja) 2006-01-05
JP4071196B2 true JP4071196B2 (ja) 2008-04-02

Family

ID=21902658

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003558793A Expired - Fee Related JP4071196B2 (ja) 2001-12-31 2002-12-11 ゾーン・レンダリング用の自動メモリ管理

Country Status (10)

Country Link
US (2) US6747658B2 (ja)
EP (1) EP1461773B1 (ja)
JP (1) JP4071196B2 (ja)
KR (1) KR100575143B1 (ja)
CN (1) CN1669055B (ja)
AT (1) ATE469409T1 (ja)
AU (1) AU2002359689A1 (ja)
DE (1) DE60236542D1 (ja)
TW (1) TWI279737B (ja)
WO (1) WO2003058555A2 (ja)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6747658B2 (en) * 2001-12-31 2004-06-08 Intel Corporation Automatic memory management for zone rendering
US8223157B1 (en) * 2003-12-31 2012-07-17 Ziilabs Inc., Ltd. Stochastic super sampling or automatic accumulation buffering
US20060074872A1 (en) * 2004-09-30 2006-04-06 International Business Machines Corporation Adaptive database buffer memory management using dynamic SQL statement cache statistics
US7694097B2 (en) * 2004-11-15 2010-04-06 International Business Machines Corporation System and method for managing an electronic storage volume
US20060153185A1 (en) * 2004-12-28 2006-07-13 Intel Corporation Method and apparatus for dynamically changing ring size in network processing
US20060230428A1 (en) * 2005-04-11 2006-10-12 Rob Craig Multi-player video game system
US7764289B2 (en) * 2005-04-22 2010-07-27 Apple Inc. Methods and systems for processing objects in memory
US7280107B2 (en) 2005-06-29 2007-10-09 Microsoft Corporation Procedural graphics architectures and techniques
US9061206B2 (en) * 2005-07-08 2015-06-23 Activevideo Networks, Inc. Video game system using pre-generated motion vectors
JP4996603B2 (ja) * 2005-07-08 2012-08-08 タグ ネットワークス,インコーポレイテッド 事前符号化マクロブロックを使用するビデオゲームシステム
US9060101B2 (en) * 2005-07-08 2015-06-16 Activevideo Networks, Inc. Video game system having an infinite playing field
US8270439B2 (en) * 2005-07-08 2012-09-18 Activevideo Networks, Inc. Video game system using pre-encoded digital audio mixing
US8118676B2 (en) * 2005-07-08 2012-02-21 Activevideo Networks, Inc. Video game system using pre-encoded macro-blocks
US8284842B2 (en) 2005-07-08 2012-10-09 Activevideo Networks, Inc. Video game system using pre-encoded macro-blocks and a reference grid
US8074248B2 (en) 2005-07-26 2011-12-06 Activevideo Networks, Inc. System and method for providing video content associated with a source image to a television in a communication network
US8694697B1 (en) * 2006-04-27 2014-04-08 Nvidia Corporation Rescindable instruction dispatcher
US8085272B1 (en) * 2006-11-03 2011-12-27 Nvidia Corporation Method and system for improving data coherency in a parallel rendering system
US8139069B1 (en) 2006-11-03 2012-03-20 Nvidia Corporation Method and system for improving data coherency in a parallel rendering system
US9826197B2 (en) 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
US9042454B2 (en) 2007-01-12 2015-05-26 Activevideo Networks, Inc. Interactive encoded content system including object models for viewing on a remote device
US8031194B2 (en) * 2007-11-09 2011-10-04 Vivante Corporation Intelligent configurable graphics bandwidth modulator
GB0723536D0 (en) * 2007-11-30 2008-01-09 Imagination Tech Ltd Multi-core geometry processing in a tile based rendering system
US8522242B2 (en) * 2007-12-31 2013-08-27 Intel Corporation Conditional batch buffer execution
GB0823468D0 (en) * 2008-12-23 2009-01-28 Imagination Tech Ltd Display list control stream grouping in tile based 3D computer graphics systems
US9075559B2 (en) 2009-02-27 2015-07-07 Nvidia Corporation Multiple graphics processing unit system and method
US9135675B2 (en) 2009-06-15 2015-09-15 Nvidia Corporation Multiple graphics processing unit display synchronization system and method
US8194862B2 (en) * 2009-07-31 2012-06-05 Activevideo Networks, Inc. Video game system with mixing of independent pre-encoded digital audio bitstreams
US20110063304A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation Co-processing synchronizing techniques on heterogeneous graphics processing units
US9021541B2 (en) 2010-10-14 2015-04-28 Activevideo Networks, Inc. Streaming digital video between video devices using a cable television system
US8339409B2 (en) * 2011-02-16 2012-12-25 Arm Limited Tile-based graphics system and method of operation of such a system
CN102654921A (zh) * 2011-03-03 2012-09-05 福建星网视易信息系统有限公司 用于对象管理的三维图形引擎
CN102654922B (zh) * 2011-03-03 2014-11-05 福建星网视易信息系统有限公司 消息管理引擎
US9204203B2 (en) 2011-04-07 2015-12-01 Activevideo Networks, Inc. Reduction of latency in video distribution networks using adaptive bit rates
US9177412B2 (en) 2011-12-14 2015-11-03 Intel Corporation Techniques for multiple pass rendering
WO2013106390A1 (en) 2012-01-09 2013-07-18 Activevideo Networks, Inc. Rendering of an interactive lean-backward user interface on a television
US9800945B2 (en) 2012-04-03 2017-10-24 Activevideo Networks, Inc. Class-based intelligent multiplexing over unmanaged networks
US9123084B2 (en) 2012-04-12 2015-09-01 Activevideo Networks, Inc. Graphical application integration with MPEG objects
JP5910310B2 (ja) * 2012-05-22 2016-04-27 富士通株式会社 描画処理装置及び描画処理方法
US9672584B2 (en) * 2012-09-06 2017-06-06 Imagination Technologies Limited Systems and methods of partial frame buffer updating
KR102089471B1 (ko) 2012-11-30 2020-03-17 삼성전자주식회사 타일 기반 렌더링 방법 및 장치
US9064437B2 (en) 2012-12-07 2015-06-23 Intel Corporation Memory based semaphores
US10275128B2 (en) 2013-03-15 2019-04-30 Activevideo Networks, Inc. Multiple-mode system and method for providing user selectable video content
US9219922B2 (en) 2013-06-06 2015-12-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
EP3005712A1 (en) 2013-06-06 2016-04-13 ActiveVideo Networks, Inc. Overlay rendering of user interface onto source video
US9294785B2 (en) 2013-06-06 2016-03-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
US9818379B2 (en) 2013-08-08 2017-11-14 Nvidia Corporation Pixel data transmission over multiple pixel interfaces
US9788029B2 (en) 2014-04-25 2017-10-10 Activevideo Networks, Inc. Intelligent multiplexing using class-based, multi-dimensioned decision logic for managed networks
KR102276909B1 (ko) 2014-12-09 2021-07-13 삼성전자주식회사 렌더링 방법 및 장치
GB2534567B (en) * 2015-01-27 2017-04-19 Imagination Tech Ltd Processing primitives which have unresolved fragments in a graphics processing system
US10248419B2 (en) * 2016-03-09 2019-04-02 International Business Machines Corporation In-memory/register vector radix sort
US10621158B2 (en) * 2017-08-07 2020-04-14 Seagate Technology Llc Transaction log tracking
WO2021012257A1 (en) * 2019-07-25 2021-01-28 Qualcomm Incorporated Methods and apparatus to facilitate a unified framework of post-processing for gaming
CN110704555A (zh) * 2019-08-20 2020-01-17 浙江工业大学 一种基于gis的数据分地区处理方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5917502A (en) 1995-12-06 1999-06-29 Intergraph Corporation Peer-to-peer parallel processing graphics accelerator
US6380935B1 (en) 1999-03-17 2002-04-30 Nvidia Corporation circuit and method for processing render commands in a tile-based graphics system
US6344852B1 (en) * 1999-03-17 2002-02-05 Nvidia Corporation Optimized system and method for binning of graphics data
US6396473B1 (en) * 1999-04-22 2002-05-28 Webtv Networks, Inc. Overlay graphics memory management method and apparatus
FR2797370B1 (fr) * 1999-07-19 2001-10-05 Sual E Procede et systeme pour afficher des images transmises a distance
AU1776001A (en) 1999-11-18 2001-05-30 Info Assets, Inc. Rendering image data
US6747658B2 (en) 2001-12-31 2004-06-08 Intel Corporation Automatic memory management for zone rendering

Also Published As

Publication number Publication date
CN1669055A (zh) 2005-09-14
WO2003058555A2 (en) 2003-07-17
TW200302437A (en) 2003-08-01
DE60236542D1 (de) 2010-07-08
ATE469409T1 (de) 2010-06-15
JP2005525617A (ja) 2005-08-25
WO2003058555A3 (en) 2004-02-12
KR20040072696A (ko) 2004-08-18
EP1461773A2 (en) 2004-09-29
US20030122836A1 (en) 2003-07-03
US20040222998A1 (en) 2004-11-11
TWI279737B (en) 2007-04-21
EP1461773B1 (en) 2010-05-26
US6995773B2 (en) 2006-02-07
KR100575143B1 (ko) 2006-05-03
CN1669055B (zh) 2011-05-25
AU2002359689A1 (en) 2003-07-24
US6747658B2 (en) 2004-06-08
AU2002359689A8 (en) 2003-07-24

Similar Documents

Publication Publication Date Title
JP4071196B2 (ja) ゾーン・レンダリング用の自動メモリ管理
JP4076502B2 (ja) ゾーン・レンダリングのための効率的なグラフィックス状態管理
US8803898B2 (en) Forming a windowing display in a frame buffer
US5706478A (en) Display list processor for operating in processor and coprocessor modes
JP5053857B2 (ja) 3次元グラフィックス処理装置および方法
US6747657B2 (en) Depth write disable for zone rendering
JPH07141202A (ja) コンテキストを管理するシステム及び方法
US7791601B2 (en) Efficient object storage for zone rendering
US6950108B2 (en) Bandwidth reduction for rendering using vertex data
US6253261B1 (en) System and method for direct memory access in a computer system
US20200273142A1 (en) Bin resolve with concurrent rendering of a next bin
JPH0877367A (ja) 画像処理プロセッサおよびそれを用いた画像データ処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071026

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080116

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110125

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120125

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130125

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130125

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees