(57)【特許請求の範囲】
【請求項１】
グラフィックス処理ユニット（ＧＰＵ）の処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成することと、ここで、前記頂点座標は、前記頂点の各々のロケーションとパースペクティブ・パラメータとを含み、前記画像ジオメトリは、グラフィックス画像を表す、
前記ＧＰＵの前記処理パイプライン内で、前記頂点座標に基づいて前記画像ジオメトリ内の可視プリミティブを識別することと、
前記可視プリミティブを識別することに応答して、前記グラフィックス画像の表面特性を判定するために、前記ＧＰＵの前記処理パイプライン内で、前記可視プリミティブの前記頂点のみについて頂点アトリビュートを生成することを含む方法。
【請求項２】
前記頂点座標を生成することは、前記画像ジオメトリ内の各プリミティブの前記頂点における前記グラフィックス画像の前記表面特性の前記判定中に前記頂点座標を生成することを含む、請求項１に記載の方法。
【請求項３】
前記頂点アトリビュートは、各頂点に関連付けられた色パラメータまたはテクスチャパラメータのうちの１つまたは複数を含む、請求項１に記載の方法。
【請求項４】
前記ＧＰＵの前記処理パイプライン内で、前記ＧＰＵによって受信されたレンダリング・コマンドに基づいて前記可視プリミティブの表現を生成するために前記頂点アトリビュートを使用することをさらに含む、請求項１に記載の方法。
【請求項５】
前記ＧＰＵの前記処理パイプライン内で前記画像ジオメトリ中の各プリミティブの前記頂点の座標アトリビュートを取得することをさらに含み、
前記頂点座標を生成することは、前記頂点の前記座標アトリビュートに基づいて各プリミティブの前記頂点の前記頂点座標を生成することを含む、請求項１に記載の方法。
【請求項６】
頂点バッファの第１の専用エリア中に前記頂点座標を記憶することと、
前記頂点バッファの第２の異なる専用エリア中に前記頂点アトリビュートを記憶することをさらに含む、請求項１に記載の方法。
【請求項７】
前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除することをさらに含む、請求項１に記載の方法。
【請求項８】
前記１つまたは複数の隠れ面を削除することは、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することと並行して実行される、請求項７に記載の方法。
【請求項９】
前記１つまたは複数の隠れ面を削除することは、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することの前に実行される、請求項７に記載の方法。
【請求項１０】
各可視プリミティブの前記頂点の非座標アトリビュートを取得することをさらに含み、
前記頂点アトリビュートを生成することは、前記頂点の前記非座標アトリビュートに基づいて各可視プリミティブの前記頂点の前記頂点アトリビュートを生成することを含む、請求項１に記載の方法。
【請求項１１】
前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除することをさらに含み、
前記１つまたは複数の隠れ面を削除することは、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することと並行して実行される、請求項１０に記載の方法。
【請求項１２】
前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除することをさらに含み、
前記１つまたは複数の隠れ面を削除することは、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することの前に実行される、請求項１０に記載の方法。
【請求項１３】
前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することは、前記生成が可能であると判定したときに行われる、請求項１０に記載の方法。
【請求項１４】
グラフィックス処理ユニット（ＧＰＵ）を含むデバイスであって、
前記グラフィックス処理ユニット（ＧＰＵ）は、
前記ＧＰＵの処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成し、ここで、前記頂点座標は、前記頂点の各々のロケーションとパースペクティブ・パラメータとを含み、前記画像ジオメトリは、グラフィックス画像を表す、
前記ＧＰＵの前記処理パイプライン内で、前記頂点座標に基づいて前記画像ジオメトリ内の可視プリミティブを識別し、
前記可視プリミティブを識別することに応答して、前記グラフィックス画像の表面特性を判定するために、前記ＧＰＵの前記処理パイプライン内で、前記可視プリミティブの前記頂点のみについて頂点アトリビュートを生成するように構成されるデバイス。
【請求項１５】
前記ＧＰＵは、前記画像ジオメトリ内の各プリミティブの前記頂点における前記グラフィックス画像の前記表面特性の前記判定中に前記頂点座標を生成するように構成される、請求項１４に記載のデバイス。
【請求項１６】
前記頂点アトリビュートは、各頂点に関連付けられた色パラメータまたはテクスチャパラメータのうちの１つまたは複数を含む、請求項１４に記載のデバイス。
【請求項１７】
前記ＧＰＵは、前記ＧＰＵの前記処理パイプライン内で、前記ＧＰＵによって受信されたレンダリング・コマンドに基づいて前記可視プリミティブの表現を生成するために前記頂点アトリビュートを使用するようにさらに構成される、請求項１４に記載のデバイス。
【請求項１８】
前記ＧＰＵは、前記ＧＰＵの前記処理パイプライン内で前記画像ジオメトリ中の各プリミティブの前記頂点の座標アトリビュートを取得するようにさらに構成され、
前記ＧＰＵは、前記頂点の前記座標アトリビュートに基づいて各プリミティブの前記頂点の前記頂点座標を生成するように構成される、請求項１４に記載のデバイス。
【請求項１９】
第１及び第２の専用エリアを有するオンチップ頂点バッファをさらに含み、
前記ＧＰＵは、前記頂点バッファの前記第１の専用エリア中に前記頂点座標を記憶し、前記頂点バッファの前記第２の専用エリア中に前記頂点アトリビュートを記憶するようにさらに構成される、請求項１４に記載のデバイス。
【請求項２０】
前記ＧＰＵは、前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除するようにさらに構成される、請求項１４に記載のデバイス。
【請求項２１】
前記ＧＰＵは、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することと並行して前記１つまたは複数の隠れ面を削除するように構成される、請求項２０に記載のデバイス。
【請求項２２】
前記ＧＰＵは、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することの前に前記１つまたは複数の隠れ面を削除するように構成される、請求項２０に記載のデバイス。
【請求項２３】
前記ＧＰＵは、各可視プリミティブの前記頂点の非座標アトリビュートを取得するようにさらに構成され、前記ＧＰＵは、前記頂点の前記非座標アトリビュートに基づいて各可視プリミティブの前記頂点の前記頂点アトリビュートを生成するように構成される、請求項１４に記載のデバイス。
【請求項２４】
前記ＧＰＵは、前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除するようにさらに構成され、前記ＧＰＵは、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することと並行して前記１つまたは複数の隠れ面を削除するように構成される、請求項２３に記載のデバイス。
【請求項２５】
前記ＧＰＵは、前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除するようにさらに構成され、前記ＧＰＵは、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することの前に前記１つまたは複数の隠れ面を削除するように構成される、請求項２３に記載のデバイス。
【請求項２６】
前記ＧＰＵは、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することが可能であると判定したときに前記生成を行うように構成される、請求項２３に記載のデバイス。
【請求項２７】
前記デバイスは、無線通信デバイス・ハンドセットを含む、請求項１４に記載のデバイス。
【請求項２８】
前記デバイスは、１つまたは複数の集積回路デバイスを含む、請求項１４に記載のデバイス。
【請求項２９】
１つまたは複数のプロセッサに、
グラフィックス処理ユニット（ＧＰＵ）の処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成させ、ここで、前記頂点座標は、前記頂点の各々のロケーションとパースペクティブ・パラメータとを含み、前記画像ジオメトリは、グラフィックス画像を表す、
前記ＧＰＵの前記処理パイプライン内で、前記頂点座標に基づいて前記画像ジオメトリ内の可視プリミティブを識別させ、
前記可視プリミティブを識別することに応答して、前記グラフィックス画像の表面特性を判定するために、前記ＧＰＵの前記処理パイプライン内で、前記可視プリミティブの前記頂点のみについて頂点アトリビュートを生成させるための実行可能命令を含むコンピュータ読み取り可能な記憶媒体。
【請求項３０】
前記１つまたは複数のプロセッサに前記頂点座標を生成させるための前記命令は、前記１つまたは複数のプロセッサに、前記画像ジオメトリ内の各プリミティブの前記頂点における前記グラフィックス画像の前記表面特性の前記判定中に前記頂点座標を生成させるための命令を含む、請求項２９に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３１】
前記頂点アトリビュートは、各頂点に関連付けられた色パラメータまたはテクスチャパラメータのうちの１つまたは複数を含む、請求項２９に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３２】
前記１つまたは複数のプロセッサに、前記ＧＰＵの前記処理パイプライン内で、前記ＧＰＵによって受信されたレンダリング・コマンドに基づいて前記可視プリミティブの表現を生成するために前記頂点アトリビュートを使用させるための命令をさらに含む、請求項２９に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３３】
前記１つまたは複数のプロセッサに、前記ＧＰＵの前記処理パイプライン内で前記画像ジオメトリ中の各プリミティブの前記頂点の座標アトリビュートを取得させるための命令をさらに含み、
前記１つまたは複数のプロセッサに前記頂点座標を生成させるための前記命令は、前記１つまたは複数のプロセッサに、前記頂点の前記座標アトリビュートに基づいて各プリミティブの前記頂点の前記頂点座標を生成させるための命令を含む、請求項２９に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３４】
前記１つまたは複数のプロセッサに、
頂点バッファの第１の専用エリア中に前記頂点座標を記憶させ、
前記頂点バッファの第２の異なる専用エリア中に前記頂点アトリビュートを記憶させるための命令をさらに含む、請求項２９に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３５】
前記１つまたは複数のプロセッサに、前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除させるための命令をさらに含む、請求項２９に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３６】
前記１つまたは複数のプロセッサに前記１つまたは複数の隠れ面を削除させるための前記命令は、前記１つまたは複数のプロセッサに、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することと並行して前記１つまたは複数の隠れ面を削除させるための命令を含む、請求項３５に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３７】
前記１つまたは複数のプロセッサに前記１つまたは複数の隠れ面を削除させるための前記命令は、前記１つまたは複数のプロセッサに、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することの前に前記１つまたは複数の隠れ面を削除させるための命令を含む、請求項３５に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３８】
前記１つまたは複数のプロセッサに各可視プリミティブの前記頂点の非座標アトリビュートを取得させるための命令をさらに含み、前記１つまたは複数のプロセッサに前記頂点座標を生成させるための前記命令は、前記１つまたは複数のプロセッサに、前記頂点の前記非座標アトリビュートに基づいて各可視プリミティブの前記頂点の前記頂点座標を生成させるための命令を含む、請求項２９に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３９】
前記１つまたは複数のプロセッサに、前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除させるための命令をさらに含み、
前記１つまたは複数のプロセッサに前記１つまたは複数の隠れ面を削除させるための前記命令は、前記１つまたは複数のプロセッサに、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することと並行して前記１つまたは複数の隠れ面を削除させるための命令を含む、請求項３８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４０】
前記１つまたは複数のプロセッサに、前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除させるための命令をさらに含み、
前記１つまたは複数のプロセッサに前記１つまたは複数の隠れ面を削除させるための前記命令は、前記１つまたは複数のプロセッサに、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することの前に前記１つまたは複数の隠れ面を削除させるための命令を含む、請求項３８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４１】
前記１つまたは複数のプロセッサに前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成させるための前記命令は、前記１つまたは複数のプロセッサに、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することが可能であると判定したときに前記生成を行わせるための命令を含む、請求項３８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４２】
グラフィックス処理ユニット（ＧＰＵ）の処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成するための手段と、ここで、前記頂点座標は、前記頂点の各々のロケーションとパースペクティブ・パラメータとを含み、前記画像ジオメトリは、グラフィックス画像を表す、
前記ＧＰＵの前記処理パイプライン内で、前記頂点座標に基づいて前記画像ジオメトリ内の可視プリミティブを識別するための手段と、
前記可視プリミティブを識別することに応答して、前記グラフィックス画像の表面特性を判定するために、前記ＧＰＵの前記処理パイプライン内で、前記可視プリミティブの前記頂点のみについて頂点アトリビュートを生成するための手段とを含むデバイス。
【請求項４３】
前記頂点座標を生成するための前記手段は、前記画像ジオメトリ内の各プリミティブの前記頂点における前記グラフィックス画像の前記表面特性の前記判定中に前記頂点座標を生成するための手段を含む、請求項４２に記載のデバイス。
【請求項４４】
前記頂点アトリビュートは、各頂点に関連付けられた色パラメータまたはテクスチャパラメータのうちの１つまたは複数を含む、請求項４２に記載のデバイス。
【請求項４５】
前記ＧＰＵの前記処理パイプライン内で、前記ＧＰＵによって受信されたレンダリング・コマンドに基づいて前記可視プリミティブの表現を生成するために前記頂点アトリビュートを使用するための手段をさらに含む、請求項４２に記載のデバイス。
【請求項４６】
前記ＧＰＵの前記処理パイプライン内で前記画像ジオメトリ中の各プリミティブの前記頂点の座標アトリビュートを取得するための手段をさらに含み、
前記頂点座標を生成するための手段は、前記頂点の前記座標アトリビュートに基づいて各プリミティブの前記頂点の前記頂点座標を生成するための手段を含む、請求項４２に記載のデバイス。
【請求項４７】
頂点バッファの第１の専用エリア中に前記頂点座標を記憶するための手段と、
前記頂点バッファの第２の異なる専用エリア中に前記頂点アトリビュートを記憶するための手段とをさらに含む、請求項４２に記載のデバイス。
【請求項４８】
前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除するための手段をさらに含む、請求項４２に記載のデバイス。
【請求項４９】
前記隠れ面のうちの前記１つまたは複数を削除するための前記手段は、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することと並行して前記隠れ面のうちの前記１つまたは複数を削除するための手段を含む、請求項４８に記載のデバイス。
【請求項５０】
前記隠れ面のうちの前記１つまたは複数を削除するための前記手段は、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することの前に前記隠れ面のうちの前記１つまたは複数を削除するための手段を含む、請求項４８に記載のデバイス。
【請求項５１】
各可視プリミティブの前記頂点の非座標アトリビュートを取得するための手段をさらに含み、
前記頂点アトリビュートを生成するための前記手段は、前記頂点の前記非座標アトリビュートに基づいて各可視プリミティブの前記頂点の前記頂点アトリビュートを生成するための手段を含む、請求項４２に記載のデバイス。
【請求項５２】
前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除するための手段をさらに含み、
前記隠れ面のうちの前記１つまたは複数を削除するための前記手段は、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することと並行して前記隠れ面のうちの前記１つまたは複数を削除するための手段を含む、請求項５１に記載のデバイス。
【請求項５３】
前記可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、前記１つまたは複数の隠れ面の相対位置に基づいて、削除するための手段をさらに含み、
前記隠れ面のうちの前記１つまたは複数を削除するための前記手段は、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することの前に前記隠れ面のうちの前記１つまたは複数を削除するための手段を含む、請求項５１に記載のデバイス。
【請求項５４】
前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成するための前記手段は、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することが可能であると判定したときに前記生成を行うための手段を含む、請求項５１に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
（米国特許法第１１９条に基づく優先権の主張）
本特許出願は、その全体が参照により本明細書に組み込まれ、その優先権が主張される、２００９年５月２９日に出願された仮出願第６１／１８２，４１４号の利益を主張する。
【０００２】
（技術分野）
本開示は、グラフィックス処理ユニットを使用したグラフィックス画像の処理に関する。
【背景技術】
【０００３】
グラフィックス処理ユニット（ＧＰＵ）は、ディスプレイ・デバイス上でグラフィックス画像を操作及び表示するために利用される専用グラフィックス・レンダリング・デバイス（dedicated graphics rendering device）である。ＧＰＵは、しばしば、様々な複雑なアルゴリズムのために典型的な汎用中央処理装置（ＣＰＵ）よりも効率的な処理を行う高度並列構造で構築される。たとえば、複雑なアルゴリズムは、３次元コンピュータ・グラフィックス（three-dimensional computerized graphics）の表現を処理することに対応し得る。ＧＰＵは、複雑な２次元または３次元画像を、ＣＰＵを用いてディスプレイ・デバイスに直接描画するよりも迅速に、それらの画像をディスプレイ・デバイス上に生成するために、たとえば点、線および三角形を形成（forming）することなどのような、いくつかのプリミティブグラフィックス演算を実装し得る。
【０００４】
ビデオゲーム業界では、コンピュータ画像の最終表面特性（final surface properties）を判定するために、頂点シェーディングおよびフラグメント（ピクセル）シェーディングがしばしば利用される。ＧＰＵは、一般に、典型的なシェーダベースのグラフィックス・コア中に、頂点シェーダ・ステージと、プリミティブ・セットアップおよび補間ステージと、フラグメント・シェーダ・ステージとの少なくとも３つの主要なパイプライン・ステージを含む。
【０００５】
頂点シェーダは、画像のための画像ジオメトリ（image geometry）に適用され得、画像ジオメトリ内に含まれているプリミティブの頂点座標と頂点アトリビュート（attribute）とを生成し得る。頂点アトリビュートは、たとえば、頂点に関連付けられた色と法線（normal）とテクスチャ座標とを含み得る。プリミティブ・セットアップ・モジュールは、たとえば点、線または三角形などのようなプリミティブを形成し得る。画像ジオメトリのプリミティブは、ピクセルに変換され得、隠れプリミティブ及びピクセル削除（hidden primitive and pixel removal）（隠面消去（hidden surface removal））が実行され得る。アトリビュート補間器（attribute interpolator）は、次いで、画像ジオメトリのプリミティブ内のピクセルにわたってアトリビュートを補間し、ピクセル・レンダリングのために、補間されたアトリビュート値をフラグメント・シェーダに送る。次いで、フラグメント・シェーダからの結果が、ディスプレイ・デバイス上での処理画像の提示のために、後処理ブロックとフレームバッファとに出力され得る。
【０００６】
いくつかの例では、デバイスは、画像データをレンダリングするために、特定のＧＰＵ処理パイプラインを通る複数のパスまたは反復（iteration）を実行し得る。ＧＰＵパイプラインを通る第１のパスは、ただアトリビュートをフェッチし、頂点座標と位置とに関係する頂点シェーディング計算を実行し得る。第１のパス中に、ＧＰＵパイプラインは、不可視プリミティブ（invisible primitives）を除去し得、可視プリミティブに関係する情報をメモリバッファに記憶し得る。ＧＰＵパイプラインを通る第２の後続のパスでは、ＧＰＵパイプラインは、メモリバッファから情報を検索（retrieves）し、可視プリミティブ（visible primitives）のみを処理し、頂点シェーディング計算を完了する。
【発明の概要】
【０００７】
遅延頂点シェーディング（deferred vertex shading）を使用するグラフィックス処理ユニット（ＧＰＵ）を用いてグラフィックス画像を処理するための技法について説明する。たとえば、ＧＰＵは、複数の頂点シェーダを使用してグラフィックス画像を処理するグラフィックス処理パイプラインを含み得る。第１の頂点シェーダは、可視プリミティブが識別され得るように、グラフィックス画像を表す特定の画像ジオメトリ内に含まれているプリミティブの頂点の頂点座標を生成し得る。第２の異なる頂点シェーダは、次いで、グラフィックス画像の表面特性を判定するために、可視プリミティブの頂点のみについて頂点アトリビュートを生成し得る。そのような方式では、ＧＰＵは、非可視プリミティブ又は隠れ面に関連付けられた頂点の頂点フェッチ及びシェーディングのためのいくつかの計算集約的関数を実行する必要を最小限に抑え得るか又はなくし得る。そして、それは、ＧＰＵ内で電力消費量を低減し、パフォーマンスを改善するのに役立ち得る。さらに、ＧＰＵは、ＧＰＵグラフィックス処理パイプラインを通る複数のパスではなく、単一のパス中に、これらの様々なタスクを実行することが可能であり得る。
【０００８】
一例では、方法は、グラフィックス処理ユニット（ＧＰＵ）の処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成することと、ここで、頂点座標は、頂点の各々のロケーションとパースペクティブ・パラメータとを含み、画像ジオメトリは、グラフィックス画像を表す、ＧＰＵの処理パイプライン内で、頂点座標に基づいて画像ジオメトリ内の可視プリミティブを識別することと、可視プリミティブを識別することに応答して、グラフィックス画像の表面特性を判定するために、ＧＰＵの処理パイプライン内で、可視プリミティブの頂点のみについて頂点アトリビュートを生成することを含む。
【０００９】
一例では、デバイスはグラフィックス処理ユニット（ＧＰＵ）を含む。ＧＰＵは、ＧＰＵの処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成するように構成され、頂点座標は頂点の各々のロケーションとパースペクティブ・パラメータとを含み、画像ジオメトリはグラフィックス画像を表す。ＧＰＵはまた、ＧＰＵの処理パイプライン内で、頂点座標に基づいて画像ジオメトリ内の可視プリミティブを識別することと、可視プリミティブを識別することに応答して、グラフィックス画像の表面特性を判定するために、可視プリミティブの頂点のみについて頂点アトリビュートを生成することを行うように構成される。
【００１０】
一例では、コンピュータ読み取り可能な記憶媒体は、１つまたは複数のプロセッサに、グラフィックス処理ユニット（ＧＰＵ）の処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成させ、ここで、頂点座標は、頂点の各々のロケーションとパースペクティブ・パラメータとを含み、画像ジオメトリは、グラフィックス画像を表す、ＧＰＵの処理パイプライン内で、頂点座標に基づいて画像ジオメトリ内の可視プリミティブを識別させ、可視プリミティブを識別することに応答して、グラフィックス画像の表面特性を判定するために、ＧＰＵの処理パイプライン内で、可視プリミティブの頂点のみについて頂点アトリビュートを生成させるための実行可能命令を含む。
【００１１】
本開示で説明する技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装された場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、またはデジタル信号プロセッサ（ＤＳＰ）、あるいは他の等価の集積またはディスクリート論理回路など、１つまたは複数のプロセッサを指すことがあるプロセッサで実行され得る。本技法を実行する命令を含むソフトウェアは、最初にコンピュータ読み取り可能な媒体に記憶し、プロセッサによってロードして実行され得る。
【００１２】
したがって、本開示はまた、プロセッサに、本開示で説明する様々な技法のいずれかを実行させる命令を含むコンピュータ読み取り可能な媒体を企図する。場合によっては、コンピュータ読み取り可能な媒体は、コンピュータ・プログラム製品の一部をなすことがあり、コンピュータ・プログラム製品は、製造業者に販売されることがあり、および／またはデバイス中で使用されることがある。コンピュータ・プログラム製品はコンピュータ読み取り可能な媒体を含むことがあり、場合によってはパッケージング材料を含むこともある。
【００１３】
１つまたは複数の態様の詳細を添付の図面および以下の説明に記載する。他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１４】
【図１】図１は、画像処理のための遅延頂点フェッチャ／シェーダ機構を実装するグラフィックス処理ユニット（ＧＰＵ）を含む例示的なデバイスを示すブロック図である。
【図２Ａ】図２Ａは、第１の例による、画像処理のための複数の頂点フェッチャ／デコーダと複数の頂点シェーダとを実装するＧＰＵパイプラインのブロック図である。
【図２Ｂ】図２Ｂは、第１の例による、画像処理のための複数の頂点フェッチャ／デコーダと複数の頂点シェーダとを実装するＧＰＵパイプラインのブロック図である。
【図３Ａ】図３Ａは、第２の例による、画像処理のための複数の頂点フェッチャ／デコーダと複数の頂点シェーダとを実装するＧＰＵパイプラインのブロック図を示す。
【図３Ｂ】図３Ｂは、第２の例による、画像処理のための複数の頂点フェッチャ／デコーダと複数の頂点シェーダとを実装するＧＰＵパイプラインのブロック図を示す。
【図４】図４は、複数の頂点フェッチャ／シェーダ機構の実装が無効にされている例示的なＧＰＵパイプラインを示すブロック図である。
【図５】図５は、たとえば図２Ａ〜図２Ｂおよび／または図３Ａ〜図３Ｂに示すＧＰＵなどのようなＧＰＵパイプライン内のコンポーネントによって実行され得る例示的な方法を示すフローチャートである。
【図６Ａ】図６Ａは、たとえば図２Ａ〜図２Ｂに示すＧＰＵなどのようなＧＰＵパイプライン内の様々なコンポーネントによって実行され得る例示的な方法のフローチャートを示す。
【図６Ｂ】図６Ｂは、たとえば図２Ａ〜図２Ｂに示すＧＰＵなどのようなＧＰＵパイプライン内の様々なコンポーネントによって実行され得る例示的な方法のフローチャートを示す。
【図６Ｃ】図６Ｃは、たとえば図２Ａ〜図２Ｂに示すＧＰＵなどのようなＧＰＵパイプライン内の様々なコンポーネントによって実行され得る例示的な方法のフローチャートを示す。
【詳細な説明】
【００１５】
図１は、画像処理のための遅延頂点フェッチャ／シェーダ機構（deferred vertex fetcher/shader mechanism）を実装するためのグラフィックス処理ユニット（ＧＰＵ）１４を含む例示的なデバイス２を示すブロック図である。図１の例では、デバイス２は、メイン・メモリ・デバイス２８とディスプレイ・デバイス２０とに接続された処理システム１０を含む。処理システム１０は、コントローラ１２と、ＧＰＵ１４と、内部メモリ・デバイス２４と、ディスプレイ・プロセッサ２６とを含む。コントローラ１２、ＧＰＵ１４、および／またはディスプレイ・プロセッサ２６は、内部メモリ２４および／またはメイン・メモリ２８にデータを書き込み得、あるいは、それらからデータを読み取り得る。内部メモリ２４は、いくつかの例では、キャッシュ・メモリを含み得る。
【００１６】
デバイス２は、スタンドアロン・デバイスを含んでも良いし、または、より大きいシステムの一部であっても良い。たとえば、デバイス２は、無線通信デバイス（たとえば無線モバイル・ハンドセットなど）、デジタルカメラ、ビデオカメラ、テレビ電話、デジタルマルチメディアプレーヤ、携帯情報端末（ＰＤＡ）、ビデオゲーム機、パーソナル・コンピュータまたはラップトップ・デバイス、あるいは、グラフィックスデータを表示することが可能な他のデバイスを含んでも良いし、または、それの一部であっても良い。デバイス２はまた、上記で説明したデバイスの一部または全部において使用され得る１つまたは複数の集積回路内またはチップ内に含まれ得る。
【００１７】
処理システム１０内で、コントローラ１２は、たとえばＧＰＵ１４および／またはディスプレイ・プロセッサ２６などのような、処理システム１０中の他のプロセッサの動作を制御することができる。本明細書で説明する技法によれば、ＧＰＵ１４は、ＧＰＵパイプライン１８と、ＧＰＵパイプライン１８に接続された頂点キャッシュ／バッファ１６とを含む。頂点キャッシュ／バッファ１６は、ＧＰＵ１４と同じ集積回路またはチップの一部であるオンチップ・バッファを含み得る。頂点キャッシュ／バッファ１６の組み込みは、ＧＰＵ１４内のＧＰＵパイプライン１８を通るデータ量を低減し得る。
【００１８】
いくつかの例では、ＧＰＵ１４は、コントローラ１２から、画像をレンダリング及び表示するための１つまたは複数のコマンド（commands）または命令（instructions）とともに、グラフィックス画像を表す画像ジオメトリを受信し得る。画像ジオメトリは、２次元（２Ｄ）または３次元（３Ｄ）コンピュータ・グラフィックス画像の表現に対応し得る。ＧＰＵ１４は、たとえば、ディスプレイ・デバイス２０を介してデバイス２のユーザに、画像効果（image effect）、背景画像（background image）、ビデオゲーム画像（video gaming image）、または他の画像を提示するために、レンダリング・コマンド（rendering commands）に従って画像ジオメトリを処理する。経時的に、ＧＰＵ１４は、ビデオフレームのシーケンス中のビデオフレームとして表示され得る画像のそのような画像ジオメトリのうちの１つまたは複数を処理し得る。ディスプレイ・デバイス２０は、液晶ディスプレイ（ＬＣＤ）、ブラウン管（ＣＲＴ）ディスプレイ、プラズマ・ディスプレイ、あるいは、ディスプレイ・プロセッサ２６を介して処理システム１０と統合（integrated）されるかまたはそれに接続される別のタイプのディスプレイ・デバイスを含み得る。
【００１９】
ある場合には、コントローラ１２は、たとえばビデオゲーム・アプリケーションなどのような、デバイス２内で動作するアプリケーションから、１つまたは複数の画像ジオメトリを受信し得る。他の場合には、コントローラ１２は、たとえば有線または無線ネットワークを介してデバイス２に接続される外部サーバなどのような、デバイス２の外部で動作するアプリケーションから、１つまたは複数の画像ジオメトリを受信し得る。たとえば、デバイス２は、ストリーミング・メディアまたはブロードキャスト・メディアを介して外部サーバから画像ジオメトリを受信し得る。
【００２０】
コントローラ１２から画像ジオメトリを受信した後、ＧＰＵ１４は、ディスプレイ・プロセッサ２６を介してディスプレイ・デバイス２０上で提示するために、対応する画像を準備するために、画像ジオメトリを処理し得る。たとえば、ＧＰＵ１４は、ディスプレイ・デバイス２０上で、該受信した画像ジオメトリによって表される２Ｄまたは３Ｄ画像を生成するために、たとえば点、線および三角形の形成などのような、いくつかのプリミティブグラフィックス演算を実施し得る。ディスプレイ・プロセッサ２６は、ディスプレイ・デバイス２０上で画像を表示する前に、たとえばスケーリング、回転または他の演算などのような、いくつかの演算を実行し得る。
【００２１】
一般に、ＧＰＵパイプライン１８は、画像ジオメトリのプリミティブを処理するために様々な処理ステージを含む。プリミティブは、点、線、三角形および他の多角形を含む、最も単純なタイプの幾何学図形（geometric figures）であり、画像ジオメトリ内の１つまたは複数の頂点を用いて形成され得る。プリミティブまたはプリミティブの一部分が画像フレーム内で不可視である（たとえば、オブジェクトの裏面（backside）に位置する）とき、それらプリミティブまたはプリミティブの一部分は、画像の特定のフレームの処理中において考慮から除外（rejected）され得、可視プリミティブの隠れ面もまた削除（removed）され得る。隠れ面は、画像フレーム内で別のオブジェクトの後ろ（behind）に位置し得るかまたは透明（transparent）であり得る面である。
【００２２】
たとえば、ＧＰＵパイプライン１８は、図２Ａ〜図２Ｂおよび図３Ａ〜図３Ｂの例に示すように、プリミティブの頂点に対応するいくつかの（certain）情報をフェッチ及び復号するために頂点フェッチ及び復号演算を含み得、その情報は次いで頂点シェーディング演算のために利用される。図１に示すように、ＧＰＵパイプライン１８は、遅延頂点フェッチャ／シェーダ２２を含み、遅延頂点フェッチャ／シェーダ２２は、以下でさらに詳細に説明するように、複数の頂点フェッチャ／デコーダ・ステージと複数の頂点シェーディング・ステージとを含む。第１の頂点フェッチャ及びデコーダは、画像ジオメトリ内に含まれているプリミティブの頂点に関連付けられたいくつかの座標アトリビュート（coordinate attributes）をフェッチ及び復号し、これらを第１の頂点シェーダに与え得る。座標アトリビュートは、頂点シェーダに入力され、また、頂点シェーダにおける頂点ロケーション（vertex location）及びパースペクティブ・パラメータ（perspective parameters）の計算に寄与する、アトリビュートである。第１の頂点シェーダは、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成し得る。ここで、頂点座標は、ロケーションとパースペクティブ・パラメータとを含み得る。
【００２３】
第１の頂点シェーダは、頂点座標を頂点キャッシュ／バッファ１６内に記憶し得る。いくつかの例では、頂点キャッシュ／バッファ１６は、頂点座標を記憶するための専用記憶領域（dedicated storage area）を含み得る。頂点座標は、たとえば、画像ジオメトリ内の頂点のロケーションを識別するＸ、ＹおよびＺ座標（たとえば、Ｘ、Ｙ、Ｚ軸上のＸＹＺ座標）と画像ジオメトリのパースペクティブ・パラメータを含むＷ座標とをもつ４次元座標系に基づいて、画像ジオメトリ内のプリミティブの頂点を識別し得る。
【００２４】
ＧＰＵパイプライン１８のプリミティブ・セットアップ・エレメントは、頂点キャッシュ／バッファ１６に記憶された頂点座標を検索し、これらの座標を使用して画像ジオメトリ内の可視プリミティブを識別し得る。可視プリミティブを識別することに応答して、第２のフェッチャ及びデコーダは、可視プリミティブの頂点のいくつかの非座標アトリビュート（non-coordinate attributes）（たとえば、座標情報に関連付けられていないアトリビュート）をフェッチ及び復号し得、これらを第２の頂点シェーダに与え得る。非座標アトリビュートは、頂点シェーダに入力され、また、頂点シェーダにおける頂点ロケーション及びパースペクティブ・パラメータ以外のアトリビュートの計算に寄与する、アトリビュートである。いくつかの例では、座標アトリビュートは、頂点ロケーション及び他のアトリビュートの両方の計算に寄与し得るので、非座標アトリビュートと重複するいくつかのアトリビュートを有し得る。
【００２５】
非座標アトリビュートを受信すると、第２の頂点シェーダは、次いで、グラフィックス画像の表面特性を判定するために、可視プリミティブの頂点のみについて頂点アトリビュートを生成し得る。頂点アトリビュートは、たとえば、任意の所与の頂点に関連付けられた色と法線とテクスチャ座標とを含み得る。
【００２６】
そのようにして、ＧＰＵパイプライン１８は、いくつかの非可視面及び／又は隠れ面（non-visible and/or hidden surfaces）のフェッチ及び頂点シェーディングのためのいくつかの計算集約的関数（computationally intensive functions）を実行する必要を最小限に抑え得るか又はなくし得る。従来、対応するプリミティブが可視であるか不可視であるかどうかにかかわらず、プリミティブ・セットアップより前に、画像ジオメトリ中のすべてのプリミティブの頂点に対して頂点フェッチ／復号及び頂点シェーディングが一般に実行されてきた。頂点フェッチ／復号及びシェーディング演算のいくつかを延期（deferring）することによって、所与の画像ジオメトリ内の可視プリミティブの頂点のみに対して頂点アトリビュートのフェッチ及びシェーディング演算を行うことが可能になる。これは、不要な頂点ストリーム・フェッチ及び頂点シェーディング計算を効果的に削除（removing）することによって、デバイス２内で電力消費量を低減し、さらにパフォーマンスを改善するのに役立ち得る。ＧＰＵパイプライン１８及び遅延頂点フェッチャ／シェーダ２２は、タイル・レンダリング・アーキテクチャ又は非タイル・レンダリング・アーキテクチャ（tiled- or non-tiled rendering architectures）において実装され得る。
【００２７】
図２Ａ〜図２Ｂに、第１の例による、画像処理のための複数の頂点フェッチャ／デコーダ３２，４８及び複数の頂点シェーダ３４，５０を実装するＧＰＵパイプライン３０のブロック図を示す。この例では、図２Ａ〜図２Ｂに示すＧＰＵパイプライン３０は、図１に示すＧＰＵパイプライン１８の一部であり得る。頂点フェッチャ／デコーダ３２（頂点フェッチャ／デコーダ＃１）、頂点シェーダ３４（頂点シェーダ＃１）、頂点フェッチャ／デコーダ４８（頂点フェッチャ／デコーダ＃２）、および頂点シェーダ５０（頂点シェーダ＃２）は、一態様によれば、図１に示す遅延頂点フェッチャ／シェーダ２２の一部であり得る。複数の頂点フェッチャ／デコーダ３２，４８及び複数の頂点シェーダ３４，５０を実装することによって、ＧＰＵパイプライン３０は、頂点フェッチャ／デコーダ４８（頂点フェッチャ／デコーダ＃２）及び頂点シェーダ５０（頂点シェーダ＃２）まで、いくつかの機能を延期し、いくつかの非可視プリミティブの頂点の頂点フェッチ及びシェーディングのための計算集約的関数のいくつかを実行する必要を最小限に抑え得るか又はなくし得る。
【００２８】
図２Ａでは、コマンド・エンジン３１は、ＧＰＵパイプライン３０が常駐（resides）するデバイス（たとえば、図１に示すデバイス２）のコントローラから、画像のための画像ジオメトリとレンダリング・コマンドとを受信し得る。画像ジオメトリは、複雑な２Ｄまたは３Ｄコンピュータ・グラフィックスの表現に対応し得る。コマンド・エンジン３１は、ＧＰＵパイプラインに沿って画像ジオメトリとレンダリング・コマンドとを他の処理ステージにパスする。
【００２９】
たとえば、コマンド・エンジン３１は、画像ジオメトリ内に含まれているプリミティブの頂点の頂点インデックスを第１の頂点フェッチャ／デコーダ３２にパスする。頂点フェッチャ／デコーダ３２は、これらの頂点インデックスを受信し、次いで頂点のアトリビュートをフェッチし得る。たとえば、場合によっては、頂点フェッチャ／デコーダ３２は、最初に、頂点キャッシュ機構（たとえば頂点キャッシュ／バッファ３８内に含まれ得る）中で、アトリビュートのヒット／ミス・チェック（hit/miss checking）を実行し得る。（一態様では、頂点キャッシュ／バッファ３８は、図１に示す頂点キャッシュ／バッファ１６の一部であり得る。）ミスした頂点（missed vertices）について、頂点フェッチャ／デコーダ３２は、メモリバッファ（たとえば内部メモリ２４（図１）内に含まれ得る）から、アトリビュートをフェッチし得る。
【００３０】
図２Ａ〜図２Ｂの例では、フェッチされたアトリビュートは、頂点の座標に関連付けられたアトリビュート（すなわち、座標アトリビュート）に対応し得る。座標アトリビュートは、画像ジオメトリの頂点のロケーション（たとえば、Ｘ、Ｙ、Ｚ軸上のＸＹＺ座標）及びパースペクティブ・パラメータ（たとえば、Ｗ座標）の計算に関係するアトリビュートを含み得る。これらの座標アトリビュートは、頂点の実際の座標（たとえば、ロケーション及びパースペクティブについてのＸＹＺＷ座標）を判定するための第１の頂点シェーダ３４によって使用され得る。しかしながら、多くの場合、頂点フェッチャ／デコーダ３２は、フェッチされた座標アトリビュートのアトリビュート・フォーマットを復号し、それらを頂点シェーダ３４によって許容（acceptable）できる内部フォーマットに変換し得る。
【００３１】
頂点シェーダ３４は、画像ジオメトリに適用され、画像ジオメトリ内の頂点において画像の表面特性を判定する。このようにして、頂点シェーダ３４は、画像ジオメトリ内の頂点の各々の頂点座標を生成する。頂点座標は、たとえば、画像ジオメトリ内の頂点のロケーションを識別するＸ、ＹおよびＺ座標と画像ジオメトリのパースペクティブ・パラメータを含むＷ座標とをもつ４次元座標系に基づいて、画像ジオメトリ内の頂点を識別する。頂点座標の生成時に、頂点シェーダは、この座標を頂点キャッシュ／バッファ３８に記憶し得る。
【００３２】
図２Ａの例に示すように、頂点キャッシュ／バッファ３８は、様々なタイプの頂点データのための別個の専用記憶領域を含み得る。頂点キャッシュ／バッファ３８の座標記憶領域（coordinate storage area）４０は、たとえば、頂点シェーダ３４によって与えられ得る頂点座標を記憶することが可能である。頂点キャッシュ／バッファ３８のアトリビュート記憶領域（attribute storage area）４２は、以下でさらに詳細に説明するように、たとえば、第２の頂点シェーダ５０によって与えられ得る頂点アトリビュートを記憶することが可能である。いくつかの例では、頂点シェーダ３４は、頂点キャッシュ／バッファ３８の座標記憶領域４０内に記憶された頂点座標のキャッシュ・インデックス値をプリミティブ・セットアップ・モジュール３６に与え得る。これらの例では、キャッシュ・インデックス値は、頂点フェッチャ／デコーダ３２によって計算され、頂点シェーダ３４に伝えられ得る。
【００３３】
プリミティブ・セットアップ・モジュール３６は、頂点キャッシュ／バッファの座標記憶領域４０の中からプリミティブ頂点の頂点座標（たとえば、Ｘ、Ｙ、Ｚ、Ｗ座標）を読み取り得る。プリミティブ・セットアップ・モジュール３６は、座標記憶領域４０内での検索（retrieval）のために頂点座標の位置を特定（locate）するために、頂点シェーダ３４によって与えられたキャッシュ・インデックス値を使用し得る。プリミティブ・セットアップ・モジュール３６は、画像ジオメトリ内に１つまたは複数の頂点をもつプリミティブを形成する。プリミティブは、最も単純なタイプの幾何学図形であり、点と、線と、三角形と、他の多角形とを含み得る。
【００３４】
プリミティブ・セットアップ・モジュール３６は、不可視プリミティブの初期除去（initial rejection）を実行し得る。たとえば、ビューポート（viewport）又は閲覧領域（viewing region）の外部に位置し得るプリミティブが不可視プリミティブとして除外され得る。プリミティブ・セットアップ・モジュール３６はまた、プリミティブ内の頂点のＸＹ座標を使用して切り抜き（scissoring）とバックフェース・カリング（backface culling）とを実行することによって、プリミティブを除外し得る。切り抜き及びバックフェース・カリングは、プリミティブ及びプリミティブの一部分が画像フレーム内で不可視であるとき、画像の特定のフレームの処理中にプリミティブ及びプリミティブの一部分を考慮から除外する。たとえば、該プリミティブ及びプリミティブの一部分は、画像フレーム内のオブジェクトの裏面に位置し得る。
【００３５】
プリミティブ・セットアップ・モジュール３６は、画像ジオメトリ内の可視プリミティブをスキャン・コンバータ４４に与え得る。ここで、プリミティブは、たとえば、プリミティブ内の頂点の各々のＸＹ座標と、プリミティブ中に含まれるピクセルの数とに基づいて、ピクセルにラスタライズされ得る。
【００３６】
並行して、プリミティブ・セットアップ・モジュール３６は、可視プリミティブの頂点インデックスを第２の頂点フェッチャ／デコーダ４８に与え得る。頂点フェッチャ／デコーダ４８は、これらの頂点インデックスを受信し、次いで頂点のアトリビュートをフェッチし得る。たとえば、場合によっては、頂点フェッチャ／デコーダ４８は、最初に、たとえば、頂点キャッシュ機構（たとえば頂点キャッシュ／バッファ３８内に含まれ得る）中で、アトリビュートのヒット／ミスチェックを実行し得る。ミスした頂点について、頂点フェッチャ／デコーダ４８は、メモリバッファ（たとえば内部メモリ２４（図１）内に含まれ得る）から、アトリビュートをフェッチし得る。
【００３７】
図２Ａ〜図２Ｂの例では、頂点フェッチャ／デコーダ４８によってフェッチされるアトリビュートは、頂点の座標又は座標演算に関連付けられていないアトリビュートに対応し得、非座標アトリビュートと呼ばれることがある。これらの非座標アトリビュートは、画像ジオメトリ中の可視プリミティブの頂点の頂点アトリビュートを計算するために第２の頂点シェーダ５０によって使用され得る。頂点アトリビュートは、たとえば、所与の頂点に関連付けられた色、法線及び／又はテクスチャ座標を含み得る。計算時に、頂点シェーダ５０は、頂点アトリビュートを頂点キャッシュ／バッファ３８のアトリビュート記憶領域４２内に記憶し得る。一態様では、頂点アトリビュートは、ＯｐｅｎＧＬ／ＯｐｅｎＧＬ ＳＬ（Open Graphics Library/Open Graphics Library Shading Language）仕様の用語を使用して「varying」と呼ばれる。
【００３８】
前に説明したように、また図２Ａ〜図２Ｂに示すように、頂点キャッシュ／バッファ３８は、座標記憶領域４０とアトリビュート記憶領域４２との、２つの領域に論理的に分割され得る。頂点キャッシュ／バッファ３８のこれらの２つの領域は、ＧＰＵパイプライン３０が使用するためにＧＰＵ（たとえば、図１のＧＰＵ１４）によって独立して管理され得る。座標記憶領域４０は、頂点シェーダ３４によって生成され、プリミティブ・セットアップ・モジュール３６によって使用される頂点座標を含んでいる。アトリビュート記憶領域４２は、頂点シェーダ５０によって生成され、アトリビュート・セットアップ及び補間モジュール（attribute setup and interpolation module）５２によって使用される頂点座標を含んでいる。頂点シェーダ５０は、頂点キャッシュ／バッファ３８のアトリビュート記憶領域４２内に記憶された頂点アトリビュートのキャッシュ・インデックス値をアトリビュート・セットアップ及び補間モジュール５２に与え得る。これらのキャッシュ・インデックス値は、頂点フェッチャ／デコーダ４８によって計算され得る。
【００３９】
図２Ａの例では、頂点フェッチャ／デコーダ４８及び頂点シェーダ５０は、スキャン・コンバータ４４及び初期Ｚモジュール（early Z module）４６の、ＧＰＵパイプライン３０内でのパイプライン・レイテンシ（pipeline latency）をほぼカバーし得る。したがって、フェッチャ／デコーダ４８及び頂点シェーダ５０の演算は、スキャン・コンバータ４４及び初期Ｚモジュール４６の演算とほぼ並行して実行され得、それにより様々なパフォーマンス効率を達成し得る。初期Ｚモジュール４６は、たとえば、プリミティブ内の頂点のＺ座標に基づく初期深度及びステンシル・テスト（early depth and stencil test）を使用して可視プリミティブの隠れ面を削除するために、スキャン・コンバータ４４と連携して動作する。プリミティブまたはプリミティブ内のピクセル（たとえば、面）は、プリミティブまたはプリミティブ内のピクセルが画像フレーム内の別のオブジェクト（たとえば、別のプリミティブ）の後ろに位置するか、または画像フレーム内で透明であるとき、隠れていると見なされ得、したがって画像の特定のフレームの処理中に考慮から削除され得る。
【００４０】
頂点アトリビュートが頂点シェーダ５０によってアトリビュート記憶領域４２に記憶された後、遅延アトリビュート・セットアップ及び補間モジュール（deferred attribute setup and interpolation module）５２は、アトリビュート記憶領域４２から、これらのアトリビュートを検索し得る。アトリビュート・セットアップ及び補間モジュール５２は、アトリビュート記憶領域４２内での検索のために頂点アトリビュートの位置を特定するために、頂点シェーダ５０によって与えられるキャッシュ・インデックス値を使用し得る。アトリビュート・セットアップ及び補間モジュール５２はまた、初期Ｚモジュール４６から、除外されていないプリミティブのピクセルを取得し得る。アトリビュート・セットアップ及び補間モジュール５２は、次いで、たとえば、アトリビュート勾配値（attribute gradient values）に基づいて、プリミティブ内のピクセルにわたってアトリビュートを補間し得る。
【００４１】
一態様では、アトリビュート勾配は、水平（Ｘ）方向または垂直（Ｙ）方向に移動するプリミティブ内の第１のピクセルにおけるアトリビュート値と第２のピクセルにおけるアトリビュート値との間の差分（difference）を含む。頂点アトリビュートは、アトリビュート勾配を計算するために使用され得る。場合によっては、アトリビュート勾配セットアップ・レートは、プリミティブに関連付けられた頂点アトリビュートの数に大きく依存することがある。したがって、フェッチ、復号及びシェーディングのいくつかの機能を延期することによって、ＧＰＵパイプライン３０は、アトリビュート・セットアップ及び補間モジュール５２によって処理される必要があるアトリビュートの数を制限し、それによって、アトリビュート・セットアップ及び補間モジュール５２が動作し得る効率を増加させる。遅延アトリビュート・セットアップ及び補間モジュール５２は、プリミティブ・セットアップ・モジュール３６によって判定された、可視プリミティブに関連付けられた頂点の頂点アトリビュートを検索及び処理するだけでよく、（初期Ｚモジュール４６によって判定された）隠れ面も削除されている。別の態様では、遅延アトリビュート・セットアップ及び補間モジュール５２は、たとえば係数発生器（coefficient generator）などのような別の機構によって置き換えられ得るか又は実装され得る。この態様では、補間は、生成された係数に対して実行され得る。
【００４２】
図２Ｂに示すように、アトリビュート・セットアップ及び補間モジュール５２は、プリミティブのピクセル・レンダリングを実行するために、補間されたアトリビュート値をピクセル／フラグメント・シェーダ５４に与え得る。ピクセル／フラグメント・シェーダ５４は、画像ジオメトリのプリミティブ内のピクセルにおける画像の表面特性を判定し得る。ピクセル／フラグメント・シェーダ５４の結果は、次いで、図１に示すディスプレイ・デバイス２０上などに表示するためにピクセルを準備するために、後処理モジュール５６に出力され得る。
【００４３】
一態様では、頂点シェーダ３４及び頂点シェーダ５０は、ハードウェアコストを節約するために、ＧＰＵパイプライン３０を実装するための同じシェーダプロセッサ（図示せず）を物理的に共有し得る。一態様では、頂点ストリームフェッチャ／デコーダ３２及び頂点ストリームフェッチャ／デコーダ４８は、ハードウェアコストを節約するために、同じストリーム・キャッシュ（図示せず）を共有し得る。
【００４４】
ＧＰＵパイプライン３０は、いくつかの非可視面及び／又は隠れ面のフェッチ及び頂点シェーディングのためのいくつかの計算集約的関数を実行する必要を最小限に抑え得るか又はなくし得る。いくつかの頂点フェッチ／復号演算及びシェーディング演算を延期することによって、所与の画像ジオメトリ内の可視プリミティブの頂点のみに対してフェッチ及びシェーディング演算を行うことが可能になる。これは、不可視であるとして除外されたプリミティブのための不要な頂点ストリーム・フェッチ及び頂点シェーディング計算を効果的に削除することによって、電力消費量を低減し、さらにパフォーマンスを改善するのに役立ち得る。
【００４５】
図３Ａ〜図３Ｂに、第２の例による、画像処理のための複数の頂点フェッチャ／デコーダと複数の頂点シェーダとを実装するＧＰＵパイプライン６０のブロック図を示す。図２Ａ〜図２Ｂに示すＧＰＵパイプライン３０と同様に、ＧＰＵパイプライン６０は、コマンド・エンジン６１と、第１の頂点フェッチャ／デコーダ６２と、第１の頂点シェーダ６４と、プリミティブ・セットアップ・モジュール６６と、スキャン・コンバータ６８と、初期Ｚモジュール７０と、第２の頂点フェッチャ／デコーダ７８と、第２の頂点シェーダ８０と、遅延アトリビュート・セットアップ及び補間モジュール８２と、ピクセル／フラグメント・シェーダ８４と、後処理モジュール８６とを含む。頂点フェッチャ／デコーダ６２（頂点フェッチャ／デコーダ＃１）、頂点シェーダ６４（頂点シェーダ＃１）、頂点フェッチャ／デコーダ７８（頂点フェッチャ／デコーダ＃２）、および頂点シェーダ８０（頂点シェーダ＃２）は、一態様によれば、図１に示す遅延頂点フェッチャ／シェーダ２２の一部であり得る。
【００４６】
図３Ａ〜図３Ｂはまた、ＧＰＵパイプライン６０が頂点キャッシュ／バッファ７２とインターラクト（interacts）することを示している。図２Ａ〜図２Ｂに示す頂点キャッシュ／バッファ３８と同様に、頂点キャッシュ／バッファ７２は、座標記憶領域７４とアトリビュート記憶領域７６との、頂点座標及び頂点アトリビュートのための別個の記憶領域を含む。
【００４７】
ＧＰＵパイプライン３０と同様に、ＧＰＵパイプライン６０は、頂点キャッシュ／バッファ７２とインターラクトするとき、頂点座標及び頂点アトリビュートデータを記憶及び検索する。たとえば、頂点シェーダ６４は頂点座標を座標記憶領域７４内に記憶し得る。プリミティブ・セットアップ・モジュール６６は、次いで、不可視プリミティブを識別し、除外するために、画像ジオメトリ内のプリミティブの頂点の頂点座標を検索し得る。ただし、ＧＰＵパイプライン３０とは異なり、ＧＰＵパイプライン６０は、プリミティブ・セットアップ・モジュール６６からの出力をスキャン・コンバータ６８と初期Ｚモジュール７０とにのみ与える。スキャン・コンバータ６８は、ピクセルを生成するためにラスタ化関数（rasterization functions）を実行し、初期Ｚモジュール７０は、隠れ面を除外し得る。
【００４８】
可視プリミティブは、次いで、第２の頂点フェッチャ／デコーダ７８にパスされ、第２の頂点フェッチャ／デコーダ７８は、次いで、これらのプリミティブの頂点インデックスのヒット／ミスチェックを実行し得る。頂点フェッチャ／デコーダ７８は、次いで、第２の頂点シェーダ８０が、これらの頂点の頂点アトリビュート（たとえば、色、法線、テクスチャ）を生成し、これらのアトリビュートをアトリビュート記憶領域７６内に記憶し得るように、これらの頂点の非座標アトリビュートをフェッチ及び復号し得る。遅延アトリビュート・セットアップ及び補間モジュール８２、ピクセル／フラグメント・シェーダ８４、および後処理モジュール８６は、次いで、表示のためにデータを処理するために、遅延アトリビュート・セットアップ及び補間モジュール５２、ピクセル／フラグメント・シェーダ５４、および後処理モジュール５６（図２Ａ〜図２Ｂ）と同様である関数を実行し得る。
【００４９】
ＧＰＵパイプライン６０は、いくつかの利点を提供し得る。たとえば、頂点フェッチャ／デコーダ７８は初期Ｚモジュール７０から出力を受信するので、頂点フェッチャ／デコーダ７８及び頂点シェーダ８０は、必ずしも頂点インデックスを処理したり、隠れ面の頂点の頂点アトリビュートを計算したりする必要はない。初期Ｚモジュール７０は、さらなる処理からそのような隠れ面のうちの１つまたは複数を削除し得、それにより、頂点フェッチャ／デコーダ７８及び頂点シェーダ８０の処理量（processing bandwidth）を節約し得る。（図２Ａ〜図２Ｂの例では、頂点フェッチャ／デコーダ４８及び頂点シェーダ５０は、スキャン・コンバータ４４及び初期Ｚモジュール４６と実質的に並行して動作する。そのような例では、頂点フェッチャ／デコーダ４８及び頂点シェーダ５０が、潜在的な（potentially）隠れ面の頂点を処理するサイクルを費やす必要があり得る可能性がある。）ただし、多くの状況では、初期Ｚモジュール７０によってよりも、プリミティブ・セットアップ・モジュール６６によって、はるかに多数のプリミティブが除外され得、それにより、ＧＰＵパイプライン６０の例のこの潜在的な利点を低減し得る。（たとえば、大多数のプリミティブが不可視であるとしてプリミティブ・セットアップ・モジュール６６によって除外され得るが、面のプリミティブ／ピクセルのうちのはるかに小さい割合のみが隠れているとして初期Ｚモジュール７０によって除外され得る。）
ＧＰＵパイプライン３０と比較して、ＧＰＵパイプライン６０もいくつかの制限を有し得る。頂点フェッチャ／デコーダ７８及び頂点シェーダ８０は、図２Ａ〜図２Ｂの例の場合のように、スキャン・コンバータ６８及び初期Ｚモジュール７０と実質的に並行して動作するので、パイプライン・レイテンシの増加があり得る。
【００５０】
さらに、場合によっては、初期Ｚモジュール７０から出力されたデータ（たとえば、ピクセル／プリミティブ）は、バッファされ、次いで、アトリビュート・セットアップ及び補間モジュール８２によって、その後、検索される必要があり得る。図２Ａ〜図２Ｂに関して前に説明したように、アトリビュート・セットアップ及び補間モジュールは、一般に、初期Ｚモジュールと、頂点アトリビュートを計算する第２の頂点シェーダの両方によって与えられる情報を組み込み（incorporates）、利用する。したがって、図３Ａ〜図３Ｂの例では、初期Ｚモジュール７０は、その出力データをバッファ（たとえば、別個のＦＩＦＯ（先入れ先出し）バッファ）に記憶する必要があり得る。頂点シェーダ８０が頂点アトリビュート情報をアトリビュート記憶領域７６に記憶した後、遅延アトリビュート・セットアップ及び補間モジュール８２は、次いで、頂点キャッシュ／バッファ７２から頂点アトリビュートを検索し、さらに、初期Ｚモジュール７０によって記憶されたバッファされた情報を検索する必要があり得る。この追加のバッファリング及び設計コストは、図２Ａ〜図２Ｂに示す例によって潜在的に回避され得るか又は最小限に抑えられ得る追加のオーバーヘッドを追加し得る。図２Ａ〜図２Ｂの例では、スキャン・コンバータ４４及び初期Ｚモジュール４６は、頂点フェッチャ／デコーダ４８及び頂点シェーダ５０と実質的に並行して動作する。
【００５１】
図４は、複数の頂点フェッチャ／シェーダ機構の実装が無効（disabled）にされている例示的なＧＰＵパイプライン９０を示すブロック図である。いくつかの例では、遅延頂点フェッチャ／シェーダ機構の使用が設定可能（configurable）であり得る。この機構は、ＧＰＵ（たとえば、ＧＰＵ１４）内で実行可能であるドライバによって有効（enabled）にされ得るか又は設定（configured）され得る。たとえば、図２Ａ〜図２Ｂの例では、コントローラ１２によって実行可能なドライバは、いかなる利益又は処理効率も最小であり得ると判定したとき、頂点ストリームフェッチャ／デコーダ４８と頂点シェーダ５０とを選択的に無効にし得る。
【００５２】
一つのシナリオでは、ドライバは、頂点シェーダ３４による頂点座標と頂点シェーダ５０による頂点アトリビュートとの遅延処理（deferred processing）が、頂点座標と頂点アトリビュートの両方を計算する単一の頂点シェーダにわたって著しい処理又は電力の節約をもたらし得ないと判定し得る。この場合、ドライバは頂点フェッチャ／デコーダ４８と頂点シェーダ５０とを無効にし得る。場合によっては、ドライバは、ドライバからアクセス可能であるグラフィックス命令のコンパイル（compilation）から与えられる統計値（statistics）に基づいて、この判定を行い得る。いくつかの例では、ドライバは、所与の画像ジオメトリのデータの前フレーム（prior frames）の処理に基づいて、この判定を行い得る。
【００５３】
図４のＧＰＵパイプライン９０は、第２の頂点フェッチャ／デコーダと頂点シェーダとが無効にされたときの例示的な実装形態を示し、単一の頂点フェッチャ／デコーダと頂点シェーダとが利用される。ＧＰＵパイプライン９０は、コマンド・エンジン９１と、単一の頂点フェッチャ／デコーダ９２と、頂点シェーダ９４と、プリミティブ・セットアップ・モジュール９６と、スキャン・コンバータ９８と、初期Ｚモジュール１００と、遅延アトリビュート・セットアップ及び補間モジュール１０２と、ピクセル／フラグメント・シェーダ１０４と、後処理モジュール１０６とを含む。
【００５４】
一例では、説明のために、コマンド・エンジン９１は、コマンド・エンジン３０（図２Ａ）と同様に機能し、グラフィックスコマンドと画像ジオメトリとを受信する。ただし、頂点フェッチャ／デコーダ３２とは異なり、図４の頂点フェッチャ／デコーダ９２は、頂点インデックスに基づいて、座標ベースのアトリビュートと非座標ベースのアトリビュートの両方を含む、頂点のすべてのアトリビュートをフェッチする。頂点シェーダ９４は、次いで、受信した画像ジオメトリ中に含まれているプリミティブの頂点の頂点座標と頂点アトリビュートの両方のセットを生成し、これらを頂点キャッシュ／バッファ１０８に記憶する。
【００５５】
図４に示す頂点キャッシュ／バッファ１０８は、たとえば、図２Ａ〜図２Ｂに示す、頂点座標と頂点アトリビュートのための別個の記憶領域（４０，４２）を含む頂点キャッシュ／バッファ３８とは反対に、１つの合成キャッシュ（combined cache）として管理される。別の態様では、頂点キャッシュ／バッファ１０８は、頂点座標と頂点アトリビュートとのための別個の記憶領域を含み得る。プリミティブ・セットアップ・モジュール９６は、画像ジオメトリ中に含まれているプリミティブのすべて頂点の頂点座標を検索し、不可視プリミティブを除外する。スキャン・コンバータ９８は、可視プリミティブをピクセルにラスタ化し、初期Ｚモジュール１００は、さらに、隠れプリミティブ（hidden primitives）／ピクセル（たとえば、面）を削除し得る。
【００５６】
遅延アトリビュート・セットアップ及び補間モジュール１０２は、初期Ｚモジュール１００から出力を受信し、さらに、頂点キャッシュ／バッファ１０８から可視プリミティブ頂点のすべての頂点アトリビュートを検索する。遅延アトリビュート・セットアップ及び補間モジュール１０２は、除外されなかったプリミティブの頂点（たとえば、可視であるプリミティブの頂点、及び、隠されていない可視プリミティブの面）に対応するアトリビュートに対してのみアトリビュート・セットアップ及び補間を実行する。ピクセル／フラグメント・シェーダ１０４及び後処理モジュール１０６は、図２Ｂに示すピクセル／フラグメント・シェーダ５４及び後処理モジュール５６と同様に機能する。
【００５７】
図５は、図２Ａ〜図２Ｂおよび図３Ａ〜図３Ｂに示すＧＰＵパイプライン３０および／またはＧＰＵパイプライン６０など、ＧＰＵパイプラインの様々なコンポーネントによって実行され得る例示的な方法を示すフローチャートである。ただ例示のために、図５に示す方法は、図２Ａ〜図２Ｂに示すＧＰＵパイプライン３０によって実行されると仮定する。
【００５８】
頂点シェーダ３４は、ＧＰＵ処理パイプライン３０内で、たとえば図１に示すコントローラ１２などのようなコントローラから、コマンド・エンジン３１によって受信された画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成する（１１０）。コマンド・エンジン３１はまた、コントローラからレンダリング・コマンドを受信し得る。頂点座標は、ロケーションとパースペクティブ・パラメータとを含み得、画像ジオメトリはグラフィックス画像を表し得る。いくつかの例では、頂点シェーダ３４は、画像ジオメトリ内の各プリミティブの頂点におけるグラフィックス画像の表面特性の判定中に頂点座標を生成し得る。
【００５９】
プリミティブ・セットアップ・モジュール３６は、頂点座標に基づいて画像ジオメトリ内の可視プリミティブを識別する（１１２）。場合によっては、プリミティブ・セットアップ・モジュール３６は、頂点座標に基づいて画像ジオメトリ内の不可視プリミティブを除外することによって、可視プリミティブを識別し得る。
【００６０】
可視プリミティブを識別することに応答して、頂点シェーダ５０は、グラフィックス画像の表面特性を判定するために、ＧＰＵパイプライン３０内で、可視プリミティブの頂点のみについて頂点アトリビュート（たとえば、色、テクスチャ、透明度）を生成する（１１４）。頂点アトリビュートは、ＧＰＵパイプライン３０によって実行されるレンダリング・コマンドに基づいて可視プリミティブの表現を生成するために使用され得る。一態様では、頂点シェーダ５０は、そのような生成が有効にされているときのみ、可視プリミティブの頂点のみについて頂点アトリビュートを生成し得る。上記で説明したように、ＧＰＵのドライバは、いくつかの例では、複数の頂点フェッチャ／デコーダ及び頂点シェーダを使用する遅延機能（deferred functionality）を無効にし得る。無効にされたとき、頂点フェッチャ／デコーダ４８及び頂点シェーダ５０が利用されず、ＧＰＵが図４に示すＧＰＵパイプライン９０を実装し得る。
【００６１】
頂点シェーダ３４は、頂点フェッチャ／デコーダ３２から画像ジオメトリ中の各プリミティブの頂点の座標アトリビュートを取得し得る。頂点シェーダ３４は、次いで、頂点フェッチャ／デコーダ３２から受信した頂点の座標アトリビュートに基づいて各プリミティブの頂点の頂点座標を生成し得る。頂点シェーダ３４は、頂点座標を、たとえば頂点キャッシュ／バッファ３８内の座標記憶領域４０内などのような、頂点バッファの第１の専用エリアに記憶し得る。（前に説明したように、頂点キャッシュ／バッファ３８は、頂点シェーダ５０によって生成された頂点アトリビュートを記憶する第２の専用エリアであるアトリビュート記憶領域４２を含み得る。）
一態様では、頂点シェーダ５０は、頂点フェッチャ／デコーダ４８から各可視プリミティブの頂点の非座標アトリビュートを取得し得る。頂点シェーダ５０は、次いで、頂点の非座標アトリビュートに基づいて各可視プリミティブの頂点の頂点アトリビュートを生成し得る。これらの頂点アトリビュートは、アトリビュート・セットアップ及び補間モジュール５２による後の検索のために、頂点キャッシュ／バッファ３８のアトリビュート記憶領域４２に記憶され得る。
【００６２】
図２Ａに示す初期Ｚモジュール４６は、可視プリミティブのうちの少なくとも１つの可視プリミティブの、１つまたは複数の隠れ面を、可視プリミティブのうちの少なくとも別の１つの可視プリミティブに対する、１つまたは複数の隠れ面の相対位置に基づいて、削除することができる。たとえば、可視プリミティブの面が画像ジオメトリ内の別のプリミティブの完全に後ろに位置している場合、その面は視野から隠され得る。この例では、初期Ｚモジュール４６は、この隠れ面を削除し得る。初期Ｚモジュール４６は、頂点シェーダ５０によって実行される演算と実質的に並行して、その演算のうちのいずれかを実行し得る。たとえば、頂点シェーダ５０が、頂点フェッチャ／デコーダ４８から非座標アトリビュートを取得し、可視プリミティブの頂点のみについて頂点アトリビュートを生成する間に、初期Ｚモジュール４６は隠れ面を削除し得る。頂点シェーダ５０は、生成された頂点アトリビュートを頂点キャッシュ／バッファ３８のアトリビュート記憶領域４２内に記憶し得る。
【００６３】
前に説明したように、いくつかの例では、第２の頂点フェッチャ／デコーダ及び頂点シェーダは、図３Ａ〜図３Ｂの例に示すように、初期Ｚモジュールの下流に（downstream）位置し得る。その例では、頂点フェッチャ／デコーダ７８は初期Ｚモジュール７０から直接出力を受信する。すなわち、初期Ｚモジュール７０及び頂点フェッチャ／デコーダ７８は、並行してではなく連続してそれらの機能を実行する。初期Ｚモジュール７０は、頂点シェーダ８０が頂点フェッチャ／デコーダ７８から非座標アトリビュートを取得し、可視プリミティブの頂点の頂点アトリビュートを生成する前に、それらの可視プリミティブの隠れ面を削除し得る。
【００６４】
頂点シェーダ８０は、頂点フェッチャ／デコーダ７８から各可視プリミティブの頂点の非座標アトリビュートを取得又は受信し得る。頂点シェーダ８０は、次いで、頂点の非座標アトリビュートに基づいて各可視プリミティブの頂点の頂点アトリビュートを生成し、これらの頂点アトリビュートをアトリビュート記憶領域７６に記憶し得る。
【００６５】
図６Ａ〜図６Ｃに、図２Ａ〜図２Ｂに示すＧＰＵパイプライン３０などのＧＰＵパイプライン内の様々なコンポーネントによって実行され得る例示的な方法のフローチャートを示す。図６Ａ〜図６Ｃはまた、指示された動作を実行し得るＧＰＵパイプライン内の様々なコンポーネントを示す。説明のために、図６Ａ〜図６Ｃに示す方法がＧＰＵパイプライン３０のコンポーネントによって実行されると仮定する。
【００６６】
最初に、図６Ａを参照すると、コマンド・エンジン３１は、コントローラから（たとえば図１に示すデバイス２のコントローラ１２からなど）、画像ジオメトリ及びレンダリング・コマンドを受信する（１２０）。コマンド・エンジン３１は、次いで、第１の頂点フェッチャ／デコーダ３２に頂点インデックスを送る（１２２）。頂点インデックスは、画像ジオメトリ内に含まれているプリミティブの頂点に関係する。
【００６７】
頂点フェッチャ／デコーダ３２は、頂点インデックスに基づいて頂点の座標アトリビュート（たとえば、ロケーションとパースペクティブとに関係するアトリビュート）をフェッチする（１２４）。たとえば、頂点フェッチャ／デコーダ３２は、頂点キャッシュ機構（たとえば、頂点キャッシュ／バッファ３８）に対して座標アトリビュートのヒット／ミスチェックを実行し得、ミスした頂点について別個のメモリバッファ（たとえば、内部メモリ２４）からアトリビュートをフェッチし得る。頂点フェッチャ／デコーダ３２は、アトリビュート・フォーマットを復号し、それらを、頂点シェーダ３４によって認識可能または許容可能であり得る内部フォーマットに変換する（１２６）。頂点フェッチャ／デコーダ３２は、次いで、変換された座標アトリビュートを第１の頂点シェーダ３４に送る（１２８）。
【００６８】
頂点フェッチャ／デコーダ３２から座標アトリビュート情報を受信すると、頂点シェーダ３４は、画像ジオメトリ内に含まれているプリミティブの頂点の頂点座標（たとえば、ロケーション及びパースペクティブのＸＹＺＷ座標）を生成する（１３０）。頂点シェーダ３４は、これらの頂点座標を頂点キャッシュ／バッファ３８の座標記憶領域４０内に記憶する（１３２）。さらに、頂点シェーダ３４は、記憶された頂点座標のキャッシュ・インデックス値（それは頂点フェッチャ／デコーダ３２によって計算され得る）を、プリミティブ・セットアップ・モジュール３６に与え得る。
【００６９】
次に、図６Ｂを参照すると、プリミティブ・セットアップ・モジュール３６は、頂点キャッシュ／バッファ３８の座標記憶領域４０から頂点座標を検索する（１３４）。プリミティブ・セットアップ・モジュール３６は、座標記憶領域４０内での検索のために頂点座標の位置を特定（locate）するために、頂点シェーダ３４によって与えられたキャッシュ・インデックス値を使用し得る。プリミティブ・セットアップ・モジュール３６は、画像ジオメトリ内のプリミティブの頂点座標に基づいて、画像ジオメトリ内の可視プリミティブを識別し、不可視プリミティブを除外する（１３６）。たとえば、特定のプリミティブの頂点座標は、閲覧エリア（viewing area）又はビューポートの境界外に出ることがあり得る。いくつかの例では、ビューポートのロケーション（location）及び位置（position）は、アプリケーションによってまたはデバイスによって定義され得るか、或いは、コマンド・エンジン３１によって受信されたレンダリング・コマンドによって指定され得る。いくつかの例では、プリミティブ・セットアップ・モジュール３６は、バックフェース・カリングを実行した後にプリミティブを除外し得る。バックフェース・カリングは、閲覧者（viewer）のほうに配向されていないかまたは閲覧者に対向していないために、その閲覧者に見えないプリミティブを判定し得る。これらのプリミティブは、プリミティブ・セットアップ・モジュール３６によって除外され得る。
【００７０】
図２Ａ〜図２Ｂの例示的なＧＰＵパイプラインでは、プリミティブ・セットアップ・モジュール３６は、可視プリミティブの頂点のインデックスを第２の頂点フェッチャ／デコーダ４８に送る（１４０）。実質的に並行して、プリミティブ・セットアップ・モジュール３６はまた、可視プリミティブをスキャン・コンバータ４４に与える（１３８）。スキャン・コンバータ４４は可視プリミティブをピクセルに変換する（１４２）。初期Ｚモジュール４６は画像ジオメトリの隠れプリミティブ／ピクセル（たとえば、面）を除外する（１４６）。プリミティブまたはプリミティブ内のピクセルは、プリミティブまたはプリミティブ内のピクセルが画像フレーム内の別のオブジェクトの後ろに位置しているか、または画像フレーム内で透明であるとき、隠れていると見なされ得、したがって画像の特定のフレームの処理中に考慮から削除され得る。
【００７１】
スキャン・コンバータ４４及び初期Ｚモジュール４６がそれらの個々の演算を実行している間、頂点フェッチャ／デコーダ４８及び頂点シェーダ５０もいくつかの演算を実行し得る。頂点フェッチャ／デコーダ４８は、プリミティブ・セットアップ・モジュール３６によって与えられるインデックスを使用して、可視プリミティブの頂点の非座標アトリビュート（たとえば、ＸＹＺＷ座標に関係しないアトリビュート）をフェッチする（１４４）。頂点フェッチャ／デコーダ４８は、頂点の非座標アトリビュートを復号及び変換し得（１４８）、次いで、変換された非座標アトリビュートを第２の頂点シェーダ５０に送り得る（１５０）。
【００７２】
次に、図６Ｃを参照すると、頂点シェーダ５０は、画像ジオメトリ内の可視プリミティブの頂点の各々について頂点アトリビュート（たとえば、色、テクスチャ）を生成する（１５２）。頂点シェーダ５０は、次いで、頂点アトリビュートを頂点キャッシュ／バッファ３８のアトリビュート記憶領域４２内に記憶する（１５４）。さらに、頂点シェーダ５０は、記憶された頂点アトリビュートのキャッシュ・インデックス値を遅延アトリビュート・セットアップ及び補間モジュール５２に与え得る。これらのキャッシュ・インデックス値は、頂点フェッチャ／デコーダ４８によって計算され、頂点シェーダ５０に与えられ得る。
【００７３】
アトリビュート・セットアップ及び補間モジュール５２は、これらの頂点アトリビュートを頂点キャッシュ／バッファ３８のアトリビュート記憶領域４２から検索する（１５６）。アトリビュート・セットアップ及び補間モジュール５２は、アトリビュート記憶領域４２内での検索のために頂点アトリビュートの位置を特定するために、頂点シェーダ５０によって与えられるキャッシュ・インデックス値を使用し得る。アトリビュート・セットアップ及び補間モジュール５２はまた、初期Ｚモジュール４６から、除外されていないプリミティブのピクセルを取得し得る。アトリビュート・セットアップ及び補間モジュール５２は、次いで、たとえば、アトリビュート勾配値に基づいて、可視プリミティブのピクセルにわたって頂点アトリビュートを補間する（１５８）。
【００７４】
フェッチ、復号及びシェーディングのいくつかの機能を延期することによって、ＧＰＵパイプライン３０は、アトリビュート・セットアップ及び補間モジュール５２によって処理される必要があるアトリビュートの数を制限し、それによって、アトリビュート・セットアップ及び補間モジュール５２が動作し得る効率を増加させ得る。アトリビュート・セットアップ及び補間モジュール５２は、プリミティブ・セットアップ・モジュール３６によって判定された、可視プリミティブに関連付けられた頂点と、（初期Ｚモジュール４６によって判定された）隠れ面の一部でない頂点とについて、頂点アトリビュートを検索及び処理するだけでよい。
【００７５】
アトリビュート・セットアップ及び補間モジュール５２は、補間されたアトリビュート値をピクセル／フラグメント・シェーダ５４に与え得る。ピクセル／フラグメント・シェーダ５４は、次いで、プリミティブのピクセル／フラグメント・シェーディングを実行する（１６０）。ピクセル／フラグメント・シェーダ５４は、画像ジオメトリのプリミティブ内のピクセルにおける画像の表面特性を判定し得る。ピクセル／フラグメント・シェーダ５４の結果は、次いで、後処理モジュール５６に出力され得る。後処理モジュール５６は、たとえばピクセルブレンディング演算などのような、１つまたは複数の後処理演算を実行して（１６２）、たとえば図１に示すディスプレイ・デバイス２０上などでの表示のためにピクセルを準備する。
【００７６】
本開示で説明する技法は、汎用マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブル論理デバイス（ＰＬＤ）、または他の同等の論理デバイスのうちの１つまたは複数の内に実装され得る。したがって、本明細書で使用する「プロセッサ」または「コントローラ」という用語は、前述の構造、または本明細書で説明する技法の実装に好適な他の構造のうちのいずれか１つまたは複数を指す。
【００７７】
本明細書で説明した様々なコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の適切な組み合せによって実現され得る。図では、様々なコンポーネントは、別々のユニットまたはモジュールとして示される。しかしながら、これらの図を参照しながら説明した様々なコンポーネントのすべてまたはいくつかは、共通ハードウェア、ファームウェア、および／またはソフトウェア内の組合せユニットまたはモジュールに統合され得る。したがって、コンポーネント、ユニット、またはモジュールとしての特徴の表現は、説明しやすいように特定の機能的特徴を強調するものであり、別々のハードウェア、ファームウェア、またはソフトウェアコンポーネントによるそのような特徴の実現を必ずしも必要としない。場合によっては、様々なユニットは、１つまたは複数のプロセッサによって実行されるプログラマブルプロセスとして実装され得る。
【００７８】
モジュール、デバイス、またはコンポーネントとして本明細書で説明した機能は、集積論理デバイスに一緒に、または個別であるが相互運用可能な（interoperable）論理デバイスとして別々に実装され得る。様々な態様では、そのようなコンポーネントは、少なくとも部分的に、まとめて集積回路デバイス（たとえば、集積回路チップまたはチップセットなど）と呼ばれることがある１つまたは複数の集積回路デバイスとして形成され得る。そのような回路は、単一の集積回路チップデバイス中、または複数の相互運用可能な集積回路チップデバイス中に設けられ得、様々な画像、ディスプレイ、音声、または他のマルチメディアアプリケーションおよびデバイスのいずれかにおいて使用され得る。いくつかの態様では、たとえば、そのようなコンポーネントは、モバイル・デバイス（たとえば、無線通信デバイス・ハンドセットなど）の一部を形成し得る。
【００７９】
ソフトウェアで実装した場合、これらの技法は、１つまたは複数のプロセッサによって実行されたとき、上記で説明した方法のうちの１つまたは複数を実行する命令をもつコードを含むコンピュータ読み取り可能なデータ記憶媒体によって少なくとも部分的に実現され得る。コンピュータ読み取り可能な記憶媒体は、パッケージング材料を含むことがあるコンピュータ・プログラム製品の一部を形成し得る。コンピュータ読み取り可能な記憶媒体は、ランダムアクセスメモリ（ＲＡＭ）（たとえば、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）など）、読取り専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、埋込みダイナミックランダムアクセスメモリ（ｅＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、フラッシュメモリ、磁気または光学データ記憶媒体を含み得る。利用される任意のソフトウェアは、１つまたは複数のプロセッサ（たとえば、１つまたは複数のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、または他の等価の集積またはディスクリート論理回路など）によって実行され得る。
【００８０】
様々な態様について本開示で説明した。これらおよび他の態様は以下の特許請求の範囲内に入る。
【図１】
0005596136.tif 000002
【図２Ａ】
0005596136.tif 000003
【図２Ｂ】
0005596136.tif 000004
【図３Ａ】
0005596136.tif 000005
【図３Ｂ】
0005596136.tif 000006
【図４】
0005596136.tif 000007
【図５】
0005596136.tif 000008
【図６Ａ】
0005596136.tif 000009
【図６Ｂ】
0005596136.tif 000010
【図６Ｃ】
0005596136.tif 000011