説明

タイルベース・レンダリング・システムにおけるマルチコアの形状処理

【課題】多数のタイルベースの並列コアにわたるタイリング処理能力の向上。
【解決手段】多数の独立型タイルベース・グラフィック・コアを組み合わせるための方法及び装置が提供される。入ってくる形状ストリームは、複数のストリームに分割され、それぞれのタイルベースのグラフィックス処理コアに送られる。それぞれが別個のタイリングされた形状リストを生成する。これらは、マスター・タイリング・ユニットに組み合わせることができ、或いは代替的に、マーカーをタイリングされた形状リストに挿入することもでき、このマーカーがラスター化段階で用いられ、異なる形状処理コアからのタイリング・リスト間で切り替えを行なう。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、三次元コンピュータ・グラフィックス・レンダリング・システムに関し、具体的には、形状処理(geometry processing)性能を向上させるために、多数の独立型タイルベース・グラフィックス・コアを組み合わせることに関連した方法及び装置に関する。
【背景技術】
【0002】
例えば基本的な手持ち式用途のものから高度な専用グラフィック・コンピュータまでといった、多くの異なる性能レベルのコンピュータ・グラフィックス処理コアを提供することが望ましいが、現代のコンピュータ・グラフィックスの複雑さにより、これをタイムリーに、或いは費用対効果が大きい方法で行なうことは困難である。従って、新しいコア全体を開発しないで、性能を向上させることができるように、多数の独立型コアを組み合わせる方法を有することが望ましい。
【0003】
タイルベースのレンダリング・システムは、公知である。このシステムは、画像を複数の矩形のブロック又はタイルに細分する。図1は、タイルベースのレンダリング・システムの例を示す。プリミティブ/コマンド・フェッチ・ユニット101が、メモリからコマンド及びプリミティブ・データを取り出し、これを形状処理ユニット102に送る。この形状処理ユニット102は、周知の方法を用いて、プリミティブ及びコマンド・データを画面空間に変換する。次に、このデータは、画面空間形状からのオブジェクト・データを、1組の定められた矩形領域すなわちタイルの各々についてのオブジェクト・リストに挿入するタイリング・ユニット103に与えられる。各タイルについてのオブジェクト・リストは、そのタイル内に全体的に又は部分的に存在するプリミティブ(primitive、基本要素)を含む。幾つかのオブジェクト・リストは、その中にデータを有していないこともあるが、リストは、画面上のあらゆるタイルについて存在する。これらのオブジェクト・リストは、オブジェクト・リストをタイルごとに隠面消去ユニット(hidden surface removal unit、HSR)106に与え、最終シーンに寄与しない表面を除去する(通常、それら表面は別の表面により隠されているため)タイル・パラメータ・フェッチ・ユニット105によってフェッチされる。HSRユニットは、タイル内の各プリミティブを処理し、可視ピクセルについてのデータだけを、テスティング・シェーディング・ユニット(TSU)108に送る。TSUは、HSRからデータを取得し、それを用いてテクスチャをフェッチし、周知の技術を用いて可視オブジェクト内の各ピクセルにシェーディングを適用する。次にTSUは、テクスチャリングされ、シェーディングされたデータを、アルファ・テスト/フォギング/アルファ・ブレンディング・ユニット110に提供する。これは、同じく周知の技術を用いて、様々な程度の透明性/不透明性を表面に適用することができる。アルファ・ブレンディングは、オンチップ・タイル・バッファ112を用いて行なわれ、これにより、この操作のために外部メモリにアクセスする必要性がなくなる。各タイリングが終了すると、ピクセル処理ユニット114は、結果として得られたデータを、表示の準備が完了したレンダリングされたシーン・バッファに書き込む前に、パッキング及びアンチエイリアシング・フィルタリングのような何らかの必要なバックエンド処理を行なう。
【0004】
特許文献1において、形状処理及びタイリング操作を、多数のラスター化コアを供給する別個のプロセッサに分割することによって、タイルベースのレンダリング環境内のラスター化性能をスケーリングする方法が記載される。この方法は、形状処理をスケーリングする問題、特に、多数のタイルベースの並列コアにわたるタイリング処理能力の問題を考慮に入れていない。
【0005】
3Dハードウェア・デバイスは、好ましくはプリミティブの順序を、それらが供給アプリケーションによってサブミットされた順序に関して保存しなければならないことが、一般に知られている。例えば、示されるように、図2は、4つの三角形T1(200)、T2(210)、T3(220)及びT4(230)を示し、これらは、T1、T2、T3、T4の順序でアプリケーションにより存在し、タイル0(240)、タイル1(250)、タイル2(260)及びタイル3(270)に重なる。タイルリストにおける三角形のオリジナルの順序を保存するために、三角形は、各タイルリストにおいては以下のように参照される。

形状プロセッサ及びタイリング・プロセッサにわたる負荷を均等に分配するために、ラウンドロビン・ベースで又は個々のプロセッサにかかる負荷に基づいて、入力データをプロセッサにわたって分割する必要がある。しかしながら、各プロセッサは、オブジェクトのタイルリストを局所的に生成するので、オブジェクトがタイルに挿入される順序の保存には、プロセッサが、タイル毎のオブジェクト・リストに書き込む順序を制御することが必要である。この制御は、通常、存在するGPC(グラフィックス処理コア)の各々の間の通信を必要とし、このことは、存在するコアの数をスケーリングするときに、それらの設計を変更する必要があることを意味する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】英国特許第GB2343598号
【発明の概要】
【課題を解決するための手段】
【0007】
本発明の好ましい実施形態は、タイルベースのレンダリング・システムが、形状処理及びタイリング操作を直線状にスケーリングするのを可能にする方法及び装置を提供する。このことは、コア内でかなりの量の入ってくる形状を処理し、局所的にタイリングすること、及び、各コアからの結果として得られる領域リストをオリジナルの入力形状の順序に対応する順序で互いにリンクさせることを可能にする階層リスト構造を使用することによって達成される。これに加えて、用いられる機構により、それらのコアの各々に対する修正をほとんど又は全く必要とすることなく、多数のコアを並行して用いることが可能になる。
【0008】
好ましくは、本発明の実施形態は、多数の独立したタイルベースのグラフィック・コアを組み合わせるための方法及び装置を提供し、そこでは、入ってくる形状ストリームが、タイルベース・グラフィックス処理コアごとに1つの、複数の形状ストリームに分割され、次に、各コア及びこれが処理する各三角形についての別個のタイリングされた形状リストが、マスター・タイリング・ユニットを用いて組み合わせられ、このマスター・タイリング・ユニットは、形状処理コアからデータを取得して各タイルについてマスター・タイルリストを生成し、入力された形状の順序を保存するか、或いは、ラスター化の際に、用いられるタイリングされた形状リスト内でマーカー使用し、ラスター化コアがリスト間で切り替わるようにする。
【0009】
ここで、添付図面を参照して、本発明の好ましい実施形態を一例として詳細に説明する。
【図面の簡単な説明】
【0010】
【図1】上述したような従来技術のタイルベースのレンダリング・システムを示す。
【図2】上述したような例示的な組の4つ三角形が4つのタイルに重なることを示す。
【図3】多数のコアにわたって制御ストリームを分割することを示す。
【図4】本発明の1つの実施形態においてタイル・リファレンス・リストのために提案されたデータ構造を示す。
【図5】本発明の1つの実施形態における、提案された階層タイルリスト・データ構造を示す。
【図6】本発明の1つの実施形態において、制御ストリームを多数のコアにわたってより粗い粒度で分割することを示す。
【図7】本発明を具体化するシステムの例示的な実装を示す。
【図8】図7の例示的なシステムへの修正を示す。
【図9】パイプ・インターリーブ・マーカーを用いて、制御ストリームを多重コアにわたって分割することを示す。
【図10】パイプ・インターリーブ・マーカーを用いる、本発明の1つの実施形態における提案されたタイルリスト・データ構造を示す。
【図11】パイプ・インターリーブ・マーカーを用いて、互いにリンクされた多数のタイルリストを処理するためにラスター化コアにより用いられるアルゴリズムを示す。
【図12】パイプ・インターリーブ・マーカーを用いる例示的な形状処理システムを示す。
【図13】PIMベースの形状システムにより生成されるタイルリストを処理することができる、タイルベースのラスター化システムのフロントエンドの例を示す。
【発明を実施するための形態】
【0011】
図3は、形状リストを組み合わせるためにマスター・タイリング・ユニットを用いる提案されたシステムの単純化されたバージョンを示す。入ってくる形状ストリーム300を多数のコアにわたって処理するために、(この例においては)2つの形状処理コア(GPC)340及び350にわたって処理するためにデータ・ストリームを分割するストリーム分割器310によって、初めに、入ってくる形状ストリーム300を、コア毎に1つの別個のストリームに分割する必要がある。この例においては、入ってくるストリームは、単純なラウンドロビン・ベースで、2つのコアにわたって分配されるが、各コアにかかる処理負荷に基づいて、ストリームを処理コアにわたって分割することも可能である。ストリーム分割器は、制御状態及びプリミティブを各々の形状処理コアに分配することに留意することが重要である。制御状態は、形状データをどのように処理するかについて、ハードウェアに指示する情報を含む。例えば、マトリクスを用いて、形状を周知の方法で変換することができ、或いは、テクスチャリングをどのように形状に適用するかの詳細を含ませることができる。例えば、GPC0 320についての制御ストリームは、三角形T1−T3と関連した制御状態1を含み、GPC1 330についての制御状態は、T1−T3についての状態1及びT4についての状態4を含む。
【0012】
GPC340及び350の各々は、それが処理する各三角形について、別個のタイリングされた形状リスト360及び370を生成する。各三角形ごとに更新された各タイルについて、GPCは、タイル・リファレンス・リスト(TRL)365及び375のそれぞれのものに、リファレンスを挿入する。TRL及びGPC毎のタイリングされた形状リストは、図4に示すデータ構造を形成し、マスター・タイルリスト390を生成するために、マスター・タイリング・ユニット380により使用される。
【0013】
GPC0のTRL400は、そのコアにより処理される三角形T1及びT3についてのリファレンスを含み、例えば、T1はタイル0、0のみの中に存在するので、リファレンス及び対応するタイリングされた形状リスト410へのポインタは、TRL内に含められ、これに、4つのタイル全てにおけるT3についてのリファレンスが続く。同様に、GPC1のTRL420は、GPC1についての対応するタイリングされた形状リスト430において、T2及びT4に重なる各タイルについてのリファレンスを含む。タイリングされた三角形のリストは、430において、各三角形が示された後に「End」マーカーを含むことに留意すべきである。
【0014】
図3のマスター・タイリング・ユニット(MTU)380は、(この例においては)プリミティブがGPCにわたって分配される同じラウンドロビン順序でTRLを読み取り、次に移る前に、各TRLから1つの三角形についてのタイル・リファレンスを取得する。MTU380は、タイル・リファレンスを取得し、マスター・タイルリスト390を生成し、このリストは、図5に示すデータ構造を有する。各々がトップレベルのタイルリスト510内の対応するタイルリストを指し示す、通常のタイルベース・レンダリング・システムの領域ヘッダ500と同様に、これらのリストは、三角形のオリジナルの提示順序を保存し、各々が「Terminate(終了)」マスターを有することに留意すべきである。トップレベルのタイルリストは、GPCにより生成され上述されたような、各タイル520及び530内の参照された三角形リストへのリンクを含む。
【0015】
上述のように、各GPCのタイルリスト内の各三角形の後には、「End」マーカーが続く。これらのマーカーは、ラスター化ハードウェアにより、GPCタイルリストから上位のタイルリストに戻るよう、これに指示するために用いられる。マーカーは、単一の三角形の代わりに、各GPCにおいて三角形のグループを処理できるように使用される。このことは、マーカーが、上位のタイルリストと関連したメモリの量を最小にし、かつ、幾つかの三角形における頂点の処理が他のものより時間がかかる場合に、より大きいGPCの分離を可能にするために重要である。
【0016】
図6は、1000個の三角形のブロックが各GPCに押し下げられる、多数のGPCにわたって、アプリケーションから入ってくるプリミティブ・ストリームを分割することを示す。入ってくるデータ・ストリーム600は、各々がそれぞれ4個、50個、2000個及び1500個の三角形を含む4つのプリミティブ、すなわちprim1、2、3及び4を含む。示されるように、2つのGPC(650及び660)にわたる処理のために、ストリーム分割器610は、ストリームを4つのブロックに分割し、ブロック620及び630はGPC0に渡され、ブロック640及び650はGPC1に渡される。Prim1及びPrim2は両方とも、Prim3及びPrim4の第1の部分と共にGPC0に送られる。Prim3及びPrim4の残りの部分は、GPC1に送られる。分割の目的は、2つのGPC間の負荷を平衡させようとすることである。ブロック620及び630において、Prim3からのデータも、2つのブロック間で分割され、その両方ともGPC0によって処理される。これは、類似したブロック・サイズを生成するためである。TRL及びトップレベルのデータ構造は、単一の三角形を指し示すのではなく、タイル毎のリファレンスが、各タイル内の各ブロックからの三角形のグループを指し示すことを除いて、変更されない。
【0017】
図7は、2つの形状処理及びタイリング・コアを用いるシステムの例示的な実装を示す。プリミティブ及びコマンド・フェッチ・ユニット700が、入ってくる制御ストリームを読み取り、それを、上述のように2つ(又はそれ以上)のコアにわたる処理のためにストリームを分割するストリーム分割器ユニット705に渡す。分割器は、フェッチされるプリミティブへのポインタを、「ローカル」プリミティブ・フェッチ・ユニット715及び716への入力における別個のコア、具体的にはFIFO712及び714に渡す。FIFOは、各バッチを処理するのに各コアが要する時間のために、ストリーム分割処理の分離を助けなければならない。ローカル・プリミティブ・フェッチ・ユニットは、FIFO712及び714からポインタを読み取り、次に、メモリから実際の形状データを読み取り、それを形状処理ユニット720及び721に渡し、形状処理ユニット720及び721は、形状を処理すると、それをローカル・タイリング・ユニット725及び726に渡す。タイリング・ユニットは、処理された形状をタイリングし、ローカル・タイルリスト730及び731を生成し、これらリストについてのTRLをタイル・リファレンスFIFO740及び741に渡し、タイル・リファレンスFIFO740及び741は、マスター・タイリング・ユニット(MTU)により消費されるのを待ちながら、既述したTRLをバッファに入れる。これらのFIFOを、外部メモリ内又はチップ上に含ませ、GPCとマスター・タイリング・ユニットとの間のバッファリング量の柔軟性を大きくできることに留意すべきである。FIFO/バッファの使用により、GPCをMTUの操作から分離し、MTUがマスター・タイルリストの生成に相当量の時間を費やしている場合のストールを最小にすることができる。MTUは、FIFOからのTRLデータを使用して、マスター領域リスト760を生成し、これとローカル・タイルリストと協働して、上述のようなデータ構造を形成する。
【0018】
単一のラウンドロビン方式の使用により、1つのGPCが他のGPCよりも著しく時間がかかるために、分割ストリームFIFO712及び714のいずれかが一杯になる場合に、ストリーム分割器がストールすることを意味することが留意されるであろう。このように、処理時間の不均衡が大きい場合には、GPCパイプラインのいずれもアイドル状態になるのを回避するため、これらのFIFOを法外に大きくする必要がある場合がある。図8は、そのコアがどれだけビジーであるかに基づいて、分割器がプリミティブを各コアに送る、すなわちその処理負荷が監視される、代替的な実施形態を示す。システムの操作は、例えば入力バッファリングの占有量(fullness)など、それらがどれだけビジーであるかを示す、形状処理ユニット820及び821からの情報が、ストリーム分割器805に与えられる点を除いて、上述されたものと同一である。ストリーム分割器は、この情報を用いて、プリミティブのグループを、最も負荷の高くないGPCに指向させる。プリミティブがコアにサブミットされる順序は今や非決定的(non deterministic)であるため、ストリーム分割器は、MTUがTRL FIFOからTRLを正しい順序で引くことができるように、MTUのためにコア・リファレンス・シーケンスを生成する必要がある。リファレンス・シーケンスは、ストリーム分割器によりサービス・オーダーFIFO870に書き込まれ、サービス・オーダーFIFO870は、MTUは、どのTRO FIFOを次に読み取るかを決定するために、順番に読み込む。
【0019】
図9は、マスター・タイリング・ユニットの代わりに、「パイプ・インターリーブ・マーカー」を用いて、多数のコアにわたって形状を処理するのを可能にするシステムを示す。マスター・タイリング・ユニット・ベースのシステムと同様に、上述のように、入ってくる形状ストリーム・データは、ストリーム分割器910によって分割され、GPC940、950に分配される。各GPCは、それぞれのタイリングされた形状リスト960及び970を生成する。図10は、生成された、タイリングされた形状リストの構造を示す。各GPCは、通常のタイルベースのレンダリング・システムのように、各コアに通される形状についてのタイリングされた形状リストを指し示すそれぞれの領域ヘッダ1000及び1020を生成する。各形状ブロックの終わりに、GPCは、ラスター化プロセスの際に単一のコアにより正しい順序でリストをトラバースするのを可能にするために用いられる「パイプ・インターリーブ・マーカー」(PIM)1040を挿入する。
【0020】
図11のフローチャートは、リストをトラバースするために、ラスター化によりPIMマーカーがどのように使用されるかを示す。1100において、各タイルの処理の開始時に、各コアが生成する領域ヘッダの内容が、コアリスト・ポインタ・アレイにロードされる。これにより、アレイ内の各エントリが、処理される領域の各コアのために生成された領域リストへのポインタを含むようになる。1105において、プリミティブ・データの第1のブロックが、アレイへのインデックスを0に設定することにより、第1のGPCすなわちGPC0によって処理されたと仮定して、領域リストの処理が開始される。次に、1110において、これがゼロであるかどうかを確認するために、ポイント値が試験され、もしゼロであれば、それは、リストが空であるか、又は、既に処理が完了したことを意味し、1115において、アレイ・インデックスがインクリメントされ、1110において行なわれた試験が繰り返される。このプロセスは、形状を含むリストが見つかるまで繰り返され、その時点で、1120において、ポイント・データが、アレイ・インデックスにより索引付けされたポイントを用いてタイリングされた形状リストからフェッチされる。1125において、これがPIMであるかどうかを判断するために、フェッチされたデータが試験され、PIMである場合には、次に、現在のリスト・ポインタが、タイリングされた形状リストの次のデータを指し示すように更新され、1130においてコアリスト・ポインタ・アレイに書き戻される。次に、1135において、アレイ・インデックスは、PIM内で指定された値に設定され、処理は1110に戻る。1125における試験によりPIMが検知されなかった場合、1140において、これがEndマーカーであるかどうかを確認するために、フェッチされたデータが試験され、Endが検知された場合、次に現在のタイリングの処理が完了し、ハードウェアは、次のタイリングの処理に移る。データがEndマーカーではない場合、これは形状又は状態リファレンスであり、必要に応じて1145で処理される。次に、1150において、リスト・ポインタが更新され、処理は1120に戻り、タイリングされた形状リスト内の次のエントリをフェッチする。
【0021】
図12は、2つの形状処理及びタイリング・コアを用いるPIMベースのシステムの例示的な実装を示す。プリミティブ及びコマンド・フェッチ・ユニット1200が、入ってくる制御ストリームを読み取り、これを、上述のような2つ(又はそれ以上)のコアにわたる処理のためにストリームを分割するストリーム分割器ユニット1205に渡す。分割器は、フェッチされるプリミティブへのポインタを、「ローカルの」プリミティブ・フェッチ・ユニット1215及び1216への入力における別個のコア、具体的にはFIFO1212及び1214に渡す。FIFOは、各バッチを処理するのに各コアが要する時間のために、ストリーム分割処理の分離を助けなければならない。ローカル・プリミティブ・フェッチ・ユニットは、メモリから実際の形状データを読み取り、それを形状処理ユニット1220及び1221に渡し、形状処理ユニット1220及び1221は、形状を処理すると、それをローカル・タイリング・ユニット1225及び1226に渡す。タイリング・ユニットは、処理された形状をタイリングし、コア毎のタイルリスト1230及び1231を生成する。
【0022】
図13は、PIMを用いて、多数のGPCにより生成されたタイルリストをトラバースすることができるラスター化コアのフロントエンドを示す。領域ヘッダ・フェッチ・ユニット1310が、各GPCにより生成された画面空間タイリングされた形状リスト1300から領域ヘッダを読み取り、図11について述べられたように結果として得られたリスト・ポインタをコアリスト・ポインタ・アレイ1320に書き込む。タイリングされた形状リスト・フェッチ・ユニット1330は、次に、図11について説明されたようなタイル毎の制御リストをフェッチして処理し、処理されることになる結果として得られる形状を、隠面消去ユニット1340に渡し、この時点から、全ての処理は、通常のタイルベースのレンダリング・システムについて説明されたものと同じである。
【0023】
上記の開示事項に加えて、原特許出願2010−535457号の出願時の特許請求の範囲の記載を以下に開示する。
〔請求項1〕
三次元グラフィックス・レンダリング・システムにおいて形状処理及びタイリングを行なうための方法であって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するステップであって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、ステップと、
複数の形状処理ユニット間でプリミティブ・データを分割するステップと、
各々の形状処理ユニットにより処理される各三角形について、三角形を、その形状処理ユニットと関連した1組のタイリングされた形状リストにおけるそれぞれのタイルリストに挿入するステップと、
三角形が挿入される各タイルについて、そのタイルへのリファレンスを、その形状処理ユニットと関連したタイル・リファレンス・リストに挿入するステップと、
データが前記形状処理ユニットに分配された順序で、各々の形状処理ユニットと関連した前記タイル・リファレンス・リストからデータを読み取るステップと、
前記タイル・リファレンス・リスト及び各々の形状処理ユニットと関連した前記タイリングされた形状から、レンダリングされる前記シーンについてのタイリング・データを生成するステップと、
を含むことを特徴とする方法。
〔請求項2〕
前記プリミティブ・データを分割するステップは、ラウンドロビン・ベースで分割するステップを含むことを特徴とする、請求項1に記載の方法。
〔請求項3〕
前記プリミティブ・データを分割するステップは、実質的に類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項1又は請求項2に記載の方法。
〔請求項4〕
前記プリミティブ・データを分割するステップは、各々のグラフィック処理ユニットにかかる処理負荷を監視し、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するステップを含むことを特徴とする、請求項1に記載の方法。
〔請求項5〕
前記プリミティブ・データを分割するステップと、それを前記グラフィックス処理ユニットに送るステップとの間にプリミティブ・データをバッファに入れるステップを含むことを特徴とする、前記請求項のいずれかに記載の方法。
〔請求項6〕
前記タイリング・データを生成するステップの前に、タイル・リファレンス・リスト及び前記タイリングされた形状リストからのデータをバッファに入れるステップを含むことを特徴とする、前記請求項のいずれかに記載の方法。
〔請求項7〕
前記タイリング・データを生成するステップは、前記シーンのレンダリングに用いるためのマスター・タイルリストを生成するステップを含むことを特徴とする、前記請求項のいずれかに記載の方法。
〔請求項8〕
三次元グラフィックス・レンダリング・システムにおいて形状処理及びタイリングを行なうためのシステムであって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するための手段であって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、手段と、
複数の形状処理ユニット間でプリミティブ・データを分割するための手段と、
処理される各三角形について、三角形を、その形状処理ユニットと関連した1組のタイリングされた形状リストにおけるタイリングされた形状リストに挿入するように構成された形状処理ユニットと、
三角形が挿入される各タイルについて、そのタイルへのリファレンスをその形状処理ユニットと関連したタイル・リファレンス・リストに挿入するための手段と、
データが前記形状処理ユニットに分配された順序で、各々の形状処理ユニットと関連した前記タイル・リファレンス・リストからデータを読み取るための手段と、
前記タイル・リファレンス・リスト及び各々の形状処理ユニットと関連した前記タイリングされた形状から、レンダリングされる前記シーンについてのタイリング・データ・リストを生成するための手段と、
を含むことを特徴とするシステム。
〔請求項9〕
前記プリミティブ・データを分割するための手段は、ラウンドロビン・ベースでこれを行なうことを特徴とする、請求項8に記載のシステム。
〔請求項10〕
前記プリミティブ・データを分割するための手段は、実質的に類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項8又は請求項9に記載のシステム。
〔請求項11〕
前記プリミティブ・データを分割するための手段は、各々のグラフィックス処理ユニットにかかる処理負荷を監視するための手段と、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するための手段とを含むことを特徴とする、請求項8に記載のシステム。
〔請求項12〕
前記プリミティブ・データを分割するための手段と前記グラフィックス処理ユニットとの間でプリミティブ・データをバッファに入れるための手段を含むことを特徴とする、請求項8から請求項11までのいずれかに記載のシステム。
〔請求項13〕
マスター・タイルリストを生成するための前記手段に提供する前に、タイル・リファレンス・リスト及び前記タイリングされた形状からのデータをバッファに入れるための手段を含むことを特徴とする、請求項8から請求項12までのいずれかに記載のシステム。
〔請求項14〕
前記タイリング・データを生成するための手段は、前記タイリング・データが挿入されるマスター・タイルリストを含むことを特徴とする、請求項8から請求項13までのいずれかに記載のシステム。
〔請求項15〕
三次元グラフィックス・レンダリング・システムにおいて、形状処理及びタイリングを行なうための方法であって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するステップであって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、ステップと、
複数の形状処理ユニット間でプリミティブ・データを分割するステップと、
各々の形状処理ユニットにより処理される各三角形について、三角形を、その形状処理ユニットと関連した1組のタイリングされた形状リストにおけるそれぞれのタイルリストに挿入するステップと、
各タイルについて、マーカーを、各々のグラフィックス処理ユニットにより処理される形状の各ブロックについてのその形状処理ユニットと関連した前記タイリングされた形状リストに挿入するステップと、
各々の形状処理ユニットと関連した前記タイリングされた形状リストから、レンダリングされる前記シーンについてのタイリング・データを生成するステップと、
前記タイリングされた形状リスト内の前記マーカーを用いて、異なるグラフィックス処理ユニットからのタイリングされた形状リスト間でいつ切り換えるかを示すステップと、を含むことを特徴とする方法。
〔請求項16〕
前記プリミティブ・データを分割するステップは、ラウンドロビン・ベースで分割するステップを含むことを特徴とする、請求項15に記載の方法。
〔請求項17〕
前記プリミティブ・データを分割するステップは、実質的に類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項15又は請求項16に記載の方法。
〔請求項18〕
前記プリミティブ・データを分割するステップは、各々のグラフィック処理ユニットにかかる処理負荷を監視し、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するステップを含むことを特徴とする、請求項15に記載の方法。
〔請求項19〕
前記プリミティブ・データを分割するステップと、それを前記グラフィックス処理ユニットに送るステップとの間にプリミティブ・データをバッファに入れるステップを含むことを特徴とする、請求項15から請求項18までのいずれかに記載の方法。
〔請求項20〕
前記タイリング・データを生成するステップの前に、タイル・リファレンス・リスト及び前記タイリングされた形状リストからのデータをバッファに入れるステップを含むことを特徴とする、請求項15から請求項19までのいずれかに記載の方法。
〔請求項21〕
前記タイリングされた形状リスト内の前記マーカーを用いるステップは、前記タイリングされた形状リストの各々から領域ヘッダを読み取るステップと、前記シーンのレンダリングに用いるために、タイルごとに順番に、各々のグラフィックス処理ユニット・リストにより生成された前記タイリングされた形状リストの前記開始点を指し示すポインタ・アレイに、タイリング・リスト・ポインタを書き込むステップとを含むことを特徴とする、請求項15から請求項20までのいずれかに記載の方法。
〔請求項22〕
三次元グラフィックス・レンダリング・システムにおいて、形状処理及びタイリングを行なうためのシステムであって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するための手段であって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、手段と、
複数の形状処理ユニット間でプリミティブ・データを分割するための手段と、
処理される各三角形について、三角形を、その形状処理ユニットと関連した1組のタイリングされた形状リストにおけるタイリングされた形状リストに挿入するように配置された各々の形状処理ユニットと、
そのグラフィックス処理ユニットにより処理される形状の各ブロックについて、各タイルについてのマーカーを、その形状処理ユニットと関連した前記タイリングされた形状リストに挿入するための手段と、
各々の形状処理ユニットと関連した前記タイリングされた形状からレンダリングされる前記シーンについてのタイリング・データを生成し、前記タイリングされた形状リストにおける前記マーカーを用いて異なるグラフィックス処理コアからのタイリングされた形状リスト間でいつ切り替えるかを示すための手段と、
を含むことを特徴とするシステム。
〔請求項23〕
前記プリミティブ・データを分割するための手段は、ラウンドロビン・ベースでこれを行なうことを特徴とする、請求項22に記載のシステム。
〔請求項24〕
前記プリミティブ・データを分割するための手段は、実質的に類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項22又は請求項23に記載のシステム。
〔請求項25〕
前記プリミティブ・データを分割するための手段は、各々のグラフィックス処理ユニットにかかる処理負荷を監視するための手段と、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するための手段とを含むことを特徴とする、請求項22に記載のシステム。
〔請求項26〕
前記プリミティブ・データを分割するための手段と前記グラフィックス処理ユニットとの間でプリミティブ・データをバッファに入れるための手段を含むことを特徴とする、請求項22から請求項25までのいずれかに記載のシステム。
〔請求項27〕
タイル・リファレンス・リスト及び前記タイリングされた形状からのデータを、前記タイリング・データを生成するための手段に提供する前にバッファに入れるための手段を含むことを特徴とする、請求項22から請求項25までのいずれかに記載のシステム。
〔請求項28〕
前記タイリングされた形状リスト内の前記マーカーを用いるための手段は、前記タイリングされた形状リストの各々から領域ヘッダを読み取るための手段と、各々のグラフィックス処理ユニットにより生成された前記タイリングされた形状リストの前記開始点を指し示すポインタ・アレイに、タイリング・リスト・ポインタを書き込むための手段と、前記シーンのレンダリングに用いるために、タイルごとに順番に前記タイリングされた形状リストをフェッチするための手段とを含むことを特徴とする、請求項11から請求項27までのいずれかに記載のシステム。
【符号の説明】
【0024】
300:形状ストリーム
310、610、805、910:ストリーム分割器
320、330、650、660、940、950:GPC
340、350:形状処理コア(GPC)
360、370、410、430、960、970、1010、1030:タイリングされた形状リスト
365、375、400、420:タイル・リファレンス・リスト(TRL)
380:マスター・タイリング・ユニット(MTU)
390:マスター・タイルリスト
500、1000、1020:領域ヘッダ
520、530:タイル
510:トップレベルのタイルリスト
620、630、640、650:ブロック
700、1200:プリミティブ及びコマンド・フェッチ・ユニット
705、1205:ストリーム分割器ユニット
712、714、1212、1214:FIFO
715、716、1215、1216:「ローカル」プリミティブ・フェッチ・ユニット
720、721、820、821、1220、1221:形状処理ユニット
725、726、1225、1226:ローカル・タイリング・ユニット
730、731:ローカル・タイルリスト
740、741:タイル・リファレンスFIFO
760:マスター領域リスト
870:サービス・オーダーFIFO
1040:「パイプ・インターリーブ・マーカー」(PIM)
1230、1231:コア毎のタイルリスト

【特許請求の範囲】
【請求項1】
三次元グラフィックス・レンダリング・システムにおいて、形状処理及びタイリングを行なうための方法であって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するステップであって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、ステップと、
複数の形状処理ユニット間でプリミティブ・データを分割するステップと、
各々の形状処理ユニットにより処理される各三角形について、三角形を、その形状処理ユニットと関連した1組のタイリングされた形状リストにおけるそれぞれのタイルリストに挿入するステップと、
各タイルについて、マーカーを、各々のグラフィックス処理ユニットにより処理される形状の各ブロックについてのその形状処理ユニットと関連した前記タイリングされた形状リストに挿入するステップと、
各々の形状処理ユニットと関連した前記タイリングされた形状リストから、レンダリングされる前記シーンについてのタイリング・データを生成するステップと、
前記タイリングされた形状リスト内の前記マーカーを用いて、異なるグラフィックス処理ユニットからのタイリングされた形状リスト間でいつ切り換えるかを示すステップと、を含むことを特徴とする方法。
【請求項2】
前記プリミティブ・データを分割するステップは、ラウンドロビン・ベースで分割するステップを含むことを特徴とする、請求項1に記載の方法。
【請求項3】
前記プリミティブ・データを分割するステップは、実質的に類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項1又は請求項2に記載の方法。
【請求項4】
前記プリミティブ・データを分割するステップは、各々のグラフィック処理ユニットにかかる処理負荷を監視し、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するステップを含むことを特徴とする、請求項1に記載の方法。
【請求項5】
前記プリミティブ・データを分割するステップと、それを前記グラフィックス処理ユニットに送るステップとの間にプリミティブ・データをバッファに入れるステップを含むことを特徴とする、請求項1から請求項4までのいずれかに記載の方法。
【請求項6】
前記タイリング・データを生成するステップの前に、タイル・リファレンス・リスト及び前記タイリングされた形状リストからのデータをバッファに入れるステップを含むことを特徴とする、請求項1から請求項5までのいずれかに記載の方法。
【請求項7】
前記タイリングされた形状リスト内の前記マーカーを用いるステップは、前記タイリングされた形状リストの各々から領域ヘッダを読み取るステップと、前記シーンのレンダリングに用いるために、タイルごとに順番に、各々のグラフィックス処理ユニット・リストにより生成された前記タイリングされた形状リストの前記開始点を指し示すポインタ・アレイに、タイリング・リスト・ポインタを書き込むステップとを含むことを特徴とする、請求項1から請求項6までのいずれかに記載の方法。
【請求項8】
三次元グラフィックス・レンダリング・システムにおいて、形状処理及びタイリングを行なうためのシステムであって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するための手段であって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、手段と、
複数の形状処理ユニット間でプリミティブ・データを分割するための手段と、
処理される各三角形について、三角形を、その形状処理ユニットと関連した1組のタイリングされた形状リストにおけるタイリングされた形状リストに挿入するように配置された各々の形状処理ユニットと、
そのグラフィックス処理ユニットにより処理される形状の各ブロックについて、各タイルについてのマーカーを、その形状処理ユニットと関連した前記タイリングされた形状リストに挿入するための手段と、
各々の形状処理ユニットと関連した前記タイリングされた形状からレンダリングされる前記シーンについてのタイリング・データを生成し、前記タイリングされた形状リストにおける前記マーカーを用いて異なるグラフィックス処理コアからのタイリングされた形状リスト間でいつ切り替えるかを示すための手段と、
を含むことを特徴とするシステム。
【請求項9】
前記プリミティブ・データを分割するための手段は、ラウンドロビン・ベースでこれを行なうことを特徴とする、請求項8に記載のシステム。
【請求項10】
前記プリミティブ・データを分割するための手段は、実質的に類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項8又は請求項9に記載のシステム。
【請求項11】
前記プリミティブ・データを分割するための手段は、各々のグラフィックス処理ユニットにかかる処理負荷を監視するための手段と、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するための手段とを含むことを特徴とする、請求項8に記載のシステム。
【請求項12】
前記プリミティブ・データを分割するための手段と前記グラフィックス処理ユニットとの間でプリミティブ・データをバッファに入れるための手段を含むことを特徴とする、請求項8から請求項11までのいずれかに記載のシステム。
【請求項13】
タイル・リファレンス・リスト及び前記タイリングされた形状からのデータを、前記タイリング・データを生成するための手段に提供する前にバッファに入れるための手段を含むことを特徴とする、請求項8から請求項11までのいずれかに記載のシステム。
【請求項14】
前記タイリングされた形状リスト内の前記マーカーを用いるための手段は、前記タイリングされた形状リストの各々から領域ヘッダを読み取るための手段と、各々のグラフィックス処理ユニットにより生成された前記タイリングされた形状リストの前記開始点を指し示すポインタ・アレイに、タイリング・リスト・ポインタを書き込むための手段と、前記シーンのレンダリングに用いるために、タイルごとに順番に前記タイリングされた形状リストをフェッチするための手段とを含むことを特徴とする、請求項1から請求項13までのいずれかに記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2012−146323(P2012−146323A)
【公開日】平成24年8月2日(2012.8.2)
【国際特許分類】
【出願番号】特願2012−58179(P2012−58179)
【出願日】平成24年3月15日(2012.3.15)
【分割の表示】特願2010−535457(P2010−535457)の分割
【原出願日】平成20年12月1日(2008.12.1)
【出願人】(501176037)イマジネイション テクノロジーズ リミテッド (59)
【Fターム(参考)】