(57)【要約】【課題】早期深さ検知を有するグラフィックスパイプライン及び方法。【解決手段】グラフィックスパイプラインは、入力プリミティブオブジェクトデータからディスプレイピクセルデータを描画する複数の連続して配列された処理ステージを含む。処理ステージは、少なくとも1つのテクスチャリングステージと深さテストステージとを含み、深さテストステージは、グラフィックスパイプラインにおいてテクスチャリングステージより早くに位置することが出来る。【選択図】      図３
2007526585.tif 000002
【特許請求の範囲】
【請求項１】
ピクセルデータを処理するためのグラフィックスパイプラインであって、入力プリミティブオブジェクトデータからディスプレイピクセルデータを描画する複数の連続して配列された処理ステージを備え、なおここでは、前記処理ステージは、少なくとも1つのテクスチャリングステージと深さテストステージとを含み、そして、前記深さテストステージは、前記グラフィックスパイプラインにおいて前記テクスチャリングステージより早くに位置する、グラフィックスパイプライン。
【請求項２】
前記複数の連続して配列された処理ステージは、シザーテストステージを更に含み、そして、前記深さテストステージは機能的に、前記シザーテストステージと前記テクスチャリングステージとの間に位置する、請求項１記載のグラフィックスパイプライン。
【請求項３】
前記テクスチャリングステージは、テクスチャマッピングステージとテクスチャブレンディングステージとを含む、請求項１記載のグラフィックスパイプライン。
【請求項４】
前記複数の連続して配列された処理ステージは、アルファテストステージを欠いている、請求項１記載のグラフィックスパイプライン。
【請求項５】
前記複数の連続して配列された処理ステージは、アルファテストステージを含む、請求項１記載のグラフィックスパイプライン。
【請求項６】
前記深さテストステージによって得られた深さ値を保存する深さバッファを更に備え、なおここでは、前記アルファテストステージは前記テクスチャリングステージの後に位置し、そして、前記深さ値を前記深さバッファに保存することは、前記アルファテストステージの制御の下で一時的に延期される、請求項５記載のグラフィックスパイプライン。
【請求項７】
前記パイプラインは、処理されたピクセルデータの、ディスエーブルにされたアルファテスト状態とイネーブルにされたアルファテスト状態に夫々応じて、少なくとも第1及び第２のステージシーケンスの間に動的に再配列され、
前記第１ステージシーケンスにおいては、前記深さテストステージは機能的に、前記グラフィックスパイプラインにおいて前記テクスチャリングステージよりも早くに位置し、そして
前記第２ステージシーケンスにおいては、前記深さテストステージは機能的に、前記グラフィックスパイプラインにおいて前記テクスチャリングステージ及び前記アルファテストステージよりも遅くに位置する、
請求項５記載のグラフィックスパイプライン。
【請求項８】
入力プリミティブオブジェクトデータからディスプレイデータを描画する複数の連続して配列された処理ステージを備え、なおここでは、前記処理ステージは、少なくとも1つのテクスチャリングステージとアルファテストステージと深さテストステージとを含み；
前記パイプラインは、処理されたピクセルデータのアルファテスト状態に従って、少なくとも第1及び第２のステージシーケンスの間に動的に再配列され、
前記第１ステージシーケンスにおいては、前記深さテストステージは機能的に、前記グラフィックスパイプラインにおいて前記テクスチャリングステージよりも早くに位置し、そして
前記第２ステージシーケンスにおいては、前記深さテストステージは機能的に、前記テクスチャリングステージ及び前記アルファテストステージの後に位置する、
ピクセルデータを処理するためのグラフィックスパイプライン。
【請求項９】
前記パイプラインの処理ステージ間に動作的に結合され、そして、前記処理されたピクセルデータの前記アルファテスト状態に従い制御される、複数のマルチプレクサ、を更に備える請求項８記載のグラフィックスパイプライン。
【請求項１０】
前記複数のマルチプレクサは、
前記アルファテスト状態がディスエーブルされる時は前のパイプラインステージからの出力を前記深さテストステージに適用し、前記アルファテスト状態がイネーブルされる時は前記アルファテストステージからの出力を前記深さテストステージに適用する、第１マルチプレクサと；
前記アルファテスト状態がディスエーブルされる時は前記深さテストステージからの出力を前記テクスチャリングステージに適用し、前記アルファテスト状態がイネーブルされる時は前記前のパイプラインステージからの出力を前記テクスチャリングステージに適用する、第２マルチプレクサと；そして
前記アルファテスト状態がディスエーブルされる時はテクスチャリングステージからの出力を次のステージに適用し、前記アルファテスト状態がイネーブルされる時は前記前のパイプラインステージからの出力を前記次のステージに適用する、第３マルチプレクサと；
を備える、請求項９記載のグラフィックスパイプライン。
【請求項１１】
前記前のステージはシザーテストステージである、請求項１０記載のグラフィックスパイプライン。
【請求項１２】
前記次のステージはアルファブレンディングステージである、請求項１１記載のグラフィックスパイプライン。
【請求項１３】
前記テクスチャリングステージは、テクスチャマッピングステージとテクスチャブレンディングステージとを備える、請求項８記載のグラフィックスパイプライン。
【請求項１４】
前記グラフィックスパイプラインの少なくとも１つのステージのピクセルデータは、前記第１及び第２のステージシーケンス間で遷移する時、フラッシュされる、請求項８記載のグラフィックスパイプライン。
【請求項１５】
深さ値を保存する深さバッファと；
処理されたピクセルの現在の深さ値と前記深さバッファの中に保存された前の深さ値とを比較し、比較結果に基づき、前記前の深さ値に前記現在の深さ値を上書きするように書き込みコマンドを出す、深さテストステージと；
深さテストステージによって出された前記書き込みコマンドの実行を一時的に延期する書き込み延期回路と；
前記深さテストステージの後に前記処理されたピクセルを受け取るテクスチャリングステージと；そして
前記テクスチャリングステージの後に前記処理されたピクセルを受け取るアルファテストステージと；
を備え、
なおここでは、前記書き込み延期回路は、前記深さテストステージによって出された前記延期された書き込みコマンドを無視するか又は実行するために、前記アルファテストステージに応答する、
ピクセルデータを処理するためのグラフィックスパイプライン。
【請求項１６】
前記書き込み延期回路は、前記深さテストステージから前記現在の深さ値を受け取るＦＩＦＯ回路と、そして、前記ＦＩＦＯ回路と前記深さバッファとの間に動作的に結合されたインタフェース回路と、を備える、請求項１５記載のグラフィックスパイプライン。
【請求項１７】
前記ＦＩＦＯ回路の深さは、前記テクスチャリングステージのピクセル容量の合計に等しい、請求項１６記載のグラフィックスパイプライン。
【請求項１８】
前記テクスチャリングステージは、テクスチャマッピングステージとテクスチャブレンディングステージとを備える、請求項１７記載のグラフィックスパイプライン。
【請求項１９】
前記アルファテストステージは、処理されたピクセルがアルファテストに合格する時は前記深さバッファインタフェースに第１信号を、前記処理されたピクセルが前記アルファテストに不合格となる時は前記深さバッファインタフェースに第２信号を、伝送し、そして、前記深さバッファインタフェースは、前記延期された書き込みコマンドを実行するように前記第１信号に応答し、そして、前記深さバッファインタフェースは、前記延期された書き込みコマンドを無視するように前記第２信号に応答する、請求項１７記載のグラフィックスパイプライン。
【請求項２０】
前記アルファテストステージは、処理されたピクセルが前記アルファテストステージを機能的にバイパスする時は第３信号を伝送し、そして、前記深さバッファインタフェースは、前記延期された書き込みコマンドを実行するように前記第３信号に応答する、請求項１７記載のグラフィックスパイプライン。
【請求項２１】
入力プリミティブオブジェクトデータからディスプレイデータを描画する複数の連続して配列された処理ステージと、なおここでは、前記処理ステージは、少なくとも1つのテクスチャリングステージとアルファテストステージと深さテストステージとを含んでいる；そして
処理されたピクセルデータのアルファテスト状態に応答し、少なくとも第1及び第２のステージシーケンスの間の前記処理ステージの前記連続した配列を動的に再配列するための手段と、なおここでは、前記第１ステージシーケンスにおいては、前記深さテストステージは機能的に、前記グラフィックスパイプラインの中で前記テクスチャリングステージよりも早くに位置し、そして、前記第２ステージシーケンスにおいては、前記深さテストステージは機能的に、前記テクスチャリングステージ及び前記アルファテストステージの後に位置する；
を備える、ピクセルデータを処理するためのグラフィックスパイプライン。
【請求項２２】
前記テクスチャリングステージは、テクスチャマッピングステージとテクスチャブレンディングステージとを備える、請求項２１記載のグラフィックスパイプライン。
【請求項２３】
前記グラフィックスパイプラインの少なくとも１つのステージのピクセルデータは、前記手段が前記第１及び第２のステージシーケンス間で遷移する時、フラッシュされる、請求項２１記載のグラフィックスパイプライン。
【請求項２４】
深さ値を保存する深さバッファと；
処理されたピクセルの現在の深さ値と前記深さバッファの中に保存された前の深さ値とを比較し、比較結果に基づき、前記前の深さ値に前記現在の深さ値を上書きするように書き込みコマンドを出す、深さテストステージと；
前記深さテストステージの後に前記処理されたピクセルを受け取るテクスチャリングステージと；
前記テクスチャリングステージの後に前記処理されたピクセルを受け取るアルファテストステージと；そして
深さテストステージによって出された前記書き込みコマンドの実行を一時的に延期するための書き込み延期手段と；
を備える、ピクセルデータを処理するためのグラフィックスパイプライン。
【請求項２５】
前記テクスチャリングステージは、テクスチャマッピングステージとテクスチャブレンディングステージとを備える、請求項２４記載のグラフィックスパイプライン。
【請求項２６】
処理されたピクセルの現在の深さ値とメモリの中に保存された前の深さ値とを比較することと、前記比較が前記処理されたピクセルは可視ピクセルでないことを示す時は前記処理されたピクセルを廃棄することと、そして、前記比較が前記処理されたピクセルは可視ピクセルであることを示す時は前記現在の深さ値を保存することと、を含む深さテストパイプラインステージを実行することと；そして
前記深さテストプロセスの実行の間に廃棄されなかった処理されたピクセルにテクスチャパラメータを適用することを含む、前記深さテストパイプラインステージの後の、テクスチャパイプラインステージを実行することと；
を備える、ピクセルデータを処理する方法。
【請求項２７】
処理されたピクセルの現在のアルファ値と基準アルファ値とを比較することを含む、前記テクスチャパイプラインステージの後の、アルファテストパイプラインステージを実行すること、を更に備え、なおここでは、前記深さテストパイプラインステージによって前記処理されたピクセルの前記現在の深さ値を前記保存することは、前記アルファテストパイプラインステージの実行の間、延期させられる、請求項２６記載の方法。
【請求項２８】
処理されたピクセルの現在の深さ値とメモリの中に保存された前の深さ値とを比較することと、前記比較が前記処理されたピクセルは可視ピクセルでないことを示す時は前記処理されたピクセルを廃棄することと、そして、前記比較が前記処理されたピクセルは可視ピクセルであることを示す時は前記現在の深さ値を保存することと、を含む深さテストパイプラインステージを実行することと；
処理されたピクセルにテクスチャパラメータを適用することを含む、テクスチャリングパイプラインステージを実行することと；そして
少なくとも第１及び第２のパイプラインシーケンス間のパイプラインシーケンスを動的に再配列することと；
を備え、
なおここでは、前記第１パイプラインシーケンスにおいて、前記深さテストパイプラインステージが、前記テクスチャリングパイプラインステージより前に実行され、そして、前記第２パイプラインシーケンスにおいて、前記深さテストパイプラインステージが、前記テクスチャリングステージの後に実行される、
ピクセルデータを処理する方法。
【請求項２９】
前記第２パイプラインシーケンスは、前記テクスチャリングステージの後に実行されるアルファテストパイプラインを更に含む、請求項２８記載の方法。
【請求項３０】
前記第１パイプラインシーケンスは、処理されたピクセルがアルファテストイネーブルにされていない時に実行され、そして、前記第２パイプラインシーケンスは、前記処理されたピクセルがアルファテストイネーブルにされている時に実行される、請求項２９記載の方法。
【請求項３１】
処理されたピクセルの現在の深さ値とメモリの中に保存された前の深さ値とを比較することと、前記比較が前記処理されたピクセルは可視ピクセルでないことを示す時は前記処理されたピクセルを廃棄することと、そして、前記比較が前記処理されたピクセルは可視ピクセルであることを示す時はテクスチャパラメータを前記処理されたピクセルに適用することと；
テクスチャパラメータを有する処理されたピクセルのアルファ値と基準アルファ値とを比較することと、前記処理されたピクセルの前記アルファ値が前記基準アルファ値より少ない時は前記処理されたピクセルを廃棄することと、そして、前記処理されたピクセルの前記アルファ値が前記基準アルファ値より大きい時は前記メモリの中に前記処理されたピクセルの前記現在の深さ値を保存することと：
を備えるピクセルデータを処理する方法。
【請求項３２】
前記処理されたピクセルの前記アルファ値と前記基準アルファ値との比較の結果まで、第２メモリ中に前記処理されたピクセルの前記現在の深さ値を一時的に保存すること、を備える請求項３１記載の方法。
【請求項３３】
前記第２メモリはＦＩＦＯ回路である、請求項３２記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
２００４年３月３日に出願された米国特許仮出願シリアル番号第６０／５５０，０１８号、及び、２００４年３月３日に出願された米国特許仮出願シリアル番号第６０／５５０，０２４号に対し優先権が主張され、これらの全体のコンテンツは参照によりここに組み込まれる。
【０００２】
（分野）
本発明は、一般にグラフィックスプロセッサ(graphics processors)に関連し、より詳細には、本発明は、帯域幅及び／又は電力消費を最小化するために、パイプラインの早い段階で(early in the pipeline)深さテスト(a depth test)が置かれる３Ｄグラフィックスパイプラインに関係する。
【背景技術】
【０００３】
グラフィックスエンジンは、コンピューター及びテレビジョンのスクリーンのような、固定ディスプレイ装置上に三次元（３Ｄ）画像を表示するために利用されている。これらのエンジンは、典型的には、従来のＡＣ電源コンセントによって動力が供給されたデスクトップシステムに含まれており、従って、電力消費制限によって著しく制約されることはない。最近の傾向は、然しながら、バッテリ供給型手持ち式機器(battery powered hand- held devices)の中に３Ｄグラフィックスエンジンを内蔵することである。そのような機器の例は、携帯電話及び携帯情報端末(personal data assistants)（ＰＤＡ）を含む。然しながら、残念なことに、従来のグラフィックスエンジンは、大量のパワーを消費し、従って、これらのローパワー操作環境には適していない。
【０００４】
図１は、従来の３Ｄグラフィックスエンジンに含まれるベーシックオープンＧＬラスタ化パイプライン(a basic Open GL rasterization pipeline)の概略ブロック図である。示されるように、この例のパイプラインは、トライアングルセットアップステージ(a triangle setup stage)１０１、ピクセルシェーディングステージ(a pixel shading stage)１０２、テクスチャマッピングステージ(a texture mapping stage)１０３、テクスチャブレンディングステージ(a texture blending stage)１０４、シザーテストステージ(a scissor test stage)１０５、アルファテストステージ(an alpha test stage)１０６、ステンシルテストステージ(a stencil test stage)１０７、深さテストステージ(a depth test stage)１０８、アルファブレンディングステージ(an alpha blending stage)１０９、そして論理演算ステージ(a logical operations stage)１１０を含んでいる。
【０００５】
３Ｄグラフィックシステムでは、表示される各オブジェクトは、他のプリミティブな形状(primitive shapes)が利用されることができるが、典型的には、頂点情報(vertex information)によって定義される表面三角形(surface triangles)に分割される。又、典型的には、グラフィックスパイプラインは、オブジェクト又はイメージの三角形の連続バッチ(sequential batches of triangles of an object or image)を処理するように設計されている。あるバッチの三角形は、所定のシーン内で互いに視覚的にオーバーラップするかもしれない。
【０００６】
図1を参照すると、トライアングルセットアップステージ１０１は、後のパイプラインステージによって実行される計算において使用される係数(coefficients)を計算することにより、三角形の各バッチを「セットアップする(set up)」。
【０００７】
ピクセルシェーディングステージ１０２は、処理される三角形のバッチの中でどのピクセルが各３角形によって包含されるのかを計算するために頂点情報を使用する。三角形が互いにオーバーラップするかもしれないので、異なる深さの複数のピクセル(multiple pixels)は、スクリーンディスプレイ上の同じポイントに位置するかもしれない。特に、ピクセルシェーディングステージ１０１は、頂点情報を使用して、各ピクセルのためのシェーディング（明暗値(lighting value)）、色及び深さの値に手を加える(interpolates)。
【０００８】
この目的のために、様々なシェーディング技術のうちのどれかが採用されることが出来、そして、シェーディング操作は、三角形毎に、頂点毎に、或いはピクセルベース毎に起こり得る。
【０００９】
テクスチャマッピングステージ１０３及びテクスチャブレンディングステージ１０４は、三角形のプロセスバッチの各ピクセルにテクスチャ(texture)を加え、ブレンドする(blend)ように機能する。極めて一般的には、これは、頂点情報に従ってピクセル上に予め定義された(pre-defined)テクスチャをマッピングする(mapping)ことにより行われる。シェーディングと同様に、様々な技術がテクスチャリング(texturing)を達成するために採用されることができる。又、霧処理として知られている技術が同様にインプリメントされることができる。
【００１０】
シザーテストステージ１０５は、表示されたシーンの視野のフィールドに入らない三角形の部分（破片(fragments)）の中に含まれるピクセルを廃棄する(discard)ように機能する。一般に、これは、ピクセルが所謂はさみ長方形(a so-called scissor rectangle)内にあるかどうかを判断することにより行われる。
【００１１】
アルファテストユニット１０６は、破片に関連したアルファ値（透明度値）と基準アルファ値との間の比較に基づき、三角形の破片（より正確には、破片の中に含まれるピクセル）を条件付きで廃棄する。同様に、ステンシルテストは、各破片と保存されたステンシル値との間の比較に基づき、破片を条件付で廃棄する。
【００１２】
深さテストステージ１０８（陰面消去(Hidden Surface Removal)（ＨＲＳ）とも呼ばれる）は、ピクセルの深さ値と同じディスプレイ位置を有する他のピクセルの深さ値とに基づき三角形破片の中に含まれるピクセルを廃棄する。一般に、これは、深さテストを受けるピクセルのＺ軸値（深さ値）と所謂ｚ−バッファ或いは深さバッファの対応する位置に保存されたＺ軸値とを使用して比較することにより行われる。テストされるピクセルは、もしそのＺ軸値が、ピクセルはｚ−バッファに保存されたｚ軸値を有する別のピクセルによって視界からブロックされるだろう、ということを示す場合は、廃棄される。他方では、テストされるピクセルが視界からブロックされないであろう場合は、ｚ−バッファ値は、テストされたピクセルのＺ軸値で上書きされる。このように、視界からブロックされる下に横たわるピクセル(underlying pixels)は廃棄され、上に横たわるピクセル(overlying pixels)が採用される。
【００１３】
アルファブレンディングステージ１０９は、描画されたピクセル(rendered pixels)と、オブジェクトの透明度を達成するためにアルファ値に基づきカラーバッファに以前より保存されているピクセルとを、合成する(combine)。
【００１４】
論理演算ユニット１１０は、最終的にピクセルディスプレイデータデータを得るためにパイプラインの、いろいろな残りのプロセスを総称的に(generically)表示する。
【００１５】
何れのグラフィックスシステムにおいても、満足な性能を維持する一方で可能な範囲内で、プロセッサ及びメモリ帯域幅を浪費しないこと(to conserve)が望まれる。これは、帯域幅が制限されているかもしれないポータブル又は携帯型機器(portable or hand-held devices)の場合には特にあてはまる。又、前に示唆されたように、ポータブル又は携帯型機器上のディスプレイ用の３Ｄグラフィックスを処理する時は電力消費を最小化する特別な要求が産業界にある。
【発明の開示】
【００１６】
［要約］
本発明の一面によれば、グラフィックスパイプライン(a graphics pipeline)が、ピクセルデータを処理するために提供され、入力プリミティブオブジェクトデータ(input primitive object data)からディスプレイピクセルデータを描画する(render)複数の連続して配列された処理ステージ(processing stages)を備える、なおここでは、前記処理ステージは、少なくとも1つのテクスチャリングステージ(a texturing stage)と深さテストステージ(a depth test stage)とを含み、そして、前記深さテストステージは、前記グラフィックスパイプラインにおいて前記テクスチャリングステージより早くに位置する(located earlier)。
【００１７】
本発明の別の面によれば、グラフィックスパイプラインが、ピクセルデータを処理するために提供され、入力プリミティブオブジェクトデータからディスプレイピクセルデータを描画する複数の連続して配列された処理ステージ(processing stages)を備える。前記処理ステージは、少なくとも1つのテクスチャリングステージとアルファテストステージ(an alpha test stage)と深さテストステージとを含む。更に、前記パイプラインは、処理されたピクセルデータのアルファテスト状態に従って、少なくとも第1及び第２ステージシーケンスの間に動的に再配列される(dynamically reordered)。前記第１ステージシーケンスにおいては、前記深さテストステージは機能的に、前記グラフィックスパイプラインにおいて前記テクスチャリングステージよりも早くに位置する。前記第２ステージシーケンスにおいては、前記深さテストステージは機能的に、前記テクスチャリングステージ及び前記アルファテストステージの後に位置する(located after)。
【００１８】
本発明の更に別の面によれば、グラフィックスパイプライン(a graphics pipeline)が、ピクセルデータを処理するために提供され、深さ値(depth values)を保存する深さバッファ(a depth buffer)と、処理されたピクセルの現在の深さ値(a current depth value)と前記深さバッファの中に保存された前の深さ値(a previous depth value)とを比較し、比較結果に基づき、前記前の深さ値に前記現在の深さ値を上書きするように(to overwrite)書き込みコマンド(a write command)を出す、深さテストステージ(a depth test stage)と、を含む。グラフィックスプロセッサ(the graphics processor)は、更に、深さテストステージによって出された前記書き込みコマンドを一時的に延期する(defers)書き込み延期回路(write defer circuitry)と、前記深さテストステージによる処理の後に前記処理されたピクセルを受け取るテクスチャリングステージ(a texturing stage)と、そして、前記テクスチャリングステージによる処理の後に前記処理されたピクセルを受け取るアルファテストステージ(an alpha test stage)と、を含む。前記書き込み延期回路は、前記深さテストステージによって出された前記延期された書き込みコマンドを無視するか又は実行するために、前記アルファテストステージに応答する。
【００１９】
［詳細な説明］
本発明の上記及び他の面は、添付図面を参照して、以下の詳細な説明から、容易に明らかとなるであろう。
【００２０】
本発明は、後のパイプラインステージのパワー及び帯域幅消費を最小化するために、グラフィックスパイプラインの早い段階に(early in the graphics pipeline)深さテストステージを置くことによって、少なくとも部分的に特徴づけられる。ピクセルの上に重なることによってそれらは視界から隠されるので、目に見えない(not be visible)であろうピクセルを廃棄するように、深さテストは機能する。このように、パイプライン中の初期のポジションに深さテストを移動させることによって、隠れたピクセルは、後での高帯域及びハイパワー消費のパイプラインステージによって処理する前に、廃棄される。そのようなものとして、パイプラインリソースは、廃棄されたピクセルには消費されない。
【００２１】
本発明は又、３Ｄグラフィックスパイプラインの早い段階に深さテストを位置付ける間(while positioning)にオプションとしてアルファテスト(alpha testing)に対応すること(accommodating)によって、少なくとも部分的に特徴づけられる。このことは、アルファテストがイネーブルにされているかどうかに応じてパイプラインを動的に再配列することによって、或いは、アルファテストの結果が確立されるまで深さテスト結果の書き込みを延期することによって、なされることができる。
【００２２】
さて、本発明が、いくつかの好ましい、しかし制限しない実施例によって、説明される。以下に説明される３Ｄグラフィックスパイプラインは、入力プリミティブオブジェクトデータ(input primitive object data)からのディスプレイピクセルデータを描画する(rendering)ためのものであり、適切にコンフィギュレーションされた(configured)３Ｄグラフィックスエンジンに組み入れられることが出来る。
【００２３】
図２は、本発明の第一実施例の一例による３Ｄグラフィックスパイプラインの概略ブロック図である。示されるように、パイプラインは、トライアングルセットアップステージ(a triangle setup stage)２０１、ピクセルシェーディングステージ(a pixel shading stage)２０２、シザーテストステージ２０３(a scissor test stage)、深さテストステージ(a depth test stage)２０４、テクスチャマッピングステージ(a texture mapping stage)２０５、テクスチャブレンディングステージ(a texture blending stage)２０６、アルファブレンディングステージ(an alpha blending stage)２０７、そして、論理演算ステージ(a logical operations stage)２０８を含む。
【００２４】
図２の中で示される夫々のパイプラインステージの動作は、図1オープンＧＬのコンフィギュレーションに関連して前に説明されたものと同じであり得、従って、各ステージの詳細な説明は、冗長を避けるためにここでは省略される。然しながら、図２の中で示されるように、深さテストステージ２０４は、パイプラインの早い段階に、特に、テクスチャマッピングステージ２０５の前に、位置される。
【００２５】
図２のコンフィグレーションによれば、深さテストは、最終的には目に見えないピクセルに関連したメモリ帯域幅及びパワーを節約するために、パイプラインの中で出来るだけ早くに行われる。言いかえれば、帯域幅とパワーは、表示されたイメージの中で最終的に描画されないピクセルに関しては浪費されない。これは特に、ポータブル又は携帯機器上で表示するために３Ｄグラフィックスを処理する時に、好都合である。
【００２６】
図２の例の実施例は、アルファテストを含んでいない。これは、アルファテストが、テクスチャブレンディングが生じた後まで計算されることができないピクセル用のアルファ値を必要とし、又、ピクセルの深さテストが、ピクセルが透明度閾値を越えることをアルファテストが確認するまで生じない、からである。従って、図２の例においては、深さテストは、帯域幅とパワー消費を最小化するためにテクスチャマッピングステージに先立って、しかし、パイプラインの中にアルファテストステージを持っていないことを犠牲にして位置する。本発明の残りの実施例は、パイプラインの中において深さテストステージの早い段階の位置にもかかわらずアルファテストが接続されている(accommodated)コンフィギュレーションを対象としている。
【００２７】
図３は、本発明の第二実施例の一例によるグラフィックスパイプラインの概略ブロック図である。示されるように、パイプラインは、トライアングルセットアップステージ３０１、ピクセルシェーディングステージ３０２、シザーテストステージ３０３、第1深さテストステージ３０４、テクスチャマッピングステージ３０５、テクスチャブレンディングステージ３０６、アルファテストステージ３０７、第２深さテストステージ３０８、アルファブレンディングステージ３０９、そして論理演算ステージ３１０を含む。
【００２８】
図３の中で示される夫々のパイプラインステージのピクセル動作は、一般に、図１のオープンＧＬコンフィギュレーションに関連して前に説明されたものと同じであり得、従って、各ステージの詳細な説明は、冗長を避けるため、ここでは省略される。然しながら、図３の中で示されるように、第１深さテストステージ３０４は、パイプラインの早い段階に、特に、テクスチャマッピングステージ３０５の前に、置かれ、そして、第２深さテストステージ３０８は、アルファテストステージ３０７とアルファブレンディングステージ３０９との間に位置する。
【００２９】
図３のパイプラインのステージの操作順序(the operational sequence)は、アルファテストが処理されているピクセルのためにイネーブルにされているかどうかに依存して、動的に再配列(reorder)される。すなわち、アルファテストがイネーブルにされない場合は、図３の参照「ａ」によって示されるように、パイプラインは次のとおり進行する:トライアングルセットアップステージ３０１→ピクセルシェーディングステージ３０２→シザーテストステージ３０３→深さテストステージ３０４→テクスチャマッピングステージ３０５→テクスチャブレンディングステージ３０６→アルファブレンディングステージ３０９→論理演算ステージ３１０。
【００３０】
ピクセルに対し、アルファテストがイネーブルにされる場合は、図３の参照「ｂ」によって示されるように、ステージは次のとおり進行する：トライアングルセットアップステージ３０１→ピクセルシェーディングステージ３０２→シザーテストステージ３０３→テクスチャマッピングステージ３０５→テクスチャブレンディングステージ３０６→→アルファテストステージ３０７→深さテストステージ３０８→アルファブレンディングステージ３０９→論理演算ステージ３１０。
【００３１】
一般に、グラフィックスパイプラインは、ピクセルデータと共にパイプラインをシフトダウンされる(shifted down)コントロールビットを含む。それらのコントロールビットのうちの１つはアルファテストビットである。又一般に、三角形のバッチ(a batch of triangle)がパイプラインに適用される時、バッチの各三角形は、同じアルファテストセッティングを持つであろう。
【００３２】
アルファテストは最初にディスエーブルにされていると仮定する、従って、図３のパイプラインは、第1深さテスト３０４が実行されるように、そして、アルファテスト３０７及び第２深さテスト３０８がバイパスされるように、参照「ａ」に従って配列されている。パイプラインの中でアルファテストがイネーブルにされるのを示すアルファテストビットが次に検知される、と更に仮定する。その時、データのローカルフラッシュ(local flush)が深さテスト３０４からテクスチャブレンディングステージ３０６まで実行され、第１深さテストがバイパスされ、そしてアルファテスト３０７及び第２深さ３０８が活性化される（バイパスされない）。このように、図３の参照「ｂ」の配列が達成される。最終的に、アルファテストがディスエーブルされることをアルファテストビットが示す時、パイプラインは、参照「ａ」の配列に再整理し戻される。
【００３３】
図４は、本発明の第三実施例の一例によるグラフィックスパイプラインの概略ブロック図である。示されるように、パイプラインは、トライアングルセットアップステージ４０１、ピクセルシェーディングステージ４０２、シザーテストステージ４０３、第１マルチプレクサ４０４、深さテストステージ４０４、第２マルチプレクサ４０６、テクスチャマッピングステージ４０７、テクスチャブレンディングステージ４０８、アルファテストステージ４０９、第３マルチプレクサ４１０、アルファブレンディングステージ４１１、そして論理演算ステージ４１２を含んでいる。
【００３４】
図４の中で示される夫々のパイプラインステージのピクセル動作は、一般に、図１のオープンＧＬコンフィギュレーションに関連して前に説明されたものと同じであり得、従って、各ステージの詳細な説明は冗長を避けるためにここでは省略される。然しながら、図４の中で示されるように、深さテストステージ４０５が、パイプライン早期の段階に、特に、テクスチャマッピングステージ４０７の前に、置かれ、そして、マルチプレクサ４０４、４０６及び４１０が、必要な時にアルファテストに対応するためにパイプラインの動的再整理を可能にするように採用される。
【００３５】
図４の条件「ＡＴ＝０」は、処理されているピクセルに対しアルファテストがディスエーブルされる状態を示す。その場合、マルチプレクサ４０４は、シザーテストステージ４０３からのアウトプットを選択し、同じものを深さテストステージ４０５に適用する；マルチプレクサ４０６は、深さテストステージ４０５からアウトプットを選択し、同じものをテクスチャマッピングステージ４０７に適用する；そして、マルチプレクサ４１０は、テクスチャブレンディングステージ４０８からアウトプットを選択し、同じものをアルファブレンディングステージ４１１に適用する。従って、ＡＴ＝０の時、パイプラインシーケンスは次のとおりである：トライアングルセットアップステージ４０１→ピクセルシェーディングステージ４０２→シザーテストステージ４０３→深さテストステージ４０５→テクスチャマッピングステージ４０７→テクスチャブレンディングステージ４０８→アルファブレンディングステージ４１１→論理演算ステージ４１２。
【００３６】
ＡＴ≠０のとき、処理されているピクセルに対しアルファテストがイネーブルにされる。その場合、マルチプレクサ４０４は、アルファテストステージ４０９からのアウトプットを選択し、同じものを深さテストステージ４０５に適用する；マルチプレクサ４０６は、シザーテストステージ４０３からのアウトプットを選択し、同じものをテクスチャマッピングステージ４０７に適用する；そして、マルチプレクサ４１０は、深さテストステージ４０５からのアウトプットを選択し、同じものをアルファブレンディングステージ４１１に適用する。従って、ＡＴ≠０の時、パイプラインシーケンスは次のとおりである：トライアングルセットアップステージ４０１→ピクセルシェーディングステージ４０２→シザーテストステージ４０３→テクスチャマッピングステージ４０７→テクスチャブレンディングステージ４０８→アルファテストステージ４０９→深さテストステージ→アルファブレンディングステージ４１１→論理演算ステージ４１２。
【００３７】
図３及び４の実施例の各々においては、３Ｄグラフィックスパイプラインは、アルファテストがイネーブルされているかどうかに依存して再配列される。もしアルファテストがイネーブルである場合、アルファテスト結果は深さテストより前に必要とされるので、そのとき深さテストステージは機能的にアルファテストステージの後に位置する。
【００３８】
もしアルファテストがディスエーブルされる場合、パイプラインの早い段階で不可視ピクセル(non-visible)を除去するため、そのときは深さテストステージは機能的にテクスタマッピングステージの前に位置し、それによって、パワーと帯域幅とは浪費されない。
【００３９】
図５は、本発明の別の実施例の一例の概略ブロック図である。図３及び４の実施例のように、図５のコンフィギュレーションは、同時にパイプラインの早い段階に深さテストステージを位置づける間にアルファテストに対応することが可能である。
【００４０】
図５において図示されているのは、深さテスト（ＨＳＲ）ステージ５０１、テクスチャマッピングステージ５０２、テクスチャリングステージ５０３、アルファステージ５０４、ＦＩＦＯ回路５０５、深さバッファインタフェース５０６、そして深さバッファ５０７である。深さテストステージ５０１、テクスチャマッピングステージ５０２、テクスチャリングステージ５０３及びアルファステージ５０４は、３Ｄグラフィックスエンジンのグラフィックスパイプラインの部分を形成する。
【００４１】
作動中、処理されたピクセルは、パイプライン経由で深さテストステージ５０１に到着し、そして、ピクセルのＺ軸値（深さ値）が、深さバッファ５０７の対応する位置に保存されているＺ軸値と比較される。これは、読み出しアドレス［ａｄｄｒ＿ｒ（１４：０）］を深さバッファ５０７にバッファインタフェース５０６経由で伝送(transmit)することによって、そして、深さバッファ５０７に保存された深さバッファｚ軸値［ｄｅｐｔｈ＿ｒ（１５：０）］を受け取ることによって、なされる。ピクセルのＺ軸値と深さバッファのＺ軸値とが比較され、もし比較結果がピクセルは目に見えないであろうことを示す場合、ピクセルは有効に廃棄される。他方、もし比較結果がピクセルは目に見えるであろうことを示す場合、延期されたバッファ書き込みプロセス(a deferred buffer write process)が、以下に説明されるように実行される。
【００４２】
ＦＩＦＯ回路５０５が信号［ｆｉｆｏ＿ｆｕｌｌ］によって示されるようにフルでない(not full)と仮定すれば、延期されたバッファ書き込みプロセスは、ＦＩＦＯ書き込みコマンド［ｆｉｆｏ＿ｗｒｉｔｅ］を出すことによって、そしてその後、バッファ書き込みアドレス信号［ａｄｄｒ＿ｗ（１４：０）、新しいピクセルＺ軸値［ｄｅｐｔｈ＿ｗ（１５：０）、そしてアルファテスト信号［ａｌｐｈａ＿ｔｅｓｔ］をＦＩＦＯ回路５０５に書き込むことによって、実行される。バッファ書き込みアドレス信号［ａｄｄｒ＿ｗ（１４：０）は、処理されたピクセルの深さバッファ５０７の対応する位置を示す。新しいピクセルｚ軸値［ｄｅｐｔｈ＿ｗ（１５：０）は、処理されたピクセルのＺ軸値である（それは深さテストに合格した）。アルファテスト信号［ａｌｐｈａ＿ｔｅｓｔ］は、アルファテストが処理されたピクセルに対しイネーブルにされているかどうかを示す。
【００４３】
バッファ書き込みアドレス信号［ａｄｄｒ＿ｗ（１４：０）］、新しいピクセルＺ軸値［ｄｅｐｔｈ＿ｗ（１５：０）］、そしてアルファテスト信号［ａｌｐｈａ＿ｔｅｓｔ］が、ＦＩＦＯ回路５０５を通してシフトされるので、処理されたピクセルは、同時に、テクステクスチャリングマッピングステージ５０２及びテクスチャリングステージ５０３夫々によるテクスチャマッピング(texture mapping)及びテクスチャリング(texturing)の支配下にある。ＦＩＦＯ回路５０５の深さ「ｎ」は、好ましくは、深さテストステージ５０１とアルファテストステージ５０４との間に置かれたパイプラインステージのピクセル容量の合計に等しい。この実施例においては、ＦＩＦＯ回路５０５の深さは、テクスチャマッピングステージ５０２とテクスチャリングステージ５０３とのピクセル容量の合計と等しい。結果として、ピクセルは、テクスチャマッピングステージ５０２及びテクスチャリングステージ５０３によるピクセルの処理と同時に起こるタイミングでＦＩＦＯ回路５０５の終わりの中に入り込む(have worked its way to the end)であろう。
【００４４】
テクスチャマッピング及びテクスチャリングの後、処理されたピクセルは、そのあとアルファテストステージ５０４に適用される。この時、ピクセルは、アルファテストイネーブルにされている(alpha test enabled)か、又はアルファテストイネーブルにされていないかのいずれかである。
【００４５】
もしピクセルがアルファテストイネーブルにされていない場合は、ピクセルは、更なる処理のためにパイプライン下流に伝送される(transmitted down the pipeline)、そして、［ｖａｌｉｄ＿ｐｉｘｅｌ］信号は、深さバッファインタフェース５０６に伝送される。ＦＩＦＯ回路５０５が信号［ｆｉｆｏ＿ｅｍｐｔｙ］によって示されるように空きでない(not empty)と仮定すれば、深さバッファインタフェースは、リードコマンド［ｆｉｆｏ＿ｒｅａｄ］をＦＩＦＯ回路５０５に出すために、又、バッファ書き込みアドレス信号［ａｄｄｒ＿ｗ（１４：０）］、新しいピクセルＺ軸値［ｄｅｐｔｈ＿ｗ（１５：０）］及びアルファテスト信号［ａｌｐｈａ＿ｔｅｓｔ］を読むために、［ｖａｌｉｄ＿ｐｉｘｅｌ］信号に応答する。深さバッファインタフェース５０６は、そのあと、アドレス［ａｄｄｒ＿ｗ（１４：０）］で深さバッファ５０７をアドレス指定することによって、又、新しいピクセルＺ軸値［ｄｅｐｔｈ＿ｗ（１５：０）］を深さバッファ５０７に上書きすること(overwriting the new pixel z-axis value into the depth buffer)によって、深さバッファ５０７を更新する。
【００４６】
もしピクセルがアルファテストイネーブルにされている場合は、アルファテストステージ５０４は、処理されたピクセルのアルファ値と基準値とを比較する。もしピクセルがアルファテストに合格する場合、［ａｌｐｈａ＿ｐａｓｓ］信号は深さバッファインタフェース５０６に伝送され、そしてピクセルは、更なる処理のためにパイプライン下流に伝送される。ピクセルがアルファテストに失敗する場合、［ａｌｐｈａ＿ｆａｉｌ］信号が深さバッファインタフェース５０６に伝送され、そして、ピクセルは有効に廃棄される。
【００４７】
再び、ＦＩＦＯ回路５０５が信号［ｆｉｆｏ＿ｅｍｐｔｙ］によって示されるように空きでないと仮定すれば、深さバッファインタフェースは、リードコマンド［ｆｉｆｏ＿ｒｅａｄ］をＦＩＦＯ回路５０５に出すために、又、バッファ書き込みアドレス信号［ａｄｄｒ＿ｗ（１４：０）］、新しいピクセルＺ軸値［ｄｅｐｔｈ＿ｗ（１５：０）］及びアルファイネーブル信号［ａｌｐｈａ＿ｔｅｓｔ］を読むために、［ａｌｐｈａ＿ｐａｓｓ］及び［ａｌｐｈａ＿ｆａｉｌ］信号に応答する。もし［ａｌｐｈａ＿ｆａｉｌ］信号がアクティブである(active)場合は、深さバッファインタフェース５０６は、新しいピクセルＺ軸値［ｄｅｐｔｈ＿ｗ（１５：０）］で深さバッファ５０７を更新しない。他方、もし［ａｌｐｈａ＿ｐａｓｓ］信号がアクティブである場合は、深さバッファインタフェース５０６は深さバッファ５０７を更新する。すなわち、深さバッファインタフェースはアドレス［ａｄｄｒ＿ｗ（１４：０）］で深さバッファ５０７をアドレスし、そして、新しいピクセルＺ軸値を深さバッファ５０７に上書きする。
【００４８】
図５に関係して上記に説明されたインプリメンテーションは、深さテストの結果を一時的に保存する回路（例、ＦＩＦＯ回路）を含む。新しいピクセルに関連したアルファテストの結果が利用出来るまで、新しいＺ軸値の深さバッファの中への実際の書込みは延期される。もしアルファテストが合格する場合は、新しいピクセルの新しいＺ軸値は、深さバッファの中に保存される。もしアルファテストが失敗する場合は、それはそうではない。もしアルファテストがない場合は、新しいＺ軸値は、直ちに、但し待ち状態の(pending)アルファテストを有する何れのＺ軸値も書かれた後にのみに、書かれることが出来る。［ａｌｐｈａ＿ｔｅｓｔ］信号は、この目的のために使用されることができる。すなわち、もし全ての待ち状態のｚ軸値結果がアルファテストを示さない場合は、深さバッファインタフェースは、ＦＩＦＯ回路５０５を直ちに読み、そしてそれに応じ深さバッファ５０７を更新するように、コンフィギュレーションされることができる。
【００４９】
図５の実施例においてのように、アルファテストの出力が出るまで、深さバッファを更新することを延期することによって、深さテストステージは、不可視ピクセルの後での処理を回避するためにパイプライン早めの段階に位置されることが出来る。
【００５０】
図面及び明細書においては、本発明の典型的な好ましい実施例が開示されており、特定の例が記載されているが、それらは、包括的及び説明的な意味のみにおいて使用されており、制限の目的のためではない。従って、本発明の範囲は、例示的な実施例によってではなく、添付された特許請求の範囲によって解釈されるべきである、ということが理解されるべきである。
【図面の簡単な説明】
【００５１】
【図１】図１は、３Ｄグラフィックスエンジンに含まれるベーシックオープンＧＬラスタ化パイプラインの一例の概略ブロック図である。
【図２】図２は、本発明の第一実施例の一例による３Ｄグラフィックスパイプラインの概略ブロック図である
【図３】図３は、本発明の第二実施例の一例による３Ｄグラフィックスパイプラインの概略ブロック図である。
【図４】図４は、本発明の第三実施例の一例による３Ｄグラフィックスパイプラインの概略ブロック図である。
【図５】図５は、本発明の第四実施例の一例による３Ｄグラフィックスパイプラインの概略ブロック図である。
【図１】
2007526585.tif 000003
【図２】
2007526585.tif 000004
【図３】
2007526585.tif 000005
【図４】
2007526585.tif 000006
【図５】
2007526585.tif 000007
【国際調査報告】
2007526585.tif 000008
2007526585.tif 000009
2007526585.tif 000010
2007526585.tif 000011