JP2004005352A - 画像処理装置およびその方法 - Google Patents
画像処理装置およびその方法 Download PDFInfo
- Publication number
- JP2004005352A JP2004005352A JP2002267464A JP2002267464A JP2004005352A JP 2004005352 A JP2004005352 A JP 2004005352A JP 2002267464 A JP2002267464 A JP 2002267464A JP 2002267464 A JP2002267464 A JP 2002267464A JP 2004005352 A JP2004005352 A JP 2004005352A
- Authority
- JP
- Japan
- Prior art keywords
- data
- value
- depth data
- supplied
- read
- 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.)
- Granted
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
Abstract
【解決手段】縦続接続され、対応するバッファからの読み出し奥行きデータ値とライトユニットWUから供給された第1の供給奥行きデータ値とを比較し、第1の供給奥行きデータが読み出し奥行きデータより大きい場合、第1の供給奥行きデータとRGBαデータを次段のソート回路に供給し、読み出し奥行きデータとRGBαデータを対応するバッファに書き戻し、第1の供給奥行きデータが読み出し奥行きデータより小さい場合、読み出し奥行きデータとRGBαデータを次段のソート回路に供給して、前段からの第2の供給奥行きデータとRGBαデータを対応するバッファに書き込むソート回路SRT0〜SRT3を設ける。
【選択図】 図14
Description
【発明の属する技術分野】
本発明は、複数の処理データを共有して並列処理を行う画像処理装置およびその方法に関するものである。
【0002】
【従来の技術】
昨今のコンピュータシステムにおける演算速度の向上や描画機能の強化とも相俟って、コンピュータ資源を用いて図形や画像の作成や処理を行う「コンピュータ・グラフィックス(CG)」技術が盛んに研究・開発され、さらに実用化されている。
【0003】
たとえば、3次元グラフィックスは、3次元オブジェクトが所定の光源によって照らされたときの光学現象を数学モデルで表現して、このモデルに基づいてオブジェクト表面に陰影や濃淡を付けたり、さらには模様を貼り付けたりして、よりリアルで3次元的な2次元高精細画像を生成するものである。
このようなコンピュータ・グラフィックスは、科学、工学、製造などの開発分野でのCAD/CAM、その他の各種応用分野においてますます盛んに利用されるようになってきている。
【0004】
3次元グラフィックスは、一般には、フロントエンドとして位置づけられる「ジオメトリ・サブシステム」と、バックエンドとして位置づけられる「ラスタ・サブシステム」とにより構成される。
【0005】
ジオメトリ・サブシステムとは、ディスプレイ・スクリーン上に表示する3次元オブジェクトの位置や姿勢などの幾何学的な演算処理を行う過程のことである。
ジオメトリ・サブシステムでは、一般にオブジェクトは多数のポリゴンの集合体として扱われ、ポリゴン単位で、「座標変換」、「クリッピング」、「光源計算」などの幾何学的な演算処理が行われる。
【0006】
一方、ラスタ・サブシステムは、オブジェクトを構成する各ピクセル(pixel)を塗りつぶす過程のことである。
ラスタライズ処理は、たとえばポリゴンの頂点毎に求められた画像パラメータを基にして、ポリゴン内部に含まれるすべてのピクセルの画像パラメータを補間することによって実現される。
ここで言う画像パラメータには、いわゆるRGB形式などで表される色(描画色)データ、奥行き方向の距離を表すz値などがある。
また、最近の高精細な3次元グラフィックス処理では、遠近感を醸し出すためのf(fog:霧)や、物体表面の素材感や模様を表現してリアリティを与えるテクスチャ(texture)なども、画像パラメータの1つとして含まれている。
【0007】
ここで、ポリゴンの頂点情報からポリゴン内部のピクセルを発生する処理では、よくDDA(Digital Differential Analyzer)と呼ばれる線形補間手法を用いて実行される。
DDAプロセスでは、頂点情報からポリゴンの辺方向へのデータの傾きを求め、この傾きを用いて辺上のデータを算出した後、続いてラスタ走査方向(X方向)の傾きを算出し、この傾きから求めたパラメータの変化分を走査の開始点のパラメータ値に加えていくことで、内部のピクセルを発生していく。
【0008】
ところで、グラフィックスLSIの性能を向上させるには、LSIの動作周波数を上げるだけではなく、並列処理の手法を利用することが有効である。並列処理の手法を大別すると以下のようになる。
第1は領域分割による並列処理法であり、第2はプリミティブレベルでの並列処理法であり、第3はピクセルレベルでの並列処理法である。
【0009】
上記分類は並列処理の粒度に基づいており、領域分割並列処理の粒度が最もあらく、ピクセル・レベル並列処理の粒度が最も細かい。それぞれの手法の概要を以下に述べる。
【0010】
領域分割による並列処理
画面を複数の矩形領域に分割し、複数の処理ユニットそれぞれが担当する領域を割り当てながら並列処理する手法である。
【0011】
プリミティブレベルでの並列処理
複数の処理ユニットに別々のプリミティブ(たとえば三角形)を与えて並列動作させる手法である。
【0012】
ピクセルレベルでの並列処理
最も粒度の細かい並列処理の手法である。
図1は、ピクセルレベルでの並列処理の手法に基づくプリミティブレベルでの並列化処理について概念的に示す図である。
図1のように、ピクセルレベルでの並列処理の手法では三角形をラスタライズする際に、2×8のマトリクス状に配列されたピクセルからなるピクセルスタンプ(Pixel Stamp)PSと呼ばれる矩形領域単位にピクセルが生成される。
図1の例では、ピクセルスタンプPS0からからピクセルスタンプPS7までの合計8個のピクセルスタンプが生成されている。これらピクセルスタンプPS0〜PS7に含まれる最大16個のピクセルが同時に処理される。
この手法は、他の手法に比べ粒度が細かい分、並列処理の効率が良い。
【0013】
【発明が解決しようとする課題】
しかしながら、上述した領域分割による並列処理の場合、各処理ユニットを効率良く並列動作させるためには、各領域に描画されるべきオブジェクトをあらかじめ分類する必要があり、シーンデータ解析の負荷が重い。
また、1フレーム分のシーンデータが全て揃った上で描画を開始するのではなく、オブジェクトデータが与えられると即描画を開始するいわゆるイミーディエートモードでの描画を行う際には並列性を引き出すことができない。
【0014】
また、プリミティブレベルでの並列処理の場合、実際には、オブジェクトを構成するプリミティブの大きさにはバラツキがあることから、処理ユニットごとに一つのプリミティブを処理する時間に差が生じる。この差が大きくなった際には、処理ユニットが描画する領域も大きく異なり、データのローカリティが失われるので、メモリモジュールを構成するたとえばDRAMのページミスが頻発し性能が低下する。
また、この手法の場合には、配線コストが高いという問題点もある。一般に、グラフィックス処理を行うハードウェアでは、メモリのバンド幅を広げるために、複数メモリモジュールを用いてメモリインターリーブを行う。
その際、各処理ユニットと各内蔵メモリモジュールを全て結ぶ必要がある。
【0015】
一方、ピクセルレベルでの並列処理の場合、上述したように、粒度が細かい分、並列処理の効率が良いという利点があり、実際のフィルタリングを含む処理としては図2に示すような手順で行われている。
【0016】
すなわち、DDAパラメータ、たとえばラスタライゼーション(Rasterization)に必要な各種データ(Z、テクスチャ座標、カラーなど)の傾き等のDDAパラメータを算出する(ST1)。
次に、メモリからテクスチャデータを読み出し(ST2)、複数の演算器を含む第1の処理ユニットでサブワード再配置処理を行った後(ST3)、クロスバー回路により複数の演算器を含む第2の処理ユニットに集約する(ST4)。
次に、テクスチャフィルタリング(Texture Filtering)を行う(ST5)。この場合、第2の処理ユニットは、読み出されたテクスチャデータと、(u,v)アドレスは算出時に得た小数部を使って4近傍補間などのフィルタリング処理を行う。
次に、ピクセルレベルの処理(Per−Pixel Operation)、具体的には、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算を行う(ST5)。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、複数のメモリモジュール上のフレームバッファおよびZバッファに描画する(ST6)。
【0017】
また、画像処理装置において、複数のバッファを用いて半透明物体の合成を行う場合には、グラフィックスメモリに含まれるzバッファに記憶されているzデータと、描画データとして供給されるピクセルデータに対応するzデータとを比較し、供給されたピクセルデータによって書き込まれた画像により、手前(視点側)に位置するか否かを判断し、各バッファのzデータの奥行き方向に順番を維持しながら合成する。
【0018】
ところが、従来の画像処理装置においては、上述した半透明物体合成(Order Independent Transparency)を行う場合には、全シーンデータを流し、並列的に処理するときに、任意のレイヤ数での重ね合わせを行うことができない。
したがって、従来の画像処理装置においては、全シーンを流す回数が増大し、上位側の処理部、たとえばジオメトリ処理部の負荷が増大する等の不利益がある。
【0019】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、半透明物体合成を行う場合に、任意のレイヤ数での重ね合わせを行うことができ、全シーンデータを流す回数を減らすことができ、ひいてはシーンデータの処理部の負荷を軽減でき、処理の高速化を図れる画像処理装置およびその方法を提供することにある。
【0020】
【課題を解決するための手段】
上記目的を達成するため、本発明の第1の観点は、描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う画像処理装置であって、上記色データ、混合値データ、および奥行きデータを記憶および読み出しが可能な複数のバッファと、上記各バッファに対応して設けられ、初段から最終段に向かって縦続接続された複数のソート回路と、を有し、上記初段のソート回路は、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較し、比較の結果、第1の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻し、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給し、上記2段目以降の各ソート回路は、対応するバッファから読み出された読み出し奥行きデータ値と前段のソート回路から供給された第2の供給奥行きデータ値とを比較し、比較の結果、第2の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻して、前段から供給された第2の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給し、読み出し奥行きデータ値の方が大きい場合または小さい場合には、前段からの第2の供給奥行きデータ、色データ、および混合値データを対応するバッファに書き込み、読み出した奥行きデータ値、色データ、および混合値データを次段のソート回路に供給する。
【0021】
本発明では、上記2段目以降の各ソート回路は、対応するバッファに奥行きデータ値が格納されていない場合には、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む。
【0022】
また、本発明では、複数のバッファを含む複数のメモリバンクを有し、同一のメモリバンクの各バッファに対応して設けられたソート回路は互いに非接続状態にあり、それぞれ異なるメモリバンクに含まれるバッファに対応して設けられた複数のソート回路が、それぞれ並列的に縦続接続されている。
【0023】
本発明の第2の観点は、描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う画像処理装置であって、上記色データ、混合値データ、および奥行きデータを記憶および読み出しが可能な複数のバッファと、上記複数のバッファに対応して設けられ、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較する比較部を含む複数のソート回路と、を有し、上記各ソート回路は、初段から最終段に向かって縦続接続され、各ソート回路は、上記比較部の比較の結果、第1の供給奥行きデータ値が読み出し奥行きデータ値より大きい場合または小さい場合には、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給して、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻し、第1の供給奥行きデータ値が読み出し奥行きデータ値より小さい場合または大きい場合には、当該読み出した奥行きデータ、色データ、および混合値データを次段のソート回路に供給して、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む。
【0024】
本発明では、上記初段のソート回路は、上記第1の供給奥行きデータ値が読み出し奥行きデータ値より小さい場合または大きい場合には、読み出した奥行きデータ、色データ、および混合値データを次段のソート回路に供給して、供給された上記第1の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む。
【0025】
また、本発明では、上記2段目以降の各ソート回路は、対応するバッファに奥行きデータ値が格納されていない場合には、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む。
【0026】
また、本発明では、複数のバッファを含む複数のメモリバンクが多段に配置され、同一のメモリバンクの各バッファに対応して設けられたソート回路は互いに縦続接続され、上記各メモリバンクの各バッファに対応して設けられ、縦続接続された複数のソート回路には、前段のメモリバンクの各バッファに対応して設けられ、縦続接続された複数のソート回路のうちの最終段の出力奥行きデータが供給される。
【0027】
本発明の第3の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、グローバルモジュールと、描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う複数のローカルモジュールと、を含み、上記グローバルモジュールは、上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた当該リクエストを出したローカルモジュールに処理データを出力し、上記複数のローカルモジュールは、上記色データ、混合値データ、および奥行きデータを記憶および読み出しが可能な複数のバッファと、上記各バッファに対応して設けられ、初段から最終段に向かって縦続接続された複数のソート回路と、を有し、上記初段のソート回路は、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較し、比較の結果、第1の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻し、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給し、上記2段目以降の各ソート回路は、対応するバッファから読み出された読み出し奥行きデータ値と前段のソート回路から供給された第2の供給奥行きデータ値とを比較し、比較の結果、第2の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻して、前段から供給された第2の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給し、読み出し奥行きデータ値の方が大きい場合または小さい場合には、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込み、読み出した奥行きデータ、色データ、および混合値データを次段のソート回路に供給する。
【0028】
本発明の第4の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、グローバルモジュールと、描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う複数のローカルモジュールと、を含み、上記グローバルモジュールは、上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた当該リクエストを出したローカルモジュールに処理データを出力し、上記複数のローカルモジュールは、上記色データ、混合値データ、および奥行きデータを記憶および読み出しが可能な複数のバッファと、上記複数のバッファに対応して設けられ、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較する比較部を含む複数のソート回路と、を有し、上記各ソート回路は、初段から最終段に向かって縦続接続され、各ソート回路は、上記比較部の比較の結果、第1の供給奥行きデータ値が読み出し奥行きデータ値より大きい場合または小さい場合には、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給して、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻し、第1の供給奥行きデータ値が読み出し奥行きデータ値より小さい場合または大きい場合には、当該読み出した奥行きデータ、色データ、および混合値データを次段のソート回路に供給して、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む。
【0029】
本発明の第5の観点は、描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う画像処理方法であって、複数の各バッファに対応した複数のソートステージを初段から最終段に向かって縦続接続し、上記初段のソートステージでは、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較し、第1の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出し奥行きデータ、色データ、および混合値データを対応するバッファに書き戻して、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソートステージに供給し、上記2段目以降の各ソートステージでは、対応するバッファから読み出された読み出し奥行きデータ値と前段のソートステージから供給された第2の供給奥行きデータ値とを比較し、第2の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻して、前段からの第2の供給奥行きデータ値、色データ、および混合値データを次段のソートステージに供給し、読み出し奥行きデータ値の方が大きい場合または小さい場合には、前段からの第2の供給奥行きデータ、色データ、および混合値データを対応するバッファに書き込み、読み出した奥行きデータ、色データ、および混合値データを次段のソートステージに供給する。
【0030】
本発明の第6の観点は、描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う画像処理方法であって、複数の各バッファに対応した複数のソートステージを初段から最終段に向かって縦続接続し、上記各ソートステージにおいて、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較し、第1の供給奥行きデータ値が読み出し奥行きデータ値より大きい場合または小さい場合には、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソートステージに供給して、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻し、第1の供給奥行きデータ値が読み出し奥行きデータ値より小さい場合または大きい場合には、読み出した奥行きデータ、色データ、および混合値データを次段のソートステージに供給して、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む。
【0031】
本発明によれば、たとえば各バッファに格納されている奥行きデータ、色データ、および混合値データが対応するソート回路に読み出される。
また、初段のソート回路には、描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値、色データ、および混合値データが供給される。初段のソート回路においては、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とが比較される。
そして、比較の結果、第1の供給奥行きデータ値の方がたとえば大きい場合(または小さい場合)には、読み出した奥行きデータ、色データ、および混合値データが対応するバッファに書き戻され、供給された第1の供給奥行きデータ値、色データ、および混合値データが次段のソート回路に供給される。
また、2段目以降の各ソート回路では、対応するバッファから読み出された読み出し奥行きデータ値と前段のソート回路から供給された第2の供給奥行きデータ値とが比較される。
そして、比較の結果、第2の供給奥行きデータ値の方が大きい場合(または小さい場合)には、読み出し奥行きデータ、色データ、および混合値データを対応するバッファに書き戻され、前段からの第2の供給奥行きデータ値、色データ、および混合値データが次段のソート回路に供給される。
一方、読み出し奥行きデータ値の方が大きい場合(または小さい場合)には、前段からの第2の供給奥行きデータ値、色データ、および混合値データが対応するバッファに書き込まれ、読み出した奥行きデータ、色データ、および混合値データが次段のソート回路に供給される。
【0032】
また、本発明によれば、たとえば各バッファに格納されている奥行きデータ、色データ、および混合値データが対応するソート回路に読み出される。
また、各ソート回路には、描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値、色データ、および混合値データが供給される。
各ソート回路においては、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とが比較される。
そして、比較の結果、第1の供給奥行きデータ値が読み出し奥行きデータ値より大きい場合(または小さい場合)には、供給された第1の供給奥行きデータ値、色データ、および混合値データが次段のソート回路に供給され、読み出した奥行きデータ、色データ、および混合値データが対応するバッファに書き戻される。
一方、第1の供給奥行きデータ値が読み出し奥行きデータ値より小さい場合(または大きい場合)には、読み出した奥行きデータ、色データ、および混合値データが次段のソート回路に供給され、前段からの第2の供給奥行きデータ値、色データ、および混合値データが対応するバッファに書き込まれる。
【0033】
【発明の実施の形態】
図3は、本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【0034】
本実施形態に係る画像処理装置10は、図3に示すように、ストリームデータコントローラ(SDC)11、グローバルモジュール12、および複数のローカルモジュール13−0〜13−3を有している。
【0035】
本画像処理装置10では、SDC11とグローバルモジュール12とがデータの授受を行い、一つのグローバルモジュール12に対して複数個m、本実施形態では4個のローカルモジュール13−0〜13−3が並列に接続されて、複数のローカルモジュール13−0〜13−3で処理データを共有し並列に処理する。
そして、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、グローバルアクセスバスの形態をとる代わりに、ルータとしての機能を有する一つのグローバルモジュール12を介したアクセスを行う。
また、グローバルモジュール12はグローバルキャッシュを有し、各ローカルモジュール13−0〜13−3はローカルキャッシュをそれぞれ有する。
すなわち、本画像処理装置10は、キャッシュの階層として、たとえば4つのローカルモジュール13−0〜13−3が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの2階層を有する。
【0036】
以下に各構成要素の構成および機能について、図面に関連付けて順を追って説明する。
【0037】
SDC11は、CPUや外部メモリとのデータの授受、並びにグローバルモジュール12とのデータの授受を司るとともに、頂点データに対する演算、各ローカルモジュール13−0〜13−3の処理ユニットにおけるラスタライゼーション(Rasterization)に必要なパラメータの生成等の処理を行う。
【0038】
SDC11における具体的な処理内容は以下の通りである。また、SDC11の処理手順を図4に示す。
【0039】
SDC11は、まず、データが入力されると(ST1)、Per−Vertexオペレーションを行う(ST2)。
この処理においては、3次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。代表的な演算としては、物体の変形やスクリーンへの投影などを行う座標変換の演算処理、ライティング(Lighting)の演算処理、クリッピング(Clipping)の演算処理がある。
ここで行われる処理は、いわゆるVertex Shaderの実行に相当する。
【0040】
次に、DDA(Digital Differential Analyzer)パラメータを計算する(ST3)。
この処理では、ラスタライゼーションに必要な各種データ(Z、テクスチャ座標、カラーなど)の傾き等のDDAパラメータを算出する。
【0041】
次に、算出したDDAパラメータをグローバルモジュール12を介して全ローカルモジュール13−0〜13−3にブロードキャストする(ST4)。
この処理において、ブロードキャストされたパラメータは、キャッシュフィルとは別のチャネルを用いて、グローバルモジュール12を介して各ローカルモジュール13−0〜13−3に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【0042】
グローバルモジュール12は、ルータ機能および全ローカルモジュールで共用するグローバルキャッシュ121を有する。
グローバルモジュール12は、SDC11によるDDAパラメータを並列に接続された全ローカルモジュール13−0〜13−3にブロードキャストする。
【0043】
また、グローバルモジュール12は、たとえばあるローカルモジュールからローカルキャッシュフィル(Local Cache Fill)LCFのリクエストを受けると、図5に示すように、グローバルキャッシュのエントリーをチェックし(ST11)、エントリーがあった場合には(ST12)、要求されたブロックデータを読み出し(ST13)、読み出したデータをリクエストを送出したローカルモジュールに送出し(ST14)、エントリーがなかった場合には(ST12)、当該ブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィル(Global Cache Fill)GCFのリクエストを送り(ST15)、その後送られてきたブロックデータでグローバルキャッシュを更新するとともに(ST16,ST17)、ブロックデータを読み出し(ST13)、読み出したデータをローカルキャッシュフィルLDFのリクエストを送ってきたローカルモジュールに対して送出する(ST14)。
【0044】
ローカルモジュール13−0は、処理ユニット131−0、たとえばDRAMからなるメモリモジュール132−0、モジュール固有のローカルキャッシュ133−0、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(Global Access Interface:GAIF))134−0を有している。
【0045】
同様に、ローカルモジュール13−1は、処理ユニット131−1、たとえばDRAMからなるメモリモジュール132−1、モジュール固有のローカルキャッシュ133−1、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(GAIF)134−1を有している。
ローカルモジュール13−2は、処理ユニット131−2、たとえばDRAMからなるメモリモジュール132−2、モジュール固有のローカルキャッシュ133−2、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(GAIF)134−2を有している。
ローカルモジュール13−3は、処理ユニット131−3、たとえばDRAMからなるメモリモジュール132−3、モジュール固有のローカルキャッシュ133−3、およびグローバルモジュール12とのインターフェースを司るグローバルインターフェース(GAIF)134−3を有している。
【0046】
各ローカルモジュール13−0〜13−3は、メモリモジュール132−0〜132−3が所定の大きさ、たとえば4×4の矩形領域単位にインターリーブされており、メモリモジュール132−0と処理ユニット131−0、メモリモジュール132−1と処理ユニット131−1、メモリモジュール132−2と処理ユニット131−2、およびメモリモジュール132−3と処理ユニット131−3は、担当領域は1対1に対応しており、描画系については他のローカルモジュールに対するメモリアクセスが発生しない。
一方、各ローカルモジュール13−0〜13−3は、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、この場合、グローバルモジュール12を介したアクセスを行う。
【0047】
各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3はそれぞれ、画像処理とグラフィックス処理に特徴的な、いわゆるストリーミングデータ処理を高スループットで実行するストリーミングプロセッサである。
【0048】
各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3は、たとえばそれぞれ以下のグラフィックス処理および画像処理を行う。
【0049】
まず、処理ユニット131−0〜131−3のグラフィックス処理の概要を図6および図7のフローチャートに関連付けて説明する。
【0050】
処理ユニット131(−0〜−3)は、ブロードキャストされたパラメータデータが入力されると(ST21)、三角形が自分が担当する領域であるか否かを判断し(ST22)、担当領域である場合には、ラスタライゼーションを行う(ST23)。
すなわち、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かを判断し、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)をラスタライズする。この場合、生成単位は、1ローカルモジュール当たり1サイクルで2×2ピクセルである。
【0051】
次に、テクスチャ座標のパースペクティブコレクション(Perspective Correction)を行う(ST24)。また、この処理ステージにはLOD(Level of Detail)計算によるミップマップ(MipMap)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算も含まれる。
【0052】
次に、テクスチャの読み出しを行う(ST25)。
この場合、各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3は、図7に示すように、テクスチャリードの際に、まずは、ローカルキャッシュ133−0〜133−3のエントリーをチェックし(ST31)、エントリーがあった場合には(ST32)、必要なテクスチャデータを読み出す(ST33)。
必要とするテクスチャ・データがローカルキャッシュ133−0〜133−3内に無い場合には、各処理ユニット131−0〜131−3は、グローバルインターフェース134−0〜134−3を通して、グローバルモジュール12に対してローカルキャッシュフィルのリクエストを送る(ST34)。
そして、グローバルモジュール12は、要求されたブロックをリクエストを送出したローカルモジュールに返すが、なかった場合には上述したように(図5に関連付けて説明)、当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストを送る。その後ブロックデータをグローバルキャッシュにフィルするとともに、リクエストを送ってきたローカルモジュールに対してデータを送出する。
グローバルモジュール12から要求したブロックデータが送られてくると、該当するローカルモジュールは、ローカルキャッシュを更新し(ST35,ST36)、処理ユニットはブロックデータを読み出す(ST33)。
なお、ここでは、最大4テクスチャの同時処理を想定しており、読み出すテクスチャデータの数は、1ピクセルにつき16テクセルである。
【0053】
次に、テクスチャフィルタリング(Texture Filtering)を行う(ST26)。
この場合、処理ユニット133−0〜133−3は、読み出されたテクスチャデータと、(u,v)アドレスを算出時に得た小数部を使って4近傍補間などのフィルタリング処理を行う。
【0054】
次に、ピクセルレベルの処理(Per−Pixel Operation)を行う(ST27)。
この処理においては、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。ここで行われる処理は、ピクセルレベルでのライティング(Per−Pixel Lighting)などいわゆるPixel Shaderに相当する。また、それ以外にも以下の処理が含まれる。
すなわち、アルファテスト、シザリング、Zバッファテスト、ステンシルテスト、アルファブレンディング、ロジカルオペレーション、ディザリングの各処理である。
【0055】
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール132−0〜132−3、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる(ST28:Memory
Write)。
【0056】
次に、処理ユニット131−0〜131−3の画像処理の概要を図8のフローチャートに関連付けて説明する。
【0057】
画像処理を実行する前に、メモリモジュール132(−0〜−3)に画像データがロードされる。
そして、処理ユニット131(−0〜−3)では、画像処理に必要な読み出し(ソース:Source)アドレスおよび書き込み(デスティネーション:Destination)アドレスの生成に必要なコマンドやデータが入力される(ST41)。
そして、処理ユニット131(−0〜−3)において、ソースアドレスおよびデスティネーションアドレスが生成される(ST42)。
次に、ソース画像がメモリモジュール132(−0〜−3)から読み出され、あるいはグローバルモジュール12から供給され(ST43)、たとえばテンプレートマッチング等の所定の画像処理が行われる(ST44)。
そして、必要に応じて所定の演算処理が行われ(ST45)、その結果がメモリモジュール132(−0〜−3)のデスティネーションアドレスで指定された領域に書き込まれる(ST46)。
【0058】
各ローカルモジュール13−0〜13−3のローカルキャッシュ133−0〜133−3は、処理ユニット131−0〜131−3の処理に必要な描画データやテクスチャデータを格納し、処理ユニット131−0〜131−3とのデータの授受、並びにメモリモジュール132−0〜132−3とのデータの授受(書き込み、読み出し)を行う。
【0059】
図9は、各ローカルモジュール13−0〜13−3のローカルキャッシュ133−0〜133−3の構成例を示すブロック図である。
【0060】
ローカルキャッシュ133は、図9に示すように、リードオンリーキャッシュ(RO$)1331、リードライトキャッシュ(RW$)1332、リオーダバッファ(Reorder Buffer:RB)1333、およびメモリコントローラ(MC)1334を含む。
【0061】
リードオンリーキャッシュ1331は、演算処理のソース画像などを読み出すための読み出し専用キャッシュであって、たとえばテクスチャ系データ等の記憶に用いられる。
リードライトキャッシュ1332は、たとえばグラフィックス処理におけるリードモディファイライト(Read Modify Write )に代表される読み出しと書き込みの両方を必要とするオペレーションを実行するためのキャッシュであって、たとえば描画系データの記憶に用いられる。
【0062】
リオーダバッファ1333は、いわゆる待ち合わせバッファであり、ローカルキャッシュに必要なデータがない場合、ローカルキャッシュフィルのリクエストを出したときに、グローバルモジュール12に送られてくるデータの順番が異なる場合があるので、この順番を遵守し、処理ユニット131−0〜131−3に要求順に戻すようにデータの順番を調整する。
【0063】
また、図10は、メモリコントローラ1334のテクスチャ系の構成例を示すブロック図である。
このメモリコントローラ1334は、図10に示すように、4つのキャッシュCSH0〜CSH3に対応するキャッシュコントローラ13340〜13343と、各キャッシュコントローラ13340〜13343から出力されるローカルキャッシュフィルリクエストを調停しグローバルインターフェース134{−0〜3}に出力するアービタ13344と、グローバルインターフェース134{−0〜3}を介して入力したグローバルキャッシュフィルリクエストを受けて、データ転送の制御を行うメモリインターフェース13345を含む。
【0064】
また、キャッシュコントローラ13340〜13343は、4つのピクセルPX0〜PX3それぞれに対応するデータに対して4近傍補間を行う際に必要な各データの2次元アドレスCOuv00〜COuv03、COuv10〜COuv13、COuv20〜COuv23、COuv30〜COuv33を受けてアドレスの競合をチェックし分配するコンフリクトチェッカCC10と、コンフリクトチェッカCC10で分配されたアドレスをチェックしリードオンリーキャッシュ1331にアドレスで示されたデータが存在するか否かを判断するタグ回路TAG10と、キューレジスタQR10を有している。
タグ回路TAG10内は後述するバンクのインターリーブに関するアドレッシングに対応する4つのタグメモリBX10〜BX13を有し、リードオンリーキャッシュ1331に記憶されている。
ブロックデータのアドレスタグを保持するコンフリクトチェッカCC10で分配されたアドレスと上記アドレスタグを比較し、一致したか否かのフラグと前記アドレスをキューレジスタQR10にセットするとともに、一致しなかった場合には前記アドレスをアービタ13344に送出する。
アービタ13344は、キャッシュコントローラ13340〜13343から送出されるアドレスを受けて調停作業を行い、グローバルインターフェース(GAIF)134を介して同時に送出できるリクエストの数に応じてアドレスを選択し、ローカルキャッシュフィルリクエストとしてグローバルインターフェース(GAIF)134に出力する。
グローバルインターフェース(GAIF)134を介して送出されたローカルキャッシュフィルリクエストに対応してグローバルキャッシュ12からデータが送られてくると、リオーダバッファ1333にセットされる。
キャッシュコントローラ13340〜13343は、キューレジスタQRL0の先頭にあるフラグをチェックし、一致したことを示すフラグがセットされていた場合には、キューレジスタQRL0の先頭にあるアドレスに基づいて、リードオンリーキャッシュ1331のデータを読み出し、処理ユニット131に与える。一方、一致したことを示すフラグがセットされていなかった場合には、対応するデータがリオーダバッファ1333にセットされた時点でリオーダバッファ1333から読み出し、キューレジスタQRL0のアドレスに基づいて当該ブロックデータでリードオンリーキャッシュ1331を更新するとともに、処理ユニット131に出力する。
【0065】
次に、メモリモジュールとしてのDRAMと、ローカルキャッシュと、グローバルキャッシュのメモリ容量について説明する。
メモリ容量の関係は、当然のことながらDRAM>グローバルキャッシュ>ローカルキャッシュであるが、その割合については、アプリケーションに依存する。
キャッシュブロックサイズとしては、キャッシュフィル時に下位階層のメモリから読み出すデータサイズに相当する。
DRAMの特性として、ランダムアクセス時には性能が低下するが、同一行(ROW)に属するデータの連続アクセスは速いという点をあげることができる。
【0066】
グローバルキャッシュは、DRAMからデータを読み出す関係上、前記連続アクセスを行う方が性能上好ましい。
したがって、キャッシュブロックのサイズを大きく設定する。
たとえば、グローバルキャッシュのキャッシュブロックのサイズはDRAMマクロの1行分をブロックサイズにすることができる。
【0067】
一方、ローカルキャッシュの場合には、ブロックサイズを大きくすると、キャッシュに入れても、使われないデータの割合が増えることと、下位階層がグローバルキャッシュでDRAMでなく連続アクセスに必要性がないことから、ブロックサイズは小さく設定する。
ローカルキャッシュのブロックサイズとしては、メモリインターリーブの矩形領域のサイズに近い値が適当で、本実施形態の場合、4×4ピクセル分、すなわち512ビットとする。
【0068】
次に、テクスチャ圧縮について説明する。
1ピクセルの処理を行うのに複数のテクスチャデータを必要とするので、テクスチャ読み出しバンド幅がボトルネックになる場合が多いが、これを軽減するためテクスチャを圧縮する方法がよく採用される。
圧縮方法には、いろいろあるが、4×4ピクセルのように小さな矩形領域単位で圧縮/伸長できる方法の場合には、グローバルキャッシュには圧縮されたままのデータを置き、ローカルキャッシュには、伸長後のデータを置くことが好ましい。
【0069】
次に、ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3の具体的な構成例について説明する。
【0070】
図11は、本実施形態に係るローカルモジュールの処理ユニットの具体的な構成例を示すブロック図である。
【0071】
ローカルモジュール13(−0〜−3)の処理ユニット131(−0〜−3)は、図11に示すように、ラスタライザ(Rasterizer:RSTR)1311およびコア(Core)1312を有している。
これらの構成要素のうち、コア1312が本アーキテクチャを実現する演算処理部がであり、コア1312はラスタライザ1311によりアドレスや座標等のグラフィックス処理および画像処理のための各種データが供給される。
【0072】
ラスタライザ1311は、グラフィックス処理の場合には、グローバルモジュール12からブロードキャストされたパラメータデータを受けて、たとえば三角形が自分が担当する領域であるか否かを判断し、担当領域である場合には、入力した三角形頂点データに基づいてラスタライゼーションを行い、生成したピクセルデータをコア1312に供給する。
ラスタライザ1311において生成されるピクセルデータには、ウィンドウ座標(X,Y,Z)、プライマリカラー(Primary Color:PC)(Rp,Gp,Bp,Ap)、セカンダリカラー(Secondary Color:SC)(Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標、法線ベクトル、視線ベクトル、ライトベクトル((V1x,V1y,V1z),(V2x,V2y,V2z))等の各種データが含まれる。
なお、ラスタライザ1311からコア1312へのデータの供給ラインは、たとえばウィンドウ座標(X,Y,Z)の供給ラインと、他のプライマリカラー(Rp,Gp,Bp,Ap)、セカンダリカラー(Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標(V1x,V1y,V1z)、および(V2x,V2y,V2z)の供給ラインとは、異なる配線により形成される。
【0073】
ラスタライザ1311は、画像処理の場合には、たとえばグローバルモジュール12を介して図示しない上位装置から出力された、メモリモジュール132(−0〜−3)から画像データを読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえば探索矩形領域の幅、高さデータ(Ws,Hs)、ブロックサイズデータ(Wbk,Hbk)を入力し、入力データに基づいて、ソースアドレス(X1s,Y1s)および/または(X2s,Y2s)を生成するとともに、デスティネーションアドレス(Xd,Yd)を生成し、コア1312に供給する。
画像処理時のラスタライザ1311からコア1312へのデータの供給ラインは、たとえばデスティネーションアドレス(Xd,Yd)に関してはグラフィックス処理時のウィンドウ座標(X,Y,Z)の供給ラインが共用され、ソースアドレス(X1s,Y1s),(X2s,Y2s)に関してはテクスチャ座標(V1x,V1y,V1z)、および(V2x,V2y,V2z)等の供給ラインが共用される。
【0074】
コア1312は、本アーキテクチャを実現する演算処理部であり、コア1312はラスタライザ1311により各種データが供給される。
コア1312は、ストリームデータに対して演算処理を行う以下の機能ユニットを有している。
すなわち、コア1312は、第1の機能ユニットとしてのグラフィックスユニット(Graphics Unit :GRU)13121、第3の機能ユニットとしてのピクセルエンジン(Pixel Engine:PXE)13122、および第2の機能ユニットとしてのピクセル演算プロセッサ(Pixel 0peration Processor :POP)群13123を有している。
コア1312は、たとえばデータフローグラフ(Data Flow Graph : DFG)に応じてこれらの機能ユニット間の接続を切り替えることにより様々なアルゴリズムに対応する。
さらに、コア1312は、レジスタユニット(Register Unit :RGU)13124、およびクロスバー回路(Interconnection X−Bar :IXB)13125を有している。
【0075】
グラフィックスユニット(GRU)13121は、グラフィックス処理を実行する際に、専用ハードウェアを付加することがコストパフォーマンス上明らかに有利なものをハードワイヤードロジックで実装している機能ユニットである。
グラフィックスユニット13121は、グラフィックス処理に関連するものとして、パースペクティブコレクション(Perspective Correction)、MIPMAPレベル算出等の機能を実装している。
【0076】
グラフィックスユニット13121は、クロスバー回路13125、レジスタユニット(RGU)13124を介してラスタライザ1311により供給されたテクスチャ座標(V1x,V1y,V1z)、および/またはラスタライザ1311またはピクセルエンジン(PXE)13122により供給されたテクスチャ座標(V2x,V2y,V2z)データを入力し、入力データに基づいて、パースペクティブコレクション、LOD(LevelofDetail)計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(Cube Map)の面選択や正規化テクセル座標(s,t)の算出処理を行い、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含むグラフィックスデータ(s1,t1,lod1)および/または(s2,t2,lod2)をピクセル演算プロセッサ(POP)群13123に出力する。
なお、グラフィックスユニット13121の出力グラフィックスデータ(s1,t1,lod1),(s2,t2,lod2)は、クロスバー回路13125、レジスタユニット(RGU)13124を通して、あるいは図14中、破線で示すように、別の配線で直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0077】
第3の機能ユニットとしてのピクセルエンジン(PXE)13122は、ストリームデータ処理を行う機能ユニットであって、内部に複数の演算器を有する。ピクセルエンジン13122は、ピクセル演算プロセッサ(POP)群13123に比べて演算器間の接続自由度が高く、かつ演算器の機能も豊富である。
【0078】
ピクセルエンジン(PXE)13122は、描画対象に関する情報やピクセル演算プロセッサ(POP)群13123における演算結果を、たとえばクロスバー回路13125によりレジスタユニット(RGU)13124の所望のFIFOレジスタに設定された後、クロスバー回路13125を介さず、レジスタユニット(RGU)13124を介して直接的に供給される。
ピクセルエンジン(PXE)13122に入力されるデータとしては、たとえば描画する対象の表面に関する情報(面の方向、色、反射率、模様(テクスチャ)等)、表面にあたる光に関する情報(入射方向、強さなど)、過去の演算結果(演算の中間値)等が一般的である。
【0079】
ピクセルエンジン(PXE)13122は、複数の演算器を有し、たとえば外部からの制御により演算経路を再構成可能な演算ユニットであって、所望の演算を実現するように、内部の演算器間の電気的接続を確立し、レジスタユニット(RGU)13124を介して入力されたデータを、演算器と電気的接続網(インターコネクト)から形成される一連の演算器のデータパスに入力することで演算を行い、演算結果を出力する。
【0080】
すなわち、ピクセルエンジン13122は、再構成可能なデータパスをたとえば複数有し、演算器(加算器、乗算器、乗加算器等)を、電気的な接続網で接続し、複数個の演算器からなる演算回路を構成する。
そして、ピクセルエンジン13122は、このようにして再構成された演算回路に対して、連続してデータを入力し、演算を行うことが可能であり、たとえば二分木状のDFG(データフローグラフ)で表現される演算を、効率よくかつ少ない回路規模で実現できる接続網を使用して演算回路を構成することが可能である。
【0081】
図12は、ピクセルエンジン(PXE)13122の構成例、およびレジスタユニット(RGU)13124、クロスバー回路13125との接続例を示す図である。
【0082】
このピクセルエンジン(PXE)13122は、図12に示すように、2または3入力MAC(Multiply and Accumulator)を基本とした複数(図12の例では16個)の演算器OP1〜OP8,OP11〜OP18と、1または複数(図12の例では4個)ルックアップテーブルLUT1,LUT2、LUT11,LUT12とを有している。
【0083】
図12に示すように、ピクセルエンジン(PXE)13122内の各演算器OP1〜OP8,OP11〜OP18の2本の入力は、レジスタユニット(RGU)13124のFIFO(First−IN First−Out) レジスタFREGと直結している。
同様に、ルックアップテーブルLUT1,LUT2、LUT11,LUT12の1本の入力はレジスタユニット(RGU)13124のFIFOレジスタFREGと直結している。
そして、各演算器OP1〜OP8,OP11〜OP18およびルックアップテーブルLUT1,LUT2、LUT11,LUT12の出力は、クロスバー回路13125に接続されている。
【0084】
さらに、図12の例では、演算器OP1の出力が演算器OP3,OP4の2入力および3入力演算器OP2の1入力にそれぞれ接続されている。同様に、演算器OP2の出力が演算器OP4の2入力および3入力演算器OP3の1入力にそれぞれ接続されている。また、演算器OP3の出力が3入力演算器OP4の1入力に接続されている。
演算器OP5の出力が演算器OP7,OP8の2入力および3入力演算器OP6の1入力にそれぞれ接続されている。同様に、演算器OP6の出力が演算器OP8の2入力および3入力演算器OP7の1入力にそれぞれ接続されている。また、演算器OP7の出力が3入力演算器OP8の1入力に接続されている。
さらに、演算器OP11の出力が演算器OP13,OP14の2入力および3入力演算器OP12の1入力にそれぞれ接続されている。同様に、演算器OP12の出力が演算器OP14の2入力および3入力演算器OP13の1入力にそれぞれ接続されている。また、演算器OP13の出力が3入力演算器OP14の1入力に接続されている。
演算器OP15の出力が演算器OP17,OP18の2入力および3入力演算器OP16の1入力にそれぞれ接続されている。同様に、演算器OP16の出力が演算器OP18の2入力および3入力演算器OP17の1入力にそれぞれ接続されている。また、演算器OP17の出力が3入力演算器OP18の1入力に接続されている。
【0085】
このように、図12のピクセルエンジン(PXE)13122内においては、演算器OP1の出力がフォワーディングパスにより演算器OP2,OP3、OP4に接続されており、演算器OP2,OP3、OP4は、演算器OP1の出力をソースオペランドとして参照可能である。
演算器OP2の出力がフォワーディングパスにより演算器OP3、OP4に接続されており、演算器OP3、OP4は、演算器OP2の出力をソースオペランドとして参照可能である。
演算器OP3の出力がフォワーディングパスにより演算器OP4に接続されており、演算器OP4は、演算器OP3の出力をソースオペランドとして参照可能である。
演算器OP5の出力がフォワーディングパスにより演算器OP6,OP7、OP8に接続されており、演算器OP6,OP7、OP8、演算器OP5の出力をソースオペランドとして参照可能である。
演算器OP6の出力がフォワーディングパスにより演算器OP7、OP8に接続されており、演算器OP7、OP8は、演算器OP6の出力をソースオペランドとして参照可能である。
演算器OP7の出力がフォワーディングパスにより演算器OP8に接続されており、演算器OP8は、演算器OP7の出力をソースオペランドとして参照可能である。
同様に、演算器OP11の出力がフォワーディングパスにより演算器OP12,OP13、OP14に接続されており、演算器OP12,OP13、OP14は、演算器OP11の出力をソースオペランドとして参照可能である。
演算器OP12の出力がフォワーディングパスにより演算器OP13、OP14に接続されており、演算器OP13、OP14は、演算器OP12の出力をソースオペランドとして参照可能である。
演算器OP13の出力がフォワーディングパスにより演算器OP14に接続されており、演算器OP14は、演算器OP13の出力をソースオペランドとして参照可能である。
演算器OP15の出力がフォワーディングパスにより演算器OP16,OP17、OP18に接続されており、演算器OP16,OP17、OP18、演算器OP15の出力をソースオペランドとして参照可能である。
演算器OP16の出力がフォワーディングパスにより演算器OP17、OP18に接続されており、演算器OP17、OP18は、演算器OP16の出力をソースオペランドとして参照可能である。
演算器OP17の出力がフォワーディングパスにより演算器OP18に接続されており、演算器OP18は、演算器OP17の出力をソースオペランドとして参照可能である。
また、ルックアップテーブルLUT1,LUT2、LUT11,LUT12は、たとえば任意に定義可能なRAM−LUTであり、1コンテキストでは最大L(L:同時参照可能なテーブル数)個まで参照可能である。ルックアップテーブルLUT1,LUT2、LUT11,LUT12には、たとえばsin/cos等の初等関数等が保持される。
【0086】
以上の構成において、ピクセルエンジン(PXE)13122とレジスタユニット(RGU)13124間の接続数に関しては、ピクセルエンジン(PXE)13122からクロスバー回路(IBX)13125への接続数CN1は次のようになる。
【0087】
【数1】
CN1=(演算器数+同時参照可能なLUT数)×1
【0088】
また、レジスタユニット(RGU)13124からピクセルエンジン(PXE)13122への接続数CN2は次のようになる。
【0089】
【数2】
CN2=演算器数×2+同時参照可能なLUT数×1
【0090】
以上の構成を有するピクセルエンジン(PXE)13122は、たとえばグラフィックス処理時に、クロスバー回路13125を介してレジスタユニット(RGU)13124の所望のFIFOレジスタに設定され、FIFOレジスタから直接的に入力されたピクセル演算プロセッサ(POP)群13123における演算結果データ(TR1,TG1,TB1,TA1)および(TR2,TG2,TB2,TA2)、並びに、ラスタライザ1311によりレジスタユニット(RGU)13124の所望のFIFOレジスタに設定され、FIFOレジスタから直接的に入力されたプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、たとえばピクセルシェーダ(Pixel Shader)のような演算を行い、色データ(FR1,FG1,FB1)および混合値(ブレンド値:FA1)を求める。
ピクセルエンジン(PXE)13122は、このデータ(FR1,FG1,FB1,FA1)を、クロスバー回路13125、レジスタユニット(RGU)13124を介して、ピクセル演算プロセッサ(POP)群13123の所定のPOP内あるいは別個に設けられたライトユニットWUに転送する。
【0091】
ピクセル演算プロセッサ(POP)群13123は、メモリバンド幅を活かした高並列の演算処理を行う機能ユニットであるPOPを複数、本実施形態ではたとえば図13に示すように、POP0〜POP3の4個を有する。
各POPは、並列に配列されたPOPE(Pixel Operation Processing Element)と呼ばれる複数の演算器を有している。また、メモリに対するアドレス生成機能も有する。
ピクセル演算プロセッサ(POP)群13123とキャッシュ間は広いバンド幅で接続されており、かつメモリアクセスのためのアドレス生成機能を内蔵しているので、演算器の演算能力を最大限引き出すだけのストリームデータの供給が可能である。
【0092】
ピクセル演算プロセッサ(POP)群13123は、グラフィックス処理時には、たとえば以下の処理を行う。
たとえばグラフィックスユニット(GRU)13121から直接的に供給された(s1,t1,lod1),(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算を行い、アドレスデータ(ui,vi,lodi)に基づいて4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)を計算してメモリコントローラMCに供給して、メモリモジュール132から所望のテクセルデータをたとえばリードオンリーキャッシュRO$を通して各POPEに読み出す。
また、ピクセル演算プロセッサ(POP)群13123は、係数生成のためのデータ(uf,vf,lodf)に基づいてテクスチャフィルタ係数Kを計算して各POPEに供給する。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)を求め、(TR,TG,TB,TA)をクロスバー回路13125、レジスタユニット(RGU)13124を介してピクセルエンジン(PXE)13122に転送する。
【0093】
一方、ピクセル演算プロセッサ(POP)群13123は、画像処理時には、たとえば以下の処理を行う。
ピクセル演算プロセッサ(POP)群13123は、たとえばラスタライザ1311で生成されてレジスタユニット(RGU)13124に設定され、グラフィックスユニット(GRU)13121を素通りしてクロスバー回路13125を介さずに直接的に供給されたソースアドレス(X1s,Y1s)および(X2s,Y2s)に基づいて、たとえばリードオンリーキャッシュRO$および/またはリードライトキャッシュRW$を介して、メモリモジュール132にされている画像データを読み出し、読み出しデータに対して所定の演算処理を行って、演算結果をクロスバー回路13125、レジスタユニット(RGU)13124を介してライトユニットWUに転送する。
【0094】
なお、上述した機能を有するPOPのさらに具体的な構成については、後で詳述する。
【0095】
レジスタユニット(RGU)13124は、コア1312内の各機能ユニットで処理されるストリームデータを格納するFIFO構造のレジスタファイルである。
また、ハードウェアリソースの関係で、DFGを複数のサブDFG(Sub−DFG)に分割して実行しなければならない場合に、サブDFG間の中間値格納バッファとしても機能する。
図12に示すように、レジスタユニット(RGU)13124内のFIFOレジスタFREGの出力と機能ユニットであるピクセルエンジン(PXE)13122、ピクセル演算プロセッサ(POP)群13123の各演算器の入力ポートとは、1対1に対応する。
【0096】
クロスバー回路13125は、コア1312が、DFGに応じて機能ユニット間の接続を替えることにより様々なアルゴリズムに対応可能なように、この接続切り替えを実現する。
上述したように、レジスタユニット(RGU)13124内のFIFOレジスタFREGの出力と機能ユニットの入力ポートは固定で1対1に対応するが、機能ユニットの出力ポートとレジスタユニット(RGU)13124内のFIFOレジスタFREGの入力をクロスバー回路13125で切り替える。
【0097】
図14は、POP(ピクセル演算プロセッサ)とメモリ間の接続形態およびPOPの構成例を示す図である。
なお、図14の例は、各POP(0〜3)は、並列に配列された4個の演算器POPE0〜POPE3を有する場合である。
【0098】
また、本実施形態においては、ローカルモジュール13(−0〜−3)のメモリモジュール132(−0〜−3)には画像データが記憶されるが、ローカルモジュール13(−0〜−3)は、POP(0〜3)とメモリモジュール132間にそれぞれ分割ローカルキャッシュD133(−0〜−3)を有している。
このような構成において、POP0〜3でピクセルレベルの並列演算処理を行う場合、画像データのアクセスには、次の2通りの方法がある。
第1は、メモリモジュール132に格納されている画像データを直接読み出して演算を行う方法である。
第2は、メモリモジュール132に格納されている画像データのうち、演算に必要とされる一部のデータをローカルキャッシュ133に格納し、ローカルキャッシュ133のデータを読み出して演算を行う方法である。
【0099】
本実施形態においては、上述した第2の方法を採用している。
ローカルキャッシュ133は、POP(0〜3)の各POPE0〜POPE3に対応してそれぞれリードオンリーキャッシュRO$0〜RO$3、並びに、リードライトキャッシュRW$0〜RW$3が配置されている。
【0100】
また、ローカルキャッシュ133は、セレクタSEL1〜SEL12、およびソート回路SRT0〜SRT3を有する。
セレクタSEL1〜SEL4は、メモリモジュール132の対応するリードラインポートp(0)〜p(3)からの32ビット幅の読み出しデータまたは他のポートからの読み出しデータのいずれかを選択して、リードライトキャッシュRW$0〜RW$3およびセレクタSEL9〜SEL12に出力する。
セレクタSEL5は、POPのPOPE0の演算結果またはソート回路SRT1から出力されるピクセルに関する奥行きデータ、色(RGB)データ、および混合値(α)データのいずれかを選択してリードライトキャッシュRW$0に供給する。また、セレクタSEL5は、リードライトポートp(0)からリードライトキャッシュRW$0に読み出された読み出し奥行きデータ値をソート回路SRT0に供給する。
セレクタSEL6は、POPのPOPE1の演算結果またはソート回路SRT2から出力されるピクセルに関する奥行きデータ、色(RGB)データ、および混合値(α)データのいずれかを選択してリードライトキャッシュRW$1に供給する。また、セレクタSEL6は、リードライトポートp(1)からリードライトキャッシュRW$1に読み出された読み出し奥行きデータ値をソート回路SRT1に供給する。
セレクタSEL7は、POPのPOPE2の演算結果またはソート回路SRT3から出力されるピクセルに関する奥行きデータ、色(RGB)データ、および混合値(α)データのいずれかを選択してリードライトキャッシュRW$2に供給する。また、セレクタSEL7は、リードライトポートp(2)からリードライトキャッシュRW$2に読み出された読み出し奥行きデータ値をソート回路SRT2に供給する。
セレクタSEL8は、POPのPOPE3の演算結果またはソート回路SRT4から出力されるピクセルに関する奥行きデータ、色(RGB)データ、および混合値(α)データのいずれかを選択してリードライトキャッシュRW$3に供給する。また、セレクタSEL8は、リードライトポートp(3)からリードライトキャッシュRW$3に読み出された読み出し奥行きデータ値をソート回路SRT3に供給する。
セレクタSEL9は、セレクタSEL1によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$0に供給する。
セレクタSEL10は、セレクタSEL2によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$1に供給する。
セレクタSEL11は、セレクタSEL3によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$2に供給する。
セレクタSEL12は、セレクタSEL4によるデータまたはグローバルモジュール12により転送されたデータのいずれかを選択してリードオンリーキャッシュRO$3に供給する。
【0101】
各POP(0〜3)は、並列に配列された4個の演算器POPE0〜POPE3に加えてライトユニットWU、フィルタ機能ユニットFFU、出力選択回路OSLC、およびアドレス生成器AGを有している。
【0102】
ライトユニットWUは、たとえば半透明物体合成モード時に、レジスタユニット(RGU)13124を介した描画用の第1の供給奥行きデータ値を各ソート回路SRT0〜SRT3に供給する。
なお、図14の例では、ライトユニットWUを各POPに設けている例を示しているが、たとえば個別に、あるいは図15に示すように、一つのPOPのみに設けて描画用の第1の供給奥行きデータ値を並列に配置された複数の分割メモリモジュールD133の各ソート回路SRT0〜SRT3、SRT4〜SRT7に供給するように構成することも可能である。
【0103】
なお、メモリモジュール132は複数のバッファBUF0〜BUF3(図15では、BUF0〜BUF7)に区分けされている。
各バッファBUF0〜BUF3には、画像に関するデータが格納されるが、そのデータの中には、たとえば半透明物体合成モード時にも使用される奥行き深さ位置によって値が異なる奥行きデータ、並びにこれに対応する色(RGB)データおよび混合値(α)データが格納される。
なお、以降、色(RGB)データおよび混合値(α)データをRGBαデータとして示す。
【0104】
ソート回路SRT0〜SRT3(図15では、SRT0〜SRT7、以下図14の構成に基づく)は、メモリモジュール132の複数のバッファBUF0〜BUF3(図15では、BUF0〜BUF7)の各ポートp(0)〜p(3)(図15では、p(0)〜p(7))にそれぞれ対応して設けられている。
ソート回路SRT0〜SRT3は、初段SRT0から最終段SRT3に向かって縦続接続され、対応するバッファBUF0〜BUF3からリードライトキャッシュRW$0〜RW$3(図15では、RW$0〜RW$7)に読み出された読み出し奥行きデータ値と、描画用としてライトユニットWUからRGBαデータと共に供給されたピクセルデータに対応する第1の供給奥行きデータ値ZDRWとを比較する比較部を含む。
ソート回路SRT0〜SRT3は、比較部の比較の結果、第1の供給奥行きデータが読み出し奥行きデータより大きい場合(または小さい場合)には、供給された第1の供給奥行きデータ、RGBαデータを次段のソート回路に供給して読み出した奥行きデータとRGBαデータを対応するバッファBUF0〜BUF3に書き戻す。
一方、ソート回路SRT0〜SRT3は、比較部の比較の結果、第1の供給奥行きデータが読み出し奥行きデータより小さい場合(または大きい場合)には、読み出した奥行きデータとRGBαデータを次段のソート回路に供給して、前段からの第2の供給奥行きデータとRGBαデータを対応するバッファBUF0〜BUF3に書き込む。
【0105】
また、初段のソート回路SRT0は、第1の供給奥行きデータが読み出し奥行きデータより小さい場合(または大きい場合)には、読み出した奥行きデータとRGBαデータを次段のソート回路SRT1に供給して、供給された第1の供給奥行きデータとRGBαデータをリードライトキャッシュRW$0を介して対応するバッファBUF0に書き込む。
また、2段目以降の各ソート回路SRT1〜SRT3は、対応するバッファBUF1〜BUF3に奥行きデータ値が格納されていない場合には、前段からの第2の供給奥行きデータ値ZNBRとRGBαデータを対応するバッファBUF1〜BUF3に書き込む。
【0106】
図16は、本実施形態に係るソート回路の具体的な構成例を示すブロック図である。
ソート回路SRT(0〜3)は、図16に示すように、比較部(CMP)301、供給データ選択部(SDSEL)302、および書き込みデータ選択部(WDSEL)303を有している。
【0107】
比較部301は、対応するバッファBUF(0〜3)からリードライトキャッシュRW$(0〜3)に読み出された読み出し奥行きデータ値ZRDと描画用としてライトユニットWUから供給されたピクセルデータに対応する第1の供給奥行きデータ値ZDRWとを比較し、比較部の比較の結果、第1の供給奥行きデータ値ZDRWが読み出し奥行きデータ値ZRDより大きい場合(ZDRW>ZRD)には、ローレベル(論理0)の制御信号CTL301を供給データ選択部302、および書き込みデータ選択部303に出力する。
一方、比較部301は、比較部の比較の結果、第1の供給奥行きデータ値ZDRWが読み出し奥行きデータ値ZRDより小さい場合((ZDRW<ZRD)には、ハイレベル(論理1)の制御信号CTL301を供給データ選択部302、および書き込みデータ選択部303に出力する。
【0108】
供給データ選択部302は、対応するバッファBUF(0〜3)からリードライトキャッシュRW$(0〜3)に読み出された読み出し奥行きデータ値ZRDおよびRGBαデータと、描画用としてライトユニットWUから供給されたピクセルデータに対応する第1の供給奥行きデータ値ZDRWおよびRGBαデータとを入力し、比較部301よりローレベルの制御信号CTL301を受けると、第1の供給奥行きデータ値ZDRWとRGBαデータを選択して次段のソート回路SRT(1〜3)に供給し、ハイレベルの制御信号CTL301を受けると、読み出した奥行きデータ値ZRDとRGBαデータを選択して次段のソート回路SRT(1〜3)に供給する。
【0109】
書き込みデータ選択部303は、対応するバッファBUF(0〜3)からリードライトキャッシュRW$(0〜3)に読み出された読み出し奥行きデータ値ZRDおよびRGBαデータと、前段のソート回路SRT(0〜2)による第2の供給奥行きデータ値ZNBR(初段のソート回路SRT0は、第1の供給奥行きデータ値ZDRW)およびRGBαデータとを受けて、比較部301よりローレベルの制御信号CTL301を受けると、読み出した奥行きデータ値ZRDとRGBαデータを選択して、対応するバッファBUF0〜BUF3に書き戻し、ハイレベルの制御信号CTL301を受けると、前段からの第2の供給奥行きデータZNBR(または第1の供給奥行きデータ値ZDRW)とRGBαデータを対応するバッファBUF0〜BUF3に書き込む。
【0110】
図17は、ソート回路を用いる半透明物体合成モード時の動作を説明するための図である。
この例では、バッファBUF0にZ=25とRGBαデータの奥行きデータが格納され、バッファBUF1にZ=32の奥行きデータとRGBαデータが格納され、バッファBUF2にZ=40の奥行きデータとRGBαデータが格納されていて、これらが各ソート回路SRT0〜2に読み出されているものとする。
【0111】
まず、サイクル1で、描画用としてライトユニットWUから各ソート回路SRT0〜SRT3に対して、Z=29の第1の供給奥行きデータ値ZDRWとRGBαデータが供給される。
初段のソート回路SRT0においては、比較部301の比較結果は、第1の供給奥行きデータ値ZDRW(=29)の方が読み出し奥行きデータZRD(=25)より大きいことから、ローレベルの制御信号CTL301が供給データ選択部302、および書き込みデータ選択部303に出力される。
その結果、供給データ選択部302では、第1の供給奥行きデータ値ZDRW(=29)とRGBαデータが選択され次段のソート回路SRT1に供給される。
これと並行して、書き込みデータ選択部303では、読み出した奥行きデータ値ZRD(=25)とRGBαデータが選択されて、対応するバッファBUF0に書き戻される。
【0112】
2段目のソート回路SRT1においては、比較部301の比較結果は、第1の供給奥行きデータ値ZDRW(=29)の方が読み出し奥行きデータZRD(=32)より小さいことから、ハイレベルの制御信号CTL301が供給データ選択部302、および書き込みデータ選択部303に出力される。
その結果、供給データ選択部302では、読み出し奥行きデータZRD(=32)とRGBαデータが選択され次段のソート回路SRT2に供給される。
これと並行して、書き込みデータ選択部303では、前段からの第2の供給奥行きデータZNBR(=29)とRGBαデータが選択されて、対応するバッファBUF1に書き込まれる。
【0113】
3段目のソート回路SRT2においては、比較部301の比較結果は、第1の供給奥行きデータ値ZDRW(=29)の方が読み出し奥行きデータZRD(=40)より小さいことから、ハイレベルの制御信号CTL301が供給データ選択部302、および書き込みデータ選択部303に出力される。
その結果、供給データ選択部302では、読み出し奥行きデータZRD(=40)とRGBαデータが選択され次段のソート回路SRT2に供給される。
これと並行して、書き込みデータ選択部303では、前段からの第2の供給奥行きデータZNBR(=32)とRGBαデータが選択されて、対応するバッファBUF2に書き込まれる。
【0114】
4段目のソート回路SRT3においては、比較部301の比較は読み出し奥行きデータZRDが無いことから、ハイレベルの制御信号CTL301が供給データ選択部302、および書き込みデータ選択部303に出力される。
その結果、供給データ選択部302では、読み出し奥行きデータZRD(=40)とRGBαデータが選択されるが、次段への供給は行われない。
これと並行して、書き込みデータ選択部303では、前段からの第2の供給奥行きデータZNBR(=40)とRGBαデータが選択されて、対応するバッファBUF3に書き込まれる。
【0115】
このように、本画像処理装置10においては、複数(図14の場合には4)レイヤの半透明物体の合成(Order Independent Transparency)がハードウェアに容易に実現できる。
そして、任意のレイヤ数での重ね合わせを行うことができ、全シーンデータを流す回数を減らすことができる。その結果シーンデータの処理部の負荷を軽減でき、処理の高速化を図ることが可能となっている。
【0116】
また、たとえば図18に示すように、複数のバッファを含む複数のメモリバンクBNKを多段(図18では0〜3の4段)に配置し、同一のメモリバンクの各バッファに対応して設けられたソート回路SRT0〜SRT3,SRT4〜SRT7,SRT8〜SRT11,SRT12〜SRT15は互いに縦続接続し、各メモリバンクBNK0〜BNK3の各バッファに対応して設けられ、縦続接続された複数のソート回路SRT0〜SRT3,SRT4〜SRT7,SRT8〜SRT11,SRT12〜SRT15には、前段のメモリバンクBNK0〜BNK3の各バッファに対応して設けられ、縦続接続された複数のソート回路のうちの最終段SRT3,SRT7,SRT11,SRT15の出力奥行きデータを供給するように構成することにより、縦4段、横4段を複合させて、16レイヤの合成が可能となる。
【0117】
フィルタ機能ユニットFFUは、各POPE0〜POPE3にレジスタRGUユニット(RGU)13124にFIFOレジスタにセットされる演算用パラメータ、具体的には、フィルタ係数Kを各POPE0〜POPE3に供給する。
【0118】
POPE0は、リードオンリーキャッシュRO$0またはリードライトキャッシュRW$0から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行って、演算結果を次段のPOPE1に出力する。また、POPE0は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL0を有する。
また、POPE0は、レジスタユニット(RGU)13124に設定され、クロスバー回路13125を転送された8ビット×4の32ビットのデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL5を介してリードライトキャッシュRW$0に出力する。
【0119】
POPE1は、リードオンリーキャッシュRO$1またはリードライトキャッシュRW$1から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE0により演算結果を加算して次段のPOPE2に出力する。また、POPE1は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL1を有する。
また、POPE1は、レジスタユニット(RGU)13124に設定され、クロスバー回路13125を転送された8ビット×4の32ビットのデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL6を介してリードライトキャッシュRW$1に出力する。
【0120】
POPE2は、リードオンリーキャッシュRO$2またはリードライトキャッシュRW$2から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE1により演算結果を加算して次段のPOPE3に出力する。また、POPE2は、この所定の演算結果を出力選択回路OSLCに出力する8ビット×4の出力ラインOTL2を有する。
また、POPE2は、レジスタユニット(RGU)13124に設定され、クロスバー回路13146を転送された8ビット×4の32ビットのデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL7を介してリードライトキャッシュRW$2に出力する。
【0121】
POPE3は、リードオンリーキャッシュRO$3またはリードライトキャッシュRW$3から読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行い、この演算結果とPOPE2により演算結果を加算して、この演算結果(一つのPOP内の総計)を8ビット×4の出力ラインOTL3により出力選択回路OSLCに出力する。
また、POPE3は、レジスタユニット(RGU)13124に設定され、クロスバー回路13125を転送された8ビット×4の32ビットのデータを受けて所定の演算を行い、この演算結果を分割ローカルキャッシュD133(0)のセレクタSEL8を介してリードライトキャッシュRW$3に出力する。
【0122】
図19は、本実施形態に係るPOPE(0〜3)の具体的な構成例を示す回路図である。
本POPEは、図19に示すように、マルチプレクサ(MUX)401〜405、加減算器(addsub)406、乗算器(mul)407、加減算器(addsub)408、および積算レジスタ409を有している。
【0123】
マルチプレクサ401は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器406に供給する。
【0124】
マルチプレクサ402は、レジスタユニット(RGU)13124によるデータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器406に供給する。
【0125】
マルチプレクサ403は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、乗算器407に供給する。
【0126】
マルチプレクサ404は、前段のPOPE(0〜2)の演算結果または積算レジスタ409の出力データのうちのいずれかを選択して加減算器408に供給する。
【0127】
マルチプレクサ405は、レジスタユニット(RGU)13124によるデータ、フィルタ機能ユニットFFUによる演算パラメータ、リードオンリーキャッシュRO$(0〜3)、またはリードライトキャッシュRW$(0〜3)から読み出されたデータのうちの一つを選択して、加減算器408に供給する。
【0128】
加減算器406は、マルチプレクサ401の選択データとマルチプレクサ402の選択データを加算(減算)して、乗算器407に出力する。
乗算器407は、加減算器406の出力データとマルチプレクサ403の選択データを乗算器して、加減算器408に出力する。
加減算器408は、乗算器407と出力データ、マルチプレクサ404の選択データ、マルチプレクサ405の選択データを加算(減算)して積算レジスタ409に出力する。
そして、積算レジスタ409の保持されたデータが、各POPEの演算結果ととして、出力選択回路OSLCおよび次段のPOPE(1〜3)に出力される。
【0129】
出力選択回路OSLCは、各POPE0〜P0PE3の出力ラインOTL0〜OTL3を転送された演算データのうちのいずれかの演算データを選択して、クロスバー回路13125に出力する機能を有する。
本実施形態では、出力選択回路OSLCは、一つのPOP内の総計を出力するPOPE3の出力ラインOTL3を転送された演算データを選択し、クロスバー回路13125に出力するように構成されている。
クロスバー回路13125に出力された演算データは、レジスタユニット13124に設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン13122の所定の演算器に供給される。
【0130】
アドレス生成器AGは、図20に示すように、メモリモジュール132からのデータ転送は、1列(4つのPOP分)同時に行われ、各分割ローカルキャッシュD133(0)〜D133(3)の各リードオンリーキャッシュRO$0〜RO$3またはリードライトキャッシュRW$0〜RW$3へのアクセスは、独立して行われることから、各リードオンリーキャッシュRO$0〜RO$3またはリードライトキャッシュRW$0〜RW$3に、メモリモジュール132のポートp(0)〜p(3)から並列的に読み出されている要素データを、対応するPOPE0〜POPE3に読み出すためのキャッシュアドレスCADR0〜CADR3をそれぞれ生成し、供給する。
アドレス生成器AGは、たとえばPOPE0の演算結果OPR0が、POPE1の演算が終了するタイミングでPOPE1に供給され、POPE1の演算結果(POPE0の演算結果OPR0を加算した結果)OPR1が、POPE2の演算が終了するタイミングでPOPE2に供給され、POPE2の演算結果(POPE1の演算結果OPR1を加算した結果)OPR2が、POPE3の演算が終了するタイミングでPOPE3に供給されるように、各リードオンリーキャッシュRO$0〜RO$3またはリードライトキャッシュRW$0〜RW$3に所定タイミングをずらしてキャッシュアドレスCADR0〜CADR3を供給する。
たとえば各POPE0〜POPE3に供給される要素データ数が同じであり、各POPE0〜POPE3で要素データを順に加算して行く場合には、アドレス供給タイミングを1アドレスずつ順にずらしてアドレス供給が行われる。
これにより、ミスのない演算を効率的に行える。すなわち、本実施形態に係るコア1312では、演算効率の向上が図られている。
【0131】
次に、メモリのデータの基づいてピクセル演算プロセッサ群13123で演算処理を行い、さらにピクセルエンジン13122で演算を行う場合の動作を、図21〜図24に関連付けて説明する。
なお、ここでは、図22(A)に示すように、縦16、横16の16×16の16列の要素データについて演算を行う場合を例に説明する。
【0132】
ステップST51
まず、ステップST51において、メモリモジュール(eDRAM)132からローカルキャッシュ133のリードオンリーキャッシュRO$0〜RO$3へ1列(4つのPOP分)同時に転送される。
次に、図23(A),(C),(E),(G)に示すように、アドレス生成器AGにより各キャッシュに独立に、かつ、1POP内のPOPE0〜POPE3に1アドレスずつ順にずらしてキャッシュアドレスCADR0〜CADR3の供給が行われる。
これにより、各POP0〜POP3の各POPE0〜POPE3に16個の要素データが順に読み出される。
【0133】
たとえば分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$0にキャッシュアドレスCADR00〜CADR0Fが順に与えられ、これに応じてPOP0のPOPE0に1列分のデータ00〜0Fが読み出される。
同様に、分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$1にキャッシュアドレスCADR10〜CADR1Fが順に与えられ、これに応じてPOP0のPOPE1に1列分のデータ10〜1Fが読み出される。
分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$2にキャッシュアドレスCADR20〜CADR2Fが順に与えられ、これに応じてPOP0のPOPE2に1列分のデータ20〜2Fが読み出される。
分割ローカルキャッシュD133(0)のリードオンリーキャッシュRO$3にキャッシュアドレスCADR30〜CADR3Fが順に与えられ、これに応じてPOP0のPOPE3に1列分のデータ30〜3Fが読み出される。
【0134】
分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$0にキャッシュアドレスCADR40〜CADR4Fが順に与えられ、これに応じてPOP1のPOPE0に1列分のデータ40〜4Fが読み出される。
同様に、分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$1にキャッシュアドレスCADR50〜CADR5Fが順に与えられ、これに応じてPOP1のPOPE1に1列分のデータ50〜5Fが読み出される。
分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$2にキャッシュアドレスCADR60〜CADR6Fが順に与えられ、これに応じてPOP1のPOPE2に1列分のデータ60〜6Fが読み出される。
分割ローカルキャッシュD133(1)のリードオンリーキャッシュRO$3にキャッシュアドレスCADR70〜CADR7Fが順に与えられ、これに応じてPOP1のPOPE3に1列分のデータ70〜7Fが読み出される。
【0135】
分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$0にキャッシュアドレスCADR80〜CADR8Fが順に与えられ、これに応じてPOP2のPOPE0に1列分のデータ80〜8Fが読み出される。
同様に、分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$1にキャッシュアドレスCADR90〜CADR9Fが順に与えられ、これに応じてPOP2のPOPE1に1列分のデータ90〜9Fが読み出される。
分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$2にキャッシュアドレスCADRA0〜CADRAFが順に与えられ、これに応じてPOP2のPOPE2に1列分のデータA0〜AFが読み出される。
分割ローカルキャッシュD133(2)のリードオンリーキャッシュRO$3にキャッシュアドレスCADRB0〜CADRBFが順に与えられ、これに応じてPOP2のPOPE3に1列分のデータB0〜BFが読み出される。
【0136】
分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$0にキャッシュアドレスCADRC0〜CADRCFが順に与えられ、これに応じてPOP3のPOPE0に1列分のデータC0〜CFが読み出される。
同様に、分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$1にキャッシュアドレスCADRD0〜CADRDFが順に与えられ、これに応じてPOP3のPOPE1に1列分のデータD0〜DFが読み出される。
分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$2にキャッシュアドレスCADRE0〜CADREFが順に与えられ、これに応じてPOP3のPOPE2に1列分のデータE0〜EFが読み出される。
分割ローカルキャッシュD133(3)のリードオンリーキャッシュRO$3にキャッシュアドレスCADRF0〜CADRFFが順に与えられ、これに応じてPOP3のPOPE3に1列分のデータF0〜FFが読み出される。
【0137】
ステップST52
ステップST52において、各POP(0〜3)の各POPE0〜POPE3で、1要素が1列分(16個)加算される。
具体的には、POP0のPOPE0では、図23(B)に示すように、データ00〜0Fが順次に加算され、演算結果OPR0がPOPE1に出力される。
POP0のPOPE1では、図23(D)に示すように、データ10〜1Fが順次に加算される。
POP0のPOPE2では、図23(F)に示すように、データ20〜2Fが順次に加算される。
POP0のPOPE3では、図23(H)に示すように、データ30〜3Fが順次に加算される。
他のPOP1〜POP3においても同様に行われる。
【0138】
ステップST53
ステップST53においては、各POP(0〜3)の各POPE0〜POPE3の演算結果が加算され、16×4要素の加算結果を得る。
具体的には、図23(B),(D)に示すように、POP0のPOPE0の演算結果OPR0がPOPE1に出力される。
POP0のPOPE1では、図23(D),(F)に示すように、自身の演算結果に、POP0のPOPE0の演算結果OPR0が加算され、その演算結果OPR1がPOPE2に出力される。
POP0のPOPE2では、図23(F),(H)に示すように、自身の演算結果に、POP0のPOPE1の演算結果OPR1が加算され、その演算結果OPR2がPOPE3に出力される。
そして、POP0のPOPE3では、図23(H)に示すように、自身の演算結果に、POP0のPOPE2の演算結果OPR2が加算され、その演算結果OPR3が出力選択回路OSLCに出力される。
他のPOP1〜POP3においても同様に行われる。
【0139】
ステップST54
ステップST54においては、各POP0〜POP3の出力選択回路OSLCから総演算結果OPR3がクロスバー回路13125を介してレジスタユニット(RGU)13124に転送される。
たとえば図24に示すように、POP0のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG1に格納される。
POP1のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG2に格納される。
POP2のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG3に格納される。
POP3のPOPE3の総演算結果OPR3は、クロスバー回路13125を経由してレジスタユニット(RGU)13124のFIFOレジスタFREG4に格納される。
【0140】
ステップST55
ステップST55においては、レジスタユニット(RGU)13124のFIFOレジスタFREG1およびFREG2にセットされたPOP0とPOP1の総演算結果が、ピクセルエンジン(PXE)13122の第1の加算器ADD1で加算され、この演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREG5に格納される。
また、レジスタユニット(RGU)13124のFIFOレジスタFREG3およびFREG4にセットされたPOP2とPOP3の総演算結果が、ピクセルエンジン(PXE)13122の第2の加算器ADD2で加算され、この演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREG6に格納される。
そして、レジスタユニット(RGU)13124のFIFOレジスタFREG5およびFREG6にセットされた第1および第2の加算器ADD1,ADD2の演算結果が、ピクセルエンジン(PXE)13122の第3の加算器ADD3で加算される。
【0141】
ステップST56
ステップST56では、図23(P)に示すように、ピクセルエンジン(PXE)13122の第3の加算器ADD3の加算結果が一連の演算結果として出力される。
【0142】
図25は、本実施形態に係る処理ユニットにおけるコアのピクセルエンジン(PXE)13122、ピクセル演算プロセッサ(POP)群13123、レジスタユニット(RGU)13124、並びにメモリ部分を含む動作概要を示す図である。
【0143】
図25において、破線はアドレス系データの流れを、一点鎖線はリードデータの流れを、実線はライトデータの流れをそれぞれ示している。
また、レジスタユニット(RGU)13124において、FREGA1,FREGA2はアドレス系に用いられるFIFOレジスタを、FREGRはリードデータに用いられるFIFOレジスタを、FREGWはライトデータに用いられるFIFOレジスタをそれぞれ示している。
【0144】
図25の例では、ラスタライザ1311によって生成されるたとえばソース(読み出し用)アドレスデータが、クロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGA1,FREGA2にセットされる。
そして、FIFOレジスタFREGA1にセットされたアドレスデータは、たとえばクロスバー回路13125を介さずに直接的にピクセル演算プロセッサ(POP)13123のアドレス生成器AG1に供給される。アドレス生成器AG1において読み出すべきデータのアドレスが生成され、これに基づきメモリモジュール132からリードオンリーキャッシュ1331に読み出された所望のデータがピクセル演算プロセッサ(POP)13123の各演算器(POPE)に供給される。
【0145】
ピクセル演算プロセッサ(POP)13123の各演算器(POPE)の演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGRにセットされる。
FIFOレジスタFREGRにセットされたデータは、クロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122の各演算器OPに供給される。
そして、ピクセルエンジン(PXE)13122の各演算器OPの演算結果がクロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGWにセットされる。
FIFOレジスタFREGWにセットされたデータは、ピクセル演算プロセッサ(POP)13123の各演算器(POPE)に供給される。
【0146】
また、ラスタライザ1311によって生成されるデスティネーション(書き込み用)アドレスデータが、クロスバー回路13125を介してレジスタユニット(RGU)13124のFIFOレジスタFREGA2にセットされる。
そして、FIFOレジスタFREGA2にセットされたアドレスデータは、クロスバー回路13125を介さず直接的にピクセル演算プロセッサ(POP)13123のアドレス生成器AG2に供給される。アドレス生成器AG2において書き込むべきデータのアドレスが生成され、これに基づきピクセル演算プロセッサ(POP)13123の各演算器(POPE)の演算結果がリードライトキャッシュ1332に書き込まれ、さらにメモリモジュール132に書き込まれる。
【0147】
なお、図25の例では、リードライトキャッシュ1332は書き込みだけを行うように記述しているが、上述したリードオンリーキャッシュ1331の場合と同様な動作で読み出しも行う。
【0148】
次に、以上の構成を有する処理ユニット131(−0〜−3)におけるグラフィックス処理および画像処理の場合の具体的な動作を図面に関連付けて説明する。
【0149】
まず、依存テクスチャ無しの場合のグラフィックス処理を図26および図27に関連付けて説明する。
【0150】
この場合、ラスタライザ1311において、グローバルモジュール12からブロードキャストされたパラメータデータを受けて、たとえば三角形が自分が担当する領域であるか否かが判断され、担当領域である場合には、入力した三角形頂点データに基づいて、各ピクセルデータが生成されてコア1312に供給される。
具体的には、ラスタライザ1311において、ウィンドウ座標(X,Y,Z)、プライマリカラー(PC;Rp,Gp,Bp,Ap)、セカンダリカラー(SC;Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標や各種ベクトル(V1x,V1y,V1z),(V2x,V2y,V2z)の各種ピクセルデータが生成される。
【0151】
そして、生成されたウィンドウ座標(X,Y,Z)は、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13123内に、あるいは別個に設けられたライトユニットWUに供給される。
また、生成された2組のテクスチャ座標データや各種ベクトル(V1x,V1y,V1z),(V2x,V2y,V2z)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。
さらに、生成されたプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してピクセルエンジン(PXE)13122に供給される。
【0152】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標データや各種ベクトル(V1x,V1y,V1z)、および(V2x,V2y,V2z)に基づいて、パースペクティブコレクション、LOD(Levelof Detail)計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる。
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含む2組のデータ(s1,t1,lod1),(s2,t2,lod2)が、たとえばクロスバー回路13125を通さず個別の配線を介して直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0153】
ピクセル演算プロセッサ(POP)群13123では、図27に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s1,t1,lod1),(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0154】
アドレス生成器AGにおいては、アドレスデータ(ui,vi,lodi)を受けて、4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)が計算され、メモリコントローラMCに供給される。
これにより、メモリモジュール132から所望のテクセルデータがたとえばリードオンリーキャッシュRO$を通して、ピクセル演算プロセッサ(POP)群13123の各POPEに読み出される。
また、係数生成器COFでは、データ(uf,vf,lodf)を受けて、テクスチャフィルタ係数K(0〜3)が計算され、ピクセル演算プロセッサ(POP)群13123の対応する各POPEに供給される。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)が求められ、2組のデータ(TR1,TG1,TB1,TA1)および(TR2,TG2,TB2,TA2)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に供給される。
【0155】
ピクセルエンジン(PXE)13122では、ピクセル演算プロセッサ(POP)群13123によるデータ(TR1,TG1,TB1,TA1)および(TR2,TG2,TB2,TA2)、並びに、ラスタライザ1311によるプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、たとえばPixel Shaderの演算が行われ、色データ(FR1,FG1,FB1)および混合値(ブレンド値:FA1)が求められ、このデータ(FR1,FG1,FB1,FA1)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセル演算プロセッサ(POP)群13123の所定のPOP内あるいは別個に設けられたライトユニットWUに供給される。
【0156】
ライトユニットWUでは、ラスタライザ1311によるウィンドウ座標(X,Y,Z)に基づき、たとえばリードライトキャッシュRW$を通してメモリモジュール132からデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)が読み出される。
そして、ライトユニットWUでは、ピクセルエンジン(PXE)13122によるデータ(FR1,FG1,FB1,FA1)、およびリードライトキャッシュRW$を通してメモリモジュール132から読み出しデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算が行われ、演算結果がリードライトキャッシュRW$に書き戻される。
【0157】
次に、依存テクスチャ有りの場合のグラフィックス処理を図28および図27に関連付けて説明する。
【0158】
この場合、ラスタライザ1311において、ウィンドウ座標(X,Y,Z)、プライマリカラー(PC;Rp,Gp,Bp,Ap)、セカンダリカラー(SC;Rs,Gs,Bs,As)、Fog係数(f)、テクスチャ座標(V1x,V1y,V1z)の各種ピクセルデータが生成される。
【0159】
そして、生成されたウィンドウ座標(X,Y,Z)は、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13124に供給される。
また、生成されたテクスチャ座標(V1x,V1y,V1z)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。
さらに、生成されたプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してピクセルエンジン(PXE)13122に供給される。
【0160】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標(V1x,V1y,V1z)データに基づいて、パースペクティブコレクション、LOD計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる。
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含む1組のデータ(s1,t1,lod1)が、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0161】
ピクセル演算プロセッサ(POP)群13123では、図27に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s1,t1,lod1)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0162】
アドレス生成器AGにおいては、アドレスデータ(ui,vi,lodi)を受けて、4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)が計算され、メモリコントローラMCに供給される。
これにより、メモリモジュール132から所望のテクセルデータがたとえばリードオンリーキャッシュRO$を通して、ピクセル演算プロセッサ(POP)群13123の各POPEに読み出される。
また、係数生成器COFでは、データ(uf,vf,lodf)を受けて、テクスチャフィルタ係数K(0〜3)が計算され、ピクセル演算プロセッサ(POP)群13123の各POPEに供給される。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)が求められ、データ(TR1,TG1,TB1,TA1)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に供給される。
【0163】
ピクセルエンジン(PXE)13122では、ピクセル演算プロセッサ(POP)群13123によるデータ(TR1,TG1,TB1,TA1)、並びに、ラスタライザ1311によるプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、たとえばPixel Shaderの演算が行われ、テクスチャ座標(V2x,V2y,V2z)が生成され、クロスバー回路13125、レジスタユニット(RGU)13124を介してグラフィックスユニット(GRU)13121に供給される。
【0164】
グラフィックスユニット(GRU)13121では、供給されたテクスチャ座標(V2x,V2y,V2z)データに基づいて、パースペクティブコレクション、LOD計算によるミップマップ(MIPMAP)レベルの算出、立方体マップ(CubeMap)の面選択や正規化テクセル座標(s,t)の算出処理が行われる。
そして、グラフィックスユニット(GRU)13121で生成された、たとえば正規化テクセル座標(s,t)およびLODデータ(lod)を含むデータ(s2,t2,lod2)が、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0165】
ピクセル演算プロセッサ(POP)群13123では、図27に示すように、フィルタ機能ユニットFFUにおいてグラフィックスユニット(GRU)13121から直接的に供給された(s2,t2,lod2)の値に基づいて、テクスチャアクセスのための(u,v)アドレス計算が行われ、アドレスデータ(ui,vi,lodi)がアドレス生成器AGに供給され、係数計算のためにデータ(uf,vf,lodf)が係数生成部COFに供給される。
【0166】
アドレス生成器AGにおいては、アドレスデータ(ui,vi,lodi)を受けて、4近傍フィルタリングを行うための4近傍の(u,v)座標、すなわち、(u0,v0),(u1,v1),(u2,v2),(u3,v3)が計算され、メモリコントローラMCに供給される。
これにより、メモリモジュール132から所望のテクセルデータがたとえばリードオンリーキャッシュRO$を通して、ピクセル演算プロセッサ(POP)群13123の各POPEに読み出される。
また、係数生成器COFでは、データ(uf,vf,lodf)を受けて、テクスチャフィルタ係数K(0〜3)が計算され、ピクセル演算プロセッサ(POP)群13123の各POPEに供給される。
そして、ピクセル演算プロセッサ(POP)群13123の各POPにおいて、色データ(TR,TG,TB)および混合値(ブレンド値:TA)が求められ、データ(TR2,TG2,TB2,TA2)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に供給される。
【0167】
ピクセルエンジン(PXE)13122では、ピクセル演算プロセッサ(POP)群13123によるデータ(TR2,TG2,TB2,TA2)、並びに、ラスタライザ1311によるプライマリカラー(PC)、セカンダリカラー(SC)、Fog係数(F)に基づいて、4近傍補間等の所定のフィルタリング演算処理が行われ、色データ(FR1,FG1,FB1)および混合値(ブレンド値:FA1)が求められ、このデータ(FR1,FG1,FB1,FA1)が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセル演算プロセッサ(POP)群13123の所定のPOP内あるいは別個に設けられてライトユニットWUに供給される。
【0168】
ライトユニットWUでは、ラスタライザ1311によるウィンドウ座標(X,Y,Z)に基づき、たとえばリードライトキャッシュRW$を通してメモリモジュール132からデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)が読み出される。
そして、ライトユニットWUでは、ピクセルエンジン(PXE)13122によるデータ(FR1,FG1,FB1,FA1)、およびリードライトキャッシュRW$を通してメモリモジュール132から読み出しデスティネーション色データ(RGB)および混合値データ(A)、並びに奥行きデータ(Z)に基づいて、αブレンディング、各種テスト、ロジカルオペレーションといったグラフィックス処理のピクセル書き込みに必要な演算が行われ、演算結果がリードライトキャッシュRW$に書き戻される。
【0169】
次に、画像処理について説明する。
【0170】
まず、図29に示すようなSAD(Summed Absolute Difference)処理を行う場合の動作について、図30に関連付けて説明する。
【0171】
SAD処理では、図29(A)に示すような元画像ORIMの1ブロック(X1s,Y1s)に対して、図29(B)に示すような参照画像RFIMの探索矩形領域SRGN内を1ピクセルずつずらしながら、対応ブロックBLK内のSAD(絶対値差)を求めていく。
その中で、SADが最小となるブロックの位置(X2s,y2s)とSAD値を図29(C)に示すように、(Xd,Yd)に格納する。
(X1s,Y1s)はコンテキストとして図示しない上位位置からPOP内のレジスタに設定される。
【0172】
この場合、ラスタライザ1311に対して、たとえばグローバルモジュール12を介して図示しない上位装置から出力された、メモリモジュール132(−0〜−3)から参照画像データを読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえば探索矩形領域SRGNの幅、高さ(Ws,Hs)データ、ブロックサイズ(Wbk,Hbk)データが入力される。
ラスタライザ1311では、入力データに基づいて、メモリモジュール132に格納されている参照画像RFIMのソースアドレス(X2s,Y2s)が生成されるとともに、処理結果をメモリモジュール132に格納するためのデスティネーションアドレス(Xd,Yd)が生成される。
【0173】
生成されたデスティネーションアドレス(Xd,Yd)は、グラフィックス処理時のウィンドウ座標(X,Y,Z)の供給ラインが共用され、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13124のライトユニットWUに供給される。
また、生成された参照画像RFIMのソースアドレス(X2s,Y2s)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。
ソースアドレス(X2s,Y2s)は、グラフィックスユニット(GRU)12121は素通りして、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0174】
ピクセル演算プロセッサ(POP)群13123では、供給されたソースアドレス(X1s,Y1s)および(X2s,Y2s)に基づいて、たとえばリードオンリーキャッシュRO$、リードライトキャッシュRW$を介して、メモリモジュール132に格納されている元画像ORIMおよび参照画像RFIMの各データが読み出される。
ここで、元画像ORIMの座標はコトテキストとしてレジスタに設定される。参照画像RFIMの座標は、たとえば4つのPOPそれぞれが担当するサブブロックの座標が与えられる。
そして、ピクセル演算プロセッサ(POP)群13123では、元画像ORIMの1ブロック(X1s,Y1s)に対して、参照画像RFIMの探索矩形領域SRGN内を1ピクセルずつずらしながら、対応サブブロックBLK内のSAD(絶対値差)が随時求められる。
そして、各サブブロックの位置位置(X2s,y2s)と各SAD値が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にピクセルエンジン(PXE)13122に転送される。
【0175】
ピクセルエンジン(PXE)3122では、ブロック全体のSADが集計され、ブロックの位置(X2s,y2s)とSAD値が、クロスバー回路13125を転送されてレジスタユニット(RGU)13124の所定のFIFOレジスタに設定され、この設定データがクロスバー回路13125を介さずに直接的にライトユニットWUに転送される。
【0176】
ライトユニットWUでは、ピクセルエンジン(PXE)13122によるブロックの位置(X2s,y2s)とSAD値の、ラスタライザ1311によるデスティネーションアドレス(Xd,Yd)への格納処理が行われる。
この場合、たとえば隠面除去(Hidden Surface Removal)を行う機能(Z比較)を用いて、たとえばメモリモジュール132からリードライトキャッシュRW$に読み出されたSAD値とピクセルエンジン(PXE)13122によるSAD値が比較される。
そして、比較の結果、格納されている値よりピクセルエンジン(PXE)13122によるSAD値が小さい場合に、ピクセルエンジン(PXE)13122によるブロックの位置(X2s,y2s)とSAD値がデスティネーションアドレス(Xd,Yd)にリードライトキャッシュRW$を介して書き込まれる(更新される)。
【0177】
次に、図31に示すようなコンボリューションフィルタ(Convolution Filter)処理を行う場合の動作について、図32に関連付けて説明する。
【0178】
コンボリューションフィルタ処理では、図31(A)に示すような対象画像OBIMの各ピクセル(X1s,Y1s)に対して、フィルタカーネルサイズの周辺ピクセルを読み出し、フィルタ係数を乗算したものを足し合わせ、その結果を図31(B)に示すようにデスティネーションアドレス(Xd,Yd)に格納する。
なお、フィルタカーネル係数の格納アドレスは、コンテキストとしてPOP内のレジスタに設定する。
【0179】
この場合、ラスタライザ1311に対して、たとえばグローバルモジュール12を介して図示しない上位装置から出力された、メモリモジュール132(−0〜−3)から画像データ(ピクセルデータ)を読み出すためのソースアドレスおよび画像処理結果を書き込むためのデスティネーションアドレスの生成に必要なコマンドやデータ、たとえばフィルタカーネルサイズデータ(Wk,Hk)が入力される。
ラスタライザ1311では、入力データに基づいて、メモリモジュール132に格納されている対象画像OBIMのソースアドレス(X1s,Y1s)が生成されるとともに、処理結果をメモリモジュール132に格納するためのデスティネーションアドレス(Xd,Yd)が生成される。
【0180】
生成されたデスティネーションアドレス(Xd,Yd)は、グラフィックス処理時のウィンドウ座標(X,Y,Z)の供給ラインが共用され、レジスタユニット(RGU)13124の特定のFIFOレジスタを通して、直接的にピクセル演算プロセッサ(POP)群13124のライトユニットWUに供給される。
また、生成された対象画像OBIMのソースアドレス(X1s,Y1s)が、クロスバー回路13125、レジスタユニット(RGU)13124のFIFOレジスタを通してグラフィックスユニット(GRU)12121に供給される。
ソースアドレス(X1s,Y1s)は、グラフィックスユニット(GRU)12121は素通りして、たとえばクロスバー回路13125を通さず直接的にピクセル演算プロセッサ(POP)群13123に供給される。
【0181】
ピクセル演算プロセッサ(POP)群13123では、供給されたソースアドレス(X1s,Y1s)に基づいて、たとえばリードオンリーキャッシュRO$を介して、メモリモジュール132に可能されているカーネルサイズの周辺ピクセルが読み出される。
そして、ピクセル演算プロセッサ(POP)群13123では、所定のフィルタ係数が読み出したデータに掛け合わさ、さらにこれらが足し合わされて、その結果である色データ(R,G,B)および混合値データ(A)を含むデータ(R,G,B,A)がクロスバー回路13125、レジスタユニット(RGU)13124を介してライトユニットWUに転送される。
【0182】
ライトユニットWUでは、ピクセル演算プロセッサ(POP)群13123によるデータが、リードライトキャッシュRW$を介してデスティネーションアドレス(Xd,Yd)に格納される。
【0183】
最後に、図3のシステム構成による動作を説明する。
ここでは、テクスチャ系の処理について説明する。
【0184】
まず、SDC11において、3次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。
次に、ラスタライゼーション(Rasterization)に必要な各種パラメータが算出される。
そして、SDC11においては、算出したパラメータが、グローバルモジュール12を介して全ローカルモジュール13−0〜13−3にブロードキャストされる。
この処理において、ブロードキャストされたパラメータは、後述するキャッシュフィルとは別のチャネルを用いて、グローバルモジュール12を介して各ローカルモジュール13−0〜13−3に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【0185】
各ローカルモジュール13−0〜13−3では、処理ユニット131−0〜131−3において、以下の処理が行われる。
すなわち、処理ユニット131(−0〜3)においては、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かが判断される。その結果、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)がラスタライズされる。
次に、LOD(Level of Detail)計算によるミップマップ(MIPMAP)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算が行われる。
【0186】
そして、次に、テクスチャの読み出しが行われる。
この場合、各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3では、テクスチャリードの際に、まず、ローカルキャッシュ133−0〜133−3のエントリーがチェックされる。
その結果、エントリーがあった場合には、必要なテクスチャデータが読み出される。
必要とするテクスチャデータがローカルキャッシュ133−0〜133−3内に無い場合には、各処理ユニット131−0〜131−3では、グローバルインターフェース134−0〜134−3を通して、グローバルモジュール12に対してローカルキャッシュフィルのリクエストが送出される。
【0187】
グローバルモジュール12においては、要求されたブロックデータがグローバルキャッシュ121−0〜121−3のいずれかにあると判断されると、対応するグローバルキャッシュ121−0〜121−3のいずれかから読み出されて所定のチャネルを通してリクエストを送出したローカルモジュールに送り返される。
【0188】
一方、要求されたブロックデータがグローバルキャッシュ121−0〜121−3のいずれかにもないと判断されると、所望のチャネルのいずれかから当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストが送られる。
グローバルキャッシュフィルのリクエストを受けたローカルモジュールにおいては、メモリから該当するブロックデータが読み出され、グローバルインターフェースを通してグローバルモジュール12に送出される。
その後、グローバルモジュール12では、ブロックデータが所望のグローバルキャッシュにフィルされるとともに、リクエストを送ってきたローカルモジュールに対して所望のチャネルからデータが送出される。
【0189】
グローバルモジュール12から要求したブロックデータが送られてくると、該当するローカルモジュールでは、ローカルキャッシュが更新され、処理ユニットによりブロックデータが読み出される。
【0190】
次に、ローカルモジュール13−0〜13−3では、読み出されたテクスチャデータと、(u,v)アドレスは算出時に得た小数部を使って4近傍補間などのフィルタリング処理が行われる。
次に、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール132−0〜132−3、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる。
【0191】
以上説明したように、本実施形態によれば、メモリモジュール132の複数のバッファBUF0〜BUF3にそれぞれ対応して設けられ、初段SRT0から最終段SRT3に向かって縦続接続され、対応するバッファBUF0〜BUF3からリードライトキャッシュRW$0〜RW$3に読み出された読み出し奥行きデータ値と描画用としてライトユニットWUから供給されたピクセルデータに対応する第1の供給奥行きデータ値ZDRWとを比較し、比較部の比較の結果、第1の供給奥行きデータが読み出し奥行きデータより大きい場合(または小さい場合)には、第1の供給奥行きデータとRGBαデータを次段のソート回路に供給して読み出し奥行きデータとRGBαデータを対応するバッファBUF0〜BUF3に書き戻し、第1の供給奥行きデータが読み出し奥行きデータより小さい場合(または大きい場合)には、読み出し奥行きデータとRGBαデータを次段のソート回路に供給して、前段からの第2の供給奥行きデータとRGBαデータを対応するバッファBUF0〜BUF3に書き込むソート回路SRT0〜SRT3を設けたので、複数(たとえば4)レイヤの半透明物体の合成(Order Independent Transparency)がハードウェアに容易に実現できる。
そして、任意のレイヤ数での重ね合わせを行うことができ、全シーンデータを流す回数を減らすことができる。その結果シーンデータの処理部の負荷を軽減でき、処理の高速化を図ることができる利点がある。
【0192】
なお、上述した実施形態では、メモリモジュールの各バッファに対応してソート回路を設け、これらを縦続接続するように構成したが、本発明はこれに限定されるものではない。
たとえば、図33(A),(B)に示すように、メモリモジュールの各バッファBUF10〜BUF17にそれぞれソート回路SRT10〜SRT17を配置し、半透明物体合成モード時にのみ、メモリモジュール132A自体にソート機能を持たせ、複数のバッファを使った半透明物体の合成を行うように構成することも可能である。
【0193】
この場合、メモリモジュール132Aにおいて、入力側からバッファBUF10からバッファBUF17に向かって、いわゆるバケツリレー的にRGBα/Zデータが流れる。
そして、各段で既存データと流れてきたデータとで、奥行きデータZの比較を行い、比較の結果、そのまま流すか、流れてきたデータをバッファに格納し、既存のデータを流すかを選択する。
これを繰り返すことで、常に奥行き方向の順番を守りながらデータが格納されていく。
【0194】
図33(B)は、この場合のソート回路SRT10〜SRT17の構成例を示す図である。
このソート回路SRT(10〜17)は、初段から最終段に向かって縦続接続されている。
【0195】
ソート回路SRT(10〜17)は、図33(B)に示すように、比較部(CMP)401、およびデータ選択部(DSEL)402を有している。
【0196】
比較部401は、対応するバッファBUF(10〜17)から読み出された読み出し奥行きデータ値ZRDと前段からの第2の供給奥行きデータ値ZPRV(初段では描画用としてライトユニットWUから供給されたピクセルデータに対応する第1の供給奥行きデータ値ZDRW)とを比較し、比較部の比較の結果、第2または第1の供給奥行きデータ値ZPRV(ZDRW)が読み出し奥行きデータ値ZRDより大きい場合(ZPRV(ZDRW)>ZRD)には、ローレベル(論理0)の制御信号CTL401をデータ選択部402に出力する。
一方、比較部401は、比較部の比較の結果、第2または第1の供給奥行きデータ値ZPRV(ZDRW)が読み出し奥行きデータ値ZRDより小さい場合((ZPRV(ZDRW)<ZRD)には、ハイレベル(論理1)の制御信号CTL301をデータ選択部402に出力する。
【0197】
データ選択部402は、対応するバッファBUF(10〜17)から読み出された読み出し奥行きデータ値ZRDおよびRGBαデータと、前段からの第2の供給奥行きデータ値ZPRV(初段では描画用としてライトユニットWUから供給されたピクセルデータに対応する第1の供給奥行きデータ値ZDRW)およびRGBαデータとを入力し、比較部401よりローレベルの制御信号CTL401を受けると、第2の供給奥行きデータ値ZPRV(または第1の供給奥行きデータ値ZDRW)とRGBαデータを選択して次段のソート回路SRT(11〜17)に供給し、読み出し奥行きデータ値ZRDとRGBαデータを対応するバッファBUF10〜BUF17に書き戻す。
一方、データ選択部302は、ハイレベルの制御信号CTL401を受けると、読み出し奥行きデータ値ZRDとRGBαデータを選択して次段のソート回路SRT(11〜17に供給し、第2の供給奥行きデータ値ZPRV(または第1の供給奥行きデータ値ZDRW)とRGBαデータを対応するバッファBUF10〜BUF17に書き込む。
【0198】
図34は、図33のソート機能を有するメモリモジュールの半透明物体合成モード時の動作を説明するための図である。
この例では、バッファBUF10にZ=15とRGBαデータの奥行きデータが格納され、バッファBUF11にZ=25とRGBαデータの奥行きデータが格納され、バッファBUF12にZ=32とRGBαデータの奥行きデータが格納され、バッファBUF13にZ=40とRGBαデータの奥行きデータが格納されていて、これらが各ソート回路SRT10〜SRT13に読み出されているものとする。
【0199】
まず、サイクル1で、描画用としてライトユニットWUから各ソート回路SRT10に対して、Z=29の第1の供給奥行きデータ値ZDRWとRGBαデータが供給される。
初段のソート回路SRT10においては、比較部401の比較結果は、第1の供給奥行きデータ値ZDRW(=29)の方が読み出し奥行きデータZRD(=15)より大きいことから、ローレベルの制御信号CTL401がデータ選択部402に出力される。
その結果、データ選択部402では、第1の供給奥行きデータ値ZDRW(=29)とRGBαデータが選択され次段のソート回路SRT11に供給される。これと並行して、データ選択部402では、読み出し奥行きデータ値ZRD(=15)とRGBαデータが選択されて、対応するバッファBUF10に書き戻される。
【0200】
2段目のソート回路SRT11においては、比較部401の比較結果は、第1の供給奥行きデータ値ZDRW(=29)の方が読み出し奥行きデータZRD(=32)より大きいことから、ローレベルの制御信号CTL401がデータ選択部402に出力される。
その結果、データ選択部402では、第2の供給奥行きデータ値ZPRV(=29)とRGBαデータが選択され次段のソート回路SRT12に供給される。
これと並行して、データ選択部402では、読み出し奥行きデータ値ZRD(=25)とRGBαデータが選択されて、対応するバッファBUF11に書き戻される。
【0201】
3段目のソート回路SRT12においては、比較部401の比較結果は、第3の供給奥行きデータ値ZPRV(=29)の方が読み出し奥行きデータZRD(=32)より小さいことから、ハイレベルの制御信号CTL401がデータ選択部402に出力される。
その結果、データ選択部402では、読み出し奥行きデータZRD(=32)とRGBαデータが選択され次段のソート回路SRT13に供給される。
これと並行して、データ選択部403では、前段からの第2の供給奥行きデータZPRV(=29)とRGBαデータが選択されて、対応するバッファBUF12に書き込まれる。
【0202】
4段目のソート回路SRT13においては、比較部401の比較結果は、第2の供給奥行きデータ値ZPRV(=32)の方が読み出し奥行きデータZRD(=40)より小さいことから、ハイレベルの制御信号CTL401がデータ選択部402に出力される。
その結果、データ選択部402では、読み出し奥行きデータZRD(=40)とRGBαデータが選択され次段のソート回路SRT14に供給される。
これと並行して、データ選択部403では、前段からの第2の供給奥行きデータZPRV(=32)とRGBαデータが選択されて、対応するバッファBUF13に書き込まれる。
【0203】
5段目のソート回路SRT14においては、比較部401の比較は読み出し奥行きデータZRDが無いことから、ハイレベルの制御信号CTL401がデータ選択部402に出力される。
その結果、データ選択部402では、読み出し奥行きデータZRD(=40)とRGBαデータが選択されるが、次段への供給は行われない。
これと並行して、データ選択部403では、前段からの第2の供給奥行きデータZPRV(=40)とRGBαデータが選択されて、対応するバッファBUF14に書き込まれる。
【0204】
このように、図33の回路においては、図35に示すように、複数(図33の場合には8)レイヤの半透明物体の合成(Order IndependentTransparency)がハードウェアに容易に実現できる。
そして、任意のレイヤ数での重ね合わせを行うことができ、全シーンデータを流す回数を減らすことができる。その結果シーンデータの処理部の負荷を軽減でき、処理の高速化を図ることが可能となっている。
【0205】
また、たとえば図36に示すように、複数のバッファを含む複数のメモリバンクBNK10,BNK11,・・、を配置し、同一のメモリバンクの各バッファに対応した設けられたソート回路SRT10〜SRT13,SRT14〜SRT17は互いに非接続状態とし、それぞれ異なるメモリバンクに含まれるバッファに対応して設けられた複数のソート回路、図33の例では、ソート回路SRT10とSRT14,SRT11とSRT15,SRT12とSRT16,SRT13とSRT17とを縦続接続して、半透明物体合成動作を行うことも可能である。
【0206】
また、本実施形態によれば、メモリバンド幅を活かした高並列の演算処理を行う機能ユニットである複数のPOP0〜POP3を有し、各POPは、並列に配列された演算器POPE0〜POPE3を有し、各POPE0〜POPE3は、キャッシュから読み出された32ビット幅のデータおよびフィルタ機能ユニットFFUによる演算パラメータを受けて所定の演算(たとえば加算)を行って演算結果を次段のPOPEに出力し、次段のPOPEは自身の演算結果に前段の演算結果を加算し、その演算結果を次段のPOPEに出力し、最終段のPOPE3において、全POPE0〜POPE3の演算結果の総和を求め、各POPは、複数のPOPEの演算出力から一つのPOPE3の演算結果のみを選択してクロスバー回路13125に出力する出力選択回路OSLCを有するピクセル演算プロセッサ(POP)群13123を設けたことから、クロスバー回路の小型化を図れ、処理の高速化を図ることができる。
【0207】
また、本実施形態においては、演算処理部としてのコア1312を一つだけ設けた構成例を説明したが、たとえば図37に示すように、一つのラスタライザ1311に対して複数個のコア1312−1〜1312−1を並列に設ける構成を採用することも可能である。
この場合でも、各コアで実行されるDFGは同一である。
また、複数のコアを設ける構成の並列化の単位としては、たとえばグラフィックス処理の場合には小矩形領域(スタンプ)単位、画像処理の場合にはブロック単位である。この場合、細かい粒度での並列処理を実現できる利点がある。
【0208】
また、本実施形態では、ピクセル演算プロセッサ(POP)群13123とキャッシュ間は広いバンド幅で接続されており、かつメモリアクセスのためのアドレス生成機能を内蔵しているので、演算器の演算能力を最大限引き出すだけのストリームデータの供給が可能である。
【0209】
また、本実施形態では、メモリの近傍に出力データ幅を合わせた形で演算器を高密度に配置し、処理データの規則性を利用していることから、大量の演算を最低限の演算器でしかも簡単構成で実現することができ、ひいてはコスト低減を図れる利点がある。
【0210】
また、本実施形態によれば、SDC11とグローバルモジュール12とがデータの授受を行い、一つのグローバルモジュール12に対して複数個(本実施形態では4個)のローカルモジュール13−0〜13−3が並列に接続されて、複数のローカルモジュール13−0〜13−3で処理データを共有し並列に処理し、グローバルモジュール12はグローバルキャッシュを有し、各ローカルモジュール13−0〜13−3はローカルキャッシュをそれぞれ有し、キャッシュの階層として、4つのローカルモジュール13−0〜13−3が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの2階層を有することから、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要となる。その結果、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置を実現できる利点がある。
【0211】
また、本実施形態によれば、グローバルモジュール12と各ローカルモジュール13−0〜13−3との配置関係としては、図3に示すように、グローバルモジュール12を中心として各ローカルモジュール13−0〜13−3をその周辺近傍に配置することから、各対応するチャネルブロックとローカルモジュールまでの距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることができる利点がある。
【0212】
なお、本実施形態においては、テクスチャデータが内蔵DRAM上にあるケースを例に述べているが、他のケースとして、内蔵DRAMには、カラーデータおよびzデータのみが置かれ、テクスチャデータは外部メモリに置かれることも可能である。この場合には、グローバルキャッシュでミスが発生すると、外部DRAMに対してキャッシュフィル要求が出されることになる。
【0213】
また、上述の説明では、図3の構成、すなわち、一つのグローバルモジュール12に対して複数個(本実施形態では4個)のローカルモジュール13−0〜13−3が並列に接続した画像処理装置10を例に並列処理を行う場合に特化した形態となっているが、図3の構成を一つのクラスタCLSTとして、たとえば図37に示すように、4つのクラスタCLST0〜CLST3をマトリクス状に配置して、各クラスタCLST0〜CLST3のグローバルモジュール12−0〜12−3間でデータの授受を行うように構成することも可能である。
図37の例では、クラスタCLST0のグローバルモジュール12−0とクラスタCLST1のグローバルモジュール12−1とを接続し、クラスタCLST1のグローバルモジュール12−1とクラスタCLST3のグローバルモジュール12−3とを接続し、クラスタCLST3のグローバルモジュール12−3とクラスタCLST2のグローバルモジュール12−2とを接続し、クラスタCLST2のグローバルモジュール12−2とクラスタCLST0のグローバルモジュール12−0とを接続している。
すなわち、複数のクラスタCLST0〜CLST3のグローバルモジュール12−0〜12−3をリング状に接続している。
なお、図37の構成の場合には、一つのSDCからパラメータがCLST0〜CLST3のグローバルモジュール12−0〜12−3にブロードキャストされるように構成することが可能である。
【0214】
このような構成を採用することにより、より精度の高い画像処理を実現でき、また、各クラスタ間の配線も単純に双方向として一系統で接続するので、各クラスタ間の負荷を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることが可能となる。
【0215】
【発明の効果】
以上説明したように、本発明によれば、複数レイヤの半透明物体の合成(Order IndependentTransparency)がハードウェアに容易に実現できる。
そして、任意のレイヤ数での重ね合わせを行うことができ、全シーンデータを流す回数を減らすことができる。その結果シーンデータの処理部の負荷を軽減でき、処理の高速化を図ることが可能となっている。
【図面の簡単な説明】
【図1】ピクセルレベルでの並列処理の手法に基づくプリミティブ・レベルでの並列化処理について概念的に示す図である。
【図2】一般的な画像処理装置におけるテクスチャフィルタリングを含む処理手順を説明するための図である。
【図3】本発明に係る画像処理装置の一実施形態を示すブロック構成図である。
【図4】本実施形態に係るストリームデータコントローラ(SDC)の主な処理を説明するためのフローチャートである。
【図5】本実施形態に係るグローバルモジュールの機能を説明するためのフローチャートである。
【図6】本実施形態に係るローカルモジュールにおける処理ユニットのグラフィックス処理を説明するための図である。
【図7】本実施形態に係るテクスチャリード時のローカルモジュールの動作を説明するためのフローチャートである。
【図8】本実施形態に係るローカルモジュールにおける処理ユニットの画像処理を説明するための図である。
【図9】本実施形態に係るローカルモジュールにおけるローカルキャッシュの構成例を示すブロック図である。
【図10】本実施形態に係るローカルキャッシュのメモリコントローラの構成例を示すブロック図である。
【図11】本実施形態に係るローカルモジュールの処理ユニットの具体的な構成例を示すブロック図である。
【図12】本実施形態に係るピクセルエンジンの構成例、およびレジスタユニット(RGU)、クロスバー回路との接続例を示す図である。
【図13】本実施形態に係るピクセル演算プロセッサ(POP)群の構成例を示す図である。
【図14】本実施形態に係るPOP(ピクセル演算プロセッサ)とメモリ間の接続形態およびPOPの構成例を示す図である。
【図15】本実施形態に係るPOP(ピクセル演算プロセッサ)とメモリ間の接続形態およびPOPの他の構成例を示す図である。
【図16】本実施形態に係るソート回路の具体的な構成例を示すブロック図である。
【図17】ソート回路を用いる半透明物体合成モード時の動作を説明するための図である。
【図18】本実施形態に係るソート回路を用いて縦4段、横4段を複合させて、16レイヤの合成を可能とする回路例を示す図である。
【図19】本実施形態に係るPOPEの具体的な構成例を示す回路図である。
【図20】本実施形態に係るメモリからキャッシュへのデータの読み出し形態およびキャッシュから各POPEへのデータの読み出し形態を示す図である。
【図21】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのフローチャートである。
【図22】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するための図である。
【図23】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのタイミングチャートである。
【図24】本実施形態に係るメモリのデータに基づいてピクセル演算プロセッサ群で演算処理を行い、さらにピクセルエンジンで演算を行う場合の動作を説明するためのブロック図である。
【図25】本実施形態に係る処理ユニットにおけるコアのピクセルエンジン(PXE)、ピクセル演算プロセッサ(POP)、レジスタユニット(RGU)、並びにメモリ部分を含む動作概要を示す図である。
【図26】本実施形態に係る処理ユニットにおける依存テクスチャ無しの場合のグラフィックス処理を説明するための図である。
【図27】本実施形態に係る処理ユニットにおけるグラフィックス処理のピクセル演算プロセッサ(POP)群の具体的な動作を説明するための図である。
【図28】本実施形態に係る処理ユニットにおける依存テクスチャ有りの場合のグラフィックス処理を説明するための図である。
【図29】SAD(Summed Absolute Difference)処理を説明するための図である。
【図30】本実施形態に係る処理ユニットにおけるSAD処理を説明するための図である。
【図31】コンボリューションフィルタ(Convolution Filter)処理を説明するための図である。
【図32】本実施形態に係る処理ユニットにおけるコンボリューションフィルタ処理を説明するための図である。
【図33】本実施形態に係るソート機能を有し、半透明物体合成モード動作を実現可能なメモリモジュールの構成例を示す図である。
【図34】図30のソート機能を有するメモリモジュールの半透明物体合成モード時の動作を説明するための図である。
【図35】図30のソート機能を有するメモリモジュールの半透明物体合成モードの効果を説明するための図である。
【図36】本実施形態に係るソート機能を有し、半透明物体合成モード動作を実現可能なメモリモジュールの他の構成例を示す図である。
【図37】本実施形態に係る処理ユニットにおける他の構成例(コアを複数設けた例)を示す図である。
【図38】本発明に係る画像処理装置の他の実施形態を示すブロック構成図である。
【符号の説明】
10,10A…画像処理装置、11…ストリームデータコントローラ(SDC)、12−0〜12−3…グローバルモジュール、121−0〜121−3…グローバルキャッシュ、13−0〜13−3…ローカルモジュール、131−0〜131−3…処理ユニット、132−0〜132−3…メモリモジュール、133−0〜133−3…ローカルキャッシュ、134−0〜134−3…グローバルインターフェース(GAIF)、CLST0〜CLST3…クラスタ、1311…ラスタライザ、1312,1312−1〜1312−n…コア、13121…グラフィックスユニット(GRU)、13122…ピクセルエンジン(PXE)、13123…ピクセル演算プロセッサ(POP)群、13124…レジスタユニット(RGU)、13125…クロスバー回路(IXB)、POPE0〜3…演算器、OSLC…出力選択回路、SRT0〜SRT8…ソート回路、BUF0〜BUF7…バッファ、301…比較部、302…供給データ選択部、303…書き込みデータ選択部、401…比較部、402…データ選択部。
Claims (16)
- 描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う画像処理装置であって、
上記色データ、混合値データ、および奥行きデータを記憶および読み出しが可能な複数のバッファと、
上記各バッファに対応して設けられ、初段から最終段に向かって縦続接続された複数のソート回路と、を有し、
上記初段のソート回路は、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較し、比較の結果、第1の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻し、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給し、
上記2段目以降の各ソート回路は、対応するバッファから読み出された読み出し奥行きデータ値と前段のソート回路から供給された第2の供給奥行きデータ値とを比較し、比較の結果、第2の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻して、前段から供給された第2の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給し、読み出し奥行きデータ値の方が大きい場合または小さい場合には、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込み、読み出した奥行きデータ、色データ、および混合値データを次段のソート回路に供給する
画像処理装置。 - 上記2段目以降の各ソート回路は、対応するバッファに奥行きデータ値が格納されていない場合には、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む
請求項1記載の画像処理装置。 - 複数のバッファを含む複数のメモリバンクを有し、
同一のメモリバンクの各バッファに対応して設けられたソート回路は互いに非接続状態にあり、
それぞれ異なるメモリバンクに含まれるバッファに対応して設けられた複数のソート回路が、それぞれ並列的に縦続接続されている
請求項1記載の画像処理装置。 - 描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う画像処理装置であって、
上記色データ、混合値データ、および奥行きデータを記憶および読み出しが可能な複数のバッファと、
上記複数のバッファに対応して設けられ、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較する比較部を含む複数のソート回路と、を有し、
上記各ソート回路は、初段から最終段に向かって縦続接続され、各ソート回路は、上記比較部の比較の結果、第1の供給奥行きデータ値が読み出し奥行きデータ値より大きい場合または小さい場合には、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給して、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻し、第1の供給奥行きデータ値が読み出し奥行きデータ値より小さい場合または大きい場合には、当該読み出した奥行きデータ、色データ、および混合値データを次段のソート回路に供給して、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む
画像処理装置。 - 上記初段のソート回路は、上記第1の供給奥行きデータ値が読み出し奥行きデータ値より小さい場合または大きい場合には、読み出した奥行きデータ、色データ、および混合値データを次段のソート回路に供給して、供給された上記第1の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む
請求項4記載の画像処理装置。 - 上記2段目以降の各ソート回路は、対応するバッファに奥行きデータ値が格納されていない場合には、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む
請求項4記載の画像処理装置。 - 複数のバッファを含む複数のメモリバンクが多段に配置され、
同一のメモリバンクの各バッファに対応して設けられたソート回路は互いに縦続接続され、
上記各メモリバンクの各バッファに対応して設けられ、縦続接続された複数のソート回路には、前段のメモリバンクの各バッファに対応して設けられ、縦続接続された複数のソート回路のうちの最終段の出力奥行きデータが供給される
請求項4記載の画像処理装置。 - 複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、
グローバルモジュールと、
描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う複数のローカルモジュールと、を含み、
上記グローバルモジュールは、
上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた当該リクエストを出したローカルモジュールに処理データを出力し、
上記複数のローカルモジュールは、
上記色データ、混合値データ、および奥行きデータを記憶および読み出しが可能な複数のバッファと、
上記各バッファに対応して設けられ、初段から最終段に向かって縦続接続された複数のソート回路と、を有し、
上記初段のソート回路は、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較し、比較の結果、第1の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻し、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給し、
上記2段目以降の各ソート回路は、対応するバッファから読み出された読み出し奥行きデータ値と前段のソート回路から供給された第2の供給奥行きデータ値とを比較し、比較の結果、第2の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻して、前段から供給された第2の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給し、読み出し奥行きデータ値の方が大きい場合または小さい場合には、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込み、読み出した奥行きデータ、色データ、および混合値データを次段のソート回路に供給する
画像処理装置。 - 複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、
グローバルモジュールと、
描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う複数のローカルモジュールと、を含み、
上記グローバルモジュールは、
上記複数のローカルモジュールが並列に接続され、ローカルモジュールからリクエストを受けると、上記リクエストに応じた当該リクエストを出したローカルモジュールに処理データを出力し、
上記複数のローカルモジュールは、
上記色データ、混合値データ、および奥行きデータを記憶および読み出しが可能な複数のバッファと、
上記複数のバッファに対応して設けられ、対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較する比較部を含む複数のソート回路と、を有し、
上記各ソート回路は、初段から最終段に向かって縦続接続され、各ソート回路は、上記比較部の比較の結果、第1の供給奥行きデータ値が読み出し奥行きデータ値より大きい場合または小さい場合には、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソート回路に供給して、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻し、第1の供給奥行きデータ値が読み出し奥行きデータ値より小さい場合または大きい場合には、当該読み出した奥行きデータ、色データ、および混合値データを次段のソート回路に供給して、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む
画像処理装置。 - 描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う画像処理方法であって、
複数の各バッファに対応した複数のソートステージを初段から最終段に向かって縦続接続し、
上記初段のソートステージでは、
対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較し、
第1の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出し奥行きデータ、色データ、および混合値データを対応するバッファに書き戻して、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソートステージに供給し、
上記2段目以降の各ソートステージでは、
対応するバッファから読み出された読み出し奥行きデータ値と前段のソートステージから供給された第2の供給奥行きデータ値とを比較し、
第2の供給奥行きデータ値の方が大きい場合または小さい場合には、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻して、前段からの第2の供給奥行きデータ値、色データ、および混合値データを次段のソートステージに供給し、
読み出し奥行きデータ値の方が大きい場合または小さい場合には、前段からの第2の供給奥行きデータ、色データ、および混合値データを対応するバッファに書き込み、読み出した奥行きデータ、色データ、および混合値データを次段のソートステージに供給する
画像処理方法。 - 上記2段目以降の各ソートステージでは、対応するバッファに奥行きデータ値が格納されていない場合には、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む
請求項10記載の画像処理方法。 - 複数のバッファを含む複数のメモリバンクを多段に配置し、
同一のメモリバンクの各バッファに対応したソートステージは互いに非接続状態とし、
それぞれ異なるメモリバンクに含まれるバッファに対応した複数のソートステージを、それぞれ並列的に縦続接続する
請求項10記載の画像処理方法。 - 描画すべきプリミティブに関する情報に基づいて色データ、混合値データ、および奥行きデータを含むピクセルデータを発生し、複数の奥行きデータの奥行き方向の順番を保持して、半透明物体の合成処理を行う画像処理方法であって、
複数の各バッファに対応した複数のソートステージを初段から最終段に向かって縦続接続し、
上記各ソートステージにおいて、
対応するバッファから読み出された読み出し奥行きデータ値と描画用として供給されたピクセルデータに対応する第1の供給奥行きデータ値とを比較し、
第1の供給奥行きデータ値が読み出し奥行きデータ値より大きい場合または小さい場合には、供給された第1の供給奥行きデータ値、色データ、および混合値データを次段のソートステージに供給して、読み出した奥行きデータ、色データ、および混合値データを対応するバッファに書き戻し、
第1の供給奥行きデータ値が読み出し奥行きデータ値より小さい場合または大きい場合には、読み出した奥行きデータ、色データ、および混合値データを次段のソートステージに供給して、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む
画像処理方法。 - 上記初段のソートステージでは、上記第1の供給奥行きデータ値が読み出し奥行きデータ値より小さい場合または大きい場合には、当該読み出した奥行きデータ、色データ、および混合値データを次段のソートステージに供給して、上記第1の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む
請求項13記載の画像処理方法。 - 上記2段目以降の各ソートステージでは、対応するバッファに奥行きデータ値が格納されていない場合には、前段からの第2の供給奥行きデータ値、色データ、および混合値データを対応するバッファに書き込む
請求項13記載の画像処理方法。 - 複数のバッファを含む複数のメモリバンクを多段に配置し、
同一のメモリバンクの各バッファに対応して設けられたソートステージを互いに縦続接続し、
上記各メモリバンクに対応する縦続接続された複数のソートステージには、前段のメモリバンクに対応する縦続接続された複数のソートステージのうちの最終段の出力奥行きデータを供給する
請求項13記載の画像処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002267464A JP4186561B2 (ja) | 2002-04-25 | 2002-09-12 | 画像処理装置およびその方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002125040 | 2002-04-25 | ||
JP2002267464A JP4186561B2 (ja) | 2002-04-25 | 2002-09-12 | 画像処理装置およびその方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004005352A true JP2004005352A (ja) | 2004-01-08 |
JP4186561B2 JP4186561B2 (ja) | 2008-11-26 |
Family
ID=30447454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002267464A Expired - Fee Related JP4186561B2 (ja) | 2002-04-25 | 2002-09-12 | 画像処理装置およびその方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4186561B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007334419A (ja) * | 2006-06-12 | 2007-12-27 | Fuji Xerox Co Ltd | 画像処理装置、画像処理システム、及び制御プログラム |
JP2009053080A (ja) * | 2007-08-28 | 2009-03-12 | Mitsubishi Precision Co Ltd | 3次元位置情報復元装置およびその方法 |
JPWO2015125960A1 (ja) * | 2014-02-24 | 2017-03-30 | 株式会社ニコン | 情報処理装置、デジタルカメラおよびプロセッサ |
JP2020518876A (ja) * | 2016-12-22 | 2020-06-25 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | 圧縮されたリソースへのシェーダ書き込み |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8711170B2 (en) * | 2011-02-14 | 2014-04-29 | Apple Inc. | Edge alphas for image translation |
-
2002
- 2002-09-12 JP JP2002267464A patent/JP4186561B2/ja not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007334419A (ja) * | 2006-06-12 | 2007-12-27 | Fuji Xerox Co Ltd | 画像処理装置、画像処理システム、及び制御プログラム |
JP2009053080A (ja) * | 2007-08-28 | 2009-03-12 | Mitsubishi Precision Co Ltd | 3次元位置情報復元装置およびその方法 |
JPWO2015125960A1 (ja) * | 2014-02-24 | 2017-03-30 | 株式会社ニコン | 情報処理装置、デジタルカメラおよびプロセッサ |
JP2020518876A (ja) * | 2016-12-22 | 2020-06-25 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | 圧縮されたリソースへのシェーダ書き込み |
JP7078628B2 (ja) | 2016-12-22 | 2022-05-31 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | 圧縮されたリソースへのシェーダ書き込み |
Also Published As
Publication number | Publication date |
---|---|
JP4186561B2 (ja) | 2008-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4158413B2 (ja) | 画像処理装置 | |
US7522171B1 (en) | On-the-fly reordering of 32-bit per component texture images in a multi-cycle data transfer | |
US7365753B2 (en) | Texture engine state variable synchronizer | |
US6999087B2 (en) | Dynamically adjusting sample density in a graphics system | |
US8237705B2 (en) | Hierarchical processor array | |
US7256781B2 (en) | Image processing apparatus and method of same | |
US6975322B2 (en) | Dynamically adjusting a number of rendering passes in a graphics system | |
JPH10177659A (ja) | 改良されたバス通信用の共通データ・ラインを用いてマルチ論理バスを実行する3次元グラフィック・アクセレータ | |
US7546425B2 (en) | Data processor with a built-in memory | |
JPWO2003009125A1 (ja) | 演算装置および画像処理装置 | |
JP4186561B2 (ja) | 画像処理装置およびその方法 | |
JP4264530B2 (ja) | 画像処理装置およびその方法 | |
JP4264529B2 (ja) | 画像処理装置およびその方法 | |
JP2004145838A (ja) | 画像処理装置 | |
US7489315B1 (en) | Pixel stream assembly for raster operations | |
JP2004118713A (ja) | 画像処理装置 | |
JP4264526B2 (ja) | 画像処理装置およびその方法 | |
JP4264527B2 (ja) | 画像処理装置およびその方法 | |
JP2004013873A (ja) | 画像処理装置 | |
EP1345168B1 (en) | Dynamically adjusting sample density and/or number of rendering passes in a graphics system | |
EP1308899A2 (en) | Image processing apparatus | |
JP2004127227A (ja) | 画像処理装置 | |
JP2004118822A (ja) | 画像処理装置 | |
JP4411939B2 (ja) | 演算装置および画像処理装置 | |
Haaker et al. | A distributed frame buffer within a window-oriented high performance graphics system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050831 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080304 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080502 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080603 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080724 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080819 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080901 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110919 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |