(57)【要約】本明細書では、独立した解像度でラスタライズ及びピクセルシェーディングを実行する技術を提供する。この技術は、ラスタライズを通常通りに実行して、細かいラスタライズデータと、（細かい）クワッドのセットと、を生成することを含む。クワッドは、タイルバッファに蓄積され、粗いクワッドは、シェーディングレートに基づいてタイルバッファ内のクワッドから生成される。シェーディングレートは、細かいクワッドののピクセルをいくつ組み合わせて、粗いクワッドの粗いピクセルを生成するかを決定する。細かいピクセルの組み合わせは、このような細かいピクセルを組み合わせる毎に、単一の粗いピクセルを生成することを含む。粗いクワッドの粗いピクセルの位置は、対応する細かいピクセルの位置に基づいて設定される。粗いクワッドは通常通りにシェーディングされ、結果として得られるシェーディングされた粗いクワッドは、細かいラスタライズデータに基づいて変更され、シェーディングされた細かいクワッドが生成される。【選択図】図４
2020532789.tif 000002
【特許請求の範囲】
【請求項１】
三次元グラフィックスを、独立したラスタライズ及びピクセルシェーディング解像度で処理して、画像をレンダーターゲットにレンダリングする方法であって、
三角形をラスタライズして、細かいラスタライズデータと１つ以上のクワッドのセットとを生成することと、
前記１つ以上のクワッドのセットのうち少なくとも１つをタイルバッファに蓄積することと、
前記タイルバッファ内のクワッドをダウンサンプリングして、粗いクワッドを生成することと、
前記粗いクワッドをシェーディングして、シェーディングされた粗いクワッドを生成することと、
前記粗いクワッドを前記細かいラスタライズデータで変調することと、を含む、
方法。
【請求項２】
前記タイルバッファは、前記１つ以上のクワッドのセットのうち２つ以上のクワッドのデータを記憶するのに十分な容量を有するメモリを含む、
請求項１の方法。
【請求項３】
前記細かいラスタライズデータに対して深度テストを実行して、前記１つ以上のクワッドから隠されたピクセルを除去することをさらに含む、
請求項１の方法。
【請求項４】
前記１つ以上のクワッドのセットのうち少なくとも１つをタイルバッファに蓄積することは、
前記タイルバッファを、レンダーターゲットのタイルに対応する前記１つ以上のクワッドのセットのクワッドで充填することであって、カバーされないと決定されたクワッドに対応する前記タイルバッファの部分は空のままである、ことを含む、
請求項１の方法。
【請求項５】
シェーディングレートを決定することをさらに含む、
請求項１の方法。
【請求項６】
前記タイルバッファ内のクワッドをダウンサンプリングすることは、
前記タイルバッファ内の前記クワッドのピクセルから生成された粗いピクセルをそれぞれ含む１つ以上の粗いクワッドのセットを、前記シェーディングレートに基づいて生成することを含む、
請求項５の方法。
【請求項７】
粗いピクセルの各々は、前記１つ以上のクワッドのセットのピクセルの数に対応する前記レンダーターゲットの領域に対応しており、前記数は、前記シェーディングレートに基づいている、
請求項６の方法。
【請求項８】
前記レンダーターゲットは、マルチサンプリングされたレンダーターゲットであり、
粗いピクセルの各々は、前記１つ以上のクワッドのセットの前記対応するピクセルに関連するマルチサンプルカバレッジを含む、
請求項６の方法。
【請求項９】
前記粗いクワッドを前記細かいラスタライズデータで変調することは、
前記シェーディングされた粗いクワッドをアップサンプリングして、アップサンプリングされた細かいクワッドのセットを生成することと、
前記細かいラスタライズデータに基づいて、前記アップサンプリングされた細かいクワッドのカバレッジを変更することと、を含む、
請求項１の方法。
【請求項１０】
３次元グラフィックスを、独立したラスタライズ及びピクセルシェーディング解像度で処理して、画像をレンダーターゲットにレンダリングするアクセラレーテッド処理デバイス（ＡＰＤ）であって、
ラスタライザステージと、
ピクセルシェーダステージと、
出力マージャステージと、を備え、
前記ラスタライザステージは、
三角形をラスタライズして、細かいラスタライズデータと１つ以上のクワッドのセットとを生成することと、
前記１つ以上のクワッドのセットのうち少なくとも１つをタイルバッファに蓄積することと、
前記タイルバッファ内のクワッドをダウンサンプリングして、粗いクワッドを生成することと、を行うように構成されており、
前記ピクセルシェーダステージは、
前記粗いクワッドをシェーディングして、シェーディングされた粗いクワッドを生成するように構成されており、
前記出力マージャステージは、
前記粗いクワッドを前記細かいラスタライズデータで変調するように構成されている、
ＡＰＤ。
【請求項１１】
前記タイルバッファは、前記１つ以上のクワッドのセットのうち２つ以上のクワッドのデータを記憶するのに十分な容量を有するメモリを含む、
請求項１０のＡＰＤ。
【請求項１２】
前記ラスタライザステージは、
前記細かいラスタライズデータに対して深度テストを実行して、前記１つ以上のクワッドから隠されたピクセルを除去することを行うように構成されている、
請求項１０のＡＰＤ。
【請求項１３】
前記ラスタライザステージは、
前記タイルバッファを、レンダーターゲットのタイルに対応する前記１つ以上のクワッドのセットのクワッドで充填することであって、カバーされないと決定されたクワッドに対応する前記タイルバッファの部分は空のままである、ことによって、前記１つ以上のクワッドのセットのうち少なくとも１つをタイルバッファに蓄積することを行うように構成されている、
請求項１０のＡＰＤ。
【請求項１４】
前記ラスタライザステージは、シェーディングレートを決定することをさらに行うように構成されている、
請求項１０のＡＰＤ。
【請求項１５】
前記ラスタライザステージは、
前記タイルバッファ内の前記クワッドのピクセルから生成された粗いピクセルをそれぞれ含む１つ以上の粗いクワッドのセットを、前記シェーディングレートに基づいて生成することによって、前記タイルバッファ内のクワッドをダウンサンプリングするように構成されている、
請求項１４のＡＰＤ。
【請求項１６】
粗いピクセルの各々は、前記１つ以上のクワッドのセットのピクセルの数に対応する前記レンダーターゲットの領域に対応しており、前記数は、前記シェーディングレートに基づいている、
請求項１５のＡＰＤ。
【請求項１７】
前記レンダーターゲットは、マルチサンプリングされたレンダーターゲットであり、
粗いピクセルの各々は、前記１つ以上のクワッドのセットの前記対応するピクセルに関連するマルチサンプルカバレッジを含む、
請求項１４のＡＰＤ。
【請求項１８】
前記出力マージャステージは、
前記シェーディングされた粗いクワッドをアップサンプリングして、アップサンプリングされた細かいクワッドのセットを生成することと、
前記細かいラスタライズデータに基づいて、前記アップサンプリングされた細かいクワッドのカバレッジを変更することと、によって、前記粗いクワッドを前記細かいラスタライズデータで変調するように構成されている、
請求項１０のＡＰＤ。
【請求項１９】
デバイスであって、
プロセッサと、
前記プロセッサから受信したコマンドを、独立したラスタライズ及びピクセルシェーディング解像度で処理して、画像をレンダーターゲットにレンダリングするアクセラレーテッド処理デバイス（ＡＰＤ）と、を備え、
前記ＡＰＤは、
ラスタライザステージと、
ピクセルシェーダステージと、
出力マージャステージと、を備え、
前記ラスタライザステージは、
三角形をラスタライズして、細かいラスタライズデータと１つ以上のクワッドのセットとを生成することと、
前記１つ以上のクワッドのセットのうち少なくとも１つをタイルバッファに蓄積することと、
前記タイルバッファ内のクワッドをダウンサンプリングして、粗いクワッドを生成することと、を行うように構成されており、
前記ピクセルシェーダステージは、
前記粗いクワッドをシェーディングして、シェーディングされた粗いクワッドを生成するように構成されており、
前記出力マージャステージは、
前記粗いクワッドを前記細かいラスタライズデータで変調するように構成されている、
デバイス。
【請求項２０】
前記タイルバッファは、前記１つ以上のクワッドのセットのうち２つ以上のクワッドのデータを記憶するのに十分な容量を有するメモリを含む、
請求項１９のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１７年８月２５日に出願された米国特許出願第１５／６８７，４２１号の利益を主張するものであり、その内容は、本明細書に完全に記載されているかのように、言及することによって本明細書に組み込まれる。
【背景技術】
【０００２】
三次元（３Ｄ）グラフィックス処理パイプラインは、入力ジオメトリをスクリーン表示用の二次元（２Ｄ）画像に変換する一連のステップを実施する。いくつかのステップは、ラスタライズ及びピクセルシェーディングを含む。ラスタライズは、ラスタライザの前のパイプラインのステージで提供される三角形によってカバーされるピクセル（又は、サブピクセルのサンプル）を識別することを含む。ラスタライズの出力は、四角形（クワッド）（２×２ピクセルのブロック）と、何れのサンプルがクワッドのピクセルでカバーされているかを示すカバレッジデータと、を含む。ピクセルシェーダは、クワッドのピクセルをシェーディングし、クワッドのピクセルがフレームバッファに書き込まれる。ピクセルシェーディングは非常に多くのリソースを消費するため、ピクセルシェーディングの効率を向上させる技術が絶えず開発されている。
【０００３】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができるであろう。
【図面の簡単な説明】
【０００４】
【図１】本開示の１つ以上の特徴を実装し得る例示的なデバイスのブロック図である。
【図２】一例による、図１のデバイスの詳細を示す図である。
【図３】図２に示すグラフィックス処理パイプラインのさらなる詳細を示すブロック図である。
【図４】一例による、ピクセルシェーディングとは異なる解像度でラスタライズを実行するための技術を示す図である。
【図５】いくつかの例による、４分の１以外のシェーディングレートの粗いクワッドの生成を示す図である。
【図６】マルチサンプルレンダーターゲットへのレンダリングに関する詳細を含む、図４に示す技術のいくつかの詳細を示す図である。
【図７】図６の例示的な技術に対する代替技術を示す図であり、ピクセルシェーダによってキルされた、シェーディングされた粗いピクセルのいくつかのサンプルカバレッジを示す図である。
【発明を実施するための形態】
【０００５】
本明細書では、ラスタライズ及びピクセルシェーディングを独立した解像度で実行する技術を提供する。この技術は、通常のようにラスタライズを実行して、細かいラスタライズデータと、（細かい）クワッドのセットと、を生成することを含む。クワッドは、タイルバッファ内に蓄積され、粗いクワッドは、シェーディングレートに基づいてタイルバッファ内のクワッドから生成される。シェーディングレートは、細かいクワッドのピクセルをいくつ組み合わせて、粗いクワッドの粗いピクセルを生成するかを決定する。細かいピクセルの組み合わせは、組み合わせられる細かいピクセル毎に、単一の粗いピクセルを生成することを含む。粗いピクセルの各々は、対応する細かいピクセル（すなわち、粗いピクセルを形成するために組み合わされた細かいピクセル）のカバレッジに対応するカバレッジデータを有する。細かいピクセルからのサンプルカバレッジデータの組み合わせが、ピクセルのカバレッジに割り当てられたビット数を超える場合に、細かいピクセルからのカバレッジデータの一部が除去され、粗いピクセルのカバレッジデータの縮小されたセットが残る。粗いクワッドの粗いピクセルの位置は、対応する細かいピクセルの位置に基づいて設定される。一例では、粗いクワッドの各ピクセルの位置は、対応する細かいピクセルでカバーされるレンダーターゲットの領域の中心点に設定される。粗いクワッドは、通常のようにシェーディングされ、結果として得られるシェーディングされた粗いクワッドは、細かいラスタライズデータに基づいて変更され、シェーディングされた細かいクワッドを生成する。この変更は、粗いクワッドの各ピクセルをアップサンプリング（クローニング）して、各々が対応する粗いピクセルの色を有する複数のアップサンプリングされたクローンピクセルを生成し、次に、アップサンプリングされたクローンピクセルの各々に細かいラスタライズデータを適用することを含む。
【０００６】
図１は、本開示の１つ以上の特徴を実装し得る例示的なデバイス１００のブロック図である。デバイス１００は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、タブレットコンピュータ、又は、他のコンピューティングデバイスのうちの１つであってもよいが、これらに限定されない。デバイス１００は、プロセッサ１０２と、メモリ１０４と、ストレージ１０６と、１つ以上の入力デバイス１０８と、１つ以上の出力デバイス１１０と、を含む。また、デバイス１００は、１つ以上の入力ドライバ１１２と、１つ以上の出力ドライバ１１４と、を含む。任意の入力ドライバ１１２は、ハードウェア、ハードウェア及びソフトウェアの組み合わせ、又は、ソフトウェアとして実施され、入力デバイス１０８を制御する（例えば、動作の制御、入力ドライバ１１２からの入力の受信、及び、入力ドライバ１１２へのデータの提供）目的を果たす。同様に、任意の出力ドライバ１１４は、ハードウェア、ハードウェア及びソフトウェの組み合わせ、又は、ソフトウェアとして実施され、出力デバイス１１０を制御する（例えば、動作の制御、出力ドライバ１１４からの入力の受信、及び、出力ドライバ１１４へのデータの提供）目的を果たす。デバイス１００は、図１に示していない追加のコンポーネントを含み得ることを理解されたい。
【０００７】
様々な代替例では、プロセッサ１０２は、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、同じダイ上に配置されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコアを含み、各プロセッサコアは、ＣＰＵ又はＧＰＵであってもよい。様々な代替例では、メモリ１０４は、プロセッサ１０２と同じダイ上に配置されてもよいし、プロセッサ１０２から分離して配置される。メモリ１０４は、揮発性又は不揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ、キャッシュ等）を含む。
【０００８】
ストレージ１０６は、固定又は着脱可能なストレージ（例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ等であるが、これらに限定されない）を含む。入力デバイス１０８は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリクススキャナ、又は、ネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／若しくは受信用の無線ローカルエリアネットワークカード）を含むが、これらに限定されない。出力デバイス１１０は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、１つ以上のライト、アンテナ、又は、ネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／若しくは受信用の無線ローカルエリアネットワークカード）を含むが、これらに限定されない。
【０００９】
入力ドライバ１１２及び出力ドライバ１１４は、入力デバイス１０８及び出力デバイス１１０の各々とインタフェースし、これらを駆動するように構成された１つ以上のハードウェア、ソフトウェア及び／又はファームウェアコンポーネントを含む。入力ドライバ１１２は、プロセッサ１０２及び入力デバイス１０８と通信し、プロセッサ１０２が入力デバイス１０８からの入力を受信するのを可能にする。出力ドライバ１１４は、プロセッサ１０２及び出力デバイス１１０と通信し、プロセッサ１０２が出力デバイス１１０に出力を送信するのを可能にする。出力ドライバ１１４は、ディスプレイデバイス１１８に接続されたアクセラレーテッド処理デバイス（Accelerated Processing Device：ＡＰＤ）１１６を含み、ＡＰＤ１１６は、いくつかの例では、物理ディスプレイデバイス、又は、出力を表示するためにリモートディスプレイプロトコルを使用するシミュレートデバイスである。ＡＰＤ１１６は、プロセッサ１０２から計算コマンド及びグラフィックスレンダリングコマンドを受け入れ、これらの計算コマンド及びグラフィックスレンダリングコマンドを処理して、ピクセル出力を、表示するためにディスプレイデバイス１１８に提供するように構成されている。以下により詳細に説明するように、ＡＰＤ１１６は、単一命令複数データ（single-instruction-multiple-data：ＳＩＭＤ）パラダイムに従って計算を実行するように構成された１つ以上の並列処理装置を含む。したがって、本明細書では、様々な機能がＡＰＤ１１６によって又はＡＰＤ１１６と共に実行されるものとして説明しているが、代替例では、ＡＰＤ１１６によって実行されるものとして説明している機能は、追加的又は代替的に、ホストプロセッサ（例えば、プロセッサ１０２）によって駆動されず、グラフィックス出力をディスプレイデバイス１１８に提供するように構成された、同様の機能を有する他のコンピューティングデバイスによって実行される。例えば、ＳＩＭＤパラダイムに従って処理タスクを実行する任意の処理システムが、本明細書で説明する機能を実行するように構成されてもよいことが企図される。或いは、ＳＩＭＤパラダイムに従って処理タスクを実行しないコンピューティングシステムが、本明細書で説明する機能を実行することが企図される。
【００１０】
図２は、一例による、デバイス１００及びＡＰＤ１１６の詳細を示す図である。プロセッサ１０２（図１）は、オペレーティングシステム１２０と、ドライバ１２２と、アプリケーション１２６と、を実行し、他のソフトウェアを代替的又は追加的に実行してもよい。オペレーティングシステム１２０は、ハードウェアリソースの管理、サービス要求の処理、プロセス実行のスケジューリング及び制御、並びに、他の動作の実行等のデバイス１００の様々な態様を制御する。ＡＰＤドライバ１２２は、ＡＰＤ１１６の動作を制御し、グラフィックスレンダリングタスク又は他のワーク等のタスクを、処理のためにＡＰＤ１１６に送信する。また、ＡＰＤドライバ１２２は、ＡＰＤ１１６の処理コンポーネント（例えば、以下により詳細に説明するＳＩＭＤユニット１３８等）による実行のためのプログラムをコンパイルするジャストインタイムコンパイラも含む。
【００１１】
ＡＰＤ１１６は、グラフィックス操作及び非グラフィックス操作等のように、並列処理に適している選択された機能のためのコマンド及びプログラムを実行する。ＡＰＤ１１６は、ピクセル演算、幾何学的計算等のグラフィックスパイプライン操作を実行し、プロセッサ１０２から受信したコマンドに基づいて画像をディスプレイデバイス１１８にレンダリングするのに使用することができる。また、ＡＰＤ１１６は、プロセッサ１０２から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学又は他のタスクに関連する操作等のように、グラフィックス操作に直接関連しない計算処理操作を実行する。
【００１２】
ＡＰＤ１１６は、ＳＩＭＤパラダイムに従ってプロセッサ１０２（又は、別のユニット）の要求に応じて並列に操作を実行するように構成された１つ以上のＳＩＭＤユニット１３８を含む計算ユニット１３２を含む。ＳＩＭＤパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有することによって同じプログラムを実行するが、異なるデータを用いて当該プログラムを実行することができるパラダイムである。一例では、各ＳＩＭＤユニット１３８は、１６のレーンを含んでおり、各レーンは、ＳＩＭＤユニット１３８内の他のレーンと同時に同じ命令を実行するが、異なるデータを用いて当該命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合、予測によってレーンをスイッチオフすることができる。また、予測を使用して、分岐した制御フローを有するプログラムを実行することもできる。具体的には、制御フローが、個々のレーンによって実行された計算に基づく条件付き分岐又は他の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンの予測及び異なる制御フローパスの連続実行は、任意の制御フローを可能にする。
【００１３】
計算ユニット１３２における実行の基本単位は、ワークアイテムである。各ワークアイテムは、特定のレーンで並列に実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のＳＩＭＤ処理ユニット１３８上で「ウェーブフロント（wavefront）」として同時に（又は、部分的に同時であって部分的に順次に）実行することができる。１つ以上のウェーブフロントは、同じプログラムを実行するように指定されたワークアイテムの集合を含む「ワークグループ」に含まれる。ワークグループを構成するウェーブフロントの各々を実行することによって、ワークグループを実行することができる。代替として、ウェーブフロントは、単一のＳＩＭＤユニット１３８又は異なるＳＩＭＤユニット１３８上で実行される。ウェーブフロントは、単一のＳＩＭＤユニット１３８上で同時に（又は、疑似的に同時に）実行可能なワークアイテムの最大の集合と考えることができる。「疑似的に同時」な実行は、ＳＩＭＤユニット１３８のレーン数よりも多いウェーブフロントの場合に発生する。このような状況では、ウェーブフロントは、複数のサイクルに亘って実行され、ワークアイテムの異なる集合が異なるサイクルで実行される。ＡＰＤスケジューラ１３６は、計算ユニット１３２及びＳＩＭＤユニット１３８上で様々なワークグループ及びウェーブフロントのスケジューリングに関連する操作を実行するように構成されている。
【００１４】
計算ユニット１３２によってもたらされる並列性は、ピクセル値計算、頂点変換及び他のグラフィックス操作等のグラフィックス関連操作に適している。したがって、場合によっては、プロセッサ１０２からグラフィックス処理コマンドを受け入れるグラフィックス処理パイプライン１３４は、計算タスクを、並列実行のために計算ユニット１３２に提供する。
【００１５】
また、計算ユニット１３２は、グラフィックスに関連しないか、グラフィックス処理パイプライン１３４の「通常」の操作（例えば、グラフィックス処理パイプライン１３４の操作のために実行される処理を補足するのに実行されるカスタム操作）の一部として実行されない計算タスクを実行するために使用される。プロセッサ１０２上で実行されるアプリケーション１２６又は他のソフトウェアは、このような計算タスクを定義するプログラムを、実行のためにＡＰＤ１１６に送信する。
【００１６】
図３は、図２に示すグラフィックス処理パイプライン１３４のさらなる詳細を示すブロック図である。グラフィックス処理パイプライン１３４は、各々がグラフィックス処理パイプライン１３４の特定の機能を実行するステージを含む。各ステージは、プログラム可能な計算ユニット１３２で実行されるシェーダプログラムとして部分的若しくは完全に実装され、又は、計算ユニット１３２の外部の固定機能のプログラム不可能なハードウェアとして部分的若しくは完全に実装される。
【００１７】
入力アセンブラステージ３０２は、ユーザが充填したバッファ（例えば、プロセッサ１０２によって実行されるアプリケーション１２６等のソフトウェアの要求によって充填されたバッファ）からプリミティブデータを読み出し、当該データを、パイプラインの残りの部分によって使用されるプリミティブにアセンブルする。入力アセンブラステージ３０２は、ユーザが充填したバッファに含まれるプリミティブデータに基づいて、異なるタイプのプリミティブを生成することができる。入力アセンブラステージ３０２は、パイプラインの残りの部分で使用するために、アセンブルされたプリミティブをフォーマットする。
【００１８】
頂点シェーダステージ３０４は、入力アセンブラステージ３０２によってアセンブルされたプリミティブの頂点を処理する。頂点シェーダステージ３０４は、変換、スキニング、モーフィング及び頂点毎のライティング等の様々な頂点毎の操作を実行する。変換操作は、頂点の座標を変換するための様々な操作を含む。これらの操作は、頂点座標を変更するモデリング変換、ビュー変換、投影変換、パースペクティブ分割及びビューポート変換等のうち１つ以上と、座標以外の属性を変更する他の操作と、を含む。
【００１９】
頂点シェーダステージ３０４は、１つ以上の計算ユニット１３２で実行される頂点シェーダプログラムとして部分的又は完全に実装される。頂点シェーダプログラムは、プロセッサ１０２によって提供され、コンピュータプログラマによって事前に書き込まれたプログラムに基づいている。ドライバ１２２は、このようなコンピュータプログラムをコンパイルして、計算ユニット１３２での実行に適したフォーマットを有する頂点シェーダプログラムを生成する。
【００２０】
ハルシェーダステージ３０６、テッセレータステージ３０８及びドメインシェーダステージ３１０は、連携してテッセレーションを実行し、プリミティブを細分化することによって、単純なプリミティブをより複雑なプリミティブに変換する。ハルシェーダステージ３０６は、入力されたプリミティブに基づいて、テッセレーションに関するパッチを生成する。テッセレータステージ３０８は、パッチのサンプルセットを生成する。ドメインシェーダステージ３１０は、パッチのサンプルに対応する頂点の頂点位置を計算する。ハルシェーダステージ３０６及びドメインシェーダステージ３１０は、頂点シェーダステージ３０４と同様に、ドライバ１２２によってコンパイルされる計算ユニット１３２上で実行されるシェーダプログラムとして実装することができる。
【００２１】
ジオメトリシェーダステージ３１２は、プリミティブ毎に頂点操作を実行する。ジオメトリシェーダステージ３１２によって、例えば、ポイントスプライト展開、動的パーティクルシステム操作、ファーフィン（fur-fin）生成、シャドウボリューム生成、キューブマップへのシングルパスレンダリング、プリミティブ毎のマテリアルスワップ、プリミティブ毎のマテリアル設定等の操作を含む、様々な異なるタイプの操作を実行することができる。場合によっては、ドライバ１２２によってコンパイルされ、計算ユニット１３２上で実行されるジオメトリシェーダプログラムは、ジオメトリシェーダステージ３１２の操作を実行する。
【００２２】
ラスタライザステージ３１４は、ラスタライザステージ３１４の上流で生成された単純なプリミティブ（三角形）を受け入れてラスタライズする。ラスタライズは、何れのスクリーンピクセル（又は、サブピクセルのサンプル）が特定のプリミティブによってカバーされるかを決定することから構成されている。ラスタライズは、固定機能のハードウェアによって実行される。
【００２３】
ピクセルシェーダステージ３１６は、上流で生成されたプリミティブ及びラスタライズの結果に基づいて、スクリーンピクセルの出力値を計算する。ピクセルシェーダステージ３１６は、テクスチャメモリからテクスチャを適用してもよい。ピクセルシェーダステージ３１６の操作は、ドライバ１２２によってコンパイルされ、計算ユニット１３２で実行されるピクセルシェーダプログラムによって実行される。
【００２４】
出力マージャステージ３１８は、ピクセルシェーダステージ３１６からの出力を受け入れ、これらの出力をフレームバッファ内に結合（マージ）し、ｚテスト及びアルファブレンディング等の操作を実行することによって、スクリーンピクセルの最終色を決定する。
【００２５】
１つの動作モードでは、ラスタライザステージ３１４によって実行されるラスタライズは、ピクセルシェーダステージ３１６によって実行されるピクセルシェーディングと同じ解像度で実行される。上記の説明よりも詳細な背景として、ラスタライザステージ３１４は、前のステージから三角形を受け入れ、当該三角形に対してスキャン変換を実行してフラグメントを生成する。フラグメントは、レンダーターゲットの個々のピクセルのデータであり、位置、深度及びカバレッジデータ等の情報を含み、ピクセルシェーダステージの後に、色等のシェーディングデータを含む。レンダーターゲットは、レンダリングが実行される（すなわち、色又は他の値が書き込まれている）ターゲット画像である。
【００２６】
通常、フラグメントはクワッドにグループ化され、各クワッドは、４つの隣接するピクセル位置に対応するフラグメント（すなわち、２×２フラグメント）を含む。三角形のスキャン変換は、三角形によってカバーされているピクセル位置毎にフラグメントを生成することを含む。レンダーターゲットがマルチサンプル画像である場合、各ピクセルは、複数のサンプル位置を有し、その各々がカバレッジについてテストされる。フラグメントは、三角形によってカバーされているピクセル領域内のサンプルのカバレッジデータを記録する。ラスタライザステージ３１４によって生成されたフラグメントは、ピクセルシェーダステージ３１６に送信され、ピクセルシェーダステージ３１６は、これらのフラグメントの色値を決定し、同様に他の値を決定してもよい。
【００２７】
同じ解像度でラスタライズ及びピクセルシェーディングを実行することは、ラスタライザによって生成されたフラグメント毎に、ピクセルシェーダ３１６が当該フラグメントの色を決定するための計算を実行することを意味する。つまり、ピクセルが占めるスクリーンスペースの面積は、色を決定する精度と同じ面積である。一例では、計算ユニット１３２のＳＩＭＤベースのハードウェアでは、ラスタライザステージ３１４によって生成された各フラグメントは、異なるワークアイテムによってシェーディングされる。したがって、生成されたフラグメントと、これらのフラグメントをシェーディングするために生成されたワークアイテムとの間には、１対１の対応関係がある。ラスタライザステージ３１４は、通常、前にレンダリングされたフラグメントによって隠されたフラグメントをカリングする深度テスト（depth testing）を実行することに留意されたい。したがって、この深度カリングで残存したフラグメントと、残存したフラグメントを着色するために生成されたワークアイテムとの間には、１対１の対応関係がある。シェーディングと同じ解像度でラスタライズが実行される動作モードを理解する別の方法は、三角形のエッジを定義できる解像度が、当該三角形の色を定義できる解像度に等しいことである。
【００２８】
上記の動作モードに関する問題の１つは、固定色又は色の低周波数変化を有する三角形のピクセルシェーディングと同じ解像度でラスタライズが行われることである。このような三角形の場合、近くのフラグメントに対するピクセルシェーディング演算が同じ又は類似の色を生成し、事実上冗長である。したがって、ピクセルシェーダ演算の数を大幅に少なくして、同様の結果を得ることができる。したがって、ラスタライズ解像度をシェーディング解像度から独立させることが有利であり、以下に、ピクセルシェーディングとは異なる解像度でラスタライズを行うための技術を説明する。このような技術の利点は、実行されるピクセルシェーダ演算の数が減少し、これにより、処理負荷が低減され、パフォーマンスが向上することである。
【００２９】
図４は、一例による、ピクセルシェーディングとは異なる解像度でラスタライズを実行するための技術を示す図である。図４は、一連のステップを示し、異なるステップの例示的な図を提供し、グラフィックス処理パイプライン１３４の何れのステージが何れのステップに関連しているかを示している。
【００３０】
この技術は、ステップ４０２から始まり、ラスタライザステージ３１４は、グラフィックス処理パイプライン１３４の前のステージから受信した三角形をラスタライズする。このラスタライズは、レンダーターゲットの解像度で実行される。ラスタライズは、三角形でカバーされているレンダーターゲットのサンプルを決定する。また、ラスタライザステージ３１４は、ステップ４０２で深度テストを実行する。一例では、深度テストは、三角形でカバーされている各サンプルの深度値を調べ、これらの深度値を、既に処理された三角形の深度値を記憶する深度バッファと比較することを含む。特定のサンプルの深度値は、特定のサンプルと同じ位置の深度バッファに記憶された深度値と比較される。サンプルが隠されていることを深度バッファが示している場合には当該サンプルが破棄され、サンプルが隠されていないことを深度バッファが示している場合には当該サンプルが存続する。いくつかの深度テストモードでは、存続しているサンプルによって、当該サンプルの位置の深度バッファが更新される。深度テストは、深度バッファ内の深度値と問題のサンプルの深度値との間の様々なタイプの比較（例えば、小なり比較（less-than comparison）、大なり比較（greater-than comparison）、等値比較（equal-to comparison）又は他のタイプの比較）に対応するモード等の異なるモード、及び、深度バッファを更新するための様々な条件（例えば、存続しているサンプルが更新をトリガしてもよいし、他の条件が更新をトリガしてもよいし、更新がスイッチオフされてもよい）で実行されてもよい。何れのサンプル位置がカバーされており、何れのサンプル位置が隠されていないかを示すデータは、この説明の他の箇所で説明するように、後の処理のためにグラフィックス処理パイプライン１３４の他の部分に渡される。
【００３１】
カバレッジデータ（細かいラスタライズデータとも呼ばれる）を除き、ラスタライズの結果はクワッドである。具体的には、三角形によってカバーされた少なくとも１つのサンプルを有するピクセル毎に、ラスタライザステージ３１４がフラグメントを生成する。ラスタライザ３１４は、これらのフラグメントからクワッドを生成する。クワッドは、１つ以上のこのようなフラグメントが三角形によって完全にカバーされていない場合でも、２×２ピクセルの隣接する部分のフラグメントを含む。この場合、このようなフラグメントは「ヘルパーピクセル」と呼ばれる（ヘルパーピクセルは、ヘルパーピクセル以外のピクセルの色の生成を支援するためにピクセルシェーダによって使用されるが、ピクセルシェーダによって決定された色は、フレームバッファに書き込まれない）。
【００３２】
また、ステップ４０２において、ラスタライザステージ３１４は、三角形のサンプルの１つ以上のシェーディングレートを決定する。シェーディングレートは、ピクセルシェーダステージ３１６において共にシェーディングされるピクセルの数を定義する。具体的には、シェーディングレートは、ピクセルシェーダステージ３１６の単一のワークアイテムによって決定された色がレンダーターゲット内のいくつのピクセル位置に与えられるかを決定する。例えば、シェーディングレートが４分の１である場合、ピクセルシェーダステージ３１６のワークアイテムは、レンダーターゲットの４つのピクセル位置の色を決定する。いくつかのピクセルの色は、三角形の外側にあるか、深度テストに基づいて隠されていることに起因して破棄される場合があるので、色は、ピクセルではなくピクセル位置に対して決定されると言われることに留意されたい。例えば、シェーディングレートが４分の１であり、これにより、特定のワークアイテムがレンダーターゲットの４つのピクセル位置の色を決定し、これらのうち３つのピクセル位置が三角形の外側にあるか隠されている場合には、ワークアイテムは、実際には、１つのピクセルのみの色を決定する。但し、ワークアイテムが色を決定した全てのピクセル位置が三角形内にあり、隠されていない可能性がある。このような状況では、１つのワークアイテムが、４つの異なるピクセルの色を決定する。
【００３３】
シェーディングレートは、以下の技術のうち１つ以上に基づいて、レンダーターゲットに適用される。タイルベースのレート決定技術では、レンダーターゲットがシェーディングレートタイルのセットに分割され、各シェーディングレートタイルに特定のシェーディングレートが割り当てられる。三角形ベースのレート決定技術では、特定のシェーディングレートが各プリミティブに割り当てられる。状態ベースのレート決定技術では、シェーディングレートの状態変化がパイプラインを介して伝播され、ラスタライザステージ３１４において、次のシェーディングレートの状態変化がラスタライザステージ３１４によって処理されるまで、後続のピクセルのシェーディングレートを設定する。これらの技術を組み合わせて、異なる技術に異なる優先度を与えてもよい。一例では、状態ベースのレート決定技術は、三角形のサンプルのデフォルトのシェーディングレートを定義する。この例では、タイルベースのレート決定技術が状態ベースの値を上書きし、三角形ベースのシェーディングレートが状態ベースの値及びタイルベースの値を上書きする。他の優先度が代わりに存在してもよいし、異なる技術が独立して適用されてもよい。
【００３４】
ラスタライズ図４２０は、三角形でカバーされているピクセル（カバーされているピクセル５０２）と、カバーされていないピクセル（カバーされていないピクセル５０４）と、を含む三角形５０６を示している。ラスタライズ図４２０は、レンダーターゲット（図示省略）の一部のみをカバーしており、レンダーターゲットの他の部分については、図示していないラスタライズが行われていることを理解されたい。図示した部分は、４つの異なるタイル５０８に分割される。これらのタイル５０８は、以下に詳細に説明するように、ピクセルを「ダウンサンプリング」して、ラスタライズ解像度とピクセルシェーディング解像度との分離を可能にするメカニズムの一部である。タイル５０８は、上述したシェーディングレートタイルと異なることに留意されたい。
【００３５】
ステップ４０４において、ラスタライザステージ３１４は、ステップ４０２での細かいラスタライズの結果として生成されたクワッドを、タイルバッファ図４２２で示すように、タイルバッファ５１０内に蓄積する。タイルバッファ５１０は、タイル５０８のクワッドを記憶する小さなメモリである。図４では、タイルバッファ５１０は、４つの２×２の隣接する細かいピクセルクワッドのサイズであるが、他の例では、タイルバッファ５１０は、異なる数のクワッドを記憶してもよい。細かいピクセル５１４が示されているが、これらは、ダウンサンプリングされた解像度ではなく、レンダーターゲットの解像度のピクセルに対応している。深度カリングされた（すなわち、ステップ４０２の深度テストで存続したピクセルがない）クワッドの場合、タイルバッファ５１０の対応する部分は空のままである。ラスタライザステージ３１４は、スクリーン位置に対して、クワッドが生成される順序を知っており、これにより、クワッドがいつ「失われた」かを決定することができる。
【００３６】
ステップ４０６において、ラスタライザステージは、（粗いクワッドの図４２４に示すように）シェーディングレートに基づいて粗いクワッド５１５を生成する。タイルバッファは、複数の粗いピクセル領域５１２を含むと考えることができる。粗いピクセル領域５１２のサイズは、シェーディングレートに依存する。具体的には、粗いピクセル領域５１２の各々は、シェーディングレートの逆数に等しいピクセル数を含む。例えば、シェーディングレートが４分の１である場合、粗いピクセル領域５１２の各々は、４つの細かいピクセル５１４を含む。シェーディングレートが２分の１である場合、粗いピクセル領域５１２の各々は、２つの細かいピクセル５１４を含み、以下同様である。
【００３７】
タイルバッファ５１０のサイズ及びシェーディングレートに基づいて、１つ以上の粗いクワッド５１５が生成される。生成される粗いクワッド５１５の数は、細かいピクセル５１４のタイルバッファ５１０のサイズに等しく、４（クワッド内の４ピクセル）で除算され、シェーディングレートで乗算される。したがって、図４の例のように、タイルバッファ５１０が１６個のピクセルであり、シェーディングレートが４分の１である場合、生成される粗いクワッド５１５の数は１６／４×（１／４）＝１に等しい。同様のタイルバッファ５１０及び２分の１シェーディングレートの場合、２つの粗いクワッド５１５が生成される。
【００３８】
粗いクワッド５１５の各々は、４つの粗いピクセル５２０を含む。任意の特定の粗いピクセル５２０に割り当てられたカバレッジは、その粗いピクセル５２０に「潰された（collapsed）」細かいピクセル５１４に割り当てられたカバレッジの融合である。状況によっては、このような融合は、粗いピクセル５２０が過剰なカバレッジデータを有することになる。具体的には、グラフィックス処理パイプライン１３４は、ピクセルのカバレッジデータを指定するのに使用可能なビット数に対する制限を有する場合がある。この状況では、細かいピクセル５１４からのカバレッジデータが粗いピクセル５２０のカバレッジデータに融合されると、そのデータは忠実度が低下する。残っているカバレッジデータは、個々の細かいピクセルのカバレッジを幾何学的に表す。この考え方は、図６に関してより詳細に説明される。カバレッジを有しない粗いクワッド５１５が生成される場合、このような粗いクワッド５１５は生成されない。タイルバッファ５１０がレンダーターゲットの特定のタイル５０８について如何なるクワッドも受信していない場合、ラスタライザステージ３１４は、そのタイル５０８をカバーする三角形が存在しないか、又は、そのタイル５０８について生成されたクワッドが他のジオメトリによって隠されていることを決定する。その場合、そのタイル５０８に対して粗いクワッド５１５が生成されない。
【００３９】
ステップ４０８において、ラスタライザステージ３１４は、（図４２６に示すように）ステップ４０６で生成された粗いクワッド５１５の粗いピクセル５２０の位置を設定する。この位置は、粗いピクセル５２０に潰された細かいピクセル５１４を含む粗いピクセル領域５１２を幾何学的に表す。一例では、粗いピクセル５２０の位置は、対応する粗いピクセル領域５１２の中心に設定される。粗いピクセル５２０の位置を設定するための他の技術的に実行可能な技術が可能である。
【００４０】
ステップ４１０において、ピクセルシェーダステージ３１６は、ピクセルシェーディングの図５２４に示すように、生成された粗いクワッド５１５をシェーディングして、シェーディングされた粗いピクセル５２４を生成する。このシェーディングは標準的な方法で行われ、例えば、粗いピクセル５２０の各々は、ＳＩＭＤハードウェアで処理されるワークアイテムとして起動する。
【００４１】
ステップ４１２において、出力マージャステージ３１８は、ステップ４１２において決定された細かいカバレッジデータを、変調の図５２６に示すように、シェーディングされた粗いピクセル５２４に適用する。具体的には、シェーディングされた粗いピクセル５２４の各々は、シェーディングレートに基づいてクローニングされ、各クローンは、シェーディングされた粗いピクセル５２４の色を取得して、シェーディングされた細かいピクセル５２６を生成する。ラスタライザステージ３１４によって生成されたサンプルカバレッジ内のデータに基づいて、シェーディングされた細かいピクセル５２６の各々にカバレッジが適用される。サンプルがそのデータでカバーされていない場合、そのサンプルは、対応するクローニングされた細かいピクセルで無効になる。ラスタライザステージ３１４によって生成されたデータにカバレッジを有しないクローニングされたピクセルも同様に、ピクセルカバレッジを有しないように設定される。ステップ４１２に含まれる動作は、本明細書では「変調」と呼ばれることがある。例えば、シェーディングされた粗いピクセル５２４は、ラスタライザステージ３１４によって生成されたカバレッジデータによって変調され、シェーディングされた細かいピクセル５２６を生成すると言える。
【００４２】
ステップ４１４において、ラスタライザステージ３１４からのサンプルカバレッジによって変更されたカバレッジを有する、シェーディングされた細かいピクセル５２６が、レンダーターゲットに書き込まれる。例えば、遅延ｚ演算（late z operations）、ブレンディング等の他の遅延ピクセル演算を適用することができる。
【００４３】
図５は、いくつかの例による、タイルバッファ５１０及びタイルバッファ５１０の内容から、４分の１以外のシェーディングレートの粗いクワッドの生成を示す図である。具体的には、２：１水平構成５５０（１）、２：１垂直構成５５０（２）、及び、１：１パススルー構成５５０（３）が示されている。
【００４４】
２：１水平構成５５０（１）は、水平方向に隣接する２つの細かいピクセル５１４が粗いピクセル５２０に組み合わされる２分の１シェーディングレートを有する。同様に、２：１垂直構成５５０（２）は、垂直方向に隣接する２つの細かいピクセル５１４が粗いピクセル５２０に組み合わされる２分の１シェーディングレートを有する。図示した２：１構成の両方について、４分の１シェーディングレートのように、４つの粗いピクセル５２０が粗いクワッド５１４内に含まれる。タイルバッファ５１０が８つの粗いピクセル５２０に対応するので、２つのクワッドが生成される。また、粗いピクセル５２０の各々には、粗いピクセル５２０に蓄積される細かいピクセル５１４のカバレッジが割り当てられ、粗いピクセル５２０が細かいピクセル５１４の全てのカバレッジデータを記憶するのに十分なビットを含まない場合、カバレッジの忠実度は低下する。ピクセル位置調整は、粗いピクセル５２０の各々の位置を、粗いピクセル領域５１２を幾何学的に表す位置に設定することを含む。一例では、この位置は、粗いピクセル領域５１２の中心である。粗いピクセル５２０の位置を設定するための他の技術的に実行可能な技術も可能である。１：１構成５５０（３）では、特別な動作が実行されない。粗いクワッドが存在せず、ラスタライズによって生成されたクワッド５４０は、変更なしに出力され、ピクセルシェーダステージ３１６によってシェーディングされる。
【００４５】
図６は、一例による、マルチサンプルレンダーターゲットへのレンダリングに関連するいくつかの詳細を含む、図４に示す技術の詳細を示す図である。図６は、図４のステップのいくつかを示しており、簡潔にするために他のステップを省略している。
【００４６】
細かいラスタライズデータ６０６は、マルチサンプルレンダーターゲットについて、ステップ４０２においてラスタライザステージ３１４によって生成されたラスタライズデータを含む。マルチサンプルレンダーターゲットは、各ピクセルが複数のカバレッジサンプルを有するレンダーターゲットである。図６では、簡潔にするために、単一の粗いピクセル領域５１２のみが示されている。さらに、このシェーディングレートは、一例としてのみ使用されているが、４分の１である。４分の１のシェーディングレートは、粗いピクセル領域５１２が４つの細かいピクセル５１４を含むことを意味する。
【００４７】
細かいラスタライズデータ６０６は、（三角形のエッジ６０２によって画定されるように）三角形の内側にあるいくつかのカバーされたサンプル６０８と、三角形の外側にあるいくつかのカバーされていないサンプル６０４と、を示している。「保守的なダウンサンプル（conservative downsample）」操作は、図４のステップ４０６に対応する。具体的には、保守的なダウンサンプル操作は、各ピクセルで使用可能なサンプルカバレッジデータの制限に起因するサンプルカバレッジデータの減少と共に、複数の細かいピクセル５１４が単一の粗いピクセル５２０に潰されたことを示している。上述したように、このように潰されることは、細かいピクセル５１４のより忠実度の高いサンプルカバレッジを幾何学的に表すサンプルカバレッジのセットを保持することを含む。図６では、各サンプルは、異なる細かいピクセル５１４に対応している。ダウンサンプルは、細かいピクセル５１４がカバーされている任意のサンプルを有する場合、その細かいピクセル５１４に対応する粗いピクセル５２０のサンプルがカバーされていると考えられるという点で保守的である。細かいピクセル５１４毎に粗いピクセル６２０内に１つのサンプルのみが存在する必要がないことに留意されたい。粗いピクセル５２０内の複数のサンプルは、単一の細かいピクセル５１４に対応してもよい。この場合、粗いピクセル５２０内の各サンプルは、細かいピクセル５１４の対応するサンプルを幾何学的に表すことになる。
【００４８】
左下には、ピクセルシェーダによる処理後の粗いピクセル５２０が、シェーディングされた粗いピクセル５２０として示されている。このシェーディングされた粗いピクセル５２４は、（ＰＳ−Ｃ）と略された「ピクセルシェーダが適用された色」とラベル付けされた色で着色されている。このシェーディングされた粗いピクセル５２４は、図４のステップ４１０の出力に対応する。この操作の後、シェーディングレートに基づいて、シェーディングされた粗いピクセル５２４がアップサンプリングされる。具体的には、シェーディングされた粗いピクセル５２４は、シェーディングレートの逆数（例えば、図６の４）に等しい複数の細かいピクセルにクローニングされる。細かいピクセルの各々には、シェーディングされた粗いピクセル５２４の色が割り当てられる。このような細かいピクセルの各々におけるサンプルの数は、粗いクワッドを生成する前の細かいピクセル５１４のサンプルの数に等しい。クローニングされた細かいピクセルの各々の全てのサンプルは、バイナリ形式で設定される。シェーディングされた粗いピクセル５２４内の対応するサンプルがカバーされている場合、対応する細かいピクセルの全てのサンプルがカバーされ、シェーディングされた粗いピクセル５２４内の対応するサンプルがカバーされていない場合、対応する細かいピクセル内の全てのサンプルがカバーされない。最後に、これらの細かいサンプルは、細かいラスタライズデータ６０６にマージされる。マージは、ファイナライズされていないカバレッジ５２５を有するシェーディングされた細かいピクセルのサンプルと、細かいラスタライズデータ６０６の対応するサンプルと、に「ＡＮＤ」を適用することから構成される。シェーディングされた細かいピクセルのサンプルは、ファイナライズされていないカバレッジ５２５を有するシェーディングされた細かいピクセル内の対応するサンプルと、細かいラスタライズデータ６０６内の対応するサンプルと、の両方がカバーされている場合に、カバレッジであるとみなされる。一方又は両方がカバーされていない場合、シェーディングされた細かいピクセル５２６内のサンプルはカバーされていない。
【００４９】
図７は、図６の代替例を示しており、シェーディングされた粗いピクセル５２４内のいくつかのサンプルカバレッジが、ピクセルシェーダによって削除されている。ピクセルシェーダステージ３１６では、シェーディングされるクワッドのカバレッジを変更又は設定することができる。ピクセルシェーダステージ３１６が粗いクワッドのサンプルを削除する（例えば、これらのサンプルをカバーしないように設定する）場合、細かいラスタライズデータ６０６の対応するサンプルがカバーされていると考えられるが、ステップ４１２から出力されるシェーディングされた細かいピクセル５２６の対応するサンプルはカバーされない。図７の例は、図６に示すのと同じ細かいラスタライズデータ６０６を使用する。したがって、図７では、ピクセルシェーダステージ３１６が、シェーディングされた粗いピクセル５２４の対応するサンプルを削除しているので、細かいラスタライズデータ６０６が、左の２つの細かいピクセル５１４のサンプルのいくつかがカバーされていることを示しても、左の２つの細かいピクセル５１６がカバーされているとみなされない。
【００５０】
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。機能及び要素は、特定の組み合わせで上述したように説明されているが、各機能又は要素は、他の機能や要素なしに単独で使用されてもよいし、他の機能や要素を伴って若しくは伴わずに様々な組み合わせで使用されてもよい。
【００５１】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアに関連する１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、任意の他のタイプの集積回路（ＩＣ）、及び／又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令、及び、ネットリストを含む他の中間データ（このような命令はコンピュータ可読媒体に記憶され得る）の結果を使用して製造プロセスを構成することによって製造されてもよい。このような処理の結果は、本実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【００５２】
本明細書で提供される方法又はフローチャートは、汎用コンピュータ若しくはプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアにおいて実装されてもよい。非一時的なコンピュータ可読記憶媒体の例には、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、光学媒体（ＣＤ−ＲＯＭディスク等）、デジタル多用途ディスク（ＤＶＤ）等が含まれる。
【図１】
2020532789.tif 000003
【図２】
2020532789.tif 000004
【図３】
2020532789.tif 000005
【図４】
2020532789.tif 000006
【図５】
2020532789.tif 000007
【図６】
2020532789.tif 000008
【図７】
2020532789.tif 000009
【国際調査報告】
2020532789.tif 000010
2020532789.tif 000011