説明

画像処理装置

【課題】シェーダステージにおける入出力データをより簡易な形で管理することができるようにする。
【解決手段】インデックストランスレータ166が入力インデックスバッファの解析を行い,同インデックスバッファ上の入力データが既にシェーダステージにおいて処理が実行された否かの判定を実施する。処理がまだ実行されていない場合には,入力値,及び出力値への参照情報を前記タスクキュー上に作成する工程と,出力値への記憶領域を前記出力アドレスバッファ,及び出力インデックスバッファに割り当てる工程と,入力値,及び出力値への参照情報をタスクキュー上に作成してシェーダステージにおける処理が完了したことを示す工程とを実行する。出力インデックスバッファ,及び出力アドレスバッファの出力値は,以降に続くステージへの入力値として再利用される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は,複数のシェーダステージを通じて3D画像の処理を行う画像処理装置に関する。
【背景技術】
【0002】
近年,ゲームやカーナビゲーションなどにおいては,立体的に描画を行う三次元の画像表示が普及している。三次元の画像表示は,例えばプログラマが画像生成アルゴリズムを定義するシェーダステージが組み込まれた画像処理に特化したプロセッサを搭載したグラフィック処理チップなどにより実現されている。
【0003】
グラフィック処理チップで三次元の画像表示を行う方法としては,CPU側で処理を行うほか,グラフィック処理チップにおいて実装されたシェーダステージをプログラム可能に構成し,各シェーダステージを通じて最終的にレンダリングされるオブジェクトに対して処理を行うようになっている。シェーダの具体的な例としては,頂点に対して処理を行う頂点シェーダや,プリミティブを構成する頂点数を増減する処理を行うジオメトリシェーダなどを含みこのような画像処理装置の例としては例えば,特許文献1に開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−288990号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら,上述のように複数のシェーダステージを通じて処理が行なわれる画像処理装置の場合,各シェーダステージにおいて入力,及び出力されるデータの形式が異なることから,同時に異なるシェーダステージからデータを利用したい場合などは各シェーダ毎にデータを最適化する処理が必要であった。また,ジオメトリシェーダにおいては,プリミティブの頂点数の増減が行なわれ,出力される頂点数がいくつになるのかは,処理が開始されるまでは把握することができないため,共通のバッファでの記録を行う場合は,ジオメトリシェーダでの処理が完了するまで他のシェーダからの書き込みをできなくするなどの処理が必要であり,処理の複雑化の原因となっていた。
【0006】
そこで,本発明は,複数種類のシェーダステージを含んだ画像処理装置において,シェーダプロラムにおける入出力データをより簡易な形で管理することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために本発明は,オオブジェクトを構成する頂点又はプリミティブに対して幾何学的な画像処理を行うパイプラインが,複数種類のシェーダステージから構成されている画像処理装置にあって,シェーダステージに入力される頂点データの物理メモリにおけるアドレスが記憶される入力アドレスバッファと,入力アドレスバッファ上のアドレスを記録し,当該アドレスの並びがプリミティブに属する頂点データの順列を維持した態様となる入力インデックスバッファと,シェーダステージにおいて処理がなされて出力された頂点データの物理メモリにおけるアドレス,及び当該頂点データに対する処理が完了しているか否かを示すライフタイム情報が記録される出力アドレスバッファと,出力アドレスバッファ上のアドレスを記録し,当該アドレスの並びがプリミティブに属する頂点データの順列を維持した態様となる出力インデックスバッファと,
シェーダステージにおいて処理が行われる頂点データの入力インデックスバッファ及び出力インデックスバッファにおけるアドレス同士の対応関係が記録されるタスクキューと,出力データのための記録領域の割り当てを行うインデックストランスレータとを備えている。
このインデックストランスレータは入力インデックスバッファの解析を行い,同インデックスバッファ上の入力データが既にシェーダステージにおいて処理が実行されたか否かの判定を実施し,当該判定により,処理がまだ実行されていない場合には,入力データのシェーダステージにおける処理結果である出力データが記録される記憶領域を,出力アドレスバッファ,及び出力インデックスバッファに割り当てる工程と,入力データの入力インデックスバッファ上のアドレスと,これに対応する出力データが記憶されるために割り当てられた出力インデックスバッファ上のアドレスとの対応関係をタスクキュー上に記憶させる工程と,を実行し,出力インデックスバッファ,及び出力アドレスバッファにおける出力データは,処理が行なわれたシェーダステージの下流工程にある別のシェーダステージへの入力データとしてそれぞれ再利用される
【0008】
また,シェーダステージにおける処理が終了後に当該タスクキューに記憶された入力インデックスバッファのアドレスを参照して,該当する入力インデックスバッファに記憶された入力データを解放する方式も採用可能である。
【0009】
更には,入力インデックスバッファ,又は出力インデックスバッファは頂点データから構成されるプリミティブの先頭に同配列のサイズを示すサイズデータが記憶されており,同サイズデータは当該プリミティブ列を構成するインデックス値がフェッチされるごとに,1ずつ減少され同サイズ値が0となった際に同プリミティブ列からのフェッチが完了されるようにしてもよい。
【発明の効果】
【0010】
本発明によれば,シェーダプロラムにおける入出力データをより簡易な形で管理することができる。
【図面の簡単な説明】
【0011】
【図1】図1は,本発明のコンピュータグラフィックスシステムの概略構成を示すブロック図である。
【図2】図2は,コンピュータグラフィックスシステムに搭載されたグラフィック処理チップの概略構成を示すブロック図である。
【図3】図3(a),(b)は,頂点バッファ及びインデックスバッファのデータ構造を示す概略図である。
【図4】図4は,記録領域のデータ構造を示すブロック図である。
【図5】図5は,インデックストランスレータがデータを処理する手順を示した動作図である。
【図6】図6は,インデックストランスレータがデータを処理する手順を示した動作図である。
【図7】図7は,インデックストランスレータがデータを処理する手順を示した動作図である。
【図8】図8は,インデックストランスレータがデータを処理する手順を示した動作図である。
【発明を実施するための形態】
【0012】
以下,発明を実施するための形態について説明する。本発明は,以下に説明する実施態様に限定されるものではない。本発明は,以下に説明する実施態様から当業者に自明な範囲で適宜修正される範囲を含む。
【0013】
図1は,画像処理装置であるコンピュータグラフィックスシステム100の1つの実施形態の模式ブロック図である。図示されているコンピュータグラフィックスシステム100は,DMAユニット130とグラフィックス処理ユニット(GPU)140を含んでいる。コンピュータグラフィックスシステム100はまた,GPU140に結合された表示装置170も含む。更に,DMAユニット130はメモリインタフェース110を介してホストメモリ装置120に結合されている。このGPU140には,チップ上に設けられたオンチップメモリ150と,頂点やプリミティブ,ピクセル等に対して各種のシェーダ処理を行うシェーダパイプライン160とが設けられている。図示されているコンピュータグラフィックスシステム100はある構成要素部品を示しているが,コンピュータグラフィックスシステム100としては構成要素を適宜変更することもできる。
【0014】
このコンピュータグラフィックスシステム100は対象物をモデル化し,モデル化された対象物を表示装置170上に表示するように構成される。対象物は3つの頂点と,この3つの頂点を接続する3つのエッジまたは辺を有する三角形のような多角形によりモデル化されることがよくある。また,三角形以外にもその他の多頂点形のプリミティブを扱うことも可能である。
【0015】
対象物はこれらの三角形や多頂点形のプリミティブを1〜数万個組み合わせることによりモデル化できる。対象物をモデル化するために,コンピュータグラフィックスシステム100は各プリミティブの頂点を格納および参照できる。
1つの実施形態において,DMAユニット130は,シェーダパイプライン160に対して供給するコマンドストリームと種々のDMA頂点ストリームの入力トラフィックを制御する。DMAユニット130は,ホストメモリ120に記憶されている頂点情報をフェッチし,これをグラフィック処理チップ140上のオンチップメモリ150に転送する。この転送された頂点データは,シェーダパイプライン160において含まれる頂点シェーダ(図2に示す)において処理されることから,転送の際に頂点シェーダに入力するための要素組み立ても行う。ホストメモリ120には,頂点を記録するデータ領域として頂点バッファ121と,インデックスバッファ122とが設けられている。
【0016】
図2は,GPU140の詳細の構成を示したブロック図である。シェーダパイプライン160には,頂点シェーダ161,ジオメトリシェーダ162,ラスタライザ163,ピクセルシェーダ164が含まれている。頂点シェーダ161は頂点の集合に対して作用し,位置,色,テクスチャマッピング座標といった頂点の属性を参照・変更可能である。頂点シェーダ161で計算された頂点は通常はジオメトリシェーダ162に渡されるか,そのままピクセルシェーダ164に渡される。
【0017】
ジオメトリシェーダ162は,ラスタライザ163やピクセルシェーダ164に渡されるオブジェクト内の頂点の集合を加工するために使用される。ジオメトリシェーダ162では実行時に頂点数を増減させることが可能となる。この場合,入力されるプリミティブに属する頂点の数が出力されるプリミティブでは変更されることもありうる。このような頂点数が変わるプリミティブを可変長サイズのプリミティブと称する。また,ジオメトリシェーダ162では,複数のステージを通じて処理が行われる場合も存在する。すなわち,一度ジオメトリシェーダ162にて処理を行われたプリミティブが,キャッシュに保存され,再度ジオメトリシェーダ162に入力されるような処理である。
【0018】
ラスタライザ163は,頂点によって構成されるプリミティブ情報からフラグメントを生成する。各フラグメントには位置情報だけではなく法線やテクスチャ座標などの情報も付随する。このラスタ化されたフラグメントは次ぐピクセルシェーダ164に入力され,基本的には頂点シェーダ161からの情報を元にテクスチャを合成したり表面色を適用したりする。
これをプログラミングし,グラフィック処理チップ140で実行することにより,バンプマッピング等のより高度なエフェクトを それをCPUですべて実行するよりもはるかに高いパフォーマンスで実現することができるようになる。なお,ラスタライザ163とピクセルシェーダ164は一体に構成することもできる。また,これらの各シェーダステージは個別に構成するのではなく,統合型のユニファイドシェーダとして構成することも可能である。
【0019】
シェーダパイプライン160には,シェーダスケジューラ165,及びインデックストランスレータ166が設けられている。シェーダスケジューラ165は,各シェーダステージに対して処理タスクの割り当てを行う他,シェーダステージから処理が完了した旨の命令セットを受け,後述するインデックストランスレータ166に対して入力データ用に割り当てられていた記憶容量の割当の解放と,出力データを記録する際に次のシェーダステージにて出力データを利用可能であることを示すフラグのセットとを行う。
【0020】
インデックストランスレータ166は,各シェーダステージに入力される入力シーケンスを読み取って,これらを組み立ててシェーダステージに入力されるフォーマットへと変換する。また,シェーダステージからの出力データに対して各記憶領域におけるメモリの割り当てを行い,出力データの記録先をあらかじめ確保する。また,シェーダステージにおけるある入力データに対する処理状況をシェーダスケジューラ165と逐次情報をやり取りすることで把握し,その入力データのライフタイム情報を更新する作業も担当する。
【0021】
オンラインチップ150には,様々なデータ用のバッファが設けられている。例示すると,物理的な記録領域であり頂点データ自体が記録される物理メモリ151の他,アドレスバッファ152,インデックスバッファ153,タスクキュー154などのデータ構造が設けられている。
物理メモリ151は,頂点データの座標データ,オフセット値,属性データ,ベクトルデータ等の情報が,1つの頂点データ毎に1つの物理アドレスが割り当てられる形で記録される。
【0022】
アドレスバッファ152は,物理メモリ151に記録された頂点データへの参照データとして,物理メモリ151上の物理アドレスが記録される。またこの物理アドレスと関連付けられて,そのデータのライフタイム情報が記録される。ライフタイム情報とは上述したインデックストランスレータ155によって記録・更新されるものであり,そのデータを再利用するか否か,記録領域の割り当てを解除するか否か等を判断するための情報である。
【0023】
インデックスバッファ153は,シェーダステージへ入力されるデータ項目をシーケンシャルに取り扱う。インデックスバッファ153は,プリミティブを構成する頂点データの配列が記録され,頂点の並び順に沿って頂点のアドレスバッファ152におけるアドレス情報が記録される。このインデックスバッファ153は,ホストメモリ120において設けられたインデックスバッファ122とは異なり,シェーダステージごとに最適化された形でデータが記憶される。
また,タスクキュー154には,各パイプラインにて処理が行われる入力データと出力データのインデックスバッファ153における参照値が記録される。
【0024】
図3では,ホストメモリ120における頂点バッファ121,及びインデックスバッファ122のデータ構造を示したブロック図である。インデックスバッファ図3(a)の場合では,複数の三角形からなるプリミティブ201が頂点バッファ121とインデックスバッファ122に記憶された頂点データにより表されている。頂点バッファ121においては,V0〜VNのN個の頂点データが記録されている。インデックスバッファ122においては,プリミティブ201が三角形を単位に配列として記録されていき,「0,1,2」「2,1,3」「2,3,4」の頂点からなる三角形と「3,1,5」「3,5,6」の2つの三角形に分割された四角形の単位で記録されている。インデックスバッファ122においては,3つの頂点の単位で頂点バッファ121への参照が記録されていく。また,他のインデックスバッファ122における記録の仕方としては図3(b)に図示される。図3(b)においては,プリミティブ202の配列情報は隣接する三角形のうち共通する2点の頂点については,再度インデックスバッファ122に記録せずに,異なる頂点データへの参照値のみが記録されていく。この場合,インデックスバッファ122の記録容量を抑制することができるため,オブジェクトの形状によっては有利に働く。
【0025】
続いて,図4においてこの各バッファのデータ構造の詳細を説明する。図4に示されるように,物理メモリ151,アドレスバッファ152,インデックスバッファ153,タスクキュー154が示されている。なお,アドレスバッファ152は,頂点シェーダ151とジオメトリシェーダ152ではデータ構造が異なることから,異なる態様を示している。
【0026】
タスクキュー154には,入力リファレンス用の記憶領域と出力リファレンス用の記憶領域とが設けられており,これらは一対一で対応している。この各リファレンス用の記憶領域に入力される値は,入力データが記憶されるインデックスバッファ153と出力データが記憶されるインデックスバッファ153のそれぞれのアドレスが入力されている。すなわち,タスクキュー154を参照することにより,入力データが記憶されるインデックスバッファ153における位置と,出力データが記憶されるインデックスバッファ153における位置との対応関係を把握可能になるのである。なお,頂点シェーダ161においては,入力頂点数と出力頂点数とは同じ数であるため,頂点数だけ対応関係が記録される。一方,ジオメトリシェーダ162の場合は,入力されたプリミティブの頂点数の増減が行われることから,タスクキュー154に記録される対応関係は異なることとなる。具体的には,ジオメトリシェーダ162において頂点数が3から1に減少される場合は,タスクキュー154には,「0→0」,「1→0」,「2→0」の3つの関連が記録されることとなる。
【0027】
インデックスバッファ153は,アドレスバッファ152のアドレスへの参照値である頂点インデックス値がシーケンスで記録されるとともに,このシーケンスの先頭データの位置に,プリミティブのサイズを記録するために入力サイズが記録される領域が設けられている。この入力サイズのための記録領域が設けられることで,インデックスバッファ153の開始位置とサイズを把握可能となるため,プリミティブに属する頂点を識別することが可能となる。この入力サイズを参照することで,インデックスバッファ153から頂点データをフェッチしていく際には,入力サイズを参照し,データを1フェッチするごとにこの入力サイズの値が記録されたカウンタの値がマイナスされ,0になった際に
【0028】
アドレスバッファ152は,頂点シェーダ161の入出力データが記録される場合は,頂点データが記録されている物理メモリ151のアドレスのほか,DMAユニット130によってパイプライン160に転送される前のホストメモリ120におけるインデックスバッファ122の値(以下,「オリジナルインデックス」とする)が記録される。また,アドレスバッファ152には,参照カウントが記録される。この参照カウントは,その頂点データがどれだけのプロセスによって参照されているかを示す値であり,参照される処理が増えると+1され,参照が解除されると−1される。この参照カウントが0になった場合には,このキャッシュされている頂点データを削除可能であることを示すものである。この参照カウントもライフタイム情報を構成する要素である。
【0029】
また,ジオメトリシェーダ162の入出力データが記憶されるアドレスバッファ152の場合には,頂点データが記録されている物理メモリ151のアドレスが記録される。ジオメトリシェーダ162で処理がされる場合においては,頂点シェーダ161のときのようにオリジナルインデックスや参照カウントなどの値は記憶されずに,プリミティブIDが記録される。プリミティブIDは,頂点データが属するプリミティブを識別する値であり,キャッシュにプリミティブのジオメトリシェーダ162における処理結果を記録する際にもそのキーとして利用される。したがって,このアドレスバッファ152では,このプリミティブIDを参照することで,そのプリミティブが既に処理が行われているか否か,他のシェーダステージでの処理が行なわれうるか否かを判別することができ,データのライフサイクルを管理するライフタイム情報として利用可能である。
【0030】
続いて,このようなシェーダパイプライン160における実際の頂点,及びプリミティブの処理の流れを,図5〜図8を通じて説明する。
【0031】
図5に示されている各バッファのうち頂点バッファ121,及びインデックスバッファ122はホストメモリ120上に設けられている。頂点バッファ121,及びインデックスバッファ122においては,その記憶領域の一部のみ,具体的には0〜3のアドレスに記憶されたデータが示されている。頂点バッファ121には,頂点V4,V5,V6,V7の頂点のデータが記録されており,インデックスバッファ122はこの頂点バッファ122のアドレスへの参照値が配列として記録されている。頂点バッファ121,及びインデックスバッファ122に記録されたデータは,DMAユニット130,及びDMAインデックストランスレータ131によって,頂点入力アドレスバッファ152a,頂点入力インデックスバッファ153a,物理メモリ(図示せず)にそれぞれ転送される。この転送の際に,データの記録構造は,シェーダステージに対応した形に適宜変更される。DMAインデックストランスレータ131は,この転送の際に各バッファにおける記録領域の割当を行う。具体的には,インデックスバッファ122に記録されているプリミティブのサイズ情報をフェッチし,このサイズ情報から出力側に必要な記録領域の容量を把握し,割当を行う。この処理を通じて,頂点入力アドレスバッファ152aには,「V4,V5,V6,V7」のオリジナルインデックスが記録される。また,頂点入力インデックスバッファ153aには,「1,3,0,1」の頂点入力アドレスバッファ152aのアドレスへの参照値が記録される。「1」は頂点入力アドレスバッファ152aにおいては頂点「V5」を,「3」は頂点入力アドレスバッファ152aにおいては頂点「V7」を,「0」は頂点入力アドレスバッファ152aにおいては頂点「V4」をそれぞれ参照している。
【0032】
続いて,図6では,続く頂点シェーダ161に対して各頂点データが渡され,その処理結果が出力側のバッファに記録されていく手順を示している。ここでは,一つ目の頂点に対して処理が行われ,バッファに記録される態様が示されている。まずは,頂点入力インデックスバッファ153aから取得した頂点データが既に出力側のアドレスバッファに記録されているか否かを判定する。この頂点データが存在しない場合は,頂点シェーダ161において頂点V5に対する処理が行なわれ際に,頂点インデックストランスレータ166aは各バッファへの記録領域の割り当てを行う。この時まずは,頂点入力インプットバッファ171をフェッチし,このプリミティブに含まれる頂点数を入力サイズから把握する。このプリミティブは3つの頂点から構成されているため,頂点出力アドレスバッファ152bには3つのアドレス0〜2が割り当てられる。また,この時物理アドレス151にも同様に記憶領域が割り当てられる。そして,頂点出力アドレスバッファ152bには,頂点V5の物理メモリ151上のアドレスと,頂点V5への参照が記録されたオリジナルインデックスとがアドレス「2」に記録される。次いで,頂点入力インデックスバッファ153bにこの頂点出力アドレスバッファ152bのアドレスに対する参照がアドレス「0」に記録される。
【0033】
次いで,図7において,この頂点インデックストランスレータ166aは,VSタスクキュー154aに頂点入力インデックスバッファ153aにおけるアドレスと,頂点出力インデックスバッファ153bにおけるアドレスとの対応関係を記録する。ここでは,この頂点は双方ともアドレス「0」に記録されていることから「0→0」と記録される。
このような処理を繰り返すと,図8に示された状態となり,頂点出力アドレスバッファ152b,頂点出力インデックスバッファ153b,VSタスクキュー154aに各データが記録される。なお,頂点V5においては,既に一度処理が行なわれていることから,前述した頂点データが既に出力側のアドレスバッファに記録されているか否かの判定の結果,このデータがキャッシュされているため,頂点出力アドレスバッファ152bのアドレス「2」を再度参照する値が記録される。この記録されたバッファ上のデータは続くジオメトリシェーダ162等への入力値として利用される。以降のジオメトリシェーダ162,ラスタライザ163,ピクセルシェーダ164においても同様の処理が繰り返される。
【0034】
以上の実施形態において示された本発明に係る画像処理装置の作用,及び効果を以下に示す。
本発明では,シェーダステージ毎に記録領域が分けられており,それぞれに物理メモリ151に記録された頂点データへの物理アドレスを記録するアドレスバッファ152と,このアドレスバッファ152への参照値をシーケンスに記録したインデックスバッファ153とを備えている。そして,シェーダステージ毎に設けられたインデックストランスレータ166が,プログラム毎に異なるデータに必要な記録領域の割り当てを行うことができる。具体的には,例えば頂点シェーダ161のステージは,アドレスバッファ152に参照カウント及びオリジナルインデックスを記録するが,ジオメトリシェーダ162のステージではプリミティブIDを記録する。こうしたシェーダステージ毎の違いを吸収し,記録領域の効率的な利用を実施することができる。
【0035】
また,インデックストランスレータ166は,シェーダステージ間での処理やデータのやり取りを行うことで,シェーダ内だけではなく,シェーダ間のやり取りも含めてその結果をライフタイム値に反映することでき,以降のプロセスにて使用されなくなったデータに対するバッファの割当を解除することで,記録領域を効率的に使用することができるようになる。
【0036】
本発明では,物理メモリ151にではなく,アドレスバッファ152にデータの再利用,及び消去を判断するためのライフタイム情報を記録することとした。ライフタイム情報は,シェーダステージ毎にその形式が異なることからデータのサイズも異なってくる。これを,頂点データなどを格納する記録領域と同じ領域に記録するのであれば,サイズの大きい頂点データと同様の記録容量を各データ毎に必要となってくることから,メモリに無駄が生じるが,データサイズの小さいアドレスバッファ152を活用することでメモリ利用効率を向上させることができるようになる。
【0037】
また,タスクキュー154にインデックスバッファ152の入出力双方のアドレスを記録することで,この該当する頂点が以降のプロセス等でも不要となったときには,このタスクキュー154の値を参照してインデックスバッファ152の領域の割り当てを解除することができるようになる。
【産業上の利用可能性】
【0038】
本発明は,3Dの画像処理を行う機能を搭載したゲーム機,パチンコ機,携帯電話などに有効である。
【符号の説明】
【0039】
100 コンピュータグラフィックスシステム
110 メモリインタフェース
120 ホストメモリ
121 頂点バッファ
122 インデックスバッファ
130 DMAユニット
140 グラフィック処理ユニット
150 オンチップメモリ
151 物理メモリ
152 アドレスバッファ
153 インデックスバッファ
154 タスクキュー
160 シェーダパイプライン
161 頂点シェーダ
162 ジオメトリシェーダ
163 ラスタライザ
164 ピクセルシェーダ
165 シェーダスケジューラ
166 インデックストランスレータ
170 表示装置
201,202 プリミティブ

【特許請求の範囲】
【請求項1】
オブジェクトを構成する頂点又はプリミティブに対して幾何学的な画像処理を行うパイプラインが,複数種類のシェーダステージから構成されている画像処理装置にあって,
前記シェーダステージに入力される頂点データの物理メモリにおけるアドレスが記憶される入力アドレスバッファと,
前記入力アドレスバッファ上のアドレスを記録し,当該アドレスの並びが前記プリミティブに属する前記頂点データの順列を維持した態様となる入力インデックスバッファと,
前記シェーダステージにおいて処理がなされて出力された前記頂点データの前記物理メモリにおけるアドレス,及び当該頂点データに対する処理が完了しているか否かを示すライフタイム情報が記録される出力アドレスバッファと,
前記出力アドレスバッファ上のアドレスを記録し,当該アドレスの並びが前記プリミティブに属する前記頂点データの順列を維持した態様となる出力インデックスバッファと,
前記シェーダステージにおいて処理が行われる頂点データの前記入力インデックスバッファ及び前記出力インデックスバッファにおけるアドレス同士の対応関係が記録されるタスクキューと,
出力データのための記録領域の割り当てを行うインデックストランスレータと,
を備え,
前記インデックストランスレータは前記入力インデックスバッファの解析を行い,同インデックスバッファ上の入力データが既に前記シェーダステージにおいて処理が実行されたか否かの判定を実施し,
当該判定により,処理がまだ実行されていない場合には,
前記入力データの前記シェーダステージにおける処理結果である出力データが記録される記憶領域を,前記出力アドレスバッファ,及び前記出力インデックスバッファに割り当てる工程と,
前記入力データの前記入力インデックスバッファ上のアドレスと,これに対応する出力データが記憶されるために割り当てられた前記出力インデックスバッファ上のアドレスとの対応関係を前記タスクキュー上に記憶させる工程と,
を実行し,
前記出力インデックスバッファ,及び出力アドレスバッファにおける前記出力データは,処理が行なわれた前記シェーダステージの下流工程にある別の前記シェーダステージへの前記入力データとしてそれぞれ再利用される画像処理装置。
【請求項2】
請求項1に記載の画像処理装置において,
前記シェーダステージにおける処理が終了後に当該タスクキューに記憶された前記入力インデックスバッファのアドレスを参照して,該当する前記入力インデックスバッファに記憶された前記入力データを解放する
画像処理装置。
【請求項3】
請求項1または2に記載の画像処理装置において,
前記入力インデックスバッファ,又は出力インデックスバッファは前記頂点データから構成されるプリミティブの先頭にプリミティブのサイズを示すサイズデータが記憶されており,同サイズデータは当該プリミティブを構成するインデックス値がフェッチされるごとに,1ずつ減少され同サイズ値が0となった際に同プリミティブからのフェッチが完了される
画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−137984(P2012−137984A)
【公開日】平成24年7月19日(2012.7.19)
【国際特許分類】
【出願番号】特願2010−290646(P2010−290646)
【出願日】平成22年12月27日(2010.12.27)
【出願人】(502401703)株式会社ディジタルメディアプロフェッショナル (26)
【Fターム(参考)】