(57)【特許請求の範囲】
【請求項１】
３次元レンダリングおよびストレッチ・ブリッティングに使用される３Ｄパイプラインにおいて、
ストレッチ・ブリッティング用の矩形モードと３次元レンダリング用の三角形モードとをイネーブルするコマンド・ストリーム・コントローラと、
前記パイプライン内で３つの頂点を受けとり、前記矩形モードではディスティネーション表面内の矩形であって前記３つの頂点によって定義される矩形に関するアドレスを生成し、前記三角形モードではディスティネーション表面内の三角形であって前記３つの頂点によって定義される三角形に関するアドレスを生成するウインドワと、
前記モードに基づいて矩形または三角形のそれぞれのピクセルに関する属性を生成するために補間を行うフィルタと、
出力データの整列およびディスティネーション表面に対する該出力データの書き込みを行うカラー・カリキュレータと
を含む３Ｄパイプライン。
【請求項２】
前記ウインドワは、
前記矩形モードにおいて矩形内のピクセルのアドレスを生成するアドレス生成器と、
その生成したアドレスを用いてディスティネーション・アドレスを生成するマッピング・アドレス生成器と
を有する請求項１記載の３Ｄパイプライン。
【請求項３】
３次元（３Ｄ）パイプラインにおける方法であって
コマンド・ストリーム・コントローラが、制御信号を受け取るステップと、
セットアップ・エンジンが、三角形または矩形のエリアの頂点を定義するための３つの座標ポイントを受け取るステップと、
ウインドワが、前記制御信号に基づいて、前記エリアが三角形であるか矩形であるかを決定し、前記エリアが三角形の場合には、前記エリアに関する３Ｄイメージを生成し、前記エリアが矩形の場合には、前記エリアに関するストレッチ・ブリッティング・オペレーションを実行するステップと
を含む方法。
【請求項４】
３次元（３Ｄ）パイプラインにおけるディジタル・ビデオ・データのストレッチ・ブリッティングを行う方法であって、
コマンド・ストリーム・コントローラでストレッチ・ブリッティング用の矩形モードをイネーブルする矩形コマンドまたは３次元レンダリング用の三角形モードをイネーブルする三角形コマンドを受け取るステップと、
セットアップ・エンジンが、直角三角形を定める左上頂点、右下頂点、および左下頂点を受け取るステップと、
ウインドワが、前記矩形モードでは、前記頂点に基づく矩形を定義するバウンディング・ボックスを、前記三角形モードでは、前記頂点に基づく三角形を定義するバウンディング・ボックスを割り出すステップと、
前記ウインドワが、イメージのディスティネーション表面を計算するステップと、
前記ウインドワが、イメージのソース表面を計算するステップと、
フェッチ・ユニットが、前記三角形モードにおいて、ピクセル値のフェッチおよびキャッシュを行うステップと、
補間器が、前記三角形モードにおいて、前記ピクセル値の補間を行って、前記ディスティネーション表面におけるピクセルを生成するステップと
を含む方法。
【請求項５】
プロセッサと、
メモリと、
３次元レンダリングおよびストレッチ・ブリッティング用の３Ｄパイブラインとから構成され、
前記３Ｄパイプラインは、
三角形モードの３次元レンダリングまたは矩形モードのストレッチ・ブリッティングのいずれかをイネーブルする信号を受信するコマンド・ストリーム・コントローラと、
エリアを定義する３つの頂点を受けるとともに、前記信号に基いて前記エリアが矩形モードの矩形であるか三角形モードの三角形であるかを決定するウインドワとを具備し、
前記３Ｄパイプラインは、前記三角形モードでは、三角形に関するデータに基づく３Ｄイメージを発生し、前記矩形モードでは、矩形エリアのデータに対してストレッチ・ブリッティング動作を実行することを特徴とするコンピュータ・システム。
【請求項６】
テクスチャ・マッピングを含む３次元レンダリング・オペレーションおよび矩形内の画像をスケーリングして転送する伸縮転送オペレーションに使用される３Ｄパイプラインであって、
伸縮転送命令に応答して、前記伸縮転送オペレーションをイネーブルし、レンダリング命令に応答して、前記３次元レンダリング・オペレーションをイネーブルするコマンド・ストリーム・コントローラと、
前記伸縮転送オペレーションにおいては前記伸縮転送命令からの３つの頂点によって定義される矩形内のピクセルのアドレスを生成し、前記３次元レンダリング・オペレーションにおいては前記レンダリング命令から得られる３つの頂点によって定義される三角形内のピクセルのアドレスを生成するアドレス生成器と、
前記伸縮転送オペレーションにおいては、前記アドレス生成器からのアドレスを用いてディスティネーション・アドレスを生成し、前記３次元レンダリング・オペレーションにおいては、前記アドレス生成器からのアドレスを用いてテクスチャ・マッピングのためのアドレスを生成するマッピング・アドレス・ジェネレータと
を含む３Ｄパイプライン。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、電子デバイスによるグラフィックス表示に関する。より詳細に述べれば、本発明は、電子デバイスによって表示されるグラフィックスのストレッチ・ブリッティング・オペレーション(stretch blitting operation)に関する。
【０００２】
（背景）
最近の２０年間で、パーソナル・コンピュータが日常的な使用に供されるようになった。教育ならびに娯楽用のゲームは、すでにＰＣ用の強力なアプリケーションを有しており、３Ｄグラフィックスの導入によって強化されている。リアルタイム・フォトスペシフィック・テクスチャ付き３Ｄグラフィックス(real-time photo-specific textured 3D graphics）は、実世界のロケーションの正確なシミュレーションを提供し、完全な視点の自由度をもって見ることができる。
【０００３】
高品質リアルタイム３Ｄグラフィックスの鍵は、ピクセル・メモリのアクセス数を吊り上げるオブジェクトのレイヤがいくつも存在する環境下において散乱したシーンのレンダリングをサポートするシステム・アーキテクチャおよびメモリ・アクセス・スキームを持つことである。関連するプロセッシングの負荷によって、システムの更新レートが、リアルタイムと考えられているレート（３０Ｈｚ）より低くなることがあってはならない。提案されているいくつかのソリューションは、アプリケーションにプロセッシングの負荷をゆだねたが、そのためリアルタイムにおいては単純なシーンのレンダリングにも問題を生じている。より優れたアクセラレータは、プロセッサ集約的なこれらのハードウエア機能を加速し、プロセッサをハイ−レベル機能に解放する。一般的に、カスタム・アクセラレーション・ハードウエア（ＡＳＩＣ−シリコン）は、レンダリング機能をはるかに高速に実行し、より多くの時間をソフトウエア・アプリケーションのために残す。このグラフィックス３Ｄレンダリング・エンジン、または３Ｄパイプラインは、多数の乗算ならび加算回路を使用する。
【０００４】
テレビ会議およびその他のビデオ・イメージ操作もまた、デスクトップに持ち込まれるようになった。ビデオ会議システムの使用で望まれる特徴の１つは、伝送に先行してビデオ・イメージを各種サイズにスケーリングできることである。小さいイメージは、提供される詳細は少ないが、通信帯域幅が小さく、レシピエント・コンピュータ(recipient computer)において、より迅速に再生することができる。概してカメラは、そのカメラのイメージ・センサによって定義される最大サイズを有するビデオ・イメージを生成する。その後このイメージは、スケーリング装置によって、より小さなイメージ、あるいはより大きなイメージにスケーリングすることができる。
【０００５】
ソース・ピクセルのディジタル・フィルタリングを使用してスケーリング後の出力を提供する既存のビデオ・カメラは、ソース・ピクセル・クロックの単一サイクル内において各出力ピクセルを生成するように設計されている。言い換えると、同一のクロック・サイクル内において、マルチ−タップ・フィルタの各タップに印加がなされなければならないことになる。その結果、それぞれの個別のフィルタ・タップを並列に処理するために、膨大な数の乗算ならびに加算回路が必要になる。乗算ならびに加算回路の数が増加すると、それに従ってフィルタの伝播遅延および消費電力も高くなる。さらに、集積回路（ＩＣ）内においてスケーリング装置の実装を行う場合には、乗算ならびに加算回路の増加が実装するＩＣのダイ・サイズの増加にそのままつながる。最終的には、スケーリング・エンジンがより高価なものとなる。
【０００６】
コンピュータ・システムが３Ｄレンダリング・システムをはじめ、ビデオ・イメージング・システムを含むとき、計算の高速化のためのハードウエア・アシストは、専有面積をはじめゲート数という意味において高価になる。したがって、３次元レンダリングおよびビデオ・スケーリングを含むイメージング・システムに関するゲート数が低減できると有利である。
【０００７】
（発明の要約）
イメージ・スケーリングのための方法および装置を提供する。３Ｄパイプラインが、矩形モードをイネーブルするコマンド・ストリーム・コントローラを包含している。この３Ｄパイプラインは、頂点によって定義される矩形に関するアドレスを生成するウインドワを含んでいる。フィルタが、隣接ポイント間を、相対的なロケーションに基づいて補間し、各ピクセルに関する属性を生成する。カラー・カリキュレータが出力データの整列、およびディスティネーション表面に対する出力データの書き込みを行う。
【０００８】
以下、一例を示す形で、すなわち限定する意味ではなく、添付の図面に本発明を示すが、それにおいては類似の要素に類似の参照番号が付されている。
【０００９】
（詳細な説明）
テクスチャ・マッピング・エンジンを伴うグラフィックスのストレッチ・ブリッティング(stretch blitting)のための方法および装置について説明する。以下の説明においては、本発明の完全な理解の提供に資するために例示を目的として多数の具体的な詳細を示す。しかしながら、当業者であれば、これらの具体的な詳細を用いなくても本発明の実施が可能なことは明らかであろう。なお、本発明が不明瞭になることを避けるため、構造ならびにデバイスの表現についてはブロック図の形式を用いている。
【００１０】
この明細書において「一実施形態」もしくは「実施形態」と言うときは、当該実施形態に関連して説明されている特定の特徴、構造もしくは特性が、本発明の実施形態の少なくとも１つに含まれていることを意味する。また本明細書の随所に用いている「一実施形態において」という表現は、必ずしもすべてが同じ実施形態を参照している必要がないものとする。
【００１１】
３次元レンダリングおよびビデオをともに含むコンピュータ・システムにおいて、３Ｄレンダリングおよびストレッチ・ブリッティングの両方に関してハードウエア・アシストのためにゲートを再使用するシステムが実装される。ストレッチ・ブリッティングおよび３Ｄレンダリングに使用される計算は類似している。したがって、３次元イメージのレンダリングに使用される３Ｄパイプラインを修正すれば、アップ−スケーリングならびにダウン−スケーリング、フィルタリング、表面フォーマットの変更、およびビデオ・イメージングに関するカラー・スペースの変更に使用することができる。次に、以下に述べるように、テクスチャ・マッピング・エンジンを使用する３Ｄパイプラインにイメージ操作が実装される。これは、イメージの操作を可能にするために３Ｄパイプラインの修正に使用されるゲートの数が、これらの機能を独立して実装する場合に比較して格段に抑えられることから有利である。
【００１２】
ストレッチ・ブリッティングを実行するために３Ｄパイプラインを使用すれば、結果的にパフォーマンスが向上し、孤立的なストレッチ・ブリット・エンジンに必要となるゲートが節約される。またストレッチ・ブリット・エンジンも、より良好なスケーリングおよびフィルタリングを持つ３Ｄパイプラインの機能の利点を持たせることによって改善される。さらに、３Ｄパイプラインの高度にパイプライン化されたフォーマットが好適に使用されて、ストレッチ・ブリッタのパフォーマンスが向上する。
【００１３】
標準の３Ｄパイプラインから多数の変更が行なわれる。３Ｄパイプラインにおいて、三角形に加えて矩形を扱うことができるように、セットアップ・エンジンおよびウインドワが修正される。また、４：２：２ならびに４：２：０のデータにおけるアドレッシングを可能にするためにマッピング・アドレス・ジェネレータも修正される。さらにそれに加えて、これらのタイプのデータのアドレッシングを可能にするためにキャッシュが修正される。これらすべての変更については、詳細を後述する。
【００１４】
図１は、本発明の実装が考えられるコンピュータ・システムを示したブロック図である。このシステムは、１ないしは複数のプロセッサ１１０を含んでいる。プロセッサ１１０は、ホスト・バス１１５に結合することができる。ホスト・バス１１５は、ホスト・ブリッジ１２０に結合され、グラフィックス・カードまたはグラフィックス・サブシステム１３０をプロセッサ１１０に結合することができる。ホスト・ブリッジ１２０にメモリ１２５を結合することもできる。さらにホスト・ブリッジ１２０に、ＰＣＩバス１５０等のシステム・バス１５０を結合することもできる。ＰＣＩバス１５０は、ＰＣＩ−ＩＳＡブリッジ１６０に結合されている。ＰＣＩ−ＩＳＡブリッジ１６０には、ポートをはじめ、拡張ＩＳＡバスが結合されている。
【００１５】
グラフィックス・アクセラレータ１３０は、３次元イメージをレンダリングするための３Ｄエンジン１４０を含んでいる。後述するが、３Ｄエンジン１４０は、それに加えて、ストレッチ・ブリッティングにも使用することができる。グラフィックス・カード１３０には、ビデオ入力、ディスプレイ、テレビジョン等の各種入力デバイスおよび出力デバイスを結合することができる。またグラフィックス・カード１３０は、グラフィックス・オペレーションを高速化するためにローカル・メモリ１４７を含んでもよい。さらに、中央ユニット１４０、１４５がローカル・キャッシュ・メモリを含むことがあり、それについても後述する。グラフィックス・カード１３０は、バス１３５を介して、あるいは類似の接続手段を介してホスト・ブリッジ１２０に結合することができる。
【００１６】
図２は、３Ｄパイプラインのブロック図である。３Ｄエンジン２１０は、テクスチャ・パイプライン２１５を含んでいる。この３Ｄエンジンは、この分野においてよく知られているように、３次元レンダリングに使用することができる。３Ｄパイプラインは、以下に説明するように、ストレッチ・ブリッティングにも使用することができる。一実施形態においては、ストレッチ・ブリッティング・デコーディングが、指定された矩形プリミティブ・タイプを伴う、ＧＦＸＰＲＩＭＩＴＩＶＥと呼んでいる特定のコマンド（以下、ＧＦＸｒｅｃｔａｎｇｌｅコマンドという）に応答して実行される；しかしながら、それ以外のコマンド名およびフォーマットを使用することも可能である。
【００１７】
コマンド・ストリーム・コントローラ２２０が結合されており、たとえばプロセッサまたはバッファといった外部ソースからコマンドを受け取る。コマンド・ストリーム・コントローラ２２０は、コマンドのパースおよびデコードを行い、適切なコントロール機能を実行する。受け取ったコマンドがＧＦＸｒｅｃｔａｎｇｌｅコマンドでなかった場合には、コマンド・ストリーム・コントローラ２２０からセットアップ・エンジン２２５にコントロール信号が渡される。またコマンド・ストリーム・コントローラ２２０は、非ＧＦＸｒｅｃｔａｎｇｌｅコマンドに関するメモリ・マネジメント、状態変数マネジメント、２次元オペレーション等のコントロールも行う。
【００１８】
一実施形態においては、コマンド・ストリーム・コントローラ２２０がＧＦＸｒｅｃｔａｎｇｌｅコマンドを受け取ると、頂点情報がセットアップ・エンジン２２５に渡される。一実施形態においては、コマンド・ストリーム・コントローラ２２０からセットアップ・エンジン２２５に、矩形の左上、右下、および左下の頂点が提供される。頂点は、セットアップ・エンジン２２５によって、平面方程式の３つの項を計算するために使用される：すなわち、Ｘ、Ｙそれぞれに関する属性の変化レート、および初期ポイントである。
【００１９】
それに加えて、テクスチャ・マッピングの実行時には、セットアップ・エンジン２２５が、これらの頂点によって定義される三角形を含むバウンディング・ボックスを決定する。
【００２０】
セットアップ・エンジン２２５は、ディスティネーション・ロケーションの左上頂点、右下頂点、および左下頂点をコマンド・ストリーム・コントローラ２２０から受け取る。またセットアップ・エンジン２２５は、原始サイズを定義する各頂点の座標の第２のセットも受け取る。セットアップ・エンジン２２５は、これら２つのセットの座標の比を計算し、ストレッチングの係数、すなわちサイズにおける拡張または縮小の係数を決定する。ディスティネーション座標はウインドウ基準であり、一方ソースに関する座標は、ソース・イメージの左上コーナが基準であり、したがって左上座標は常に（０，０）になる。ここで、セットアップ・エンジンの方程式が、３Ｄレンダリング用の三角形に関して行なわれる計算のサブセットであることに注意する必要がある。つまり、追加のハードウエアがまったく必要ないことになる。セットアップ・エンジン２２５はさらに、矩形プリミティブのバウンディング・ボックスを定義するエッジを生成する。このバウンディング・ボックス情報を、セットアップ・エンジン２２５はウインドワ(windower)２３０に提供する。
【００２１】
ウインドワ２３０はディスティネーション表面に関するアドレスを生成する。ウインドワ２３０は、一般に、各ペアとなる頂点を通るラインを引くことによってこれらのアドレスを生成する。トップ・ライン５１０より上側のエリアは負にラベル付けされ、トップ・ライン５１０より下側のエリアは正にラベル付けされる。また、ボトム・ライン５２０より下側のエリアは負にラベル付けされ、ボトム・ライン５２０より上側のエリアには、正の値が与えられる。さらに、エッジ・ライン５３０より内側のエリアには正の値が与えられ、エッジ・ライン５３０より外側のエリアは負にラベル付けされる。これらは、エッジ・テストと呼ばれている。ウインドワ２３０は、これら３つすべてのエッジ・テストに適合するすべてのピクセルのアドレスを計算する。これにより、表示される三角形５４０が定義される。以上については、図５Ａおよび図５Ｂに図示されている。
【００２２】
ストレッチ・ブリッティングについては、ウインドワ２３０の別の側面が使用される。ウインドワ２３０は、セットアップ・エンジン２２５からウインドワ２３０に渡された、バウンディング・ボックス５９０の外側となるエリアを表示することができない。したがって、エッジ・テストは常に正に強制され、その結果、バウンディング・ボックス５９０全体のエリアとしてエリアが定義される。ウインドワ２３０は、バウンディング・ボックス内のピクセルを反復して、ＧＦＸｒｅｃｔａｎｇｌｅコマンドによって書き込まれるデータに関する読み出しおよび書き込みアドレスを生成する。言い換えると、三角形のエッジの方程式が常に渡され、それによってウインドワ２３０は、三角形の境界において停止することなく、全体の矩形を処理することができる。これらの読み出しおよび書き込みアドレスは、マッピング・アドレス・ジェネレータに渡される。
【００２３】
ウインドワ２３０は、図２には示していないキャッシュ・メモリに対するデータのアクセスを行うための、ピクセルの読み出しおよび書き込みアドレスを生成する。またウインドワ２３０は、アルファ・ブレンド・ステップに関するディスティネーション項をカラー・カリキュレータ２８０に提供する。ウインドワ２３０は、ディスティネーション情報をフレーム・バッファから獲得する。
【００２４】
ウインドワ２３０は、３Ｄパイプラインにおいて使用可能な深いパイプライン化を利用する。ウインドワ２３０がバウンディング・ボックスおよび頂点をセットアップ・エンジン２２５から受け取ると、ウインドワ２３０は、アドレスの生成を開始する。これらのアドレスに関するデータは、メモリからフェッチされる。メモリは、比較的長い待ち時間を有する。したがって、ウインドワ２３０がアドレスを生成するとき、データに対する要求がパイプライン化され、各要求のコントロール・セクションがＦＩＦＯ内に収められる。このように、データに対する要求は、生成されたそれぞれのアドレスごとに、そのアドレスの生成に従って連続的にメモリに送られる。その結果、メモリの待ち時間の影響は、最初のピクセル・データが要求されたときだけに限られる。パイプライン化によって、続くピクセルに関してはメモリ待ち時間の影響が除去され、クロックごとにスループットを維持してピクセルを生成することが可能になる。パイプライン化は、面積という意味において高価であり、３Ｄエンジン用にすでに用意されているパイプラインの再使用は有利である。
【００２５】
マッピング・アドレス・ジェネレータ２４０は、テクスチャ・マップ内の特定のピクセルをフェッチするための実際のアドレスを生成する。一実施形態においては、マッピング・アドレス・ジェネレータ２４０が、次式に従ってディスティネーション・エリアを計算する。
ｕ（ｘ，ｙ）＝（ＣxS・ｘ＋ＣyX・ｙ＋ＣOS）／（ＣxiW・ｘ＋ＣyiW・ｙ＋ＣOiW）＋ＰOu
【００２６】
この式は、３Ｄレンダリングの分野においてはよく知られている。
【００２７】
以下に示す表の値を使用することによって、複雑なテクスチャ・マッピングの式を簡略化してストレッチ・ブリット計算用に使用することが可能になり、その結果、両方の目的に対してハードウエアを使用することができる。ＣXSおよびＣOSは、平面係数として直接マッピング・アドレス・ジェネレータ２４０に分配される。
【００２８】
【表１】
0004532746.tif 000002
【００２９】
これにより、上記の式の分母を「１」にすることができる。その結果、次に示すような簡略化した式が得られる。
ｕ（ｘ，ｙ）＝ＣxS・ｘ＋ＣyX・ｙ＋ＣOS
これは、単純な平面Ａｘ＋Ｂｙ＋Ｃを定義する。マッピング・アドレス・ジェネレータ２４０は、頂点に関する正規化されていない値を受け入れるように修正されている。ビデオ・アドレスは、一般に正規化されてないが、３Ｄレンダリングの座標セットは、通常、正規化されている。マッピング・アドレス・ジェネレータ２４０が操作することができる値を修正することによって、３Ｄパイプラインをストレッチ・ブリッティングに使用することが可能になる。
【００３０】
フェッチ・ユニット２４５はメモリ・マネジメントおよびシリアル化を行う。フェッチ・ユニット２４５は、キャッシュ２６０またはその他のメモリ内にストアされているソース・マップに対する要求を発する。フェッチ・ユニット２４５は、マッピング・アドレス・ジェネレータ２４０から提供された読み出しアドレスをキャッシュ・アドレスに変換する。フェッチ・ユニット２４５によって生成されたキャッシュ・アドレスはキャッシュ２６０に渡される。キャッシュ２６０内にデータが見つからないときには、フェッチ・ユニット２４５は、メモリにそのデータを要求し、そのデータが到来したとき、それをキャッシュ内に収める。
【００３１】
キャッシュ・アドレスにストアされているピクセル・データは、フィルタ２５０に送られる。マッピング・アドレス・ジェネレータ２４０は、端数ピクセル・ポジショニング・データおよび隣接ピクセルに関するキャッシュ・アドレスをフィルタ２５０に渡す。フィルタリング・テクニックについては、この分野においてよく知られており、これ以上の議論は省略する。
【００３２】
ブレンド用のアルファ値を生成するために補間器２７０が使用されることがある。アルファ・ブレンドは、フレーム・バッファ内にすでに存在するイメージの部分およびソース・イメージの部分を不透明化することを可能にする。α項は、ソースの不透明度を定義する。一実施形態については、アルファ値がストレッチ・ブリッティングに関して固定されており、補間器２７０が使用されない。アルファ値が固定でない場合、マッピング・アドレス・ジェネレータ２４０に関して上述した式と同じ式が用いられる。また別の実施形態の場合には、３つの頂点すべてにおいてアルファ値が指定され、補間器２７０が、これらの頂点におけるアルファ値の間の滑らかなブレンドを生成する。アルファ値は、カラー・カリキュレータ２８０に渡される。
【００３３】
一実施形態におけるカラー・スペース変換およびチャンネル割り当てフォーマットについて、次の表にまとめる。
【００３４】
【表２】
0004532746.tif 000003
【００３５】
別の実施形態については、サポートされているソース表面および出力モードから上記とは異なる表面が生成されることもある。
【００３６】
チャンネル・オペレーション・ユニット２５５は、カラー・チャンネル割り当てオペレーション（Ｙ、Ｕ、およびＶチャンネル）を行う。ＹＵＶからＲＧＢへのカラー・スペース変換も行なわれる。別の実施形態の場合には、チャンネル割り当ておよびカラー・スペース変換が、ともにチャンネル・オペレーション・ユニット２５５において行なわれる。一実施形態については、３つのパスがＹＵＶチャンネル変換に使用される。まず、中間ピクセルに関するＵおよびＶ値の補間を伴いつつ、各ピクセルが４：４：４フォーマットにアップ−サンプリングされる。続いて、３つのパスにおいて表面フォーマット変換が行なわれる。第１のパスにおいてはＹ値の書き込みが行なわれ、第２のパスにおいてはＵ値の書き込みが行なわれ、第３のパスにおいてはＶ値の書き込みが行なわれる。これによって平面フォーマットからパック・フォーマットへの負担の小さい変換が得られ、３つのアドレス・ストリームが不要になる。これらの変換は、テレビ会議およびその他の応用に使用することができる。
【００３７】
一実施形態においては、４：２：０から４：２：２へのチャンネル割り当てが、カラー・カリキュレータ２８０のデータ整列レジスタ内で行なわれる。
【００３８】
一実施形態においては、カラー・カリキュレータ２８０が特に、次に示すブレンド式を使用する。
［カラー］＝α×［ソース］＋（１−α）×［ディスティネーション］
【００３９】
カラー・カリキュレータ２８０は、到来する３つの値、すなわちチャンネル・オペレーション・ユニット２５５からのソース・カラー、ウインドワ２３０によってフェッチされた、メモリからのディスティネーション・カラー、および補間器２７０からのアルファ値（固定されている場合もある）を受け取る。カラー・カリキュレータ２８０内におけるパッキング・ロジックは、データを整列させ、それをディスティネーション表面に書き込む。
【００４０】
図３は、イメージ・ストレッチングのプロセスを表したフローチャートである。ブロック３１０において、矩形プリミティブ・タイプがイネーブルされる。この矩形プリミティブ・タイプによって３Ｄエンジンは、３つのポイントにより記述されるオブジェクトを矩形として認識することができる。この矩形は、３つの頂点によって記述される、有効な選別順序に矛盾しない正しい巻き付け順序で軸整列される矩形である。これらの頂点は、直角三角形を記述し、その三角形の底辺はｘ軸と平行になり、三角形の垂直の辺はｙ軸と平行になる。４番目のポイントは、これら３つの頂点に基づいて導かれる。一実施形態の場合には、ストレッチ・ブリッティングの開始時にすでに矩形プリミティブ・タイプがイネーブルされているとき、このステップを省略することができる。
【００４１】
ブロック３２０においては、矩形コマンドが３Ｄエンジンに渡される。この矩形コマンドは、３Ｄエンジンに対して、続く情報が、３次元レンダリングの情報ではなく、ストレッチ・ブリッティングの情報になることを示す。
【００４２】
ブロック３３０において、このプロセスは、３Ｄパイプラインのフラッシュが行なわれているか否かについての吟味を行う。３Ｄパイプラインが並列処理を許容することから、一実施形態の場合には、ビデオ・ストレッチングの初期化に先行してそのフラッシュが行われる。また一実施形態の場合には、このステップおよびステップ３３５が省略される。３Ｄパイプラインのフラッシュが行なわれていなければ、プロセスがブロック３３５に進み、それにおいて３Ｄパイプラインのフラッシュが行なわれるまで待機する。その後プロセスは、ブロック３４０に引き継がれる。３Ｄパイプラインのフラッシュがすでに行なわれていれば、プロセスが直接ブロック３４０に引き継がれる。
【００４３】
ブロック３４０においては、３Ｄパイプライン２１０内のセットアップ・エンジン２２５に矩形データが渡される。矩形データは、操作が行われるデータの矩形を定義する。
【００４４】
ブロック３４５においては、ウインドワによってＸＹ座標が計算される。このＸＹ座標は、イメージのディスティネーション表面を定義する。
【００４５】
ブロック３５０においては、マッピング・アドレス・ジェネレータ（ＭＡＧ）によってＵＶ座標が計算される。ＵおよびＶ座標は、イメージのソース表面を定義する。
【００４６】
ブロック３６０においては、ピクセル・データがフェッチされ、キャッシュされる。一実施形態の場合、ピクセル・アドレスが生成された後にこれが生じる。一実施形態においては、ピクセル・データが４×４のデータのブロックにキャッシュされる。
【００４７】
ブロック３７０においては、ピクセル値の補間が行なわれる。ここでは、ディスティネーション表面内のピクセルのそれぞれに関する属性が生成される。
【００４８】
ブロック３８０においては、チャンネル割り当ておよびカラー・スペース変換のステップが実行される。一実施形態の場合には、これらのステップが、要求があったときに限って実行される。また別の実施形態の場合には、これらのステップが常に実行される。
【００４９】
ブロック３９０においては、カラー・カリキュレータがデータのアルファ・ブレンド、データの整列、およびディスティネーション表面へのその書き込みを行う。これにより、ディスティネーション・イメージが生成される。このプロセスの最後には、ディスティネーション・イメージ内のピクセルのそれぞれが既知となり、ディスティネーション・イメージが表示される。
【００５０】
以上、具体的な実施形態を参照して本発明の説明を行ってきた。しかしながら、付随する特許請求の範囲に示したように本発明の精神ならびに範囲はより広範なものであり、それから逸脱することなく、それらに対する各種の修正ないしは変更が可能であることは明らかである。したがって、本件明細書ならびに図面は、例示に過ぎず、限定を意図したものではないことを理解する必要がある。
【図面の簡単な説明】
【図１】  本発明の実装が考えられるコンピュータ・システムを示したブロック図である。
【図２】  ビデオ・イメージの操作を行うための３Ｄパイプラインを一実施形態として示したブロック図である。
【図３】  ビデオ・イメージのストレッチングのプロセスを一実施形態として示したフローチャートである。
【図４】  １６×１２の矩形の場合のディスティネーション・データを示している。
【図５Ａ】  ３Ｄレンダリングおよびストレッチ・ブリッティングに関してウインドワによって実行されるエッジ・テストを示している。
【図５Ｂ】  ３Ｄレンダリングおよびストレッチ・ブリッティングに関してウインドワによって実行されるエッジ・テストを示している。
【図１】
0004532746.tif 000004
【図２】
0004532746.tif 000005
【図３】
0004532746.tif 000006
【図４】
0004532746.tif 000007
【図５Ａ】
0004532746.tif 000008
【図５Ｂ】
0004532746.tif 000009