(57)【要約】【課題】タイルベースのグラフィックス処理システムを提供する。【解決手段】タイルベースのグラフィックスプロセッサにおいて、プリミティブリスト(ビン)が、2×2のタイルのブロック40について作成される。プロセッサは、ビンが対応するタイルの組の範囲内のプリミティブの分配を示す分配情報をビンにおけるプリミティブごとに決定し、記憶する。したがって、2×2のタイルの組40を形成する4つのタイルのうちの2つの中に存在することが、その境界ボックス43によって分かるプリミティブ42がまた、2×2のタイルの群40のうちのタイル「1」および「3」に位置していることを示す形「0101」のタイルカバレージビットマップと関連付けられる。グラフィックスプロセッサは、カバレージビットマップ(情報)を使用して、現在処理されているタイルについてプリミティブが処理されるべきか決定する。【選択図】図2
2010165357.tif 000002
【特許請求の範囲】
【請求項１】
タイルベースのグラフィックス処理システムにおいて表示するためのシーンをレンダリングするときに使用するためのデータの組を生成する方法であって、
レンダリングすべき複数のタイルの組についてレンダリングすべきプリミティブのリストを決定し、記憶するステップと、
前記リストが作成されている複数のタイルの前記組によって包囲されるエリアの範囲内のプリミティブの前記リストにおける前記プリミティブの分配を示すための情報を決定し、記憶するステップと
を含む方法。
【請求項２】
レンダリングすべき複数のタイルの組についてレンダリングすべきプリミティブのリストが、前記リストが対応する複数のタイルの前記組によって包囲されるエリアの範囲内のプリミティブのそのようなリストにおける前記プリミティブの分配を示す情報とともに作成されるタイルベースのグラフィックス処理システムにおいて表示するためのシーンをレンダリングする方法であって、前記グラフィックス処理システムを含み、表示すべきシーンについてタイルを処理しているときに、
問題の前記タイルを包囲する前記シーンについてのプリミティブリストを使用して、問題の前記タイルについて処理すべきプリミティブの組を決定するステップと、
前記プリミティブリストと関連付けられた前記プリミティブ分配情報を使用して、問題の前記タイルについて処理すべき前記プリミティブリストにおけるプリミティブの前記組のうちの前記プリミティブを決定するステップと、
前記決定されたプリミティブを処理して、表示するための前記タイルをレンダリングするステップと
を行う方法。
【請求項３】
前記プリミティブ分配情報は、前記シーンがレンダリングされるとき、プリミティブの前記リストが包囲する前記複数のタイルのうちのどの1つまたは複数のタイルについて、前記またはそれぞれのプリミティブが処理されるべきであるかを直接的に示す、請求項1または2に記載の方法。
【請求項４】
前記プリミティブ分配情報は、カバレージマスクの形態にある、請求項1、2、または3に記載の方法。
【請求項５】
前記プリミティブ分配情報は、前記プリミティブリストが対応する複数のタイルの前記組によってカバーされるエリアの範囲内の完全な組の分配可能性のすべてではなく、一部だけを示すことが可能である符号化形態で提供される、請求項1、2、3または4に記載の方法。
【請求項６】
前記プリミティブ分配情報は、2つの異なる方向ごとに別々に符号化される、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記プリミティブリストにおけるプリミティブごとに、前記プリミティブリストが対応するエリア全体にわたって前記プリミティブの分配を示す関連した分配情報の組が存在する、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記プリミティブ分配情報は、前記プリミティブリストにおいて残存するプリミティブ情報に対して別々に読取り可能である、請求項1から7のいずれか一項に記載の方法。
【請求項９】
タイルベースのグラフィックス処理システムにおいて表示するためのシーンをレンダリングするときに使用するためのデータの組を生成するための装置であって、
複数のタイルの組についてレンダリングすべきプリミティブのリストを決定し、記憶するための手段と、
前記リストが作成されている複数のタイルの前記組によって包囲されるエリアの範囲内のプリミティブの前記リストにおける前記プリミティブの分配を示すための情報を決定し、記憶するための手段と
を含む装置。
【請求項１０】
レンダリングすべき複数のタイルの組についてレンダリングすべきプリミティブのリストが、前記リストが対応する複数のタイルの前記組によって包囲されるエリアの範囲内のプリミティブのそのようなリストにおける前記プリミティブの分布を示す情報とともに作成されるタイルベースのグラフィックスプロセッサであって、
表示すべきシーンについてプリミティブリストを使用して、前記シーンのためのタイルについて処理すべきプリミティブの組を決定するための手段と、
前記プリミティブリストと関連付けられた前記プリミティブ分配情報を使用して、問題の前記タイルについて処理すべき前記プリミティブリストにおけるプリミティブの前記組のうちの前記プリミティブを決定するための手段と、
前記決定されたプリミティブを処理して、表示するための前記タイルをレンダリングするための手段と
を含むグラフィックスプロセッサ。
【請求項１１】
タイルベースのグラフィックス処理システムにおいて使用するためのデータ構造であって、
複数のタイルの組についてレンダリングすべきプリミティブのリストと、
プリミティブの前記リストが対応する複数のタイルの前記組によって包囲されるエリアの範囲内のプリミティブの前記リストにおける前記プリミティブの分配を示すための情報と
を含むデータ構造。
【請求項１２】
前記プリミティブ分配情報は、前記シーンがレンダリングされるとき、プリミティブの前記リストが包囲する前記複数のタイルのうちのどの1つまたは複数のタイルについて、
前記またはそれぞれのプリミティブが処理されるべきであるかを直接的に示す、請求項9、10、または11に記載の装置、プロセッサ、またはデータ構造。
【請求項１３】
前記プリミティブ分配情報は、カバレージマスクの形態にある、請求項9、10、11もしくは12に記載の装置、プロセッサまたはデータ構造。
【請求項１４】
前記プリミティブ分配情報は、前記プリミティブリストが対応する複数のタイルの前記組によってカバーされるエリアの範囲内の完全な組の分配可能性をすべてではなく、一部だけを示すことが可能である符号化形態で提供可能である、請求項9、10、11、12または13の装置、プロセッサまたはデータ構造。
【請求項１５】
前記プリミティブ分配情報は、2つの異なる方向ごとに別々に符号化される、請求項9から14のいずれか一項に記載の装置、プロセッサまたはデータ構造。
【請求項１６】
前記プリミティブリストにおけるプリミティブごとに、前記プリミティブリストが対応するエリア全体にわたって前記プリミティブの分配を示す関連した分配情報の組が存在する、請求項9から15のいずれか一項に記載の装置、プロセッサまたはデータ構造。
【請求項１７】
前記プリミティブ分配情報は、前記プリミティブリストにおいて残存するプリミティブ情報に対して別々に読取り可能である、請求項9から16のいずれか一項に記載の装置、プロセッサまたはデータ構造。
【請求項１８】
請求項9、10、12、13、14、15、16、および17のいずれか一項に記載の装置またはプロセッサを含む、2Dもしくは3Dグラフィックスプロセッサまたは2Dもしくは3Dグラフィックス処理プラットフォーム。
【請求項１９】
プログラム要素がデータ処理手段上で起動するとき、請求項1から8のいずれか一項に記載の方法を実行するためのコンピュータソフトウェアコード部分を含むコンピュータプログラム要素。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックス処理システムに関するものであり、詳細には、タイルベースのグラフィックス処理システムに関するものである。
【背景技術】
【０００２】
本発明は、特に3次元グラフィックスの処理に関して説明されることになるが、当業者によって理解されるように、同様に2次元グラフィックスの処理にも等しく適用可能である。
【０００３】
当技術分野において知られているように、3Dグラフィックス処理は、普通は、表示すべきシーンをまず、いくつかの類似した基本的コンポーネント(いわゆる「プリミティブ」)に分割して、3Dグラフィックス処理動作がより容易に実行されることができるようにすることによって実行される。これらの「プリミティブ」は、通常は、三角形など、単純多角形の形態にある。
【０００４】
表示すべきシーンについてのプリミティブは、通常は、グラフィックスの表示を必要とするアプリケーション(例えばゲーム)から受け取られるグラフィックス描画命令(要求)を使用して、グラフィックス処理システムのためのアプリケーションプログラムインターフェースによって生成される。
【０００５】
それぞれのプリミティブは、この段階では、通常は、頂点の組によって定義され、頂点の組として示される。プリミティブについてのそれぞれの頂点は、それと、頂点を示すデータの組(位置、カラー、テクスチャ座標、および他の属性データなど)とを関連付けている。次いで、このデータは、例えば、表示するための頂点(頂点が関係しているプリミティブ(複数可))をラスタライズし、レンダリングするとき使用される。
【０００６】
シーンについてのプリミティブおよびそれらの頂点が生成され、定義されると、それらは、例えば、そのシーンをスクリーンまたはプリンタなどの出力表示デバイス上に表示するためのグラフィックス処理システムによって処理可能である。
【０００７】
この処理は、基本的には、シーンが表示されることになるとき、そのシーンをカバーする一連のサンプリングポイントのうちのどのサンプリングポイントがプリミティブによってカバーされるかを決定すること、次いで、そのサンプリングポイントにおけるプリミティブを示すために、それぞれのサンプリングポイントが持つべきである外観(例えば、そのカラーに関してなど)を決定することを含む。これらのプロセスは、普通、それぞれ、ラスタライズおよびシェーディングと呼ばれる。
【０００８】
ラスタライズプロセスは、プリミティブに使用されるべきであるサンプル位置(すなわち、シーンが表示されることになるとき、そのシーンにおけるプリミティブを示すために使用すべきサンプルポイントの(x、y)位置)を決定する。これは、一般には、プリミティブの頂点の位置を使用して行われる。
【０００９】
次いで、シェーディングプロセスは、サンプルポイントにおけるプリミティブを表示するために必要な赤色、緑色、および青色(RGB)のカラー値ならびに「アルファ」(透明度)値などのデータを導出する(すなわち、それぞれのサンプルポイントを「シェーディングする」)。これは、当技術分野において知られているように、テクスチャを適用すること、サンプルポイントデータ値をブレンドすることなどを含むことが可能である。
【００１０】
(3Dグラフィックスの文献においては、用語「ラスタ化」は、時に、サンプル位置へのプリミティブの変換と、シェーディングとの両方を意味するために使用される。しかし、本明細書においては、「ラスタ化」は、プリミティブデータをサンプリングポイントのアドレスに変換することだけを示すために使用されることになる。)
【００１１】
これらのプロセスは、一般には、通常「フラグメント」と呼ばれる離散的グラフィカルなエンティティとして、サンプリングポイントを「示すこと」によって実行され、それらのフラグメントに関してグラフィックス処理動作(シェーディングなど)が実行される。実際には、それぞれのサンプリングポイントは、問題のサンプリングポイントにおけるプリミティブをシェーディングするために使用されることになるフラグメントによって示されることになる。フラグメントは、単一のサンプリングポイントまたは複数のサンプリングポイントを示すこと(それと関連付けていること)が可能である。「フラグメント」は、シェーディングプロセス(シェーディングパイプライン)を通過するグラフィカルなエンティティである。
【００１２】
(「フラグメント」は、そのため、プリミティブの所与のスクリーン空間のサンプルポイントまたは複数のポイントに補間される効果的なプリミティブデータの組である(それと関連付けている)。それはまた、問題のサンプルポイントまたは複数のポイント(フラグメント位置)におけるプリミティブをシェーディングするために必要とされるプリミティブごとのおよび他の状態のデータを含むことも可能である。それぞれのグラフィックスフラグメントは、シーンが処理されるとき、シーンの「ピクセル」と効果的に等価であると合理的に考えてよい。)
【００１３】
それぞれのグラフィックス「フラグメント」は、最終出力表示における単一のピクセル(ピクチャエレメント)に対応することが可能であり、(ピクセルは、最終表示における特異点であるので、グラフィックスプロセッサが動作する(レンダリングする)「フラグメント」と、表示ピクセルとの間には、1対1のマッピングが存在することが可能である)。しかし、例えば、ダウンスケーリングなど、後処理の個々の形態が最終画像を表示する前にレンダリングされた画像上で実行される場合、それは、フラグメントと、表示ピクセルとの間には1対1の対応が存在しない場合である可能性がある。
【００１４】
ラスタライズプロセスおよびシェーディングプロセスの出力は、適切にシェーディングされたサンプリングポイントの2次元配列であり、それは、その場合、当技術分野において知られているように、(ダウンサンプリングなど、表示する前の画像のいずれの後処理を前提として)処理されたシーンを表示するための表示スクリーンに、またはプリンタを介して適用可能である。ラスタライズおよびシェーディングプロセスの成果であるサンプリングポイントの出力2次元配列は、それが、レンダリングプロセス(ラスタ化およびシェーディングプロセス)がその出力として生成する位置の配列であるとき、「レンダーターゲット」であると考えてよい。実際には、ラスタライズおよびシェーディングプロセスは、所望の出力画像エリアに対応する2次元のレンダーターゲットに「着色する」。
【００１５】
多数のグラフィックス処理システムは、いわゆる「タイルベースの」レンダリングを使用する。タイルベースのレンダリングにおいては、シーンを表示するために使用されることになるレンダリングプロセスの2次元出力配列(「レンダーターゲット」)は、レンダリングプロセスのために、通常「タイル」と呼ばれる複数のより小さなサブ領域にサブ分割されるか、または区分けされる。タイル(サブ領域)は、別々に(一般には、次々に)それぞれレンダリングされる。レンダリングされたタイル(サブ領域)は、次いで、例えば、表示するための完全な出力配列(レンダーターゲット)を形成するために再結合される。
【００１６】
タイルは、そのため、レンダリングプロセスが動作するレンダーターゲットエリアのサブ分割と考えてよい。このような構成においては、レンダーターゲットエリア(出力エリア)は、一般には、規則的な大きさおよび形状のタイル(通常、例えば、正方形または長方形である)に分割されるが、これは、絶対不可欠ではない。
【００１７】
普通「タイリング」および「タイルベースの」レンダリングに使用される他の用語は、「チャンキング」(サブ領域は、チャンク」と呼ばれる)、および「バケット」レンダリングを含む。用語「タイル」および「タイリング」を、本明細書において以下、便宜上使用するが、これらの用語は、すべての代替および均等の用語ならびに技術を包含するように意図されたものであることを理解すべきである。
【００１８】
このようなタイルベースのレンダリングの利点は、とりわけ、それがメインメモリ(例えばオフチップDDR-SDRAM)のグラフィックス帯域幅の量を抑え、電力をセーブできることである。これは、タイルベースのレンダリングは、プリミティブが現れることのないレンダーターゲットエリア(出力エリア)の領域についてプリミティブを処理しないようにすることが容易にできるからである。タイルベースのレンダリングはまた、オンチップバッファおよびオンチップキャッシュの効率性を高める空間局所性を向上させる。
【００１９】
タイルベースのレンダリングシステムにおいては、したがって、通常、例えば、タイルに実際には存在しないプリミティブを不必要にレンダリングしないようにするために、所与のタイルに実際に存在するそれらのプリミティブを識別でき、知ることができることが望ましい。これを容易にするためには、そのタイルについてレンダリングすべき(例えば、タイルに現れることになる)プリミティブのリストを、タイルごとに作成することが知られている。(「タイルリスト」とも呼ばれることが可能である)このような「プリミティブリスト」は、問題のタイルが表示のためにレンダリングされた場合、処理すべきプリミティブを(例えば、プリミティブインジケータを参照することによって)識別する。
【００２０】
そのため、基本的にレンダリングすべきタイルごとにプリミティブリストを作成するプロセスは、所与のタイルについてレンダリングされるべきであるプリミティブを決定することを含む。通常、このプロセスは、問題のタイルと交差する(すなわち、(少なくとも部分的に)そのタイル内に現れることになる)プリミティブを(所望のレベルの精度で)決定することによって、次いで、グラフィックス処理システムによって将来使用するためのそれらのプリミティブのリストを作成することによって実行される。
【００２１】
((よくある場合のように)プリミティブが複数のタイルに入る場合、それは、それがその範囲内に入るタイルごとにタイルリスト内に含められるということを、ここでは留意されたい。また、タイリングプロセスにおいては精度が限定されるので、いくつかのプリミティブは、それらが、実際には、その中に存在しないタイルについてプリミティブリスト内にリストされ得る。)
【００２２】
実際、それぞれのタイルは、タイルの範囲内に入る(すなわち、タイルと交差する)可能性があるとみなされるあらゆるプリミティブが配置されるその中にビン(プリミティブリスト)を有するとみなしてよい。実際に、このようにして、タイルごとの基盤上にプリミティブをソーティングするプロセスは、普通、「ビニング」と呼ばれ、そのように作成されたプリミティブのリストは、普通、「ビン」と呼ばれる。
【００２３】
便宜上、本明細書において、用語「ビン」は、タイル(またはタイルの組)について処理すべきプリミティブを示す目的で作成されるプリミティブのリストを示すために使用される。(本質的には、上述したように、「タイル」はレンダリングプロセスが動作するレンダーターゲット(出力)エリアのサブ領域(サブ分割)であり、「ビン」(プリミティブリスト)は、グラフィックス「ジョブ」(例えばプリミティブ)がレンダリングプロセスを補佐するために分配されるレンダーターゲット(出力)エリアのサブ領域(サブ分割)であり、(「ビン」は、出力レンダーターゲットのエリア全体にわたってグラフィックス「ジョブ」の分配を効率的に記録する。)それぞれの「ビン」は、単一のタイルに対応することが可能であるが、さらに後述するように、ビンは、複数のタイルに対応することが知られており、可能である。)
【００２４】
当技術分野において知られているように、任意の所与のタイルについてリスト(レンダリング)されるべきであるプリミティブを決定するプロセスは、例えば、ビニングプロセスおよびレンダリングプロセスの種々の部分についての効率最適化に応じて、様々なレベルの精度で実行可能である。例えば、最も精密なレベルでは、所与のプリミティブがどのタイルの中に少なくとも部分的に現れることになるのか、その場合、それらのタイルについてビン(プリミティブリスト)内に含まれるプリミティブだけを正確に決定可能になる。これは、普通、「正確」ビニングと呼ばれる。
【００２５】
図1は、正確ビニングプロセスを示している。図1に示されるように、表示すべきシーン1(レンダーターゲットエリア)の出力形態は、16個の規則的な大きさのレンダリングサブ領域またはタイル2に分割される。次いで、シーンにおけるプリミティブごとに、プリミティブが実際にどの1つまたは複数のタイルの範囲内に現れる(入る)かが決定される。プリミティブは、その範囲内に入るとみなされるタイルごとにビン(プリミティブリスト)に加えられる。したがって、図1に示される例をとると、プリミティブ3は、タイル4についての「ビン」(プリミティブリスト)に加えられ、プリミティブ5は、タイル6および7についてのビン内に含まれ、プリミティブ8は、タイル9、10、11および12についてのビン(プリミティブリスト)内に含まれ、プリミティブ13は、タイル12についてのビン(プリミティブリスト)内に含まれる。(図1は、明瞭にするために、少数のタイルとプリミティブとだけを示していることに、ここでは留意されたい。当業者によって理解されるように、実際のグラフィックス処理動作においては、一般には、多数のより多くのプリミティブおよびタイルが存在することになる。)
【００２６】
また、正確ビニングにより達成されるよりもさらに精密度の低い「ビン」(プリミティブリスト)を作成することも知られている。これは、例えば、プリミティブリストの作成を単純にするために有用であることが可能である。1つの一般的な「精密度のより低い」ビニング技術は、「境界ボックス」ビニングである。この場合には、いわゆる「境界ボックス」が、プリミティブまたはプリミティブの組の周りに描画され、次いで、境界ボックスによってカバーされるタイルが決定される。境界ボックスが示す(すなわち、境界ボックスによって包囲される)プリミティブまたは複数のプリミティブは、次いで、境界ボックスが(少なくとも部分的に)カバーするとみなされたタイルごとにリスト(ビニング)される。
【００２７】
したがって、この構成は、境界ボックスを使用して、プリミティブそれ自体ではなく、所与のプリミティブがレンダリングされるようにリストされるべきであるタイルを決定する。これは、(例えば、境界ボックスがプリミティブをしっかりとまたは精密に取り囲むには十分でない場合、)例えば、プリミティブが実際にはその範囲内に入らないタイルについてレンダリングするためにリストされ得ることを意味する可能性があるが、一方では、このようにして、境界ボックスを使用することは、プリミティブリストの作成を単純にすることが可能である。
【００２８】
レンダリングすべきプリミティブのリスト(ビン)が、このようにして、タイルごとに作成されると、プリミティブリストは、例えば、問題のタイルがレンダリングされた場合、どのプリミティブが考慮される(かつ、レンダリングされる)必要があるかを、システムが識別することを可能にするためなどの使用のため記憶される。
【００２９】
このようなタイルベースのレンダリング構成は、例えば、プリミティブが存在しない場合にシーンが出力されることになるとき、プリミティブが、シーンの領域に対してなおも処理されないようにするのに役立つことが可能であるので、よく動作するとみなされている。
【００３０】
タイルベースのレンダリング構成を使用する1つの重要性は、上述したように、タイルについて処理されなくてはならないプリミティブのリストをタイルごとに維持する必要があることである。維持されなくてはならないこのようなプリミティブリストにはそれぞれ、諸経費およびコストがかかる。
【００３１】
さらには、グラフィックスシステムのフレームバッファの大きさが増大するにつれて、この要求は、ますます厄介になる可能性がある。例えば、1080P(HDTV)表示フォーマットの場合、(16×16のサンプル位置タイルと仮定すると)8,000個を超えるタイルが必要になる可能性がある。この多数のタイルに対するすべてのプリミティブリストの大きさは、大きいものである。それぞれの新規フルスクリーンのプリミティブは、(プリミティブがどれだけ多くのタイルについてリストされなくてはならないかに応じて)8,000個のコマンドまで加えることになる。また、プリミティブリストのそれぞれに対して、ポインタを維持するためにも、著しい諸経費がかかる。これはすべて、性能に深刻な影響をもたらす可能性がある。
【００３２】
これらのコストを抑えるための1つの方法は、より少ないプリミティブリスト(ビン)を維持することであろう。そのため、それは、例えば、所与の数のタイルに必要とされるプリミティブリスト(ビン)の数を抑えるために、個別のタイルではなく、2×2または4×4のタイルの群など、複数のタイル(ただ1つのタイルよりも大きなレンダーターゲット(出力)エリア)をカバーするプリミティブリスト(ビン)を維持することが提案されている。
【００３３】
これは、使用されるビン(プリミティブリスト)の数と、したがって、プリミティブリスト(ビン)に対するメモリ要件およびポインタ維持など、ビン(プリミティブリスト)を維持することと関連したコストとを抑える。
【００３４】
しかし、本出願人は、この構成による欠点は、プリミティブが、ビンがカバーするすべてのタイル内に実際には存在しなくても、ビン(プリミティブリスト)内にリストされたプリミティブごとのデータは、ビン(プリミティブリスト)がカバーするタイルごとに読み取られることが必要になるということを認識している。(これは、プリミティブが、処理されるタイルの範囲内に入らないとき、レンダリングプロセスにおいて初期に拒否可能であっても、なおもプリミティブが問題のタイルの範囲内に実際に入るか否かを決定できるように、問題のプリミティブについてのプリミティブデータを読み出す必要があるからである。)例えば、N個のタイルをカバーするビンの場合、ビンにおけるプリミティブごとのデータは、プリミティブが、ビンがカバーする少数のタイル内に配置可能なだけであっても、N回読み取られることになる。
【００３５】
したがって、より大きなレンダーターゲット(出力)エリアを示すプリミティブリスト(ビン)を使用することは、プリミティブリスト(ビン)を維持することと関連したコストを抑えることが可能であるが、それは、表示するためのタイルを処理するとき、より多数のメモリアクセスを招く可能性があることを代償にしている。
【００３６】
これは、(プリミティブリスト(ビン)およびプリミティブデータを含む)シーン記述が、一般には、メインメモリ内に記憶されることになり、必要な場合には、グラフィックスプロセッサによって、そこからフェッチされることが必要になるので、望ましくない。
【００３７】
そのため、本出願人は、タイルベースのコンピュータグラフィックスのレンダリングシステムには、改良の余地が残っていると考える。
【先行技術文献】
【特許文献】
【００３８】
【特許文献１】英国特許第2,420,261号明細書
【特許文献２】英国特許第2,433,014号明細書
【発明の概要】
【課題を解決するための手段】
【００３９】
本発明の第1の態様によれば、タイルベースのグラフィックス処理システムにおいて表示するためのシーンをレンダリングするときに使用するためのデータの組を生成する方法であって、
複数のタイルの組についてレンダリングすべきプリミティブのリストを決定し、記憶するステップと、
リストが作成されている複数のタイルの組によって包囲されるレンダーターゲットエリアの範囲内のプリミティブのリストにおけるプリミティブの分配を示すための情報を決定し、記憶するステップと
を含む方法が提供される。
【００４０】
本発明の第2の態様によれば、タイルベースのグラフィックス処理システムにおいて表示するためのシーンをレンダリングするときに使用するためのデータの組を生成するための装置であって、
複数のタイルの組についてレンダリングすべきプリミティブのリストを決定し、記憶するための手段と、
リストが作成されている複数のタイルの組によって包囲されるレンダーターゲットエリアの範囲内のプリミティブのリストにおけるプリミティブの分配を示すための情報を決定し、記憶するため手段と
を含む装置が提供される。
【００４１】
本発明は、タイルベースのグラフィックス処理システムに関し、複数のタイルの組について(すなわち、単一のタイルより大きなレンダーターゲット(出力)領域について)のプリミティブリスト(ビン)の作成を含む。これは、複数のタイルの組についてプリミティブリストが作成される場合に、上述の構成に類似している。
【００４２】
しかし、本発明においては、複数のタイルの組についてプリミティブリストを作成することとともに、プリミティブリストが包囲するレンダーターゲットエリア(出力エリア)(プリミティブリストが対応するタイルの組)の範囲内のプリミティブリストにおけるプリミティブの分配を示すための情報が作成され、記憶される。
【００４３】
このプリミティブ分配情報は、次いで、グラフィックス処理システムが、プリミティブリストが対応するタイルをレンダリングするようになった場合、そのシステムが、リストがカバーするエリア内のリストにおけるプリミティブの分配についての情報を決定することと、したがって、例えばおよび好ましくは、ならびにさらに後述されるように、それぞれのプリミティブが実際に処理されるべきである、プリミティブリストがカバーするエリアの特定のサブ領域(例えば、タイル)を決定することとを可能にすることになる。
【００４４】
そしてこれにより、例えば、プリミティブ分配情報が示してはいるが、プリミティブリストが包囲する所与の1つまたは複数のタイル内には実際には存在しない(そのタイルについて処理すべきと要求されない)プリミティブリストにおけるプリミティブをレンダリングプロセスが処理しないようにすることが可能になる。(これは、上述したように、プリミティブリストが包囲するすべてのタイルの範囲内にプリミティブが入らない場合であっても、プリミティブリストにおけるそれぞれのプリミティブは、プリミティブリストが包囲するタイルごとに処理される従来技術のシステムとは対照的である。)
【００４５】
実際に、本発明は、リストにおけるそれぞれのプリミティブがどのタイルについて処理されるべきであるかをさらによく決定することを可能にする追加の分配情報を提供する。この情報は、その場合、プリミティブが問題のタイルに実際に必要でない場合、タイルについてのレンダリングプロセスにおいて、プリミティブをスキップするために使用可能である。
【００４６】
本発明は、表示するためのタイルをレンダリングするとき、グラフィックス処理システムが、プリミティブリストにおけるプリミティブをより容易に省略するか、またはスキップすることを可能にするので、シーンについて作成される所与のプリミティブリストがシーンのいくつかのタイルを包囲する可能性がある場合であっても、表示するためのシーンをレンダリングするときの実行可能であるメモリアクセスの数などを抑えることが可能である。したがって、本発明は、処理すべきシーンのいくつかのタイルを包囲するプリミティブリスト(ビン)の使用を容易にするが、例えば、(既存する従来技術のシステムと比較すると)それを行っているとき、シーン記述を読み取るためのメモリアクセスの数などをとりわけ抑えることになる。
【００４７】
所要のメモリアクセスの数を抑えることは、グラフィックスプロセッサによって消費される電力および使用中のメモリサブシステムを抑えることになる。また、それはメモリ帯域幅の要件を抑え、それにより、例えば、より低性能の、より低電力のメモリシステムが使用し易くなる。このすべてが、例えば、グラフィックスプロセッサの文脈の中では、特に、組込みのおよび/またはより廉価の、より低電力のグラフィックスプロセッサの文脈の中では、ならびにそれとともに使用する場合に有利であり、それにより、ポータブルデバイスおよびモバイルデバイスに使用可能になる。
【００４８】
さらには、本発明の追加の特徴および機能は、本発明が記憶し、使用する追加の情報を扱うための少量の追加のロジックなど、比較的小さいハードウェアおよび/またはソフトウェアの追加だけで達成可能である。これは、やはり、本発明を、より廉価の、より低電力の、例えば、組込みのグラフィックス処理システムに使用するのに特に適したものにする。
【００４９】
本発明はまた、表示するためのシーンをレンダリングするとき、本発明のデータ構造の使用およびグラフィックス処理システムにおいて表示するためのタイルまたはシーンをレンダリングする方法または装置にまで及ぶ。
【００５０】
したがって、好ましい実施形態においては、本発明の方法および装置は、
表示すべきシーンの複数のタイルの組についてレンダリングすべきプリミティブのリストを決定し、記憶し、
リストが作成されている複数のタイルの組によって包囲されるレンダーターゲットエリアの範囲内のプリミティブのリストにおけるプリミティブの分配を示すための情報を決定し、記憶し、
決定されたプリミティブリストを使用して、プリミティブリストが包囲するタイルについて処理すべきプリミティブの組を決定し、
プリミティブリストと関連付けられた、決定されたプリミティブ分配情報を使用して、問題のタイルについて処理すべきプリミティブリストにおけるプリミティブの組のプリミティブを決定し、
決定されたプリミティブを処理して、表示するためのタイルをレンダリングする
ステップまたは手段を含む。
【００５１】
同様に、本発明の第3の態様によれば、複数のタイルの組についてレンダリングすべきプリミティブのリストが、そのリストが対応する複数のタイルの組によって包囲されるレンダーターゲットエリアの範囲内のプリミティブのそのようなリストにおけるプリミティブの分配を示す情報とともに作成されるタイルベースのグラフィックス処理システムにおいて表示するためのシーンをレンダリングする方法であって、グラフィックス処理システムを含み、表示すべきシーンについてタイルを処理しているときに、
問題のタイルを包囲するシーンについてのプリミティブリストを使用して、問題のタイルについて処理すべきプリミティブの組を決定するステップと、
プリミティブリストと関連付けられたプリミティブ分配情報を使用して、問題のタイルについて処理すべきプリミティブリストにおけるプリミティブの組のうちのプリミティブを決定するステップと、
決定されたプリミティブを処理して、表示するためのタイルをレンダリングするステップと
を行う方法が提供される。
【００５２】
本発明の第4の態様によれば、複数のタイルの組についてレンダリングすべきプリミティブのリストが、そのリストが対応する複数のタイルの組によって包囲されるレンダーターゲットエリアの範囲内のプリミティブのそのようなリストにおけるプリミティブの分配を示す情報とともに作成されるタイルベースのグラフィックスプロセッサであって、
表示すべきシーンについてプリミティブリストを使用して、そのシーンのためのタイルについて処理すべきプリミティブの組を決定するための手段と、
プリミティブリストと関連付けられたプリミティブ分配情報を使用して、問題のタイルについて処理すべきプリミティブリストにおけるプリミティブの組のうちのプリミティブを決定するための手段と、
決定されたプリミティブを処理して、表示するためのタイルをレンダリングするための手段と
を含むグラフィックスプロセッサが提供される。
【００５３】
本発明はまた、本発明において作成され、使用されるデータ構造にまで及ぶ。
【００５４】
したがって、本発明の第5の態様によれば、タイルベースのグラフィックス処理システムにおいて使用するためのデータ構造であって、
複数のタイルの組についてレンダリングすべきプリミティブのリストと、
プリミティブのリストが対応する複数のタイルの組によって包囲されるレンダーターゲットエリアの範囲内のプリミティブのリストにおけるプリミティブの分配を示すための情報と
を含むデータ構造が提供される。
【００５５】
レンダーターゲット(レンダリングすべきシーンの出力形態)が、本発明におけるレンダリング目的のために分割されるタイルは、任意の所望のならびに適切な大きさおよび形状であってよい。タイルは、当技術分野において知られているように、すべて同じ大きさおよび形状であることが好ましいが、これは絶対不可欠ではない。好ましい構成においては、それぞれのタイルは、大きさが16×16または32×32のサンプリング位置(例えばフラグメント)である。
【００５６】
プリミティブリスト(ビン)が作成されるための複数のタイルの組は、任意の適切なおよび所望の複数のタイルの組であってよい。それは、好ましくは、正方形または長方形など、レンダーターゲットエリアの規則的な形状のエリアをカバーし、好ましくは、隣接しているタイルの組を包囲する。好ましい実施形態においては、複数のタイルの組は、2×2、または4×4、または16×16のタイルの群化に対応する。最も好ましくは、全体的レンダーターゲットエリアは、マッチングするタイルの組(例えば、2×2または4×4のタイルの組)に分割され、プリミティブリスト(ビン)は、このようなタイルの組ごとに作成される。
【００５７】
ビン(プリミティブリスト)内にプリミティブをソーティングすること、およびプリミティブリストを作成することは、任意の適切なおよび所望のやり方で実行可能である。例えば、正確ビニングもしくは境界ボックスビニングなど、またはそれらの間のいずれでも、プリミティブリスト内にプリミティブをソーティングおよびビニングするために、すでに知られ、使用されているいずれの技術も、このプロセスに使用可能である。好ましくは、境界ボックスビニングプロセスが使用される。
【００５８】
それらにおける個別のビン(プリミティブリスト)およびプリミティブなどは、任意の所望のおよび適切なやり方で構成可能であり、任意の所望のおよび適切なデータを含むことが可能である。リストは、当技術分野におけるこのようなグラフィックスのプリミティブリスト(ビン)などにすでに使用されているのと同様にして、好ましくは構成され、データを含む。
【００５９】
好ましくは、プリミティブ情報の組は、ビン内にプリミティブごとにリストされる。プリミティブごとにビン(プリミティブリスト)内にリストされるプリミティブ情報は、任意の適切なおよび所望のこのような情報であってよい。したがって、それは、プリミティブについての頂点データと、(例えば、本出願人の英国特許第2,420,261号に記載されているものなどのシステムが使用されている場合、)プリミティブについてのレンダリング状態の情報とに対して、1つまたは複数のプリミティブタイプのインジケータ、ポインタまたはインデックスを含むことができ、好ましくは含む。
【００６０】
また、本発明において決定され、記憶されるプリミティブ分配情報は、任意の適切なおよび所望のこのような情報であってよく、すなわち、それは、グラフィックスシステムが、所与のプリミティブまたは複数のプリミティブが複数のタイルの組のうちのどのタイルについて処理されるべきであるかをより精密に(単にプリミティブリストが対応する複数のタイルの組によって包囲される全体的エリアよりも高解像度で)、識別することを可能にすることになる。本質的には、プリミティブ分配情報は、プリミティブまたは複数のプリミティブについて、および好ましくは、プリミティブごとに、プリミティブまたは複数のプリミティブが全体的ビンエリアの範囲内のどこに位置しているかを、より精密にビン(リスト)に示すべきである。
【００６１】
特に好ましい実施形態においては、分配情報は、プリミティブまたは複数のプリミティブがビンエリアのサブ分割の範囲内のどこに位置しているかを、および最も好ましくは、ビン(プリミティブリスト)が包囲するレンダーターゲットエリアのサブ領域の組のうちのどのサブ領域または複数のサブ領域について、リスト(ビン)におけるプリミティブまたは複数のプリミティブ、および好ましくはそれぞれのプリミティブが処理されるべきであるかを示す。
【００６２】
1つの特に好ましい実施形態においては、分配情報がそれぞれに関係するサブ領域は、個別のタイルに対応し、それにより、実際に、分配情報は、シーンがレンダリングされた場合、プリミティブのリストが包囲する複数のタイルのうちのどの1つまたは複数のタイルについて、プリミティブまたはそれぞれのプリミティブが処理されるべきであるかを直接的に示すようになる。
【００６３】
しかし、また、分配情報がそれら自体に関係するサブ領域は、複数のタイルに対応することも可能になる。例えば、4×4のタイルの群をカバーするプリミティブリストが、4つの2×2のタイルのサブ領域(それぞれが、リストエリアの4分の1を示す)に、または、実際に、4つの1×4のタイルのサブ領域(それぞれが、リストエリアの行または列を示す)にサブ分割可能になり、分配情報は、これらのサブ領域(例えば、4分の1または行など)のうちのいずれについて、それぞれのプリミティブが処理されるべきであるかを示すことが可能になる。この場合には、分配情報は、プリミティブについて、例えば、16個のタイルのうちの1つではなく、4つのサブ領域のうちの1つを示すことが必要になり、それにより、示すための所要データは、もちろん、少なくてすむことになる。
【００６４】
これらの構成は、さらにシステムがリストによってカバーされる全体的エリアについてリストにおけるすべてのプリミティブを処理せざるを得ない状況を簡単に避けることを可能にするので、さらに有利になる。個別のタイルの解像度における分配情報には、所望されるか、または利用可能であるよりも大きなデータ容量が必要になるという条件では、タイルよりも大きなサブ領域をプリミティブリストの範囲内に使用することが望ましい場合がある。
【００６５】
(当業者によって理解されるように、プリミティブ分配情報が、複数のタイルを含むサブ領域をプリミティブリストエリアの範囲内に示す場合には、それはなおも、単一のタイルのレベルより低解像度ではあるが、リストにおけるそれぞれのプリミティブが処理されるべきである1つまたは複数のタイルを間接的に示すことになる。)
【００６６】
プリミティブリスト(ビン)が対応するエリアの範囲内のプリミティブの分配は、例えば、任意の知られている、かつ所望のビニング技術を使用して、任意の適切なおよび所望のやり方で決定可能である。例えば、正確ビニング技術が使用可能になる。特に好ましい実施形態においては、軸並行境界ボックスを使用する境界ボックスビニング技術が、プリミティブの分配を決定するために使用される。
【００６７】
(ここで、このプリミティブ分配試験は、一般的には、全体的なビニングプロセスを実行するために、いずれの方法でも実行されることになり、さらには、ビン(プリミティブリスト)が複数のタイルの組について作成すべきであっても、通常は、個別のタイルの解像度のレベルで実行されることになることに留意されたい。したがって、本発明がまた、作成し、記憶する、より精密な分配情報は、実際に、いずれの方法でも実行されなくてはならない「標準的な」ビニングプロセスの一部として生成可能であり、したがって、本発明のやり方での動作は、この点に関して必要とされる処理を著しく増やすべきものでも、また知られている、かつ既存のグラフィックスビニングプロセスおよびハードウェアに対して著しい修正を求めるべきものでもない。)
【００６８】
また、例えば、境界ボックスビニング技術が使用される場合、プリミティブ分配情報は、プリミティブ自体がその範囲内に入るタイルなどを精密に示すことができるのではなく、実際には、ビンエリアの範囲内の「境界ボックス」の分配を示すことになるということにも、ここで留意されたい。しかし、これは、さらに、ビンエリアの範囲内に、および全体として単にビンだけについてよりも高解像度で、プリミティブの分配を示す効果を生じることになり、したがって、さらに本発明のやり方でのプリミティブ分配情報として作用する。
【００６９】
プリミティブ分配情報は、所要の情報を示すことが可能である任意の適切なおよび所望の形態をとることが可能である。好ましい実施形態においては、それは、カバレージマスクの形態、好ましくは、ビットマップの形態にある。(ビットマップが、このようなカバレージ情報を示す特に便利なやり方である。)
【００７０】
したがって、好ましくは、プリミティブリストエリアの範囲内の所与のサブ領域(例えばタイル)に対応するマスク(例えばマップ)におけるそれぞれの位置により、カバレージマスク(例えば、ビットマップ)は、プリミティブリストが対応するエリア内のプリミティブの分配を示すために使用される。
【００７１】
分配情報(例えばカバレージビットマップ)は、非圧縮フォーマットに記憶可能であるが、好ましい実施形態においては、分配情報は、圧縮フォーマットに記憶される。例えば、より少ないビットを使用してより高解像度の分配情報(例えばビットマップ)を示すことが可能であるいずれの保守的な圧縮スキームが、この目的のために使用可能である。したがって、(例えば、ランレングス符号化を使用する)例えば無損失性の圧縮フォーマット、または損失性であるが、保守的な圧縮フォーマットが使用可能である。
【００７２】
したがって、好ましい実施形態においては、より少ないビットのストレージを使用して分配情報(例えばカバレージビットマップ)を示すために、符号化スキームが使用される。
【００７３】
本出願人は、プリミティブリストが対応するタイルの組の範囲内の特定の分配可能性が、実際には、今までに生じた可能性が低いか、または可能性がないであろうこの点に関して認識している。
【００７４】
例えば、実際面では、プリミティブは、所与の行のタイルの範囲内の連続的なタイルをカバーする傾向になる。したがって、4つのタイルの行を検討した場合、例えば、その行における所与のプリミティブの分配を示すためのxxxxのビットマップにより、所与のプリミティブについての行における分配可能性は、実際面では、0001、0010、0100、1000、0011、0110、1100、0111、1110、1111(ただし、「1」は、プリミティブが、その位置に対応するタイル内に存在する(そのタイルについて処理されるべきである)ことを示している)になり、例えば、0101、1010、1001などの分配を示すことができる必要はないはずである。
【００７５】
この意味は、そのために、所与のカバレージビットマップの構成が、すべてのあり得る分配可能性を示すことができる必要はなく、一部の分配可能性が省略可能であることを本出願人が認識しているということである。したがって、分配情報は、プリミティブリストエリアにおけるすべての分配可能性を示す性能を提供しないことによって圧縮可能である。
【００７６】
したがって、特に好ましい実施形態においては、分配情報(例えばタイルカバレージビットマップ)は、プリミティブリストが対応する複数のタイルの組によってカバーされるエリアの範囲内の完全な組の分配可能性の一部だけを示し、そのすべてを示すことができなくすることによって圧縮される。
【００７７】
同様に、分配情報は、カバレージビットマップを(例えば)直接的に示す必要はなく、その場合(例えば、ルックアップテーブルを介して)問題のビットマップを示す値として符号化可能である。例えば、上述したように、0001、0010、0100、1000、0011、0110、1100、0111、1110および1111のビットマップを示すことが望ましい4つのタイルの行の場合、それを行うために4つのビットを使用するのでなく、例えば以下のように、3ビット符号化スキームが使用可能である。
0→0001
1→0010
2→0100
3→1000
4→0011
5→0110
6→1100
7→1111(および0111、1110)
【００７８】
この場合には、0111および1110は、それらを1111にマッピングすることによって保守的に圧縮され、すなわち、0111および1110は、「7」として符号化され、「7」が読み取られた場合は、それは、「1111」と解釈されることになる。ビンエリア内に全く存在しないプリミティブはリストされないので、0000を符号化する必要はない。
【００７９】
したがって、好ましい実施形態においては、分配情報は、分配ビットマップが導出または識別可能である符号化形態で形成される。同様に、符号化形態は、好ましくは、分配情報の符号化形態が、プリミティブリストが対応する複数のタイルの組によってカバーされるエリアの範囲内の完全な組の分配可能性の一部だけを示し、そのすべてを示すことができないように構成されている。
【００８０】
また、例えば、XおよびY方向に関して、例えば、軸(方向)ごとに別々の組の分配情報を使用し、次いで、その情報を結合して、所与のプリミティブについての全体的な分配情報を導出することも可能になる。
【００８１】
例えば、4つのタイルの行に沿うカバレージを示すために、3ビット符号化スキームを使用する上述の場合においては、4×4のタイルの組について、このようなスキームは、X方向およびY方向ごとに使用可能になり、所与のタイルについてのXのカバレージ値およびYのカバレージ値は、別々にルックアップされ、次いで、プリミティブが、実際に、問題のタイル内に入るかを決定するために結合される(実際面では、タイルについてのビットマップのルックアップがXおよびYの両方について「1」を戻した場合、プリミティブは、問題のタイルについて処理されるべきである(が、そうでなければ、処理されるべきではない))。この構成は、その場合、4×4のタイルの組についての分配情報が、例えば(4×4のタイルの組を直接的に(いずれの中間符号化もなしに)示すビットマップが使用すべきであった場合、必要になる)フル16ビットのビットマップを使用する必要はなく、単に2つの3ビット(すなわち、全体で6ビット)のカバレージ値符号化スキームを使用して、示されることを可能にする。
【００８２】
したがって、好ましい実施形態においては、分配情報は、2方向(好ましくは、X方向およびY方向)ごとに別々に符号化され、次いで、それが、プリミティブリストによってカバーされるエリアの範囲内のプリミティブの分配を決定するために使用すべきである場合、適切に結合される。
【００８３】
分配情報の圧縮および/または符号化の一部の形態が使用されるこれらの構成においては、必要に応じて、プリミティブリストが対応するエリアにおけるプリミティブの分配の適切な保守的試験が、プリミティブが問題の符号化スキームを使用して、正確にレンダリングされることを可能にするために、それぞれのプリミティブの分配が示され得ることを確実にするために使用可能である。
【００８４】
同様に、分配試験に使用すべき技術に対して制約がある場合には、適切な保守的圧縮スキームが、プリミティブの分配が適切に示され得ることを確実にするために使用可能である。
【００８５】
プリミティブ分配情報は、必要に応じて、記憶可能である。それは、好ましくは、プリミティブリストにおけるプリミティブごとに、そのプリミティブリストが関係するエリア(タイルの組)の範囲内のプリミティブの分配を示し、最も好ましくは、それにより、プリミティブリストがそれらのためのものである、プリミティブが処理されるべきである複数のタイルのうちのタイルもしくは複数のタイル、またはタイルのサブセットもしくは複数のサブセットが決定可能になる。
【００８６】
特に好ましい実施形態においては、プリミティブリスト(ビン)におけるそれぞれのプリミティブは、例えば、および好ましくは、関連したカバレージビットマップなどの関連した分配情報の組を有する。したがって、プリミティブリスト(ビン)におけるプリミティブごとに、好ましくは、プリミティブリスト(ビン)が対応するエリア全体にわたって、そのプリミティブの分配を示す関連した分配情報の組がある。
【００８７】
この関連した分配情報は、例えば、プリミティブごとにビン内に記憶されるプリミティブ情報(例えば、頂点インデックスなど)の一部として含まれ得る。
【００８８】
好ましい実施形態においては、プリミティブ分配情報は、残存するプリミティブ情報に対して別々に読取り可能である。これは、その場合、例えば、プリミティブが問題のタイルに必要でない場合、頂点インデックスなど、ビン(プリミティブリスト)におけるプリミティブ情報の残りの読取りが回避可能であるように、まず、分配情報がチェックされることを可能にすることになる。これは、所要のメモリアクセスおよび帯域幅をさらに抑えることが可能である。これは、例えば、プリミティブリストにおける他のプリミティブ情報に対して別々に読取り可能であるプリミティブ分配情報を別々のデータ構造に、またはヘッダとして、記憶することなどによって達成可能である。
【００８９】
また、既存のグラフィックス処理システムとの本発明の技術の下位互換性を容易にするために、他のプリミティブ情報に対して別々にプリミティブ分配情報を記憶することが好ましい場合もある。
【００９０】
本発明は、好ましい実施形態において、複数のタイルを包囲するプリミティブリスト(ビン)の使用を必要とするが、個別のタイルについてのプリミティブリスト(ビン)もまた、作成可能および使用可能であり、また作成および使用される。この場合には、次いで、個別のタイルに特有のプリミティブリストおよび複数のタイルの組についてのプリミティブリストが存在することが可能である。したがって、好ましい実施形態においては、プリミティブリストは、個別のタイルについておよび複数のタイルの組について作成可能である。
【００９１】
1つの好ましいこのような実施形態においては、このような構成は、プリミティブリストが、例えば、本出願人の英国特許第2,433,014号明細書に記載されている「階層的な」やり方で、種々の数のタイルを有する複数のタイルの組についておよび個別のタイルについて作成可能である。
【００９２】
これらの場合、本発明の分配情報は、複数のタイルの組に対応するプリミティブリストについて(ごとに)作成可能および記憶可能である(かつ好ましくは、作成および記憶される)が、単一のタイルに対応するプリミティブリストには必要でなくなる。
【００９３】
実際に、それが、単により大きな「ビン」を使用するより低性能のタイリンググラフィックスプロセッサと、階層的なビニング構成など、例えば、より複雑なビニング構成を使用するより高性能のグラフィックスプロセッサとの両方において使用可能であり、かつその両方を改良するために使用可能であるというのが本発明の利点である。
【００９４】
プリミティブリスト内にリストされるプリミティブが、三角形、四角形、ラインまたはポイントなどの単純多角形など、単純プリミティブであってよく、一般的には、単純プリミティブであることは理解されるであろう。しかし、本発明は、単純プリミティブであることが不可能な他の形態のグラフィックス記述子が、プリミティブリスト内に含まれ得る場合も等しく適用可能である。
【００９５】
このような他のグラフィックス記述子は、手続き上の描画コールなどの手続き上の記述、例えば、(オブジェクトの平滑な表面表示などの)レンダリングすべきオブジェクトのより高次なまたはより高レベルな記述、(描画コールなどの)複数のプリミティブの組の表示などを含むことができるようになる。本発明は、プリミティブリストにおけるいずれのこのような記述子の包含(および適切な場合には、このような記述子との分配情報の関連性)にまで及ぶ。
【００９６】
本発明は、例えば、グラフィックスコマンドがプリミティブリスト全体にわたって分配可能である場合に(例えば、それらはスクリーン位置依存であるという理由から)、同様に適用可能である。したがって、プリミティブリストはまた、関連した分配情報を有するグラフィックスコマンドを含むことが可能であり、または、例えば、グラフィックスコマンドがそれらについて分配される「コマンド」リスト(ビン)の別々の組が存在することが可能である。
【００９７】
グラフィックスシステムに位置依存データのバルクを形成するとき、プリミティブに関
して最大の対象になるが、概して、本発明は、位置依存可能であるグラフィックスデータの任意の形態または処理に、(必要ならば)使用可能である。
【００９８】
関連した分配情報とともに適切なプリミティブリスト(ビン)は、表示されることになるシーン(レンダーターゲット)を形成するタイルの組ごとに作成されるべきである。
【００９９】
プリミティブリストおよび関連した分配情報がタイルの組について作成されると、表示すべきシーンを形成するタイルをレンダリングするとき、この情報を使用して、上述したように、プリミティブリストおよび関連した分配情報を使用することによって、どのプリミティブなどがタイルごとに処理(レンダリング)される必要があるかを決定することが可能である。
【０１００】
言い換えれば、レンダリングプロセスは、好ましくは、プリミティブリストにおけるプリミティブについて関連した分配情報を使用して、(それぞれの)プリミティブが実際に問題のタイルについて処理される必要があるかを決定することになり、(必要でない場合は、プリミティブをスキップし、リストにおける次のプリミティブに移るなどすることになる)。
【０１０１】
このレンダリングプロセスは、知られているタイルベースのレンダリングシステムと類似のやり方で実行可能であり、好ましくは実行される。したがって、好ましくは、それぞれのタイルは、別々に処理され、レンダリングされる。このレンダリングは、例えば、連続して、または並行法で、個別のタイルをレンダリングすることによって、任意の所望のやり方で実行可能である。すべてのタイルがレンダリングされると、それらは、次いで、当技術分野において知られているように、表示するための、例えば、フレームバッファに再結合可能である。
【０１０２】
好ましい実施形態においては、グラフィックス処理システムは、複数の別々のサブフレームとして表示すべき出力フレームを処理することが可能であり、それにより、表示されることになる全体的な出力フレームが、実際に、種々のサブフレームに分割可能になり、次いで、それぞれのサブフレームは、それが単一のフレームであるかのように処理され(したがって、タイルに分割され、それについて作成されるプリミティブリストを有するなどし)、次いで、複数のサブフレームは、表示するための全体的な出力フレームを形成するために再結合される。
【０１０３】
そしてこれは、多数のタイルを含むことになる出力フレーム(レンダーターゲット)のサブ分割に関するさらなる可能性を提供することになる。これは、例えば利用可能なビン(プリミティブリスト)の数が限られている場合には望ましいことがあり、というのは、例えば、単にそれぞれのビンがより多くのタイルを包囲できるようにしなければならない(通常の場合、限られた数のビンがより多数のタイルをカバーできるようにしなければならず、ひいては、分配情報も同様により粗い解像度を示さざるをえなくなるおそれがある)のではなく、むしろ、出力フレームのより小さいエリア(サブフレーム)を毎回レンダリングすることができ、それによって、許容される数のビンがより小さいエリアおよびより少ない数のタイルを示すことが効果的に可能になる(またそれによって、個々のビンがより少ないタイルを示すことが可能になる、といった具合になる)ためである。
【０１０４】
したがって、出力フレームが複数のサブフレームとして処理されることを可能にすることは、例えば、それぞれのプリミティブリストなどが対応する(フレームエリア(タイルの数)に関しての)解像度を制御するためのさらなる選択肢を提供する。
【０１０５】
本発明の様々な関数は、任意の所望のおよび適切なやり方で実行可能である。特に好ましい実施形態においては、表示デバイスについてのフレームバッファに書き込まれるグラフィックスデータを生成し、出力する単一のグラフィックス処理プラットフォーム上で実行される。本発明のデータ構造は、グラフィックスプロセッサのジオメトリプロセッサまたはジオメトリ処理ユニットによって、例えば生成可能であり、記憶可能であり、好ましくは生成され、記憶され、その場合、グラフィックスプロセッサの(ラスタ化およびレンダリングプロセッサを実行する)ピクセル(フラグメント)プロセッサまたは処理ユニットによって表示するためのシーンをレンダリングするときに、例えば使用可能であり、好ましくは使用される。
【０１０６】
本発明の関数は、必要に応じて、ハードウェアまたはソフトウェアで実装可能である。したがって、例えば、本発明の様々な「手段」は、適切な専用ハードウェア要素および/または所望のやり方で動作するようにプログラム可能であるプログラム可能ハードウェア要素など、様々な関数などを実行するように動作可能である適切なプロセッサまたは複数のプロセッサ、機能ユニット、回路、処理ロジック、マイクロプロセッサ構成などを含むことが可能である。
【０１０７】
好ましい実施形態においては、システムは、ハードウェア要素(例えばASIC)として実装される。したがって、別の態様においては、本発明は、本明細書に説明されている本発明のいずれか1つもしくは複数の態様の装置またはその方法により動作される装置を含むハードウェア要素を含む。
【０１０８】
また、当業者によって理解されるように、本発明の様々な関数などは、複製可能かつ/または所与のプロセッサ上で並行して実行可能であることも、ここで留意されたい。
【０１０９】
本発明は、「パイプラインの」レンダリング構成を有するプロセッサなど、任意の形態または構成の(タイルベースの)グラフィックスプロセッサおよびレンダラ(その場合、レンダラは、レンダリングパイプラインの形態にあることになる)に適用可能である。
【０１１０】
上述から理解されるように、本発明は、それらのみに限定されないが、3Dグラフィックスプロセッサおよび処理デバイスに特に適用可能であり、したがって、本明細書に説明されている本発明のいずれか1つもしくは複数の態様の装置またはその方法により動作される装置を含む3Dグラフィックスプロセッサおよび3Dグラフィックス処理プラットフォームにまで及ぶ。上述の特定の関数を実行することが必要な任意のハードウェアを前提として、このような3Dグラフィックスプロセッサは、そうでなければ、3Dグラフィックスプロセッサが含むいずれか1つもしくは複数またはすべての通常の機能ユニットなどを含むことが可能である。
【０１１１】
本発明の説明されているすべての態様および実施形態が、必要に応じて、本明細書に説明されているいずれか1つもしくは複数またはすべての好ましい、かつ任意選択の特徴を含むことが可能であることもまた、当業者によって理解されるであろう。
【０１１２】
本発明による方法は、ソフトウェア、例えばコンピュータプログラムを少なくとも部分的に使用して実装可能である。したがって、さらなる態様から見ると、本発明は、データ処理手段上にインストールされた場合、具体的には、本明細書に説明されている方法を実行するようになされているコンピュータソフトウェアと、プログラム要素がデータ処理手段上で起動された場合、本明細書に説明されている方法を実行するためのコンピュータソフトウェアコード部分を含むコンピュータプログラム要素と、プログラムがデータ処理システム上で起動された場合、本明細書に説明されている方法または複数の方法のすべてのステップを実行するようになされているコード手段を含むコンピュータプログラムとを提供することが分かるであろう。データ処理システムは、マイクロプロセッサシステム、プログラム可能なFPGA(フィールドプログラマブルゲートアレイ)などであってよい。
【０１１３】
本発明はまた、グラフィックスプロセッサを動作させるために使用された場合、データ処理手段を含むレンダラまたはマイクロプロセッサシステムが、そのデータ処理手段とともに、本発明の方法のステップを実行するそのプロセッサ、レンダラまたはシステムをもたらすこのようなソフトウェアを備えるコンピュータソフトウェアキャリアにまで及ぶ。このようなコンピュータソフトウェアキャリアは、ROMチップ、CD-ROM、もしくはディスクなどの物理的ストレージ媒体になることが可能であり、またはワイヤを通じた電子信号、光信号、もしくは衛星などに対する無線信号などの信号になることも可能である。
【０１１４】
さらには、本発明の方法のすべてのステップが、コンピュータソフトウェアによって実行される必要はなく、したがって、さらなる広範な態様から、本発明が、コンピュータソフトウェアを提供することは理解され、このようなソフトウェアは、本明細書に提示されている方法のステップのうちの少なくとも1つを実行するためのコンピュータソフトウェアのキャリア上にインストールされている。
【０１１５】
本発明は、したがって、コンピュータシステムとともに使用するためのコンピュータプログラム製品として適切に実施可能である。このような実装形態は、コンピュータ可読媒体などの有形媒体、例えばディスケット、CD-ROM、ROM、またはハードディスクの上に固定され、あるいは光通信回路もしくはアナログ通信回線を含むが、それだけに限定されない有形媒体上で、またはマイクロ波、赤外線もしくは他の伝送技術を含むが、それだけに限定されない無線技術を無形に使用して、モデムまたは他のインターフェースデバイスを介してコンピュータシステムに伝送可能な一連のコンピュータ可読命令を含むことが可能である。一連のコンピュータ可読命令は、本明細書に上述された機能のすべてまたは一部を実施する。
【０１１６】
このようなコンピュータ可読命令が、多数のコンピュータアーキテクチャまたはオペレーティングシステムとともに使用するためのいくつかのプログラミング言語で書くことが可能であることは、当業者によって理解されるであろう。さらには、このような命令は、半導体、磁気、もしくは光学のものを含むが、それだけに限定されない現在もしくは将来のいずれかのメモリ技術を使用して記憶可能であるか、または光学、赤外線、もしくはマイクロ波を含むが、それだけに限定されない現在もしくは将来のいずれかの通信技術を使用して伝送可能である。このようなコンピュータプログラム製品は、例えば、システムROMまたは固定ディスク上の、コンピュータシステムにより予めロードされた添付の印刷文書または電子文書、例えばシュリンクラップのソフトウェアを有する着脱可能媒体として配布可能であり、またはネットワーク、例えば、インターネットもしくはワールドワイドウェブを通じて、サーバもしくは電子掲示板から配信可能であると企図される。
【０１１７】
次に、本発明のいくつかの好ましい実施形態は、ほんの一例として、および添付の図面を参照して、説明されることになる。
【図面の簡単な説明】
【０１１８】
【図１】タイルベースのグラフィックス処理構成を示す概略図である。
【図２】本発明によるプリミティブについての分配情報の導出を示す概略図である。
【図３】本発明により動作することが可能であるグラフィックスプロセッサの構成を示す概略図である。
【図４】本発明の実施形態においてプリミティブリストにおけるプリミティブについて記憶されるデータを示す概略図である。
【図５】レンダリング目的のためにタイルに、およびビニング目的のために複数のタイルの組に処理すべきシーンのサブ分割を示す図である。
【図６】本発明の実施形態において複数のサブフレームにレンダリングすべきフレームのサブ分割を示す図である。
【発明を実施するための形態】
【０１１９】
図3は、本発明により動作可能であるグラフィックスプロセッサ20を概略的に示している。グラフィックスプロセッサ20は、ジオメトリプロセッサ21と、ピクセルまたはフラグメントプロセッサ22とを含む。必要ならば、並行して動作する複数のピクセルプロセッサ22が存在することが可能である。
【０１２０】
ジオメトリプロセッサ21およびピクセルプロセッサ22は、様々なメモリ23、24、25(メモリは、当技術分野において知られているように、すべて、同一の物理メモリの一部であってよく、または必要に応じて、別々のメモリであってもよい)へのアクセスを有する。1つまたは複数のメモリは、グラフィックスプロセッサとともに「オンチップ」であってよく、または、より典型的には、使用中、ジオメトリプロセッサおよびピクセルプロセッサによってアクセス可能である(例えば、ホスト処理システム上の)外部メモリであってよい。
【０１２１】
ジオメトリプロセッサ21はまた、本発明のやり方で、プリミティブリストを生成するリストビルダ26を含み、ピクセルプロセッサ(またはそれぞれの)ピクセルプロセッサ22は、表示するためのシーンをレンダリングするとき、プリミティブリストを読取り、使用するリストリーダ27を含む。これらの動作については、より詳細に後述する。
【０１２２】
図3に示されているグラフィックスプロセッサ20は、その動作を除いては、本発明によるものであり、そうでなければ、このようなプロセッサについての通常のやり方で動作する。
【０１２３】
したがって、図3に示されるように、グラフィックスプロセッサ20の動作においては、ジオメトリプロセッサ21がまず、メモリ23から、レンダリングすべきシーンについて、行のジオメトリデータ30を読み取る(行のジオメトリデータは、当技術分野において知られているように、例えば、グラフィックスプロセッサドライバによって、またはグラフィックスプロセッサ20のホストシステム上で起動するAPI上にもたらされる)。次いで、ジオメトリプロセッサは、その行のジオメトリデータ30を変換して、変換されたジオメトリデータ31の組をシーンに与え、その変換されたジオメトリデータ31をメモリ24内に記憶する。
【０１２４】
ジオメトリプロセッサ21のリストビルダ26はまた、このときに、シーンについてのプリミティブリスト(ビン)の組32を作成し、それらのリストをメモリ24内に記憶する。
【０１２５】
メモリ24はまた、シーンについてのテクスチャ33の組を記憶する。これらのテクスチャは、必要に応じて、供給可能である。
【０１２６】
ピクセルプロセッサ22は、変換されたジオメトリデータ31、テクスチャ33および(リストリーダ27によって読み取られる)プリミティブリスト32を使用して、タイルごとの基礎上に表示するためのシーンをレンダリングし、その結果得られる出力画像データ34を(例えば、表示するためのフレームバッファにエクスポート可能である所から)メモリ25内に記憶する。これは、シーンの(可視)タイルごとに繰り返される。
【０１２７】
これを行うために、ピクセルプロセッサ22は、当技術分野において知られているように、処理すべき(次の)タイルを識別し、プリミティブリストを使用して、そのタイルについて処理すべきプリミティブを識別し、それらのプリミティブをサンプリングポイントにラスタライズし、サンプリングポイントを示すフラグメントを生成し、フラグメントを例えば、テクスチャをそれらに適用すること、それらをブレンドすることなどによって、レンダリングして、表示するためのフラグメントの出力の組をもたらす。
【０１２８】
上述したように、表示するためのシーンの処理の一部として、ジオメトリプロセッサ21(実際面では、ジオメトリプロセッサ21のリストビルダ26)は、シーンについてレンダリングすべきプリミティブを、レンダリングされたシーンが出力されることになるレンダーターゲットのサブ領域にソーティングし、そのサブ領域について処理されるべきであるプリミティブを示すこのようなサブ領域ごとにリスト(ビン)を作成する。本実施形態においては、それぞれのサブ領域は、複数のタイル、すなわち、2×2のタイルの群を含む。
【０１２９】
図5はこのことを示し、レンダリング目的のために、16個のタイル48(4×4のタイル配列)に分割されたレンダリングすべきシーンに対応するレンダーターゲットエリア47を示している。プリミティブリスト(ビン)が、その場合、2×2のタイルのブロック40、44、45、46ごとに作成される。(図5は、明確にするために、単に16個だけのタイルを示している。当業者によって理解されるように、実際面では、多数のより多くのタイルが存在することが可能である。)例示的なプリミティブ42が、図5に示されている。
【０１３０】
タイルの群ごとに、プリミティブをビン内にソーティングするために、リストビルダ26は、軸並行境界ボックスを使用する(当技術分野において知られている)境界ボックスビニングプロセスを実行して、レンダリングされたシーンについてのレンダーターゲットが、処理(レンダリング)目的のために分割すべきであるどのタイルの範囲内にプリミティブが入るとみなされるべきであるか(すなわち、処理されることが必要になるか)を、シーンについてのそれぞれのプリミティブの変換されたジオメトリデータから決定する。
【０１３１】
次いで、この情報を使用して、プリミティブが範囲内に入るとみなされたタイルを含む複数のタイルの組ごとに、リスト(ビン)にプリミティブを割り当てる(プリミティブを含む)。したがって、図5に示されるプリミティブ42の場合、そのプリミティブは、2×2のタイル40の組について、ビンに割り当てられる。
【０１３２】
正確ビニング技術など、他のビニング技術は、もちろん、必要ならば、このプリミティブソーティングおよびリスティングプロセスに使用可能になる。
【０１３３】
プリミティブをビン内にソーティングし、プリミティブリストをビンごとに作成するとともに、本発明によるリストビルダ26はまた、ビンにおけるプリミティブごとに、ビンが対応するタイルの組の範囲内のプリミティブの分配を示す分配情報を決定し、記憶する。本実施形態においては、この分配情報は、ビン内にリストされるプリミティブごとに決定され、関連付けられる。
【０１３４】
本実施形態においては、このプリミティブ分配情報は、ビニングプロセスの一部として決定され(上述したように、ビニングプロセスは、プリミティブがカバーするとみなされるべきであるタイルを決定するので)、問題のプリミティブリスト(ビン)が対応するタイルの組におけるどのタイルについて、プリミティブが処理されるべきであるかを示すタイルカバレージビットマップの形態で記憶される。
【０１３５】
図2は、このことを示し、プリミティブリスト(ビン)41がそれについて作成すべきである2×2のタイル40の例示的な組を示している。この場合には、プリミティブ42は、2×2のタイルの組を形成する4つのタイルのうちの2つに存在することが、その境界ボックス43によって分かる。プリミティブ42は、そのため、それが2×2のタイルの群のうちタイル「1」および「3」にあることを示す形「0101」のタイルカバレージビットマップと関連付けられる。(本実施形態においては、4ビットのビットマップxxxxを使用して、プリミティブリスト(ビン)が対応する2×2のタイルブロックの範囲内のそれぞれのプリミティブの分配を示す。)
【０１３６】
タイル40のこの組についてプリミティブ42を処理するようになると、ピクセルプロセッサ22(ピクセルプロセッサのリストリーダ27)は、ビン41からプリミティブ42についてのデータを読取り、その関連したタイルカバレージビットマップから、プリミティブ42がタイル40の組のうちのタイル「1」および「3」についてだけ処理されるべきである(すなわち、タイル「0」および「2」についてはスキップ可能である)ことを決定することになる。
【０１３７】
本実施形態においては、プリミティブごとの分配情報(タイルカバレージビットマップ)は、プリミティブリストにおけるプリミティブについての他のデータとともに記憶される。図4は、このことを示している。したがって、図4に示すように、プリミティブリストにおけるそれぞれのプリミティブ「エントリ」50は、プリミティブタイプ51(例えば三角形、ライン、ポイント)と、タイルカバレージビットマップ52と、(本出願人の英国特許第2,420,261号に例として論じられているように)プリミティブがレンダリングされるとき、設定すべきレンダリング状態を示すためのレンダー状態ワードインデックス53と、プリミティブについての頂点データに対するインデックス54とを記憶する。(図4は、32ビット幅メモリと仮定して、このデータについてのメモリレイアウトを示している。図4に示すように、「頂点1」および「頂点2」のインデックスが32ビット長である場合、それらは、メモリの第1のワードに存在することになり、他のデータは、メモリの次のワードに存在することになる。)
【０１３８】
他の構成も、もちろん、あり得るであろう。
【０１３９】
上述したように、プリミティブリスト(ビン)が作成されたとき、ピクセルプロセッサ(そのリストリーダ27)は、それが、現在処理しているタイルを包囲するプリミティブリスト(ビン)を決定し、当技術分野において知られているように、順々に、そのプリミティブリスト(ビン)におけるプリミティブごとにリストされた情報を読み取る。
【０１４０】
しかし、それを行っているとき、それはまた、問題のプリミティブについてのカバレージビットマップ(情報)を読み取って、そのプリミティブが現在処理されているタイルについて処理されるべきであるかを決定する。問題のプリミティブと関連付けられた分配情報(ビットマップ)が、プリミティブが現在処理されているタイルについて処理される必要がないことを示す場合、プリミティブはスキップされ(かつ、例えば、その関連した頂点情報は、したがって、読み出されず)、プロセスは、リストにおける次のプリミティブ上などへ移動する。これは、シーンが表示のために処理されるときに読み取られるデータの量が、著しく抑えられることを可能にすることができる。
【０１４１】
当業者によって理解されるように、上述の構成に対する様々な変更形態、修正形態、または代替形態などが、必要ならば、本実施形態においておよび本発明について使用可能である。
【０１４２】
例えば、上述の2×2のタイルの組についてプリミティブを作成するのではなく、プリミティブリストは、4×4のタイルの組または16×16のタイルの組などについて作成可能になる。
【０１４３】
カバレージビットマップなど、プリミティブごとの分配情報は、別々のデータ構造またはリストにおけるヘッダ内に記憶可能になり、それにより、それは、残存するプリミティブ情報に対して別々に読取り可能になる。これは、その場合、プリミティブが問題のタイルについて処理される必要のないことが決定された場合、プリミティブリスト内に残存するプリミティブ情報の読取りがスキップされることを可能にすることになる。
【０１４４】
また、タイルカバレージビットマップなどの分配情報を圧縮形態で記憶することも可能になる。任意の適切な保守的な(損失性の)圧縮フォーマットまたは損失のない圧縮フォーマットが使用可能になる。無損失の圧縮スキームが、例えば、ランレングス符号化を使用することが可能になる。
【０１４５】
本発明の1つの好ましい実施形態においては、以下のようなビットマップ圧縮の形態が使用される。
【０１４６】
この場合には、それぞれのプリミティブリストは、4×4のタイルの組を示すと仮定される。4×4のタイルの組内にそれぞれのタイルを示すマップにおける単一のビットとともに非圧縮カバレージビットマップを使用して、このタイルの組の範囲内のプリミティブの分配を示すためには、16ビットのストレージが必要になる。
【０１４７】
しかし、本出願人は、分配情報が、実は、よりコンパクトな形態で符号化可能であることを理解している。
【０１４８】
具体的には、プリミティブは、実際面では、4×4のタイルのブロックの所与の行または列の範囲内に隣接するタイルだけに存在している傾向があるので、所与の行または列のタイルに沿って限定された数の分配可能性を示すことだけが必要である。具体的には、任意の所与の行または列の場合、カバレージ可能性は、実際面では、0001、0010、0100、1000、0011、0110、1100、0111、1110、および1111になる。これらのカバレージビットマップは、したがって、以下のように、8個の種々のカバレージ値として表示および符号化可能である。
0→0001
1→0010
2→0100
3→1000
4→0011
5→0110
6→1100
7→1111(および(1111に保守的にマッピングされる)0111、1110)
【０１４９】
次いで、この符号化スキームは、x方向およびy方向ごとに3ビットのカバレージ符号化値を別々に使用して、x方向およびy方向それぞれで所与のプリミティブのカバレージを示すことが可能である。その場合、現在のタイルインデックスモジュロ4は、x軸およびy軸ごとに、ビットをカバレージビットマップから選び出すために使用可能であり、両方の軸についてのルックアップが「1」に戻る場合、プリミティブは、そのタイルについて処理される必要があるが、そうでなければ必要ない。
【０１５０】
このようにして、4×4のタイルの組の範囲内のプリミティブのカバレージは、x軸およびy軸ごとに、3ビットのカバレージ値を使用することによって、6ビットだけのストレージを使用して表示可能である。
【０１５１】
上述の実施形態は、プリミティブリストが作成される複数のタイルの組の範囲内の個別のタイルのレベルにおいてプリミティブの分配を示すことを参照して説明されてきたが、それは、プリミティブリストが作成される複数のタイルのより大きな組の範囲内の複数のタイルのサブセット全体にわたってプリミティブの分配を示すことが等しく可能になる。例えば、上述の4×4のタイルの組についてのプリミティブリストの場合には、4×4のタイルの組のうちの個別のタイルのプリミティブの分配を直接的に示すのではなく、例えば、4×4のタイルの組を2×2のタイルのサブセットに分割することが可能になり、その場合、2×2のタイルのサブセット全体にわたって、それぞれのプリミティブの分配を示すことが可能になる。
【０１５２】
また、プリミティブリストが、個別のタイルについてと、複数のタイルの組についての両方作成される構成を有することも可能になり、例えば、プリミティブ分配情報は、複数のタイルの組に対応するそれらのプリミティブリストについて提供される。
【０１５３】
したがって、例えば、本出願人の英国特許第2,433,014号に記載されている形態の「階層的な」ビニング構成が、必要ならば使用可能になり、本発明のやり方で分配情報が、複数のタイルの組を示すそれらのプリミティブリストについて提供される。
【０１５４】
実際に、より低エリアおよびより低性能のグラフィックス処理システムにおいて使用されることにとともに、本発明はまた、階層的なビニングなどのより複雑なビニング構成を使用することが可能であるシステムなどのより高性能のグラフィックス処理システムにも、有利に適用可能ある。
【０１５５】
また、例えば、プリミティブが所与のタイル内に存在するか否かを決定するために軸並行境界ボックスを使用することが必要なわけではないが、例えば、他の境界ボックス構成が、必要ならば使用可能になる。必要ならば、適切な保守的な(損失性の)圧縮スキームが、斜線を有するタイルカバレージビットマップが生じないことを確実にするために使用可能になる。
【０１５６】
図6は、本実施形態および本発明とともに使用可能であるさらなる好ましい出力フレームサブ分割構成を示している。この場合には、シーンがレンダリングされることになる全体的な出力フレーム60は、61、62、63、64に対する4つの別々のサブフレームとして処理され、それらは、次いで、表示するための最終出力フレームを形成するために結合される。個別のサブフレーム61、62、63および64はそれぞれ、上述のやり方で処理され、すなわち、レンダリング目的のためにタイル65にサブ分割され、そのプロセスを容易にするために、複数のタイル66の組について作成されるプリミティブリストを有する。(これは、明確にするために、サブフレーム61だけについて示されている。)
【０１５７】
この構成は、例えば、グラフィックス処理システムが固定最大数のビン(プリミティブリスト)を支持する場合、処理する出力フレームをサブ分割する追加のやり方を提供し、例えば、それぞれのビンと関連付けられた分配情報は、プリミティブリスト(ビン)によってカバーされるエリアの範囲内の限定数の分配構成だけを示すことが可能である。
【０１５８】
このようなシステムにおいては、例えば、描写すべきフレームが多数のタイルを包囲する場合(典型的には、タイルの大きさは固定されることになり、そのため、より高解像度表示では、より多くのタイルが生成されることが必要になるので)、1つの代替形態は、単に、より多数のタイルを、許容されるビンの数に分割することになる。しかし、この結果、それぞれのビンがより多くのタイルを包囲することになる。
【０１５９】
あるいは、図6に示すように、全体的なフレーム60は、次々に処理すべき「サブフレーム」にサブ分割可能になる。それぞれのサブフレームは、その場合、グラフィックス処理システムが支持することが可能であるプリミティブリスト(ビン)の全組へのアクセスを有することになり、そのため、それぞれのビンは、全体的出力フレームが(全体として)一気に処理されている場合と比較すると、より少ない数のタイルだけを包囲することが必要になる。
【０１６０】
本発明が、少なくともその好ましい実施形態において、具体的には、グラフィックスプロセッサ(および、具体的には、ラスタライズまたはレンダリングプロセス)のメモリ帯域幅(具体的には、シーンが表示のために処理されるとき、シーン記述を読み取るために実行されるメモリアクセスの数)を抑えることが可能であるタイル状のグラフィックス処理システムに使用するための方法および装置を提供することが、上述から分かる。これは、グラフィックスプロセッサによって、特に、ラスタライズおよびレンダリングプロセスならびにメモリサブシステムによって消費される電力を抑える。それはまた、より低性能の、より低電力のメモリシステムが使用されることも可能にする。
【０１６１】
さらには、これは、グラフィックス処理システムに対して、比較的簡単で、小さい修正により達成可能であり、それにより、例えば、たった少量の追加のロジックが必要になるだけであろう。
【０１６２】
これは、とりわけ、より低電力のグラフィックスプロセッサについて、本発明を特に
有利にし、それによりポータブルデバイスおよびモバイルデバイスならびに組込みシステムにおいて使用可能になる。
【０１６３】
これは、少なくとも、一般にいくつかのタイルをカバーするプリミティブリストを使用することによって、本発明の好ましい実施形態において達成される。これは、プリミティブリストについてのメモリ要件およびポインタメンテナンスを抑える。
【０１６４】
しかし、これを行うこととともに、本発明はまた、プリミティブリストがカバーするタイルの範囲内のプリミティブリストにおけるプリミティブの分配を示す追加の情報を提供する。ラスタライズおよびレンダリングプロセスは、その場合、この分配情報を読み取り、分配情報が、処理されているタイルについて、プリミティブが実は必要でないことを示した場合、フェッチングプリミティブデータなどをスキップすることが可能である。複数のタイルの組を示すプリミティブリストが使用されているという事実があるにもかかわらず、これは、ラスタライズおよびレンダリングプロセス中に読み取られるデータの量を著しく抑えることができるということに本出願人は気づいた。
【符号の説明】
【０１６５】
1  シーン
2  タイル
3  プリミティブ
4  タイル
5  プリミティブ
6  タイル
7  タイル
8  プリミティブ
9  タイル
10  タイル
11  タイル
12  タイル
13  プリミティブ
20  グラフィックスプロセッサ
21  ジオメトリプロセッサ
22  ピクセルまたはフラグメントプロセッサ
23  メモリ
24  メモリ
25  メモリ
26  リストビルダ
27  リストリーダ
30  ジオメトリデータ
31  変換されたジオメトリデータ
32  プリミティブリスト(ビン)
33  テクスチャ
40  タイル
41  ビン
42  プリミティブ
43  境界ボックス
44  タイル
45  タイル
46  タイル
48  タイル
50  プリミティブ「エントリ」
51  プリミティブタイプ
52  タイルカバレージビットマップ
53  インデックス
54  インデックス
60  出力フレーム
61  サブフレーム
62  サブフレーム
63  サブフレーム
64  サブフレーム
65  タイル
66  タイル
【図１】
2010165357.tif 000003
【図２】
2010165357.tif 000004
【図３】
2010165357.tif 000005
【図４】
2010165357.tif 000006
【図５】
2010165357.tif 000007
【図６】
2010165357.tif 000008
【外国語明細書】
2010165357.tif 000009
2010165357.tif 000010
2010165357.tif 000011
2010165357.tif 000012
2010165357.tif 000013
2010165357.tif 000014
2010165357.tif 000015
2010165357.tif 000016
2010165357.tif 000017
2010165357.tif 000018
2010165357.tif 000019
2010165357.tif 000020
2010165357.tif 000021
2010165357.tif 000022
2010165357.tif 000023
2010165357.tif 000024
2010165357.tif 000025
2010165357.tif 000026
2010165357.tif 000027
2010165357.tif 000028
2010165357.tif 000029
2010165357.tif 000030
2010165357.tif 000031
2010165357.tif 000032
2010165357.tif 000033
2010165357.tif 000034
2010165357.tif 000035
2010165357.tif 000036
2010165357.tif 000037
2010165357.tif 000038
2010165357.tif 000039
2010165357.tif 000040
2010165357.tif 000041
2010165357.tif 000042
2010165357.tif 000043
2010165357.tif 000044
2010165357.tif 000045
2010165357.tif 000046
2010165357.tif 000047
2010165357.tif 000048
2010165357.tif 000049
2010165357.tif 000050
2010165357.tif 000051
2010165357.tif 000052
2010165357.tif 000053
2010165357.tif 000054
2010165357.tif 000055
2010165357.tif 000056