JP5596136B2 - 遅延頂点シェーディングを用いたグラフィックス処理ユニット - Google Patents

遅延頂点シェーディングを用いたグラフィックス処理ユニット Download PDF

Info

Publication number
JP5596136B2
JP5596136B2 JP2012513316A JP2012513316A JP5596136B2 JP 5596136 B2 JP5596136 B2 JP 5596136B2 JP 2012513316 A JP2012513316 A JP 2012513316A JP 2012513316 A JP2012513316 A JP 2012513316A JP 5596136 B2 JP5596136 B2 JP 5596136B2
Authority
JP
Japan
Prior art keywords
vertex
primitive
visible
gpu
attributes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012513316A
Other languages
English (en)
Other versions
JP2012528410A (ja
Inventor
ジャオ、グオファン
ドゥ、ユン
チェン、リンジュン
ユ、チュン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2012528410A publication Critical patent/JP2012528410A/ja
Application granted granted Critical
Publication of JP5596136B2 publication Critical patent/JP5596136B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Description

(米国特許法第119条に基づく優先権の主張)
本特許出願は、その全体が参照により本明細書に組み込まれ、その優先権が主張される、2009年5月29日に出願された仮出願第61/182,414号の利益を主張する。
(技術分野)
本開示は、グラフィックス処理ユニットを使用したグラフィックス画像の処理に関する。
グラフィックス処理ユニット(GPU)は、ディスプレイ・デバイス上でグラフィックス画像を操作及び表示するために利用される専用グラフィックス・レンダリング・デバイス(dedicated graphics rendering device)である。GPUは、しばしば、様々な複雑なアルゴリズムのために典型的な汎用中央処理装置(CPU)よりも効率的な処理を行う高度並列構造で構築される。たとえば、複雑なアルゴリズムは、3次元コンピュータ・グラフィックス(three-dimensional computerized graphics)の表現を処理することに対応し得る。GPUは、複雑な2次元または3次元画像を、CPUを用いてディスプレイ・デバイスに直接描画するよりも迅速に、それらの画像をディスプレイ・デバイス上に生成するために、たとえば点、線および三角形を形成(forming)することなどのような、いくつかのプリミティブグラフィックス演算を実装し得る。
ビデオゲーム業界では、コンピュータ画像の最終表面特性(final surface properties)を判定するために、頂点シェーディングおよびフラグメント(ピクセル)シェーディングがしばしば利用される。GPUは、一般に、典型的なシェーダベースのグラフィックス・コア中に、頂点シェーダ・ステージと、プリミティブ・セットアップおよび補間ステージと、フラグメント・シェーダ・ステージとの少なくとも3つの主要なパイプライン・ステージを含む。
頂点シェーダは、画像のための画像ジオメトリ(image geometry)に適用され得、画像ジオメトリ内に含まれているプリミティブの頂点座標と頂点アトリビュート(attribute)とを生成し得る。頂点アトリビュートは、たとえば、頂点に関連付けられた色と法線(normal)とテクスチャ座標とを含み得る。プリミティブ・セットアップ・モジュールは、たとえば点、線または三角形などのようなプリミティブを形成し得る。画像ジオメトリのプリミティブは、ピクセルに変換され得、隠れプリミティブ及びピクセル削除(hidden primitive and pixel removal)(隠面消去(hidden surface removal))が実行され得る。アトリビュート補間器(attribute interpolator)は、次いで、画像ジオメトリのプリミティブ内のピクセルにわたってアトリビュートを補間し、ピクセル・レンダリングのために、補間されたアトリビュート値をフラグメント・シェーダに送る。次いで、フラグメント・シェーダからの結果が、ディスプレイ・デバイス上での処理画像の提示のために、後処理ブロックとフレームバッファとに出力され得る。
いくつかの例では、デバイスは、画像データをレンダリングするために、特定のGPU処理パイプラインを通る複数のパスまたは反復(iteration)を実行し得る。GPUパイプラインを通る第1のパスは、ただアトリビュートをフェッチし、頂点座標と位置とに関係する頂点シェーディング計算を実行し得る。第1のパス中に、GPUパイプラインは、不可視プリミティブ(invisible primitives)を除去し得、可視プリミティブに関係する情報をメモリバッファに記憶し得る。GPUパイプラインを通る第2の後続のパスでは、GPUパイプラインは、メモリバッファから情報を検索(retrieves)し、可視プリミティブ(visible primitives)のみを処理し、頂点シェーディング計算を完了する。
遅延頂点シェーディング(deferred vertex shading)を使用するグラフィックス処理ユニット(GPU)を用いてグラフィックス画像を処理するための技法について説明する。たとえば、GPUは、複数の頂点シェーダを使用してグラフィックス画像を処理するグラフィックス処理パイプラインを含み得る。第1の頂点シェーダは、可視プリミティブが識別され得るように、グラフィックス画像を表す特定の画像ジオメトリ内に含まれているプリミティブの頂点の頂点座標を生成し得る。第2の異なる頂点シェーダは、次いで、グラフィックス画像の表面特性を判定するために、可視プリミティブの頂点のみについて頂点アトリビュートを生成し得る。そのような方式では、GPUは、非可視プリミティブ又は隠れ面に関連付けられた頂点の頂点フェッチ及びシェーディングのためのいくつかの計算集約的関数を実行する必要を最小限に抑え得るか又はなくし得る。そして、それは、GPU内で電力消費量を低減し、パフォーマンスを改善するのに役立ち得る。さらに、GPUは、GPUグラフィックス処理パイプラインを通る複数のパスではなく、単一のパス中に、これらの様々なタスクを実行することが可能であり得る。
一例では、方法は、グラフィックス処理ユニット(GPU)の処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成することと、ここで、頂点座標は、頂点の各々のロケーションとパースペクティブ・パラメータとを含み、画像ジオメトリは、グラフィックス画像を表す、GPUの処理パイプライン内で、頂点座標に基づいて画像ジオメトリ内の可視プリミティブを識別することと、可視プリミティブを識別することに応答して、グラフィックス画像の表面特性を判定するために、GPUの処理パイプライン内で、可視プリミティブの頂点のみについて頂点アトリビュートを生成することを含む。
一例では、デバイスはグラフィックス処理ユニット(GPU)を含む。GPUは、GPUの処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成するように構成され、頂点座標は頂点の各々のロケーションとパースペクティブ・パラメータとを含み、画像ジオメトリはグラフィックス画像を表す。GPUはまた、GPUの処理パイプライン内で、頂点座標に基づいて画像ジオメトリ内の可視プリミティブを識別することと、可視プリミティブを識別することに応答して、グラフィックス画像の表面特性を判定するために、可視プリミティブの頂点のみについて頂点アトリビュートを生成することを行うように構成される。
一例では、コンピュータ読み取り可能な記憶媒体は、1つまたは複数のプロセッサに、グラフィックス処理ユニット(GPU)の処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成させ、ここで、頂点座標は、頂点の各々のロケーションとパースペクティブ・パラメータとを含み、画像ジオメトリは、グラフィックス画像を表す、GPUの処理パイプライン内で、頂点座標に基づいて画像ジオメトリ内の可視プリミティブを識別させ、可視プリミティブを識別することに応答して、グラフィックス画像の表面特性を判定するために、GPUの処理パイプライン内で、可視プリミティブの頂点のみについて頂点アトリビュートを生成させるための実行可能命令を含む。
本開示で説明する技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装された場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはデジタル信号プロセッサ(DSP)、あるいは他の等価の集積またはディスクリート論理回路など、1つまたは複数のプロセッサを指すことがあるプロセッサで実行され得る。本技法を実行する命令を含むソフトウェアは、最初にコンピュータ読み取り可能な媒体に記憶し、プロセッサによってロードして実行され得る。
したがって、本開示はまた、プロセッサに、本開示で説明する様々な技法のいずれかを実行させる命令を含むコンピュータ読み取り可能な媒体を企図する。場合によっては、コンピュータ読み取り可能な媒体は、コンピュータ・プログラム製品の一部をなすことがあり、コンピュータ・プログラム製品は、製造業者に販売されることがあり、および/またはデバイス中で使用されることがある。コンピュータ・プログラム製品はコンピュータ読み取り可能な媒体を含むことがあり、場合によってはパッケージング材料を含むこともある。
1つまたは複数の態様の詳細を添付の図面および以下の説明に記載する。他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
図1は、画像処理のための遅延頂点フェッチャ/シェーダ機構を実装するグラフィックス処理ユニット(GPU)を含む例示的なデバイスを示すブロック図である。 図2Aは、第1の例による、画像処理のための複数の頂点フェッチャ/デコーダと複数の頂点シェーダとを実装するGPUパイプラインのブロック図である。 図2Bは、第1の例による、画像処理のための複数の頂点フェッチャ/デコーダと複数の頂点シェーダとを実装するGPUパイプラインのブロック図である。 図3Aは、第2の例による、画像処理のための複数の頂点フェッチャ/デコーダと複数の頂点シェーダとを実装するGPUパイプラインのブロック図を示す。 図3Bは、第2の例による、画像処理のための複数の頂点フェッチャ/デコーダと複数の頂点シェーダとを実装するGPUパイプラインのブロック図を示す。 図4は、複数の頂点フェッチャ/シェーダ機構の実装が無効にされている例示的なGPUパイプラインを示すブロック図である。 図5は、たとえば図2A〜図2Bおよび/または図3A〜図3Bに示すGPUなどのようなGPUパイプライン内のコンポーネントによって実行され得る例示的な方法を示すフローチャートである。 図6Aは、たとえば図2A〜図2Bに示すGPUなどのようなGPUパイプライン内の様々なコンポーネントによって実行され得る例示的な方法のフローチャートを示す。 図6Bは、たとえば図2A〜図2Bに示すGPUなどのようなGPUパイプライン内の様々なコンポーネントによって実行され得る例示的な方法のフローチャートを示す。 図6Cは、たとえば図2A〜図2Bに示すGPUなどのようなGPUパイプライン内の様々なコンポーネントによって実行され得る例示的な方法のフローチャートを示す。
詳細な説明
図1は、画像処理のための遅延頂点フェッチャ/シェーダ機構(deferred vertex fetcher/shader mechanism)を実装するためのグラフィックス処理ユニット(GPU)14を含む例示的なデバイス2を示すブロック図である。図1の例では、デバイス2は、メイン・メモリ・デバイス28とディスプレイ・デバイス20とに接続された処理システム10を含む。処理システム10は、コントローラ12と、GPU14と、内部メモリ・デバイス24と、ディスプレイ・プロセッサ26とを含む。コントローラ12、GPU14、および/またはディスプレイ・プロセッサ26は、内部メモリ24および/またはメイン・メモリ28にデータを書き込み得、あるいは、それらからデータを読み取り得る。内部メモリ24は、いくつかの例では、キャッシュ・メモリを含み得る。
デバイス2は、スタンドアロン・デバイスを含んでも良いし、または、より大きいシステムの一部であっても良い。たとえば、デバイス2は、無線通信デバイス(たとえば無線モバイル・ハンドセットなど)、デジタルカメラ、ビデオカメラ、テレビ電話、デジタルマルチメディアプレーヤ、携帯情報端末(PDA)、ビデオゲーム機、パーソナル・コンピュータまたはラップトップ・デバイス、あるいは、グラフィックスデータを表示することが可能な他のデバイスを含んでも良いし、または、それの一部であっても良い。デバイス2はまた、上記で説明したデバイスの一部または全部において使用され得る1つまたは複数の集積回路内またはチップ内に含まれ得る。
処理システム10内で、コントローラ12は、たとえばGPU14および/またはディスプレイ・プロセッサ26などのような、処理システム10中の他のプロセッサの動作を制御することができる。本明細書で説明する技法によれば、GPU14は、GPUパイプライン18と、GPUパイプライン18に接続された頂点キャッシュ/バッファ16とを含む。頂点キャッシュ/バッファ16は、GPU14と同じ集積回路またはチップの一部であるオンチップ・バッファを含み得る。頂点キャッシュ/バッファ16の組み込みは、GPU14内のGPUパイプライン18を通るデータ量を低減し得る。
いくつかの例では、GPU14は、コントローラ12から、画像をレンダリング及び表示するための1つまたは複数のコマンド(commands)または命令(instructions)とともに、グラフィックス画像を表す画像ジオメトリを受信し得る。画像ジオメトリは、2次元(2D)または3次元(3D)コンピュータ・グラフィックス画像の表現に対応し得る。GPU14は、たとえば、ディスプレイ・デバイス20を介してデバイス2のユーザに、画像効果(image effect)、背景画像(background image)、ビデオゲーム画像(video gaming image)、または他の画像を提示するために、レンダリング・コマンド(rendering commands)に従って画像ジオメトリを処理する。経時的に、GPU14は、ビデオフレームのシーケンス中のビデオフレームとして表示され得る画像のそのような画像ジオメトリのうちの1つまたは複数を処理し得る。ディスプレイ・デバイス20は、液晶ディスプレイ(LCD)、ブラウン管(CRT)ディスプレイ、プラズマ・ディスプレイ、あるいは、ディスプレイ・プロセッサ26を介して処理システム10と統合(integrated)されるかまたはそれに接続される別のタイプのディスプレイ・デバイスを含み得る。
ある場合には、コントローラ12は、たとえばビデオゲーム・アプリケーションなどのような、デバイス2内で動作するアプリケーションから、1つまたは複数の画像ジオメトリを受信し得る。他の場合には、コントローラ12は、たとえば有線または無線ネットワークを介してデバイス2に接続される外部サーバなどのような、デバイス2の外部で動作するアプリケーションから、1つまたは複数の画像ジオメトリを受信し得る。たとえば、デバイス2は、ストリーミング・メディアまたはブロードキャスト・メディアを介して外部サーバから画像ジオメトリを受信し得る。
コントローラ12から画像ジオメトリを受信した後、GPU14は、ディスプレイ・プロセッサ26を介してディスプレイ・デバイス20上で提示するために、対応する画像を準備するために、画像ジオメトリを処理し得る。たとえば、GPU14は、ディスプレイ・デバイス20上で、該受信した画像ジオメトリによって表される2Dまたは3D画像を生成するために、たとえば点、線および三角形の形成などのような、いくつかのプリミティブグラフィックス演算を実施し得る。ディスプレイ・プロセッサ26は、ディスプレイ・デバイス20上で画像を表示する前に、たとえばスケーリング、回転または他の演算などのような、いくつかの演算を実行し得る。
一般に、GPUパイプライン18は、画像ジオメトリのプリミティブを処理するために様々な処理ステージを含む。プリミティブは、点、線、三角形および他の多角形を含む、最も単純なタイプの幾何学図形(geometric figures)であり、画像ジオメトリ内の1つまたは複数の頂点を用いて形成され得る。プリミティブまたはプリミティブの一部分が画像フレーム内で不可視である(たとえば、オブジェクトの裏面(backside)に位置する)とき、それらプリミティブまたはプリミティブの一部分は、画像の特定のフレームの処理中において考慮から除外(rejected)され得、可視プリミティブの隠れ面もまた削除(removed)され得る。隠れ面は、画像フレーム内で別のオブジェクトの後ろ(behind)に位置し得るかまたは透明(transparent)であり得る面である。
たとえば、GPUパイプライン18は、図2A〜図2Bおよび図3A〜図3Bの例に示すように、プリミティブの頂点に対応するいくつかの(certain)情報をフェッチ及び復号するために頂点フェッチ及び復号演算を含み得、その情報は次いで頂点シェーディング演算のために利用される。図1に示すように、GPUパイプライン18は、遅延頂点フェッチャ/シェーダ22を含み、遅延頂点フェッチャ/シェーダ22は、以下でさらに詳細に説明するように、複数の頂点フェッチャ/デコーダ・ステージと複数の頂点シェーディング・ステージとを含む。第1の頂点フェッチャ及びデコーダは、画像ジオメトリ内に含まれているプリミティブの頂点に関連付けられたいくつかの座標アトリビュート(coordinate attributes)をフェッチ及び復号し、これらを第1の頂点シェーダに与え得る。座標アトリビュートは、頂点シェーダに入力され、また、頂点シェーダにおける頂点ロケーション(vertex location)及びパースペクティブ・パラメータ(perspective parameters)の計算に寄与する、アトリビュートである。第1の頂点シェーダは、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成し得る。ここで、頂点座標は、ロケーションとパースペクティブ・パラメータとを含み得る。
第1の頂点シェーダは、頂点座標を頂点キャッシュ/バッファ16内に記憶し得る。いくつかの例では、頂点キャッシュ/バッファ16は、頂点座標を記憶するための専用記憶領域(dedicated storage area)を含み得る。頂点座標は、たとえば、画像ジオメトリ内の頂点のロケーションを識別するX、YおよびZ座標(たとえば、X、Y、Z軸上のXYZ座標)と画像ジオメトリのパースペクティブ・パラメータを含むW座標とをもつ4次元座標系に基づいて、画像ジオメトリ内のプリミティブの頂点を識別し得る。
GPUパイプライン18のプリミティブ・セットアップ・エレメントは、頂点キャッシュ/バッファ16に記憶された頂点座標を検索し、これらの座標を使用して画像ジオメトリ内の可視プリミティブを識別し得る。可視プリミティブを識別することに応答して、第2のフェッチャ及びデコーダは、可視プリミティブの頂点のいくつかの非座標アトリビュート(non-coordinate attributes)(たとえば、座標情報に関連付けられていないアトリビュート)をフェッチ及び復号し得、これらを第2の頂点シェーダに与え得る。非座標アトリビュートは、頂点シェーダに入力され、また、頂点シェーダにおける頂点ロケーション及びパースペクティブ・パラメータ以外のアトリビュートの計算に寄与する、アトリビュートである。いくつかの例では、座標アトリビュートは、頂点ロケーション及び他のアトリビュートの両方の計算に寄与し得るので、非座標アトリビュートと重複するいくつかのアトリビュートを有し得る。
非座標アトリビュートを受信すると、第2の頂点シェーダは、次いで、グラフィックス画像の表面特性を判定するために、可視プリミティブの頂点のみについて頂点アトリビュートを生成し得る。頂点アトリビュートは、たとえば、任意の所与の頂点に関連付けられた色と法線とテクスチャ座標とを含み得る。
そのようにして、GPUパイプライン18は、いくつかの非可視面及び/又は隠れ面(non-visible and/or hidden surfaces)のフェッチ及び頂点シェーディングのためのいくつかの計算集約的関数(computationally intensive functions)を実行する必要を最小限に抑え得るか又はなくし得る。従来、対応するプリミティブが可視であるか不可視であるかどうかにかかわらず、プリミティブ・セットアップより前に、画像ジオメトリ中のすべてのプリミティブの頂点に対して頂点フェッチ/復号及び頂点シェーディングが一般に実行されてきた。頂点フェッチ/復号及びシェーディング演算のいくつかを延期(deferring)することによって、所与の画像ジオメトリ内の可視プリミティブの頂点のみに対して頂点アトリビュートのフェッチ及びシェーディング演算を行うことが可能になる。これは、不要な頂点ストリーム・フェッチ及び頂点シェーディング計算を効果的に削除(removing)することによって、デバイス2内で電力消費量を低減し、さらにパフォーマンスを改善するのに役立ち得る。GPUパイプライン18及び遅延頂点フェッチャ/シェーダ22は、タイル・レンダリング・アーキテクチャ又は非タイル・レンダリング・アーキテクチャ(tiled- or non-tiled rendering architectures)において実装され得る。
図2A〜図2Bに、第1の例による、画像処理のための複数の頂点フェッチャ/デコーダ32,48及び複数の頂点シェーダ34,50を実装するGPUパイプライン30のブロック図を示す。この例では、図2A〜図2Bに示すGPUパイプライン30は、図1に示すGPUパイプライン18の一部であり得る。頂点フェッチャ/デコーダ32(頂点フェッチャ/デコーダ#1)、頂点シェーダ34(頂点シェーダ#1)、頂点フェッチャ/デコーダ48(頂点フェッチャ/デコーダ#2)、および頂点シェーダ50(頂点シェーダ#2)は、一態様によれば、図1に示す遅延頂点フェッチャ/シェーダ22の一部であり得る。複数の頂点フェッチャ/デコーダ32,48及び複数の頂点シェーダ34,50を実装することによって、GPUパイプライン30は、頂点フェッチャ/デコーダ48(頂点フェッチャ/デコーダ#2)及び頂点シェーダ50(頂点シェーダ#2)まで、いくつかの機能を延期し、いくつかの非可視プリミティブの頂点の頂点フェッチ及びシェーディングのための計算集約的関数のいくつかを実行する必要を最小限に抑え得るか又はなくし得る。
図2Aでは、コマンド・エンジン31は、GPUパイプライン30が常駐(resides)するデバイス(たとえば、図1に示すデバイス2)のコントローラから、画像のための画像ジオメトリとレンダリング・コマンドとを受信し得る。画像ジオメトリは、複雑な2Dまたは3Dコンピュータ・グラフィックスの表現に対応し得る。コマンド・エンジン31は、GPUパイプラインに沿って画像ジオメトリとレンダリング・コマンドとを他の処理ステージにパスする。
たとえば、コマンド・エンジン31は、画像ジオメトリ内に含まれているプリミティブの頂点の頂点インデックスを第1の頂点フェッチャ/デコーダ32にパスする。頂点フェッチャ/デコーダ32は、これらの頂点インデックスを受信し、次いで頂点のアトリビュートをフェッチし得る。たとえば、場合によっては、頂点フェッチャ/デコーダ32は、最初に、頂点キャッシュ機構(たとえば頂点キャッシュ/バッファ38内に含まれ得る)中で、アトリビュートのヒット/ミス・チェック(hit/miss checking)を実行し得る。(一態様では、頂点キャッシュ/バッファ38は、図1に示す頂点キャッシュ/バッファ16の一部であり得る。)ミスした頂点(missed vertices)について、頂点フェッチャ/デコーダ32は、メモリバッファ(たとえば内部メモリ24(図1)内に含まれ得る)から、アトリビュートをフェッチし得る。
図2A〜図2Bの例では、フェッチされたアトリビュートは、頂点の座標に関連付けられたアトリビュート(すなわち、座標アトリビュート)に対応し得る。座標アトリビュートは、画像ジオメトリの頂点のロケーション(たとえば、X、Y、Z軸上のXYZ座標)及びパースペクティブ・パラメータ(たとえば、W座標)の計算に関係するアトリビュートを含み得る。これらの座標アトリビュートは、頂点の実際の座標(たとえば、ロケーション及びパースペクティブについてのXYZW座標)を判定するための第1の頂点シェーダ34によって使用され得る。しかしながら、多くの場合、頂点フェッチャ/デコーダ32は、フェッチされた座標アトリビュートのアトリビュート・フォーマットを復号し、それらを頂点シェーダ34によって許容(acceptable)できる内部フォーマットに変換し得る。
頂点シェーダ34は、画像ジオメトリに適用され、画像ジオメトリ内の頂点において画像の表面特性を判定する。このようにして、頂点シェーダ34は、画像ジオメトリ内の頂点の各々の頂点座標を生成する。頂点座標は、たとえば、画像ジオメトリ内の頂点のロケーションを識別するX、YおよびZ座標と画像ジオメトリのパースペクティブ・パラメータを含むW座標とをもつ4次元座標系に基づいて、画像ジオメトリ内の頂点を識別する。頂点座標の生成時に、頂点シェーダは、この座標を頂点キャッシュ/バッファ38に記憶し得る。
図2Aの例に示すように、頂点キャッシュ/バッファ38は、様々なタイプの頂点データのための別個の専用記憶領域を含み得る。頂点キャッシュ/バッファ38の座標記憶領域(coordinate storage area)40は、たとえば、頂点シェーダ34によって与えられ得る頂点座標を記憶することが可能である。頂点キャッシュ/バッファ38のアトリビュート記憶領域(attribute storage area)42は、以下でさらに詳細に説明するように、たとえば、第2の頂点シェーダ50によって与えられ得る頂点アトリビュートを記憶することが可能である。いくつかの例では、頂点シェーダ34は、頂点キャッシュ/バッファ38の座標記憶領域40内に記憶された頂点座標のキャッシュ・インデックス値をプリミティブ・セットアップ・モジュール36に与え得る。これらの例では、キャッシュ・インデックス値は、頂点フェッチャ/デコーダ32によって計算され、頂点シェーダ34に伝えられ得る。
プリミティブ・セットアップ・モジュール36は、頂点キャッシュ/バッファの座標記憶領域40の中からプリミティブ頂点の頂点座標(たとえば、X、Y、Z、W座標)を読み取り得る。プリミティブ・セットアップ・モジュール36は、座標記憶領域40内での検索(retrieval)のために頂点座標の位置を特定(locate)するために、頂点シェーダ34によって与えられたキャッシュ・インデックス値を使用し得る。プリミティブ・セットアップ・モジュール36は、画像ジオメトリ内に1つまたは複数の頂点をもつプリミティブを形成する。プリミティブは、最も単純なタイプの幾何学図形であり、点と、線と、三角形と、他の多角形とを含み得る。
プリミティブ・セットアップ・モジュール36は、不可視プリミティブの初期除去(initial rejection)を実行し得る。たとえば、ビューポート(viewport)又は閲覧領域(viewing region)の外部に位置し得るプリミティブが不可視プリミティブとして除外され得る。プリミティブ・セットアップ・モジュール36はまた、プリミティブ内の頂点のXY座標を使用して切り抜き(scissoring)とバックフェース・カリング(backface culling)とを実行することによって、プリミティブを除外し得る。切り抜き及びバックフェース・カリングは、プリミティブ及びプリミティブの一部分が画像フレーム内で不可視であるとき、画像の特定のフレームの処理中にプリミティブ及びプリミティブの一部分を考慮から除外する。たとえば、該プリミティブ及びプリミティブの一部分は、画像フレーム内のオブジェクトの裏面に位置し得る。
プリミティブ・セットアップ・モジュール36は、画像ジオメトリ内の可視プリミティブをスキャン・コンバータ44に与え得る。ここで、プリミティブは、たとえば、プリミティブ内の頂点の各々のXY座標と、プリミティブ中に含まれるピクセルの数とに基づいて、ピクセルにラスタライズされ得る。
並行して、プリミティブ・セットアップ・モジュール36は、可視プリミティブの頂点インデックスを第2の頂点フェッチャ/デコーダ48に与え得る。頂点フェッチャ/デコーダ48は、これらの頂点インデックスを受信し、次いで頂点のアトリビュートをフェッチし得る。たとえば、場合によっては、頂点フェッチャ/デコーダ48は、最初に、たとえば、頂点キャッシュ機構(たとえば頂点キャッシュ/バッファ38内に含まれ得る)中で、アトリビュートのヒット/ミスチェックを実行し得る。ミスした頂点について、頂点フェッチャ/デコーダ48は、メモリバッファ(たとえば内部メモリ24(図1)内に含まれ得る)から、アトリビュートをフェッチし得る。
図2A〜図2Bの例では、頂点フェッチャ/デコーダ48によってフェッチされるアトリビュートは、頂点の座標又は座標演算に関連付けられていないアトリビュートに対応し得、非座標アトリビュートと呼ばれることがある。これらの非座標アトリビュートは、画像ジオメトリ中の可視プリミティブの頂点の頂点アトリビュートを計算するために第2の頂点シェーダ50によって使用され得る。頂点アトリビュートは、たとえば、所与の頂点に関連付けられた色、法線及び/又はテクスチャ座標を含み得る。計算時に、頂点シェーダ50は、頂点アトリビュートを頂点キャッシュ/バッファ38のアトリビュート記憶領域42内に記憶し得る。一態様では、頂点アトリビュートは、OpenGL/OpenGL SL(Open Graphics Library/Open Graphics Library Shading Language)仕様の用語を使用して「varying」と呼ばれる。
前に説明したように、また図2A〜図2Bに示すように、頂点キャッシュ/バッファ38は、座標記憶領域40とアトリビュート記憶領域42との、2つの領域に論理的に分割され得る。頂点キャッシュ/バッファ38のこれらの2つの領域は、GPUパイプライン30が使用するためにGPU(たとえば、図1のGPU14)によって独立して管理され得る。座標記憶領域40は、頂点シェーダ34によって生成され、プリミティブ・セットアップ・モジュール36によって使用される頂点座標を含んでいる。アトリビュート記憶領域42は、頂点シェーダ50によって生成され、アトリビュート・セットアップ及び補間モジュール(attribute setup and interpolation module)52によって使用される頂点座標を含んでいる。頂点シェーダ50は、頂点キャッシュ/バッファ38のアトリビュート記憶領域42内に記憶された頂点アトリビュートのキャッシュ・インデックス値をアトリビュート・セットアップ及び補間モジュール52に与え得る。これらのキャッシュ・インデックス値は、頂点フェッチャ/デコーダ48によって計算され得る。
図2Aの例では、頂点フェッチャ/デコーダ48及び頂点シェーダ50は、スキャン・コンバータ44及び初期Zモジュール(early Z module)46の、GPUパイプライン30内でのパイプライン・レイテンシ(pipeline latency)をほぼカバーし得る。したがって、フェッチャ/デコーダ48及び頂点シェーダ50の演算は、スキャン・コンバータ44及び初期Zモジュール46の演算とほぼ並行して実行され得、それにより様々なパフォーマンス効率を達成し得る。初期Zモジュール46は、たとえば、プリミティブ内の頂点のZ座標に基づく初期深度及びステンシル・テスト(early depth and stencil test)を使用して可視プリミティブの隠れ面を削除するために、スキャン・コンバータ44と連携して動作する。プリミティブまたはプリミティブ内のピクセル(たとえば、面)は、プリミティブまたはプリミティブ内のピクセルが画像フレーム内の別のオブジェクト(たとえば、別のプリミティブ)の後ろに位置するか、または画像フレーム内で透明であるとき、隠れていると見なされ得、したがって画像の特定のフレームの処理中に考慮から削除され得る。
頂点アトリビュートが頂点シェーダ50によってアトリビュート記憶領域42に記憶された後、遅延アトリビュート・セットアップ及び補間モジュール(deferred attribute setup and interpolation module)52は、アトリビュート記憶領域42から、これらのアトリビュートを検索し得る。アトリビュート・セットアップ及び補間モジュール52は、アトリビュート記憶領域42内での検索のために頂点アトリビュートの位置を特定するために、頂点シェーダ50によって与えられるキャッシュ・インデックス値を使用し得る。アトリビュート・セットアップ及び補間モジュール52はまた、初期Zモジュール46から、除外されていないプリミティブのピクセルを取得し得る。アトリビュート・セットアップ及び補間モジュール52は、次いで、たとえば、アトリビュート勾配値(attribute gradient values)に基づいて、プリミティブ内のピクセルにわたってアトリビュートを補間し得る。
一態様では、アトリビュート勾配は、水平(X)方向または垂直(Y)方向に移動するプリミティブ内の第1のピクセルにおけるアトリビュート値と第2のピクセルにおけるアトリビュート値との間の差分(difference)を含む。頂点アトリビュートは、アトリビュート勾配を計算するために使用され得る。場合によっては、アトリビュート勾配セットアップ・レートは、プリミティブに関連付けられた頂点アトリビュートの数に大きく依存することがある。したがって、フェッチ、復号及びシェーディングのいくつかの機能を延期することによって、GPUパイプライン30は、アトリビュート・セットアップ及び補間モジュール52によって処理される必要があるアトリビュートの数を制限し、それによって、アトリビュート・セットアップ及び補間モジュール52が動作し得る効率を増加させる。遅延アトリビュート・セットアップ及び補間モジュール52は、プリミティブ・セットアップ・モジュール36によって判定された、可視プリミティブに関連付けられた頂点の頂点アトリビュートを検索及び処理するだけでよく、(初期Zモジュール46によって判定された)隠れ面も削除されている。別の態様では、遅延アトリビュート・セットアップ及び補間モジュール52は、たとえば係数発生器(coefficient generator)などのような別の機構によって置き換えられ得るか又は実装され得る。この態様では、補間は、生成された係数に対して実行され得る。
図2Bに示すように、アトリビュート・セットアップ及び補間モジュール52は、プリミティブのピクセル・レンダリングを実行するために、補間されたアトリビュート値をピクセル/フラグメント・シェーダ54に与え得る。ピクセル/フラグメント・シェーダ54は、画像ジオメトリのプリミティブ内のピクセルにおける画像の表面特性を判定し得る。ピクセル/フラグメント・シェーダ54の結果は、次いで、図1に示すディスプレイ・デバイス20上などに表示するためにピクセルを準備するために、後処理モジュール56に出力され得る。
一態様では、頂点シェーダ34及び頂点シェーダ50は、ハードウェアコストを節約するために、GPUパイプライン30を実装するための同じシェーダプロセッサ(図示せず)を物理的に共有し得る。一態様では、頂点ストリームフェッチャ/デコーダ32及び頂点ストリームフェッチャ/デコーダ48は、ハードウェアコストを節約するために、同じストリーム・キャッシュ(図示せず)を共有し得る。
GPUパイプライン30は、いくつかの非可視面及び/又は隠れ面のフェッチ及び頂点シェーディングのためのいくつかの計算集約的関数を実行する必要を最小限に抑え得るか又はなくし得る。いくつかの頂点フェッチ/復号演算及びシェーディング演算を延期することによって、所与の画像ジオメトリ内の可視プリミティブの頂点のみに対してフェッチ及びシェーディング演算を行うことが可能になる。これは、不可視であるとして除外されたプリミティブのための不要な頂点ストリーム・フェッチ及び頂点シェーディング計算を効果的に削除することによって、電力消費量を低減し、さらにパフォーマンスを改善するのに役立ち得る。
図3A〜図3Bに、第2の例による、画像処理のための複数の頂点フェッチャ/デコーダと複数の頂点シェーダとを実装するGPUパイプライン60のブロック図を示す。図2A〜図2Bに示すGPUパイプライン30と同様に、GPUパイプライン60は、コマンド・エンジン61と、第1の頂点フェッチャ/デコーダ62と、第1の頂点シェーダ64と、プリミティブ・セットアップ・モジュール66と、スキャン・コンバータ68と、初期Zモジュール70と、第2の頂点フェッチャ/デコーダ78と、第2の頂点シェーダ80と、遅延アトリビュート・セットアップ及び補間モジュール82と、ピクセル/フラグメント・シェーダ84と、後処理モジュール86とを含む。頂点フェッチャ/デコーダ62(頂点フェッチャ/デコーダ#1)、頂点シェーダ64(頂点シェーダ#1)、頂点フェッチャ/デコーダ78(頂点フェッチャ/デコーダ#2)、および頂点シェーダ80(頂点シェーダ#2)は、一態様によれば、図1に示す遅延頂点フェッチャ/シェーダ22の一部であり得る。
図3A〜図3Bはまた、GPUパイプライン60が頂点キャッシュ/バッファ72とインターラクト(interacts)することを示している。図2A〜図2Bに示す頂点キャッシュ/バッファ38と同様に、頂点キャッシュ/バッファ72は、座標記憶領域74とアトリビュート記憶領域76との、頂点座標及び頂点アトリビュートのための別個の記憶領域を含む。
GPUパイプライン30と同様に、GPUパイプライン60は、頂点キャッシュ/バッファ72とインターラクトするとき、頂点座標及び頂点アトリビュートデータを記憶及び検索する。たとえば、頂点シェーダ64は頂点座標を座標記憶領域74内に記憶し得る。プリミティブ・セットアップ・モジュール66は、次いで、不可視プリミティブを識別し、除外するために、画像ジオメトリ内のプリミティブの頂点の頂点座標を検索し得る。ただし、GPUパイプライン30とは異なり、GPUパイプライン60は、プリミティブ・セットアップ・モジュール66からの出力をスキャン・コンバータ68と初期Zモジュール70とにのみ与える。スキャン・コンバータ68は、ピクセルを生成するためにラスタ化関数(rasterization functions)を実行し、初期Zモジュール70は、隠れ面を除外し得る。
可視プリミティブは、次いで、第2の頂点フェッチャ/デコーダ78にパスされ、第2の頂点フェッチャ/デコーダ78は、次いで、これらのプリミティブの頂点インデックスのヒット/ミスチェックを実行し得る。頂点フェッチャ/デコーダ78は、次いで、第2の頂点シェーダ80が、これらの頂点の頂点アトリビュート(たとえば、色、法線、テクスチャ)を生成し、これらのアトリビュートをアトリビュート記憶領域76内に記憶し得るように、これらの頂点の非座標アトリビュートをフェッチ及び復号し得る。遅延アトリビュート・セットアップ及び補間モジュール82、ピクセル/フラグメント・シェーダ84、および後処理モジュール86は、次いで、表示のためにデータを処理するために、遅延アトリビュート・セットアップ及び補間モジュール52、ピクセル/フラグメント・シェーダ54、および後処理モジュール56(図2A〜図2B)と同様である関数を実行し得る。
GPUパイプライン60は、いくつかの利点を提供し得る。たとえば、頂点フェッチャ/デコーダ78は初期Zモジュール70から出力を受信するので、頂点フェッチャ/デコーダ78及び頂点シェーダ80は、必ずしも頂点インデックスを処理したり、隠れ面の頂点の頂点アトリビュートを計算したりする必要はない。初期Zモジュール70は、さらなる処理からそのような隠れ面のうちの1つまたは複数を削除し得、それにより、頂点フェッチャ/デコーダ78及び頂点シェーダ80の処理量(processing bandwidth)を節約し得る。(図2A〜図2Bの例では、頂点フェッチャ/デコーダ48及び頂点シェーダ50は、スキャン・コンバータ44及び初期Zモジュール46と実質的に並行して動作する。そのような例では、頂点フェッチャ/デコーダ48及び頂点シェーダ50が、潜在的な(potentially)隠れ面の頂点を処理するサイクルを費やす必要があり得る可能性がある。)ただし、多くの状況では、初期Zモジュール70によってよりも、プリミティブ・セットアップ・モジュール66によって、はるかに多数のプリミティブが除外され得、それにより、GPUパイプライン60の例のこの潜在的な利点を低減し得る。(たとえば、大多数のプリミティブが不可視であるとしてプリミティブ・セットアップ・モジュール66によって除外され得るが、面のプリミティブ/ピクセルのうちのはるかに小さい割合のみが隠れているとして初期Zモジュール70によって除外され得る。)
GPUパイプライン30と比較して、GPUパイプライン60もいくつかの制限を有し得る。頂点フェッチャ/デコーダ78及び頂点シェーダ80は、図2A〜図2Bの例の場合のように、スキャン・コンバータ68及び初期Zモジュール70と実質的に並行して動作するので、パイプライン・レイテンシの増加があり得る。
さらに、場合によっては、初期Zモジュール70から出力されたデータ(たとえば、ピクセル/プリミティブ)は、バッファされ、次いで、アトリビュート・セットアップ及び補間モジュール82によって、その後、検索される必要があり得る。図2A〜図2Bに関して前に説明したように、アトリビュート・セットアップ及び補間モジュールは、一般に、初期Zモジュールと、頂点アトリビュートを計算する第2の頂点シェーダの両方によって与えられる情報を組み込み(incorporates)、利用する。したがって、図3A〜図3Bの例では、初期Zモジュール70は、その出力データをバッファ(たとえば、別個のFIFO(先入れ先出し)バッファ)に記憶する必要があり得る。頂点シェーダ80が頂点アトリビュート情報をアトリビュート記憶領域76に記憶した後、遅延アトリビュート・セットアップ及び補間モジュール82は、次いで、頂点キャッシュ/バッファ72から頂点アトリビュートを検索し、さらに、初期Zモジュール70によって記憶されたバッファされた情報を検索する必要があり得る。この追加のバッファリング及び設計コストは、図2A〜図2Bに示す例によって潜在的に回避され得るか又は最小限に抑えられ得る追加のオーバーヘッドを追加し得る。図2A〜図2Bの例では、スキャン・コンバータ44及び初期Zモジュール46は、頂点フェッチャ/デコーダ48及び頂点シェーダ50と実質的に並行して動作する。
図4は、複数の頂点フェッチャ/シェーダ機構の実装が無効(disabled)にされている例示的なGPUパイプライン90を示すブロック図である。いくつかの例では、遅延頂点フェッチャ/シェーダ機構の使用が設定可能(configurable)であり得る。この機構は、GPU(たとえば、GPU14)内で実行可能であるドライバによって有効(enabled)にされ得るか又は設定(configured)され得る。たとえば、図2A〜図2Bの例では、コントローラ12によって実行可能なドライバは、いかなる利益又は処理効率も最小であり得ると判定したとき、頂点ストリームフェッチャ/デコーダ48と頂点シェーダ50とを選択的に無効にし得る。
一つのシナリオでは、ドライバは、頂点シェーダ34による頂点座標と頂点シェーダ50による頂点アトリビュートとの遅延処理(deferred processing)が、頂点座標と頂点アトリビュートの両方を計算する単一の頂点シェーダにわたって著しい処理又は電力の節約をもたらし得ないと判定し得る。この場合、ドライバは頂点フェッチャ/デコーダ48と頂点シェーダ50とを無効にし得る。場合によっては、ドライバは、ドライバからアクセス可能であるグラフィックス命令のコンパイル(compilation)から与えられる統計値(statistics)に基づいて、この判定を行い得る。いくつかの例では、ドライバは、所与の画像ジオメトリのデータの前フレーム(prior frames)の処理に基づいて、この判定を行い得る。
図4のGPUパイプライン90は、第2の頂点フェッチャ/デコーダと頂点シェーダとが無効にされたときの例示的な実装形態を示し、単一の頂点フェッチャ/デコーダと頂点シェーダとが利用される。GPUパイプライン90は、コマンド・エンジン91と、単一の頂点フェッチャ/デコーダ92と、頂点シェーダ94と、プリミティブ・セットアップ・モジュール96と、スキャン・コンバータ98と、初期Zモジュール100と、遅延アトリビュート・セットアップ及び補間モジュール102と、ピクセル/フラグメント・シェーダ104と、後処理モジュール106とを含む。
一例では、説明のために、コマンド・エンジン91は、コマンド・エンジン30(図2A)と同様に機能し、グラフィックスコマンドと画像ジオメトリとを受信する。ただし、頂点フェッチャ/デコーダ32とは異なり、図4の頂点フェッチャ/デコーダ92は、頂点インデックスに基づいて、座標ベースのアトリビュートと非座標ベースのアトリビュートの両方を含む、頂点のすべてのアトリビュートをフェッチする。頂点シェーダ94は、次いで、受信した画像ジオメトリ中に含まれているプリミティブの頂点の頂点座標と頂点アトリビュートの両方のセットを生成し、これらを頂点キャッシュ/バッファ108に記憶する。
図4に示す頂点キャッシュ/バッファ108は、たとえば、図2A〜図2Bに示す、頂点座標と頂点アトリビュートのための別個の記憶領域(40,42)を含む頂点キャッシュ/バッファ38とは反対に、1つの合成キャッシュ(combined cache)として管理される。別の態様では、頂点キャッシュ/バッファ108は、頂点座標と頂点アトリビュートとのための別個の記憶領域を含み得る。プリミティブ・セットアップ・モジュール96は、画像ジオメトリ中に含まれているプリミティブのすべて頂点の頂点座標を検索し、不可視プリミティブを除外する。スキャン・コンバータ98は、可視プリミティブをピクセルにラスタ化し、初期Zモジュール100は、さらに、隠れプリミティブ(hidden primitives)/ピクセル(たとえば、面)を削除し得る。
遅延アトリビュート・セットアップ及び補間モジュール102は、初期Zモジュール100から出力を受信し、さらに、頂点キャッシュ/バッファ108から可視プリミティブ頂点のすべての頂点アトリビュートを検索する。遅延アトリビュート・セットアップ及び補間モジュール102は、除外されなかったプリミティブの頂点(たとえば、可視であるプリミティブの頂点、及び、隠されていない可視プリミティブの面)に対応するアトリビュートに対してのみアトリビュート・セットアップ及び補間を実行する。ピクセル/フラグメント・シェーダ104及び後処理モジュール106は、図2Bに示すピクセル/フラグメント・シェーダ54及び後処理モジュール56と同様に機能する。
図5は、図2A〜図2Bおよび図3A〜図3Bに示すGPUパイプライン30および/またはGPUパイプライン60など、GPUパイプラインの様々なコンポーネントによって実行され得る例示的な方法を示すフローチャートである。ただ例示のために、図5に示す方法は、図2A〜図2Bに示すGPUパイプライン30によって実行されると仮定する。
頂点シェーダ34は、GPU処理パイプライン30内で、たとえば図1に示すコントローラ12などのようなコントローラから、コマンド・エンジン31によって受信された画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成する(110)。コマンド・エンジン31はまた、コントローラからレンダリング・コマンドを受信し得る。頂点座標は、ロケーションとパースペクティブ・パラメータとを含み得、画像ジオメトリはグラフィックス画像を表し得る。いくつかの例では、頂点シェーダ34は、画像ジオメトリ内の各プリミティブの頂点におけるグラフィックス画像の表面特性の判定中に頂点座標を生成し得る。
プリミティブ・セットアップ・モジュール36は、頂点座標に基づいて画像ジオメトリ内の可視プリミティブを識別する(112)。場合によっては、プリミティブ・セットアップ・モジュール36は、頂点座標に基づいて画像ジオメトリ内の不可視プリミティブを除外することによって、可視プリミティブを識別し得る。
可視プリミティブを識別することに応答して、頂点シェーダ50は、グラフィックス画像の表面特性を判定するために、GPUパイプライン30内で、可視プリミティブの頂点のみについて頂点アトリビュート(たとえば、色、テクスチャ、透明度)を生成する(114)。頂点アトリビュートは、GPUパイプライン30によって実行されるレンダリング・コマンドに基づいて可視プリミティブの表現を生成するために使用され得る。一態様では、頂点シェーダ50は、そのような生成が有効にされているときのみ、可視プリミティブの頂点のみについて頂点アトリビュートを生成し得る。上記で説明したように、GPUのドライバは、いくつかの例では、複数の頂点フェッチャ/デコーダ及び頂点シェーダを使用する遅延機能(deferred functionality)を無効にし得る。無効にされたとき、頂点フェッチャ/デコーダ48及び頂点シェーダ50が利用されず、GPUが図4に示すGPUパイプライン90を実装し得る。
頂点シェーダ34は、頂点フェッチャ/デコーダ32から画像ジオメトリ中の各プリミティブの頂点の座標アトリビュートを取得し得る。頂点シェーダ34は、次いで、頂点フェッチャ/デコーダ32から受信した頂点の座標アトリビュートに基づいて各プリミティブの頂点の頂点座標を生成し得る。頂点シェーダ34は、頂点座標を、たとえば頂点キャッシュ/バッファ38内の座標記憶領域40内などのような、頂点バッファの第1の専用エリアに記憶し得る。(前に説明したように、頂点キャッシュ/バッファ38は、頂点シェーダ50によって生成された頂点アトリビュートを記憶する第2の専用エリアであるアトリビュート記憶領域42を含み得る。)
一態様では、頂点シェーダ50は、頂点フェッチャ/デコーダ48から各可視プリミティブの頂点の非座標アトリビュートを取得し得る。頂点シェーダ50は、次いで、頂点の非座標アトリビュートに基づいて各可視プリミティブの頂点の頂点アトリビュートを生成し得る。これらの頂点アトリビュートは、アトリビュート・セットアップ及び補間モジュール52による後の検索のために、頂点キャッシュ/バッファ38のアトリビュート記憶領域42に記憶され得る。
図2Aに示す初期Zモジュール46は、可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、1つまたは複数の隠れ面の相対位置に基づいて、削除することができる。たとえば、可視プリミティブの面が画像ジオメトリ内の別のプリミティブの完全に後ろに位置している場合、その面は視野から隠され得る。この例では、初期Zモジュール46は、この隠れ面を削除し得る。初期Zモジュール46は、頂点シェーダ50によって実行される演算と実質的に並行して、その演算のうちのいずれかを実行し得る。たとえば、頂点シェーダ50が、頂点フェッチャ/デコーダ48から非座標アトリビュートを取得し、可視プリミティブの頂点のみについて頂点アトリビュートを生成する間に、初期Zモジュール46は隠れ面を削除し得る。頂点シェーダ50は、生成された頂点アトリビュートを頂点キャッシュ/バッファ38のアトリビュート記憶領域42内に記憶し得る。
前に説明したように、いくつかの例では、第2の頂点フェッチャ/デコーダ及び頂点シェーダは、図3A〜図3Bの例に示すように、初期Zモジュールの下流に(downstream)位置し得る。その例では、頂点フェッチャ/デコーダ78は初期Zモジュール70から直接出力を受信する。すなわち、初期Zモジュール70及び頂点フェッチャ/デコーダ78は、並行してではなく連続してそれらの機能を実行する。初期Zモジュール70は、頂点シェーダ80が頂点フェッチャ/デコーダ78から非座標アトリビュートを取得し、可視プリミティブの頂点の頂点アトリビュートを生成する前に、それらの可視プリミティブの隠れ面を削除し得る。
頂点シェーダ80は、頂点フェッチャ/デコーダ78から各可視プリミティブの頂点の非座標アトリビュートを取得又は受信し得る。頂点シェーダ80は、次いで、頂点の非座標アトリビュートに基づいて各可視プリミティブの頂点の頂点アトリビュートを生成し、これらの頂点アトリビュートをアトリビュート記憶領域76に記憶し得る。
図6A〜図6Cに、図2A〜図2Bに示すGPUパイプライン30などのGPUパイプライン内の様々なコンポーネントによって実行され得る例示的な方法のフローチャートを示す。図6A〜図6Cはまた、指示された動作を実行し得るGPUパイプライン内の様々なコンポーネントを示す。説明のために、図6A〜図6Cに示す方法がGPUパイプライン30のコンポーネントによって実行されると仮定する。
最初に、図6Aを参照すると、コマンド・エンジン31は、コントローラから(たとえば図1に示すデバイス2のコントローラ12からなど)、画像ジオメトリ及びレンダリング・コマンドを受信する(120)。コマンド・エンジン31は、次いで、第1の頂点フェッチャ/デコーダ32に頂点インデックスを送る(122)。頂点インデックスは、画像ジオメトリ内に含まれているプリミティブの頂点に関係する。
頂点フェッチャ/デコーダ32は、頂点インデックスに基づいて頂点の座標アトリビュート(たとえば、ロケーションとパースペクティブとに関係するアトリビュート)をフェッチする(124)。たとえば、頂点フェッチャ/デコーダ32は、頂点キャッシュ機構(たとえば、頂点キャッシュ/バッファ38)に対して座標アトリビュートのヒット/ミスチェックを実行し得、ミスした頂点について別個のメモリバッファ(たとえば、内部メモリ24)からアトリビュートをフェッチし得る。頂点フェッチャ/デコーダ32は、アトリビュート・フォーマットを復号し、それらを、頂点シェーダ34によって認識可能または許容可能であり得る内部フォーマットに変換する(126)。頂点フェッチャ/デコーダ32は、次いで、変換された座標アトリビュートを第1の頂点シェーダ34に送る(128)。
頂点フェッチャ/デコーダ32から座標アトリビュート情報を受信すると、頂点シェーダ34は、画像ジオメトリ内に含まれているプリミティブの頂点の頂点座標(たとえば、ロケーション及びパースペクティブのXYZW座標)を生成する(130)。頂点シェーダ34は、これらの頂点座標を頂点キャッシュ/バッファ38の座標記憶領域40内に記憶する(132)。さらに、頂点シェーダ34は、記憶された頂点座標のキャッシュ・インデックス値(それは頂点フェッチャ/デコーダ32によって計算され得る)を、プリミティブ・セットアップ・モジュール36に与え得る。
次に、図6Bを参照すると、プリミティブ・セットアップ・モジュール36は、頂点キャッシュ/バッファ38の座標記憶領域40から頂点座標を検索する(134)。プリミティブ・セットアップ・モジュール36は、座標記憶領域40内での検索のために頂点座標の位置を特定(locate)するために、頂点シェーダ34によって与えられたキャッシュ・インデックス値を使用し得る。プリミティブ・セットアップ・モジュール36は、画像ジオメトリ内のプリミティブの頂点座標に基づいて、画像ジオメトリ内の可視プリミティブを識別し、不可視プリミティブを除外する(136)。たとえば、特定のプリミティブの頂点座標は、閲覧エリア(viewing area)又はビューポートの境界外に出ることがあり得る。いくつかの例では、ビューポートのロケーション(location)及び位置(position)は、アプリケーションによってまたはデバイスによって定義され得るか、或いは、コマンド・エンジン31によって受信されたレンダリング・コマンドによって指定され得る。いくつかの例では、プリミティブ・セットアップ・モジュール36は、バックフェース・カリングを実行した後にプリミティブを除外し得る。バックフェース・カリングは、閲覧者(viewer)のほうに配向されていないかまたは閲覧者に対向していないために、その閲覧者に見えないプリミティブを判定し得る。これらのプリミティブは、プリミティブ・セットアップ・モジュール36によって除外され得る。
図2A〜図2Bの例示的なGPUパイプラインでは、プリミティブ・セットアップ・モジュール36は、可視プリミティブの頂点のインデックスを第2の頂点フェッチャ/デコーダ48に送る(140)。実質的に並行して、プリミティブ・セットアップ・モジュール36はまた、可視プリミティブをスキャン・コンバータ44に与える(138)。スキャン・コンバータ44は可視プリミティブをピクセルに変換する(142)。初期Zモジュール46は画像ジオメトリの隠れプリミティブ/ピクセル(たとえば、面)を除外する(146)。プリミティブまたはプリミティブ内のピクセルは、プリミティブまたはプリミティブ内のピクセルが画像フレーム内の別のオブジェクトの後ろに位置しているか、または画像フレーム内で透明であるとき、隠れていると見なされ得、したがって画像の特定のフレームの処理中に考慮から削除され得る。
スキャン・コンバータ44及び初期Zモジュール46がそれらの個々の演算を実行している間、頂点フェッチャ/デコーダ48及び頂点シェーダ50もいくつかの演算を実行し得る。頂点フェッチャ/デコーダ48は、プリミティブ・セットアップ・モジュール36によって与えられるインデックスを使用して、可視プリミティブの頂点の非座標アトリビュート(たとえば、XYZW座標に関係しないアトリビュート)をフェッチする(144)。頂点フェッチャ/デコーダ48は、頂点の非座標アトリビュートを復号及び変換し得(148)、次いで、変換された非座標アトリビュートを第2の頂点シェーダ50に送り得る(150)。
次に、図6Cを参照すると、頂点シェーダ50は、画像ジオメトリ内の可視プリミティブの頂点の各々について頂点アトリビュート(たとえば、色、テクスチャ)を生成する(152)。頂点シェーダ50は、次いで、頂点アトリビュートを頂点キャッシュ/バッファ38のアトリビュート記憶領域42内に記憶する(154)。さらに、頂点シェーダ50は、記憶された頂点アトリビュートのキャッシュ・インデックス値を遅延アトリビュート・セットアップ及び補間モジュール52に与え得る。これらのキャッシュ・インデックス値は、頂点フェッチャ/デコーダ48によって計算され、頂点シェーダ50に与えられ得る。
アトリビュート・セットアップ及び補間モジュール52は、これらの頂点アトリビュートを頂点キャッシュ/バッファ38のアトリビュート記憶領域42から検索する(156)。アトリビュート・セットアップ及び補間モジュール52は、アトリビュート記憶領域42内での検索のために頂点アトリビュートの位置を特定するために、頂点シェーダ50によって与えられるキャッシュ・インデックス値を使用し得る。アトリビュート・セットアップ及び補間モジュール52はまた、初期Zモジュール46から、除外されていないプリミティブのピクセルを取得し得る。アトリビュート・セットアップ及び補間モジュール52は、次いで、たとえば、アトリビュート勾配値に基づいて、可視プリミティブのピクセルにわたって頂点アトリビュートを補間する(158)。
フェッチ、復号及びシェーディングのいくつかの機能を延期することによって、GPUパイプライン30は、アトリビュート・セットアップ及び補間モジュール52によって処理される必要があるアトリビュートの数を制限し、それによって、アトリビュート・セットアップ及び補間モジュール52が動作し得る効率を増加させ得る。アトリビュート・セットアップ及び補間モジュール52は、プリミティブ・セットアップ・モジュール36によって判定された、可視プリミティブに関連付けられた頂点と、(初期Zモジュール46によって判定された)隠れ面の一部でない頂点とについて、頂点アトリビュートを検索及び処理するだけでよい。
アトリビュート・セットアップ及び補間モジュール52は、補間されたアトリビュート値をピクセル/フラグメント・シェーダ54に与え得る。ピクセル/フラグメント・シェーダ54は、次いで、プリミティブのピクセル/フラグメント・シェーディングを実行する(160)。ピクセル/フラグメント・シェーダ54は、画像ジオメトリのプリミティブ内のピクセルにおける画像の表面特性を判定し得る。ピクセル/フラグメント・シェーダ54の結果は、次いで、後処理モジュール56に出力され得る。後処理モジュール56は、たとえばピクセルブレンディング演算などのような、1つまたは複数の後処理演算を実行して(162)、たとえば図1に示すディスプレイ・デバイス20上などでの表示のためにピクセルを準備する。
本開示で説明する技法は、汎用マイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、または他の同等の論理デバイスのうちの1つまたは複数の内に実装され得る。したがって、本明細書で使用する「プロセッサ」または「コントローラ」という用語は、前述の構造、または本明細書で説明する技法の実装に好適な他の構造のうちのいずれか1つまたは複数を指す。
本明細書で説明した様々なコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の適切な組み合せによって実現され得る。図では、様々なコンポーネントは、別々のユニットまたはモジュールとして示される。しかしながら、これらの図を参照しながら説明した様々なコンポーネントのすべてまたはいくつかは、共通ハードウェア、ファームウェア、および/またはソフトウェア内の組合せユニットまたはモジュールに統合され得る。したがって、コンポーネント、ユニット、またはモジュールとしての特徴の表現は、説明しやすいように特定の機能的特徴を強調するものであり、別々のハードウェア、ファームウェア、またはソフトウェアコンポーネントによるそのような特徴の実現を必ずしも必要としない。場合によっては、様々なユニットは、1つまたは複数のプロセッサによって実行されるプログラマブルプロセスとして実装され得る。
モジュール、デバイス、またはコンポーネントとして本明細書で説明した機能は、集積論理デバイスに一緒に、または個別であるが相互運用可能な(interoperable)論理デバイスとして別々に実装され得る。様々な態様では、そのようなコンポーネントは、少なくとも部分的に、まとめて集積回路デバイス(たとえば、集積回路チップまたはチップセットなど)と呼ばれることがある1つまたは複数の集積回路デバイスとして形成され得る。そのような回路は、単一の集積回路チップデバイス中、または複数の相互運用可能な集積回路チップデバイス中に設けられ得、様々な画像、ディスプレイ、音声、または他のマルチメディアアプリケーションおよびデバイスのいずれかにおいて使用され得る。いくつかの態様では、たとえば、そのようなコンポーネントは、モバイル・デバイス(たとえば、無線通信デバイス・ハンドセットなど)の一部を形成し得る。
ソフトウェアで実装した場合、これらの技法は、1つまたは複数のプロセッサによって実行されたとき、上記で説明した方法のうちの1つまたは複数を実行する命令をもつコードを含むコンピュータ読み取り可能なデータ記憶媒体によって少なくとも部分的に実現され得る。コンピュータ読み取り可能な記憶媒体は、パッケージング材料を含むことがあるコンピュータ・プログラム製品の一部を形成し得る。コンピュータ読み取り可能な記憶媒体は、ランダムアクセスメモリ(RAM)(たとえば、同期ダイナミックランダムアクセスメモリ(SDRAM)など)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、埋込みダイナミックランダムアクセスメモリ(eDRAM)、スタティックランダムアクセスメモリ(SRAM)、フラッシュメモリ、磁気または光学データ記憶媒体を含み得る。利用される任意のソフトウェアは、1つまたは複数のプロセッサ(たとえば、1つまたは複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、または他の等価の集積またはディスクリート論理回路など)によって実行され得る。
様々な態様について本開示で説明した。これらおよび他の態様は以下の特許請求の範囲内に入る。

Claims (54)

  1. グラフィックス処理ユニット(GPU)の処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成することと、ここで、前記頂点座標は、前記頂点の各々のロケーションとパースペクティブ・パラメータとを含み、前記画像ジオメトリは、グラフィックス画像を表す、
    前記GPUの前記処理パイプライン内で、前記頂点座標に基づいて前記画像ジオメトリ内の可視プリミティブを識別することと、
    前記可視プリミティブを識別することに応答して、前記グラフィックス画像の表面特性を判定するために、前記GPUの前記処理パイプライン内で、前記可視プリミティブの前記頂点のみについて頂点アトリビュートを生成することを含む方法。
  2. 前記頂点座標を生成することは、前記画像ジオメトリ内の各プリミティブの前記頂点における前記グラフィックス画像の前記表面特性の前記判定中に前記頂点座標を生成することを含む、請求項1に記載の方法。
  3. 前記頂点アトリビュートは、各頂点に関連付けられた色パラメータまたはテクスチャパラメータのうちの1つまたは複数を含む、請求項1に記載の方法。
  4. 前記GPUの前記処理パイプライン内で、前記GPUによって受信されたレンダリング・コマンドに基づいて前記可視プリミティブの表現を生成するために前記頂点アトリビュートを使用することをさらに含む、請求項1に記載の方法。
  5. 前記GPUの前記処理パイプライン内で前記画像ジオメトリ中の各プリミティブの前記頂点の座標アトリビュートを取得することをさらに含み、
    前記頂点座標を生成することは、前記頂点の前記座標アトリビュートに基づいて各プリミティブの前記頂点の前記頂点座標を生成することを含む、請求項1に記載の方法。
  6. 頂点バッファの第1の専用エリア中に前記頂点座標を記憶することと、
    前記頂点バッファの第2の異なる専用エリア中に前記頂点アトリビュートを記憶することをさらに含む、請求項1に記載の方法。
  7. 前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除することをさらに含む、請求項1に記載の方法。
  8. 前記1つまたは複数の隠れ面を削除することは、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することと並行して実行される、請求項7に記載の方法。
  9. 前記1つまたは複数の隠れ面を削除することは、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することの前に実行される、請求項7に記載の方法。
  10. 各可視プリミティブの前記頂点の非座標アトリビュートを取得することをさらに含み、
    前記頂点アトリビュートを生成することは、前記頂点の前記非座標アトリビュートに基づいて各可視プリミティブの前記頂点の前記頂点アトリビュートを生成することを含む、請求項1に記載の方法。
  11. 前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除することをさらに含み、
    前記1つまたは複数の隠れ面を削除することは、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することと並行して実行される、請求項10に記載の方法。
  12. 前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除することをさらに含み、
    前記1つまたは複数の隠れ面を削除することは、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することの前に実行される、請求項10に記載の方法。
  13. 前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することは、前記生成が可能であると判定したときに行われる、請求項10に記載の方法。
  14. グラフィックス処理ユニット(GPU)を含むデバイスであって、
    前記グラフィックス処理ユニット(GPU)は、
    前記GPUの処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成し、ここで、前記頂点座標は、前記頂点の各々のロケーションとパースペクティブ・パラメータとを含み、前記画像ジオメトリは、グラフィックス画像を表す、
    前記GPUの前記処理パイプライン内で、前記頂点座標に基づいて前記画像ジオメトリ内の可視プリミティブを識別し、
    前記可視プリミティブを識別することに応答して、前記グラフィックス画像の表面特性を判定するために、前記GPUの前記処理パイプライン内で、前記可視プリミティブの前記頂点のみについて頂点アトリビュートを生成するように構成されるデバイス。
  15. 前記GPUは、前記画像ジオメトリ内の各プリミティブの前記頂点における前記グラフィックス画像の前記表面特性の前記判定中に前記頂点座標を生成するように構成される、請求項14に記載のデバイス。
  16. 前記頂点アトリビュートは、各頂点に関連付けられた色パラメータまたはテクスチャパラメータのうちの1つまたは複数を含む、請求項14に記載のデバイス。
  17. 前記GPUは、前記GPUの前記処理パイプライン内で、前記GPUによって受信されたレンダリング・コマンドに基づいて前記可視プリミティブの表現を生成するために前記頂点アトリビュートを使用するようにさらに構成される、請求項14に記載のデバイス。
  18. 前記GPUは、前記GPUの前記処理パイプライン内で前記画像ジオメトリ中の各プリミティブの前記頂点の座標アトリビュートを取得するようにさらに構成され、
    前記GPUは、前記頂点の前記座標アトリビュートに基づいて各プリミティブの前記頂点の前記頂点座標を生成するように構成される、請求項14に記載のデバイス。
  19. 第1及び第2の専用エリアを有するオンチップ頂点バッファをさらに含み、
    前記GPUは、前記頂点バッファの前記第1の専用エリア中に前記頂点座標を記憶し、前記頂点バッファの前記第2の専用エリア中に前記頂点アトリビュートを記憶するようにさらに構成される、請求項14に記載のデバイス。
  20. 前記GPUは、前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除するようにさらに構成される、請求項14に記載のデバイス。
  21. 前記GPUは、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することと並行して前記1つまたは複数の隠れ面を削除するように構成される、請求項20に記載のデバイス。
  22. 前記GPUは、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することの前に前記1つまたは複数の隠れ面を削除するように構成される、請求項20に記載のデバイス。
  23. 前記GPUは、各可視プリミティブの前記頂点の非座標アトリビュートを取得するようにさらに構成され、前記GPUは、前記頂点の前記非座標アトリビュートに基づいて各可視プリミティブの前記頂点の前記頂点アトリビュートを生成するように構成される、請求項14に記載のデバイス。
  24. 前記GPUは、前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除するようにさらに構成され、前記GPUは、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することと並行して前記1つまたは複数の隠れ面を削除するように構成される、請求項23に記載のデバイス。
  25. 前記GPUは、前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除するようにさらに構成され、前記GPUは、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することの前に前記1つまたは複数の隠れ面を削除するように構成される、請求項23に記載のデバイス。
  26. 前記GPUは、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することが可能であると判定したときに前記生成を行うように構成される、請求項23に記載のデバイス。
  27. 前記デバイスは、無線通信デバイス・ハンドセットを含む、請求項14に記載のデバイス。
  28. 前記デバイスは、1つまたは複数の集積回路デバイスを含む、請求項14に記載のデバイス。
  29. 1つまたは複数のプロセッサに、
    グラフィックス処理ユニット(GPU)の処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成させ、ここで、前記頂点座標は、前記頂点の各々のロケーションとパースペクティブ・パラメータとを含み、前記画像ジオメトリは、グラフィックス画像を表す、
    前記GPUの前記処理パイプライン内で、前記頂点座標に基づいて前記画像ジオメトリ内の可視プリミティブを識別させ、
    前記可視プリミティブを識別することに応答して、前記グラフィックス画像の表面特性を判定するために、前記GPUの前記処理パイプライン内で、前記可視プリミティブの前記頂点のみについて頂点アトリビュートを生成させるための実行可能命令を含むコンピュータ読み取り可能な記憶媒体。
  30. 前記1つまたは複数のプロセッサに前記頂点座標を生成させるための前記命令は、前記1つまたは複数のプロセッサに、前記画像ジオメトリ内の各プリミティブの前記頂点における前記グラフィックス画像の前記表面特性の前記判定中に前記頂点座標を生成させるための命令を含む、請求項29に記載のコンピュータ読み取り可能な記憶媒体。
  31. 前記頂点アトリビュートは、各頂点に関連付けられた色パラメータまたはテクスチャパラメータのうちの1つまたは複数を含む、請求項29に記載のコンピュータ読み取り可能な記憶媒体。
  32. 前記1つまたは複数のプロセッサに、前記GPUの前記処理パイプライン内で、前記GPUによって受信されたレンダリング・コマンドに基づいて前記可視プリミティブの表現を生成するために前記頂点アトリビュートを使用させるための命令をさらに含む、請求項29に記載のコンピュータ読み取り可能な記憶媒体。
  33. 前記1つまたは複数のプロセッサに、前記GPUの前記処理パイプライン内で前記画像ジオメトリ中の各プリミティブの前記頂点の座標アトリビュートを取得させるための命令をさらに含み、
    前記1つまたは複数のプロセッサに前記頂点座標を生成させるための前記命令は、前記1つまたは複数のプロセッサに、前記頂点の前記座標アトリビュートに基づいて各プリミティブの前記頂点の前記頂点座標を生成させるための命令を含む、請求項29に記載のコンピュータ読み取り可能な記憶媒体。
  34. 前記1つまたは複数のプロセッサに、
    頂点バッファの第1の専用エリア中に前記頂点座標を記憶させ、
    前記頂点バッファの第2の異なる専用エリア中に前記頂点アトリビュートを記憶させるための命令をさらに含む、請求項29に記載のコンピュータ読み取り可能な記憶媒体。
  35. 前記1つまたは複数のプロセッサに、前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除させるための命令をさらに含む、請求項29に記載のコンピュータ読み取り可能な記憶媒体。
  36. 前記1つまたは複数のプロセッサに前記1つまたは複数の隠れ面を削除させるための前記命令は、前記1つまたは複数のプロセッサに、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することと並行して前記1つまたは複数の隠れ面を削除させるための命令を含む、請求項35に記載のコンピュータ読み取り可能な記憶媒体。
  37. 前記1つまたは複数のプロセッサに前記1つまたは複数の隠れ面を削除させるための前記命令は、前記1つまたは複数のプロセッサに、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することの前に前記1つまたは複数の隠れ面を削除させるための命令を含む、請求項35に記載のコンピュータ読み取り可能な記憶媒体。
  38. 前記1つまたは複数のプロセッサに各可視プリミティブの前記頂点の非座標アトリビュートを取得させるための命令をさらに含み、前記1つまたは複数のプロセッサに前記頂点座標を生成させるための前記命令は、前記1つまたは複数のプロセッサに、前記頂点の前記非座標アトリビュートに基づいて各可視プリミティブの前記頂点の前記頂点座標を生成させるための命令を含む、請求項29に記載のコンピュータ読み取り可能な記憶媒体。
  39. 前記1つまたは複数のプロセッサに、前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除させるための命令をさらに含み、
    前記1つまたは複数のプロセッサに前記1つまたは複数の隠れ面を削除させるための前記命令は、前記1つまたは複数のプロセッサに、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することと並行して前記1つまたは複数の隠れ面を削除させるための命令を含む、請求項38に記載のコンピュータ読み取り可能な記憶媒体。
  40. 前記1つまたは複数のプロセッサに、前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除させるための命令をさらに含み、
    前記1つまたは複数のプロセッサに前記1つまたは複数の隠れ面を削除させるための前記命令は、前記1つまたは複数のプロセッサに、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することの前に前記1つまたは複数の隠れ面を削除させるための命令を含む、請求項38に記載のコンピュータ読み取り可能な記憶媒体。
  41. 前記1つまたは複数のプロセッサに前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成させるための前記命令は、前記1つまたは複数のプロセッサに、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することが可能であると判定したときに前記生成を行わせるための命令を含む、請求項38に記載のコンピュータ読み取り可能な記憶媒体。
  42. グラフィックス処理ユニット(GPU)の処理パイプライン内で、画像ジオメトリ内の各プリミティブの頂点の頂点座標を生成するための手段と、ここで、前記頂点座標は、前記頂点の各々のロケーションとパースペクティブ・パラメータとを含み、前記画像ジオメトリは、グラフィックス画像を表す、
    前記GPUの前記処理パイプライン内で、前記頂点座標に基づいて前記画像ジオメトリ内の可視プリミティブを識別するための手段と
    前記可視プリミティブを識別することに応答して、前記グラフィックス画像の表面特性を判定するために、前記GPUの前記処理パイプライン内で、前記可視プリミティブの前記頂点のみについて頂点アトリビュートを生成するための手段とを含むデバイス。
  43. 前記頂点座標を生成するための前記手段は、前記画像ジオメトリ内の各プリミティブの前記頂点における前記グラフィックス画像の前記表面特性の前記判定中に前記頂点座標を生成するための手段を含む、請求項42に記載のデバイス。
  44. 前記頂点アトリビュートは、各頂点に関連付けられた色パラメータまたはテクスチャパラメータのうちの1つまたは複数を含む、請求項42に記載のデバイス。
  45. 前記GPUの前記処理パイプライン内で、前記GPUによって受信されたレンダリング・コマンドに基づいて前記可視プリミティブの表現を生成するために前記頂点アトリビュートを使用するための手段をさらに含む、請求項42に記載のデバイス。
  46. 前記GPUの前記処理パイプライン内で前記画像ジオメトリ中の各プリミティブの前記頂点の座標アトリビュートを取得するための手段をさらに含み、
    前記頂点座標を生成するための手段は、前記頂点の前記座標アトリビュートに基づいて各プリミティブの前記頂点の前記頂点座標を生成するための手段を含む、請求項42に記載のデバイス。
  47. 頂点バッファの第1の専用エリア中に前記頂点座標を記憶するための手段と、
    前記頂点バッファの第2の異なる専用エリア中に前記頂点アトリビュートを記憶するための手段とをさらに含む、請求項42に記載のデバイス。
  48. 前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除するための手段をさらに含む、請求項42に記載のデバイス。
  49. 前記隠れ面のうちの前記1つまたは複数を削除するための前記手段は、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することと並行して前記隠れ面のうちの前記1つまたは複数を削除するための手段を含む、請求項48に記載のデバイス。
  50. 前記隠れ面のうちの前記1つまたは複数を削除するための前記手段は、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することの前に前記隠れ面のうちの前記1つまたは複数を削除するための手段を含む、請求項48に記載のデバイス。
  51. 各可視プリミティブの前記頂点の非座標アトリビュートを取得するための手段をさらに含み、
    前記頂点アトリビュートを生成するための前記手段は、前記頂点の前記非座標アトリビュートに基づいて各可視プリミティブの前記頂点の前記頂点アトリビュートを生成するための手段を含む、請求項42に記載のデバイス。
  52. 前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除するための手段をさらに含み、
    前記隠れ面のうちの前記1つまたは複数を削除するための前記手段は、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することと並行して前記隠れ面のうちの前記1つまたは複数を削除するための手段を含む、請求項51に記載のデバイス。
  53. 前記可視プリミティブのうちの少なくとも1つの可視プリミティブの、1つまたは複数の隠れ面を、前記可視プリミティブのうちの少なくとも別の1つの可視プリミティブに対する、前記1つまたは複数の隠れ面の相対位置に基づいて、削除するための手段をさらに含み、
    前記隠れ面のうちの前記1つまたは複数を削除するための前記手段は、前記非座標アトリビュートを取得すること及び前記頂点アトリビュートを生成することの前に前記隠れ面のうちの前記1つまたは複数を削除するための手段を含む、請求項51に記載のデバイス。
  54. 前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成するための前記手段は、前記可視プリミティブの前記頂点のみについて前記頂点アトリビュートを生成することが可能であると判定したときに前記生成を行うための手段を含む、請求項51に記載のデバイス。
JP2012513316A 2009-05-29 2010-05-28 遅延頂点シェーディングを用いたグラフィックス処理ユニット Active JP5596136B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US18241409P 2009-05-29 2009-05-29
US61/182,414 2009-05-29
US12/557,427 US8436854B2 (en) 2009-05-29 2009-09-10 Graphics processing unit with deferred vertex shading
US12/557,427 2009-09-10
PCT/US2010/036661 WO2010138870A2 (en) 2009-05-29 2010-05-28 Graphics processing unit with deferred vertex shading

Publications (2)

Publication Number Publication Date
JP2012528410A JP2012528410A (ja) 2012-11-12
JP5596136B2 true JP5596136B2 (ja) 2014-09-24

Family

ID=43219705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012513316A Active JP5596136B2 (ja) 2009-05-29 2010-05-28 遅延頂点シェーディングを用いたグラフィックス処理ユニット

Country Status (7)

Country Link
US (1) US8436854B2 (ja)
EP (1) EP2435988A2 (ja)
JP (1) JP5596136B2 (ja)
KR (1) KR101281258B1 (ja)
CN (1) CN102598062B (ja)
TW (1) TW201104620A (ja)
WO (1) WO2010138870A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11769294B2 (en) 2012-04-04 2023-09-26 Qualcomm Incorporated Patched shading in graphics processing

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8810592B2 (en) * 2009-10-09 2014-08-19 Nvidia Corporation Vertex attribute buffer for inline immediate attributes and constants
KR101681056B1 (ko) * 2010-10-01 2016-12-01 삼성전자주식회사 정점 처리 방법 및 장치
US9142002B2 (en) 2011-02-03 2015-09-22 L-3 Communications Corporation FPGA packet processing engine
FR2964775A1 (fr) 2011-02-18 2012-03-16 Thomson Licensing Procede d'estimation de l'occultation dans un environnement virtuel
GB201103698D0 (en) * 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphics processing
GB201103699D0 (en) 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphic processing
US8854383B2 (en) * 2011-04-13 2014-10-07 Qualcomm Incorporated Pixel value compaction for graphics processing
US8884963B2 (en) * 2011-05-04 2014-11-11 Qualcomm Incorporated Low resolution buffer based pixel culling
US9019280B2 (en) 2011-07-22 2015-04-28 Qualcomm Incorporated Area-based rasterization techniques for a graphics processing system
JP5845910B2 (ja) 2012-01-13 2016-01-20 富士通株式会社 画像描画装置、画像描画プログラム、及び、画像描画方法
US10176621B2 (en) 2013-06-10 2019-01-08 Sony Interactive Entertainment Inc. Using compute shaders as front end for vertex shaders
US10102603B2 (en) 2013-06-10 2018-10-16 Sony Interactive Entertainment Inc. Scheme for compressing vertex shader output parameters
US10096079B2 (en) 2013-06-10 2018-10-09 Sony Interactive Entertainment Inc. Fragment shaders perform vertex shader computations
US10134102B2 (en) 2013-06-10 2018-11-20 Sony Interactive Entertainment Inc. Graphics processing hardware for using compute shaders as front end for vertex shaders
CN103974062B (zh) * 2013-06-24 2018-10-26 福州瑞芯微电子股份有限公司 图像显示装置、图像显示系统和图像显示方法
US9208602B2 (en) * 2013-09-27 2015-12-08 Intel Corporation Techniques and architecture for improved vertex processing
KR102066533B1 (ko) 2013-11-19 2020-01-16 삼성전자 주식회사 도메인 쉐이딩 방법과 이를 수행하는 장치들
GB2521171B (en) * 2013-12-11 2020-02-05 Advanced Risc Mach Ltd Clipping of graphics primitives
KR20150069617A (ko) * 2013-12-13 2015-06-24 삼성전자주식회사 그래픽 프로세싱 유닛, 이를 포함하는 soc, 및 이를 포함하는 그래픽 프로세싱 시스템
US9767602B2 (en) * 2014-06-30 2017-09-19 Intel Corporation Techniques for reduced pixel shading
US9773294B2 (en) * 2014-07-03 2017-09-26 Mediatek Inc. Graphics processing system for determining whether to store varying variables into varying buffer based at least partly on primitive size and related graphics processing method thereof
GB2527822B (en) * 2014-07-03 2020-10-07 Advanced Risc Mach Ltd Graphics processing
US20160035128A1 (en) * 2014-08-03 2016-02-04 Mediatek Singapore Pte. Ltd. Graphics processing system for performing deferred vertex attribute shading based on split vertex bitstreams and related graphics processing method
US9424686B2 (en) * 2014-08-08 2016-08-23 Mediatek Inc. Graphics processing circuit having second vertex shader configured to reuse output of first vertex shader and/or process repacked vertex thread group and related graphics processing method thereof
US9824412B2 (en) * 2014-09-24 2017-11-21 Intel Corporation Position-only shading pipeline
KR20160051155A (ko) * 2014-10-31 2016-05-11 삼성전자주식회사 렌더링 장치 및 방법
GB2535493B (en) * 2015-02-18 2021-02-24 Advanced Risc Mach Ltd Graphics processing systems
WO2017083821A1 (en) 2015-11-12 2017-05-18 Linamar Corporation Rear drive module having a ring gear disconnect and synch-lock mechanism
GB2546073B (en) * 2016-01-05 2018-09-26 Advanced Risc Mach Ltd Graphics processing
US10192280B2 (en) * 2016-04-08 2019-01-29 Qualcomm Incorporated Per-vertex variable rate shading
GB2550358B (en) 2016-05-16 2020-08-26 Advanced Risc Mach Ltd Graphics processing systems
US10062139B2 (en) * 2016-07-25 2018-08-28 Qualcomm Incorporated Vertex shaders for binning based graphics processing
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US11379941B2 (en) * 2016-09-22 2022-07-05 Advanced Micro Devices, Inc. Primitive shader
CN106709982B (zh) * 2016-10-20 2020-03-17 哈尔滨安天科技集团股份有限公司 一种基于连续折线形三维管道的绘制方法及系统
US10235811B2 (en) 2016-12-29 2019-03-19 Intel Corporation Replicating primitives across multiple viewports
US10510181B2 (en) * 2017-06-27 2019-12-17 Samsung Electronics Co., Ltd. System and method for cache management using a cache status table
GB2564400B (en) 2017-07-06 2020-11-25 Advanced Risc Mach Ltd Graphics processing
KR102067423B1 (ko) * 2017-09-12 2020-02-12 주식회사 케이쓰리아이 지피유 가속 컴퓨팅을 이용한 3차원 복원 클라우드 포인트 생성 방법
CN108022201B (zh) * 2017-11-24 2021-09-14 中国航空工业集团公司西安航空计算技术研究所 一种三角形图元并行光栅化定序方法
US10628910B2 (en) 2018-09-24 2020-04-21 Intel Corporation Vertex shader with primitive replication
CN109816761B (zh) * 2018-12-25 2023-03-21 东软集团股份有限公司 图形转换方法、装置、存储介质和电子设备
US11189073B2 (en) 2020-03-20 2021-11-30 Arm Limited Graphics processing
US11790479B2 (en) * 2021-01-29 2023-10-17 Arm Limited Primitive assembly and vertex shading of vertex attributes in graphics processing systems
CN117292039B (zh) * 2023-11-27 2024-02-13 芯瞳半导体技术(山东)有限公司 顶点坐标生成方法、装置、电子设备及计算机存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2883523B2 (ja) * 1992-08-26 1999-04-19 株式会社ナムコ 画像合成装置及び画像合成方法
US5986669A (en) * 1996-09-10 1999-11-16 Intergraph Corporation Graphics processing with efficient clipping
JP3409987B2 (ja) * 1997-02-05 2003-05-26 シャープ株式会社 3次元画像生成方法および装置とこの方法および装置を用いた3次元画像処理装置
US6891533B1 (en) * 2000-04-11 2005-05-10 Hewlett-Packard Development Company, L.P. Compositing separately-generated three-dimensional images
JP2004102841A (ja) * 2002-09-11 2004-04-02 Toshiba Corp クリッピング処理装置、グラフィックスシステム、クリッピング処理方法及びグラフィックス方法
US7148888B2 (en) * 2003-04-04 2006-12-12 Via Technologies, Inc. Head/data request in 3D graphics
US7400325B1 (en) * 2004-08-06 2008-07-15 Nvidia Corporation Culling before setup in viewport and culling unit
US7292239B1 (en) * 2004-08-06 2007-11-06 Nvidia Corporation Cull before attribute read
US7468726B1 (en) * 2005-12-01 2008-12-23 Nvidia Corporation Culling in a vertex processing unit
US7952588B2 (en) * 2006-08-03 2011-05-31 Qualcomm Incorporated Graphics processing unit with extended vertex cache
US8212840B2 (en) * 2006-10-23 2012-07-03 Qualcomm Incorporated 3-D clipping in a graphics processing unit

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11769294B2 (en) 2012-04-04 2023-09-26 Qualcomm Incorporated Patched shading in graphics processing

Also Published As

Publication number Publication date
CN102598062B (zh) 2016-03-09
US20100302246A1 (en) 2010-12-02
TW201104620A (en) 2011-02-01
KR20120025534A (ko) 2012-03-15
JP2012528410A (ja) 2012-11-12
CN102598062A (zh) 2012-07-18
US8436854B2 (en) 2013-05-07
EP2435988A2 (en) 2012-04-04
KR101281258B1 (ko) 2013-07-03
WO2010138870A3 (en) 2012-04-12
WO2010138870A2 (en) 2010-12-02

Similar Documents

Publication Publication Date Title
JP5596136B2 (ja) 遅延頂点シェーディングを用いたグラフィックス処理ユニット
US11282162B2 (en) Tile based computer graphics
Tarini et al. Ambient occlusion and edge cueing for enhancing real time molecular visualization
JP4938850B2 (ja) 拡張型頂点キャッシュを備えたグラフィック処理装置
US9129443B2 (en) Cache-efficient processor and method of rendering indirect illumination using interleaving and sub-image blur
US7042462B2 (en) Pixel cache, 3D graphics accelerator using the same, and method therefor
US8421794B2 (en) Processor with adaptive multi-shader
US8009172B2 (en) Graphics processing unit with shared arithmetic logic unit
US9761037B2 (en) Graphics processing subsystem and method for updating voxel representation of a scene
KR20110016938A (ko) 기하 셰이더를 사용하는 테셀레이션 엔진을 위한 시스템, 방법, 및 컴퓨터 프로그램 제품
US20170032567A1 (en) Three-dimensional (3d) rendering method and apparatus
EP1759355B1 (en) A forward texture mapping 3d graphics system
KR20180037838A (ko) 텍스쳐를 처리하는 방법 및 장치
JP2006517705A (ja) コンピュータグラフィックスシステム及びコンピュータグラフィクイメージのレンダリング方法
US20140176546A1 (en) Shadow softening graphics processing unit and method
US20100277488A1 (en) Deferred Material Rasterization
JP2008502979A (ja) 逆テクスチャマッピング3dグラフィックスシステム
US20140160124A1 (en) Visible polygon data structure and method of use thereof
US9589316B1 (en) Bi-directional morphing of two-dimensional screen-space projections
Nielsen et al. Shader-based wireframe drawing

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130528

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130819

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130826

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131210

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140307

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140314

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140708

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140806

R150 Certificate of patent or registration of utility model

Ref document number: 5596136

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250