(57)【要約】  グラフィックス処理のための方法および製造物であって、その中で、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータが受け取られる。第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列は、複数のテクセルを提供するために、別個の対応するテクセルとしてマッピングされる。少なくとも１つの動作が、複数のテクセルのうちの少なくとも１つに対して実行される。
2018503919.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックス処理のための方法であって、
第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータを受け取ることと、
複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングすることと、
前記複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行することと
を備える方法。
【請求項２】
前記少なくとも１つの動作は、ベイヤービニング動作、バイリニアフィルタ動作、読取り動作、または収集動作のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
前記複数のテクセルの各テクセルは、ＲＧＢＡフォーマットである、請求項１に記載の方法。
【請求項４】
前記複数のテクセルのうちの少なくとも１つに対して前記少なくとも１つの動作を実行した後、画像信号プロセッサに前記複数のテクセルを送信することをさらに備える、請求項１に記載の方法。
【請求項５】
前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列を前記マッピングすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、請求項１に記載の方法。
【請求項６】
前記生ベイヤーデータがＭＩＰＩフォーマットであるかどうかについての決定を行うことと、
前記生ベイヤーデータがＭＩＰＩフォーマットであると決定された場合、前記生ベイヤーデータをアンパックするために、グラフィックス処理ユニットのテクスチャパイプラインにおけるハードウェアを用いることと
をさらに備える、請求項１に記載の方法。
【請求項７】
前記テクスチャパイプラインにおける前記ハードウェアによって実行される前記生ベイヤーデータを前記アンパックすることは、対応するテクスチャデータタイプを有する、請求項６に記載の方法。
【請求項８】
前記テクスチャパイプラインにおける前記ハードウェアによって実行される前記生ベイヤーデータを前記アンパックすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、請求項６に記載の方法。
【請求項９】
グラフィックス処理のためのデバイスであって、
キャッシュと、
前記キャッシュから第１のラインの生ベイヤーデータ、および前記キャッシュから第２のラインの生ベイヤーデータを受け取り、
複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングし、
前記複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行する
ように構成されたテクスチャパイプラインと
を備えるデバイス。
【請求項１０】
前記テクスチャパイプラインは、前記少なくとも１つの動作が、ベイヤービニング動作、バイリニアフィルタ動作、読取り動作、または収集動作のうちの少なくとも１つを含むように構成される、請求項９に記載のデバイス。
【請求項１１】
前記テクスチャパイプラインは、前記複数のテクセルの各テクセルが、ＲＧＢＡフォーマットであるように構成される、請求項９に記載のデバイス。
【請求項１２】
画像信号プロセッサをさらに備え、ここにおいて、前記画像信号プロセッサは、テクスチャプロセッサが前記複数のテクセルのうちの少なくとも１つに対して前記少なくとも１つの動作を実行した後に、前記複数のテクセルを受け取るように構成される、請求項９に記載のデバイス。
【請求項１３】
前記テクスチャパイプラインは、アプリケーションプログラムインタフェースを介してアクセス可能である手法で、前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングするように構成される、請求項９に記載のデバイス。
【請求項１４】
前記テクスチャパイプラインは、
前記生ベイヤーデータがＭＩＰＩフォーマットであるかどうかについての決定を行い、
前記生ベイヤーデータがＭＩＰＩフォーマットであると決定された場合、前記生ベイヤーデータをアンパックする
ようにさらに構成される、請求項９に記載のデバイス。
【請求項１５】
前記テクスチャパイプラインは、前記アンパックすることが、対応するテクスチャデータタイプを有するように、前記生ベイヤーデータをアンパックすることが達成されるように構成される、請求項１４に記載のデバイス。
【請求項１６】
前記テクスチャパイプラインは、前記生ベイヤーデータをアンパックすることがアプリケーションプログラムインタフェースを介してアクセス可能であるように構成される、請求項１４に記載のデバイス。
【請求項１７】
前記キャッシュは、レベル２キャッシュであり、前記テクスチャパイプラインは、
ローカルキャッシュと、
前記レベル２キャッシュから前記第１のラインの生ベイヤーデータ、および前記レベル２キャッシュから前記第２のラインの生ベイヤーデータを受け取り、前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの前記複数の重複してない２×２配列の各２×２配列をマッピングし、前記ローカルキャッシュに前記複数のテクセルを送信するように構成されたアンパッキング回路と
を含む、請求項９に記載のデバイス。
【請求項１８】
前記アンパッキング回路は、
前記生ベイヤーデータがＭＩＰＩフォーマットであるかどうかについての決定を行い、
前記生ベイヤーデータがＭＩＰＩフォーマットであると決定された場合、前記生ベイヤーデータをアンパックする
ようにさらに構成される、請求項１７に記載のデバイス。
【請求項１９】
前記アンパッキング回路は、別個のキャッシュを含む、請求項１７に記載のデバイス。
【請求項２０】
グラフィックス処理のためのデバイスであって、
第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータを受け取るための手段と、
複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングするための手段と、
前記複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行するための手段と
を備えるデバイス。
【請求項２１】
前記少なくとも１つの動作は、ベイヤービニング動作、バイリニアフィルタ動作、読取り動作、または収集動作のうちの少なくとも１つを含む、請求項２０に記載のデバイス。
【請求項２２】
前記複数のテクセルの各テクセルは、ＲＧＢＡフォーマットである、請求項２０に記載のデバイス。
【請求項２３】
前記複数のテクセルのうちの少なくとも１つに対して前記少なくとも１つの動作を実行した後、画像信号プロセッサに前記複数のテクセルを送信するための手段をさらに備える、請求項２０に記載のデバイス。
【請求項２４】
前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列を前記マッピングすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、請求項２０に記載のデバイス。
【請求項２５】
前記生ベイヤーデータがＭＩＰＩフォーマットであるかどうかについての決定を行うための手段と、
前記生ベイヤーデータがＭＩＰＩフォーマットであると決定された場合、前記生ベイヤーデータをアンパックするために、グラフィックス処理ユニットのテクスチャパイプラインにおけるハードウェアを用いるための手段と
をさらに備える、請求項２０に記載のデバイス。
【請求項２６】
前記テクスチャパイプラインにおける前記ハードウェアによって実行される前記生ベイヤーデータを前記アンパックすることは、対応するテクスチャデータタイプを有する、請求項２５に記載のデバイス。
【請求項２７】
前記テクスチャパイプラインにおける前記ハードウェアによって実行される前記生ベイヤーデータを前記アンパックすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、請求項２５に記載のデバイス。
【発明の詳細な説明】
【関連出願の説明】
【０００１】
[0001]本願は、その内容全体が参照により本明細書に組み込まれる、２０１５年１月２８日に出願された米国仮特許出願第６２／１０８，９８６号の利益を主張する。
【技術分野】
【０００２】
[0002]本開示は、グラフィックス処理に関し、具体的には、グラフィックス処理ユニット（ＧＰＵ）による生画像データ（raw image data）の処理に関する。
【背景技術】
【０００３】
[0003]デジタルカメラによって使用されるＣＭＯＳ画像センサの出力は、典型的に、ベイヤー生データ（Bayer raw data）である。ベイヤー生データは、典型的に、５０％緑、２５％赤、および２５％青であるフィルタパターンを含むベイヤーフィルタからキャプチャされた、さらなる処理なしの、生画像データである。ベイヤーデータは、データがデモザイキング（demosaicing）のようなさらなる処理以前にセンサによって提供されるフォーマットであるという点で、「生（raw）」である。画像センサは、典型的に、任意の所与のロケーション（location）における１色のみを感知する−上記で説明されたように、ベイヤーフィルタは、典型的に、５０％緑センサ、２５％赤センサ、および２５％青センサであるフィルタパターンを使用する。画像が表示される前に、それは典型的に、それによってフルカラー画像が各ロケーションにおいて１色のみをキャプチャするセンサからの画像から再構成される、デモザイキングのような様々な処理を行う。
【０００４】
[0004]ベイヤー生画像データはまた、ＭＩＰＩフォーマットであり得、これは、各行の終わりまでパディングのない、６−１４ビットの深度における生センサデータの標準化された密なパッキングである（ここで、「各行（each row）」は、画像データの各行を意味し、ここで、画像データは、行および列において存在する２次元配列である）。ＭＩＰＩフォーマットのデータは、よりコンパクトであるが、データ構造アラインメントの目的のために通常使用されるパディングを欠く。「データ構造アラインメント」は、メモリにおける特定のデータ構造がどこで（when）開始および終了するかを決定することが可能になるように、データがメモリにおいてアクセスおよび配置（arranged）される方法を指す。標準データフォーマットは、データ構造アラインメントを確実にするためにパディングを使用する。ＭＩＰＩフォーマットにおけるデータは、各行の終わりまでパディングを有しないので、ＭＩＰＩフォーマットデータのストライド長は、予め決定されなければならない（例えば、アラインされた１２８または２５６ビット）。
【発明の概要】
【０００５】
[0005]いくつかの例では、グラフィックス処理のためのデバイスが、キャッシュと、キャッシュから第１のラインの生ベイヤーデータ、およびキャッシュから第２のラインの生ベイヤーデータを受け取り、複数のテクセル（texels）を提供するために、別個の対応するテクセルとして、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングし、複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作（operation）を実行するように構成（arranged）されたテクスチャパイプラインとを備える。
【０００６】
[0006]いくつかの例では、グラフィックス処理のための方法が、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータを受け取ることと、複数のテクセルを提供するために、別個の対応するテクセルとして、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングすることと、複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行することとを備える。
【０００７】
[0007]いくつかの例では、グラフィックス処理のためのデバイスが、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータを受け取るための手段と、複数のテクセルを提供するために、別個の対応するテクセルとして、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングするための手段と、複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行するための手段とを備える。
【０００８】
[0008]本開示の１つまたは複数の態様の詳細は、添付の図面および以下の説明において示される。本開示で説明される技法の他の特徴、目的、および利点は、説明および図面から、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】[0009]図１は、カメラセンサを示す概念図である。
【図２】[0010]図２は、生センサデータの処理を示す概念図である。
【図３】[0011]図３は、ＭＩＰＩ１０、ＭＩＰＩ１２、およびＭＩＰＩ１４フォーマットにおけるビットパッキングの例を示す概念図である。
【図４】[0012]図４は、ベイヤーデータのための実例的なレイアウトを示す概念図である。
【図５】[0013]図５は、本開示の技法による実例的なデバイスを例示するブロック図である。
【図６】[0014]図６は、本開示の技法による実例的なプロセスを例示するフロー図である。
【図７】[0015]図７は、本開示の技法をインプリメントし得る実例的なシステムを例示するブロック図である。
【図８】[0016]図８は、本開示の技法をインプリメントし得る図７のシステムの例を例示するブロック図である。
【図９】[0017]図９は、本開示の技法による図６のプロセスの動作（acts）のうちの１つの例に従って、各ベイヤーパターンをテクセルにマッピングする例を例示する概念図である。
【図１０】[0018]図１０は、本開示の技法による図９のマッピングされたテクセルをアドレス指定（addressing）するためのプロセスを例示する概念図である。
【図１１】[0019]図１１は、本開示の技法による図６のプロセスの動作（acts）のうちの１つの例に従って、テクセルに対して収集動作を実行する例を例示する概念図である。
【図１２】[0020]図１２は、本開示の技法による図８のシステムの一部の例を例示するブロック図である。
【図１３】[0021]図１３は、本開示の技法による、図７のデバイスの例を示す機能ブロック図である。
【発明の詳細な説明】
【００１０】
[0022]いくつかの例では、グラフィックス処理のためのデバイスが、キャッシュおよびテクスチャパイプラインを備える。（例えば、ＧＰＵの）テクスチャパイプラインは、キャッシュから第１のラインの生ベイヤーデータ、およびキャッシュから第２のラインの生ベイヤーデータを受け取るように構成される。テクスチャパイプラインは、複数のテクセルを提供するために、別個の対応するテクセルとして、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングするようにさらに構成される。「２×２（two by two）」は、２×２配列が１つのラインにおける２つの隣接する画素（pixels）（例えば、第１のラインにおける２つの隣接する画素）および隣接するラインにおける２つの隣接する画素（例えば、第２のラインにおける２つの隣接する画素）を含むように、２次元の画像データを指す。２×２パターンは、例えば、このような２×２配列のテクセルを例示する以下の図９−図１１に関して、以下でより詳細に説明される。
【００１１】
[0023]別個の対応するテクセルとして、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングすることは、マッピング後に、各個別の画素が、データに対して実行される動作の基本単位として扱われるのとは対照的に、２×２マトリクスにおける４つの画素の各まとまり（bundle）が、データに対して実行される動作の基本単位として扱われるように、生ベイヤーデータの各２×２配列における４つの画素がひとまとめにされる（bundled）ことを意味する。複数のテクセルを提供するために、別個の対応するテクセルとして、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングすることは、定義上、テクセルに２×２配列をマッピングすることのより短い参照手段として「ベイヤースウィズリング（Bayer swizzling）」と呼ばれる。（ベイヤースウィズルの具体例が、以下の図９に例示され、図９に関してより詳細に説明される。）テクスチャパイプラインは、複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行するようにさらに構成される。
【００１２】
[0024]テクスチャパイプラインは、より詳細に説明されるように、例えば、位相検出オートフォーカス（ＰＤＡＦ）センサ、赤青緑クリア（ＲＧＢＣ）センサ、インターリーブドハイダイナミックレンジ（ｉＨＤＲ）センサ、コンピュテーショナルフォトグラフィ（computational photography）、およびライトフィールドコンピュテーション（light field computation）などの、ある特定のカスタムセンサアプリケーションのためのある特定の前処理タスクを遂行するために、これら動作を実行する。ベイヤースウィズリングは、このようなカスタムセンサアプリケーションのために実行されるある特定の動作が、個々の画素のレベルではなく、各々が画素の２×２配列に対応するテクセルのレベルで実行されるので、これら動作が、より一層効率的になることを可能にする。ベイヤースウィズリング後は、アクセスされる各テクセルが４つのベイヤー画素を含むので、読取り動作は、さもなければ４回の読み取りを必要とするであろうものを、１回の読み取りで遂行することができる。同様の理由で、ベイヤースウィズリング後のこれらテクセルに対する収集動作は、さもなければ４回のロードを必要とするであろうものを、１回のロードで遂行することができる。
【００１３】
[0025]さらに、ベイヤースウィズリング後、これらテクセルは、以下でより詳細に説明される理由から、テクスチャパイプラインにおけるバイリニアフィルタリング（bilinear filtering）の効率的なパフォーマンスによく適している（バイリニアフィルタリングは、ここでの後続するセクションにおいて説明される）。このようにして、ベイヤースウィズリング後、ベイヤービニング（Bayer Binning）を含むいくつかのアプリケーションは、テクスチャパイプラインのバイリニアフィルタリング能力を使用して、テクスチャパイプラインにおいて非常に効率的に実行されることができる。追加として、ベイヤースウィズリングは、グラフィックス処理ユニット（ＧＰＵ）におけるシェーダプロセッサ上の負荷が低減されるように、ベイヤーデータをひとまとめにし、ここで、テクスチャパイプラインおよびシェーダプロセッサは、いくつかの例では、両方ともＧＰＵに含まれる。シェーダプロセッサは、以下でより詳細に説明される。テクスチャパイプラインがテクセルに対して実行する動作の具体例およびこのような実例的な動作のさらなる詳細が、ここでの後のセクションにおいて詳細に説明される。
【００１４】
[0026]テクスチャパイプラインはまた、生ＭＩＰＩデータをアンパックする（unpack）ために使用されることができる。（例えば、位相検出オートフォーカス（ＰＤＡＦ）センサ、赤青緑クリア（ＲＧＢＣ）センサ、インターリーブドハイダイナミックレンジ（ｉＨＤＲ）センサ、コンピュテーショナルフォトグラフィ、およびライトフィールドコンピュテーションを含む）ある特定のカスタムセンサアプリケーションにとっては、これらカスタムアプリケーションによって必要とされる動作を実行する前にアンパックされたＭＩＰＩデータへのアクセスを有することが有利であり得る。テクスチャパイプラインにおいてＭＩＰＩデータをアンパックすることは、ＭＩＰＩデータをアンパックする従来の方法に対して、著しい速度の優位性を有することができる。
【００１５】
[0027]上記で説明されたように、ＭＩＰＩデータは、密にパックされている−各行の終りまでＭＩＰＩデータにおけるパディングがない。ＭＩＰＩデータが標準のパディング（normal padding）を欠いているので、データ構造アラインメントは困難であり、ＭＩＰＩデータのストライド長は、予め決定されなければならない。ＭＩＰＩデータを「アンパックする」ことは、データが、予め決定されたストライド長を必要とせずに、プロセッサによるアクセスと適正にアラインメントされることができるように、十分なデータ構造パディングを有するフォーマットにＭＩＰＩデータを変換することを指す。ほとんどの標準的な（most standard）データフォーマットは、「アンパック」されている。アンパッキングを必要とするのは、（標準的な量のデータ構造パディングを欠く）ＭＩＰＩのような密にパックされたデータフォーマットのみである。本開示によるテクスチャパイプラインの例によって実行されるＭＩＰＩアンパッキングについてのさらなる詳細は、ここでの後のセクションにおいて説明される。
【００１６】
[0028]本説明のこの段階では、本開示のある特定の態様がより良く理解され得るように、ベイヤーデータおよびＭＩＰＩデータなどの、様々なタイプの生データフォーマットをさらに説明することが有用であり得る。
【００１７】
[0029]このセクションにおける説明は、ここで説明される画像データフォーマット（例えば、ベイヤーおよびＭＩＰＩ）のより詳細な説明を与える。デジタルカメラは、レンズと、光を検出し、カラー画素値（例えば、ＲＧＢ値）を生成するように構成されたカメラセンサとを含み得る。図１は、カメラセンサの結果として得られたカラー画素値の例を示し、ここで、これらカラー画素値は、センサによる可視光の検出によって作成される。センサによって生成される、結果として得られたカラー画素値は、しばしば生センサデータと呼ばれる。以下でより詳細に説明されるように、生センサデータは、典型的に、ベイヤーフィルタモザイク画素フォーマットのような、密にパックされたフォーマットであり、または、ＭＩＰＩデータフォーマット（例えば、ＭＩＰＩ１０、ＭＩＰＩ１２、およびＭＩＰＩ１４）でパックされた、ベイヤーフィルタモザイク画素フォーマットを含む、生センサデータである。
【００１８】
[0030]カメラは、画像信号プロセッサをさらに含み得る。いくつかの例では、画像信号プロセッサは、レンズおよびカメラセンサと同じパッケージ中に共に含まれる。他の例では、画像信号プロセッサは、レンズおよびカメラセンサとは別個にパッケージ化され得る。いくつかの例では、画像信号プロセッサは、グラフィックス処理ユニット（ＧＰＵ）を含むシステムオンアチップ（ＳｏＣ）上に含まれ得る。画像信号プロセッサは、生センサデータを受け取り、生センサデータを圧縮されたデータフォーマット（例えば、ＪＰＥＧファイル）に変換し、ピクチャファイルにおいて、結果として得られた圧縮されたデータを記憶するように構成され得る。他の例では、画像信号プロセッサは、生センサデータを保持し、別個のファイルにおいて生センサデータを保存するように構成され得る。図２は、画像プロセッサを備えた実例的なカメラシステムを示す。
【００１９】
[0031]しばしば、密にパックされたフォーマットにおける生センサデータは、（例えば、画像信号プロセッサによって）追加の処理が実行される前にアンパックされる。生ベイヤーフィルタモザイクセンサデータは、典型的に、１画素当たり１０または１２ビットであり、密にパックされている（すなわち、各行の終りまで、いかなるパディングもなしにパックされる）。
【００２０】
[0032]ここで、ＭＩＰＩデータフォーマットが説明される。ＭＩＰＩアライアンスは、モバイル業界向けのインタフェース仕様を開発する団体である。ＭＩＰＩアライアンスによって開発された実例的な仕様は、カメラシリアルインタフェース（ＣＳＩ）仕様およびディスプレイシリアルインタフェース（ＤＳＩ）仕様を含む。ＣＳＩ仕様は、カメラセンサと画像信号プロセッサの間のインタフェースのためのプロトコルを指定する。ＣＳＩの一般的に使用されるバージョンが、ＣＳＩ−２である。ＤＳＩ仕様は、ディスプレイプロセッサとディスプレイパネルの間のインタフェースのためのプロトコルを指定する。
【００２１】
[0033]ＭＩＰＩフォーマットは、６−１４ビットの深度の生センサデータの密なパッキングを規格化する（standardize）。生センサデータのためのＭＩＰＩフォーマットは、１０ビット、１２ビット、および１４ビットのフォーマットを含む。図３は、ＭＩＰＩ１０、ＭＩＰＩ１２、およびＭＩＰＩ１４フォーマットにおけるビットパッキングの例を示す。ＭＩＰＩフォーマットの各々について、各行の画素データは、行の終わりにおけるパディングとともに、密にパックされている。
【００２２】
[0034]１０ビットのフォーマットを使用する１つの例が、ＲＡＷ１０フォーマット、またはＭＩＰＩ１０と呼ばれる。図３に示されるように、ＭＩＰＩ１０フォーマットでは、４画素（４０ビット）ごとに、５バイトのチャンク（chunks）にパックされる。各画素の８つの最上位ビット（ＭＳＢ）が最初にパックされ、その後、２つの最下位ビット（ＬＳＢ）が、最終バイトに連結される。パケットデータサイズは、５バイトにおける４画素である（4 pixels in 5 bytes)。
【００２３】
[0035]１２ビットのフォーマットを使用する１つの例が、ＲＡＷ１２フォーマット、またはＭＩＰＩ１２と呼ばれる。図３に示されるように、ＭＩＰＩ１２フォーマットでは、２画素（２４ビット）ごとに、３バイトのチャンクにパックされる。各画素の８つの最上位ビット（ＭＳＢ）が最初にパックされ、その後、４つの最下位ビット（ＬＳＢ）が、最終バイトに連結される。パケットデータサイズは、３バイトにおける２画素である。
【００２４】
[0036]１４ビットのフォーマットを使用する１つの例が、ＲＡＷ１４フォーマット、またはＭＩＰＩ１４と呼ばれる。図３に示されるように、ＭＩＰＩ１４フォーマットでは、４画素（５６ビット）ごとに、７バイトのチャンクにパックされる。各画素の８つの最上位ビット（ＭＳＢ）が最初にパックされ、その後、６つの最下位ビット（ＬＳＢ）が、最終バイトに連結される。パケットデータサイズは、７バイトにおける４画素である。
【００２５】
[0037]図４は、ＭＩＰＩフォーマットのための実例的なレイアウトを示す。ＭＩＰＩ１０フォーマットでは、アドレス指定の計算（addressing calculation）は、次のように実行される。各行またはスキャンライン（例えば、「ＢＧＢＧＢＧ．．．」または「ＧＲＧＲＧＲ．．．」）は、終わりにおいてパディングされる。したがって、ストライドは、予め決定されなければならない（例えば、アラインされた１２８または２５６ビット）。各行内では、画素ｉについて：（ｉ／４）＊５＝５バイトセグメントのバイトアドレス。
【００２６】
[0038]この計算は、加算器および組合せ論理回路を使用してインプリメントされ得る。しかしながら、計算を実行することの複雑さは、５バイトの境界をまたぐ（cross）２画素が必要とされる場合に増大される。その場合には、２つの５バイトのチャンクがフェッチされなければならない。
【００２７】
[0039]関連のある画像データフォーマットが説明されたので、本開示によるデバイスおよび方法の例の大まかな説明（high-level description）が、ここで説明される。このセクションの意図は、実例的なデバイスおよび方法の大まかな説明を与えることであるので、実例的なデバイスおよび方法が含まれ得る特定の環境の例および図５のデバイス５０１内の特定の実例的な要素のさらなる詳細、ならびに実例的なデバイスおよび方法によって達成される利益は、このセクションでは説明されず、その代わりに、ここでの開示の他のセクションにおいて説明される。
【００２８】
[0040]図５は、グラフィックス処理のためのデバイス５０１の例を例示するブロック図である。デバイス５０１は、キャッシュ５３０およびテクスチャパイプライン５２３を含む。テクスチャパイプライン５２３は、キャッシュ５３０から第１のラインの生ベイヤーデータ、およびキャッシュ５３０から第２のラインの生ベイヤーデータを受け取るように構成される。テクスチャパイプライン５２３は、複数のテクセルを提供するために、別個の対応するテクセルとして、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングするようにさらに構成される。テクスチャパイプライン５２３は、複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行するようにさらに構成される。
【００２９】
[0041]いくつかの例では、テクスチャパイプライン５２３は、ＧＰＵの一部である。いくつかの例では、第１および第２のラインのデータは、画像センサによって生成された、隣接するラインの生画像データであり、「２×２」は、２×２配列が１つのラインにおける２つの隣接する画素（例えば、第１のラインにおける２つの隣接する画素）および隣接するラインにおける２つの隣接する画素（例えば、第２のラインにおける２つの隣接する画素）を含むように、２次元の画像データを指す。
【００３０】
[0042]図６は、グラフィックス処理のためのプロセス６３０の例を例示するフロー図である。開始ブロック後、テクスチャパイプライン（例えば、図５のテクスチャパイプライン５２３）は、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータを受け取る（６３１）。いくつかの例では、第１および第２のラインのデータは、画像センサによって生成された、隣接するラインの生画像データである。次に、テクスチャパイプラインは、複数のテクセルを提供するために、別個の対応するテクセルとして、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングする（６３２）。複数のテクセルを提供するために、別個の対応するテクセルとして、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングするために、テクスチャパイプラインによって実行されるマッピングは、「ベイヤースウィズリング」としてここで定義される。ベイヤースウィズリング後、テクスチャパイプラインは、複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行する（６３３）。その後、プロセスは、戻りブロックに進み、ここで、他の処理が再開される。
【００３１】
[0043]図７は、本開示の１つまたは複数の態様をインプリメントするように構成され得る実例的なシステム／デバイスを例示するブロック図である。図７に示されるように、システム／デバイス２は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、コンピュータワークステーション、ビデオゲームプラットフォームまたはコンソール、例えば、セルラまたは衛星電話のようなモバイル電話、ランドライン電話、インターネット電話、ポータブルビデオゲームデバイスまたは携帯情報端末（ＰＤＡ）のようなハンドヘルドデバイス、パーソナルミュージックプレーヤ、ビデオプレーヤ、ディスプレイデバイス、テレビジョン、テレビジョンセットトップボックス、サーバ、中間ネットワークデバイス、メインフレームコンピュータ、任意のモバイルデバイス、あるいはグラフィカルデータを処理するおよび／または表示するその他任意のタイプのデバイスであり得る。図７の例では、デバイス２は、中央処理ユニット（ＣＰＵ）６、システムメモリ１０、およびＧＰＵ １２を含み得る。デバイス２はまた、ディスプレイプロセッサ１４、トランシーバモジュール３、ユーザインタフェース４、およびディスプレイ８を含み得る。トランシーバモジュール３およびディスプレイプロセッサ１４は、両方がＣＰＵ ６および／またはＧＰＵ １２と同じ集積回路（ＩＣ）の一部であり得るか、両方がＣＰＵ ６および／またはＧＰＵ １２を含むＩＣまたは複数のＩＣの外部にあり得るか、またはＣＰＵ ６および／またはＧＰＵ １２を含むＩＣの外部にあるＩＣ内に形成され得る。
【００３２】
[0044]デバイス２は、明確さを目的として図７に示されていない追加のモジュールまたはユニットを含み得る。例えば、デバイス２は、デバイス２がモバイルワイヤレス電話である例において電話通信を実施するために、そのいずれもが図７に示されていないスピーカおよびマイクロホン、またはデバイス２がメディアプレーヤである場合にはスピーカを含み得る。デバイス２はまた、ビデオカメラを含み得る。デバイス２はまた、画像信号プロセッサ（ＩＳＰ）を含み得る。さらに、デバイス２において示される様々なモジュールおよびユニットは、デバイス２のすべての例において必ずしも必要ではない。例えば、ユーザインタフェース４およびディスプレイ８は、デバイス２が外部ユーザインタフェースまたはディスプレイとインタフェースするように装備されたデスクトップコンピュータまたは他のデバイスである例では、デバイス２の外部にあり得る。
【００３３】
[0045]ユーザインタフェース４の例は、それに限定されるものではないが、トラックボール、マウス、キーボード、および他のタイプの入力デバイスを含む。ユーザインタフェース４はまた、タッチスクリーンであり得、ディスプレイ８の一部として組み込まれ得る。トランシーバモジュール３は、デバイス２と別のデバイスまたはネットワークとの間のワイヤレスまたはワイヤード通信を可能にするための回路を含み得る。トランシーバモジュール３は、変調器、復調器、増幅器、およびワイヤードまたはワイヤレス通信のための他のそのような回路を含み得る。
【００３４】
[0046]ＣＰＵ ６は、実行のためにコンピュータプログラムの命令を処理するように構成された中央処理ユニット（ＣＰＵ）のような、マイクロプロセッサであり得る。ＣＰＵ ６は、デバイス２の動作を制御する汎用または専用プロセッサを備え得る。ユーザは、ＣＰＵ ６に、１つまたは複数のソフトウェアアプリケーションを実行することを行わせるために、デバイス２に入力を提供し得る。ＣＰＵ ６上で実行されるソフトウェアアプリケーションは、例えば、オペレーティングシステム、ワードプロセッサアプリケーション、電子メールアプリケーション、スプレッドシートアプリケーション、メディアプレーヤアプリケーション、ビデオゲームアプリケーション、グラフィカルユーザインタフェースアプリケーション、または別のプログラムを含み得る。追加として、ＣＰＵ ６は、ＧＰＵ １２の動作を制御するためのＧＰＵドライバ２２を実行し得る。ユーザは、キーボード、マウス、マイクロホン、タッチパッド、またはユーザインタフェース４を介してデバイス２に結合された別の入力デバイスのような、１つまたは複数の入力デバイス（図示せず）を介してデバイス２への入力を提供し得る。
【００３５】
[0047]ＣＰＵ ６上で実行されるソフトウェアアプリケーションは、ディスプレイ８へのグラフィックスデータのレンダリングを生じさせるようにＣＰＵ ６に命令する１つまたは複数のグラフィックスレンダリング命令を含み得る。いくつかの例では、ソフトウェア命令は、例えば、ＯｐｅｎＧＬ（登録商標）（Open Graphics Library）ＡＰＩ、ＯｐｅｎＧＬ ＥＳ（Open Graphics Library Embedded Systems）ＡＰＩ、Ｄｉｒｅｃｔ３Ｄ ＡＰＩ、Ｘ３Ｄ ＡＰＩ、ＲｅｎｄｅｒＭａｎ ＡＰＩ、ＷｅｂＧＬ ＡＰＩ、あるいはその他任意の公的または独自の標準グラフィックスＡＰＩなどの、グラフィックスアプリケーションプログラムインタフェース（ＡＰＩ）に準拠し得る。グラフィックスレンダリング命令を処理するために、ＣＰＵ ６は、ＧＰＵ １２に、グラフィックスデータのレンダリングの一部または全てを実行することを行わせるために、（例えば、ＧＰＵドライバ２２を通じて）ＧＰＵ １２に１つまたは複数のグラフィックスレンダリングコマンドを発行し得る。いくつかの例では、レンダリングされるグラフィックスデータは、例えば、点、線、三角形、四角形、トライアングルストリップ（triangle strips）などの、グラフィックスプリミティブのリストを含み得る。
【００３６】
[0048]他の例では、ＣＰＵ ６上で実行されるソフトウェア命令は、ＧＰＵ １２に、ＧＰＵハードウェアの高度な並列性によって実行されるように適用可能な（applicable to be executed）、より一般的な計算を実行するための汎用シェーダを実行させ得る。このような汎用アプリケーションは、いわゆる汎用グラフィックス処理ユニット（ＧＰＧＰＵ）であり得、ＯｐｅｎＣＬのような、汎用ＡＰＩに準拠し得る。
【００３７】
[0049]ＧＰＵ １２は、ディスプレイ８に１つまたは複数のグラフィックスプリミティブをレンダリングするためにグラフィックス動作を実行するように構成され得る。したがって、ＣＰＵ ６上で実行中のソフトウェアアプリケーションのうちの１つがグラフィックス処理を必要とするとき、ＣＰＵ ６は、ディスプレイ８へのレンダリングのために、ＧＰＵ １２にグラフィックスコマンドおよびグラフィックスデータを提供し得る。グラフィックスデータは、例えば、描画コマンド、状態情報、プリミティブ情報、テクスチャ情報などを含み得る。ＧＰＵ １２は、いくつかの事例では、ＣＰＵ ６に比べて、複雑なグラフィック関連動作のより効率的な処理を提供する高度な並列構造を用いて構築され得る。例えば、ＧＰＵ １２は、並列的に（in a parallel manner）複数の頂点または画素に対して動作するように構成された、複数のシェーダユニットのような複数の処理要素を含み得る。ＧＰＵ １２の高度な並列性は、いくつかの事例では、ＧＰＵ １２が、グラフィックス画像（例えば、ＧＵＩおよび２次元（２Ｄ）および／または３次元（３Ｄ）グラフィックスシーン）を、ＣＰＵ ６を使用してディスプレイ８にこれらのシーンを直接描画するよりも迅速に、ディスプレイ８上に描画することを可能にし得る。
【００３８】
[0050]ＧＰＵ １２は、いくつかの事例では、デバイス２のマザーボードに組み込まれ得る。他の事例では、ＧＰＵ １２は、デバイス２のマザーボードにおけるポートでインストールされるグラフィックスカード上に存在し得るか、さもなければデバイス２と相互動作するように構成された周辺デバイス内に組み込まれ得る。ＧＰＵ １２は、１つまたは複数のマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または他の同等の集積回路またはディスクリート論理回路などの、１つまたは複数のプロセッサを含み得る。ＧＰＵ １２はまた、ＧＰＵ １２がマルチコアプロセッサと呼ばれ得るように、１つまたは複数のプロセッサコアを含み得る。
【００３９】
[0051]ＧＰＵ １２は、グラフィックスメモリ４０に直接結合され得る。したがって、ＧＰＵ １２は、バスを使用することなく、グラフィックスメモリ４０からデータを読み取り、また、それにデータを書き込み得る。換言すると、ＧＰＵ １２は、オフチップメモリの代わりに、ローカル記憶装置を使用してローカルにデータを処理し得る。このようなグラフィックスメモリ４０は、オンチップメモリと呼ばれ得る。これは、ＧＰＵ １２がバスを介してデータを読み取るおよび書き込む必要性、これは重いバストラフィックを経験し得る、を除去することによって、ＧＰＵ １２がより効率的な手法で動作することを可能にする。しかしながら、いくつかの事例では、ＧＰＵ １２は、別個のメモリを含まず、代わりに、バスを介してシステムメモリ１０を利用し得る。グラフィックスメモリ４０は、例えば、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、消去可能なプログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ（登録商標））、フラッシュメモリ、磁気データ媒体または光記憶媒体などの、１つまたは複数の揮発性または不揮発性メモリまたは記憶デバイスを含み得る。グラフィックスメモリ４０は、キャッシュ３０を含むおよび／またはキャッシュ３０に結合され得る。キャッシュ３０は、図５のキャッシュ５３０の例として用いられ得る。いくつかの例では、キャッシュ３０は、ＧＰＵ １２によって実行されるメモリフェッチング動作のためのレベル２キャッシュである（すなわち、ＧＰＵ １２におけるキャッシュミスは、キャッシュ３０へのアクセスをもたらし得る）。他の例では、キャッシュ３０は、レベル３キャッシュまたは同様のものであり得る。
【００４０】
[0052]いくつかの例では、ＧＰＵ １２は、システムメモリ１０に完全に形成された画像を記憶し得る。ディスプレイプロセッサ１４は、システムメモリ１０から画像を取り出し、画像を表示するためにディスプレイ８の画素を点灯させる値を出力し得る。ディスプレイ８は、ＧＰＵ １２によって生成される画像コンテンツを表示する、デバイス２のディスプレイであり得る。ディスプレイ８は、液晶ディスプレイ（ＬＣＤ）、有機発光ダイオードディスプレイ（ＯＬＥＤ）、陰極線管（ＣＲＴ）ディスプレイ、プラズマディスプレイ、または別のタイプのディスプレイデバイスであり得る。
【００４１】
[0053]本開示の技法によると、ＧＰＵ １２は、生ベイヤーデータを受け取り、複数のテクセルを提供するために、別個の対応するテクセルとして、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングするように構成され得る。追加として、本開示の技法によると、ＧＰＵ １２は、カメラセンサデータがＭＩＰＩのような密にパックされたフォーマットであるとき、カメラセンサデータをアンパックするようにさらに構成され得る。
【００４２】
[0054]例えば、ＧＰＵ １２は、テクスチャパイプライン５２３を含み得、したがって、本開示で説明される実例的な技法を実行するように構成され得る。ＧＰＵ １２は、グラフィックス処理のためのメカニズムを提供し、これは、テクセル処理を含む。したがって、ＧＰＵ １２は、複数の画素の生ベイヤーデータが単一の基本単位（例えば、ＧＰＵ １２のためのテクセル）として処理されることができるように、本開示で説明される技法を実行するのによく適し得る。このようにして、テクセルを基本単位として処理するＧＰＵ １２の能力は、ベイヤー画像データの４つの異なる画素を処理するために利用されることができる。
【００４３】
[0055]図８は、システム８００の例を例示するブロック図であり、これは、さらなる詳細において、図７のＣＰＵ ６、ＧＰＵ １２、およびシステムメモリ１０の実例的なインプリメンテーションを含む。図８に示されるように、ＣＰＵ ６は、少なくとも１つのソフトウェアアプリケーション１８、グラフィックスＡＰＩ ２０、およびＧＰＵドライバ２２を含み得、これらの各々は、ＣＰＵ ６上で実行される１つまたは複数のソフトウェアアプリケーションまたはサービスであり得る。
【００４４】
[0056]ＣＰＵ ６およびＧＰＵ １２に利用可能なメモリは、システムメモリ１０およびフレームバッファ１６を含み得る。フレームバッファ１６は、システムメモリ１０の一部であり得るか、またはシステムメモリ１０とは別個であり得る。フレームバッファ１６は、レンダリングされた画像データを記憶し得る。
【００４５】
[0057]ソフトウェアアプリケーション１８は、ＧＰＵ １２の機能性を利用する任意のアプリケーションであり得る。例えば、ソフトウェアアプリケーション１８は、ＧＵＩアプリケーション、オペレーティングシステム、ポータブルマッピングアプリケーション、工学および芸術アプリケーションのためのコンピュータ支援型設計プログラム、ビデオゲームアプリケーション、あるいは２Ｄまたは３Ｄグラフィックスを使用する別のタイプのソフトウェアアプリケーションであり得る。
【００４６】
[0058]ソフトウェアアプリケーション１８は、グラフィカルユーザインタフェース（ＧＵＩ）および／またはグラフィックスシーンをレンダリングするようにＧＰＵ １２に命令する１つまたは複数の描画命令を含み得る。例えば、描画命令は、ＧＰＵ １２によってレンダリングされる１つまたは複数のグラフィックスプリミティブのセットを定義する命令を含み得る。いくつかの例では、描画命令は、集合的に、ＧＵＩにおいて使用される複数のウィンドウサーフェス（windowing surfaces）の全てまたは一部を定義し得る。追加の例では、描画命令は、集合的に、アプリケーションによって定義されるモデル空間またはワールド空間内に１つまたは複数のグラフィックスオブジェクトを含むグラフィックスシーンの全てまたは一部を定義し得る。
【００４７】
[0059]ソフトウェアアプリケーション１８は、１つまたは複数のグラフィックスプリミティブを、表示可能なグラフィックス画像へとレンダリングするための１つまたは複数のコマンドをＧＰＵ １２へ発行するために、グラフィックスＡＰＩ ２０を介して、ＧＰＵドライバ２２を起動（invoke）し得る。いくつかの例では、これらプリミティブは、グラフィックスメモリ４０に記憶され得る。
【００４８】
[0060]ＧＰＵ １２がＣＰＵ ６からコマンドを受け取ると、グラフィックス処理パイプライン２４は、コマンドを復号し、コマンドにおいて指定される動作を実行するようにグラフィックス処理パイプライン２４を構成する。
【００４９】
[0061]フレームバッファ１６は、ＧＰＵ １２のためのデスティネーション画素（destination pixels）を記憶する。各デスティネーション画素は、一意のスクリーン画素ロケーションに関連付けられ得る。いくつかの例では、フレームバッファ１６は、デスティネーション画素ごとに色成分およびデスティネーションアルファ値を記憶し得る。
【００５０】
[0062]いくつかの例では、ＧＰＵ １２は、シェーダユニット４６、グラフィックス処理パイプライン２４、テクスチャパイプライン２３、およびグラフィックスメモリ４０を含む。いくつかの例では、テクスチャパイプライン２３は、図５のテクスチャパイプライン５２３の例として用いられ得る。１つまたは複数のシェーダプログラムは、ＧＰＵ １２におけるシェーダユニット４６上で実行され得る。シェーダユニット４６は、シェーダプロセッサ４８を含み得、その各々は、フェッチングおよび復号動作（fetching and decoding operations)のための１つまたは複数の構成要素、算術演算を行うための１つまたは複数の算術論理演算ユニット、１つまたは複数のメモリ、キャッシュ、およびレジスタを含み得る。
【００５１】
[0063]ＧＰＵ １２は、グラフィックス処理パイプライン２４における頂点シェーダステージ、ハルシェーダステージ（a hull shader stage）、ドメインシェーダステージ、ジオメトリシェーダステージ、およびピクセルシェーダステージのうちの１つまたは複数を実行するために、シェーダユニット４６にコマンドを送ることによって、頂点シェーディング、ハルシェーディング、ドメインシェーディング、ジオメトリシェーディング、ピクセルシェーディング、および同様のことなどの様々なシェーディング動作を実行するようにシェーダユニット４６を指示し得る。いくつかの例では、ＧＰＵドライバ２２は、ＧＰＵ １２内に含まれる１つまたは複数のプログラマブルシェーダユニット上にシェーダプログラムをダウンロードするように構成され得る。シェーダプログラムは、例えば、ＯｐｅｎＧＬシェーディング言語（ＧＬＳＬ）、上位レベルシェーディング言語（ＨＬＳＬ）、Ｃｇ（C for Graphics）シェーディング言語などの、上位レベルシェーディング言語で記述され得る。コンパイルされたシェーダプログラムは、ＧＰＵ １２内のシェーダユニット４６の動作を制御する１つまたは複数の命令を含み得る。例えば、シェーダプログラムは、頂点シェーダステージの機能（funtions）を行うためにシェーダユニット４６によって実行され得る頂点シェーダプログラム、ハルシェーダステージの機能を行うためにシェーダユニット４６によって実行され得るハルシェーダプログラム、ドメインシェーダステージの機能を行うためにシェーダユニット４６によって実行され得るドメインシェーダプログラム、ジオメトリシェーダステージの機能を行うためにシェーダユニット４６によって実行され得るジオメトリシェーダプログラム、および／またはピクセルシェーダの機能を行うためにシェーダユニット４６によって実行され得るピクセルシェーダプログラムを含み得る。頂点シェーダプログラムは、プログラマブル頂点シェーダユニットまたは統合型（unified）シェーダユニットの実行を制御し得、１つまたは複数の頂点当たり（per-vertex）の動作を指定する命令を含む。
【００５２】
[0064]いくつかの例では、生ベイヤー画像データは、システムメモリ１０へ転送され得る。いくつかの例では、デバイス８００は、生ベイヤー画像データを提供する画像センサを有するデジタルカメラに結合され得るか、それを含み得るか、またはその一部であり得、ここで、生ベイヤー画像データは、システムメモリ１０に送信され得る。いくつかの例では、システムメモリ１０における生ベイヤー画像データは、キャッシュ３０に送信され、キャッシュ３０に記憶され得る。
【００５３】
[0065]テクスチャパイプライン２３は、テクスチャリング機能（fuctions）を実行するハードウェアユニットのプログラマブルパイプラインである。テクスチャパイプライン２３は、シェーダプロセッサ４８と通信状態にある。いくつかの例では、テクスチャパイプライン２３は、ローカルキャッシュ３１を含み得る。いくつかの例では、ローカルキャッシュ３１は、レベル１キャッシュである。この例では、ローカルキャッシュ３１が「レベル１キャッシュ」であることは、メモリ転送動作が実行されるときにローカルキャッシュ３１が最初にチェックされて、レベル１キャッシュにおいてキャッシュミスが存在した場合にのみ、他のロケーションがチェックされることを意味する。
【００５４】
[0066]いくつかの例では、テクスチャパイプライン２３は、図６のプロセス６３０の動作（acts）のような、動作（acts）を実行し得る。いくつかの例では、テクスチャパイプライン２３は、いくつかの例における図６のプロセスに従って、キャッシュ３０から第１のラインの生ベイヤーデータ、およびキャッシュ３０から第２のラインの生ベイヤーデータを受け取り、複数のテクセルを提供するために、別個の対応するテクセルとして、第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングし、複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行し得る。
【００５５】
[0067]例えば、いくつかの例では、テクスチャパイプライン２３は、生ベイヤー画像データの２×２画素のセットにアクセスするために、キャッシュ３０から２つのラインの生ベイヤー画像データを読み取る。次に、テクスチャパイプライン２３は、例えば、図９に例示される（および図９−図１１と併せて、直後に続くセクションでより詳細に説明される）手法で、キャッシュ３０からの生データにおける各２×２ＢＧＧＲ（青緑緑赤）パターンの画素を、単一のテクセルの「ＲＧＢＡ」フォーマットにマッピングし得る。このようにして、各２×２ベイヤーパターンは、単一の「ＲＧＢＡ」色として扱われる。
【００５６】
[0068]図９は、ベイヤーパターンをテクセルにマッピングする例を例示する概念図である。いくつかの例では、入力データは、生ベイヤーＭＩＰＩデータであり、また、他の例では、入力データは、例えば、代わりに８ビットのフォーマットまたは１６ビットのフォーマットである、ＭＩＰＩフォーマットでない生ベイヤーデータである。いくつかの例では、２×２ベイヤーパターンからのデータは、例えば、いくつかの例では、図９に例示されるように、常に「Ｒ」として左上をマッピングし、常に「Ｇ」として右上をマッピングするなどのように、常に同じ手法でマッピングされる。
【００５７】
[0069]示されるように、ベイヤースウィズリングを実行するために、テクスチャパイプラインは、各２×２パターンの画素が別個のテクセルにマッピングされることができるように、一度に２つのラインのデータを受け取る。対照的に、従来、各画素は、別個のテクセルであり、したがって、従来、一度に１つのラインのデータのみが受け取られる必要があった。
【００５８】
[0070]テクスチャパイプラインは、ベイヤーデータが、２×２ＢＧＧＲ（青緑緑赤）ベイヤーパターンとして知られるフォーマットである、図９に例示される例で示され、また図１にも例示されたような、典型的なベイヤーフォーマットにおける２×２配列当たり２つの緑画素、１つの赤画素、および１つの青画素などの、２×２配列関数（function）でパターン化されるので、２×２配列のためのベイヤースウィズリングを実行する。しかしながら、他のベイヤーパターンが本開示の技法に従って使用され得、それに限定されるものではないが、ＲＧＧＢ（赤緑緑青）、ＧＢＲＧ（緑青赤緑）、ＧＲＢＧ（緑赤青緑）、ＲＧＢＣ（赤青緑クリア）、およびＲＧＢＷ（赤青緑白）を含む。ＲＧＢＣおよびＲＧＢＷベイヤーフォーマットは、ＢＧＧＲベイヤーパターンと同様に２×２配列でパターン化され、したがって、これらフォーマットの各々は、本開示の技法によるここで説明されるようなベイヤー画素の各２×２配列を単一のテクセルにマッピングするベイヤースウィズリングから利益を得る。
【００５９】
[0071]図１０は、図９のマッピングされたテクセルのアドレス指定を例示する概念図である。いくつかの例では、この場合のベイヤー順序における画像座標（ｉ，ｊ）アドレス指定は、図１０に示されるとおりである。例示されるように、テクセルのテクスチャの幅および高さは、標準ベイヤーテクセルフォーマットの半分になり得る。各テクセルインデックスは、４つの色値の２×２マトリクスを含む。
【００６０】
[0072]２×２ベイヤー画素を対応するＲＧＢＡテクセルにマッピングした後、いくつかの例では、テクスチャパイプラインは、これらテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行する。テクスチャパイプラインは、メモリフェッチ当たり、４つの色値の２×２マトリクスを返す。
【００６１】
[0073]さらなる例として、ベイヤービニングは、テクスチャパイプラインのバイリニアフィルタリング能力を使用して実行され得、ここで、ベイヤービニングは、テクスチャパイプラインによって実行されるバイリニアフィルタリング動作を含み得る。テクスチャパイプラインはまた、ＲＧＢＡテクセルに対して読み取りのような動作を実行し得る。他の例では、テクスチャパイプラインは、適応型ベイヤーフィルタリングおよび／またはベイヤー統計（Adaptive Bayer Filtering and/or Bayer statistics）を実行し得、ここで、適応型ベイヤーフィルタリングおよび／またはベイヤー統計は、ＲＧＢＡテクセルのうちの１つまたは複数に対して実行され得る「Ｇａｔｈｅｒ４」のような収集動作を含み得る。いくつかの例では、Ｇａｔｈｅｒ４動作は、４つのロードではなく、１つロードで所望のチャネルをフェッチするために使用され得る。このような収集動作の例が、図１１に例示される。
【００６２】
[0074]図１１は、テクセルに対して収集動作を実行するテクスチャパイプラインの例を例示する概念図である。図１１は、２×２ベイヤー配列からスウィズリングされた「ＲＧＢＡ」テクセルに対するテクスチャパイプラインの動作Ｇａｔｈｅｒの例の影響（effect）を例示する。具体的には、図１１は、Ｂチャネルに対して実行される収集動作を例示する。上記で説明されたように、各別個のテクセルは、動作が個々のベイヤー画素のレベルではなく、テクセルのレベルで実行されるように、各セットのアドレス座標が、単一のベイヤー画素ではなく、２×２ベイヤー配列テクセル全体を指し示す、別個の２×２ベイヤー配列である。例示される例で示されるように、収集動作の例は、４つの隣接する２×２ベイヤー配列テクセルの各々から２×２ベイヤーパターンの単一のチャネルをフェッチする。テクスチャパイプラインはまた、ベイヤーデータに対して実行されることが可能なその他任意の機能を実行し得、特に、最近点サンプリング（Nearest and Point Sampling）を含み、これは、ベイヤーデータが、個々の画素のレベルではなく、２×２配列の画素のレベルで動作されるという事実を除いて、従来の内容（matter）で２×２ベイヤー配列に対して実行され得、これは動作をより効率的にする。
【００６３】
[0075]上記および以下で説明されるように、バイリニアフィルタリングはまた、２×２ベイヤー配列からスウィズリングされた「ＲＧＢＡ」テクセルに対して実行されることができる。バイリニアフィルタリングは、それによって画素値が、同じ色の隣接する画素値に基づいて平均化されるプロセスである。リニアフィルタリングは、同じラインにおける隣接する画素値に基づく平均化を指す（したがって、水平に隣接する画素または垂直に隣接する画素のいずれかが、リニアフィルタリングで平均化される）。バイリニアフィルタリングは、垂直に隣接するものと水平に隣接するものとの両方に基づいて画素値を平均化することを指す。バイリニアフィルタリングの使用は、隣接する画素に基づいて平均化することによって、アーティファクトをよりゆるやか（less severe）にし、その結果、外れ値を有する誤りのある画素の影響を低減させることによって、視覚アーティファクトの低減を達成する。
【００６４】
[0076]バイリニアフィルタリングは、テクスチャパイプラインのバイリニアフィルタリング機能を利用するために隣接する画素を平均化するとき、著しく少ないロードが必要とされるので、２×２ベイヤー配列からスウィズリングされた「ＲＧＢＡ」テクセルにより（with）、著しくより効率的である。
【００６５】
[0077]図１２は、実例的なデバイス１２００を例示する機能ブロック図であり、これは、図８のシステム８００の一部として用いられ得る。デバイス１２００は、レベル２キャッシュ１２３０、テクスチャパイプライン１２２３およびシェーダプロセッサ１２４８を含み、これらは、それぞれ図８のキャッシュ３０、パイプライン２３、およびシェーダプロセッサ４８の例として用いられ得る。テクスチャパイプライン１２２３は、アンパックおよびベイヤースウィズルブロック１２７１、レベル１キャッシュ１２３１、フォーマット変換ブロック１２７２、およびバイリニア最近ｇａｔｈｅｒ４（bilinear nearest gather4）ブロック１２７３を含む。キャッシュ１２３１は、図８のキャッシュ３１の例として用いられ得る。図１２に示されるように、アンパックおよびベイヤースウィズルブロック１２７１、レベル１キャッシュ１２３１、フォーマット変換ブロック１２７２、およびバイリニア最近ｇａｔｈｅｒ４ブロック１２７３は、全てテクスチャパイプライン１２２３に存在する。
【００６６】
[0078]いくつかの例では、ブロック１２７１は、ブロック１２７１に提供される画像データがＭＩＰＩデータであるか否かを認識し（すなわち、画像データがＭＩＰＩフォーマットであるかどうかについての決定を行い）、画像データがＭＩＰＩ生データである場合、ブロック１２７１におけるハードウェアを介してＭＩＰＩ生データをアンパックするように構成されたハードウェアを含む。ブロック１２７１は、ハードウェアを含むアンパッキング回路であり得る。デバイス１２００のいくつかの例は、ＭＩＰＩパックされたベイヤーデータまたはアンパックされたベイヤー画像のいずれかとして生ベイヤーデータを送ることが可能であるカメラと連携して使用され、したがって、デバイス１２００は、ＭＩＰＩパックされたベイヤーデータおよびアンパックされたベイヤーデータの両方を効率的にサポートする。いくつかの例では、正規化データタイプおよび整数データタイプの両方が、ブロック１２７１によってサポートされる。いくつかの例では、ブロック１２７１は、１６ビットのデータフォーマット（すなわち、画素当たり１６ビット）にＭＩＰＩ生データをアンパックする。このようにして、生ベイヤーＭＩＰＩデータは、ブロック１２７１がアンパッキングおよびベイヤースウィズリングを実行した後、テクセル当たり６４ビット（４つの１６ビット画素）にアンパックされる。他の例では、ブロック１２７１は、１６ビットのフォーマット以外の適切なフォーマットにＭＩＰＩ生データをアンパックし得る。
【００６７】
[0079]いくつかの例では、テクスチャパイプライン１２２３は、異なるタイプの処理用の異なるタイプのテクスチャを識別するために、「テクスチャデータタイプ」または単に「テクスチャタイプ」と呼ばれるものを利用し、様々なテクスチャに、テクスチャに従って適切なテクスチャタイプを割り当て、その後、識別されたテクスチャデータタイプに基づいてグラフィック処理機能を実行する。しかしながら、いくつかの例では、テクスチャパイプライン１２２３におけるハードウェアによって実行される機能は、テクスチャを実際には表さないデータにテクスチャデータタイプを割り当てることによってアクセスされ得、したがって、テクスチャパイプライン１２２３におけるハードウェアは、割り当てられたテクスチャデータタイプに基づいて、このデータに対して機能を実行することができる。いくつかの例では、新しいテクスチャデータタイプが、生画像データに対して処理を実行するために、テクスチャパイプライン１２２３のために割り当てられる。例えば、いくつかの例では、ＭＩＰＩ生データは、１つ（または複数）の別個のテクスチャデータタイプである。テクスチャパイプライン１２２３は、全てのデータフォーマットについて、テクスチャとして読取りアクセスを提供するように構成される。
【００６８】
[0080]いくつかの例では、ブロック１２７１は、ブロック１２７１内に内蔵キャッシュを含む。いくつかの例では、レベル２キャッシュ１２３０からの応答が、将来のレベル１キャッシュミスのために、ブロック１２７１の内蔵キャッシュに記憶される。いくつかの例では、レベル１キャッシュ１２３１におけるキャッシュミスは、アドレスをタグとして使用してブロック１２７１における内蔵キャッシュを最初にチェックするであろう。このようにして、いくつかの例では、ブロック１２７１の内蔵キャッシュは、それがレベル１キャッシングとレベル２キャッシングの間の中間であるので、レベル１．５キャッシュとして効果的に動作する。１２７１におけるキャッシュの使用は、いくつかの例では、レベル２キャッシュ１２３０が、アンパックされたＭＩＰＩデータを含むので、効率を増大させる。ブロック１２７１におけるレベル１．５キャッシュが使用されない場合には、レベル１ローカルキャッシュ１２３１のキャッシュミスに際して、レベル２キャッシュ１２３０におけるデータが、密にパックされたフォーマットであり、したがって、アラインされていないので、レベル２キャッシュ１２３０におけるキャッシュラインへの複数のアクセスが必要とされ得る。ブロック１２７１のレベル１．５キャッシュにおけるデータがアンパックされている、ブロック１２７１におけるレベル１．５キャッシュを使用することによって、レベル２キャッシュ１２３０におけるアラインされていないデータへのフェッチの回数は低減される。また、従来、レベル２キャッシュ１２３０は、スプリッティング（splitting）の要求（例えば、アラインされていないデータをアラインする要求）を扱うであろう。しかしながら、ブロック１２７１がアンパッキングを実行するので、レベル２キャッシュ１２３０は、スプリッティングの要求を扱う必要がなく、これは、レベル２キャッシュ１２３０の効率を増大させる。
【００６９】
[0081]生ＭＩＰＩデータをアンパックするために、（図８の）グラフィックスメモリ４０を使用することが可能であるが、これは、ＭＩＰＩデータが密にパックされており、したがって、アラインされていないので、追加の同期を必要とする。アンパックされた画素を保持するレベル１キャッシュ１２３１を用いて（with）、テクスチャパイプライン１２２３によって実行されるＭＩＰＩアンパッキングは、データが利用可能であることを確実にするための（図８の）グラフィックスメモリ４０との同期を必要とすることなく、テクスチャパイプライン１２２３における複数のワークアイテムにわたって生ＭＩＰＩ画像データのアンパックされた画素を共有することを可能にする。特にレベル１キャッシュ１２３１からデータを受け取ることは、生画像データに対する処理が並列に行われることができるように、テクスチャパイプライン１２２３における複数のワークアイテムによるアクセスのためにアンパックされた画素を保持することを可能にし、これは増大された効率を可能にする。また、上記で説明された階層的なキャッシュ構造は、上述された理由から、増大された効率を可能にする。
【００７０】
[0082]いくつかの例では、フォーマット変換ブロック１２７２は、データをＦＰ（浮動小数点)フォーマットに変換する。ブロック１２７３は、図１１に関する説明において上記で説明されたように、バイリニア、最近点サンプリング、およびＧａｔｈｅｒ４機能などの様々な機能をテクセルに対して実行し得る。
【００７１】
[0083]様々な例では、テクスチャパイプライン１２２３は、Ｂのみ、Ｇのみ、およびＲのみの画素をフェッチするために、マッピングされたベイヤーＲＧＢＡテクセルに対してテクスチャ収集動作を使用し得る。追加で、テクスチャパイプライン１２２３は、Ｂ、Ｇ、およびＲチャネルに別々に適用され得るバイリニアフィルタリングを適用し得る。
【００７２】
[0084]上記で説明されたように、ベイヤースウィズリングにより、単一の動作は、一度に４つのベイヤー画素に対して動作が（テクスチャパイプライン１２２３によって）実行されることを効果的に可能にし得る。例えば、ベイヤースウィズル後のＲＧＢＡテクセルに対する読取り動作は、一度に１つのベイヤー画素ではなく、一度に４つのベイヤー画素を効果的に読み取り、Ｇａｔｈｅｒ４動作は、４つのロードではなく、１つのロードにおいて所望のチャネルをフェッチするために使用され得、以下同様である。
【００７３】
[0085]いくつかの例では、デバイス１２００は、様々な機能がＡＰＩを介してアクセス可能になるように、それによってそれが、ＡＰＩを介して、ブロック１２７１によって実行されるアンパッキング機能およびベイヤー２×２画素からＲＧＢＡテクセルへのマッピング（すなわち、ベイヤースウィズリング）を含む、ブロック１２７１の様々な機能を実行することが可能であるＡＰＩを（例えば、フレームワーク拡張を介して）提供する。したがって、いくつかの例では、ブロック１２７１は、テクスチャタイプを介してではなく、ＡＰＩに応答してアンパッキングを実行し得る。いくつかの例では、ＡＰＩは、テクスチャタイプの代わりに使用され得、一方で、他の例では、テクスチャタイプとＡＰＩ拡張の両方が使用され得るとともに、ＡＰＩ拡張は、テクスチャデータを含む。他の例では、テクスチャパイプライン１２２３は、アンパッキング機能およびベイヤースウィズル機能のためにテクスチャデータタイプを使用する。いくつかの例では、ＡＰＩは、テクスチャタイプの代わりに使用され得、一方で、他の例では、テクスチャタイプとＡＰＩ拡張の両方が使用され得るとともに、ＡＰＩ拡張は、テクスチャデータを含む。他の例は、ＡＰＩではなく、テクスチャタイプを使用し得る。いくつかの例では、シェーダプロセッサ１２４８は、デモザイキング動作を実行するためにテクセルをフェッチし得る。
【００７４】
[0086]いくつかの例では、シェーダプロセッサ１２４８は、その後、さらなる処理のために画像信号プロセッサ（ＩＳＰ）（図示せず）に画像データを送信し得る。ＭＩＰＩアンパッキングおよびベイヤースウィズリングを含む、テクスチャパイプライン１２２３におけるハードウェアによって実行される様々な機能、およびアンパックされた「ＲＧＢＡ」テクセルに対して実行される様々な動作（特に、収集機能およびバイリニアフィルタリングを含む）は、ＩＳＰによって実行される画像信号処理より前に実行される画像前処理として機能し得る。ここで説明されるテクスチャパイプライン１２２３におけるハードウェアによって実行される前処理は、特に、ＰＤＡＦ（位相検出オートフォーカス）、ＲＧＢＣ（赤緑青クリア）、インターリーブドハイダイナミックレンジ（ｉＨＤＲ）、コンピュテーショナルフォトグラフィ、およびライトフィールドコンピュテーションと併せると、これらのアプリケーションが、ＭＩＰＩアンパッキングおよび／またはバイリニアフィルタを使用するまたはそれらから利益を得て、したがって、より効率的なＭＩＰＩアンパッキングおよび／またはより効率的なバイリニアフィルタリングから利益を得るので、特に有用であり得る。テクスチャパイプライン１２２３におけるハードウェアによって実行される様々な機能はまた、後処理として行われることができる。すなわち、機能がＩＳＰで実行された後、画像データは、上記に説明された様々な動作の実行のために、テクスチャパイプライン１２２３に送られることができる。
【００７５】
[0087]図１３は、実例的なデバイス１３０２の機能的な態様の例を示す機能ブロック図であり、これは、さらなる詳細において、カメラ１３２３および図７のデバイス２の一部の例として用いられ得る。ＧＰＵ １３１２は、図７のＧＰＵ １２の例として用いられ得る。いくつかの例では、生バッファ（raw buffers）１３５４およびＹＵＶバッファ１３５８は、各々が図８のシステムメモリ１０の一部の例である。図１３は、正確な構造ではなく、実例的な機能プロセスフローを示す機能ブロック図であり−例えば、ＧＰＵ １３１２は、図１３において２度示されている−これは２つのＧＰＵがあるのではなく、例示される特定の例では、図１３は、機能ブロック図であり、同じＧＰＵ １３１２が機能プロセスフローにおける２つの別個のポイントにおいて機能を実行するからである。
【００７６】
[0088]カメラ１３２３は、（例えば、現代のスマートフォン上に配置されるような）主センサ１３５０およびフロントセンサ１３５２を含む１つまたは複数のカメラセンサを含み得る。（例えば、ＭＩＰＩ１０ベイヤーパターンフォーマットにおける）センサ１３５０および／またはセンサ１３５２によって生成される生センサデータは、生バッファ１３５４に記憶され得る。生センサデータは、１つまたは複数のカメラシリアルインタフェース（ＣＳＩ）デコーダＣＳＩＤによって生バッファ１３５４にルーティングされ得る。ＣＳＩデコーダＣＳＩＤは、統計およびダウンスケーラユニットを組み込み得る。本開示の技法によると、ＧＰＵ １３１２は、ＧＰＵ １３１２におけるテクスチャパイプラインを使用して、生センサデータをアンパックおよび／またはフィルタリングし、アンパックされたデータを生バッファ１３５４に記憶するように構成され得る。その後、アンパックされたデータは、圧縮されたフォーマット（例えば、ＪＰＥＧ）で画像ファイルを生成するために、画像信号プロセッサ１３５６によって使用され得る。その後、圧縮されたカメラデータは、ＹＵＶバッファ１３５８に記憶され得る。その後、このようなデータは、ＧＰＵ １３１２、図７のディスプレイプロセッサ２３、または図７のＣＰＵ ６によってさらに操作され、および／または図７のディスプレイ１８上に表示され得る（上記で説明されたように、図１３のデバイスは、図１３のデバイス２の一部として用いられ得る）。
【００７７】
[0089]例に依存して、ここで説明された任意の技法のある特定の動作（acts）またはイベントは、異なるシーケンスで実行されることができ、概して追加、統合、または省略され得る（例えば、すべての説明された動作（acts）またはイベントは、これら技法の実施に必ずしも必要ではない）ことが認識されるべきである。さらに、ある特定の例では、動作（acts）またはイベントは、順次ではなく、例えば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて、同時並行（concurrently）に実行され得る。
【００７８】
[0090]１つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せでインプリメントされ得る。ソフトウェアでインプリメントされる場合、これら機能は、コンピュータ可読媒体上で１つまたは複数の命令またはコードとして記憶または送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルに従って、１つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体、またはデータ記憶媒体のような有形の媒体に対応するコンピュータ可読記憶媒体を含み得る。
【００７９】
[0091]このように、コンピュータ可読媒体は一般に、（１）それ自体が信号を伝搬することを含まない有形のコンピュータ可読記憶媒体、または（２）信号または搬送波のような通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法のインプリメンテーションのための命令、コードおよび／またはデータ構造を取り出すために、１つまたは複数のコンピュータまたは１つまたは複数のプロセッサによってアクセスされることができる任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【００８０】
[0092]限定ではなく例として、このようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶デバイス、フラッシュメモリ、あるいは、データ構造または命令の形式で所望のプログラムコードを記憶するために使用されることができ、かつコンピュータによってアクセスされることができるその他任意の媒体を備えることができる。また、任意の接続は、厳密にはコンピュータ可読媒体と称される。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、またはその他の遠隔ソースから送信される場合には、この同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
【００８１】
[0093]しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または同様のものを含まないが、その代りに有形の記憶媒体に向けられることが理解されるべきである。ここで使用される場合、ディスク（disk）およびディスク（disc）は、コンパクトディスク（ＣＤ）、レーザーディスク（登録商標）、光ディスク、デジタル多目的ディスク（ＤＶＤ）、フロッピー（登録商標）ディスクおよびＢｌｕ−ｒａｙ（登録商標）ディスクを含み、ここでディスク（disks）は、通常磁気的にデータを再生し、一方ディスク（discs）は、レーザーを用いて光学的にデータを再生する。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００８２】
[0094]命令は、１つまたは複数のデジタルシグナルプロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の同等の集積されたまたはディスクリートな論理回路などの、１つまたは複数のプロセッサによって実行され得る。したがって、ここで使用される場合、「プロセッサ」という用語は、任意の前述の構造またはここで説明された技法のインプリメンテーションに適したその他任意の構造を指し得る。加えて、いくつかの態様では、ここで説明された機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび／またはソフトウェアモジュール内に提供され得、または、組み合わされたコーデックに組み込まれ得る。また、これら技法は、１つまたは複数の回路または論理要素において完全にインプリメントされることができる。
【００８３】
[0095]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（例えば、チップセット）を含む、幅広い様々なデバイスまたは装置でインプリメントされ得る。様々な構成要素、モジュール、またはユニットが、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するために、本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要とするわけではない。むしろ、上記で説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わせられるか、または、適切なソフトウェアおよび／またはファームウェアと併せて、上記で説明されたような１つまたは複数のプロセッサを含む、相互運用ハードウェアユニットの集合によって提供され得る。
【００８４】
[0096]様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
【図１】
2018503919.tif 000003
【図２】
2018503919.tif 000004
【図３】
2018503919.tif 000005
【図４】
2018503919.tif 000006
【図５】
2018503919.tif 000007
【図６】
2018503919.tif 000008
【図７】
2018503919.tif 000009
【図８】
2018503919.tif 000010
【図９】
2018503919.tif 000011
【図１０】
2018503919.tif 000012
【図１１】
2018503919.tif 000013
【図１２】
2018503919.tif 000014
【図１３】
2018503919.tif 000015
【手続補正書】
【提出日】平成29年9月27日(2017.9.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
グラフィックス処理のための方法であって、
第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータを含むＭＩＰＩフォーマットにおける生ベイヤーデータをキャッシュから受け取ることと、
グラフィックス処理ユニットのテクスチャパイプラインハードウェアを使用して、前記ＭＩＰＩフォーマットにおける前記生ベイヤーデータをアンパックすることと、
複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列を、前記テクスチャパイプラインハードウェアを用いてマッピングすることと、
前記複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行することと
を備える方法。
【請求項２】
前記少なくとも１つの動作は、ベイヤービニング動作、バイリニアフィルタ動作、読取り動作、または収集動作のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
前記複数のテクセルの各テクセルは、ＲＧＢＡフォーマットである、請求項１に記載の方法。
【請求項４】
前記複数のテクセルのうちの少なくとも１つに対して前記少なくとも１つの動作を実行した後、画像信号プロセッサに前記複数のテクセルを送信することをさらに備える、請求項１に記載の方法。
【請求項５】
前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列を前記マッピングすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、請求項１に記載の方法。
【請求項６】
前記ＭＩＰＩＰフォーマットにおける前記生ベイヤーデータを前記アンパックすることは、対応するテクスチャデータタイプに関連する、請求項１に記載の方法。
【請求項７】
前記ＭＩＰＩＰフォーマットにおける前記生ベイヤーデータを前記アンパックすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、請求項１に記載の方法。
【請求項８】
グラフィックス処理のためのデバイスであって、
キャッシュと、
第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータを含むＭＩＰＩフォーマットにおける生ベイヤーデータを前記キャッシュから受け取り、
前記ＭＩＰＩフォーマットにおける前記生ベイヤーデータをアンパックし、
複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングし、
前記複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行する
ように構成されたテクスチャパイプラインハードウェアと
を備えるデバイス。
【請求項９】
前記テクスチャパイプラインハードウェアは、前記少なくとも１つの動作が、ベイヤービニング動作、バイリニアフィルタ動作、読取り動作、または収集動作のうちの少なくとも１つを含むように構成される、請求項８に記載のデバイス。
【請求項１０】
前記テクスチャパイプラインハードウェアは、前記複数のテクセルの各テクセルが、ＲＧＢＡフォーマットであるように構成される、請求項８に記載のデバイス。
【請求項１１】
画像信号プロセッサをさらに備え、ここにおいて、前記画像信号プロセッサは、テクスチャプロセッサが前記複数のテクセルのうちの少なくとも１つに対して前記少なくとも１つの動作を実行した後に、前記複数のテクセルを受け取るように構成される、請求項８に記載のデバイス。
【請求項１２】
前記テクスチャパイプラインハードウェアは、アプリケーションプログラムインタフェースを介してアクセス可能である手法で、前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングするように構成される、請求項８に記載のデバイス。
【請求項１３】
前記テクスチャパイプラインハードウェアは、前記ＭＩＰＩＰフォーマットにおける前記生ベイヤーデータをアンパックすることが、対応するテクスチャデータタイプに関連するように構成される、請求項８に記載のデバイス。
【請求項１４】
前記テクスチャパイプラインハードウェアは、前記ＭＩＰＩＰフォーマットにおける前記生ベイヤーデータをアンパックすることがアプリケーションプログラムインタフェースを介してアクセス可能であるように構成される、請求項８に記載のデバイス。
【請求項１５】
前記キャッシュは、レベル２キャッシュであり、前記テクスチャパイプラインハードウェアは、
ローカルキャッシュと、
前記レベル２キャッシュから前記第１のラインの生ベイヤーデータ、および前記レベル２キャッシュから前記第２のラインの生ベイヤーデータを受け取り、前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの前記複数の重複してない２×２配列の各２×２配列をマッピングし、前記ローカルキャッシュに前記複数のテクセルを送信するように構成されたアンパッキング回路と
を含む、請求項８に記載のデバイス。
【請求項１６】
前記アンパッキング回路は、
前記生ベイヤーデータがＭＩＰＩフォーマットであるかどうかについての決定を行い、
前記生ベイヤーデータがＭＩＰＩフォーマットであると決定された場合、前記生ベイヤーデータをアンパックする
ようにさらに構成される、請求項１５に記載のデバイス。
【請求項１７】
前記アンパッキング回路は、別個のキャッシュを含む、請求項１５に記載のデバイス。
【請求項１８】
グラフィックス処理のためのデバイスであって、
第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータを含むＭＩＰＩフォーマットにおける生ベイヤーデータを受け取るための手段と、
グラフィックス処理ユニットのテクスチャパイプラインハードウェアを使用して、前記ＭＩＰＩフォーマットにおける前記生ベイヤーデータをアンパックするための手段と、
複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列を、前記テクスチャパイプラインハードウェアを用いてマッピングするための手段と、
前記複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行するための手段と
を備えるデバイス。
【請求項１９】
前記少なくとも１つの動作は、ベイヤービニング動作、バイリニアフィルタ動作、読取り動作、または収集動作のうちの少なくとも１つを含む、請求項１８に記載のデバイス。
【請求項２０】
前記複数のテクセルの各テクセルは、ＲＧＢＡフォーマットである、請求項１８に記載のデバイス。
【請求項２１】
前記複数のテクセルのうちの少なくとも１つに対して前記少なくとも１つの動作を実行した後、画像信号プロセッサに前記複数のテクセルを送信するための手段をさらに備える、請求項１８に記載のデバイス。
【請求項２２】
前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列を前記マッピングすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、請求項１８に記載のデバイス。
【請求項２３】
前記ＭＩＰＩＰフォーマットにおける前記生ベイヤーデータを前記アンパックすることは、対応するテクスチャデータタイプに関連する、請求項１８に記載のデバイス。
【請求項２４】
前記ＭＩＰＩＰフォーマットにおける前記生ベイヤーデータを前記アンパックすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、請求項１８に記載のデバイス。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
[0096]様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］  グラフィックス処理のための方法であって、
第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータを受け取ることと、
複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングすることと、
前記複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行することと
を備える方法。
［Ｃ２］  前記少なくとも１つの動作は、ベイヤービニング動作、バイリニアフィルタ動作、読取り動作、または収集動作のうちの少なくとも１つを含む、Ｃ１に記載の方法。
［Ｃ３］  前記複数のテクセルの各テクセルは、ＲＧＢＡフォーマットである、Ｃ１に記載の方法。
［Ｃ４］  前記複数のテクセルのうちの少なくとも１つに対して前記少なくとも１つの動作を実行した後、画像信号プロセッサに前記複数のテクセルを送信することをさらに備える、Ｃ１に記載の方法。
［Ｃ５］  前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列を前記マッピングすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、Ｃ１に記載の方法。
［Ｃ６］  前記生ベイヤーデータがＭＩＰＩフォーマットであるかどうかについての決定を行うことと、
前記生ベイヤーデータがＭＩＰＩフォーマットであると決定された場合、前記生ベイヤーデータをアンパックするために、グラフィックス処理ユニットのテクスチャパイプラインにおけるハードウェアを用いることと
をさらに備える、Ｃ１に記載の方法。
［Ｃ７］  前記テクスチャパイプラインにおける前記ハードウェアによって実行される前記生ベイヤーデータを前記アンパックすることは、対応するテクスチャデータタイプを有する、Ｃ６に記載の方法。
［Ｃ８］  前記テクスチャパイプラインにおける前記ハードウェアによって実行される前記生ベイヤーデータを前記アンパックすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、Ｃ６に記載の方法。
［Ｃ９］  グラフィックス処理のためのデバイスであって、
キャッシュと、
前記キャッシュから第１のラインの生ベイヤーデータ、および前記キャッシュから第２のラインの生ベイヤーデータを受け取り、
複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングし、
前記複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行する
ように構成されたテクスチャパイプラインと
を備えるデバイス。
［Ｃ１０］  前記テクスチャパイプラインは、前記少なくとも１つの動作が、ベイヤービニング動作、バイリニアフィルタ動作、読取り動作、または収集動作のうちの少なくとも１つを含むように構成される、Ｃ９に記載のデバイス。
［Ｃ１１］  前記テクスチャパイプラインは、前記複数のテクセルの各テクセルが、ＲＧＢＡフォーマットであるように構成される、Ｃ９に記載のデバイス。
［Ｃ１２］  画像信号プロセッサをさらに備え、ここにおいて、前記画像信号プロセッサは、テクスチャプロセッサが前記複数のテクセルのうちの少なくとも１つに対して前記少なくとも１つの動作を実行した後に、前記複数のテクセルを受け取るように構成される、Ｃ９に記載のデバイス。
［Ｃ１３］  前記テクスチャパイプラインは、アプリケーションプログラムインタフェースを介してアクセス可能である手法で、前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングするように構成される、Ｃ９に記載のデバイス。
［Ｃ１４］  前記テクスチャパイプラインは、
前記生ベイヤーデータがＭＩＰＩフォーマットであるかどうかについての決定を行い、
前記生ベイヤーデータがＭＩＰＩフォーマットであると決定された場合、前記生ベイヤーデータをアンパックする
ようにさらに構成される、Ｃ９に記載のデバイス。
［Ｃ１５］  前記テクスチャパイプラインは、前記アンパックすることが、対応するテクスチャデータタイプを有するように、前記生ベイヤーデータをアンパックすることが達成されるように構成される、Ｃ１４に記載のデバイス。
［Ｃ１６］  前記テクスチャパイプラインは、前記生ベイヤーデータをアンパックすることがアプリケーションプログラムインタフェースを介してアクセス可能であるように構成される、Ｃ１４に記載のデバイス。
［Ｃ１７］  前記キャッシュは、レベル２キャッシュであり、前記テクスチャパイプラインは、
ローカルキャッシュと、
前記レベル２キャッシュから前記第１のラインの生ベイヤーデータ、および前記レベル２キャッシュから前記第２のラインの生ベイヤーデータを受け取り、前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの前記複数の重複してない２×２配列の各２×２配列をマッピングし、前記ローカルキャッシュに前記複数のテクセルを送信するように構成されたアンパッキング回路と
を含む、Ｃ９に記載のデバイス。
［Ｃ１８］  前記アンパッキング回路は、
前記生ベイヤーデータがＭＩＰＩフォーマットであるかどうかについての決定を行い、
前記生ベイヤーデータがＭＩＰＩフォーマットであると決定された場合、前記生ベイヤーデータをアンパックする
ようにさらに構成される、Ｃ１７に記載のデバイス。
［Ｃ１９］  前記アンパッキング回路は、別個のキャッシュを含む、Ｃ１７に記載のデバイス。
［Ｃ２０］  グラフィックス処理のためのデバイスであって、
第１のラインの生ベイヤーデータおよび第２のラインの生ベイヤーデータを受け取るための手段と、
複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列をマッピングするための手段と、
前記複数のテクセルのうちの少なくとも１つに対して少なくとも１つの動作を実行するための手段と
を備えるデバイス。
［Ｃ２１］  前記少なくとも１つの動作は、ベイヤービニング動作、バイリニアフィルタ動作、読取り動作、または収集動作のうちの少なくとも１つを含む、Ｃ２０に記載のデバイス。
［Ｃ２２］  前記複数のテクセルの各テクセルは、ＲＧＢＡフォーマットである、Ｃ２０に記載のデバイス。
［Ｃ２３］  前記複数のテクセルのうちの少なくとも１つに対して前記少なくとも１つの動作を実行した後、画像信号プロセッサに前記複数のテクセルを送信するための手段をさらに備える、Ｃ２０に記載のデバイス。
［Ｃ２４］  前記複数のテクセルを提供するために、別個の対応するテクセルとして、前記第１のラインの生ベイヤーデータおよび前記第２のラインの生ベイヤーデータの複数の重複してない２×２配列の各２×２配列を前記マッピングすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、Ｃ２０に記載のデバイス。
［Ｃ２５］  前記生ベイヤーデータがＭＩＰＩフォーマットであるかどうかについての決定を行うための手段と、
前記生ベイヤーデータがＭＩＰＩフォーマットであると決定された場合、前記生ベイヤーデータをアンパックするために、グラフィックス処理ユニットのテクスチャパイプラインにおけるハードウェアを用いるための手段と
をさらに備える、Ｃ２０に記載のデバイス。
［Ｃ２６］  前記テクスチャパイプラインにおける前記ハードウェアによって実行される前記生ベイヤーデータを前記アンパックすることは、対応するテクスチャデータタイプを有する、Ｃ２５に記載のデバイス。
［Ｃ２７］  前記テクスチャパイプラインにおける前記ハードウェアによって実行される前記生ベイヤーデータを前記アンパックすることは、アプリケーションプログラムインタフェースを介してアクセス可能である、Ｃ２５に記載のデバイス。
【国際調査報告】
2018503919.tif 000016
2018503919.tif 000017
2018503919.tif 000018