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

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

Info

Publication number
JP2005525617A
JP2005525617A JP2003558793A JP2003558793A JP2005525617A JP 2005525617 A JP2005525617 A JP 2005525617A JP 2003558793 A JP2003558793 A JP 2003558793A JP 2003558793 A JP2003558793 A JP 2003558793A JP 2005525617 A JP2005525617 A JP 2005525617A
Authority
JP
Japan
Prior art keywords
scene
memory
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.)
Granted
Application number
JP2003558793A
Other languages
English (en)
Other versions
JP4071196B2 (ja
JP2005525617A5 (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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Electrotherapy Devices (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Input (AREA)
  • Control Of Motors That Do Not Use Commutators (AREA)
  • Liquid Developers In Electrophotography (AREA)
  • Traffic Control Systems (AREA)

Abstract

本発明は、ビニング段階とレンダリング段階との間のビン・メモリの自動管理を提供する事によって、ゾーン・レンダリング中にグラフィックの性能を最適化する。ビン・バッファを構築し、かつそれらがレンダリングにおいて使用された後それらを再利用するために、本発明の実施形態は、ビナーとレンダラーが自動的に物理メモリページのプールを共有するメカニズムを提供する。これは、ソフトウェアの介入の必要無しに(例外的な条件の場合を除いて)、複数のビニングされたシーンが同時に待機し得るような方法によって行なわれる。従って、ゾーン・レンダリング・ビン・バッファメモリのソフトウェア管理の必要性が取り除かれる。ビニングおよびレンダリングのための複数のシーンが、ソフトウェアの介入無しでキューイングされる。

Description

本発明は、広義にはグラフィック・システムに関し、より詳細には、グラフィック・レンダリング・システムに関する。
コンピュータグラフィック・システムは、2次元のビデオ表示装置・スクリーンにオブジェクトの図形表現を表示するために一般に使用される。現在のコンピュータグラフィック・システムは高度に詳細な描写を提供し、様々なアプリケーションにおいて使用される。典型的なコンピュータグラフィック・システムにおいて、表示画面上で表わされるオブジェクトはグラフィック・プリミティブへと分類される。プリミティブは、グラフィック表示装置の基本的な構成要素であり、点、線、ベクトル、および三角形や四角形のような多角形を備えていて良い。典型的には、表示画面上で表わされている1つ以上のオブジェクトの視界を表わすグラフィック・プリミティブをレンダリング即ち描写するために、ハードウェア/ソフトウェアスキームが実施される。
レンダリングされる三次元のオブジェクトのプリミティブは、プリミティブ・データに関してホストコンピュータによって定義される。例えば、プリミティブが三角形である場合、ホストコンピュータは、各頂点の赤、緑、青(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として構成される。ビン・リストは、各ビン132を含むバッファ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の実施形態170が例証される。メモリ中で維持されたビン・ポインタ・リスト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リング・バッファ・レジスタ150が、レジスタ内に複数のフィールドを有していて良い。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は、物理アドレスおよび再利用ビットを指定するバッチ・バッファ開始命令182によって開始される。各バッチ・バッファ134をレンダリングする際、グラフィック・レンダリング・エンジン136はバッチ・バッファ開始命令182を復号し実行する。グラフィック・レンダリング・エンジン136は、物理アドレスを指定して「再利用」ビット・セットを有するバッチ・バッファ開始命令182によって開始されたバッチ・バッファ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は任意の新しいプリミティブ出力に先立って現在の状態によってリフレッシュされる。
物理アドレスを指定し、かつ「再利用」ビット・セットを有するバッチ・バッファ開始命令182によって開始されたバッチ・バッファの処理の終了時に、グラフィック・レンダリング・エンジン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は任意の新しいプリミティブ出力に先立って現在の状態によってリフレッシュされる。
従って、本発明において、ビナーおよびレンダラーは、ビニングの段階中にビン・バッファを構築し、続いてレンダリング段階中にそれらを再利用するために、自動的に物理メモリページのプールを共有する。これは、ソフトウェアによる介入を最小限にして複数のビニングされたシーンが同時に待機し得るような様態で行なわれる。
以上、特許法の必要条件に従って本発明を記載したが、当業者は、これらの特定の要求または条件を満たすために本発明に対して特定の改変および変更を実行する方法を理解する。この種の改変および変更は、添付の特許請求の範囲にて説明される本発明の範囲および精神から逸脱する事無く為され得るものである。
ゾーン・レンダリングにおける自動メモリ管理用グラフィック装置の実施形態を備えるコンピュータ・システムの実施形態のブロック線図である。 グラフィック・ビニング・エンジン、グラフィック・レンダリング・エンジン、ビン、ビン・メモリ・プール、ビン・ポインタ・リストおよびシーン・カウンタを備えるグラフィック装置の実施形態のブロック線図である。 ゾーンおよび幾何学的なプリミティブを含むゾーン・レンダラー・スクリーンの実施形態の例を示す。 ビン・メモリ・プール・メモリ領域、および、グラフィック・ビニング・エンジンとグラフィック・レンダリング・エンジンとビン・メモリ・プール・リング・バッファ・レジスタとコントロール・レジスタと保留シーン・カウンタとを備えるグラフィック装置の実施形態を示す詳細ブロック線図である。 ビン・ポインタ・リストおよび対応するビンの実施形態を示す詳細ブロック線図である。 ビン・メモリ・プール・リング・バッファメモリ領域および対応するビン・メモリ・プール・リング・バッファ・レジスタの実施形態を示すブロック線図である。 自動メモリ管理のプロセスの実施形態を示すフローチャートである。

Claims (49)

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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011505622A (ja) * 2007-11-30 2011-02-24 イマジネイション テクノロジーズ リミテッド タイルベース・レンダリング・システムにおけるマルチコアの形状処理
JP2012513630A (ja) * 2008-12-23 2012-06-14 イマジネイション テクノロジーズ リミテッド タイルベースの3dコンピュータグラフィックシステムにおける表示リスト制御ストリームのグループ化
JP2012168951A (ja) * 2011-02-16 2012-09-06 Arm Ltd タイルベースのグラフィックスシステム及びこのようなシステムの動作方法
JP2013242796A (ja) * 2012-05-22 2013-12-05 Fujitsu Ltd 描画処理装置及び描画処理方法

Families Citing this family (49)

* 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
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
US9061206B2 (en) * 2005-07-08 2015-06-23 Activevideo Networks, Inc. Video game system using pre-generated motion vectors
US8284842B2 (en) 2005-07-08 2012-10-09 Activevideo Networks, Inc. Video game system using pre-encoded macro-blocks and a reference grid
DE602006015650D1 (de) * 2005-07-08 2010-09-02 Tag Networks Inc Videospielsystem mit vorcodierten makroblöcken
US9060101B2 (en) * 2005-07-08 2015-06-16 Activevideo Networks, Inc. Video game system having an infinite playing field
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
EP2632165B1 (en) 2007-01-12 2015-09-30 ActiveVideo Networks, Inc. Interactive encoded content system including object models for viewing on a remote device
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
US8031194B2 (en) * 2007-11-09 2011-10-04 Vivante Corporation Intelligent configurable graphics bandwidth modulator
US8522242B2 (en) * 2007-12-31 2013-08-27 Intel Corporation Conditional batch buffer execution
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
US20110063306A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation CO-PROCESSING TECHNIQUES ON HETEROGENEOUS GPUs INCLUDING IDENTIFYING ONE GPU AS A NON-GRAPHICS DEVICE
AU2011315950B2 (en) 2010-10-14 2015-09-03 Activevideo Networks, Inc. Streaming digital video between video devices using a cable television system
CN102654922B (zh) * 2011-03-03 2014-11-05 福建星网视易信息系统有限公司 消息管理引擎
CN102654921A (zh) * 2011-03-03 2012-09-05 福建星网视易信息系统有限公司 用于对象管理的三维图形引擎
EP2695388B1 (en) 2011-04-07 2017-06-07 ActiveVideo Networks, Inc. Reduction of latency in video distribution networks using adaptive bit rates
WO2013089706A1 (en) 2011-12-14 2013-06-20 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
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
WO2014145921A1 (en) 2013-03-15 2014-09-18 Activevideo Networks, Inc. A 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
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
WO2014197879A1 (en) 2013-06-06 2014-12-11 Activevideo Networks, Inc. Overlay rendering of user interface onto source video
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
EP0867016A1 (en) 1995-12-06 1998-09-30 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
WO2001037220A1 (en) 1999-11-18 2001-05-25 Info Assets, Inc. Rendering image data
US6747658B2 (en) * 2001-12-31 2004-06-08 Intel Corporation Automatic memory management for zone rendering

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011505622A (ja) * 2007-11-30 2011-02-24 イマジネイション テクノロジーズ リミテッド タイルベース・レンダリング・システムにおけるマルチコアの形状処理
JP2012513630A (ja) * 2008-12-23 2012-06-14 イマジネイション テクノロジーズ リミテッド タイルベースの3dコンピュータグラフィックシステムにおける表示リスト制御ストリームのグループ化
US9384584B2 (en) 2008-12-23 2016-07-05 Imagination Technologies Limited Display list control stream grouping in tile based 3D computer graphics system
JP2012168951A (ja) * 2011-02-16 2012-09-06 Arm Ltd タイルベースのグラフィックスシステム及びこのようなシステムの動作方法
JP2013242796A (ja) * 2012-05-22 2013-12-05 Fujitsu Ltd 描画処理装置及び描画処理方法

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4071196B2 (ja) ゾーン・レンダリング用の自動メモリ管理
JP4076502B2 (ja) ゾーン・レンダリングのための効率的なグラフィックス状態管理
US8803898B2 (en) Forming a windowing display in a frame buffer
US5701444A (en) Three-dimensional graphics subsystem with enhanced support for graphical user interface
US5706478A (en) Display list processor for operating in processor and coprocessor modes
US6747657B2 (en) Depth write disable for zone rendering
JP2008520021A (ja) 3次元グラフィックス処理装置および方法
US7791601B2 (en) Efficient object storage for zone rendering
JPH10116346A (ja) テクスチャの高速ダウンロード方法
US6762765B2 (en) Bandwidth reduction for zone rendering via split vertex buffers
US20020140710A1 (en) Method and apparatus for dynamically balancing graphics workloads on a demand-based zone renderer
US6253261B1 (en) System and method for direct memory access in a computer system
US20030123089A1 (en) Graphics state bandwidth reduction for zone rendering
US20200273142A1 (en) Bin resolve with concurrent rendering of a next bin

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