JPWO2007049610A1 - 画像処理装置 - Google Patents
画像処理装置 Download PDFInfo
- Publication number
- JPWO2007049610A1 JPWO2007049610A1 JP2007521167A JP2007521167A JPWO2007049610A1 JP WO2007049610 A1 JPWO2007049610 A1 JP WO2007049610A1 JP 2007521167 A JP2007521167 A JP 2007521167A JP 2007521167 A JP2007521167 A JP 2007521167A JP WO2007049610 A1 JPWO2007049610 A1 JP WO2007049610A1
- Authority
- JP
- Japan
- Prior art keywords
- shader
- pixel
- data
- processing
- image processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/121—Frame memory handling using a cache memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/18—Use of a frame buffer in a display terminal, inclusive of the display panel
Abstract
頂点シェーダ処理とピクセルシェーダ処理を逐次実行するシェーダプロセッサと、シェーダプロセッサにより頂点シェーダ処理されたデータに基づいて、ピクセルシェーダ処理に必要なピクセルデータを生成するラスタライザ部と、ラスタライザ部から出力されたピクセルデータを、頂点シェーダ処理に引き続くピクセルシェーダ処理の対象としてシェーダプロセッサにフィードバックするフィードバックループとを備える。
Description
この発明は、表示画面上にコンピュータグラフィックス画像を表示する画像処理装置に係り、特に頂点のジオメトリ処理とピクセルの描画処理をプログラマブルに実行する画像処理装置に関するものである。
一般に、3Dグラフィクスの処理は、座標変換やライティング計算などを行なうジオメトリ処理と、三角形などをピクセルに分解してテクスチャマッピングなどを施してフレームバッファへ描画するレンダリング処理とに分類できる。近年、API(Application Programming Interfaces)で予め決められた古典的なジオメトリ処理やレンダリング処理を用いるのではなく、プログラマブルなグラフィクスアルゴリズムによるフォトリアルな表現手法が用いられるようになってきた。この手法の一つとして、頂点シェーダとピクセルシェーダ(フラグメントシェーダとも呼ばれる)がある。これら頂点シェーダ及びピクセルシェーダを搭載するグラフィクスプロセッサには、例えば非特許文献1に示すようなものがある。
頂点シェーダは、例えばアセンブリ言語や高レベルのシェーディング言語によりプログラムされる画像処理プログラムであり、アプリケーションプログラマ自身のアルゴリズムをハードウェアでアクセラレーションすることができる。また、頂点シェーダでは、モデリングデータを変えることなく、頂点データに対して移動、変形、回転、ライティング処理などを自由に加えることができる。これにより、3Dモーフィング、屈折エフェクト、スキニング(関節などの頂点の不連続部分を滑らかに表現する)などが可能となり、CPUに負荷をかけずにリアリスティックな表現が可能である。
ピクセルシェーダは、ピクセル単位でプログラマブルなピクセル演算をするためのものであり、頂点シェーダと同様にアセンブリ言語や高レベルのシェーディング言語を用いてプログラムする。これにより、ピクセルシェーダでは、テクスチャデータとして法線ベクトルを用いてピクセル単位でライティング処理を行なったり、テクスチャデータとして摂動データを用いてバンプマップを行なうなどの処理が可能となる。
また、ピクセルシェーダは、テクスチャアドレスの計算手法を変えるだけでなく、テクスチャカラーとピクセルのブレンド演算もプログラマブルに行なうことができる。これにより、階調反転、色空間の変換などの画像処理も可能である。一般的に、頂点シェーダとピクセルシェーダは組み合わせて用いられ、頂点処理とピクセル処理を組み合わせることにより多彩な表現が可能となる。
頂点シェーダやピクセルシェーダには、4−SIMD形式の演算ハードウェアやDSPのような特殊プロセッサが用いられることが多く、位置座標[x,y,z,w]、カラー[r,g,b,a]、テクスチャ座標[s,t,p,q]などの各4要素が並列に演算処理される。演算フォーマットとしては、32ビット浮動小数点(符号:指数:仮数=1:8:23)や16ビット浮動小数点(符号:指数:仮数=1:5:15)が使用される。
Cem Cebenoyan and Matthias Wloka, "Optimizing the Graphics Pipeline", GDC 2003 NVIDIA presentation.
頂点シェーダの処理に要する時間は、頂点演算の手法や光源の数などの影響を受ける。例えば、ディスプレイスメント・マッピングにより頂点の位置情報に変換を加えたり、光源の数が多くなると頂点処理にかかる時間が大きくなる。一方、ピクセルシェーダでの処理時間は、そのプリミティブに含まれるピクセル数やピクセルシェーダ演算の複雑度の影響を受ける。例えば、ポリゴンに含まれるピクセルの数が多かったり、ピクセルシェーダの中でサンプルするテクスチャ数が多いと、処理に要する時間が大きくなる。
図8は、非特許文献1に示される従来の画像処理装置の構成を示す図であり、一例として頂点シェーダとピクセルシェーダを搭載するグラフィクスプロセッサを示している。当該グラフィックスプロセッサにおいて、描画処理に先立ち、ビデオメモリ101には、システムメモリ100からジオメトリデータ(物体を構成する頂点情報や光源の情報など)101a、コマンド101b、テクスチャデータ101cが予め転送されているものとする。また、ビデオメモリ101には、フレームバッファ101dとしての記憶領域も設けられる。
頂点シェーダ104は、前段T&Lキャッシュ102から必要な頂点情報を読み出して幾何学演算処理を行い、演算結果を後段T&Lキャッシュ105へ書き込む。三角形セットアップ106は、後段T&Lキャッシュ105に書き込まれた演算結果から3個の頂点データを読み出して描画処理に必要な増分値などの計算を行う。ラスタライザ107は、その増分値を用いてピクセルの補間処理を行ない、三角形をピクセルに分解する。
フラグメントシェーダ108は、ラスタライザ107で生成されたテクスチャ座標を使ってテクスチャキャッシュ103からテクセルデータを読み出し、読み出したテクセルデータとカラーデータのブレンド処理などを行なう。最後に、ビデオメモリ101のフレームバッファ101dとの間で論理演算(ラスターオペレーション)などを行い、最終カラーをフレームバッファ101dへ書き込む。
図8に示したような従来の画像処理装置の構成では、頂点シェーダとピクセルシェーダとが独立したプロセッサとして実装される。ここで、頂点シェーダとピクセルシェーダの処理のバランスがとれているときは、効率よくパイプライン処理される。しかしながら、例えば小さなポリゴンであって、これに含まれるピクセル数が少ない画像データであると、ピクセルシェーダ処理に対して頂点シェーダの処理がボトルネックとなり、ピクセルシェーダが頻繁にアイドル状態となってしまう。逆に、大きなポリゴンであって、これに含まれるピクセル数が多くなると、ピクセルシェーダの処理がボトルネックとなり、頂点シェーダが頻繁にアイドル状態となってしまう。
一般のアプリケーションでは、この頂点処理とピクセル処理の関係がアンバランスで、処理の負荷がどちらか一方に偏る傾向が高い。例えば、携帯電話向けアプリケーションにおいて、頂点処理とピクセル処理をパイプライン処理させた場合とさせない場合を比較したところ、処理性能が約10%しか向上しなかったという報告もある。
さらに、頂点シェーダもピクセルシェーダも4−SIMD形式のFPUを搭載していることが多く、ハードウェア規模はかなり大きい。それにもかかわらず、どちらか一方のシェーダがアイドル状態になるということは搭載された演算ハードウェアが効率的に動作していないことを意味し、無駄なハードウェアを搭載していることと等価になってしまう。これは、特に組み込み向け用途などでハードウェア規模を小さく抑える必要がある分野において大きな問題となる。また、ゲート規模が増加すると消費電力も増加してしまう。
この発明は、上記のような課題を解決するためになされたもので、頂点シェーダとピクセルシェーダの処理負荷のアンバランスを解消し、頂点シェーダとピクセルシェーダの処理を効率よく実行することができる画像処理装置を得ることを目的とする。
この発明に係る画像処理装置は、頂点シェーダ処理とピクセルシェーダ処理を逐次実行するシェーダプロセッサと、シェーダプロセッサにより頂点シェーダ処理されたデータに基づいて、ピクセルシェーダ処理に必要なピクセルデータを生成するラスタライザ部と、ラスタライザ部から出力されたピクセルデータを、頂点シェーダ処理に引き続くピクセルシェーダ処理の対象としてシェーダプロセッサにフィードバックするフィードバックループとを備えるものである。
この発明によれば、頂点シェーダ処理とピクセルシェーダ処理を逐次実行するシェーダプロセッサと、シェーダプロセッサにより頂点シェーダ処理されたデータに基づいて、ピクセルシェーダ処理に必要なピクセルデータを生成するラスタライザ部と、ラスタライザ部から出力されたピクセルデータを、頂点シェーダ処理に引き続くピクセルシェーダ処理の対象としてシェーダプロセッサにフィードバックするフィードバックループとを備えるので、同一のプロセッサにより頂点シェーダ処理とピクセルシェーダ処理が逐次実行されることから、頂点シェーダとピクセルシェーダの処理負荷のアンバランスが解消され、頂点シェーダ処理とピクセルシェーダ処理を効率よく実行することができるという効果がある。
以下、この発明をより詳細に説明するために、この発明を実施するための最良の形態について、添付の図面に従って説明する。
実施の形態1.
図1は、この発明の実施の形態1による画像処理装置の構成を示すブロック図である。本実施の形態1による画像処理装置は、主記憶装置1、ビデオメモリ2、シェーダキャッシュ(キャッシュメモリ)3、命令キャッシュ(キャッシュメモリ)4、ピクセルキャッシュ(キャッシュメモリ)5、シェーダコア6、セットアップエンジン7、ラスタライザ(ラスタライザ部)8及び早期フラグメントテストユニット(フラグメントテスト部)9を含んで構成される。主記憶装置1は、描画処理の対象となる物体等の画像を構成する頂点情報や光源の照度等の光に関する情報(ライティング計算用データ)を含むジオメトリデータ2a、本画像処理装置のプロセッサをシェーダコア6として機能させるためのシェーダプログラム2b、及びテクスチャデータ2cを記憶する。
実施の形態1.
図1は、この発明の実施の形態1による画像処理装置の構成を示すブロック図である。本実施の形態1による画像処理装置は、主記憶装置1、ビデオメモリ2、シェーダキャッシュ(キャッシュメモリ)3、命令キャッシュ(キャッシュメモリ)4、ピクセルキャッシュ(キャッシュメモリ)5、シェーダコア6、セットアップエンジン7、ラスタライザ(ラスタライザ部)8及び早期フラグメントテストユニット(フラグメントテスト部)9を含んで構成される。主記憶装置1は、描画処理の対象となる物体等の画像を構成する頂点情報や光源の照度等の光に関する情報(ライティング計算用データ)を含むジオメトリデータ2a、本画像処理装置のプロセッサをシェーダコア6として機能させるためのシェーダプログラム2b、及びテクスチャデータ2cを記憶する。
ビデオメモリ2は、画像処理専用の記憶装置であり、本画像処理装置の画像処理にあたり、主記憶装置1からジオメトリデータ2a、シェーダプログラム2b、テクスチャデータ2cが予め転送される。また、ビデオメモリ2には、ピクセルキャッシュ5から最終的な演算処理が施されたピクセルデータが適宜書き込まれる記憶領域が設けられ、フレームバッファ2dの領域として使用される。なお、ビデオメモリ2と主記憶装置1とは同一メモリとして構成してもよい。
シェーダキャッシュ(キャッシュメモリ)3には、ジオメトリデータ2aやテクスチャデータ2cがビデオメモリ2から読み出されて保持される。このシェーダキャッシュ3の記憶データは、シェーダコア6による画像処理に際し、シェーダコア6に適宜読み出されてその処理に利用される。命令キャッシュ(キャッシュメモリ)4には、シェーダコア6を動作させるために必要な命令がビデオメモリ2のシェーダプログラム2bから読み出されて保持される。シェーダプログラム2bの命令は、命令キャッシュ4を介してシェーダプロセッサに読み出されて実行され、シェーダコア6として動作する。ピクセルキャッシュ(キャッシュメモリ)5では、フレームバッファ2dに記憶されたビデオメモリ2のディスティネーションデータが保持されてシェーダコア6に読み出され、演算処理が施された最終のピクセル値が保持されてフレームバッファ2dに書き込まれる。
シェーダコア6は、命令キャッシュ4を介して読み出されるシェーダプログラム2bの命令を実行する一つのシェーダプロセッサにより構成され、シェーダキャッシュ3及びピクセルキャッシュ5を介して画像処理に必要なデータを読み出して頂点シェーダに関する処理とピクセルシェーダに関する処理の双方をシーケンシャルに実行する。セットアップエンジン7は、シェーダコア6から出力されるプリミティブの頂点情報からインターポーレーションに必要な増分値を算出する。
ラスタライザ(ラスタライザ部)8は、三角形の内外判定を行いながら頂点情報により決定される三角形をピクセルに分解し、セットアップエンジン7により算出された増分値を用いてインターポーレーションを行う。早期フラグメントテストユニット(フラグメントテスト部)9は、ラスタライザ8とシェーダコア6との間のフィードバックループ上に設けられ、ラスタライザ8が算出したピクセルのデプス値とピクセルキャッシュ5から読み出したデスティネーションデータのデプス値とを比較し、比較結果に応じてピクセル値をシェーダコア6にフィードバックするか否かを判定する。
次に動作について説明する。
描画処理にあたり、描画対象の物体の画像を構成する頂点情報や光源からの光に関する情報等のジオメトリデータ2a、シェーダコア6としてプロセッサを動作させるためのシェーダプログラム2b、テクスチャデータ2cが主記憶装置1からビデオメモリ2に予め転送される。
描画処理にあたり、描画対象の物体の画像を構成する頂点情報や光源からの光に関する情報等のジオメトリデータ2a、シェーダコア6としてプロセッサを動作させるためのシェーダプログラム2b、テクスチャデータ2cが主記憶装置1からビデオメモリ2に予め転送される。
シェーダコア6は、シェーダキャッシュ3を介してビデオメモリ2から処理対象のジオメトリデータ2aを読み出して、ジオメトリデータ2aを用いた幾何学演算処理やライティング演算処理等の頂点シェーダの処理を実行する。このとき、シェーダコア6は、命令キャッシュ4を介してビデオメモリ2から頂点シェーダに関するシェーダプログラム2bの命令を読み込んで動作する。なお、シェーダプログラム2bの命令は、外部メモリである命令キャッシュ4に逐次格納されるので、命令の最大ステップ数が制限されることはない。
次に、シェーダコア6は、頂点シェーダ処理に引き続き、カリング、ビューポート変換、プリミティブの組み立て処理を実行し、処理結果として算出されたプリミティブの頂点情報をセットアップエンジン7に出力する。なお、カリング処理とは、頂点データにより規定されるポリゴン等の多面体の裏面を描画対象から破棄する処理である。ビューポート変換は、頂点データをデバイス座標系へ変換する処理である。また、プリミティブの組み立ては、ストリップのように一連に結合された三角形やファンのように一つの頂点を共有する三角形等を独立の三角形に再構成する処理である。
このように、頂点シェーダ処理以外の処理もシェーダコア6が逐次実行することで、頂点シェーダ処理以外の処理を実行する固定処理ハードウェアを省略でき、統合的に処理を実行することができる。
セットアップエンジン7では、シェーダコア6から出力されるプリミティブの頂点情報からポリゴンを構成するピクセルの表示画面上での座標値や色情報を算出し、その増分値を求める。算出された増分値は、セットアップエンジン7からラスタライザ8に出力される。ラスタライザ8は、三角形の内外判定を行いながら頂点情報により決定される三角形をピクセルに分解し、三角形内のピクセルに対しセットアップエンジン7により算出された増分値を用いてインターポーレーションを行う。三角形の内外判定は、例えば三角形内部に入り得るピクセルに対して三角形の辺を表す直線の方程式を評価し、三角形の辺の内側に対象とするピクセルが入っているか否かを判定することにより行われる。
早期フラグメントテストユニット9は、ラスタライザ8が算出した今から描画しようとするピクセル(ソース)のデプス値と、ピクセルキャッシュ5から読み出した以前のピクセルのデスティネーションデータ(表示画面)におけるデプス値とを比較する。このとき、比較結果が描画を許容すべき範囲内にあれば、テストに合格したものとして描画しようとしていたピクセルデータをシェーダコア6にフィードバックして描画処理を実行する。一方、比較結果が描画を許容すべき範囲外である場合は、テストに失敗したものとして描画する必要がないことから、当該ピクセルデータを後段のシェーダコア6に出力しない。
続いて、シェーダコア6は、シェーダキャッシュ3を介してビデオメモリ2から読み出したテクスチャデータ2cと、早期フラグメントテストユニット9から入力したピクセル値とを用いてピクセルシェーダの処理を実行する。このとき、シェーダコア6は、命令キャッシュ4を介してビデオメモリ2からピクセルシェーダに関するシェーダプログラム2bの命令を読み込んで動作する。
次に、シェーダコア6は、ピクセルシェーダの処理に引き続き、ピクセルキャッシュ5を介してフレームバッファ2dからデスティネーションデータを読み込んでアルファブレンドやラスタオペレーション処理を実行する。なお、アルファブレンド処理とは、二つの画像をアルファ値を用いて半透明合成する処理である。また、ラスタオペレーション処理とは、画像の重ね合わせ処理であり、例えば描画対象のピクセルとこれの背景となるディスティネーションデータのピクセルとを重ね合わせる。
このように、ピクセルシェーダ処理以外の処理もシェーダコア6が逐次実行することで、ピクセルシェーダ処理以外の処理を実行する固定処理ハードウェアを省略でき、統合的に処理を実行することができる。上述のようにして演算された最終的なピクセル値は、シェーダコア6からピクセルキャッシュ5を介してフレームバッファ2dへ書き込まれる。
以上のように、この実施の形態1によれば、ラスタライザ8からの出力をシェーダプロセッサにフィードバックするフィードバックループを設けることにより、頂点シェーダとピクセルシェーダの処理をシーケンシャルに実行するシェーダコア6を一つのシェーダプロセッサから構成したので、従来のように頂点シェーダとピクセルシェーダに独立した2つのグラフィックスプロセッサを用いた場合に発生していたプロセッサのアイドル状態をなくすことができる。これにより、消費電力を低減でき、ハードウェア規模も削減することができる。
なお、上記実施の形態1では、早期フラグメントテストユニット9をラスタライザ8とシェーダコア6との間のフィードバックループ上に設けた構成を説明したが、その機能をシェーダコア6に持たせることで、早期フラグメントテストユニット9を省略した構成にしてもよい。
実施の形態2.
本実施の形態2は、ラスタライザからシェーダコアへのデータ転送にFIFO(First In First Out)を用いることにより、ラスタライザからシェーダキャッシュやピクセルキャッシュへのプリフェッチを行えるようにしたものである。
本実施の形態2は、ラスタライザからシェーダコアへのデータ転送にFIFO(First In First Out)を用いることにより、ラスタライザからシェーダキャッシュやピクセルキャッシュへのプリフェッチを行えるようにしたものである。
図2は、この発明の実施の形態2による画像処理装置のシェーダコアの構成及びその動作を説明するための図である。本画像処理装置は、上記実施の形態1の構成において、ラスタライザ8からの出力を受ける早期フラグメントテストユニット9とピクセルシェーダ16との間にFIFO15が設けられている。また、図において、シェーダコア6は、その機能を説明するため、頂点シェーダ13、ジオメトリシェーダ14、ピクセルシェーダ16及びサンプルシェーダ17に分解して記載しているが、実際にはこれらのシェーダの処理を統合して実行する一つのシェーダプロセッサにより構成される。
頂点シェーダ13ではリソース10aが使用されて頂点シェーダ処理が実行される。また、ジオメトリシェーダ14ではリソース10bが使用されてジオメトリシェーダ処理が実行される。さらに、ピクセルシェーダ16ではリソース11が使用されてピクセルシェーダ処理が実行される。サンプルシェーダ17ではリソース12が使用されてサンプルシェーダ処理が実行される。リソース10a,10b,11,12としては、例えばシェーダプロセッサ内部のデータレジスタやアドレスレジスタ等の内部レジスタや、プログラムカウンタ等が考えられる。なお、図2において、図1と同一又はそれに相当する構成要素には同一符号を付して重複する説明を省略する。
次に動作について説明する。
図3は、本発明の画像処理装置による3Dグラフィックス処理の一例を示す図である。実施の形態2による画像処理装置は、上記実施の形態1と基本的に同様な構成を有しているので、以降では図1及び図3に沿って動作を説明する。
頂点シェーダ13は、シェーダキャッシュ3を介してビデオメモリ2から頂点データを読み出して頂点シェーディング処理を行う。このとき、シェーダコア6の内部レジスタ(プロセッサ内部のデータレジスタやアドレスレジスタ等)や、プログラムカウンタ等のリソースは、頂点シェーダ13用のリソース10aが使用される。
図3は、本発明の画像処理装置による3Dグラフィックス処理の一例を示す図である。実施の形態2による画像処理装置は、上記実施の形態1と基本的に同様な構成を有しているので、以降では図1及び図3に沿って動作を説明する。
頂点シェーダ13は、シェーダキャッシュ3を介してビデオメモリ2から頂点データを読み出して頂点シェーディング処理を行う。このとき、シェーダコア6の内部レジスタ(プロセッサ内部のデータレジスタやアドレスレジスタ等)や、プログラムカウンタ等のリソースは、頂点シェーダ13用のリソース10aが使用される。
次に、頂点シェーダ13による頂点シェーディング処理が終了すると、ジオメトリシェーダ14の処理に移行する。ジオメトリシェーダ14では、上記実施の形態1で説明したビューポート変換、カリング処理、プリミティブの組み立て処理が逐次実行される。このジオメトリシェーダ14による処理にあたり、シェーダコア6の内部レジスタやプログラムカウンタ等のリソースは、リソース10aからジオメトリシェーダ14用のリソース10bへ切り替わる。このように、頂点シェーダ13とジオメトリシェーダ14とで別個のリソースを使用するので、ジオメトリシェーダプログラムは、頂点シェーダプログラムの終了状態に依存することなく実行され、単独のプログラムとしての記述が可能となる。
ジオメトリシェーダ14の処理が完了すると、その演算結果は、シェーダコア6からセットアップエンジン7へ出力される。セットアップエンジン7では、上記実施の形態1と同様に、シェーダコア6から出力されるプリミティブの頂点情報からポリゴンを構成するピクセルの表示画面上での座標値や色情報が算出され、その増分値が求められる。算出された増分値は、セットアップエンジン7からラスタライザ8に出力される。ラスタライザ8では、三角形の内外判定を行いながら頂点情報により決定される三角形をピクセルに分解(フラグメントの生成)し、三角形内のピクセルに対しセットアップエンジン7により算出された増分値を用いてインターポーレーションを行う。
ラスタライザ8により算出されたピクセル情報は、早期フラグメントテストユニット9に出力される。早期フラグメントテストユニット9では、ラスタライザ8が算出した今から描画しようとするピクセル(フラグメント)のデプス値と、ピクセルキャッシュ5から読み出した以前のピクセルのデスティネーションデータにおけるデプス値とを比較する。このとき、比較結果が描画を許容すべき範囲内にあれば、テストに合格したものとして描画しようとしていたピクセルデータをFIFO15へ出力する。一方、比較結果が描画を許容すべき範囲外である場合は、テストに失敗したものとして描画する必要がないことから、当該ピクセルデータを後段のFIFO15に出力しない。
同時に、ラスタライザ8は、FIFO15に出力したピクセルのXY座標値をピクセルプリフェッチアドレスとしてピクセルキャッシュ5へ出力する。ピクセルキャッシュ5はその座標を基にピクセルデータをプリフェッチする。このようにすることで、フレームバッファ2dに書き込まれた所望のピクセルデータを後で使用するとき、ピクセルキャッシュ5において、ミスヒットすることなくデータの読み出し及び書き込みが可能となる。また、同時に、ラスタライザ8は、テクスチャ座標値をテクスチャプリフェッチアドレスとしてシェーダキャッシュ3へ出力する。シェーダキャッシュ3はその座標を基にテクセルデータをプリフェッチする。
このように、FIFO15にピクセルデータやテクスチャデータを一旦格納し、ピクセルキャッシュ5やシェーダキャッシュ3によりピクセルとテクセルデータをプリフェッチすることにより、実際にピクセルやテクセルデータを使用するとき、ピクセルキャッシュ5やシェーダキャッシュ3にはデータが予め準備されており、キャッシュからの読み出しレイテンシを最小限に抑えることができる。
ピクセルシェーダ16は、FIFO15から読み出したピクセル情報、及び、シェーダキャッシュ3から読み出したテクセルデータを用いて、ピクセルシェーディング処理に関する演算を実行する。このとき、内部レジスタ及びプログラムカウンタ等のシェーダプロセッサのリソースは、ピクセルシェーダ16用のリソース11が使用される。
ピクセルシェーダ16の処理が完了すると、サンプルシェーダ17は、ピクセルシェーダ16による演算結果を基に、アンチエイリアス処理、フラグメントテスト処理、プレンディング処理及びディザ処理を逐次実行する。このとき、内部レジスタ及びプログラムカウンタ等のシェーダプロセッサのリソースは、リソース11からサンプルシェーダ17用のリソース12へ切り替わる。このように、ピクセルシェーダ16とサンプルシェーダ17とで別個のリソースを使用するので、サンプルシェーダプログラムは、ピクセルシェーダプログラムの終了状態に依存することなく実行され、単独のプログラムとしての記述が可能である。
アンチエイリアス処理は、カバレッジ値を算出してエッジのジャギーを滑らかに見せる処理である。ブレンディング処理は、アルファブレンディング等の半透明処理を行なう。ディザ処理は、少ないカラービットの場合にディザをかける処理である。また、フラグメントテスト処理は、描画対象のフラグメントとして求められたピクセルを描画すべきか否かを判定する処理であり、アルファテスト、デプステスト(陰面消去)、ステンシルテストがある。これらの処理において、フレームバッファ2dのデスティネーションデータが必要な場合は、サンプルシェーダ17によってピクセルキャッシュ5を介してピクセルデータ(カラー値、デプス値、ステンシル値)が読み出される。
なお、アルファテストでは、書き込むピクセル(フラグメント)のアルファ値と、リファレンスとなるピクセルキャッシュ5から読み出したピクセルのアルファ値とを比較し、指定された比較関数に応じて描画するか否かが決定される。デプステスト(陰面消去)は、書き込むピクセル(フラグメント)のデプス値と、リファレンスとなるピクセルキャッシュ5から読み出したピクセルのデプス値とを比較し、比較関数に応じて描画するか否かを決定する処理である。ステンシルテストは、書き込むピクセル(フラグメント)のステンシル値と、リファレンスとなるピクセルキャッシュ5から読み出したピクセルのステンシル値とを比較し、比較関数に応じて描画するか否かを決定する処理である。
サンプルシェーダ17により演算処理されたピクセルデータは、ピクセルキャッシュ5へ書き込まれ、ピクセルキャッシュ5を介してビデオメモリ2のフレームバッファ2dに書き込まれる。
なお、頂点シェーダ13及びピクセルシェーダ16は、アプリケーションプログラマによりそのプログラムを記述できるが、ジオメトリシェーダ14及びサンプルシェーダ17の処理はデバイスドライバ側で記述される固定処理であるので、アプリケーションプログラマへ開放されない場合が多い。
以上のように、この実施の形態2によれば、各シェーダの処理はそれぞれに固有のリソースを用いて実行されるので、各シェーダプログラムにおいて互いのリソースの管理を考慮する必要がなく、一つのプロセッサ上で複数の処理プログラムを効率よく実行することができる。また、FIFO15にピクセル情報を一旦格納し、ピクセルキャッシュ5やシェーダキャッシュ3によりピクセルとテクセルデータをプリフェッチする。これにより、実際にピクセルやテクセルデータを使用するとき、ピクセルキャッシュ5やシェーダキャッシュ3には、データが予め準備されており待ち時間による遅延が発生しない。つまり、キャッシュからの読み出しレイテンシを最小限に抑えることができる。
図4は、本発明の画像処理装置におけるシェーダコアのプログラム配置の一例を示す図であり、頂点シェーダプログラム、ジオメトリプログラム、ピクセルシェーダプログラム及びサンプルプログラムからシェーダプログラムが構成される。これらのプログラムは、それぞれ図2における頂点シェーダ13、ジオメトリシェーダ14、ピクセルシェーダ16、サンプルシェーダ17のプログラムに相当する。また、これらプログラムは、順番に配置されている必要はなく、ランダムに任意のアドレスに配置されていてもよい。
先ず、頂点シェーダプログラムにおいて、プログラムカウンタAで指示される命令からその実行が開始される。頂点シェーダの処理が終了すると、プログラムカウンタはプログラムカウンタAからプログラムカウンタBに切り替わり、プログラムカウンタBで指示された、ジオメトリプログラムの命令が実行される。以下同様にしてプログラムカウンタを切り替えることにより、ピクセルシェーダプログラムの命令、サンプルシェーダプログラムの命令が順次実行されていく。
頂点シェーダプログラムとジオメトリプログラムは、プリミティブ単位で処理される。一方、ピクセルシェーダプログラム及びサンプルシェーダプログラムは、ピクセル単位で処理される。このため、例えば三角形に含まれるピクセル(フラグメント)が生成されている間、ピクセルシェーダプログラムとサンプルシェーダプログラムが、そのピクセルの数だけ繰り返し実行される。つまり、プログラムカウンタCとプログラムカウンタDを切り替えながら実行される。そして、三角形に含まれるピクセルの処理が全て終了すると、プログラムカウンタは、再びプログラムカウンタAに切り替わり、次の頂点のための頂点シェーダプログラムが実行される。
このように、各シェーダ間でプログラムカウンタを切り替えることにより、任意のアドレスに格納されたシェーダプログラムを一つのプロセッサ上で実行することができる。また、予めシェーダプログラムを複数準備しておき、アプリケーションからの要求や描画モード等により、それらシェーダプログラムを適宜選択して実行することも可能となる。
実施の形態3.
本実施の形態3は、シェーダコアの演算器構成と命令セットとを動的に再構成することにより、各シェーダプログラムに最適な演算器構成で効率良く処理できるようにしたものである。
本実施の形態3は、シェーダコアの演算器構成と命令セットとを動的に再構成することにより、各シェーダプログラムに最適な演算器構成で効率良く処理できるようにしたものである。
図5は、この発明の実施の形態3による画像処理装置のシェーダコアの演算器構成を示す図である。図において、実施の形態3によるシェーダコア6は、入力レジスタ18a〜18d、クロスバースイッチ19、レジスタファイル20〜24、積和演算器(演算器)25〜28、スカラ演算器(演算器)29、出力レジスタ30〜34、fp32命令デコーダ(命令デコーダ)35、fp16命令デコーダ(命令デコーダ)36及びシーケンサ37を備える。
入力レジスタ18a,18b,18c,18dには、例えばピクセルの位置座標を処理する場合、他の画像ブロックから出力されたピクセルの位置座標X,Y,Z,Wのデータがそれぞれ格納される。また、カラーを処理する場合であれば、カラーデータR,G,B,Aが入力レジスタ18a,18b,18c,18dにそれぞれ格納される。さらに、テクスチャ座標を処理する場合は、テクスチャ座標S,T,R,Qが入力レジスタ18a,18b,18c,18dにそれぞれ保持されるデータとなる。また、任意のスカラデータが格納されることもある。
クロスバースイッチ19は、シーケンサ37からの制御信号に従って、入力レジスタ18a〜18dやシェーダキャッシュ3からのデータ、積和演算器25〜28及びスカラ演算器29からの出力の各成分を任意に選択してレジスタファイル20〜24へそれぞれ出力する。レジスタファイル20〜23には、クロスバースイッチ19により選択された、入力レジスタ18a〜18dやシェーダキャッシュ3からのスカラデータ以外のデータ、積和演算器25〜28からの出力値が格納される。また、レジスタファイル24には、クロスバースイッチ19により選択された、入力レジスタ18a〜18dやシェーダキャッシュ3からのスカラデータ、スカラ演算器29からの出力値が格納される。
積和演算器25〜28は、レジスタファイル20〜23から入力されるデータに対して積和演算処理を実行し、演算結果を出力レジスタ30〜33にそれぞれ出力する。これら4つの積和演算器25〜28を用いることにより、4−SIMD形式で演算処理を行なうことができる。つまり、頂点の位置座標(X,Y,Z,W)の演算を一度に処理することができる。
また、スカラ演算器29は、レジスタファイル24から入力されるスカラデータ(図中にSa,Sbと表記)に対してスカラ演算処理を実行し、演算結果を出力レジスタ34にそれぞれ出力する。ここで、スカラ演算器29によるスカラ演算とは、積和以外の演算処理である除算、累乗、sin/cos等の特殊演算である。出力レジスタ30〜34は、演算器の演算結果を一時記憶し、ピクセルキャッシュ5又はセットアップエンジン7へ出力する。
ここで、積和演算器の内部構成を説明する。例えば、積和演算器25は、分配器25a、2個の擬似16ビット演算器(図中、擬似fp16演算器と表記)(演算ユニット)25b、16−32ビット変換演算器(図中、fp16→32変換演算器と表記)(変換ユニット)25cを含んで構成される。分配器25aは、シーケンサ37からの制御信号で指定された演算モードが32ビット演算モードである場合、32ビットフォーマットの演算データを上位/下位の2個の16ビットフォーマット形式のデータに分割し、2個の擬似16ビット演算器25bへそれぞれ出力する。
擬似16ビット演算器25bは、擬似16ビットフォーマット(符号:指数:仮数=1:8:15)形式の演算を行い、fp16ビットフォーマット形式のデータを出力する。また、16−32ビット変換演算器25cは、上位/下位の2個の擬似16ビットフォーマットを32ビット浮動小数点フォーマット(符号:指数:仮数=1:8:23)へ変換する。
なお、fp32命令デコーダ35は、32ビット浮動小数点フォーマット形式を使って4−SIMD(Single Instruction/Multiple Data)で動作させるための命令コードをデコードする。fp16命令デコーダは、16ビット浮動小数点フォーマット形式を使って8−SIMDで動作させるための命令コードをデコードする。シーケンサ37は、fp32命令デコーダ35又はfp16命令デコーダ36からの要求に応じて、クロスバースイッチ19、レジスタファイル20〜24、積和演算器25〜28、スカラ演算器29に対して制御信号を出力する。
次に動作について説明する。
命令キャッシュ4から読み出された命令コードが、32ビット浮動小数点フォーマット形式を使って4−SIMDで動作させるための命令コード(fp32命令)である場合、fp32命令デコーダ35が当該命令コードをデコードし、その命令に応じた要求をシーケンサ37に出力する。一方、命令キャッシュ4から読み出された命令コードが、16ビット浮動小数点フォーマット形式を使って8−SIMDで動作させるための命令コード(fp16命令)である場合、fp16命令デコーダ36が当該命令コードをデコードし、その命令に応じた要求をシーケンサ37に出力する。
命令キャッシュ4から読み出された命令コードが、32ビット浮動小数点フォーマット形式を使って4−SIMDで動作させるための命令コード(fp32命令)である場合、fp32命令デコーダ35が当該命令コードをデコードし、その命令に応じた要求をシーケンサ37に出力する。一方、命令キャッシュ4から読み出された命令コードが、16ビット浮動小数点フォーマット形式を使って8−SIMDで動作させるための命令コード(fp16命令)である場合、fp16命令デコーダ36が当該命令コードをデコードし、その命令に応じた要求をシーケンサ37に出力する。
シーケンサ37は、fp32命令デコーダ35又はfp16命令デコーダ36から入力された要求に応じて、クロスバースイッチ19、レジスタファイル20〜24、積和演算器25〜28、スカラ演算器29に対して制御信号を出力する。例えば、入力レジスタ18a,18b,18c,18dからクロスバースイッチ19に出力されたデータとして、位置座標(Xa,Ya,Za,Wa)と位置座標が(Xb,Yb,Zb,Wb)があったものとする。ここで、fp32命令デコーダ35又はfp16命令デコーダ36から入力された要求が加算処理であった場合、シーケンサ37は、クロスバースイッチ19に制御信号を出力して、これら位置座標(Xa,Ya,Za,Wa)、(Xb,Yb,Zb,Wb)をレジスタファイル20〜23にそれぞれ出力させる。
さらに、シーケンサ37は、レジスタファイル20〜23を制御して、16ビット加算演算モードか32ビット加算演算モードかに応じたデータを積和演算器25〜28へ出力させる。例えば、32ビット加算演算モードであれば、レジスタファイル20は、32ビットフォーマットの座標値Xa、Xbを積和演算器25に出力する。また、16ビット加算演算モードの場合、レジスタファイル20は、32ビットフォーマットである座標値Xa、Xbを上位/下位の16ビットフォーマット形式にそれぞれ分けたデータX0a,X1a、X0b,X1bを生成して積和演算器25に出力する。
16ビット加算演算モードにおいて、分配器25aは、レジスタファイル20から入力されたX0a,X1a、X0b,X1bのうち、データX0a,X0bを一方の擬似16ビット演算器25bに出力し、データX1a,X1bを他方の擬似16ビット演算器25bに出力する。これにより、2つの擬似16ビット演算器25bは、16ビット浮動小数点フォーマット(符号:指数:仮数=1:5:15)形式で同時に加算演算をそれぞれ行い、16ビットフォーマットの2個の演算結果としてX0=X0a+X0b及びX1=X1a+X1bを出力レジスタ30に出力する。
一方、32ビット浮動小数点モードにおいて、分配器25aは、32ビットフォーマットの座標値Xa、Xbを上位/下位の2個の16ビットフォーマット形式へ分割し、2つの擬似16ビット演算器25bにそれぞれ出力する。2つの擬似16ビット演算器25bでは、入力したデータについて加算演算を行い、16−32ビット変換演算器25cに出力する。16−32ビット変換演算器25cでは、2個の擬似16ビット演算器から出力される上位/下位の擬似16ビットフォーマットの演算結果を1個の32ビットフォーマットへ変換し、32ビットフォーマットの演算結果としてX=Xa+Xbを出力レジスタ30に出力する。なお、積和演算器26,27,28及びスカラ演算器29についても、同様な方式で演算処理が行われる。
このようにして、複数の命令デコーダとそれに応じた演算器を用いることにより、演算フォーマットに応じて演算器構成を再構成することができ、演算フォーマットの異なる演算を効率よく実行することができる。例えば、fp32命令とfp16命令を動的に切り替えることにより、4−SIMDの32ビット浮動小数点演算と8−SIMDの16ビット浮動小数点演算を使い分けながら実行することができる。
一般に、頂点シェーダ処理は32ビット浮動小数点フォーマットで、ピクセルシェーダ処理は16ビット浮動小数点フォーマットで演算されることが多い。従って、頂点シェーダ処理をfp32命令で、ピクセルシェーダ処理をfp16命令で実行させれば、これらの処理を一連の処理として実行できる。これにより、頂点シェーダ処理及びピクセルシェーダ処理の実行に必要なハードウェア演算リソースを最大限に有効活用することができ、命令の語長も小さくなる。
また、命令フォーマットを動的に変更することにより、演算フォーマットだけでなく、演算命令の種類についても頂点シェーダ処理、ジオメトリシェーダ処理、ピクセルシェーダ処理、サンプルシェーダ処理の各々に最適な命令セットを用意することが可能となる。
例えば、下記のように、頂点シェーダ処理では4×4のマトリクス演算が多用され、ピクセルシェーダ処理ではフィルタ処理等で必要な線形補間演算が多用される傾向がある。
(1)マトリクス演算
X=M00*A+M01*B+M02*C+M03*D
Y=M10*A+M11*B+M12*C+M13*D
Z=M20*A+M21*B+M22*C+M23*D
W=M30*A+M31*B+M32*C+M33*D
但し、M00〜M33は4×4のマトリクスの各要素である。
(2)線形補間処理
補間値C=Arg0*Arg2+Arg1*(1−Arg2)
(1)マトリクス演算
X=M00*A+M01*B+M02*C+M03*D
Y=M10*A+M11*B+M12*C+M13*D
Z=M20*A+M21*B+M22*C+M23*D
W=M30*A+M31*B+M32*C+M33*D
但し、M00〜M33は4×4のマトリクスの各要素である。
(2)線形補間処理
補間値C=Arg0*Arg2+Arg1*(1−Arg2)
頂点シェーダ処理における位置座標(X,Y,Z,W)の演算では、例えば(X,Y,Z,W)成分に対して4×4のマトリクス演算を一度に実行する。そこで、図6の上段に示すような(X,Y,Z,W)成分に対して4−SIMDによる演算を行う命令フォーマットの4SIMD命令を使用する。
また、ピクセルシェーダ処理におけるカラー演算では、(R,G,B)成分と(A)成分に対して異なる演算を施すことが多い。そこで、図6の中段に示すように、3−SIMDと1−SIMDの組み合わせで演算を行う命令フォーマットを使用するようにしてもよい。
一方、テクスチャアドレスの演算では、マルチテクスチャなどのように(S0,T0)成分と(S1,T1)成分を同時に演算する方がよく、図6の下段に示すように、2−SIMDと2−SIMDの組み合わせで演算する命令フォーマットの方が効率的である。
以上のように、この実施の形態3によれば、32ビットの演算フォーマットでの演算処理を指定する命令コードをデコードするfp32命令デコーダ35と、16ビットの演算フォーマットでの演算処理を指定する命令コードをデコードするfp16命令デコーダ36と、2個の擬似16ビット演算器25b及び16ビットから32ビットへ演算フォーマットを変換する16−32ビット変換演算器25cを有し、演算器25bによる演算又はその演算結果を16−32ビット変換演算器25cにより演算フォーマット変換することで、各命令コードに対応した演算フォーマットデータの演算を行う複数の演算器25〜29と、シェーダ処理に必要なデータを入力し、当該入力データから各演算器25〜29の演算対象データを選択するクロスバースイッチ19と、fp32命令デコーダ35又はfp16命令デコーダ36がデコードした命令に従ってクロスバースイッチ19のデータ選択及びデータ演算を行う演算器25〜29の内部演算器の組み合わせを決定することにより、演算器25〜29による各命令コードに対応した演算フォーマットのデータ演算を制御するシーケンサ37とを含むプロセッサでシェーダコア6を構成したので、各シェーダ間で使用頻度の高い演算命令を準備して演算の並列度を用途により変更することが可能となり、演算フォーマットの異なる演算を効率よく実行することができる。また、同一ハードウェア上で最適な処理を効率よく実行することが可能となる。さらに、命令フォーマットを動的に変更することにより、取り扱うグラフィクスAPIに応じて最適な命令セットを選択できるという効果も得られる。
実施の形態4.
本実施の形態4は、上記実施の形態1から3までに示した画像処理装置の主要構成部を統合シェーダパイプラインとして複数個並列に動作されることで、画像処理の処理性能を向上させたものである。
本実施の形態4は、上記実施の形態1から3までに示した画像処理装置の主要構成部を統合シェーダパイプラインとして複数個並列に動作されることで、画像処理の処理性能を向上させたものである。
図7は、この発明の実施の形態4による画像処理装置の構成を示す図である。図において、統合シェーダパイプライン39−0,39−1,39−2,39−3,・・・はそれぞれ並列に配置され、シェーダキャッシュ3、シェーダコア6、セットアップエンジン7、ラスタライザ8及び早期フラグメントテストユニット9を含んで構成される。これら構成要素の基本的な動作は、上記実施の形態1で説明したものと同様である。但し、シェーダキャッシュ3は、上記実施の形態1で示したピクセルキャッシュ5の機能も有し、シェーダコア6による演算により最終的に得られたピクセルデータを格納する。
ビデオメモリ2Aは、統合シェーダパイプライン39−0,39−1,39−2,39−3,・・・に共通に設けられる。コマンドデータ分配器38は、ビデオメモリ2Aに格納されたシェーダプログラムの命令やジオメトリデータの頂点データを読み出して、各統合シェーダパイプライン39−0,39−1,39−2,39−3,・・・のシェーダコア6に分配する。レベル2キャッシュ40は、各統合シェーダパイプライン39−0,39−1,39−2,39−3,・・・による演算結果のピクセルデータを一時的に保持してビデオメモリ2Aに設けられたフレームバッファ領域に転送する。
次に動作について説明する。
描画処理にあたり、描画対象の物体の画像を構成する頂点情報や光源からの光に関する情報等のジオメトリデータ、シェーダコア6としてプロセッサを動作させるためのシェーダプログラム、テクスチャデータが不図示の主記憶装置からビデオメモリ2Aに予め転送される。
描画処理にあたり、描画対象の物体の画像を構成する頂点情報や光源からの光に関する情報等のジオメトリデータ、シェーダコア6としてプロセッサを動作させるためのシェーダプログラム、テクスチャデータが不図示の主記憶装置からビデオメモリ2Aに予め転送される。
コマンドデータ分配器38は、ビデオメモリ2Aに格納されたシーンに含まれる頂点データを読み出して三角形ストリップや三角形ファン等の単位に分解し、シェーダプログラムの命令コード(コマンド)と共に、統合シェーダパイプライン39−0,39−1,39−2,39−3,・・・の各シェーダコア6へ順番に転送する。このとき、コマンドデータ分配器38は、転送先の統合シェーダパイプラインがビジー状態であれば、次のアイドル状態の統合シェーダパイプラインへ転送する。これにより、各統合シェーダパイプラインのシェーダコア6は、ジオメトリデータを用いた幾何学演算処理やライティング演算処理等の頂点シェーダの処理を実行する。
各統合シェーダパイプラインにおいて、シェーダコア6は、上記実施の形態1と同様に、頂点シェーダ処理に引き続き、カリング、ビューポート変換、プリミティブの組み立て処理を実行し、処理結果として算出されたプリミティブの頂点情報をセットアップエンジン7に出力する。
セットアップエンジン7では、シェーダコア6から出力されるプリミティブの頂点情報からポリゴンを構成するピクセルの表示画面上での座標値や色情報を算出し、その増分値を求める。ラスタライザ8は、三角形の内外判定を行いながら頂点情報により決定される三角形をピクセルに分解し、三角形内のピクセルに対しセットアップエンジン7により算出された増分値を用いてインターポーレーションを行う。
早期フラグメントテストユニット9は、ラスタライザ8が算出した今から描画しようとするピクセル(ソース)のデプス値と、ピクセルキャッシュ5から読み出した以前のピクセルのデスティネーションデータ(表示画面)におけるデプス値とを比較する。このとき、比較結果が描画を許容すべき範囲内にあれば、テストに合格したものとして描画しようとしていたピクセルデータをシェーダコア6にフィードバックして描画処理を継続する。一方、比較結果が描画を許容すべき範囲外である場合は、テストに失敗したものとして描画する必要がないことから、当該ピクセルデータを後段のシェーダコア6に出力しない。
続いて、コマンドデータ分配器38は、ビデオメモリ2Aからテクスチャデータを読み出してピクセルシェーダに関するシェーダプログラムの命令コードと共に、統合シェーダパイプライン39−0,39−1,39−2,39−3,・・・の各シェーダコア6へ順番に転送する。シェーダコア6では、コマンドデータ分配器38からのピクセル情報と、早期フラグメントテストユニット9から入力したピクセル情報とを用いてピクセルシェーダの処理を実行する。
次に、シェーダコア6は、ピクセルシェーダの処理に引き続き、コマンドデータ分配器38によってビデオメモリ2Aのフレームバッファからデスティネーションデータを読み込んでアルファブレンドやラスタオペレーション処理を実行する。
統合シェーダパイプライン39−0,39−1,39−2,39−3,・・・の各シェーダコア6は、統合シェーダパイプライン毎に演算された最終的なピクセルデータをシェーダキャッシュ3に一時的に格納する。この後、シェーダキャッシュ3から最終的なピクセルデータの演算値がレベル2キャッシュ40へ書き込まれる。そして、レベル2キャッシュ40を介して当該ピクセルデータがビデオメモリ2Aのフレームバッファ領域へ転送される。
以上のように、この実施の形態4によれば、頂点シェーダ処理とピクセルシェーダ処理を統合して実行する統合シェーダパイプラインを複数個並列に配置し、各統合シェーダパイプラインに対してコマンド及び処理対象データの分配を行うコマンドデータ分配器38を設けたので、マルチスレッド型の統合シェーダパイプラインを用いれば並列処理が可能であり、頂点シェーダ処理及びピクセルシェーダ処理のスループットを向上させることができる。また、並列配置する統合シェーダパイプラインの個数を目的に応じて変更することにより、ハードウェア規模が限定される組み込み向け分野からハイエンド向けまで柔軟に幅広く対応することができる。
以上のように、この発明に係る、頂点シェーダとピクセルシェーダの処理負荷のアンバランスを解消し、処理を効率よく実行させる画像処理装置は、表示画面上に3Dコンピュータグラフィクスなどの画像を表示する画像処理装置であり、特に組み込み向け用途でハードウェア規模を小さく抑える必要がある携帯端末機器などに用いるのに適している。
Claims (9)
- 頂点シェーダ処理とピクセルシェーダ処理を逐次実行するシェーダプロセッサと、
前記シェーダプロセッサにより頂点シェーダ処理されたデータに基づいて、ピクセルシェーダ処理に必要なピクセルデータを生成するラスタライザ部と、
前記ラスタライザ部から出力されたピクセルデータを、頂点シェーダ処理に引き続くピクセルシェーダ処理の対象として前記シェーダプロセッサにフィードバックするフィードバックループとを備えた画像処理装置。 - ラスタライザ部からシェーダプロセッサまでのフィードバックループ上に設けられ、前記ラスタライザ部から出力されたピクセルデータの描画可否を判定し、判定結果に応じて前記シェーダプロセッサへの前記ピクセルデータのフィードバックの可否を決定するフラグメントテスト部を備えたことを特徴とする請求項1記載の画像処理装置。
- シェーダプロセッサは、キャッシュメモリを介して、シェーダ処理に必要なデータの読み出し又は書き込み、及び、シェーダプログラムの命令コードの読み出しを行うことを特徴とする請求項1記載の画像処理装置。
- ラスタライザ部からシェーダプロセッサまでのフィードバックループ上に設けられ、前記ラスタライザ部からの出力データを保持するFIFOを備え、
キャッシュメモリは、前記ラスタライザ部から前記FIFOに転送されるデータをプリフェッチすることを特徴とする請求項3記載の画像処理装置。 - シェーダプロセッサは、頂点シェーダ処理に引き続くピクセルシェーダ処理以外のシェーダ処理も逐次実行し、
各シェーダ処理のシェーダプログラムは、前記シェーダプロセッサにおいてそれぞれのプログラムに固有のリソースを用いて実行されることを特徴とする請求項1記載の画像処理装置。 - シェーダプロセッサは、各シェーダ処理に応じた処理単位でシェーダプログラムを切り替えるプログラムカウンタを備えたことを特徴とする請求項5記載の画像処理装置。
- シェーダプロセッサは、
異なるビット数の各演算フォーマットでの演算処理を指定する命令コードをデコードする複数の命令デコーダと、
複数の演算ユニット及び演算フォーマットの変換ユニットを有し、前記演算ユニットによる演算又はその演算結果を前記変換ユニットにより演算フォーマット変換することで、前記各命令コードに対応した演算フォーマットデータの演算を行う複数の演算器と、
シェーダ処理に必要なデータを入力し、当該入力データから前記各演算器の演算対象データを選択するクロスバースイッチと、
前記命令デコーダがデコードした命令に従って、前記クロスバースイッチのデータ選択及びデータ演算を行う前記演算ユニットの組み合わせを決定することにより、前記演算器による各命令コードに対応した演算フォーマットのデータ演算を制御するシーケンサとを備えたことを特徴とする請求項1記載の画像処理装置。 - 演算器及びその演算ユニットの組み合わせを指定する命令コードからなる命令セットを用い、各シェーダ処理における演算命令の種類に応じて前記命令セットの組み合わせフォーマットを変更することを特徴とする請求項7記載の画像処理装置。
- 複数個を並列に配置した請求項1記載の画像処理装置と、
各シェーダ処理に必要なデータ及び前記画像処理装置のシェーダプロセッサに実行させるシェーダプログラムを格納するビデオメモリと、
前記各画像処理装置による処理に応じて、前記ビデオメモリに格納されたデータ及びシェーダプログラムの命令コードを読み出して分配するコマンドデータ分配部とを備えた画像処理装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005310154 | 2005-10-25 | ||
JP2005310154 | 2005-10-25 | ||
PCT/JP2006/321152 WO2007049610A1 (ja) | 2005-10-25 | 2006-10-24 | 画像処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2007049610A1 true JPWO2007049610A1 (ja) | 2009-04-30 |
Family
ID=37967722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007521167A Pending JPWO2007049610A1 (ja) | 2005-10-25 | 2006-10-24 | 画像処理装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20090051687A1 (ja) |
JP (1) | JPWO2007049610A1 (ja) |
CN (1) | CN101156176A (ja) |
WO (1) | WO2007049610A1 (ja) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5004650B2 (ja) * | 2007-05-09 | 2012-08-22 | 株式会社ソニー・コンピュータエンタテインメント | グラフィックスプロセッサ、描画処理装置および描画処理方法 |
JP4900051B2 (ja) | 2007-05-31 | 2012-03-21 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
JP2008299642A (ja) * | 2007-05-31 | 2008-12-11 | Mitsubishi Electric Corp | 図形描画装置 |
US8325184B2 (en) * | 2007-09-14 | 2012-12-04 | Qualcomm Incorporated | Fragment shader bypass in a graphics processing unit, and apparatus and method thereof |
JP5491498B2 (ja) * | 2008-05-30 | 2014-05-14 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 拡大縮小可能で且つ統合化されたコンピュータシステム |
KR101465771B1 (ko) | 2008-05-30 | 2014-11-27 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 셰이더 열 리페어를 위한 리던던시 방법 및 장치 |
US20090315909A1 (en) | 2008-05-30 | 2009-12-24 | Advanced Micro Devices, Inc. | Unified Shader Engine Filtering System |
EP2327060A2 (en) * | 2008-09-24 | 2011-06-01 | The Bakery | Method and system for rendering or interactive lighting of a complex three dimensional scene |
US20100188412A1 (en) * | 2009-01-28 | 2010-07-29 | Microsoft Corporation | Content based cache for graphics resource management |
US8711159B2 (en) * | 2009-02-23 | 2014-04-29 | Microsoft Corporation | VGPU: a real time GPU emulator |
US9142057B2 (en) * | 2009-09-03 | 2015-09-22 | Advanced Micro Devices, Inc. | Processing unit with a plurality of shader engines |
JP4756107B1 (ja) * | 2011-02-09 | 2011-08-24 | 株式会社ディジタルメディアプロフェッショナル | グラフィックス処理装置 |
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US8941655B2 (en) | 2011-09-07 | 2015-01-27 | Qualcomm Incorporated | Memory copy engine for graphics processing |
US8830249B2 (en) * | 2011-09-12 | 2014-09-09 | Sony Computer Entertainment Inc. | Accelerated texture lookups using texture coordinate derivatives |
JP5606632B2 (ja) * | 2011-09-12 | 2014-10-15 | 三菱電機株式会社 | ジオモーフィング装置 |
US10535185B2 (en) | 2012-04-04 | 2020-01-14 | Qualcomm Incorporated | Patched shading in graphics processing |
KR102048885B1 (ko) * | 2013-05-09 | 2019-11-26 | 삼성전자 주식회사 | 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 렌더링 방법 |
KR102116708B1 (ko) * | 2013-05-24 | 2020-05-29 | 삼성전자 주식회사 | 그래픽스 프로세싱 유닛 |
KR101582578B1 (ko) * | 2014-01-20 | 2016-01-11 | (주)넥셀 | 그래픽 처리 장치 및 방법 |
GB2536964B (en) * | 2015-04-02 | 2019-12-25 | Ge Aviat Systems Ltd | Avionics display system |
GB2537137B (en) | 2015-04-08 | 2021-02-17 | Advanced Risc Mach Ltd | Graphics processing systems |
US9786026B2 (en) | 2015-06-15 | 2017-10-10 | Microsoft Technology Licensing, Llc | Asynchronous translation of computer program resources in graphics processing unit emulation |
US9881351B2 (en) | 2015-06-15 | 2018-01-30 | Microsoft Technology Licensing, Llc | Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation |
KR102465969B1 (ko) * | 2015-06-23 | 2022-11-10 | 삼성전자주식회사 | 그래픽스 파이프라인을 수행하는 방법 및 장치 |
US9819913B2 (en) * | 2015-08-26 | 2017-11-14 | Stmicroelectronics International N.V. | Image sensor device with macropixel processing and related devices and methods |
US10121222B2 (en) * | 2016-01-22 | 2018-11-06 | Mediatek Inc. | Bandwidth efficient method for generating an alpha hint buffer |
US20180082464A1 (en) * | 2016-09-16 | 2018-03-22 | Tomas G. Akenine-Moller | Apparatus and method for an efficient 3d graphics pipeline |
US10460513B2 (en) | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
US10649524B2 (en) | 2017-04-07 | 2020-05-12 | Intel Corporation | Apparatus and method for foveated rendering, bin comparison and TBIMR memory-backed storage for virtual reality implementations |
US10685473B2 (en) * | 2017-05-31 | 2020-06-16 | Vmware, Inc. | Emulation of geometry shaders and stream output using compute shaders |
US11455766B2 (en) * | 2018-09-18 | 2022-09-27 | Advanced Micro Devices, Inc. | Variable precision computing system |
US11120602B2 (en) | 2019-06-03 | 2021-09-14 | Microsoft Technology Licensing, Llc | Acceleration of shader programs by compiler precision selection |
US11315315B2 (en) * | 2019-08-23 | 2022-04-26 | Adobe Inc. | Modifying three-dimensional representations using digital brush tools |
US11651548B2 (en) | 2021-07-08 | 2023-05-16 | Huawei Technologies Co., Ltd. | Method and apparatus for computer model rasterization |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1091439A (ja) * | 1996-05-23 | 1998-04-10 | Matsushita Electric Ind Co Ltd | プロセッサ |
JP2000311249A (ja) * | 1999-04-28 | 2000-11-07 | Hitachi Ltd | グラフィック処理装置とそのグラフィックコマンド処理方法 |
JP2002063593A (ja) * | 2000-08-23 | 2002-02-28 | Nintendo Co Ltd | グラフィクスシステムにおいて直接および間接テクスチャを処理するための方法および装置 |
JP2004145838A (ja) * | 2002-10-25 | 2004-05-20 | Sony Corp | 画像処理装置 |
JP2004234123A (ja) * | 2003-01-28 | 2004-08-19 | Fujitsu Ltd | マルチスレッドコンピュータ |
WO2005029329A2 (en) * | 2003-09-15 | 2005-03-31 | Nvidia Corporation | A system and method for testing and configuring semiconductor functional circuits |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0785219B2 (ja) * | 1990-11-15 | 1995-09-13 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理システム及びデータ制御方法 |
US5808617A (en) * | 1995-08-04 | 1998-09-15 | Microsoft Corporation | Method and system for depth complexity reduction in a graphics rendering system |
US6819325B2 (en) * | 2000-03-07 | 2004-11-16 | Microsoft Corporation | API communications for vertex and pixel shaders |
US6760032B1 (en) * | 2002-03-14 | 2004-07-06 | Nvidia Corporation | Hardware-implemented cellular automata system and method |
US6825843B2 (en) * | 2002-07-18 | 2004-11-30 | Nvidia Corporation | Method and apparatus for loop and branch instructions in a programmable graphics pipeline |
GB0220138D0 (en) * | 2002-08-30 | 2002-10-09 | Kaydara Inc | Matte extraction using fragment processors |
US7796133B1 (en) * | 2002-11-18 | 2010-09-14 | Ati Technologies Ulc | Unified shader |
US7633506B1 (en) * | 2002-11-27 | 2009-12-15 | Ati Technologies Ulc | Parallel pipeline graphics system |
US7928997B2 (en) * | 2003-02-06 | 2011-04-19 | Nvidia Corporation | Digital image compositing using a programmable graphics processor |
US7151543B1 (en) * | 2003-04-16 | 2006-12-19 | Nvidia Corporation | Vertex processor with multiple interfaces |
US7508448B1 (en) * | 2003-05-29 | 2009-03-24 | Nvidia Corporation | Method and apparatus for filtering video data using a programmable graphics processor |
US7948490B2 (en) * | 2003-10-22 | 2011-05-24 | Microsoft Corporation | Hardware-accelerated computation of radiance transfer coefficients in computer graphics |
US6897871B1 (en) * | 2003-11-20 | 2005-05-24 | Ati Technologies Inc. | Graphics processing architecture employing a unified shader |
US7542042B1 (en) * | 2004-11-10 | 2009-06-02 | Nvidia Corporation | Subpicture overlay using fragment shader |
-
2006
- 2006-10-24 CN CNA2006800118223A patent/CN101156176A/zh active Pending
- 2006-10-24 JP JP2007521167A patent/JPWO2007049610A1/ja active Pending
- 2006-10-24 US US11/816,576 patent/US20090051687A1/en not_active Abandoned
- 2006-10-24 WO PCT/JP2006/321152 patent/WO2007049610A1/ja active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1091439A (ja) * | 1996-05-23 | 1998-04-10 | Matsushita Electric Ind Co Ltd | プロセッサ |
JP2000311249A (ja) * | 1999-04-28 | 2000-11-07 | Hitachi Ltd | グラフィック処理装置とそのグラフィックコマンド処理方法 |
JP2002063593A (ja) * | 2000-08-23 | 2002-02-28 | Nintendo Co Ltd | グラフィクスシステムにおいて直接および間接テクスチャを処理するための方法および装置 |
JP2004145838A (ja) * | 2002-10-25 | 2004-05-20 | Sony Corp | 画像処理装置 |
JP2004234123A (ja) * | 2003-01-28 | 2004-08-19 | Fujitsu Ltd | マルチスレッドコンピュータ |
WO2005029329A2 (en) * | 2003-09-15 | 2005-03-31 | Nvidia Corporation | A system and method for testing and configuring semiconductor functional circuits |
Non-Patent Citations (8)
Title |
---|
CSND200302396010, ""Windowsの描画機能とDirectXの役割を理解する"", PC Japan, 20021101, 第7巻, 第11号, p.142−146, JP, ソフトバンクパブリッシング株式会社 * |
CSND200400248008, 後藤弘茂, ""2003年のCPU"", ASCII, 20030201, 第27巻, 第2号, p.219−224, JP, 株式会社アスキー * |
CSND200500695015, 多和田新也, ""3DMark05に見る最新グラフィック環境"", PC Japan, 20041201, 第9巻, 第8号, p.106−111, JP, ソフトバンクパブリッシング株式会社 * |
CSND200600384009, 後藤弘茂, ""2005年のCPU"", ASCII, 20050601, 第29巻, 第6号, p.172−177, JP, 株式会社アスキー * |
JPN6009067961, ""Windowsの描画機能とDirectXの役割を理解する"", PC Japan, 20021101, 第7巻, 第11号, p.142−146, JP, ソフトバンクパブリッシング株式会社 * |
JPN6009067963, 多和田新也, ""3DMark05に見る最新グラフィック環境"", PC Japan, 20041201, 第9巻, 第8号, p.106−111, JP, ソフトバンクパブリッシング株式会社 * |
JPN6009067965, 後藤弘茂, ""2003年のCPU"", ASCII, 20030201, 第27巻, 第2号, p.219−224, JP, 株式会社アスキー * |
JPN6010020147, 後藤弘茂, ""2005年のCPU"", ASCII, 20050601, 第29巻, 第6号, p.172−177, JP, 株式会社アスキー * |
Also Published As
Publication number | Publication date |
---|---|
WO2007049610A1 (ja) | 2007-05-03 |
CN101156176A (zh) | 2008-04-02 |
US20090051687A1 (en) | 2009-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2007049610A1 (ja) | 画像処理装置 | |
US11023996B2 (en) | Graphics processing architecture employing a unified shader | |
US6807620B1 (en) | Game system with graphics processor | |
US10140678B2 (en) | Specialized code paths in GPU processing | |
US8074224B1 (en) | Managing state information for a multi-threaded processor | |
US6624819B1 (en) | Method and system for providing a flexible and efficient processor for use in a graphics processing system | |
US9202308B2 (en) | Methods of and apparatus for assigning vertex and fragment shading operations to a multi-threaded multi-format blending device | |
JP2011518398A (ja) | 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ | |
US10186076B2 (en) | Per-sample MSAA rendering using comprehension data | |
US7484076B1 (en) | Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P) | |
JP4637640B2 (ja) | 図形描画装置 | |
US11978234B2 (en) | Method and apparatus of data compression | |
US10943336B2 (en) | Tone-mapping high dynamic range images | |
WO2006054389A1 (ja) | 描画処理装置および描画処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100105 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100304 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100413 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100817 |