JP4799588B2 - 常駐ミップマップデータを用いた非常駐ミップマップデータの外挿 - Google Patents

常駐ミップマップデータを用いた非常駐ミップマップデータの外挿 Download PDF

Info

Publication number
JP4799588B2
JP4799588B2 JP2008149625A JP2008149625A JP4799588B2 JP 4799588 B2 JP4799588 B2 JP 4799588B2 JP 2008149625 A JP2008149625 A JP 2008149625A JP 2008149625 A JP2008149625 A JP 2008149625A JP 4799588 B2 JP4799588 B2 JP 4799588B2
Authority
JP
Japan
Prior art keywords
mipmap
extrapolation
resident
detail level
texture
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
JP2008149625A
Other languages
English (en)
Other versions
JP2008305408A (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 JP2008305408A publication Critical patent/JP2008305408A/ja
Application granted granted Critical
Publication of JP4799588B2 publication Critical patent/JP4799588B2/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
    • G06T7/00Image analysis
    • G06T7/40Analysis of texture
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail

Landscapes

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

Description

発明の分野
[0001]本発明は、一般に、テクスチャマッピングに関し、より具体的には、使用可能でないミップマップの代わりに外挿を用いてテクスチャマップ値を計算することに関する。
関連技術の説明
[0002]仮想メモリの使用がますます一般的になってきたため、グラフィック処理中にアクセス可能なテクスチャマップの数が、従来の方法でテクスチャマップが格納される物理メモリ(ローカルメモリ又はシステムメモリ)の量によって制限されることはなくなった。テクスチャデータは、ディスクドライブ、CDドライブ、さらにはリモートサーバなど、アクセス待ち時間が物理メモリより長い、他のストレージリソースに格納されることが可能である。そのテクスチャデータは、処理中に、必要に応じて取り出される。しかしながら、テクスチャデータを物理メモリから取り出す場合と異なり、テクスチャデータが他のストレージリソースから取り出される時間の間は、画質が損なわれる。
[0003]テクスチャの高解像度ミップマップを他のストレージリソースに格納することは、それらのミップマップが大きいことから、特に有利である。高解像度ミップマップが他のストレージリソースから取り出される間に、テクスチャの低解像度ミップマップを物理メモリに格納して、画像生成に使用することが可能である。その結果、テクスチャマップデータは、ぼやけて表示された後、高解像度ミップマップが物理メモリ内で使用可能になった時点で、鮮明に表示される。
[0004]したがって、当該技術分野において必要とされるのは、待ち時間の長いストレージリソースから高解像度ミップマップが取り出される間に使用される低解像度テクスチャマップデータの見栄えを良くするシステム及び方法である。さらに、待ち時間の長いストレージリソースから高解像度ミップマップが取り出された後、外挿フィルタリングの使用から内挿フィルタリングの使用への移行が円滑に行われて、フィルタリングされたテクセル値が生成されることが望ましい。
発明の概要
[0005]待ち時間の長いストレージリソースから高解像度ミップマップを取り出して、その高解像度ミップマップを非常駐ミップマップから常駐ミップマップに変換する間に、物理メモリに格納されている低解像度ミップマップを外挿して外挿テクスチャ値を生成するように、マルチスレッドグラフィックスプロセッサを構成する。外挿テクスチャ値は、高解像度ミップマップレベルのテクスチャデータの代わりに低解像度ミップマップレベルのテクスチャデータを使用した場合に比べて、より鮮明に見える、改善された画像を提供する。非常駐詳細レベルミップマップが常駐であったとすればフィルタリングにより生成されるであろう、高められたコントラスト及び詳細を近似するために、2つの常駐詳細レベルミップマップを外挿するミップマップフィルタを用いて、フィルタリングされたテクスチャ値を生成する。
[0006]外挿拡大又は縮小テクスチャフィルタリングをいつ使用するかを決定するために、外挿しきい値LODを用いる。外挿しきい値LODを用いることにより、非常駐ミップマップを常駐ミップマップに変換する際に、外挿フィルタリングの使用から内挿フィルタリングの使用へ円滑に移行することが可能である。理想ミップマップのLODと外挿しきい値LOD(最高解像度の常駐ミップマップのLOD以上の値)との差であるdeltaLOD(詳細レベル)を計算する。(アクセス待ち時間が短い)物理メモリには常駐ミップマップを格納し、対照的に、アクセス待ち時間が長いストレージリソースには非常駐ミップマップを格納する。deltaLODは、高解像度ミップマップテクスチャデータの代わりに使用される外挿テクスチャ値を生成するために用いられる外挿重み値を決定するために用いられる。
[0007]非常駐ミップマップレベルのテクスチャマップを常駐ミップマップレベルのテクスチャマップに変換する、本発明の方法の各種実施形態は、画像を表示向けにレンダリングすることに用いるために非常駐ミップマップレベルを常駐ミップマップレベルに変換する要求を受け取るステップと、非常駐ミップマップレベルを非常駐メモリストレージから常駐メモリストレージにコピーすることを開始するステップと、非常駐ミップマップレベルをコピーすることが完了した時点で、画像の、フィルタリングされたテクセル値の生成に使用される外挿しきい値詳細レベル(LOD)値を更新するステップとを含む。
[0008]本発明の上述の特徴の詳細な理解を可能にするために、上記で簡単にまとめた本発明の、より具体的な説明を、複数の実施形態を参照して行う。それらのいくつかは、添付図面に図示されている。しかしながら、添付図面は、本発明の典型的な実施形態のみを例示したものであり、したがって、本発明の範囲を限定するものと見なされてはならないことに留意されたい。これは、本発明が、他の同等に効果的な実施形態も含みうるからである。
詳細な説明
[0019]以下の説明では、本発明がより十分に理解されるように、多数の具体的詳細を示す。しかしながら、それらの具体的詳細が1つ以上なくても本発明が実施可能であることは、当業者にとっては、自明であろう。他の事例では、本発明が不明瞭になるのを防ぐために、よく知られた特徴については説明しない。
[0020]図1は、本発明の1つ又は複数の態様による、LODを変化させる、テクスチャ画像のミップマップの概念図を示す。各ミップマップは、テクスチャ画像に対して、特定の解像度又は詳細レベル(LOD)に対応する事前フィルタリングが施されたものであり、LOD0ミップマップ110は、最高解像度を有し、LODNミップマップ190は、最低解像度を有する(すなわち、LODの添え字が大きくなるにつれて、対応するミップレベルの解像度が低くなっていく)。仮想メモリマッピングを用いて、物理メモリで使用可能なアドレス空間より大きなアドレス空間を表した場合は、アドレス指定可能なテクスチャデータのすべてが物理メモリに常駐しているわけではない。図1に示されるように、LOD0ミップマップ110、LOD1ミップマップ120、及びLOD2ミップマップ130は、物理メモリには格納されず、したがって、非常駐ミップマップ100である。LOD3ミップマップ150、LOD4ミップマップ160、及びLODNミップマップ190を含む常駐ミップマップ140は、物理メモリに格納され、したがって、これらのミップマップに格納されたテクスチャデータは、短い待ち時間でアクセスされることが可能である。
[0021]ソフトウェアアプリケーションが、要求されるすべてのミップマップがメモリに常駐している詳細レベルのテクスチャフィルタリングを要求すると、テクスチャ装置は、要求されたミップマップからテクセルをフェッチし、その常駐ミップマップレベルからフェッチされたテクセルとテクセルとの間で内挿された値を生成するフィルタを適用する(これは、当該技術分野の最新段階において一般的である)。ソフトウェアアプリケーションが、物理メモリからページアウトされたミップマップレベル(すなわち、非常駐ミップマップ)にアクセスしようとすると、本発明の実施形態は、それに最も近い2つの常駐ミップマップからテクセルをフェッチし、その常駐ミップマップレベルからフェッチされたテクセルからの外挿値を生成するフィルタを適用する。外挿テクスチャ値は、非常駐ミップマップが物理メモリにページインされて常駐ミップマップになるまで、画像を生成するために計算及び使用される。
[0022]例えば、テクスチャマッピングのために計算されたLODがLOD2であって、LOD2ミップマップ130が非常駐である場合は、図2Aと併せて説明されるように、常駐ミップマップであるLOD3ミップマップ150及びLOD4ミップマップ160を用いて、外挿テクスチャ値が計算される。非常駐LOD(LOD2など)に対する外挿テクスチャ値は、外挿縮小フィルタを用いて計算される。縮小フィルタは、ピクセルに対するテクセルの比率が1未満の場合に使用される。LOD2が常駐LODミップマップに変換された後、外挿フィルタから従来の内挿フィルタへ1フレーム以内に切り替えるのではなく、フィルタ重みを調節することにより、複数のフレームにわたってLOD2テクセルを段階的に導入して、円滑な視覚的移行が行われるようにすることが可能である。計算されたLODがLOD0未満の場合(すなわち、LOD0より解像度が高い場合)、外挿テクスチャ値は、外挿拡大フィルタを用いて計算される。拡大フィルタは、ピクセルに対するテクセルの比率が1を超える場合に使用される。
[0023]従来のシステムでは、計算されたLODがゼロ未満の場合(すなわち、所望のテクスチャ解像度がLOD0より高い場合)は、テクスチャルックアップの鮮明度を上げるために「アンシャープマスキング」又は「シャーペンテクスチャ」として当業者に知られている手法が用いられ、これは、LOD0とLOD1との間を外挿して、LOD0から低周波成分の寄与を引き去ることによってなされる。本発明はさらに、ゼロ未満である計算されたLODに対するテクセル値を生成するために外挿(拡大外挿)を用いるが、新しい外挿フィルタのタイプ、例えば、外挿ミップマップリニア(extrapolated mipmapped linear)及び外挿ミップマップ最近傍フィルタ(extrapolated mipmapped nearest-neighbor))を用いる。さらに、LOD0未満のLOD値に対してだけでなく、任意の非常駐テクスチャに対してテクスチャ値を計算するために、縮小外挿が行われる。
[0024]図2Aは、本発明の1つ又は複数の態様による、非常駐ミップマップレベル(非常駐ミップマップ100など)に対して外挿テクスチャ値を生成する方法ステップのフロー図である。ステップ200で、本方法は、当業者に知られている手法を用いて、理想LODを計算する。理想LODの整数部分は、適用されるテクスチャの解像度に最も良く適合するミップマップレベルに対応する。ステップ210で、本方法は、理想LODミップマップが非常駐ミップマップかどうかを決定し、非常駐でない場合、理想LODミップマップは常駐であり、ステップ225で、微粒ミップマップ及び粗粒ミップマップからテクセルを読み出す。ステップ210の詳細については、図2Bと併せて説明する。
[0025]従来、微粒ミップマップは、理想LODミップマップの整数部分に対応し、粗粒ミップマップは、その整数部分+1のLODミップマップに対応する。フィルタタイプが外挿ミップマップリニアの場合、本方法は、ステップ228で、微粒ミップマップ及び粗粒ミップマップについてバイリニアにフィルタリングされたテクセル値を計算し、次に、理想LODの小数部分を用いて、バイリニアにフィルタリングされたテクセル値の間を内挿して、フィルタリングされたテクセル値を生成する。フィルタタイプが外挿ミップマップ最近傍の場合は、最も近いテクセル値を微粒ミップマップ及び粗粒ミップマップから選択して、2点サンプリングされたテクセル値を生成する。次に、理想LODの小数部分を用いて、2点サンプリングされたテクセル値をバイリニアに内挿して、フィルタリングされたテクセル値を生成する。ステップ225及び228は、従来のテクスチャマップフィルタリング手法を用いて実施される。
[0026]本方法が、ステップ210で、理想LODミップマップが非常駐ミップマップであると決定した場合、本方法は、ステップ230で、テクスチャのための1つ又は複数のミップマップを物理メモリにページインしなければならないこと、並びに、画像生成に用いるために、それらのミップマップを非常駐ミップマップから常駐ミップマップに変換しなければならないことを、デバイスドライバに知らせる。ステップ210で、本方法は、理想LODがゼロ未満であってLOD0ミップマップが常駐でない場合(これは、ピクセルに対するテクセルの比率が1を超えていて、外挿拡大フィルタの使用が必要であることを示す)に、理想LODミップマップが非常駐であると決定することが可能である。理想LODがゼロを超えていて、理想LODから最高常駐ミップマップを差し引いたものがゼロ未満である場合(これは、ピクセルに対するテクセルの比率が1未満であることを示す)には、外挿縮小フィルタを使用しなければならない。理想LODがLOD0に等しい場合は、外挿拡大フィルタを用いることが可能である。
[0027]ステップ235で、本方法は、理想LODと外挿しきい値LOD(最高解像度の常駐ミップマップのLOD以上の値)との差であるdeltaLODを計算する(すなわち、deltaLOD=理想LOD−外挿しきい値LOD)。例えば、図1を参照すると、理想LODが(LOD1ミップマップ120に対応する)LOD1の場合、deltaLODは−2である。これは、外挿しきい値LODが、(LOD3ミップマップ150に対応する)LOD3であるためである。なお、理想LOD及び外挿しきい値LODが小数成分を有する可能性があるため、deltaLODも小数成分を有する可能性がある。
[0028]ステップ240で、本方法は、deltaLODを用いて外挿重みを決定する。deltaLOD値に対応する外挿重み値がテーブルに格納される。本発明のいくつかの実施形態では、このテーブルは、外挿重み値の決定に用いる関数を指定するようにプログラムされることが可能である。本発明のいくつかの実施形態は、最大64個の(LOD,重み)ペアが、LODが減っていく順にテーブルにロードされることを可能にする。デフォルトでは、このテーブルは、6ペア{(0,0),(−1,0.25),(−2,0.5),(−4,1.125),(−8,2.0),(−16,3.0)}を収容する。
[0029]テーブル(0)の最後のエントリである−16に満たないdeltaLODが与えられた場合、外挿重みは、テーブルの最後のエントリの重み(3.0)、すなわち、3になる。deltaLODがゼロには満たないものの、アプリケーションによって指定されたテーブルの第1のエントリを超えている場合は、そのテーブルの第1のエントリの重みが外挿重みになる。テーブル内の2つのLOD値、すなわち、低い値(LOD=−4,重み=1.125)と高い値(LOD=−8,重み=2.0)との間に入るdeltaLOD値−5が与えられた場合、外挿重みは、次のようにリニア内挿される。
weightlow (LODhigh−deltaLOD)/(LODhigh−LODlow)+
weighthigh (deltaLOD−LODlow)/(LODhigh−LODlow) (式1)
この外挿重みをステップ250で用いて、粗粒LODミップマップ及び微粒LODミップマップから読み出されたテクセルから、フィルタリングされたテクセルを生成する。
[0030]指定されたフィルタタイプが外挿ミップマップリニアである場合、本方法は、ステップ245で、粗粒LODミップマップから4個のテクセルを読み出し、微粒LODミップマップから4個のテクセルを読み出す。指定されたフィルタタイプが外挿ミップマップ最近傍である場合に、本方法は、微粒LODミップマップから1個のテクセルを読み出し、粗粒LODミップマップから1個のテクセルを読み出す。微粒LODミップマップは、その詳細レベルが、切り詰められた外挿しきい値LOD(外挿しきい値LODの整数部分)に等しいミップマップであり、粗粒LODミップマップは、LODが微粒LOD+1に等しい低解像度常駐ミップマップである。
[0031]フィルタタイプが外挿ミップマップリニアである場合、本方法は、ステップ250で、テクスチャマップ座標の小数部分を用いて、粗粒LODミップマップ及び微粒LODミップマップから読み出されたテクセルをバイリニアに内挿して、テクセル値Tfine及びTcoarseを生成する。フィルタタイプが外挿ミップマップ最近傍である場合、本方法は、微粒LODミップマップから読み出されたテクセルをTfineとして及び粗粒LODミップマップから読み出されたテクセルをTcoarseとして提供する。次に、ステップ250で、本方法は、Tfine、Tcoarseを用いて外挿テクセル値を計算し、次式を用いて外挿重みWを計算する。
fine*(1.0+W)−Tcoarse*W (式2)
外挿テクセル値を、追加の外挿テクセル値と組み合わせて、異方性テクスチャマッピング又は他のフィルタリングされたテクスチャ関数のためのフィルタリングされたテクセル値を生成することが可能である。次に、外挿テクセル値を用いて、保存及び/又は表示されるレンダリング画像を生成する。
[0032]図2Bは、本発明の1つ又は複数の態様による、理想LODに対応するミップマップが常駐かどうかを決定する、図2Aの方法ステップ210のフロー図である。本方法は、ステップ212で、理想LODがゼロ未満(すなわち、LOD0より低い)かどうかを決定し、ゼロ未満であれば、ステップ214で、LOD0ミップマップが常駐ミップマップかどうかを決定する。ステップ214で、本方法が、LOD0ミップマップが常駐であることを決定した場合は、ステップ216で拡大テクスチャフィルタ用に指定されたフィルタタイプが、ステップ228で用いられる。ステップ214で、本方法が、LOD0ミップマップが常駐でないことを決定した場合は、ステップ217で、外挿拡大テクスチャフィルタ用に指定されたフィルタタイプがステップ250で用いられる。
[0033]ステップ212で本方法が、理想LODがゼロ未満でないことを決定した場合、本方法は、ステップ218で、理想LODが外挿しきい値LOD以上かどうかを決定する。ステップ218で本方法が、理想LODミップマップが外挿しきい値LOD以上であると決定した場合は、ステップ220で、縮小テクスチャフィルタ用に指定されたフィルタタイプが使用されて、ステップ228で、内挿により、フィルタリングされたテクセル値が計算される。そうでない場合は、ステップ221で、外挿縮小テクスチャフィルタ用に指定されたフィルタタイプが使用されて、ステップ250で、外挿により、フィルタリングされたテクセル値が計算される。
[0034]図2Cは、本発明の1つ又は複数の態様による、常駐ミップマップからテクセル値を外挿しなければならないかどうかを決定する方法ステップのフロー図である。述語又は条件コードを用いて、グラフィックスデータの処理に用いられるシェーダプログラムを構成することにより、ピクセルシェーダプログラムにおける後続の分岐動作を決定することが可能である。命令によって指定されるシェーダプログラム述部又は条件コードが第1の値を有する場合に1つのパスが実行され、そのシェーダプログラム述部又は条件コードが別の値を有する場合に別のパスが実行される、条件付き実行パスを含めるために、述語付き命令又は条件付き命令を用いることが可能である。ステップ200、210、及び230は、図2Aと併せて説明されたように実行される。ステップ265で、本方法は、理想LODに対応するミップマップが非常駐ミップマップであることを示すように、シェーダプログラム条件値(述語又は条件コード)を設定する。本発明の他の実施形態では、本方法はさらに、deltaLODをシェーダプログラム条件値として計算し、保存する。ステップ270で、シェーダプログラム命令を実行し、内挿テクセル値又は外挿テクセル値を計算する。具体的には、デフォルトの条件値が用いられた場合に、シェーダプログラムは、従来の内挿を実施する第1の命令セットを実行して、内挿テクセル値を生成する。シェーダプログラム条件値が、理想ミップマップが非常駐ミップマップであることを示した場合は、別の命令セットを実行して、外挿テクセル値を生成する。
システムの概要
[0035]図3は、本発明の1つ又は複数の態様を実装するために構成されたコンピュータシステムを示すブロック図である。図3は、本発明の一実施形態によるコンピュータシステム300のブロック図である。コンピュータシステム300は、メモリブリッジ305を含むバスパスを介して通信する中央処理装置(CPU)302及びシステムメモリ304を含む。本発明のいくつかの実施形態では、システムメモリ304に格納されるテクスチャデータ(常駐ミップマップ325など)が、確定的待ち時間を経て並列処理サブシステム312に供給されることが可能な点で、「常駐」と見なされる。本発明の他の実施形態では、システムメモリ304に格納されるテクスチャデータが、妥当な待ち時間を経て並列処理サブシステム312に供給されることが可能でない点で、「非常駐」と見なされる。インタラクティブなフレームレートをサポートするためには、待ち時間が妥当でなければならない。
[0036]システムメモリ304はさらに、データ(ミップマップなど)のロケーションを指定する命令ストリームとプログラム命令とを並列処理サブシステム312に供給するように構成されたデバイスドライバ322を含む。プログラム命令及びデータは、ソフトウェアアプリケーションによって生成され、システムメモリ304、又はシステム300の他のデバイスの中のメモリに格納されることが可能である。デバイスドライバ322は、CPU 302によって実行され、並列処理サブシステム312によって実行される命令を、並列処理サブシステム312の固有の機能に基づいて変換する。それらの命令は、アプリケーションプログラミングインターフェース(API)によって指定されることが可能であり、このAPIは、Direct3DやOpenGLのような従来のグラフィックスAPIであってよい。
[0037]メモリブリッジ305は、例えば、Northbridgeチップであってよく、バス又は他の通信パス306(例えば、HyperTransportリンク)を介して、I/O(入出力)ブリッジ307に接続される。I/Oブリッジ307は、例えば、Southbridgeチップであってよく、1つ又は複数のユーザ入力デバイス308(例えば、キーボード、マウス)からユーザ入力を受け取り、その入力を、パス306及びメモリブリッジ305を介してCPU 302に転送する。並列処理サブシステム312は、バス又は他の通信パス313(例えば、PCI Express、Accelerated Graphics Port、又はHyperTransportリンク)を介してメモリブリッジ305と結合され、一実施形態では、並列処理サブシステム312は、ピクセルをディスプレイデバイス310(例えば、従来のCRT又はLCD方式のモニタ)に配信するグラフィックスサブシステムである。I/Oブリッジ307には、システムディスク314も接続されている。一部のミップマップ(特に、より多くのストレージ空間を必要とする高解像度レベル)が、ディスク314、又はリモートサーバ上のディスク、CDドライブ、DVDドライブなどの、待ち時間の長いストレージに格納される。これらのミップマップ(非常駐ミップマップ335など)は、必要に応じて、待ち時間の短いメモリストレージにロードされて、インタラクティブレンダリング中に並列処理サブシステム312によってアクセスされることが可能な常駐ミップマップになる。
[0038]スイッチ316が、I/Oブリッジ307と、他のコンポーネント(ネットワークアダプタ318や各種アドインカード320及び321など)との間の接続を与える。他のコンポーネント(明示的には図示されていないが、USB又は他のポート接続、CDドライブ、DVDドライブ、フィルム記録デバイス、その他を含む)を、I/Oブリッジ307に接続することも可能である。図3の各種コンポーネントを相互接続する通信パスは、任意の好適なプロトコル(PCI (Peripheral Component Interconnect)、PCI Express(PCI−E)、AGP(Accelerated Graphics Port)、HyperTransport、又は他の任意のバス又はポイントツーポイント通信プロトコル)を用いて実装されることが可能であり、当該技術分野において知られているように、異なるデバイス同士の接続には、異なるプロトコルを用いることが可能である。
[0039]並列処理サブシステム312の一実施形態を図4に示す。並列処理サブシステム312は、1つ又は複数の並列処理装置(PPU)402を含み、各PPUは、ローカル並列処理(PP)メモリ404と結合されている。一般に、並列処理サブシステムは、U個のPPUを含む(U≧1)(ここでは、類似オブジェクトの複数のインスタンスを、オブジェクトを識別する参照符号と、必要に応じて、インスタンスを識別する括弧付き番号とで表す)。PPU 402及びPPメモリ404は、1つ又は複数の集積回路素子(プログラマブルプロセッサ、特定用途向け集積回路(ASIC)、メモリ素子など)を用いて実装されることが可能である。
[0040]PPU 402(0)について詳細に示されるように、各PPU 402は、通信パス313を介してシステム300の他の部分と通信するホストインターフェース406を含み、通信パス313はメモリブリッジ305に接続される(又は一代替実施形態では、CPU 302に直接接続される)。一実施形態では、通信パス313は、PCI−Eリンクであり、その場合は、当該技術分野において知られているように、各PPU 402に専用レーンが割り当てられる。他の通信パスを用いることも可能である。ホストインターフェース406は、通信パス313に送信するパケット(又は他の信号)を生成し、また、通信パス313からすべての着信パケット(又は他の信号)を受け取って、PPU 402の適切なコンポーネントに転送する。例えば、タスク処理に関連するコマンドは、フロントエンド装置412に転送されることが可能であり、メモリ操作(例えば、PPメモリ404の読み書き)に関連するコマンドは、メモリインターフェース414に転送されることが可能である。ホストインターフェース406、フロントエンド装置412、及びメモリインターフェース414は、おおむね従来型の設計であってよいので、詳細な説明は、本発明にとって重要でないため、省略する。
[0041]各PPU 402は、有利なことに、高度に並列である処理装置を実装する。PPU 402(0)について詳細に示されるように、PPU 402は、C個のコア408を含む(C≧1)。各処理コア408は、多数(例えば、数十又は数百)のスレッドを同時に実行することが可能であり、この場合、各スレッドはプログラムのインスタンスである。マルチスレッド処理コア408の一実施形態を以下に示す。コア408は、実行すべき処理タスクを、作業配分装置410を介して受け取り、作業配分装置410は、処理タスクを定義するコマンドをフロントエンド装置412から受け取る。作業配分装置410は、作業を配分する様々なアルゴリズムを実装することが可能である。例えば、一実施形態では、作業配分装置410は、各コア408から、そのコアが、新しい処理タスクを受け入れるのに十分なリソースを有するかどうかを示す「実行可能」信号を受け取る。新しい処理タスクが到着すると、作業配分装置410は、そのタスクを、実行可能信号を表明しているコア408に割り当てる。実行可能信号をアサートしているコア408がない場合、作業配分装置410は、実行可能信号がコア408によって表明されるまで、その新しい処理タスクを保留する。当業者であれば、他のアルゴリズムも使用可能であること、並びに、作業配分装置410が着信処理タスクを配分する具体的な方法が本発明にとっては重要でないことを理解されよう。
[0042]コア408は、様々な外部メモリ素子の読み書きを行うために、メモリインターフェース414と通信する。一実施形態では、メモリインターフェース414は、ローカルPPメモリ404との通信、並びにホストインターフェース406との接続に適合されたインターフェースを含み、これによって、コアが、システムメモリ304又は他の、PPU 402に対してローカルでないメモリ(システムディスク314を含む)と通信することを可能にする。メモリインターフェース414は、おおむね従来型の設計であってよいので、詳細な説明は省略する。
[0043]コア408は、様々なアプリケーションに関連する処理タスクを実行するようにプログラムされることが可能であり、そのようなアプリケーションとして、リニア及び非リニアデータ変換、ビデオ及び/又はオーディオデータのフィルタリング、モデリング操作(例えば、物理法則を適用して、オブジェクトの位置、速度、及び他の属性を決定する)、画像レンダリング操作(例えば、頂点シェーダ、ジオメトリシェーダ、及び/又はピクセルシェーダなどのプログラム)などがあり、これらに限定されない。PPU 402は、常駐ミップマップ425のようなデータをシステムメモリ304及び/又はローカルPPメモリ404から内部(オンチップ)メモリに転送し、そのデータを処理し、結果データをシステムメモリ304及び/又はローカルPPメモリ404に書き戻すことが可能であり、書き戻されたデータは、他のシステムコンポーネント(例えば、CPU 302又は別の並列処理サブシステム312など)によってアクセスされることが可能である。
[0044]図3を再度参照すると、いくつかの実施形態では、並列処理サブシステム312内のいくつか又はすべてのPPU 402が、メモリブリッジ305及びバス313を介してCPU 302及び/又はシステムメモリ304から供給されたグラフィックスデータからピクセルデータを生成すること、(例えば、従来型のフレームバッファ及びミップマップを含むグラフィックスメモリとして使用可能な)ローカルPPメモリ404と対話して、ピクセルデータを保存及び更新すること、ピクセルデータをディスプレイデバイス310に配信することなどに関連する各種タスクを実行するように構成されることが可能な、レンダリングパイプラインを有するグラフィックスプロセッサである。いくつかの実施形態では、PPサブシステム312は、グラフィックスプロセッサとして動作する1つ又は複数のPPU 402と、汎用計算に用いられる1つ又は複数の他のPPU 402とを含むことが可能である。これらのPPUは、同一であっても異なっていてもよく、各PPUは、それぞれの専用のPPメモリデバイスを持っていてもよく、専用PPメモリデバイスを持っていなくてもよい。
[0045]稼働中は、CPU 302がシステム300のマスタプロセッサであり、他のシステムコンポーネントの動作を制御及び調整する。具体的には、CPU 302が、PPU 402の動作を制御するコマンドを発行する。いくつかの実施形態では、CPU 302が、各PPU 402に対するコマンドのストリームを(図3には明示的に図示されていない)プッシュバッファに書き込む。プッシュバッファは、システムメモリ304、PPメモリ404、又は別の、CPU 302及びPPU 402の両方からのアクセスが可能なストレージロケーションに配置されることが可能である。PPU 402は、CPU 302の動作とは非同期に、プッシュバッファからコマンドストリームを読み出し、コマンドを実行する。
[0046]ここで示されたシステムは例示的であること、並びに変形形態及び修正形態が可能であることを理解されたい。ブリッジの数及び配列を含む接続トポロジは、必要に応じて修正されることが可能である。例えば、いくつかの実施形態では、システムメモリ304は、ブリッジを介してではなく、直接CPU302に接続され、他のデバイスは、メモリブリッジ305及びCPU 302を介してシステムメモリ304と通信する。他の代替トポロジでは、並列処理サブシステム312が、メモリブリッジ305ではなく、I/Oブリッジ307に接続されるか、直接CPU 302に接続される。さらに別の実施形態では、I/Oブリッジ307とメモリブリッジ305とを、シングルチップに一体化することが可能である。ここで示された具体的なコンポーネントはオプションであって、例えば、任意の数のアドインカード又はペリフェラルデバイスをサポートすることが可能である。いくつかの実施形態では、スイッチ316がなく、ネットワークアダプタ318及びアドインカード320、321がI/Oブリッジ307に直接接続される。
[0047]PPU 402とシステム300の他の部分との接続も変更可能である。いくつかの実施形態では、PPシステム312は、システム300の拡張スロットに挿入可能なアドインカードとして実装される。他の実施形態では、PPU 402は、シングルチップ上で、バスブリッジ(メモリブリッジ305やI/Oブリッジ307など)と一体化されることが可能である。さらに別の実施形態では、PPU 402のいくつか又はすべての要素が、シングルチップ上でCPU 302と一体化されることが可能である。
[0048]PPUは、ローカルメモリがまったくない場合も含めて、任意の量のローカルPPメモリを与えられることが可能であり、ローカルメモリとシステムメモリとを任意の組み合わせで使用することが可能である。例えば、PPU 402は、ユニファイドメモリアーキテクチャ(UMA)実施形態におけるグラフィックスプロセッサであることが可能であり、そのような実施形態では、専用グラフィックス(PP)メモリがほとんど又はまったく与えられず、PPU 402は、常駐ミップマップ325を格納するために、システムメモリを排他的若しくはほぼ排他的に使用する。UMA実施形態では、PPUは、ブリッジチップ又はプロセッサチップと一体化されるか、PPUとシステムメモリとを、例えば、ブリッジチップを介して接続する高速リンク(例えば、PCI−E)を有するディスクリートチップとして与えられることが可能である。
[0049]前述のように、並列処理サブシステムには、任意の数のPPUを含めることが可能である。例えば、単一アドインカード上に複数のPPUを設けたり、複数のアドインカードを通信パス313に接続したり、PPUのうちの1つ又は複数をブリッジチップに一体化したりすることが可能である。マルチPPUシステム内のPPUは、同一であっても、互いに異なっていてもよい。例えば、異なるPPUは、コアの数、ローカルPPメモリの量、その他が異なっていてよい。複数のPPUが存在する場合、それらは、並列稼動することにより、単一PPUの場合に可能なスループットより高いスループットでデータを処理することが可能である。
[0050]1つ又は複数のPPUを組み込んだシステムは、デスクトップ、ラップトップ、ハンドヘルドなどのパーソナルコンピュータ、サーバ、ワークステーション、ゲームコンソール、埋め込みシステムなどを始めとする、様々な構成及びフォームファクタで実装されることが可能である。
コアの概要
[0051]図5は、本発明の1つ又は複数の態様による、図4の並列処理サブシステム312の並列処理装置420のブロック図である。PPU 402は、多数のスレッドを並列に実行するように構成された、1つ又は複数のコア408を含む。ここで、「スレッド」という用語は、特定の入力データセットに対して実行される、特定プログラムのインスタンスを意味する。いくつかの実施形態では、複数の独立した命令装置を設けずに多数のスレッドの並列実行をサポートするために、単一命令複数データ(SIMD)命令発行手法を用いる。
[0052]一実施形態では、各コア408は、単一の命令装置512からSIMD命令を受け取るように構成された、P個(例えば、8個、16個など)の並列処理エンジン502のアレイを含む。各処理エンジン502は、有利なことに、機能装置(functional unit)(例えば、算術論理装置など)の同一セットを含む。機能装置は、パイプライン化されることが可能であり、これによって、当該技術分野において知られているように、前の命令が完了する前に新しい命令を発行することが可能になる。機能装置は、任意の組み合わせで与えられることが可能である。一実施形態では、機能装置は様々な演算をサポートし、例えば、整数及び浮動小数点の演算(例えば、加算及び乗算)、比較演算、ブール演算(AND、OR、XOR)、ビットシフト、各種代数関数(例えば、面補間、三角関数、指数関数、対数関数など)の計算などをサポートする。同じ機能装置ハードウェアを活用して異なる演算を実行することが可能である。
[0053]各処理エンジン502は、そのローカル入力データ、中間結果、その他を、ローカルレジスタファイル(LRF)504内のスペースに格納する。一実施形態では、ローカルレジスタファイル504は、物理的又は論理的にP個のレーンに分割され、各レーンはいくつかのエントリを有する(各エントリは、例えば、32ビットワードを格納することが可能である)。各処理エンジン502に1つのレーンが割り当てられ、異なるレーンの対応するエントリを、同じプログラムを実行する異なるスレッドのデータで埋めることによって、SIMD実行を推進することが可能である。いくつかの実施形態では、各処理エンジン502は、各自に割り当てられたレーンにあるLRFエントリにしかアクセスできない。ローカルレジスタファイル504内のエントリの総数は、有利なことに、処理エンジン502の1つにつき複数の同時スレッドをサポートするのに十分な大きさである。
[0054]各処理エンジン502はさらに、コア408内のすべての処理エンジン502の間で共有されるオンチップ共有メモリ506にアクセスできる。共有メモリ506は、所望の大きさであってよく、いくつかの実施形態では、任意の処理エンジン502が共有メモリ506の、待ち時間が均等に短い(例えば、ローカルレジスタファイル504へのアクセスと同等である)任意のロケーションで読み書きを行うことが可能である。いくつかの実施形態では、共有メモリ506は、共有レジスタファイルとして実装され、他の実施形態では、共有メモリ506は、共有キャッシュメモリを用いて実装されることが可能である。
[0055]共有メモリ506に加えて、いくつかの実施形態はさらに、追加オンチップパラメータメモリ及び/又はキャッシュ508を与えることが可能であり、これは、例えば、従来型のRAM又はキャッシュとして実装可能である。パラメータメモリ/キャッシュ508は、例えば、複数のスレッドで必要になる可能性がある状態パラメータ及び/又は他のデータ(例えば、各種の定数)を保持するために用いられることが可能である。処理エンジン502はさらに、メモリインターフェース414を介してオフチップ「グローバル」メモリ520にアクセスすることが可能であり、グローバルメモリ520としては、例えば、PPメモリ404及び/又はシステムメモリ304が可能であり、システムメモリ304は、前述のように、ホストインターフェース406を介してメモリインターフェース414からアクセス可能である。
[0056]PPU 402の外部にある任意のメモリをグローバルメモリ520として用いることが可能であることを理解されたい。図5に示されるように、グローバルメモリ520は、PPメモリ404、システムメモリ304、及びシステムディスク314を含む。前述のように、常駐ミップマップ325及び425のような、グローバルメモリ520に格納されたテクスチャデータは、常駐テクスチャデータと見なされ、非常駐ミップマップ335のような、グローバルメモリ520に格納された他のテクスチャデータは、非常駐テクスチャデータと見なされる。非常駐テクスチャデータがシステムディスク314からシステムメモリ304又はPPメモリ404にコピーされると、そのテクスチャデータは常駐テクスチャデータになる。図3のCPU 302で実行されるドライバプログラムを用いて、どのミップマップが常駐ミップマップであり、どのミップマップが非常駐ミップマップであるかを指定することが可能である。本発明の他の実施形態では、ミップマップが常駐であるか非常駐であるかを、テクセルアドレスの少なくとも一部分に基づいて決定する。任意の処理エンジン502がグローバルメモリ520にアクセスすることを可能にする相互接続(明示的には図示されていない)を介して、処理エンジン502をメモリインターフェース414と結合することが可能である。
[0057]一実施形態では、各処理エンジン502が、マルチスレッド化され、最大でG個(例えば、24個)のスレッドを同時に実行することが可能であり、これは、例えば、各スレッドに関連付けられた現在の状態情報を、ローカルレジスタファイル504内の、そのエンジンに割り当てられたレーンの異なる部分に保持することによって可能である。処理エンジン502は、有利なことに、異なるスレッドからの命令を、効率を損なうことなく、任意のシーケンスにおいて発行できるように、1つのスレッドから別のスレッドへの切り替えを素早く行うように設計される。
[0058]命令装置512は、任意の処理サイクルにおいて、同じ命令(INSTR)がP個の処理エンジン502のすべてに発行されるように構成される。したがって、単一クロックサイクルのレベルでは、コア408は、PウェイのSIMDマイクロアーキテクチャを実装する。各処理エンジン502もマルチスレッド化されて最大でG個のスレッドを同時にサポートするので、コア408は、この実施形態では、最大でP*G個のスレッドを同時に実行することが可能である。例えば、P=16且つG=24であれば、コア408は、最大で584個の同時スレッドをサポートする。
[0059]命令装置512は、同じ命令をP個の処理エンジン502のすべてに並列に発行するので、コア408は、有利なことに、スレッドを「SIMDスレッドグループ」のかたちで処理するために使用される。本明細書で用いられる「SIMDスレッドグループ」は、同じプログラムが異なる入力データに対して実行される、最大でP個のスレッドのグループを意味し、このグループの1つのスレッドが各処理エンジン502に割り当てられる。SIMDスレッドグループが含みうるスレッドの数はP個より少なくてよく、その場合は、処理エンジン502のいくつかが、そのSIMDスレッドグループが処理されているサイクルの間、アイドル状態になる。SIMDスレッドグループが含みうるスレッドの数はP個より多くてもよく、その場合は、連続する複数のクロックサイクルにわたって処理が行われる。各処理エンジン502は最大でG個のスレッドを同時にサポートできるので、コア408内では、どの時点においても、最大でG個のSIMDスレッドグループが実行されていることが可能である。
[0060]各クロックサイクルにおいて、1つの命令が、G個のSIMDスレッドグループのうちの選択された1つを構成するP個のスレッドのすべてに発行される。どのスレッドが現在アクティブかを示すために、関連するスレッドに対応する「アクティブマスク」を命令に含めることが可能である。処理エンジン502は、アクティブマスクをコンテキスト識別子として用いて、例えば、命令の実行時に、ローカルレジスタファイル504内の、自身に割り当てられたレーンのどの部分を使用しなければならないかを決定する。したがって、所与のサイクルにおいて、コア408内のすべての処理エンジン502が、同じ命令を、同じSIMDスレッドグループ内の異なるスレッドについて実行していることになる(インスタンスによっては、SIMDスレッドグループ内のいくつかのスレッドが(例えば、条件付き命令又は述語付き命令、プログラム内の分岐における逸脱などの理由により)一時的にアイドル状態になる場合がある)。
[0061]コア408の動作は、有利なことに、コアインターフェース503を介して制御される。いくつかの実施形態では、コアインターフェース503は、処理すべきデータ(例えば、プリミティブデータ、頂点データ、及び/又はピクセルデータ)並びに状態パラメータと、そのデータをどのように処理すべきか(例えば、どのプログラムを実行すべきか)を定義するコマンドとを、作業配分装置410から受け取る。スレッド又はSIMDスレッドグループは、他のスレッド、又は固定機能装置(三角形ラスタライザなど)によって起動されることが可能である。コアインターフェース503は、処理すべきデータを共有メモリ506にロードし、パラメータをパラメータメモリ508にロードすることが可能である。コアインターフェース503はまた、命令装置512内の新しいスレッド又はSIMDスレッドグループのそれぞれを初期化し、次に、それらのスレッドの実行を開始するように命令装置512に合図することが可能である。スレッド又はSIMDスレッドグループの実行が完了したら、コア408は、有利なことに、コアインターフェース503に通知する。次にコアインターフェース503は、他の処理(例えば、共有メモリ506から出力データを取り出す処理、及び/又は追加のスレッド又はSIMDスレッドグループの実行に備えてコア408を準備する処理)を開始することが可能である。
[0062]ここで説明されたコアアーキテクチャは例示的であること、並びに変形形態及び修正形態が可能であることを理解されたい。任意の数の処理エンジンを含めることが可能である。いくつかの実施形態では、各処理エンジンは、各自のローカルレジスタファイルを有し、スレッドごとのローカルレジスタファイルエントリの割り当ては、固定であることも、要望通りに設定可能であることも可能である。さらに、図示されているコア408は1つだけであるが、PPU 402は、任意の数のコア408を含むことが可能であり、有利なことに、これらのコア408の設計は互いに同一であり、これは、実行動作が、個々の処理タスクをどのコア408が受け取ったかに依存しないようにするためである。各コア408は、有利なことに、他のコア408とは独立に動作し、専用の処理エンジン、共有メモリなどを有する。
スレッドアレイと協調型スレッドアレイ
[0063]いくつかの実施形態では、図5のマルチスレッド処理コア408は、スレッドアレイを用いて汎用計算を実行することが可能である。本明細書で用いられる「スレッドアレイ」は、出力データセットを生成するために、入力データセットに対して同じプログラムを同時に実行する、いくつか(n0個)のスレッドからなるグループである。スレッドアレイ内の各スレッドには、そのスレッドの実行中にそのスレッドにアクセス可能な固有のスレッド識別子(「スレッドID」)が割り当てられる。スレッドIDは、スレッドの処理動作の様々な態様を制御する。例えば、スレッドIDを用いて、スレッドが処理すべきは入力データセットのどの部分かを決定することが可能であり、及び/又は、スレッドが生成又は書き込みすべきは出力データセットのどの部分かを決定することが可能である。
[0064]いくつかの実施形態では、スレッドアレイは、「協調型」スレッドアレイ(CTA)である。他のタイプのスレッドアレイと同様に、CTAは、出力データセットを生成するために、入力データセットに対して同じプログラム(ここでは「CTAプログラム」と呼ぶ)を同時に実行する、複数のスレッドのグループである。CTAでは、スレッドは、スレッドIDに依存する形式でデータを互いに共有することにより、協調することが可能である。例えば、CTAでは、あるスレッドがデータを生成し、別のスレッドがそのデータを消費することが可能である。いくつかの実施形態では、消費側スレッドがデータにアクセスしようとする前に生成側スレッドによってそのデータが実際に生成されたことを確認するために、CTAプログラムコードの、データを共有すべきポイントに同期命令を挿入することが可能である。CTAのスレッド間でデータ共有があるとすれば、その規模は、CTAプログラムによって決定される。したがって、CTAを使用する個々のアプリケーションにおいては、CTAのスレッドは、CTAプログラムに応じて、実際にデータを互いに共有することも共有しないことも可能であることを理解されたい。
[0065]いくつかの実施形態では、CTA内のスレッドが、図5の共有メモリ506を用いて、同じCTA内の他のスレッドと、入力データ及び/又は中間結果を共有する。例えば、CTAプログラムは、特定のデータが書き込まれるべき、共有メモリ506内のアドレスを計算する命令を含むことが可能であり、このアドレスは、スレッドIDの関数である。各スレッドは、各自のスレッドIDを用いてその関数を計算し、対応するロケーションに書き込みを行う。このアドレス関数は、有利なことに、異なるスレッドが異なるロケーションに書き込みを行うように定義され、この関数が確定的である限り、どのスレッドによって書き込まれるロケーションでも予測可能である。CTAプログラムはさらに、データが読み出されるべき、共有メモリ506内のアドレスを計算する命令を含むことが可能であり、このアドレスは、スレッドIDの関数である。適切な関数を定義し、同期手法を導入することにより、CTAの1つのスレッドが共有メモリ506内の所与のロケーションにデータを書き込み、同じCTAの別のスレッドがそのロケーションからデータを読み出すことが、予測可能な様式で可能である。したがって、任意の所望のパターンのスレッド間データ共有をサポートすることが可能であり、CTA内の任意のスレッドが、同じCTA内の他の任意のスレッドとデータを共有することが可能である。
[0066]CTA(又は他のタイプのスレッドアレイ)は、データ並列分解に適した計算を実行するために、有利に用いられる。本明細書で用いられる「データ並列分解」は、出力データを生成するために、入力データに対して同じアルゴリズムを複数回並列に実行することによって計算問題が解かれる任意の状況を含み、例えば、データ並列分解のよくある事例の1つは、出力データセットの異なる部分を生成するために、入力データセットの異なる部分に対して同じ処理アルゴリズムを適用することを含む。データ並列分解に適する問題として、例えば、行列代数、任意の次元数のリニア及び/又は非リニア変換(例えば、高速フーリエ変換)、任意の次元数の畳み込みフィルタを含む様々なフィルタリングアルゴリズム、複数次元の分離可能フィルタなどがある。入力データセットの各部分に適用されるべき処理アルゴリズムは、CTAプログラム内で指定され、CTA内の各スレッドは、入力データセットの1つの部分に対して同じCTAプログラムを実行する。CTAプログラムは、広い範囲の数学演算及び論理演算を用いてアルゴリズムを実装することが可能であり、条件付き実行パス又は分岐実行パスと、直接メモリアクセス及び/又は間接メモリアクセスとを含むことが可能である。図2Bと併せて既に説明されたように、グラフィックスデータの処理に用いられるシェーダプログラムを、述語付き命令又は条件付き命令を用いる条件付き実行パスを含むように構成することが可能である。例えば、フィルタリングされたテクセル値を生成するために外挿を行う命令をシェーダプログラムに実行させる述語コード又は条件コードが、計算されたdeltaLOD値に基づいて決定される。述語コード又は条件コードが別の値の場合、シェーダプログラムは、フィルタリングされたテクセル値を生成するために、従来の内挿を行う命令を実行する。
[0067]一実施形態では、図3のCPU 302で実行されるドライバプログラムが、CTAを定義するコマンドをメモリ(例えば、システムメモリ304)内の(明示的に図示されていない)プッシュバッファに書き込み、そこからPPU 402がコマンドを読み出す。これらのコマンドは、有利なことに、状態パラメータに関連付けられ、状態パラメータは、CTA内のスレッドの数、CTAを用いて処理されるべき入力データセット(このミップマップはテクスチャ用として常駐している)の、グローバルメモリ520内のロケーション、実行されるべきCTAプログラムの、グローバルメモリ520内のロケーション、出力データが書き込まれるべき、グローバルメモリ520内のロケーションなどである。状態パラメータは、コマンドとともにプッシュバッファに書き込まれてよい。コアインターフェース503は、コマンドに対する応答として、状態パラメータをコア408(例えば、パラメータメモリ508)にロードし、次に、CTAパラメータで指定された数のスレッドが起動されるまで、スレッドの起動を開始する。一実施形態では、コアインターフェース503は、各スレッドが起動されたときに、それらのスレッドにスレッドIDを順次割り当てる。より一般的には、CTA内のすべてのスレッドが同じコア408において同じプログラムを実行するので、有効な各スレッドIDが1つのスレッドにのみ割り当てられる限り、任意のスレッドに任意のスレッドIDを割り当てることが可能である。任意の固有の識別子(数値識別子を含み、これに限定されない)を、スレッドIDとして用いることが可能である。一実施形態では、CTAがある数(n)のスレッドを含む場合、スレッドIDは、単純に、0からn−1までの連続した(一次元の)インデックス値である。他の実施形態では、多次元インデックス方式を用いることが可能である。データ共有が、スレッドIDの参照によって制御される限り、処理エンジンに対するスレッドの個々の割り当ては、CTA実行の結果に影響しないことに注意されたい。したがって、CTAプログラムは、それが実行される特定のハードウェアに依存しないことが可能である。
グラフィックスパイプラインのアーキテクチャ
[0068]図6Aは、本発明の1つ又は複数の態様による、グラフィックス処理パイプライン600の概念図である。図4のPPU 402は、グラフィックス処理パイプライン600を形成するように構成されることが可能である。例えば、コア408が、頂点処理装置644、ジオメトリ処理装置648、及びフラグメント処理装置660の機能を実行するように構成されることが可能である。データアセンブラ642、プリミティブアセンブラ646、ラスタライザ655、及びラスタ演算装置665の機能もコア408によって実行されることが可能であり、或いは、ホストインターフェース406によって実行されることが可能である。
[0069]データアセンブラ642は、高次曲面、プリミティブ、その他の頂点データを収集し、その頂点データを頂点処理装置644に出力する。頂点処理装置644は、頂点シェーダプログラムを実行して、頂点データを、頂点シェーダプログラムで指定されるように変換するように構成されるプログラマブル実行装置である。例えば、頂点処理装置644は、頂点データを、オブジェクトベースの座標表現(オブジェクト空間)から、ワールド空間又は正規化装置座標(NDC)空間のような、代替ベースの座標系に変換するようにプログラムされることが可能である。頂点処理装置644は、PPメモリ404に格納されたデータを、頂点データの処理に使用するために、メモリインターフェース414を介して読み出すことが可能である。
[0070]プリミティブアセンブラ646は、頂点処理装置644から、処理された頂点データを受け取り、ジオメトリ処理装置648での処理に使用されるグラフィックスプリミティブ(例えば、点、線、三角形など)を構築する。ジオメトリ処理装置648は、ジオメトリシェーダプログラムを実行して、プリミティブアセンブラ646から受け取ったグラフィックスプリミティブを、ジオメトリシェーダプログラムで指定されるように変換するように構成されるプログラマブル実行装置である。例えば、ジオメトリ処理装置648は、グラフィックスプリミティブを1つ又は複数の新しいグラフィックスプリミティブに細分し、それらの新しいグラフィックスプリミティブのラスタライズに使用されるパラメータ(平面方程式の係数など)を計算するように、プログラムされることが可能である。ジオメトリ処理装置648は、それらのパラメータ及び新しいグラフィックスプリミティブをラスタライザ655に出力する。ジオメトリ処理装置648は、PPメモリ404に格納されたデータを、ジオメトリデータの処理に使用するために、メモリインターフェース414を介して読み出すことが可能である。
[0071]ラスタライザ655は、その新しいグラフィックスプリミティブをスキャンコンバートして、フラグメント及びカバレージデータを、フラグメント処理装置660に出力する。フラグメント処理装置660は、フラグメントシェーダプログラムを実行して、ラスタライザ655から受け取ったフラグメントを、フラグメントシェーダプログラムで指定されるように変換するように構成されるプログラマブル実行装置である。例えば、フラグメント処理装置660及びテクスチャ装置610は、パースペクティブコレクション、テクスチャマッピング、ミップマップ外挿、シェーディング、ブレンディングなどのような操作を実行して、ラスタ演算装置655に出力されるシェーディングされたフラグメントを生成するように、プログラムされることが可能である。フラグメント処理装置660及びテクスチャ装置610はまた、(例えば、バイリニア、トリリニア、異方性などの)テクスチャフィルタリング操作を実行するようにプログラムされることも可能である。
[0072]フラグメント処理装置660は、PPメモリ404に格納されたデータを、フラグメントデータの処理に使用するために、メモリインターフェース414を介して読み出すことが可能である。メモリインターフェース414は、グラフィックスメモリに格納されているデータの読み出し要求を生成し、圧縮データがあれば圧縮解除する。ラスタ演算装置665は、固定機能装置であって、オプションで前方及び後方面クリッピング及びラスタ演算(ステンシルやZテストなど)を実行し、ピクセルデータを、グラフィックスメモリに格納される処理済みグラフィックスデータとして出力する。処理済みグラフィックスデータは、ディスプレイデバイス310での表示に備えてグラフィックスメモリに格納されることが可能である。
テクスチャ装置
[0073]図6Bは、本発明の1つ又は複数の態様による、図6Aのテクスチャ装置610のブロック図である。テクスチャ装置610は、LOD装置615、テクスチャサンプラ装置620、アドレス生成装置625、及びフィルタ装置630を含む。テクスチャ装置610は、テクスチャマップ識別子及びテクスチャマップ座標(例えば、s、tなど)を含むフラグメントデータを、処理のために受け取る。テクスチャマップ座標は、LOD装置615によって、当業者に知られている、理想LODを決定する手法(図2A及び2Cのステップ200)を用いて処理される。
[0074]アプリケーションは、各テクスチャフィルタのフィルタタイプを、テクスチャ画像状態データ構造体のメンバとして指定する。テクスチャフィルタは、当該技術分野の最新段階において一般的な(拡大及び縮小)フィルタと、2つの新しいテクスチャフィルタ(外挿拡大及び外挿縮小)とを含む。フィルタタイプは、当該技術分野の最新段階において一般的なタイプ(最近傍、リニア、最近傍ミップフィルタリング付きミップマップ最近傍、リニアミップフィルタリング付きミップマップ最近傍、最近傍ミップフィルタリング付きミップマップリニア、リニアミップフィルタリング付きミップマップリニア、透過性黒(transparent black)など)を含む。透過性黒フィルタタイプは、フィルタリングを行わず、単純にR=G=B=A=0を返す。これは、述語値又は条件コードが代替アクションをシェーダプログラムに行わせる場合に有用である。OpenGLグラフィックスAPI(アプリケーションプログラミングインターフェース)の場合、これらのフィルタタイプは、GL_NEAREST、GL_LINEAR、GL_NEAREST_MIPMAP_NEAREST、GL_NEAREST_MIPMAP_LINEAR、GL_LINEAR_MIPMAP_NEAREST、GL_LINEAR_MIPMAP_LINEARという名前である。外挿拡大フィルタ及び外挿縮小フィルタの画質向上のために指定されることが可能な、さらなる新しいフィルタタイプが、外挿ミップマップ最近傍及び外挿ミップマップリニアである。
[0075]デバイスドライバ322は、LODが常駐又は非常駐ミップマップに対応するかどうかを決定するために必要な情報を、LOD装置615に提供する。この情報は、外挿しきい値LODであって、テクスチャ画像データ構造体に格納され、LOD装置615に提供される。本発明の好ましい実施形態では、外挿しきい値LODは、テクスチャ画像データ構造体に格納され、(端数ビットを含む)詳細レベルを表す実数であり、これを下回ると、外挿拡大フィルタリング又は外挿縮小フィルタリングが選択される。外挿しきい値LODは、新しいミップマップレベルが非常駐ミップマップから常駐ミップマップに変換される際に、ドライバ322が、新しい常駐ミップマップ解像度に急に切り替えるのではなく、外挿フィルタリングから内挿フィルタリングに円滑に移行することを可能にする。本発明の代替実施形態では、外挿しきい値LODは、テクスチャ画像データ構造体に格納されている最低LODの常駐ミップマップレベルを表す整数値である。
[0076]LOD装置615は、(図2A、2B、及び2Cの)ステップ210を実行するが、これは、テクスチャ画像をサンプリング及びフィルタリングするために、理想LODと外挿しきい値LODとを比較して、どのテクスチャフィルタ(例えば、拡大、縮小、外挿拡大、又は外挿縮小)がテクスチャサンプラ装置620によって用いられるかを選択することによって行われる。LOD装置615は、テクスチャフィルタ、選択されたテクスチャフィルタタイプ、理想LOD、テクスチャマップ座標、及び他の、当該技術分野の最新段階において一般的なサンプリングパラメータを、テクスチャサンプラ装置620に渡す。さらに、LOD装置615は、テクスチャフィルタタイプ及びテクスチャマップ識別子を、アドレス生成装置625に出力する。
[0077]LOD装置615が、外挿縮小テクスチャフィルタ又は外挿拡大テクスチャフィルタ用に指定されたテクスチャフィルタタイプを選択した場合、LOD装置615は、アプリケーションが、非常駐ミップマップレベルからのテクセルのフィルタリングを要求したことを、(図4の)ホストインターフェース406を介して(図3の)デバイスドライバ322に通知し、要求されたミップマップレベルを指定する。デバイスドライバ322は、図7と併せて説明される、非常駐ミップマップの、常駐ミップマップへの変換を開始する。
[0078]選択されたテクスチャフィルタが外挿拡大又は外挿縮小である場合、テクスチャサンプラ装置620は、理想LODと外挿しきい値LODとの差を計算することにより、deltaLODを計算する(図2A及び2Cのステップ235)。次にテクスチャサンプラ装置620は、外挿重みを、deltaLODの関数として計算する。
[0079]本発明の一実施形態では、テクスチャサンプラ装置620は、(LOD,重み)ペアが、LODが減っていく順(正から負)に格納された重みテーブル627を含む。deltaLODが重みテーブル627内の最低LOD値に満たない場合は、最低LODを有する、テーブル内のエントリからの重み値が、外挿重みとして選択される。deltaLODが重みテーブル627内の最大LOD値より大きい場合は、最高LODを有する、テーブル内のエントリからの重み値が、外挿重みとして選択される。deltaLODが重みテーブル627内のエントリのLOD値と等しい場合は、そのエントリの重み値が外挿重みとして選択される。本発明のいくつかの実施形態では、deltaLODが重みテーブル627の2つのエントリの間である場合、2つの最も近い重み値を用いたリニア内挿によって、外挿重みが計算される。本発明の他の実施形態では、deltaLODが重みテーブル627の隣接する2つのエントリのLOD値の間である場合、外挿重みは、Catmull−Rom3次スプライン、又は他の任意の、最先端の当業者に知られている内挿スプラインを用いて計算される。
[0080]本発明のいくつかの実施形態では、重みテーブル627の内容は静的である。本発明の他の実施形態では、デバイスドライバ322が、アプリケーションプログラムで指定される外挿フィルタに従って、重みテーブル627をロードする。本発明の他の実施形態では、デバイスドライバ322が、重みテーブル627(又は、外挿拡大又は外挿縮小のための独立した重みテーブル)を、テクスチャサンプラデータ構造体にロードする。テクスチャサンプラデータ構造体は、PPU 402内のレジスタに格納されてよく、また、PPメモリ404に格納されて、PPU 402内でキャッシュされてもよい。
[0081]理想LODが常駐ミップマップレベルに対応する場合、テクスチャサンプラ装置620は、微粒(及び、必要に応じて、粗粒)ミップマップレベルを選択し、選択されたテクスチャフィルタタイプを用いて、選択されたミップマップレベルのピクセルフットプリントをサンプリングし、当業者に知られている手法を用いて内挿テクセル値を生成する。LOD重みは、理想LODの小数部分に対応する。理想LODが非常駐ミップマップレベルに対応する場合、テクスチャサンプラ装置620は、外挿しきい値(通常は、最低LODの常駐ミップマップレベル及び最高解像度の常駐ミップマップレベル)を切り詰めて、外挿しきい値の整数部分を生成する。整数部分は、微粒ミップマップレベルLOD(LODfine)であり、微粒ミップマップレベル+1(通常は、2番目に低いLODの常駐ミップマップレベル及び次に最も高い解像度の常駐ミップマップレベル)は、粗粒ミップマップレベルLOD(LODcoarse)である。
[0082]フィルタタイプが外挿ミップマップ最近傍である場合、テクスチャサンプラ装置620は、テクスチャ空間においてピクセルフットプリントをサンプリングして、(最低常駐ミップマップ及び最低常駐ミップマップ+1に対応する)ミップレベルLODfine及びLODcoarseの最近傍サンプルを、アドレス生成装置625に出力する。フィルタタイプが外挿ミップマップリニアである場合、テクスチャサンプラ装置620は、テクスチャ空間においてピクセルフットプリントをサンプリングして、(最低常駐ミップマップ及び最低ミップマップ+1に対応する)ミップレベルLODfine及びLODcoarseのサンプルを、アドレス生成装置625に出力する。テクスチャサンプラ装置620は、フィルタタイプが外挿ミップマップリニア又は外挿ミップマップ最近傍の場合に、1+外挿重みを、LODfineミップレベルをサンプルするためのLOD重みとして用い、1−外挿重みを、LODcoarseミップレベルをサンプルするためのLOD重みとして用いる。
[0083]選択されたフィルタタイプ、LOD重み、異方性重み、微粒ミップマップLODレベル(LODfine)、粗粒ミップマップLODレベル(LODcoarse)、及び(テクスチャマップ座標及び選択されたフィルタタイプに対応する)サンプルが、テクスチャサンプラ装置620によって、アドレス生成装置625に出力される。アドレス生成装置625は、当業者に知られている手法により、選択されたフィルタタイプに従い、各テクセルについてuv重み(バイリニア又は最近傍)を生成する。サンプルのフィルタタイプが外挿ミップマップリニアの場合は、アドレス生成装置625が、各サンプル内のテクセルについてバイリニア(u,v)重みを計算する。サンプルのフィルタタイプが外挿ミップマップ最近傍の場合は、アドレス生成装置625が、各サンプル内のテクセルについて最近傍重みを計算する。アドレス生成装置625は、サンプル、テクスチャマップ識別子、LODfine、及びLODcoarseを用いて、常駐ミップマップからテクセルを読み出すアドレスを決定する。仮想メモリアドレス指定を行う場合は、テクセルの読み出しに必要な物理アドレスを決定するために、追加のアドレス変換をメモリインターフェース414によって行うことが可能である。
[0084]本発明の一実施形態では、ミップマップから読み出されたテクセルの変倍に用いられる各テクセル重みは、そのテクセルのミップレベルのLOD重みと、そのフットプリントの異方性フィルタ重み(異方性重み)と、uv重みとの組み合わせである。アドレス生成装置625は、LOD重みと異方性重みとテクセルuv重みとを掛け合わせることによってテクセル重みを計算し、その結果をテクスチャフィルタ装置630に伝える。テクセルは、フィルタ装置630に返され、アドレス生成装置625で計算されたテクセル重みによって変倍される。
[0085]フィルタ重みの合計が1になる、本発明の実施形態では、フィルタ装置630が、変倍されたテクセル値を、テクスチャ色アキュムレータレジスタに蓄積する。最後のピクセルの最後のテクセルが重み付け及び蓄積されると、テクスチャ装置610は、テクスチャ色アキュムレータレジスタの内容を、フラグメント処理装置660に返す。フィルタ重みの合計が1にならない、本発明の実施形態では、フィルタ装置630は、変倍されたテクセル値をテクスチャ色アキュムレータレジスタに蓄積し、テクセル重みをテクスチャ重みアキュムレータレジスタに蓄積する。最後のテクセルが重み付けされると共に蓄積されると、フィルタ装置630は、色アキュムレータレジスタの内容を重みアキュムレータレジスタの内容で除算し、結果として得られるフィルタリングされたテクスチャ値を、フラグメント処理装置660に返す。
[0086]テクスチャ装置610は、ピクセルシェーダプログラムが条件付き実行パスを選択するために有利にアクセス可能である様式で、ピクセルごとの状態情報を返すように構成されることが可能である。本発明の一実施形態では、テクスチャ装置610は、ピクセルをテクスチャ化する動作が、テクスチャ装置610が外挿フィルタリングを用いることを必要とし、結果として得られた値によって、ピクセルシェーダプログラム内の後続の分岐動作を決定するために用いられることが可能な述語又は条件コードが設定されたかどうかを、ピクセル単位で伝達することが可能である。シェーダプログラムは、条件付きで、同じテクスチャからの追加テクスチャ読み出しを用いて非常駐ミップマップのテクセルを処理して3次フィルタリングを行うか、人工的細部を追加するために他のテクスチャからのテクスチャ読み出しを発行するか、他の操作を行うことが可能である。
[0087]図7は、本発明の1つ又は複数の態様による、非常駐ミップマップレベルを常駐ミップマップレベルに変換する方法ステップのフロー図である。ステップ700で、デバイスドライバ322が、非常駐ミップマップを常駐ミップマップに変換する要求を受け取る。ステップ710で、デバイスドライバ322が、非常駐ミップマップを、テクスチャ装置610によってアクセス可能な常駐メモリ(PPメモリ404など)にコピーすることを開始する。ステップ720で、デバイスドライバ322が、変換が完了したかどうか、すなわち、ミップマップがコピーされたかどうかを判定し、完了していない場合は、ステップ720を繰り返す。本発明のいくつかの実施形態では、非常駐ミップマップのコピーが完了したことを確認するために、最高解像度の常駐ミップマップレベルが変更されたタイミングをリソースマネージャが表示することが可能である。
[0088]ミップマップがコピーされると、ステップ730で、デバイスドライバ322が、外挿しきい値LODを更新する。本発明のいくつかの実施形態では、外挿しきい値は、最低常駐ミップマップレベルの値と等しくなるように更新される。本発明の他の実施形態では、外挿しきい値LODは、非常駐ミップマップレベルが常駐ミップマップレベルに変換される際に、新しい常駐ミップマップ解像度に急に切り替わるのではなく、外挿フィルタリングから内挿フィルタリングに円滑に移行するように、数フレームにわたって減らされる。例えば、外挿しきい値LODが3.0であって、最低常駐ミップマップレベルが2.0であるとすれば、外挿しきい値LODを、2.0に達するまで、0.1ずつ連続的に減らすことが可能である。ステップ740で、デバイスドライバ322が、外挿しきい値LODが最終値に達したかどうかを判定し、達していない場合は、ステップ730を繰り返す。達した場合は、ステップ750で、非常駐ミップマップレベルから常駐ミップマップレベルへの変換を完了する。
[0089]外挿フィルタリングが有効であって、フィルタリングに必要なテクセルが非常駐ミップマップレベルから供給される場合、外挿フィルタリングを用いて生成されたテクセルは、理想ミップレベルと常駐ミップレベルとの差に比例してより鮮明に表示される改善された画像を提供する。この画像は、高解像度ミップマップテクスチャデータの代わりに低解像度ミップマップテクスチャデータを用いた場合に比べ、より適切な詳細レベルを伝達する。並列処理サブシステム312は、高解像度ミップマップ(例えば、非常駐ミップマップ325及び335)が非常駐メモリ(例えば、システムディスク314、システムメモリ304など)から取り出される間に、複数のスレッドを処理することと並行して、常駐ミップマップから詳細を外挿することにより、外挿テクスチャ値を生成するように構成される。
[0090]本発明の一実施形態は、コンピュータシステムとともに使用されるプログラム製品として実施されることが可能である。プログラム製品のプログラムは、(本明細書に記載の方法を含む)各実施形態の機能を定義し、様々なコンピュータ可読ストレージ媒体に収容されることが可能である。例示的なコンピュータ可読ストレージ媒体としては、(i)情報が永続的に格納される書き込み不可能なストレージ媒体(例えば、CD−ROMドライブによって可読なCD−ROMディスク、フラッシュメモリ、ROMチップ、又は任意のタイプの固体不揮発性半導体メモリのような、コンピュータ内の読み出し専用メモリデバイス)、及び(ii)変更可能な情報が格納される書き込み可能なストレージ媒体(例えば、ディスケットドライブ内のフロッピーディスク、又はハードディスクドライブ、又は任意のタイプの固体ランダムアクセス半導体メモリ)があるが、これらには限定されない。
[0091]ここまで、特定の実施形態に関して、本発明を説明してきた。しかしながら、当業者であれば理解されるように、添付の請求項において示される、本発明のより広い趣旨及び範囲から逸脱することなく、様々な修正及び変更を、その実施形態に施すことが可能である。したがって、先述の説明及び図面は、限定的ではなく例示的であると見なされるべきである。
本発明の1つ又は複数の態様による、詳細レベル(LOD)を変化させる、テクスチャのミップマップの概念図である。 本発明の1つ又は複数の態様による、非常駐ミップマップレベルに対して外挿テクスチャ値を生成する方法ステップのフロー図である。 本発明の1つ又は複数の態様による、理想LODに対応するミップマップが常駐かどうかを決定する、図2Aの方法ステップ210のフロー図である。 本発明の1つ又は複数の態様による、常駐ミップマップレベルからテクスチャマップ値を外挿しなければならないかどうかを決定する方法ステップのフロー図である。 本発明の1つ又は複数の態様を実装するために構成されたコンピュータシステムを示すブロック図である。 本発明の1つ又は複数の態様による、図3のコンピュータシステムの並列処理サブシステムのブロック図である。 本発明の1つ又は複数の態様による、図4の並列処理サブシステムの並列処理装置のブロック図である。 本発明の1つ又は複数の態様による、グラフィックス処理パイプラインの概念図である。 本発明の1つ又は複数の態様による、図6Aのテクスチャ装置のブロック図である。 本発明の1つ又は複数の態様による、非常駐ミップマップレベルを常駐ミップマップレベルに変換する方法ステップのフロー図である。
符号の説明
100…非常駐ミップマップ、110…LOD0ミップマップ、120…LOD1ミップマップ、130…LOD2ミップマップ、140…常駐ミップマップ、150…LOD3ミップマップ、160…LOD4ミップマップ、190…LODNミップマップ、
300…システム、304…システムメモリ、305…メモリブリッジ、306…通信パス、307…I/Oブリッジ、308…入力デバイス、310…ディスプレイデバイス、312…並列処理サブシステム、313…通信パス、314…システムディスク、316…スイッチ、318…ネットワークアダプタ、320…アドインカード、321…アドインカード、322…デバイスドライバ、325…常駐ミップマップ、335…非常駐ミップマップ、404…PPメモリ、406…ホストインターフェース、408…コア、410…作業配分装置、412…フロントエンド、414…メモリインターフェース、425…常駐ミップマップ、502(0)…処理エンジン0、502(1)…処理エンジン1、502(P−1)…処理エンジンP−1、503…コアインターフェース、504…ローカルレジスタファイル、506…共有メモリ、508…パラメータメモリ、512…命令装置、520…グローバルメモリ、600…グラフィックス処理パイプライン、610…テクスチャ装置、615…LOD装置、620…テクスチャサンプラ装置、625…アドレス生成装置、627…重みテーブル、630…フィルタ装置、642…データアセンブラ、644…頂点処理装置、646…プリミティブアセンブラ、648…ジオメトリ処理装置、655…ラスタライザ、660…フラグメント処理装置、665…ラスタ演算装置。

Claims (9)

  1. テクスチャマップの、非常駐メモリストレージに記憶されている非常駐ミップマップを、前記テクスチャマップの、前記非常駐メモリストレージよりもアクセス待ち時間が短い常駐メモリストレージに記憶されている常駐ミップマップに変換する方法であって、
    コンピュータシステムが、画像を表示向けにレンダリングすることに用いるために前記非常駐ミップマップを常駐ミップマップに変換する要求を受け取るステップと、
    前記コンピュータシステムが、前記非常駐ミップマップを非常駐メモリストレージから常駐メモリストレージにコピーすることを開始するステップと、
    前記コンピュータシステムが、前記非常駐ミップマップの前記コピーが完了した場合に、前記画像のフィルタリングされたテクセル値の生成に使用される外挿しきい値詳細レベルである最終値に達するまで外挿しきい値詳細レベルを更新するステップと
    を含み、
    前記更新するステップが、前記外挿しきい値詳細レベルが前記非常駐ミップマップの詳細レベル以上に達するまで該外挿しきい値詳細レベルを連続的に減らすステップであって、前記非常駐ミップマップの詳細レベルが該非常駐ミップマップの解像度を示す値であり、前記外挿しきい値詳細レベルが前記非常駐ミップマップの詳細レベル以上になった場合に、外挿フィルタリングの使用から内挿フィルタリングの使用へ移行して前記フィルタリングされたテクセル値を生成させるための前記最終値が定義される、該ステップを含む、方法。
  2. 前記コンピュータシステムが、各ペアがdeltaLODと対応する外挿重みとを含む複数のペアによって外挿フィルタを表す重みテーブルをロードするステップをさらに含み、
    前記deltaLODが、算出された詳細レベルの整数部分に対応し且つ前記テクスチャマップの解像度に最も合致するミップマップである理想ミップマップの詳細レベルと前記外挿しきい値詳細レベルとの差である、請求項1に記載の方法。
  3. 前記重みテーブルが、外挿縮小テクスチャフィルタ用の外挿フィルタを表し、
    前記コンピュータシステムが、外挿拡大テクスチャフィルタ用の外挿フィルタを表す追加の重みテーブルをロードするステップをさらに含む、請求項2に記載の方法。
  4. 前記コンピュータシステムが、算出された詳細レベルの整数部分に対応し且つ前記テクスチャマップの解像度に最も合致するミップマップである理想ミップマップの詳細レベルを計算するステップと、
    前記コンピュータシステムが、前記理想ミップマップの詳細レベルと前記外挿しきい値詳細レベルとの差であるdeltaLODを計算するステップと、
    前記コンピュータシステムが、前記deltaLODに基づいて外挿重みを決定するステップとをさらに含む、請求項1〜3のいずれか一項に記載の方法。
  5. 前記コンピュータシステムが、前記外挿重みと、前記外挿しきい値詳細レベルの整数部分に等しい詳細レベルを有するミップマップからのテクセル値と、該ミップマップよりも解像度が低い常駐ミップマップからのテクセル値とを用いて、前記画像の、フィルタリングされたテクセル値を計算するステップをさらに含む、請求項4に記載の方法。
  6. テクスチャマップの、非常駐メモリストレージに記憶されている非常駐ミップマップを、前記テクスチャマップの、前記非常駐メモリストレージよりもアクセス待ち時間が短い常駐メモリストレージに記憶されている常駐ミップマップに変換する方法をコンピュータシステムに実行させる命令を収容するコンピュータ可読記録媒体であって、前記方法が、
    画像を表示向けにレンダリングすることに用いるために前記非常駐ミップマップを常駐ミップマップに変換する要求を受け取るステップと、
    前記非常駐ミップマップを非常駐メモリストレージから常駐メモリストレージにコピーすることを開始するステップと、
    前記非常駐ミップマップの前記コピーが完了した場合に、前記画像のフィルタリングされたテクセル値の生成に使用される外挿しきい値詳細レベルである最終値に達するまで外挿しきい値詳細レベルを更新するステップと
    を含み、
    前記更新するステップが、前記外挿しきい値詳細レベルが前記非常駐ミップマップの詳細レベル以上に達するまで該外挿しきい値詳細レベルを連続的に減らすステップであって、前記非常駐ミップマップの詳細レベルが該非常駐ミップマップの解像度を示す値であり、前記外挿しきい値詳細レベルが前記非常駐ミップマップの詳細レベル以上になった場合に、外挿フィルタリングの使用から内挿フィルタリングの使用へ移行して前記フィルタリングされたテクセル値を生成させるための前記最終値が定義される、該ステップを含む、コンピュータ可読記録媒体。
  7. 前記方法が、各ペアがdeltaLODと対応する外挿重みとを含む複数のペアによって外挿フィルタを表す重みテーブルをロードするステップをさらに含み、
    前記deltaLODが、算出された詳細レベルの整数部分に対応し且つ前記テクスチャマップの解像度に最も合致するミップマップである理想ミップマップの詳細レベルと前記外挿しきい値詳細レベルとの差である、請求項6に記載のコンピュータ可読記録媒体。
  8. 前記重みテーブルが、外挿縮小テクスチャフィルタ用の外挿フィルタを表し、
    前記方法が、外挿拡大テクスチャフィルタ用の外挿フィルタを表す追加の重みテーブルをロードするステップをさらに含む、請求項7に記載のコンピュータ可読記録媒体。
  9. 前記方法が、
    算出された詳細レベルの整数部分に対応し且つ前記テクスチャマップの解像度に最も合致するミップマップである理想ミップマップの詳細レベルを計算するステップと、
    前記理想ミップマップの詳細レベルと前記外挿しきい値詳細レベルとの差であるdeltaLODを計算するステップと、
    前記deltaLODに基づいて外挿重みを決定するステップと、
    前記外挿重みと、前記外挿しきい値詳細レベルの整数部分に等しい詳細レベルを有するミップマップからのテクセル値と、該ミップマップよりも解像度が低い常駐ミップマップからのテクセル値とを用いて、前記画像の、フィルタリングされたテクセル値を計算するステップとをさらに含む、請求項6〜8のいずれか一項に記載のコンピュータ可読記録媒体。
JP2008149625A 2007-06-07 2008-06-06 常駐ミップマップデータを用いた非常駐ミップマップデータの外挿 Active JP4799588B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/759,598 US7948500B2 (en) 2007-06-07 2007-06-07 Extrapolation of nonresident mipmap data using resident mipmap data
US11/759,598 2007-06-07

Publications (2)

Publication Number Publication Date
JP2008305408A JP2008305408A (ja) 2008-12-18
JP4799588B2 true JP4799588B2 (ja) 2011-10-26

Family

ID=40092691

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008149625A Active JP4799588B2 (ja) 2007-06-07 2008-06-06 常駐ミップマップデータを用いた非常駐ミップマップデータの外挿

Country Status (6)

Country Link
US (1) US7948500B2 (ja)
JP (1) JP4799588B2 (ja)
KR (1) KR100965637B1 (ja)
CN (1) CN101344961B (ja)
DE (1) DE102008026431B4 (ja)
TW (1) TWI377520B (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7944453B1 (en) * 2007-06-07 2011-05-17 Nvidia Corporation Extrapolation texture filtering for nonresident mipmaps
WO2009113034A1 (en) * 2008-03-12 2009-09-17 Nxp B.V. Look-ahead task management
US8217957B1 (en) * 2008-05-01 2012-07-10 Rockwell Collins, Inc. System and method for digital image storage and representation
KR20100046797A (ko) * 2008-10-28 2010-05-07 삼성전자주식회사 텍스쳐 팩터를 이용한 3차원 그래픽 데이터 처리 장치 및 그 방법
KR101508388B1 (ko) * 2008-12-15 2015-04-06 엘지전자 주식회사 밉맵 생성 장치 및 방법
US9013498B1 (en) * 2008-12-19 2015-04-21 Nvidia Corporation Determining a working set of texture maps
GB2469526B (en) * 2009-04-17 2015-06-24 Advanced Risc Mach Ltd Generating and resolving pixel values within a graphics processing pipeline
US8823724B2 (en) * 2009-12-31 2014-09-02 Nvidia Corporation Sparse texture systems and methods
US8681169B2 (en) * 2009-12-31 2014-03-25 Nvidia Corporation Sparse texture systems and methods
US8860743B2 (en) * 2009-12-31 2014-10-14 Nvidia Corporation Sparse texture systems and methods
US8610737B2 (en) * 2010-05-27 2013-12-17 National Taiwan University Graphic processing unit (GPU) with configurable filtering module and operation method thereof
US9727385B2 (en) 2011-07-18 2017-08-08 Apple Inc. Graphical processing unit (GPU) implementing a plurality of virtual GPUs
US20130063462A1 (en) * 2011-09-08 2013-03-14 Microsoft Corporation Tile-based image processing using mipmaps
KR101926570B1 (ko) 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
US8274524B1 (en) * 2011-09-28 2012-09-25 Google Inc. Map rendering using interpolation of style parameters across zoom levels
US9690620B2 (en) * 2011-12-01 2017-06-27 National University Of Singapore Polymorphic heterogeneous multi-core architecture
US8654124B2 (en) * 2012-01-25 2014-02-18 Google Inc. Texture fading for smooth level of detail transitions in a graphics application
CN102799456B (zh) 2012-07-24 2015-11-25 上海晨思电子科技有限公司 一种游戏引擎加载资源文件的方法、装置和计算机
US9111393B2 (en) * 2012-11-26 2015-08-18 Nvidia Corporation System, method, and computer program product for sampling a hierarchical depth map
US9349210B2 (en) * 2012-11-30 2016-05-24 Arm Limited Methods of and apparatus for using textures in graphics processing systems
US9659401B2 (en) 2012-11-30 2017-05-23 Arm Limited Methods of and apparatus for using textures in graphics processing systems
US9734598B2 (en) * 2013-01-15 2017-08-15 Microsoft Technology Licensing, Llc Engine for streaming virtual textures
US9165396B2 (en) * 2013-02-26 2015-10-20 Nvidia Corporation Graphics processing unit with a texture return buffer and a texture queue
US9607356B2 (en) 2013-05-02 2017-03-28 Arm Limited Graphics processing systems
US9070200B2 (en) 2013-05-02 2015-06-30 Arm Limited Graphics processing systems
US9767595B2 (en) 2013-05-02 2017-09-19 Arm Limited Graphics processing systems
US9741089B2 (en) 2013-05-02 2017-08-22 Arm Limited Graphics processing systems
US9626789B2 (en) * 2013-05-07 2017-04-18 Advanced Micro Devices, Inc. Implicit texture map parameterization for GPU rendering
US9542724B1 (en) * 2013-07-09 2017-01-10 Google Inc. Systems and methods for stroke rendering on digital maps
CN104331527B (zh) * 2013-07-22 2018-10-02 腾讯科技(深圳)有限公司 图片生成方法及装置
US9514563B2 (en) 2013-08-30 2016-12-06 Arm Limited Graphics processing systems
US20150279055A1 (en) * 2014-03-28 2015-10-01 Nikos Kaburlasos Mipmap compression
US9652882B2 (en) * 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US9495767B2 (en) 2014-05-15 2016-11-15 Google Inc. Indexed uniform styles for stroke rendering
KR20160032597A (ko) * 2014-09-16 2016-03-24 삼성전자주식회사 텍스쳐를 처리하는 방법 및 장치
US9934606B2 (en) * 2014-09-16 2018-04-03 Intel Corporation Deferred coarse pixel shading
KR102313020B1 (ko) 2014-11-27 2021-10-15 삼성전자주식회사 그래픽스 프로세싱 유닛과 이를 포함하는 장치
CN105574808B (zh) * 2015-12-11 2018-10-26 中国航空工业集团公司西安航空计算技术研究所 一种流水线纹理贴图单元系统
CN105957133B (zh) * 2016-05-10 2018-06-05 网易(杭州)网络有限公司 一种加载贴图的方法和装置
KR20180048081A (ko) * 2016-11-02 2018-05-10 삼성전자주식회사 텍스쳐 처리 방법 및 장치
US10460502B2 (en) 2016-12-14 2019-10-29 Samsung Electronics Co., Ltd. Method and apparatus for rendering object using mipmap including plurality of textures
GB2557657B (en) * 2016-12-14 2020-08-12 Samsung Electronics Co Ltd Mipmap rendering
CN106875483A (zh) * 2017-01-26 2017-06-20 北京航空航天大学 一种直升机地震救援仿真场景模块化构建方法和系统
US9990909B1 (en) 2017-07-12 2018-06-05 Rtom Corporation Cymbal
KR102489266B1 (ko) 2018-08-13 2023-01-17 엘지전자 주식회사 모바일 디바이스 및 그 제어 방법
CN111311720B (zh) * 2018-12-12 2023-05-23 网易(杭州)网络有限公司 一种纹理图像的处理方法和装置
US11164293B2 (en) * 2019-01-30 2021-11-02 National Cheng Kung University Adaptive enhancement method for image contrast based on level of detail
US10540802B1 (en) * 2019-01-31 2020-01-21 Advanced Micro Devices, Inc. Residency map descriptors
GB2583154B (en) * 2019-10-17 2021-04-28 Imagination Tech Ltd Texture filtering
CN111179403A (zh) * 2020-01-21 2020-05-19 南京芯瞳半导体技术有限公司 并行生成纹理映射Mipmap图像的方法、装置及计算机存储介质
US11915337B2 (en) * 2020-03-13 2024-02-27 Advanced Micro Devices, Inc. Single pass downsampler
US20210304488A1 (en) * 2020-03-25 2021-09-30 Advanced Micro Devices, Inc. Sampling for partially resident textures
EP4111419A4 (en) * 2020-04-02 2023-09-13 Sony Group Corporation SUPER-RESOLUTION BLOCK-COMPRESSED TEXTURE FOR TEXTURE MAPPING APPLICATIONS
US11158110B1 (en) * 2021-01-06 2021-10-26 Arm Limited Graphics texture mapping
CN113450444B (zh) * 2021-07-09 2023-03-24 网易(杭州)网络有限公司 生成光照贴图的方法、装置、存储介质及电子设备
GB2610371A (en) * 2021-07-22 2023-03-08 Imagination Tech Ltd Texture filtering

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5438654A (en) * 1993-07-09 1995-08-01 Silicon Graphics, Inc. System and method for sharpening texture imagery in computer generated interactive graphics
CA2229027A1 (en) 1995-08-04 1997-02-20 Microsoft Corporation Method and system for rendering graphical objects to image chunks and combining image layers into a display image
US5943242A (en) * 1995-11-17 1999-08-24 Pact Gmbh Dynamically reconfigurable data processing system
US7266725B2 (en) * 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) * 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
US6338106B1 (en) * 1996-12-20 2002-01-08 Pact Gmbh I/O and memory bus system for DFPS and units with two or multi-dimensional programmable cell architectures
DE19654595A1 (de) * 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE19654593A1 (de) * 1996-12-20 1998-07-02 Pact Inf Tech Gmbh Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit
US6542998B1 (en) * 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
DE19704728A1 (de) * 1997-02-08 1998-08-13 Pact Inf Tech Gmbh Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines
DE19704742A1 (de) * 1997-02-11 1998-09-24 Pact Inf Tech Gmbh Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand
DE19861088A1 (de) * 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
DE19807872A1 (de) * 1998-02-25 1999-08-26 Pact Inf Tech Gmbh Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
US6373496B1 (en) * 1998-08-12 2002-04-16 S3 Graphics Co., Ltd. Apparatus and method for texture mapping
AU5686299A (en) * 1998-08-20 2000-03-14 Raycer, Inc. Method and apparatus for generating texture
US6452603B1 (en) * 1998-12-23 2002-09-17 Nvidia Us Investment Company Circuit and method for trilinear filtering using texels from only one level of detail
US7061500B1 (en) * 1999-06-09 2006-06-13 3Dlabs Inc., Ltd. Direct-mapped texture caching with concise tags
US6744438B1 (en) * 1999-06-09 2004-06-01 3Dlabs Inc., Ltd. Texture caching with background preloading
JP2001005950A (ja) 1999-06-21 2001-01-12 Fuji Photo Film Co Ltd 画像サーバ装置および画像転送方法
JP2001022948A (ja) * 1999-07-08 2001-01-26 Sega Corp 画像処理装置および画像処理方法、並びに記録媒体
ATE476700T1 (de) * 2000-06-13 2010-08-15 Richter Thomas Pipeline ct-protokolle und -kommunikation
US7210129B2 (en) * 2001-08-16 2007-04-24 Pact Xpp Technologies Ag Method for translating programs for reconfigurable architectures
US7444531B2 (en) * 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
RU2216781C2 (ru) * 2001-06-29 2003-11-20 Самсунг Электроникс Ко., Лтд Основанные на изображениях способ представления и визуализации трехмерного объекта и способ представления и визуализации анимированного объекта
US20030030646A1 (en) * 2001-08-10 2003-02-13 Yeh Kwo-Woei Trilinear texture filtering method with proper texel selection
US7434191B2 (en) * 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
WO2003054796A2 (en) * 2001-12-20 2003-07-03 Koninklijke Philips Electronics N.V. Image rendering apparatus and method using mipmap texture mapping
WO2003088203A1 (en) 2002-04-11 2003-10-23 Genoa Color Technologies Ltd. Color display devices and methods with enhanced attributes
JP4024072B2 (ja) 2002-04-18 2007-12-19 株式会社タイトー ミップマップデータの高速読出方式
JP2004078296A (ja) 2002-08-09 2004-03-11 Victor Co Of Japan Ltd 画像生成装置
JP4388895B2 (ja) * 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
EP1494175A1 (en) * 2003-07-01 2005-01-05 Koninklijke Philips Electronics N.V. Selection of a mipmap level
JP4170283B2 (ja) 2004-11-01 2008-10-22 株式会社ソニー・コンピュータエンタテインメント 描画処理装置および描画処理方法
JP2006244426A (ja) 2005-03-07 2006-09-14 Sony Computer Entertainment Inc テクスチャ処理装置、描画処理装置、およびテクスチャ処理方法
KR100601880B1 (ko) 2005-04-27 2006-07-18 에스케이 텔레콤주식회사 Gpu를 이용하여 실시간 3차원 그래픽 이미지를점진적으로 전송하는 방법
US7372468B1 (en) * 2005-10-11 2008-05-13 Nvidia Corporation Anisotropic texture filtering with a modified number of texture samples
CN100468461C (zh) * 2005-11-10 2009-03-11 北京航空航天大学 逼真三维地形几何模型的实时绘制方法
US7561156B2 (en) * 2006-02-08 2009-07-14 INOVO Limited Adaptive quadtree-based scalable surface rendering
US7528551B2 (en) * 2007-02-26 2009-05-05 Semiconductor Components Industries, L.L.C. LED control system

Also Published As

Publication number Publication date
US20080303841A1 (en) 2008-12-11
US7948500B2 (en) 2011-05-24
CN101344961A (zh) 2009-01-14
JP2008305408A (ja) 2008-12-18
TWI377520B (en) 2012-11-21
KR20080108051A (ko) 2008-12-11
DE102008026431A1 (de) 2009-01-08
TW200905608A (en) 2009-02-01
CN101344961B (zh) 2011-06-15
KR100965637B1 (ko) 2010-06-23
DE102008026431B4 (de) 2014-06-12

Similar Documents

Publication Publication Date Title
JP4799588B2 (ja) 常駐ミップマップデータを用いた非常駐ミップマップデータの外挿
US8692829B2 (en) Calculation of plane equations after determination of Z-buffer visibility
US8766988B2 (en) Providing pipeline state through constant buffers
KR101091374B1 (ko) 테셀레이션을 단일 패스로 수행하기 위한 방법 및 시스템
US8917271B2 (en) Redistribution of generated geometric primitives
US8760455B2 (en) Restart index that sets a topology
US9589310B2 (en) Methods to facilitate primitive batching
US8704836B1 (en) Distributing primitives to multiple rasterizers
US8542247B1 (en) Cull before vertex attribute fetch and vertex lighting
US8624910B2 (en) Register indexed sampler for texture opcodes
US9436969B2 (en) Time slice processing of tessellation and geometry shaders
US8570324B2 (en) Method for watertight evaluation of an approximate catmull-clark surface
US8605085B1 (en) System and method for perspective corrected tessellation using parameter space warping
US9594599B1 (en) Method and system for distributing work batches to processing units based on a number of enabled streaming multiprocessors
US8427493B2 (en) Draw commands with built-in begin/end
US9633458B2 (en) Method and system for reducing a polygon bounding box
US7944453B1 (en) Extrapolation texture filtering for nonresident mipmaps
US9058672B2 (en) Using a pixel offset for evaluating a plane equation
US9013498B1 (en) Determining a working set of texture maps
US9406101B2 (en) Technique for improving the performance of a tessellation pipeline
US9111360B2 (en) Technique for improving the performance of a tessellation pipeline
US8704835B1 (en) Distributed clip, cull, viewport transform and perspective correction
US8948167B2 (en) System and method for using domains to identify dependent and independent operations
US9665969B1 (en) Data path and instruction set for packed pixel operations for video processing
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: 20101124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110613

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

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

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

Free format text: PAYMENT UNTIL: 20140812

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4799588

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