(57)【特許請求の範囲】
【請求項１】
複数のタイルを含むフレーム用のグラフィックスデータを生成する、タイルベースのグラフィックスシステムであって、
前記フレーム用の複数のグラフィックスプリミティブを受信する入力手段と、
第１の動作モードおよび第２の動作モードで動作するように構成されたグラフィックス処理回路であって、
前記第１の動作モードにおいて、前記グラフィックス処理回路は、前記入力手段から前記複数のグラフィックスプリミティブを受け取り、ビニング動作を行うように構成され、前記ビニング動作において、前記複数のタイルそれぞれについて、前記複数のグラフィックスプリミティブのうち前記タイルと交差するものを特定するタイルリストが決定され、
前記第２の動作モードにおいて、前記グラフィックス処理回路は、割り当てられたタイル用の前記タイルリストを受け取り、ラスタライゼーション動作を行うように構成され、前記ラスタライゼーション動作において、前記タイルリストに応じて前記割り当てられたタイル用の前記グラフィックスデータが生成される、
グラフィックス処理回路と、
前記第１の動作モードと前記第２の動作モードとの間での動作モードの切り換えを制御するための制御回路と、
を含む、システム。
【請求項２】
前記グラフィックス処理回路は、複数のメモリブロックを含む作業メモリを
前記第１の動作モードにおいて、各メモリブロックはタイルと関連付けられ、前記ビニング動作時において、各メモリブロックは、前記複数のグラフィックスプリミティブのうち、前記関連付けられたタイルと交差するものを記録するために用いられ、
前記第２の動作モードにおいて、各メモリブロックは、前記割り当てられたタイルの画素と関連付けられ、前記ラスタライゼーション動作時において、各メモリブロックは、前記関連付けられた画素用に生成された画素データを保存するために用いられる、
請求項１に記載の、タイルベースのグラフィックスシステム。
【請求項３】
前記グラフィックス処理回路は、前記第１の動作モードを支援するように改変されたラスタライゼーション回路であり、
前記作業メモリは、前記ラスタライゼーション動作を行う際に前記ラスタライゼーション回路によって用いられるように提供されるタイルメモリであり、前記作業メモリは、前記第１の動作モード時において、前記複数のグラフィックスプリミティブのうち、各メモリブロックと関連付けられた前記タイルと交差するものを記録するために再利用されるように構成される、
請求項２に記載の、タイルベースのグラフィックスシステム。
【請求項４】
前記ラスタライゼーション回路は、
単位のアレイから個々の単位を選択する選択回路であって、前記第１の動作モードにおいて、各単位は、前記タイルのうちの１つを含み、前記第２の動作モードにおいて、各単位は、前記割り当てられたタイルの画素を含む、選択回路と、
選択された単位について、前記単位と関連付けられるべき出力データを計算する単位処理回路であって、前記第１の動作モードにおいて、前記出力データは、前記複数のグラフィックスプリミティブのうち前記選択された単位と交差するものを示し、前記第２の動作モードにおいて、前記出力データは、前記選択された単位が前記複数のグラフィックスプリミティブと交差する様態に依存する前記選択された単位用の画素データを提供する、単位処理回路と、
を含む、
請求項３に記載の、タイルベースのグラフィックスシステム。
【請求項５】
前記第１の動作モードにおいて、前記単位処理回路は前記ビニング動作を行うためのジオメトリ交差アルゴリズムを実行し、前記第２の動作モードにおいて、前記単位処理回路は、前記ラスタライゼーション動作を行うためのサンプルベースのシェーディングアルゴリズムを実行する、請求項４に記載の、タイルベースのグラフィックスシステム。
【請求項６】
各メモリブロックはｎビットを含み、
前記第１の動作モードにおいて、前記グラフィックス処理回路は、ｎ個のグラフィックスプリミティブになるまで前記ビニング動作を行う、
請求項２から５のいずれかの請求項に記載の、タイルベースのグラフィックスシステム。
【請求項７】
前記複数のグラフィックスプリミティブがｎを超えた場合、前記制御回路は、前記第１の動作モードにおいて前記グラフィックス処理回路に前記ビニング動作を反復的に行わせるように構成され、各反復において、異なるｎ個のプリミティブが考慮される、
請求項６に記載の、タイルベースのグラフィックスシステム。
【請求項８】
各反復間において、前記作業メモリの内容がビンメモリに書き込まれる、
請求項７に記載の、タイルベースのグラフィックスシステム。
【請求項９】
フレーム内のタイル数がタイル内の画素数を超えた場合、前記制御回路は、前記第１の動作モードにおいて前記グラフィックス処理回路に前記ビニング動作を反復的に行わせるように構成され、各反復において、前記フレームの異なる領域のタイル数は、画素タイル内の画素数を超えない、請求項２から８のいずれかの請求項に記載の、タイルベースのグラフィックスシステム。
【請求項１０】
各反復間において、前記作業メモリの内容がビンメモリに書き込まれる、
請求項９に記載の、タイルベースのグラフィックスシステム。
【請求項１１】
前記作業メモリは、前記グラフィックス処理回路に対して設けられる、
請求項２から１０のいずれかの請求項に記載の、タイルベースのグラフィックスシステム。
【請求項１２】
前記グラフィックス処理回路は複数のグラフィックス処理エンジンを含み、前記複数のグラフィックス処理エンジンはそれぞれ、前記制御回路によって前記第１の動作モードまたは前記第２の動作モードで動作するように制御される、
請求項１から請求項１１のいずれか一の請求項に記載の、タイルベースのグラフィックスシステム。
【請求項１３】
前記制御回路は、前記グラフィックス処理エンジンのうち複数を前記第１の動作モードにし、前記フレームの異なる領域を前記グラフィックス処理エンジンのうち異なる１つに割り当てるように構成され、これにより、前記ビニング動作は、前記複数のグラフィックス処理エンジンにわたって並行に行われる、
請求項１２に記載の、タイルベースのグラフィックスシステム。
【請求項１４】
前記グラフィックス処理回路によって生成された前記タイルリストはビット列を含み、各ビットは、対応するグラフィックスプリミティブと、前記対応するグラフィックスプリミティブが前記関連付けられたタイルと交差するか否かを示す値とに関連付けられ、
前記タイルベースのグラフィックスシステムは、
前記タイルリストおよび各グラフィックスプリミティブの記述を受け取るマージングエンジンであって、前記マージングエンジンは、複数のベクトルを含むベクトルファイルを生成し、各ベクトルは、前記関連付けられたタイルと交差する前記グラフィックスプリミティブのうちの１つの記述を提供し、前記ベクトルファイルは、前記グラフィックス処理回路が前記第２の動作モードにおいて前記関連付けられたタイル用のグラフィックスデータを生成するように動作する際に前記グラフィックス処理回路によって用いられる、マージングエンジン、
をさらに含む、
請求項６及び請求項１乃至５のいずれかに記載の、または請求項６乃至８のいずれかに記載の、若しくは請求項６及び請求項９乃至１３のいずれかに記載の、タイルベースのグラフィックスシステム。
【請求項１５】
前記マージングエンジンは、前記グラフィックス処理回路によって提供されるシェーディングエンジンを含む、請求項１４に記載の、タイルベースのグラフィックスシステム。
【請求項１６】
前記グラフィックス処理回路は、前記ビニング動作を行うためのシェーディングエンジンを含む、請求項１から請求項１５のいずれか一の請求項に記載の、タイルベースのグラフィックスシステム。
【請求項１７】
複数のタイルを含むフレーム用のグラフィックスデータを生成するためにデータ処理システムを動作させる方法であって、
前記グラフィックスデータを生成するプロセスにおいて、第１の動作モードと第２の動作モードとの間でグラフィックス処理論理の動作モードを選択的に切り換えるステップと、
前記第１の動作モードにおいて前記グラフィックス処理論理が前記フレーム用の複数のグラフィックスプリミティブを受け取ると、前記グラフィックス処理論理はビニング動作を行い、前記ビニング動作において、前記複数のタイルそれぞれについて、前記複数のグラフィックスプリミティブのうち前記タイルと交差する前記グラフィックスプリミティブを特定するタイルリストを決定する、ステップと、
前記第２の動作モードにおいて、割り当てられたタイルについて前記タイルリストを前記グラフィックス処理論理が受け取ると、前記グラフィックス処理論理は、ラスタライゼーション動作を行い、前記ラスタライゼーション動作において、前記タイルリストに応じて前記割り当てられたタイル用の前記グラフィックスデータを生成する、ステップと、
前記タイルそれぞれについて前記ラスタライゼーション動作が行われると、前記フレーム用の前記グラフィックスデータを出力するステップと、
を含む、方法。
【請求項１８】
コンピュータプログラムを含む記録媒体であって、前記コンピュータプログラムは、コンピュータ上において実行されると、請求項１７に記載の複数のタイルを含むフレーム用のグラフィックスデータを生成する方法を前記コンピュータに行わせる、記録媒体。
【請求項１９】
複数のタイルを含むフレーム用のグラフィックスデータを生成する、タイルベースのグラフィックスシステムであって、
前記フレーム用の複数のグラフィックスプリミティブを受け取る入力手段と、
第１の動作モードおよび第２の動作モードで動作するグラフィックス処理手段であって、
前記第１の動作モードにおいて、前記グラフィックス処理手段は、前記入力手段から前記複数のグラフィックスプリミティブを受け取り、ビニング動作を行い、前記ビニング動作において、前記複数のタイルそれぞれについて、前記複数のグラフィックスプリミティブのうち前記タイルと交差するものを特定するタイルリストを決定し、
前記第２の動作モードにおいて、前記グラフィックス処理手段は、割り当てられたタイルについて前記タイルリストを受け取り、ラスタライゼーション動作を行い、前記ラスタライゼーション動作において、前記タイルリストに応じて前記割り当てられたタイルについて前記グラフィックスデータを生成する、グラフィックス処理手段と、
前記第１の動作モードと前記第２の動作モードとの間での動作モードの切り換えを制御する制御手段と、
を含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タイルベースのグラフィックスシステム及びこのようなシステムの動作方法に関する。
【背景技術】
【０００２】
タイルベースのグラフィックスシステムが開発されており、各フレームを表示する為に、前記フレームをタイルと呼ばれる複数領域に分割する。フレーム内に各グラフィックスプリミティブ（典型的には点、線または三角形）を表示する為に、ビニング単位を提供する。ビニング単位は、多様なタイルのうち当該グラフィックスプリミティブが交差するものを決定するためのビニング動作を行うために用いられる。詳細には、ビニング単位は典型的には、複数のビン（例えば、各タイルにつき１つのビン）を指定し、当該グラフィックスプリミティブ用の座標データに基づいて、当該グラフィックスプリミティブが交差するタイル（単数または複数）を決定し、各交差するタイルについて、関連ビン内のグラフィックスプリミティブの識別子を記録する。
【０００３】
各タイルについて別個のビンが提供されるよう、ビンとタイルとの間には１対１の関係があり得るものの、ビンをこのように配置する必要はなく、その代わりに、複数のタイルを個々のビンと関連付けることもできる。その結果、保存すべきビニングデータ量を低減することができる。しかし、実際のビンがビニング単位でどのように構築されるかに関係無く、ビニング動作完了時には、フレーム内に表示すべきグラフィックスプリミティブ全てを考慮する必要があり、ビニング動作によって得られたビニングデータにより、各タイル用のタイルリストが提供される。詳細には、前記タイルリストにより、対応するタイルについて、当該タイルと交差するグラフィックプリミティブが特定される。
【０００４】
ビニング動作が終了した場合にのみ、グラフィックスシステムの完成が可能となり、その後、各タイルについてグラフィックスデータ（本明細書中画素データとも呼ぶ）が生成される。詳細には、この段階において、グラフィックスシステムのラスタライゼーション単位に特定のタイルが割り当てられ、当該タイルに適用可能なタイルリストに応じて、前記割り当てられたタイルについてグラフィックスデータが生成される。前記タイルリスト内において特定されたグラフィックスプリミティブ用に、ラスタライゼーションプロセスにより、前記多様なグラフィックスプリミティブが含まれる画素が決定され、その後、各画素について画素データを生成するためのシェーダーアルゴリズムが適用される。
【０００５】
ラスタライゼーション段階においては、各タイルについて別個のタイルリストがあるため、前記グラフィックスシステム内に複数のラスタライゼーションエンジンが設けられている場合、異なるタイルを異なるラスタライゼーションエンジンに割り当てることによりラスタライゼーションプロセスの並列化が可能となり、これにより性能向上が可能となる。
【０００６】
しかし、ラスタライゼーション実施の前には、ビニング動作を完了させることが必要な場合が多い。なぜならば、ビニング動作が完了した場合にのみ、よって当該フレーム用の全グラフィックスプリミティブを考慮した場合にのみ任意の特定のタイル用のタイルリストを完了対象として考慮できるからである。ビニング動作を行うのに必要な専用ビニング単位は、ハードウェアビニング単位を用いたグラフィックスシステム内の大きな領域を占有する。ビニング動作をソフトウェアによって行うシステムの場合でも、ビニングインプレメンテーションは、グラフィックスシステムの他の部分から完全に別個である。さらに、ハードウェアインプレメンテーションの場合であっても、またはソフトウェアビニングインプレメンテーションの場合であっても、ビニング動作には典型的には長時間が必要となることが多く、そのため、グラフィックスレンダリングプロセスの性能全体に悪影響を及ぼす。
よって、向上したタイルベースのグラフィックスシステムおよびこのようなシステムの動作方法を提供することが望ましい。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
第１の局面から鑑みて、本発明は、複数のタイルを含むフレーム用のグラフィックスデータを生成する、タイルベースのグラフィックスシステムを提供する。
【課題を解決するための手段】
【０００８】
前記システムは、前記フレーム用の複数のグラフィックスプリミティブを受信する入力手段と、第１の動作モードおよび第２の動作モードで動作するように構成されたグラフィックス処理回路であって、前記第１の動作モードにおいて、前記グラフィックス処理回路は、前記入力手段から前記複数のグラフィックスプリミティブを受け取り、前記グラフィックス処理回路は、前記複数のタイルそれぞれについて、当該タイルと交差する前記複数のグラフィックスプリミティブから前記グラフィックスプリミティブを特定するタイルリストを決定するためのビニング動作を行うように構成され、前記第２の動作モードにおいて、前記グラフィックス処理回路は、割り当てられたタイル用の前記タイルリストを受け取り、前記割り当てられたタイル用のグラフィックスデータを前記タイルリストに応じて生成するためのラスタライゼーション動作を行うように構成される、グラフィックス処理回路と、前記第１の動作モードと前記第２の動作モードとの間での前記グラフィックス処理回路の切り換えを制御するための制御回路とを含む。
【０００９】
本発明によれば、第１の動作モードと第２の動作モードとの間での切り換えが可能なグラフィックス処理回路が提供される。前記第１の動作モードにおいて、前記グラフィックス処理回路は、表示すべき複数のグラフィックスプリミティブを受け取り、各タイルについてタイルリストを生成するためのビニング動作を行う。前記第２の動作モードにおいて、前記グラフィックス処理回路は、特定のタイルについてタイルリストを受け取り、当該タイル用のグラフィックスデータを生成するためのラスタライゼーション動作を行う。
【００１０】
本発明の発明者によれば、グラフィックスシステムにおいて行われるビニング動作とラスタライゼーション動作との間には類似性がある。詳細には、双方のプロセスにおいて、矩形領域に対するジオメトリックプリミティブ（ビニング動作の場合はタイル、ラスタライゼーション動作の場合は画素）の交差点を計算した後、当該矩形領域（ビニング動作の場合はタイルリスト、ラスタライゼーション動作の場合は画素データ）用の一部の保存データを生成する。この見解に基づいて発明者が得たグラフィックス処理単位は、１つの動作モードにおいてビニング動作を行いかつ別の動作モードにおいてラスタライゼーション動作を行うように構成することが可能である。
【００１１】
一実施形態において、前記グラフィックス処理回路は、複数のメモリブロックを含む作業メモリを含む。前記第１の動作モードにおいて、各メモリブロックはタイルと関連付けられ、前記ビニング動作時において、各メモリブロックを用いて、前記複数のグラフィックスプリミティブのうち、前記関連付けられたタイルと交差するものを記録する。前記第２の動作モードにおいて、各メモリブロックは、前記割り当てられたタイルの画素と関連付けられ、前記ラスタライゼーション動作時において、各メモリブロックを用いて、前記関連付けられた画素用に生成された画素データを保存する。よって、このような実施形態によれば、双方の動作モードにおいて同一メモリ構造を用いることができ、動作モードに応じて、各メモリブロック中に異なる情報を保存する。その結果、同様に、必要メモリ量の低減による大幅なサイジングの改善が得られる。さらに、作業メモリを（システムメモリの一部としてではなく）グラフィックス処理回路に対して局所的に設けたアプローチを用いた場合、必要なシステムメモリアクセス数が大幅に低減する。これは、ビニング動作において特に当てはまる。すなわち、典型的な先行技術システムにおいては、タイルと交差するグラフィックスプリミティブが決定されるたびに、ビニング単位とシステムメモリとの間の通信が行われるため、ビン更新が必要であった。
【００１２】
前記グラフィックス処理回路は、多様な様態で形成可能である。しかし、一実施形態において、前記グラフィックス処理回路は、前記第１の動作モードを支援するように変更されたラスタライゼーション回路であり、前記作業メモリは、前記ラスタライゼーション回路が前記ラスタライゼーション動作を行う際に用いる前記ラスタライゼーション回路によって用いられるタイルメモリである。前記作業メモリは、前記第１の動作モード時において、前記複数のグラフィックスプリミティブのうち、各メモリブロックと関連付けられた前記タイルと交差するものを記録するために再度利用されるように構成される。典型的なラスタライゼーション回路は、グラフィックスプリミティブと個々の画素との交差点の検出において高効率であり、前記グラフィックス処理回路がビニング動作モードも支援するように改変された場合、これらの効率を用いれば、ビニング動作において専用ビニング単位を用いる公知の先行技術アプローチと比較して、ビニング動作時に費やされるビニング動作の性能と、前記電力消費とを向上させることが可能になる。さらに、典型的なラスタライゼーション回路は、タイルメモリを備える。前記タイルメモリは、前記ラスタライゼーション動作時においてタイルの各画素について画素データを記録するために用いられ、前記グラフィックス処理回路が前記第１の動作モードにおいて動作して前記ビニング動作を行う際に生成されたタイルリスト情報を当該タイルメモリを再度利用して保存することにより、典型的な公知の先行技術における専用ビニング単位を用いたビニング動作を行う際に必要なメモリアクセスと比較して、大幅な性能向上が可能となる。
【００１３】
前記グラフィックス処理回路が改変されたラスタライゼーション回路によって形成される実施形態において、前記改変されたラスタライゼーション回路は、多様な形態をとり得る。しかし、一実施形態において、前記ラスタライゼーション回路は、選択回路を含む。前記選択回路は、単位のアレイから個々の単位を選択する。前記第１の動作モードにおいて、各単位は、前記タイルのうち１つを含む。前記第２の動作モードにおいて、各単位は、前記割り当てられたタイルの画素を含む。前記ラスタライゼーション回路はまた、単位処理回路も含む。前記単位処理回路は、選択された単位について、前記単位と関連付けられるべき出力データを計算する。前記第１の動作モードにおいて、前記出力データは、前記複数のグラフィックスプリミティブのうち、前記選択された単位と交差するものを示す。前記第２の動作モードにおいて、前記出力データは、前記選択された単位の画素データを提供する。前記選択された単位は、前記選択された単位が前記複数のグラフィックスプリミティブと交差する様態に依存する。
【００１４】
１つの特定の実施形態において、前記第１の動作モードにおいて、前記単位処理回路は、ジオメトリ交差アルゴリズムを実行する。前記第２の動作モードにおいて、前記単位処理回路は、サンプルベースのシェーディングアルゴリズムを実行する。よって、このような実施形態において、前記ラスタライゼーション回路に必要な改変は比較的少ないことが分かる。詳細には、前記選択回路によって処理される単位は、前記動作モードに応じて異なる意味を持つだけであり、前記単位処理回路は、前記動作モードに応じて異なるアルゴリズムを実行する。
【００１５】
２つの動作モード間において作業メモリを共有する実施形態において、前記作業メモリを共有する様態（詳細には、前記第１の動作モードにおいて前記作業メモリが用いられる様態）は、多様な形態をとり得る。しかし、一実施形態において、各メモリブロックはｎビットを含み、前記第１の動作モード時において、前記グラフィックス処理回路は、ｎ個のグラフィックスプリミティブになるまで前記ビニング動作を行う。よって、このような実施形態において、特定の画素用の画素データを保存するためのラスタライゼーション動作を行う際に用いられる前記ｎビットのデータは、前記第１の動作モードにおいて、ｎ個のグラフィックスプリミティブになるまでビニング情報を保存する際に再利用される。詳細には、一実施形態において、前記メモリブロック内の各ビット位置は、特定のグラフィックスプリミティブと関連付けられ、前記ビットの値は、前記グラフィックスプリミティブが前記メモリブロックと関連付けられた前記タイルと交差するものとして決定されたか否かに応じて、セットまたはクリアされる。
【００１６】
一実施形態において、前記複数のグラフィックスプリミティブがｎを超える場合、前記制御回路は、前記第１の動作モードにおいて前記グラフィックス処理回路に前記ビニング動作を反復的に行わせるように構成され、各反復において、異なるｎ個のプリミティブが考慮される。
【００１７】
一実施形態において、フレーム中のタイル数がタイル中の画素数を超えた場合、前記制御回路は、前記第１の動作モードにおいて前記グラフィックス処理回路に前記ビニング動作を反復的に行わせるように構成され、各反復において、前記フレームの異なる領域が考慮され、各領域のタイル数は、タイル内の画素数を超えない。
【００１８】
典型的には、前記ビニング動作を反復的に行う必要がある場合、前記作業メモリの内容が各反復間においてビンメモリに書き込まれ、このような内容は、例えば各反復時における前記ビンメモリの内容の更新に用いられ、これにより、前記必要な反復が完了するまで、前記ビンメモリは、各タイル用の完全なタイルリストを含む。
【００１９】
一実施形態において、前記グラフィックス処理回路は、複数のグラフィックス処理エンジンを含む。前記複数のグラフィックス処理エンジンはそれぞれ、前記制御回路により、前記第１の動作モードまたは前記第２の動作モードにおいて制御される。１つのこのような実施形態において、前記制御回路は、前記グラフィックス処理エンジンのうち複数を前記第１の動作モードにし、前記フレームの異なる領域をこれらのグラフィックス処理エンジンのうち異なるものに割り当てるように、構成され、これにより、前記複数のグラフィックス処理エンジンにわたって前記ビニング動作が並行に行われる。ビニング動作実行において専用ビニング単位が用いられていた典型的な先行技術システムの場合、ビニング動作は、グラフィックスパイプライン内のシリアライゼーション点を表していたが、本発明のこのような実施形態によれば、ビニング動作のシリアライゼーションが不要となるため、複数のグラフィックス処理エンジンにわたってビニング動作を並行に実施可能となり、これにより、性能が大幅に向上する。
【００２０】
一実施形態において、前記グラフィックス処理回路によって生成されたタイルリストはビット列を含み、各ビットは、対応するグラフィックスプリミティブと、前記対応するグラフィックスプリミティブが前記関連付けられたタイルと交差するか否かを示す値とに関連付けられる。このような実施形態において、前記タイルベースのグラフィックスシステムは、マージングエンジンをさらに含み得る。前記マージングエンジンは、タイルリストと各グラフィックスプリミティブの記述とを受け取り、複数のベクトルを含むベクトルファイルを生成する。各ベクトルは、前記関連付けられたタイルと交差するグラフィックスプリミティブのうちの１つの記述を提供する。前記ベクトルファイルは、前記グラフィックス処理回路が前記第２の動作モードにおいて前記関連付けられたタイル用のグラフィックスデータを生成するように動作する際に、前記グラフィックス処理回路によって用いられる。
【００２１】
このようなマージングエンジンの利用を通じて最適化が提供可能となり、これにより、前記グラフィックス処理回路が前記第２の動作モードで動作する際に用いるベクトルファイルは、前記関連付けられたタイル用のグラフィックスデータの生成に必要な最小量の情報のみを含むことによって、関連する性能が向上するように導かれる。
【００２２】
前記マージングエンジンは、多様な様態で提供可能である。しかし、一実施形態において、前記マージングエンジンは、前記グラフィックス処理回路によって提供されるシェーディングエンジンを含む。
【００２３】
前記グラフィックス処理回路が前記第１の動作モードをとっている際に前記ビニング動作を行うために前記グラフィックス処理回路内に設けられる構造は、多様な形態をとり得る。しかし、一実施形態において、前記グラフィックス処理回路は、前記ビニング動作を行うためのシェーディングエンジンを含む。
【００２４】
第２の局面から見て、本発明は、複数のタイルを含むフレーム用のグラフィックスデータを生成するようにデータ処理システムを動作させる方法を提供する。前記方法は、前記グラフィックスデータを生成するプロセスにおいて、第１の動作モードと第２の動作モードとの間でグラフィックス処理論理を選択的に切り換えるステップと、前記第１の動作モードにおいて、前記グラフィックス処理論理が前記フレーム用の複数のグラフィックスプリミティブを受け取ると、前記複数のタイルそれぞれについて、前記複数のグラフィックスプリミティブから前記タイルと交差するものを前記グラフィックスプリミティブを特定するタイルリストから決定するためのビニング動作を行うステップと、前記第２の動作モードにおいて、前記グラフィックス処理論理が割り当てられたタイル用の前記タイルリストを受け取ると、前記タイルリストに応じて前記割り当てられたタイル用のグラフィックスデータを生成するためのラスタライゼーション動作を行うステップと、前記ラスタライゼーション動作が前記タイルそれぞれについて行われた際、前記フレーム用の前記グラフィックスデータを出力するステップとを含む。
【００２５】
本発明の一実施形態のグラフィックスシステムは専用グラフィックスハードウェアシステムとして提供可能であるが、別の実施形態において、前記グラフィックスシステムは、汎用プロセッサ上において実行するソフトウェアによって具現化することも可能である。詳細には、本発明の第３の局面によれば、本発明は、コンピュータプログラムを含む持続性保存媒体を提供する。前記コンピュータプログラムは、コンピュータ上によって実行されると、本発明の第２の局面による複数のタイルを含むフレーム用のグラフィックスデータを生成する方法を前記コンピュータに行わせる。さらなる実施形態において、ハードウェア要素およびソフトウェア要素の混合物を用いて、前記グラフィックスシステムを実行することができる。
【００２６】
第４の局面から見て、本発明は、複数のタイルを含むフレーム用のグラフィックスデータを生成する、タイルベースのグラフィックスシステムを提供する。前記システムは、前記フレーム用の複数のグラフィックスプリミティブを受け取る入力手段と、第１の動作モードおよび第２の動作モードで動作するグラフィックス処理手段であって、前記第１の動作モードにおいて、前記グラフィックス処理手段は、前記入力手段から前記複数のグラフィックスプリミティブを受信し、前記複数のタイルそれぞれについて、前記複数のグラフィックスプリミティブから前記タイルと交差するものを前記グラフィックスプリミティブを特定するタイルリストから決定するためのビニング動作を行い、前記第２の動作モードにおいて、前記グラフィックス処理手段は、割り当てられたタイル用の前記タイルリストを受信し、前記タイルリストに応じて前記割り当てられたタイル用のグラフィックスデータを生成するためのラスタライゼーション動作を行う、グラフィックス処理手段と、前記グラフィックス処理手段の前記第１の動作モードと前記第２の動作モードとの間で切り換えを制御する制御手段とを含む。
【発明の効果】
【００２７】
別個のビニング単位を用いた公知の先行技術の場合よりも、タイルベースのグラフィックスシステムのサイズおよび複雑度が大幅に低減する。詳細には、実施形態により、多様な性能向上が実現される。また、前記グラフィックスシステムにおいて、特定のフレームについて指定された異なる数のグラフィックスプリミティブに対処できる柔軟性が得られる。実施形態のグラフィックス処理システムは、多様なフレームサイズおよびよって多様なディスプレー解像度に対処できる柔軟性を得ることができる。
添付図面中に示す実施形態を参照して、本発明について、ひとえに例示目的のためにさらに説明する。
【図面の簡単な説明】
【００２８】
【図１】一実施形態による、タイルベースのグラフィックスシステムを組み込むデータ処理システムを示すブロック図である。
【図２】一実施形態のビニング／ラスタライゼーションエンジンが第２の動作モードで動作しているときのタイルメモリの利用を示す模式図である。
【図３】一実施形態のビニング／ラスタライゼーションエンジンが第１の動作モードで動作しているときのタイルメモリの利用を示す模式図である。
【図４】一実施形態による、タイルメモリ内において維持されている多様なタイルリストを各グラフィックスプリミティブについて更新する方法を示す。
【図５】一実施形態による、図１のシステムの動作を示すフロー図である。
【図６】一実施形態による、図５のステップ２１０において行われるステップをより詳細に示すフロー図である。
【図７】一実施形態による、図６のステップ３１５において行われるステップをより詳細に示すフロー図である。
【図８】一実施形態のビニング／ラスタライゼーションエンジンを示す図である。
【図９】一実施形態のマージングエンジンの動作を示す図である。
【図１０】一実施形態においてタイルベースのグラフィックスシステムを実行するために利用することが可能な種類の汎用コンピュータの模式図である。
【発明を実施するための形態】
【００２９】
図１は、一実施形態のタイルベースのグラフィックスシステムを組み込んだデータ処理システムのブロック図である。前記タイルベースのグラフィックスシステムは、グラフィックス処理単位１０からなる。グラフィックス処理単位１０は、複数のビニング／ラスタライゼーションエンジン２５および３０を有する。複数のビニング／ラスタライゼーションエンジン２５および３０は、内部バス４０を介して制御回路２０に接続される。制御回路２０は、これらのビニング／ラスタライゼーションエンジンそれぞれの動作モードを制御するために用いられる。グラフィックス処理単位１０はまた、変換回路１５と、入力／出力インターフェース３５とを含む。変換回路１５は、標準的な方法で視角に基づいて３Ｄグラフィックスプリミティブを２Ｄ座標に変換するように動作する。入力／出力インターフェース３５は、グラフィックス処理単位１０をシステムバス５０に接続する。
【００３０】
システムバス５０には、中央処理装置（ＣＰＵ）７０も接続される。中央処理装置（ＣＰＵ）７０は、表示すべきグラフィックスデータの各フレーム用のグラフィックスプリミティブを生成するアプリケーション７５を実行するために用いられる。グラフィックスレンダリングプロセス時において生成された多様なデータを保存するためのシステムメモリ５５が設けられる。詳細には、システムメモリ５５は、グラフィックスプリミティブメモリ６６を含む。グラフィックスプリミティブメモリ６６は、ＣＰＵ７０上において実行するアプリケーション７５によって生成されるグラフィックスプリミティブを保存する。前記アプリケーション特定のフレーム用の１組のグラフィックスプリミティブが生成されると、通知がグラフィックス処理単位１０へと発行される。前記通知により、グラフィックス処理単位１０は、これらのグラフィックスプリミティブの処理を開始する。詳細には、変換回路１５は、グラフィックスプリミティブメモリ６６内に保存された１組のグラフィックスプリミティブを入力／出力インターフェース３５を介して受信し、前記３Ｄグラフィックスプリミティブを同等の２Ｄ表示に変換する頂点シェーディング動作を行う。この２Ｄ表示は、例えば前記グラフィックスデータの視認に用いられる視覚に基づいている。次に、これらのグラフィックスプリミティブの２Ｄ表示は、変換回路１５により、システムメモリ５５内の変換メモリ６４へと保存される。これが完了した後、グラフィックス処理単位１０は、ビニング動作を行うように構成される。
【００３１】
前記ビニング動作を行うために、制御回路２０は、モード制御信号送達経路４５をビニング／ラスタライゼーションエンジン２５および３０のうち少なくとも１つへと発行するように構成される。モード制御信号送達経路４５により、前記ビニング／ラスタライゼーションエンジンのうち少なくとも１つが第１の動作モードにされる。その後、前記選択されたビニング／ラスタライゼーションエンジン（単数または複数）は、変換メモリ６４から複数のグラフィックスプリミティブ（すなわち、２Ｄバージョン）を受信し、ビニングデータを生成するためのビニング動作を行うように、構成される。前記ビニングデータにより、前記フレームを構成する複数のタイルそれぞれについて、前記タイルと交差するグラフィックスプリミティブを特定するタイルリストが得られる。下記により詳細に説明するように、このプロセス時において、ビニング／ラスタライゼーションエンジン２５および３０と関連付けられたタイルメモリ２７および３２を用いて、前記ビニング動作時に生成されたビニングデータを保存する。前記ビニング動作が前記ビニング／ラスタライゼーションエンジン（単数または複数）によって行われた後、前記ビニングデータが前記タイルメモリからシステムメモリ５５のビンメモリ６２へと書き込まれる。
【００３２】
下記により詳細に説明するように、前記制御回路は、ビニング動作を行うためのビニング／ラスタライゼーションエンジンを１つだけ割り当てることもできるし、あるいは、ビニング動作を行うためのビニング／ラスタライゼーションエンジンを複数割り当てることもでき、これにより、前記フレームの異なる領域が異なるビニング／ラスタライゼーションエンジンに割り当てられ、各領域は、前記フレームの１つ以上のタイルを含む。２つよりも多くのビニング／ラスタライゼーションエンジン２５および３０を前記ビニングプロセスに割り当てることにより、前記ビニングプロセスの速度の大幅な向上が可能となり、これにより、前記グラフィックスシステムの全体的性能が向上する。
【００３３】
関連付けられたビニング／ラスタライゼーションエンジン２５および３０が第１の動作モードで動作している際に生成したビニング情報全てを保存するための十分なスペースをタイルメモリ２７および３２が持たない場合、前記ビニング／ラスタライゼーションエンジンを前記情報の異なる部分上において反復的に動作するように構成することができ、前記タイルメモリ内に保存された内容は、各反復終了時においてビンメモリ６２に書き込まれる。例えば、前記タイルメモリは複数のメモリブロックを含み得、各メモリブロックはｎビットを含む。第１の動作モードにおいて各メモリブロックはタイルと関連付けられ、これにより、ビニング動作をｎ個のグラフィックスプリミティブまで１回の反復行うことができる。しかし、前記複数のグラフィックスプリミティブがｎを超えた場合、前記関連付けられたビニング／ラスタライゼーションエンジンは、前記ビニング動作を反復的に行うように構成でき、各反復において、ｎ個のプリミティブまでの異なる組が考慮される。
【００３４】
同様に、第１の動作モードにおいて前記ビニング／ラスタライゼーションエンジンに割り当てられたタイル数がタイル内の画素数を超えた場合、これは、各タイルについて別個のメモリブロックを提供するための十分なメモリブロックをタイルメモリ２７が持っていないことを意味することが多い（典型的には、前記タイルメモリは、タイル中の各画素用のメモリブロックを含む）、そのため、ここでも、ビニング動作を行うように反復動作するように前記ビニング／ラスタライゼーションエンジンを構成することが可能であり、ここで、各反復時において前記フレームの異なる領域が考慮され、各領域は、タイル内の画素数を超えないタイル数を有する。
【００３５】
前記ビニング動作の完了後、よって、システムメモリ５５内のビンメモリ６２は、前記ビニング動作によって生成されたビニングデータ全てを含み、ビンメモリ６２内の累積ビニングデータから、各タイル用のタイルリストが得られる。各タイルリストは、対応するタイルと交差するグラフィックスプリミティブを特定する。ここで、プロセスは、ラスタライゼーション段階に進み得る。ラスタライゼーション段階において、前記制御回路は、ビニング／ラスタライゼーションエンジン２５および３０のうち１つ以上を第２の動作モードとするように構成され、ここで、特定のタイルがビニング／ラスタライゼーションエンジン２５に割り当てられ、その後、前記ビニング／ラスタライゼーションエンジンは、当該タイルについてラスタライゼーション動作を行う。詳細には、ビニング／ラスタライゼーションエンジン２５は、入力／出力インターフェース３５を介して、対応するタイルリストをビンメモリ６２から取り出し、前記タイルリストを用いて、前記割り当てられたタイル用のグラフィックスデータを生成するためのラスタライゼーション動作を行う。
【００３６】
前記ラスタライゼーション動作は、従来の様態で動作し、当業者によって理解されるように、多様なグラフィックスデータを生成する。例えば、このようなグラフィックスデータは典型的には、色データ（例えば、ＲＧＢ値）、透過性値Ａ、一定の深さ情報、一定のステンシル情報などを含む。この情報は、前記タイル内の各画素について生成され、前記情報は、前記タイルメモリの対応するメモリブロックに保存される。タイル全体の処理完了後、前記タイルメモリ内に保存されたグラフィックスデータが、入力／出力インターフェース３５を介してシステムメモリ５５のフレームバッファ６０の関連部分に書き込まれる。全タイルの処理後、フレームバッファ６０は、フレーム全体のグラフィックスデータを含む。その後、前記グラフィックスデータはディスプレイドライバ８０に経路設定され、接続された表示デバイス上に前記フレームを表示させる。
【００３７】
図２は、関連付けられたビニング／ラスタライゼーションエンジン２５および３０が第２の動作モードで動作している際（すなわち、ラスタライゼーション動作を行っている際）にビニング／ラスタライゼーションエンジン２５および３０がタイルメモリ２７および３２を用いる様態を示す模式図である。この場合、ビニング／ラスタライゼーションエンジン２５は、複数の画素１１０からなるタイル１００を処理する。図示の例において、前記タイルは、１６ｘ１６個の画素からなるアレイからなる。この例において、タイルメモリ１２０は典型的には、複数のメモリブロック１２５を含む。ここで、各メモリブロックは、前記画素のうちの１つと関連付けられる。そのため、この例において、タイルメモリ１２０は、２５６個のメモリブロックからなる（すなわち、前記タイル内の各画素につき、１つのメモリブロックがある）。各メモリブロックを用いて、ラスタライゼーション動作性能時において生成された関連付けられた画素の画素データを保存する。先述しまた図２に示すように、このような画素データは典型的には、ＲＧＢ値（または他のなんらかの色値の表示）、透過性値Ａ、および多様な他の画素データを含む。
【００３８】
図３は、前記ビニング／ラスタライゼーションエンジンが第１の動作モードにおいて動作している際（すなわち、前記ビニング／ラスタライゼーションエンジンがビニング動作を行っている際）に同一タイルメモリを用いる方法を示す模式図である。この例において、ビニング／ラスタライゼーションエンジン２５は、複数のタイル１４５からなるフレーム（またはフレーム領域）１４０を処理する。前記タイルメモリが２５６個のメモリブロックを有する図２の例において、前記フレームが有するタイルが２５６個以下である場合、前記タイルそれぞれを前記タイルメモリ中の別個のメモリブロックに割り当てることが可能であることが理解される。図３に示す例において、２５６個のタイルがあり、よって、図２のタイルあたりの画素数について、前記フレームは２５６×２５６個の画素の解像度を有するものと仮定する。先述したように、前記フレームがより高い解像度を有し（よって２５６個を超えるタイルを有する場合）、ビニング／ラスタライゼーションエンジン２５のうちの１つを反復的に動作するように構成することができる。各反復において、前記フレームの異なる領域が考慮され、あるいは、前記フレームの異なる領域を異なるビニング／ラスタライゼーションエンジンに割り当てることも可能である。
【００３９】
図３に示すように、タイルメモリ１２０の各メモリブロック１２５は特定のタイルに割り当てられ、前記メモリブロック内のｎビットはそれぞれ、異なるグラフィックスプリミティブと関連付けられる。よって、アプリケーション７５が特定のフレームについて生成したグラフィックスプリミティブの数がｎを超えない場合、前記グラフィックスプリミティブ全てを、ビニング／ラスタライゼーションエンジン２５内におけるビニング動作の１回の反復中に処理することができる。グラフィックスプリミティブ数がｎを超える場合、先述したように、前記ビニングプロセスの複数の反復を前記ビニング／ラスタライゼーションエンジン内において行うことができ、各反復において異なるｎ個のプリミティブが考慮される。
【００４０】
よって、図３に示すように、特定のタイルと関連付けられたメモリブロック内の各ビットがセットまたはクリアされて、前記関連付けられたグラフィックスプリミティブが前記タイルと交差しているものとして決定されたかを示す。図３に示す例において、各ビットは論理ゼロ値にクリアされ、論理１値にセットされたとと仮定される。このようにセットされた場合、これは、前記関連付けられたグラフィックスプリミティブが関連タイルと交差するものとして決定されたことを示す。よって、図３に示す例において、グラフィックスプリミティブ２および３は、タイル０と交差するものとして決定されている。
【００４１】
図４は、ビニング動作時においてタイルメモリ内の個々のビットを設定する方法をさらに示す。この例において、プリミティブ４は、フレーム１５０内に描かれた三角形１５７であり、この簡単な例において、例示を容易にするため、フレーム１５０は１６個のタイル１５５からなると仮定する。
【００４２】
タイルメモリ１６０内において、各メモリブロック１６５は、異なるタイルと関連付けられる。前記ビニング動作の適用後、前記メモリブロックそれぞれ内のビットはそれぞれセットまたはクリアされて、関連付けられたグラフィックスプリミティブが対応するタイルと交差しているかを示す。前記ビニング動作の終了時においてグラフィックスプリミティブ４に関連して保存された情報を図４に示す。詳細には、各メモリブロックの第４のビットは、グラフィックスプリミティブ４を示し、このビットは、タイル４〜１０と関連付けられたメモリブロック内においてセットされ、その他のメモリブロック全てにおいてクリアされることが分かる。
【００４３】
図５は、一実施形態による、図１のデータ処理システムの動作を示すフロー図である。ステップ２００において、処理すべきフレームをグラフィックス処理単位１０が有するか（すなわち、アプリケーション７５から特定のフレーム用の１組のグラフィックスプリミティブが生成されたか）について決定する。この決定後、プロセスはステップ２０５へと進み、変換回路１５によって提供された頂点シェーダーを用いて、前記グラフィックスプリミティブの必要な３Ｄ／２Ｄ変換を行う。その後、ステップ２１０において、ビニング／ラスタライゼーションエンジン２５および３０のうち少なくとも１つを制御して、第１の動作モードにおいて上記したビニング動作を行わせる。ステップ２１０において行われる動作について、図６および図７を参照してより詳細に説明する。
【００４４】
前記ビニング動作の完了後、ステップ２１５によって示すように、各タイルのタイルリストをビンメモリ６２内に保存する。先述したように、前記タイルメモリはフレーム全体のビニング情報を保存するのに十分である場合、ビニング動作の終了時において行われる１回の保存動作時において、前記タイルリスト情報を前記ビンメモリ内に保存することができる。しかし、前記タイルメモリの大きさが前記ビニング情報全てを保存するのには不十分である場合、必要なビニング動作を１つ以上のビニング／ラスタライゼーションエンジン内において反復的に行いかつ／または複数のビニング／ラスタライゼーションエンジンにわたって並行に行うことができ、このような場合、ビニング動作時においてビンメモリ６２を複数回更新することで、ビニング動作終了時において、前記ビンメモリの内容から各タイルのタイルリストを得ることが可能になる。
【００４５】
ステップ２１５の後、タイルリストがビニング／ラスタライゼーションエンジンに割り当てられる。前記ビニング／ラスタライゼーションエンジンは、制御回路２０によって制御されて、第２の動作モードで動作する（ステップ２２０を参照）。その後、ステップ２２５において、前記割り当てられたビニング／ラスタライゼーションエンジンは、前記タイル内の各画素用の画素データを生成するためのラスタライゼーション動作を行う。前記画素データは、前記ラスタライゼーション動作の終了時まで前記タイルメモリ内に保持される。その後、ステップ２３０において前記画素データはフレームバッファ６０へと出力される。その後、ステップ２３５において、全タイルが処理されたかが決定され、全タイルが処理されていない場合、次のタイルがステップ２４０において特定され、その後プロセスはステップ２２０へと戻る。ステップ２２０、２２５、２３０、２３５および２４０を順に示しているが、上記記載から、異なるタイルを異なるビニング／ラスタライゼーションエンジンに並列に割り当てることも可能であり、その場合、複数のタイルの並列処理が可能となることが理解される。しかし、一定の時点において、ステップ２３５において、全タイルが処理されたことが決定され、その後、プロセスはステップ２００へと戻って、次の処理対象フレームを待機する。
【００４６】
図６は、一実施形態による、図５のステップ２１０において行われるプロセスを示す。ステップ３００において、ビニングプロセスを行うために複数のビニング／ラスタライゼーションエンジンを割り当てるべきかを決定する。ビニングプロセスを行うために複数のビニング／ラスタライゼーションエンジンを割り当てるべきではない場合、プロセスはステップ３１５へと進み、前記ビニング／ラスタライゼーションエンジンは、ジオメトリ交差アルゴリズムを適用するように構成される。前記ジオメトリ交差アルゴリズムにおいては、前記フレーム内の各タイルについて、当該タイルと交差するグラフィックスプリミティブが決定される。先述したように、ビニング動作の複数の反復を必要に応じて用いることで、前記フレーム内の各タイルについてグラフィックスプリミティブ全てを確実に考慮することが可能になる。
【００４７】
複数のビニング／ラスタライゼーションエンジンをビニングのために割り当てルべきである場合、プロセスはステップ３０５へと進み、前記フレームの異なる領域が各割り当てられたエンジンに割り当てられる。代替的にまたは付加的に、考慮すべきプリミティブ数が前記タイルメモリの各メモリブロック内において利用可能な空間を超える場合、異なるプリミティブ群を異なるビニング／ラスタライゼーションエンジンに割り当てることができ、その場合、各ビニング／ラスタライゼーションエンジンは、同一のフレームまたはフレーム領域上において機能する。その後、各タイルメモリ中に保存された情報が前記ビンメモリに書き込まれる際、前記情報をマージすることができる。
【００４８】
ステップ３０５の後、ステップ３１０において各割り当てられたエンジン内においてジオメトリ交差アルゴリズムが適用される。前記ジオメトリ交差アルゴリズムにより、前記割り当てられた領域内の各タイルについて、当該タイルと交差するグラフィックスプリミティブが決定され、前記タイルメモリもその結果に応じて更新される。
【００４９】
図７は、一実施形態による、図６のステップ３１５において実施され得るステップをより詳細に示すフロー図である。詳細には、図７が特定している状況においては、単一のビニング／ラスタライゼーションエンジンが更新されている場合、ビニング動作の複数の反復を行うことが適切である。詳細には、ステップ３５０において単一のビニング／ラスタライゼーションエンジンがビニングのために割り当てられた場合、ステップ３５５において、グラフィックスプリミティブの数がｎ（すなわち、前記タイルメモリの各メモリブロック内のビット数）を超えているかが決定される。グラフィックスプリミティブの数がｎ（すなわち、前記タイルメモリの各メモリブロック内のビット数）を超えている場合、プロセスはステップ３６０へと進み、ビニング動作が反復的に行われ、各反復において異なるｎ個のプリミティブが考慮される。明らかなことではあるが、最終反復時において、ｎ個未満のプリミティブが考慮され得る。なぜならば、プリミティブの総数は複数個のｎではない場合があるからである。
【００５０】
ステップ３５５においてグラフィックスプリミティブの数がｎを超えないと決定された場合、プロセスはステップ３６５へと進み、ここで、前記フレーム内のタイル数がタイル内の画素数を超えるかが決定される。前記フレーム内のタイル数がタイル内の画素数を超える場合、プロセスはステップ３７０へと進み、ここで、ビニング動作が反復的に行われ、各反復において前記フレームの異なる領域が考慮される。ステップ３６５において前記フレーム内のタイル数がタイル内の画素数を超えないと決定された場合、ステップ３７５において単一の反復を行うことができる。
【００５１】
加えて、グラフィックスプリミティブ数がｎを超えかつフレーム内のタイル数がタイル内の画素数を超えた場合、特定のフレーム領域についてステップ３６０を行うことが必要となり得、その後別のフレーム領域へと移動し、全フレーム領域について全グラフィックスプリミティブが考慮されるまで、当該フレーム領域についてステップ３６０を再度行うことが理解される。実際、このような状況においては、ビニング動作速度の大幅な増加を可能にするために、ビニングプロセス時において複数のビニング／ラスタライゼーションエンジンを割り当てると有利である。
【００５２】
図８は、一実施形態による、ビニング／ラスタライゼーションエンジンの基本的構造を示す。詳細には、ビニング／ラスタライゼーションエンジン４００は、選択単位４１０を有する。選択単位４１０は、単位４０５のアレイから個々の単位を選択するように構成される。第１の動作モードにおいては、ビニング／ラスタライゼーションエンジン４００はビニング動作を行い、各単位は１つのタイルを含む。第２の動作モードにおいては、前記ビニング／ラスタライゼーションエンジンはラスタライゼーション動作を行い、各単位は、割り当てられたタイルの画素を含む。ラスタライゼーションエンジン内における処理対象となる画素の選択に適した選択単位は周知であり、このような任意の選択単位を用いて、組み合わされたビニング／ラスタライゼーションエンジン４００の選択単位４１０を具現化することができる。選択単位に関連する限り、行われている動作がビニング動作であろうとラスタライゼーション動作であろうと、基本的動作は同じであり、取り扱われている単位のみが異なる。
【００５３】
各単位が選択単位として選択されると、当該単位は処理対象として単位プロセッサ４１５へと送られる。詳細には、単位プロセッサ４１５は、前記選択された単位と関連付けられるべき出力データを計算する。第１の動作モードにおいてビニング動作が行われると、出力データは、前記複数のグラフィックスプリミティブのうち前記選択された単位と交差するものを示し、前記単位プロセッサは、前記選択された単位と交差するグラフィックスプリミティブを決定するためのジオメトリ交差アルゴリズム４２０を適用する。第２の動作モードにおいて、前記出力データから、前記選択された単位の画素データが得られる。このデータは、前記選択された単位が前記グラフィックスプリミティブと交差する様態に依存し、前記単位プロセッサは、一実施形態において、サンプルベースのシェーディングアルゴリズム４２５を適用して、画素データを決定する。
【００５４】
サンプルベースのシェーディングアルゴリズムは、ラスタライゼーションエンジンにおける用途において周知であり、このような周知のサンプルベースのシェーディングアルゴリズムのうちのいずれかをシェーディングアルゴリズム４２５として用いることが可能である。このようなサンプルベースのシェーディングアルゴリズムによれば、画素内の複数の離散サンプリング点を用いて、画素をプリミティブの一部として考慮すべきか否かが決定される。このようなサンプルベースのアルゴリズムも原則的にはビニング動作において利用可能であるが、このような離散サンプリング点を利用した場合、ビニング動作において特定の交差点が欠如する原因になる場合があり得る。なぜならば、ビニング動作において、プリミティブは、タイル内の任意の位置にあるタイルと交差し得るからである。よって、一実施形態において、ビニング／ラスタライゼーションエンジン４００によって行われるビニング動作時において、別個のジオメトリ交差アルゴリズム４２０が単位プロセッサによって用いられる。当業者が理解するであろう適切なジオメトリ交差アルゴリズムは複数存在するため、このようなアルゴリズムについては、本明細書中において詳述しない。
【００５５】
図３および図４用の先述の記載から明らかなように、ビニング動作によって生成されたタイルリストは０および１の列からなり、各ビットは、特定のプリミティブと関連付けられ、論理０値は、当該グラフィックスプリミティブが当該タイル内に無いことを示し、論理１値は、グラフィックスプリミティブが当該タイル内にあることを示す（論理０および論理１値の意味を交換してもよいことが理解される）。図９は、上記した最適化プロセスにおいてマージングエンジン５００を用いて、ラスタライゼーションエンジンによって用いられるベクトルファイルを生成する方法を示す。詳細には、ビンメモリ６２内に保存された上記したタイルリストに加えて、変換メモリ６４は、変換回路１５から出力された２Ｄグラフィックスプリミティブそれぞれ用のグラフィックスプリミティブ記述を含むことが理解される。マージングエンジン５００は、特定のタイル用のタイルリスト５０５と、前記グラフィックスプリミティブそれぞれ用のグラフィックスプリミティブ記述５１０とを受け取る。その後、この情報に基づいて、マージングエンジン５００は、ベクトルファイル５２０を生成する。ベクトルファイル５２０は、前記タイルと交差する各グラフィックスプリミティブ用の識別子５２５と、当該プリミティブ５３０用の関連付けられた記述とを含む。よって、図９に示す例において、グラフィックスプリミティブ２、３、６および７が前記タイルと交差しており、ベクトルファイル５２０が図９の右上側に図示されていることが分かる。その後、第２の動作モードにおいて対応するタイルを処理するために割り当てられたビニング／ラスタライゼーションエンジン２５および３０によってこのベクトルファイルが用いられる。
【００５６】
前記マージングエンジンは、多様な様態で構築可能であるが、一実施形態において、シェーディングエンジンによって形成される。一実施形態において、前記マージングエンジンは、ラスタライゼーションプロセスの一部として必要とされるシェーディング動作を行うための割り当てられたビニング／ラスタライゼーションエンジン内に既に設けられたシェーディングエンジンであり得る。
【００５７】
一実施形態のグラフィックスシステムは、適切なハードウェアによって（例えば、図１に示すような専用グラフィックス処理単位１０によって）提供することが可能であるが、別の実施形態において、前記グラフィックスシステムは、汎用プロセッサ上において実行するソフトウェアによって具現化してもよい。例えば、図１０は、一実施形態において利用可能な汎用コンピュータ６００の模式図である。汎用コンピュータ６００は、中央処理装置６０２と、ランダムアクセスメモリ（ＲＡＭ）６０４と、リードオンリーメモリ（ＲＯＭ）６０６と、ネットワークインターフェースカード６０８と、ハードディスクドライブ６１０と、ディスプレイドライバ６１２およびモニタ６１４と、ユーザ入力／出力回路６１６とを含む。ユーザ入力／出力回路６１６は、キーボード６１８およびマウス６２０を備える。キーボード６１８およびマウス６２０は全て、共通バス６２２を介して接続される。動作時において、中央処理装置６０２は、コンピュータプログラム命令を実行する。前記コンピュータプログラム命令は、ランダムアクセスメモリ６０４、リードオンリーメモリ６０６およびハードディスクドライブ６１０のうちの１つ以上に保存してもよいし、あるいは、ネットワークインターフェースカード６０８を介して動的にダウンロードしてもよい。実行された処理の結果は、ディスプレイドライバ６１２およびモニタ６１４を介してユーザに表示され得る。汎用コンピュータ６００の動作を制御するためのユーザ入力は、キーボード６１８またはマウス６２０からユーザ入力／出力回路６１６を介して受信され得る。前記コンピュータプログラムは、多様な異なるコンピュータ言語で書き込み可能であることが理解される。前記コンピュータプログラムは、記録媒体上に保存および分配してもよいし、あるいは、汎用コンピュータ６００に動的にダウンロードしてもよい。
【００５８】
適切なコンピュータプログラムの制御下において動作する際、汎用コンピュータ６００は、上記したグラフィックス処理技術を行うことができ、これらの技術を行う装置を形成するものとしてみなすことができる。詳細には、ビニング動作を行うためのジオメトリ交差アルゴリズムを実行する１つの動作モード前記ソフトウェアルーチンにおいて、市販のソフトウェアルーチンをビニング／ラスタライゼーションエンジンの機能を実行するために用いることができ、別の動作モードにおいて、ソフトウェアルーチンが、ラスタライゼーション動作を行うためのサンプルベースのシェーディングアルゴリズムを行う。これにより、グラフィックスシステムの一部として完全に別個のビニングインプレメンテーションを設ける必要性が回避され、グラフィックスレンダリングプロセスの実行における効率が向上する。
【００５９】
上記の実施形態の記載から、このような実施形態により、ビニングおよびラスタライゼーション双方を行うために組み合わされたインプレメンテーションを用いることにより、グラフィックスシステム内に専用ビニングインプレメンテーションを設ける必要性が回避できることが理解される。１つの特定の実施形態において、既存のラスタライゼーションインプレメンテーションが、ビニングを支援した後、ビニング動作を行う第１の動作モードまたはラスタライゼーションを行う第２の動作モードのいずれかで動作できるように、改変される。その結果、エネルギー消費の低減および性能向上により、グラフィックスシステムの動作全体を大幅に向上させることが可能になる。ハードウェアインプレメンテーションにおいても、グラフィックスハードウェアのサイズ低減が可能となり、これにより、コスト低減も可能となる。
【００６０】
本明細書中、特定の実施形態について述べてきたが、本発明はこれに限定されず、本発明の範囲内において多くの改変および付加が可能であることが理解される。例えば、本発明の範囲から逸脱することなく、以下の従属請求項の特徴と、独立請求項の特徴との多様な組み合わせが可能である。
【図１】
0005956770.tif 000002
【図２】
0005956770.tif 000003
【図３】
0005956770.tif 000004
【図４】
0005956770.tif 000005
【図５】
0005956770.tif 000006
【図６】
0005956770.tif 000007
【図７】
0005956770.tif 000008
【図８】
0005956770.tif 000009
【図９】
0005956770.tif 000010
【図１０】
0005956770.tif 000011