(57)【特許請求の範囲】
【請求項１】
三次元グラフィックス・レンダリング・システムにおいて、形状処理及びタイリングを行なうための方法であって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するステップであって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、ステップと、
複数の形状処理ユニット間でプリミティブ・データを分割するステップであって、前記複数の形状処理ユニットの各々が、自身の領域ヘッダと自身のタイリングされた形状リストとを発生し、各領域ヘッダがタイリングされた形状リストを指し示している、前記ステップと、
各々の形状処理ユニットにより処理される各三角形について、三角形を、その形状処理ユニットと関連した１組のタイリングされた形状リストにおけるそれぞれのタイルリストに挿入するステップと、
各タイルについて、形状処理ユニットが、パイプ・インターリーブ・マーカーを、各々のグラフィック処理ユニットにより処理される形状の各ブロックについてのその形状処理ユニットと関連した前記タイリングされた形状リストに挿入するステップであって、前記パイプ・インターリーブ・マーカーは、ラスター化の際に、単一の処理コアにより正しい順序で前記形状リストをトラバースするのを可能にするために用いられる前記ステップと、
各々の形状処理ユニットと関連した前記タイリングされた形状リストから、レンダリングされる前記シーンについてのタイリング・データを生成するステップと、
前記タイリングされた形状リスト内の前記パイプ・インターリーブ・マーカーを用いて、異なるグラフィックス処理ユニットからのタイリングされた形状リスト間でいつ切り換えるかを示すステップと、を含むことを特徴とする方法。
【請求項２】
前記プリミティブ・データを分割するステップは、ラウンドロビン・ベースで分割するステップを含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記プリミティブ・データを分割するステップは、類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項１又は請求項２に記載の方法。
【請求項４】
前記プリミティブ・データを分割するステップは、各々のグラフィック処理ユニットにかかる処理負荷を監視し、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するステップを含むことを特徴とする、請求項１に記載の方法。
【請求項５】
前記プリミティブ・データを分割するステップと、それを前記グラフィックス処理ユニットに送るステップとの間にプリミティブ・データをバッファに入れるステップを含むことを特徴とする、請求項１から請求項４までのいずれかに記載の方法。
【請求項６】
前記タイリング・データを生成するステップの前に、タイル・リファレンス・リスト及び前記タイリングされた形状リストからのデータをバッファに入れるステップを含むことを特徴とする、請求項１から請求項５までのいずれかに記載の方法。
【請求項７】
前記タイリングされた形状リスト内の前記マーカーを用いるステップは、前記タイリングされた形状リストの各々から領域ヘッダを読み取るステップと、前記シーンのレンダリングに用いるために、タイルごとに順番に、各々のグラフィックス処理ユニット・リストにより生成された前記タイリングされた形状リストの開始点を指し示すポインタ・アレイに、タイリング・リスト・ポインタを書き込むステップとを含むことを特徴とする、
請求項１から請求項６までのいずれかに記載の方法。
【請求項８】
三次元グラフィックス・レンダリング・システムにおいて、形状処理及びタイリングを行なうためのシステムであって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するための手段であって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、手段と、
複数の形状処理ユニット間でプリミティブ・データを分割するための手段であって、前記複数の形状処理ユニットの各々が、自身の領域ヘッダと自身のタイリングされた形状リストとを発生し、各領域ヘッダがタイリングされた形状リストを指し示している、前記手段と、
処理される各三角形について、三角形を、その形状処理ユニットと関連した１組のタイリングされた形状リストにおけるタイリングされた形状リストに挿入するように配置された各々の形状処理ユニットと、
そのグラフィックス処理ユニットにより処理される形状の各ブロックについて、各タイルについてのパイプ・インターリーブ・マーカーを、形状処理ユニットによって、その形状処理ユニットと関連した前記タイリングされた形状リストに挿入するための手段であって、前記パイプ・インターリーブ・マーカーは、ラスター化の際に、単一の処理コアにより正しい順序で前記形状リストをトラバースするのを可能にするために用いられる前記手段と、
各々の形状処理ユニットと関連した前記タイリングされた形状からレンダリングされる前記シーンについてのタイリング・データを生成する手段と、
前記タイリングされた形状リストにおける前記パイプ・インターリーブ・マーカーを用いて異なるグラフィックス処理コアからのタイリングされた形状リスト間でいつ切り替えるかを示すための手段と、
を含むことを特徴とするシステム。
【請求項９】
前記プリミティブ・データを分割するための手段は、ラウンドロビン・ベースでこれを行なうことを特徴とする、請求項８に記載のシステム。
【請求項１０】
前記プリミティブ・データを分割するための手段は、類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項８又は請求項９に記載のシステム。
【請求項１１】
前記プリミティブ・データを分割するための手段は、各々のグラフィックス処理ユニットにかかる処理負荷を監視するための手段と、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するための手段とを含むことを特徴とする、請求項８に記載のシステム。
【請求項１２】
前記プリミティブ・データを分割するための手段と前記グラフィックス処理ユニットとの間でプリミティブ・データをバッファに入れるための手段を含むことを特徴とする、請求項８から請求項１１までのいずれかに記載のシステム。
【請求項１３】
タイル・リファレンス・リスト及び前記タイリングされた形状からのデータを、前記タイリング・データを生成するための手段に提供する前にバッファに入れるための手段を含むことを特徴とする、請求項８から請求項１１までのいずれかに記載のシステム。
【請求項１４】
前記いつ切り替えるかを示すための手段は、前記タイリングされた形状リストの各々から領域ヘッダを読み取るための手段と、各々のグラフィックス処理ユニットにより生成された前記タイリングされた形状リストの開始点を指し示すポインタ・アレイに、タイリング・リスト・ポインタを書き込むための手段と、前記シーンのレンダリングに用いるために、タイルごとに順番に前記タイリングされた形状リストをフェッチするための手段とを含むことを特徴とする、請求項８から請求項１３までのいずれかに記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、三次元コンピュータ・グラフィックス・レンダリング・システムに関し、具体的には、形状処理（ｇｅｏｍｅｔｒｙ  ｐｒｏｃｅｓｓｉｎｇ）性能を向上させるために、多数の独立型タイルベース・グラフィックス・コアを組み合わせることに関連した方法及び装置に関する。
【背景技術】
【０００２】
例えば基本的な手持ち式用途のものから高度な専用グラフィック・コンピュータまでといった、多くの異なる性能レベルのコンピュータ・グラフィックス処理コアを提供することが望ましいが、現代のコンピュータ・グラフィックスの複雑さにより、これをタイムリーに、或いは費用対効果が大きい方法で行なうことは困難である。従って、新しいコア全体を開発しないで、性能を向上させることができるように、多数の独立型コアを組み合わせる方法を有することが望ましい。
【０００３】
タイルベースのレンダリング・システムは、公知である。このシステムは、画像を複数の矩形のブロック又はタイルに細分する。図１は、タイルベースのレンダリング・システムの例を示す。プリミティブ／コマンド・フェッチ・ユニット１０１が、メモリからコマンド及びプリミティブ・データを取り出し、これを形状処理ユニット１０２に送る。この形状処理ユニット１０２は、周知の方法を用いて、プリミティブ及びコマンド・データを画面空間に変換する。次に、このデータは、画面空間形状からのオブジェクト・データを、１組の定められた矩形領域すなわちタイルの各々についてのオブジェクト・リストに挿入するタイリング・ユニット１０３に与えられる。各タイルについてのオブジェクト・リストは、そのタイル内に全体的に又は部分的に存在するプリミティブ（ｐｒｉｍｉｔｉｖｅ、基本要素）を含む。幾つかのオブジェクト・リストは、その中にデータを有していないこともあるが、リストは、画面上のあらゆるタイルについて存在する。これらのオブジェクト・リストは、オブジェクト・リストをタイルごとに隠面消去ユニット（ｈｉｄｄｅｎ  ｓｕｒｆａｃｅ  ｒｅｍｏｖａｌ  ｕｎｉｔ、ＨＳＲ）１０６に与え、最終シーンに寄与しない表面を除去する（通常、それら表面は別の表面により隠されているため）タイル・パラメータ・フェッチ・ユニット１０５によってフェッチされる。ＨＳＲユニットは、タイル内の各プリミティブを処理し、可視ピクセルについてのデータだけを、テスティング・シェーディング・ユニット（ＴＳＵ）１０８に送る。ＴＳＵは、ＨＳＲからデータを取得し、それを用いてテクスチャをフェッチし、周知の技術を用いて可視オブジェクト内の各ピクセルにシェーディングを適用する。次にＴＳＵは、テクスチャリングされ、シェーディングされたデータを、アルファ・テスト／フォギング／アルファ・ブレンディング・ユニット１１０に提供する。これは、同じく周知の技術を用いて、様々な程度の透明性／不透明性を表面に適用することができる。アルファ・ブレンディングは、オンチップ・タイル・バッファ１１２を用いて行なわれ、これにより、この操作のために外部メモリにアクセスする必要性がなくなる。各タイリングが終了すると、ピクセル処理ユニット１１４は、結果として得られたデータを、表示の準備が完了したレンダリングされたシーン・バッファに書き込む前に、パッキング及びアンチエイリアシング・フィルタリングのような何らかの必要なバックエンド処理を行なう。
【０００４】
特許文献１において、形状処理及びタイリング操作を、多数のラスター化コアを供給する別個のプロセッサに分割することによって、タイルベースのレンダリング環境内のラスター化性能をスケーリングする方法が記載される。この方法は、形状処理をスケーリングする問題、特に、多数のタイルベースの並列コアにわたるタイリング処理能力の問題を考慮に入れていない。
【０００５】
３Ｄハードウェア・デバイスは、好ましくはプリミティブの順序を、それらが供給アプリケーションによってサブミットされた順序に関して保存しなければならないことが、一般に知られている。例えば、示されるように、図２は、４つの三角形Ｔ１（２００）、Ｔ２（２１０）、Ｔ３（２２０）及びＴ４（２３０）を示し、これらは、Ｔ１、Ｔ２、Ｔ３、Ｔ４の順序でアプリケーションにより存在し、タイル０（２４０）、タイル１（２５０）、タイル２（２６０）及びタイル３（２７０）に重なる。タイルリストにおける三角形のオリジナルの順序を保存するために、三角形は、各タイルリストにおいては以下のように参照される。
0005456812.tif 000002
形状プロセッサ及びタイリング・プロセッサにわたる負荷を均等に分配するために、ラウンドロビン・ベースで又は個々のプロセッサにかかる負荷に基づいて、入力データをプロセッサにわたって分割する必要がある。しかしながら、各プロセッサは、オブジェクトのタイルリストを局所的に生成するので、オブジェクトがタイルに挿入される順序の保存には、プロセッサが、タイル毎のオブジェクト・リストに書き込む順序を制御することが必要である。この制御は、通常、存在するＧＰＣ（グラフィックス処理コア）の各々の間の通信を必要とし、このことは、存在するコアの数をスケーリングするときに、それらの設計を変更する必要があることを意味する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】英国特許第ＧＢ２３４３５９８号
【発明の概要】
【課題を解決するための手段】
【０００７】
本発明の好ましい実施形態は、タイルベースのレンダリング・システムが、形状処理及びタイリング操作を直線状にスケーリングするのを可能にする方法及び装置を提供する。このことは、コア内でかなりの量の入ってくる形状を処理し、局所的にタイリングすること、及び、各コアからの結果として得られる領域リストをオリジナルの入力形状の順序に対応する順序で互いにリンクさせることを可能にする階層リスト構造を使用することによって達成される。これに加えて、用いられる機構により、それらのコアの各々に対する修正をほとんど又は全く必要とすることなく、多数のコアを並行して用いることが可能になる。
【０００８】
好ましくは、本発明の実施形態は、多数の独立したタイルベースのグラフィック・コアを組み合わせるための方法及び装置を提供し、そこでは、入ってくる形状ストリームが、タイルベース・グラフィックス処理コアごとに１つの、複数の形状ストリームに分割され、次に、各コア及びこれが処理する各三角形についての別個のタイリングされた形状リストが、マスター・タイリング・ユニットを用いて組み合わせられ、このマスター・タイリング・ユニットは、形状処理コアからデータを取得して各タイルについてマスター・タイルリストを生成し、入力された形状の順序を保存するか、或いは、ラスター化の際に、用いられるタイリングされた形状リスト内でマーカー使用し、ラスター化コアがリスト間で切り替わるようにする。
【０００９】
ここで、添付図面を参照して、本発明の好ましい実施形態を一例として詳細に説明する。
【図面の簡単な説明】
【００１０】
【図１】上述したような従来技術のタイルベースのレンダリング・システムを示す。
【図２】上述したような例示的な組の４つ三角形が４つのタイルに重なることを示す。
【図３】多数のコアにわたって制御ストリームを分割することを示す。
【図４】本発明の１つの実施形態においてタイル・リファレンス・リストのために提案されたデータ構造を示す。
【図５】本発明の１つの実施形態における、提案された階層タイルリスト・データ構造を示す。
【図６】本発明の１つの実施形態において、制御ストリームを多数のコアにわたってより粗い粒度で分割することを示す。
【図７】本発明を具体化するシステムの例示的な実装を示す。
【図８】図７の例示的なシステムへの修正を示す。
【図９】パイプ・インターリーブ・マーカーを用いて、制御ストリームを多重コアにわたって分割することを示す。
【図１０】パイプ・インターリーブ・マーカーを用いる、本発明の１つの実施形態における提案されたタイルリスト・データ構造を示す。
【図１１】パイプ・インターリーブ・マーカーを用いて、互いにリンクされた多数のタイルリストを処理するためにラスター化コアにより用いられるアルゴリズムを示す。
【図１２】パイプ・インターリーブ・マーカーを用いる例示的な形状処理システムを示す。
【図１３】ＰＩＭベースの形状システムにより生成されるタイルリストを処理することができる、タイルベースのラスター化システムのフロントエンドの例を示す。
【発明を実施するための形態】
【００１１】
図３は、形状リストを組み合わせるためにマスター・タイリング・ユニットを用いる提案されたシステムの単純化されたバージョンを示す。入ってくる形状ストリーム３００を多数のコアにわたって処理するために、（この例においては）２つの形状処理コア（ＧＰＣ）３４０及び３５０にわたって処理するためにデータ・ストリームを分割するストリーム分割器３１０によって、初めに、入ってくる形状ストリーム３００を、コア毎に１つの別個のストリームに分割する必要がある。この例においては、入ってくるストリームは、単純なラウンドロビン・ベースで、２つのコアにわたって分配されるが、各コアにかかる処理負荷に基づいて、ストリームを処理コアにわたって分割することも可能である。ストリーム分割器は、制御状態及びプリミティブを各々の形状処理コアに分配することに留意することが重要である。制御状態は、形状データをどのように処理するかについて、ハードウェアに指示する情報を含む。例えば、マトリクスを用いて、形状を周知の方法で変換することができ、或いは、テクスチャリングをどのように形状に適用するかの詳細を含ませることができる。例えば、ＧＰＣ０  ３２０についての制御ストリームは、三角形Ｔ１−Ｔ３と関連した制御状態１を含み、ＧＰＣ１  ３３０についての制御状態は、Ｔ１−Ｔ３についての状態１及びＴ４についての状態４を含む。
【００１２】
ＧＰＣ３４０及び３５０の各々は、それが処理する各三角形について、別個のタイリングされた形状リスト３６０及び３７０を生成する。各三角形ごとに更新された各タイルについて、ＧＰＣは、タイル・リファレンス・リスト（ＴＲＬ）３６５及び３７５のそれぞれのものに、リファレンスを挿入する。ＴＲＬ及びＧＰＣ毎のタイリングされた形状リストは、図４に示すデータ構造を形成し、マスター・タイルリスト３９０を生成するために、マスター・タイリング・ユニット３８０により使用される。
【００１３】
ＧＰＣ０のＴＲＬ４００は、そのコアにより処理される三角形Ｔ１及びＴ３についてのリファレンスを含み、例えば、Ｔ１はタイル０、０のみの中に存在するので、リファレンス及び対応するタイリングされた形状リスト４１０へのポインタは、ＴＲＬ内に含められ、これに、４つのタイル全てにおけるＴ３についてのリファレンスが続く。同様に、ＧＰＣ１のＴＲＬ４２０は、ＧＰＣ１についての対応するタイリングされた形状リスト４３０において、Ｔ２及びＴ４に重なる各タイルについてのリファレンスを含む。タイリングされた三角形のリストは、４３０において、各三角形が示された後に「Ｅｎｄ」マーカーを含むことに留意すべきである。
【００１４】
図３のマスター・タイリング・ユニット（ＭＴＵ）３８０は、（この例においては）プリミティブがＧＰＣにわたって分配される同じラウンドロビン順序でＴＲＬを読み取り、次に移る前に、各ＴＲＬから１つの三角形についてのタイル・リファレンスを取得する。ＭＴＵ３８０は、タイル・リファレンスを取得し、マスター・タイルリスト３９０を生成し、このリストは、図５に示すデータ構造を有する。各々がトップレベルのタイルリスト５１０内の対応するタイルリストを指し示す、通常のタイルベース・レンダリング・システムの領域ヘッダ５００と同様に、これらのリストは、三角形のオリジナルの提示順序を保存し、各々が「Ｔｅｒｍｉｎａｔｅ（終了）」マスターを有することに留意すべきである。トップレベルのタイルリストは、ＧＰＣにより生成され上述されたような、各タイル５２０及び５３０内の参照された三角形リストへのリンクを含む。
【００１５】
上述のように、各ＧＰＣのタイルリスト内の各三角形の後には、「Ｅｎｄ」マーカーが続く。これらのマーカーは、ラスター化ハードウェアにより、ＧＰＣタイルリストから上位のタイルリストに戻るよう、これに指示するために用いられる。マーカーは、単一の三角形の代わりに、各ＧＰＣにおいて三角形のグループを処理できるように使用される。このことは、マーカーが、上位のタイルリストと関連したメモリの量を最小にし、かつ、幾つかの三角形における頂点の処理が他のものより時間がかかる場合に、より大きいＧＰＣの分離を可能にするために重要である。
【００１６】
図６は、１０００個の三角形のブロックが各ＧＰＣに押し下げられる、多数のＧＰＣにわたって、アプリケーションから入ってくるプリミティブ・ストリームを分割することを示す。入ってくるデータ・ストリーム６００は、各々がそれぞれ４個、５０個、２０００個及び１５００個の三角形を含む４つのプリミティブ、すなわちｐｒｉｍ１、２、３及び４を含む。示されるように、２つのＧＰＣ（６５０及び６６０）にわたる処理のために、ストリーム分割器６１０は、ストリームを４つのブロックに分割し、ブロック６２０及び６３０はＧＰＣ０に渡され、ブロック６４０及び６５０はＧＰＣ１に渡される。Ｐｒｉｍ１及びＰｒｉｍ２は両方とも、Ｐｒｉｍ３及びＰｒｉｍ４の第１の部分と共にＧＰＣ０に送られる。Ｐｒｉｍ３及びＰｒｉｍ４の残りの部分は、ＧＰＣ１に送られる。分割の目的は、２つのＧＰＣ間の負荷を平衡させようとすることである。ブロック６２０及び６３０において、Ｐｒｉｍ３からのデータも、２つのブロック間で分割され、その両方ともＧＰＣ０によって処理される。これは、類似したブロック・サイズを生成するためである。ＴＲＬ及びトップレベルのデータ構造は、単一の三角形を指し示すのではなく、タイル毎のリファレンスが、各タイル内の各ブロックからの三角形のグループを指し示すことを除いて、変更されない。
【００１７】
図７は、２つの形状処理及びタイリング・コアを用いるシステムの例示的な実装を示す。プリミティブ及びコマンド・フェッチ・ユニット７００が、入ってくる制御ストリームを読み取り、それを、上述のように２つ（又はそれ以上）のコアにわたる処理のためにストリームを分割するストリーム分割器ユニット７０５に渡す。分割器は、フェッチされるプリミティブへのポインタを、「ローカル」プリミティブ・フェッチ・ユニット７１５及び７１６への入力における別個のコア、具体的にはＦＩＦＯ７１２及び７１４に渡す。ＦＩＦＯは、各バッチを処理するのに各コアが要する時間のために、ストリーム分割処理の分離を助けなければならない。ローカル・プリミティブ・フェッチ・ユニットは、ＦＩＦＯ７１２及び７１４からポインタを読み取り、次に、メモリから実際の形状データを読み取り、それを形状処理ユニット７２０及び７２１に渡し、形状処理ユニット７２０及び７２１は、形状を処理すると、それをローカル・タイリング・ユニット７２５及び７２６に渡す。タイリング・ユニットは、処理された形状をタイリングし、ローカル・タイルリスト７３０及び７３１を生成し、これらリストについてのＴＲＬをタイル・リファレンスＦＩＦＯ７４０及び７４１に渡し、タイル・リファレンスＦＩＦＯ７４０及び７４１は、マスター・タイリング・ユニット（ＭＴＵ）により消費されるのを待ちながら、既述したＴＲＬをバッファに入れる。これらのＦＩＦＯを、外部メモリ内又はチップ上に含ませ、ＧＰＣとマスター・タイリング・ユニットとの間のバッファリング量の柔軟性を大きくできることに留意すべきである。ＦＩＦＯ／バッファの使用により、ＧＰＣをＭＴＵの操作から分離し、ＭＴＵがマスター・タイルリストの生成に相当量の時間を費やしている場合のストールを最小にすることができる。ＭＴＵは、ＦＩＦＯからのＴＲＬデータを使用して、マスター領域リスト７６０を生成し、これとローカル・タイルリストと協働して、上述のようなデータ構造を形成する。
【００１８】
単一のラウンドロビン方式の使用により、１つのＧＰＣが他のＧＰＣよりも著しく時間がかかるために、分割ストリームＦＩＦＯ７１２及び７１４のいずれかが一杯になる場合に、ストリーム分割器がストールすることを意味することが留意されるであろう。このように、処理時間の不均衡が大きい場合には、ＧＰＣパイプラインのいずれもアイドル状態になるのを回避するため、これらのＦＩＦＯを法外に大きくする必要がある場合がある。図８は、そのコアがどれだけビジーであるかに基づいて、分割器がプリミティブを各コアに送る、すなわちその処理負荷が監視される、代替的な実施形態を示す。システムの操作は、例えば入力バッファリングの占有量（ｆｕｌｌｎｅｓｓ）など、それらがどれだけビジーであるかを示す、形状処理ユニット８２０及び８２１からの情報が、ストリーム分割器８０５に与えられる点を除いて、上述されたものと同一である。ストリーム分割器は、この情報を用いて、プリミティブのグループを、最も負荷の高くないＧＰＣに指向させる。プリミティブがコアにサブミットされる順序は今や非決定的（ｎｏｎ  ｄｅｔｅｒｍｉｎｉｓｔｉｃ）であるため、ストリーム分割器は、ＭＴＵがＴＲＬ  ＦＩＦＯからＴＲＬを正しい順序で引くことができるように、ＭＴＵのためにコア・リファレンス・シーケンスを生成する必要がある。リファレンス・シーケンスは、ストリーム分割器によりサービス・オーダーＦＩＦＯ８７０に書き込まれ、サービス・オーダーＦＩＦＯ８７０は、ＭＴＵは、どのＴＲＯ  ＦＩＦＯを次に読み取るかを決定するために、順番に読み込む。
【００１９】
図９は、マスター・タイリング・ユニットの代わりに、「パイプ・インターリーブ・マーカー」を用いて、多数のコアにわたって形状を処理するのを可能にするシステムを示す。マスター・タイリング・ユニット・ベースのシステムと同様に、上述のように、入ってくる形状ストリーム・データは、ストリーム分割器９１０によって分割され、ＧＰＣ９４０、９５０に分配される。各ＧＰＣは、それぞれのタイリングされた形状リスト９６０及び９７０を生成する。図１０は、生成された、タイリングされた形状リストの構造を示す。各ＧＰＣは、通常のタイルベースのレンダリング・システムのように、各コアに通される形状についてのタイリングされた形状リストを指し示すそれぞれの領域ヘッダ１０００及び１０２０を生成する。各形状ブロックの終わりに、ＧＰＣは、ラスター化プロセスの際に単一のコアにより正しい順序でリストをトラバースするのを可能にするために用いられる「パイプ・インターリーブ・マーカー」（ＰＩＭ）１０４０を挿入する。
【００２０】
図１１のフローチャートは、リストをトラバースするために、ラスター化によりＰＩＭマーカーがどのように使用されるかを示す。１１００において、各タイルの処理の開始時に、各コアが生成する領域ヘッダの内容が、コアリスト・ポインタ・アレイにロードされる。これにより、アレイ内の各エントリが、処理される領域の各コアのために生成された領域リストへのポインタを含むようになる。１１０５において、プリミティブ・データの第１のブロックが、アレイへのインデックスを０に設定することにより、第１のＧＰＣすなわちＧＰＣ０によって処理されたと仮定して、領域リストの処理が開始される。次に、１１１０において、これがゼロであるかどうかを確認するために、ポイント値が試験され、もしゼロであれば、それは、リストが空であるか、又は、既に処理が完了したことを意味し、１１１５において、アレイ・インデックスがインクリメントされ、１１１０において行なわれた試験が繰り返される。このプロセスは、形状を含むリストが見つかるまで繰り返され、その時点で、１１２０において、ポイント・データが、アレイ・インデックスにより索引付けされたポイントを用いてタイリングされた形状リストからフェッチされる。１１２５において、これがＰＩＭであるかどうかを判断するために、フェッチされたデータが試験され、ＰＩＭである場合には、次に、現在のリスト・ポインタが、タイリングされた形状リストの次のデータを指し示すように更新され、１１３０においてコアリスト・ポインタ・アレイに書き戻される。次に、１１３５において、アレイ・インデックスは、ＰＩＭ内で指定された値に設定され、処理は１１１０に戻る。１１２５における試験によりＰＩＭが検知されなかった場合、１１４０において、これがＥｎｄマーカーであるかどうかを確認するために、フェッチされたデータが試験され、Ｅｎｄが検知された場合、次に現在のタイリングの処理が完了し、ハードウェアは、次のタイリングの処理に移る。データがＥｎｄマーカーではない場合、これは形状又は状態リファレンスであり、必要に応じて１１４５で処理される。次に、１１５０において、リスト・ポインタが更新され、処理は１１２０に戻り、タイリングされた形状リスト内の次のエントリをフェッチする。
【００２１】
図１２は、２つの形状処理及びタイリング・コアを用いるＰＩＭベースのシステムの例示的な実装を示す。プリミティブ及びコマンド・フェッチ・ユニット１２００が、入ってくる制御ストリームを読み取り、これを、上述のような２つ（又はそれ以上）のコアにわたる処理のためにストリームを分割するストリーム分割器ユニット１２０５に渡す。分割器は、フェッチされるプリミティブへのポインタを、「ローカルの」プリミティブ・フェッチ・ユニット１２１５及び１２１６への入力における別個のコア、具体的にはＦＩＦＯ１２１２及び１２１４に渡す。ＦＩＦＯは、各バッチを処理するのに各コアが要する時間のために、ストリーム分割処理の分離を助けなければならない。ローカル・プリミティブ・フェッチ・ユニットは、メモリから実際の形状データを読み取り、それを形状処理ユニット１２２０及び１２２１に渡し、形状処理ユニット１２２０及び１２２１は、形状を処理すると、それをローカル・タイリング・ユニット１２２５及び１２２６に渡す。タイリング・ユニットは、処理された形状をタイリングし、コア毎のタイルリスト１２３０及び１２３１を生成する。
【００２２】
図１３は、ＰＩＭを用いて、多数のＧＰＣにより生成されたタイルリストをトラバースすることができるラスター化コアのフロントエンドを示す。領域ヘッダ・フェッチ・ユニット１３１０が、各ＧＰＣにより生成された画面空間タイリングされた形状リスト１３００から領域ヘッダを読み取り、図１１について述べられたように結果として得られたリスト・ポインタをコアリスト・ポインタ・アレイ１３２０に書き込む。タイリングされた形状リスト・フェッチ・ユニット１３３０は、次に、図１１について説明されたようなタイル毎の制御リストをフェッチして処理し、処理されることになる結果として得られる形状を、隠面消去ユニット１３４０に渡し、この時点から、全ての処理は、通常のタイルベースのレンダリング・システムについて説明されたものと同じである。
【００２３】
上記の開示事項に加えて、原特許出願２０１０−５３５４５７号の出願時の特許請求の範囲の記載を以下に開示する。
〔請求項１〕
三次元グラフィックス・レンダリング・システムにおいて形状処理及びタイリングを行なうための方法であって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するステップであって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、ステップと、
複数の形状処理ユニット間でプリミティブ・データを分割するステップと、
各々の形状処理ユニットにより処理される各三角形について、三角形を、その形状処理ユニットと関連した１組のタイリングされた形状リストにおけるそれぞれのタイルリストに挿入するステップと、
三角形が挿入される各タイルについて、そのタイルへのリファレンスを、その形状処理ユニットと関連したタイル・リファレンス・リストに挿入するステップと、
データが前記形状処理ユニットに分配された順序で、各々の形状処理ユニットと関連した前記タイル・リファレンス・リストからデータを読み取るステップと、
前記タイル・リファレンス・リスト及び各々の形状処理ユニットと関連した前記タイリングされた形状から、レンダリングされる前記シーンについてのタイリング・データを生成するステップと、
を含むことを特徴とする方法。
〔請求項２〕
前記プリミティブ・データを分割するステップは、ラウンドロビン・ベースで分割するステップを含むことを特徴とする、請求項１に記載の方法。
〔請求項３〕
前記プリミティブ・データを分割するステップは、実質的に類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項１又は請求項２に記載の方法。
〔請求項４〕
前記プリミティブ・データを分割するステップは、各々のグラフィック処理ユニットにかかる処理負荷を監視し、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するステップを含むことを特徴とする、請求項１に記載の方法。
〔請求項５〕
前記プリミティブ・データを分割するステップと、それを前記グラフィックス処理ユニットに送るステップとの間にプリミティブ・データをバッファに入れるステップを含むことを特徴とする、前記請求項のいずれかに記載の方法。
〔請求項６〕
前記タイリング・データを生成するステップの前に、タイル・リファレンス・リスト及び前記タイリングされた形状リストからのデータをバッファに入れるステップを含むことを特徴とする、前記請求項のいずれかに記載の方法。
〔請求項７〕
前記タイリング・データを生成するステップは、前記シーンのレンダリングに用いるためのマスター・タイルリストを生成するステップを含むことを特徴とする、前記請求項のいずれかに記載の方法。
〔請求項８〕
三次元グラフィックス・レンダリング・システムにおいて形状処理及びタイリングを行なうためのシステムであって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するための手段であって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、手段と、
複数の形状処理ユニット間でプリミティブ・データを分割するための手段と、
処理される各三角形について、三角形を、その形状処理ユニットと関連した１組のタイリングされた形状リストにおけるタイリングされた形状リストに挿入するように構成された形状処理ユニットと、
三角形が挿入される各タイルについて、そのタイルへのリファレンスをその形状処理ユニットと関連したタイル・リファレンス・リストに挿入するための手段と、
データが前記形状処理ユニットに分配された順序で、各々の形状処理ユニットと関連した前記タイル・リファレンス・リストからデータを読み取るための手段と、
前記タイル・リファレンス・リスト及び各々の形状処理ユニットと関連した前記タイリングされた形状から、レンダリングされる前記シーンについてのタイリング・データ・リストを生成するための手段と、
を含むことを特徴とするシステム。
〔請求項９〕
前記プリミティブ・データを分割するための手段は、ラウンドロビン・ベースでこれを行なうことを特徴とする、請求項８に記載のシステム。
〔請求項１０〕
前記プリミティブ・データを分割するための手段は、実質的に類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項８又は請求項９に記載のシステム。
〔請求項１１〕
前記プリミティブ・データを分割するための手段は、各々のグラフィックス処理ユニットにかかる処理負荷を監視するための手段と、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するための手段とを含むことを特徴とする、請求項８に記載のシステム。
〔請求項１２〕
前記プリミティブ・データを分割するための手段と前記グラフィックス処理ユニットとの間でプリミティブ・データをバッファに入れるための手段を含むことを特徴とする、請求項８から請求項１１までのいずれかに記載のシステム。
〔請求項１３〕
マスター・タイルリストを生成するための前記手段に提供する前に、タイル・リファレンス・リスト及び前記タイリングされた形状からのデータをバッファに入れるための手段を含むことを特徴とする、請求項８から請求項１２までのいずれかに記載のシステム。
〔請求項１４〕
前記タイリング・データを生成するための手段は、前記タイリング・データが挿入されるマスター・タイルリストを含むことを特徴とする、請求項８から請求項１３までのいずれかに記載のシステム。
〔請求項１５〕
三次元グラフィックス・レンダリング・システムにおいて、形状処理及びタイリングを行なうための方法であって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するステップであって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、ステップと、
複数の形状処理ユニット間でプリミティブ・データを分割するステップと、
各々の形状処理ユニットにより処理される各三角形について、三角形を、その形状処理ユニットと関連した１組のタイリングされた形状リストにおけるそれぞれのタイルリストに挿入するステップと、
各タイルについて、マーカーを、各々のグラフィックス処理ユニットにより処理される形状の各ブロックについてのその形状処理ユニットと関連した前記タイリングされた形状リストに挿入するステップと、
各々の形状処理ユニットと関連した前記タイリングされた形状リストから、レンダリングされる前記シーンについてのタイリング・データを生成するステップと、
前記タイリングされた形状リスト内の前記マーカーを用いて、異なるグラフィックス処理ユニットからのタイリングされた形状リスト間でいつ切り換えるかを示すステップと、を含むことを特徴とする方法。
〔請求項１６〕
前記プリミティブ・データを分割するステップは、ラウンドロビン・ベースで分割するステップを含むことを特徴とする、請求項１５に記載の方法。
〔請求項１７〕
前記プリミティブ・データを分割するステップは、実質的に類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項１５又は請求項１６に記載の方法。
〔請求項１８〕
前記プリミティブ・データを分割するステップは、各々のグラフィック処理ユニットにかかる処理負荷を監視し、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するステップを含むことを特徴とする、請求項１５に記載の方法。
〔請求項１９〕
前記プリミティブ・データを分割するステップと、それを前記グラフィックス処理ユニットに送るステップとの間にプリミティブ・データをバッファに入れるステップを含むことを特徴とする、請求項１５から請求項１８までのいずれかに記載の方法。
〔請求項２０〕
前記タイリング・データを生成するステップの前に、タイル・リファレンス・リスト及び前記タイリングされた形状リストからのデータをバッファに入れるステップを含むことを特徴とする、請求項１５から請求項１９までのいずれかに記載の方法。
〔請求項２１〕
前記タイリングされた形状リスト内の前記マーカーを用いるステップは、前記タイリングされた形状リストの各々から領域ヘッダを読み取るステップと、前記シーンのレンダリングに用いるために、タイルごとに順番に、各々のグラフィックス処理ユニット・リストにより生成された前記タイリングされた形状リストの前記開始点を指し示すポインタ・アレイに、タイリング・リスト・ポインタを書き込むステップとを含むことを特徴とする、請求項１５から請求項２０までのいずれかに記載の方法。
〔請求項２２〕
三次元グラフィックス・レンダリング・システムにおいて、形状処理及びタイリングを行なうためのシステムであって、
レンダリングされるシーンについてのグラフィックス・プリミティブ・データのストリームを提供するための手段であって、各々のプリミティブは、そのプリミティブを構成する複数の三角形を定めるデータを含む、手段と、
複数の形状処理ユニット間でプリミティブ・データを分割するための手段と、
処理される各三角形について、三角形を、その形状処理ユニットと関連した１組のタイリングされた形状リストにおけるタイリングされた形状リストに挿入するように配置された各々の形状処理ユニットと、
そのグラフィックス処理ユニットにより処理される形状の各ブロックについて、各タイルについてのマーカーを、その形状処理ユニットと関連した前記タイリングされた形状リストに挿入するための手段と、
各々の形状処理ユニットと関連した前記タイリングされた形状からレンダリングされる前記シーンについてのタイリング・データを生成し、前記タイリングされた形状リストにおける前記マーカーを用いて異なるグラフィックス処理コアからのタイリングされた形状リスト間でいつ切り替えるかを示すための手段と、
を含むことを特徴とするシステム。
〔請求項２３〕
前記プリミティブ・データを分割するための手段は、ラウンドロビン・ベースでこれを行なうことを特徴とする、請求項２２に記載のシステム。
〔請求項２４〕
前記プリミティブ・データを分割するための手段は、実質的に類似した量のプリミティブ・データを各々の形状処理ユニットに分配するよう配置されることを特徴とする、請求項２２又は請求項２３に記載のシステム。
〔請求項２５〕
前記プリミティブ・データを分割するための手段は、各々のグラフィックス処理ユニットにかかる処理負荷を監視するための手段と、それらの処理負荷に応じてグラフィック処理ユニット間でデータを分割するための手段とを含むことを特徴とする、請求項２２に記載のシステム。
〔請求項２６〕
前記プリミティブ・データを分割するための手段と前記グラフィックス処理ユニットとの間でプリミティブ・データをバッファに入れるための手段を含むことを特徴とする、請求項２２から請求項２５までのいずれかに記載のシステム。
〔請求項２７〕
タイル・リファレンス・リスト及び前記タイリングされた形状からのデータを、前記タイリング・データを生成するための手段に提供する前にバッファに入れるための手段を含むことを特徴とする、請求項２２から請求項２５までのいずれかに記載のシステム。
〔請求項２８〕
前記タイリングされた形状リスト内の前記マーカーを用いるための手段は、前記タイリングされた形状リストの各々から領域ヘッダを読み取るための手段と、各々のグラフィックス処理ユニットにより生成された前記タイリングされた形状リストの前記開始点を指し示すポインタ・アレイに、タイリング・リスト・ポインタを書き込むための手段と、前記シーンのレンダリングに用いるために、タイルごとに順番に前記タイリングされた形状リストをフェッチするための手段とを含むことを特徴とする、請求項１１から請求項２７までのいずれかに記載のシステム。
【符号の説明】
【００２４】
３００：形状ストリーム
３１０、６１０、８０５、９１０：ストリーム分割器
３２０、３３０、６５０、６６０、９４０、９５０：ＧＰＣ
３４０、３５０：形状処理コア（ＧＰＣ）
３６０、３７０、４１０、４３０、９６０、９７０、１０１０、１０３０：タイリングされた形状リスト
３６５、３７５、４００、４２０：タイル・リファレンス・リスト（ＴＲＬ）
３８０：マスター・タイリング・ユニット（ＭＴＵ）
３９０：マスター・タイルリスト
５００、１０００、１０２０：領域ヘッダ
５２０、５３０：タイル
５１０：トップレベルのタイルリスト
６２０、６３０、６４０、６５０：ブロック
７００、１２００：プリミティブ及びコマンド・フェッチ・ユニット
７０５、１２０５：ストリーム分割器ユニット
７１２、７１４、１２１２、１２１４：ＦＩＦＯ
７１５、７１６、１２１５、１２１６：「ローカル」プリミティブ・フェッチ・ユニット
７２０、７２１、８２０、８２１、１２２０、１２２１：形状処理ユニット
７２５、７２６、１２２５、１２２６：ローカル・タイリング・ユニット
７３０、７３１：ローカル・タイルリスト
７４０、７４１：タイル・リファレンスＦＩＦＯ
７６０：マスター領域リスト
８７０：サービス・オーダーＦＩＦＯ
１０４０：「パイプ・インターリーブ・マーカー」（ＰＩＭ）
１２３０、１２３１：コア毎のタイルリスト
【図１】
0005456812.tif 000003
【図２】
0005456812.tif 000004
【図３】
0005456812.tif 000005
【図４】
0005456812.tif 000006
【図５】
0005456812.tif 000007
【図６】
0005456812.tif 000008
【図７】
0005456812.tif 000009
【図８】
0005456812.tif 000010
【図９】
0005456812.tif 000011
【図１０】
0005456812.tif 000012
【図１１】
0005456812.tif 000013
【図１２】
0005456812.tif 000014
【図１３】
0005456812.tif 000015