(58)【調査した分野】(Int.Cl.,DB名)
単一のクリッピング平面から前記複数の頂点のそれぞれへの距離を計算する、前記第1のパイプラインに関連付けられたモジュールをさらに備える、請求項2に記載のシステム。
判断されるクリッピング平面及び前記ポリゴンの交差部に位置する複数の点へ新たな複数の重心座標値を割り当てる、前記第1のパイプラインに関連付けられたモジュールをさらに備える請求項1〜4のいずれか一項に記載のシステム。
判断される前記クリッピング平面及び前記ポリゴンの交差部に位置する複数の点に新たな複数の値を割り当てる、前記第1のパイプラインに関連付けられたモジュールをさらに備える請求項5に記載のシステム。
前記ポリゴンの複数の頂点の複数の座標をロードする段階と、前記複数の頂点の前記複数の座標に複数の重心座標値を割り当てる段階と、をさらに備える請求項7に記載の方法。
判断されるクリッピング平面及び前記ポリゴンの交差部に位置する複数の点に新たな複数の重心座標値を割り当てる段階をさらに備える、請求項7〜11のいずれか一項に記載の方法。
判断されるクリッピング平面及び前記ポリゴンの交差部に位置する複数の点に新たな複数の値を割り当てる段階をさらに備える、請求項7〜11のいずれか一項に記載の方法。
【発明を実施するための形態】
【0005】
図1は、先端12の視点から考察された視錐台10を図示する。視錐台10は、近平面13、遠平面14、上平面15、底平面16、右平面17、及び左平面18を有する。視錐台10に関連して、例示の三角形19、20及び21も示される。複数の3Dグラフィックスパイプラインにおけるクリッピングは、視錐台の外に位置する、シーンの複数の部分を破棄すべく実行されてよい。視錐台の完全に外に位置する三角形に複数のグラフィックスオペレーションを実行することは無駄となり得るので、そのような複数のオブジェクト(例えば、三角形19)は、「自明に拒絶される」、即ち、さらなる処理について拒絶されるものと考えられる。一方、三角形20のように視体積の完全に内部に含まれる複数のオブジェクトは、処理され、これらはさらなる処理のためにパイプラインに送信されてよく、又は、換言すれば、自明に受け入れ(TA)られる。ここで重要となるのは、視錐台の面が交差する、視錐台内に複数の頂点を有する三角形21のような複数のオブジェクトであり、その結果、オブジェクトの複数の部分が視錐台内に位置し、他の複数の部分が、視錐台の外に位置するものである。
図1の三角形21の場合において、錐台10の右平面17は、クリッピング平面となり、三角形21を内側ポリゴンの部分22−23−24−25(これはそれ自体が、さらに複数の三角形22−23−24及び24−25−22へと分割されてよい)へ、及び外側又は外部部分24−25−26へと分割する。そのような三角形は、クリッピング平面における新たな複数の頂点を有する新たな三角形を生成してクリッピングされてよい。右平面17に関するクリッピングの図は、ここで示されるように、図示の明確性を目的とする。他の面13、14、15、16及び18のいずれについても、(右平面17を含んで)単独であっても、又は互いの組み合わせのいずれであっても、所与の三角形上で複数のクリッピング平面となってよい。
【0006】
複数のクリッピングオペレーションは、サイクル時間、並びにレイテンシ、スループット、及び電力使用のようなコンピュータの使用の他の複数のベンチマークに関してコストがかかり得、グラフィックスサブシステムの性能を実質的に低下させ得る。
【0007】
6つもの視錐台クリッピング平面が、一般的なポリゴンをインターセプトし得る一方、現実の世界の複数の応用における複数のクリッピング平面の分布は、非常に不均一であり得、実際、単一クリッピング平面の場合へと大きく偏向されることが判断されている。クリッピングが生じる大多数の場合においては、単一クリッピング平面のみが関係する。
【0008】
他の複数の種類のポリゴンがグラフィックスにおいて使用可能であるが、これらは、三角形プリミティブ形式に概して分解されてよく、従って、以下の複数の例は、複数の三角形に関して示される。しかしながら、複数の実施形態は、複数の長方形、複数の五角形、複数の六角形等のような、他の複数のポリゴンを使用することが可能である。
【0009】
図2は、色値(例えば、赤、緑及び青の強度)、透明度、テクスチャ、及び位置のような様々な属性を含み得る複数の頂点A、B、及びCを有する例示の三角形30を示す。ここで説明される複数の実施形態において、これらの複数の値は、重心座標形式で表現されてよい。三角形30の場合において、それぞれの頂点は、上記のように、複数の色値、テクスチャ、複数の強度、又は何らかの対象の他の属性を示し得る複数の属性b0、b1、及びb2を有する。より少ない、又はより多いそのような複数の属性が存在し得るが、以下の複数の例において、3つの属性(b0、b1、及びb2)が例示の目的で示される。
【0010】
図3は、3つのクリッピング平面36、37、及び38でカットされて、外側部分39及び内側部分41を生成した後の三角形30を示す。任意の数の平面で三角形をクリッピングすることは、除外される外側部分39と内側部分41との間の境界を形成する複数の凸ポリゴン、ここでは、B−G−H−I−J−Cをもたらすであろうことに留意されたい。上記のように、視錐台の外に位置し、従って、さらに処理される必要がない(即ち、「クリッピングされる」)という意味で、外部又は外側領域は除外され、他方、含まれる内側部分41は一般的にさらなるグラフィックス処理を必要とする。ポリゴンB−G−H−I−J−Cは、複数の三角形B−G−H、B−H−I、B−I−J及びB−J−Cに、又は処理が始まったものに対し4つの三角形に分解され得る。重心座標で最初はちょうど3つの頂点が存在し、これらが知られていたのに、ここで6つの頂点が存在し、このうち4つが計算されなければならない(点B及びCの重心座標は変更されない)ことにさらに留意されたい。これは計算上時間を消費するタスクであり得る。
【0011】
図4は、三角形30が単一クリッピング平面43によりインターセプトされている、より単純な場合を示す。この場合において、領域45は除外され、領域47が含まれる。複数の領域の間の境界は、クリッピング平面43のラインであり、これは、含まれる内側の複数のポリゴンB−D−E−Cを規定する。このポリゴンは、2つの三角形:B−D−E及びB−E−C(又はB−D−C及びD−E−C)に分解され得る。この単一クリッピング平面の場合において、システムは、図面において点D及び点Eで表され、単一クリッピング平面43が三角形をインターセプトする複数の点に対する複数の重心座標の値を見出し得る。
【0012】
どんなにクリッピング平面が多くとも、クリッピング平面が三角形をインターセプトする三角形のそれぞれの端部に対して、交差の点が存在し、その点に対する複数の重心座標値が計算され得る。これは、クリッピング平面への距離が、端部に沿って線形形式で変化するように、端部の2つの頂点のクリッピング距離を使用して行われてよい。そのようなアプローチは、
図5に関して示されており、これは、クリッピング平面50によりインターセプトされている例示の端部A−Bを示す。図示される例において、頂点Aは、視錐台の外に位置付けられる外側の点であり、頂点Bは、視錐台の内部に位置付けられる内側の点である。以下の解析は、それぞれを順序通りに行うことにより、単一クリッピング平面にも、同様に任意の多くのクリッピング平面にも適用され得る点において一般的である。まず、多数の変数が定義される。
Dout:頂点Aからクリッピング平面50への距離。
Din:頂点Bからクリッピング平面50への距離。
D:クリッピング平面50によりインターセプトされる位置でのA−Bに沿った点。
さらに、この例において、A−Bに沿った距離は、計算上の便利のために1に正規化される。
Dist=Din*alpha+Dout*(1−alpha)
図5において、Distは、A−Bに沿って位置付けられる任意の点Eからクリッピング平面50への距離として示される。Dist=0(これは、図面上は、点Eを点Dへと移動することに対応する)に設定し、alphaについて解くと、クリッピング平面でのalpha、alpha=−Dout/(Din−Dout)又はalpha=Dout/(Dout−Din)の値をもたらす。(Din及びDoutは、複数の符号付きの大きさに関連する複数の距離であってよいことに留意されたい。従って、Dinが正であれば、Doutは負であってよく、DinはDoutと等しくないであろうし、その結果、ゼロで除算されることは排除されている。)betaが1−alphaと等しいものとして定義されるものとしよう。これにより、a*x+b*yの形式の複数の数式を減らす。
beta=1−alpha=1−(Dout/(Dout−Din))=((Dout−Din)−Dout)/(Dout−Din)
beta=−Din/(Dout−Din)
【0013】
一旦alpha及びbetaがクリッピング端部から計算されると、残りの複数の平面距離及び重心座標項が、クリッピング平面及び端部の交差部の点で生じる新たな頂点に対して補間される。
alpha=D(B)/(D(B)−D(A)) (式1)
beta=−D(A)/(D(B)−D(A)) (式2)
b0(D)=b0(A)*alpha+b0(B)*beta (式3)
b1(D)=b1(A)*alpha+b1(B)*beta (式4)
b2(D)=b2(A)*alpha+b2(B)*beta (式5)
【0014】
最終的な複数の重心座標が全ての新たな複数の頂点に対して計算され、クリッピングオペレーションの最後に、新たな複数の位置及び属性が以下のように計算され得る:
P(D)=V(A)*b0(D)+V(B)*b1(D)+V(C)*b2(D) (式6)
式中、V(A)、V(B)、及びV(C)は、それぞれ頂点A、B、及びCにおける元の頂点の複数の属性値を表し、P(D)は新たな頂点Dにおける属性(例えば、色、テクスチャ)を表し、b0(D)、b1(D)、及びb2(D)は、新たな頂点Dにおいて計算される複数の重心座標値である。
【0015】
単一平面クリッピングに対して、単一平面でクリッピングする場合、2つの可能な結果が存在するという事実を利用してよい。
図6A及び
図6Bはこれらの2つのトポロジを示す。それぞれのトポロジは、三角形をインターセプトする単一クリッピング平面52を説明する。
図6Aのトポロジにおいて、三角形は、その頂点Bをクリッピング平面52の外側に有し、
図6Bのトポロジにおいて、頂点Bは、クリッピング平面52の内側に位置付けられる。
【0016】
1つのクリッピング平面のみが存在する場合において、クリッピング及び初期の複数の重心座標値の計算のために前述の式1−6を使用してよく、新たな複数の重心座標は、alpha及びbetaの単純な組み合わせである。
【0017】
この例において、
図2の三角形に対する複数の頂点位置について与えられる初期の複数の重心座標値が使用されてよく、以下をもたらす:
b0(A)=1,b1(A)=0,b2(A)=0
b0(B)=0,b1(B)=0、b2(B)=1
b0(C)=0,b1(C)=1,b2(C)=0
初期の複数の重心座標値を式(3)、(4)、及び(5)に代入することにより、単一クリッピング平面の場合について、新たな点Dに対する複数の重心座標は、ここで以下のように評価されてよい。
b0(D)=1*alpha+0*beta=alpha (式7)
b1(D)=0*alpha+0*beta=0 (式8)
b2(D)=0+beta=beta (式9)
点Eについての複数の重心座標値は、同様に評価され得る。
【0018】
単一平面クリッピングオペレーションに対する複数の計算は、マルチ平面クリッピングに対するものより計算上より少ない計算が伴われることは明らかである。従って、オペレーションは、比較的より少ないプロセッサ及びメモリリソースを用いて実行され得る。
【0019】
ここで
図7を検討すると、複数の単一平面クリッピングオペレーション及び複数のマルチ平面クリッピングのオペレーションの両方を処理する方法の一例のフローチャートが示される。方法は、例えば、特定用途向け集積回路(ASIC)、相補型金属酸化物半導体(CMOS)、若しくはトランジスタ−トランジスタロジック(TTL)技術、又はそれらの任意の組み合わせのような回路技術を使用する機能固定型ロジックハードウェアにおいて実装されてよい。
【0020】
図示されるブロック62において、複数のクリッピングオペレーションを実行する複数のクリッピング平面と共に、所与の入力三角形の複数の頂点が入力される。示される条件付きブロック64は、複数のクリッピング平面の数をテストする。単一クリッピング平面が存在する場合、制御は、フローチャートの左半分に渡り、他方1より多くのクリッピング平面が存在する場合、制御は、フローチャートの右半分に移動する。まず考察されるのは、フローチャートの左半分により処理される単一クリッピング平面の場合である。
【0021】
図示されるブロック66において、三角形の複数の頂点は、初期化及びリスト化され、複数の重心座標項が同様に初期化される(即ち、0又は1に正規化される)。そうして、図示されるブロック68(例えば"LOAD"ブロック)において、1つのクリッピング平面からの複数の頂点の距離は、計算及びストアされる。ブロック70において、内−外、外−内距離比、即ち、上で検討されたalpha及びbetaは、(例えば、式7、8及び9により)計算される。次に、図示されるブロック72において、適切な4頂点又は3頂点出力トポロジは、入力トポロジに応じて選択される。図示されるブロック74において、このトポロジの全ての頂点に対して、(式7、8及び9に関して検討されるように)新たなクリッピング位置における複数の重心座標値が計算され、ブロック104において、クリッピングオペレーションからもたらされる新たな複数の頂点についての対象の複数の変数値が、(例えば、上の式6の適用を通じて)利用可能である。
【0022】
次に考察されるのは、マルチクリッピング平面が存在する場合である。上記のように、クリッピングが扱われなければならない大多数の場合、1つのクリッピング平面のみが存在するが、マルチクリッピング平面が考慮されなければならない場合がなお存在するであろう。これについての方法の実施形態は、フローチャートの右半分に提示される。図示されるブロック80において、三角形の複数の頂点は、初期化及びリスト化され、複数の重心座標項も同様に初期化される。それから、ロードブロックである、図示されるブロック82において、考慮中の特定のクリッピング平面から複数の頂点への距離が計算され、ストアされる。ブロック84において、全てのクリッピング平面が前述の複数の段階に関して検討されているかどうかが判断され得、結果が否定的な場合、制御は、前述のブロックにループバックし、もう一度、考慮中の特定のクリッピング平面からの複数の頂点の距離が計算され、ストアされる。方法のこのフェーズが全てのクリッピング平面に関して完了された場合、ブロック86において、特定の平面に関してクリッピングについての複数の段階が開始する。
【0023】
図示されるブロック88において、所与の三角形の複数の頂点の全てが視錐台の外に位置するかどうかが判断され、そうである場合には、複数の三角形は、加えられ(即ち、自明に除外され)、制御はブロック104に渡る。複数の頂点の全てが外にない場合、方法は、ブロック90において、複数の頂点の全てが、視錐台の内部(即ち内側)にあるかどうかを判断する。そうである場合には、この三角形に対して行われるべき実際のクリッピングが存在せず、制御は、考慮されるべき次の平面の選択のためにブロック86に渡る。全ての頂点が視錐台の内部にない場合は、ブロック92において、内−外、外−内距離比、即ち、上で検討されたようにalpha及びbetaが計算され、ブロック94において、方法は、クリッピング平面によりインターセプトされている三角形の複数の端部に沿った複数の点に対する、新たな頂点の重心座標距離及び他の複数の座標を補間する。
【0024】
ブロック96において、複数の平面の全てがそれらに対しクリッピングされているかどうかが判断され、結果が否定的な場合、制御は、図示されるブロック94に再度渡る。全てが考慮された場合、複数の新しい頂点に対する複数のブロック98フラグが更新され得、計算され得る。複数のフラグは、クリッピングされる複数の平面に関して複数の頂点のトポロジ(即ち、内対外)を示すべく使用されてよい。図示されるブロック100において、方法は、複数の平面の全てが考慮されているかどうかを判断し、結果が否定的な場合、制御は、ブロック86にループバックする。一方で、全クリッピング平面が考慮されている場合、ブロック102において、新たな複数の頂点位置、値、及び重心座標項が、生成された全ての新たな複数の頂点に対して計算されてよく、ここで、計算される複数の位置、値、及び項は、図示されるブロック104において利用可能となる。
【0025】
図8は、それにより方法の実施形態が実施され得る実装ハードウェア120の例を示す。大きく見ると、例示された実施形態は、
図7に提示されるフローチャートの2つの側に概して対応する2つのパイプラインを提示する。ここで、パイプライン160は、
図7の左側に対応し、パイプライン130は、
図7の右半分に概して対応する。ジオメトリ処理を加速すべく実装ハードウェア120を使用することで、ジオメトリサブシステムの性能を、特に本明細書で説明される単一平面クリッピング技術に関連して使用される場合に、改善し得る。
【0026】
三角形122は、デコーダ124に到達してよく、デコーダ124は、この三角形が単一平面クリッピングを対象とするか、又は多数の平面によるクリッピングを対象とするかをデコーダ124に通知する単一クリッピング制御シグナル126により統制される。図の反対の終端部において、これと同一の制御シグナル126が、出力を設定すべくマルチプレクサ125により使用されてよい。
【0027】
マルチクリッピング平面が存在することが判断されている場合がまず考慮される。この実装において、単純なA*X+B*Yの種類の複数の線形オペレーションを実装し得る、多数のALUリソース144、146及び148(より多く、又はより少なく存在してもよい)、そして同様に分割部ブロック150、並びに、クリッピングオペレーションの間に生成される入力、出力、及び複数の一時的な頂点をストアし得る、レジスタファイル152が存在する。この実装はまた、これらのリソースにわたってマルチクリッピングオペレーションをスケジューリングすべく制御ブロック132を包含する。この制御ブロック132は、それぞれのモジュール、すなわち、INITモジュール134、LOADモジュール135、CALCモジュール136、CLIPモジュール140、及びOUTモジュール142を通じて、5つのフェーズにわたって動作してよい。INITフェーズにおいて、複数の頂点は、レジスタファイルへとロードされ、頂点のリスト及び複数の重心座標値は、複数の頂点に割り当てられる。図示されるLOADフェーズにおいて、ALUリソースは、選択された平面からの複数の頂点の距離を計算すべく使用され、この処理は、全ての有効クリッピング平面に対し反復される。そうして、計算された複数の距離は、複数の平面のうちどれがクリッピングされることが必要であるかを知るべく検証されてよい。選択されたクリッピング平面に対するCALCフェーズにおいて、示されるハードウェアは、内−外及び外−内距離比(例えば、式1及び式2によれば、alpha、beta)を計算すべく、複数のALUリソース及び分割部ブロックを使用する。
【0028】
図示されるCLIPは、式3、4及び5について提供されるように、新たなクリッピングされる位置における重心座標値を評価する。この後に、別の平面がクリッピングされることがなお必要かどうかが判断されてよい。
【0029】
前述の処理は、クリッピングされるべき残りの平面が存在しなくなるまで反復的に繰り返されてよい。OUTフェーズにおいて、新たな頂点の複数の重心座標値の全ては、複数のレジスタファイルから読み取られてよい。複数のALUリソースは、式6を評価することにより新たな複数の位置及び対象の他の複数の値(例えば、色、テクスチャ等)を計算すべく、再び使用される。この新たな複数の評価は、全ての新たに生成された複数の頂点に対して実行されてよい。マルチクリッピング平面オペレーションが継続している一方で、ALUのほとんど及び他の複数のリソースが、前述の複数のフェーズに従事してよく、その結果、それについての複数の最終的な出力が生成されるまでに、1つの三角形のみがパイプライン130において処理されるためにスケジューリングされるであろう。
【0030】
上記のように、ほとんどの場合、単一クリッピング平面のみが存在するであろう。この場合、単一クリッピング平面オペレーションに対し最適化された個別のパイプライン160が採用される。マルチクリッピング平面の場合についてのパイプライン130と対照的に、示されるパイプライン160は、同一のパイプラインで多数のオブジェクトを処理可能である。単一平面クリッピングオペレーションの場合において、それぞれのALUリソースは、1つのフェーズに拘束され得、そのALUは、そのオペレーションに対してのみ使用され得、このことはそのパイプラインにおける多数の三角形の処理を許容する。例示された実施形態において、5つの三角形がパイプライン160において処理されてよい。このアプローチは、それぞれのALUが、複数のレーンに対するより多数の計算を含む複数のオペレーションに対して概して共有されるであろう、マルチ平面クリッピング(パイプライン130)の場合と対照的である。その場合において、実際的な事項として、演算上の要求は、1つの三角形のみが一度に処理され得るということがある。
【0031】
SinglePlane_INITモジュール162において、複数の頂点がロードされ、複数の重心座標値が複数の頂点に割り当てられる。SinglePlane_LOADモジュール164において、1つのALUリソース144がクリッピングされている単一平面からの複数の頂点の距離を計算すべく使用され、それゆえ、マルチクリッピング平面からの複数の距離を評価する必要がない。選択されたクリッピング平面に対するSinglePlane_CALCモジュール166において、別のALUリソース146は、内−外及び外−内距離比(即ち、上で式1及び式2に関して検討されたようなalpha及びbeta)を計算すべく、分割部ブロック150と共に使用される。SinglePlane_CLIPモジュール168において、新たな複数の重心座標値は、上の式7,8、及び9において提示されたようなalpha及びbetaの値を割り当てることにより評価される。入力トポロジは、1つ又は2つの新たな複数の頂点が生成されることが必要かどうかを判断してよい。図示されたSinglePlane_OUTモジュール170において、別のALUリソース(不図示)は、式6において提示されるような計算を実行することにより、最終的な位置又は他の所望の値(例えば、色、テクスチャ等)を評価すべく使用される。
【0032】
以下の表は、単一及びマルチ平面の場合の"must clip"の複数のクリッピングオペレーションのスループットの例を示す:
【表1】
表中:
S=最初のセットアップ及び最終的な出力、及び全ての他のブックキーピングオペレーションに費やされる一定のサイクルの数
N=クリッピングされる平面の数
M=それぞれの平面に対しクリッピングに費やされるサイクル
SP_Mは、単一平面クリッピングオペレーションの最悪の場合のステージのレイテンシである。 SP_Mレイテンシは、概してMよりかなり低くなり、実際にALUレイテンシに近くなるであろうことに留意されたい。
【0033】
実質的な性能向上は、本明細書に開示される複数の実施形態の実装を通じて達成され得る。ほとんどの作業負荷に対して、本明細書に開示されるような単一平面の実装が良好な性能向上を与え得る。さらに、ALUの半分を除去することさえも、ほとんど性能に影響を与えないことがあり得る。これは、より少ないトランジスタ又はゲートが設計に使用され得、従って、全体としてのチップの領域及びコストを節約するという点で、空間の利益が存在し得ることを意味する。従って、本明細書で説明されるような単一平面ハードウェアクリッピングについて個別のパイプラインを実装することにおいて、性能及び空間の利益の両方が存在し得る。
【0034】
図9は、実施形態によるデータ処理システム200のブロック図である。データ処理システム200は、1又は複数のプロセッサ202及び1又は複数のグラフィックスプロセッサ208を備え、シングルプロセッサデスクトップシステム、マルチプロセッサワークステーションシステム、又は非常に多数のプロセッサ202若しくは複数のプロセッサコア207を有するサーバシステムであってよい。本明細書で開示される複数の実施形態は、複数のグラフィックスプロセッサ208のうち1又は複数のものの一部であってよい。一実施形態において、データ処理システム200は、複数のモバイル、ハンドヘルド型、又は埋め込みデバイスにおいて使用するためのシステムオンアチップ集積回路(SOC)である。
【0035】
データ処理システム200の実施形態は、サーバベースのゲームプラットフォーム、ゲーム及びメディアコンソール、携帯ゲーム用コンソール、ハンドヘルド型ゲームコンソール、若しくはオンラインゲームコンソールを含むゲームコンソールを有することが出来、又はその中に組み込まれることが出来る。一実施形態において、データ処理システム200は、携帯電話、スマートフォン、タブレットコンピューティングデバイス、又は携帯インターネットデバイスである。データ処理システム200はまた、スマートウォッチウェアラブルデバイス、スマートアイウェアデバイス、拡張現実デバイス、又は仮想現実デバイスのようなウェアラブルデバイスを含むことが出来、結合することが出来、又はその中に統合されることが出来る。一実施形態において、データ処理システム200は、テレビ又は1若しくは複数のプロセッサ202と、1又は複数のグラフィックスプロセッサ208により生成されるグラフィカルインタフェースとを有するセットトップボックスデバイスである。
【0036】
1又は複数のプロセッサ202は、実行された場合、システム及びユーザソフトウェアのための複数のオペレーションを実行する複数の命令を処理するための1又は複数のプロセッサコア207をそれぞれ含む。一実施形態において、1又は複数のプロセッサコア207のそれぞれは、特定の命令セット209を処理するよう構成される。命令セット209は、複合命令セットコンピューティング(CISC)、縮小命令セットコンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にし得る。複数のプロセッサコア207は、他の命令セットのエミュレーションを容易にするための命令を含み得る、異なる命令セット209をそれぞれ処理してよい。プロセッサコア207はまた、デジタルシグナルプロセッサ(DSP)のような他の複数の処理デバイスを含み得る。
【0037】
一実施形態において、プロセッサ202は、キャッシュメモリ204を含む。アーキテクチャに応じて、プロセッサ202は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有することが出来る。一実施形態において、キャッシュメモリは、プロセッサ202の様々なコンポーネントの間で共有される。一実施形態において、プロセッサ202はまた、既知の複数のキャッシュコヒーレンシ技術を使用して複数のプロセッサコア207の間で共有され得る外部キャッシュ(例えば、レベル3(L3)キャッシュ又は最終レベルキャッシュ(LLC))(不図示)を使用する。加えて、レジスタファイル206は、異なるタイプのデータをストアするための異なるタイプの複数のレジスタ(例えば、複数の整数レジスタ、浮動小数点レジスタ、ステータスレジスタ、及び命令ポインタレジスタ)を含み得るプロセッサ202に含まれる。幾つかのレジスタは、複数の汎用レジスタであり得、その一方で他の複数のレジスタは、プロセッサ202の設計に特有のものであり得る。
【0038】
プロセッサ202は、プロセッサ202とシステム200における他の複数のコンポーネントとの間の複数のデータシグナルを送信すべくプロセッサバス210に結合する。システム200は、メモリコントローラハブ216及び入出力(I/O)コントローラハブ230を含む、例示的な「ハブ」システムアーキテクチャを使用する。メモリコントローラハブ216は、メモリデバイスとシステム200の他の複数のコンポーネントとの間の通信を容易にし、その一方で、I/Oコントローラハブ(ICH)230は、ローカルI/Oバスを介して複数のI/Oデバイスへ接続を提供する。
【0039】
メモリデバイス220は、ダイナミックランダムアクセスメモリ(DRAM)デバイス、スタティックランダムアクセスメモリ(SRAM)デバイス、フラッシュメモリデバイス、又は処理メモリとして機能するための適切な性能を有する幾つかの他のメモリデバイスであることが出来る。メモリ220は、プロセッサ202が処理を実行する場合に使用するための命令221及びデータ222をストアすることが出来る。メモリコントローラハブ216はまた、オプショナルな外部のグラフィックスプロセッサ212と結合し、これは複数のグラフィック及びメディアオペレーションを実行すべく複数のプロセッサ202における1又は複数のグラフィックスプロセッサ108と通信し得る。
【0040】
ICH230は、複数の周辺機器が高速度I/Oバスを介してメモリ220及びプロセッサ202と接続することを可能とする。複数のI/O周辺機器は、オーディオコントローラ246、ファームウェアインタフェース228、無線送受信機226(例えば、Wi−Fi(登録商標)、Bluetooth(登録商標))、データストレージデバイス224(例えば、ハードディスクドライブ、フラッシュメモリ等)、及び複数のレガシ(例えば、パーソナルシステム2(PS/2))デバイスをシステムに結合するためのレガシI/Oコントローラを含む。1又は複数のユニバーサルシリアルバス(USB)コントローラ242は、キーボード及びマウス244の組み合わせのような複数の入力デバイスを接続する。ネットワークコントローラ234はまた、ICH230へ結合し得る。一実施形態において、高性能ネットワークコントローラ(不図示)は、プロセッサバス210へ結合する。
【0041】
本明細書で説明されるグラフィックス及び/又はビデオ処理技術は、様々なハードウェアアーキテクチャに実装され得る。例えば、グラフィックス及び/又はビデオ機能は、チップセット内に集積され得る。代替的に、ディスクリートグラフィックス及び/又はビデオプロセッサが用いられてよい。さらに別の実施形態として、グラフィックス及び/又はビデオ機能は、マルチコアプロセッサを含む汎用プロセッサにより実装され得る。さらなる実施形態において、複数の機能は、家庭用電子デバイスにおいて実装されてよい。
【0042】
[追加の複数の留意点及び複数の例] 例1は、ポリゴンがクリッピングされるべきクリッピング平面の数を判断する段階と、単一クリッピング平面のみが存在する場合、ポリゴンを単一平面クリッピングに専用のパイプラインに投入する段階と、を備える、少なくとも1つのグラフィックスポリゴンを処理する方法を含み得る。
【0043】
例2は、ポリゴンの複数の頂点の複数の座標をロードする段階と、複数の重心座標値を複数の頂点に割り当てる段階とをさらに備える、例1に記載の方法を含み得る。
【0044】
例3は、単一クリッピング平面から複数の頂点のそれぞれへの距離を計算する段階をさらに備える、例2に記載の方法を含み得る。
【0045】
例4は、alpha及びbetaの距離比を計算する段階をさらに備え、alpha=Dout/(Din−Dout)であり、上式において、Doutは1つの頂点から前記クリッピング平面への距離であり、Dinは隣接する頂点から前記クリッピング平面への距離であり、beta=1−alphaである、例3に記載の方法を含み得る。
【0046】
例5は、隣接する複数の頂点の間の距離を正規化する段階をさらに備える、例4に記載の方法を含み得る。
【0047】
例6は、判断されるクリッピング平面及びポリゴンの交差部に位置する複数の点に新たな複数の重心座標値を割り当てる段階をさらに備える、例1−5に記載の方法を含み得る。
【0048】
例7は、判断されるクリッピング平面とポリゴンとの間の交差部に位置する複数の点に新たな複数の値を割り当てる段階をさらに備える、例1−5に記載の方法を含み得る。
【0049】
例8は、ポリゴンは、三角形である、例1−5に記載の方法を含み得る。
【0050】
例9は、1より多くのクリッピング平面が存在する場合、ポリゴンをマルチ平面クリッピング専用の第2のパイプラインに投入する段階をさらに備える、例1に記載の方法を含み得る。
【0051】
例10は、ポリゴンがクリッピングされるべき複数のクリッピング平面の数を判断するモジュールと、単一平面クリッピング専用のパイプラインと、を備える、少なくとも1つのグラフィックスポリゴンを処理する装置を含み得る。
【0052】
例11は、複数のポリゴンの複数の頂点の複数の座標をロードし、複数の重心座標値を複数の頂点の複数の座標に割り当てるためのモジュールをさらに備える、例10に記載の装置を含み得る。
【0053】
例12は、単一のクリッピング平面から複数の頂点のそれぞれへの距離を計算するためのモジュールをさらに備える、例11に記載の装置を含み得る。
【0054】
例13は、alpha及びbetaの距離比を計算するためのモジュールをさらに備え、alpha=Dout/(Din−Dout)であり、上式において、Doutは1つの頂点からクリッピング平面への距離であり、Dinは隣接する頂点からクリッピング平面への距離であり、beta=1−alphaである、例10−12に記載の装置を含み得る。
【0055】
例14は、隣接する複数の頂点の間の距離を正規化するためのモジュールをさらに備える、例10−12に記載の装置を含み得る。
【0056】
例15は、判断されるクリッピング平面及びポリゴンの交差部に位置する複数の点に新たな複数の重心座標値を割り当てるためのモジュールをさらに備える、例13に記載の装置を含み得る。
【0057】
例16は、判断されるクリッピング平面及びポリゴンの交差部に位置する複数の点に、新たな複数の値を割り当てるモジュールをさらに備える、例13に記載の装置を含み得る。
【0058】
例17は、ポリゴンが三角形である例11の装置を含み得る。
【0059】
例18は、1より多くのクリッピング平面が存在する複数の場合を処理する第2のパイプラインをさらに備える、例11に記載の装置を含み得る。
【0060】
例19は、複数のモジュールは、両方のパイプラインに利用可能である、例18に記載の装置を含み得る。
【0061】
例20は、グラフィックス処理ユニットと、ポリゴンがクリッピングされるべきクリッピング平面の数を判断するモジュールと、単一平面クリッピング専用の第1のパイプラインと、マルチ平面クリッピング専用の第2のパイプラインと、を備える、少なくとも1つのグラフィックスポリゴンを処理するためのシステムを含み得る。
【0062】
例21は、ポリゴンの複数の頂点の複数の座標をロードし、複数の頂点の複数の座標に複数の重心座標値を割り当てる、第1のパイプラインに関連付けられたモジュールをさらに備える、例20に記載のシステムを含み得る。
【0063】
例22は、単一クリッピング平面から複数の頂点のそれぞれへの距離を計算するための第1のパイプラインに関連付けられたモジュールをさらに備える、例21に記載のシステムを含み得る。
【0064】
例23は、alpha及びbetaの距離比を計算する前記第1のパイプラインに関連付けられたモジュールをさらに備え、alpha=Dout/(Din−Dout)であり、上式において、Doutは1つの頂点から前記クリッピング平面への距離であり、Dinは隣接する頂点から前記クリッピング平面への距離であり、beta=1−alphaである、例22に記載のシステムを含み得る。
【0065】
例24は、判断されるクリッピング平面及びポリゴンの交差部に位置する複数の点へ新たな複数の重心座標値を割り当てる、第1のパイプラインに関連付けられたモジュールをさらに備える例21−23に記載のシステムを含み得る。
【0066】
例25は、判断されるクリッピング平面及びポリゴンの交差部に位置する複数の点に新たな複数の値を割り当てる、第1のパイプラインに関連付けられたモジュールをさらに備える、例24に記載のシステムを含み得る。
【0067】
例26は、ポリゴンがクリッピングされるべき複数のクリッピング平面の数を判断する手段と、単一平面クリッピング専用のパイプラインとを備える、少なくとも1つのグラフィックスポリゴンを処理する装置を含み得る。
【0068】
例27は、ポリゴンの複数の頂点の複数の座標をロードし、複数の頂点の複数の座標に複数の重心座標値を割り当てる、手段をさらに備える、例26に記載の装置を含み得る。
【0069】
例28は、単一のクリッピング平面から複数の頂点のそれぞれへの距離を計算する手段をさらに備える、例27に記載の装置を含み得る。
【0070】
例29は、alpha及びbetaの距離比を計算する手段をさらに備え、alpha=Dout/(Din−Dout)であり、上式において、Doutは1つの頂点からクリッピング平面への距離であり、Dinは隣接する頂点からクリッピング平面への距離であり、beta=1−alphaである、例26−28に記載の装置を含み得る。
【0071】
例30は、判断されるクリッピング平面及びポリゴンの交差部に位置する複数の点に新たな複数の重心座標値を割り当てる手段をさらに備える、例26−28に記載の装置を含み得る。
【0072】
例31は、判断されるクリッピング平面及びポリゴンの交差部に位置する複数の点に、新たな複数の値を割り当てる手段をさらに備える、例26−28に記載の装置を含み得る。
【0073】
例32は、複数の値は、色値、テクスチャ、又は強度のうち1又は複数を反映している、例30に記載の装置を含み得る。
【0074】
例33は、ポリゴンは三角形である、例26に記載の装置を含み得る。
【0075】
例34は、1より多くのクリッピング平面が存在する複数のケースを処理すべく、第2のパイプラインをさらに備える、例26−28に記載の装置を含み得る。
【0076】
例35は、単一クリッピング平面の場合に使用される第1のパイプラインと、1より多くのクリッピング平面の場合に使用される第2のパイプラインと、を備え、単一クリッピング平面によりクリッピングされる複数のポリゴンは、第1のパイプラインへ送信され、全ての他の複数のポリゴンは、第2のパイプラインへ送信される、グラフィックスレンダリングにおける複数のポリゴンをクリッピングするための装置を含み得る。
【0077】
例36は、2つのパイプラインが複数の演算ロジックユニットを共有する、例35に記載の装置を含み得る。
【0078】
様々な実施形態又は複数の実施形態の複数の要素は、ハードウェア要素、ソフトウェア要素、又はそれらの両方の組み合わせを用いて実装され得る。複数のハードウェア要素の複数の例には、複数のプロセッサ、マイクロプロセッサ、回路、回路要素(例えば、複数のトランジスタ、抵抗、コンデンサ、誘電子、及びその他)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット、及びその他が含まれ得る。ソフトウェアの複数の例は、複数のソフトウェアコンポーネント、複数のプログラム、複数のアプリケーション、複数のコンピュータプログラム、複数のアプリケーションプログラム、複数のシステムプログラム、複数のマシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、複数のソフトウェアモジュール、複数のルーチン、複数のサブルーチン、複数の関数、複数の方法、複数のプロシージャ、複数のソフトウェアインタフェース、複数のアプリケーションプログラムインタフェース(API)、複数の命令セット、コンピューティングコード、コンピュータコード、複数のコードセグメント、複数のコンピュータコードセグメント、複数の単語、複数の値、複数の記号、またはそれらの任意の組み合わせを含み得る。実施形態が複数のハードウェア要素及び/又はソフトウェア要素を用いて実装されるかどうかの判断は、所望の演算レート、複数の電力レベル、複数の耐熱性、処理サイクル量、複数の入力データレート、複数の出力データレート、複数のメモリリソース、複数のデータバス速度、及び他の設計又は性能制約のような任意の数の要因に従って変動し得る。
【0079】
複数の実施形態は、全てのタイプの半導体集積回路(「IC」)チップと共に使用するのに適用可能である。これらのICチップの例としては、限定されないが、複数のプロセッサ、コントローラ、チップセットコンポーネント、プログラマブルロジックアレイ(PLA)、メモリチップ、ネットワークチップ、及びその他のものを含む。加えて、複数の図面の幾つかにおいて、複数のシグナル伝導ラインが複数のラインで表される。幾つかは、より多くの成分シグナルパスを示すべく異なってよく、成分シグナルパスの数を示すべく番号ラベルを有してよく、及び/又は主な情報のフロー方向を示すべく1又は複数の端部に矢印を有してよい。しかしながら、これは、限定的に解釈されるべきではない。むしろ、そのような追加された詳細は、回路のより容易な理解を促すべく、1又は複数の例示的な実施形態と関連して用いられてよい。表される任意の複数のシグナルラインは、追加的な情報を有するか否かに関わらず、複数の方向に移動し得、任意の適切なタイプのシグナルスキームで、例えば、差動対で実装されるデジタル若しくはアナログライン、光ファイバライン、及び/又はシングルエンドラインで実装され得る1又は複数のシグナルを実際に備えてよい。
【0080】
複数の例示的な寸法/モデル/値/範囲が与えられ得るが、複数の実施形態は同一のものに限定されない。製造技術(例えば、フォトリソグラフィ)が時間の経過と共に成熟するにつれて、より小さいサイズのデバイスが製造され得ることが予期される。加えて、ICチップ及び他の複数のコンポーネントへの周知の電源/接地接続は、説明及び議論の簡潔さのために、そして、複数の実施形態の特定の側面を曖昧にしないように図面内に示されたり、示されなかったりし得る。さらに、複数の配置は、複数の実施形態を不明瞭にすることを避けるべく、また、そのようなブロック図の複数の配置の実装に関する詳細が、実施形態が実装されるプラットフォームに大いに依存する、即ち、そのような詳細が十分に当業者の理解の範囲内であるべきであるという事実に鑑みて、複数の配置はブロック図の形式で示され得る。例示的な複数の実施形態を説明すべく、複数の具体的な詳細(例えば、回路)が明記されている場合、複数の実施形態がこれらの具体的な詳細を用いなくとも、あるいはそれらの変形例を用いて実施され得ることが当業者には明らかであろう。従って、説明は、限定的なものに代えて例示的なものとしてみなされるべきである。
【0081】
具体的に別途明記されない限り、「処理」、「コンピューティング」、「計算」、「判断」、又は同様のもののような用語は、コンピューティングシステムの複数のレジスタ及び/又は複数のメモリ内の物理(例えば電子)量として表されるデータを、コンピューティングシステムの複数のメモリ、複数のレジスタ又は他のそのような情報ストレージデバイス、送信デバイス、若しくは表示デバイス内の物理量として同様に表される他のデータへと操作、並びに/又は変換する、コンピュータ若しくはコンピューティングシステム、又は類似の電子コンピューティングデバイスの動作及び/又は処理を指すことが理解され得る。複数の実施形態は、この文脈に限定されない。
【0082】
「結合される」という用語は、本明細書において、対象の複数のコンポーネント間の直接的又は間接的な任意のタイプの関係を言及するのにも用いられてよく、電気的、機械的、流体的、光学的、電磁気的、電気機械的、又は他の複数の接続に適用されてよい。加えて、「第1の」、「第2の」等の用語は、説明を容易にすることのみを目的として本明細書で用いられ得、別途示されない限り、特定の時間的、又は時系列的な意義を有するものではない。
【0083】
当業者は、上記の説明から、複数の実施形態の広範な技術が、様々な形式で実装され得ることを理解されよう。従って、複数の実施形態は、それらの特定の例と関連して説明されているが、その一方で、他の複数の修正形態が図面、明細書、及び以下の特許請求の範囲の検討に基づいて当業者に明らかになるので、複数の実施形態の真の範囲はそのように限定されるべきではない。