(57)【要約】  演算の基本セットを備えた種々のブレンディングモードのためのブレンディング方程式を実装するための技術が説明される。各ブレンディング方程式は演算シーケンスに分解されてもよい。ある設計では、装置は、複数のブレンディングモードに関して演算セットを実装する処理ユニット、およびオペランドおよび結果を格納する記憶ユニットを含む。処理ユニットは、複数のブレンディングモードから選択されたブレンディングモードに関して演算シーケンスのための命令シーケンスを受け取り、選択されたブレンディングモードに従って、ブレンディングを実行するシーケンスにおける各命令を実行する。処理ユニットは、（ａ）基本セットにおける少なくとも１つの演算（例えばドット積）を実行するＡＬＵ、（ｂ）インバウンドカラー値のガンマ補正およびアルファスケーリングを実行するプリフォーマットユニット、（ｃ）アウトバウンドカラー値のガンマ圧縮およびアルファスケーリングを実行するポストフォーマットユニットを含んでも良い。
2010507841.tif 000002
【特許請求の範囲】
【請求項１】
複数のブレンディングモードについて演算セットを実装し、前記複数のブレンディングモードから選択されたブレンディングモードに関して演算シーケンスのための命令シーケンスを受け取り、該選択されたブレンディングモードに従って、ブレンディングを実行するための前記シーケンスにおける各命令を実行する処理ユニットと、
前記処理ユニットに関してオペランドおよび結果を格納する記憶ユニットとを具備する装置。
【請求項２】
前記複数のブレンディングモードの各々は演算シーケンスのそれぞれに対応付けられ、各演算は、前記演算セットから得られる請求項１の装置。
【請求項３】
前記処理ユニットは、前記選択されたブレンディングモードについての前記命令シーケンスを実行するブレンディング実行ユニットを具備する請求項１の装置。
【請求項４】
前記処理ユニットは、インバウンドカラー値のガンマ補正およびアルファスケーリングを実行するプリフォーマットユニットと、アウトバウンドカラー値のガンマ圧縮およびアルファスケーリングを実行するポストフォーマットユニットとをさらに具備する請求項３の装置。
【請求項５】
処理ユニットは、算術論理演算ユニット（ＡＬＵ）、逆数ユニット、ガンマルックアップテーブル、デガンマルックアップテーブルの少なくともいずれかを具備する計算ユニットをさらに具備し、前記計算ユニットは、前記ブレンディング実行ユニット、前記プリフォーマットユニット、前記ポストフォーマットユニットで共用される請求項４の装置。
【請求項６】
前記処理ユニットは、処理されるデータのフォーマットの指示を格納する制御レジスタをさらに具備し、前記プリフォーマットユニットおよび前記ポストフォーマットユニットは、前記制御レジスタからのフォーマット指示に従って、ガンマ補正、ガンマ圧縮、アルファスケーリングを実行する請求項４の装置。
【請求項７】
前記ブレンディング実行ユニット、前記プリフォーマットユニット、前記ポストフォーマットユニットは、最大３つの異なるスレッド上で並列に動作する請求項４の装置。
【請求項８】
前記処理ユニットは、前記演算セットにおける少なくとも１つの演算を実行する算術論理演算ユニット（ＡＬＵ）を具備する請求項１の装置。
【請求項９】
前記ＡＬＵは、前記演算セットにおける演算に関して２つのブレンディングファクタと２つのオペランドのドット積を実行する請求項８の装置。
【請求項１０】
前記記憶ユニットは、複数のレジスタを具備し、前記ドット積のための前記２つのオペランドは、前記複数のレジスタのうちの２つからのものである請求項９の装置。
【請求項１１】
前記ドット積のための前記２つのブレンディングファクタは、前記複数のレジスタのうちの２つから選択可能である請求項１０の装置。
【請求項１２】
前記２つのブレンディングファクタは、それぞれ、複数のブレンディングファクタから選択される請求項９の装置。
【請求項１３】
前記ＡＬＵは、２つのオペランドと２つのブレンディングファクタとを乗算し、前記演算セットにおける演算に関して２つの基準化されたオペランドを提供する請求項８の装置。
【請求項１４】
前記演算セットは、ＭＡＸ演算およびＭＩＮ演算を具備し、前記ＡＬＵは、前記ＭＡＸ演算により２つのオペランド間で大きい方のオペランドを提供し、前記ＭＩＮ演算により２つのオペランド間で小さい方のオペランドを提供する請求項８の装置。
【請求項１５】
前記処理ユニットは、オペランドを受け取り、該オペランドの逆数を提供する逆数ユニットを具備する請求項１の装置。
【請求項１６】
前記処理ユニットは、リニアカラー値を受け取って圧縮カラー値を提供するガンマルックアップテーブルを具備する請求項１の装置。
【請求項１７】
前記処理ユニットは、圧縮カラー値を受け取ってリニアカラー値を提供するデガンマルックアップテーブルを具備する請求項１の装置。
【請求項１８】
前記記憶ユニットは、前記命令シーケンスについてオペランドを格納するレジスタを具備し、各命令は、前記レジスタの少なくとも１つに格納された少なくとも１つのオペランドについて演算する請求項１の装置。
【請求項１９】
前記記憶ユニットは、ソースカラーおよびアルファ値ならびに中間結果を格納するソースレジスタと、デスティネーションカラーおよびアルファ値ならびに中間結果を格納するデスティネーションレジスタとを具備する請求項１の装置。
【請求項２０】
前記記憶ユニットは、付加的なソースカラーおよびアルファ値ならびに中間結果を格納する第２のソースレジスタと、前記中間結果を格納する一時的デスティネーションレジスタとをさらに具備する請求項１９の装置。
【請求項２１】
各ブレンディング命令は、前記ブレンディング命令についての演算を示す第１のフィールド、第１オペランドを示す第２のフィールド、第２オペランドを示す第３のフィールド、第１のブレンディングファクタを示す第４のフィールド、第２のブレンディングファクタを示す第５のフィールドを具備する請求項１の装置。
【請求項２２】
前記複数のブレンディングモードは、Ｐｏｒｔｅｒ−Ｄｕｆｆブレンディングモード、付加的なブレンディングモード、ＯｐｅｎＶＧにおける付加的なブレンディングモードを具備する請求項１の装置。
【請求項２３】
前記複数のブレンディングモードは、２次元グラフィックスのための複数のブレンディングモード、３次元グラフィックスのための複数のブレンディングモード、または２次元および３次元のグラフィックスのための複数のブレンディングモードを具備する請求項１の装置。
【請求項２４】
複数のブレンディングモードのための演算セットを実装し、前記複数のブレンディングモードから選択されたブレンディングモードに関して演算シーケンスのための命令シーケンスを受け取り、前記選択されたブレンディングモードに従って、ブレンディングを実行するためのシーケンスにおける各命令を実行する処理ユニットと、
前記処理ユニットに関してオペランドおよび結果を格納する記憶ユニットとを具備する集積回路。
【請求項２５】
複数のブレンディングモードのための演算セットを実装し、前記複数のブレンディングモードから選択されたブレンディングモードに関して演算シーケンスのための命令シーケンスを受け取り、前記選択されたブレンディングモードに従ってブレンディングを実行するためのシーケンスにおける各命令を実行するグラフィック処理ユニットと、
前記プロセッサに接続されたメモリとを具備する無線装置。
【請求項２６】
第１のブレンディングモードに関して第１の演算シーケンスのための第１の命令シーケンスを実行すること、
第２のブレンディングモードに関して第２の演算シーケンスのための第２の命令シーケンスを実行することを含み、
前記第１および第２のシーケンスにおける演算は、第１および第２のブレンディングモードを備える複数のブレンディングモードのための演算セットからのものである方法。
【請求項２７】
前記第１の命令シーケンスの実行は、２つのオペランドのと２つのブレンディングファクタのドット積のための命令を実行することを含む請求項２６の方法。
【請求項２８】
前記第１の命令シーケンスの実行は、オペランドの逆数のための命令を実行することを含む請求項２６の方法。
【請求項２９】
前記第１の命令シーケンスの実行は、リニアカラーを圧縮カラーに変換する命令を実行することを含む請求項２６の方法。
【請求項３０】
前記第１の命令シーケンスの実行は、圧縮カラーをリニアカラーに変換する命令を実行することを含む請求項２６の方法。
【請求項３１】
第１のブレンディングモードに関して第１の演算シーケンスのための第１の命令シーケンスを生成すること、
第２のブレンディングモードに関して第２の演算シーケンスのための第２の命令シーケンスを生成することを含み、
前記第１および第２のシーケンスにおける演算は、前記第１および第２のブレンディングモードを含む複数のブレンディングモードのための演算セットからのものである方法。
【請求項３２】
第１のブレンディングモードに関して第１の演算シーケンスのための第１の命令シーケンスと、
第２のブレンディングモードに関して第２の演算シーケンスのための第２の命令シーケンスとを含み、
前記第１および第２のシーケンスにおける演算は、前記第１および第２のブレンディングモードを含む複数のブレンディングモードのための演算セットからのものである、命令が格納されたコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に電子機器に関し、特に、グラフィック処理ユニットにおいてブレンディングを実行するための技術に関する。
【背景技術】
【０００２】
グラフィック処理ユニット（ＧＰＵ）は、ビデオゲーム、グラフィックス、コンピューター支援設計（ＣＡＤ）、シミュレーションおよびビジュアル化ツール、イメージングなどのような種々のアプリケーション向けに、２次元（２Ｄ）および／または３次元（３Ｄ）画像をレンダリングするために用いられる専用ハードウェアユニットである。ＧＰＵは、種々のグラフィックス処理を実行して画像をレンダリングすることができる。かかるグラフィックス処理の一つにブレンディングがあり、一般に、アルファブレンディング、アルファ合成などと称される。ブレンディングは、画像の透過性効果を得るために用いることができる。ブレンディングは、最終画像において別々にレンダリングしていた中間画像を合成するのに用いることもできる。ブレンディングでは、方程式セットに従って、デスティネーションカラー値とソースカラー値を合成することが必要である。該方程式は、カラー値とアルファ値の関数である。異なる方程式および／または異なるアルファ値で異なる結果を得ることができる。
【０００３】
ＧＰＵは、異なる視覚効果を実現することが可能な種々のブレンディングモードをサポートすることができる。各ブレンディングモードは、特定の視覚効果を実現するために、カラーとアルファ値を合成するための異なる方程式セットを用いる。ＧＰＵは、サポートするすべてのブレンディングモードのための方程式セットをそのまま実装するために、専用ハードウェアを用いてもよい。しかし、ブレンディング方程式のそのような直接的な実装には手間がかかり、莫大な費用がかかることがある。
【０００４】
したがって当該技術分野においては、ＧＰＵがサポートする種々のブレンディングモードに関して、ブレンディング方程式を効率よく実装するための技術が必要とされている。
【発明の概要】
【０００５】
本明細書では、ブレンディングを効率的に行うための技術について説明する。ある態様では、サポートするブレンディングモードのためのブレンディング方程式が、演算の基本セットを用いて効率的に実装される。各ブレンディング方程式は、基本セットから各演算を得るようにして演算シーケンスに分解してもよい。異なるブレンディング方程式が、異なる演算シーケンスで実装されてもよい。演算の基本セットは、ハードウェア実装を単純化し、種々のブレンディング方程式／モードならびに他のグラフィック関数および機能のサポートに柔軟性を与える。
【０００６】
ある設計では、装置（例えばＧＰＵ）は、複数のブレンディングモードのための演算セットを実装する処理ユニット、および処理ユニット用にオペランドと結果を格納する記憶ユニットを含んでいる。処理ユニットは、複数のブレンディングモードから選択されたブレンディングモードに関して演算シーケンスのための命令シーケンスを受け取り、選択されたブレンディングモードに従って、ブレンディングを実行するシーケンスにおける各命令を実行する。処理ユニットは、例えば、（ａ）命令シーケンスを実行する実行ユニット、（ｂ）インバウンドのカラー値のガンマ補正およびアルファスケーリングを実行するプリフォーマットユニット、（ｃ）アウトバウンドのカラー値のガンマ圧縮およびアルファスケーリングを実行するポストフォーマットユニット、（ｄ）実行ユニット、プリフォーマットユニット、およびポストフォーマットユニットのための計算を実行する計算ユニットを含んでも良い。計算ユニットは、例えば算術論理演算ユニット（ＡＬＵ）、逆数ユニット、ガンマルックアップテーブル、デガンマルックアップテーブル、を含んでいてもよく、これらは実行ユニット、プリフォーマットユニットおよびポストフォーマットユニットによって共用されてもよい。記憶ユニットは、命令について、オペランドと結果を格納するためのレジスタ、例えば、ソースレジスタ、デスティネーションレジスタ、場合により付加的なレジスタを含んでも良い。
【０００７】
以下、この開示の種々の態様および特徴をより詳しく説明する。
【図面の簡単な説明】
【０００８】
【図１Ａ】図１Ａは、５つのＰｏｒｔｅｒ−Ｄｕｆｆブレンディングモードの場合のブレンディングを示す。
【図１Ｂ】図１Ｂは、５つのＰｏｒｔｅｒ−Ｄｕｆｆブレンディングモードの場合のブレンディングを示す。
【図１Ｃ】図１Ｃは、５つのＰｏｒｔｅｒ−Ｄｕｆｆブレンディングモードの場合のブレンディングを示す。
【図１Ｄ】図１Ｄは、５つのＰｏｒｔｅｒ−Ｄｕｆｆブレンディングモードの場合のブレンディングを示す。
【図１Ｅ】図１Ｅは、５つのＰｏｒｔｅｒ−Ｄｕｆｆブレンディングモードの場合のブレンディングを示す。
【図２】図２は、ブレンディング命令の構造を示す。
【図３】図３は、グラフィックスシステムのブロック図を示す。
【図４】図４は、ブレンディング処理ユニットのブロック図を示す。
【図５】図５は、ブレンディングを実行する手順を示す。
【図６】図６は、無線装置のブロック図を示す。
【発明を実施するための形態】
【０００９】
グラフィック処理ユニット（ＧＰＵ）は、異なる視覚効果を実現するための種々のブレンディングモードをサポートすることができる。例えば、ＧＰＵは、２００５年７月２８日付けの文献「ＯｐｅｎＶＧ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，  Ｖｅｒｓｉｏｎ  １．０」（公表されており、以下「ＯｐｅｎＶＧ」という）において定義されたブレンディングモードをサポートしてもよい。ＯｐｅｎＶＧは、２次元ベクトルグラフィックスに関する新規の規格であり、携帯型モバイル装置（例えば携帯電話機）に適している。
【００１０】
ブレンディングモードには、
１．α（αｓｒｃ，αｄｓｔ）で表されるアルファブレンディング方程式／関数、
２．ｃ（ｃｓｒｃ，ｃｄｓｔ，αｓｒｃ，αｄｓｔ）で表されるカラーブレンディング方程式／関数
が関係している。ただし、αｓｒｃはソースアルファ値、αｄｓｔはデスティネーションアルファ値、ｃｓｒｃはソースカラー値、ｃｄｓｔはデスティネーションカラー値である。カラー値は、赤（Ｒ）、緑（Ｇ）、青（Ｂ）その他について存在する種々のブレンディングモードのためのアルファおよびカラーブレンディング方程式は、以下で与えられる。
【００１１】
ブレンディングは、（Ｒｓｒｃ，Ｇｓｒｃ，Ｂｓｒｃ，αｓｒｃ）で表される、ソースカラーおよびアルファタプルを、（Ｒｄｓｔ，Ｇｄｓｔ，Ｂｄｓｔ，αｄｓｔ）で表される、デスティネーションカラーおよびアルファタプルと合成し、ｃ（Ｒｓｒｃ，Ｒｄｓｔ，αｓｒｃ，αｄｓｔ）、ｃ（Ｇｓｒｃ，Ｇｄｓｔ，αｓｒｃ，αｄｓｔ）、ｃ（Ｂｓｒｃ，Ｂｄｓｔ，αｓｒｃ，αｄｓｔ）、α（αｓｒｃ，αｄｓｔ）から構成される、合成されたタプルを提供する。合成は、アルファおよびカラーブレンディング方程式に従って実行される。特に、各カラー成分のソースおよびデスティネーションのカラー値は、カラーブレンディング方程式に従って合成され、ソースおよびデスティネーションのアルファ値は、アルファブレンディング方程式に従って合成される。ブレンドされたタプルは、典型的にはデスティネーションタプルを差し替える。
【００１２】
ＯｐｅｎＶＧは、以下のアルファおよびカラーブレンディング方程式を用いる５つのＰｏｒｔｅｒ−Ｄｕｆｆブレンディングモードをサポートする：
【数１】
2010507841.tif 000003
【００１３】
ただし、ＦｓｒｃとＦｄｓｔはそれぞれソースとデスティネーションのブレンディングファクタであり、異なるブレンディングモードについて、これらは異なる。
【００１４】
事前乗算カラー値ｃ’を得るために、カラー値ｃにアルファ値を以下のように乗算してもよい：
【数２】
2010507841.tif 000004
【００１５】
事前乗算カラー値のためのカラーブレンディング方程式は、次のように与えられる：
【数３】
2010507841.tif 000005
【００１６】
式（４）は式（２）と等価である。式（４）は事前乗算カラー値ｃ’ ｓｒｃおよびｃ’ ｄｓｔに用いることができ、式（２）は非事前乗算カラー値ｃｓｒｃおよびｃｄｓｔに用いることができる。
【００１７】
表１は、ＯｐｅｎＶＧにおける５つのＰｏｒｔｅｒ−Ｄｕｆｆブレンディングモードの場合のＦｓｒｃおよびＦｄｓｔブレンディングファクタを示す。
【表１】
2010507841.tif 000006
【００１８】
図１Ａ乃至１Ｅは、ＯｐｅｎＶＧにおける５つのＰｏｒｔｅｒ−Ｄｕｆｆブレンディングモードの場合のブレンディングを示す。これらの例において、ソース（Ｓｒｃ）はクロスハッシングと正方形によって表わされる。また、デスティネーション（Ｄｓｔ）は無地で塗りつぶされた円によって表わされる。図１Ａは「Ｓｒｃ」ブレンディングモードを示している。このブレンディングモードでは、ソース（正方形）は背景を差し替える。また、デスティネーション（円）は完全に透明である。図１Ｂは「ＳｒｃオーバーＤｓｔ」ブレンディングモードを示している。このブレンディングモードでは、ソースはデスティネーションと背景を差し替える。また、デスティネーションは背景を差し替える。図１Ｃは「ＤｓｔオーバーＳｒｃ」ブレンディングモードを示している。このブレンディングモードでは、デスティネーションはソースと背景を差し替える。また、ソースは背景を差し替える。図１Ｄは「ＳｒｃインＤｓｔ」ブレンディングモードを示している。このブレンディングモードでは、デスティネーション範囲内のソースの一部が背景を差し替える。図１Ｅは「ＤｓｔインＳｒｃ」ブレンディングモードを示している。このブレンディングモードでは、ソース範囲内のデスティネーションの一部が背景を差し替える。
【００１９】
ＯｐｅｎＶＧは４つの付加的なブレンディングモードをサポートする。テーブル２は４つの付加的なブレンディングモードを記載し、各モードについてカラーブレンディング方程式を与える。付加的なブレンディングモードはそれぞれカラー値を合成し、ｃ’（ｃｓｒｃ，ｃｄｓｔ，αｓｒｃ，αｄｓｔ）として示される、ブレンドされた事前乗算カラー値を提供する。
【表２】
2010507841.tif 000007
【００２０】
ＯｐｅｎＶＧは、ソースとデスティネーションがオーバラップしない場合に用いられる付加的なブレンディングモードをさらにサポートする。付加的なブレンディングモードのためのアルファおよびカラーブレンディング方程式は、次のように与えられる：
【数４】
2010507841.tif 000008
【００２１】
また２次元グラフィックス用に他のブレンディングモードをサポートしてもよい。概して、ＧＰＵは、２次元グラフィックスに関して、任意のブレンディング方程式セットのための任意のブレンディングモードセットをサポートしてもよい。
【００２２】
ＧＰＵは、さらに、３次元グラフィックス向けの種々のブレンディングモード、例えばオープングラフィックスライブラリ（ＯｐｅｎＧＬ）、Ｄｉｒｅｃｔ３Ｄなどにおいて定義されたブレンディングモードをサポートしてもよい。ＯｐｅｎＧＬは「Ｔｈｅ  ＯｐｅｎＧＬ  Ｇｒａｐｈｉｃｓ  Ｓｙｓｔｅｍ：  Ａ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」と題された２００４年１０月２２日付けバージョン２．０の文献で説明されている（公的に入手可能である）。ＯｐｅｎＧＬは、ＦＵＮＣ  ＡＤＤ（αｓｒｃ＊ｃｓｒｃ＋αｄｓｔ＊ｃｄｓｔ）、ＦＵＮＣ  ＳＵＢＴＲＡＣＴ（αｓｒｃ＊ｃｓｒｃ−αｄｓｔ＊ｃｄｓｔ）、ＦＵＮＣ  ＲＥＶＥＲＳＥ  ＳＵＢＴＲＡＣＴ（αｄｓｔ＊ｃｄｓｔ−αｓｒｃ＊ｃｓｒｃ）、ＭＩＮ（ｍｉｎ｛ｃｓｒｃ（ｃｄｓｔ｝））、ＭＡＸ（ｍａｘ｛ｃｓｒｃ（ｃｄｓｔ｝））といったブレンディングモードをサポートする。ＯｐｅｎＧＬの文献から与えられる種々のブレンディングファクタをブレンディングモードに用いてもよい。Ｄｉｒｅｃｔ３Ｄは、同様に、種々のブレンディングモードおよびブレンディング方程式をサポートする。
【００２３】
以上の例えば式（１）乃至（６）ならびに表１および２で説明したように、様々なブレンディングモードについて様々な方程式が存在し得る。専用ハードウェア内に、すべてのブレンディングモードについてアルファおよびカラーブレンディング方程式を素直に実装すると、手間がかかり莫大なコストが必要となることがある。
【００２４】
ある態様では、サポートされたブレンディングモード（例えばＯｐｅｎＶＧにおけるブレンディングモードおよび／または他のブレンディングモード）のためのブレンディング方程式が、演算の基本セットを使って効率的に実装される。各ブレンディング方程式は、基本セットから各演算を得て演算シーケンスに分解してもよい。異なるブレンディング方程式が、異なる演算シーケンスで実装されてもよい。演算の基本セットは、ハードウェア実装を単純化し、種々のブレンディング方程式ならびに他のグラフィック関数および機能のサポートに柔軟性を与える。
【００２５】
図２は、ブレンディングに用いられる演算に関してブレンディング命令２００の構造を示す。この構造において、ブレンディング命令２００は、クランプイネーブルフィールド２１２、ブレンディング演算（Ｏｐ）フィールド２１４、結果（Ｒｅｓ）フィールド２１６、デスティネーション（Ｄｓｔ）フィールド２１８、ソース（Ｓｒｃ）フィールド２２０、デスティネーションブレンディングファクタ（Ｄｓｔｆ）フィールド２２２、ソースブレンディングファクタ（Ｓｒｃｆ）フィールド２２４を含んでいる。ブレンディングＯｐフィールド２１４は、基本セットにおけるどの演算を実行するのかを示す。Ｓｒｃフィールド２２０は、ソース値がどこに格納されるかを示す。Ｄｓｔフィールド２１８は、デスティネーション値がどこに格納されるかを示す。Ｓｒｃｆフィールド２２４は、演算のためのソースブレンディングファクタを示す。Ｄｓｔｆフィールド２２２は、演算のためのデスティネーションブレンディングファクタを示す。Ｒｅｓフィールド２１６は、演算の結果をどこに格納するかを示す。クランプイネーブルフィールド２１２は、結果を、値の所定範囲（例えば０と１の間）に抑制するかどうかを示す。異なるフィールドを備えた他の命令フォーマットが用いられてもよい。
【００２６】
表３は、各演算に割り当てられた演算の基本セットとオペレーションコードの構造を示す。各ブレンディング命令について、ブレンディングＯｐフィールド２１４は、そのブレンディング命令について実行される演算のオペレーションコードを格納する。単純化のために、オペレーションコード０〜７での演算のことをそれぞれ演算０〜７と称する。
【表３】
2010507841.tif 000009
【００２７】
演算０および１について、ソースおよびデスティネーションの値は、ソースおよびデスティネーションのブレンディングファクタによってそれぞれ基準化され、該基準化された値は、合成される。演算０は、２つのブレンディングファクタと２つのオペランドのドット積を実行する。演算１はドット積の変形である。演算０および１は、以上説明したブレンディングモードのすべてについて用いられてもよい。演算２は、ソースおよびデスティネーションのより小さな値を提供し、演算３は、該２つのより大きな値を提供する。演算２および３は、ＶＧ＿ＢＬＥＮＤ＿ＤＡＲＫ、ＶＧ＿ＢＬＥＮＤ＿ＬＩＧＨＴＥＮおよび付加的なブレンディングモードについて用いられてもよい。演算４は、ソースおよびデスティネーションのブレンディングファクタでソースおよびデスティネーションの値をそれぞれ基準化し、該２つの基準化された値を格納する。演算４は、事前乗算カラー値と非事前乗算のカラー値との間の変換に用いられてもよい。
【００２８】
演算５はソース値について逆数（ＲＣＰ）演算を実行し、結果値を提供する。逆数演算は、除算命令を乗算演算に変換するために用いられ、典型的にはそれほど複雑ではない。例えば、ｃ＝ｃ’／αのように、事前乗算カラー値からカラー値を得てもよい。アルファによる除算は、まずアルファの逆数（つまり１／α）を得て、次にｃ＝ｃ’＊（１／α）のとおりｃ’に１／αを乗算することによって回避してもよい。逆数演算は、その両方が、結果アルファ値による除算を含む式（２）および（６）にも用いられてもよい。
【００２９】
演算６および７は、ガンマ展開およびガンマ圧縮にそれぞれ用いられる。人間の目は、高輝度よりも、低輝度／強度に対して敏感である。カラー値は、一般にガンマ圧縮またはガンマ符号化と呼ばれる処理によって圧縮されてもよい。ガンマ圧縮は、低輝度についてはより高解像度となり、高輝度についてはより粗い解像度となるように、カラー値をマッピングする。ガンマ圧縮は、
【数５】
2010507841.tif 000010
【００３０】
のように実行されてもよい。ただし、ｃｌｉｎはリニアカラー値であり、ｃｃｏｍｐは圧縮された、つまり非リニアのカラー値であり、γは圧縮量を決定するガンマ値である。概して、ガンマ圧縮は任意の関数またはマッピングに基づいて実行されてもよい。ガンマ展開は、リニアカラー値を得るために圧縮カラー値を展開する相補的処理である。ガンマ展開は、ガンマ圧縮に用いられる関数の逆関数に基づく。カラー成分Ｒ、Ｇ、およびＢが圧縮カラー値として典型的にはメモリに格納される。
【００３１】
概して、ブレンディングは、リニアまたは圧縮カラー値について実行されてもよい。リニアカラー値についてブレンディングを実行することにより、結果が改善される場合がある。従って、圧縮カラー値をメモリから取り出し、ブレンディングに先立って展開してもよい。次いで、該ブレンドされたカラー値を、メモリに戻して格納する前に圧縮してもよい。ガンマ圧縮は、ガンマ圧縮関数を格納するガンマルックアップテーブル（ＬＵＴ）で実現してもよい。ガンマ展開は、相補的なガンマ展開関数を格納するデガンマＬＵＴで実現してもよい。演算６については、デガンマＬＵＴは圧縮カラー値を受け取り、リニアカラー値を提供する。演算７については、ガンマＬＵＴはリニアカラー値を受け取り、圧縮カラー値を提供する。
【００３２】
表３は、演算の基本セットのための特定の構造を示す。他の演算のセットがブレンディングをサポートするために用いられてもよい。
【００３３】
ソースカラー値がシェーダコアから受け取られ、ソースレジスタに格納されてもよい。デスティネーションカラー値がメモリから取り出され、デスティネーションレジスタに格納されてもよい。ソースおよびデスティネーションのカラー値は合成されてもよい。また、該ブレンドされたカラー値がデスティネーションレジスタに格納されてもよい。
【００３４】
異なる演算を柔軟にサポートするために、複数のソースレジスタがソースカラーおよびアルファ値ならびに中間値を格納するために用いられてもよい。あるいは、または追加的に、複数のデスティネーションレジスタがデスティネーションカラーおよびアルファ値ならびに中間値を格納するために用いられてもよい。ある設計では、２つのソースレジスタおよび２つのデスティネーションレジスタがソース、デスティネーション、中間値を格納するために用いられる。演算０〜４の各々について、表３では、ＳｒｃとＤｓｔはソースおよびデスティネーションのレジスタのうちのいずれか２つに対応してもよい。演算５〜７の各々について、表３では、Ｓｒｃはソースおよびデスティネーションのレジスタのうちのいずれか１つに対応してもよい。各演算ごとに、結果は、ソースおよび／またはデスティネーションレジスタに格納されてもよく、もとのメモリに格納されてもよい。
【００３５】
表４は、図２におけるブレンディング命令２００について、Ｓｒｃ、Ｄｓｔ、およびＲｅｓフィールドの構造を示す。各ブレンディング命令について、Ｓｒｃフィールド２２０は、表４の第２のカラムに記載された４つのレジスタのうちのいずれか１つを示し、Ｄｓｔフィールド２１８についても該４つのレジスタのうちのいずれか１つを示し、Ｒｅｓフィールド２１６は、表４の最後のカラムに示される６つの出力オプションのうちのいずれか１つを示してもよい。ソースおよびデスティネーションのレジスタ（Ｒｅｓのためのコード４）は両方とも表３における演算４に用いられる。異なるレジスタおよび／または出力オプションを備える他の構造が用いられてもよい。
【表４】
2010507841.tif 000011
【００３６】
ＳｒｃｆとＤｓｔｆのブレンディングファクタはＳｒｃとＤｓｔの値をそれぞれ基準化するために表３内の演算０、１および４において用いられる。ＳｒｃｆとＤｓｔｆのブレンディングファクタは、すべてのブレンディングモードをサポートするために定義されてもよい。付加的なブレンディングファクタについても、他のグラフィック関数および機能（例えば３次元グラフィックス）をサポートするために定義されてもよい。
【００３７】
表５は、図２におけるブレンディング命令２００に関して、ＳｒｃｆおよびＤｓｔｆブレンディングファクタの構造を示す。各ブレンディング命令について、Ｓｒｃｆフィールド２２４は表５において示される選択(selection)のうちのいずれか１つを示してもよく、Ｄｓｔｆフィールド２２２は、これら選択のうちのいずれか１つも示してもよい。ブレンディング命令を生成するドライバ／コンパイラは、各ブレンディング命令に適合するブレンディングファクタを選択してもよい。
【表５】
2010507841.tif 000012
【００３８】
表５において、Ｓｒｃ＿ＡｌｐｈａとＳｒｃ＿Ｃｏｌｏｒは、それぞれ、ソースレジスタにおける、アルファ値およびカラー値であり、Ｓｒｃ２＿ＡｌｐｈａとＳｒｃ２＿Ｃｏｌｏｒは、それぞれ、第２のソースレジスタにおける、アルファ値およびカラー値であり、Ｄｓｔ＿ＡｌｐｈａとＤｓｔ＿Ｃｏｌｏｒは、それぞれ、デスティネーションレジスタにおける、アルファ値およびカラー値であり、Ｃｏｎｓｔ＿ＡｌｐｈａとＣｏｎｓｔ＿Ｃｏｌｏｒは、それぞれ、定数レジスタにおける、アルファ値およびカラー値である。
【００３９】
種々のブレンディングモードは、以上説明されたブレンディング命令、演算の基本セット、ソースおよびデスティネーションのレジスタおよびソースおよびデスティネーションのブレンディングファクタを使って効率的にインプリメントされることができる。明確にするために、ＯｐｅｎＶＧにおけるブレンディングモードに関するブレンディング命令を以下で詳細に説明する。式（１）乃至（４）および表１において示される、５つのＰｏｒｔｅｒ−Ｄｕｆｆブレンディングモードの各々は、２つの命令で実装されてもよい。第１の命令は、ソースおよびデスティネーションのカラー値にソースおよびデスティネーションのアルファ値をそれぞれ乗算する。表６は、第１の命令の種々のフィールドごとのコードを示す。
【表６】
2010507841.tif 000013
【００４０】
第２の命令は、事前乗算ソースおよびデスティネーションのカラー値にＦｓｒｃおよびＦｄｓｔブレンディングファクタをそれぞれ乗算し、式（４）において示されるように、２つの基準化された値を合成する。表７は、ＯｐｅｎＶＧにおける５つのＰｏｒｔｅｒ−Ｄｕｆｆブレンディングモードの各々に関して、第２の命令の種々のフィールドのコードを示す。
【表７】
2010507841.tif 000014
【００４１】
ＶＧ＿ＢＬＥＮＤ＿ＭＵＬＴＩＰＬＹブレンディングモードは３つの命令で実装されてもよい。第１の命令は、事前乗算ソースおよびデスティネーションのカラー値を得る。第２の命令は、αｓｒｃ＊ｃｓｒｃ＊（１−αｄｓｔ）＋αｄｓｔ＊ｃｄｓｔ＊（１−αｓｒｃ）を計算し、一時デスティネーションレジスタに中間結果を格納する。第３の命令は、中間結果をαｓｒｃ＊ｃｓｒｃ＊αｄｓｔ＊ｃｄｓｔで合計する。表８はＶＧ＿ＢＬＥＮＤ＿ＭＵＬＴＩＰＬＹブレンディングモードに関して３つの命令の場合のコードを示す。
【表８】
2010507841.tif 000015
【００４２】
ＶＧ＿ＢＬＥＮＤ＿ＳＣＲＥＥＮブレンディングモードは、２つの命令で実装されてもよい。第１の命令は、事前乗算ソースおよびデスティネーションのカラー値を得る。第２の命令はαｓｒｃ＊ｃｓｒｃ＋αｄｓｔ＊ｃｄｓｔ−αｓｒｃ＊ｃｓｒｃ＊αｄｓｔ＊ｃｄｓｔを計算する。表９は、ＶＧ＿ＢＬＥＮＤ＿ＳＣＲＥＥＮブレンディングモードに関して２つの命令のコードを示す。
【表９】
2010507841.tif 000016
【００４３】
ＶＧ＿ＢＬＥＮＤ＿ＤＡＲＫとＶＧ＿ＢＬＥＮＤ＿ＬＩＧＨＴＥＮのブレンディングモードは、各々４つの命令で実装されてもよい。
【００４４】
第１の命令は、事前乗算ソースおよびデスティネーションのカラー値を得る。第２の命令は、ｍｉｎまたはｍａｘ式の左辺を計算する。それは、（αｓｒｃ＊ｃｓｒｃ＋αｄｓｔ＊ｃｄｓｔ＊（１−αｓｒｃ））である。第３の命令は、ｍｉｎまたはｍａｘ式の右辺を計算する。それは、（αｄｓｔ＊ｃｄｓｔ＋αｓｒｃ＊ｃｓｒｃ＊（１−αｄｓｔ））である。第４の命令は、ｍｉｎまたはｍａｘ式に関してコンペア（compare）を実行する。表１０は、ＶＧ＿ＢＬＥＮＤ＿ＤＡＲＫとＶＧ＿ＢＬＥＮＤ＿ＬＩＧＨＴＥＮのブレンディングモードに関して４つの命令についてのコードを示す。
【表１０】
2010507841.tif 000017
【００４５】
式（５）および（６）における付加的なブレンディングモードは、４つの命令で実装されてもよい。第１の命令は、式（６）の分子を計算する。それはαｓｒｃ＊ｃｓｒｃ＋αｄｓｔ＊ｃｄｓｔである。第２の命令は、式（５）における結果アルファ値を計算する。ｍｉｎ演算は、図２におけるクランプイネーブルフィールド２１２をセットすることにより実現される、それは（ｓｒｃ＋ｄｓｔ）の結果を１に制限する。第３の命令は、結果アルファ値の逆数を計算する。第４の命令は、第１の命令による中間結果に、第３の命令による逆数値を乗算する。図２に示される命令フォーマットは、アルファおよびカラー演算の両方に用いられてもよい。複数の命令（例えばアルファのためのもの、およびカラーのためのもの）が、同一クロックサイクルにおいて並列に実行されてもよい。アルファおよびカラーのための命令には、異なるオペレーションコードおよびオペランドがあってもよい。表１１は、付加的なブレンディングモードに関して、４つの命令のためのコードを示す。第２の命令は、アルファのみについてのものであって、同一のクロックサイクルにおいて第１の命令と並行して実行されてもよい。
【表１１】
2010507841.tif 000018
【００４６】
以上示されるように、ＯｐｅｎＶＧにおけるブレンディングモードのすべてが、表３〜５に示される特徴のサブセットを用いてサポートされることができる。ＧＰＵは、ＯｐｅｎＶＧにおけるブレンディングモードのみをサポートする能力を持つように設計されてもよい。ＧＰＵは、例えば表３〜５に関して以上説明した追加機能を備えるように設計されてもよい。これらの追加機能は、関係するブレンディングモードをすべてサポートするために用いられてもよい。例えば、ＯｐｅｎＧＬに関してＦＵＮＣ  ＲＥＶＥＲＳＥ  ＳＵＢＴＲＡＣＴブレンディングモードが、表３における演算１およびソースレジスタのためのＤｓｔコード２とデスティネーションレジスタのためのＳｒｃコード０の選択によってエミュレート／インプリメントされてもよい。これらの追加機能は、例えばステンシル補間のような他のグラフィック機能をサポートするために用いられてもよい。
【００４７】
ステンシル補間は次の方程式セットを用いる：
【数６】
2010507841.tif 000019
【００４８】
ただし、αｉｍａｇｅは第１のソースアルファ値であり、αｐａｉｎｔは第２のソースアルファ値であり、式（７）に関してαｓｒｃ＝αｉｍａｇｅ＊αｐａｉｎｔであり、式（８）乃至（１０）に関してαｓｒｃ＝αｉｍａｇｅ＊αｐａｉｎｔ＊Ｒｉｍａｇｅである。
【００４９】
アルファブレンディング式（７）およびカラーブレンディング式（８）乃至（１０）は、ブレンディングモードに依存してもよい。例えば、「ＳｒｃオーバーＤｓｔ」Ｐｏｒｔｅｒ−Ｄｕｆｆブレンディングモードが選択されている場合、ステンシル補間は次のように表現されてもよい：
【数７】
2010507841.tif 000020
【００５０】
種々のブレンディングモードならびに他のグラフィック機能が以下のようにサポートされてもよい：
10    Call RCP to compute 1/alpha            //Dst pre-format
20    Call MUL to divide alpha out of Dst
30    Call DeGammaLUT to convert compressed color to linear color
40    Op0: Src=alpha*Src, Dst=alpha*Dst        //do blending
41    Op1: Instruction for mode-dependent blending equation
・                              ・
・                              ・
・                              ・
4n    Opn: Instruction for mode-dependent blending equation
50    Call RCP to compute 1/alpha        //Dst post-format
60    Call MUL to divide alpha out of Dst
70    Call GammaLUT to convert linear color to compressed color
80    Call MUL to multiply alpha with Dst and store Dst  
命令１０〜８０は、カラー成分が事前乗算圧縮カラー値として格納されることを前提とする。命令１０、２０および３０はデスティネーションカラー値のプリフォーマット用である。命令１０および２０は、デスティネーションカラー値からアルファを分ける。命令３０は、圧縮カラーをリニアカラーに変換する。命令４０から４ｎは、選択されたブレンディングモードに依存する演算に関するものである。命令５０〜８０は、結果カラー値のポストフォーマットに関するものである。命令５０および６０は、非事前乗算カラー値を得るために結果アルファを分割する。命令７０は、リニアカラーを圧縮カラーに変換する。命令８０は、圧縮カラー値にアルファを乗算し、メモリに最終結果を格納する。カラー値が非事前乗算フォーマットで格納される場合、命令１０、２０および８０は省略されてもよい。カラー成分が圧縮カラー値に代わるリニアカラー値として格納される場合、命令３０および７０が省略されてもよい。
【００５１】
表３〜５における構造の例についての説明は以上である。概して、ブレンディング処理ユニットは、任意の演算セット、任意の、ソースおよびデスティネーションレジスタセットおよび任意のブレンディングファクタセットをサポートしてもよい。サポートされた演算セットは、任意のブレンディングモード、場合により他のグラフィック関数および機能を実装するために用いることができる。明確にするために、ＯｐｅｎＶＧにおけるブレンディングモードについて具体的な構造を説明した。該構造は他のブレンディングモードに用いられてもよい。
【００５２】
ここで説明されたブレンディング技術は、ＧＰＵ、グラフィックスプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、縮小命令型コンピュータ（ＲＩＳＣ）、アドバンストＲＩＳＣマシン（ＡＲＭ）、コントローラ、マイクロプロセッサなどのような種々の型のプロセッサに用いられてもよい。ＧＰＵ技術の例示的用途を下記に述べる。
【００５３】
図３は、グラフィックスシステム３００の構造のブロック図を示している。それは、スタンドアロンシステム、または計算機システム、無線通信装置などのようなより大きなシステムの一部であってもよい。グラフィックスアプリケーション３１０が同時に実行してもよく、これはビデオゲーム、グラフィックス、テレビ会議等を目的としたものであってもよい。グラフィックスアプリケーション３１０は、グラフィックスデータについてグラフィックス処理を実行するために高水準命令を生成する。高水準命令は比較的複雑であるかもしれない。図形データは形状情報（例えば画像内のプリミティブの頂点の情報）、画像がどのように見えるかを表す情報などを含んでも良い。ＡＰＩ（ＡＰＩ）３２０は、グラフィックスアプリケーション３１０とＧＰＵのドライバ／コンパイラ３３０の間のインタフェースを提供する。それはプロセッサで実行されるソフトウェアおよび／またはファームウェアであってもよい。
【００５４】
ＧＰＵのドライバ／コンパイラ３３０は高水準命令を低水準命令に変換する。それは依存し、根本的な処理ユニットに適合したマシンかもしれない。例えば、データをバッファ蓄積(buffers store)するＧＰＵドライバ／コンパイラ３３０は、グラフィックスデータがどこにあるかを指示する。ＧＰＵドライバ／コンパイラ３３０は、例えば自動的に、およびアプリケーションに対してトランスペアレントに、各アプリケーションの処理を一連のスレッドに分割してもよい。スレッド（または実行スレッド）は、１つまたは複数の命令セットで実行されてもよい特定のタスクを示す。例えば、スレッドが、数ピクセル数についてブレンディングを実行してもよい。スレッドは、アプリケーションが、異なる単位で同時に実行される複数のタスクを持つことを許容し、異なるアプリケーションがリソースを共有することを許容する。
【００５５】
ＧＰＵ３４０は、シェーダコア３５０およびブレンディング処理ユニット３６０を含む。用語「コア」、「エンジン」、「マシン」、「プロセッサ」および「処理ユニット」は、しばしば区別なく用いられる。シェーダコア３５０は、シェーディング、テクスチャマッピングなどのようなグラフィックス処理を実行してもよい。ブレンディング処理ユニット３６０は、ブレンディングを実行し、任意の数のブレンディングモードをサポートしてもよい。ＧＰＵ３４０は、単純化のため図３には示していない他の処理ユニット（例えばテクスチャエンジン）を含んでもよい。
【００５６】
キャッシュ／記憶装置３７０はＧＰＵ３４０に対する命令とデータを格納してもよい。システム３７０は、より速くアクセスされ得る高速メモリである１つまたは複数のキャッシュを含んでも良い。
【００５７】
図４は、図３におけるブレンディング処理ユニット３６０の構造のブロック図を示す。ソースレジスタ４１２は、（例えば図３におけるシェーダコア３５０から）ソースカラーおよびアルファ値および／またはブレンディング実行ユニット４１０からの中間結果を受け取って格納する。第２のソースレジスタ４１４は、付加的なカラーおよびアルファ値および／または中間結果を格納する。ブレンディング処理ユニット３６０は、シェーダコア３５０から各ピクセルに関して１または２セットのソースＲＧＢカラー値を受け取り、ソースレジスタ４１２および４１４のうちの１つにソースカラー値セットの各々を格納してもよい。ブレンディング処理ユニット３６０は、各ピクセルについて二色までのブレンディングを実行してもよい。
【００５８】
プリフォーマットユニット４２０は、（例えば図３におけるメモリ３７０からの）デスティネーションカラーおよびアルファ値を受け取り、プリフォーマットを実行する。ユニット４２０は、事前乗算カラー値に関してアルファを分割し、圧縮カラーからリニアカラーへの変換などを実行する。デスティネーションレジスタ４２２は、プリフォーマットユニット４２０からのあらかじめフォーマットされたデスティネーションカラーおよびアルファ値および／またはブレンディング実行ユニット４１０からの中間結果を格納する。一時的デスティネーションレジスタ４２４は、中間結果を格納する。
【００５９】
ブレンディング実行ユニット４１０は、（例えば図３におけるシェーダコア３５０を通じてＧＰＵドライバ／コンパイラ３３０からの）ブレンディング命令を受け取り、該受け取った命令を復号する。さらにユニット４１０は、該復号された命令に従って、ソースおよびデスティネーションの値およびブレンディングファクタを読み出し、これらの値とファクタの処理のためにこれらを計算ユニット４４０に送る。ユニット４１０は、ユニット４４０から結果を受け取り、適切なレジスタにこれらの結果を格納する。ポストフォーマットユニット４３０は、結果についてポストフォーマットを実行し、事前乗算カラー値に関してアルファを分割してもよく、リニアカラーから圧縮カラーへの変換を実行してもよく、結果カラー値が事前乗算フォーマットで格納されることになっている場合、アルファとの乗算を行うなどしてもよい。
【００６０】
ユニット４４０は、逆数（ＲＣＰ）ユニット４４２、ガンマＬＵＴ４４４、デガンマＬＵＴ４４６およびブレンディングＡＬＵ  ４４８を含む。ブレンディングＡＬＵ４４８は、表３における演算０〜４を実行してもよい。ブレンダーＡＬＵ４４８は、ユニット４１０、４２０および４３０から受け取られたオペランドについて演算を行い、これらのユニットに結果を提供してもよい。ユニット４４２は、入力オペランドを受け取り、オペランドの逆数を提供する。ガンマＬＵＴ４４４は、リニアカラー値を受け取り、圧縮カラー値を提供する。デガンマＬＵＴ４４６は、圧縮カラー値を受け取り、リニアカラー値を提供する。ブレンディング実行ユニット４１０、プリフォーマットユニット４２０およびポストフォーマットユニット４３０は、例えばブレンディング命令によって示された演算の実行、アルファまたは１／アルファとの乗算などのために必要に応じて逆数ユニット４４２、ガンマＬＵＴ４４４、デガンマＬＵＴ４４６およびブレンディングＡＬＵ４４８を呼び出してもよい。ブレンディング実行ユニット４１０は、ガンマＬＵＴ４４４およびデガンマＬＵＴ４４６を、特定のブレンディングモードまたは特殊機能のために呼び出してもよい。例えば、シェーダコア３５０からのソース値をリニアフォーマットとしてもよく、ブレンディングモードを圧縮フォーマットで演算してもよい。この場合、ブレンディング実行ユニット４１０は、ソース値を圧縮フォーマットに変換するためのガンマＬＵＴ４４４を呼び出し、ブレンディング演算を実行し、次いで、結果をリニアフォーマットに変換するためのデガンマＬＵＴ４４６を呼び出してもよい。
【００６１】
制御レジスタ４５０は、処理中のデータのフォーマットを示す制御ビットを格納する。例えば、制御ビットは、カラー値が（ａ）事前乗算フォーマットまたは非事前乗算フォーマットのどちらで格納され、（ｂ）圧縮フォーマットまたはリニアフォーマットのどちらで格納されるかを示してもよい。ユニット４２０は、制御ビットに従って、インバウンドのデスティネーションカラー値についてプリフォーマットを実行してもよい。同様に、ユニット４３０は、制御ビットに従って、アウトバウンドのカラー値についてポストフォーマットを実行してもよい。制御レジスタ４５０は、ＧＰＵドライバ／コンパイラ３３０または他の何らかのユニットによってセットされてもよい。
【００６２】
プリフォーマットユニット４２０、ブレンディング実行ユニット４１０およびポストフォーマットユニット４３０は、所与のスレッドについてパイプライン方式で動作してもよい。またユニット４１０、４２０および４３０は、複数のスレッド上で同時に動作してもよい。例えば、あるクロックサイクルでは、ユニット４２０は、１つのスレッドでプリフォーマットを実行してもよい。ユニット４１０は、別のスレッドで処理を実行してもよい。また、ユニット４３０は、さらに別のスレッドでポストフォーマットを実行してもよい。ユニット４１０、４２０および４３０は、ユニット４４２、４４４、４４６および４４８を必要に応じて呼び出してもよい。
【００６３】
ここで説明されたブレンディング処理ユニット（あるいはブレンディングユニット）は、低価格のものとすることができ、ＯｐｅｎＶＧにおけるブレンディングモードをすべてサポートすることができる。ブレンディングユニットは、融通性があり、他のブレンディングモードおよびブレンディング機能をサポートすることができる。またブレンディングユニットは、他の処理ユニットとのロードバランシングのために用いられてもよい。例えば、ブレンディングユニットのロードを取り除くために、いくつかの演算は別の処理ユニット（例えばシェーダコア３５０）に移動されてもよい。または、ブレンディングユニットは、これらのユニット間の作業負荷の平衡を保つために他の処理ユニットのための演算を実行してもよい。ブレンディングユニットは、３次元グラフィックス規格（例えばＯｐｅｎＧＬ  ＥＳ２．０、Ｄｉｒｅｃｔ３Ｄなど）、ＯｐｅｎＶＧ規格および／または他の規格を満たように設計してもよい。融通性がありプログラマブルであるというブレンディングユニットの性質によれば、ブレンディングユニットを再度設計することなく、単にブレンディング命令をリライトすることによって、これらの規格の将来の拡張に対応することができる
図５は、ブレンディングを実行する手順５００を示す。第１のブレンディングモードのための第１の演算シーケンスについて、第１の命令シーケンスが実行される（ブロック５１２）。第２のブレンディングモードのための第２の演算シーケンスについて、第２の命令シーケンスが実行される（ブロック５１４）。第１および第２のシーケンスにおける演算は、第１および第２のブレンディングモードを包含する複数のブレンディングモードのための演算セットからのものである。第１および第２の命令シーケンスは、ＧＰＵドライバ／コンパイラ３３０または他の何らかのユニットによって生成され、シェーダコア３５０、ブレンディング処理ユニット３６０または他の何らかのユニットにおいて格納されてもよい。シーケンスは、２つのブレンディングファクタと２つのオペランドとの１つのドット積のための命令を含んでも良く、オペランドの逆数のための命令を含んでも良く、リニアカラーを圧縮カラーに変換する命令、圧縮カラーをリニアカラーに変換する命令などを含んでもよい。
【００６４】
ここで説明されたブレンディング技術は、無線通信装置、ハンドヘルド装置、ゲーミング装置、コンピューティング装置、ネットワークの装置、個人向け電子機器装置などに用いられてもよい。無線通信装置技術向けの例示的用途を以下に説明する。
【００６５】
図６は、無線通信システムにおける無線通信装置６００の構造のブロック図を示す。無線装置６００は、携帯電話、端末、ハンドセット、携帯情報端末（ＰＤＡ）または他の何らかの装置であってもよい。無線通信システムは、符号分割多元接続（ＣＤＭＡ）システム、グローバル移動体通信システム（ＧＳＭ）システムまたは他の何らかのシステムであってもよい。
【００６６】
無線装置６００は、受信パスおよび送信パスを介した双方向通信を提供することが可能である。受信パスにおいては、基地局によって送信された信号が、アンテナ６１２によって受け取られ、受信機（ＲＣＶＲ）６１４に提供される。受信機６１４は、受信信号を整えてディジタル化し、さらなる処理のためにデジタル部６２０に対しサンプルを供給する。送信パスについて、送信機（ＴＭＴＲ）６１６は、デジタル部６２０から送信されるデータを受け取り、該データを処理して整え、変調された信号を生成する。それは、アンテナ６１２を通じて基地局に送信される。
【００６７】
デジタルセクション６２０は、例えばモデムプロセッサ６２２、ビデオプロセッサ６２４、コントローラ／プロセッサ６２６、ディスプレイプロセッサ６２８、ＡＲＭ／ＤＳＰ  ６３２、ＧＰＵ６３４、内部メモリ６３６、外部バスインタフェース（ＥＢＩ）６３８のような各種処理ユニット、インタフェースユニット、メモリユニットを含む。モデムプロセッサ６２２は、データ送受信のための処理（例えば符号化、変調、復調および復号）を実行する。ビデオプロセッサ６２４は、カムコーダー、ビデオプレイバック、ビデオコンファレンシングのようなビデオアプリケーションに関して、ビデオコンテンツ（例えば静止画像、動画像、動画テキスト）の処理を実行する。コントローラ／プロセッサ６２６は、デジタル部６２０内の各種処理およびインタフェースユニットの演算を指令してもよい。ディスプレイプロセッサ６２８は、ディスプレイ装置６３０上でのビデオ、グラフィックスおよびテキストの表示を容易化するための処理を実行する。ＡＲＭ／ＤＳＰ６３２は、無線装置６００向けに種々のタイプの処理を実行してもよい。ＧＰＵ６３４は、図３に示されるように実装されることができ、図形処理を実行する。内部メモリ６３６は、デジタル部６２０内の種々のユニットに対するデータおよび／または命令を格納する。ＥＢＩ６３８は、デジタル部６２０（例えば内部メモリ６３６）と主メモリ６４０の間のデータ転送を容易化する。
【００６８】
デジタル部６２０は、１つまたは複数のＤＳＰ、マイクロプロセッサ、ＲＩＳＣなどで実装されてもよい。またデジタル部６２０、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）および／または他の何らかのタイプの集積回路（ＩＣ）上に組み立てられても良い。
【００６９】
ここで説明されたブレンディング技術は、種々の手段によって実装されてもよい。例えば、これらの技術はハードウェア、ファームウェア、ソフトウェアまたはそれらの組み合わせで実装されてもよい。ハードウェア実装について、ブレンディングを実行するために用いられる処理ユニット（例えば、図３におけるＧＰＵ３４０またはブレンディング処理ユニット３６０）は、１つまたは複数のＡＳＩＣ、ＤＳＰ、ディジタル信号処理装置（ＤＳＰＤ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、電子機器、ここに説明された機能を実行するように設計された他の電子ユニット、またはそれらの組み合わせの範囲内で実装されてもよい。処理ユニットは、統合／組み込みメモリを含んでいてもよいし、含んでいなくてもよい。
【００７０】
ここで説明されたブレンディング処理ユニットおよびＧＰＵは、スタンドアロンのユニットであってもよいし、あるデバイスの一部であってもよい。該デバイスは、（ｉ）グラフィックスＩＣのようなスタンドアロンのＩＣ、（ｉｉ）データおよび／または命令を格納するためのメモリＩＣを含み得る１つまたは複数のＩＣのセット、（ｉｉｉ）統合図形処理機能を備えた移動局モデム（ＭＳＭ）のようなＡＳＩＣ（ｉｖ）他の装置内に組み込まれ得るモジュール、（ｖ）携帯電話、無線装置、ハンドセットまたは移動ユニット、（ｖｉ）その他であってもよい。
【００７１】
ファームウェアおよび／またはソフトウェア実装については、ブレンディング技術は、ここで説明された機能を実行するモジュール（例えばプロシージャ、関数など）で実装することができる。ファームウェアおよび／またはソフトウェアコードは、メモリ（例えば、図６におけるメモリ６３６または６４０）に格納され、プロセッサ（例えばプロセッサ６２６）によって実行されてもよい。メモリは、プロセッサ内に実装されるか、プロセッサ外部のものであってもよい。
【００７２】
本開示のこれまでの詳細な説明は、あらゆる当業者に対し、本開示をもたらし、本開示を用いて実施可能にするために提供される。本開示への種々の変更は、当業者であれば即座に明白になる。また、ここで定義された一般的な原理は、本開示の精神または範囲から逸脱することなく、他の変形に適用されてもよい。したがって、本開示は、本明細書で説明された例に限定されることは意図されておらず、ここで開示された原理および新規な特徴に相応しい最も広い範囲を与えられることが意図されている。
【図１Ａ】
2010507841.tif 000021
【図１Ｂ】
2010507841.tif 000022
【図１Ｃ】
2010507841.tif 000023
【図１Ｄ】
2010507841.tif 000024
【図１Ｅ】
2010507841.tif 000025
【図２】
2010507841.tif 000026
【図３】
2010507841.tif 000027
【図４】
2010507841.tif 000028
【図５】
2010507841.tif 000029
【図６】
2010507841.tif 000030
【国際調査報告】
2010507841.tif 000031
2010507841.tif 000032
2010507841.tif 000033