JP4639232B2 - フラグメントシェーディングパイプラインにおけるスケーラビリティの向上 - Google Patents

フラグメントシェーディングパイプラインにおけるスケーラビリティの向上 Download PDF

Info

Publication number
JP4639232B2
JP4639232B2 JP2007531190A JP2007531190A JP4639232B2 JP 4639232 B2 JP4639232 B2 JP 4639232B2 JP 2007531190 A JP2007531190 A JP 2007531190A JP 2007531190 A JP2007531190 A JP 2007531190A JP 4639232 B2 JP4639232 B2 JP 4639232B2
Authority
JP
Japan
Prior art keywords
fragment
fragment shader
pipeline
shader
segment
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
JP2007531190A
Other languages
English (en)
Other versions
JP2008512771A (ja
Inventor
カリム, エム. アブダラ,
エメット, エム. キルガリフ,
ルイ, エム. バストス,
Original Assignee
エヌヴィディア コーポレイション
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 エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2008512771A publication Critical patent/JP2008512771A/ja
Application granted granted Critical
Publication of JP4639232B2 publication Critical patent/JP4639232B2/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
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Description

発明の分野
[0001]本発明は、コンピュータグラフィックスの分野に関する。多くのコンピュータグラフィックスイメージは、特定の視点からの3次元シーンと光との相互作用をモデリングすることによって、数学的に作成される。レンダリングと称されるこの処理では、その特定の視点からのシーンの2次元イメージを生成し、これは実際の景色の写真を撮影することに似ている。
発明の背景
[0002]コンピュータグラフィックス、特にリアルタイムのコンピュータグラフィックスの需要が高まるにつれて、レンダリング処理を加速するようにされているグラフィックス処理サブシステムを備えたコンピュータシステムが普及している。これらのコンピュータシステムでは、レンダリング処理は、コンピュータの汎用CPU(中央処理装置)とグラフィックス処理サブシステムとで分担される。一般には、CPUは、高レベルの演算、例えば、あるシーンにおけるオブジェクトのポジション、モーション、及び衝突を求める演算を実行する。CPUは、これらの高レベル演算から、目的のレンダリングされた一又は複数のイメージを定義するレンダリングコマンド及びデータのセットを生成する。例えば、レンダリングコマンド及びデータは、シーンのジオメトリ、ライティング、シェーディング、テクスチャリング、モーション、シーンのカメラパラメータの一又は複数を定義することができる。グラフィックス処理サブシステムは、レンダリングコマンド及びデータのセットから、一又は複数のレンダリングされたイメージを作成する。
[0003]一般に、グラフィックス処理サブシステムでは、入力される要素をストリーム処理ユニットの連鎖によって連続的に読み取って演算を行うストリーム処理モデル(stream−processing model)を使用する。あるストリーム処理ユニットの出力は、連鎖における次のストリーム処理ユニットへの入力である。一般に、データは、ストリーム処理ユニットの連鎖を一方向、「下流」にのみ流れる。ストリーム処理ユニットの例としては、2次元又は3次元の頂点を処理する頂点プロセッサ、2次元又は3次元の一連の頂点によって定義されているジオメトリプリミティブ(geometric primitive)を処理してフラグメントと称される一連のピクセル又はサブピクセルを生成するラスタライザプロセッサ、フラグメントを処理してその色及びその他の属性を求めるフラグメントプロセッサが挙げられる。
[0004]多くのグラフィックス処理サブシステムは、高度にプログラマブルであり、特に、複雑なライティングアルゴリズムやシェーディングアルゴリズムを実行することができる。このプログラマブル性を利用するため、アプリケーションには、一又は複数のグラフィックス処理サブシステムプログラムを含めることができ、このプログラムは、CPUによって実行されるメインプログラムと平行にグラフィックス処理サブシステムによって実行される。これらのグラフィックス処理サブシステムプログラムは、単にシェーディングアルゴリズムやライティングアルゴリズムを実行するだけではないが、しばしばシェーディングプログラム又はシェーダーと称される。
[0005]プログラマブルなストリーム処理ユニットのそれぞれが、別のストリーム処理ユニット上で実行されているシェーディングプログラムと平行して、それぞれの個別のシェーディングプログラムを実行するようにできる。複雑なアルゴリズムを実装する場合、協働して目的の結果を達成する各ストリーム処理ユニットに合わせて作成されている個別のシェーディングプログラムを使用することがしばしばある。このような実装においては、連鎖における最初の方のストリーム処理ユニットのシェーディングプログラムの出力が、連鎖における以降のストリーム処理ユニットのシェーディングプログラムの入力に関連することがある。
[0006]プログラマブルなフラグメントプロセッサは、レンダリングパフォーマンスを高めるうえでのボトルネックとなることがしばしばある。一般に、プログラマブルなフラグメントプロセッサは、レンダリングするフラグメントごとに自身のシェーディングプログラムを1回実行しなければならない。フラグメントシェーディングプログラムが数百から数千の命令を含んでおり、レンダリングする各イメージが数百万のフラグメントによって生成されるならば、フラグメントプロセッサに求められる計算量は膨大である。
[0007]従って、グラフィックス処理におけるプログラマブルなフラグメントプロセッサのパフォーマンスを向上させることが望まれている。更に、プログラマブルなフラグメントプロセッサを、様々なコスト目標及びパフォーマンス目標が満たされるように、容易且つ効率的にスケールアップ及びスケールダウンできることが望まれている。
発明の概要
[0008]本発明の実施形態においては、フラグメント処理ユニットは、フラグメントシェーダー分配器(fragment shader distributor)と、フラグメントシェーダー収集器(fragment shader collector)と、複数のフラグメントシェーダーパイプラインとを含んでいる。フラグメントシェーダーパイプラインのそれぞれは、フラグメントのセグメントに対してフラグメントシェーダープログラムを実行するようにされている。複数のフラグメントシェーダーパイプラインは、平行して動作し、同一又は異なるフラグメントシェーダープログラムを実行する。フラグメントシェーダー分配器は、ラスタライズユニットからフラグメントのストリームを受け取る。フラグメントシェーダー分配器は、選択されているフラグメントシェーダーパイプラインの容量に達するまで、又は事前に設定されている時間長の間に更なるフラグメントが到着しなくなるまで、フラグメントストリームの一部を、選択されているフラグメントシェーダーパイプラインに送る。次いで、フラグメントシェーダー分配器は、別のフラグメントシェーダーパイプラインを選択する。選択されているフラグメントシェーダーパイプラインに送られるフラグメントストリームの一部を、フラグメントストリームのセグメントと称する。フラグメントシェーダーパイプラインのそれぞれの容量は、何種類かのリソースによって制限される。フラグメントシェーダー分配器は、フラグメントを送るときに、選択されているフラグメントシェーダーパイプラインの残りの利用可能なリソースを追跡する。フラグメントシェーダー収集器は、複数のフラグメントシェーダーパイプラインから、処理されたフラグメントを取得する。フラグメントシェーダー収集器は、フラグメントストリームの順序を維持するため、フラグメントシェーダー分配器と同じ選択順序に従う。
[0009]実施形態においては、グラフィックス処理サブシステムは、フラグメントストリームの各フラグメントの少なくとも1つの値を求めるようにされているフラグメントプロセッサを含んでいる。フラグメントプロセッサは、フラグメントのセグメントに対してフラグメントシェーダープログラムの少なくとも一部を実行するようにされている第1のフラグメントシェーダーパイプラインを備えている。フラグメントプロセッサは、フラグメントシェーダー分配器も含んでいる。フラグメントシェーダー分配器は、フラグメントストリームを受け取り、フラグメントストリームの第1の部分を実行するための第1のフラグメントシェーダーパイプラインを選択し、受け取ったストリームのフラグメントのそれぞれについて、受け取ったフラグメントが、選択したフラグメントシェーダーパイプラインのフラグメントのセグメント内に収まるかを判定し、受け取ったフラグメントが、選択したフラグメントシェーダーパイプラインのフラグメントのセグメント内に収まるという判定に応答して、受け取ったフラグメントを、選択したフラグメントシェーダーパイプラインに送るように、されている。フラグメントシェーダー収集器は、第1のフラグメントシェーダーパイプラインを選択し、フラグメントシェーダー収集器が選択したフラグメントシェーダーパイプラインがフラグメントのセグメントに対するフラグメントシェーダープログラムの実行を完了したことを示す信号に応答して、フラグメントシェーダー収集器が選択したフラグメントシェーダーパイプラインから、フラグメントのセグメントにおける各フラグメントを取得するようにされている。
[0010]更なる実施形態においては、受け取ったフラグメントが、第1のフラグメントシェーダーパイプラインのフラグメントのセグメント内に収まるかを判定するようにすることにおいて、フラグメントシェーダー分配器は、受け取ったフラグメントのいくつかのリソース要件を調べ、選択したフラグメントシェーダーパイプラインの利用可能なリソースの測定値を求め、受け取ったフラグメントのリソース要件が、選択したフラグメントシェーダーパイプラインの利用可能なリソースの測定値を超えていないという判定に応答して、受け取ったフラグメントが、選択したフラグメントシェーダーパイプラインのフラグメントのセグメント内に収まることを示す信号を生成するように、されている。
[0011]別の実施形態においては、グラフィックス処理サブシステムは、フラグメントのセグメントに対してフラグメントシェーダープログラムの少なくとも一部を実行するようにされている第2のフラグメントシェーダーパイプラインを含んでいる。フラグメントシェーダー分配器は、受け取ったフラグメントが、選択したフラグメントシェーダーパイプラインのフラグメントのセグメント内に収まるという判定に応答して、第2のフラグメントシェーダーパイプラインを選択し、受け取ったフラグメントを、選択したフラグメントシェーダーパイプラインに送るようにされている。更なる実施形態においては、フラグメントシェーダー収集器は、第2のフラグメントシェーダーパイプラインが選択されたことを示す信号を受け取るようにされている。フラグメントシェーダー収集器は、この信号に応答して、その第2のフラグメントシェーダーパイプラインを選択するようにされている。更に、フラグメントシェーダー収集器は、フラグメントシェーダー収集器が選択したフラグメントシェーダーパイプラインがフラグメントのセグメントに対するフラグメントシェーダープログラムの実行を完了したことを示す信号に応答して、フラグメントシェーダー収集器が選択したフラグメントシェーダーパイプラインから、フラグメントのセグメントにおける各セグメントを取得するように、されている。
[0012]以下、本発明について図面を参照しながら説明する。
詳細な説明
[0018]図1は、本発明の実施形態を実施するのに適したコンピュータシステム100(例:パーソナルコンピュータ、ビデオゲームコンソール、携帯情報端末、その他のデジタル装置)のブロック図である。コンピュータシステム100は、ソフトウェアアプリケーションと、オプションとしてオペレーティングシステムとを実行する中央処理装置(CPU)105を含んでいる。実施形態においては、CPU 105は、実際には、平行して動作するいくつかの個別の中央処理装置である。メモリ110は、CPU 105が使用できるようにアプリケーション及びデータを格納している。ストレージ115は、アプリケーション及びデータのための不揮発性ストレージを提供し、固定ディスクドライブ、リムーバブルディスクドライブ、フラッシュメモリデバイス、CD−ROM、DVD−ROM、又はその他の光ストレージデバイスを含むことができる。ユーザ入力装置120は、一又は複数のユーザからのユーザ入力をコンピュータシステム100に伝え、キーボード、マウス、ジョイスティック、タッチスクリーン、マイクロフォンのうちの1つ以上を含むことができる。ネットワークインタフェース125は、コンピュータシステム100が電子通信ネットワークを介して別のコンピュータシステムと通信できるようにし、ローカルエリアネットワーク又はワイドエリアネットワーク(例:インターネット)を通じての有線通信又は無線通信を含むことができる。CPU 105、メモリ110、データストレージ115、ユーザ入力装置120、ネットワーク125などのコンピュータシステム100の構成要素は、一又は複数本のデータバス160によって接続されている。データバスの例として、ISA、PCI、AGP、PCI、PCI−Express、HyperTransportデータバスが挙げられる。
[0019]更に、グラフィックスサブシステム130が、データバス160と、コンピュータシステム100の構成要素とに接続されている。このグラフィックスサブシステムは、コンピュータシステムのマザーボードに組み込むか、又はコンピュータシステムに固定的又は取り外し自在に接続された個別の回路基板に組み込むことができる。グラフィックスサブシステム130は、グラフィックス処理ユニット(GPU)135とグラフィックスメモリとを含んでいる。グラフィックスメモリは、出力イメージの各ピクセルのピクセルデータを格納するのに使用されるディスプレイメモリ140(例:フレームバッファ)を含んでいる。ピクセルデータは、CPU 105からディスプレイメモリ140に直接提供することができる。或いは、CPU 105が、目的の出力イメージを定義するデータ若しくはコマンド、又はその両方をGPU 135に提供し、GPU 135が、これらのデータ及びコマンドから一又は複数の出力イメージのピクセルデータを生成する。目的の出力イメージを定義するデータ若しくはコマンド、又はその両方は、追加のメモリ145に格納される。実施形態においては、GPU 135は、ジオメトリ、ライティング、シェーディング、テクスチャリング、モーション、シーンのカメラパラメータのうちの一又は複数を定義するレンダリングコマンド及びレンダリングデータから、出力イメージのピクセルデータを生成する。
[0020]別の実施形態においては、ディスプレイメモリ140若しくは追加のメモリ145、又はその両方は、メモリ110の一部であり、CPU 105と共有されている。或いは、ディスプレイメモリ140若しくは追加のメモリ145、又はその両方は、グラフィックスサブシステム130専用に設けられている一又は複数の個別のメモリである。グラフィックスサブシステム130は、イメージのピクセルデータをディスプレイメモリ140から定期的に出力し、ディスプレイ装置150に表示する。ディスプレイ装置150は、コンピュータシステム100からの信号に応答して視覚情報を表示することのできる任意のデバイスであり、例えば、CRTディスプレイ、LCDディスプレイ、プラズマディスプレイ、OLEDディスプレイである。コンピュータシステム100は、ディスプレイ装置150にアナログ信号又はデジタル信号を提供することができる。
[0021]更なる実施形態においては、グラフィックス処理サブシステム130は、GPU 135に類似する一又は複数の追加のGPU 155を含んでいる。更なる実施形態においては、グラフィックス処理サブシステム130は、グラフィックスコプロセッサ165を含んでいる。グラフィックス処理コプロセッサ165と追加のGPU 155は、GPU 135と平行して、又はGPU 135の代わりに動作するようにされている。追加のGPU 155は、GPU 135と同様に、レンダリングコマンドから出力イメージのピクセルデータを生成する。追加のGPU 155は、GPU 135と連携して動作し、出力イメージの別の部分のピクセルデータを同時に生成する、或いは別の出力イメージのピクセルデータを同時に生成することができる。ある実施形態においては、グラフィックスコプロセッサ165は、GPU 135若しくは追加のGPU 155、又はその両方のために、レンダリングに関連するタスク、例えば、ジオメトリの変換、シェーダーの計算、背面カリング演算を実行する。
[0022]追加のGPU 155は、GPU 135と同じ回路基板に配置して、データバス160との接続をGPU 135と共有することができ、或いは、データバス160に個別に接続されている追加の回路基板に配置することができる。追加のGPU 155は、GPU 135と同じモジュール又はチップパッケージに組み込むこともできる。追加のGPU 155は、ディスプレイメモリ140及び追加のメモリ145に類似する自身のディスプレイメモリ及び追加のメモリを備えていることができ、或いは、メモリ140及び145をGPU 135と共有することができる。ある実施形態においては、グラフィックスコプロセッサ165は、コンピュータシステムのチップセット(図示していない)、例えば、データバス160の制御に使用されるノースブリッジチップ又はサウスブリッジチップに組み込まれている。
[0023]図2は、本発明の実施形態によるグラフィックス処理サブシステムのレンダリングパイプライン200のブロック図を示している。パイプライン200は、GPU 135に実装、及び/又は上述のように実装することができる。パイプライン200は、頂点処理ユニット205と、視点・カリング(VPC)ユニット210と、セットアップユニット215と、ラスタライザユニット220と、カラーアセンブリブロック225と、フラグメント処理ユニット230とを含んでいる。
[0024]頂点処理ユニット205は、目的の一又は複数のレンダリングされたイメージを定義するために使用されるレンダリングコマンド及びレンダリングデータ(例:ジオメトリ、ライティング、シェーディング、テクスチャリング、モーション、シーンのカメラパラメータのうちの少なくとも1つ)を受け取る。レンダリングデータは、ジオメトリプリミティブを定義する一又は複数の頂点を含むようにできる。各頂点は、一般には2次元座標系又は3次元座標系で表現されるポジションを有する。ポジションに加えて、各頂点には様々な属性も関連付けられている。一般的に、頂点の属性としては、頂点ごとに指定される任意の特性を含んでいることができる。ある実施形態においては、頂点の属性としては、頂点の色、透明度、ライティング、シェーディングなどの特性や、頂点のアニメーション、頂点に関連付けられるジオメトリプリミティブを求めるのに使用されるスカラー属性又はベクトル属性が含まれる。
[0025]頂点処理ユニット205は、各頂点に対して一又は複数の頂点プログラム(頂点シェーダーとも称する)を実行して、変換された頂点を作成する。頂点処理ユニット205はプログラマブルであり、レンダリングアプリケーションは、頂点の特定のセットに使用する頂点プログラムを指定することができる。簡易な実施形態においては、頂点プログラムは、3次元世界の座標系から2次元のスクリーン座標系に頂点を変換する。より複雑な頂点プログラムを使用すると、様々な視覚効果(例:ライティング及びシェーディング、プロシージャルジオメトリ(procedural geometry)、アニメーション演算)を実施することができる。この技術分野においては、そのような「頂点ごとの」演算の膨大な例が公知であり、その詳細な説明については、本発明を理解するうえで重要ではないため省略する。頂点シェーダープログラムは、頂点及びデータに対する各種の数学演算及び論理演算を使用するアルゴリズムを実行することができ、条件付き実行経路や分岐実行経路、直接的及び間接的なメモリアクセスを含むことができる。
[0026]視点・カリングユニット210は、視野の外側に位置する又はレンダリングされたイメージにおける見えないジオメトリプリミティブ又はその一部、或いはその両方を、除外又は破棄する。カリングでは、レンダリングされたイメージの見えないジオメトリプリミティブを破棄することによって、レンダリングパイプライン200の下流の処理段によって処理されるジオメトリプリミティブの数が減少し、これによりレンダリング速度が高まる。
[0027]セットアップユニット215は、一又は複数の頂点をジオメトリプリミティブ(例:三角形、四角形)として組み立てる。次いで、ラスタライズ段220が、各ジオメトリプリミティブを一又は複数のピクセルフラグメントに変換する。ピクセルフラグメントは、レンダリングされたイメージ内に表示されうる一連の一又は複数のピクセルを定義する。ラスタライザから出力される各ピクセルフラグメントは、レンダリングされたイメージにおける関連付けられているジオメトリプリミティブの潜在的なカバレッジ(potential coverage)を定義する情報(例:フラグメントに関連付けられているピクセルのイメージ座標)と、そのピクセル位置における関連付けられるジオメトリプリミティブのサブピクセルカバレッジ(sub−pixel coverage)を定義する情報を含んでいる。ピクセルフラグメントはフラグメントプロセッサ(後述する)に提供される。
[0028]カラーアセンブリ及び平面方程式確立ブロック225は、頂点処理ユニット205から受け取る頂点ごとの属性(例:頂点の色、頂点の深度値、頂点の法線ベクトル、テクスチャ座標)を、事前にラスタライズされているジオメトリプリミティブの別の属性(例:頂点のポジション)に関連付けて、ジオメトリプリミティブごとの別の属性(例:フラグメントのポジションが与えられたとき、ピクセルフラグメント内の任意のポイントにおいて、頂点ごとの属性値を補間するための平面方程式の係数)を計算する。フラグメントのジオメトリプリミティブごとの属性は、フラグメントプロセッサ230に提供される。
[0029]フラグメントプロセッサ230は、各ピクセルフラグメントに関連付けられる、ラスタライザによって生成されたポジション情報と、カラーアセンブリ及び平面方程式確立ユニットからの頂点ごとの属性及びジオメトリプリミティブごとの属性と、フラグメントシェーダープログラムとを使用して、各フラグメントの出力値(例:色及び深度)を求める。フラグメント処理ユニットは、頂点プロセッサ205と同様にプログラマブルである。各ピクセルフラグメントに対してピクセルフラグメントプログラム(ピクセルシェーダー又はフラグメントシェーダーとも称する)を実行し、ピクセルの出力カラー値を求める。ピクセルフラグメントプログラムは、頂点シェーダープログラムとは独立して動作するが、前のストリーム処理ユニットによって作成される情報、又はこれらのユニットを通過した情報(例:頂点プログラムによって作成された情報)に依存して動作するようにすることができる。
[0030]レンダリングアプリケーションは、ピクセルフラグメントの任意の特定のセットに使用するピクセルフラグメントプログラムを指定することができる。ピクセルフラグメントプログラムを使用することにより、様々な視覚効果(例:ライティング及びシェーディング効果、反射、テクスチャマッピング、プロシージャルテクスチャ生成)を実施することができる。この技術分野においては、そのような「ピクセルごとの」演算の膨大な例が公知であり、その詳細な説明については、本発明を理解するうえで重要ではないため省略する。ピクセルフラグメントシェーダープログラムは、フラグメント及びデータに対する幅広い数学演算及び論理演算を使用するアルゴリズムを実行することができ、条件付き実行経路及び分岐実行経路、並びに、直接的及び間接的なメモリアクセスを含むことができる。
[0031]次いで、シェーディングされたフラグメントを、属性(例:フラグメントの色、深度、ステンシル値)と一緒にラスター演算・格納ユニット235に出力する。ラスター演算ユニット235は、フラグメント処理ユニット230から出力されるフラグメントと、フレームバッファにすでに格納されているレンダリングイメージの一部とを統合する。フレームバッファ内のレンダリングイメージに以前に書き込まれたピクセルを使用して、フラグメントに対してブレンドやマスキングを行うことができる。デプスバッファ、アルファバッファ、及びステンシルバッファを使用すれば、レンダリングイメージに対する、入力される各フラグメントの貢献度(該当時)を求めることもできる。次に、入力される各フラグメントと、フレームバッファ内の以前に格納されたピクセル値との組合せを、レンダリングイメージの一部としてフレームバッファ(例えばディスプレイメモリ140内に位置している)に出力する。
[0032]図3は、本発明の実施形態によるフラグメント処理ユニットのフラグメントシェーダー部分を示している。この実施形態においては、フラグメントシェーダー300は、フラグメントシェーダー分配器310と、複数のフラグメントシェーダーパイプラインユニット315,317,319,321と、サイドFIFO 325と、フラグメントシェーダー収集器330とを含む。図3の例においては、4つのフラグメントシェーダーパイプラインが存在している。しかしながら、代替の実施形態では、一又は複数の任意の数のフラグメントシェーダーパイプラインを含むことができ、この数は、グラフィックス処理サブシステムを作製する製造工程によってのみ制限される。この実施形態においては、フラグメントシェーダー分配器310は、ラスタライザ305からのフラグメントストリーム(及びフラグメントに関連付けられた、ラスタライザによって生成された属性)と、カラーアセンブリ及び平面方程式確立ユニット303からの、フラグメントに関連付けられた、ジオメトリプリミティブごとのフラグメント属性とを受け取り、これらは、更なる実施形態においては、それぞれ、ラスタライザユニット220の出力と、カラーアセンブリ及び平面方程式確立ユニット225の出力に相当する。
[0033]更なる実施形態においては、フラグメントシェーダー分配器310は、フラグメントストリームを、フラグメントグループのストリームの形式において受け取る。各フラグメントグループは、空間的に隣接するフラグメントのグループを含んでいる。1つの実施例においては、フラグメントグループは、2ピクセル×2ピクセルの配列であるフラグメント(クワッド(quad)と称することもある)を含んでいる。代替実施形態においては、フラグメントグループは、フラグメントの任意の別の編成を含むことができる。
[0034]各フラグメントグループには、ラスタライザから直接入力される一連のフラグメント属性(例:各フラグメントのポジションを示す座標、各フラグメントの潜在的な可視性を示すカバレッジ情報)が関連付けられている。入力される各フラグメントグループには、カラーアセンブリ及び平面方程式確立ユニットから入力されるジオメトリプリミティブごとの属性からの、すでに補間された、又は以降に補間される一連の追加の属性も関連付けられている。
[0035]これらの補間されたフラグメント属性は、基本色、透明度、深度情報、テクスチャ座標、テクスチャモード情報(例:テクスチャフィルタリング、テクスチャ境界挙動)を含むことができる。ある実施形態においては、これらのその他の属性は、最初は、ラスタライズ段220がプリミティブのフラグメントグループを作成するのに使用するジオメトリプリミティブに関連付けられており、この関連付けは、ジオメトリプリミティブがフラグメントに変換されるときにフラグメントグループに引き継がれる。更なる実施形態においては、ジオメトリプリミティブの属性の一部又はすべての値をフラグメント処理ユニットによって補間し、フラグメント属性の各セットの値を求めることができる。
[0036]フラグメント処理ユニットのフラグメントシェーダー部分は、入力される各フラグメントに関連付けられている属性のいくつか又はすべてを使用して、それぞれのフラグメントの出力(例:最終的な色及び深度)を求めることができる。
[0037]フラグメントシェーダー分配器310は、受け取ったフラグメントグループのストリームを一又は複数のセグメントに編成する。1つのセグメントは、1つのフラグメントシェーダーパイプラインによって一度に処理することのできる一連のフラグメントグループである。後から詳しく説明するように、フラグメントシェーダーパイプラインの実施形態は、パイプライン型の処理ユニットであり、セグメントのフラグメントのそれぞれに対してフラグメントシェーダープログラムの命令を実行するようにされている。ある実施形態においては、セグメントのフラグメントグループの数は、フラグメントシェーダーパイプラインの処理リソースによって制限され、この処理リソースとしては、フラグメントシェーダーパイプラインにおける段数と、フラグメントシェーダープログラムを実行するうえで各フラグメントグループに必要なデータレジスタの数と、セグメントのフラグメントグループに関連付けられている一連の属性の数が挙げられる。フラグメントシェーダー分配器310は、フラグメントシェーダーパイプラインのパフォーマンスを最大にするため、フラグメントシェーダーパイプラインの処理リソースの制限を考慮したうえで、できるだけ多数のフラグメントグループを含んだセグメントを形成するように試みる。
[0038]フラグメントシェーダー分配器310は、その最初の状態においては、複数のフラグメントシェーダーパイプラインのうちの1つを選択し、フラグメントグループの最初のセグメントを受け取る。フラグメントシェーダー分配器310は、フラグメントグループを受け取ると、そのフラグメントグループが現在のセグメント内に収まるかを判定する。セグメントの限界に達していない場合、フラグメントシェーダー分配器310は、選択したフラグメントパイプラインにそのセグメントグループを転送する。ある実施形態においては、フラグメントシェーダー分配器310は、ラスタライザ305から受け取るフラグメントグループを継続的に処理し、選択したフラグメントシェーダーパイプラインに送る。現在のセグメントの限界に達すると、フラグメントシェーダー分配器310は、別のフラグメントシェーダーパイプラインを選択し、新しいセグメントを開始する。フラグメントシェーダー分配器310は、新しいセグメントの以降のフラグメントグループを、新たに選択したフラグメントシェーダーパイプラインに送る。
[0039]実施形態においては、フラグメントシェーダー分配器310は、ラウンドロビン方式を使用してフラグメントシェーダーパイプラインを選択する。この実施形態の1つの実施例においては、フラグメントシェーダー分配器310は、最初のセグメントの限界に達するまで、フラグメントグループを最初にフラグメントシェーダーパイプライン315に送る。それ以降のフラグメントグループは、第2のセグメントの限界に達するまで、フラグメントシェーダーパイプライン317に送る。すべてのフラグメントシェーダーパイプラインについて、この手順を繰り返し、最後のフラグメントシェーダーパイプライン321に関連付けられるセグメントが完了した後、フラグメントグループを最初のフラグメントシェーダーパイプライン315に送る。選択したフラグメントシェーダーパイプラインにおいて、新しいセグメントのフラグメントグループを受け入れるための十分な処理リソースが、フラグメントグループの前のセグメントの処理から解放されていない場合、選択したフラグメントシェーダーパイプラインのリソースが、新しいセグメントのフラグメントグループの受入れを開始するのに十分になるまで、フラグメントシェーダー分配器310は一時停止する。
[0040]フラグメントシェーダーパイプライン315,317,319,321のそれぞれは、セグメント内の各フラグメントに対してフラグメントシェーダープログラムの命令を実行するようにされている。ある実施形態においては、各フラグメントシェーダーパイプラインは複数の実行段を含んでおり、これらは、パースペクティブ・コレクション演算、テクスチャマップ探索演算、ブレンド演算、その他の演算を実行する。各フラグメントパイプラインユニット内のレジスタファイルは、各フラグメントグループが実行されたときにそれに関連連けられるデータ値を格納する。複雑なフラグメントシェーダープログラムの場合、セグメントのフラグメントグループは、フラグメントシェーダーパイプラインを一又は複数回循環し、2巡目以降のパイプラインパスのそれぞれはフラグメントシェーダープログラムの追加の部分を実行する。フラグメントグループが最初のフラグメントシェーダーパイプラインに戻って追加の命令が適用されるとき、そのパスの間に各フラグメントに対してフラグメントシェーダーパイプラインによって計算されたレジスタ値を使用して、それぞれのフラグメントのレジスタファイルの状態を更新する。ある実施形態においては、フラグメントシェーダーパイプラインのパイプライン段のそれぞれは、マイクロコードの形式における命令をシェーダー命令ユニット(簡潔にするため図3では省いてある)から受け取る。
[0041]セグメント内のフラグメントグループに関連付けられている属性のいくつかは、フラグメントシェーダーパイプラインによるセグメントの処理に影響しない。これらの属性をパススルー属性と称する。更に、ラスタライザ305からのフラグメントストリームには、別のコマンドやデータ(ステートバンドル(state bundle)と称する)も含めることができ、これらは、グラフィックスパイプラインのうちフラグメント処理ユニットより下流の別の部分(例:ラスター演算ユニット335)に伝える必要がある。
[0042]複数のフラグメントシェーダーパイプラインのパフォーマンスを向上させるため、フラグメントシェーダー300の実施形態では、これらのパススルー属性と、それらに対応するセグメント(フラグメントシェーダーパイプラインに送られる)とを分けて、パススルー属性及びステートバンドルをサイドFIFO 325に送る。サイドFIFO 325は、先入れ先出しバッファである。ある実施形態においては、フラグメントシェーダー分配器310は、選択されたフラグメントシェーダーパイプラインにフラグメントグループを送るときに、対応するフラグメントパケットをサイドFIFO 325に挿入する。更なる実施形態においては、フラグメントシェーダー分配器310がセグメントの最後のフラグメントグループをフラグメントシェーダーパイプラインに送るとき、FIFO 325に送られる対応するフラグメントパケットにはエンドオブセグメント・インジケータ(end−of−segment indicator)が含まれる。エンドオブセグメント・インジケータは、後から説明するように、フラグメントシェーダー収集器330がフラグメントグループとそれらの対応するパススルー属性とを再構築するために使用する。更に、フラグメントシェーダー分配器310は、フラグメントストリーム中のステートバンドルを受け取ると、そのステートバンドルをサイドFIFO 325に直接送る。ある実施形態においては、ステートバンドルが一連のフラグメントシェーダーパイプラインのモードに影響する場合、フラグメントシェーダー分配器310は、サイドFIFO 325に加えて、複数のフラグメントシェーダーパイプラインのそれぞれにもステートバンドルのコピーを供給する。
[0043]フラグメントシェーダー収集器330は、処理されたフラグメントグループをフラグメントシェーダーパイプラインから取得し、それらを、サイドFIFO 325からの対応するパススルー属性と再び組み合わせ、それらをラスター演算ユニット335に転送する。ラスター演算ユニット335は、それらのフラグメントグループが、例えば、デプスバッファ、ステンシルバッファ、アルファバッファのうちの少なくとも1つによってマスキング(masked off)されていない場合、それらをフレームバッファ340に格納することができる。ある実施形態においては、フラグメントシェーダー収集器330は、サイドFIFO 325を参照して、フラグメントシェーダーユニットによって処理されるフラグメントストリームの順序を維持する。この実施形態では、フラグメントシェーダー収集器330の最初の状態において、フラグメントシェーダー分配器310が選択するのと同じフラグメントシェーダーパイプラインを選択する。次いで、フラグメントシェーダー収集器330は、サイドFIFO 325からの最初のデータ項目を取得する。取得したデータ項目がフラグメントパケットである場合、フラグメントシェーダー収集器330は、選択したフラグメントシェーダーパイプラインによる対応するフラグメントグループの処理が終了するまで待機する。次いで、フラグメントシェーダー収集器330は、選択したフラグメントシェーダーパイプラインから対応するフラグメントグループを取得し、それをフラグメントパケットのパススルー属性と組み合わせ、そのフラグメントグループをラスター演算ユニット335に送る。サイドFIFO 325内の以降のフラグメントパケットについて、この手順を繰り返す。
[0044]フラグメントパケットにエンドオブセグメント・インジケータが含まれている場合、フラグメントシェーダー収集器330は、選択順序における次のフラグメントシェーダーパイプラインを選択してフラグメントグループを取得する。フラグメントシェーダー収集器330が使用する選択順序は、フラグメントシェーダー分配器310が使用する選択順序と同じであり、例えば、ラウンドロビン順序である。フラグメントシェーダー分配器310とフラグメントシェーダー収集器330の両方が同じ選択順序を使用するため、フラグメントグループのセグメントは、フラグメントシェーダー分配器310によって送られたときと同じ順序でフラグメントシェーダー収集器330によって読み取られる。更に、フラグメントシェーダーパイプラインのそれぞれが、受け取ったときと同じ順序でフラグメントグループを出力するため、サイドFIFO 325内のフラグメントパケットの順序は、フラグメントシェーダーパイプラインによって出力されるフラグメントグループの順序と同じである。更に、フラグメントシェーダーパイプラインの特定の識別番号ではなく、単一のエンドオブセグメント・インジケータを使用することによって、追加の情報ビットが保持されるようにサイドFIFO 325を拡張する必要なしに、フラグメントシェーダーパイプラインの数を変更することができる。
[0045]更に、サイドFIFO 325内のバンドルには、フラグメントグループが対応していないため、フラグメントシェーダー収集器330は、フラグメントシェーダーパイプラインが処理を終了するまで待機することなく、サイドFIFO 325からバンドルを読み取って、それらをラスター演算ユニット335に出力することができる。サイドFIFO 325ではフラグメントストリームの順序が保持されるため、ある実施形態においては、サイドFIFO 325は、ある時間にすべてのフラグメントシェーダーパイプラインによって処理されるすべてのセグメントのフラグメントパケットを保持するための十分なエントリ(entry)と、バンドル及びその他のオーバーヘッド(例:各シェーダーパイプラインユニットの入力バッファ及び出力バッファに格納されるフラグメントグループのオーバーヘッド)のための追加のエントリと、を含んでいなければならない。
[0046]フラグメントシェーダー300は、任意の数のフラグメントシェーダーパイプラインを含むことができ、これにより、パフォーマンス目標或いはコスト目標が達成されるようにパフォーマンスのスケールアップ/スケールダウンを容易に行うことができる。更に、フラグメントシェーダーパイプラインの数を増やすとき、インスタンス化する追加のフラグメントシェーダーパイプラインの実際のエリア以外にフラグメントシェーダー300に加わる付加的なエリアや複雑さのオーバーヘッドは非常にわずかである。一般的なデバイス製造工程においては、デバイスのごく一部の機能に影響するがデバイスの残りの部分は正常に動作できるようなポイント欠陥(point defect)がしばしば発生する。製造歩留まりを高めるため、フラグメントシェーダー300のある実施形態では、望ましい数より多くのフラグメントシェーダーパイプラインを備えているように製造する。製造後、各フラグメントシェーダーパイプラインをテストし、ポイント欠陥によって不良である場合、その不良なフラグメントシェーダーパイプラインを示すように一連のヒューズ又はその他のワンタイムプログラマブルメモリをプログラムする。フラグメントシェーダー分配器310及びフラグメントシェーダー収集器330は、いずれも、格納されているこのインジケータを使用して、不良なフラグメントシェーダーパイプラインをスキップするようにされている。これによって、フラグメントシェーダー300は、不良ではない残りのフラグメントシェーダーパイプラインによって正常に動作することができる。従って、通常であれば全体として不良とみなされるデバイスを機能デバイスとして生かすことができ、製造歩留まりが高まってコストが低減する。
[0047]図4は、本発明の実施形態によるフラグメントシェーダー分配器400を示している。前述したように、フラグメントシェーダー分配器は、フラグメントストリームをセグメントに編成し、セグメント内のフラグメントを、選択されたフラグメントシェーダーパイプラインに分配する。ある実施形態においては、フラグメントシェーダー分配器400は、8ブロックのストリームの形式におけるフラグメントストリームをラスタライザから受け取る。図4において、フラグメントストリームは、一例としての2つの8ブロックフラグメント404及び408を含んでいる。この例においては、ラスタライザは、これら一例としての8ブロックフラグメントをジオメトリプリミティブ402及び406から生成する。8ブロックフラグメントのそれぞれは、8つのフラグメントグループを含んでいる。前述したように、実施形態においては、フラグメントグループのそれぞれは、2×2配列における4つのピクセルに対応する。8ブロックフラグメントのそれぞれは、関連付けられているジオメトリプリミティブの少なくとも一部をカバー(cover)している。例えば、8ブロック404においては、フラグメントグループ432、434、436、438、440がジオメトリプリミティブ402の少なくとも一部によってカバーされている。8ブロック404の残りのフラグメントグループ、すなわちフラグメントグループ460、462、464は、ジオメトリプリミティブ402によってカバーされていない。
[0048]フラグメントシェーダー分配器400は、セグメントの境界を決定するセグメント化器410を含んでいる。前述したように、1つのセグメントは、1つのフラグメントシェーダーパイプラインによって一度に処理される一連のフラグメントグループである。セグメントのサイズは、フラグメントシェーダーパイプラインのリソースによって制限される。フラグメントシェーダーパイプラインのリソースとしては、パイプラインにおける段数(フラグメント又はフラグメントグループの数を制限しうる)と、データレジスタの数と、セグメントのフラグメントグループに関連付けられるジオメトリプリミティブに関連付けられる属性の数とが挙げられる。更なる実施形態においては、選択されたフラグメントシェーダーパイプラインのリソース限界に達する前に、別のイベント(例:所定の制限時間内にラスタライザ305から更なるフラグメントグループが受信されない)が起きたときにセグメントを閉じることができる。
[0049]ある実施形態においては、セグメント化器410は、次に入力される1つのフラグメントグループがフラグメントシェーダー分配器400によって処理されるときに消費されるであろうフラグメントシェーダーパイプラインのリソース量を事前に求める。フラグメントあたりのリソース使用量は、現在のグラフィックス状態と、更なる実施形態においては、フラグメントが前のセグメントとは異なるジオメトリプリミティブからであるか否かとに基づく。更に、フラグメントグループの処理後に、消費されたフラグメントパイプラインの累積リソースを一連のカウンタによって追跡する。カウンタのそれぞれは、フラグメントシェーダーパイプラインの1つのリソースに対応する。実施形態においては、セグメント化器410は、フラグメントグループカウンタ415と、ジオメトリプリミティブ属性カウンタ420と、フラグメントプログラムレジスタ使用カウンタ425とを含んでいる。フラグメントシェーダー分配器400が各フラグメントグループを処理すると、これら一連のカウンタの値を、フラグメントグループによって消費されたリソースが反映されるように変更する。
[0050]更に、カウンタのそれぞれは、フラグメントシェーダーパイプラインのリソースの限界に対応する限界値を有する。一又は複数のカウンタがその限界値に達すると、セグメント化器410は、現在選択されているフラグメントシェーダーパイプラインのセグメントが完了したことを示す信号を送る。フラグメントシェーダー分配器400は、これに応答して、選択順序における次のフラグメントシェーダーパイプラインを選択し、セグメント化器410の一連のカウンタを初期値(新しいセグメントに対してリソースがまだ使用されていないことを示す)にリセットする。更なる実施形態においては、フラグメントシェーダー分配器400は、セグメントの最後のフラグメントグループに関連付けられるフラグメントパケットにエンドオブセグメント・インジケータも追加する。次いで、フラグメントシェーダー分配器400は、ラスタライザからのストリーム中の以降のフラグメントグループの処理を続行し、以降のフラグメントシェーダーグループを、新たに選択したフラグメントシェーダーパイプラインに送る。
[0051]一例においては、セグメント化器410は、ラスタライザから8ブロック404を受け取った時点で、カバーされている5つのフラグメントグループ432、434、436、438、440に対応する値5だけ、フラグメントグループカウンタ415を変更する。後から詳しく説明するように、セグメント化器410は、8ブロック404の中のカバーされていない残りのフラグメントグループ(フラグメントグループ460、462、464)を破棄し、なぜなら、これら空のフラグメントグループは圧縮配列器430によって破棄されるためである。実施形態においては、フラグメントシェーダーパイプラインのそれぞれは、1つのセグメントにおける最大220個のフラグメントグループを処理することができ、従って、フラグメントグループカウンタ415の限界値は220である。
[0052]更に、フラグメントグループ432、434、436、438、440は、いずれもジオメトリプリミティブ402に関連付けられている。各ジオメトリプリミティブには、更に一連の属性が関連付けられている。実施形態においては、これら一連の属性としては、平面方程式パラメータ、色、フォグ値、テクスチャ座標、クリッピング平面、或いはジオメトリプリミティブに適用される、又はジオメトリプリミティブにおいて補間されるその他のスカラー値又はベクトル値が挙げられる。フラグメントグループがフラグメントシェーダー分配器400によって処理されると、フラグメントグループに関連付けられている属性の数だけ属性カウンタを変更する。例えば、ジオメトリプリミティブ402に5つの属性(例:色、フォグ、3成分テクスチャ座標)が関連付けられている場合、関連付けられているフラグメントグループが処理されると属性カウンタ420が5だけ変更される。実施例においては、各フラグメントシェーダーパイプラインは、64の異なるジオメトリプリミティブのそれぞれの4つの属性セットを格納することができ、従って、属性カウンタ420の限界値は256である。更なる実施形態においては、セグメント内のフラグメントの最大数を減少させる代わりに、ジオメトリプリミティブあたりの属性の数を増やすことができ、この逆も可能である。
[0053]更なる実施形態においては、1つのジオメトリプリミティブに関連付けられているフラグメントグループの数には関係なく、そのプリミティブの属性セットのコピーを1つのみ格納することによって、属性を格納するのに必要なスペースが最小化される。この実施形態においては、セグメント化器410は、ジオメトリプリミティブに関連付けられているフラグメントごとにカウントするのではなく、プリミティブの属性を1回カウントするのみでよい。この実施形態の1つの実施例においては、ラスタライザは、各ジオメトリプリミティブを順に処理し、従って、ラスタライザは、1つのジオメトリプリミティブに関連付けられているフラグメントグループすべてを出力した後、別のジオメトリプリミティブに関連付けられているフラグメントを出力する。1つのジオメトリプリミティブの処理が完了した時点で、ラスタライザは、フラグメントグループのストリームにエンドオブプリミティブ・インジケータ(end−of−primitive indicator)を挿入する。セグメント化器410は、エンドオブプリミティブ・インジケータを受け取った時点で、ストリーム内の次のフラグメントグループが含まれているジオメトリプリミティブに関連付けられている属性の数だけ、属性カウンタ420を増大させる。この実施形態においては、セグメント化器410は、次のエンドオブプリミティブ・インジケータを受け取るまでは、ストリーム内の以降のフラグメントグループについては属性カウンタ420を増大させない。この実施形態においては、セグメント内のフラグメントに関連付けられているジオメトリプリミティブの格納可能な最大数を減少させる(これによって場合によってはセグメント内のフラグメントグループの数が制限される)代わりに、ジオメトリプリミティブあたりの属性の数を増大させることができ、この逆も可能である。
[0054]更に、フラグメントシェーダーパイプラインは、一般には、各フラグメントに対してフラグメントシェーダープログラムを実行している間、いくつかのデータレジスタを使用してデータを一時的に格納する。各フラグメントはフラグメントシェーダープログラムの個別のインスタンスによって実行されるため、フラグメントごとにデータレジスタセットが必要である。ある実施形態においては、各フラグメントシェーダーパイプラインは、自身のデータレジスタのプールをセグメントのフラグメントグループの間で動的に割り当てることができる。例えば、フラグメントシェーダーパイプラインが880個のデータレジスタを含む場合、フラグメントグループあたり4つのデータレジスタを使用してフラグメントシェーダープログラムが実行されるならば、セグメントには最大220個のフラグメントグループを含めることができる。同様に、フラグメントグループあたり5つのデータレジスタを使用する場合、セグメントには最大176個のフラグメントグループを含めることができる。フラグメントシェーダー分配器400がフラグメントグループを処理するとき、セグメント化器410は、フラグメントシェーダープログラムを実行するのに各フラグメントグループに必要であるデータレジスタの数が反映されるように、レジスタカウンタ425を変更する。
[0055]圧縮配列器430は、カバーされていないフラグメントグループ(例:8ブロック404のうちフラグメントグループ460、462、464)を破棄し、ある実施形態では、残りのフラグメントグループを4ブロックに編成し、これらのブロックは、同じか又は異なるジオメトリプリミティブに関連付けられた4つのフラグメントグループのセットである。例えば、圧縮配列器430は、フラグメントグループ432、434、436、438を4ブロック450に編成し、フラグメントグループ440、442、444、446を4ブロック455に編成する。この場合、4ブロック455は、異なるジオメトリプリミティブ(この例においてはジオメトリプリミティブ402及び406)に関連付けられているフラグメントグループを含んでいる。この例においては、フラグメントグループ448は、次の4ブロック(図を簡略化するために省略する)に含まれることになる。フラグメントシェーダー分配器400は、圧縮配列器430によって作成されたフラグメントグループの4ブロックを、選択されているフラグメントシェーダーパイプラインに送る。
[0056]図3に示したように、平行して動作する複数のフラグメントシェーダーパイプラインを使用する場合、これらのフラグメントシェーダーパイプラインは、一般には、テクスチャの探索及びその他のメモリアクセスをほぼ同時に実行する。その結果として、キャッシュ速度と、外部メモリへのデータアクセス要求が不均一になり、アクセスが混み合ったり長いアイドル時間が生じたりする。メモリアクセス速度を均一にし、全体のレイテンシを低減させるため、本発明の実施形態では、メモリアクセスを順にずらす(stagger)命令タイミング方式を使用している。
[0057]図5は、本発明の実施形態による命令タイミング方式500を示している。タイミング方式500においては、第1のフラグメントシェーダーパイプラインの第1のパスの一連のフラグメントシェーダー命令を発行し、第1のフラグメントシェーダーパイプラインがこれらの命令の実行を開始する。次いで、タイミング方式500では、短い時間期間だけ待機した後、第2のフラグメントシェーダーパイプラインの第1のパス510の一連のフラグメントシェーダー命令を送る。更なる遅延の後、第3のフラグメントシェーダーパイプラインの第1のパス515及び第4のフラグメントシェーダーパイプラインの第1のパス520の一連のフラグメントシェーダー命令についても、この手順を繰り返す。その結果として、フラグメントシェーダーパイプラインは、それぞれのフラグメントシェーダープログラムを順にずらして実行し、従って、一連のフラグメントシェーダーパイプラインからのメモリアクセスがより長い時間期間に広がり、同時メモリ要求のピーク数、従ってメモリアクセスの平均レイテンシが減少する。フラグメントシェーダー命令の更なるパス、例えば、一連のフラグメントシェーダーパイプラインの第2のパス525、530、535、540の一連のフラグメントシェーダー命令についても、同様に命令を順にずらして実行する。
[0058]本発明は、グラフィックス処理サブシステムのフラグメント処理ユニットのパフォーマンスを、様々なコスト目標及びパフォーマンス目標が満たされるように、容易且つ効率的にスケールアップ及びスケールダウンを行えるようにする。本発明は、4つのフラグメントシェーダーパイプラインを有する一例のフラグメント処理ユニットを参照しながら説明したが、本発明は、ストリーム処理システムにおける任意の数の平行なパイプラインを有する任意の種類の処理ユニットに適用することができる。本発明は、その具体的な実施例及び実施形態に関連して説明したが、これらは単に説明を目的としたものであり、本発明を制限するものではない。従って、本発明の範囲は、特許請求の範囲によってのみ定められるものとする。
本発明の実施形態を実施するのに適している一例のコンピュータシステムのブロック図である。 本発明の実施形態によるグラフィックス処理サブシステムのレンダリングパイプラインのブロック図を示している。 本発明の実施形態によるフラグメント処理ユニットのフラグメントシェーダー部分を示している。 本発明の実施形態によるフラグメントシェーダー分配器を示している。 本発明の実施形態による命令タイミング方式を示している。

Claims (23)

  1. フラグメントストリームのフラグメントのそれぞれの少なくとも1つの値を決定するようにされているフラグメントプロセッサを含んでいるグラフィックス処理サブシステムであって、
    各々がフラグメントのセグメントに対してフラグメントシェーダープログラムの少なくとも一部を実行する複数のフラグメントシェーダーパイプラインと、
    フラグメントストリームを受け取り、前記複数のフラグメントシェーダーパイプラインから前記フラグメントストリームの一部を実行するための第1のフラグメントシェーダーパイプラインを選択し、受け取った前記ストリームのフラグメントのそれぞれについて、前記受け取ったフラグメントが、選択した前記第1のフラグメントシェーダーパイプラインの前記フラグメントのセグメント内に収まるかを判定し、前記受け取ったフラグメントが、選択した前記第1のフラグメントシェーダーパイプラインの前記フラグメントのセグメント内に収まるという判定に応答して、前記受け取ったフラグメントを、選択した前記第1のフラグメントシェーダーパイプラインに送り、前記受け取ったフラグメントが選択した前記第1のフラグメントシェーダーパイプラインの前記フラグメントのセグメント内に収まらないという判定に応答して、前記複数のフラグメントシェーダーパイプラインのうち第2のフラグメントシェーダーパイプラインを選択するフラグメントシェーダー分配器と、
    フラグメントシェーダー収集器であって、前記複数のフラグメントシェーダーパイプラインのうち一つを選択し、該フラグメントシェーダー収集器が選択した前記フラグメントシェーダーパイプラインが前記フラグメントのセグメントに対する前記フラグメントシェーダープログラムの実行を完了した後に、該フラグメントシェーダー収集器が選択した該フラグメントシェーダーパイプラインから、前記フラグメントのセグメントにおける各フラグメントを取得する、該フラグメントシェーダー収集器と、
    を備え
    前記受け取ったフラグメントが、前記第1のフラグメントシェーダーパイプラインの前記フラグメントのセグメント内に収まるかを判定する際に、前記フラグメントシェーダー分配器が、前記受け取ったフラグメントのいくつかのリソース要件を調べ、前記選択したフラグメントシェーダーパイプラインの利用可能なリソースの測定値を求め、前記受け取ったフラグメントの前記リソース要件が、前記選択したフラグメントシェーダーパイプラインの利用可能なリソースの前記測定値を超えていないという判定に応答して、前記受け取ったフラグメントが前記選択したフラグメントシェーダーパイプラインの前記フラグメントのセグメント内に収まることを示す信号を生成する、ようにされている、
    グラフィックス処理サブシステム。
  2. 前記フラグメントシェーダー分配器が複数のカウンタを更に備えており、前記カウンタのそれぞれが、前記選択されているフラグメントシェーダーパイプラインのリソースに対応しており、
    前記フラグメントシェーダー分配器が、前記受け取ったフラグメントのそれぞれの前記リソース要件によって前記複数のカウンタの値を変更するように、更にされている、
    請求項に記載のグラフィックス処理サブシステム。
  3. 前記複数のカウンタのそれぞれに、前記選択されているフラグメントシェーダーパイプラインの前記対応するリソースの限界を表すリソース限界値が関連付けられており、
    前記受け取ったフラグメントが前記第1のフラグメントシェーダーパイプラインの前記フラグメントのセグメント内に収まることを示す信号を生成するようにすることにおいて、前記フラグメントシェーダー分配器が、前記複数のカウンタのいずれも、それぞれに関連付けられているリソース限界値に達していないことを判定するようにされている、
    請求項に記載のグラフィックス処理サブシステム。
  4. 前記フラグメントシェーダー収集器が、
    前記第2のフラグメントシェーダーパイプラインが選択されたことを示す信号を受信するようにされており、且つ、前記信号に応答して、
    前記第2のフラグメントシェーダーパイプラインを選択し、該第2のフラグメントシェーダーパイプラインが前記フラグメントのセグメントに対する前記フラグメントシェーダープログラムの実行を完了したことを示す信号に応答して、該第2のフラグメントシェーダーパイプラインから、前記フラグメントのセグメントにおける各フラグメントを取得する、ようにされている、
    請求項1に記載のグラフィックス処理サブシステム。
  5. 前記フラグメントシェーダー収集器がサイドFIFOを介して前記信号を受信する、請求項に記載のグラフィックス処理サブシステム。
  6. 前記フラグメントシェーダー分配器が、前記フラグメントシェーダーパイプラインの1つに送る、受け取ったフラグメントのそれぞれについて、フラグメントパケットをサイドFIFOに挿入するように、更にされている、請求項に記載のグラフィックス処理サブシステム。
  7. 前記フラグメントパケットのそれぞれが、前記受け取ったフラグメントの一連の属性を含んでいる、請求項に記載のグラフィックス処理サブシステム。
  8. 前記フラグメントシェーダー収集器が、前記フラグメントパケットのそれぞれの前記一連の属性と、前記フラグメントシェーダー収集器が選択した前記フラグメントシェーダーパイプラインから取得される対応するフラグメントとを対応付けるようにされている、請求項に記載のグラフィックス処理サブシステム。
  9. フラグメントのセグメントに対してフラグメントシェーダープログラムの少なくとも一部を実行するようにされている第3のフラグメントシェーダーパイプライン、
    を更に備えており、
    前記受け取ったフラグメントが前記第2のフラグメントシェーダーパイプラインの前記フラグメントのセグメント内に収まらないという判定に応答して、前記フラグメントシェーダー分配器が、前記第3のフラグメントシェーダーパイプラインを選択し、前記受け取ったフラグメントを、前記新たに選択したフラグメントシェーダーパイプラインに送るようにされており、
    前記フラグメントシェーダー収集器が、
    前記第3のフラグメントシェーダーパイプラインが選択されたことを示す信号を受信するようにされており、且つ、前記信号に応答して、
    前記第3のフラグメントシェーダーパイプラインを選択し、前記フラグメントシェーダー収集器が選択した前記フラグメントシェーダーパイプラインが前記フラグメントのセグメントに対する前記フラグメントシェーダープログラムの実行を完了したことを示す信号に応答して、前記フラグメントシェーダー収集器が選択したフラグメントシェーダーパイプラインから、前記フラグメントのセグメントにおける各フラグメントを取得する、ようにされている、
    請求項に記載のグラフィックス処理サブシステム。
  10. 前記フラグメントシェーダー分配器及び前記フラグメントシェーダー収集器が、複数のフラグメントシェーダーパイプラインからラウンドロビン順序において選択するようにされている、請求項に記載のグラフィックス処理サブシステム。
  11. 前記第1のフラグメントシェーダーパイプライン及び前記第2のフラグメントシェーダーパイプラインが、同じフラグメントシェーダープログラムの個別のインスタンスを平行に実行するようにされている、請求項1に記載のグラフィックス処理サブシステム。
  12. 前記第1のフラグメントシェーダーパイプライン及び前記第2のフラグメントシェーダーパイプラインが、異なるフラグメントシェーダープログラムの個別のインスタンスを平行に実行するようにされている、請求項1に記載のグラフィックス処理サブシステム。
  13. 前記選択されているフラグメントシェーダーパイプラインの前記利用可能なリソースが、前記フラグメントのセグメントにおけるフラグメントの最大数を含んでいる、請求項に記載のグラフィックス処理サブシステム。
  14. 前記フラグメントのセグメントにおける前記フラグメントの最大数が、選択されている前記フラグメントシェーダーパイプラインにおけるパイプライン段数によって制限される、請求項13に記載のグラフィックス処理サブシステム。
  15. 前記選択されているフラグメントシェーダーパイプラインの前記利用可能なリソースが、一連のデータレジスタを含んでおり、
    前記受け取ったフラグメントの前記リソース要件がデータレジスタの必要量を含んでおり、前記データレジスタの必要量が、前記受け取ったフラグメントに対して実行されるフラグメントシェーダープログラムによって決まる、
    請求項に記載のグラフィックス処理サブシステム。
  16. 前記選択されているフラグメントシェーダーパイプラインの前記利用可能なリソースが、前記受け取ったフラグメントに関連付けられている一連の属性の数を含んでいる、請求項に記載のグラフィックス処理サブシステム。
  17. 前記受け取ったフラグメントに関連付けられている前記一連の属性が、ジオメトリプリミティブの一連の属性から継承される、請求項16に記載のグラフィックス処理サブシステム。
  18. 前記フラグメントシェーダー分配器が、
    前記受け取ったフラグメントが、関連付けられているジオメトリプリミティブをカバーしていないという判定に応答して、
    前記受け取ったフラグメントを破棄するようにされている、請求項1に記載のグラフィックス処理サブシステム。
  19. 前記受け取るフラグメントが、複数のフラグメントを含んでいるフラグメントグループの一部であり、
    前記フラグメントシェーダー分配器が、前記フラグメントグループの中の前記破棄するフラグメントを、第2の受け取ったフラグメントに置き換えて、前記第2の受け取ったフラグメントを含んでいる前記フラグメントグループを、前記選択したフラグメントシェーダーパイプラインに送るようにされている、
    請求項18に記載のグラフィックス処理サブシステム。
  20. 前記フラグメントのセグメントに関連付けられているジオメトリプリミティブの最大数が、前記受け取ったフラグメントに関連付けられている前記一連の属性のサイズに反比例する、請求項17に記載のグラフィックス処理サブシステム。
  21. フラグメントストリームのピクセルフラグメントのそれぞれの少なくとも1つの値を決定する方法であって、
    フラグメントのセグメントに対してフラグメントシェーダープログラムの少なくとも一部を実行するようにされており、且つ少なくとも1つの利用可能なリソースを有する第1のフラグメントシェーダーパイプライン、を選択するステップと、
    フラグメントストリームにおけるフラグメントを受け取る、受取ステップと、
    前記選択されているフラグメントシェーダーパイプラインの前記利用可能なリソースの測定値を、前記受け取ったフラグメントのリソース要件だけ減らす、低減ステップと、
    前記受け取ったフラグメントを、前記選択されているフラグメントシェーダーパイプラインに送り、前記選択されているフラグメントシェーダーパイプラインの前記フラグメントシェーダープログラムによって処理する、送りステップと、
    前記受け取ったフラグメントの属性を含んでいるフラグメントパケットをFIFOに送る、送りステップと、
    前記選択されているフラグメントシェーダーパイプラインの前記利用可能なリソースの前記測定値がリソース限界値に達していないことに応答して、前記フラグメントストリームにおける第1の複数の以降のフラグメントについて、前記受取ステップと、前記低減ステップと、前記受け取ったフラグメントを送る前記送りステップと、フラグメントパケットを送る前記送りステップと、を繰り返すステップと、
    前記選択されているフラグメントシェーダーパイプラインの前記利用可能なリソースの前記測定値が前記リソース限界値に達したことに応答して、フラグメントのセグメントに対してフラグメントシェーダープログラムの少なくとも一部を実行するようにされており、且つ少なくとも1つの利用可能なリソースを有する第2のフラグメントシェーダーパイプライン、を選択するステップと、
    前記選択されているフラグメントシェーダーパイプラインの利用可能なリソースの前記測定値がリソース限界値に達していないことに応答して、前記フラグメントストリームにおける第2の複数の以降のフラグメントについて、前記受取ステップと、前記低減ステップと、前記受け取ったフラグメントを送る前記送りステップと、フラグメントパケットを送る前記送りステップと、を繰り返すステップと、
    を含んでいる、方法。
  22. 前記フラグメントパケットを送る前記送りステップが、
    前記選択されているフラグメントシェーダーパイプラインの前記利用可能なリソースの前記測定値が前記リソース限界値に達したことに応答して、前記フラグメントパケットにエンドオブセグメント・インジケータを含めるステップ、
    を含んでいる、請求項21に記載の方法。
  23. フラグメントを取得するための第1のフラグメントシェーダーパイプラインを選択するステップと、
    前記フラグメントパケットをFIFOから取得するステップと、
    フラグメントを取得するための選択した前記フラグメントシェーダーパイプラインから、対応するフラグメントを取得する、取得ステップと、
    前記取得したフラグメントパケットの属性を、前記対応するフラグメントと組み合わせて、組み合わされたフラグメントを形成する、組合せステップと、
    前記組み合わされたフラグメントを次のストリーム処理ユニットに送る、送りステップと、
    前記フラグメントパケットが前記エンドオブセグメント・インジケータを含んでいないという判定に応答して、前記FIFO内の次のフラグメントパケットについて、前記取得ステップと、前記組合せステップと、前記送りステップとを繰り返すステップと、
    前記フラグメントパケットが前記エンドオブセグメント・インジケータを含んでいることに応答して、フラグメントを取得するための第2のフラグメントシェーダーパイプラインを選択するステップと、
    を更に含んでいる、請求項22に記載の方法。
JP2007531190A 2004-09-13 2005-08-19 フラグメントシェーディングパイプラインにおけるスケーラビリティの向上 Active JP4639232B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/940,070 US7218291B2 (en) 2004-09-13 2004-09-13 Increased scalability in the fragment shading pipeline
PCT/US2005/029930 WO2006031389A2 (en) 2004-09-13 2005-08-19 Increased scalability in the fragment shading pipeline

Publications (2)

Publication Number Publication Date
JP2008512771A JP2008512771A (ja) 2008-04-24
JP4639232B2 true JP4639232B2 (ja) 2011-02-23

Family

ID=36033397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007531190A Active JP4639232B2 (ja) 2004-09-13 2005-08-19 フラグメントシェーディングパイプラインにおけるスケーラビリティの向上

Country Status (6)

Country Link
US (1) US7218291B2 (ja)
EP (1) EP1789927B1 (ja)
JP (1) JP4639232B2 (ja)
KR (1) KR100887012B1 (ja)
CN (1) CN101124613B (ja)
WO (1) WO2006031389A2 (ja)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090027383A1 (en) 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
US8497865B2 (en) 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
US20080079737A1 (en) * 2003-11-19 2008-04-03 Reuven Bakalash Multi-mode parallel graphics rendering and display system supporting real-time detection of mode control commands (MCCS) programmed within pre-profiled scenes of the graphics-based application
WO2006117683A2 (en) 2005-01-25 2006-11-09 Lucid Information Technology, Ltd. Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
US8085273B2 (en) 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US7961194B2 (en) * 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US20080094403A1 (en) * 2003-11-19 2008-04-24 Reuven Bakalash Computing system capable of parallelizing the operation graphics processing units (GPUs) supported on a CPU/GPU fusion-architecture chip and one or more external graphics cards, employing a software-implemented multi-mode parallel graphics rendering subsystem
EP1687732A4 (en) 2003-11-19 2008-11-19 Lucid Information Technology Ltd METHOD AND SYSTEM FOR A MULTIPLEXED 3D GRAPHIC PIPELINE VIA A PC BUS
US20070291040A1 (en) * 2005-01-25 2007-12-20 Reuven Bakalash Multi-mode parallel graphics rendering system supporting dynamic profiling of graphics-based applications and automatic control of parallel modes of operation
US7385604B1 (en) * 2004-11-04 2008-06-10 Nvidia Corporation Fragment scattering
GB0425204D0 (en) * 2004-11-15 2004-12-15 Falanx Microsystems As Processing of 3-dimensional graphics
US7548244B2 (en) * 2005-01-12 2009-06-16 Sony Computer Entertainment Inc. Interactive debugging and monitoring of shader programs executing on a graphics processor
US20090096798A1 (en) * 2005-01-25 2009-04-16 Reuven Bakalash Graphics Processing and Display System Employing Multiple Graphics Cores on a Silicon Chip of Monolithic Construction
US8223845B1 (en) 2005-03-16 2012-07-17 Apple Inc. Multithread processing of video frames
US7830390B2 (en) * 2005-07-19 2010-11-09 Graphics Properties Holdings, Inc. Color computation of pixels using a plurality of vertex or fragment shader programs
US7616202B1 (en) * 2005-08-12 2009-11-10 Nvidia Corporation Compaction of z-only samples
US7559914B2 (en) * 2005-12-14 2009-07-14 Alcon, Inc. Priming a microsurgical system
JP4834446B2 (ja) * 2006-04-11 2011-12-14 株式会社東芝 画像処理装置
US8111260B2 (en) 2006-06-28 2012-02-07 Microsoft Corporation Fast reconfiguration of graphics pipeline state
US8954947B2 (en) * 2006-06-29 2015-02-10 Microsoft Corporation Fast variable validation for state management of a graphics pipeline
US7750913B1 (en) 2006-10-24 2010-07-06 Adobe Systems Incorporated System and method for implementing graphics processing unit shader programs using snippets
KR101349171B1 (ko) * 2007-01-17 2014-01-09 삼성전자주식회사 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법
US8203558B2 (en) * 2008-01-28 2012-06-19 Apple Inc. Dynamic shader generation
US8509569B2 (en) * 2008-02-11 2013-08-13 Apple Inc. Optimization of image processing using multiple processing units
JP5491498B2 (ja) * 2008-05-30 2014-05-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 拡大縮小可能で且つ統合化されたコンピュータシステム
GB2475375B (en) * 2008-06-04 2011-12-14 Advanced Risc Mach Ltd Graphics processing systems
US8581912B2 (en) * 2008-06-27 2013-11-12 Microsoft Corporation Dynamic subroutine linkage optimizing shader performance
US9665968B2 (en) * 2008-08-22 2017-05-30 Autodesk, Inc. Computerized image rendering with per-frame buffer scene segmentation
GB2466078B (en) * 2008-12-15 2013-11-13 Advanced Risc Mach Ltd Apparatus and method for tracing activities of a shader program executed on shader circuitry of a data processing apparatus
US8416238B2 (en) * 2009-02-18 2013-04-09 Autodesk, Inc. Modular shader architecture and method for computerized image rendering
US8379024B2 (en) * 2009-02-18 2013-02-19 Autodesk, Inc. Modular shader architecture and method for computerized image rendering
US8698823B2 (en) * 2009-04-08 2014-04-15 Nvidia Corporation System and method for deadlock-free pipelining
JP5166343B2 (ja) 2009-04-17 2013-03-21 株式会社ディジタルメディアプロフェッショナル 3次元コンピュータグラフィック用プロセッサ
US8368694B2 (en) * 2009-06-04 2013-02-05 Autodesk, Inc Efficient rendering of multiple frame buffers with independent ray-tracing parameters
US8797336B2 (en) * 2009-06-30 2014-08-05 Apple Inc. Multi-platform image processing framework
US8970588B1 (en) * 2009-07-31 2015-03-03 Pixar System and methods for implementing object oriented structures in a shading language
US9244690B2 (en) * 2009-09-09 2016-01-26 Advanced Micro Devices, Inc. Variable frequency output to one or more buffers
JP2011086235A (ja) * 2009-10-19 2011-04-28 Fujitsu Ltd 画像処理装置、画像処理方法および画像処理プログラム
JP5311491B2 (ja) 2009-11-17 2013-10-09 Necシステムテクノロジー株式会社 グラフィクス頂点処理装置およびグラフィクス頂点処理方法
KR101719485B1 (ko) 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US8842121B2 (en) * 2011-02-03 2014-09-23 Intel Corporation Stream compaction for rasterization
US9595074B2 (en) 2011-09-16 2017-03-14 Imagination Technologies Limited Multistage collector for outputs in multiprocessor systems
CN103108197A (zh) 2011-11-14 2013-05-15 辉达公司 一种用于3d视频无线显示的优先级压缩方法和系统
US9829715B2 (en) 2012-01-23 2017-11-28 Nvidia Corporation Eyewear device for transmitting signal and communication method thereof
US9105250B2 (en) 2012-08-03 2015-08-11 Nvidia Corporation Coverage compaction
US9578224B2 (en) 2012-09-10 2017-02-21 Nvidia Corporation System and method for enhanced monoimaging
US9002125B2 (en) 2012-10-15 2015-04-07 Nvidia Corporation Z-plane compression with z-plane predictors
JP6066755B2 (ja) * 2013-02-07 2017-01-25 株式会社ソニー・インタラクティブエンタテインメント 描画処理装置および描画処理方法
KR102161742B1 (ko) 2013-10-11 2020-10-05 삼성전자주식회사 피드백 경로를 포함하는 파이프 라인 시스템 및 그 동작방법
US9946658B2 (en) 2013-11-22 2018-04-17 Nvidia Corporation Memory interface design having controllable internal and external interfaces for bypassing defective memory
US10935788B2 (en) 2014-01-24 2021-03-02 Nvidia Corporation Hybrid virtual 3D rendering approach to stereovision
US9536342B2 (en) * 2014-08-15 2017-01-03 Intel Corporation Automatic partitioning techniques for multi-phase pixel shading
US10002404B2 (en) * 2015-04-15 2018-06-19 Mediatek Singapore Pte. Ltd. Optimizing shading process for mixed order-sensitive and order-insensitive shader operations
CN105574925A (zh) * 2015-12-11 2016-05-11 中国航空工业集团公司西安航空计算技术研究所 一种自适应的光照处理算法动态选择策略
US9906981B2 (en) 2016-02-25 2018-02-27 Nvidia Corporation Method and system for dynamic regulation and control of Wi-Fi scans
US10152819B2 (en) 2016-08-15 2018-12-11 Microsoft Technology Licensing, Llc Variable rate shading
US10417815B2 (en) * 2017-01-27 2019-09-17 Advanced Micro Devices, Inc. Out of order pixel shader exports
US10650566B2 (en) 2017-02-15 2020-05-12 Microsoft Technology Licensing, Llc Multiple shader processes in graphics processing
US10147227B2 (en) 2017-02-17 2018-12-04 Microsoft Technology Licensing, Llc Variable rate shading
US10515466B2 (en) * 2017-06-09 2019-12-24 Sony Interactive Entertainment Inc. Optimized deferred lighting in a foveated rendering system
US10241766B2 (en) 2017-06-22 2019-03-26 Microsoft Technology Licensing, Llc Application binary interface cross compilation
US10289393B2 (en) 2017-06-22 2019-05-14 Microsoft Technology Licensing, Llc GPU-executed program sequence cross-compilation
US10102015B1 (en) 2017-06-22 2018-10-16 Microsoft Technology Licensing, Llc Just in time GPU executed program cross compilation
US10657698B2 (en) * 2017-06-22 2020-05-19 Microsoft Technology Licensing, Llc Texture value patch used in GPU-executed program sequence cross-compilation
US10713756B2 (en) * 2018-05-01 2020-07-14 Nvidia Corporation HW-assisted upscaling and multi-sampling using a high resolution depth buffer
US11012694B2 (en) 2018-05-01 2021-05-18 Nvidia Corporation Dynamically shifting video rendering tasks between a server and a client
CN108958921B (zh) * 2018-07-19 2023-06-20 南京军微半导体科技有限公司 Gpu中一种染色片段调度管理的硬件加速实现方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6731303B1 (en) * 2000-06-15 2004-05-04 International Business Machines Corporation Hardware perspective correction of pixel coordinates and texture coordinates
US7187383B2 (en) * 2002-03-01 2007-03-06 3D Labs Inc., Ltd Yield enhancement of complex chips
JP2003256385A (ja) * 2002-03-04 2003-09-12 Hitachi Ltd データ処理装置
US7162620B2 (en) * 2002-03-13 2007-01-09 Sony Computer Entertainment Inc. Methods and apparatus for multi-processing execution of computer instructions
US7009605B2 (en) * 2002-03-20 2006-03-07 Nvidia Corporation System, method and computer program product for generating a shader program
JP2004021682A (ja) * 2002-06-18 2004-01-22 Canon Inc データ処理システム及び画像データ処理システム
EP1520260A1 (en) * 2002-07-08 2005-04-06 Sidec Technologies AB Imaging apparatus and method
KR100510131B1 (ko) * 2003-01-29 2005-08-26 삼성전자주식회사 픽셀 캐쉬 및 이를 이용한 3차원 그래픽 가속 장치 및 방법
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US7714858B2 (en) * 2003-04-18 2010-05-11 Hewlett-Packard Development Company, L.P. Distributed rendering of interactive soft shadows
US7385607B2 (en) * 2004-04-12 2008-06-10 Nvidia Corporation Scalable shader architecture
US7744538B2 (en) * 2004-11-01 2010-06-29 Siemens Medical Solutions Usa, Inc. Minimum arc velocity interpolation for three-dimensional ultrasound imaging
US7681187B2 (en) * 2005-03-31 2010-03-16 Nvidia Corporation Method and apparatus for register allocation in presence of hardware constraints
US7830390B2 (en) * 2005-07-19 2010-11-09 Graphics Properties Holdings, Inc. Color computation of pixels using a plurality of vertex or fragment shader programs

Also Published As

Publication number Publication date
EP1789927A2 (en) 2007-05-30
WO2006031389A3 (en) 2007-06-14
EP1789927B1 (en) 2013-03-27
JP2008512771A (ja) 2008-04-24
EP1789927A4 (en) 2008-06-04
KR20070064337A (ko) 2007-06-20
US20060055695A1 (en) 2006-03-16
WO2006031389A2 (en) 2006-03-23
CN101124613B (zh) 2010-06-16
US7218291B2 (en) 2007-05-15
KR100887012B1 (ko) 2009-03-04
CN101124613A (zh) 2008-02-13

Similar Documents

Publication Publication Date Title
JP4639232B2 (ja) フラグメントシェーディングパイプラインにおけるスケーラビリティの向上
US8941653B2 (en) Order-preserving distributed rasterizer
US6972769B1 (en) Vertex texture cache returning hits out of order
US9202303B2 (en) System and method for compositing path color in path rendering
US6229553B1 (en) Deferred shading graphics pipeline processor
US9214007B2 (en) Graphics processor having unified cache system
JP5437485B2 (ja) レンダリングされたグラフィックス要素のためのパフォーマンスメトリックの視覚的表現の表示
US7042462B2 (en) Pixel cache, 3D graphics accelerator using the same, and method therefor
US7616202B1 (en) Compaction of z-only samples
US20090189896A1 (en) Graphics Processor having Unified Shader Unit
JP2002526842A (ja) ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor)
JP2007525768A (ja) テクスチャ要求のためのレジスタベースのキューイング
US7400325B1 (en) Culling before setup in viewport and culling unit
US10068366B2 (en) Stereo multi-projection implemented using a graphics processing pipeline
US10417813B2 (en) System and method for generating temporally stable hashed values
US7339590B1 (en) Vertex processing unit supporting vertex texture mapping
US7292239B1 (en) Cull before attribute read
TWI474280B (zh) 增進繪圖處理單元之總處理量的方法與系統
US11379944B2 (en) Techniques for performing accelerated point sampling in a texture processing pipeline
US9501847B1 (en) Parallel line stipple computation
US8947444B1 (en) Distributed vertex attribute fetch
US9536341B1 (en) Distributing primitives to multiple rasterizers

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100405

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100412

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100506

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100607

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101012

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: 20101102

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101129

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131203

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4639232

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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