(57)【特許請求の範囲】
【請求項１】
複数のブロックに分割されたフレームバッファに描画される複数のポリゴンの頂点データに基づいて描画パラメータを生成しポリゴンパラメータバッファに書き込むポリゴンパラメータバッファ生成部と、
前記ブロックと同じサイズの複数のチャンクバッファと、
処理対象の前記ポリゴンが位置する前記ブロックを複数の前記チャンクバッファに順次割り当てる処理を、割り当てられた前記チャンクバッファの数がＭ（Ｍ≧２）個に達するか、前記ポリゴンの数がＮ（Ｎ≧２）個に達するまで繰り返し行うチャンク割り当て部と、
前記複数のチャンクバッファに割り当てられたブロック内に位置するポリゴンの画素データを生成し前記複数のチャンクバッファに書き込むチャンク生成部と、
前記複数のチャンクバッファに書き込まれた前記画素データを前記フレームバッファに書き出すチャンク書き出し部とを有し、
前記ポリゴンパラメータバッファ生成部による描画パラメータの生成と書き込み処理と、前記チャンク割り当て部によるチャンクバッファ割り当て処理と、前記チャンク生成部による画素データの生成と書き込み処理と、前記チャンク書き出し部によるフレームバッファへの画素データの書き出し処理とを有する処理フェーズを、前記複数のポリゴンについて繰り返し実行することを特徴とするグラフィック処理装置。
【請求項２】
請求項１において、
前記チャンク生成部は、前記処理フェーズ毎に、前記複数のチャンクバッファに割り当てられたブロックの画素データを前記フレームバッファから読み出して前記複数のチャンクバッファに書き込み、前記読み出した画素データが書き込まれた前記複数のチャンクバッファに、前記生成した画素データを書き込むことを特徴とするグラフィック処理装置。
【請求項３】
請求項１において、
前記ポリゴンパラメータバッファ生成部は、第１の処理フェーズにおいて、前記ポリゴンパラメータバッファに書き込んだ前記ポリゴンの描画パラメータのうち、前記画素データの生成が完了していないポリゴンの描画パラメータを、第１の処理フェーズに続く第２の処理フェーズにおいて前記ポリゴンパラメータバッファに残存させ、当該描画パラメータを残存させたポリゴンとあわせて前記ポリゴンの描画パラメータを生成し前記ポリゴンパラメータバッファに書き込むことを特徴とするグラフィック処理装置。
【請求項４】
請求項１または３において、
前記画素データはさらに奥行きを示す深度値を有し、
前記チャンク生成部は、前記生成した画素データの前記深度値が、前記フレームバッファから読み出した画素データの対応する画素の深度値よりも小さい場合に、当該生成した画素データを前記チャンクバッファに書き込むことを特徴とするグラフィック処理装置。
【請求項５】
請求項３において、
前記チャンク割り当て部は、前記第１のフェーズにおいて、前記画素データの生成が完了していないポリゴンについて、当該生成が完了していない画素を示す座標情報を前記ポリゴンパラメータバッファに書き込み、
前記チャンク割り当て部は、前記第２のフェーズにおいて、前記画素データの生成が完了していないポリゴンについて、前記ポリゴンパラメータバッファ内の前記座標情報の示す前記画素が位置する前記ブロックを前記チャンクバッファに割り当てることを特徴とするグラフィック処理装置。
【請求項６】
請求項１または２において、
前記複数のチャンクバッファは、前記フレームバッファよりもアクセス速度が速いことを特徴とするグラフィック処理装置。
【請求項７】
請求項１において、
前記ポリゴンパラメータバッファは、前記フレームバッファよりもアクセス速度が速いことを特徴とするグラフィック処理装置。
【請求項８】
複数のブロックに分割されたフレームバッファに描画される複数のポリゴンの頂点データに基づいて描画パラメータを生成しポリゴンパラメータバッファに書き込むポリゴンパラメータバッファ生成工程と、
処理対象の前記ポリゴンが位置する前記ブロックを前記ブロックと同じサイズの複数のチャンクバッファに順次割り当てる処理を、割り当てられた前記チャンクバッファの数がＭ（Ｍ≧２）個に達するか、前記ポリゴンの数がＮ（Ｎ≧２）個に達するまで繰り返し行うチャンク割り当て工程と、
前記複数のチャンクバッファに割り当てられたブロック内に位置するポリゴンの画素データを生成し前記複数のチャンクバッファに書き込むチャンク生成工程と、
前記複数のチャンクバッファに書き込まれた前記画素データを前記フレームバッファに書き出すチャンク書き出し工程と、
を前記複数のポリゴンについて繰り返しコンピュータに実行させることを特徴とするコンピュータ読み取り可能なグラフィック処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィック処理装置、及び、グラフィック処理プログラムに関する。
【背景技術】
【０００２】
３次元グラフィクスにおいて、グラフィクス・エンジンは、立体オブジェクトを示す３次元データに基づいて、立体オブジェクトを所定の視点から見た場合の２次元画像を生成し、当該２次元画像の画素毎データをメモリに書き込むことにより２次元の画像データを生成する。そして、メモリに格納された画像データは、ディスプレイ・エンジンによって読み出されディスプレイ装置に表示される。
【０００３】
上記のような画像処理装置において、一般的に、画像データを書き込むメモリにはＤＲＡＭが用いられる。ＤＲＡＭは、連続するアドレスのメモリアクセスは高速だが、不連続なアドレスのメモリアクセスは低速であるという特徴を有する。具体的に、ＤＲＡＭにはページと呼ばれる処理単位が存在し、同一ページ内（連続するアドレス）へのアクセスは高速であり、異なるページ（不連続なアドレス）に対してアクセスする場合、ページミスと呼ばれる処理が発生する。ページミスが発生すると、ＤＲＡＭコントローラは、新たにワード線を立ち上げてメモリセルからデータを読み出す必要があり、この間、ＤＲＡＭへの新たな読み出しを行うことができない。
【０００４】
しかし、立体オブジェクトは、一般的に小さい直線や三角形の集合体として描画されるため、ＤＲＡＭに描画するときに不連続なメモリアクセスが大量に発生し、メモリアクセス効率が大きく低下する。
【０００５】
そこで、タイリングアーキテクチャと呼ばれる方法が知られている。タイリングアーキテクチャによると、画像処理装置は、描画空間を所定のサイズ（例えば、８×８ピクセル）に分割したタイル毎に、タイル内に画素を有する全ての図形の描画処理をＳＲＡＭ等の内部メモリに対して行い、内部メモリに生成した画像データを外部メモリに書き出す（特許文献１）。画像データがタイル単位に外部メモリに書き出されることにより、ＤＲＡＭに対して連続したアクセスが行われ、アクセス効率が良くなる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００２−５２９８６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、タイリングアーキテクチャによると、グラフィクス・エンジンは、タイル毎に、描画対象の全てのポリゴンについて、ポリゴンの頂点パラメータ（座標、深度、パラメータ値等）に基づいて、ポリゴンの各辺、及びスパンの増分値を有する描画パラメータを生成し、全てポリゴンのうちタイル内に画素を有するポリゴンを判定する。従って、タイル毎に、全ポリゴンの描画パラメータの生成処理が発生し、処理量が増大していた。
【０００８】
そこで、予め、描画対象の全てのポリゴンについて描画パラメータを生成して外部メモリへ書き出しておき、タイルの描画処理を行う時に、外部メモリから描画パラメータを読み出してタイル内に画素を有するポリゴンを判定する方法が考えられる。しかし、この方法によると、グラフィクス・エンジンは、描画パラメータの読み書き処理の都度、外部メモリへのアクセスを要することになる。
【０００９】
そこで、本発明では、外部メモリへのアクセス量を抑えつつ、処理量を最小限にしたグラフィック処理装置、及びグラフィック処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の側面は、複数のブロックに分割されたフレームバッファに描画される複数のポリゴンのうち、Ｎ個を上限とするポリゴンが位置する前記ブロックを、Ｍ個を上限とするチャンクバッファに割り当てるチャンク割り当て部と、
前記Ｎ個のポリゴンのうち前記チャンクバッファに割り当てられたブロック内に位置するポリゴンの画素データを生成し前記チャンクバッファに書き込むチャンク生成部と、
前記チャンクバッファに書き込まれた前記画素データを前記フレームバッファに書き出すチャンク書き出し部とを有し、
前記チャンク割り当て部によるチャンクバッファ割り当て処理と、前記チャンク生成部による画素データの生成と書き込み処理と、前記チャンク書き出し部によるフレームバッファへの画素データの書き出し処理とを有する処理フェーズを、前記複数のポリゴンについて繰り返し実行する。
【発明の効果】
【００１１】
第１の側面によれば、外部メモリへのアクセス量を抑えつつ、処理量を最小限にすることができる。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態例におけるグラフィック処理装置を表す図である。
【図２】本実施の形態例におけるグラフィクス・エンジンの構成の一例を示す図である。
【図３】ジオメトリ処理部が生成するポリゴンの頂点パラメータの一例を示す図である。
【図４】描画パラメータの一例を示す図である。
【図５】ポリゴンパラメータバッファの一例を表す図である。
【図６】チャンクディサイダー部の構成の一例を表す図である。
【図７】グラフィクス・エンジンの各メモリに格納される情報を表す図である。
【図８】グラフィクス・エンジンの描画処理の詳細を説明するフローチャート図である。
【図９】描画対象のポリゴン群の一例を表す図である。
【図１０】第１フェーズの描画処理の割り当て処理を説明する図である。
【図１１】ポリゴンパラメータ指示バッファＩＢ１の一例を表す図である。
【図１２】ポリゴンパラメータ指示バッファＩＢ３の一例を表す図である。
【図１３】第２、３フェーズのポリゴンパラメータバッファの一例を表す図である。
【図１４】第２フェーズの描画処理の割り当て処理を説明する図である。
【図１５】第２フェーズの描画処理におけるポリゴンパラメータ指示バッファＩＢ１の一例を表す図である。
【発明を実施するための形態】
【００１３】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１４】
本実施の形態例におけるグラフィック処理装置は、複数のブロックに分割されたフレームバッファに描画される複数のポリゴンのうちＮ個を上限とするポリゴンが位置するブロックを、Ｍ個を上限とするチャンクバッファに割り当てる。そして、グラフィック処理装置は、Ｎ個のポリゴンのうちチャンクバッファに割り当てられたブロック内に位置するポリゴンの画素データを生成してチャンクバッファに書き込み、当該チャンクバッファ内に書き込まれた画素データをフレームバッファに書き出す。グラフィック処理装置は、これらの処理を描画対象の複数のポリゴンに対して繰り返す。
【００１５】
これにより、Ｎ個を上限とするポリゴンの画素データがＭ個を上限とするブロックに対応付けられたチャンクバッファに、外部メモリにアクセスすることなく生成される。また、生成された画素データがチャンクバッファ単位にフレームバッファに書き出されることによって、フレームバッファに対して連続したアドレスのアクセスが行われる。
【００１６】
図１は、本実施の形態例におけるグラフィック処理装置の構成の一例を示す図である。同図において、グラフィック処理装置は、グラフィクス・コントローラ１０、ＤＲＡＭ１１、ディスプレイ装置１２、ＣＰＵ１３、アプリケーションプログラム１４を有する。そして、グラフィクス・コントローラ１０は、メモリコントローラ１５、本実施の形態例におけるグラフィクス処理装置を表すグラフィクス・エンジン１６、及びディスプレイ表示装置であるディスプレイ・エンジン１７を有する。本実施の形態例におけるフレームバッファは、ＤＲＡＭで構成されている。
【００１７】
図１において、アプリケーションからグラフィクス・エンジン１６に対して、複数のポリゴンから構成される立体オブジェクトの３次元データと描画コマンドが渡される。グラフィクス・エンジン１６は、３次元データに基づいて、立体オブジェクトを所定の視点から見たときに見えるべき２次元画像の画素データを生成し、メモリコントローラ１５を介してＤＲＡＭ１１に書き込む。そして、ディスプレイ・エンジン１７がメモリコントローラ１５を介してＤＲＡＭ１１から描画データを読み出し、ディスプレイ装置１２の表示画面に表示する。
【００１８】
図２は、グラフィクス・エンジン１６の構成の一例を示す図である。グラフィクス・エンジン１６は、ジオメトリ処理部２０とラスタ処理部３０とを有する。
【００１９】
一般に立体オブジェクトは、多数のポリゴンの集合体として表現される。また、一般的に、ポリゴンには三角形が用いられる。ジオメトリ処理部２０は、描画コマンドを解釈し、３次元データをバーテックスシェーダ部２１に渡して、ユーザープログラムに従って任意の加工処理を実行させ、表示画面上の２次元座標であるポリゴン頂点パラメータを生成する。生成された頂点パラメータは、ラスタ処理部３０に渡される。
【００２０】
図３は、ジオメトリ処理部２０が生成するポリゴンの頂点パラメータの一例を示す図である。ポリゴンＰＧの頂点パラメータは、表示画面ＤＩＳ上の各頂点ＰＫ１〜３の座標（ｘ１，ｙ１）、（ｘ２，ｙ２）、（ｘ３，ｙ３）とそれぞれの頂点座標における画像パラメータであるＲＧＢ各色の階調値（以下、色）ｐ１〜ｐ３、奥行き方向の距離（以下、深度）ｚ１〜ｚ３を有する。同図の例では、画像パラメータとして色と深度を例示しているが、画像パラメータは、さらに、テクスチャ表示のためのテクスチャ座標値、アルファブレンディングのためのアルファ値等を含んでいてもよい。
【００２１】
図２に戻り、ラスタ処理部３０は、ポリゴンの頂点パラメータで画定されるポリゴン領域内の各画素について、頂点パラメータに基づいて画素データを生成する。本実施の形態例のラスタ処理部３０は、フレームバッファを例えば「８×８ピクセル」サイズに分割したブロック毎に、Ｘ、Ｙ方向に走査してブロックに位置するポリゴンの各画素の画素データを生成する。
【００２２】
ラスタ処理部３０は、ポリゴンセットアップ部３１、ポリゴンパラメータバッファＰＢ、ポリゴンカウンター部３３、チャンクディサイダー部３４、ＲＰＯ（Rasterizer and Pixel Operator）部３６、フラグメントシェーダ部３５、チャンクバッファ・コントローラ３７、チャンクバッファＣＢ、メモリアクセスＩ／Ｆ３９、ポリゴンパラメータ指示バッファＩＢを有する。
【００２３】
ポリゴンセットアップ部３１は、ジオメトリ処理部２０からポリゴンの頂点パラメータを順次受け取り、頂点パラメータに基づいて描画パラメータを生成する。描画パラメータとは、ポリゴンの各辺に沿ったＸ座標と各画像パラメータの傾き（増分値）、及び、各スパンに沿った画像パラメータの増分値である。
【００２４】
図４は、描画パラメータの一例を示す図である。同図において、辺４１〜４３はポリゴンＰＧの各辺であり、横線４６はポリゴンＰＧのスパンの一例を表す。スパン４６とは、ポリゴンＰＧの左端４４と右端４５間のラスタ走査方向（Ｘ方向）に沿った画素一列である。ポリゴンセットアップ部３１は、ポリゴンＰＧの各辺４１〜４３に沿ったＸ座標の増分値（ｄＸｄｙ、ｄＸＬｄｙ、ｄＸＵｄｙ）、画像パラメータである色の増分値（ｄＰｄｙ、ｄＰＬｄｙ、ｄＰＵｄｙ）、深度の増分値（dＺｄｙ、ｄＺＬｄｙ、ｄＺＵｄｙ）、及び、各スパン４６に沿った各画像パラメータの増分値（ｄＰｄｘ、ｄＺｄｘ）を、描画パラメータとして算出する。
【００２５】
そして、ポリゴンセットアップ部３１は、ポリゴンの頂点パラメータと生成した描画パラメータを、Ｎ個を上限としてポリゴンパラメータバッファＰＢに順次格納する。本実施の形態例において、ポリゴンパラメータバッファＰＢに格納するポリゴン数の上限数ＮはＮ＝４とする。
【００２６】
図５は、ポリゴンパラメータバッファＰＢの一例を表す図である。同図のように、最大で４個のポリゴンのパラメータが格納される。なお、パラメータは、例えば「１〜４」のようなエントリー番号に関連付けて格納される。また、各エントリーは、ポリゴンのパラメータに加え、当該ポリゴンの画素データの生成が完了したか否かを表すフラグを有する。なお、初めは、画素データの生成が未完了であるため、フラグ「未完了」が書き込まれる。
【００２７】
図２に戻り、ポリゴンカウンター部３３は、ポリゴンパラメータバッファＰＢ内にパラメータが格納されたポリゴンの数をカウントし、４個に達した場合にチャンクディサイダー部３４を起動する。チャンクディサイダー部３４は、４個のポリゴンが位置するフレームバッファ上のブロックを、Ｍ個を上限とするチャンクバッファＣＢに割り当てる。チャンクバッファＣＢは、例えば高速アクセス可能なＳＲＡＭで構成され、Ｍ個を上限とするブロックと同サイズのバッファであり、画素毎に画素データが書き込まれる。画素データは、例えば、ＲＧＢ各色の階調値、深度を表すＺ値等を有する。本実施の形態例において、チャンクバッファ数の上限数Ｍは、Ｍ＝８とする。
【００２８】
図６は、チャンクディサイダー部３４の構成の一例を表す図である。チャンクディサイダー部３４は、チャンクポジションコンパレータ６１、チャンクアサイナー６２、チャンクバッファ・コントローラＩ／Ｆ６３を有する。各部の処理の詳細については、フローチャート図にて後述する。
【００２９】
図２に戻り、ＲＰＯ部３６は、チャンクバッファＣＢを割り当てた各ブロックについて、ポリゴンパラメータ指示バッファＩＢ内のエントリー番号の生成処理を行う。ポリゴンパラメータ指示バッファＩＢは、例えば高速アクセス可能なＳＲＡＭで構成され、Ｍ個を上限とするブロックの画素数分のエントリー番号を格納可能なバッファであり、その画素毎に当該画素に描画されるポリゴンのポリゴンパラメータバッファＰＢにおけるエントリー番号（本実施の形態例では、１〜４）が格納される。従って、ポリゴンが重なる画素については、最も手前に描画されるポリゴンのエントリー番号が格納される。
【００３０】
そして、ＲＰＯ部３６は、ポリゴンパラメータ指示バッファＩＢを参照して、チャンクバッファＣＢに割り当てられたブロックに位置するポリゴンの各画素の画素データを生成する。また、ＲＰＯ部３６は、隣接する４画素（クアッド）を一単位としてフラグメントシェーダ部３５に渡して、ユーザープログラムに従って画素データの任意の加工処理を実行させる。そして、ＲＰＯ部３６は、生成された画素データをチャンクバッファＣＢに書き込む。
【００３１】
チャンクバッファ・コントローラ３７は、画素データが書き込まれたチャンクバッファＣＢを、メモリアクセスＩ／Ｆ３９を介して、ＤＲＡＭ等の外部メモリ内のフレームバッファ１１に書き込む。
【００３２】
図７は、図１のグラフィクス・エンジン１６の各メモリに格納される情報を表す図である。同図のように、グラフィクス・エンジン１６は、ＤＲＡＭ等の外部メモリ７５（図１のＤＲＡＭ１１）と、外部メモリよりアクセスが高速なＳＲＡＭ等の内部メモリ７１とを有する。そして、内部メモリ７１は、４個（Ｎ個）を上限とするポリゴンのパラメータを格納したポリゴンパラメータバッファＰＢと、８個（Ｍ個）を上限とするチャンクバッファＣＢ（ＣＢ１〜８）及びポリゴンパラメータ指示バッファＩＢ（ＩＢ１〜８）とを有する。さらに、内部メモリ７１には、各チャンクバッファＣＢがフレームバッファ７６におけるいずれのブロック（ＣＰ００〜）に対応するかを示すチャンク割り当て情報７２を有する。即ち、チャンク割り当て情報７２には、チャンクバッファの番号「ＣＢ１〜８」とフレームバッファ７６内のブロック番号「ＣＰ００〜」との対応情報が格納される。
【００３３】
また、前述したとおり、チャンクバッファＣＢの各画素７３はＲＧＢ各色の階調値、Ｚ値等の画素データを有し、ポリゴンパラメータ指示バッファＩＢの各画素７４は、描画されるポリゴンのポリゴンパラメータバッファＰＢにおけるエントリー番号を有する。
【００３４】
一方、外部メモリ７５は、本実施の形態例におけるグラフィクス・エンジン１６によって生成される画素データを格納するフレームバッファ７６を有する。本実施の形態例におけるフレームバッファ７６は、例えば、８×８ピクセルのブロック（ＣＰ００〜）に分割され、各ブロックの各画素７７は、チャンクバッファＣＢと同様に、ＲＧＢ各色の階調値、Ｚ値等を有する。なお、描画処理前のフレームバッファ７６には、デフォルトの画素データが格納される。
【００３５】
図８は、本実施の形態例におけるグラフィクス・エンジン１６の描画処理の詳細を説明するフローチャート図である。まず、図２のポリゴンセットアップ部３１は、ポリゴンのセットアップ処理として、ジオメトリ処理部２０からポリゴンの頂点パラメータを順次受け取り、ポリゴンの描画パラメータを生成する（Ｓ１１）。そして、ポリゴンセットアップ部３１は、生成した描画パラメータと頂点パラメータとをポリゴンパラメータバッファＰＢに格納する（Ｓ１２）。ポリゴンセットアップ部３１は、ポリゴンパラメータバッファＰＢに、４個（Ｎ個）のポリゴンのパラメータが格納されるまで、または、フレームバッファに描画される全ポリゴンのパラメータの格納が完了するまで（Ｓ１３のＹＥＳ）、処理Ｓ１１、Ｓ１２を行う。
【００３６】
Ｓ１３がＹＥＳの場合、チャンクディサイダー部３４は、ポリゴンパラメータバッファＰＢからポリゴンのパラメータを順に読み出す（Ｓ１４）。続いて、図６に示すチャンクディサイダー部３４内のチャンクポジションコンパレータ６１は、読み出したポリゴンの画素の座標を含むブロックが、チャンクバッファＣＢに割り当て済みか否かを判定する（Ｓ１５）。具体的には、チャンクポジションコンパレータ６１は、まず、チャンクバッファ・コントローラ３７からチャンクバッファＣＢに割り当て済みのブロックの座標情報を取得し、ポリゴンの座標が当該ブロック内の座標領域に含まれているか否かを判定する。
【００３７】
Ｓ１５がＮＯなら、続いて、チャンクポジションコンパレータ６１は、空きのチャンクバッファがある場合（Ｓ１６のＹＥＳ）、ポリゴンの画素の座標を含むブロックのチャンクバッファＣＢへ割り当てをチャンクアサイナー６２に指示する（Ｓ１７）。具体的には、チャンクアサイナー６２は、割り当て対象のブロックの座標情報を、チャンクバッファの割り当て要求と共に、チャンクバッファ・コントローラ３７（図２）に送る。そして、チャンクバッファ・コントローラ３７は、割り当て済みのチャンクバッファＣＢが８個に達していない場合、空きのチャンクバッファＣＢがあると判定し、対象ブロックをチャンクバッファＣＢに割り当てると共に、チャンクバッファの番号（以下、チャンク番号ＣＢ１〜８）をチャンクアサイナー６２に通知する。また、ブロックの座標情報とチャンク番号との対応情報が割り当て情報７２（図７）として記録される。
【００３８】
そして、チャンクポジションコンパレータ６１（図６）は、チャンク番号とポリゴンのパラメータとをＲＰＯ部３６（図２）に渡し、ＲＰＯ部３６は、それらの情報に基づいて、チャンクバッファＣＢに割り当てられたブロックについてポリゴンパラメータ指示バッファＩＢのエントリー番号を生成する（Ｓ１８）。ＲＰＯ部３６は、具体的に、次のようにポリゴン指示バッファＩＢのエントリー番号を生成する。
【００３９】
まず、新たにブロックがチャンクバッファＣＢに割り当てられた場合、ＲＰＯ部３６は、チャンク番号に対応するブロックの画素データをフレームバッファから読み出して対応するチャンクバッファＣＢに書き込む。そして、ＲＰＯ部３６は、ポリゴンのパラメータに基づいて、チャンクバッファＣＢに割り当てられたブロック内のポリゴンの各画素のＺ値を生成する。具体的に、例えば、ＲＰＯ部３６は、ポリゴンの左辺上（図４の４１）の各画素について、ポリゴンの最上部の頂点（図４のＰＫ１）のＺ値（頂点パラメータ）に左辺４１のＺ値の増分値（描画パラメータ）を順次加算していくことにより、左辺４１上の各画素のＺ値を求める。そして、ＲＰＯ部３６は、各スパン（図４の４６）について、左端画素（図４の４４）のＺ値に各スパンのＺ値の増分値を順次加算していくことにより、スパン上の各画素のＺ値を取得する。
【００４０】
そして、ＲＰＯ部３６は、ブロック内のポリゴンの各画素のＺ値と、チャンクバッファＣＢの対応する画素のＺ値とを比較して深度テストを行う。具体的に、ＲＰＯ部３６は、ポリゴンのＺ値がチャンクバッファＣＢのＺ値よりも小さい場合、そのポリゴンが手前に描画されるため、ポリゴンパラメータ指示バッファＩＢの対応する画素に当該ポリゴンのポリゴンパラメータバッファＰＢにおけるエントリー番号を書き込む。このようにして、ＲＰＯ部３６は、画素毎に描画されるポリゴンのエントリー番号を生成し、ポリゴンパラメータ指示バッファＩＢに格納する。
【００４１】
続いて、ポリゴンパラメータ指示バッファＩＢのエントリー番号の生成後（Ｓ１８）、チャンクディサイダー部３４は、読み出したポリゴンの全画素について、当該画素を含むブロックをチャンクバッファＣＢに割り当てる処理（以下、チャンク割り当て処理）を完了したか否かを判定する（Ｓ１９）。ポリゴンの全画素について割り当て処理を完了していない場合（Ｓ１９のＮＯ）、Ｓ１５に戻り、チャンクディサイダー部３４は、ポリゴンの画素であって、チャンクバッファＣＢに割り当て済みのブロックの外にある画素について、チャンク割り当て処理を行う（Ｓ１５〜Ｓ１９）。
【００４２】
一方、読み出したポリゴンの全画素についてチャンク割り当て処理を完了した場合（Ｓ１９のＹＥＳ）、チャンクディサイダー部３４は、読み出したポリゴンのポリゴンパラメータバッファＰＢ内のフラグ（図５参照）を「未完了」から「完了」に書き換えると共に、ポリゴンパラメータバッファＰＢ内の全ポリゴンについてチャンク割り当て処理を一通り実施したか否かを判定する（Ｓ２０）。割り当て処理を実施していないポリゴンがある場合（Ｓ２０のＮＯ）、チャンクディサイダー部３４は、ポリゴンパラメータバッファＰＢから次のポリゴンのパラメータを読み出す（Ｓ１４）。そして、同様に、次のポリゴンについてチャンク割り当て処理を行う（Ｓ１５〜Ｓ１９）。
【００４３】
一方、Ｓ１５において、ポリゴンの画素の座標を含むブロックが既にチャンクバッファＣＢに割り当て済みの場合（Ｓ１５のＹＥＳ）、そのチャンク番号とポリゴンのパラメータがチャンクポジションコンパレータ６１からＲＰＯ部３６に渡され、ＲＰＯ部３５は、当該情報に基づいて、既に生成されているポリゴンパラメータ指示バッファＩＢ内のエントリー番号を更新する（Ｓ１８）。具体的に、ＲＰＯ部３６は、ブロック内のポリゴンの各画素のＺ値を算出し、当該Ｚ値がチャンクバッファＣＢの対応する画素のＺ値よりも小さい場合に、ポリゴンパラメータ指示バッファＩＢの対応する画素に当該ポリゴンのエントリー番号を上書きする。
【００４４】
他方、ポリゴンの画素の座標を含むブロックがチャンクバッファに未割り当てであり（Ｓ１５のＮＯ）、空きのチャンクバッファがない場合（Ｓ１６のＮＯ）、ポリゴンの全画素についてのチャンク割り当て処理を完了していない場合であっても、そのポリゴンのチャンク割り当て処理を終了する。そして、チャンクディサイダー部３４は、ポリゴンパラメータバッファＰＢ内の全ポリゴンのチャンク割り当て処理を実施したか否かを判定し（Ｓ２０）、実施していない場合は（Ｓ２０のＮＯ）次のポリゴンのパラメータを読み出し（Ｓ１４）、実施した場合は（Ｓ２０のＹＥＳ）チャンクバッファＣＢの画素データの生成処理をＲＰＯ部３６に指示する。
【００４５】
ポリゴンパラメータバッファＰＢ内の４個の全ポリゴンについてチャンク割り当て処理を実施した結果（Ｓ２０のＹＥＳ）、全ポリゴンの全画素にチャンクバッファＣＢが割り当てられる場合もあれば、ポリゴン内の一部の画素にチャンクバッファＣＢが割り当てられない場合、一部のポリゴン自体にチャンクバッファがひとつも割り当てられない場合もある。これは、チャンクバッファＣＢの容量が８個のブロック分に制限されていることに因る。逆に、全ポリゴンの全画素にチャンクバッファが割り当てられているが、一部のチャンクバッファが未割り当て状態となる場合もある。
【００４６】
そして、ＲＰＯ部３６は、チャンクバッファ毎に生成されたポリゴンパラメータ指示バッファＩＢを参照して、チャンクバッファＣＢの各画素の画素データを生成する（Ｓ２１）。ＲＰＯ部３６は、ポリゴンパラメータ指示バッファＩＢの各画素に格納されたエントリー番号に基づいて、ポリゴンパラメータバッファＰＢから当該画素に描画するポリゴンのパラメータを取得し画素データを生成する。
【００４７】
具体的には、例えば、ＲＰＯ部３６は、パラメータに基づいて、まず、ポリゴンの左辺上（図４の４１）の各画素について、ポリゴンの最上部の頂点（図４のＰＫ１）の画像パラメータの値（頂点パラメータ）に左辺４１の各画像パラメータ増分値（描画パラメータ）を順次加算していくことにより、左辺４１上の各画素の画素データを求める。そして、ＲＰＯ部３６は、各スパン（図４の４６）について、左端画素（図４の４４）の各画像パラメータの値に増分値を順次加算していくことにより、スパン上の各画素の画素データを取得する。
【００４８】
フラグメントシェーダ部３５は隣接する複数画素（クアッド）を一単位として画像データの加工を行うため、ＲＰＯ部３６は、フラグメントシェーダ部３５にクアッド単位の画素データを渡す。そして、ＲＰＯ部３６は、フラグメントシェーダ部３５によって加工された画素データをチャンクバッファ・コントローラＩ／Ｆ６３を介してチャンクバッファＣＢに書き込む。
【００４９】
このように、ＲＰＯ部３６は、ポリゴンパラメータ指示バッファＩＢ内のエントリー番号に基づいて、クアッド内の各画素に描画されるポリゴンのパラメータを取得して画素データを生成する。これにより、ＲＰＯ部３６は、ポリゴンパラメータ指示バッファＩＢのエントリー番号に基づいて、クアッド内の各画素に描画対象のポリゴンのパラメータを直接関連付けることができ、クアッド単位の画素データを高速に生成することができる。
【００５０】
チャンクバッファＣＢの画素データを生成すると（Ｓ２１）、チャンクバッファ・コントローラ３７は、メモリアクセスＩ／Ｆ３９を介して、チャンクバッファＣＢ内の画素データをフレームバッファ１１へ書き出す（Ｓ２２）。このように、画素データが、ポリゴン毎ではなくチャンクバッファＣＢ毎に書き出されることにより、フレームバッファ（ＤＲＡＭ）１１の連続したアドレスに対してアクセスが行われ、フレームバッファ（ＤＲＡＭ）１１へのアクセス効率を上げることができる。
【００５１】
チャンクバッファＣＢ内の画素データのフレームバッファ１１内への書き込みが終わると、グラフィクス・エンジン１６は、次のフェーズでのポリゴンセットアップ処理（Ｓ１１〜Ｓ１３）と、チャンク割り当て処理（Ｓ１４〜Ｓ２０）とチャンクバッファＣＢ内の画素データの生成処理（Ｓ２１、２２）を行う。ただし、前フェーズにおいて画素データの生成処理が未完了のポリゴンがある場合、グラフィクス・エンジン１６は、次のフェーズで当該ポリゴンを含めて処理を行う。そこで、ポリゴンセットアップ部３１は、ポリゴンパラメータバッファＰＢにフラグが「未完了」のポリゴンがあるか否かを判定すると共に（Ｓ２３）、ポリゴンパラメータバッファＰＢ内の全ポリゴンのフラグが「未完了」であるか否かを判定する（Ｓ２５）。
【００５２】
まず、ポリゴンパラメータバッファＰＢ内の一部のポリゴンのフラグが「未完了」である場合（Ｓ２３のＹＥＳ、Ｓ２５のＮＯ）、ポリゴンセットアップ部３１は、当該一部のポリゴンのエントリーのパラメータを残存させたまま（Ｓ２６）、その他のエントリーに新たなポリゴンのパラメータを書き込み、ポリゴンパラメータバッファＰＢを更新する（Ｓ１１、Ｓ１２）。一方、ポリゴンパラメータバッファ内の全ポリゴンのフラグが「未完了」である場合（Ｓ２３のＹＥＳ、Ｓ２５のＹＥＳ）、ポリゴンセットアップ部３１は、ポリゴンパラメータバッファＰＢを更新しない。
【００５３】
つまり、前のフェーズで画素データの生成が未完了のポリゴンについては、既に生成済みのポリゴンパラメータが利用され、引き続き次のフェーズでチャンク割り当て処理、チャンクバッファＣＢ内への画素データの生成処理等が行われる。
【００５４】
他方、ポリゴンパラメータバッファＰＢ内の全ポリゴンのフラグが「完了」である場合（Ｓ２３のＮＯ）、チャンクディサイダー部３４は、さらに、フレームバッファに描画される全ポリゴンについて画素データの生成が完了したか否かを判定する（Ｓ２４）。全ポリゴンの画素データの生成が完了した場合（Ｓ２４のＹＥＳ）、描画処理は終了し、全ポリゴンの画素データの生成が完了していない場合は（Ｓ２４のＮＯ）、全ポリゴンの画素データの生成が完了するまでＳ１１〜Ｓ２３の処理を行う。
【００５５】
図９は、フレームＦＬ内の描画対象のポリゴン群の一例を表す図である。図９の例には、フレームＦＬが「５×９＝４５個」のブロックＣＰ００〜ＣＰ４８に分割され、１０個のポリゴンＰＧ１〜ＰＧ１０が含まれている。このフレームＦＬの画素データが生成され、フレームバッファＦＢ（ＤＲＡＭ１１）に格納される。以下、上記で説明した描画処理によって図９の１０個のポリゴン（ＰＧ１〜１０）をフレームバッファＦＬ（ＦＢ）に描画する処理を説明する。この具体例では、３回の描画処理フェーズで描画処理が完了する。同図において、斜線は第１フェーズ、破線の斜線は第２フェーズ、横線は第３フェーズにおけるチャンクバッファＣＢを表す。なお、本実施の形態例におけるフレームバッファＦＬ（ＦＢ）は、８×８ピクセルの各ブロックＣＰ００〜ＣＰ４８に分割されているものとする。
【００５６】
＜第１フェーズの描画処理＞
まず、ポリゴンのセットアップ処理が行われる。ポリゴンセットアップ部３１は、最初の４個のポリゴンＰＧ１〜４の頂点パラメータから描画パラメータを生成し（Ｓ１１）、図５のように、ポリゴンパラメータバッファＰＢ１０にポリゴンＰＧ１〜４の頂点パラメータ、及び描画パラメータを格納する（Ｓ１２）。なお、まだ各ポリゴンの画素データが生成されていないため、ポリゴンパラメータバッファＰＢ１０におけるポリゴンＰＧ１〜４のフラグは「未完了」である。
【００５７】
次に、ポリゴンパラメータバッファＰＢ１０に４つのポリゴンのパラメータが格納されると（Ｓ１３のＹＥＳ）、チャンク割り当て処理に入り、チャンクディサイダー部３４は、ポリゴンパラメータバッファＰＢ１０からエントリー１の「ポリゴンＰＧ１」のパラメータを読み出す（Ｓ１４）。続いて、チャンクポジションコンパレータ６１は、「ポリゴンＰＧ１」の最上部の頂点座標を含むブロックが、チャンクバッファに割り当て済みか否かを判定する（Ｓ１５）。
【００５８】
図１０は、第１フェーズの描画処理におけるチャンクバッファの割り当て処理を説明する図である。同図において、左にチャンクバッファＣＢ１〜８と当該チャンクバッファに描画されるポリゴンの対応関係、右にチャンクバッファＣＢ１〜８とフレームＦＬ内のブロック（ＣＰ００〜）及びその座標の対応関係が表されている。描画処理の初めは、割り当て済みのチャンクバッファがないため（Ｓ１５のＮＯ、Ｓ１６のＹＥＳ）、チャンクアサイナー６２は、「ポリゴンＰＧ１」の最上部の頂点座標１０１を含む「ブロックＣＰ０１」に「チャンクバッファＣＢ１」を割り当てる（Ｓ１７）。そして、「チャンクバッファＣＢ１」のチャンク番号「ＣＢ１」と「ポリゴンＰＧ１」のパラメータがＲＰＯ部３６に渡され、ＲＰＯ部３６は、チャンク番号「ＣＢ１」のポリゴンパラメータ指示バッファＩＢ１（図７、１１参照）のエントリー番号を生成する（Ｓ１８）。
【００５９】
具体的に、ＲＰＯ部３６は、チャンク番号「ＣＢ１」に対応する「ブロックＣＰ０１」のフレームバッファＦＬ（ＦＢ）上のデフォルト（初期値）の画素データを読み出し、「チャンクバッファＣＢ１」に書き込む。フレームバッファＦＬ（ＦＢ）のデフォルトの画素データには値の大きいＺ値が格納されるため、深度テストの結果、ポリゴンパラメータ指示バッファＩＢ１の「ポリゴンＰＧ１」が描画される各画素に、「ポリゴンＰＧ１」のポリゴンパラメータバッファ（図５のＢＰ１０）のエントリー番号「１」が書き込まれる。
【００６０】
図１１は、「チャンクバッファＣＢ１」のポリゴンパラメータ指示バッファＩＢ１の一例を表す図である。上記の処理Ｓ１８により、「ポリゴンＰＧ１」が描画される画素にポリゴンパラメータバッファＰＢ１０のエントリー番号「１」が書き込まれる。
【００６１】
図１０に戻り、「ポリゴンＰＧ１」の全画素のチャンク割り当て処理が完了していないため（Ｓ１９のＮＯ）、続いて、チャンクポジションコンパレータ６１は、「ポリゴンＰＧ１」の画素であって、「ブロックＣＰ０１」外の画素１０２を含む「ブロックＣＰ０２」が、チャンクバッファに割り当て済みか否かを判定する（Ｓ１５）。「ブロックＣＰ０２」はチャンクバッファに未割り当てであり（Ｓ１５のＮＯ）、空きのチャンクバッファがあるため（Ｓ１６のＹＥＳ）、チャンクアサイナー６２は、「ブロックＣＰ０２」を「チャンクバッファＣＢ２」に割り当てる（Ｓ１７）。同様にして、ＲＰＯ部３６は、「チャンクバッファＣＢ２」に対応するポリゴンパラメータ指示バッファＩＢ２内に「ポリゴンＰＧ１」のエントリー番号「１」を書き込む（Ｓ１８）。
【００６２】
引き続き、「ポリゴンＰＧ１」についてチャンク割り当て処理（Ｓ１５〜Ｓ１９）が行われ、ポリゴンＰＧ１について、「ブロックＣＰ１０〜１２」に「チャンクバッファＣＢ３〜５」が割り当てられ、各ポリゴンパラメータ指示バッファＩＢ３〜５内のエントリー番号が生成される。この時点でポリゴンＰＧ１の全画素のチャンク割り当て処理が完了するため（Ｓ１９のＹＥＳ）、チャンクディサイダー部３４は、ポリゴンパラメータバッファＰＢ１の「ポリゴンＰＧ１」のフラグを「完了」に書き換える。
【００６３】
続いて、チャンクディサイダー部３４は、ポリゴンパラメータバッファＰＢ１から「ポリゴンＰＧ２」のパラメータを読み出し（Ｓ１４）、チャンクポジションコンパレータ６１は、チャンクバッファに割り当て済みの「ブロックＣＰ０１〜０２、ＣＰ１０〜１２」の座標情報を取得する。そして、チャンクポジションコンパレータ６１は、「ポリゴンＰＧ２」の最上部の頂点座標１０３が、割り当て済みのブロックに含まれるか否かを判定する（Ｓ１５）。頂点座標１０３は「チャンクバッファＣＢ３」に割り当てた「ブロックＣＰ１１」に含まれるため（Ｓ１５のＹＥＳ）、ＲＰＯ部３６は、深度テストを行いポリゴンパラメータ指示バッファＩＢ３内の対応する画素に、「ポリゴンＰＧ２」のエントリー番号を書き込む（Ｓ１８）。
【００６４】
図１２は、「チャンクバッファＣＢ３」のポリゴンパラメータ指示バッファＩＢ３の一例を表す図である。同図のように、「ポリゴンＰＧ２」が描画される画素にポリゴンパラメータバッファＰＢ１０（図５）の「ポリゴンＰＧ２」のエントリー番号「２」が書き込まれる。なお、ポリゴンＰＧ１とポリゴンＰＧ２は、重複していない。
【００６５】
図１０に戻り、引き続き、「ポリゴンＰＧ２」について、「ポリゴンＰＧ２」の画素を有する「ブロックＣＰ１２」が「チャンクバッファＣＢ４」に割り当て済みであるため、ＲＰＯ部３６は、深度テストを行いポリゴンパラメータ指示バッファＩＢ４内のエントリー番号を更新する。また、「ブロックＣＰ２１、２２」が「チャンクバッファＣＢ６、７」に割り当てられる。
【００６６】
同様にして、「ポリゴンＰＧ３」について、「ポリゴンＰＧ３」の画素を有する「ブロックＣＰ２１、２２」が「チャンクバッファＣＢ６、７」に割り当て済みであるため、ＲＰＯ部３６は、深度テストを行いポリゴンパラメータ指示バッファＩＢ６、７内のエントリー番号を更新する。そして、「ポリゴンＰＧ４」について、「ポリゴンＰＧ４」の画素を有するブロックが「チャンクバッファＣＢ７」に割り当て済みであるため、ポリゴンパラメータ指示バッファＩＢ７内のエントリー番号が更新されると共に、「ブロックＣＰ２３」が「チャンクバッファＣＢ８」に割り当てられる。そして、ポリゴンパラメータバッファＰＢ１０における「ＰＧ２〜４」のフラグが「完了」に書き換えられる。
【００６７】
このように、ポリゴンＰＧ１〜４の全画素について、当該画素を含むブロックが動的に８個のブロックがチャンクバッファＣＢ１〜８に割り当てられ、それぞれのチャンクバッファに対応するポリゴンパラメータ指示バッファＩＢ１〜８のエントリー番号が生成される。なお、「チャンクバッファＣＢ８」に対応する「ブロックＣＰ２３」には「ポリゴンＰＧ５」も描画されるが、ポリゴンパラメータバッファＰＢ１０に「ポリゴンＰＧ５」は含まれていないため、「ポリゴンＰＧ５」の描画処理は行われない。
【００６８】
続いて、ＲＰＯ部３６は、ポリゴンパラメータ指示バッファＩＢ１〜８の各画素に格納されたエントリー番号に基づいて、各画素に描画されるポリゴンのパラメータをポリゴンパラメータバッファＰＢ１０から取得して画素データを生成し、チャンクバッファＣＢ１〜８内に格納する（Ｓ２１）。そして、チャンクバッファＣＢ１〜８内の画素データはフレームバッファＦＬ（ＦＢ）に書き出され（Ｓ２２）、内部メモリに保持されたブロックのチャンクバッファとの割り当て情報７２がクリアされる。
【００６９】
ところで、画素データは、ポリゴンパラメータ指示バッファＩＢ１〜８にエントリー番号が書き込まれた各画素についてのみ生成される。従って、チャンクバッファ・コントローラ３７は、ポリゴンパラメータ指示バッファＩＢ１〜８にエントリー番号が書き込まれた画素についてのみ、チャンクバッファＣＢ１〜８の画素データをフレームバッファＦＬ（ＦＢ）に書き出してもよい。これにより、フレームバッファＦＬ（ＦＢ）に書き出される画素データの量が抑えられる。
【００７０】
続いて、ポリゴンセットアップ部３１は、ポリゴンパラメータバッファＰＢ１０内の全ポリゴンのフラグが「完了」であるため、全エントリーの情報をクリアして、新たにポリゴンＰＧ５〜８のパラメータを格納する（Ｓ１１、１２）。
【００７１】
＜第２フェーズの描画処理＞
図１３は、第２、３フェーズの描画処理におけるポリゴンパラメータバッファの一例を表す図である。同図のポリゴンパラメータバッファＰＢ２０は、第２フェーズの描画処理におけるポリゴンパラメータバッファであり、新たなポリゴンＰＧ５〜８のパラメータがフラグ「未完了」で格納される。
【００７２】
図１４は、第２フェーズの描画処理におけるチャンクバッファの割り当て処理を説明する図である。図１０と同様にして、左にチャンクバッファＣＢ１〜８と当該チャンクバッファに描画されるポリゴンの対応関係、右にチャンクバッファＣＢ１〜８とフレームＦＬ内のブロック（ＣＰ００〜）及びその座標の対応関係が表されている。チャンクアサイナー６２は、「ポリゴンＰＧ５」の最上部の頂点座標１４１を含む「ブロックＣＰ２３」に「チャンクバッファＣＢ１」を割り当てる（Ｓ１７）。そして、ＲＰＯ部３６は、「チャンクバッファＣＢ１」に対応するポリゴンパラメータ指示バッファＩＢ１のエントリー番号を生成する（Ｓ１８）。
【００７３】
この時、フレームバッファの「ブロックＣＰ２３」には、既に「ポリゴンＰＧ４」の画素データが格納されている。従って、ポリゴンパラメータ指示バッファＩＢ１のエントリー番号生成時に、フレームバッファＦＬ（ＦＢ）から「ポリゴンＰＧ４」の画素データが格納された「ブロックＣＰ２３」の画素データが読み出され、「チャンクバッファＣＢ１」に書き込まれる。ＲＰＯ部３６は、「ポリゴンＰＧ５」の画素のＺ値が、「ポリゴンＰＧ４」の画素データが書き込まれた「チャンクバッファＣＢ１」の対応する画素のＺ値よりも小さい場合に、ポリゴンパラメータ指示バッファＩＢ１に「ポリゴンＰＧ５」のエントリー番号を書き込む。
【００７４】
図１５は、第２フェーズの描画処理におけるチャンクバッファＣＢ１のポリゴンパラメータ指示バッファＩＢ１の一例を表す図である。太線で囲んだ画素群１５１は、「ポリゴンＰＧ４」と「ポリゴンＰＧ５」が重複する画素である。「ポリゴンＰＧ５」は「ポリゴンＰＧ４」よりも手前に描画されるため、「ポリゴンＰＧ５」のＺ値は「チャンクバッファＣＢ１」のＺ値よりも小さい。従って、同図のように、画素群１５１に、「ポリゴンＰＧ５」のポリゴンパラメータバッファＰＢ２０におけるエントリー番号「１」が書き込まれる。
【００７５】
１回の描画処理で対象とするポリゴン数を４個（Ｎ個）に制限したことにより、「ブロックＣＰ２３」のように同じブロックに描画される複数のポリゴンが異なる描画処理フェーズで処理される場合がある。この場合は、ＲＰＯ部３６は、フレームバッファＦＬ（ＦＢ）からそのブロックの画素データを読み出してチャンクバッファＣＢに格納し、深度テストを経て、当該ブロックに位置し画素データが未生成のポリゴンの画素データをチャンクバッファＣＢに上書きする。
【００７６】
図１４に戻り、「ポリゴンＰＧ５」の全画素についてチャンク割り当て処理が完了すると（Ｓ１９のＹＥＳ）、チャンクディサイダー部３４は、ポリゴンパラメータバッファＰＢ２０の「ポリゴンＰＧ５」のフラグを完了に書き換える。続いて、チャンクディサイダー部３４は、ポリゴンパラメータバッファＰＢ２０（図１３）から「ポリゴンＰＧ６」のパラメータを読み出す（Ｓ１４）。
【００７７】
同様にして、チャンクアサイナー６２は、「ポリゴンＰＧ６」について、「ブロックＣＰ２４，２５：チャンクバッファＣＢ２，３、ブロックＣＰ３４〜３６：チャンクバッファＣＢ４〜６、ブロックＣＰ４４，４５：チャンクバッファＣＢ７，８」のように、ポリゴンＰＧ６が位置する各ブロックをそれぞれチャンクバッファに割り当てる（Ｓ１５〜Ｓ１７）。また、ＲＰＯ部３６は、各「チャンクバッファＣＢ２〜８」に対応するポリゴンパラメータ指示バッファＩＢ２〜８にエントリー番号を生成する（Ｓ１８）。
【００７８】
そして、チャンクアサイナー６２は、「ポリゴンＰＧ６」の画素座標１４３について、「ブロックＣＰ４６」をチャンクバッファに割り当てようとするが、既にチャンクバッファ数が８個に達しており、空きチャンクバッファがない（Ｓ１６のＮＯ）。従って、チャンクアサイナー６２は、「ポリゴンＰＧ６」の割り当て処理を終了し、ポリゴンパラメータバッファＰＢ２０の「ポリゴンＰＧ６」のエントリー「２」にチャンクバッファに割り当てできなかったブロックの座標（48，32）を書き込む。これにより、チャンクディサイダー部３４は、次の描画処理フェーズにおいて、「ポリゴンＰＧ６」の割り当て処理途中の座標を認識することができる。そして、この時、ポリゴンパラメータバッファＰＢ２０（図１３）の「ポリゴンＰＧ６」のフラグは「未完了」のままとなる。
【００７９】
続いて、「ポリゴンＰＧ７、８」の割り当て処理が未実施であるため（Ｓ２０のＮＯ）、チャンクディサイダー部３４は、ポリゴンパラメータバッファＰＢ２０（図１３）から「ポリゴンＰＧ７」のパラメータを読み出す（Ｓ１４）。「ポリゴンＰＧ７」の画素は「チャンクバッファＣＢ３」が割り当て済みの「ブロックＣＰ２５」に含まれるため、ＲＰＯ部３６は、ポリゴンパラメータ指示バッファＩＢ３に「ポリゴンＰＧ７」のエントリー番号「３」（図１３のＰＢ２０）を書き込む。そして、チャンクディサイダー部３４は、ポリゴンパラメータバッファＰＢ２０における「ポリゴンＰＧ７」のフラグを「完了」に書き換える。
【００８０】
続いて、チャンクディサイダー部３４は、ポリゴンパラメータバッファＰＢ２０から「ポリゴンＰＧ８」のパラメータを読み出し（Ｓ１４）、「ポリゴンＰＧ８」の画素の座標を含む「ブロックＣＰ３７」を新たなチャンクバッファに割り当てようとする。しかし、割り当て済みのチャンクバッファ数が８個に達しているため（Ｓ１６のＮＯ）、チャンクディサイダー部３４は「ポリゴンＰＧ８」の割り当て処理を終了する。「ポリゴンＰＧ８」の全画素の割り当て処理が完了していないため、ポリゴンパラメータバッファＰＢ２０における「ポリゴンＰＧ８」のフラグは「未完了」のままとなる。
【００８１】
ポリゴンパラメータバッファの全ポリゴンＰＧ５〜８の割り当て処理が実施されたため（Ｓ２０のＹＥＳ）、ＲＰＯ部３６は、ポリゴンパラメータ指示バッファＩＢ１〜８に基づいて、ポリゴンＰＧ５〜７の画素データを生成し、チャンクバッファＣＢ１〜８に書き込む（Ｓ２１）。そして、チャンクバッファＣＢ１〜８内の画素データはフレームバッファＦＬ（ＦＢ）に書き出され（Ｓ２２）、チャンクバッファＣＢ１〜８とブロックとの割り当て情報７２（図７）がクリアされる。
【００８２】
＜第３フェーズの描画処理＞
第２フェーズが終了した時点で、この時、ポリゴンパラメータバッファ（図１３のＰＢ２１）には、「未完了」のフラグを有する「ポリゴンＰＧ６、８」が存在する（Ｓ２３のＹＥＳ）。そのため、ポリゴンセットアップ部３１は、ポリゴンパラメータバッファＰＢ２１について、ポリゴンＰＧ６、８のパラメータ（エントリー２、４）は残存させたまま、その他のエントリー１、３（１３１）に新たなポリゴンＰＧ９，１０のパラメータを格納する（Ｓ１１、Ｓ１２）。即ち、図１３のポリゴンパラメータバッファＰＢ３０の通りである。
【００８３】
次に、チャンクディサイダー部３４は、このポリゴンパラメータバッファ（図１３のＰＢ３０）から「ポリゴンＰＧ６、８〜１０」のパラメータを順に読み出して、各ポリゴンの画素が含まれるブロックを、８個を上限とするチャンクバッファに割り当てる。そして、チャンクポジションコンパレータ６１は、「ポリゴンＰＧ６」の割り当て処理を行う際、ポリゴンパラメータバッファＰＢ３０に格納された座標（48，32）を読み出し、当該座標の画素からチャンク割り当て処理を再開する。
【００８４】
このように、本実施の形態例におけるグラフィクス・エンジン１６は、「ポリゴンＰＧ６，８」のように、第２フェーズで８個（Ｍ個）のチャンクバッファに割り当てきれないポリゴンであっても、当該ポリゴンのパラメータを次回の第３描画処理フェーズのポリゴンパラメータバッファＰＢ３０に残存させる。これにより、グラフィクス・エンジン１６は、第３描画処理フェーズで、描画パラメータの再生成または退避させた描画パラメータの外部メモリからの読み出し処理を行うことなく、当該ポリゴンの描画処理を行うことができ、無駄な処理を省くことができる。そして、「ポリゴンＰＧ６」のように、チャンク割り当て処理が途中のポリゴンについて、処理途中の座標をポリゴンパラメータバッファＰＢにあわせて書き込むことにより、チャンクディサイダー部３４は、次回の描画処理フェーズで、処理途中のポリゴンのチャンク割り当て処理を再開することができる。
【００８５】
このようにして、「ポリゴンＰＧ６、８〜１０」について、各ポリゴンを含む「ブロックＣＰ３７，３８、ＣＰ４６〜４８」が「チャンクバッファＣＢ１〜５」に割り当てられ、各ポリゴンパラメータ指示バッファＩＢ１〜５にエントリー番号が書き込まれる（Ｓ１５〜Ｓ２０、図９）。そして、フレームバッファ内の画素データが「チャンクバッファＣＢ１〜５」に格納された後、「ポリゴンＰＧ６〜１０」の画素データが生成され「チャンクバッファＣＢ１〜５」内に書き込まれ（Ｓ２１）、フレームバッファＦＬ（ＦＢ）に書き出される（Ｓ２２）。この場合は、ポリゴンパラメータバッファＰＢ３０内の全「ポリゴンＰＧ８〜１０」が「完了」フラグを有し（Ｓ２３）、フレームバッファＦＬ（ＦＢ）に描画される全てのポリゴン（ＰＧ１〜１０）の画素データの生成処理が完了しているため（Ｓ２４のＹＥＳ）、グラフィクス・エンジン１６（図１）は、描画処理を終了する。
【００８６】
なお、チャンクディサイダー部３４は、「ポリゴンＰＧ６」について、ポリゴンパラメータバッファＰＢ２０に、処理途中の座標に加え、チャンクバッファＣＢに割り当てられなかったブロックと、割り当てたブロックとの境界画素（図９の９０）画素データをポリゴンパラメータバッファＰＢ２０に保持しておいてもよい。具体的には、ＲＰＯ部３６は、「チャンクバッファＣＢ８」の画素データの生成時に、「ブロックＣＰ４５」と「ブロックＣＰ４６」との境界画素９０の画素データをポリゴンパラメータバッファＰＢ２１、３０に格納しておく。これにより、ＲＰＯ部３６は、次回の描画処理フェーズにおいて「ブロックＣＰ４６」の画素データを生成する際に、ポリゴンの各スパンの左端画素（図４の４４）の画素データではなく、境界画素９０の画素データに各画像パラメータの増分値を加算すればよいため、画素データをさらに高速に生成することができる。
【００８７】
以上のようにして、本実施の形態例におけるグラフィクス・エンジンは、Ｍ個を上限とするチャンクバッファを使用してＮ個を上限とするポリゴンの画素データを生成し、チャンクバッファに上書きする。これにより、グラフィクス・エンジンは、ポリゴンの画素データを生成する前後の一括アクセス以外はフレームバッファにアクセスすることがなく、最小限の容量の高速内部メモリによるチャンクバッファを利用し当該チャンクバッファに上書きすることによってポリゴンの画素データを生成する。従って、グラフィクス・エンジンは、低コストでかつ高速に描画処理を行うことができる。
【００８８】
また、ポリゴン単位ではなくチャンクバッファ単位で、画素データがフレームバッファから読み出され、または生成済みの画素データがフレームバッファに書き出されることにより、フレームバッファに対して連続したアドレスのアクセスが行われ、フレームバッファへのアクセス効率が向上する。
【００８９】
また、グラフィクス・エンジンは、1回の描画処理におけるチャンクバッファの数（Ｍ個）を制限することによって、チャンクバッファ及びポリゴンパラメータ指示バッファを少ないデータ容量で構成でき、内部メモリの容量を最小限に収めることができる。さらに、1回の描画処理におけるポリゴンの数（Ｎ個）を制限することにより、ポリゴンパラメータバッファも少ない容量で構成でき、同様に、内部メモリの容量を最小限にできる。
【００９０】
また、本実施の形態例におけるグラフィクス・エンジンは、ポリゴンパラメータ指示バッファに基づいて、クアッドの各画素データを生成する。このように、グラフィクス・エンジンは、ポリゴンパラメータ指示バッファＩＢのエントリー番号に基づいて、クアッド内の各画素に、描画対象のポリゴンのパラメータを直接関連付けることにより、クアッド単位の画素データを高速に生成することができる。
【００９１】
さらに、本実施の形態例におけるグラフィクス・エンジンは、１回の描画処理におけるポリゴン数の上限をＮ個とするため、同ブロックに描画される複数のポリゴンが異なる描画処理フェーズに処理されることがある。その場合は、グラフィクス・エンジンは、処理対象のブロックの画素データをフレームバッファから読み出してチャンクバッファに格納し、深度テストを経て当該ブロックにおける各ポリゴンの画素データを生成しチャンクバッファＣＢ１〜８内に上書きする。これにより、グラフィクス・エンジンは、１回の描画処理におけるポリゴン数をＮ個に制限する場合であっても、各ポリゴンの画素データを生成することができる。
【００９２】
そして、本実施の形態例におけるグラフィクス・エンジンは、Ｍ個のチャンクバッファを上限として1回の描画処理を行うため、Ｍ個のチャンクバッファに収まらないポリゴンがある。その場合は、グラフィクス・エンジンは、全ての画素データの生成が完了していないポリゴンのパラメータを次回の描画処理フェーズのポリゴンパラメータバッファに残存させる。これにより、グラフィクス・エンジンは、次回の描画処理フェーズで、新たに当該ポリゴンの描画パラメータの生成処理や、退避させた描画パラメータの外部メモリからの読み出し処理を行うことなく、当該ポリゴンの描画処理を行うことができる。つまり、グラフィクス・エンジンは、各ポリゴンの描画パラメータを１回生成するだけでよく、描画パラメータの生成処理を何度も繰り返すことによって処理量が増大することを回避できる。
【００９３】
なお、本実施の形態例のグラフィクス・エンジンがポリゴンパラメータ指示バッファを用いる例を述べたが、グラフィクス・エンジンは、必ずしもポリゴンパラメータ指示バッファを用いる必要はない。グラフィクス・エンジンは、各ブロックについて、背面に描画されるポリゴンから順に画素データを生成しチャンクバッファに上書きしていくことによって、ブロック内の各画素の画素データを確定してもよい。
【００９４】
なお、本実施の形態例における画素データは深度値を有するが、画素データは深度値を有していなくてもよい。また、本実施の形態例における画素データは、さらに、ＲＧＢ各色の階調値に加えアルファ値等を有していてもよい。
【００９５】
なお、上記の説明において、外部メモリはＤＲＡＭであるとして説明したが、外部メモリはＤＲＡＭに限定されるものではなく不揮発性メモリ等のいずれのメモリであってもよい。本実施の形態例では外部メモリのアクセス頻度が最小限に抑えられているため、いずれの種類の外部メモリであっても、それらのメモリアクセスによる処理効率の低下は少ない。また、外部メモリがキャッシュシステムにより階層化されている場合においても、キャッシュミスの発生を抑えた効率的なメモリアクセスを実現することができる。
【００９６】
以上の実施の形態をまとめると、次の付記のとおりである。
【００９７】
（付記１）
複数のブロックに分割されたフレームバッファに描画される複数のポリゴンのうち、Ｎ個を上限とするポリゴンが位置する前記ブロックを、Ｍ個を上限とするチャンクバッファに割り当てるチャンク割り当て部と、
前記Ｎ個のポリゴンのうち前記チャンクバッファに割り当てられたブロック内に位置するポリゴンの画素データを生成し前記チャンクバッファに書き込むチャンク生成部と、
前記チャンクバッファに書き込まれた前記画素データを前記フレームバッファに書き出すチャンク書き出し部とを有し、
前記チャンク割り当て部によるチャンクバッファ割り当て処理と、前記チャンク生成部による画素データの生成と書き込み処理と、前記チャンク書き出し部によるフレームバッファへの画素データの書き出し処理とを有する処理フェーズを、前記複数のポリゴンについて繰り返し実行することを特徴とするグラフィック処理装置。
【００９８】
（付記２）
付記１において、
前記チャンク生成部は、前記処理フェーズ毎に、前記チャンクバッファに割り当てられたブロックの画素データを前記フレームバッファから読み出して前記チャンクバッファに書き込み、前記読み出した画素データが書き込まれた前記チャンクバッファに、前記生成した画素データを書き込むことを特徴とするグラフィック処理装置。
【００９９】
（付記３）
付記１または２において、
前記グラフィック処理装置は、さらに、
前記処理フェーズ毎に、前記Ｎ個のポリゴンの頂点データに基づいて描画パラメータを生成しポリゴンパラメータバッファに書き込むポリゴンパラメータバッファ生成部を有し、
前記チャンク生成部は、前記ポリゴンパラメータバッファの前記描画パラメータに基づいて前記Ｎ個を上限とするポリゴンの画素データを生成することを特徴とするグラフィック処理装置。
【０１００】
（付記４）
付記３において、
前記ポリゴンパラメータバッファ生成部は、第１の処理フェーズにおいて、前記ポリゴンパラメータバッファに書き込んだ前記Ｎ個のポリゴンの描画パラメータのうち、前記画素データの生成が完了していないポリゴンの描画パラメータを、第１の処理フェーズに続く第２の処理フェーズにおいて前記ポリゴンパラメータバッファに残存させ、当該描画パラメータを残存させたポリゴンとあわせて前記Ｎ個のポリゴンの描画パラメータを生成し前記ポリゴンパラメータバッファに書き込むことを特徴とするグラフィック処理装置。
【０１０１】
（付記５）
付記３または４において、
前記画素データはさらに奥行きを示す深度値を有し、
前記チャンク生成部は、前記生成した画素データの前記深度値が、前記フレームバッファから読み出した画素データの対応する画素の深度値よりも小さい場合に、当該生成した画素データを前記チャンクバッファに書き込むことを特徴とするグラフィック処理装置。
【０１０２】
（付記６）
付記５において、
前記ポリゴンパラメータバッファの描画パラメータは識別情報に関連付けて格納され、
前記チャンク生成部は、さらに、前記ブロックの各画素について、当該ブロック内に位置するポリゴンのうち前記深度値が最も小さいポリゴンに対応付けられた前記ポリゴンパラメータバッファ内の前記識別情報をポリゴンパラメータ指示バッファに格納し、当該ポリゴンパラメータ指示バッファ内の識別情報に基づいて前記描画パラメータを参照して前記Ｎ個を上限とするポリゴンの画素データを生成することを特徴とするグラフィック処理装置。
【０１０３】
（付記７）
付記４において、
前記チャンク割り当て部は、前記第１のフェーズにおいて、前記画素データの生成が完了していないポリゴンについて、当該生成が完了していない画素を示す座標情報を前記ポリゴンパラメータバッファに書き込み、
前記チャンク割り当て部は、前記第２のフェーズにおいて、前記画素データの生成が完了していないポリゴンについて、前記ポリゴンパラメータバッファ内の前記座標情報の示す前記画素が位置する前記ブロックを前記チャンクバッファに割り当てることを特徴とするグラフィック処理装置。
【０１０４】
（付記８）
付記１乃至７のいずれかにおいて、
前記チャンク割り当て部は、前記Ｎ個を上限とするポリゴンを順次、当該ポリゴンが位置する前記ブロックを、前記ポリゴンがＮ個に達するかまたは前記チャンクバッファがＭ個に達するまで前記チャンクバッファに割り当てることを特徴とするグラフィック処理装置。
【０１０５】
（付記９）
付記１または２において、
前記チャンクバッファは、前記フレームバッファよりもアクセス速度が速いことを特徴とすることを特徴とするグラフィック処理装置。
【０１０６】
（付記１０）
付記３において、
前記ポリゴンパラメータバッファは、前記フレームバッファよりもアクセス速度が速いことを特徴とすることを特徴とするグラフィック処理装置。
【０１０７】
（付記１１）
複数のブロックに分割されたフレームバッファに描画される複数のポリゴンのうち、Ｎ個を上限とするポリゴンが位置する前記ブロックを、Ｍ個を上限とするチャンクバッファに割り当てるチャンク割り当て工程と、
前記Ｎ個のポリゴンのうち前記チャンクバッファに割り当てられたブロック内に位置するポリゴンの画素データを生成し前記チャンクバッファに書き込むチャンク生成工程と、
前記チャンクバッファに書き込まれた前記画素データを前記フレームバッファに書き出すチャンク書き出し工程と、
を前記複数のポリゴンについて繰り返しコンピュータに実行させることを特徴とするコンピュータ読み取り可能なグラフィック処理プログラム。
【０１０８】
（付記１２）
付記１１において、
前記チャンク生成工程は、前記処理フェーズ毎に、前記チャンクバッファに割り当てられたブロックの画素データを前記フレームバッファから読み出して前記チャンクバッファに書き込み、前記読み出した画素データが書き込まれた前記チャンクバッファに、前記生成した画素データを書き込むことを特徴とするグラフィック処理プログラム。
【０１０９】
（付記１３）
付記１１または１２において、さらに、
前記処理フェーズ毎に、前記Ｎ個のポリゴンの頂点データに基づいて描画パラメータを生成しポリゴンパラメータバッファに書き込むポリゴンパラメータバッファ生成工程を有し、
前記チャンク生成工程は、前記ポリゴンパラメータバッファの前記描画パラメータに基づいて前記Ｎ個を上限とするポリゴンの画素データを生成することを特徴とするグラフィック処理プログラム。
【０１１０】
（付記１４）
付記１３において、
前記ポリゴンパラメータバッファ生成工程は、第１の処理フェーズにおいて、前記ポリゴンパラメータバッファに書き込んだ前記Ｎ個のポリゴンの描画パラメータのうち、前記画素データの生成が完了していないポリゴンの描画パラメータを、第１の処理フェーズに続く第２の処理フェーズにおいて前記ポリゴンパラメータバッファに残存させ、当該描画パラメータを残存させたポリゴンとあわせて前記Ｎ個のポリゴンの描画パラメータを生成し前記ポリゴンパラメータバッファに書き込むことを特徴とするグラフィック処理プログラム。
【０１１１】
（付記１５）
付記１４において、
前記チャンク割り当て工程は、前記第１のフェーズにおいて、前記画素データの生成が完了していないポリゴンについて、当該生成が完了していない画素を示す座標情報を前記ポリゴンパラメータバッファに書き込み、
前記チャンク割り当て工程は、前記第２のフェーズにおいて、前記画素データの生成が完了していないポリゴンについて、前記ポリゴンパラメータバッファ内の前記座標情報の示す前記画素が位置する前記ブロックを前記チャンクバッファに割り当てることを特徴とするグラフィック処理プログラム。
【０１１２】
（付記１６）
付記１１乃至１５のいずれかにおいて、
前記チャンク割り当て工程は、前記Ｎ個を上限とするポリゴンを順次、当該ポリゴンが位置する前記ブロックを、前記ポリゴンがＮ個に達するかまたは前記チャンクバッファがＭ個に達するまで前記チャンクバッファに割り当てることを特徴とするグラフィック処理プログラム。
【符号の説明】
【０１１３】
１０：グラフィクス・コントローラ、１１：ＤＲＡＭ、１２：ディスプレイ、
１３：ＣＰＵ、１４：アプリケーションプログラム、１５：メモリコントローラ、
１６：グラフィクス・エンジン、１７：ディスプレイ・エンジン
【図１】
0005664052.tif 000002
【図２】
0005664052.tif 000003
【図３】
0005664052.tif 000004
【図４】
0005664052.tif 000005
【図５】
0005664052.tif 000006
【図６】
0005664052.tif 000007
【図７】
0005664052.tif 000008
【図８】
0005664052.tif 000009
【図９】
0005664052.tif 000010
【図１０】
0005664052.tif 000011
【図１１】
0005664052.tif 000012
【図１２】
0005664052.tif 000013
【図１３】
0005664052.tif 000014
【図１４】
0005664052.tif 000015
【図１５】
0005664052.tif 000016