(57)【要約】拡張型頂点キャッシュを使用するグラフィック処理装置（ＧＰＵ）を用いて、コンピュータ化された画像を処理するための技術が記載される。この技術は、ＧＰＵパイプラインを通過するデータ量を低減するために、ＧＰＵパイプラインに接続された拡張型頂点キャッシュを生成することを含む。ＧＰＵパイプラインは、画像の画像形状を受け取り、画像形状内の頂点の属性を、拡張型頂点キャッシュに格納する。ＧＰＵパイプラインは単に、頂点を特定する頂点座標と、頂点のおのおのの属性の、拡張型頂点キャッシュ内の格納場所を示す頂点キャッシュ・インデクス値とを、ＧＰＵパイプラインに沿って他の処理ステージに渡すだけである。本明細書に記載のこれら技術は、属性グラジエントのセットアップを、ＧＰＵパイプライン内の属性補間の直前まで遅らせる。頂点属性は、ＧＰＵパイプライン内の属性補間直前の属性グラジエント・セットアップについて、拡張型頂点キャッシュから検索される。
2009545825.tif 000002
【特許請求の範囲】
【請求項１】
グラフィック処理装置（ＧＰＵ）に含まれるＧＰＵパイプラインにおいて、画像の画像形状を受け取ることと、
前記ＧＰＵパイプラインに接続された拡張型頂点キャッシュ内に、前記画像形状の頂点の属性を格納することと、
前記拡張型頂点キャッシュにおける前記画像形状内の頂点のおのおのの属性の格納場所を示す頂点キャッシュ・インデクス値と、前記頂点を特定する頂点座標とに基づいて、前記ＧＰＵパイプラインにおいて前記画像を処理することと
を備える方法。
【請求項２】
頂点シェーディングを実行することによって、前記拡張型頂点キャッシュに含まれていない画像形状内の頂点の属性と頂点座標とを生成することをさらに備える請求項１に記載の方法。
【請求項３】
前記画像形状内の頂点のうちのどれが、前記拡張型頂点キャッシュに含まれるヒットした頂点を備えているかを判定することと、
前記画像形状内の頂点のうちのどれが、前記拡張型頂点キャッシュに含まれていないミスした頂点を備えているかを判定することと、
前記画像形状内のミスした頂点のおのおのの属性および頂点座標を生成することと
をさらに備える請求項１に記載の方法。
【請求項４】
前記拡張型頂点キャッシュ内に、前記画像形状内のヒットした頂点のおのおのの格納された属性を保持することと、
前記ヒットした頂点のおのおのの属性の、前記拡張型頂点キャッシュに格納された格納場所を示す頂点キャッシュ・インデクス値を検索することと
をさらに備える請求項３に記載の方法。
【請求項５】
前記画像形状内のミスした頂点のおのおのの属性の、前記拡張型頂点キャッシュ内の格納場所を示す頂点キャッシュ・インデクス値を割り当てることと、
前記拡張型頂点キャッシュ内の前記割り当てられた格納場所に、前記ミスした頂点のおのおのの生成された属性を格納することと
をさらに備える請求項３に記載の方法。
【請求項６】
前記拡張型頂点キャッシュに、前記画像形状内の頂点のおのおのの頂点座標を格納することと、
前記画像を処理するために、前記画像形状内の頂点のおのおのの頂点キャッシュ・インデクス値を用いて、前記拡張型頂点キャッシュから前記頂点座標を検索することと
をさらに備える請求項１に記載の方法。
【請求項７】
前記画像形状内の頂点のおのおのについて、前記拡張型頂点キャッシュに含まれた基準カウント・ストレージ内の基準カウントをインクリメントすることと、
前記画像形状内の１または複数の頂点を用いて、予備的な基本命令を生成することと、
前記予備的な基本命令において、２度以上使用された頂点について、前記基準カウント・ストレージ内の基準カウントをインクリメントすることと、
前記画像を処理するために、前記予備的な基本命令内の頂点の頂点キャッシュ・インデクス値を、バッファ内に格納することと
をさらに備える請求項１に記載の方法。
【請求項８】
前記頂点のおのおのの頂点キャッシュ・インデクス値と頂点座標とを、前記ＧＰＵパイプラインに沿って渡すことをさらに備える請求項１に記載の方法。
【請求項９】
前記画像を処理することは、前記画像形状についての前記基本命令内の頂点の属性に基づいて前記画像形状を処理することを、前記ＧＰＵパイプライン内の属性補間の直前まで遅らせることを備える請求項１に記載の方法。
【請求項１０】
前記画像形状を処理することを遅らせることは、前記画像形状の基本命令内の頂点の属性のグラジエントを計算することを、前記ＧＰＵパイプライン内の属性補間の直前まで遅らせることを備える請求項９に記載の方法。
【請求項１１】
前記画像を処理することは、
前記画像形状内の１または複数の頂点を用いて基本命令を生成することと、
前記頂点座標に基づいて、前記画像に必要ではない基本命令の第１のサブセットを除外することと、
前記画像に必要な基本命令の第２のサブセット内の頂点のおのおのの頂点属性を、前記頂点の頂点キャッシュ・インデクス値を用いて、前記拡張型頂点キャッシュから検索することと、
前記拡張型頂点キャッシュから検索された属性に基づいて、前記画像形状の基本命令の第２のサブセットに関連付けられた属性のグラジエントを計算すること
をさらに備える請求項１に記載の方法。
【請求項１２】
前記基本命令の第１のサブセットを除外することは、
前記頂点座標に基づく背面間引きおよびシザリングを用いて、前記画像形状の目に見えない基本命令を除外することと、
前記頂点座標に基づく初期の深さおよびステンシル・テストを用いて、前記画像形状の基本命令内の隠れたピクセルおよび隠れた基本命令を除外することと
を備える請求項１１に記載の方法。
【請求項１３】
前記画像形状の基本命令の除外された第１のサブセットに関連付けられた属性のための、前記拡張型頂点キャッシュ内の格納スペースの解放を要求することをさらに備える請求項１１に記載の方法。
【請求項１４】
前記拡張型頂点キャッシュ内の格納スペースを解放する要求を受け取ると、前記基本命令の第１のサブセット内の頂点について、基準カウントをデクリメントすることと、
前記頂点の基準カウントがゼロにデクリメントされた場合、前記基本命令の第１のサブセット内の頂点の属性のための前記拡張型頂点キャッ内の格納スペースを解放することと
をさらに備える請求項１３に記載の方法。
【請求項１５】
前記基本命令の第２のサブセットに関連付けられた属性のグラジエントを計算する前に、前記頂点座標に基づいて、前記画像形状の基本命令をピクセルに変換することをさらに備える請求項１１に記載の方法。
【請求項１６】
前記基本命令の第２のサブセットに関連付けられた属性の全てのグラジエントを計算した後、前記画像形状内の基本命令の第２のサブセットに関連付けられた属性のための、前記拡張型頂点キャッシュ内の格納スペースの解放を要求することをさらに備える請求項１１に記載の方法。
【請求項１７】
前記拡張型頂点キャッシュ内の格納スペースを解放する要求を受け取ると、前記基本命令の第２のサブセット内の頂点について基準カウントをデクリメントすることと、
前記頂点の基準カウントがゼロにデクリメントされた場合、前記基本命令の第２のサブセット内の頂点の属性のための、前記拡張型頂点キャッシュ内の格納スペースを解放することと
をさらに備える請求項１６に記載の方法。
【請求項１８】
前記基本命令の第２のサブセットに関連付けられた属性のグラジエントを計算した直後に、属性グラジエント値に基づいて、前記画像形状の基本命令の第２のサブセット内のピクセルにわたって前記属性を補間することと、
前記補間された属性値に基づいて、前記画像形状の基本命令の第２のサブセットのピクセル・レンダリングを実行することと
をさらに備える請求項１１に記載の方法。
【請求項１９】
前記画像を処理することは、
前記頂点座標に基づいて前記画像形状を処理することと、
前記頂点の頂点キャッシュ・インデクス値を用いて、前記拡張型頂点キャッシュから、前記頂点の属性を検索することと、
前記画像形状についての基本命令内の頂点の属性に基づいて、前記画像形状を処理することと
を備える請求項１に記載の方法。
【請求項２０】
前記画像形状内の頂点の属性および頂点座標は、前記ＧＰＵの外部で生成され、前記拡張型頂点キャッシュは、拡張型頂点バッファを備え、
前記方法はさらに、
前記頂点のおのおのの属性を、前記拡張型頂点バッファ内に格納することと、
前記画像形状内の頂点のおのおのの属性の、前記拡張型頂点バッファ内の格納場所を特定する頂点インデクス値と、頂点座標とに基づいて、前記ＧＰＵパイプライン内で画像を処理することと
を備える請求項１に記載の方法。
【請求項２１】
グラフィック処理装置（ＧＰＵ）に含まれるＧＰＵパイプラインにおいて、画像の画像形状を受け取ることと、
前記ＧＰＵパイプラインに接続された拡張型頂点キャッシュ内に、前記画像形状の頂点の属性を格納することと、
前記拡張型頂点キャッシュにおける前記画像形状内の頂点のおのおのの属性の格納場所を特定する頂点キャッシュ・インデクス値と、前記頂点を特定する頂点座標とに基づいて、前記ＧＰＵパイプラインにおいて前記画像を処理することと
を、プログラマブルなプロセッサに対してさせる命令群を備えたコンピュータ読取可能媒体。
【請求項２２】
前記画像形状内の頂点のうちのどれが、前記拡張型頂点キャッシュに含まれるヒットした頂点を備えているかを判定することと、
前記画像形状内の頂点のうちのどれが、前記拡張型頂点キャッシュに含まれていないミスした頂点を備えているかを判定することと、
前記画像形状内のミスした頂点のおのおのの属性および頂点座標を生成することと
を、前記プログラマブルなプロセッサに対してさせる命令群をさらに備えた請求項２１に記載のコンピュータ読取可能媒体。
【請求項２３】
前記命令群は前記プログラマブルなプロセッサに対して、
前記拡張型頂点キャッシュ内に、前記画像形状内のヒットした頂点のおのおのの格納された属性を保持し、前記ヒットした頂点のおのおのの属性の、前記拡張型頂点キャッシュ内の格納場所を示す頂点キャッシュ・インデクス値を検索することと、
前記画像形状内のミスした頂点のおのおのの属性の、前記拡張型頂点キャッシュ内の格納場所を示す頂点キャッシュ・インデクス値を割り当てることと、前記拡張型頂点キャッシュ内の前記格納場所に、前記ミスした頂点のおのおのの生成された属性を格納することと、
をさせる請求項２２に記載のコンピュータ読取可能媒体。
【請求項２４】
前記拡張型頂点キャッシュに、前記画像形状内の頂点のおのおのの頂点座標を格納することと、
前記画像を処理するために、前記画像形状内の頂点のおのおのの頂点キャッシュ・インデクス値を用いて、前記拡張型頂点キャッシュから前記頂点座標を検索することと
を、前記プログラマブルなプロセッサに対してさせる命令群をさらに備えた請求項２１に記載のコンピュータ読取可能媒体。
【請求項２５】
前記命令群は、前記プログラマブルなプロセッサに対して、前記画像形状についての前記基本命令内の頂点の属性に基づいて前記画像形状を処理することを、前記ＧＰＵパイプライン内の属性補間の直前まで遅らせることをさせる請求項２１に記載のコンピュータ読取可能媒体。
【請求項２６】
前記命令群は、前記プログラマブルなプロセッサに対して、前記画像形状の基本命令内の頂点の属性のグラジエントを計算することを、前記ＧＰＵパイプライン内の属性補間の直前まで遅らせることをさせる請求項２５に記載のコンピュータ読取可能媒体。
【請求項２７】
前記命令群は、前記プログラマブルなプロセッサに対して、
前記画像形状内の１または複数の頂点を用いて基本命令を生成することと、
前記頂点座標に基づいて、前記画像に必要ではない基本命令の第１のサブセットを除外することと、
前記画像に必要な基本命令の第２のサブセット内の頂点のおのおのの頂点属性を、前記頂点の頂点キャッシュ・インデクス値を用いて、前記拡張型頂点キャッシュから検索することと、
前記拡張型頂点キャッシュから検索された属性に基づいて、前記画像形状の基本命令の第２のサブセットに関連付けられた属性のグラジエントを計算することと
をさせる請求項２１に記載のコンピュータ読取可能媒体。
【請求項２８】
前記画像形状の基本命令の除外された第１のサブセットに関連付けられた属性のための、前記拡張型頂点キャッシュ内の格納スペースの解放を要求することを、前記プログラマブルなプロセッサに対してさせる命令群をさらに備えた請求項２７に記載のコンピュータ読取可能媒体。
【請求項２９】
前記基本命令の第２のサブセットに関連付けられた属性のグラジエントを計算する前に、前記頂点座標に基づいて、前記画像形状の基本命令をピクセルに変換することを、前記プログラマブルなプロセッサに対してさせる命令群をさらに備えた請求項２７に記載のコンピュータ読取可能媒体。
【請求項３０】
前記基本命令の第２のサブセットに関連付けられた属性の全てのグラジエントを計算した後、前記画像形状内の基本命令の第２のサブセットに関連付けられた属性のための、前記拡張型頂点キャッシュ内の格納スペースの解放を要求することを、前記プログラマブルなプロセッサに対してさせる命令群をさらに備えた請求項２７に記載のコンピュータ読取可能媒体。
【請求項３１】
前記基本命令の第２のサブセットに関連付けられた属性のグラジエントを計算した直後に、属性グラジエント値に基づいて、前記画像形状の基本命令の第２のサブセット内のピクセルにわたって前記属性を補間することと、
前記補間された属性値に基づいて、前記画像形状の基本命令の第２のサブセットのピクセル・レンダリングを実行することと
を、前記プログラマブルなプロセッサに対してさせる命令群をさらに備えた請求項２７に記載のコンピュータ読取可能媒体。
【請求項３２】
前記頂点座標に基づいて前記画像形状を処理することと、
前記頂点の頂点キャッシュ・インデクス値を用いて、前記拡張型頂点キャッシュから、前記頂点の属性を検索することと、
前記画像形状についての基本命令内の頂点の属性に基づいて、前記画像形状を処理することと
を、前記プログラマブルなプロセッサに対してさせる命令群をさらに備えた請求項２１に記載のコンピュータ読取可能媒体。
【請求項３３】
前記画像形状内の頂点の属性および頂点座標は、前記ＧＰＵの外部で生成され、前記拡張型頂点キャッシュは、拡張型頂点バッファを備え、
コンピュータ読取可能媒体はさらに、
前記頂点のおのおのの属性を、前記拡張型頂点バッファ内に格納することと、
前記画像形状内の頂点のおのおのについて、前記拡張型頂点バッファ内の属性の格納場所を特定する頂点インデクス値と、頂点座標とに基づいて、前記ＧＰＵパイプライン内で画像を処理することと
を、前記プログラマブルなプロセッサに対してさせる命令群をさらに備えた請求項２１に記載のコンピュータ読取可能媒体。
【請求項３４】
画像の画像形状を受け取り、前記画像を、ディスプレイ・デバイス上に表示するために処理するグラフィック処理装置（ＧＰＵ）ＧＰＵパイプラインと、
前記ＧＰＵパイプラインに接続されており、前記画像形状の頂点の属性を格納する拡張型頂点キャッシュとを備え、
前記ＧＰＵパイプラインは、前記拡張型頂点キャッシュにおける前記画像形状内の頂点のおのおのの属性の格納場所を特定する頂点キャッシュ・インデクス値と、前記頂点を特定する頂点座標とに基づいて、前記画像を処理するデバイス。
【請求項３５】
前記ＧＰＵパイプラインは、頂点シェーディングを実行することによって、前記拡張型頂点キャッシュに含まれていない画像形状内の頂点の属性と頂点座標とを生成する頂点シェーダを含む請求項３４に記載のデバイス。
【請求項３６】
前記ＧＰＵパイプラインは、
前記画像形状内の頂点のうちのどれが、前記拡張型頂点キャッシュに含まれるヒットした頂点を備えているかを判定し、前記画像形状内の頂点のうちのどれが、前記拡張型頂点キャッシュに含まれていないミスした頂点を備えているかを判定する頂点判定モジュールと、
前記画像形状内のミスした頂点のおのおのの属性および頂点座標を生成する頂点シェーダと
を含む請求項３４に記載のデバイス。
【請求項３７】
前記拡張型頂点キャッシュは、前記画像形状内のヒットした頂点のおのおのの格納された属性を保持し、
前記頂点判定モジュールは、前記ヒットした頂点のおのおのの属性の、前記拡張型頂点キャッシュに格納された格納場所を示す頂点キャッシュ・インデクス値を検索する請求項３６に記載のデバイス。
【請求項３８】
前記ＧＰＵパイプラインは、前記画像形状内のミスした頂点のおのおのの属性の、前記拡張型頂点キャッシュ内の格納場所を示す頂点キャッシュ・インデクス値を割り当てる、ミスした頂点モジュールを含み、
前記頂点判定モジュールは、前記ミスした頂点モジュールから、前記ミスした頂点のおのおのの割り当てられた頂点キャッシュ・インデクス値を受け取り、前記拡張型頂点キャッシュは、前記拡張型頂点キャッシュ内の格納場所に、前記ミスした頂点のおのおのの生成された属性を格納する請求項３６に記載のデバイス。
【請求項３９】
前記拡張型頂点キャッシュは、前記画像形状内の頂点のおのおのの頂点座標を格納し、
前記ＧＰＵパイプラインは、前記画像を処理するために、前記画像形状内の頂点のおのおのの頂点キャッシュ・インデクス値を用いて、前記拡張型頂点キャッシュから前記頂点座標を検索する請求項３４に記載のデバイス。
【請求項４０】
前記拡張型頂点キャッシュは、基準カウント・ストレージを含み、
前記ＧＰＵパイプラインは、
前記画像形状内の頂点について、前記基準カウント・ストレージ内の基準カウントをインクリメントする基準カウント更新モジュールと、
前記画像形状内の１または複数の頂点を用いて、予備的な基本命令を生成し、前記予備的な基本命令において、２度以上使用された頂点について、前記基準カウント・ストレージ内の基準カウントをインクリメントする基本命令アセンブラと、
前記画像を処理するために、前記予備的な基本命令内の頂点の頂点キャッシュ・インデクス値を格納するバッファと
を含む請求項３４に記載のデバイス。
【請求項４１】
前記ＧＰＵパイプラインは、前記画像形状についての前記基本命令内の頂点の属性に基づいて前記画像形状を処理することを、前記ＧＰＵパイプライン内の属性補間の直前まで遅らせる請求項３４に記載のデバイス。
【請求項４２】
前記ＧＰＵパイプラインは、前記画像形状の基本命令内の頂点の属性のグラジエントを計算することを、前記ＧＰＵパイプライン内の属性補間の直前まで遅らせる属性グラジエント・セットアップ・モジュールを含む請求項４１に記載のデバイス。
【請求項４３】
前記ＧＰＵパイプラインは、
前記画像形状内の１または複数の頂点を用いて基本命令を生成し、前記頂点座標に基づいて、前記画像に必要ではない基本命令の第１のサブセットを除外する基本命令セットアップおよび除外モジュールと、
前記頂点座標に基づいて、前記画像に必要ではない基本命令の第２のサブセットを除外する、隠れた基本命令およびピクセル除外モジュールと、
前記画像に必要な基本命令の第３のサブセット内の頂点のおのおのの属性を、前記頂点の頂点キャッシュ・インデクス値を用いて、前記拡張型頂点キャッシュから検索し、前記拡張型頂点キャッシュから検索された属性に基づいて、前記画像形状の基本命令の第３のサブセットに関連付けられた属性のグラジエントを計算する属性グラジエント・セットアップ・モジュールと
を含む請求項３４に記載のデバイス。
【請求項４４】
前記基本命令セットアップおよび除外モジュールは、前記頂点座標に基づく背面間引きおよびシザリングを用いて、前記画像形状の目に見えない基本命令を除外し、
前記隠れた基本命令およびピクセル除外モジュールは、前記頂点座標に基づく初期の深さおよびステンシル・テストを用いて、前記画像形状の基本命令内の隠れたピクセルおよび隠れた基本命令を除外する請求項４３に記載のデバイス。
【請求項４５】
前記基本命令セットアップおよび除外モジュールは、前記画像形状の基本命令の第１のサブセットに関連付けられた属性のための、前記拡張型頂点キャッシュ内の格納スペースの解放を要求し、
前記隠れた基本命令およびピクセル除外モジュールは、前記画像形状の基本命令の第２のサブセットに関連付けられた属性のための、前記拡張型頂点キャッシュ内の格納スペースの解放を要求する請求項４３に記載のデバイス。
【請求項４６】
前記拡張型頂点キャッシュは、前記拡張型頂点キャッシュ内の格納スペースを解放する要求を受け取ると、前記基本命令の第１および第２のサブセット内の頂点について、基準カウント・ストレージ内の基準カウントをデクリメントし、前記基準カウント・ストレージ内の頂点の基準カウントがゼロにデクリメントされた場合、前記基本命令の第１および第２のサブセット内の頂点の属性のための前記拡張型頂点キャッ内の格納スペースを解放するストレージ解放モジュールを含む請求項４５に記載のデバイス。
【請求項４７】
前記ＧＰＵパイプラインは、前記属性グラジエント・セットアップ・モジュールが、前記基本命令の第３のサブセットに関連付けられた属性のグラジエントを計算する前に、前記頂点座標に基づいて、前記画像形状の基本命令をピクセルに変換するラスタライザを含む請求項４３に記載のデバイス。
【請求項４８】
前記属性グラジエント・セットアップ・モジュールは、前記拡張型頂点キャッシュに対して、前記属性グラジエント・セットアップ・モジュールが、前記基本命令の第３のサブセットに関連付けられた属性の全てのグラジエントを計算した後、前記画像形状の基本命令の第３のサブセットに関連付けられた属性のための格納スペースの解放を要求する請求項４３に記載のデバイス。
【請求項４９】
前記拡張型頂点キャッシュは、前記拡張型頂点キャッシュ内の格納スペースを解放する要求を受け取ると、前記基本命令の第２のサブセット内の頂点について基準カウント・ストレージ内の基準カウントをデクリメントし、前記頂点についての基準カウント・ストレージ内の基準カウントがゼロにデクリメントされた場合、前記基本命令の第２のサブセット内の頂点の属性のための、前記拡張型頂点キャッシュ内の格納スペースを解放するストレージ解放モジュールを含む請求項４８に記載のデバイス。
【請求項５０】
前記ＧＰＵパイプラインは、前記属性グラジエント・セットアップ・モジュールが、前記基本命令の第３のサブセットに関連付けられた属性のグラジエントを計算した直後に、属性グラジエント値に基づいて、前記画像形状の基本命令の第３のサブセット内のピクセルにわたって前記属性を補間する属性補間部と、
前記補間された属性値に基づいて、前記画像形状の基本命令の第３のサブセットのピクセル・レンダリングを実行するフラグメント・シェーダと
を含む請求項４３に記載のデバイス。
【請求項５１】
前記ＧＰＵパイプラインは、前記頂点座標に基づいて前記画像形状を処理し、前記頂点の頂点キャッシュ・インデクス値を用いて、前記拡張型頂点キャッシュから、前記頂点の属性を検索し、前記画像形状についての基本命令内の頂点の属性に基づいて、前記画像形状を処理する請求項３４に記載のデバイス。
【請求項５２】
前記画像形状内の頂点の属性および頂点座標は、前記ＧＰＵパイプラインの外部で生成され、前記拡張型頂点キャッシュは、拡張型頂点バッファを備え、
前記拡張型頂点バッファは、前記頂点のおのおのの属性を格納し、
前記ＧＰＵパイプラインは、前記画像形状内の頂点のおのおのの属性の、前記拡張型頂点バッファ内の格納場所を特定する頂点インデクス値と、頂点座標とに基づいて、前記画像を処理する請求項３４に記載のデバイス。
【請求項５３】
画像の画像形状を受け取る処理手段と、
前記画像形状の頂点の属性を格納する格納手段とを備え、
前記処理手段は、前記格納手段における前記画像形状内の頂点のおのおのの属性の格納場所を示す頂点キャッシュ・インデクス値と、前記頂点を特定する頂点座標とに基づいて、前記画像を処理するデバイス。
【請求項５４】
前記処理手段は、前記頂点座標に基づいて前記画像形状を処理し、前記頂点についての前記頂点キャッシュ・インデクス値を用いて、前記格納手段から、前記頂点の属性を検索し、前記画像形状の基本命令内の頂点の属性に基づいて、前記画像形状を処理する請求項５３に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、グラフィック処理装置に関し、さらに詳しくは、グラフィック処理装置を用いて画像を処理することに関する。
【背景技術】
【０００２】
グラフィック処理装置（ＧＰＵ）は、コンピュータ・グラフィックスを取り扱い、ディスプレイ・デバイス上に表示するために用いられる専用グラフィックス・レンダリング・デバイスである。ＧＰＵは、一連の複雑なアルゴリズムに対して、一般的な汎用中央処理装置（ＣＰＵ）よりもより効率的な処理を提供する高度な並列構造を持って構築されている。例えば、この複雑なアルゴリズムは、３次元コンピュータ・グラフィックの表示に相当する。ＧＰＵは、ＣＰＵを用いてディスプレイ・デバイスへ画像を直接的に描画するよりも、より迅速にディスプレイ・デバイス上に複雑な３次元画像を生成するために、例えば点、線、および三角形を形成するような多くの基本命令グラフィクス動作を実施することができる。
【０００３】
頂点シェーディングおよびフラグメント（ピクセル）シェーディングは、例えば、光の吸収および散乱、テクスチャ・マッピング、光の反射および屈折、シャドーイング、表面変位、および後処理効果のようなコンピュータ画像の最終表面特性を決定するために、ビデオ・ゲーム業界においてしばしば用いられている。ＧＰＵは、一般的なシェーダ・ベースのグラフィックス・コアにおいて、少なくとも３つの主要なパイプライン・ステージ、すなわち、頂点シェーダ・ステージと、基本命令セットアップおよび補間ステージと、フラグメント・シェーダ・ステージとを含んでいる。
【０００４】
頂点シェーダは、画像の画像形状に適用され、この画像形状内の頂点座標および頂点属性を生成する。頂点属性は、例えば、頂点に関連したテクスチャ座標、垂直面、および色を含んでいる。基本命令セットアップおよび除外モジュールは、例えば、点、線、または三角形のような基本命令を生成し、画像形状内の頂点に基づいて、目に見えない基本命令を除外するだろう。属性セットアップ・モジュールは、画像形状について、基本命令内の属性のグラジエントを計算する。属性グラジエント値がいったん計算されると、画像形状の基本命令が、ピクセルに変換され、隠れた基本命令およびピクセル除外が実行されうる。その後、属性補間部が、属性グラジエント値に基づいて、画像形状の基本命令内のピクセルにわたって属性を補間し、ピクセル・レンダリングのために、補間された属性値をフラグメント・シェーダに送る。フラグメント・シェーダの結果は、処理された画像をディスプレイ・デバイス上に表示するために、後処理ブロックおよびフレーム・バッファへ出力される。
【０００５】
画像形状内の頂点の属性は、ＧＰＵパイプラインに沿って各処理ステージを通じて渡される。したがって、ＧＰＵパイプラインは、大量のデータを移動させねばならず、データ・スループットを満足させるためワイドなデータ・バスを必要とする。大量のデータを、ＧＰＵパイプライン内の処理ステージのおのおのを通じて移動させることは、多くの属性を含む基本命令のボトルネックとなる。さらに、属性グラジエント・セットアップは、計算において大容量のメモリを使い、ＧＰＵパイプライン内の画像処理を遅くする。
【発明の概要】
【０００６】
一般に、本開示は、拡張型頂点キャッシュを備えたグラフィック処理装置（ＧＰＵ）を用いて、コンピュータ化された画像を処理する技術に関する。この技術は、ＧＰＵパイプラインを通過するデータ量を低減させるために、ＧＰＵパイプラインに接続された拡張型頂点キャッシュを生成することを含む。ＧＰＵパイプラインは、画像の画像形状を受け取り、拡張型頂点キャッシュ内に、画像形状内の頂点の属性を格納する。ＧＰＵパイプラインは単に、頂点を特定する頂点座標と、拡張型頂点キャッシュ内の頂点のおのおのの属性の格納場所を示す頂点キャッシュ・インデクス値とを、ＧＰＵパイプラインに沿って他の処理ステージへ渡すだけである。くつかの実施形態では、ＧＰＵパイプラインは、拡張型頂点キャッシュ内に一時的に頂点座標を格納する。
【０００７】
ＧＰＵは、少なくとも３つの主なパイプライン・ステージ、すなわち、頂点シェーダ・ステージ、基本命令セットアップおよび補間ステージ、フラグメント・シェーダ・ステージを含む。ＧＰＵパイプライン中の基本命令セットアップおよび補間ステージは、それぞれが頂点座標または頂点属性のうちの何れかを用いて実行するいくつかのサブ・ステージを含む。例えば、基本命令セットアップおよび基本命令除外は、基本命令を生成し、画像に必要な基本命令のサブセットを破棄するために、頂点座標を利用するのみである。しかしながら、属性グラジエント・セットアップおよび属性補間は、頂点属性を用いる。本明細書に記載の技術は、計算に大容量のメモリを使う属性グラジエントのセットアップを、ＧＰＵパイプライン内の属性補間の直前まで遅らせる。頂点属性は、ＧＰＵパイプライン内の属性補間前の最後のステップのうちの１つとして、属性グラジエント・セットアップの拡張型頂点キャッシュから検索される。したがって、頂点属性は、基本命令セットアップおよび基本命令除外の後まで、ＧＰＵパイプラインに導入されない。
【０００８】
このように、ＧＰＵパイプラインは単に、画像形状の基本命令、基本命令内の頂点のおのおのを特定する頂点座標、および、基本命令内の頂点のおのおのの拡張型頂点キャッシュ内の属性の格納場所を示す頂点キャッシュ・インデクス値を移動させるだけである。これらの技術は実質的に、大量の属性を含む基本命令の、ＧＰＵパイプライン内のボトルネックを取り除くことができる。さらに、これら技術は、属性グラジエント・セットアップを、ＧＰＵパイプライン内の属性補間の直前まで遅らせることによって、ＧＰＵパイプラインにおける画像処理速度を向上することができる。さらに詳しくは、ＧＰＵパイプライン内の属性グラジエント・セットアップを、画像に必要ではない基本命令のサブセットを除外した後まで遅らせることによって、属性グラジエント・セットアップが、画像に必要な基本命令のサブセットについてのみ実行されるので、計算および電力消費を実質的に低減する。
【０００９】
１つの実施形態では、本開示は、ＧＰＵに含まれるＧＰＵパイプライン内で画像の画像形状を受け取ることと、ＧＰＵパイプラインに接続された拡張型頂点キャッシュ内に、画像形状内の頂点の属性を格納することとを備える方法を提供する。この方法はさらに、頂点を特定する頂点座標と、画像形状内の頂点のおのおのについて、拡張型頂点キャッシュ内における属性の格納場所を示す頂点キャッシュ・インデクス値と、に基づいて、ＧＰＵパイプライン内の画像を処理することを備える。
【００１０】
別の実施形態では、本開示は、プログラマブルなプロセッサに対して、ＧＰＵに含まれるＧＰＵパイプライン内で画像の画像形状を受け取ることと、ＧＰＵパイプラインに接続された拡張型頂点キャッシュ内に、画像形状内の頂点の属性を格納することと、をさせる
命令群を備えるコンピュータ読取可能媒体を提供する。これら命令群はまた、プログラマブルなプロセッサに対して、頂点を特定する頂点座標と、画像形状内の頂点のおのおのについて、拡張型頂点キャッシュ内における属性の格納場所を示す頂点キャッシュ・インデクス値と、に基づいて、ＧＰＵパイプライン内の画像を処理させる。
【００１１】
別の実施形態では、本開示は、画像の画像形状内の頂点を受け取り、その画像を、ディスプレイ・デバイス上に表示するために処理するＧＰＵパイプラインと、ＧＰＵパイプラインに接続され、画像形状内の頂点の属性を格納する拡張型頂点キャッシュとを備えるデバイスを提供する。ＧＰＵパイプラインは、頂点を特定する頂点座標と、画像形状内の頂点のおのおのについて、拡張型頂点キャッシュ内における属性の格納場所を示す頂点キャッシュ・インデクス値と、に基づいて、画像を処理する。
【００１２】
更なる実施形態では、本開示は、画像の画像形状を受け取るための処理手段と、画像形状内の頂点の属性を格納するための格納手段とを備えるデバイスを提供する。この処理手段は、頂点を特定する頂点座標と、画像形状内の頂点のおのおのについて、記憶手段内における属性の格納場所を示す頂点キャッシュ・インデクス値と、に基づいて、画像を処理する。
【００１３】
本明細書で開示する技術は、ハードウェア、ソフトウェア、ファームウェア、あるいはそれらの任意の組み合わせによって実現されうる。ソフトウェアで実現される場合、本技術は、プロセッサによって実行された場合、本明細書に記載の方法のうちの１または複数を実行する命令群を備えたコンピュータ読取可能媒体によってその全てまたは一部が実現されうる。
【００１４】
１または複数の実施形態の詳細は、添付図面および以下の記述を用いて説明される。本発明のその他の特徴、目的、および利点は、これら記述、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１５】
【図１】図１は、拡張型頂点キャッシュを用いてコンピュータ画像を処理する技術を実施するグラフィック処理装置（ＧＰＵ）を含む典型的なデバイスを例示するブロック図である。
【図２】図２は、従来のＧＰＵ内のＧＰＵパイプラインを例示するブロック図である。
【図３】図３は、図１からのＧＰＵの典型的な実施形態であり、ＧＰＵパイプラインと、ＧＰＵパイプラインに接続された拡張型頂点キャッシュとを含むＧＰＵを例示するブロック図である。
【図４】図４は、図１からのＧＰＵの別の典型的な実施形態であり、ＧＰＵパイプラインと、ＧＰＵパイプラインに接続された拡張型頂点キャッシュとを含むＧＰＵを例示するブロック図である。
【図５】図５は、拡張型頂点キャッシュを用いたＧＰＵにおける画像処理の典型的な動作を例示するフローチャートである。
【図６】図６は、拡張型頂点キャッシュを用いたＧＰＵにおける画像処理の典型的な別の動作を例示するフローチャートである。
【図７】図７は、画像形状内の頂点の初期処理のための構成要素を含む、図３からのＧＰＵを詳細に例示する例示するブロック図である。
【図８Ａ】図８Ａは、画像形状内の頂点の初期処理の典型的な動作を例示するフローチャートである。
【図８Ｂ】図８Ｂは、画像形状内の頂点の初期処理の典型的な動作を例示するフローチャートである。
【発明を実施するための形態】
【００１６】
図１は、拡張型頂点キャッシュを用いてコンピュータ画像を処理する技術を実現するグラフィック処理装置（ＧＰＵ）１４を含む典型的なデバイス１０を例示するブロック図である。図１の例では、デバイス１０は、ＧＰＵ１４の動作を制御することができるコントローラ１２を含んでいる。コントローラ１２はまた、デバイス１０の動作を制御することができる。本明細書に記載の技術にしたがって、ＧＰＵ１４は、ＧＰＵパイプライン１８と、ＧＰＵパイプライン１８に接続された拡張型頂点キャッシュ１６とを含む。拡張型頂点キャッシュ１６を組み込むことによって、ＧＰＵ１４内のＧＰＵパイプライン１８を通過するデータ量を低減することができる。
【００１７】
ＧＰＵ１４は、デバイス１０内のコントローラ１２から、画像の画像形状を受け取ることができる。画像は、複雑な２次元または３次元のコンピュータ・グラフィック表示に相当する。ＧＰＵ１４は、例えばイメージ効果、背景画像、またはビデオ・ゲーム画像を、ディスプレイ・デバイス２０を通じてデバイス１０のユーザに表示するため、画像形状を処理する。これら画像は、ビデオ・フレームのシーケンスで、ビデオ・フレームとして生成されうる。ディスプレイ・デバイス２０は、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）ディスプレイ、プラズマ・ディスプレイ、あるいはデバイス１０に統合または接続されたその他のタイプのディスプレイ・デバイスを備えうる。
【００１８】
いくつかの場合、コントローラ１２は、デバイス１０内で動作するアプリケーションから画像形状を受け取ることができる。例えば、デバイス１０は、内部ハード・ドライブまたはリムーバブル・データ記憶デバイスから受け取った画像形状に基づいてビデオ・ゲーム・アプリケーションを動作させる計算デバイスを備えうる。その他の場合、コントローラ１２は、デバイス１０外部で動作するアプリケーションから、画像形状を受け取ることができる。例えば、デバイス１０は、例えばインターネットのような有線ネットワークや無線ネットワークを介して外部サーバから受け取った画像形状に基づいてビデオ・ゲーム・アプリケーションを動作させる計算デバイスを備えることができる。画像形状は、有線、無線、またはこれら両方の組み合わせでありうるストリーミング・メディアまたはブロードキャスト・メディアを介して受け取られうる。
【００１９】
デバイス１０のユーザが、イメージ効果をトリガし、背景画像を選択し、あるいは、ビデオ・ゲームを起動すると、コントローラ１２は、対応する画像形状をアプリケーションから受け取り、この画像形状をＧＰＵ１４に送る。ＧＰＵ１４は、この画像形状を処理して、ディスプレイ・デバイス２０上に表示する対応画像を準備する。例えば、ＧＰＵ１４は、受け取った画像形状によってディスプレイ・デバイス２０上に表示される３次元画像を生成するために、例えば点、線、および三角形のような多くの基本命令グラフィック動作を実施することができる。
【００２０】
本明細書に記載された技術によれば、ＧＰＵパイプライン１８は、画像の画像形状を受け取り、画像形状内の頂点の属性を、拡張型頂点キャッシュ１６内に格納する。ＧＰＵパイプライン１８は単に、頂点を特定する頂点座標と、拡張型頂点キャッシュ１６内の頂点のおのおのの属性の格納場所を示す頂点キャッシュ・インデクス値とを、ＧＰＵパイプライン１８に沿って他の処理ステージに渡すだけである。いくつかの実施形態では、ＧＰＵパイプライン１８は、拡張型頂点キャッシュ１６内に、頂点座標を一時的に格納する。このようにして、ＧＰＵパイプライン１８は、ステージ間の頂点属性の転送で滞ることなく、増加したスループットをサポートすることができる。頂点座標は、例えば、画像形状内の頂点位置を特定するＸ、Ｙ、およびＺ（幅、高さ、および深さ）座標と、この画像形状のための遠近的なパラメータを備えたＷ座標とを有する４次元座標系に基づいて、画像形状内の頂点を特定する。この頂点属性は、頂点に関連付けられた例えば色、垂直面、およびテクスチャ座標を含む。
【００２１】
ＧＰＵ１４の内のＧＰＵパイプライン１８は、少なくとも３つの主要なパイプライン・ステージ、すなわち、頂点シェーダ・ステージと、基本命令セットアップおよび補間ステージと、フラグメント・シェーダ・ステージとを含む。ＧＰＵパイプライン１８における基本命令セットアップおよび補間ステージは、おのおのが頂点座標または頂点属性のうちの何れかを用いる機能を実行するいくつかのサブ・ステージを含んでいる。例えば、基本命令セットアップおよび基本命令除外は、基本命令を生成し、画像に必要ではない基本命令のサブセットを破棄するために、頂点座標のみを用いる。基本命令は、点、線、三角形、およびその他の多角形を含む最も簡単な形状図形であり、画像形状内の１または複数の頂点を用いて生成されうる。基本命令または基本命令の一部は、基本命令または基本命令の一部が、（例えば、オブジェクトの後方に位置しており）画像フレーム内で見えない場合、
あるいは、（例えば、別のオブジェクトの後方に位置していたり、あるいは透明であり）画像フレーム内で隠れている場合、検討から除外されうる。
【００２２】
別の一例として、属性グラジエント・セットアップおよび属性補間が、頂点属性を用いて、属性グラジエント値を計算し、この属性グラジエント値に基づいて属性を補間する。本開示において記載された技術は、大容量のメモリを消費する属性グラジエントのセットアップを、ＧＰＵパイプライン内の属性補間の直前まで遅らせる。頂点属性は、ＧＰＵパイプライン１８内の属性補間前の最後のステップのうちの１つとして、属性グラジエント・セットアップの拡張型頂点キャッシュから検索されうる。このように、頂点属性は、基本命令セットアップおよび基本命令除外の後までＧＰＵパイプライン１８へ導入されない。
【００２３】
拡張型頂点キャッシュ１４内に、画像形状内の頂点の属性を格納することによって、ＧＰＵパイプライン１８に対して、画像形状の基本命令、基本命令内の頂点のおのおのを特定する頂点座標、および、基本命令内の頂点のおのおのについて、拡張型頂点キャッシュ内における属性の格納場所を示す頂点キャッシュ・インデクス値、のみを移動させることが可能となる。ＧＰＵパイプライン１８から大量の属性データを取り除くことによって、多くの属性を含む基本命令のＧＰＵパイプライン１８におけるボトルネックを実質的に取り除くことができる。さらに、属性グラジエント・セットアップを、ＧＰＵパイプライン１８内の属性補間の直前まで遅らせることによって、ＧＰＵパイプライン１８内の画像処理速度を向上することができる。さらに詳しくは、ＧＰＵパイプライン１８内の属性グラジエント・セットアップを、画像のために必要ではない基本命令のサブセットの除外後まで遅らせることによって、属性グラジエント・セットアップが、画像に必要な基本命令のサブセットについてのみ実行されるので、計算および電力に係る消費を実質的に低減することができる。
【００２４】
図１に例示する実施形態では、ディスプレイ・デバイス２０は、デバイス１０とは別のデバイスを備える。ディスプレイ・デバイス２０は、無線接続または有線接続の何れかで、デバイス１０に接続されうる。例えば、デバイス１０は、サーバ、または、無線通信サービス・プロバイダのその他の計算デバイスを備え、ディスプレイ・デバイス２０は、無線通信デバイス内に含まれうる。この場合、一例として、ディスプレイ・デバイス２０は、モバイル無線電話、衛星無線電話、無線通信カードを備えたポータブル・コンピュータ、無線通信機能を備えたパーソナル・デジタル・アシスタント（ＰＤＡ）、あるいは、無線通信可能な様々なデバイスのうちの何れかにおけるディスプレイを備えうる。別の例として、デバイス１０は、サーバ、または、有線ネットワークを介してディスプレイ・デバイス２０へ接続されたその他の計算デバイスを備え、ディスプレイ・デバイス２０は、有線通信デバイス、または、主に通信向けではないデバイス内に含まれうる。
【００２５】
他の実施形態では、ディスプレイ・デバイス２０は、デバイス１０内に統合されうる。例えば、デバイス１０は、無線通信デバイスを備え、ディスプレイ・デバイス２０は、無線通信デバイス内のディスプレイを備えうる。別の例として、デバイス１０は、デスクトップまたはノートブック・コンピュータを備え、ディスプレイ・デバイス２０は、専用モニタ、または、コンピュータ・ディスプレイを備えうる。デバイス１０はまた、有線通信デバイス、または、主に通信向けではないデバイスを備え、ディスプレイ・デバイス２０は、このデバイス内のディスプレイを備えうる。例えば、デバイス１０は、ディスプレイ・デバイス２０を含むハンドヘルド・ビデオ・ゲーム・デバイスまたはＰＤＡを備えうる。したがって、様々な実施形態では、コンピュータ化されたビデオ画像処理は、それぞれが、ビデオまたはビデオ・オブジェクトを生成するビデオ・サーバであるか、あるいは、格納されたビデオまたはビデオ・オブジェクトを検索するビデオ・アーカイブでありうる遠隔デバイスまたはローカル・デバイスから取得されうる。
【００２６】
図２は、従来のＧＰＵ２１内のＧＰＵパイプライン２２を例示するブロック図である。従来のＧＰＵ２１は、図１からのデバイス１０と実施的に類似したデバイス内に含まれうる。ＧＰＵパイプライン２２は、コマンド・エンジン２４、頂点シェーダ２６、基本命令セットアップおよび除外モジュール２８、属性グラジエント・セットアップ・モジュール３０、ラスタライザ３１、隠れた基本命令およびピクセル除外モジュール３２、属性補間部３４、フラグメント・シェーダ３６、およびポスト・プロセッサ３８を含む。コマンド・エンジン２４は、従来のＧＰＵ２１が常駐するデバイスのコントローラから、画像の画像形状およびレンダリング・コマンドを受け取る。この画像形状は、複雑な２次元または３次元コンピュータ・グラフィックの表示に相当する。コマンド・エンジン２４は、画像形状およびレンダリング・コマンドを、ＧＰＵパイプライン２２に沿って、その他の処理ステージへ渡す。
【００２７】
ＧＰＵパイプライン２２は、少なくとも３つの主要なパイプライン・ステージ、すなわち、頂点シェーダ・ステージと、基本命令セットアップおよび補間ステージと、フラグメント・シェーダ・ステージとを含む。頂点シェーダ２６は、画像形状に適用され、画像形状内の頂点における画像の表面特性を判定する。このようにして、頂点シェーダ２６は、画像形状内の頂点のおのおのの頂点座標および属性を生成する。頂点座標は、例えば、画像形状内の頂点位置を特定するＸ、Ｙ、およびＺ（幅、高さ、および深さ）座標と、この画像形状のための遠近的なパラメータを備えたＷ座標とを有する４次元座標系に基づいて、画像形状内の頂点を特定する。この頂点属性は、頂点に関連付けられた例えば色、垂直面、およびテクスチャ座標を含む。従来のＧＰＵ２１内の頂点シェーダ２６はまた、統合型頂点キャッシュを含みうる。
【００２８】
ＧＰＵパイプライン２６における基本命令セットアップおよび補間ステージは、基本命令セットアップおよび除外モジュール２８、属性グラジエント・セットアップ・モジュール３０、ラスタライザ３１、隠れた基本命令およびピクセル除外モジュール３２、属性補間部３４からなるサブ・ステージを含む。これらおのおのは、画像形状を処理するために、頂点座標または頂点属性を用いる。ＧＰＵパイプライン２２内のその他の処理ステージが、必要な入力を受け取るために、画像形状内の頂点の全ての頂点属性および頂点座標が、ＧＰＵパイプライン２２に沿って渡される。したがって、ＧＰＵパイプライン２２は、大量のデータを移動させねばならない。これは、従来式のＧＰＵ２１が、データ・スループットを満足させるワイドなデータ・バスを含むことを必要とする。さらに、頂点属性を格納して各パイプライン・ステージを平準化させるために、ファースト・イン・ファースト・アウト（ＦＩＦＯ）バッファと、その他のタイプのバッファが、ＧＰＵパイプライン２２内の処理ステージのおのおのの間に含まれる。
【００２９】
基本命令セットアップおよび除外モジュール２８は、画像形状内の１または複数の頂点を用いて基本命令を生成する。基本命令は、最も単純なタイプの形状図形であり、点、線、三角形、およびその他の多角形を含みうる。基本命令セットアップおよび除外モジュール２８はまた、基本命令内の頂点のＸＹ座標を用いたシザリング（scissoring）および背面間引き（culling）を実行することによって、基本命令を除外することができる。シザリングおよび背面間引きは、基本命令および基本命令の一部が、画像フレーム内で見えない場合、画像の具体的なフレームを処理している間、基本命令と基本命令の一部とを検討から除外する。例えば、基本命令および基本命令の一部は、画像フレーム内のオブジェクトの後方に位置しうる。基本命令セットアップおよび除外モジュール２８は、画像形状内の除外された基本命令に関連付けられた頂点の属性を無視することができる。ＧＰＵパイプライン２２内の処理ステージのおのおのを通って頂点属性を移動させることは、大量の属性を含む基本命令のボトルネックを生む。
【００３０】
属性グラジエント・セットアップ・モジュール３０は、画像形状の基本命令に関連付けられた属性グラジエントを計算する。属性グラジエントは、水平（Ｘ）方向または垂直（Ｙ）方向の何れかに移動する基本命令における、第１のピクセルにおける属性値と、第２のピクセルにおける属性値との差分を備える。属性グラジエント・セットアップ・モジュール３０は、属性グラジエントを計算するために頂点属性を利用する。属性グラジエント・セットアップ処理ステップは、計算において大容量のメモリを消費し、ＧＰＵパイプライン２２内の画像処理を遅くする。属性グラジエント・セットアップ・レートは、基本命令に含まれるピクセル数に関わらず、基本命令に関連付けられた頂点属性の数に大きく依存する。
【００３１】
属性グラジエント値がいったん計算されると、ラスタライザ３１が、基本命令内の頂点のおのおののＸＹ座標と、基本命令内に含まれるピクセル数とに基づいて、画像形状の基本命令を、ピクセルに変換する。隠れた基本命令およびピクセル除外モジュール３２は、基本命令内の頂点のＺ座標に基づくステンシル・テストと初期深さとを用いて、基本命令内の隠れたピクセルおよび隠れた基本命令を除外する。基本命令または基本命令内のピクセルは、隠れたものと考えられ、基本命令または基本命令内のピクセルが、画像フレーム内の別のオブジェクトの後ろに位置している場合、あるいは、画像フレーム内で透明である場合、画像の特定のフレームを処理している間、検討から除外されうる。
【００３２】
属性補間部３４は、属性グラジエント値に基づいて、基本命令内のピクセルに関する属性を補間する。属性補間部３４は、画像形状内の除外された基本命令に関連付けられた頂点の属性を無視することができる。補間された属性値はその後、基本命令のピクセル・レンダリングを実行するために、フラグメント・シェーダ３６へ入力される。フラグメント・シェーダ３６は、画像形状の基本命令内のピクセルにおいて、画像の表面特性を判定する。フラグメント・シェーダ３６の結果は、ポスト・プロセッサ３８へ出力され、処理された画像が、ディスプレイ・デバイス上に表示される。
【００３３】
図３は、図１のＧＰＵ１４の典型的な実施形態であり、ＧＰＵパイプライン１８Ａと、ＧＰＵパイプライン１８Ａに接続された拡張型頂点キャッシュ１６Ａとを含むＧＰＵ１４Ａを例示するブロック図である。ＧＰＵ１４Ａの内の拡張型頂点キャッシュ１６Ａを用いることによって、ＧＰＵ１４Ａ内のＧＰＵパイプライン１８Ａを通過するデータ量を減らすことができる。例示された実施形態では、ＧＰＵパイプライン１８Ａが、コマンド・エンジン４２、頂点シェーダ４４、基本命令セットアップおよび除外モジュール４６、ラスタライザ４８、隠れた基本命令およびピクセル除外モジュール５０、属性補間部５４、フラグメント・シェーダ５６、およびポスト・プロセッサ５８を含む。
【００３４】
コマンド・エンジン４２は、デバイス１０のコントローラ１２から、画像の画像形状とレンダリング・コマンドを受け取る。画像形状は、複雑な２次元または３次元コンピュータ・グラフィックスの表示に相当しうる。コマンド・エンジン４２は、拡張型頂点キャッシュ１６Ａに含まれていない画像形状内の頂点（ミスした頂点）の情報を、頂点シェーダ４４へ渡す。コマンド・エンジン４２は、拡張型頂点キャッシュ１６Ａに既に含まれている画像形状内の頂点（ヒットした頂点）の情報を、基本命令セットアップおよび除外モジュール４６へ渡す。画像形状内のヒットした頂点およびミスした頂点の初期処理は、以下により詳細に記載される。
【００３５】
ＧＰＵパイプライン１８Ａは、少なくとも３つの主要なパイプライン・ステージ、すなわち、頂点シェーダ・ステージと、基本命令セットアップおよび補間ステージと、フラグメント・シェーダ・ステージとを含む。頂点シェーダ４４は、画像形状内のミスした頂点に適用され、画像形状内のミスした頂点における画像の表面特性を判定する。このようにして、頂点シェーダ４４は、画像形状内のミスした頂点のおのおのの頂点座標および属性を生成する。その後、頂点シェーダ４４は、ミスした頂点の属性を、拡張型頂点キャッシュ１６Ａ内に格納する。ヒットした頂点のおのおのの頂点座標および属性は既に生成され、拡張型頂点キャッシュ１６Ａ内に格納されているので、頂点シェーダ４４は、画像形状内のヒットした頂点のおのおのには適用されない。
【００３６】
頂点座標は、例えば、画像形状内の頂点位置を特定するＸ、Ｙ、およびＺ（幅、高さ、および深さ）座標と、この画像形状のための遠近的なパラメータを備えたＷ座標とを有する４次元座標系に基づいて、画像形状内の頂点を特定する。頂点属性は、例えば、頂点に関連付けられた色、垂直面、およびテクスチャを含みうる。拡張型頂点キャッシュ１６Ａは、異なる数の属性および基本命令にタイプについて容易に設定されうる。画像形状におけるヒットした頂点とミスした頂点との両方の頂点座標と属性の拡張型頂点キャッシュ１６Ａ内の格納場所を示す頂点キャッシュ・インデクス値は、その後、コマンド・エンジン４２と、基本命令セットアップおよび除外モジュール４６との間に配置されたＦＩＦＯバッファ（図示せず）に記憶される。
【００３７】
ＧＰＵパイプライン１８Ａの基本命令セットアップおよび補間ステージは、画像形状を処理するために、おのおのが、頂点座標または頂点属性のうちの何れかを使用する、基本命令セットアップおよび除外モジュール４６、ラスタライザ４８、隠れた基本命令およびピクセル除外モジュール５０、属性グラジエント・セットアップ・モジュール５２、および属性補間部５４を含む。例えば、基本命令セットアップおよび除外モジュール４６、ラスタライザ４８、および、隠れた基本命令およびピクセル除外モジュール５０は、頂点座標のみを利用する。しかしながら、属性グラジエント・セットアップ・モジュール５２および属性補間部５４は、頂点属性を利用する。したがって、属性グラジエント・セットアップ・モジュール５２は、ＧＰＵパイプライン１８Ａ内の属性補間部５４の直前まで遅らされる。頂点属性は、属性補間部５４を用いて属性を補間する前に、ＧＰＵパイプライン１８Ａにおける最後のステップのうちの１つとして、属性グラジエント・セットアップ・モジュール５２の拡張型頂点キャッシュ１６Ａから検索されうる。このように、頂点属性は、隠れた基本命令およびピクセル除外モジュール５０の後であり、かつ属性補間部５４の直前までＧＰＵパイプライン１８Ａには導入されないので、相当な効率アップをもたらす。
【００３８】
拡張型頂点キャッシュ１６Ａに、画像形状内の頂点の頂点属性を格納することによって、大量のデータが、ＧＰＵパイプライン１８Ａを通過することがなくなる。これは、ＧＰＵ１８Ａに含まれる内部データ・バスの幅を低減する。データ移動の量を減らすことによってまた、ＧＰＵ１８Ａ内の電力消費も減らすことができる。さらに、コマンド・エンジン４２と、基本命令セットアップおよび除外モジュール４６との間に位置するＦＩＦＯバッファを除いて、ＦＩＦＯバッファまたは、処理ステージのおのおのの間に位置するその他のタイプのバッファが、ＧＰＵパイプライン１８Ａから取り除かれ、デバイス１０内のＧＰＵ１４Ａの領域が低減される。
【００３９】
基本命令セットアップおよび除外モジュール４６は、ＦＩＦＯバッファから、画像形状の頂点のおのおのの属性に対する頂点キャッシュ・インデクス値を受け取る。その後、基本命令セットアップおよび除外モジュール４６は、この頂点キャッシュ・インデクス値を用いて、画像形状内の頂点のおのおのの頂点座標を検索する。基本命令セットアップおよび除外モジュール４６は、画像形状内の１または複数の頂点を用いて基本命令を生成する。基本命令は最も単純なタイプの形状図形であり、点、線、三角形、および他の多角形を含みうる。
【００４０】
基本命令セットアップおよび除外モジュール４６はまた、画像形状内の頂点のＸＹ座標を用いたシザリング（scissoring）および背面間引き（culling）を実行することによって、基本命令を除外することができる。シザリングおよび背面間引きは、基本命令および基本命令の一部が、画像フレーム内で見えない場合、画像の特定のフレームを処理している間、基本命令と基本命令の一部とを検討から除外する。例えば、基本命令および基本命令の一部は、画像フレーム内のオブジェクトの後方に位置しうる。基本命令セットアップおよび除外モジュール４６は、除外された基本命令に関連付けられた属性の格納スペースを解放するように、拡張型頂点キャッシュ１６Ａへと要求することができる。実質的に、画像形状の基本命令、これら基本命令に関連付けられた頂点座標、および、基本命令内の頂点のおのおのの頂点キャッシュ・インデクス値のみを、ＧＰＵパイプライン１８Ａを通って移動させることによって、大量の属性を含む基本命令の、ＧＰＵパイプライン１８Ａにおけるボトルネックを取り除くことができる。
【００４１】
ラスタライザ４８は、画像形状の基本命令を、基本命令内の頂点のＸＹ座標、および基本命令に含まれるピクセル数に基づいて、ピクセルに変換する。隠れた基本命令およびピクセル除外モジュール５０は、基本命令内の頂点のＺ座標に基づいて、初期の深さおよびステンシル・テストを使用して、隠れた基本命令およびこれら基本命令内の隠れたピクセルを除外する。隠れた基本命令およびピクセル除外モジュール５０が、基本命令内のピクセルをすべて除外する場合、基本命令は自動的に除外される。基本命令または基本命令内のピクセルが画像フレーム内の別のオブジェクトの後ろに位置しているか、あるいは、画像フレーム内で透明である場合、画像の特定のフレームを処理している間、基本命令あるいは基本命令内のピクセルは、隠れていると考えられ、検討から除外される。隠れた基本命令およびピクセル除外モジュール５０は、拡張型頂点キャッシュ１８Ａに対して、除外された基本命令に関連付けられた属性の格納スペースを解放するように要求することができる。
【００４２】
一般に、基本命令の大部分は、基本命令セットアップおよび除外モジュール４６によって実行されるシザリングおよび背面間引きと、隠れた基本命令およびピクセル除外モジュール５０によって実行される初期の深さおよびステンシル・テストとによって除外される。したがって、全ての基本命令が除外されるまで、属性グラジエント・セットアップを遅らせることによって、画像のために必要ではない基本命令のサブセットに関連付けられた属性の属性グラジエント計算を削除することができる。
【００４３】
属性グラジエント・セットアップ・モジュール５２は、基本命令内の頂点のおのおのの頂点キャッシュ・インデクス値を用いて、拡張型頂点キャッシュ１６Ａから頂点属性を検索する。属性グラジエント・セットアップ・モジュール５２は、画像形状の基本命令に関連付けられた属性のグラジエントを計算する。属性グラジエントは、水平（Ｘ）方向または垂直（Ｙ）方向の何れかを移動する基本命令内の第１のピクセルにおける属性値と、第２のピクセルにおける属性値との間の差を持つ。属性グラジエント・セットアップ・モジュール５２が、画像形状の基本命令内の全ての頂点の属性のグラジエントを計算した後、属性グラジエント・セットアップ・モジュール５２は、拡張型頂点キャッシュ１８Ａに対して、基本命令内の頂点の属性の格納スペースを解放するように要求することができる。
【００４４】
属性グラジエント値がいったん計算されると、この属性グラジエント値に基づいて、属性補間部５４が、基本命令内のピクセルにわたる属性を補間する。その後、補間された属性値は、フラグメント・シェーダ５６へ入力され、基本命令のピクセル・レンダリングが実行される。フラグメント・シェーダ５６は、画像形状の基本命令内のピクセルにおける画像の表面特性を判定する。フラグメント・シェーダ５６の結果は、ポスト・プロセッサ５８へ出力され、処理された画像がディスプレイ・デバイス２０上から表示される。
【００４５】
計算において大容量のメモリを消費する属性グラジエント・セットアップ処理ステップを、ＧＰＵパイプライン１８Ａ内の属性補間の直前まで遅らせることによって、ＧＰＵパイプライン１８Ａ内の画像処理速度を向上し、ＧＰＵ１４Ａ内の電力消費を低減することができる。さらに、属性グラジエント・セットアップ処理ステップを、ＧＰＵパイプライン１８Ａ内の属性補間の直前まで遅らせることによって、大量のデータによる基本命令除外処理ステップとラスタライザのレイテンシを補償するための、ＧＰＵパイプライン１８Ａ内の処理ステージ間のストレージ・バッファに対する必要性をなくする。遅らされた属性グラジエント・セットアップ・モジュール５２は、属性補間部５４と算術論理演算ユニット（ＡＬＵ）を共有し、ゲートを節約することができる。ＧＰＵ１８Ａは、より少ないゲートを用いるか、あるいは、現在のゲートの効率を改善することができる。
【００４６】
ある場合には、頂点シェーダ４４は、画像形状内のミスした頂点に適用されないかもしれない。画像形状内の全ての頂点の属性および頂点座標は、ＧＰＵパイプライン１８Ａの外部にあると判定されると仮定されうる。したがって、ミスした頂点を用いて生成された基本命令は、ミスした頂点の属性を計算するために頂点シェーダ４４を必要としない。この場合、拡張型頂点キャッシュ１６Ａは、拡張型頂点バッファとして動作することができる。コマンド・エンジン４２は、拡張型頂点バッファ内の属性の格納場所を特定する頂点インデクス値を割り当て、画像形状内の頂点のおのおのの予め定めた頂点座標および属性を、拡張型頂点バッファへ送ることができる。
【００４７】
図４は、図１のＧＰＵ１４Ａの別の実施形態であり、ＧＰＵパイプライン１８Ｂと、ＧＰＵパイプライン１８Ｂに接続された拡張型頂点キャッシュ１６Ｂとを含むＧＰＵ１４Ｂを例示するブロック図である。例示する実施形態では、ＧＰＵパイプライン１８Ｂは、コマンド・エンジン６２、頂点シェーダ６４、基本命令セットアップおよび除外モジュール６６、ラスタライザ６８、隠れた基本命令およびピクセル除外モジュール７０、属性グラジエント・セットアップ・モジュール７２、属性補間部７４、フラグメント・シェーダ７６、およびポスト・プロセッサ７８を含む。図４に例示するＧＰＵ１４Ｂは本質的に、画像形状における頂点の初期処理を除いて、図３に例示するＧＰＵ１４Ａと類似の動作をする。
【００４８】
コマンド・エンジン６２は、デバイス１０のコントローラ１２から、画像の画像形状およびレンダリング・コマンドを受け取る。コマンド・エンジン６２は、この画像形状およびレンダリング・コマンドを、ＧＰＵパイプライン１８Ｂに沿ってその他の処理ステージへ渡す。言い換えれば、コマンド・エンジン６２は、画像形状内のすべての頂点の情報を、頂点シェーダ６４へ渡す。
【００４９】
本実施形態において、頂点シェーダ６４は、画像形状内のすべての頂点に適用される。頂点シェーダ６４は、画像形状に適用され、画像形状内の頂点における画像の表面特性を判定する。このようにして、頂点シェーダ６４は、画像形状内の頂点のおのおのの頂点座標および属性を生成する。その後、頂点シェーダ６４は、拡張型頂点キャッシュ１６Ｂ内に、属性のみを格納する。頂点シェーダ６４は、画像形状内の頂点のおのおのについて、拡張型頂点キャッシュ１６Ｂ内における属性の格納場所を示す頂点キャッシュ・インデクス値、および頂点座標を、ＧＰＵパイプライン１８Ｂに沿って渡す。
【００５０】
頂点シェーダ６４は、画像形状内の頂点の頂点キャッシュ・インデクス値と頂点座標とを、基本命令セットアップおよび除外モジュール６６へ直接渡すので、全てのＦＩＦＯバッファ、あるいは処理ステージのおのおのの間に配置されたその他のタイプのバッファが、ＧＰＵパイプライン１８Ｂから省略される。基本命令セットアップおよび除外モジュール６６は、画像形状内の１または複数の頂点を用いて、基本命令を生成する。基本命令セットアップおよび除外モジュール６６はまた、画像形状内の頂点のＸＹ座標を用いたシザリング（scissoring）および背面間引き（culling）を実行することによって、基本命令を除外することができる。基本命令セットアップおよび除外モジュール４６は、除外された基本命令に関連付けられた属性のための格納スペースを解放するように拡張型頂点キャッシュ１６Ｂに対して要求することができる。
【００５１】
ラスタライザ６８は、画像形状の基本命令を、基本命令に含まれるピクセル数、および、基本命令内の頂点のＸＹ座標に基づいて、ピクセルに変換する。隠れた基本命令およびピクセル除外モジュール７０は、基本命令内の頂点のＺ座標に基づいて、初期の深さおよびステンシル・テストを用いて、隠れた基本命令および基本命令内の隠れたピクセルを除外する。隠れた基本命令およびピクセル除外モジュール７０は、除外された基本命令に関連付けられた属性のための格納スペースを解放するように拡張型頂点キャッシュ１６Ｂに対して要求することができる。
【００５２】
属性グラジエント・セットアップ・モジュール７２は、基本命令内の頂点のおのおのの頂点キャッシュ・インデクス値を用いて、拡張型頂点キャッシュ１６Ｂから頂点属性を検索する。属性グラジエント・セットアップ・モジュール７２は、画像形状の基本命令に関連付けられた属性のグラジエントを計算する。属性グラジエント・セットアップ・モジュール７２が画像形状の基本命令内のすべての頂点の属性のグラジエントを計算した後、属性グラジエント・セットアップ・モジュール７２は、基本命令内の頂点の属性のための格納スペースを解放するように拡張型頂点キャッシュ１６Ｂに要求することができる。
【００５３】
属性グラジエント値がいったん計算されると、属性補間部７４が、この属性グラジエント値に基づいて、基本命令内のピクセルに対する属性を補間する。その後、補間された属性値は、フラグメント・シェーダ７６へ入力され、基本命令のピクセル・レンダリングが実行される。フラグメント・シェーダ７６は、画像形状の基本命令内のピクセルにおける画像の表面特性を判定する。フラグメント・シェーダ７６の結果は、ポスト・プロセッサ７８へ出力され、処理された画像がディスプレイ・デバイス２０から表示される。
【００５４】
図５は、拡張型頂点キャッシュを用いてＧＰＵ内の画像を処理する典型的な動作を例示するフローチャートである。この動作は、図１のＧＰＵ１４に関して記述される。拡張型頂点キャッシュ１６が、デバイス１０の製造中にＧＰＵ１４内に生成され、ＧＰＵパイプライン１８に接続されうる（８０）。拡張型頂点キャッシュ１６は、異なる数の属性および基本命令タイプについて容易に設定されうる。
【００５５】
ＧＰＵ１４は、デバイス１０のコントローラ１２から、画像の画像形状およびレンダリング・コマンドを受け取る（８２）。画像形状は、複雑な２次元または３次元のコンピュータ・グラフィックの表示に相当しうる。ＧＰＵ１４は、デバイス１０に接続されたディスプレイ・デバイス２０から画像を表示するための処理のために、画像形状およびレンダリング・コマンドをＧＰＵパイプライン１８に送る。ＧＰＵパイプライン１８は、画像形状内の頂点の属性を、拡張型頂点キャッシュ１６内に格納する（８４）。いくつかの実施形態では、ＧＰＵパイプライン１８は、画像形状内の頂点の頂点座標を、拡張型頂点キャッシュ１６内に一時的に格納する。
【００５６】
その後、ＧＰＵパイプライン１８は、頂点を特定する頂点座標と、拡張型頂点キャッシュ１６内における頂点のおのおのの属性の格納場所を示す頂点キャッシュ・インデクス値とを、ＧＰＵパイプライン１８に沿って、その他の処理ステージへ送る（８６）。ＧＰＵパイプライン１８は、画像形状内の頂点のおのおのの頂点キャッシュ・インデクス値と、頂点座標とに基づいて、画像を処理する（８８）。
【００５７】
図６は、拡張型頂点キャッシュを備えたＧＰＵを用いて画像を処理する別の典型的な動作を例示するフローチャートである。この動作は、図３のＧＰＵ１４Ａに関して記述される。拡張型頂点キャッシュ１６Ａは、ＧＰＵパイプライン１８Ａに接続されており、デバイス１０の製造中、ＧＰＵ１４Ａ内に生成されうる（９０）。拡張型頂点キャッシュ１６Ａは、異なる数の属性および基本命令タイプについて容易に設定されうる。
【００５８】
コマンド・エンジン４２は、デバイス１０のコントローラ１２から、画像の画像形状およびレンダリング・コマンドを受け取る（９２）。この画像形状は、複雑な２次元または３次元のコンピュータ・グラフィックの表示に相当する。コマンド・エンジン４２は、拡張型頂点キャッシュ１６Ａに含まれてない画像形状内の頂点（ミスした頂点）の情報を、頂点シェーダ４４へ渡す。コマンド・エンジン４２は、拡張型頂点キャッシュ１６Ａに既に含まれている画像形状内の頂点（ヒットした頂点）の情報を、基本命令のセットアップおよび除外モジュール４６に渡す。
【００５９】
頂点シェーダ４４は、画像形状内のミスした頂点に適用され、画像形状内のミスした頂点のおのおのの属性よび頂点座標を生成する（９４）。その後、頂点シェーダ４４は、ミスした頂点の属性と、頂点座標とを、拡張型頂点キャッシュ１６Ａ内に格納する（９６）。ヒットした頂点のおのおのの属性および頂点座標は、既に生成され、拡張型頂点キャッシュ１６Ａ内に格納されているので、頂点シェーダ４４は、画像形状内のヒットした頂点のおのおのには適用されない。その後、画像形状内のヒットした頂点およびミスした頂点の両方の属性について、拡張型頂点キャッシュ１６Ａ内の格納場所を示す頂点キャッシュ値が、コマンド・エンジン４２と、基本命令セットアップおよび除外モジュール４６との間に配置されたＦＩＦＯバッファに記憶される。
【００６０】
基本命令セットアップおよび除外モジュール４６は、画像形状内の頂点のおのおのの属性の頂点キャッシュ・インデクス値を、ＦＩＦＯバッファから受け取る。その後、基本命令セットアップおよび除外モジュール４６は、頂点キャッシュ・インデクス値を用いて、拡張型頂点キャッシュ１６Ａから、画像形状内の頂点のおのおのの頂点座標を検索する（９８）。基本命令セットアップおよび除外モジュール４６は、画像形状内の１または複数の頂点を用いて基本命令を生成し、画像形状内の頂点のＸＹ座標に基づいて、基本命令を除外する（１００）。基本命令セットアップおよび除外モジュール４６は、除外された基本命令に関連付けられた属性の格納スペースを解放するように、拡張型頂点キャッシュ１６Ａに要求することができる。
【００６１】
ラスタライザ４８は、画像形状の基本命令を、基本命令内の頂点のＸＹ座標、および基本命令に含まれるピクセル数に基づいて、ピクセルに変換する（１０２）。隠れた基本命令およびピクセル除外モジュール５０は、基本命令内の頂点のＺ座標に基づいて、画像の基本命令内の隠れた基本命令および隠れたピクセルを除外する（１０４）。隠れた基本命令およびピクセル除外モジュール５０は、除外された基本命令に関連付けられた属性の格納スペースを解放するように、拡張型頂点キャッシュ１６Ａに要求することができる。
【００６２】
属性グラジエント・セットアップ・モジュール５２は、基本命令内の頂点の頂点キャッシュ・インデクス値を用いて、拡張型頂点キャッシュ１６Ａから頂点属性を検索する（１０６）。属性グラジエント・セットアップ・モジュール５２は、画像形状の基本命令に関連付けられた属性のグラジエントを計算する（１０８）。属性グラジエント・セットアップ・モジュール５２が、画像形状の基本命令内の全ての頂点の属性のグラジエントを計算した後、属性グラジエント・セットアップ・モジュール５２は、基本命令内の頂点の属性の格納スペースを解放するように、拡張型頂点キャッシュ１６に対して要求することができる。属性グラジエント値がいったん計算されると、属性補間部５４が、この属性グラジエント値に基づいて、基本命令内のピクセルに対する属性を補間する（１１０）。フラグメント・シェーダ５６は、補間された属性値に基づいて、画像形状の基本命令のピクセル・レンダリングを実行する（１１２）。フラグメント・シェーダ５６は、画像形状の基本命令内のピクセルにおける画像の表面特性を判定する。フラグメント・シェーダ５６の結果は、ポスト・プロセッサ５８に出力され、処理された画像が、デバイス１０に接続されたディスプレイ・デバイス２０から表示される。
【００６３】
図７は、画像形状内の頂点の初期処理のための構成要素を含む図３からのＧＰＵ１４Ａをより詳細に例示するブロック図である。例示した実施形態では、ＧＰＵパイプライン１８Ａは、コマンド・エンジン４２と基本命令セットアップおよび除外モジュール４６との間に配置された、頂点判定モジュール１２０、基準カウント更新モジュール１２２、および基本命令アセンブラ１２４を含む。さらに、ＧＰＵパイプライン１８Ａは、頂点判定モジュール１２０と頂点シェーダ４４との間に、ミスした頂点モジュール１２６を含んでいる。拡張型頂点キャッシュ１６Ａは、基準カウント・ストレージ１２８と、ストレージ解放モジュール１２９とを含む。
【００６４】
コマンド・エンジン４２は、デバイス１０のコントローラ１２から、画像の画像形状およびレンダリング・コマンドを受け取る。その後、コマンド・エンジン４２は、画像形状内の頂点の頂点インデクスを、頂点判定モジュール１２０に送る。画像形状内の頂点のおのおのの頂点インデクスが、デバイス１０のコントローラ１２またはコマンド・エンジン４２によって生成されうる。頂点判定モジュール１２０は、画像形状内の頂点のおのおのが、拡張型頂点キャッシュ１６Ａに含まれているかを、対応する頂点インデクスに基づいて判定する。拡張型頂点キャッシュ１６Ａに含まれていない画像形状内の頂点は、本明細書において、「ミスした頂点」と呼ばれる。拡張型頂点キャッシュ１６Ａに既に含まれている画像形状内の頂点は、本明細書において、「ヒットした頂点」と呼ばれる。
【００６５】
ヒットした頂点の場合、頂点判定モジュール１２０は、ヒットした頂点のおのおのの属性と頂点座標の拡張型頂点キャッシュ１６Ａ内の格納場所を示す頂点キャッシュ・インデクス値をＧＰＵパイプライン１８Ａ内の基準カウント更新モジュール１２２へ提供する。ミスした頂点の場合、頂点判定モジュール１２０は、拡張型頂点キャッシュ１６Ａ内の格納スペースを求める要求を、ミスした頂点のおのおのについて、ミスした頂点モジュール１２６へ送る。ミスした頂点モジュール１２６は、頂点キャッシュ・インデクス値を、拡張型頂点キャッシュ１６Ａ内のミスした頂点の属性と頂点座標の格納場所を示すミスした頂点のおのおのに割り当てる。その後、頂点判定モジュール１２０は、ミスした頂点の属性と頂点座標の拡張型頂点キャッシュ１６Ａ内の格納場所を示す頂点キャッシュ・インデクス値を、ＧＰＵパイプライン１８Ａ内の基準カウント更新モジュール１２２へ提供する。
【００６６】
ミスした頂点モジュール１２６は、ミスした頂点の情報を読み取り、関連するフォーマット変換を実行する。例えば、このフォーマット変換は、整数から浮動少数点への変換、１６ビット浮動少数点から３２ビット浮動少数点への変換、あるいは、その他のタイプのフォーマット変換を備えうる。ミスした頂点モジュール１２６は、ミスした頂点の情報に基づいて頂点スレッドを生成し、この頂点スレッドを頂点シェーダ４４へ送る。頂点シェーダ４４は、ミスした頂点のおのおのに提供され、画像形状内のミスした頂点の属性と頂点座標を生成する。頂点シェーダ４４は、その後、拡張型頂点キャッシュ１６Ａ内の割り当てられた格納場所に、ミスした頂点の属性および頂点座標を格納する。
【００６７】
基準カウント更新モジュール１２２は、ミスした頂点の頂点キャッシュ・インデクス値を受け取ると、ミスした頂点のおのおのの基準カウント・ストレージ１２８内の基準カウントを、ゼロに初期化する。基準カウント更新モジュール１２２は、その後、画像形状内のヒットした頂点およびミスした頂点の全てについて、基準カウント・ストレージ１２８内の基準カウントを、１ずつインクリメントする。
【００６８】
基本命令アセンブラ１２４は、画像形状内の１または複数の頂点を用いて、予備的な基本命令を生成する。基本命令アセンブラ１２４が、頂点のおのおのが一度のみ使用される予備的な基本命令をアセンブルする場合、頂点の基準カウント・ストレージ１２８内の基準カウントはインリメントされず、変わらない。基本命令アセンブラ１２４が、頂点のうちの少なくとも１つが２度以上使用された予備的な基本命令をアセンブルする場合、基本命令アセンブラ１２４は、頂点が再使用される毎に、少なくとも１つの頂点について、基準カウント・ストレージ１２８内の基準カウントを、１ずつインクリメントする。例えば、基本命令において頂点が２度使用されるのであれば、頂点の基準カウント・ストレージ１２８内の基準カウントは、２に等しくなるように、１ずつインクリメントされるだろう。基本命令アセンブラ１２４は、基本命令アセンブラ１２４と、基本命令セットアップおよび除外モジュール４６との間に配置されたＦＩＦＯバッファ内の予備的基本命令内に、頂点の頂点キャッシュ・インデクス値を書き込む。
【００６９】
基本命令セットアップおよび除外モジュール４６は、画像形状の頂点のおのおのの属性の頂点キャッシュ・インデクスを、ＦＩＦＯバッファから受け取る。その後、基本命令セットアップおよび除外モジュール４６は、この頂点キャッシュ・インデクス値を使用して、拡張型頂点キャッシュ１６Ａから、画像形状内の頂点のおのおのの頂点座標を検索する。さらに詳しくは、基本命令セットアップおよび除外モジュール４６は、頂点キャッシュ・インデクス値を用いて、所与の基本命令内の全ての頂点が、拡張型頂点キャッシュ１６Ａ内で利用可能であるかを確認する。頂点が準備できていなければ、基本命令セットアップおよび除外モジュール４６は待機するだろう。頂点が準備できると、基本命令セットアップおよび除外モジュールは、対応する頂点キャッシュ・インデクス値に基づいて、基本命令内の頂点のおのおのの頂点座標を読み取る。
【００７０】
基本命令セットアップおよび除外モジュール４６は、画像形状内の頂点のおのおのについて検索された頂点座標に基づいて画像を処理する。基本命令セットアップおよび除外モジュール４６は、画像形状内の１または複数の頂点を用いて基本命令を生成し、画像形状内の頂点のＸＹ座標に基づいて、基本命令を除外する。基本命令セットアップおよび除外モジュール４６が、画像形状の基本命令を除外する場合、基本命令セットアップおよび除外モジュール４６は、ストレージ解放モジュール１２９に対して、除外された基本命令内の頂点の属性の、拡張型頂点キャッシュ１６Ａ内の格納スペースを解放するよう要求を送る。ストレージ解放モジュール１２９は、この要求を受け取ると、除外された基本命令内の頂点の基準カウント・ストレージ１２８内の基準カウントを、１ずつデクリメントする。基準カウント・ストレージ１２８内の基準カウントがゼロにデクリメントされると、ストレージ解放モジュール１２９は、除外された基本命令内の頂点の属性の拡張型頂点キャッシュ１６Ａ内の格納スペースを解放する。
【００７１】
その後、基本命令セットアップおよび除外モジュール４６は、画像形状内の頂点のおのおのの頂点キャッシュ・インデクス値と頂点座標とをＧＰＵパイプライン１８Ａに沿って渡す。ＧＰＵパイプライン１８Ａ内の処理ステージは、上述したようにして画像形状内の頂点の頂点座標に基づいて画像を処理する。例えば、隠れた基本命令およびピクセル除外モジュール５０は、基本命令内の頂点のＺ座標に基づく初期の深さおよびステンシル・テストを用いて、隠れた基本命令と、この中の隠れたピクセルとを除外する。本質的に基本命令セットアップおよび除外モジュール４６と同様に、隠れた基本命令およびピクセル除外モジュール５０は、画像形状の基本命令を除外する場合、隠れた基本命令およびピクセル除外モジュール５０は、除外された基本命令内の頂点の属性の、拡張型頂点キャッシュ１６Ａにおける格納スペースを解放するようにストレージ解放モジュール１２９に対して要求を送る。この要求を受け取ると、ストレージ解放モジュール１２９は、除外された基本命令内の頂点について、基準カウント・ストレージ１２８における基準カウントを１ずつデクリメントする。基準カウント・ストレージ１２８内の基準カウントが０までデクリメントされると、ストレージ解放モジュール１２９は、除外された基本命令内の頂点の属性の、拡張型頂点キャッシュ１６Ａ内の格納スペースを解放する。
【００７２】
属性グラジエント・セットアップ・モジュール５２は、基本命令内の頂点の頂点キャッシュ・インデクス値を用いて、拡張型頂点キャッシュ１６Ａから頂点属性を検索する。属性グラジエント・セットアップ・モジュール５２は、画像形状内の頂点のおのおのの検索された属性に基づいて、画像を処理する。属性グラジエント・セットアップ・モジュール５２は、画像形状の基本命令に関連付けられた属性のグラジエントを計算する。属性グラジエント・セットアップ・モジュール５２が、画像形状の基本命令内のすべての頂点の属性のグラジエントを計算した後、属性グラジエント・セットアップ・モジュール５２は、基本命令の頂点の属性の、拡張型頂点キャッシュ１６Ａ内の格納スペースを解放する要求を、ストレージ解放モジュール１２９に送る。この要求を受け取ると、ストレージ解放モジュール１２９は、基本命令内の頂点に関する基準カウント・ストレージ１２８内の基準カウントを１ずつデクリメントする。基準カウント・ストレージ１２８内の基準カウントが０までデクリメントされると、ストレージ解放モジュール１２９は、基本命令の頂点の属性の、拡張型頂点キャッシュ１６Ａ内の格納スペースを解放する。ＧＰＵパイプライン１８Ａ内の残りの処理ステージは、上述したように、画像形状内の頂点の属性および頂点座標に基づいて画像を処理する。
【００７３】
図８Ａおよび図８Ｂは、画像形状内の頂点の初期処理の典型的な動作を例示するフローチャートである。この動作は、図７のＧＰＵ１４Ａに関連して記述される。基準カウント・ストレージ１２８およびストレージ解放モジュール１２９を含む拡張型頂点キャッシュ１６Ａは、デバイス１０の製造中にＧＰＵ１４Ａ内に生成され、ＧＰＵパイプライン１８Ａに接続されうる。基準カウント・ストレージ１２８は、画像形状内の頂点のおのおののための基準カウントを格納する。ストレージ解放モジュール１２９は、拡張型頂点キャッシュ１６Ａ内の格納スペースの割り当ておよび解放と、基準カウント・ストレージ１２８内の基準カウントの更新とを管理する。
【００７４】
コマンド・エンジン４２は、デバイス１０のコントローラ１２から、画像の画像形状およびレンダリング・コマンドを受け取る。頂点判定モジュール１２０は、コマンド・エンジン４２から、画像形状内の頂点の頂点インデクスを受け取る（１３０）。頂点判定モジュール１２０は、対応する頂点インデクスに基づいて、画像形状内の頂点のおのおのが、拡張型頂点キャッシュ１６Ａ内に含まれているかを判定する（１３１）。拡張型頂点キャッシュ１６Ａに含まれていない画像形状内の頂点は、ここでは、「ミスした頂点」と呼ばれる。拡張型頂点キャッシュ１６Ａに既に含まれている画像形状内の頂点は、ここでは、「ヒットした頂点」と呼ばれる。
【００７５】
ヒットした頂点の場合、頂点判定モジュール１２０は、ヒットした頂点のおのおのの属性および頂点座標の拡張型頂点キャッシュ１６Ａ内の格納場所を示す頂点キャッシュ・インデクス値を、ＧＰＵパイプライン１８Ａ内の基準カウント更新モジュール１２２に提供する（１３６）。ミスした頂点の場合、頂点判定モジュール１２０が、拡張型頂点キャッシュ１６Ａ内の格納スペースに対する要求を、ミスした頂点のおのおのについて、ミスした頂点モジュール１２６へ送る（１３２）。ミスした頂点モジュール１２６は、頂点キャッシュ・インデクス値を、拡張型頂点キャッシュ１６Ａ内のミスした頂点の属性および頂点座標の格納場所を示す、ミスした頂点のおのおのへ割り当てる（１３４）。その後、頂点判定モジュール１２０は、ミスした頂点の属性および頂点座標の拡張型頂点キャッシュ１６Ａにおける格納場所を示す頂点キャッシュ・インデクス値を、ＧＰＵパイプライン１８Ａ内の基準カウント更新モジュール１２２へ提供する（１３６）。
【００７６】
ミスした頂点モジュール１２６は、ミスした頂点の情報を読み取り、関連するフォーマット変換を行う。ミスした頂点モジュール１２６は、ミスした頂点の情報に基づいて頂点スレッドを生成し、その頂点スレッドを頂点シェーダ４４へ送る（１３８）。頂点シェーダ４４は、ミスした頂点のおのおのに適用され、画像形状内のミスした頂点の属性および頂点座標を生成する（１４０）。その後、頂点シェーダ４４は、ミスした頂点の属性および頂点座標を、拡張型頂点キャッシュ１６Ａ内の割り当てられた格納場所に格納する（１４２）。
【００７７】
ミスした頂点の頂点キャッシュ・インデクス値を受け取ると、基準カウント更新モジュール１２２は、ミスした頂点のおのおのの基準カウント・ストレージ１２８内の基準カウントを、ゼロに初期化する。基準カウント更新モジュール１２２は、その後、画像形状内のヒットした頂点およびミスした頂点の全てについて、基準カウント・ストレージ１２８内の基準カウントを、１ずつインクリメントする（１４６）。
【００７８】
基本命令アセンブラ１２４は、画像形状内の１または複数の頂点を用いて予備的な基本命令を生成する（１４８）。基本命令アセンブラ１２４が、頂点のおのおのが一度のみ使用される予備的な基本命令をアセンブルすると、頂点のための基準カウント・ストレージ１２８内の基準カウントはインクリメントされず変わらない。基本命令アセンブラ１２４が、頂点のうちの少なくとも１つが２度以上使用された予備的な基本命令をアセンブルした場合、頂点が再使用される毎に、基本命令アセンブラ１２４は、少なくとも１つの頂点について、基準カウント・ストレージ１２８内の基準カウントを１ずつインクリメントする（１５０）。基本命令アセンブラ１２４は、基本命令アセンブラ１２４と、基本命令セットアップおよび除外モジュール４６との間に配置されたＦＩＦＯバッファ内に、予備的な基本命令内の頂点の頂点キャッシュ・インデクス値を書き込む（１５２）。
【００７９】
基本命令セットアップおよび除外モジュール４６は、このＦＩＦＯバッファから、画像形状の頂点のおのおのの属性の頂点キャッシュ・インデクス値を受け取る。その後、基本命令セットアップおよび除外モジュール４６は、この頂点キャッシュ・インデクス値を用いて、拡張型頂点キャッシュ１６Ａから、画像形状内の頂点のおのおのの頂点座標を検索する（１５４）。基本命令セットアップおよび除外モジュール４６は、画像形状内の頂点のおのおのの検索された頂点座標に基づいて、画像を処理する（１５６）。画像形状の基本命令を除外すると、基本命令セットアップおよび除外モジュール４６は、除外された基本命令内の頂点の属性の、拡張型頂点キャッシュ１６Ａ内の格納スペースを解放するようにとの要求を、ストレージ解放モジュール１２９へ送る。この要求を受け取ると、ストレージ解放モジュール１２９は、除外された基本命令内の頂点について、基準カウント・ストレージ１２８内の基準カウントを１ずつデクリメントする（１５８）。基準カウント・ストレージ１２８内の基準カウントが０までデクリメントされると、ストレージ解放モジュール１２９は、除外された基本命令内の頂点の属性の、拡張型頂点キャッシュ１６Ａ内の格納スペースを解放する（１６０）。
【００８０】
その後、基本命令セットアップおよび除外モジュール４６は、画像形状内の頂点のおのおのの頂点キャッシュ・インデクス値と頂点座標とを、ＧＰＵパイプライン１８Ａに沿って渡す。ＧＰＵパイプライン１８Ａ内の処理ステージは、上述したようにして、画像形状内の頂点の頂点座標に基づいて画像を処理する。属性グラジエント・セットアップ・モジュール５２は、基本命令内の頂点の頂点キャッシュ・インデクス値を用いて、拡張型頂点キャッシュ１６Ａから、頂点座標を検索する（１６２）。属性グラジエント・セットアップ・モジュール５２は、画像形状内の頂点のおのおのの検索された属性に基づいて、画像を処理する（１６４）。
【００８１】
画像形状の基本命令内のすべての頂点の属性のグラジエントを計算すると、属性グラジエント・セットアップ・モジュール５２が、基本命令内の頂点の属性の、拡張型頂点キャッシュ１６Ａ内の格納場所を解放するようにとの要求を、ストレージ解放モジュール１２９に送る。この要求を受け取ると、ストレージ解放モジュール１２９は、基本命令内の頂点について、基準カウント・ストレージ１２８内の基準カウントを１ずつデクリメントする（１６６）。基準カウント・ストレージ１２８内の基準カウントが、０までデクリメントされると、ストレージ解放モジュール１２９は、基本命令内の頂点の属性の、拡張型頂点キャッシュ１６Ａ内の格納スペースを解放する（１６８）。
【００８２】
多くの実施形態が記述された。しかしながら、これらの実施形態への様々な変更が可能であり、本明細書で示された原理は、他の実施形態へも同様に適用されうる。本明細書に記載される方法は、ハードウェア、ソフトウェア、および／またはファームウェア内で実施されうる。そのような方法の様々なタスクは、例えば、マイクロプロセッサ、組込式コントローラ、あるいはＩＰコアのような論理素子からなる１または複数のアレイによって実行可能な命令群のセットとして実施されうる。一例において、１または複数のそのようなタスクが、モバイル・ステーション・モデム・チップ内で、あるいは、例えばセルラ電話のようなパーソナル通信デバイスからなる様々なデバイスの動作を制御するように構成されたチップセット内での実行のために構成される。
【００８３】
本開示に記述された技術は、汎用マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向けＩＣ（ＡＳＩＣ）、フィールドプログラム可能なゲート・アレイ（ＦＰＧＡ）、あるいはその他の等価な論理デバイス内に実装されうる。ソフトウェアで実現される場合、これら技術は、例えば、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）、電子的消去可能プログラマブル読取専用メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリ等のようなコンピュータ読取可能媒体上に命令群として組み込まれうる。これら命令群は、１または複数のプロセッサに対して、本開示に記述された機能のある局面を実行させる。
【００８４】
更なる例として、実施形態は、部分的または全体的に、ハードワイヤ回路として、特定用途向け集積回路に組み込まれた回路構成として、あるいは、マイクロプロセッサやその他のデジタル信号処理ユニットのような論理素子のアレイによって実行可能な命令群である機械読取可能コードとして、不揮発性記憶装置へロードされたファームウェア・プログラムやデータ記憶媒体から／へロードされたソフトウェア・プログラムとして実現されうる。このデータ記憶媒体は、例えば（限定する訳ではないが、動的または静的なＲＡＭ、ＲＯＭ、および／またはフラッシュＲＡＭを含む）半導体メモリ、あるいは強誘電体メモリ、オブシンスキー効果メモリ、重合体メモリ、あるいは相変化メモリ、はたまた、磁気ディスクや光ディスクのようなディスク媒体のような記憶素子のアレイでありうる。
【００８５】
本開示では、拡張型頂点キャッシュを備えたＧＰＵを使って画像を処理する様々な技術が記述された。これら技術は、ＧＰＵパイプラインを通じて渡されるデータの量を低減するために、ＧＰＵパイプラインの外部に拡張型頂点キャッシュを生成することを含む。本明細書に記載の技術によれば、ＧＰＵパイプラインは、画像の画像形状を受け取り、この画像形状内の頂点の属性を、拡張型頂点キャッシュ内に格納する。いくつかの実施形態では、ＧＰＵパイプラインは、拡張型頂点キャッシュ内に頂点座標を一時的に格納する。ＧＰＵパイプラインは単に、頂点を特定する頂点座標と、拡張型頂点キャッシュ内の頂点のおのおのの属性のための格納場所を示す頂点キャッシュ・インデクス値とを、ＧＰＵパイプラインに沿って、他の処理ステージに渡すだけである。
【００８６】
さらに、本明細書に記載の技術は、計算において大容量のメモリを消費する属性グラジエントのセットアップを、ＧＰＵパイプライン内の属性補間の直前まで遅らせる。頂点属性は、属性補間前におけるＧＰＵパイプライン内の最後のステップのうちの１つとして、属性グラジエント・セットアップの拡張型頂点キャッシュから検索されうる。したがって、頂点属性は、基本命令セットアップおよび基本命令除外の後まで、ＧＰＵパイプラインに導入されない。このように、ＧＰＵパイプラインは単に、画像形状の基本命令と、基本命令内の頂点のおのおのを特定する頂点座標と、基本命令内の頂点のおのおのの頂点キャッシュ・インデクス値とを移動させるだけである。
【００８７】
これら技術は実質的に、多数の属性を含む基本命令に関するＧＰＵパイプライン内のボトルネックを取り除く。さらに、これら技術は、属性グラジエント・セットアップを、ＧＰＵパイプライン内の属性補間の直前まで遅らせることによって、ＧＰＵパイプラインにおける画像処理速度を向上する。さらに詳しくは、属性グラジエント・セットアップは、画像に必要な基本命令のサブセットでしか実行されないので、画像に必要ではない基本命令のサブセットの除外後まで、ＧＰＵパイプライン内の属性グラジエント・セットアップを遅らせることによって、計算量と電力消費とを実質的に低減することができる。これらおよびその他の実施形態は、特許請求の範囲内である。
【図１】
2009545825.tif 000003
【図２】
2009545825.tif 000004
【図３】
2009545825.tif 000005
【図４】
2009545825.tif 000006
【図５】
2009545825.tif 000007
【図６】
2009545825.tif 000008
【図７】
2009545825.tif 000009
【図８Ａ】
2009545825.tif 000010
【図８Ｂ】
2009545825.tif 000011
【国際調査報告】
2009545825.tif 000012
2009545825.tif 000013
2009545825.tif 000014