(57)【要約】  １つのシザリング領域ごとに描画面上に描画し、各シザリング領域内の画素のシザー値を更新することによって、任意の数のシザリング領域に対して順々にシザリングが実行される。画素のシザー値は、その画素をカバーするシザリング領域の数を示し、また、その画素をカバーする各シザリング領域についてインクリメントされる。また、画素のシザー値はビットマップであってもよく、シザリング領域のビットは、画素がシザリング領域内に存在する場合、１にセットされる。関心領域内の画素は送出されてレンダリングされ、領域の外側の画素は除去される。この領域は、基準値によって定義されてもよく、この基準値は、（ａ）シザリングＵＮＩＯＮ処理の場合、すべてのシザリング領域の集合に対しては１にセットされ、または、（ｂ）シザリングＡＮＤ処理の場合、複数の（例えば、すべての）シザリング領域の共通部分に対しては１よりも大きい値にセットされる。
2010510608.tif 000002
【特許請求の範囲】
【請求項１】
画素のシザー値を記憶するためのバッファと、
複数のシザリング領域に対して、１つのシザリング領域ごとに順々にシザリングを実行し、前記シザリング領域のそれぞれについて、前記シザリング領域内の前記画素の前記シザー値を更新するための処理ユニットと、
を備えるデバイス。
【請求項２】
前記画素のシザー値は、前記画素をカバーする前記シザリング領域の数を示し、前記処理ユニットは、前記シザリング領域のそれぞれについて、前記シザリング領域内の前記画素のシザー値をインクリメントする、請求項１に記載のデバイス。
【請求項３】
前記処理ユニットは、前記複数のシザリング領域のうちの少なくとも１つを削除し、前記削除されるシザリング領域のそれぞれについて、前記シザリング領域内の前記画素のシザー値が０よりも大きい場合、前記シザー値をデクリメントする、請求項２に記載のデバイス。
【請求項４】
前記処理ユニットは、前記複数のシザリング領域に追加される少なくとも１つのシザリング領域に対してシザリングを実行し、前記追加されるシザリング領域のそれぞれについて、前記シザリング領域内の前記画素のシザー値をインクリメントする、請求項２に記載のデバイス。
【請求項５】
前記画素のシザー値は、前記複数のシザリング領域のビットマップであり、前記複数のシザリング領域のそれぞれは、前記ビットマップ内の各ビットに関連づけられる、請求項１に記載のデバイス。
【請求項６】
前記処理ユニットは、前記シザリング領域のそれぞれについて、前記シザリング領域内の前記画素のシザー値における対応するビットを所定の値にセットする、請求項５に記載のデバイス。
【請求項７】
前記画素のシザー値は複数のビットを備え、前記各ビットは、前記シザリング領域からなるそれぞれのセットに関連づけられ、前記画素が前記セットのうちのいずれかのシザリング領域内に存在するかどうかを示す、請求項１に記載のデバイス。
【請求項８】
前記画素のシザー値における前記複数のビットは、前記シザリング領域からなる複数のセットに関連づけられ、前記シザリング領域のそれぞれは、前記複数のセットのうちの１つに属する、請求項１に記載のデバイス。
【請求項９】
前記画素のシザー値は、前記画素がいずれかの前記シザリング領域内に存在するかどうかを示し、前記処理ユニットは、前記シザリング領域のそれぞれについて、前記シザリング領域内の前記画素のシザー値を所定の値にセットする、請求項１に記載のデバイス。
【請求項１０】
前記バッファは、前記シザリングを実行する前に、前記バッファ内の前記シザー値を０にリセットすることによって初期化される、請求項１に記載のデバイス。
【請求項１１】
前記処理ユニットは、前記画素のシザー値を基準値と比較し、前記シザー値が前記基準値に等しいかまたは前記基準値よりも大きい前記画素を送出する、請求項１に記載のデバイス。
【請求項１２】
前記処理ユニットは、グラフィックスパイプラインにおける先行するステージから入力されてくる画素を受け取り、前記画素のシザー値に基づいて、前記入力されてくる画素のそれぞれを送出するか破棄するかを決定する、請求項１に記載のデバイス。
【請求項１３】
前記処理ユニットは、前記複数のシザリング領域の集合によって構成される領域内の画素を送出する、請求項１に記載のデバイス。
【請求項１４】
前記処理ユニットは、前記複数のシザリング領域のうちの少なくとも２つの共通部分によって構成される領域内の画素を送出する、請求項１に記載のデバイス。
【請求項１５】
前記処理ユニットは、前記複数のシザリング領域の共通部分によって構成される領域内の画素を送出する、請求項１に記載の装置。
【請求項１６】
関心領域内に存在しかつ前記バッファ内の前記シザー値に基づいて決定される画素をレンダリングするレンダリングユニットをさらに備える、請求項１に記載のデバイス。
【請求項１７】
前記バッファは、ステンシルバッファであり、前記処理ユニットは、３Ｄグラフィックスのためのステンシルテストユニットであり、前記ステンシルバッファおよび前記ステンシルテストユニットは、２Ｄグラフィックスのためのシザリングを実行するために使用される、請求項１に記載のデバイス。
【請求項１８】
前記処理ユニットは、前記シザリング領域のそれぞれについて、前記シザリング領域内の前記画素に対してステンシルテストを実行し、前記シザリング領域内の前記画素のシザー値を更新するためのステンシル処理を実行する、請求項１７に記載の装置。
【請求項１９】
前記画素は、Ｎビットシザー値に関連づけられ、ここで、Ｎは１よりも大きく、前記処理ユニットは、最大で（２Ｎ−１）個の前記シザリング領域に対してシザリングを実行する、請求項１に記載の装置。
【請求項２０】
３Ｄグラフィックスにおける画素のステンシル値を記憶し、かつ、２Ｄグラフィックスにおける画素のシザー値を記憶するためのステンシルバッファと、
３Ｄグラフィックスに対してステンシルテストを実行し、かつ、２Ｄグラフィックスに対して複数のシザリング領域に順々にシザリングを実行するためのステンシルテストユニットと、
を備える装置。
【請求項２１】
前記ステンシルテストユニットは、前記シザリング領域のそれぞれについて、前記シザリング領域内の前記画素のシザー値をインクリメントする、請求項２０に記載の装置。
【請求項２２】
複数のシザリング領域に対して、１つのシザリング領域ごとに順々にシザリングを実行し、かつ、前記シザリング領域のそれぞれについて、前記シザリング領域内の前記のシザー値を更新するためのプロセッサと、
前記画素のシザー値を記憶するためのメモリと、
を備える無線装置。
【請求項２３】
複数のシザリング領域に対して、１つのシザリング領域ごとに順々にシザリングを実行することと、
前記シザリング領域のそれぞれについて、前記シザリング領域内の画素のシザー値を更新することと、
を備える方法。
【請求項２４】
前記シザリング領域内の前記画素のシザー値を更新することは、前記シザリング領域内の前記画素のシザー値をインクリメントすることを備える、請求項２３に記載の方法。
【請求項２５】
前記複数のシザリング領域のうちの少なくとも１つを削除することと、
前記削除されるシザリング領域のそれぞれについて、前記シザー値が０よりも大きい場合、前記シザリング領域内の前記画素のシザー値をデクリメントすることと、
をさらに備える、請求項２３に記載の方法。
【請求項２６】
前記画素のシザー値を基準値と比較することと、
前記シザー値が前記基準値に等しいかまたは前記基準値よりも大きい前記画素を送出することと、
をさらに備える、請求項２３に記載の方法。
【請求項２７】
前記複数のシザリング領域の集合によって構成される領域内の前記画素を送出することをさらに備える、請求項２３に記載の方法。
【請求項２８】
前記複数のシザリング領域のうちの少なくとも２つの共通部分によって構成される領域内の前記画素を送出することをさらに備える、請求項２３に記載の方法。
【請求項２９】
複数のシザリング領域に対して、１つのシザリング領域ごとに順々にシザリングを実行するための手段と、
前記各シザリング領域内の画素のシザー値を更新するための手段と、
を備える装置。
【請求項３０】
前記画素のシザー値を基準値と比較するための手段と、
前記シザー値が前記基準値に等しいかまたは前記基準値よりも大きい前記画素を送出するための手段と、
をさらに備える、請求項２９に記載の装置。
【請求項３１】
前記複数のシザリング領域の集合によって構成される領域内の前記画素を送出するための手段をさらに備える請求項２９に記載の装置。
【請求項３２】
プロセッサに、
複数のシザリング領域に対して、１つのシザリング領域ごとに順々にシザリングを実行させ、
前記各シザリング領域内の画素のシザー値を更新させる、
ための命令を格納するプロセッサ可読媒体。
【請求項３３】
前記プロセッサに、
前記画素のシザー値を基準値と比較させ、
前記シザー値が前記基準値に等しいかまたは前記基準値よりも大きい前記画素を送出させる、
ための命令をさらに格納する、請求項３２に記載のプロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には電子技術に関し、より詳細にはグラフィックスアプリケーションのためのシザリングを実行する技術に関する。
【背景技術】
【０００２】
グラフィックスプロセッシングユニット（ＧＰＵ）は、ビデオゲーム、グラフィックス、コンピュータ支援設計（ＣＡＤ）、シミュレーションおよび可視化ツール、イメージング、などのような様々なアプリケーションのための２次元（２Ｄ）画像および３次元（３Ｄ）画像をレンダリングするのに使用される専用ハードウェアユニットである。ＧＰＵは、線画（drawing）または画像をレンダリングするために、シェーディング、ブレンディング、などのような様々なグラフィックス処理を実行する。これらのグラフィックス処理は、ほとんどの場合、計算処理の負荷が大きいものである。計算処理量を減少させるために、線画は、描画面の境界までクリッピングされることがある。線画は、さらに、１つまたは複数のシザリング領域の内側までクリッピングされることもある。各シザリング領域は、保持されるべき描画面の特定の部分を表わす。線画のクリッピングされた部分は除去され、したがって、レンダリングされない。線画の除去される部分の計算処理を省略することによって、改善された性能が達成され得る。
【０００３】
シザリングは、線画または画像を１つまたは複数のシザリング領域によってクリッピングする処理を意味する。ＧＰＵは、線画のレンダリングされなくてもよい部分の計算処理を省略するためにシザリングを実行し得る。しかしながら、シザリングを実行するためには、処理資源およびメモリ資源が消費される。シザリングのために使用される資源の量は、シザリング領域の数とともに増加する。
【０００４】
したがって、この分野においてシザリングを効率的に実行するための技術が求められている。
【発明の概要】
【０００５】
シザリングを効率的に実行するための技術が本明細書で説明される。一態様において、（ａ）描画面またはレンダリング領域上に一度に１つのシザリング領域を描画し、（ｂ）各シザリング領域について、シザリング領域内の画素のシザー値(scissor values)を更新することによって、任意の数のシザリング領域に対して順々にシザリングを実行することができる。
【０００６】
シザー値は、様々な方法で更新することができる。一設計において、画素のシザー値は、この画素をカバーするシザリング領域の数を示す。各シザリング領域内の画素のシザー値は、シザリング領域が追加される場合には１だけインクリメントされ、あるいは、シザリング領域が削除される場合には１だけデクリメントされる。別の設計においては、画素のシザー値は、様々なシザリング領域のビットマップであり、各シザリング領域は、ビットマップ内の各ビットに関連づけられる。各シザリング領域について、シザリング領域内の画素のシザー値における対応するビットは、所定の値、例えば１にセットされる。さらに別の設計においては、画素のシザー値は、その画素がいずれかのシザリング領域内に存在するかどうかを示す。
【０００７】
すべてのシザリング領域のシザー値を更新した後、関心領域内の画素は、レンダリングのために送出される。これは、画素のシザー値を基準値と比較し、シザー値が基準値に等しいかまたは基準値よりも大きい画素を送出することによって達成されうる。基準値は、すべてのシザリング領域の集合によって構成される領域内の画素を送出するためのシザリングＵＮＩＯＮ処理の場合には、１にセットされうる。基準値は、少なくとも２つの（例えば、すべての）シザリング領域の共通部分(intersection)によって構成される領域内の画素を送出するためのシザリングＡＮＤ処理の場合には、１よりも大きい値にセットされてもよい。ここで、ＵＮＩＯＮおよびＡＮＤは、シザリング領域に対する論理演算を意味する。
【０００８】
本発明の様々な態様および特徴は以下により詳細に説明される。
【図面の簡単な説明】
【０００９】
【図１】２Ｄグラフィックスにおけるシザリング領域を例示する図である。
【図２】複数のシザリング領域によるシザリングを例示する図である。
【図３】シザリングを実行するための処理を示す図である。
【図４】２Ｄグラフィックスパイプラインを示す図である。
【図５】３Ｄグラフィックスパイプラインを示す図である。
【図６】シザリングを実行するＧＰＵを示す図である。
【図７】無線通信装置を示すブロック図である。
【発明の詳細な説明】
【００１０】
２Ｄグラフィックスをサポートするグラフィックスプロセッシングユニット（ＧＰＵ）は、複数のシザリング領域によるシザリングをサポートすることができる。例えば、ＧＰＵは、２００５年７月２８日に公開され、公的に入手可能な「ＯｐｅｎＶＧ仕様バージョン１．０」をサポートする。このＯｐｅｎＶＧ仕様バージョン１．０は、以下、ＯｐｅｎＶＧという。ＯｐｅｎＶＧは、２Ｄベクトルグラフィックスの新しい規格であり、例えば、携帯電話機およびゲーム機器のようなハンドヘルド機器およびモバイル機器に適したものである。ＯｐｅｎＶＧは、最少で３２個のシザリング領域をサポートするための２ＤＧＰＵを必要とする。
【００１１】
図１は、２Ｄグラフィックスにおけるシザリング領域を例示している。描画面１００は、レンダリング領域、表示画面、または、その他の何らかの出力装置を表す。描画面１００は、任意の大きさの幅および高さ（Ｗ×Ｈ）を有し（例えば、ＶＧＡの場合、６４０画素×４８０画素）、したがって、Ｗ・Ｈ個の画素を含む。図１に示す例においては、８個のシザリング領域が定義され、これらをシザリング領域１〜８と呼ぶ。各シザリング領域は、例えば、一方の左下隅の座標と他方の右上隅の座標との２つの座標によって定義された矩形である。一般的に、シザリング領域は、例えば、矩形、三角形、円形、多角形、複雑形状または任意形状など、どのような形状を有してもよい。また、シザリング領域は、どのようなサイズであってもよく、また、描画面上のどこに配置されてもよい。また、シザリング領域は、シザー領域、シザリングウィンドウ、シザリング矩形などとも呼ばれる。簡潔にするために、以下の説明の大部分は、矩形のシザリング領域に関するものである。図１に示すように、各シザリング領域は、０個の、１個の、または複数個の他のシザリング領域と重なり合っている。例えば、シザリング領域８は他のシザリング領域とは重なり合っておらず、シザリング領域４はシザリング領域３と重なり合っており、シザリング領域３はシザリング領域１、２、４と重なり合っている。
【００１２】
ＧＰＵは、描画面１００内にあるＷ・Ｈ個の各画素がいずれかのシザリング領域内に存在するかどうかを判定することによって、シザリングを実行することができる。各画素は、その画素がいずれかのシザリング領域内に存在するかどうかを示すシザー値に関連づけられる。シザー値は、マスク値などとも呼ばれる。ＧＰＵは、このシザー値を用いて画素をレンダリングするかどうかを決定する。一例として、シザリングＵＮＩＯＮ処理の場合、ＧＰＵは、すべてのシザリング領域の集合によって定義される領域内の画素をレンダリングし、この領域の外側の画素を除去／破棄する。
【００１３】
ＯｐｅｎＶＧによって要求されるように、３２個のシザリング領域を強引に処理するには、これらのシザリング領域の座標を記憶するための３２個のレジスタと、論理／比較演算を実行するための１２８個の比較器とを使用する。シザリング領域ごとに４つの比較器を用いて、画素をシザリング領域の４つの隅と比較し、これらの画素がこのシザリング領域内に存在するかどうかを決定する。多くのシザリング領域を強引に処理することは、無線通信装置、モバイル機器、ゲーム機器、およびその他の家庭用電子機器において、複雑でコストがかかる。
【００１４】
一態様において、任意の数のシザリング領域に対するシザリングは、（ａ）シザリング領域を１つずつ描画面またはレンダリング領域上に描画し、（ｂ）各シザリング領域内の画素のシザー値を更新することによって効率的に実行される。シザリングは、２ＤグラフィックスをサポートするＧＰＵと同様に、２Ｄおよび３Ｄグラフィックスの両方をサポートするＧＰＵによって実行されてもよい。また、シザリングは、その他のグラフィックス機能のために設計された処理資源および／またはメモリ資源、例えば、一般に３Ｄグラフィックスに使用されるステンシルバッファおよびステンシルテストユニットを用いて実行されてもよい。
【００１５】
図２は、複数のシザリング領域によるシザリングを例示している。描画面上の画素のシザー値を記憶するために、シザーバッファが使用される。シザーバッファは、ステンシルバッファまたはその他の何らかのバッファである。シザーバッファは描画面と同じＷ×Ｈの大きさを有し、描画面上における各画素のシザー値を記憶する。また、その他のシザーバッファサイズが使用されてもよい。簡潔にするために、図２は、大きさが１２×９の描画面を示す。
【００１６】
シザー値は、Ｎ個のビットで表現され、ここで、Ｎは、一般的に１以上である。例えば、Ｎは８に等しくてもよく、８ビットシザー値は０から２５５までの範囲となる。また、例えば、ＧＰＵによってサポートされるシザリングモードに依存して、これよりも少ないビットまたはこれよりも多いビットがシザー値に使用されてもよい。
【００１７】
シザーバッファは、まず、例えばすべてのシザー値を０にリセットすることによってクリアされる。次に、例えば、シザリング領域の座標を読み出し、これらの座標を描画面に適用することによって、第１のシザリング領域が描画される。第１のシザリング領域内の各画素のシザー値は、以下で説明されるような様々な方法で更新される。シザリングは、シザリング領域内の画素位置をスキャンし、各スキャンされた画素位置についてシザーバッファ内の対応するシザー値を更新することによって達成される。このようにして、シザリング領域内の画素のシザー値だけが更新され、シザリング領域の外側のその他の画素は、影響を受けない。
【００１８】
次に第２のシザリング領域が、例えば、第１のシザリング領域と同様に描画される。第２のシザリング領域内の各画素のシザー値は、以下で説明されるように更新される。さらなる各シザリング領域が同様に描画され、シザリング領域内の画素のシザー値が更新される。最後のシザリング領域が描画され、シザー値の更新が完了すると、シザーバッファ内のシザー値は、画素をレンダリングするかどうかを決定するために使用可能となる。
【００１９】
第１の設計において、画素のシザー値は、この画素をカバーするシザリング領域の数を示す。この設計において、各シザリング領域が描画されると、このシザリング領域によってカバーされる各画素のシザー値は、１だけインクリメントされる。すべてのシザリング領域が描画された後、各画素のシザー値は、この画素が少なくとも１つのシザリング領域によってカバーされる場合、０よりも大きくなる。所与の画素のシザー値ｋは、画素がｋ個のシザリング領域に含まれることを示し、ここで、０≦ｋ≦Ｋであり、Ｋはシザリング領域の数である。シザー値ごとにＮ個のビットが使用される場合、最大で（２Ｎ−１）個のシザリング領域がサポートされる。例えば、８ビットのシザー値は、最大で２５５個のシザリング領域をサポートする。
【００２０】
第２の設計において、画素のシザー値は、もしあれば、その画素をカバーする特定のシザリング領域を示す。この設計において、各画素のＮビットシザー値は、ビットマップである。ビットマップ内の各ビット位置は、１つのシザリング領域に対応する。例えば、シザー値の最下位ビット（ＬＳＢ）は第１のシザリング領域に対応し、次位のＬＳＢは第２のシザリング領域に対応し、以下同様であり、そして、最上位ビット（ＭＳＢ）はＮ番目のシザリング領域に対応する。ｋ∈｛１，．．．，Ｋ｝であるとき、ｋ番目のシザリング領域が描画されると、このシザリング領域に含まれる各画素のシザー値のｋ番目のビットは１にセットされる。すべてのシザリング領域が描画された後、各画素のシザー値は、この画素が少なくとも１つのシザリング領域によりカバーされる場合、０よりも大きくなる。シザー値のビットは、もしあれば、その画素をカバーする特定のシザリング領域を決定するために検査される。シザー値ごとにＮ個のビットが使用される場合、最大でＮ個のシザリング領域がサポートされる。
【００２１】
また、第２の設計は、Ｎビットシザー値によって、Ｎ個を超えるシザリング領域をサポートすることもできる。８ビットステンシル値が使用される場合、上述したように、８個のシザリング領域が、１つのシザリング領域につき１ビットの８個のビットにマッピングされる。８個を超えるシザリング領域をサポートするために、ステンシル値の各ビットは、１つ以上のシザリング領域を表すのに使用されうる。例えば、８ビットステンシル値は、以下のように重複させてもよい。すなわち、領域０、８、１６、などに対してビット０を使用し、領域１、９、１７、などに対してビット１を使用し、以下同様であり、そして、領域７、１５、２３、などに対してビット７を使用する。所与のシザリング領域ｋに対応するビットｎは、モジュロ８演算、すなわち、シザリング領域ｋを８で割った余りを出すｎ＝ｋ  ｍｏｄ  ８＝ｋ％８によって求めることができる。第２の設計において、各ビットは、シザリング領域のセットのＵＮＩＯＮを表してもよく、画素がこのセットのうちのいずれかのシザリング領域内に存在するかどうかを示すのに用いることができる。また、画素のシザー値のビットは、シザリング領域の重複していないセットに対応づけられて、各シザリング領域がこれらのセットのうちの１つにしか属さないようにしてもよい。すべてのビットを総合すると、すべてのシザリング領域が表される。これは、サポートすることのできるシザリング領域の数を増加させるために用いることができる。
【００２２】
第３の設計において、画素のシザー値は、この画素がいずれかのシザリング領域にカバーされているかどうかを示す。この設計において、各画素について１ビットシザー値を用いうる。各シザリング領域が描画されると、このシザリング領域に含まれる各画素の１ビットシザー値は、１にセットされる。すべてのシザリング領域が描画された後、各画素のシザー値は、この画素が少なくとも１つのシザリング領域にカバーされている場合、１に等しくなる。この設計は、シザー値のためのバッファ必要量を減少させることができる。
【００２３】
また、シザー値は、他の方法で、また、別の設計によって更新されてもよい。設計ごとに異なる更新機能を有してもよい。例えば、第１および第２の設計は、既存のシザリング領域が削除されると、あるいは、新しいシザリング領域が追加されると、シザー値の効率的な更新をサポートする。
【００２４】
第１の設計の場合、既存のシザリング領域は、シザリング領域を再描画し、シザリング領域内の各画素のシザー値を１だけデクリメントし、０に飽和させることによって削除される。新しいシザリング領域は、シザリング領域を描画し、シザリング領域内の各画素のシザー値を１だけインクリメントすることによって追加される。したがって、シザリング領域が追加または削除されると、追加される新しいシザリング領域だけが描画され、削除されるシザリング領域だけが再描画され、保持されるその他のシザリング領域は影響を受けることがないため、計算処理量の節減を可能にする。
【００２５】
第２の設計の場合、既存のシザリング領域は、シザリング領域を再描画し、このシザリング領域内の各画素の対応するシザービット値を０にリセットすることによって削除される。新しいシザリング領域は、シザリング領域を描画し、このシザリング領域内の各画素の対応するシザービット値を１にセットすることによって追加される。
【００２６】
また、設計ごとに異なるシザリングモードをサポートしてもよい。上述した３つの設計のすべては、シザリングＵＮＩＯＮ処理をサポートする。シザリングＵＮＩＯＮの場合、画素は、この画素のシザー値が１以上である場合、すべてのシザリング領域の集合によって構成される領域（または、少なくとも１つのシザリング領域）内に存在する。第１および第２の設計は、また、シザリングＡＮＤ処理をサポートする。シザリングＡＮＤの場合、画素は、この画素のシザー値が１よりも大きい場合、少なくとも２個（Ｒ個）のシザリング領域の共通部分によって構成される領域内に存在する。一般的に、Ｒは、１よりも大きくかつ最大でシザリング領域の数までのどのような値にセットされてもよい。Ｒがシザリング領域の数に等しい場合、すべてのシザリング領域内の画素のみが送出(pass)される。
【００２７】
第１の設計の場合、シザリングＡＮＤは、画素のシザー値を基準値と比較し、シザー値が基準値以上である場合に画素を送出し、そうではない場合に画素を除去することによって達成されうる。第２の設計の場合、シザリングＡＮＤは、画素のシザー値としてセットされたビットを検査し、セットされたビットを基準値と比較し、比較結果に基づいて画素を送出または破棄することによって達成されうる。
【００２８】
また、第２の設計は、選択的ＵＮＩＯＮ処理、選択的ＡＮＤ処理などもサポートする。選択的ＡＮＤの場合、Ｋ個のシザリング領域から選択された、いくつかのシザリング領域の共通部分によって構成される領域内の画素が送出される。選択的ＵＮＩＯＮの場合、Ｋ個のシザリング領域から選択された、いくつかのシザリング領域の集合によって構成される領域内の画素が送出される。すべての設計において、画素の基準値は、この画素のシザー値によるビット単位の論理テストに使用されるマスクである。例えば、第２の設計において、ＡＮＤ処理は、画素のマスクおよびシザー値に対して実行される。これにより、シザリングは、描画される画素に基づいた特定の領域を識別できる。
【００２９】
第２の設計は、例えば、描画面上に複数の画像を描画するなど、様々な目的に使用することができる。描画面の異なる部分は、異なる画像で描画されてもよく、また、異なるシザリング領域によって定義されてもよい。シザリング領域およびビットマップは、それぞれの描画部分にどの画像を描画するかを決定するのに使用されてもよい。例えば、画像は、ｋ番目のシザリング領域によって定義された部分に描画され、この部分の画素は、対応するシザー値のｋ番目のビットを検査することによって決定される。また、第２の設計は、アイコンのレンダリングをマスクするために、ウィンドウ表示システムにおける描画可能面の可視画素に対するレンダリングをマスクするために、および、複雑なウィンドウ形状をサポートして、非矩形クリッピングをサポートするためなどに使用されてもよい。
【００３０】
図３は、複数のシザリング領域によるシザリングを実行するための処理３００を示す。まず、画素ごとのシザー値を記憶するのに使用されるバッファが、例えば、バッファ内のシザー値を０にリセットすることによって初期化される（ブロック３１２）。次に、複数のシザリング領域に対して、１つのシザリング領域ごとに順々にシザリングが実行される（ブロック３１４）。各シザリング領域について、シザリング領域内の画素のシザー値が更新される（ブロック３１６）。
【００３１】
ブロック３１６における更新は、様々な方法で実行することができる。第１の設計の場合、画素のシザー値はその画素をカバーするシザリング領域の数を示す。各シザリング領域内の画素のシザー値は、１だけインクリメントされる。第２の設計の場合、画素のシザー値は異なるシザリング領域のビットマップであり、各シザリング領域はビットマップ内の各ビットに関連づけられる。各シザリング領域について、シザリング領域内の画素のシザー値の対応するビットが、所定の値、例えば１にセットされる。第３の設計の場合、画素のシザー値は、その画素がいずれかのシザリング領域内に存在するかどうかを示す。各シザリング領域内の画素のシザー値は、所定の値、例えば１にセットされる。更新は、多角形変換およびラスタライズ処理ユニット(polygon transformation and rasterization processing units)を用いて、単純形状または複雑形状をシザーバッファに描画することを含んでもよい。
【００３２】
シザリングは、複数のシザリング領域のうちの１つまたは複数を削除するように実行されてもよい。削除される各シザリング領域について、シザリング領域内の画素のシザー値が更新され、例えば、シザー値が０よりも大きい場合に１だけデクリメントされる。また、シザリングは、１つ以上のシザリング領域を複数のシザリング領域に追加するように実行されてもよい。追加される各シザリング領域について、シザリング領域内の画素のシザー値が更新され、例えば、１だけインクリメントされる。
【００３３】
すべてのシザリング領域についてシザー値を更新した後、レンダリングコードによって生成されかつ関心領域内の画素が送出される（ブロック３１８）。これは、画素のシザー値を基準値と比較し、基準値に等しいかまたは基準値よりも大きいシザー値を有する画素を送出することによって達成される。基準値１は、複数のシザリング領域の集合によって構成される領域内の画素を送出するために、シザリングＵＮＩＯＮ処理のための３つのすべての設計に使用される。１よりも大きい基準値は、複数のシザリング領域のうちの少なくとも２つ（例えば、すべて）の共通部分によって構成される領域内の画素を送出するために、シザリングＡＮＤ処理のための第１の設計に使用される。第２の設計の場合、シザー値の個々のビットが、関心領域内の画素を送出するために検査される。いずれの場合においても、送出された画素は、さらに処理され、例えば、レンダリングされる（ブロック３２０）。
【００３４】
ＧＰＵは、２Ｄグラフィックスおよび／または３Ｄグラフィックスをサポートすることができる。２Ｄグラフィックスは、２Ｄ画像を生成するのに使用される２Ｄ表現の幾何学的データを記憶する。３Ｄグラフィックスは、２Ｄ画像を生成するように処理された３Ｄ表現の幾何学的データを記憶する。２Ｄグラフィックスは絵にたとえることができ、それに対して、３Ｄグラフィックスは彫刻にたとえることができる。２Ｄグラフィックスおよび３Ｄグラフィックスは、出力画像を生成するための異なるグラフィックス処理ごとに異なるパイプラインを使用することができる。
【００３５】
図４は、ＯｐｅｎＶＧに記載されている２Ｄグラフィックスパイプライン４００のブロック図を示す。２Ｄグラフィックスにおける描画は、パスからなる。各パスは、描画面上におけるペンまたはペイントブラシの区間を定義する。パスは、描画におけるジオメトリを定義するのに使用される。パスは、ストローク（stroke）および／または塗りつぶし（fill）される。ストロークは、線によってパス形状の輪郭を定義することを意味する。塗りつぶしは、カラー、階調（gradient）、または、テクスチャを形状内部に適用することを意味する。
【００３６】
ステージ１であるブロック４１２において、アプリケーションは、描画されるパスを定義し、その後のステージで使用される変換パラメータ、ストロークパラメータ、および、ペイントパラメータがあれば、これらを設定する。ステージ２であるブロック４１４において、パスは、ユーザ座標系から表面座標系に変換される。パスがストロークされる場合、ユーザ座標系においてストロークパラメータを適用し、表面座標系においてストロークされるジオメトリを描く新しいパスを生成する。この新しいパスは、現在のパスと呼ばれ、パイプラインのその後のステージにおいて処理される。ステージ３であるブロック４１６において、現在のパスのジオメトリに、パスから表面への変換が適用され、描画面座標を生成する。ステージ４であるブロック４１８において、現在のパスによって影響を受ける画素ごとにカバレージ値が計算される。ステージ４は、現在のパスを描画面上の画素にマッピングする。
【００３７】
ステージ５であるブロック４２０において、描画面の境界内にない画素、および、シザリングがイネーブルにされている場合に１つまたは複数のシザリング領域内にない画素は、カバレージ値０を割り当てられる。カバレージ値が０である画素に対しては、残りの処理がスキップされる。ステージ５は、上述したように、複数のシザリング領域によるシザリングを実行してもよい。
【００３８】
ステージ６であるブロック４２２において、現在の関連するペイントに基づいて、描画面上の画素ごとにカラー値およびアルファ値が定義され、これは、パスが塗りつぶしされているかストロークされているかに依るものである。ステージ６は、ペイント画像を現在のパス上の画素に適用する。ステージ７であるブロック４２４において、画像が描画されている場合、画像から表面への変換の逆変換を用いて画像値を内挿補間(interpolating)することにより、画像カラー値およびアルファ値が画素ごとに計算される。この結果は、現在の画像描画モードに従って、ペイントカラー値およびアルファ値と組み合わせられる。ステージ８であるブロック４２６において、ステージ７からの画素ごとのソースカラー値およびアルファ値が、目的の（destination）カラー空間に変換され、選択されたブレンディングモードに基づいて、対応する目的のカラー値およびアルファ値とブレンドされる。
【００３９】
また、２Ｄグラフィックスは、他の方法でプリミティブをレンダリングすることのできるその他のパイプラインによってサポートされてもよい。プリミティブは、ジオメトリの基本単位であり、線、線分、点、などである。複数のシザリング領域によるシザリングは、２Ｄグラフィックスパイプラインにおけるクリッピング／マスキングステージによって実行されてもよい。
【００４０】
図５は、３Ｄグラフィックスをサポートし、かつ、２Ｄグラフィックスをサポートすることもできる３Ｄグラフィックスパイプライン５００のブロック図を示す。パイプライン５００は、Ｏｐｅｎ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ（ＯｐｅｎＧＬ）、Ｄｉｒｅｃｔ３Ｄなどのような３Ｄソフトウェアインタフェースをサポートする。ＯｐｅｎＧＬは、２００４年１０月２２日に公開された「Ｔｈｅ  ＯｐｅｎＧＬ（登録商標）  Ｇｒａｐｈｉｃｓ  Ｓｙｓｔｅｍ：Ａ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」バージョン２．０に説明されており、このＯｐｅｎＧＬは、公的に入手可能である。
【００４１】
２Ｄ画像または３Ｄ画像は、多角形（典型的には、三角形）によって表現しうる。各三角形は、３つの頂点によって定義され、各頂点は、空間座標、カラー値、テクスチャ座標などのような様々な属性に関連づけられる。各属性は、最大で４つの成分を有することができる。例えば、空間座標は、３つの成分ｘ、ｙ、ｚ、または、４つの成分ｘ、ｙ、ｚ、ｗによって与えられる。ここで、ｘおよびｙは水平座標および垂直座標であり、ｚは奥行き（depth）であり、ｗは同次座標(homogeneous coordinate)である。カラー値は、３つの成分ｒ、ｇ、ｂ、または、４つの成分ｒ、ｇ、ｂ、ａによって与えられる。ここで、ｒは赤、ｇは緑、ｂは青であり、ａは画素の透明度を決定する透明度係数である。テクスチャ座標は、典型的には、水平座標ｕおよび垂直座標ｖによって与えられる。頂点もまた、その他の属性と関連づけられてもよい。パイプライン５００は、表示される画素の属性成分値を計算することによって、２Ｄ画像または３Ｄ画像をレンダリングする。
【００４２】
頂点シェーダ５１２は、ジオメトリ、例えば、三角形に対して様々なグラフィックス処理を実行する。例えば、頂点シェーダ５１２は、ジオメトリを一方の座標系から他方の座標系に変換し、ジオメトリの頂点の光量値（light value）を計算し、ジオメトリのブレンディングなどを実行する。プリミティブ組立器およびプロセッサ５１４は、その後のラスタライズ処理のためのパラメータを計算する。例えば、プロセッサ５１４は、各三角形の３つの辺の一次方程式の係数、画素に対する奥行き補間のための奥行き（ｚ）勾配などを計算してもよい。スキャン変換器５１６は、各三角形または線を画素に分解し、各画素のスクリーン座標を生成する。
【００４３】
早期奥行き／ステンシルテストエンジン５１８は、イネーブルにされている場合、画素の奥行きおよび／またはステンシルテストを実行して、画素がレンダリングされるべきかまたは除去されるべきかを決定する。「エンジン」、「コア」、「マシン」、「プロセッサ」、および、「処理ユニット」という用語は、多くの場合、同義的に使用される。ステンシルバッファ（図５には示されない）は、レンダリングされる画像内の各画素位置の現在のステンシル値を記憶する。ステンシルテストのために、エンジン５１８は、記憶された画素のステンシル値を基準値と比較し、比較の結果に基づいて、その画素を送出するかまたは除去する。エンジン５１８は、必要であれば、画素に対して奥行きテスト（ｚテストとも呼ばれる）を実行して、画素がレンダリングされるべきかまたは除去されるべきかを決定する。ｚバッファ（同様に、図５には示されない）は、レンダリングされる画像内における各画素位置の現在のｚ値を記憶する。奥行きテストのために、エンジン５１８は、画素のｚ値（現在のｚ値）をｚバッファ内の対応するｚ値（記憶されたｚ値）と比較し、現在のｚ値が記憶されたｚ値よりも密接／近接している場合、この画素を送出し、ｚバッファ、場合によっては、ステンシルバッファを更新し、現在のｚ値が記憶されたｚ値よりもはるかに後方にある場合、この画素を除去する。
【００４４】
画素／フラグメントシェーダおよびテクスチャフィルタ５２０は、画素およびフラグメントに対して様々なグラフィックス処理を実行することができる。フラグメントは、１つの画素、および、この画素に関連する情報である。シェーダ５２０は、画素属性の補間のためのパラメータ、例えば、属性補間のための一次方程式の係数を計算する。そして、シェーダ５２０は、画素のスクリーン座標に基づいて、また、補間パラメータを用いて、各三角形内の画素ごとの属性成分値を計算してもよい。テクスチャフィルタ５２０は、イネーブルにされている場合、テクスチャマッピングを実行して、テクスチャを各三角形に適用する。テクスチャ画像は、テクスチャバッファ（図５には示されない）に記憶される。各三角形の３つの頂点は、テクスチャ画像における３つの（ｕ，ｖ）座標に関連づけられ、三角形の各画素は、テクスチャ画像における特定のテクスチャ座標に関連づけられる。テクスチャリングは、この画素のテクスチャ座標によって示される位置におけるテクスチャ画像のカラーによって、各画素のカラーを変更することにより達成される。
【００４５】
後期奥行きおよび画素ブレンダ５２２は、アルファテスト、フォグブレンディング、アルファブレンディング、論理演算、ディザ処理のようなグラフィックス処理を各フラグメントに対して実行してもよく、その結果をカラーバッファに提供する。
【００４６】
３Ｄグラフィックスパイプライン５００におけるステージは、一般的には、３Ｄグラフィックスのために設計される。これらのステージは、２Ｄグラフィックスをサポートするのに使用することもできる。一設計においては、図４に示す２Ｄグラフィックスパイプライン４００のステージ１および２は、ソフトウェアまたは前処理ユニットにおいて実行され、ステージ３は、頂点シェーダ５１２によって実行され、ステージ４は、プリミティブ組立器およびプロセッサ５１４によって実行され、ステージ５は、早期奥行き／ステンシルテストエンジン５１８によって実行され、ステージ６および７は、画素／フラグメントシェーダおよびテクスチャフィルタ５２０によって実行され、ステージ８は、後期奥行きおよび画素ブレンダ５２２によって実行される。また、パイプライン５００は、他の方法で、例えば、パイプライン４００におけるステージをパイプライン５００におけるユニットへ異なるマッピングによって２Ｄグラフィックスをサポートしてもよい。パイプライン５００は、２Ｄグラフィックス処理をサポートするための拡張および／または変更を含んでもよい。
【００４７】
ＧＰＵは、例えば、図４に示すパイプライン４００またはその他の何らかの２Ｄグラフィックスパイプラインを実施することによって、２Ｄグラフィックスだけをサポートしてもよい。また、ＧＰＵは、例えば、図５に示すパイプライン５００またはその他の何らかのグラフィックスパイプラインを実施することによって、２Ｄグラフィックスおよび３Ｄグラフィックスの両方をサポートしてもよい。
【００４８】
２Ｄグラフィックスおよび３ＤグラフィックスをサポートするＧＰＵの場合、ステンシルユニット（例えば、ステンシルバッファおよびステンシルテストエンジン）が、２Ｄグラフィックスのためのシザリングを実行するのに使用される。ステンシルユニットは、典型的には、高いスループット（例えば、カラー処理スループットよりも２〜４倍速い）を有し、通常、データバス帯域幅を節減することのできる高効率ステンシルキャッシュに結合される。３Ｄグラフィックスをレンダリングする場合、ステンシルユニットは、ステンシルテストを早期に実行し、それによって、ステンシルテストに不合格である場合に、計算処理的に負荷が大きいものになることを回避できる。ステンシルユニットは、画素レンダリングを高速化するために、２Ｄグラフィックスのためのシザリングを実行するのに使用される。
【００４９】
ステンシルユニットは、典型的には、入力されてくる各画素に対してステンシルテストおよびステンシル処理を実行する。ステンシルテストは、ステンシルバッファに記憶された画素の現在のステンシル値に基づいて、画素を送出するかまたは破棄するかを決定する。ステンシル処理は、奥行きおよび／またはステンシルテストの結果に基づいたステンシル処理コードに従って、ステンシル値を更新する。
【００５０】
ステンシルユニットは、以下のようにシザリングを実行してもよい。まず、ステンシルバッファが、例えば、高速クリアを用いて、０にクリアされる。ステンシルバッファは、通常、３Ｄグラフィックスのためのステンシル値を記憶し、また、２Ｄグラフィックスのためのシザー値を記憶するのに使用される。シザリング領域が適用されるレンダリングバッファ領域が定義される。上述した第１の設計の場合、ステンシルユニットは、以下のように設定される。
【００５１】
１．ステンシルテスト関数＝ＡＬＷＡＹＳ
２．ステンシル処理＝ＩＮＣＲＥＡＳＥ＿ＷＲＡＰまたはＩＮＣＲＥＡＳＥ
３．ステンシルバッファへのステンシル書き込みをイネーブルにする。
【００５２】
第１の設定は、ステンシルユニットが、常に、画素のステンシルテストに合格することになり、これにより、これらの画素のシザー値を更新することが可能になる。第２の設定は、ステンシル値がどのように更新されるかを示す。ステンシル値は、（ａ）インクリメントされてＩＮＣＲＥＡＳＥ設定値によって飽和され、あるいは、（ｂ）インクリメントされて最大値に到達した後、ＩＮＣＲＥＡＳＥ＿ＷＲＡＰ設定値によって取り囲まれる。また、シザリング領域を削除する場合には、ステンシル処理は、ＤＥＣＲＥＡＳＥ＿ＷＲＡＰまたはＤＥＣＲＥＡＳＥに設定される。上述した第２の設計の場合、ステンシル処理は、｛１＜＜（Ｓｃｉｓｓｏｒ＃％８）｝である基準ステンシル値を備えたＲＥＰＬＡＣＥに設定される。ここで、「％８」は、モジュロ８演算を意味する。第３の設定は、各シザリング領域を描画した後に、ステンシルバッファ内のシザー値を更新するのを可能にする。
【００５３】
そして、ステンシルユニットは、シザリング領域を１つずつ描画し、ステンシル処理によって示されるようにステンシルバッファ内のシザー値を更新することによって、シザリングを実行する。すべてのシザリング領域を描画した後、ＧＰＵは、使用可能な処理資源およびメモリ資源を用いて、２Ｄ（例えば、ＯｐｅｎＶＧ）プリミティブ（例えば、パス、マスク、ペイント、画像、など）をレンダリングする。例えば、図４に示す２Ｄグラフィックスパイプライン４００におけるステージは、上述したように、図５に示す３Ｄグラフィックスパイプライン５００におけるブロックにマッピングされる。
【００５４】
レンダリング処理中、ステンシルバッファからシザー値を読み出し、このシザー値を基準ステンシル値と比較することによって、画素に対してステンシルテストが実行される。シザリングＵＮＩＯＮ処理の場合、ステンシルテスト関数はＬＡＲＧＥＲ  ＴＨＡＮに設定され、基準ステンシル値は０にセットされる。シザリングＡＮＤ処理の場合には、ステンシルテスト関数はＥＱＵＡＬ  ＴＯに設定され、基準ステンシル値は１よりも大きい値にセットされる。基準ステンシル値は、少なくともＲ個のシザリング領域に含まれる画素を送出するために、Ｒにセットされる。適用されるシザリング領域の数に関係なく、比較は画素ごとに１回しか実行されず、これは、レンダリング処理を相当に高速化する。ステンシルテストに合格する画素は、関心領域内に存在し、パイプラインにおけるその後のステージへ送られる。ステンシルテストに不合格であった画素は、破棄される。
【００５５】
図６は、シザリングを実行するＧＰＵ６００のブロック図を示す。ＧＰＵ６００は、図４に示す２Ｄグラフィックスパイプライン４００におけるステージ５および／または図５に示す３Ｄグラフィックスパイプライン５００における早期奥行き／ステンシルテストエンジン５１８を実施する。ＧＰＵ６００は、その他の処理ユニットおよび制御ユニット、エンジン、および、メモリを含み、これらは、簡単にするために、図６には示されない。
【００５６】
処理ユニット６１０は、シザリング領域を受け取り、上述したように、これらのシザリング領域によってカバーされる画素のシザー値を更新する。更新は、シザリング領域が追加または削除されるかどうかに依存する。バッファ６２０は、画素のシザー値を記憶する。また、処理ユニット６１０は、関心領域内の画素を送出するために、基準値に基づいてシザー／ステンシルテストを実行する。処理ユニット６１０は、例えば、図４のステージ４から入力されてくる画素の（ｘ，ｙ）座標を受け取り、これらの座標に基づいて、これらの画素のシザー値を決定し、画素のシザー値および基準値に基づいて、各画素が送出または破棄されるべきかを決定する。基準値は、所望のシザリング処理、例えば、ＵＮＩＯＮまたはＡＮＤに基づいてセットされる。レンダリングユニット６３０は、シザー／ステンシルテストに合格した画素をレンダリングし、これらの画素をレンダリングするための何らかの適切な処理を実行する。処理ユニット６１０は、図３におけるブロック３１２〜３１８に示す処理を実行する。レンダリングユニット６３０は、図３におけるブロック３２０に示す処理を実行する。
【００５７】
一設計においては、シザリングおよびレンダリングは、複数の経路で実行される。第１の経路において、シザーバッファ上にシザリング領域が描画され、シザー値が更新され、レンダリングユニット６３０に画素は送出されない。第２の経路においては、ユニット６１０が入力されてくる画素を処理し、画素のシザー値に基づいて各画素を送出するか拒絶するかを決定し、合格した画素をレンダリングユニット６２０へ送る。また、シザリングおよびレンダリングは、その他の設計のための他の方法で実行されてもよい。
【００５８】
処理ユニット６１０は、ステンシルテストエンジンであってもよく、また、バッファ６２０は、３Ｄグラフィックスのためのステンシルバッファであってもよい。ステンシルバッファおよびステンシルテストエンジンは、２Ｄグラフィックスのためのシザリングを効率的に実行するために使用される。処理ユニット６１０は、シザリング領域内の画素のシザー値を更新するために、シザリング領域ごとにステンシルテスト（例えば、ＡＬＷＡＹＳを設定することによって）およびステンシル処理（例えば、ＩＮＣＲＥＡＳＥ、ＩＮＣＲＥＡＳＥ＿ＷＲＡＰ、ＤＥＣＲＥＡＳＥ、または、ＤＥＣＲＥＡＳＥ＿ＷＲＡＰを設定することによって）を実行する。
【００５９】
画像は、例えば、スーパー・サンプリング・アンチエイリアシングがオン状態にされている場合は、より大きくスケーリングされてもよい。この場合、シザー値は、画素の一部分（すなわち、サブピクセル）を表してもよい。例えば、画像が２倍大きくスケーリングされる場合、各画素について４つのシザー値があってもよく、各シザー値は４つのサブピクセルのうちの１つに対応する。シザリングは、画素ではなくサブピクセルに対するものであっても、上述した方法で実行することができる。
【００６０】
上述したように、シザリング領域は、どのような形状およびどのようなサイズを有してもよい。任意形状のシザリング領域に対するシザリングは、まず、シザリング領域を任意の数の辺および形状を有する多角形である三角形扇（triangle fan）にテッセレーションする（tessellate）ことによって達成することができる。この三角形扇は複数の三角形に分解される。各三角形は、その三角形内の画素を決定するためにラスタライズされる。各三角形内の各画素のシザー値は、上述した設計のいずれかに基づいて更新される。
【００６１】
ここで説明されるシザリング技術は、無線通信装置、ハンドヘルド機器、ゲーム機器、コンピューティング装置、民生用電子機器などに使用することができる。この技術を無線通信装置に使用する例を以下に説明する。
【００６２】
図７は、無線通信システムにおける無線通信装置７００の設計のブロック図を示す。無線装置７００は、携帯電話機、端末、ハンドセット、携帯情報端末（ＰＤＡ）、または、その他の何らかの装置である。無線通信システムは、符号分割多元接続（ＣＤＭＡ）システム、モバイル通信システムのためのグローバルシステム（ＧＳＭ）、または、その他の何らかのシステムである。
【００６３】
無線装置７００は、受信パスおよび送信パスを介して双方向通信を提供する。受信パス上において、基地局から送信された信号はアンテナ７１２によって受信され、受信機（ＲＣＶＲ）７１４に供給される。受信機７１４は、受信された信号を調整およびディジタル化し、さらなる処理のためにサンプルをディジタル部７２０に供給する。送信パス上において、送信機（ＴＭＴＲ）７１６は、送信されるデータをディジタル部７２０から受け取り、このデータを処理および調整し、変調信号を生成し、この変調信号は、アンテナ７１２を介して基地局へ送信される。
【００６４】
ディジタル部７２０は、例えば、モデムプロセッサ７２２、ビデオプロセッサ７２４、コントローラ／プロセッサ７２６、ディスプレイプロセッサ７２８、アドバンスＲＳＩＣマシン／ディジタル信号プロセッサ（ＡＲＭ／ＤＳＰ）７３２、ＧＰＵ７３４、内部メモリ７３６、および、外部バスインタフェース（ＥＢＩ）７３８のような、様々な処理ユニット、インタフェースユニット、および、メモリユニットを含む。モデムプロセッサ７２２は、データ送信およびデータ受信のための処理（例えば、符号化、変調、復調、および、復号）を実行する。ビデオプロセッサ７２４は、カムコーダ、ビデオ再生、および、テレビ会議のような、ビデオアプリケーションのためのビデオコンテンツ（例えば、静止画、動画ビデオ、および、動テキスト）に対する処理を実行する。コントローラ／プロセッサ７２６は、ディジタル部７２０内の様々な処理ユニットおよびインタフェースユニットの処理を指示する。ディスプレイプロセッサ７２８は、ビデオ、グラフィックス、および、テキストをディスプレイユニット７３０上に表示するのを助ける処理を実行する。ＡＲＭ／ＤＳＰ７３２は、無線装置７００のための様々な種類の処理を実行する。ＧＰＵ７３４は、グラフィックス処理を実行し、また、図３に示す処理３００、図４に示す２Ｄグラフィックスパイプライン４００のすべてまたは一部、図５に示す３Ｄグラフィックスパイプライン５００のすべてまたは一部、その他の何らかのグラフィックスパイプライン、図６に示すＧＰＵ６００、などを実施する。内部メモリ７３６は、ディジタル部７２０内の様々なユニットのためのデータおよび／または命令を格納する。ＥＢＩ７３８は、ディジタル部７２０（例えば、内部メモリ３６）とメインメモリ７４０との間でデータを転送するのを助ける。
【００６５】
ディジタル部７２０は、１つまたは複数のＤＳＰ、マイクロプロセッサ、ＲＩＳＣなどによって実施されてもよい。また、ディジタル部７２０は、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）および／またはその他の何らかの種類の集積回路（ＩＣ）上に形成されてもよい。
【００６６】
本明細書で説明されたシザリング技術は、様々な手段によって実施されうる。例えば、これらの技術は、ハードウェア、ファームウェア、ソフトウェア、または、これらの組み合わせで実施されうる。ハードウェアで実施される場合、シザリングを実行するために使用される１つまたは複数の処理ユニット（例えば、図６に示すＧＰＵ、図７に示すＧＰＵなど）は、１つまたは複数のＡＳＩＣ、ＤＳＰ、ディジタル信号処理装置（ＤＳＰＤ）、プログラマブル論理デバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、電子デバイス、本明細書で説明された機能を実行するように設計されたその他の電子ユニット、または、これらの組み合わせで実施されうる。１つまたは複数の処理ユニットは、内蔵／組み込みメモリを含んでもよくあるいは含まなくてもよい。
【００６７】
本明細書で説明されたシザリング技術を実施する装置は、スタンドアロンユニットであってもよく、あるいは、装置の一部分であってもよい。装置は、（ｉ）グラフィックスＩＣのようなスタンドアロンＩＣであってもよく、（ｉｉ）データおよび／または命令を格納するためのメモリＩＣを含んでもよい１つまたは複数のＩＣのセットであってもよく、（ｉｉｉ）移動局モデム（ＭＳＭ）のような、集積されたグラフィックス処理機能を有するＡＳＩＣであってもよく、（ｉｖ）その他の装置内に組み込まれてもよいモジュールであってもよく、（ｖ）携帯電話機、無線装置、ハンドセット、または、モバイルユニットであってもよく、（ｖｉ）その他のものであってもよい。
【００６８】
本発明のこれまでの説明は、当業者が本発明を作成または使用するのを可能にするために提供されたものである。本発明の様々な変更は、当業者には容易に明らかであり、また、本明細書で定義された基本原理は、本発明の精神または範囲を逸脱することなく、その他の変形例に適用することができる。したがって、本発明は、本明細書で説明された例に限定されるのではなく、ここで開示された原理および新規な特徴と一致する最も広い範囲を与えられるべきものである。
【図１】
2010510608.tif 000003
【図２】
2010510608.tif 000004
【図３】
2010510608.tif 000005
【図４】
2010510608.tif 000006
【図５】
2010510608.tif 000007
【図６】
2010510608.tif 000008
【図７】
2010510608.tif 000009
2010510608.tif 000010
2010510608.tif 000011
2010510608.tif 000012
2010510608.tif 000013
2010510608.tif 000014
【手続補正書】
【提出日】平成20年9月25日(2008.9.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
画素のシザー値を記憶するためのバッファと；
複数のシザリング領域に対して、１つのシザリング領域ごとに順々にシザリングを実行し、前記各シザリング領域について、前記シザリング領域内の画素のシザー値を更新するための処理ユニットと、なお、少なくとも１つの前記シザー値は、２つ以上の重なり合った前記シザリング領域を表現する；
を備えるデバイス。
【請求項２】
前記画素のシザー値は、前記画素を含む前記シザリング領域の数を示し、前記処理ユニットは、前記シザリング領域のそれぞれについて、前記シザリング領域内の前記画素のシザー値をインクリメントする、請求項１に記載のデバイス。
【請求項３】
前記処理ユニットは、前記複数のシザリング領域のうちの少なくとも１つを削除し、前記削除されるシザリング領域のそれぞれについて、前記シザリング領域内の前記画素のシザー値が０よりも大きい場合、前記シザー値をデクリメントする、請求項２に記載のデバイス。
【請求項４】
前記処理ユニットは、前記複数のシザリング領域に追加される少なくとも１つのシザリング領域に対してシザリングを実行し、前記追加されるシザリング領域のそれぞれについて、前記シザリング領域内の前記画素のシザー値をインクリメントする、請求項２に記載のデバイス。
【請求項５】
前記画素のシザー値は、前記複数のシザリング領域のビットマップであり、前記複数のシザリング領域のそれぞれは、前記ビットマップ内の各ビットに関連づけられる、請求項１に記載のデバイス。
【請求項６】
前記処理ユニットは、前記シザリング領域のそれぞれについて、前記シザリング領域内の画素のシザー値における対応するビットを所定の値にセットする、請求項５に記載のデバイス。
【請求項７】
前記画素のシザー値は複数のビットを備え、前記各ビットは、前記シザリング領域からなるそれぞれのセットに関連づけられ、前記画素が前記セットのうちのいずれかのシザリング領域内に存在するかどうかを示す、請求項１に記載のデバイス。
【請求項８】
前記画素のシザー値における前記複数のビットは、前記シザリング領域からなる複数のセットに関連づけられ、前記シザリング領域のそれぞれは、前記複数のセットのうちの１つに属する、請求項７に記載のデバイス。
【請求項９】
前記画素のシザー値は、前記画素がいずれかの前記シザリング領域内に存在するかどうかを示し、前記処理ユニットは、前記シザリング領域のそれぞれについて、前記シザリング領域内の画素のシザー値を所定の値にセットする、請求項１に記載のデバイス。
【請求項１０】
前記バッファは、前記シザリングを実行する前に、前記バッファ内の前記シザー値を０にリセットすることによって初期化される、請求項１に記載のデバイス。
【請求項１１】
前記処理ユニットは、前記画素のシザー値を基準値と比較し、前記シザー値が前記基準値に等しいかまたは前記基準値よりも大きい前記画素を送出する、請求項１に記載のデバイス。
【請求項１２】
前記処理ユニットは、グラフィックスパイプラインにおける先行するステージから入力されてくる画素を受け取り、前記画素のシザー値に基づいて、前記入力されてくる画素のそれぞれを送出するか破棄するかを決定する、請求項１に記載のデバイス。
【請求項１３】
前記処理ユニットは、前記複数のシザリング領域の集合によって構成される領域内の画素を送出する、請求項１に記載のデバイス。
【請求項１４】
前記処理ユニットは、前記複数のシザリング領域のうちの少なくとも２つの共通部分によって構成される領域内の画素を送出する、請求項１に記載のデバイス。
【請求項１５】
前記処理ユニットは、前記複数のシザリング領域の共通部分によって構成される領域内の画素を送出する、請求項１に記載のデバイス。
【請求項１６】
関心領域内に存在しかつ前記バッファ内の前記シザー値に基づいて決定される画素をレンダリングするためのレンダリングユニットをさらに備える、請求項１に記載のデバイス。
【請求項１７】
前記バッファは、ステンシルバッファであり、前記処理ユニットは、３Ｄグラフィックスのためのステンシルテストユニットであり、前記ステンシルバッファおよび前記ステンシルテストユニットは、２Ｄグラフィックスのためのシザリングを実行するために使用される、請求項１に記載のデバイス。
【請求項１８】
前記処理ユニットは、前記シザリング領域のそれぞれについて、前記シザリング領域内の前記画素に対してステンシルテストを実行し、前記シザリング領域内の前記画素のシザー値を更新するためのステンシル処理を実行する、請求項１７に記載のデバイス。
【請求項１９】
前記画素は、Ｎビットシザー値に関連づけられ、ここで、Ｎは１よりも大きく、前記処理ユニットは、最大で（２Ｎ−１）個の前記シザリング領域に対してシザリングを実行する、請求項１に記載のデバイス。
【請求項２０】
３Ｄグラフィックスにおける画素のステンシル値を記憶し、かつ、２Ｄグラフィックスにおける画素のシザー値を記憶するためのステンシルバッファと；
３Ｄグラフィックスに対してステンシルテストを実行し、かつ、２Ｄグラフィックスに対して複数のシザリング領域に順々にシザリングを実行するためのステンシルテストユニットと、なお、少なくとも１つの前記シザー値は、２つ以上の重なり合った前記シザリング領域を表現する；
を備えるデバイス。
【請求項２１】
前記ステンシルテストユニットは、前記シザリング領域のそれぞれについて、前記シザリング領域内の前記画素のシザー値をインクリメントする、請求項２０に記載のデバイス。
【請求項２２】
複数のシザリング領域に対して、１つのシザリング領域ごとに順々にシザリングを実行し、かつ、前記シザリング領域のそれぞれについて、前記シザリング領域内の画素のシザー値を更新するためのプロセッサと、なお、少なくとも１つの前記シザー値は、２つ以上の重なり合った前記シザリング領域を表現する；
前記画素のシザー値を記憶するためのメモリと；
を備える無線装置。
【請求項２３】
複数のシザリング領域に対して、１つのシザリング領域ごとに順々にシザリングを実行することと、なお、少なくとも１つのシザー値は、２つ以上の重なり合った前記シザリング領域を表現する;
前記シザリング領域のそれぞれについて、前記シザリング領域内の画素の前記シザー値を更新することと；
を備える方法。
【請求項２４】
前記シザリング領域内の前記画素のシザー値を更新することは、前記シザリング領域内の前記画素のシザー値をインクリメントすることを備える、請求項２３に記載の方法。
【請求項２５】
前記複数のシザリング領域のうちの少なくとも１つを削除することと、
前記削除されるシザリング領域のそれぞれについて、前記シザー値が０よりも大きい場合、前記シザリング領域内の前記画素のシザー値をデクリメントすることと、
をさらに備える、請求項２３に記載の方法。
【請求項２６】
前記画素のシザー値を基準値と比較することと、
前記シザー値が前記基準値に等しいかまたは前記基準値よりも大きい前記画素を送出することと、
をさらに備える、請求項２３に記載の方法。
【請求項２７】
前記複数のシザリング領域の集合によって構成される領域内の前記画素を送出することをさらに備える請求項２３に記載の方法。
【請求項２８】
前記複数のシザリング領域のうちの少なくとも２つの共通部分によって構成される領域内の前記画素を送出することをさらに備える、請求項２３に記載の方法。
【請求項２９】
複数のシザリング領域に対して、１つのシザリング領域ごとに順々にシザリングを実行するための手段と、なお、少なくとも１つのシザー値は、２つ以上の重なり合った前記シザリング領域を表現する；
前記各シザリング領域内の画素のシザー値を更新するための手段と；
を備える装置。
【請求項３０】
前記画素のシザー値を基準値と比較するための手段と、
前記シザー値が前記基準値に等しいかまたは前記基準値よりも大きい前記画素を送出するための手段と、
をさらに備える、請求項２９に記載の装置。
【請求項３１】
前記複数のシザリング領域の集合によって構成される領域内の前記画素を送出するための手段をさらに備える、請求項２９に記載の装置。
【請求項３２】
プロセッサに、
複数のシザリング領域に対して、１つのシザリング領域ごとに順々にシザリングを実行させ、なお、少なくとも１つのシザー値は、２つ以上の重なり合った前記シザリング領域を表現する；
前記各シザリング領域内の画素のシザー値を更新させる；
ための命令を格納するプロセッサ可読媒体。
【請求項３３】
前記プロセッサに、
前記画素のシザー値を基準値と比較させ、
前記シザー値が前記基準値に等しいかまたは前記基準値よりも大きい前記画素を送出させる、
ための命令をさらに格納する、請求項３２に記載のプロセッサ可読媒体。
【国際調査報告】
2010510608.tif 000015
2010510608.tif 000016