(57)【要約】  テクスチャ化されるべきオブジェクトのための画素データを提供し、これらのオブジェクトのためのテクスチャ・データを提供し、オブジェクトおよびテクスチャ・データを、ブレンド・バッファ(32)に提供することによって、３次元コンピュータ・グラフィックス・システム内のオブジェクトについてのテクスチャリング・オペレーションが実行される。テクスチャ・データは次に、ブレンド・バッファ内のテクスチャ・データにアクセスを有する各オブジェクトの各画素に適用され、引き続き、結果としての画素データを、フレーム・バッファに書き込む。
2005513633.tif 000002
【特許請求の範囲】
【請求項１】
テクスチャ化されるべきオブジェクトのための画素データを供給し、
前記オブジェクトの画素に適用するためのテクスチャ・データを供給し、
オブジェクトおよびテクスチャ・データを、ブレンド・バッファに供給し、
前記テクスチャ・データを、当該テクスチャ・データへのアクセスを持つ各オブジェクトの各画素に適用し、そして、
結果としての画素データを、フレーム・バッファに書き込む、
ステップを含む、３次元コンピュータ・グラフィックス・システム内のオブジェクト(objects)についてテクスチャリング・オペレーションを実行するための方法。
【請求項２】
複数の異なったテクスチャのためのテクスチャ・データが、前記ブレンド・バッファに提供され、引き続き、当該テクスチャ・データにアクセスを持つ各オブジェクトの各画素に適用される、請求項１に記載の方法。
【請求項３】
テクスチャ化されるべきオブジェクトのための前記画素データが、多角形データから得られた(derived)データを含む、請求項１または２に記載の方法。
【請求項４】
前記テクスチャ・データが、多角形ウォーキング(polygon walking)によって各オブジェクトの各画素に適用される、請求項３に記載の方法。
【請求項５】
前記フレーム・バッファに書き込むステップが、各画素のために一回だけ書き込むステップ、を含む、以上のいずれかの請求項に記載の方法。
【請求項６】
オブジェクト・データを、前記ブレンド・バッファに提供するステップが、
前記ブレンド・バッファ内の各画素の位置、および、同時に処理されるべき画素の数、を規定するデータを提供するステップを含む、
以上のいずれかの請求項に記載の方法。
【請求項７】
オブジェクト・データおよびテクスチャ・データを、前記ブレンド・バッファに提供するステップが、
各画素がテクスチャにアクセスを持つ、当該テクスチャの数を規定するデータを提供するステップ、
を含む、以上のいずれかの請求項に記載の方法。
【請求項８】
前記ブレンド・バッファの容量(capacity)よりも、より大きな容量を必要とする多角形を、データを前記ブレンド・バッファに書き込む前に、サブ分割(sub-dividing)するステップを含む以上のいずれかの請求項に記載の方法。
【請求項９】
１つより多いオブジェクトに対する画素データを、同時に前記ブレンド・バッファに提供するステップを含む請求項８に記載の方法。
【請求項１０】
テクスチャが前記ブレンド・バッファに提供されたことを表す(denote)ためのフラグを設定するステップを含む、以上のいずれかの請求項に記載の方法。
【請求項１１】
テクスチャ化されるべきオブジェクトを規定する画像データのための供給源(supply)、
前記オブジェクトに適用されるべきテクスチャ・データのための供給源、
前記供給された画素およびテクスチャ・データを記憶するためのブレンド・バッファ、
前記テクスチャ・データを、前記テクスチャ・データにアクセスを有する各オブジェクトの各画素に適用するためのブレンディング・プロセッサ、および、
結果としての画素データを、フレーム・バッファに書き込むための手段、
を備える、３次元コンピュータ・グラフィックス・システム内のオブジェクトに対してテクスチャリング・オペレーションを実行するための装置。
【請求項１２】
前記ブレンド・バッファおよびブレンディング・ユニットが、前記フレーム・バッファを含むＩＣから分離された集積回路上で提供される、請求項１１に記載の装置。
【請求項１３】
テクスチャ・データを提供するための手段が、複数の異なったテクスチャのためのデータを、前記ブレンド・バッファに、一回だけの書き込みで提供する、請求項１１または１２に記載の装置。
【請求項１４】
テクスチャ化されるべきオブジェクトのための前記画素データが、多角形データから得られた(derived)データを含む、請求項１１、１２、または１３に記載の装置。
【請求項１５】
前記ブレンディング・プロセッサが、前記テクスチャ・データを、多角形ウォーキング(polygon walking)によって、各オブジェクトの各画素に適用する、請求項１４に記載の装置。
【請求項１６】
前記結果としての画素データを、前記フレーム・バッファに書き込むための前記手段が、各画素に対して、一回だけの書き込みを実行する、請求項１１ないし１５のいずれかに記載の装置。
【請求項１７】
オブジェクト・データを、前記ブレンド・バッファに提供するための前記手段が、前記ブレンド・バッファ内の各画素の位置で規定されたデータ、および、同時に処理されるべき画素の数、を提供する、請求項１１ないし１６のいずれかに記載の装置。
【請求項１８】
オブジェクト・データおよびテクスチャ・データを、前記ブレンド・バッファに提供するための手段が、各画素がアクセスを有するテクスチャの数を規定するデータを提供する、請求項１１ないし１７のいずれかに記載の装置。
【請求項１９】
データを前記ブレンド・バッファに書き込む前に、前記ブレンド・バッファの容量よりも、より大きな容量を必要とする多角形を、サブ分割(subdividing)するための手段を含む、請求項１１ないし１８のいずれかに記載の装置。
【請求項２０】
テクスチャが前記ブレンド・バッファに提供されたことを表示するためのフラグを設定するための手段を含む請求項１１ないし１９のいずれかに記載の装置。
【請求項２１】
テクスチャ・データを、全ての関連する画素データが、ある組の各画素に適用されるまで、順番に、当該データを必要とする各オブジェクトの各画素のための画素の組に適用し、そして、
前記組のための画素データを、フレーム・バッファに書き込む、
ステップを含む、３次元コンピュータ・グラフィック画像においてテクスチャリング・オペレーションを実行するための方法。
【請求項２２】
テクスチャ・データを、全ての関連する画素データが、ある組の各画素に適用されるまで、順番に、当該テクスチャ・データを必要とする各オブジェクトの各画素のための画素の組に適用するための手段、および、
前記組のための画素データを、フレーム・バッファに、一回だけの書き込みで、書き込むための手段、
を備える、３次元コンピュータ・グラフィック画像についてテクスチャリング・オペレーションを実行するための装置。
【請求項２３】
実質的に本出願中に記載された、３次元コンピュータ・グラフィックス・システム内のオブジェクトについてテクスチャリング・オペレーションを実行するための方法。
【請求項２４】
実質的に本出願中に記載された、３次元コンピュータ・グラフィックス・システム内のオブジェクトについてテクスチャリング・オペレーションを実行するための装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レンダリングされているオブジェクト(object)上で実行されるべきテクスチャリング(texturing)及び／又はブレンディング・オペレーションを可能とするタイプ(types)の３次元コンピュータ・グラフィック・システムに関連する。
【背景技術】
【０００２】
３次元グラフィック・システムの例は、特許文献１に説明される。これは、レンダリングされるべき画像内のオブジェクトのどの表面が、画像内の各画素において可視的かを決定するための装置および方法を説明する。
各画素において可視的なオブジェクトの決定に続いて、テクスチャ・データ(texture data)が、画素に適用され得る。いかにして、これが為されるかの例は、特許文献２に説明される。これは、テクスチャリングされるべき画像が、複数の矩形のタイルにサブ分割(sub-divided)される、テクスチャリング・システムを説明する。次に、各タイルに対して順番に、タイル内の画素のテクスチャリングが実行される。また、ブレンディング(blending)オペレーションは、半透明の表面(translucent surfaces)で実行され得る。
【０００３】
テクスチャリングのこのフォームが適用されるシステムのタイプが、図１に示される。これは、フレームまたはフレームのタイルの中のテクスチャおよび多角形(これらは、そのフレームまたはタイル内の画素に適用される)を決定するテクスチャ反復ユニット２を備える。テクスチャ読取ユニット(texture read unit)は４、テクスチャ・キャッシュ６から、関連するテクスチャ・データを検索し、これを、ブレンディング・ユニット８に渡す。これは、フレーム・バッファ10から画素を取上げ、ブレンディング・オペレーション内でテクスチャを適用することによってそれらを修正し、そして、それらをフレーム・バッファに戻して書き込む。フレーム・バッファからの読み出しは、一度に１つのフレーム・バッファ・データのタイルだけを含み得る光キャッシュ・メモリ12を介するかもしれない。
この先行技術システムによって実行される工程は通常、図２ＡおよびＢに示されるような２つのメインの方法で実行される。図２Ａは、多角形ウォーキング(polygon walking)として知られているものを示す一方、図２Ｂは、これに対する代替的なものを示す。
多角形ウォーキングは、１つのテクスチャ及び／又はブレンディング・オペレーションのための画素が、それらの画素またはそれらの画素のサブセットのための引き続くテクスチャまたはブレンディング・オペレーションに進む前に、順次、全体的に(through)歩まれる(walked)、システムを意味する。これのオペレーションのフローは、図２Ａに図示される。２つのパラメータが用いられる。「ａ」は、実行されるべきテクスチャリングまたはブレンディング・オペレーションの数であり、「ｂ」は、全体的に歩まれる(walked through)画素の数である。最初、ａおよびｂは、ステップ14において０に設定される。オペレーションのリスト内の最初のものが次に、ステップ16において画素ｂに適用される。そして18において、これが、オペレーションが適用されるべき最後の画素か否か、の判断が為される。もしこれが、オペレーションが適用されるべき最後の画素でないならば、20において画素番号ｂが増加され、フローはステップ16に戻り、ここでオペレーションａが、新たな画素ｂの上で実行される。最後の画素に到達された時に、22で、リストａ内の最後のオペレーションが実行されたか否かの判断が為される。もしリストａ内の最後のオペレーションが実行されていないならば、24においてオペレーション番号ａが増加され、画素番号ｂは、０にリセットされる。フローは次に、ステップ16に戻り、上述のように続く。最後のオペレーションａが到達された時に、システムはステップ26において、レンダリングされるべき次の多角形に行き、システムは、ステップ14に戻り、ここでオペレーションａが０に設定され、画素ｂの数が０に設定される。
【０００４】
多角形ウォーキング、即ち一度に１つの多角形を処理すること、のメインの利点は、(テクスチャ・リードまたはブレンド・オペレーションが、前の読出しまたはブレンドの結果に依存する場合のような)、データ・ハザードに起因する処理損失(processing penalties)を削減することである。歩まれる(walked through)画素のシーケンスが大きくなるにつれて、損失が吸収される潜在時間(latency)が長くなる。しかし、例えば１つの画素だけを持つ非常に小さい多角形においては、ウォーキング・システム(walking system)は、非ウォーキング・システムに劣化(degenerates)する。
非ウォーキング・システムは、図２Ｂに示される。再び述べると、これが、ステップ14において開始され、オペレーションに対応するパラメータａおよびｂ、および画素が、０に設定される。16において、第１のオペレーションａが、画素ｂの上で実行される。次に22において、これが、リストａ内のオペレーションの最後か否かの判断が為される。もしこれが、リストａ内のオペレーションの最後でないならば、28においてａが増加され、16において新たなオペレーションａが画素ｂに適用される。これが、22において、最後のオペレーションが実行されたとの判断が為されるまで継続する。このポイントにおいて、画素番号ｂが増加され、30においてオペレーション番号ａが０にリセットされ、フローは次に、ステップ16に戻り、ここで、以前のように続く。
このタイプのシステムのメインの利点は、中間結果のために、非常に小さな記憶（容量）だけが要求されることである。何故なら、一度に１つの画素だけが作業されるからである。多角形ウォーキング(polygon walking)において、多角形は、全体のレンダリング・ターゲット(render target)くらい大きいことがあり得るので、レンダリングされたターゲット内の各画素に対する全ての中間結果のために十分な記憶容量がある必要があり得る。
【０００５】
【特許文献１】欧州特許出願番号ＥＰ−Ａ−072-365
【特許文献２】英国特許出願番号9501832.1
【発明の開示】
【課題を解決するための手段】
【０００６】
本発明の好ましい実施例は、多角形ウォーキング・タイプのシステムに基づく。それらのシステムは、ハードウェア内の画素ブレンディング・オペレーションが、より柔軟になってきており、それ故に、レンダリング・ターゲット内の各画素のための、複数の、一般目的の、リード／ライト・レジスタに対する記憶を可能としているという事実を利用する。更に、利用可能なレジスタの数の増加およびレンダー・ターゲット・サイズの増加と同様に、これらのレジスタの正確さが増加している。
これらの進展によって、現在、テクスチャ・リード(reads)の再発行(re-issuing)および、複雑なブレンディング・オペレーションの、シーケンシャルなパス(sequential passes)へのブレーキング(breaking)によってのみ解決され得る、問題が引き起こされる。これらの結果の双方が、パフォーマンスの損失をもたらす。前のオペレーションの結果に依存するテクスチャ・リード(texture reads)またはブレンディング・オペレーション、の上でのパイプライン待ち時間(latency)によって引き起こされる問題もまた存在する。図１の12に示されるもののようなバッファまたはキャッシュが、一般的なグラフィック処理チップに収納されるためには余りにも大きく、キャッシュ12またはフレーム・バッファ10を伴う、限定されたリード修正ライト工程(read modify write process)の帯域幅のために、パフォーマンス損失に繋がるので、記憶（部）(storage)のコストもまた問題である。
【０００７】
本発明の特定の実施例は、グラフィック・チップ上での画素ブレンディング・バッファを与える。それは、フレーム・バッファの一部分、または、フレーム・バッファからのタイルが、多角形上で、多角形毎に(on a polygon by polygon basis)アクセスされることを可能とする。大きな多角形が決して、所定のサイズを越えないように、大きな多角形は分解される。より小さな多角形は、画素ブレンディング・バッファを満たすことによって、システムのパフォーマンスを改善するために、一緒に結合され得る。
好ましくは、本発明の実施例は、複数のテクスチャが、１つのブレンディング・オペレーション内で同時にアクセスされることを可能とする。
好ましくは、テクスチャ・データは、ランダムな順序で、テクスチャ・リード要求をテクスチャ・メモリに再発行する必要無しに、再使用され得る。
好ましくは、チップ上で提供された物理的レジスタの数より多いテクスチャが、サポートされ得る。
好ましくはこれらの特徴は、実行されるべきテクスチャおよびブレンディング・オペレーションの数に依存している画素のシーケンスの処理中に、無限定に使用され、再使用され得る、複数のリードおよびライト・ポートを伴ったレジスタの組を用いて実行される。
【発明を実施するための最良の形態】
【０００８】
本発明は、添付の請求項においてより正確に規定される。この請求項に対してこれから参照が為される。
これから本発明の特定の実施例が、添付の図面を参照した例を用いて詳細に説明される。
図３のブロック図は、図１に示されたタイプの標準の３−Ｄ画素パイプラインの修正されたバージョンである。システムの心臓部にあるものは、ブレンド・バッファ32である。これは、ライト・ポート34を介してアクセスされ、リード・ポート36を介してデータ出力を提供する。
図１内のもののようなテクスチャ反復ユニット2は、テクスチャ座標をシステムに提供する。テクスチャ反復ユニット2はこれを、更なるテクスチャ計算ユニット40を介して行う。このテクスチャ計算ユニット40は、ブレンド・オペレーション・ユニット8からのフィードバック・ループでデータを受け取る。
ブレンド・バッファ32およびそのリード・ライト・ポートは、テクスチャ・リード・ユニット4とブレンド・オペレーション・ユニット8の間に位置する。ブレンド・バッファ32を用いることによって、ブレンド・オペレーション・ユニット8にとって、フレーム・バッファ上でリード修正ライトを実行することが不必要となる。したがって、ブレンド・オペレーションは、ブレンド・バッファ8から直接データをライト・ポート(write ports)34に取ってくる、フィードバック・ループＸを用いて、ブレンド・バッファに保持されたデータ上で、所望なだけ多くの回数実行され得る。
【０００９】
ブレンド・バッファは、レジスタ内にワードの組を記憶する。このレジスタでは、各ワードは、標準記憶アレイのケースと同様と思われるような、特有のシーケンシャルなアドレスを持つ。ブレンド・バッファ内の各ワードは、以下のフィールドを記憶する：
１．レンダリング・ターゲット(render target)(フレーム・バッファまたはフレーム・バッファのタイル)内の画素のＸ，Ｙ位置、
２．ｑ、即ち、ハードウェア・パイプラインによって同時に処理されている画素の数
３．Ｍ、即ち、各画素がレジスタへのアクセスを持つ当該レジスタの数であり、ここで、各レジスタは、以下のフィールドから成る：
・ＫMビットを含むアルファ／Ｑチャンネル
・ＫMビットを含む赤／Ｕチャンネル
・ＫMビットを含む緑／Ｖチャンネル
・ＫMビットを含む青／Ｗチャンネル
上述のように与えられたｑの値は、どれだけ多くの画素が、ハードウェア・パイプラインによって同時に処理されるかを規定する。Ｍの値は、各画素がアクセスを持つレジスタの数を規定する。例えば、Ｍの各レジスタに対して、４つのチャンネルが、ＫMによって規定された、それらのチャンネル自身の精測(precision)を持つ。設計者は、リード・オンリー反復された拡散オペレーション(diffuse operations)および鏡面カラー(specular colours)のためにＫMとして８の値を使用でき、一般目的のリード／ライト・レジスタのためにＫMとして16の値を使用できる。
【００１０】
ブレンド・バッファの深さはｎとして定義され、これは図４に示される。ここで、アドレスは、０からｎ-1の範囲に亘る。したがって、ｎは、一度に処理され得る画素の最大数であるが、この値は任意のものであり、ハードウェア設計段階で選択される。より大きな値ｎを選択することは、グラフィック・チップ上で追加の記憶が必要とされることに繋がる。しかし、より多くの画素が一度に処理され得るので、より大きな値ｎはパフォーマンスを向上させる。より小さな値ｎは、より小さなチップ上のブレンド・バッファをもたらすが、データ・ハザード(data hazards)が、パフォーマンス劣化を引き起こすであろう。他の数ｍ、ｑ、およびｋは、グラフィック・システムの他の部分での制限によって、或いは、外部仕様によって、固定される。
通常の最適化は、1つの画素パイプラインのためにハードウェアを複製し、それらを並行して走らせることである。したがって、複数の画素は、クロック当りでステップ16、18および20を実行するが、それらの全ての画素は依然として、同じインデックスｂを共有する。並行画素パイプラインの数は、図４の値ｑとして規定される。
ｑ個の画素が同じインデックスｂを供給するので、ブレンド・バッファ内の同じワードをも共有することになる。これが、ブレンド・バッファ内の各アドレスが、図４に示されるように画素データのｑ個の組をサポートする理由である。
【００１１】
図４は、(spsが、(x,y)スクリーン位置をエンコードするために要求されるビット数であることを前提として)、ブレンド・バッファのデータバス幅が：
【数１】
2005513633.tif 000003
として表現されることを示す。
図３において、リードおよびライト・ポートは、図４に示されるブレンド・バッファへのアクセスを持つ。ブレンド・バッファは、複数の(multiple)ポートが異なったレジスタにアクセスしているときに、アービトレーション(arbitration)無しにブレンド・バッファを使用できるように、個々のレジスタのリード／ライト・エネーブルおよびリード／ライト・アドレス、をサポートする。
もし、ライト・ポートが、異なったアドレスにおいて同じレジスタの更新を望むならば、アービトレーション(arbitration)が必要とされる。この設計において、テクスチャ・ルックアップ・ユニットは常に、テクスチャ・ブレンディング・ユニットに亘ってライト・プライオリティ(write priority)を持つ。この提案は、１つのリード・ポートだけを持つので、アービトレーションは必要とされない。アドレスｂのためにリード・アクセスが実行される時には、リード・ワードは、並行パイプラインの同時実行を可能とする全ての並行パイプのためのデータを含む。
【００１２】
一般的にｎの値は、レンダリング・ターゲット・サイズ(render target size)より小さい。例えば、レンダリング・ターゲットは、ｎがトータル64ワードである、64×64画素のタイルでありうる。より大きな多角形は、それらを処理するためにｎワード以上が必要とされるような画素シーケンス(pixel sequences)を持つことになる。これが、ｎと等しいか或いはそれより小さい、より小さなシーケンスに分割される必要がある大きな多角形を持つケースとなるであろう。シーケンスを分割することに付随するパフォーマンス・コストが存在するが、これは、比較的長いシーケンスのみで発生することになる。この、大きな多角形の分割(splitting)は、図３のテクスチャ反復(iteration)ユニット2によって実行される。３−Ｄグラフィックス・パイプラインでの反復は、三角形によって覆われる各画素のための(u,v)値を決定するために、３つの頂点の３つの(x,y)スクリーン座標とともに、当該三角形の３つの頂点のための(u,v)テクスチャ座標のようなデータが使用される場合の工程である。これが、図５に示される。
この設計によって用いられる多角形ウォーキング方法において、反復器(iterator)は、規定された順序で画素を突き進み(goes through)、シーケンシャルに各画素に対する(u,v)値を線形的に補間する。例えば、((x,y)＝(13,14)の場合の参照番号5によって指し示されるもののような)三角形によって含まれる全ての画素に対する適切な(u,v)値を線形的に補間する。もし、複数の並行画素パイプラインが存在するならば、隣接する画素に対する複数の(u,v)値が、クロック毎に反復される。
この実行は、全体の三角形が複数回(実際、図２Ａに示される回数だけ)反復される、という追加された能力を持つ。この場合には三角形は、(x,y)および(u,v)を持つだけでなく、実際それは、(x,y)および、三角形のシーケンシャルなパス中に反復され得る多くの(u,v)データの組をサポートすることになる。
(u,v)データが反復されるにつれて、テクスチャをサンプリング(sample)するために、結果が、ブレンド・バッファに三角形の開始において０から始まるシーケンシャルなアドレスで書き込まれる、当該結果が、テクスチャ・リード・ユニット4において使用される。
【００１３】
仮に全体の三角形が１つのパス中に反復された場合、もし三角形内の画素の数がブレンド・バッファがオーバフローすることを引き起こすならば、実行(implementation)には特別の処理を必要とする。これは、図６に示されるように解決される。フロー６Ａは、もし、ブレンド・バッファが、最も大きい有り得る三角形を収容するために十分大きかった場合、如何にして処理が作動するかの例を示す。フロー６Ｂは、もしブレンド・バッファが64個の画素を保持でき、三角形のサイズが148画素の場合、何が起こり得るかを示す。フロー６Ｃは、もしブレンド・バッファが64画素を保持し、同じ状態を共有する各々のサイズが12画素の４つの三角形が存在するなら、何が起こり得るかを示す。
図３においては、一旦テクスチャ座標が反復され、大きな多角形が分割され、または小さな多角形が結合されたならば、要求されたテクスチャ座標は40において計算され、次に、テクスチャ・リード・ユニット4によってテクスチャ・キャッシュ6から、図１に示されたのと同じやり方で読み込まれる。
テクスチャ座標計算ユニット40は、反復器ユニット28によって生成された反復されたテクスチャ座標に修正を加えられる。一般的な場合には、修正は為されず、テクスチャ座標は、反復された、そのままで使用される。しかし、エンド・ユーザは、テクスチャが読み出す前に(あるいは、更にその替わりに)、テクスチャ座標に対するいくつかの修正を制御出来る。この修正は、しばしば、摂動(perturbation)と呼ばれる。
【００１４】
テクスチャは次に、ライト・ポート34を介してブレンド・バッファ32に供給される。ブレンド・バッファおよびブレンド・オペレーション・ユニット8は次に、図２Ａとの関係で説明されたタイプの多角形ウォーキングを、フィードバック・ループＸを介して、テクスチャの現在の組に対してブレンド・バッファに記憶された全ての画素0からＮに対して実行する。一旦、ブレンド・バッファ内に現在記憶される画素に関連する多角形の全てに対して全てのオペレーションが実行されると、ブレンド・バッファ内の画素データの現在のコンテンツは、単一オペレーションで、フレーム・バッファ10に書き込まれる。データが書き込まれるアドレスは、ブレンド・バッファに記憶されたＸ，Ｙ位置データに依存する。0からｎ-1に、各ワードに記憶されたＸ，Ｙ位置は、必ずしもシーケンシャルではないことが理解されるであろう。処理のために大きな多角形が分割された場合には、それらはシーケンシャルであることが通常である。しかし、より小さな多角形が、同時に結合されて処理される場合には、アドレスは、シーケンシャルではない。したがって、フレーム・バッファへの書き込みは、ランダム・ライト(random write)である。これは、一回での書き込みオペレーションであり、図１に示されたタイプの、複数回のリード修正ライト(read-modify-write)プロセッサではない。画素およびテクスチャの次の組は次に、フィードバック・ループによってブレンド・バッファに送られる。一旦、多角形(三角形)に対する全てのオペレーションが完了し、テクスチャ画素データ全てが１つのゴー・サインで(all in one go)フレーム・バッファに書き込まれると、ブレンディング・バッファのコンテンツは、リセットされるか、或いは無効とされる。ブレンド・バッファが、図３のテクスチャ・リード・ユニット4を介して充填され始めるにつれて、多角形は次に、クリアされたブレンド・バッファでテクスチャ化され始める。ブレンド・バッファの無効化の工程は、制御ユニットに配置された全ての有効なフラグを否定する(negate)ことによって実現される。ブレンド・バッファ内のレジスタに対する有効なフラグを否定することは、リード・ポート36によってレジスタにアクセスする最後のブレンド・オペレーション「ａ」の最中に発生する。それ故、本当の最後のブレンド・オペレーション「ａ」が完了する時刻までには、全てのフラグが否定され、新しい多角形または三角形に対してブレンド・バッファがクリアされたことを示すことになる。
【００１５】
値ｎの提供が分別良く選択されることによって、ブレンド・バッファ32は、グラフィックス・チップの上に提供され得、これによって、大きな動作ゲインを与える。これは、ブレンディング・オペレーションが、複数のレジスタのリードおよびライトを要求する時に、それらが、比較的遅い外部フレーム・バッファにアクセスする必要が無いためである。現在考慮の対象である特定のタイルのコンテンツを記憶するために、図１に示されるタイプのキャシュ12が用いられた時でさえ、このフレーム・バッファは勿論、チップ上に載置(store)するには大き過ぎる。
図３のリードおよびライト・ポート34および36は、別個の、包含された(contained)、制御ユニットとして、ハードウェア・セマフォー(semaphore)メカニズムを含む。セマフォーは、３つの問題を解決する。第１に、サマフォーは、ブレンド・バッファの内部に配置された有効なデータへの上書きを試みるポートをブロック(blocks)(仕切りをつける(stalls)としても知られる)する。第２にセマフォーは、バッファからの無効なデータの読出しを試みるリード・ポートをブロック(仕切りをつける）する。第３に、セマフォーは、書き込み権限(write-ownership)を有さないレジスタへの書き込みを試みるライト・ポートをブロック(仕切りをつける)する。
【００１６】
これら全ては、セマフォー・ユニット内の２つのフラグ・セットたる、有効なフラグの組および書き込み権限フラグの組、で実現される。２つのライト・ポート(テクスチャ・リードからの１つ、および、ブレンディング・ユニットからの１つ)および１つのリード・ポート(ブレンディング・ユニットからのもの)を持つシステムに対しては、各レジスタ、および、ブレンド・バッファ内の各ワードと対応付けられた、１つの有効フラグが存在する。例えば、それぞれが６個のレジスタを持つ、32位置(locations)を持つブレンド・バッファは、32×６(192)のフラグを持ち得る。レジスタ当り、１つだけの書き込み権限フラグが存在するので、前の例では、６個の書き込み権限フラグのみが存在し得る。
各フラグは、セット状態およびクリア状態を持つ。いくつかの場合において、これらの状態は、エンド・ユーザによって記述され、現在実行されているオペレーションに基づく。言い替えれば、システムは部分的に、いつフラグがトグルする(toggle)かの、エンド・ユーザの判断に依存する。
【００１７】
有効にセット：所定のブレンド・バッファ・ライト・アドレスにおいて所定のレジスタに対してライト・アクセスが成功した時。
有効にクリア：所定のブレンド・バッファ・リード・アドレス、および、各リード・レジスタに対して、成功したリード・アクセスの発生後に、もし、(エンド・ユーザによって規定された)現在のオペレーションが、有効なフラグがクリアされるべきと示した場合。
書き込み権限フラグ：最後の成功した、レジスタへのライト・アクセスが、三角形内のオペレーションに対して発生した時、もしエンド・ユーザが、このオペレーションに対してそうすべきことを示すならば、書き込み権限が交換される。
上で規定された有効フラグおよび書きこみ権限(write-ownership)フラグの２つのリソースを伴って、３つのセマフォー・メカニズムを実施することが容易となる。
ライト・ポート・ブロック：レジスタの有効ビットが、現在のブレンド・バッファ・ライト・アドレスのために設定される、当該レジスタへの書き込みが為される時に、または、レジスタへの書き込みが為され、書き込み権限が授与されない時。
リード・ポート・ブロック：現在のブレンド・バッファ・リード・アドレスに対してレジスタの有効ビットが設定されていない、当該レジスタを読出す時。
【００１８】
セマフォー・ユニットの第２の利用は、テクスチャ・リード・ユニット4およびブレンディング・ユニットが、レジスタ(即ち、再使用レジスタ)にライト(write)およびリ・ライト(rewrite)することを許容する。これは、異例に有用な特徴である。例えば：
・テクスチャ・リード・ユニットが、ｒ０を書き込む。
・ブレンディング・ユニットが、計算でｒ０を用いる。
・テクスチャ・ユニットが、ｒ０に再び書き込む。
・ブレンディング・ユニットが、新しいｒ０を、計算で使用する。
上述の例において、テクスチャ・ユニットは、ｒ０に２回書き込んだ。
上述の実行は、複数のライト・ポートに加えて、複数のリード・ポートをサポートするために拡張され得る。複数のリード・ポートを取り扱うために、各ポートは、それ自身の有効なフラグの組を必要とする。フラグを設定するための状態は、全てのリード・ポートに妥当するが、各リード・ポートは個々に、いつ、フラグがエンド・ユーザによってクリアされるかを制御する。もしリード・ポートの有効フラグのいずれかが依然として、所定のレジスタおよびライト・アドレスのために設定されるならば、ライト・ポートのフラグはストール(stalled)される。
【００１９】
これらのフラグの目的(object）は、実行されねばならぬテクスチャ・リードの数を制御することである。これは、ブレンディング・オペレーションの数と等しい必要はない。それにも関わらず、多角形内の画素の数は、その多角形内の、全てのテクスチャ・リードに対して、および、全てのブレンディング・オペレーションに対して、同じものを維持しなければならない。
【００２０】
図３の例は、２つの白ポート34および２つのリード・ポート36を持つブレンド・バッファ32を示す。代替的な実行において、複数のライト・ポートは、8で実行されたブレンディング・オペレーションの結果から来ることが可能(can come from)である。これは、図２Ａに対応するシステムのケースのように、画素を、一度に１つずつウォーク・スルー(walk through)する必要無しに、複数のブレンディング・オペレーションの処理を同時に可能とし得る。これは、パフォーマンスにおける改善に繋がり得る。したがって、複数のリードおよびライト・ポートの分割、および、改善された性能に繋がり得る。同様に、複数のリードおよびライト・ポートは、複数のテクスチャ・リードが同時に引き起こされる(incur)ことを可能とする。
【００２１】
各ユニット(テクスチャおよびブレンド)は個々に、図２Ａに示された方法によって「多角形を歩く(walks the polygon)」。図７に示すように、双方のユニットのために、オペレーションの数(即ち「パス(passes)」)、ａ、が異なりうるが、与えられた多角形(または、小さな状態−共有多角形(state-sharing polygons)の組)についての双方のユニットに対して、画素の数、ｂ、は常に全く同じである。
【図面の簡単な説明】
【００２２】
【図１】先行技術のシステムである。
【図２】多角形ウォーキングおよび非ウォーキングの代替例を示す。
【図３】本発明の好ましい実施例のブロック図。
【図４】図３のブレンド・バッファにおけるワードのデータ構造を示す。
【図５】レンダリングされるべきタイルの一部分をカバーする特性をグラフカルに示す。
【図６】３つの異なった信号ブレンド・バッファに対して、如何にして画素の反復が進むかを示す。
【図７】図３のブレンドおよびテクスチャ・ユニットの明確化である。
【図１】
2005513633.tif 000004
【図２】
2005513633.tif 000005
【図３】
2005513633.tif 000006
【図４】
2005513633.tif 000007
【図５】
2005513633.tif 000008
【図６】
2005513633.tif 000009
【図７】
2005513633.tif 000010
【国際調査報告】
2005513633.tif 000011
2005513633.tif 000012
2005513633.tif 000013