(57)【要約】頂点シェーダ処理とピクセルシェーダ処理を逐次実行するシェーダプロセッサと、シェーダプロセッサにより頂点シェーダ処理されたデータに基づいて、ピクセルシェーダ処理に必要なピクセルデータを生成するラスタライザ部と、ラスタライザ部から出力されたピクセルデータを、頂点シェーダ処理に引き続くピクセルシェーダ処理の対象としてシェーダプロセッサにフィードバックするフィードバックループとを備える。
2007049610.tif 000002
【特許請求の範囲】
【請求項１】
頂点シェーダ処理とピクセルシェーダ処理を逐次実行するシェーダプロセッサと、
前記シェーダプロセッサにより頂点シェーダ処理されたデータに基づいて、ピクセルシェーダ処理に必要なピクセルデータを生成するラスタライザ部と、
前記ラスタライザ部から出力されたピクセルデータを、頂点シェーダ処理に引き続くピクセルシェーダ処理の対象として前記シェーダプロセッサにフィードバックするフィードバックループとを備えた画像処理装置。
【請求項２】
ラスタライザ部からシェーダプロセッサまでのフィードバックループ上に設けられ、前記ラスタライザ部から出力されたピクセルデータの描画可否を判定し、判定結果に応じて前記シェーダプロセッサへの前記ピクセルデータのフィードバックの可否を決定するフラグメントテスト部を備えたことを特徴とする請求項１記載の画像処理装置。
【請求項３】
シェーダプロセッサは、キャッシュメモリを介して、シェーダ処理に必要なデータの読み出し又は書き込み、及び、シェーダプログラムの命令コードの読み出しを行うことを特徴とする請求項１記載の画像処理装置。
【請求項４】
ラスタライザ部からシェーダプロセッサまでのフィードバックループ上に設けられ、前記ラスタライザ部からの出力データを保持するＦＩＦＯを備え、
キャッシュメモリは、前記ラスタライザ部から前記ＦＩＦＯに転送されるデータをプリフェッチすることを特徴とする請求項３記載の画像処理装置。
【請求項５】
シェーダプロセッサは、頂点シェーダ処理に引き続くピクセルシェーダ処理以外のシェーダ処理も逐次実行し、
各シェーダ処理のシェーダプログラムは、前記シェーダプロセッサにおいてそれぞれのプログラムに固有のリソースを用いて実行されることを特徴とする請求項１記載の画像処理装置。
【請求項６】
シェーダプロセッサは、各シェーダ処理に応じた処理単位でシェーダプログラムを切り替えるプログラムカウンタを備えたことを特徴とする請求項５記載の画像処理装置。
【請求項７】
シェーダプロセッサは、
異なるビット数の各演算フォーマットでの演算処理を指定する命令コードをデコードする複数の命令デコーダと、
複数の演算ユニット及び演算フォーマットの変換ユニットを有し、前記演算ユニットによる演算又はその演算結果を前記変換ユニットにより演算フォーマット変換することで、前記各命令コードに対応した演算フォーマットデータの演算を行う複数の演算器と、
シェーダ処理に必要なデータを入力し、当該入力データから前記各演算器の演算対象データを選択するクロスバースイッチと、
前記命令デコーダがデコードした命令に従って、前記クロスバースイッチのデータ選択及びデータ演算を行う前記演算ユニットの組み合わせを決定することにより、前記演算器による各命令コードに対応した演算フォーマットのデータ演算を制御するシーケンサとを備えたことを特徴とする請求項１記載の画像処理装置。
【請求項８】
演算器及びその演算ユニットの組み合わせを指定する命令コードからなる命令セットを用い、各シェーダ処理における演算命令の種類に応じて前記命令セットの組み合わせフォーマットを変更することを特徴とする請求項７記載の画像処理装置。
【請求項９】
複数個を並列に配置した請求項１記載の画像処理装置と、
各シェーダ処理に必要なデータ及び前記画像処理装置のシェーダプロセッサに実行させるシェーダプログラムを格納するビデオメモリと、
前記各画像処理装置による処理に応じて、前記ビデオメモリに格納されたデータ及びシェーダプログラムの命令コードを読み出して分配するコマンドデータ分配部とを備えた画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、表示画面上にコンピュータグラフィックス画像を表示する画像処理装置に係り、特に頂点のジオメトリ処理とピクセルの描画処理をプログラマブルに実行する画像処理装置に関するものである。
【背景技術】
【０００２】
一般に、３Ｄグラフィクスの処理は、座標変換やライティング計算などを行なうジオメトリ処理と、三角形などをピクセルに分解してテクスチャマッピングなどを施してフレームバッファへ描画するレンダリング処理とに分類できる。近年、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅｓ）で予め決められた古典的なジオメトリ処理やレンダリング処理を用いるのではなく、プログラマブルなグラフィクスアルゴリズムによるフォトリアルな表現手法が用いられるようになってきた。この手法の一つとして、頂点シェーダとピクセルシェーダ（フラグメントシェーダとも呼ばれる）がある。これら頂点シェーダ及びピクセルシェーダを搭載するグラフィクスプロセッサには、例えば非特許文献１に示すようなものがある。【０００３】
頂点シェーダは、例えばアセンブリ言語や高レベルのシェーディング言語によりプログラムされる画像処理プログラムであり、アプリケーションプログラマ自身のアルゴリズムをハードウェアでアクセラレーションすることができる。また、頂点シェーダでは、モデリングデータを変えることなく、頂点データに対して移動、変形、回転、ライティング処理などを自由に加えることができる。これにより、３Ｄモーフィング、屈折エフェクト、スキニング（関節などの頂点の不連続部分を滑らかに表現する）などが可能となり、ＣＰＵに負荷をかけずにリアリスティックな表現が可能である。【０００４】
ピクセルシェーダは、ピクセル単位でプログラマブルなピクセル演算をするためのものであり、頂点シェーダと同様にアセンブリ言語や高レベルのシェーディング言語を用いてプログラムする。これにより、ピクセルシェーダでは、テクスチャデータとして法線ベクトルを用いてピクセル単位でライティング処理を行なったり、テクスチャデータとして摂動データを用いてバンプマップを行なうなどの処理が可能となる。【０００５】
また、ピクセルシェーダは、テクスチャアドレスの計算手法を変えるだけでなく、テクスチャカラーとピクセルのブレンド演算もプログラマブルに行なうことができる。これにより、階調反転、色空間の変換などの画像処理も可能である。一般的に、頂点シェーダとピクセルシェーダは組み合わせて用いられ、頂点処理とピクセル処理を組み合わせることにより多彩な表現が可能となる。【０００６】
頂点シェーダやピクセルシェーダには、４−ＳＩＭＤ形式の演算ハードウェアやＤＳＰのような特殊プロセッサが用いられることが多く、位置座標［ｘ，ｙ，ｚ，ｗ］、カラー［ｒ，ｇ，ｂ，ａ］、テクスチャ座標［ｓ，ｔ，ｐ，ｑ］などの各４要素が並列に演算処理される。演算フォーマットとしては、３２ビット浮動小数点（符号：指数：仮数＝１：８：２３）や１６ビット浮動小数点（符号：指数：仮数＝１：５：１５）が使用される。【０００７】
【非特許文献１】Cem Cebenoyan and Matthias Wloka, "Optimizing the Graphics Pipeline", GDC 2003 NVIDIA presentation.
【０００８】
頂点シェーダの処理に要する時間は、頂点演算の手法や光源の数などの影響を受ける。例えば、ディスプレイスメント・マッピングにより頂点の位置情報に変換を加えたり、光源の数が多くなると頂点処理にかかる時間が大きくなる。一方、ピクセルシェーダでの処理時間は、そのプリミティブに含まれるピクセル数やピクセルシェーダ演算の複雑度の影響を受ける。例えば、ポリゴンに含まれるピクセルの数が多かったり、ピクセルシェーダの中でサンプルするテクスチャ数が多いと、処理に要する時間が大きくなる。【０００９】
図８は、非特許文献１に示される従来の画像処理装置の構成を示す図であり、一例として頂点シェーダとピクセルシェーダを搭載するグラフィクスプロセッサを示している。当該グラフィックスプロセッサにおいて、描画処理に先立ち、ビデオメモリ１０１には、システムメモリ１００からジオメトリデータ（物体を構成する頂点情報や光源の情報など）１０１ａ、コマンド１０１ｂ、テクスチャデータ１０１ｃが予め転送されているものとする。また、ビデオメモリ１０１には、フレームバッファ１０１ｄとしての記憶領域も設けられる。【００１０】
頂点シェーダ１０４は、前段Ｔ＆Ｌキャッシュ１０２から必要な頂点情報を読み出して幾何学演算処理を行い、演算結果を後段Ｔ＆Ｌキャッシュ１０５へ書き込む。三角形セットアップ１０６は、後段Ｔ＆Ｌキャッシュ１０５に書き込まれた演算結果から３個の頂点データを読み出して描画処理に必要な増分値などの計算を行う。ラスタライザ１０７は、その増分値を用いてピクセルの補間処理を行ない、三角形をピクセルに分解する。【００１１】
フラグメントシェーダ１０８は、ラスタライザ１０７で生成されたテクスチャ座標を使ってテクスチャキャッシュ１０３からテクセルデータを読み出し、読み出したテクセルデータとカラーデータのブレンド処理などを行なう。最後に、ビデオメモリ１０１のフレームバッファ１０１ｄとの間で論理演算（ラスターオペレーション）などを行い、最終カラーをフレームバッファ１０１ｄへ書き込む。【００１２】
図８に示したような従来の画像処理装置の構成では、頂点シェーダとピクセルシェーダとが独立したプロセッサとして実装される。ここで、頂点シェーダとピクセルシェーダの処理のバランスがとれているときは、効率よくパイプライン処理される。しかしながら、例えば小さなポリゴンであって、これに含まれるピクセル数が少ない画像データであると、ピクセルシェーダ処理に対して頂点シェーダの処理がボトルネックとなり、ピクセルシェーダが頻繁にアイドル状態となってしまう。逆に、大きなポリゴンであって、これに含まれるピクセル数が多くなると、ピクセルシェーダの処理がボトルネックとなり、頂点シェーダが頻繁にアイドル状態となってしまう。【００１３】
一般のアプリケーションでは、この頂点処理とピクセル処理の関係がアンバランスで、処理の負荷がどちらか一方に偏る傾向が高い。例えば、携帯電話向けアプリケーションにおいて、頂点処理とピクセル処理をパイプライン処理させた場合とさせない場合を比較したところ、処理性能が約１０％しか向上しなかったという報告もある。【００１４】
さらに、頂点シェーダもピクセルシェーダも４−ＳＩＭＤ形式のＦＰＵを搭載していることが多く、ハードウェア規模はかなり大きい。それにもかかわらず、どちらか一方のシェーダがアイドル状態になるということは搭載された演算ハードウェアが効率的に動作していないことを意味し、無駄なハードウェアを搭載していることと等価になってしまう。これは、特に組み込み向け用途などでハードウェア規模を小さく抑える必要がある分野において大きな問題となる。また、ゲート規模が増加すると消費電力も増加してしまう。【００１５】
この発明は、上記のような課題を解決するためになされたもので、頂点シェーダとピクセルシェーダの処理負荷のアンバランスを解消し、頂点シェーダとピクセルシェーダの処理を効率よく実行することができる画像処理装置を得ることを目的とする。
【発明の開示】
【００１６】
この発明に係る画像処理装置は、頂点シェーダ処理とピクセルシェーダ処理を逐次実行するシェーダプロセッサと、シェーダプロセッサにより頂点シェーダ処理されたデータに基づいて、ピクセルシェーダ処理に必要なピクセルデータを生成するラスタライザ部と、ラスタライザ部から出力されたピクセルデータを、頂点シェーダ処理に引き続くピクセルシェーダ処理の対象としてシェーダプロセッサにフィードバックするフィードバックループとを備えるものである。
【００１７】
この発明によれば、頂点シェーダ処理とピクセルシェーダ処理を逐次実行するシェーダプロセッサと、シェーダプロセッサにより頂点シェーダ処理されたデータに基づいて、ピクセルシェーダ処理に必要なピクセルデータを生成するラスタライザ部と、ラスタライザ部から出力されたピクセルデータを、頂点シェーダ処理に引き続くピクセルシェーダ処理の対象としてシェーダプロセッサにフィードバックするフィードバックループとを備えるので、同一のプロセッサにより頂点シェーダ処理とピクセルシェーダ処理が逐次実行されることから、頂点シェーダとピクセルシェーダの処理負荷のアンバランスが解消され、頂点シェーダ処理とピクセルシェーダ処理を効率よく実行することができるという効果がある。
【図面の簡単な説明】
【００１８】
【図１】この発明の実施の形態１による画像処理装置の構成を示すブロック図である。
【図２】この発明の実施の形態２による画像処理装置のシェーダコアの構成及びその動作を説明するための図である。
【図３】本発明の画像処理装置による３Ｄグラフィックス処理の一例を示す図である。
【図４】本発明の画像処理装置におけるシェーダコアのプログラム配置の一例を示す図である。
【図５】この発明の実施の形態３による画像処理装置のシェーダコアの演算器構成を示す図である。
【図６】実施の形態３による命令フォーマットの例を示す図である。
【図７】この発明の実施の形態４による画像処理装置の構成を示すブロック図である。
【図８】非特許文献１に示される従来の画像処理装置の構成を示す図である。
【発明を実施するための最良の形態】
【００１９】
以下、この発明をより詳細に説明するために、この発明を実施するための最良の形態について、添付の図面に従って説明する。
実施の形態１．
図１は、この発明の実施の形態１による画像処理装置の構成を示すブロック図である。本実施の形態１による画像処理装置は、主記憶装置１、ビデオメモリ２、シェーダキャッシュ（キャッシュメモリ）３、命令キャッシュ（キャッシュメモリ）４、ピクセルキャッシュ（キャッシュメモリ）５、シェーダコア６、セットアップエンジン７、ラスタライザ（ラスタライザ部）８及び早期フラグメントテストユニット（フラグメントテスト部）９を含んで構成される。主記憶装置１は、描画処理の対象となる物体等の画像を構成する頂点情報や光源の照度等の光に関する情報（ライティング計算用データ）を含むジオメトリデータ２ａ、本画像処理装置のプロセッサをシェーダコア６として機能させるためのシェーダプログラム２ｂ、及びテクスチャデータ２ｃを記憶する。【００２０】
ビデオメモリ２は、画像処理専用の記憶装置であり、本画像処理装置の画像処理にあたり、主記憶装置１からジオメトリデータ２ａ、シェーダプログラム２ｂ、テクスチャデータ２ｃが予め転送される。また、ビデオメモリ２には、ピクセルキャッシュ５から最終的な演算処理が施されたピクセルデータが適宜書き込まれる記憶領域が設けられ、フレームバッファ２ｄの領域として使用される。なお、ビデオメモリ２と主記憶装置１とは同一メモリとして構成してもよい。【００２１】
シェーダキャッシュ（キャッシュメモリ）３には、ジオメトリデータ２ａやテクスチャデータ２ｃがビデオメモリ２から読み出されて保持される。このシェーダキャッシュ３の記憶データは、シェーダコア６による画像処理に際し、シェーダコア６に適宜読み出されてその処理に利用される。命令キャッシュ（キャッシュメモリ）４には、シェーダコア６を動作させるために必要な命令がビデオメモリ２のシェーダプログラム２ｂから読み出されて保持される。シェーダプログラム２ｂの命令は、命令キャッシュ４を介してシェーダプロセッサに読み出されて実行され、シェーダコア６として動作する。ピクセルキャッシュ（キャッシュメモリ）５では、フレームバッファ２ｄに記憶されたビデオメモリ２のディスティネーションデータが保持されてシェーダコア６に読み出され、演算処理が施された最終のピクセル値が保持されてフレームバッファ２ｄに書き込まれる。【００２２】
シェーダコア６は、命令キャッシュ４を介して読み出されるシェーダプログラム２ｂの命令を実行する一つのシェーダプロセッサにより構成され、シェーダキャッシュ３及びピクセルキャッシュ５を介して画像処理に必要なデータを読み出して頂点シェーダに関する処理とピクセルシェーダに関する処理の双方をシーケンシャルに実行する。セットアップエンジン７は、シェーダコア６から出力されるプリミティブの頂点情報からインターポーレーションに必要な増分値を算出する。【００２３】
ラスタライザ（ラスタライザ部）８は、三角形の内外判定を行いながら頂点情報により決定される三角形をピクセルに分解し、セットアップエンジン７により算出された増分値を用いてインターポーレーションを行う。早期フラグメントテストユニット（フラグメントテスト部）９は、ラスタライザ８とシェーダコア６との間のフィードバックループ上に設けられ、ラスタライザ８が算出したピクセルのデプス値とピクセルキャッシュ５から読み出したデスティネーションデータのデプス値とを比較し、比較結果に応じてピクセル値をシェーダコア６にフィードバックするか否かを判定する。【００２４】
次に動作について説明する。
描画処理にあたり、描画対象の物体の画像を構成する頂点情報や光源からの光に関する情報等のジオメトリデータ２ａ、シェーダコア６としてプロセッサを動作させるためのシェーダプログラム２ｂ、テクスチャデータ２ｃが主記憶装置１からビデオメモリ２に予め転送される。【００２５】
シェーダコア６は、シェーダキャッシュ３を介してビデオメモリ２から処理対象のジオメトリデータ２ａを読み出して、ジオメトリデータ２ａを用いた幾何学演算処理やライティング演算処理等の頂点シェーダの処理を実行する。このとき、シェーダコア６は、命令キャッシュ４を介してビデオメモリ２から頂点シェーダに関するシェーダプログラム２ｂの命令を読み込んで動作する。なお、シェーダプログラム２ｂの命令は、外部メモリである命令キャッシュ４に逐次格納されるので、命令の最大ステップ数が制限されることはない。【００２６】
次に、シェーダコア６は、頂点シェーダ処理に引き続き、カリング、ビューポート変換、プリミティブの組み立て処理を実行し、処理結果として算出されたプリミティブの頂点情報をセットアップエンジン７に出力する。なお、カリング処理とは、頂点データにより規定されるポリゴン等の多面体の裏面を描画対象から破棄する処理である。ビューポート変換は、頂点データをデバイス座標系へ変換する処理である。また、プリミティブの組み立ては、ストリップのように一連に結合された三角形やファンのように一つの頂点を共有する三角形等を独立の三角形に再構成する処理である。【００２７】
このように、頂点シェーダ処理以外の処理もシェーダコア６が逐次実行することで、頂点シェーダ処理以外の処理を実行する固定処理ハードウェアを省略でき、統合的に処理を実行することができる。【００２８】
セットアップエンジン７では、シェーダコア６から出力されるプリミティブの頂点情報からポリゴンを構成するピクセルの表示画面上での座標値や色情報を算出し、その増分値を求める。算出された増分値は、セットアップエンジン７からラスタライザ８に出力される。ラスタライザ８は、三角形の内外判定を行いながら頂点情報により決定される三角形をピクセルに分解し、三角形内のピクセルに対しセットアップエンジン７により算出された増分値を用いてインターポーレーションを行う。三角形の内外判定は、例えば三角形内部に入り得るピクセルに対して三角形の辺を表す直線の方程式を評価し、三角形の辺の内側に対象とするピクセルが入っているか否かを判定することにより行われる。【００２９】
早期フラグメントテストユニット９は、ラスタライザ８が算出した今から描画しようとするピクセル（ソース）のデプス値と、ピクセルキャッシュ５から読み出した以前のピクセルのデスティネーションデータ（表示画面）におけるデプス値とを比較する。このとき、比較結果が描画を許容すべき範囲内にあれば、テストに合格したものとして描画しようとしていたピクセルデータをシェーダコア６にフィードバックして描画処理を実行する。一方、比較結果が描画を許容すべき範囲外である場合は、テストに失敗したものとして描画する必要がないことから、当該ピクセルデータを後段のシェーダコア６に出力しない。【００３０】
続いて、シェーダコア６は、シェーダキャッシュ３を介してビデオメモリ２から読み出したテクスチャデータ２ｃと、早期フラグメントテストユニット９から入力したピクセル値とを用いてピクセルシェーダの処理を実行する。このとき、シェーダコア６は、命令キャッシュ４を介してビデオメモリ２からピクセルシェーダに関するシェーダプログラム２ｂの命令を読み込んで動作する。【００３１】
次に、シェーダコア６は、ピクセルシェーダの処理に引き続き、ピクセルキャッシュ５を介してフレームバッファ２ｄからデスティネーションデータを読み込んでアルファブレンドやラスタオペレーション処理を実行する。なお、アルファブレンド処理とは、二つの画像をアルファ値を用いて半透明合成する処理である。また、ラスタオペレーション処理とは、画像の重ね合わせ処理であり、例えば描画対象のピクセルとこれの背景となるディスティネーションデータのピクセルとを重ね合わせる。【００３２】
このように、ピクセルシェーダ処理以外の処理もシェーダコア６が逐次実行することで、ピクセルシェーダ処理以外の処理を実行する固定処理ハードウェアを省略でき、統合的に処理を実行することができる。上述のようにして演算された最終的なピクセル値は、シェーダコア６からピクセルキャッシュ５を介してフレームバッファ２ｄへ書き込まれる。【００３３】
以上のように、この実施の形態１によれば、ラスタライザ８からの出力をシェーダプロセッサにフィードバックするフィードバックループを設けることにより、頂点シェーダとピクセルシェーダの処理をシーケンシャルに実行するシェーダコア６を一つのシェーダプロセッサから構成したので、従来のように頂点シェーダとピクセルシェーダに独立した２つのグラフィックスプロセッサを用いた場合に発生していたプロセッサのアイドル状態をなくすことができる。これにより、消費電力を低減でき、ハードウェア規模も削減することができる。【００３４】
なお、上記実施の形態１では、早期フラグメントテストユニット９をラスタライザ８とシェーダコア６との間のフィードバックループ上に設けた構成を説明したが、その機能をシェーダコア６に持たせることで、早期フラグメントテストユニット９を省略した構成にしてもよい。【００３５】
実施の形態２．
本実施の形態２は、ラスタライザからシェーダコアへのデータ転送にＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）を用いることにより、ラスタライザからシェーダキャッシュやピクセルキャッシュへのプリフェッチを行えるようにしたものである。【００３６】
図２は、この発明の実施の形態２による画像処理装置のシェーダコアの構成及びその動作を説明するための図である。本画像処理装置は、上記実施の形態１の構成において、ラスタライザ８からの出力を受ける早期フラグメントテストユニット９とピクセルシェーダ１６との間にＦＩＦＯ１５が設けられている。また、図において、シェーダコア６は、その機能を説明するため、頂点シェーダ１３、ジオメトリシェーダ１４、ピクセルシェーダ１６及びサンプルシェーダ１７に分解して記載しているが、実際にはこれらのシェーダの処理を統合して実行する一つのシェーダプロセッサにより構成される。【００３７】
頂点シェーダ１３ではリソース１０ａが使用されて頂点シェーダ処理が実行される。また、ジオメトリシェーダ１４ではリソース１０ｂが使用されてジオメトリシェーダ処理が実行される。さらに、ピクセルシェーダ１６ではリソース１１が使用されてピクセルシェーダ処理が実行される。サンプルシェーダ１７ではリソース１２が使用されてサンプルシェーダ処理が実行される。リソース１０ａ，１０ｂ，１１，１２としては、例えばシェーダプロセッサ内部のデータレジスタやアドレスレジスタ等の内部レジスタや、プログラムカウンタ等が考えられる。なお、図２において、図１と同一又はそれに相当する構成要素には同一符号を付して重複する説明を省略する。【００３８】
次に動作について説明する。
図３は、本発明の画像処理装置による３Ｄグラフィックス処理の一例を示す図である。実施の形態２による画像処理装置は、上記実施の形態１と基本的に同様な構成を有しているので、以降では図１及び図３に沿って動作を説明する。
頂点シェーダ１３は、シェーダキャッシュ３を介してビデオメモリ２から頂点データを読み出して頂点シェーディング処理を行う。このとき、シェーダコア６の内部レジスタ（プロセッサ内部のデータレジスタやアドレスレジスタ等）や、プログラムカウンタ等のリソースは、頂点シェーダ１３用のリソース１０ａが使用される。【００３９】
次に、頂点シェーダ１３による頂点シェーディング処理が終了すると、ジオメトリシェーダ１４の処理に移行する。ジオメトリシェーダ１４では、上記実施の形態１で説明したビューポート変換、カリング処理、プリミティブの組み立て処理が逐次実行される。このジオメトリシェーダ１４による処理にあたり、シェーダコア６の内部レジスタやプログラムカウンタ等のリソースは、リソース１０ａからジオメトリシェーダ１４用のリソース１０ｂへ切り替わる。このように、頂点シェーダ１３とジオメトリシェーダ１４とで別個のリソースを使用するので、ジオメトリシェーダプログラムは、頂点シェーダプログラムの終了状態に依存することなく実行され、単独のプログラムとしての記述が可能となる。【００４０】
ジオメトリシェーダ１４の処理が完了すると、その演算結果は、シェーダコア６からセットアップエンジン７へ出力される。セットアップエンジン７では、上記実施の形態１と同様に、シェーダコア６から出力されるプリミティブの頂点情報からポリゴンを構成するピクセルの表示画面上での座標値や色情報が算出され、その増分値が求められる。算出された増分値は、セットアップエンジン７からラスタライザ８に出力される。ラスタライザ８では、三角形の内外判定を行いながら頂点情報により決定される三角形をピクセルに分解（フラグメントの生成）し、三角形内のピクセルに対しセットアップエンジン７により算出された増分値を用いてインターポーレーションを行う。【００４１】
ラスタライザ８により算出されたピクセル情報は、早期フラグメントテストユニット９に出力される。早期フラグメントテストユニット９では、ラスタライザ８が算出した今から描画しようとするピクセル（フラグメント）のデプス値と、ピクセルキャッシュ５から読み出した以前のピクセルのデスティネーションデータにおけるデプス値とを比較する。このとき、比較結果が描画を許容すべき範囲内にあれば、テストに合格したものとして描画しようとしていたピクセルデータをＦＩＦＯ１５へ出力する。一方、比較結果が描画を許容すべき範囲外である場合は、テストに失敗したものとして描画する必要がないことから、当該ピクセルデータを後段のＦＩＦＯ１５に出力しない。【００４２】
同時に、ラスタライザ８は、ＦＩＦＯ１５に出力したピクセルのＸＹ座標値をピクセルプリフェッチアドレスとしてピクセルキャッシュ５へ出力する。ピクセルキャッシュ５はその座標を基にピクセルデータをプリフェッチする。このようにすることで、フレームバッファ２ｄに書き込まれた所望のピクセルデータを後で使用するとき、ピクセルキャッシュ５において、ミスヒットすることなくデータの読み出し及び書き込みが可能となる。また、同時に、ラスタライザ８は、テクスチャ座標値をテクスチャプリフェッチアドレスとしてシェーダキャッシュ３へ出力する。シェーダキャッシュ３はその座標を基にテクセルデータをプリフェッチする。【００４３】
このように、ＦＩＦＯ１５にピクセルデータやテクスチャデータを一旦格納し、ピクセルキャッシュ５やシェーダキャッシュ３によりピクセルとテクセルデータをプリフェッチすることにより、実際にピクセルやテクセルデータを使用するとき、ピクセルキャッシュ５やシェーダキャッシュ３にはデータが予め準備されており、キャッシュからの読み出しレイテンシを最小限に抑えることができる。【００４４】
ピクセルシェーダ１６は、ＦＩＦＯ１５から読み出したピクセル情報、及び、シェーダキャッシュ３から読み出したテクセルデータを用いて、ピクセルシェーディング処理に関する演算を実行する。このとき、内部レジスタ及びプログラムカウンタ等のシェーダプロセッサのリソースは、ピクセルシェーダ１６用のリソース１１が使用される。【００４５】
ピクセルシェーダ１６の処理が完了すると、サンプルシェーダ１７は、ピクセルシェーダ１６による演算結果を基に、アンチエイリアス処理、フラグメントテスト処理、プレンディング処理及びディザ処理を逐次実行する。このとき、内部レジスタ及びプログラムカウンタ等のシェーダプロセッサのリソースは、リソース１１からサンプルシェーダ１７用のリソース１２へ切り替わる。このように、ピクセルシェーダ１６とサンプルシェーダ１７とで別個のリソースを使用するので、サンプルシェーダプログラムは、ピクセルシェーダプログラムの終了状態に依存することなく実行され、単独のプログラムとしての記述が可能である。【００４６】
アンチエイリアス処理は、カバレッジ値を算出してエッジのジャギーを滑らかに見せる処理である。ブレンディング処理は、アルファブレンディング等の半透明処理を行なう。ディザ処理は、少ないカラービットの場合にディザをかける処理である。また、フラグメントテスト処理は、描画対象のフラグメントとして求められたピクセルを描画すべきか否かを判定する処理であり、アルファテスト、デプステスト（陰面消去）、ステンシルテストがある。これらの処理において、フレームバッファ２ｄのデスティネーションデータが必要な場合は、サンプルシェーダ１７によってピクセルキャッシュ５を介してピクセルデータ（カラー値、デプス値、ステンシル値）が読み出される。【００４７】
なお、アルファテストでは、書き込むピクセル（フラグメント）のアルファ値と、リファレンスとなるピクセルキャッシュ５から読み出したピクセルのアルファ値とを比較し、指定された比較関数に応じて描画するか否かが決定される。デプステスト（陰面消去）は、書き込むピクセル（フラグメント）のデプス値と、リファレンスとなるピクセルキャッシュ５から読み出したピクセルのデプス値とを比較し、比較関数に応じて描画するか否かを決定する処理である。ステンシルテストは、書き込むピクセル（フラグメント）のステンシル値と、リファレンスとなるピクセルキャッシュ５から読み出したピクセルのステンシル値とを比較し、比較関数に応じて描画するか否かを決定する処理である。【００４８】
サンプルシェーダ１７により演算処理されたピクセルデータは、ピクセルキャッシュ５へ書き込まれ、ピクセルキャッシュ５を介してビデオメモリ２のフレームバッファ２ｄに書き込まれる。【００４９】
なお、頂点シェーダ１３及びピクセルシェーダ１６は、アプリケーションプログラマによりそのプログラムを記述できるが、ジオメトリシェーダ１４及びサンプルシェーダ１７の処理はデバイスドライバ側で記述される固定処理であるので、アプリケーションプログラマへ開放されない場合が多い。【００５０】
以上のように、この実施の形態２によれば、各シェーダの処理はそれぞれに固有のリソースを用いて実行されるので、各シェーダプログラムにおいて互いのリソースの管理を考慮する必要がなく、一つのプロセッサ上で複数の処理プログラムを効率よく実行することができる。また、ＦＩＦＯ１５にピクセル情報を一旦格納し、ピクセルキャッシュ５やシェーダキャッシュ３によりピクセルとテクセルデータをプリフェッチする。これにより、実際にピクセルやテクセルデータを使用するとき、ピクセルキャッシュ５やシェーダキャッシュ３には、データが予め準備されており待ち時間による遅延が発生しない。つまり、キャッシュからの読み出しレイテンシを最小限に抑えることができる。【００５１】
図４は、本発明の画像処理装置におけるシェーダコアのプログラム配置の一例を示す図であり、頂点シェーダプログラム、ジオメトリプログラム、ピクセルシェーダプログラム及びサンプルプログラムからシェーダプログラムが構成される。これらのプログラムは、それぞれ図２における頂点シェーダ１３、ジオメトリシェーダ１４、ピクセルシェーダ１６、サンプルシェーダ１７のプログラムに相当する。また、これらプログラムは、順番に配置されている必要はなく、ランダムに任意のアドレスに配置されていてもよい。【００５２】
先ず、頂点シェーダプログラムにおいて、プログラムカウンタＡで指示される命令からその実行が開始される。頂点シェーダの処理が終了すると、プログラムカウンタはプログラムカウンタＡからプログラムカウンタＢに切り替わり、プログラムカウンタＢで指示された、ジオメトリプログラムの命令が実行される。以下同様にしてプログラムカウンタを切り替えることにより、ピクセルシェーダプログラムの命令、サンプルシェーダプログラムの命令が順次実行されていく。【００５３】
頂点シェーダプログラムとジオメトリプログラムは、プリミティブ単位で処理される。一方、ピクセルシェーダプログラム及びサンプルシェーダプログラムは、ピクセル単位で処理される。このため、例えば三角形に含まれるピクセル（フラグメント）が生成されている間、ピクセルシェーダプログラムとサンプルシェーダプログラムが、そのピクセルの数だけ繰り返し実行される。つまり、プログラムカウンタＣとプログラムカウンタＤを切り替えながら実行される。そして、三角形に含まれるピクセルの処理が全て終了すると、プログラムカウンタは、再びプログラムカウンタＡに切り替わり、次の頂点のための頂点シェーダプログラムが実行される。【００５４】
このように、各シェーダ間でプログラムカウンタを切り替えることにより、任意のアドレスに格納されたシェーダプログラムを一つのプロセッサ上で実行することができる。また、予めシェーダプログラムを複数準備しておき、アプリケーションからの要求や描画モード等により、それらシェーダプログラムを適宜選択して実行することも可能となる。【００５５】
実施の形態３．
本実施の形態３は、シェーダコアの演算器構成と命令セットとを動的に再構成することにより、各シェーダプログラムに最適な演算器構成で効率良く処理できるようにしたものである。【００５６】
図５は、この発明の実施の形態３による画像処理装置のシェーダコアの演算器構成を示す図である。図において、実施の形態３によるシェーダコア６は、入力レジスタ１８ａ〜１８ｄ、クロスバースイッチ１９、レジスタファイル２０〜２４、積和演算器（演算器）２５〜２８、スカラ演算器（演算器）２９、出力レジスタ３０〜３４、ｆｐ３２命令デコーダ（命令デコーダ）３５、ｆｐ１６命令デコーダ（命令デコーダ）３６及びシーケンサ３７を備える。【００５７】
入力レジスタ１８ａ，１８ｂ，１８ｃ，１８ｄには、例えばピクセルの位置座標を処理する場合、他の画像ブロックから出力されたピクセルの位置座標Ｘ，Ｙ，Ｚ，Ｗのデータがそれぞれ格納される。また、カラーを処理する場合であれば、カラーデータＲ，Ｇ，Ｂ，Ａが入力レジスタ１８ａ，１８ｂ，１８ｃ，１８ｄにそれぞれ格納される。さらに、テクスチャ座標を処理する場合は、テクスチャ座標Ｓ，Ｔ，Ｒ，Ｑが入力レジスタ１８ａ，１８ｂ，１８ｃ，１８ｄにそれぞれ保持されるデータとなる。また、任意のスカラデータが格納されることもある。【００５８】
クロスバースイッチ１９は、シーケンサ３７からの制御信号に従って、入力レジスタ１８ａ〜１８ｄやシェーダキャッシュ３からのデータ、積和演算器２５〜２８及びスカラ演算器２９からの出力の各成分を任意に選択してレジスタファイル２０〜２４へそれぞれ出力する。レジスタファイル２０〜２３には、クロスバースイッチ１９により選択された、入力レジスタ１８ａ〜１８ｄやシェーダキャッシュ３からのスカラデータ以外のデータ、積和演算器２５〜２８からの出力値が格納される。また、レジスタファイル２４には、クロスバースイッチ１９により選択された、入力レジスタ１８ａ〜１８ｄやシェーダキャッシュ３からのスカラデータ、スカラ演算器２９からの出力値が格納される。【００５９】
積和演算器２５〜２８は、レジスタファイル２０〜２３から入力されるデータに対して積和演算処理を実行し、演算結果を出力レジスタ３０〜３３にそれぞれ出力する。これら４つの積和演算器２５〜２８を用いることにより、４−ＳＩＭＤ形式で演算処理を行なうことができる。つまり、頂点の位置座標（Ｘ，Ｙ，Ｚ，Ｗ）の演算を一度に処理することができる。【００６０】
また、スカラ演算器２９は、レジスタファイル２４から入力されるスカラデータ（図中にＳａ，Ｓｂと表記）に対してスカラ演算処理を実行し、演算結果を出力レジスタ３４にそれぞれ出力する。ここで、スカラ演算器２９によるスカラ演算とは、積和以外の演算処理である除算、累乗、ｓｉｎ／ｃｏｓ等の特殊演算である。出力レジスタ３０〜３４は、演算器の演算結果を一時記憶し、ピクセルキャッシュ５又はセットアップエンジン７へ出力する。【００６１】
ここで、積和演算器の内部構成を説明する。例えば、積和演算器２５は、分配器２５ａ、２個の擬似１６ビット演算器（図中、擬似ｆｐ１６演算器と表記）（演算ユニット）２５ｂ、１６−３２ビット変換演算器（図中、ｆｐ１６→３２変換演算器と表記）（変換ユニット）２５ｃを含んで構成される。分配器２５ａは、シーケンサ３７からの制御信号で指定された演算モードが３２ビット演算モードである場合、３２ビットフォーマットの演算データを上位／下位の２個の１６ビットフォーマット形式のデータに分割し、２個の擬似１６ビット演算器２５ｂへそれぞれ出力する。【００６２】
擬似１６ビット演算器２５ｂは、擬似１６ビットフォーマット（符号：指数：仮数＝１：８：１５）形式の演算を行い、ｆｐ１６ビットフォーマット形式のデータを出力する。また、１６−３２ビット変換演算器２５ｃは、上位／下位の２個の擬似１６ビットフォーマットを３２ビット浮動小数点フォーマット（符号：指数：仮数＝１：８：２３）へ変換する。【００６３】
なお、ｆｐ３２命令デコーダ３５は、３２ビット浮動小数点フォーマット形式を使って４−ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ／Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）で動作させるための命令コードをデコードする。ｆｐ１６命令デコーダは、１６ビット浮動小数点フォーマット形式を使って８−ＳＩＭＤで動作させるための命令コードをデコードする。シーケンサ３７は、ｆｐ３２命令デコーダ３５又はｆｐ１６命令デコーダ３６からの要求に応じて、クロスバースイッチ１９、レジスタファイル２０〜２４、積和演算器２５〜２８、スカラ演算器２９に対して制御信号を出力する。【００６４】
次に動作について説明する。
命令キャッシュ４から読み出された命令コードが、３２ビット浮動小数点フォーマット形式を使って４−ＳＩＭＤで動作させるための命令コード（ｆｐ３２命令）である場合、ｆｐ３２命令デコーダ３５が当該命令コードをデコードし、その命令に応じた要求をシーケンサ３７に出力する。一方、命令キャッシュ４から読み出された命令コードが、１６ビット浮動小数点フォーマット形式を使って８−ＳＩＭＤで動作させるための命令コード（ｆｐ１６命令）である場合、ｆｐ１６命令デコーダ３６が当該命令コードをデコードし、その命令に応じた要求をシーケンサ３７に出力する。【００６５】
シーケンサ３７は、ｆｐ３２命令デコーダ３５又はｆｐ１６命令デコーダ３６から入力された要求に応じて、クロスバースイッチ１９、レジスタファイル２０〜２４、積和演算器２５〜２８、スカラ演算器２９に対して制御信号を出力する。例えば、入力レジスタ１８ａ，１８ｂ，１８ｃ，１８ｄからクロスバースイッチ１９に出力されたデータとして、位置座標（Ｘａ，Ｙａ，Ｚａ，Ｗａ）と位置座標が（Ｘｂ，Ｙｂ，Ｚｂ，Ｗｂ）があったものとする。ここで、ｆｐ３２命令デコーダ３５又はｆｐ１６命令デコーダ３６から入力された要求が加算処理であった場合、シーケンサ３７は、クロスバースイッチ１９に制御信号を出力して、これら位置座標（Ｘａ，Ｙａ，Ｚａ，Ｗａ）、（Ｘｂ，Ｙｂ，Ｚｂ，Ｗｂ）をレジスタファイル２０〜２３にそれぞれ出力させる。【００６６】
さらに、シーケンサ３７は、レジスタファイル２０〜２３を制御して、１６ビット加算演算モードか３２ビット加算演算モードかに応じたデータを積和演算器２５〜２８へ出力させる。例えば、３２ビット加算演算モードであれば、レジスタファイル２０は、３２ビットフォーマットの座標値Ｘａ、Ｘｂを積和演算器２５に出力する。また、１６ビット加算演算モードの場合、レジスタファイル２０は、３２ビットフォーマットである座標値Ｘａ、Ｘｂを上位／下位の１６ビットフォーマット形式にそれぞれ分けたデータＸ０ａ，Ｘ１ａ、Ｘ０ｂ，Ｘ１ｂを生成して積和演算器２５に出力する。【００６７】
１６ビット加算演算モードにおいて、分配器２５ａは、レジスタファイル２０から入力されたＸ０ａ，Ｘ１ａ、Ｘ０ｂ，Ｘ１ｂのうち、データＸ０ａ，Ｘ０ｂを一方の擬似１６ビット演算器２５ｂに出力し、データＸ１ａ，Ｘ１ｂを他方の擬似１６ビット演算器２５ｂに出力する。これにより、２つの擬似１６ビット演算器２５ｂは、１６ビット浮動小数点フォーマット（符号：指数：仮数＝１：５：１５）形式で同時に加算演算をそれぞれ行い、１６ビットフォーマットの２個の演算結果としてＸ０＝Ｘ０ａ＋Ｘ０ｂ及びＸ１＝Ｘ１ａ＋Ｘ１ｂを出力レジスタ３０に出力する。【００６８】
一方、３２ビット浮動小数点モードにおいて、分配器２５ａは、３２ビットフォーマットの座標値Ｘａ、Ｘｂを上位／下位の２個の１６ビットフォーマット形式へ分割し、２つの擬似１６ビット演算器２５ｂにそれぞれ出力する。２つの擬似１６ビット演算器２５ｂでは、入力したデータについて加算演算を行い、１６−３２ビット変換演算器２５ｃに出力する。１６−３２ビット変換演算器２５ｃでは、２個の擬似１６ビット演算器から出力される上位／下位の擬似１６ビットフォーマットの演算結果を１個の３２ビットフォーマットへ変換し、３２ビットフォーマットの演算結果としてＸ＝Ｘａ＋Ｘｂを出力レジスタ３０に出力する。なお、積和演算器２６，２７，２８及びスカラ演算器２９についても、同様な方式で演算処理が行われる。【００６９】
このようにして、複数の命令デコーダとそれに応じた演算器を用いることにより、演算フォーマットに応じて演算器構成を再構成することができ、演算フォーマットの異なる演算を効率よく実行することができる。例えば、ｆｐ３２命令とｆｐ１６命令を動的に切り替えることにより、４−ＳＩＭＤの３２ビット浮動小数点演算と８−ＳＩＭＤの１６ビット浮動小数点演算を使い分けながら実行することができる。【００７０】
一般に、頂点シェーダ処理は３２ビット浮動小数点フォーマットで、ピクセルシェーダ処理は１６ビット浮動小数点フォーマットで演算されることが多い。従って、頂点シェーダ処理をｆｐ３２命令で、ピクセルシェーダ処理をｆｐ１６命令で実行させれば、これらの処理を一連の処理として実行できる。これにより、頂点シェーダ処理及びピクセルシェーダ処理の実行に必要なハードウェア演算リソースを最大限に有効活用することができ、命令の語長も小さくなる。【００７１】
また、命令フォーマットを動的に変更することにより、演算フォーマットだけでなく、演算命令の種類についても頂点シェーダ処理、ジオメトリシェーダ処理、ピクセルシェーダ処理、サンプルシェーダ処理の各々に最適な命令セットを用意することが可能となる。【００７２】
例えば、下記のように、頂点シェーダ処理では４×４のマトリクス演算が多用され、ピクセルシェーダ処理ではフィルタ処理等で必要な線形補間演算が多用される傾向がある。
（１）マトリクス演算
Ｘ＝Ｍ００＊Ａ＋Ｍ０１＊Ｂ＋Ｍ０２＊Ｃ＋Ｍ０３＊Ｄ
Ｙ＝Ｍ１０＊Ａ＋Ｍ１１＊Ｂ＋Ｍ１２＊Ｃ＋Ｍ１３＊Ｄ
Ｚ＝Ｍ２０＊Ａ＋Ｍ２１＊Ｂ＋Ｍ２２＊Ｃ＋Ｍ２３＊Ｄ
Ｗ＝Ｍ３０＊Ａ＋Ｍ３１＊Ｂ＋Ｍ３２＊Ｃ＋Ｍ３３＊Ｄ
但し、Ｍ００〜Ｍ３３は４×４のマトリクスの各要素である。
（２）線形補間処理
補間値Ｃ＝Ａｒｇ０＊Ａｒｇ２＋Ａｒｇ１＊（１−Ａｒｇ２）【００７３】
頂点シェーダ処理における位置座標（Ｘ，Ｙ，Ｚ，Ｗ）の演算では、例えば（Ｘ，Ｙ，Ｚ，Ｗ）成分に対して４×４のマトリクス演算を一度に実行する。そこで、図６の上段に示すような（Ｘ，Ｙ，Ｚ，Ｗ）成分に対して４−ＳＩＭＤによる演算を行う命令フォーマットの４ＳＩＭＤ命令を使用する。【００７４】
また、ピクセルシェーダ処理におけるカラー演算では、（Ｒ，Ｇ，Ｂ）成分と（Ａ）成分に対して異なる演算を施すことが多い。そこで、図６の中段に示すように、３−ＳＩＭＤと１−ＳＩＭＤの組み合わせで演算を行う命令フォーマットを使用するようにしてもよい。【００７５】
一方、テクスチャアドレスの演算では、マルチテクスチャなどのように（Ｓ０，Ｔ０）成分と（Ｓ１，Ｔ１）成分を同時に演算する方がよく、図６の下段に示すように、２−ＳＩＭＤと２−ＳＩＭＤの組み合わせで演算する命令フォーマットの方が効率的である。【００７６】
以上のように、この実施の形態３によれば、３２ビットの演算フォーマットでの演算処理を指定する命令コードをデコードするｆｐ３２命令デコーダ３５と、１６ビットの演算フォーマットでの演算処理を指定する命令コードをデコードするｆｐ１６命令デコーダ３６と、２個の擬似１６ビット演算器２５ｂ及び１６ビットから３２ビットへ演算フォーマットを変換する１６−３２ビット変換演算器２５ｃを有し、演算器２５ｂによる演算又はその演算結果を１６−３２ビット変換演算器２５ｃにより演算フォーマット変換することで、各命令コードに対応した演算フォーマットデータの演算を行う複数の演算器２５〜２９と、シェーダ処理に必要なデータを入力し、当該入力データから各演算器２５〜２９の演算対象データを選択するクロスバースイッチ１９と、ｆｐ３２命令デコーダ３５又はｆｐ１６命令デコーダ３６がデコードした命令に従ってクロスバースイッチ１９のデータ選択及びデータ演算を行う演算器２５〜２９の内部演算器の組み合わせを決定することにより、演算器２５〜２９による各命令コードに対応した演算フォーマットのデータ演算を制御するシーケンサ３７とを含むプロセッサでシェーダコア６を構成したので、各シェーダ間で使用頻度の高い演算命令を準備して演算の並列度を用途により変更することが可能となり、演算フォーマットの異なる演算を効率よく実行することができる。また、同一ハードウェア上で最適な処理を効率よく実行することが可能となる。さらに、命令フォーマットを動的に変更することにより、取り扱うグラフィクスＡＰＩに応じて最適な命令セットを選択できるという効果も得られる。【００７７】
実施の形態４．
本実施の形態４は、上記実施の形態１から３までに示した画像処理装置の主要構成部を統合シェーダパイプラインとして複数個並列に動作されることで、画像処理の処理性能を向上させたものである。【００７８】
図７は、この発明の実施の形態４による画像処理装置の構成を示す図である。図において、統合シェーダパイプライン３９−０，３９−１，３９−２，３９−３，・・・はそれぞれ並列に配置され、シェーダキャッシュ３、シェーダコア６、セットアップエンジン７、ラスタライザ８及び早期フラグメントテストユニット９を含んで構成される。これら構成要素の基本的な動作は、上記実施の形態１で説明したものと同様である。但し、シェーダキャッシュ３は、上記実施の形態１で示したピクセルキャッシュ５の機能も有し、シェーダコア６による演算により最終的に得られたピクセルデータを格納する。【００７９】
ビデオメモリ２Ａは、統合シェーダパイプライン３９−０，３９−１，３９−２，３９−３，・・・に共通に設けられる。コマンドデータ分配器３８は、ビデオメモリ２Ａに格納されたシェーダプログラムの命令やジオメトリデータの頂点データを読み出して、各統合シェーダパイプライン３９−０，３９−１，３９−２，３９−３，・・・のシェーダコア６に分配する。レベル２キャッシュ４０は、各統合シェーダパイプライン３９−０，３９−１，３９−２，３９−３，・・・による演算結果のピクセルデータを一時的に保持してビデオメモリ２Ａに設けられたフレームバッファ領域に転送する。【００８０】
次に動作について説明する。
描画処理にあたり、描画対象の物体の画像を構成する頂点情報や光源からの光に関する情報等のジオメトリデータ、シェーダコア６としてプロセッサを動作させるためのシェーダプログラム、テクスチャデータが不図示の主記憶装置からビデオメモリ２Ａに予め転送される。【００８１】
コマンドデータ分配器３８は、ビデオメモリ２Ａに格納されたシーンに含まれる頂点データを読み出して三角形ストリップや三角形ファン等の単位に分解し、シェーダプログラムの命令コード（コマンド）と共に、統合シェーダパイプライン３９−０，３９−１，３９−２，３９−３，・・・の各シェーダコア６へ順番に転送する。このとき、コマンドデータ分配器３８は、転送先の統合シェーダパイプラインがビジー状態であれば、次のアイドル状態の統合シェーダパイプラインへ転送する。これにより、各統合シェーダパイプラインのシェーダコア６は、ジオメトリデータを用いた幾何学演算処理やライティング演算処理等の頂点シェーダの処理を実行する。【００８２】
各統合シェーダパイプラインにおいて、シェーダコア６は、上記実施の形態１と同様に、頂点シェーダ処理に引き続き、カリング、ビューポート変換、プリミティブの組み立て処理を実行し、処理結果として算出されたプリミティブの頂点情報をセットアップエンジン７に出力する。【００８３】
セットアップエンジン７では、シェーダコア６から出力されるプリミティブの頂点情報からポリゴンを構成するピクセルの表示画面上での座標値や色情報を算出し、その増分値を求める。ラスタライザ８は、三角形の内外判定を行いながら頂点情報により決定される三角形をピクセルに分解し、三角形内のピクセルに対しセットアップエンジン７により算出された増分値を用いてインターポーレーションを行う。【００８４】
早期フラグメントテストユニット９は、ラスタライザ８が算出した今から描画しようとするピクセル（ソース）のデプス値と、ピクセルキャッシュ５から読み出した以前のピクセルのデスティネーションデータ（表示画面）におけるデプス値とを比較する。このとき、比較結果が描画を許容すべき範囲内にあれば、テストに合格したものとして描画しようとしていたピクセルデータをシェーダコア６にフィードバックして描画処理を継続する。一方、比較結果が描画を許容すべき範囲外である場合は、テストに失敗したものとして描画する必要がないことから、当該ピクセルデータを後段のシェーダコア６に出力しない。【００８５】
続いて、コマンドデータ分配器３８は、ビデオメモリ２Ａからテクスチャデータを読み出してピクセルシェーダに関するシェーダプログラムの命令コードと共に、統合シェーダパイプライン３９−０，３９−１，３９−２，３９−３，・・・の各シェーダコア６へ順番に転送する。シェーダコア６では、コマンドデータ分配器３８からのピクセル情報と、早期フラグメントテストユニット９から入力したピクセル情報とを用いてピクセルシェーダの処理を実行する。【００８６】
次に、シェーダコア６は、ピクセルシェーダの処理に引き続き、コマンドデータ分配器３８によってビデオメモリ２Ａのフレームバッファからデスティネーションデータを読み込んでアルファブレンドやラスタオペレーション処理を実行する。【００８７】
統合シェーダパイプライン３９−０，３９−１，３９−２，３９−３，・・・の各シェーダコア６は、統合シェーダパイプライン毎に演算された最終的なピクセルデータをシェーダキャッシュ３に一時的に格納する。この後、シェーダキャッシュ３から最終的なピクセルデータの演算値がレベル２キャッシュ４０へ書き込まれる。そして、レベル２キャッシュ４０を介して当該ピクセルデータがビデオメモリ２Ａのフレームバッファ領域へ転送される。【００８８】
以上のように、この実施の形態４によれば、頂点シェーダ処理とピクセルシェーダ処理を統合して実行する統合シェーダパイプラインを複数個並列に配置し、各統合シェーダパイプラインに対してコマンド及び処理対象データの分配を行うコマンドデータ分配器３８を設けたので、マルチスレッド型の統合シェーダパイプラインを用いれば並列処理が可能であり、頂点シェーダ処理及びピクセルシェーダ処理のスループットを向上させることができる。また、並列配置する統合シェーダパイプラインの個数を目的に応じて変更することにより、ハードウェア規模が限定される組み込み向け分野からハイエンド向けまで柔軟に幅広く対応することができる。
【産業上の利用可能性】
【００８９】
以上のように、この発明に係る、頂点シェーダとピクセルシェーダの処理負荷のアンバランスを解消し、処理を効率よく実行させる画像処理装置は、表示画面上に３Dコンピュータグラフィクスなどの画像を表示する画像処理装置であり、特に組み込み向け用途でハードウェア規模を小さく抑える必要がある携帯端末機器などに用いるのに適している。
【図１】
2007049610.tif 000003
【図２】
2007049610.tif 000004
【図３】
2007049610.tif 000005
【図４】
2007049610.tif 000006
【図５】
2007049610.tif 000007
【図６】
2007049610.tif 000008
【図７】
2007049610.tif 000009
【図８】
2007049610.tif 000010
【国際調査報告】
2007049610.tif 000011
2007049610.tif 000012
2007049610.tif 000013
2007049610.tif 000014