(57)【要約】【課題】タイル化されたプリフェッチ及びキャッシングされたデプスバッファ【解決手段】  ３Ｄグラフィックスパイプラインは、深さタイルのキャッシュを供給するプリフェッチメカニズムを含む。前記プリフェッチメカニズムは、予測的で、前のパイプライン段階からの三角形幾何情報を用いて前記キャッシュに予め装填することができ、それによってメモリ帯域幅効率の向上を可能にすることができる。電力消費量のさらなる低減及びメモリ帯域幅を考慮してｚ値圧縮技術をオプションで利用可能である。【選択図】図５
2008533628.tif 000002
【特許請求の範囲】
【請求項１】
入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を具備するラスター化パイプラインと、
前記ラスター化パイプラインの前記処理段階のうちの少なくとも１つによって利用されるデータを格納するメモリと、
処理された画素が前記少なくとも１つの処理段階に到着する前に前記処理された画素に関して前記少なくとも１つの処理段階によって利用されるデータを取り出すプリフェッチメカニズムと、を具備するグラフィックスプロセッサ。
【請求項２】
前記取り出されたデータは、前記ラスター化パイプラインの前記処理段階の前記少なくとも１つのキャッシュメモリに格納される請求項１に記載のグラフィックスプロセッサ。
【請求項３】
入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を具備するラスター化パイプラインであって、前記処理段階は、隠面除去（ＨＳＲ）段階を含むラスター化パイプラインと、
前記ラスター化パイプラインのＨＳＲ段階によって利用されるデータを格納するデプスバッファと、
処理された画素が前記ラスター化パイプラインを通じて前記ＨＳＲ段階に到着する前に前記処理された画素に関して前記ＨＳＲによって利用される前記データを前記デプスバッファから取り出すプリフェッチメカニズムと、を具備するグラフィックスプロセッサ。
【請求項４】
前記取り出されたデータは、前記ラスター化パイプラインの前記ＨＳＲ段階のキャッシュメモリに格納される請求項３に記載のグラフィックスプロセッサ。
【請求項５】
入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を具備するラスター化パイプラインであって、処理段階は隠面除去（ＨＳＲ）段階を含むラスター化パイプラインと、
二次元画素タイルの深さ値を格納するデプスバッファと、
処理された画素を含む前記二次元画素タイルのタイルアドレスを生成するタイルアドレス生成器と、
前記ラスター化プロセッサの前記ＨＳＲ段階に結合されたキャッシュメモリと、
前記タイルアドレスに応じて前記二次元画素タイルの前記深さ値を前記デプスバッファから取り出し及び前記深さ値を前記キャッシュメモリに格納するメモリコントローラと、を具備するグラフィックスプロセッサ。
【請求項６】
前記デプスバッファは、階層的デプスバッファである請求項５に記載のグラフィックスプロセッサ。
【請求項７】
入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を具備するラスター化パイプラインと、
画素データが前記ラスター化パイプラインを通じて前記処理段階のうちの少なくとも１つに到着する前に主メモリからデータをプリフェッチして前記データを前記少なくとも１つの処理段階に供給するための手段と、を具備するグラフィックスプロセッサ。
【請求項８】
前記少なくとも１つの処理段階は、隠面除去（ＨＳＲ）段階である請求項７に記載のグラフィックスプロセッサ。
【請求項９】
前記手段は、前記主メモリからの前記データを格納し及び前記ＨＳＲに結合されたキャッシュメモリを具備する請求項８に記載のグラフィックスプロセス。
【請求項１０】
入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を具備するラスター化パイプラインであって、処理段階は、隠面除去（ＨＳＲ）段階を含むラスター化パイプラインと、
二次元画素タイルの深さ値を格納する階層的デプスバッファと、
前記ＨＳＲ段階に結合されており及び前記二次元画素タイルの前記深さ値の最大深さ値及び最小深さ値を格納するランダムアクセスキャッシュメモリと、
処理された画素を含む前記二次元画素タイルのタイルアドレスを生成するタイルアドレス生成器と、
前記タイルアドレスに応じて前記二次元画素タイルの前記深さ値を前記デプスバッファから取り出し及び前記深さ値を前記キャッシュメモリに格納するメモリコントローラと、を具備するグラフィックスプロセッサ。
【請求項１１】
処理された画素の深さ値を前記処理された画素を含むタイルの最小深さ値及び最大深さ値と比較するタイル試験ブロックをさらに具備する請求項１０に記載のグラフィックスプロセッサ。
【請求項１２】
前記タイル試験ブロックは、前記処理された画素の前記深さ値が前記プロセス画素を含む前記タイルの前記最小深さ値よりも小さい場合は前記処理された画素を捨てるために動作可能である請求項１１に記載のグラフィックスプロセッサ。
【請求項１３】
前記タイル試験ブロックは、前記処理された画素の前記深さ値が前記処理された画素を含む前記タイルの前記最大深さ値よりも大きい場合は前記キャッシュメモリを更新するために動作可能である請求項１１に記載のグラフィックスプロセッサ。
【請求項１４】
前記処理された画素の前記深さ値を前記キャッシュメモリに格納されている前に格納された深さ値と比較する画素試験ブロックをさらに具備する請求項１３に記載のグラフィックスプロセッサ。
【請求項１５】
前記タイル試験ブロックは、前記処理された画素の前記深さ値が前記プロセス画素を含む前記タイルの前記最小深さ値と最大深さ値の間にある場合は前記画素試験ブロックをイネーブルにするために動作可能である請求項１４に記載のグラフィックスプロセッサ。
【請求項１６】
前記処理された画素と関連するプリミティブオブジェクトデータに基づいてタイル情報を生成するタイルインデックス予測器ブロックと、前記タイルインデックス予測器ブロックによって生成された前記タイル情報に基づいてタイルの深さ値を取り出すプリフェッチ論理ブロックと、をさらに具備する請求項１０に記載のグラフィックスプロセス。
【請求項１７】
入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を具備するするラスター化パイプラインであって、前記処理段階は、隠面除去（ＨＳＲ）段階を含むラスター化パイプラインと、
前記ラスター化パイプラインによってレンダリングされた前記画素データと関連する深さ値データの二次元画素タイルを具備するデプスバッファと、を具備し、前記プリミティブオブジェクトデータは、プリミティブ形状を示し、二次元タイルの前記深さ値データは、前記二次元タイルが処理された画素を含む前記プリミティブ形状内に完全に含まれている場合に圧縮される、グラフィックスプロセッサ。
【請求項１８】
前記プリミティブ形状は、三角形である請求項１７に記載のグラフィックスプロセッサ。
【請求項１９】
前記二次元タイルは、４×４の画素タイルである請求項１８に記載のグラフィックスプロセッサ。
【請求項２０】
前記深さ値データは、前記二次元タイルの前記深さ値の相対値を記述する方程式の係数を格納することによって圧縮される請求項１７に記載のグラフィックスプロセッサ。
【請求項２１】
前記方程式は、線形方程式である請求項２０に記載のグラフィックスプロセッサ。
【請求項２２】
入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を含むラスター化パイプラインにプリミティブオブジェクトデータを供給することと、
前記ラスター化パイプラインの前記処理段階のうちの少なくとも１つによって利用されるデータをメモリに格納することと、
処理された画素が前記少なくとも１つの処理段階に到着する前に前記処理された画素に関して前記少なくとも１つの処理段階によって利用される前記データを前記メモリからプリフェッチすること、とを具備するグラフィックス処理方法。
【請求項２３】
前記ラスター化パイプラインの前記処理段階のうちの前記少なくとも１つのキャッシュメモリに前記取り出されたデータを格納することをさらに具備する請求項２２に記載の方法。
【請求項２４】
前記少なくとも１つの処理段階は、隠面除去（ＨＳＲ）段階である請求項２３に記載の方法。
【請求項２５】
処理された画素の深さ値を前記処理された画素を含む二次元タイルの最小深さ値及び最大深さ値と比較するタイル試験を実行することをさらに具備する請求項２４に記載のグラフィックスプロセッサ。
【請求項２６】
前記タイル試験は、前記処理された画素の前記深さ値が前記処理された画素を含む前記タイルの前記最大深さ値よりも大きい場合は前記キャッシュメモリを更新することを含む請求項２５に記載のグラフィックスプロセッサ。
【請求項２７】
前記処理された画素の前記深さ値を前記キャッシュメモリに格納されている前に格納された深さ値と比較する画素試験を選択的に実行することをさらに具備する請求項２６に記載のグラフィックスプロセッサ。
【請求項２８】
前記タイル試験は、前記処理された画素の前記深さ値が前記プロセス画素を含む前記タイルの前記最小深さ値及び最大深さ値の間にある場合は前記画素試験をイネーブルにすることを含む請求項２７に記載のグラフィックスプロセッサ。
【請求項２９】
前記プロセス画素と関連するプリミティブオブジェクトデータに基づいてタイル情報を生成することと、前記タイル情報に基づいてタイルの深さ値をプリフェッチすること、とをさらに具備する請求項２２に記載のグラフィックスプロセス。
【請求項３０】
入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を含むラスター化パイプラインにプリミティブオブジェクトデータを供給することであって、前記処理段階は、隠面除去（ＨＳＲ）段階を含むことと、
デプスバッファ内の深さ値データの二次元タイルを選択的に圧縮すること、とを具備し、前記プリミティブオブジェクトデータは、プリミティブ形状を示し、二次元タイルの前記深さ値データは、前記二次元タイルが処理された画素を含む前記プリミティブ形状内に完全に含まれているときに圧縮される、グラフィックス処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般的には、グラフィックスプロセッサに関するものである。本開示は、より具体的には、グラフィックスプロセッサに含まれている３Ｄグラフィックスパイプラインに関するものである。
【背景技術】
【０００２】
コンピュータ及びテレビの画面等の固定された表示装置上に三次元（３Ｄ）画像を表示するためにグラフィックスエンジンが利用されている。これらのエンジンは、典型的には、従来のＡＣ電源コンセントを電源とするデスクトップシステムに含められており、従って、電力消費上の制限によって有意な制約を受けない。しかしながら、３Ｄグラフィックスエンジンを電池式ハンドヘルドデバイス内に組み込むのが最近の傾向である。該デバイスの例は、携帯電話及びデータアシスタント（ＰＤＡ）を含む。しかしながら、残念なことに、従来のグラフィックスエンジンは、大量の電力を消費し、従ってこれらの低電力動作環境にはあまり適していない。
【０００３】
図１は、従来のグラフィックスエンジンに含められた基本的なオープンＧＬラスター化パイプラインの概略図である。示されるように、この例のラスター化パイプラインは、三角形セットアップ段階１０１と、画素シェーディング段階１０２と、テクスチャマッピング段階１０３と、テクスチャブレンド段階１０４と、シザー試験段階１０５と、アルファ試験段階１０６と、ステンシル試験段階１０７と、隠面除去（ＨＳＲ）段階１０８と、アルファブレンド段階１０９と、論理演算段階１１０と、を含む。
【０００４】
３Ｄグラフィックシステムにおいては、表示される各オブジェクトは、典型的には、頂点情報によって定義された表面三角形に分割されるが、その他のプリミティブ形状も利用可能である。同じく典型的には、グラフィックスパイプラインは、オブジェクト又は画像の三角形の順次バッチを処理するように設計される。いずれかの所定のバッチの三角形は、ビジュアル的に他のバッチの三角形に重なることができ、さらに所定のバッチ内の三角形が互いに重なることも可能である。
【０００５】
図１に関して、三角形セットアップ段階１０１は、後続するパイプライン段階によって行われる計算において用いられるセットアップ係数を計算することによって各三角形を「セットアップする」。
【０００６】
画素シェーディング段階１０２は、どの画素が各三角形によって包含されているかを計算するためにセットアップ係数を用いる。三角形は互いに重なることが可能であるため、異なる深さの複数の画素を画面ディスプレイ上の同じ箇所に配置することができる。特に、画素シェーディング段階１０１は、頂点情報を用いて各画素に関する色、フォッグ、深さ値、テクスチャ座標、アルファ値等を内挿する。様々なシェーディング技術のうちのいずれかをこの目的のために採用することができ、シェーディング動作は、１つの三角形ごとに又は１つの画素ごとに行うことが可能である。
【０００７】
テクスチャマッピング段階１０３及びテクスチャブレンド段階１０４は、三角形のプロセスバッチの各画素内にテクスチャを加えてブレンドする機能を有する。非常に一般的には、この機能は、予め定義されたテクスチャを頂点情報内に含められているテクスチャ座標に従って画素上にマッピングすることによって行われる。シェーディングと同様に、テクスチャリングを達成させるために様々な技術を採用することができる。さらに、フォッグ処理と呼ばれる技術も実装することができる。
【０００８】
シザー試験段階１０５は、表示されたシーンの視野外にある三角形部分（フラグメント）に含まれている画素を捨てる機能を有する。一般的には、この機能は、画像がいわゆるシザー三角形内にあるかどうかを決定することによって行われる。
【０００９】
アルファ試験装置１０６は、三角形のフラグメント（より正確には、フラグメントに含まれている画素）を、フラグメントと関連するアルファ値と基準アルファ値を比較することに基づいて条件付きで捨てる。同様に、ステンシル試験は、各フラグメントと格納されたステンシル値を比較することに基づいて条件付きでフラグメントを捨てる。
【００１０】
ＨＳＲ段階１０８（深さ試験段階とも呼ばれる）は、同じ表示場所を有するその他の画素の深さ値に基づいて三角形フラグメントに含まれている画素を捨てる。一般的には、このことは、深さ試験を実施中の画素のｚ軸値（深さ値）を、いわゆるｚバッファ（又はデプスバッファ）の対応する記憶場所に格納されたｚ軸値と比較することによって行われる。試験された画素は、そのｚ軸値が、ｚバッファに格納されたｚ軸値を有する他の画素によって該当する画素を遮蔽するように指示する場合に捨てられる。他方、試験された画素が遮蔽されない場合は、ｚバッファ値は試験された画素のｚ軸値によって上書きされる。この方法により、上方に存在する画素を優先させて遮蔽された下方に存在する画素が捨てられる。
【００１１】
アルファブレンド段階１０９は、オブジェクトの透明性を達成せるためのアルファ値に基づいて、レンダリングされた画素を色バッファ内の前に格納された画素と混合させる。
【００１２】
論理演算装置１１０は、一般的には、画素表示データを究極的に得るためのパイプラインの残りの種々のプロセスを表示する。
【００１３】
いずれのグラフィックスシステムにおいても、最低限の条件を満たした性能を維持しながらプロセッサ及びメモリの帯域幅を可能な範囲で保存することが望まれる。このことは、帯域幅が限られているポータブルデバイス又はハンドヘルドデバイスの場合に特に当てはまる。さらに、上述されるように、当業においては、３Ｄグラフィックスをポータブルデバイス又はハンドヘルドデバイス上に表示するために処理時に電力消費量を最小にして帯域幅効率を向上させることが特に要求される。
【発明の開示】
【発明の概要】
【００１４】
本開示の実施形態の一側面により、入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を含むラタスー化パイプラインを含むグラフィックスプロセッサが提供される。前記プロセッサは、前記ラスター化パイプラインの前記処理段階のうちの少なくとも１つによって利用されるデータを格納するメモリと、処理された画素が前記少なくとも１つの処理段階に到着する前に前記処理された画素に関して前記少なくとも１つの処理段階によって利用される前記データを取り出すプリフェッチメカニズムと、をさらに含む。
【００１５】
本開示の実施形態のさらに他の側面により、入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を含むラスター化パイプラインを含むグラフィックスプロセッサが提供され、前記処理段階は、隠面除去（ＨＳＲ）段階を含む。前記プロセッサは、前にレンダリングされた画素の前記深さ値を格納するデプスバッファと、前記前にレンダリングされた画素の前記深さ値を取り出すメモリコントローラと、前記パイプラインのＨＳＲ段階に結合されて前記メモリコントローラによって取り出された前記深さ値を格納するキャッシュメモリと、をさらに含む。
【００１６】
本開示の実施形態のさらに他の側面により、入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を含むラスター化パイプラインを含むグラフィックスプロセッサが提供され、前記処理段階は、隠面除去（ＨＳＲ）段階を含む。前記プロセッサは、二次元画素ブロックの深さ値を格納するデプスバッファと、処理された画素を含む前記二次元画素ブロックのブロックアドレスを生成するブロックアドレス生成器と、前記ラスター化プロセッサの前記ＨＳＲ段階に結合されたキャッシュメモリと、前記ブロックアドレスに応じて前記二次元画素ブロックの前記深さ値を前記デプスバッファから取り出し、前記深さ値を前記キャッシュメモリに格納するメモリコントローラと、をさらに含む。
【００１７】
本開示の実施形態のさらに他の側面により、入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を含むラスター化パイプラインと、画素データが前記ラスター化パイプラインを通じて前記処理段階のうちの少なくとも１つに到着する前に主メモリからデータをプリフェッチして前記データを前記少なくとも１つの処理段階に供給するための手段と、を含むグラフィックスプロセッサが提供される。
【００１８】
本開示の実施形態のさらに他の側面により、入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を含むラスター化パイプラインを含むグラフィックスプロセッサが提供され、前記処理段階は、隠面除去（ＨＳＲ）段階を含む。前記プロセッサは、二次元画素ブロックの深さ値を格納する階層的デプスバッファと、前記ＨＳＲ段階に結合されて前記二次元画素ブロックの前記深さ値のうちの最大深さ値及び最小深さ値を格納するランダムアクセスメモリと、処理された画素を含む前記二次元画素ブロックのブロックアドレスを生成するブロックアドレス生成器と、前記ラスター化プロセッサの前記ＨＳＲ段階に結合されたキャッシュメモリと、前記ブロックアドレスに応じて前記二次元画素ブロックの前記深さ値を前記デプスバッファから取り出して前記深さ値を前記キャッシュメモリに格納するメモリコントローラと、をさらに含む。
【００１９】
本開示の実施形態のさらに他の側面により、入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を含むラスター化パイプラインを含むグラフィックスプロセッサが提供され、前記処理段階は、隠面除去（ＨＳＲ）段階を含む。前記プロセッサは、前記ラスター化パイプラインによってレンダリングされた前記画素データと関連する二次元深さ値ブロックを含むデプスバッファをさらに含み、前記プリミティブオブジェクトデータは、プリミティブ形状を示し、二次元ブロックが処理された画素を含む前記プリミティブ形状内に完全に入っている場合は前記二次元ブロックの深さ値データが圧縮される。
【００２０】
本開示の実施形態のさらに他の側面により、入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を含むラスター化パイプラインにプリミティブオブジェクトデータを供給することと、前記ラスター化パイプラインの前記処理段階のうちの少なくとも１つによって利用されたデータをメモリに格納することと、処理された画素が前記少なくとも１つの処理段階に到着する前に前記処理された画素に関して前記少なくとも１つの処理段階によって利用された前記データを前記メモリからプリフェッチすること、とを含むグラフィックス処理方法が提供される。
【００２１】
本開示の実施形態のさらに他の側面により、入力されたプリミティブオブジェクトデータからの表示画素データをレンダリングする複数の順次配列された処理段階を含むラスター化パイプラインにプリミティブオブジェクトデータを供給することであって、前記処理段階は、隠面除去（ＨＳＲ）段階を含むことと、デプスバッファ内の二次元深さ値データブロックを選択的に圧縮すること、とを含むグラフィックス処理方法が提供される。前記プリミティブオブジェクトデータは、プリミティブ形状を示し、二次元ブロックが処理された画素を含む前記プリミティブ形状内に完全に入っている場合に前記二次元ブロックの深さ値データが圧縮される。
【００２２】
開示される実施形態の上記の及びその他の側面は、添付図面を参照した以下の詳細な説明から容易に明確になるであろう。
【発明を実施するための最良の形態】
【００２３】
本明細書の幾つかの実施形態は、少なくとも一部分は、深さタイルのキャッシュを供給するプリフェッチメカニズムを含む３Ｄグラフィックスパイプラインを特徴とする。プリフェッチメカニズムは、予測的で、前のパイプライン段階からの三角形幾何情報を用いてキャッシュに予め装填することができ、それによってメモリ帯域幅効率の向上を可能にする。
【００２４】
その他の実施形態は、少なくとも一部分は、電力消費量の低減及びメモリ帯域幅を考慮したｚ圧縮技術を特徴とする。
【００２５】
次に、幾つかの好ましい、ただし限定しない実施形態が説明される。
【００２６】
３Ｄグラフィックスパイプラインの三角形セットアップブロックは、本明細書においてはコマンドブロックと呼ばれるものを先行させることができる。コマンドブロックは、各三角形に関するすべての関連データを含み、画素の画面所在位置情報を含む。本開示の実施形態により、画素の画面所在位置データは、パイプライン内において前方に送られ、画素処理に関して必要なデータのアドレスを計算するために後続のパイプライン段階によって用いられる。画素が所定の段階に到着するまでに、該段階と関連する値が既にキャッシュ内に入っていることになり、それによって帯域幅効率の向上を可能にする。
【００２７】
図２は、本開示の一実施形態を示す単純化されたブロック図である。コマンドブロック２００及び第１乃至第ｎ番目のパイプラインブロック２０１ａ乃至２０１ｎを有する３Ｄグラフィックスパイプラインが描かれている。パイプラインブロックの少なくとも１つは、キャッシュメモリ２０２ａ乃至２０２ｄを動作可能な形で備えている。アドレス情報を事前にパイプライン段階１、２、ｎ−１及び／又はｎに送ることによって、処理された画素がパイプライン段階に到着する前に関連データを主メモリから取り出すことが可能になる。この方法により、メモリスループットが向上される。
【００２８】
さらに、代替実施形態においては、プリフェッチメカニズムは、メモリ効率をさらに向上させるための予測メカニズムによって付随される。このことは、ｚ値（深さ値）をデプスバッファから予測的にプリフェッチする例を示す図３を参照して後述される。
【００２９】
三次元（３Ｄ）ラスター化パイプラインは、新しく処理された画素が前にレンダリングされた画素によって隠されるかどうかを決定するために「深さ試験」を利用する。メカニズムは、深さ値（すなわち、ｚ値）が格納されてラスター化中に検査される「デプスバッファ」（「ｚバッファ」とも呼ばれる）にアクセスすることを含む。基本的には、見る人からの可視画素の距離が深さ値としてデプスバッファに格納される。その後は、他の処理された画素は、画面上の同じ位置を占めるのを試みることができる。前にレンダリングされた画素の深さ値（すなわち、デプスバックアップ内の前記画素位置に格納された深さ値）が読み取られ、新しく処理された画素の値と比較される。比較の結果、新しい画素のほうが見る人に近いことが示された場合は、新しい画素は可視であるとみなされ、デプスバッファの前の深さ値は、新しい画素の深さ値によって上書きすることができる。新しい画素は、パイプラインによってさらに処理され、最終的にはフレームバッファにおいてレンダリングされる。他方、比較の結果、新しい画素のほうが見る人から遠いことが示された場合は、見えないとみなされ、新しい画素を捨てることができ、デプスバッファの前の深さ値が維持される。このプロセスは、本明細書においては隠面除去（ＨＳＲ）と呼ばれる。
【００３０】
図３は、三角形の細片がどのようにしてｚ値画素タイル上にマッピングできるかの例を示す。三角形は、Ａ乃至Ｅのラベルが付けられ、この順序でパイプラインに現れる。タイルは、１乃至１３の番号が付けられている。三角形Ａを処理するためには、タイル１、２、３、４、５及び８が必要である。従って、画素タイル１、２、３、４、５及び８のｚ値がデプスバッファからプリフェッチされてキャッシュメモリに格納される。次に、三角形Ｂを処理するためには、画素タイル４、５、８及び９が必要である。しかしながら、画素タイル４、５及び８は既にキャッシュメモリに格納されているため、画素タイル９をデプスバッファからプリフェッチすることのみが必要である。三角形Ｃの場合も同様に、タイル６のみをプリフェッチしなければならない。このように予測的にタイルをキャッシングすることによってメモリ帯域幅効率が向上される。
【００３１】
図４は、パイプラインの隠面除去（ＨＳＲ）ブロックにおいて利用されるｚ値のプリフェッチのために構成される３Ｄグラフィックスパイプラインの例のブロック図である。図において、パイプラインは、コマンドブロック４００と、三角形セットアップブロック４０１と、画素シェーディングブロック４０２と、ＨＳＲブロック４０３と、テクスチャマッピングブロック４０と、テクスチャブレンドブロック４０５と、を含む。さらに、ＨＳＲブロック４０３は、デプスキャッシュ４０６を備え、デプスバッファ４０７へのアクセスを有する。
【００３２】
動作上は、深さ画素タイルのアドレス情報は、コマンド４００から直接ＨＳＲブロック４０３に転送される。ＨＳＲブロック４０３は、アドレス情報に従ってデプスバッファ４０７から深さ値をプリフェッチし、該深さ値をデプスキャッシュ４０６に格納するように構成される。このため、処理された画素がパイプラインを通じてＨＳＲブロック４０３に到着時に、前にレンダリングされた画素の深さ値をＨＳＲ処理のために素早くキャッシュ４０６から取り出すことができる。
【００３３】
本開示の実施形態のデプスバッファ管理の予測的プリフェッチ技術は、いわゆる階層的ｚバッファの使用に非常に適しており、次に一例が説明される。
【００３４】
図５及び６は、本開示の他の実施形態を示す機能ブロック図であり、図６は、図５に示される深さ試験ブロック５０４の動作を説明するための機能ブロック図である。
【００３５】
図５には、コマンドエンジン５０１、三角形セットアップブロック５０２、画素シェーディングブロック５０３、（示されていない階層的ｚバッファを含む）深さ試験ブロック５０４、（デプスバッファを含む）メモリシステム５０５、及び残りのパイプラインブロック５０６が示されている。
【００３６】
動作上は、コマンドエンジン５０１からの三角形が三角形セットアップブロック５０２に適用される。三角形セットアップブロックは、対応する深さ係数、幾何データ及び属性係数を出力し、これらはすべて画素シェーディングブロック５０３に適用される。次に、画素属性及び画素アドレスは、コマンドエンジン５０１からの三角形バウンディングボックスデータ、及び三角形セットアップブロック５０２からの深さ係数とともに、画素シェーディングブロック５０３によって深さ試験ブロック５０４に供給される。次に、深さ試験ブロック５０４は、処理された画素及びキャッシュメモリ（示されていない）に格納された深さ値に関する深さ試験を行う。好ましいことに、深さ値は、深さ試験が実際に実施される前に予測的にメモリシステム５０５から取り出されてキャッシュメモリに格納される。処理された画素は、深さ試験の結果捨てられるか又は画素アドレス及び画素属性の形で残りのパイプラインブロック５０６に送信される。
【００３７】
既述のように、図６は、図５に示されている深さ試験ブロック５０４の動作を説明するための機能ブロック図である。図６に示されるように、この例の深さ試験ブロックは、一般的には、タイルインデックス予測器６０１と、タイルインデックス生成器６０２と、深さ内挿器６０３と、タイル試験ブロック６０４と、画素試験ブロック６０７と、属性バッファ６０８と、デプスキャッシュ６０９と、を含む。
【００３８】
属性バッファ６０８は、パイプラインを通って入ってきた画素の画素属性を格納するために用いられる。深さブロックは、パイプラインであり、属性バッファ６０８は、パイプラインと一致する。後述されるように、discard_pixel信号は、パイプライン６２１内を流れる画素に関する有効な消去又はクリア信号である。
【００３９】
タイルインデックス予測器６０１は、バウンディングボックス情報bounding_boxを利用して、処理された三角形によって占められているタイルを示す一連のタイルインデックスを予測的に生成する。図３に関連して既述されるように、メモリ帯域幅効率は、処理された三角形に関するタイルの予測的キャッシングによって向上される。プリフェッチ論理６１０は、タイルインデックス予測器６０１からのタイルインデックスを利用してデプスキャッシュ６０９のキャッシュ読み取りブロック６１２を制御する。キャッシュ読み取りブロック６１２の動作はのちに説明される。しかしながら、プリフェッチ論理ブロック６１０は、（後述される）画素試験ブロックからののちに要求された画素がキャッシュＲＡＭ内に存在する可能性がより高くなるようにキャッシュ読み取りブロック６１２に対して早期のタイル要求を行う。
【００４０】
タイルインデックス生成器６０２は、タイルインデックス信号tile_index_inを入ってきた画素アドレスpixel_address_inから生成する。それ以前に同じタイルインデックスがタイルインデックス予測器６１０によって予測されていることになるため、インデックス予測器６０１とタイルインデックス生成器６０２の間で論理を共有できることに注目すること。
【００４１】
深さ内挿器６０３は、深さ係数z_coefficients及びバウンディングボックス情報bounding_boxを用いて、入ってきた画素アドレスpixel_address_inに関する深さ値z_inを実際にラスター化する。深さ内挿器６０３はシェーディングブロックの一部として含むことも可能である（図５参照）。しかしながら、この例においては、いずれかの所定のタイルに関してこれらの係数のみが格納されている場合はｚを圧縮解除するために同じ内挿器を用いることができるため、深さ内挿器６０３は深さ試験ブロックに実装されている。この点に関して、深さ内挿器はデプスキャッシュブロック６０９内部にも現れることに注目すること。
【００４２】
タイル試験ブロック６０４は、本質的には階層的ｚ試験ブロックであり、リミットテーブル６０５及び可視性検査ブロック６０６とともに構成される。リミットテーブル６０５は、各画面タイルに関する最遠深さ値（ｚ値）z_max_far及び最近深さ値（ｚ値）z_min_nearを含む。タイルインデックス生成器６０２からのtile_indexは、リミットテーブル６０５内へのアドレスとして利用され、その結果、リミットテーブル６０５は、処理された画素を含んでいるタイルに関する最小深さ値z_min_near及び最大深さ値z_max_farを生成する。次に、タイルの最小深さ値z_min_near及び最大深さ値z_max_farはz_inとともに可視性検査ブロック６０６に適用される。可視性検査ブロック６０６は、z_inをz_min_near及びz_max_farと比較し、比較結果は、３つの可能性のある結果、すなわち、タイルに関してz_inはz_max_farよりも遠い、タイルに関してz_inはz_min_nearよりも近い、又はタイルに関してz_inはz_max_farよりも近いがz_min_nearよりも遠い、を有する。
【００４３】
タイルに関してz_inがz_max_farよりも遠い場合は、属性バッファ６０８へのdiscard_pixel信号の動作によって画素が捨てられる。
【００４４】
タイルに関してz_inがz_min_nearよりも近い場合は、画素は可視であり、update_pixel信号のイネーブル化及び図６においてupdate_pixel_tile_index、update_pixel_address、update_pixel_z、及びupdate_pixel_z_coefficientsとして示されている信号をキャッシュ書き込みブロック６１７に送信することによって更新しなければならない。キャッシュ書き込みブロック６１７は、キャッシュタグ管理を含む。画素を更新時には、キャッシュ書き込みブロック６１７は、キャッシュＲＡＭ６１９を更新し、外部のメモリシステム６２０とのデータのコヒーレンスを維持するために機能する。さらに、タイルがキャッシュＲＡＭ６１９又は外部のメモリシステム６２０内に再格納されるときには、キャッシュ書き込みブロック６１７は、該タイルの深さ情報pixel_zをリミット生成器６１８にストリーミングする。
【００４５】
リミット生成器６１８は、メモリシステム６２０内に格納中にタイルのz_max_far及びz_min_nearを計算する。次に、update_tile信号がイネーブルにされ、リミットテーブル６０５を更新するために信号update_tile_index、z_max_far及びz_min_nearがタイル試験ブロック６０４に送信される。
【００４６】
前述されるように、キャッシュ書き込みブロック６１７は、信号update_pixel_tile_index、update_pixel_address、update_pixel_z、及びupdate_pixel_z_coefficientsを受信する。update_pixel_tile_index信号は、本質的にはキャッシュブロックインデックス（又はキャッシュラインインデックス）である。update_pixel_addressは、個々の画素に対処するために利用されるキャッシュアドレスである。update_pixel_zは、個々の画素に関する個々の深さ値（ｚ値）である。update_pixel_z_coefficients信号は、ｚ圧縮技術の一部として用いられる係数を含む。すなわち、デプスキャッシュ６０９の圧縮テーブル６１１は、いずれのタイルが自己の係数のみを格納されているかを追跡する。該タイルがキャッシュ読み取りブロック６１２によって見つけられたときには、これらの係数がキャッシュＲＡＭ６１９から読み取られ、深さ内挿器６１６に渡されて個々の深さ値が復元される。
【００４７】
z_inがz_max_farよりも近いがz_min_nearよりも遠い場合は、画素は、タイルの最小値と最大値の間にある。従って、pixel_test_enable信号をイネーブルにすることによって個々の画素試験が行われる。これに応じて、信号request_pixel、request_pixel_tile_index及びrequest_pixel_addressが画素試験ブロック６０７によってデプスキャッシュ６０９に送信され、前に処理された画素の深さ値が要求される。request_pixel信号は、本質的にはキャッシュ読み取りコマンドであり、request_pixel_tile_index及びrequest_pixel_addressは、それぞれ、タイルアドレス及び画素アドレスである。これらの信号に応答して、キャッシュ読み取りブロック６１２は、前に処理された画素の要求されたｚ値を、メモリインタフェース６１３を介してキャッシュＲＡＭ６１９から取り出す。キャッシュ読み取りブロック６１２は、キャッシュタグの検査及び管理を含む。要求されたｚ値は、request_pixel_z信号として画素試験ブロック６０７に供給され、画素試験ブロック６０７は、処理された画素が可視であるかどうかを決定する。画素が可視でないと決定された場合は、タイル試験ブロック６０４に関して上述されるようにdiscard_pixel信号がイネーブルにされる。画素が可視であると決定された場合は、update_pixel信号がイネーブルにされ、update_pixel_tile_index、update_pixel_address、update_pixel_z、及びupdate_pixel_z_coefficients信号が、タイル試験ブロック６０４に関して前述されているのと同じように利用される。
【００４８】
完全な三角形が完全にタイル内にある場合は該三角形が該タイルに関する最大値及び最小値に基づいて捨てられる他のレベルの階層的ｚバッファを実装可能であることが注記される。
【００４９】
図５及び６の実施形態は、画素タイルの深さ値が格納されてデプスバッファから取り出されるタイル動作モードを利用する。帯域幅効率をさらに向上させるために、画素タイルを代表するデータを圧縮するのが望ましいことがある。本開示の実施形態に従った１つの該ｚ圧縮技術が以下において説明される。
【００５０】
この実施形態の説明においては、デプスバッファはタイルモード（例えば、４×４画素）に分割され、三角形はタイルモードでレンダリングされると想定されている。
【００５１】
パイプラインプロセスの初期において、各三角形の画素の深さ値が、該三角形と関連する頂点情報から計算される。典型的には、線形内挿がこの目的のために利用される。
【００５２】
従って、ｚバッファ内において三角形をレンダリングすることによって更新された場所にタイルが対応する場合は、該タイル内の深さ値は、以下のような線形関数として表すことができる。
【００５３】
Z(x,y) = Azx + Bzy + Cz
ここで、ｘ及びｙは、４×４タイル内の各画素の横座標及び縦座標を表す。タイルの左上の画素の深さ値に(Z00)、Az及びBzの値を与えることによって、タイルの残りの画素は、以下の方程式を内挿することによって得ることができる。
【００５４】
Zij = Az ＊i + Bz ＊j + Z00,(i = 0〜3, j = 0〜3)
従って、タイルが圧縮可能である場合は、デプスバッファへの１６個のすべての画素の深さ値を更新する代わりに、Z00、Az及びBzを更新するだけでよい。このことは、Az及びBzがZ00と同じデータ精度を有すると想定した場合は正規のタイルの情報のちょうど３／１６である。同じ圧縮されたタイルがｚバッファから再び読み取られるときには、Z00、Az及びBzを読み取ること及び上記の公式に基づいて圧縮解除機能を実行することのみを行うだけでタイル全体の深さ値を得ることができる。
【００５５】
図７に示されるように、タイルは、三角形内に完全に含まれている場合のみに圧縮することができる。示されるように、タイルＡは圧縮可能であり、タイルＢ及びＣは、三角形の境界を越えているため圧縮できない。タイルが三角形内に完全に入っているかどうかを決定することは、通常は、タイルの４つのすべての角画素が三角形の内部にあるかどうかを検査するだけで十分である。
【００５６】
すべてのタイルが圧縮可能なわけではないため、特定のタイルブロックがデプスバッファ内において圧縮されているかどうかを示すことが可能な１つの配列のフラグ（１つのタイル当たり１ビット）を格納するためにオンチップメモリを利用することができる。タイルがデプスバッファから読み取られるときには、データの圧縮解除が必要であるかどうかを決定するために対応する圧縮フラグが検査される。デプスバッファへのタイルが更新中であるときで、該タイルが圧縮可能である場合は、圧縮されたデータがデプスバッファに書き込まれて対応する圧縮フラグが設定される。
【００５７】
図及び明細書においては典型的実施形態が開示されており、さらに特定の例が示されているが、これらの例は一般的であってさらに限定することを目的としてではなく説明を目的として用いられている。従って、本開示の適用範囲は、これらの典型的実施形態によってではなく添付された請求項によって解釈されるべきであるということが理解されるべきである。
【図面の簡単な説明】
【００５８】
【図１】３Ｄグラフィックスエンジンに含まれている基本的なオープンＧＬラスター化パイプラインの例の概略的ブロック図である。
【図２】本開示の実施形態によるグラフィックスパイプラインの回路ブロック構成の単純化された例を示した図である。
【図３】本開示の他の実施形態による画素タイルの予測的プリフェッチを説明するための図である。
【図４】本開示の他の実施形態によるグラフィックスパイプラインの回路ブロック構成の単純化された例を示した図である。
【図５】１つのタイルの画素のｚ値が予測的にプリフェッチされてキャッシュに格納される本開示の他の実施形態のブロック図である。
【図６】図５に示されたデプスキャッシュの動作を説明するためのブロック図である。
【図７】本開示の実施形態によるｚ圧縮候補である画素タイルを説明するための図である。
【図１】
2008533628.tif 000003
【図２】
2008533628.tif 000004
【図３】
2008533628.tif 000005
【図４】
2008533628.tif 000006
【図５】
2008533628.tif 000007
【図６】
2008533628.tif 000008
【図７】
2008533628.tif 000009
【国際調査報告】
2008533628.tif 000010
2008533628.tif 000011
2008533628.tif 000012
2008533628.tif 000013
2008533628.tif 000014