JP2005514711A - ゾーン・レンダリングのための効率的なグラフィックス状態管理 - Google Patents

ゾーン・レンダリングのための効率的なグラフィックス状態管理 Download PDF

Info

Publication number
JP2005514711A
JP2005514711A JP2003558795A JP2003558795A JP2005514711A JP 2005514711 A JP2005514711 A JP 2005514711A JP 2003558795 A JP2003558795 A JP 2003558795A JP 2003558795 A JP2003558795 A JP 2003558795A JP 2005514711 A JP2005514711 A JP 2005514711A
Authority
JP
Japan
Prior art keywords
state
instruction
tracking
bin
primitive
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
JP2003558795A
Other languages
English (en)
Other versions
JP4076502B2 (ja
JP2005514711A5 (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 JP2005514711A publication Critical patent/JP2005514711A/ja
Publication of JP2005514711A5 publication Critical patent/JP2005514711A5/ja
Application granted granted Critical
Publication of JP4076502B2 publication Critical patent/JP4076502B2/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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Image Input (AREA)

Abstract

本発明は、グラフィックイメージを生成するタイルベースのゾーン・レンダリングの方法によって使用されるハードウェア状態ビニング・ロジックによるグラフィック状態のトラッキングとグラフィック状態の管理のためのメカニズムを提供する。動的な状態変数の現在値のみがハードウェア中に維持される。動的な状態は、複数のプリミティブ間で変化する可能性が有ると考えられる状態変数を含むが、これに制限されない。動的な状態変数の設定は、サブグループへと細分化される。各状態グループは、トラッキング・ビットのビン毎のアレイに対応付けられる。状態変化に遭遇する場合は常に、関連する状態グループに対応するトラッキング・ビットが、全てのビンに対して設定される。ビンにプリミティブを配置するのに先立って、該ビンに対応するトラッキング・ビットが調べられ、設定済トラッキング・ビットに対応する現在の状態が、プリミティブの前にビンへと挿入される。その後、そのビンに関するトラッキング・ビットがクリアーされる。

Description

本発明は、広義にはグラフィック・システムに関し、より詳細には、グラフィック・レンダリング・システムに関する。
コンピュータグラフィック・システムは、2次元のビデオ表示装置・スクリーンにオブジェクトの図形表現を表示するために一般に使用される。現在のコンピュータグラフィック・システムは高度に詳細な描写を提供し、様々なアプリケーションにおいて使用される。典型的なコンピュータグラフィック・システムにおいて、表示画面上で表わされるオブジェクトはグラフィック・プリミティブへと分類される。プリミティブは、グラフィック表示装置の基本的な構成要素であり、点、線、ベクトル、および三角形や四角形のような多角形を備えていて良い。典型的には、表示画面上で表わされている1つ以上のオブジェクトの視界を表わすグラフィック・プリミティブをレンダリング即ち描写するために、ハードウェア/ソフトウェアスキームが実施される。
レンダリングされる三次元のオブジェクトのプリミティブは、プリミティブ・データに関してホストコンピュータによって定義される。例えば、プリミティブが三角形である場合、ホストコンピュータは、各頂点の赤、緑、青(RGB)の色の値と同様に、頂点のX、YおよびZ座標の点に関してプリミティブを定義して良い。その他の追加のプリミティブ・データが、特定のアプリケーションにおいて使用されても良い。
イメージ・レンダリングは、高級なオブジェクトベースの記述を、ある表示装置上の表示装置用のグラフィックイメージへと変換する事である。例えば、イメージ・レンダリングの動作は、三次元のオブジェクトまたはシーンの数学的モデルをビットマップ方式のイメージへと変換する際に生じる。イメージ・レンダリングの別の例として、HTMLドキュメントをコンピュータ・モニタ上に表示されるイメージへの変換が挙げられる。典型的には、グラフィック・レンダリング・エンジンと称されるハードウェアデバイスはこれらの図形処理タスクを実行する。通常、グラフィック・レンダリング・エンジンは、グラフィック出力装置にその後出力されるバッファに或るシーンをレンダリングするが、幾つかのレンダリング・エンジンは、出力装置にこれらの2次元の出力を直接描く事が出来る。このグラフィック・レンダリング・エンジンは、プリミティブ・データを書き込み、各プリミティブ、および各画素のRGB色調の値を表す表示画面画素を計算する。
グラフィック・レンダリング・システム(あるいはサブシステム)は、本願明細書においては、アプリケーション・プログラムとグラフィック出力装置との間の全ての処理レベルについて言及している。グラフィック・エンジンは、ゾーン・レンダリングを含む1つ以上のレンダリング・モードを提供して良い。ゾーン・レンダリングは、レンダー・キャッシュを最適に用いる事によって、全体的な3Dレンダリングの性能を向上させる事を試み、その結果、画素の色調およびデプス・メモリ読書きボトルネックが低減される。ゾーン・レンダリングにおいて、スクリーンは多くのゾーンへと細分化され、各サブ・イメージをレンダリングするのに必要な命令を設定するプリミティブおよび状態の全部を保持するために使用されるゾーン毎の命令ビンが生成される。プリミティブがゾーンと交差する(または、交差する可能性がある)場合は常に、このプリミティブ命令が該ゾーンのためのビンに配置される。幾つかのプリミティブは、複数のゾーンと交差し得、その場合は、プリミティブ命令は、対応するビン中において複製される。このプロセスは、全シーンがビン中でソートされるまで継続される。プリミティブによって交差した各ゾーン用のビンを構築する第1パスに続いて、第2のゾーン毎のレンダリング・パスが実行される。具体的には、最終イメージを生成するために、全てのゾーンのためのビンがレンダリングされる。通常、各シーンは一度に1つのゾーンずつレンダリングされる。
ゾーン・レンダリングのようなタイル・レンダリング・アーキテクチャを実施するために、各像空間ゾーン(つまりビン)内において正確なグラフィックス・レンダリング状態変数を維持する事が非常に重要である、そのために、ビニング段階中にプリミティブが遭遇した時に存在したグラフィック状態によって各ビンのプリミティブを(レンダリング段階において)連続的にレンダリングする事が必要である。
プリミティブをこれらの適切なグラフィックス状態に関連させる1つの従来の方法として、遭遇した全てのグラフィックス状態のコピーを別々に維持し、プリミティブをレンダリングするために後に使用する特定の状態を識別する幾つかのタグ(つまりインデックス)と各プリミティブとを対応付ける。しかしながら、状態テーブルを個別に維持する事は複雑であり、(恐らくは各プリミティブ間における)状態の設定を完全にロードするには(メモリ・フットプリント、待ち時間および帯域幅に要する)コストが掛かるので、低コストかつ帯域幅が抑制された(例えば、統合された)グラフィックスシステムを実現する事は難しい。
従って、安価でかつより効率的なゾーン・レンダリング用グラフィック状態管理のための方法、装置、およびシステムが必要とされている。
本発明は、グラフィックイメージを生成するタイルベースのゾーン・レンダリング方法において使用するためのハードウェア状態ビニング・ロジックによってグラフィックス状態をトラッキング・管理するための経済的なメカニズムを提供する。本発明の実施形態において、動的な状態変数の現在値のみがハードウェア中に維持される。一実施形態において、動的な状態変数は、複数のプリミティブ間で変化すると考えられる変数を含むが、これに制限されるものでは無い。典型的な複数のシーンを通して一定または略一定である状態変数は通常は除外される。動的な状態変数のセットはサブグループへ細分される。各状態サブグループは、トラッキング・ビットのビン毎のアレイに対応付けられる。ビニング段階中に状態変化に遭遇する場合は常に、関連する状態グループに対応するトラッキング・ビットが、全てのビンに対して設定される。ビン中にプリミティブを配置するのに先立って、該ビンに対応するトラッキング・ビットが調べられ、設定済みトラッキング・ビットに対応する現在の状態が、プリミティブよりも前に該ビンに挿入される。その後、該ビンに対応するトラッキング・ビットがクリアーされる。
以下に詳述されるように、本発明は、ドライバ・ソフトウエア中の状態変化をトラッキングする必要性が無いという点においてゾーン・レンダリングのサポートを最適化し、従って、性能の向上とドライバの複雑さの低減につながる。任意の状態変数の変化をもたらす手段を提供する一方で動的な状態変数の(単一インスタンスの)オンチップ・ストレージのみをサポートし、ビットをトラッキングするためのオンチップでビン毎のストレージを例えば1つのビンに対して4ビットに削減することによって、ビニング状態管理のコストが最小化される。典型的な実施形態において、ビン毎のオンチップ・ストレージは4つのトラッキング・ビットのみに削減される。さらに、(a)サブグループ内の連続的な状態変化を縮小させることによって、(b)要求されていないテクスチャー・ブレンド段階およびテクスチャー・マップ状態データの更新を省略する事によって、および(c)状態サブグループ変化のために最適化された(および待ち時間の小さい)命令を提供することによって、状態変化帯域幅およびフットプリント用の要件が低減される。さらに、間接的に格納された状態配列および(または)キャッシュを管理するコストおよび複雑さが低減される。
この詳細な説明において、多数の特定の詳細が、本発明についての完全な理解を提供するために記載される。しかしながら、本発明がこれらの特定の詳細を用いる事無く実施され得る事が、当業者にとって理解されるであろう。また、公知の方法、手順、コンポーネントおよび回路は、本発明を不明瞭にしないような方法で詳細に記載される。
後述の詳細な説明の一部分は、コンピュータ内のデータ・ビット即ち二進信号に対する演算のアルゴリズムおよび記号による表示として記述される。これらのアルゴリズムの記述および描写は、或る当業者が他の当業者にこれらの作業の手順を伝達するために使用される手段である。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は、現在の動的状態サブグループ172およびビンごとのトラッキング・ビット174の実施形態170のブロック線図を示す。動的状態を複数のサブグループ172へ細分化することによって、トラッキングのための一定のレベルの細分性を提供し、動的な状態変数に対して変化を与える。典型的な実施形態において、動的な状態変数のセットは、4つのサブグループ172へ細分される。本願明細書において示され議論される構成は4つのサブグループ172にとって有利であるが、本発明は、任意の数の様態によって構成される任意の数のサブグループ172で利用する事が出来ると言う事を当業者は認識するであろう。
複数のトラッキング・ビン174が各ビン128(例えばビン0、ビン1、ビン2、・・・ビンn)と対応付けられ、各ビン・ビットは特定の動的状態サブグループ172と対応付けられる。特定のビン128用のトラッキング・ビット174が「設定された」場合、これは、このサブグループ172(および、例えばビンnといった特定のビン128)中の或る状態変数が、プリミティブ162が最後にビン128を出力してから変化したと言う事を示している。反対に、トラッキング・ビット174が「クリアーされた」場合、ビン128に対応した動的状態サブグループ172は、プリミティブ162が最後にビン128を出力してから変化していないと言う事を示している。典型的な実施例において、ビット毎の4ビット「トラッキング・ビット」ベクトル174は、4つの状態グループ172の変化をトラッキングするために用いられる。「テクスチャー・マップ」、「テクスチャー・ブレンド」、「基礎状態」および「スロー状態」サブグループのそれぞれが、通常512または1024個のビンを含む。512個のビンの場合、合計2Kビットとなる(つまり、4ビット・ベクトル/ビン×512ビン)。1024個のビンの場合で、合計4Kビットとなる(つまり、4ビット・ベクトル/ビン×1024ビン)。
初めに、動的な状態の完全なコンプリメントによって各ビン128を初期化するために、全てのトラッキング・ビット174が「設定」される。具体的には、ビン128にプリミティブ162を配置するのに先立って、ビン128に対応するトラッキング・ビット174が調べられ、設定されたトラッキング・ビット174に対応する現在の状態が、プリミティブ162の前にビン128に挿入される。その後、そのビン128用のトラッキング・ビット174がクリアーされる。典型的な実施形態において、状態ビット174のうちの多くは、それほど頻繁には変化しない。しかしながら、三角形の正確な状態がラスター化中に維持する事が出来るように、時間とともに変化したビット174のうちの任意のもの、またはその大半が識別され、ビン128に出力されなければならない。
具体的に、図4に示される状態グループ172は次のものを含んでいる。
(1)「基礎状態」サブグループ176――基礎状態トラッキング・ビット・アレイに関するこの状態変数は、頂点バッファ、頂点フォーマット、セットアップ、テクセル・ストリームおよび画素パイプライン状態変数を含むが、これらに制限されない。通常、これらの状態変数は、固定されたワードのシーケンスへ配列される。1つの特定の実施形態において、基礎状態変数に対する任意の変更のためには、要求されるビン128に対して全てのワードが出力される必要があるが、他の構成が同様に用いられ得るという事を当業者は認識するであろう。他の実施形態において、全てのビン128または「オープン」ビン128のより小さなサブセットのいずれかのための基礎状態変化の微細なトラッキングが実施されても良い。
(2)「テクスチャー・マップ」サブグループ178――テクスチャー・マップ状態トラッキング・ビット・アレイに関するこの状態変数は、ほとんどのテクスチャー・マップ・パラメタ、立方体マップ・フェース・イネーブルおよびテクスチャー・フィルタ・パラメタを含むが、これらに制限されない。この状態変数は、命令の一部としてグラフィックス・ビニング・エンジン126によって出力される。特定のビン128のためのテクスチャー・マップ状態トラッキング・ビットが設定されたと判った場合、グラフィックス・ビニング・エンジン126は現在のコンテクスト設定によって現在要求されているテクスチャー・マップに関するワードのみを出力する。どのテクセル・ストリームが入力として要求されているのかを確認しながら許可されたテクスチャー・ブレンド段階を調べ、続いて、どのテクスチャー・マップがこれらの要求されたテクセル・ストリームと対応しているかを調べる事によって、「現在用いられている」マップが決定される。
(3)「テクスチャー・ブレンド」サブグループ180――テクスチャー・ブレンド状態トラッキング・ビット・アレイに関するこの状態変数は、テクスチャー・マップ・ブレンド段階を制御するために用いられる状態変数を含むが、これに制限されない。典型的な実施例において、状態変数は、1〜4のテクスチャー・マップ・ブレンド段階ユニットの制御のために、グローバル制御およびテクスチャー・ブレンド・カラー、アルファ、制御段階パラメタを含んでいる。これらの状態変数は、命令の一部としてグラフィックス・ビニング・エンジン126によって出力される。特定のビン128のためのテクスチャー・ブレンド状態トラッキング・ビットが設定されたと判った場合、グラフィックス・ビニング・エンジン126は、「有効化されたテクスチャー・ブレンド段階の数」の現在の設定によって要求されるワードのみを出力する。
(4)「スロー状態」サブグループ182――スロー状態トラッキング・ビット・アレイに関するこの状態変数は、「スロー状態ポインタ」である。スロー状態ポインタは、基礎、テクスチャー・ブレンド、およびテクスチャー・マップ状態サブグループ176、178および180のような他の状態サブグループに含まれない全ての状態ポインタを間接的に制御する。典型的な実施形態において、では、低位の状態変化および(または)それほど頻繁に変化しない命令は、スロー状態バッファ166に配置される。また、これらのポインタは、命令167によってスロー状態バッファ166のみに引き渡される。
「スロー状態」グループは、残りのパイプライン化されていない(または少数の低周波数でパイプライン化された)状態変数を含んでいる。「スロー状態」状態変数に対する変更は、グラフィックス・ビニング・エンジン126に直接送信されない。むしろ、図2に示されるように、これらの変数の初期値+デルタ状態変化を含むスロー状態バッファ166は、全ての「スロー」状態変数の現在の状態を定義するために十分である。これによって、スロー状態ポインタのみをグラフィックス・ビニング・エンジン126に送信すれば良い。スロー状態ポインタへの変更は必要に応じてビン128に配置され、スロー状態変数を更新するために、レンダリング中にスロー状態バッファ166の必要な読み取りを開始する。前の値とレンダリングされているページの終端との間に新しい値がある場合にのみ、グラフィックス・レンダリング・エンジン136は、スロー状態「ポインタ」の先回と今回との間のバッファ付き命令を実行する。そうで無い場合は、グラフィックス・レンダリング・エンジン136は、新しいスロー状態ポインタによって指定されたページの先頭から、新しいスロー状態ポインタによって指定されたDwordまで(但し、該Dwordは含まない)の命令を実行する。これによって、全てのスロー状態変数が初期値へと設定され、そして、新しいスロー状態ポインタによって指定されたDwordまで(但し、該Dwordは含まない)のデルタ状態変化が続いて適用される。
具体的に、シーン入力リスト124と称されるグラフィックスプリミティブおよび状態設定命令ストリームは、グラフィックス・ビニング・エンジン126に対応するグラフィックス・ビニング・エンジン・リング・バッファ125に先ず適用される。グラフィックス・ビニング・エンジン126はシーン入力リスト124を解析し、どのゾーン164が各個々プリミティブ162と交差するかを決定する。
グラフィックス・ビニング・エンジン126は、シーン入力リスト124に含まれる対応する状態設定命令の解析によって現在のグラフィックス状態を維持する。任意のビン128にプリミティブ・コマンドを配置するのに先立って、グラフィックス・ビニング・エンジン126は、状態設定命令167を備えたビン128中のプリミティブ・コマンドを実行する。
ビン0用のスロー状態トラッキング・ビット183が変化を示す場合、スロー状態「ポインタ」がビン128に出力される。その後、スロー状態トラッキング・ビット183がクリアーされる。スロー状態トラッキング・ビット183が変化を示さない場合、スロー状態ポインタはビン0に出力されない。
スロー状態バッファ166は、スロー状態変数のための初期値およびデルタ状態変化を格納する。これらのスロー状態バッファ166のうちの1つに対する単一のポインタは、全ての「スロー」状態変数の現在の状態を定義するのに十分である。スロー状態バッファ166は、状態メモリ108あるいは専用のメモリのいずれかに位置して良い。典型的な実施形態において、低位の状態変化および(または)頻繁に変更されない命令は、スロー状態バッファ166に配置される。また、ビナーポインタは命令167によってのみスロー状態バッファへ引き渡される。一旦全てのプリミティブとスロー状態ポインタを含む状態命令がビニングされると、シーンの1ゾーン164を一回でレンダリングするために第2パスが実行される。最終イメージを生成するためにビン128がレンダリングされ、各シーンにおいて、一度に1つのゾーン164がレンダリングされる。レンダリング中に、グラフィック・レンダリング・エンジン136は、スロー状態変数を更新するために、ビニングされたスロー状態ポインタに基づいてスロー状態バッファ166の必要な読み取りを開始する。グラフィックス・レンダリング・エンジン136は、前回のスロー状態「ポインタ」と新しいスロー状態「ポインタ」との間のバッファ付き命令を実行する。
図5は、ビン128中のプリミティブ162に対応するプリミティブ命令を配置するのに先立って任意の必要な状態変化を出力するための(ステップ192〜208)、およびデルタ状態変化を調べて状態およびビン毎のトラッキング・ビット174を更新するための(ステップ212〜222)実施形態190を示すフローチャートである。この最適化によって、不必要な状態の複製が最小限にされる。
具体的に、特定のビン128にプリミティブ命令を配置するのに先立って、グラフィックス・ビニング・エンジン126は、少なくともレンダリング段階においてプリミティブ162が正確にレンダリングされ得る点までは該特定のビン128の状態が一定である事を保証する。これは、ビン128へプリミティブ命令を出力するのに先立って、現在使用されていない状態を出力する必要は無いという事を意味する。例えば、無効化されたテクスチャー・ブレンド状態や使用されていないテクスチャー・マップ設定がビン128に出力される必要は無い。
プリミティブ162に遭遇する場合(ステップ192)、本発明は、どのゾーン164がプリミティブ162と交差するかを決定する(ステップ194)。交差したゾーン164に対応する各ビン128については(ステップ196)、各サブグループ・トラッキング・ビット174が調べられる(ステップ198)。特定のサブグループ用のトラッキング・ビット174が設定される場合(ステップ199)、この特定のサブグループ172の現在値がビン128に出力される(ステップ200)。トラッキング・ビット174に対応する関連した状態サブグループ172が「使用済み」となる場合、トラッキング・ビット174は「設定された」と見做される。
例えば、先ず、基礎状態サブグループ176用のサブグループ・トラッキング・ビット177は、ビン0のために調べられて良い。その後、その特定のビン128用のサブグループ・トラッキング・ビット174がクリアーされる(ステップ202)。または、特定のサブグループのためのトラッキング・ビットが設定されない場合、特定のサブグループ172の現在値はビン128に出力されない(ステップ201)。
その後、ビン128用の次のサブグループ・トラッキング・ビット174が調べられる。また、ステップ198、200および202が、ビン128中の各ビット174のために繰り返される(ステップ204)。例えば、ビン0のためのテクスチャー・マップ・サブグループ178用のトラッキング・ビット179が次に検査されて良い。
サブグループ172に対応する全てのトラッキング・ビット174が特定のビン128のために検査された後に、プリミティブ命令がビン128に出力される(ステップ206)。その後、プリミティブ162によって交差するゾーン164に対応する次のビン128のためのサブグループ172のトラッキング・ビット174が調べられる(ステップ208)。
例えば、図4を参照して、ビン0に対応する基礎状態トラッキング・ビット177が変化を示す場合、基礎状態サブグループ176の現在値はビン0に出力される。その後、基礎状態トラッキング・ビット177はクリアーされる。基礎状態トラッキング・ビット177が変化を示さない場合、値はビン0に出力されない。
その後、次のサブグループ172用のトラッキング・ビット174が調べられる。例えば、ビン0用のテクスチャー・マップ状態トラッキング・ビット179が変化を示す場合、テクスチャー・マップ状態178の現在値が出力される。その後、ビット179をトラッキングするテクスチャー・マップ状態がクリアーされる。ビット179をトラッキングするテクスチャー・マップ状態が変化を示さない場合、値はビン0に出力されない。
同様に、ビン0用のテクスチャー・ブレンド状態トラッキング・ビット181が変化を示す場合、テクスチャー・ブレンド状態180の現在値が出力される。その後、テクスチャー・ブレンド状態トラッキング・ビット181がクリアーされる。テクスチャー・マップ状態トラッキング・ビット179が変化を示さない場合、値はビン0に出力されない。
ビン0用のスロー状態トラッキング・ビット183が変化を示す場合、スロー状態ポインタがビン0に出力される。その後、スロー状態トラッキング・ビット183がクリアーされる。スロー状態トラッキング・ビット183が変化を示さない場合、スロー状態ポインタはビン0に出力されない。
トラッキング・ビット174は、このように古くなったリソースが使用される可能性を取り除く。例えば、(a)もし現在未使用のテクスチャー・マップに対する変更が行なわれる場合、(b)プリミティブ162が引き出され(未使用の状態を出力しないでそれぞれのテクスチャー・マップ・トラッキング・ビット179をクリアーする)、(c)テクスチャー・マップが「そのままの状態で」(つまりマップ自体への変化無しで)使用されるように状態変化がなされる。特殊扱いをしない限り、古くなったテクスチャー・マップは不正確に使用されるであろう。本発明において、テクスチャー・マップが(テクスチャー・マップ状態への状態変化の結果)「使用済み」となる場合にテクスチャー・マップ・トラッキング・ビット179が設定されるので、古くなったリソースが使用される可能性が取り除かれる。
状態設定グラフィックス命令の最適化されたバージョンは、動的状態変数サブグループ172のそれぞれを別々に更新するために使用される。これらの最適化命令がビン128に含まれる事によって、間接状態命令の読み込みの複雑さと待ち時間が大幅に減少し、これによって、コストの削減と性能の向上が同時に達成される。具体的に、図5はデルタ状態変化の調査と、状態およびビン毎のトラッキング・ビット174の更新を示す(ステップ212〜222)。グラフィックス・ビニング・エンジン126は、ビン128毎に、およびサブグループ172毎に状態の変化を維持・トラッキングする事によって、全てのビン128に対する全ての状態変化の不必要な配信を防ぐ。ビン128の状態は、ビン128に配置済みのプリミティブ命令に先立って優先的に更新される。ビニングされている複数のプリミティブ命令間の同じ状態サブグループ172内に生じる複数の変化は、ビン128への1つのサブグループの変化出力へと縮小される。
ステップ212〜222は、シーンのキャプチャー段階中に効率的に状態変化を管理するために格納された現在の動的な状態およびビン毎のトラッキング・ビット174を使用するために実施される。状態変化をビン128毎に、および状態グループ172毎にトラッキングする事によって、グラフィックス・ビニング・エンジン126は、プリミティブ162がビン128に最後に配置されて以来変更された該ビン用の状態サブグループ172のみを更新する。
初めに、状態変化に遭遇する場合(ステップ212)、対応する動的な状態サブグループ172が決定される(ステップ214)。その後、特定の状態変数の前回の値が決定される(ステップ216)。
状態の新しい値が状態の現在値と異なっている場合(ステップ218)、ビン128用の対応するサブグループ・トラッキング・ビット174が設定される(ステップ220)。その後、状態の新しい値によって現在の状態が更新される(ステップ222)。
スロー状態ポインタ:状態変化が「スロー状態ポインタ」を修正する場合、各ビン(i)のスロー状態トラッキング・ビット(i)が設定される。これらの状態変化は、影響を受けたサブグループのそれぞれの現在の状態に適用される。
基礎状態:例えば、状態変化が「基礎状態」を修正する場合、各ビン(i)の基礎状態トラッキング・ビット(i)が設定される。
テクスチャー・マップ:状態変化が、必要とされるテクスチャー・マップ(0…3)を設定させる場合、ビン(i)のテクスチャー・マップ状態トラッキング・ビット(i)が設定される。状態変化がテクスチャー・マップ(0…3)を修正する場合、各ビン(i)のテクスチャー・マップ状態トラッキング・ビット(i)が設定される。
テクスチャー・ブレンド:状態変化が必要な「カラー要因」を修正する場合、各ビン(i)のテクスチャー・ブレンド状態トラッキング・ビット(i)が設定される。有効化されたテクスチャー・ブレンド段階の数を状態変化が増加させる場合、各ビン(i)のテクスチャー・ブレンド状態トラッキング・ビット(i)が設定される。
図6は、どの特定のテクスチャー・マップまたはテクスチャー・ブレンド段階に対応した状態がビン128に出力される必要があるかを特に検出するための最適化の実施形態230を示すフローチャートである。具体的に、テクスチャー・マップまたはテクスチャー・ブレンド状態に対応するサブグループ・トラッキング・ビット174が設定されているという事が判った場合、特定のテクスチャー・マップまたはテクスチャー・ブレンド状態に関する状態情報のみがビン128に出力される。使用済みのテクスチャー・マップあるいはテクスチャー・ブレンド段階に関する情報のみがビン128に出力される。これにより、新たに必要とされる状態またはマップのみが交差するビンに出力される事を保障することによって、古いテクスチャー・ブレンドまたはテクスチャー・マップ状態が使用される事を防止する。(a)現在用いられているマップ/段階に関する状態に変更が為された場合、または、(b)以前に未使用であったマップ/段階が、他の状態変数に対する変更によって「使用済み」となった場合、このサブグループ・トラッキング・ビット174が設定される。後者に関して、例えば、テクスチャー・ブレンドまたはテクスチャー・マップは、対応する状態変化(例えば基礎状態変化)の結果として「使用済み」となる。
各ビン128に関して、プリミティブ162が交差し(ステップ232)、テクスチャー・マップおよび(または)ビン128に対応するブレンド・サブグループ・トラッキング・ビット174が調べられる(ステップ234)。トラッキング・ビット174が設定される場合(ステップ240)、マップ/ステージが調べられる(ステップ238〜244)。テクスチャー・マップ/段階に変化が存在する場合(ステップ240)、テクスチャー・マップ/段階はビン128に出力される(ステップ242)。その後、次のテクスチャー・マップ/段階が調べられる(ステップ244)。例えば、テクスチャー・ブレンド状態トラッキング・ビット(i)が設定される場合(ステップ236)、変更された特定のテクスチャー・ブレンド段階がビン128に出力される。具体的に、テクスチャー・ブレンド段階0が変更された場合、テクスチャー・ブレンド段階1が出力される。テクスチャー・ブレンド段階1が変更された場合、テクスチャー・ブレンド段階2が出力される。テクスチャー・ブレンド段階2が最終段階に達した場合、テクスチャー・ブレンド段階3が出力される(以下同様)。その後、テクスチャー・ブレンド状態トラッキング・ビットがクリアーされる(ステップ246)。
テクスチャー・マップ状態トラッキング・ビット(i)が設定される場合(ステップ232)、変更された特定のテクスチャー・マップがビン128に出力される。具体的に、テクスチャー・マップ[0]が変更される場合、テクスチャー・マップ0が出力される。テクスチャー・マップ[1]が変更される場合、テクスチャー・マップ1が出力される。テクスチャー・マップ[2]が変更される場合、テクスチャー・マップ2が出力される。テクスチャー・マップ[3]が変更される場合、テクスチャー・マップ3は出力される(以下同様)。その後、テクスチャー・マップ状態トラッキング・ビットがクリアーされる(ステップ246)。
トラッキング・ビット174が変化を示さない場合、プリミティブ162が引き出され、ビン128に不必要な状態を出力する事無くそれぞれのテクスチャー・ブレンド段階またはテクスチャー・マップ/段階トラッキング・ビットがクリアーされる。
以上、特許法の必要条件に従って本発明を記載したが、当業者は、これらの特定の要求または条件を満たすために本発明に対して特定の改変および変更を実行する方法を理解する。この種の改変および変更は、添付の特許請求の範囲にて説明される本発明の範囲および精神から逸脱する事無く為され得るものである。
ゾーン・レンダリングにおける自動メモリ管理用グラフィック装置の実施形態を備えるコンピュータ・システムの実施形態のブロック線図である。 デルタ状態を含むシーン入力リストを処理するためのグラフィック・ビニング・エンジンと、グラフィック・レンダリング・エンジンおよびビンを備えるグラフィック装置の実施形態のブロック線図である。 ゾーンおよび幾何学的なプリミティブを含むゾーン・レンダラー・スクリーンの実施形態の例を示す。 動的状態サブグループおよびビン毎のトラッキング・ビットの実施形態を示すブロック線図である。 ビン中にプリミティブを配置するのに先立って必要な任意の状態変化を出力するプロセス、および、ゾーン・レンダリングのシーン・キャプチャ段階において効率的に状態変化を管理するために、格納された現在の動的状態とビン毎のトラッキング・ビット・ベクトルを使用するプロセスの実施形態を示すフローチャートである。 どのテクスチャー・マップおよびテクスチャー・ブレンド段階が必要であるかの検出を最適化するプロセスの実施形態を示すフローチャートである。

Claims (38)

  1. プリミティブをレンダリングするための状態変数を管理する方法であって、
    前記プリミティブに関する命令および現在の状態の情報を格納する複数のメモリ領域を定義するステップと、
    前記プリミティブに関する状態変数を定義するステップと、
    状態変数を複数のサブグループにソートするステップと、
    前記複数のメモリ領域のそれぞれを複数のトラッキング・ビットに関連付けるステップと、
    前記プリミティブ命令が前記メモリ領域に前回出力されて以来の状態変数の変化に応じて前記トラッキング・ビットを設定するステップと、
    前記設定済みトラッキング・ビットに応じて、前記サブグループに関する現在の状態の情報を前記複数のメモリ領域のうちの一つに出力するステップと
    を備え、
    各トラッキング・ビットが、サブグループおよび前記複数のメモリ領域の1つに対応する、
    方法。
  2. 前記現在の状態の情報が前記複数のメモリ領域の1つに出力された後に、前記トラッキング・ビットをクリアーするステップを更に備える、請求項1に記載の方法。
  3. 状態変数を複数のサブグループにソートするステップが、
    基礎状態関数に関する状態変数をソートするステップを更に備える、
    請求項1に記載の方法。
  4. 状態変数を複数のサブグループにソートするステップが、
    テクスチャー・マップ関数に関する状態変数をソートするステップを更に備える、
    請求項1に記載の方法。
  5. 状態変数を複数のサブグループにソートするステップが、
    テクスチャー・ブレンド関数に関する状態変数をソートするステップを更に備える、
    請求項1に記載の方法。
  6. 状態変数を複数のサブグループにソートするステップが、
    スロー状態関数に関する状態変数をソートするステップを更に備える、
    請求項1に記載の方法。
  7. 前記プリミティブ命令が前記メモリ領域に前回出力されて以来の状態変数の変化に応じて前記トラッキング・ビットを設定するステップが、
    状態変化が生じたかどうかを決定するステップと、
    どのサブグループが前記状態変化に対応しているかを決定するステップと、
    状態変数の新しい値と前の値を決定するステップと、
    前記新しい値と前の値が異なる場合に、前記対応するサブグループ・トラッキング・ビットを設定するステップと
    を備える、請求項1に記載の方法。
  8. 状態情報を格納する複数の付加メモリ領域を定義するステップと、
    前記複数の付加メモリ領域用のレファレンスを定義するステップと、
    前記複数の付加メモリ領域へ選択された状態グループ情報を格納するステップと
    を更に備える、請求項1に記載の方法。
  9. 設定済み前記サブグループに応じて、前記サブグループに対応する現在の状態の情報を前記複数のメモリ領域のうちの一つに出力するステップが、
    前記トラッキング・ビットが設定される時、前記複数のメモリ領域のうちの1つへ前記サブグループに対応する前記レファレンスを出力するステップと、
    前記レファレンスに基づいて、レンダリング中に前記複数の付加メモリ領域のうちの1つに格納されたレファレンス情報を検索するステップと
    を更に備える、請求項8に記載の方法。
  10. 前記付加メモリ領域へ選択された状態グループ情報を格納するステップが、
    スロー状態関数に対応付けられた状態変数を前記複数の付加メモリ領域へ格納するステップ
    を更に備える、請求項9に記載の方法。
  11. 前記複数の付加メモリ領域用のレファレンスを定義するステップが、
    前記付加メモリ領域のスロー状態情報が格納される箇所へのポインタを定義するステップ
    を更に備える、請求項10に記載の方法。
  12. プリミティブを含むシーンをレンダリングする装置であって、
    プリミティブが交差する領域に対応する複数のビニング・メモリ領域と、
    プリミティブ命令が前記メモリ領域に前回出力されて以来に影響された状態変数のインジケータを格納するトラッキング・メモリ領域と、
    前記トラッキング・インジケータに応答し、状態変数の現在の状態の情報をビニングするビニング・エンジンと、
    前記メモリ領域に格納された前記現在の情報をレンダリングするレンダリング・エンジンと
    を備える、装置。
  13. 前記現在の情報が、プリミティブ命令が前回前記メモリ領域に出力されて以来変更された状態変数を含む、請求項12に記載の装置。
  14. 前記現在の情報がレファレンスを含む、請求項12に記載の装置。
  15. 前記状態変数が、少なくとも1つの状態グループと対応している、請求項13に記載の装置。
  16. 前記少なくとも1つの状態グループが、基礎状態関数を含む、請求項15に記載の装置。
  17. 前記少なくとも1つの状態グループが、テクスチャー・マップ関数を含む、請求項15に記載の装置。
  18. 前記少なくとも1つの状態グループが、テクスチャー・ブレンド関数を含む、請求項15に記載の装置。
  19. 前記少なくとも1つの状態グループが、スロー状態関数を含む、請求項15に記載の装置。
  20. 前記トラッキング情報が、複数のトラッキング・ビットを含み、
    各トラッキング・ビットが、ビニング・メモリ領域およびサブグループと対応付けられる、
    請求項12に記載の装置。
  21. プリミティブ命令が前記メモリ領域に前回出力されて以来に影響された状態変数のインジケータを格納するトラッキング・メモリ領域が、
    プリミティブ命令が前記メモリ領域に前回出力されて以来に変更された状態変数のインジケータを格納するトラッキング・メモリ領域を更に備える、
    請求項12に記載の装置。
  22. プリミティブ命令が前記メモリ領域に前回出力されて以来に影響された状態変数のインジケータを格納するトラッキング・メモリ領域が、
    プリミティブ命令が前記メモリ領域に前回出力されて以来に使用された状態変数のインジケータを格納するトラッキング・メモリ領域を更に備える
    請求項12に記載の装置。
  23. 複数の付加メモリ領域を備える、請求項14に記載の装置。
  24. 前記複数の付加メモリ領域が、スロー状態状態変数を格納する、請求項23に記載の装置。
  25. 前記レファレンスが、前記付加メモリ領域へのポインタを備える、請求項24に記載の装置。
  26. 前記ビニング・エンジンが、前記トラッキング・インジケータに反応して、前記複数のビニング・メモリ領域のうちの1つの中のレファレンスをビニングする、請求項25に記載の装置。
  27. 前記レンダリング・エンジンが、前記複数の付加メモリ領域の少なくとも1つからスロー状態情報を検索するために前記レファレンスを利用する、請求項26に記載の装置。
  28. プリミティブをレンダリングする状態を管理するプロセッサによって実行可能な複数の機械可読命令を格納した機械可読媒体であって、前記機械可読命令が、
    前記プリミティブに関する命令および現在の状態の情報を格納する複数のメモリ領域を定義させる命令と、
    前記プリミティブに関する状態変数を定義させる命令と、
    状態変数を複数のサブグループにソートさせる命令と、
    前記複数のメモリ領域のそれぞれを複数のトラッキング・ビットに関連付けさせる命令と、
    前記プリミティブ命令が前記メモリ領域に前回出力されて以来の状態変数の変化に応じて前記トラッキング・ビットを設定させる命令と、
    前記設定済みトラッキング・ビットに応じて、前記サブグループに関する現在の状態の情報を前記複数のメモリ領域のうちの一つに出力させる命令と
    を備え、
    各トラッキング・ビットが、サブグループおよび前記複数のメモリ領域の1つに対応する、
    機械可読媒体。
  29. 前記現在の状態の情報が前記複数のメモリ領域の1つに出力された後に、前記トラッキング・ビットをクリアーさせる命令を更に備える、請求項28に記載の機械可読媒体。
  30. 状態変数を複数のサブグループにソートさせる命令が、
    基礎状態関数に関する状態変数をソートさせる命令を更に備える、
    請求項28に記載の機械可読媒体。
  31. 状態変数を複数のサブグループにソートさせる命令が、
    テクスチャー・マップ関数に関する状態変数をソートさせる命令を更に備える、
    請求項28に記載の機械可読媒体。
  32. 状態変数を複数のサブグループにソートさせる命令が、
    テクスチャー・ブレンド関数に関する状態変数をソートさせる命令を更に備える、
    請求項28に記載の機械可読媒体。
  33. 状態変数を複数のサブグループにソートさせる命令が、
    スロー状態関数に関する状態変数をソートさせる命令を更に備える、
    請求項28に記載の機械可読媒体。
  34. 前記プリミティブ命令が前記メモリ領域に前回出力されて以来の状態変数の変化に応じて前記トラッキング・ビットを設定させる命令が、
    状態変化が生じたかどうかを決定させる命令と、
    どのサブグループが前記状態変化に対応しているかを決定させる命令と、
    状態変数の新しい値と前の値を決定させる命令と、
    前記新しい値と前の値が異なる場合に、前記対応するサブグループ・トラッキング・ビットを設定させる命令と
    を備える、請求項28に記載の機械可読媒体。
  35. 状態情報を格納する複数の付加メモリ領域を定義させる命令と、
    前記複数の付加メモリ領域用のレファレンスを定義させる命令と、
    前記複数の付加メモリ領域へ選択された状態グループ情報を格納させる命令と
    を更に備える、請求項28に記載の機械可読媒体。
  36. 設定済み前記サブグループに応じて、前記サブグループに対応する現在の状態の情報を前記複数のメモリ領域のうちの一つに出力させる命令が、
    前記トラッキング・ビットが設定される時、前記複数のメモリ領域のうちの1つへ前記サブグループに対応する前記レファレンスを出力させる命令と、
    前記レファレンスに基づいて、レンダリング中に前記複数の付加メモリ領域のうちの1つに格納されたレファレンス情報を検索させる命令と
    を更に備える、請求項35に記載の機械可読媒体。
  37. 前記付加メモリ領域へ選択された状態グループ情報を格納させる命令が、
    スロー状態関数に対応付けられた状態変数を前記複数の付加メモリ領域へ格納させる命令
    を更に備える、請求項36に記載の機械可読媒体。
  38. 前記複数の付加メモリ領域用のレファレンスを定義させる命令が、
    前記付加メモリ領域のスロー状態情報が格納される箇所へのポインタを定義させる命令
    を更に備える、請求項37に記載の機械可読媒体。
JP2003558795A 2001-12-31 2002-12-12 ゾーン・レンダリングのための効率的なグラフィックス状態管理 Expired - Fee Related JP4076502B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/039,007 US6738069B2 (en) 2001-12-31 2001-12-31 Efficient graphics state management for zone rendering
PCT/US2002/040170 WO2003058557A1 (en) 2001-12-31 2002-12-12 Eeficient graphics state management for zone rendering

Publications (3)

Publication Number Publication Date
JP2005514711A true JP2005514711A (ja) 2005-05-19
JP2005514711A5 JP2005514711A5 (ja) 2006-01-05
JP4076502B2 JP4076502B2 (ja) 2008-04-16

Family

ID=21903146

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003558795A Expired - Fee Related JP4076502B2 (ja) 2001-12-31 2002-12-12 ゾーン・レンダリングのための効率的なグラフィックス状態管理

Country Status (8)

Country Link
US (2) US6738069B2 (ja)
EP (1) EP1461774A1 (ja)
JP (1) JP4076502B2 (ja)
KR (1) KR100635437B1 (ja)
CN (1) CN1287330C (ja)
AU (1) AU2002367349A1 (ja)
TW (1) TWI281639B (ja)
WO (1) WO2003058557A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010027050A (ja) * 2008-07-16 2010-02-04 Arm Ltd グラフィック処理の監視
JP2013175191A (ja) * 2012-02-27 2013-09-05 Samsung Electronics Co Ltd レンダリング装置及びその方法
JP2016184419A (ja) * 2013-10-07 2016-10-20 インテル コーポレイション 選択的ラスタライゼーション
JP2017517799A (ja) * 2014-05-14 2017-06-29 インテル・コーポレーション ソートミドルアーキテクチャにおけるフレームのフレームコヒーレンシへの活用

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7173627B2 (en) * 2001-06-29 2007-02-06 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a graphics context manager
US6738069B2 (en) * 2001-12-31 2004-05-18 Intel Corporation Efficient graphics state management for zone rendering
US7385608B1 (en) * 2003-12-31 2008-06-10 3Dlabs Inc. Ltd. State tracking methodology
GB0425204D0 (en) * 2004-11-15 2004-12-15 Falanx Microsystems As Processing of 3-dimensional graphics
US8284204B2 (en) * 2006-06-30 2012-10-09 Nokia Corporation Apparatus, method and a computer program product for providing a unified graphics pipeline for stereoscopic rendering
KR100762811B1 (ko) * 2006-07-20 2007-10-02 삼성전자주식회사 하프 플레인 에지 함수를 이용한 타일 비닝 방법 및 시스템
US20080055327A1 (en) * 2006-09-06 2008-03-06 Barinder Singh Rai Highly Efficient Display FIFO
US7880747B1 (en) * 2006-12-13 2011-02-01 Nvidia Corporation Blend optimizations that are conformant to floating-point rules
GB0823254D0 (en) 2008-12-19 2009-01-28 Imagination Tech Ltd Multi level display control list in tile based 3D computer graphics system
US8786619B2 (en) * 2011-02-25 2014-07-22 Adobe Systems Incorporated Parallelized definition and display of content in a scripting environment
KR101136737B1 (ko) 2011-10-07 2012-04-19 (주)넥셀 그래픽 처리방법 및 그 장치
US10169906B2 (en) * 2013-03-29 2019-01-01 Advanced Micro Devices, Inc. Hybrid render with deferred primitive batch binning
US10957094B2 (en) 2013-03-29 2021-03-23 Advanced Micro Devices, Inc. Hybrid render with preferred primitive batch binning and sorting
US11302054B2 (en) 2014-04-05 2022-04-12 Sony Interactive Entertainment Europe Limited Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US10068311B2 (en) 2014-04-05 2018-09-04 Sony Interacive Entertainment LLC Varying effective resolution by screen location by changing active color sample count within multiple render targets
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US9710957B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Graphics processing enhancement by tracking object and/or primitive identifiers
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US9865074B2 (en) 2014-04-05 2018-01-09 Sony Interactive Entertainment America Llc Method for efficient construction of high resolution display buffers
US10438312B2 (en) 2014-04-05 2019-10-08 Sony Interactive Entertainment LLC Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
GB2526598B (en) * 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
KR102482874B1 (ko) * 2015-09-11 2022-12-29 삼성전자 주식회사 렌더링 장치 및 방법
KR102644276B1 (ko) 2016-10-10 2024-03-06 삼성전자주식회사 그래픽 처리 장치 및 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6469704B1 (en) * 1999-01-19 2002-10-22 Hewlett-Packard Company System and method for combined execution of graphics primitive data sets
US6344852B1 (en) * 1999-03-17 2002-02-05 Nvidia Corporation Optimized system and method for binning of graphics data
US6384833B1 (en) * 1999-08-10 2002-05-07 International Business Machines Corporation Method and parallelizing geometric processing in a graphics rendering pipeline
US6819321B1 (en) 2000-03-31 2004-11-16 Intel Corporation Method and apparatus for processing 2D operations in a tiled graphics architecture
JP2003529860A (ja) 2000-03-31 2003-10-07 インテル・コーポレーション タイル型グラフィックス・アーキテクチャ
US6741243B2 (en) 2000-05-01 2004-05-25 Broadcom Corporation Method and system for reducing overflows in a computer graphics system
US6557083B1 (en) * 2000-06-30 2003-04-29 Intel Corporation Memory system for multiple data types
US6567084B1 (en) * 2000-07-27 2003-05-20 Ati International Srl Lighting effect computation circuit and method therefore
US6738069B2 (en) * 2001-12-31 2004-05-18 Intel Corporation Efficient graphics state management for zone rendering

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010027050A (ja) * 2008-07-16 2010-02-04 Arm Ltd グラフィック処理の監視
US8339414B2 (en) 2008-07-16 2012-12-25 Arm Limited Monitoring graphics processing
JP2013175191A (ja) * 2012-02-27 2013-09-05 Samsung Electronics Co Ltd レンダリング装置及びその方法
US9805502B2 (en) 2012-02-27 2017-10-31 Samsung Electronics Co., Ltd. Rendering system and method
JP2016184419A (ja) * 2013-10-07 2016-10-20 インテル コーポレイション 選択的ラスタライゼーション
JP2017194985A (ja) * 2013-10-07 2017-10-26 インテル コーポレイション 選択的ラスタライゼーション
JP2017194984A (ja) * 2013-10-07 2017-10-26 インテル コーポレイション 選択的ラスタライゼーション
JP2017517799A (ja) * 2014-05-14 2017-06-29 インテル・コーポレーション ソートミドルアーキテクチャにおけるフレームのフレームコヒーレンシへの活用
JP2017215997A (ja) * 2014-05-14 2017-12-07 インテル・コーポレーション 装置、方法およびシステム
US9922393B2 (en) 2014-05-14 2018-03-20 Intel Corporation Exploiting frame to frame coherency in a sort-middle architecture
US9940686B2 (en) 2014-05-14 2018-04-10 Intel Corporation Exploiting frame to frame coherency in a sort-middle architecture

Also Published As

Publication number Publication date
CN1610926A (zh) 2005-04-27
EP1461774A1 (en) 2004-09-29
CN1287330C (zh) 2006-11-29
AU2002367349A1 (en) 2003-07-24
US20040160450A1 (en) 2004-08-19
WO2003058557A1 (en) 2003-07-17
TW200303495A (en) 2003-09-01
US6738069B2 (en) 2004-05-18
JP4076502B2 (ja) 2008-04-16
US20030122833A1 (en) 2003-07-03
KR100635437B1 (ko) 2006-10-19
KR20040072694A (ko) 2004-08-18
TWI281639B (en) 2007-05-21

Similar Documents

Publication Publication Date Title
JP4076502B2 (ja) ゾーン・レンダリングのための効率的なグラフィックス状態管理
JP4071196B2 (ja) ゾーン・レンダリング用の自動メモリ管理
JP5053857B2 (ja) 3次元グラフィックス処理装置および方法
JP5336067B2 (ja) グラフィックスを処理する方法および装置
US11170555B2 (en) Graphics processing systems
US6954208B2 (en) Depth write disable for rendering
US7791601B2 (en) Efficient object storage for zone rendering
US6950108B2 (en) Bandwidth reduction for rendering using vertex data
US11210847B2 (en) Graphics processing systems
US20030043171A1 (en) Method, apparatus and system for determining an intersection method for a zone renderer
US20030123089A1 (en) Graphics state bandwidth reduction for zone rendering

Legal Events

Date Code Title Description
A521 Written amendment

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: 20070807

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071107

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071114

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071128

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: 20080122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080129

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: 20110208

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120208

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120208

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130208

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140208

Year of fee payment: 6

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