(57)【要約】  コンテンツのタイルベースレンダリングを行う方法である。コンテンツは、複数のタイルとして体系付けされたメモリ領域にレンダリングすることができる。コンテンツをレイヤに生成するシナリオにおいて、画像レイヤ群を合成することを含む操作について、上記画像の構成部分を処理する順番は、メモリアクセス回数の合計回数を減らすように選択することができ、これによって今度は、タイルベースレンダリングを行うコンピュータの性能を向上させることができる。画像は、同一タイルに対応する異なるレイヤの構成部分をレンダリングする操作に関連する操作群が順番に行われるように、処理することができる。このような処理は、タイルベースレンダリングをサポートするグラフィック処理ユニットを備えるコンピュータにおいて用いることができ、かつスレート・フォーム・ファクタを有するコンピュータに極めて良好に適合させることができる。コンピュータ内のグラフィック処理ユーティリティとのインターフェースが、フラグを供給して、操作群を再順序付けすることができるかどうかをアプリケーションに指定させることができる。
2014530403.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンテンツレイヤを含むコンテンツのタイルベースレンダリングを行う方法であって、前記コンテンツは少なくとも第１タイルおよび第２タイルを含む複数のタイルとして体系付けられ、当該方法は、
少なくとも１つのプロセッサを使用して１つ以上の画素値を計算することにより、前記第１タイルに対応する前記コンテンツの少なくとも第１構成部分をレンダリングするステップと、
前記レンダリングするステップに応じて、他のタイルに対応するコンテンツをレンダリングする前に、少なくとも１つの操作を前記１つ以上の画素値に対して行うステップであって、前記少なくとも１つの操作は前記複数のレイヤのうち少なくとも２つを合成する操作を含む、ステップと、
を含む方法。
【請求項２】
前記少なくとも１つの操作を行うステップに応じて、前記第２タイルに対応する前記コンテンツの少なくとも第２構成部分をレンダリングするステップ
をさらに含む請求項１記載の方法。
【請求項３】
前記少なくとも１つの操作を前記１つ以上の画素値に対して行うステップは、
前記１つ以上の画素値を用いて１つ以上の新たな画素値を計算するステップ
を含む請求項１記載の方法。
【請求項４】
前記少なくとも１つの操作を行うステップは、
前記少なくとも１つの操作を、透過効果および／またはクリッピング効果のいずれかを前記コンテンツの前記第１構成部分に適用することの一部として行うステップ
を含む請求項１記載の方法。
【請求項５】
前記少なくとも１つのプロセッサはグラフィック処理ユニット（ＧＰＵ）である、請求項１記載の方法。
【請求項６】
複数のコンテンツレイヤを含むコンテンツをレンダリングするシステムであって、前記コンテンツは第１タイルおよび第２タイルを含む複数のタイルとして体系付けられ、当該システムは、
グラフィック処理ユニット（ＧＰＵ）
を備え、
前記ＧＰＵは、
前記第１タイルに対応する前記コンテンツの少なくとも第１構成部分をレンダリングして１つ以上の画素値を生成する動作と、
以下の動作群、すなわち、
前記複数のレイヤのうちの少なくとも２つのレイヤを合成する操作を含む少なくとも１つの操作を前記１つ以上の画素値に対して行う動作、または
前記第２タイルに対応する前記コンテンツの少なくとも第２構成部分をレンダリングする動作
のうちのいずれを最初に行うかについての指示を受信する動作と、
をなすように構成され、
前記指示が前記少なくとも１つの操作を最初に行うべきであることを示す場合、前記ＧＰＵは、
前記少なくとも１つの操作を前記１つ以上の画素値に対して行い、前記少なくとも１つの操作を行った後に、前記第２タイルに対応する前記コンテンツの前記第２構成部分をレンダリングするように構成される、
システム。
【請求項７】
前記コンテンツの前記少なくとも第１構成部分は、第１コンテンツレイヤおよび第２コンテンツレイヤを含み、前記１つ以上の画素値は、第１画素値集合および第２画素値集合を含み、前記ＧＰＵは、
前記第１タイルに対応する前記第１コンテンツレイヤの少なくとも１つの構成部分をレンダリングして第１画素値集合を計算する動作と、
前記第１コンテンツレイヤの前記少なくとも１つの構成部分をレンダリングする動作に応じて、前記第１画素値集合を別のメモリ領域にコピーする動作と、
前記コピーする動作に応じて、前記第１タイルに対応する前記第２コンテンツレイヤの少なくとも１つの構成部分をレンダリングして第２画素値集合を計算する動作と、
により前記第１タイルに対応する前記コンテンツの前記少なくとも第１構成部分をレンダリングするようにさらに構成される、
請求項６記載のシステム。
【請求項８】
前記別のメモリ領域は前記ＧＰＵに搭載されない、請求項７記載のシステム。
【請求項９】
前記少なくとも１つの操作を前記１つ以上の画素値に対して行う動作は、前記第１画素値集合および前記第２画素値集合を用いて１つ以上の新たな画素値を取得する動作を含む、請求項７記載のシステム。
【請求項１０】
前記指示を受信する動作は、
前記指示をグラフィック処理ルーチンに至るインターフェースを介して受信する動作を含み、
前記指示はパラメータを含み、該パラメータの値が最初に前記少なくとも１つの操作を前記１つ以上の画素値に対して行うことを示す、
請求項６記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
コンテンツをレンダリングする技術の改善に関し、特殊グラフィックハードウェアを含む計算装置の電力やメモリなどのリソースの利用効率の向上に関する。
【背景技術】
【０００２】
計算装置は、１人以上の人間のユーザに対して、ビデオディスプレイにおいて、画像および／またはテキストのようなコンテンツを表示することができる。この目的のために、計算装置は、レンダリング処理を実行して、画素値をコンテンツに基づいて計算することができる−イメージプレーンと呼ばれるメモリ領域に体系付けすることができるこれらの画素値をビデオディスプレイが用いることによりコンテンツを表示することができる。
【０００３】
表示対象のコンテンツは、「プリミティブ」と表記される種々の要素を含むことができる。プリミティブの例として、線分、曲線、グリフ、ウィンドウ、ボタン、および／または円や多角形のような形状を挙げることができる。したがって、レンダリングは、「画素ごとに」または「プリミティブごとに」行うことができる。画素ごとのレンダリングには、イメージプレーン画素群全体について繰り返し処理すること、およびこれらの画素の値の各々を順々に求めることを含みうる。これとは異なり、プリミティブごとのレンダリングには、表示対象のコンテンツのプリミティブ群全体について繰り返し処理すること、このような各プリミティブについて、いずれのイメージプレーン画素値にプリミティブが影響を与えているかを決定すること、およびそれに応じてこれらの画素値を変更することを含みうる。
【０００４】
いくつかの計算装置は、ビデオカードおよび／またはグラフィック処理ユニットのような特殊ハードウェアを有することができ、この特殊ハードウェアを用いて、１つ以上の操作を、レンダリングプロセスの一部として行うことができる。例えば、グラフィック処理ユニット（ＧＰＵ）を用いて、１つ以上のイメージプレーン画素値を計算することができる。これらの計算装置は、コンテンツを生成して表示することができ、このような特殊ハードウェアに例えば適切なアプリケーションプログラミングインターフェース（例えば、グラフィックライブラリ、ハードウェアドライバなど）を介してアクセスすることができる、ソフトウェアアプリケーションを提供することができる。
【０００５】
いくつかのＧＰＵは、タイルベースレンダリングをサポートする。このようなＧＰＵは、レンダリングコンテンツ（すなわち、イメージプレーン）を格納するために使用されるメモリよりも小容量の高速オンチップメモリを有することができ、このオンチップメモリを用いて、特定のＧＰＵ操作をより高速に行うことができる。したがって、タイルベースレンダリングでは、コンテンツがタイルと表記される構成部分（ｐｏｒｔｉｏｎｓ）ごとにレンダリングされ、ＧＰＵがレンダリングプロセスの一部として高速メモリを使用することによりこのような各構成部分に対して操作を実行できるようになる。コンテンツは、１度に１タイルの割合でレンダリングすることができ、この場合、画素値はタイル単位で計算される。画素値を格納するメモリ領域は、複数のタイルとして体系付けすることができる。したがって、本明細書では、タイルに関連付けられる画素値群が格納される格納先の各サブ領域は、タイルとも表記される。
【０００６】
あるコンテンツは、１つ以上のコンテンツレイヤを含むことができる。各コンテンツレイヤは、１つ以上のプリミティブおよび／または他の任意の適切なコンテンツを含むことができる。コンテンツレイヤをレンダリングする際、各レイヤに含まれる情報を組み合わせて、レンダリング対象情報が複数のレイヤに含まれる情報の複合情報を表わすようにする。コンテンツレイヤを異なる方法で組み合わせて、異なる効果をもたらすことができる。例えば、１つ以上のレイヤは、部分的に透過であるかのように提示することができるので、下位レイヤの構成部分は、上位レイヤを透過して見えるようになる。別の例として、これらのレイヤをクリッピングして、ディスプレイ上で見えるものが、１つのレイヤの構成部分と別のレイヤの構成部分とを組み合わせたものとなるようにすることができる。複数のコンテンツレイヤを含むコンテンツは、１度に１レイヤの割合で、かつ各レイヤ内で、１度に１プリミティブの割合で、複数のパスをイメージプレーン画素値全体について用いてレンダリングすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
コンテンツをレンダリングする技術を改善して、特殊グラフィックハードウェアを含む計算装置の電力およびメモリなどのリソースの利用効率を向上させることに関する。
【課題を解決するための手段】
【０００８】
コンテンツをレンダリングする技術を改善して、特殊グラフィックハードウェアを含む計算装置の電力およびメモリのようなリソースの利用効率を向上させることができる。これらの技術では、複数のコンテンツレイヤを含むコンテンツに対する、より効率の良いタイルベースレンダリングを、レンダリングプロセスの操作が行われうる順番を最適化することにより行う。ＧＰＵのような、コンテンツレンダリングを行う特殊ハードウェアは、他のタイル群に対応するコンテンツのレンダリングを行う前に、あるタイルに対応する１つよりも多くのコンテンツレイヤをレンダリングするように構成することができる。その結果、上記１つのタイルに関連する画素値群をメモリに取り込む回数を減らすことができる。これにより、各コンテンツレイヤが複数のタイルとして体系付けされているようなコンテンツを１度に１コンテンツレイヤの割合でレンダリングし、それがキャッシュスラッシングおよび総合的な性能低下を引き起こす従来のアプローチよりも、レンダリングプロセス全体を効率的にすることができる。レンダリングプロセスがより効率的になると、電力およびメモリのようなリソースの利用頻度を低くするか、または利用効率を向上させることができ、これは、このようなリソースが制限される計算装置（例えば、ラップトップ、携帯電話機、スレート・フォーム・ファクタ（ｓｌａｔｅ  ｆｏｒｍ  ｆａｃｔｏｒ）を有する機器、他のバッテリ駆動機器など）にとって有利となりうる。
【０００９】
したがって、いくつかの実施形態では、複数のレイヤを含むコンテンツのタイルベースレンダリングを行う方法が提供され、上記コンテンツは、少なくとも第１タイルおよび第２タイルを含む複数のタイルとして体系付けされる。上記方法は、上記第１タイルに対応する上記コンテンツの少なくとも第１構成部分を、少なくとも１つのプロセッサを使用して１つ以上の画素値を計算することによりレンダリングするステップと、上記レンダリングするステップに応じて、他のタイルに対応するコンテンツをレンダリングする前に、少なくとも１つの操作を行うステップであって、上記少なくとも１つの操作は上記複数のレイヤのうちの少なくとも２つのレイヤを合成する操作を含む、ステップと、を含むことができる。
【００１０】
例えば、いくつかの実施形態では、上記コンテンツを１度に１タイルの割合でレンダリングして、上記レンダリングプロセスの一部として計算される画素値群を各タイルに対応するグループ群で計算することができる。更に、画素値群をあるタイルに対応するグループにまとめて計算する際、画素値群を複数のコンテンツレイヤに基づいて計算することができる。したがって、いくつかの実施形態では、コンテンツが１度に１レイヤの割合ではなく１度に１タイルの割合でレンダリングされ、したがって、任意の他のタイルに対応するコンテンツをレンダリングする前に、特定のタイルに対応する複数のコンテンツレイヤをレンダリングし、かつ合成することができる。
【００１１】
いくつかの実施形態では、少なくとも１つのコンピュータ可読記憶媒体が提供される。上記少なくとも１つのコンピュータ可読記憶媒体は、プロセッサ実行可能命令を含むアプリケーションを記憶することができ、上記プロセッサ実行可能命令は、少なくとも１つのプロセッサにより実行されると、第１タイルおよび第２タイルを含む複数のタイルとして体系付けされたコンテンツをレンダリングするようにグラフィック処理ユニット（ＧＰＵ）を構成する方法を実行する。上記方法では、以下の動作、すなわち、少なくとも１つの操作を、上記第１タイルに対応するコンテンツをレンダリングすることにより取得される１つ以上の画素値に対して行う動作、または上記第２タイルに対応する上記コンテンツの少なくとも１つの構成部分をレンダリングする動作、のうちのいずれを最初に行うかについて決定し、上記少なくとも１つの操作が最初に行われるべきであることが決定された場合、上記ＧＰＵに通知して、まず、上記少なくとも１つの操作を最初に行なわせ、次に、上記レンダリングを行なわせる。
【００１２】
いくつかの実施形態では、複数のコンテンツレイヤを含むコンテンツをレンダリングするシステムが提供され、上記コンテンツは、第１タイルおよび第２タイルを含む複数のタイルとして体系付けられる。上記システムは、グラフィック処理ユニット（ＧＰＵ）に通信可能に接続されたメモリと上記ＧＰＵとを備えることができ、上記ＧＰＵは、上記第１タイルに対応する上記コンテンツの少なくとも第１構成部分をレンダリングして１つ以上の画素値を計算する動作と、以下の動作群、すなわち、上記複数のレイヤのうちの少なくとも２つのレイヤを合成する操作を含む少なくとも１つの操作を１つ以上の画素値に対して行う動作、または上記第２タイルに対応する上記コンテンツの少なくとも第２構成部分をレンダリングする動作、のうちのいずれの処理を最初に行うかについての指示を受信する動作と、をなすように構成され、上記指示が上記少なくとも１つの操作が最初に行われるべきであることを示す場合、上記ＧＰＵは、上記少なくとも１つの操作を、上記第１タイルに含まれる上記１つ以上の画素値に対して行い、上記少なくとも１つの操作を行った後に、上記第２タイルに対応する上記コンテンツの上記第２構成部分をレンダリングするように構成される。
【００１３】
これまでの内容は、添付の請求項により規定される本発明についての非限定的な要約である。
【００１４】
添付の図面は、寸法通りに描いてはいない。これらの図面では、種々の図に図示されるそれぞれの同一の構成要素、またはほぼ同一の構成要素が、同様の参照番号により表示されている。明瞭性を期して、全ての構成要素に全ての図面において記号を付けることはしていない。
【図面の簡単な説明】
【００１５】
【図１】本開示のいくつかの実施形態によるコンテンツをレンダリングする例示的な計算環境を示している。
【図２】本開示のいくつかの実施形態によるコンテンツをレンダリングする例示的な計算装置内のハードウェア構成要素およびソフトウェア構成要素のブロック図である。
【図３】本開示のいくつかの実施形態によるコンテンツをレンダリングする例示的なプロセスのフローチャートである。
【図４ａ】本開示のいくつかの実施形態によるコンテンツをレンダリングする例示的なプロセスのフローチャートを示している。
【図４ｂ】本開示のいくつかの実施形態によるコンテンツをレンダリングする例示的なプロセスのフローチャートを示している。
【図５】本開示の態様を実施するために使用することができる計算装置の一例を概略的に示すブロック図である。
【発明を実施するための形態】
【００１６】
本願発明者らは、タイルベースレンダリングをサポートするＧＰＵが１つ以上のコンテンツレイヤを含むコンテンツのタイルベースレンダリングをより高い効率で実行するように構成することができる場合、より大きな有用性が上記ＧＰＵからもたらされうると認識し、かつ評価している。具体的には、本願発明者らは、このようなコンテンツを１度に１レイヤの割合でレンダリングするのではなく、上記コンテンツを１度に１タイルの割合でレンダリングすると有利であることを認識している。前者の「レイヤの次にタイル（ｌａｙｅｒ−ｔｈｅｎ−ｔｉｌｅ）」アプローチでは、コンテンツは、１度に１コンテンツレイヤの割合でレンダリングすることができ、このような各コンテンツレイヤは、１度に１タイルの割合でレンダリングすることができる。これとは異なり、後者の「タイルの次にレイヤ（ｔｉｌｅ−ｔｈｅｎ−ｌａｙｅｒ）」アプローチでは、コンテンツは、１度に１タイルの割合でレンダリングすることができる−各タイルに関連する画素値群の計算では、画素値群を複数のコンテンツレイヤに基づいて計算することができる。
【００１７】
本願発明者らは、タイルベースレンダリングは、タイルベースレンダリングの利点を生かすことができる装置が更に広く普及しているので、更に広く普及する可能性があると認識している。タイルベースレンダリングは、タイルベースレンダリングがタイルベースレンダリング以外の従来のレンダリング技術よりも小さなメモリ帯域幅、および少ない計算能力しか必要としないので、モバイルデバイスに使用されると有利となりうる。モバイルデバイス（例えば、スマートフォン、ＰＤＡ，タブレットなど）は更に広く普及しており、これらのモバイルデバイスは、タイルベースレンダリングをサポートするグラフィック処理ユニット群を含む。
【００１８】
本願発明者らは更に、タイルベースレンダリング技術が他の種類のレンダリング技術よりも効率的となり得るのであるが、タイルベースレンダリングをサポートするＧＰＵ上でタイルベースレンダリングを用いる従来の技術を更に向上させることができることを認識している。本願発明者らは、ＧＰＵがタイルベースレンダリングを実行するように構成することができる方法を改善すると、更に効率的なレンダリングを行うことができ、これにより今度は、更なる利点（例えば、バッテリ寿命が延びる）がこのようなＧＰＵを収容するモバイルデバイスにもたらされると理解している。具体的には、本願発明者らは、複数のコンテンツレイヤを含むコンテンツのタイルベースレンダリングを行う従来の技術を改善することができると認識している。
【００１９】
複数のコンテンツレイヤを含むコンテンツのタイルベースレンダリングを行う１つの従来のアプローチが、前述の「レイヤの次にタイル」アプローチである。このアプローチでは、コンテンツレイヤ群は、１度に１コンテンツレイヤの割合で次々にレンダリングすることができる。更に、各コンテンツレイヤは１度に１タイルの割合でレンダリングすることができる。したがって、このアプローチでは、特定のタイルに対応するコンテンツレイヤの構成部分をレンダリングした後、残りのタイル群に対応する上記コンテンツレイヤの未レンダリング部分を、上記特定のタイルに対応する別のコンテンツレイヤの任意の構成部分をレンダリングする前にレンダリングする。これは、「ミッドシーンフラッシュ（ｍｉｄ−ｓｃｅｎｅ  ｆｌｕｓｈ）」と表記される場合があるが、その理由は、ミッドシーンフラッシュが、別のレイヤをレンダリングすることに関連する任意の操作が行われうる前に、コンテンツレイヤをレンダリングすることに関連する全てのレンダリング操作を強制する（それにより、レンダリング操作の「パイプライン」からこれらの操作をフラッシュする）からである。
【００２０】
別のレイヤをレンダリングすることに関連する操作は、任意の適切な種類の操作とすることができる。１つの例として、これらの操作では、１つ以上の計算を、既に計算されている画素値群を用いて行うことができる。このような操作は、非常に多くの状況において用いることができ、例えば既にレンダリングされているレイヤと他のレイヤとに関する情報を合成する場合に用いることができる。具体的な例として、このような操作を用いて、透過性またはクリッピング効果のような１つ以上の効果をレンダリングコンテンツに適用することができる。
【００２１】
ミッドシーンフラッシュの特定の非限定的な例として、２つのコンテンツレイヤをタイルベースレンダリングするときに生じる可能性のある一連の事象について考察する。一連の事象には、第１コンテンツレイヤ全体がレンダリングされるまで、タイルＡに対応する第１コンテンツレイヤの一構成部分をレンダリングすること、取得された画素値群を、レンダリングに使用される高速メモリ（例えば、ＧＰＵキャッシュ）から別のメモリにコピーすること、タイルＢに対応する第１コンテンツレイヤの別の構成部分をレンダリングすること、そして取得された画素群を高速メモリから他のメモリにコピーすることなどを含むであろう。第１コンテンツレイヤ全体がレンダリングされた後、タイルＡに対応する第２コンテンツレイヤの一構成部分をレンダリングすることができる。この時点で、第１および第２コンテンツレイヤの構成部分を合成して、透過性またはクリッピングのような可視効果を提供することが望ましい場合がある。しかしながら、タイルＡに対応する第１および第２コンテンツレイヤの構成部分を合成するために、高速メモリから別のメモリに既にコピーされている画素値群を高速メモリに戻す必要がある。
【００２２】
本願発明者らは、従来の「レイヤの次にタイル」アプローチでは、ミッドシーンフラッシュを実行する（例えば、上に説明した例におけるように）と、特定のタイルに関連する画素値群がＧＰＵキャッシュに複数回にわたって格納されることになってしまうことを認識している。例えば、（上に説明した例の場合に見られるように）これらの画素値は別のコンテンツレイヤがレンダリングされるたびにＧＰＵキャッシュに格納されることになり、したがって、新たな画素値群が複数のコンテンツレイヤから取得される値の関数として計算されることができる（例えば、複数のコンテンツレイヤが合成されている場合）。
【００２３】
本願発明者らはまた、ＧＰＵキャッシュのサイズが限定され、１タイルに対応するコンテンツに関連する画素値群は、別のタイルに対応するコンテンツに関連する画素値群がキャッシュに格納される前にキャッシュから取り出されるか、またはキャッシュにおいて上書きされる可能性があることを認識している。その結果、「レイヤの次にタイル」アプローチでは、コンテンツがレンダリングされているときに、特定のタイルに対応するコンテンツに関連する画素値群を複数回にわたってキャッシュに格納したりキャッシュから取り出したりする可能性があり、この現象は「キャッシュスラッシング」と表記される場合がある。キャッシュスラッシングは、別の、典型的にはより低速のメモリからキャッシュに値を繰り返し読み込むこと、および／またはキャッシュから他のメモリに値を繰り返し書き込むことが遅延を招くので、非効率的である。
【００２４】
本願発明者らはまた、コンテンツを１度に１タイルの割合でレンダリングし、各タイルについて、計算を複数のコンテンツレイヤに関連する値に基づいて行うと、タイルベースレンダリングに関する従来の技術についての上述した欠点のうちいくつかを克服することができることを認識し、かつ理解している。しかしながら、それぞれの実施形態が、これらの欠点を１つ残らず解決するものではなく、いくつかの実施形態は、これらの欠点のうちいずれも解決しない可能性がある。したがって、本発明は、タイルベースレンダリングに関するこれらの従来の技術についての上記欠点のうち全てまたはいずれかを解決する構成に限定されないことを理解されたい。
【００２５】
したがって、いくつかの実施形態では、レンダリングに関する前述の「タイルの次にレイヤ」アプローチを実行することができる。このような実施形態では、あるタイルに対応するコンテンツレイヤの少なくとも１つの構成部分をレンダリングすることができ、同一タイルに対応する別のコンテンツレイヤの少なくとも別の構成部分をレンダリングすることができ、両動作は、別のタイルに対応する任意のコンテンツがレンダリングされる前に行われる。あるタイルに対応するコンテンツのレンダリングでは、上記コンテンツの構成部分を、ＧＰＵに搭載される高速メモリを使用することによりレンダリングすることができる。上記タイルに対応する他のコンテンツレイヤのレンダリングでは、操作を、既にレンダリングされている画素値群に対して行うことができる。上記操作は、任意の適切な操作とすることができ、ある効果をレンダリング対象のコンテンツに適用する操作の一部として行うことができる。いくつかの実施形態では、ある操作を上記タイルに関連する画素値群に対して行う際に、上記操作をＧＰＵに搭載された高速メモリ（例えば、ＧＰＵキャッシュ）に格納された値に対して行うことができる。
【００２６】
この「タイルの次にレイヤ」アプローチにおいて、２つのレイヤを含むコンテンツをレンダリングする上記例における一連の事象には、タイルＡに対応する第１コンテンツレイヤの構成部分をレンダリングして１つ以上の画素値を取得すること、計算された画素値群を別のメモリにコピーすること、それから、タイルＡに対応する第２レイヤの構成部分をレンダリングすること、そして最後に、既にコピーされている画素値群と第２レイヤの構成部分をレンダリングすることにより取得される値とを合成して２つのコンテンツレイヤのコンテンツをブレンドすることを含むことができる。この例では、タイルＡに対応するコンテンツに関連する画素値群に対する全ての操作を一括して行うことができるので、キャッシュスラッシングを回避することができる。
【００２７】
したがって、いくつかの実施形態では、複数のコンテンツレイヤを含むコンテンツを処理する際、上記コンテンツのレンダリング操作を処理できる順番の決定を必要とすることができる。例えば、第１タイルに対応するコンテンツレイヤの構成部分をレンダリングした後、上記第１タイルに関連する画素値群に対して何らかの操作を行うか（例えば、上記第１タイルに対応するより多くのコンテンツをレンダリングし、上記レイヤの既にレンダリングされている構成部分と別のレイヤとを合成する操作などを行うためなど）、あるいは異なるタイルに対応するコンテンツの別の構成部分をレンダリングするかについて選択を行うことができる。「レイヤの次にタイル」アプローチを用いる場合、「タイルの次にレイヤ」アプローチを用いる場合とは異なる決定を行うことができる。後者の「タイルの次にレイヤ」アプローチの場合、第１タイルに対応するコンテンツに関連する画素値群に対する操作は、他のタイル群に対応する任意のコンテンツがレンダリングされうる前に行うことができる。
【００２８】
いくつかの実施形態では、ＧＰＵは、複数のレイヤを含むコンテンツを「タイルの次にレイヤ」アプローチを用いてレンダリングするか、あるいは従来の「レイヤの次にタイル」アプローチを用いてレンダリングするかを示す指示を受信することができる。以下に更に詳細に説明するように、このような指示は、コンテンツを生成してレンダリングするソフトウェアが行う決定の結果として受信することができ、いくつかの例では、このような指示には、ソフトウェアが設定したパラメータ、および／またはソフトウェアが行った関数呼出しを含むことができる。具体的な例として、コンテンツをレンダリングするコンポーネントは、レンダリング操作の各タイルが合成対象のレイヤ群の対応するタイル群のコンテンツにのみ依存するシナリオにおいて、複数のレイヤを合成することを含むレンダリング操作に関連付けて上記のような指示を供給するように構成することができる。
【００２９】
任意の適切な計算環境を用いて、本発明の実施形態を実施することができる。１つのこのような計算環境が、コンテンツをレンダリングする例示的な計算環境１００を示している図１に図示される。
【００３０】
計算環境１００は、ディスプレイ１０６に通信可能に接続される計算装置１０２を含む。計算装置１０２は、コンテンツをレンダリングして、レンダリングコンテンツをディスプレイ１０６に表示することができるように構成することができる。この図示の例では、ユーザ（例えば、ユーザ１０８）が、レンダリングコンテンツをディスプレイ１０６で閲覧することができる。しかしながら、レンダリングコンテンツを閲覧するユーザの数が本発明に対する限定とはならないので、任意の適切な数のユーザがレンダリングコンテンツを閲覧することができることを認識されたい。
【００３１】
計算装置１０２は、任意の適切な方法で、任意の適切な技術を用いてコンテンツをレンダリングするように構成することができる。いくつかの実施形態では、計算装置１０２は、タイルベースレンダリングを用いてコンテンツをレンダリングするように構成することができる。更に、他の実施形態では、計算装置１０２は、あるコンテンツを、タイルベースレンダリングを用いてレンダリングし、かつ他のコンテンツを、タイルベースレンダリングを用いることなくレンダリングするように構成することができる。
【００３２】
計算装置１０２は、任意の適切なコンテンツをレンダリングするように構成することができる。コンテンツには、視覚的に提示することができる任意の適切な種類のコンテンツを含むことができる。例えば、コンテンツには、いかなる適切な種類の画像データ（例えば、画像、写真、コンピュータ生成画像、クリップアートなど）も含むことができる。別の例として、コンテンツには、いかなる適切な種類のテキストデータも含むことができる。
【００３３】
いくつかの実施形態では、コンテンツは、１つ以上のプリミティブを含むことができる。プリミティブは、コンテンツ内の任意の適切な要素とすることができる。例えば、プリミティブは、任意の適切な２Ｄ形状または３Ｄ形状とすることができ、例えば、点、平面、線分、曲線、スプライン曲線、多角形、円、楕円、球、立方体、箱、環状体、円筒体、角錐などとすることができる。別の例として、プリミティブは、ウィンドウ、フレーム、ボタン、フィールドなどとすることができる。しかしながら、プリミティブについて上に挙げた例は、単なる例示に過ぎず、コンテンツは、この技術分野において知られている任意の他の適切なプリミティブを含むことができることを認識されたい。
【００３４】
プリミティブは複数のレイヤとして表示することができ、上記のレイヤを合成してレンダリング画像を作成することができる。しかしながら、「タイルの次にレイヤ」技術は、どのようにグラフィック情報が表示されるかに関係なく、レンダリング対象の上記情報に適用されうることを理解されたい。
【００３５】
計算装置１０２は、コンテンツを任意の適切な目的に関連付けてレンダリングするように構成することができる。いくつかの実施形態では、計算装置１０２は、計算装置１０２上で少なくとも部分的に実行される１つ以上のソフトウェア構成要素のコンテンツをレンダリングするように構成することができる。ソフトウェア構成要素は、任意の適切なソフトウェアを含むことができ、例えば、１つ以上のオペレーティングシステム、および／または１つ以上のソフトウェアアプリケーションを含むことができる。ソフトウェアアプリケーションは、ユーザ向けにコンテンツをレンダリングすることを要求しうる任意の適切なアプリケーションとすることができ、例えば、テキストユーザインターフェースおよび／またはグラフィカルユーザインターフェースを含む任意のアプリケーションとすることができる。このようなアプリケーションの具体的な例として、ビデオゲームアプリケーション、テキスト処理アプリケーションおよび／または画像処理アプリケーション、ならびに任意のウェブブラウジングアプリケーションを挙げることができる。多くの他の例が、この技術分野の当業者には明らかであろう。
【００３６】
計算システム１０２は、任意の適切な種類の計算システムとすることができ、任意の適切なフォームファクタを有することができる。例えば、計算システム１０２は、１つ以上のパーソナルコンピュータ、１つ以上のサーバ、１つ以上のラップトップ、および１つ以上のハンドヘルドデバイスとすることができ、これらの要素の各々は、スマートフォン、タブレット、スレート、携帯情報端末、テキストリーダなどとすることができる。計算システムの種類の他の例は、図５を参照して以下に更に詳細に説明される。
【００３７】
ディスプレイ１０６は、任意の適切な種類のディスプレイとすることができ、任意の適切な技術を実現することができ、かつ任意の適切なフォームファクタを有することができる。したがって、ディスプレイ１０６は、テキストおよび／または画像を表示するように構成される任意のディスプレイとすることができる。計算環境１００では、ディスプレイ１０６は、計算システム１０２に有線接続１０４を介して通信可能に接続されるものとして図示されているが、これは、ディスプレイ１０６を計算システム１０２に任意の適切な方法で通信可能に接続することができるので、本発明に対する限定とはならない。例えば、ディスプレイ１０６は、計算システム１０２の外部にあってよく、かつ計算システム１０２に無線接続を介して通信可能に接続することができる。別の例として、ディスプレイ１０６は、例えば計算システム１０２がラップトップまたはタブレットコンピュータのような持ち運び可能な計算システムである場合のように、計算システム１０２と一体化することができる。
【００３８】
計算システム１０２は、任意の適切な種類の１つ以上のプロセッサを備えることができる。例えば、計算システム１０２は、ＣＰＵ１３０のような１つ以上のＣＰＵと、ＧＰＵ１１０のような１つ以上のグラフィック処理ユニット（ＧＰＵｓ）と、を備えることができる。これらのプロセッサの各々は、データをメモリ１２０のようなメモリから読み出し、データを上記メモリに書き込むことができる。メモリ１２０は、図５を参照して以下に説明される任意のメモリを含む非常に多くの種類のメモリのうちのいずれかとすることができる。
【００３９】
ＧＰＵ１１０は、任意の適切な種類のＧＰＵとすることができる。いくつかの実施形態では、ＧＰＵ１１０が、コンテンツのタイルベースレンダリングをサポートすることができるのに対し、他の実施形態では、ＧＰＵ１１０は、コンテンツのタイルベースレンダリングのサポートを提供しなくてよい。
【００４０】
いくつかの実施形態では、ＧＰＵ１１０は、１つ以上の画素値をコンテンツに基づいて計算し、これらの画素値をメモリに格納することにより上記コンテンツをレンダリングすることができる。どのようにこれらの画素値を計算する、または格納することができるかに関係なく、これらの格納画素値をディスプレイ（例えば、ディスプレイ１０６）が用いることによりコンテンツを表示することができる。
【００４１】
ＧＰＵ１１０は、画素値群を任意の適切なメモリに格納することができる。例えば、ＧＰＵ１１０は、画素値群をメモリ１２０に格納することができる。いくつかの例では、ＧＰＵ１１０は画素値群を、イメージプレーン１２２のようなメモリ１２０のある領域に格納することができる。イメージプレーン１２２は、任意の適切なメモリ領域とすることができ、かつ任意の適切なサイズを有することができる。例えば、イメージプレーン１２２のサイズは、上記イメージプレーンが、コンテンツをレンダリングするために計算される画素値群の大部分を格納することができるようなサイズとすることができる。イメージプレーン１２２に格納される画素値群を用いて、レンダリングコンテンツをディスプレイ１０６のようなディスプレイに提示することができる。しかしながら、画素値群はメモリ１２０の任意の適切なメモリ部分に格納することができ、かつイメージプレーン１２２に格納されることに限定されないことを認識されたい。例えば、画素値群は、画素値群を一時的に格納するように構成されたメモリ１２０の別のメモリ領域に格納することができ、あるいは任意の他の適切なメモリ領域に格納することができる。
【００４２】
レンダリングコンテンツを格納するために使用されるイメージプレーン１２２のようなメモリ領域を体系付けして、１つ以上のサブ領域（または、タイル）とすることができる。各タイルは、任意の適切なサイズとすることができる。いくつかの例では、上記メモリ領域をタイル分割して、同じサイズの１つまたは複数のタイルとすることにより、各タイルが他の任意のタイルと同じ量のデータを格納することができる。しかしながら、他の例では、タイル群は異なるサイズを有することにより、１つのタイルが、別のタイルが格納することができるデータの量とは異なる量のデータを格納することができる。各コンテンツレイヤが１度に１タイルの割合でレンダリングされているとき、レンダリングコンテンツの各構成部分は、メモリ１２０のあるメモリ領域（例えば、イメージプレーン１２２）に格納することができる。したがって、イメージプレーン１２２を用いて全てのレンダリングコンテンツを格納することができる。
【００４３】
コンテンツをレンダリングするために、ＧＰＵ１１０はオンチップメモリ１１２を使用することができる。オンチップメモリ１１２は、オンチップメモリ１１２がＧＰＵ１１０に集積化されうるので、高速低遅延メモリとすることができる。例えば、オンチップメモリ１１２はオンチップキャッシュとすることができる。オンチップメモリ１１２は、任意の適切なサイズを有することができ、例えば、コンテンツをレンダリングするために計算される画素値群の１つの構成部分を格納するほど十分に大きくすることができる。
【００４４】
いくつかの実施形態では、オンチップメモリ１１２のサイズは、コンテンツをレンダリングするために使用されるタイルのサイズと同一とすることができる。しかしながら、他の実施形態では、オンチップメモリ１１２のサイズは、タイルのサイズと同じでなくてよい。例えば、オンチップメモリ１１２のサイズは、タイルのサイズよりも大きくすることができる。具体的な例として、オンチップメモリのサイズは、コンテンツをレンダリングするために使用されるタイルのサイズの複数倍（例えば、コンテンツをレンダリングするために使用されるタイルのサイズの２，３，４，５，６倍など）とすることができる。
【００４５】
図２は、計算装置１０２のアーキテクチャを詳細に示している。具体的には、図２は、計算装置１０２内のハードウェア構成要素およびソフトウェア構成要素の例示的なブロック図である。
【００４６】
計算装置１０２はハードウェア構成要素群２４０を備える。ハードウェア構成要素群２４０は、この技術分野で既知の物理的計算装置の非常に多くのハードウェア構成要素のうちのいずれかを含むことができる。例えば、ハードウェア構成要素群２４０は、図１を参照して説明したＧＰＵ１１０、メモリ１２０、およびＣＰＵ１３０を含むことができる。しかしながら、ハードウェア構成要素群２４０はこれらの例による限定を受けず、かつコンテンツのレンダリングをサポートするために必要とされうる任意の他のハードウェア構成要素群を含むことができる。
【００４７】
図２は更に、計算装置１０２内で実行することができるソフトウェア構成要素群を示している。図示の実施形態では、上記のソフトウェア構成要素は、プロセッサ実行可能命令および構成パラメータとして格納することができ、例えば、メモリ１２０に、またはＣＰＵ１３０および／もしくはＧＰＵ１１０に関連付けられた任意の他のメモリに格納することができる。
【００４８】
計算装置１０２内で実行されるソフトウェア構成要素群は、任意の適切なソフトウェア構成要素群とすることができ、１つ以上のアプリケーション２２０、オペレーティングシステム２３０、および／または本明細書に記載される機能性のいずれかを実行するようにＧＰＵを構成することができる命令群を備えることができる。しかしながら、ソフトウェア構成要素群は、本明細書に記載されるソフトウェア構成要素群の例のいずれの例による限定も受けず、したがって計算装置１０２は任意の適切なソフトウェア構成要素群を備えることができることを認識されたい。
【００４９】
アプリケーション群２２０は、任意の適切な数のアプリケーションを含むことができ、各アプリケーションは、任意の適切な種類とすることができ、かつ／あるいは任意の適切な目的を有することができる。例えば、アプリケーションは、コンテンツをレンダリングすること、またはコンテンツをレンダリングさせることにより、レンダリングコンテンツを１人以上のユーザに対して表示できることを要求しうる任意の適切なアプリケーションとすることができる。このようなアプリケーションの非限定的な例には、ビデオゲームアプリケーション、テキスト処理アプリケーション、およびコンテンツ・ブラウジング・アプリケーション（例えば、インターネット・ブラウジング・ソフトウェア、読書用ソフトウェア、写真編集ソフトウェアなど）を含む。
【００５０】
いくつかの実施形態では、アプリケーションは、１つまたは複数のコンテンツレイヤを備えるコンテンツをレンダリングしようとし得る。各コンテンツレイヤは１つ以上のプリミティブを含むことができ、いくつかの例では、１つ以上のプリミティブは複数回現われることができる。例えば、プリミティブは１つのコンテンツレイヤにおいて複数回現われることができる。別の例として、プリミティブは１つよりも多くのコンテンツレイヤにおいて少なくとも１回現われることができる。特定の非限定的な例として、ボックスまたはアイコンのようなプリミティブがウェブページに複数回現われることができる。
【００５１】
いくつかの実施形態では、コンテンツをレンダリングしようとするアプリケーションは、１つ以上のコマンドを発行して、コンテンツをレンダリングさせることができる。アプリケーションは、コマンド（群）を任意の適切な方法で発行することができる。例えば、コマンドは、１つ以上のパラメータを設定することにより、および／または１つ以上の関数を呼び出すことにより発行することができる。具体的な例として、コマンドは、グラフィックライブラリのようなアプリケーション・プログラミング・インターフェース（ＡＰＩ）を用いることにより発行することができる。しかしながら、コマンドは、この技術分野で既知の任意の他の適切な方法で発行することができることを理解されたい。
【００５２】
アプリケーションが出すコマンドは、任意の適切なコマンドとすることができ、任意の適切な理由により発行することができる。例えば、アプリケーションは、１つ以上のコマンドを発行して、どのコンテンツをレンダリングできるかを指示することができる。別の例として、アプリケーションは、１つ以上のコマンドを発行して、コンテンツをいつレンダリングできるかを指示することができる。更に別の例として、アプリケーションは、１つ以上のコマンドを発行して、コンテンツをレンダリングできる方法を指示することができる。この場合、コマンド（群）は、コンテンツレイヤ群をレンダリングする方法に影響を与えることができ、例えば、コンテンツレイヤ群の構成部分を、タイルベースレンダリングを用いてレンダリングする順番に影響を与えることができる。特定の非限定的な例として、コマンド（群）は、１つのタイルに対応するコンテンツレイヤ群の構成部分を、別のタイルに関連するコンテンツレイヤ群の構成部分をレンダリングする前にレンダリングする指示を提供することができる。
【００５３】
いくつかの実施形態では、アプリケーションは、１つ以上のコマンドを発行して、効果を適用するか、または効果をレンダリングコンテンツに適用させることができる。上記効果は、任意の適切な可視効果とすることができ、かつ透過性のような効果とすることができ、この場合、第１「上位」レイヤを部分的に透過的に提示することにより、第２「下位」レイヤの構成部分が第１のレイヤを通じて見えるようにすることができる。上記効果は、クリッピングのような効果とすることもでき、この場合、複数のレイヤをまとめてクリッピングすることにより、これらのレイヤの構成部分がスクリーン上で、まとめて見えるようになる。しかしながら、これらの例は単なる例示に過ぎず、この技術分野で既知の他の非常に多くの可視効果のうちの任意の可視効果を利用することができることを理解されたい。任意のこのような効果を、コンテンツの１つ以上のプリミティブに適用することができ、かつ／あるいはコンテンツが複数のレイヤを含む場合の１つ以上のレイヤに適用することができる。
【００５４】
いくつかの実施形態では、アプリケーションは、１つ以上のコマンドを発行して、計算装置１０２の特殊ハードウェアを用いてコンテンツをレンダリングする方法に影響を与えることができる。例えば、アプリケーションは、１つ以上のコマンドを発行して、ＧＰＵを用いてコンテンツをレンダリングする方法に影響を与えることができ、１つ以上のコマンドを発行して、ＧＰＵを用いてタイルベースのコンテンツレンダリングを行う方法に影響を与えることができる。例えば、アプリケーションは、１つ以上のコマンドを発行して、ＧＰＵに、コンテンツをレンダリングすることに関連する特定の操作を行う順番を通知することができる。いくつかの例では、アプリケーションは、ＧＰＵに、ＧＰＵが「タイルの次にレイヤ」アプローチを用いてレンダリングを行うように通知することができる。他の例では、アプリケーションはＧＰＵに、ＧＰＵが「レイヤの次にタイル」アプローチを用いてレンダリングを行うように通知することができる。
【００５５】
アプリケーションは、タイルベースレンダリングに対する上記アプローチのうちのいずれを用いるかについて任意の適切な方法で決定を行うことができる。例えば、このような決定は、予めプログラムされた１つ以上の基準に基づいて動的に行うことができ、例えば、レンダリング対象のコンテンツに少なくとも部分的に基づいて行うことができる。具体的な例として、アプリケーションは、１つのタイルにレンダリングされるコンテンツが任意の他のタイルにレンダリングされるコンテンツに依存しない場合に、ＧＰＵが「タイルの次にレイヤ」アプローチを用いることができると決定することができる。
【００５６】
計算装置１０２内で実行されるソフトウェア構成要素の別の例が、オペレーティングシステム２３０である。オペレーティングシステム２３０は、任意の適切なオペレーティングシステムとすることができ、かつオペレーティングシステム２３０上で実行するように書かれた非常に多くのアプリケーションのうちの任意のアプリケーション（例えば、アプリケーション群２２０）をサポートすることができる。
【００５７】
オペレーティングシステム２３０は、１つ以上のグラフィックライブラリを備えることができ、これらのグラフィックライブラリを用いて、コンテンツレンダリングに関連する操作を行うことができる。例えば、オペレーティングシステム２３０はグラフィックライブラリ２３２を備えることができる。グラフィックライブラリ２３２はアプリケーションプログラミングインターフェースを含むことができ、このアプリケーションプログラミングインターフェースに１つ以上のアプリケーション（例えば、アプリケーション群２２０）がアクセスして１つ以上のコマンドを発行することにより、コンテンツをレンダリングすることができる。このようなグラフィックライブラリの非限定的な例には、Ｄｉｒｅｃｔ２Ｄ、Ｄｉｒｅｃｔ３Ｄ、およびＯｐｅｎＧＬグラフィックライブラリを含む。
【００５８】
グラフィックライブラリ２３２のようなグラフィックライブラリは、ハードウェア（例えば、ＣＰＵ，ＧＰＵ，ビデオカードなど）とインターフェースをとって、アプリケーションまたはオペレーティングシステムにより発行される、コンテンツをレンダリングすることに関連する、任意のコマンド群を実行することができる。この目的のために、グラフィックライブラリ２３２は、コマンド群および／またはパラメータ群２３４を１つ以上のデバイスドライバに供給して、ハードウェアとインターフェースをとることができる。
【００５９】
したがって、オペレーティングシステム２３０は１つ以上のデバイスドライバを備えることができ、これらのデバイスドライバを用いて、任意の適切なハードウェアとインターフェースをとることができる。例えば、オペレーティングシステム２３０はＧＰＵデバイスドライバ２３６を備えることができ、デバイスドライバ２３６を用いて、ＧＰＵ１１０のようなＧＰＵとインターフェースをとることができる。デバイスドライバ２３６を用いて、非常に多くの方法のうちの任意の方法で、ＧＰＵとインターフェースをとることができる。例えば、デバイスドライバ２３６を用いて、データをＧＰＵに送信すること、コマンド群をＧＰＵに送信すること、および／またはデータをＧＰＵから受信することができる。追加的に、または代替的に、オペレーティングシステム２３０は、任意の適切な数のドライバを備えることにより、計算装置１０２の任意の適切なハードウェア部分（例えば、図１を参照して説明したディスプレイ１０６のようなディスプレイ）とインターフェースをとることができ、あるいは計算装置１０２に通信可能に接続された任意の適切なハードウェア部分とインターフェースをとることができる。
【００６０】
いくつかの実施形態では、ＧＰＵデバイスドライバ２３６は、コンテンツをレンダリングするプロセスの一部として、データをＧＰＵに送信することを容易にすることができる。デバイスドライバ２３６は、コンテンツをレンダリングするプロセスの一部として、任意の適切なデータの送信を容易にすることができ、例えば、レンダリング対象のコンテンツに関連する任意のデータの送信を容易にすることができる。
【００６１】
いくつかの実施形態では、コンテンツをレンダリングするプロセスの一部として、ＧＰＵデバイスドライバ２３６は、１つ以上のコマンドおよび／またはパラメータ２３８をＧＰＵ１１０および／またはレンダリングプロセスの種々段階を実行する任意の他の適切なハードウェアに送信することができる。上記のコマンド（および／またはパラメータ群）は、任意の適切な種類とすることができ、例えば、ＧＰＵを構成してタイルベースレンダリングを行なわせるコマンド群および／またはパラメータ群とすることができる。例えば、コマンド群および／またはパラメータ群２３８によってＧＰＵを構成して、特定サイズのタイル群を用いてタイルベースレンダリングを行なわせることができる。別の例として、コマンド群および／またはパラメータ群２３８によってＧＰＵを構成して、複数のレイヤを含むコンテンツのタイルベースレンダリングを、上に既に説明している「タイルの前にレイヤ」アプローチまたは「レイヤの前にタイル」アプローチのうちの一方を用いて行なわせることができる。
【００６２】
図１および図２を参照して説明した計算装置１０２のような計算装置は、コンテンツをレンダリングするように構成することができる。１つのこのようなプロセスについて、少なくとも２つのレイヤを含むコンテンツをレンダリングする例示的なプロセス３００のフローチャートである図３を参照して説明する。プロセス３００の動作の少なくとも一部は、ＧＰＵまたはＣＰＵのようなプロセッサが実行することができる。
【００６３】
プロセス３００は、動作３０２から始まり、この動作３０２では、レンダリング対象のコンテンツを取得することができる。コンテンツは任意の適切なコンテンツとすることができ、例えば、１つ以上のコンテンツレイヤを含むことができる。各コンテンツレイヤは、任意の適切な種類のコンテンツを含むことができ、既に説明した様々な種類のコンテンツのうちの任意の種類のコンテンツを含むことができる。具体的には、各コンテンツレイヤは、１つ以上のプリミティブを含むことができる。
【００６４】
レンダリング対象のコンテンツは、任意の適切な方法で取得することができる。いくつかの実施形態では、レンダリング対象のコンテンツは、プロセス３００を実行するように構成される計算装置の１つ以上のソフトウェア構成要素から受信することができる。例えば、レンダリング対象のコンテンツは、図２を参照して説明されるソフトウェア構成要素群のうちのいずれかのソフトウェア構成要素から受信することができる。具体的な例として、レンダリング対象のコンテンツは、コンテンツのレンダリングを要求し、かつコンテンツをレンダリングするための１つ以上のコマンドを発行しているソフトウェアアプリケーションから受信することができる。
【００６５】
どのようにしてレンダリング対象のコンテンツを動作３０２で取得するかに関係なく、プロセス３００は判断ブロック３０４に進み、この判断ブロック３０４では、コンテンツを、ミッドシーンフラッシュを用いることができる「レイヤの次にタイル」アプローチを用いてレンダリングするか、あるいはミッドシーンフラッシュを用いなくてよい「タイルの次にレイヤ」アプローチを用いてレンダリングするかについて決定することができる。換言すると、判断ブロック３０４では、タイルＡに対応するコンテンツの少なくとも１つの構成部分をレンダリングした後、少なくとも１つの操作をタイルＡに対応するコンテンツに関連する画素値群に対して行う前に、他のタイル群に対応するコンテンツをレンダリングするかどうかを決定することができる。したがって、判断ブロック３０４では、レンダリングに関連するコマンド群を、コマンドが生成された順番で処理するかどうか、またはこれらのコマンドを異なる順番で処理して、コマンド群を、各グループが特定のタイルに対応するコンテンツのレンダリングに関連付けられるように、グループ群で処理するかどうかについて決定することができる。
【００６６】
この決定は、任意の適切な方法で行うことができる。例えば、上記決定は、コンテンツレンダリングに関する上記２つのアプローチのうちのいずれのアプローチを用いるかについて示すことができる指示を受信することにより行うことができる。上記指示は、任意の適切な種類の指示とすることができ、例えば、コンテンツレンダリングに関する上記アプローチ群のうちのいずれのアプローチを用いるかについて通知することができる値を有するパラメータを含むことができる。したがって、上記指示を受信する際、このようなパラメータを受信することができる。１つの例として、このようなパラメータは、ミッドシーンフラッシュを行うのを回避した方が安全である場合を示すことができ、例えばあるタイルに関連する合成画像の画素値群が、合成画像を形成するために合成される画像レイヤ群の対応するタイル群のコンテンツにのみ依存することを示すことができ、これにより、レンダリングに関する「タイルの次にレイヤ」アプローチを用いることができる。この場合、少なくとも１つの操作を、タイルＡに対応するコンテンツに関連する画素値群に対して、任意の他のタイル群に対応するコンテンツをレンダリングする前に行うかどうかを決定することには、少なくとも１つの操作を上記の１つ以上の画素値に対して最初に行うための指示を受信することを含むことができる。
【００６７】
いくつかの実施形態では、「レイヤの次にタイル」アプローチを用いることができると決定することができる。この決定は、非常に多くのシナリオのうちの任意のシナリオにおいて生じうる。例えば、アプリケーションは、１つのレイヤをレンダリングするにあたり既にレンダリングされている別のレイヤ内の任意の位置に関連付けられた画素値群の読み出しを要求することができるようにして、複数のレイヤを含むコンテンツをレンダリングするように構成することができる。この場合、上記１つのレイヤをレンダリングするためには、他のレイヤの全てのタイルがレンダリングされている必要がある可能性がある。具体的な例として、この状況は、空間的にボケさせる効果をレンダリング対象のコンテンツに適用する場合に起こりうる。これとは異なり、「タイルの次にレイヤ」アプローチは、１つのレイヤの画素をレンダリングするにあたり、上記レイヤ内の上記画素と同じ位置にある他のレイヤ群の画素値が必要となる場合に用いることを決定することができる。
【００６８】
判断ブロック３０４において、「レイヤの次にタイル」アプローチを用いることにより、ミッドシーンフラッシュを用いることができると決定される場合、プロセス３００は、コンテンツレイヤをレンダリングすることができる動作３０６に進む。コンテンツレイヤは、任意の適切な方法でレンダリングすることができる。例えば、コンテンツレイヤをレンダリングする際、１つ以上の画素値をコンテンツレイヤに基づいて計算することができる。いくつかの場合では、計算された画素値（群）はイメージプレーンに格納することができる。いくつかの例では、コンテンツレイヤは、タイルベースレンダリングを用いてレンダリングすることにより、コンテンツレイヤをタイル単位で計算して、画素値群を、タイル群に対応するコンテンツに関連するグループ群で計算することができる。この場合、コンテンツレイヤは、複数のタイルに対応するコンテンツを処理することによりレンダリングすることができる。
【００６９】
コンテンツレイヤを動作３０６において、タイル単位でレンダリングする際、プロセッサ（例えば、ＧＰＵまたはＣＰＵ）に通信可能に接続された高速メモリを使用することができる。例えば、あるタイルに対応するコンテンツ（または、上記タイルに対応するコンテンツの少なくとも１つの構成部分）をレンダリングする際、オンチップメモリ１１２（図１）を使用することができる。高速メモリは、任意の適切な方法で使用することができ、例えば、上記タイルに対応するコンテンツレイヤコンテンツに基づいて計算される１つ以上の画素値を格納するために使用することができる。
【００７０】
あるタイルに対応するコンテンツレイヤの少なくとも１つの構成部分をレンダリングする際、オンチップメモリがコンテンツレイヤ全体に関連する画素値群を格納するほど十分に大きくない場合があるため、オンチップメモリ１１２に格納された１つ以上の画素値に上書きする場合があることを理解されたい。その結果、コンテンツレイヤをレンダリングする際、各タイルに関連する画素値群を高速メモリから、速度が遅い可能性がある別のより大容量のメモリ（例えば、メモリ１２０、イメージプレーン１２２など）にコピーすることにより、同じコンテンツレイヤの別のタイルを、既に計算されている画素値群を失うことなくレンダリングすることができる。しかしながら、コンテンツレイヤに関連する１つ以上の画素値を格納するほど十分な容量を持つ任意のメモリを用いることができることを認識されたい。したがって、動作３０６の最後では、第１コンテンツレイヤに基づいて計算される画素値群は、メモリ（例えば、メモリ１２０、イメージプレーン１２２など）に格納することができる。
【００７１】
画素値群を、高速メモリ（例えば、オンチップメモリ１１２）とより大容量のメモリとの間でコピーする操作は、ＧＰＵ、および／またはＧＰＵを制御するソフトウェア（例えば、ＧＰＵデバイスドライバ２３６）が自動的に実行する操作とすることができ、したがって「暗黙的」コピーと表記することができるが、その理由は、アプリケーションは、ＧＰＵ、および／またはＧＰＵを制御するソフトウェアに明示的に命令して上記操作を実行させる必要がないからである。前述したように、複数の暗黙的コピーをオンチップメモリと速度が低い可能性のある別のメモリとの間で行うと、メモリがキャッシュスラッシングを引き起こしてしまう場合がある。
【００７２】
第１コンテンツレイヤを動作３０６でレンダリングした後、プロセス３００は動作３０８に進み、この動作３０８では、イメージプレーンに格納されたデータをコピーすることができる。イメージプレーンに格納されデータは、任意の適切なデータとすることができ、例えば、１つ以上の画素値を含むことができる。具体的な例として、上記データには、動作３０６において第１コンテンツレイヤに基づいて計算され、かつイメージプレーンに格納された１つ以上の画素値を含むことができる。上記データの任意の適切な構成部分を、コピーすることができる。いくつかの実施形態では、イメージプレーンに格納された全データをコピーすることができるのに対し、他の実施形態では、イメージプレーンに格納されたデータの一構成部分をコピーすることができる。
【００７３】
上記データは、動作３０８において、任意の適切な理由によりコピーすることができる。いくつかの実施形態では、上記データは、上記データをコピーすべきであることを示す指示（例えば、コマンド、関数呼出し、パラメータなど）の結果としてコピーすることができる。この場合、上記コピーは、明示的コピーと表記される。このような指示は、任意の適切なソースから供給することができ、例えば、計算装置のソフトウェア構成要素（例えば、図２を参照して説明したソフトウェア構成要素群のうちのいずれかのソフトウェア構成要素）により供給することができる。
【００７４】
上記データのどの構成部分をコピーすることができるかに関係なく、上記データは任意の適切な宛先にコピーすることができる。例えば、上記データは、上記データのコピーを格納するほど十分な容量を有することができる任意のメモリ領域にコピーすることができる。このようなメモリ領域は、任意の適切なメモリの領域とすることができる。例えば、上記メモリ領域は、図１を参照して説明したメモリ１２０のような、プロセッサ（例えば、ＣＰＵ又はＧＰＵ）に通信可能に接続された任意のメモリの領域とすることができる。したがって、いくつかの実施形態では、上記データは、メモリ１２０の１つの領域（例えば、イメージプレーン１２２）からメモリ１２０の別の領域にコピーすることができる。
【００７５】
いくつかの実施形態では、動作３０８において行われるコピーのような明示的なデータのコピーを行って、任意の適切な後続の使用のためにデータのコピーを作成することができる。例えば、コピーされたデータは、合成操作、および／または効果をレンダリングコンテンツに適用する操作の一部として使用することができる。具体的な例として、コピーされたデータは、以下に説明するように、動作３０６において第１コンテンツレイヤに基づいて計算された画素値群と、動作３１０において第２コンテンツレイヤに基づいて計算される画素値群との間のブレンド操作の一部として使用することができる。この場合、第２レイヤをレンダリングしているときに、上記コピーされたデータの構成部分を高速メモリに取り込むことができる。
【００７６】
次に、プロセス３００は動作３１０に進み、この動作３１０では、別のコンテンツのレイヤをレンダリングすることができる。他のコンテンツのレイヤは、任意の適切な方法でレンダリングすることができ、例えば、第１レイヤをレンダリングした方法と同様の方法で、１度に１タイルの割合でレンダリングすることができる。したがって、他のコンテンツレイヤをレンダリングする際、高速メモリを使用し、かつ１つ以上の暗黙的コピー操作を行うことができる。更に、他のレイヤをレンダリングする際、イメージプレーンに格納することができる１つ以上の画素値に上書きすることができることを理解されたい。例えば、第２レイヤをレンダリングする際、第１コンテンツレイヤをレンダリングしながら動作３０６において計算された１つ以上の画素値に上書きすることができる。実際、格納画素値にこのように上書きできることが、画素値群を動作３０８においてコピーすることの動機づけとなりうる。したがって、コピーされた画素値を取り出し、かつ使用して、コンテンツをレンダリングすることができる。
【００７７】
いくつかの実施形態では、１つ以上の操作は、高速メモリおよび／またはより大容量のメモリ（例えば、メモリ１２０）に格納されるデータに対して、動作３１０の一部として行うことができる。操作（群）は、任意の適切な操作（群）とすることができ、かつ高速メモリおよび／またはより大容量のメモリに格納される１つ以上の画素値に対して行うことができる。いくつかの実施形態では、操作（群）において、高速メモリおよび／またはより大容量のメモリ内の１つ以上の画素を使用して、１つ以上の新たな画素値を計算することができる。いくつかの場合では、操作（群）において、高速メモリに格納された１つ以上の画素と動作３０６においてコピーされたデータ（例えば、イメージプレーンに既に格納されている１つ以上の画素値）とを使用して、１つ以上の新たな画素値を計算することができる。
【００７８】
いくつかの実施形態では、操作（群）は、コンテンツの少なくとも１つの構成部分に効果を適用する操作の一部として行うことができる。上記効果は、非常に多くの種類の効果のうちのいずれかの効果とすることができ、例えば、透過性、クリッピングなどのような効果とすることができる。具体的な例として、操作群は、第２コンテンツレイヤに基づいて計算される１つ以上の画素値と動作３０８においてイメージプレーンからコピーされる予め計算済みの１つ以上の画素値とに基づいて１つ以上の新たな画素値を計算することにより、透過性またはクリッピング効果のようなブレンド効果を達成することができる。しかしながら、これらの効果は単なる例示に過ぎず、操作（群）は、任意の他の適切な効果をコンテンツの少なくとも１つの構成部分に適用する操作の一部として行うことができることを認識されたい。動作３１０において、第２コンテンツレイヤをレンダリングし、１つ以上の操作を行った後、プロセス３００は完了する。
【００７９】
動作３０６〜３１０において、複数の暗黙的コピーがレンダリング対象のコンテンツの各タイルについて行われる可能性があることを認識されたい。具体的には、暗黙的コピーは、レンダリング対象のコンテンツレイヤの各タイルについて行われる可能性がある。以下に説明するように、「タイルの次にレイヤ」アプローチでは、暗黙的コピーをコンテンツの各タイルについて１回行えばよいので、暗黙的コピー群の数は減らすことができる。
【００８０】
判断ブロック３０４において「タイルの次にレイヤ」アプローチをプロセス３００の一部として用いると決定することもでき、それにより、さらなるレイヤを、ミッドシーンフラッシュを用いることなくレンダリングすることができることを思い起こされたい。換言すると、判断ブロック３０４では、タイルＡに対応するコンテンツの少なくとも１つの構成部分をレンダリングした後、タイルＡ以外のタイルに対応するコンテンツの少なくとも１つの別の構成部分をレンダリングする前に、少なくとも１つの操作を、タイルＡに対応するコンテンツに関連する画素値群に対して行うことができると決定することができる。
【００８１】
この場合、プロセス３００は動作３１６に進み、この動作３１６では、あるタイルに対応する第１コンテンツレイヤの少なくとも１つの構成部分をレンダリングすることができる。上記タイルに対応するコンテンツレイヤの任意の適切な構成部分を、レンダリングすることができる。上記タイルに対応するコンテンツレイヤの構成部分は、任意の適切な方法でレンダリングすることができる。例えば、上記コンテンツレイヤの構成部分をレンダリングする際、プロセッサの高速オンチップメモリを使用して、上記コンテンツレイヤの構成部分に基づいて、１つ以上の画素値を計算することができる。
【００８２】
どのように第１コンテンツレイヤの構成部分をレンダリングすることができるかに関係なく、プロセス３００は動作３１８に進み、この動作３１８では、上記構成部分がレンダリングされた高速メモリに格納されたデータをコピーすることができる。高速メモリに格納されるデータは、任意の適切なデータとすることができ、例えば、動作３１６において計算された１つ以上の画素値を含むことができる。具体的な例として、上記データには、動作３１６においてコンテンツレイヤの構成部分をレンダリングする操作の一部として計算された１つ以上の画素値を含むことができる。高速メモリに格納されるデータの任意の適切な構成部分を、コピーすることができる。
【００８３】
上記データのどの構成部分をコピーすることができるかに関係なく、上記データは任意の適切な宛先にコピーすることができる。例えば、上記データは、上記データのコピーを格納するほど十分な容量を有しうる任意のメモリ領域にコピーすることができる。このようなメモリ領域は、任意の適切なメモリの領域とすることができる。例えば、上記メモリ領域は、図１を参照して説明したメモリ１２０のような、プロセッサ（例えば、ＣＰＵまたはＧＰＵ）に通信可能に接続された任意のメモリの領域とすることができる。
【００８４】
上記データは、動作３１８において、任意の適切な理由によりコピーすることができる。いくつかの実施形態では、上記データは、上記データをコピーすべきであることを示す指示（例えば、コマンド、関数呼出し、パラメータなど）の結果としてコピーすることができる。このような指示は、動作３０８を参照して説明したソースを含む任意の適切なソースから供給することができる。したがって、動作３１８において行われるコピーは、明示的コピーとすることができる。
【００８５】
いくつかの実施形態では、動作３１８において行われるコピーを実行して、任意の適切な後続の使用のためにコピーを作成することができる。例えば、コピーされたデータは、合成操作および／またはレンダリングコンテンツに効果を適用する操作の一部として使用することができる。具体的な例として、コピーされたデータは、以下に説明するように、動作３１６において第１コンテンツレイヤに基づいて計算された画素値群と動作３２０において第２コンテンツレイヤに基づいて計算される画素値群との間のブレンド操作の一部として使用することができる。この場合、第２レイヤをレンダリングしているときに、コピーされたデータの構成部分を高速メモリに取り込むことができる。
【００８６】
次に、プロセス３００は動作３２０に進み、この動作３２０では、同一タイルに対応する第２コンテンツレイヤの少なくとも１つの構成部分をレンダリングすることができる。第２レイヤの上記構成部分は、任意の適切な方法でレンダリングすることができ、例えば、第１レイヤの構成部分をレンダリングした方法と同じ方法でレンダリングすることができる。既に説明しているように、第２レイヤの構成部分を上記タイルにレンダリングする際、高速オンチップメモリに格納することができる１つ以上の画素値に上書きすることができる。例えば、第２レイヤの構成部分をレンダリングする際、第１コンテンツレイヤの構成部分をレンダリングしながら動作３１６において計算された１つ以上の画素値に上書きすることができる。
【００８７】
次に、プロセス３００は動作３２２に進み、この動作３２２では、１つ以上の操作を上記の画素値に対して行うことができる。操作（群）は、任意の適切な操作（群）とすることができる。いくつかの実施形態では、操作（群）は、高速オンチップメモリに格納された１つ以上の画素に対して行うことができる。いくつかの実施形態では、操作（群）において、より低速のメモリ（例えば、メモリ１２０）に格納された１つ以上の画素を使用して、１つ以上の新たな画素値を計算することができる。いくつかの場合では、操作（群）において、高速オンチップメモリに格納された１つ以上の画素と動作３１８においてコピーされたデータ（例えば、第１レイヤの構成部分に基づいて計算された１つ以上の画素値）とを使用して、１つ以上の新たな画素値を計算することができる。追加的に、または代替的に、操作（群）では、１つ以上の新たな画素値を上記タイルに保存することができる。
【００８８】
既に説明したように、いくつかの実施形態では、１つ以上の操作は、コンテンツの少なくとも１つの構成部分に効果を適用する操作の一部として実行することができる。上記効果は、非常に多くの種類の効果のうちのいずれかの効果とすることができ、例えば、透過性、クリッピングなどのような効果とすることができる。具体的な例として、操作群を行って、高速オンチップメモリに格納された１つ以上の画素値と動作３１８において高速オンチップメモリからコピーされた１つ以上の画素値とに基づいて１つ以上の新たな画素値を計算することにより、透過性またはクリッピング効果のようなブレンド効果を達成することができる。
【００８９】
１つ以上の操作を動作３２２において行った後、プロセス３００は動作３２３に進み、この動作３２３では、高速メモリ（例えば、ＧＰＵオンチップメモリ１１２）に格納された任意のデータを別のメモリ（例えば、メモリ１２０）にコピーすることができるように、暗黙的コピーが行われうる。次に、プロセス３００は判断ブロック３２４に進み、この判断ブロック３２４では、レンダリングされうるさらなるコンテンツタイルがあるかどうかを決定することができる。この決定は、任意の適切な方法で行うことができ、例えば、動作３１６〜３２３がコンテンツの各構成部分について実施されたかどうかを確認することにより行うことができる。別の例として、コンテンツをレンダリングするためにイメージプレーン内の全てのタイルを用いる訳ではない（例えば、コンテンツはスクリーンのうちのある構成部分のみに対応するコンテンツを含むことができる）ため、上記決定は、動作３１６〜３２３がコンテンツに基づいて取得された画素値群を格納することができるイメージプレーン内の各タイルについて実施されたかどうかを確認することにより行うことができる。
【００９０】
判断ブロック３２４において、レンダリングされうるさらなるコンテンツタイルがあると決定された場合、プロセス３００は動作３１６にループバックし、動作３１６〜３２３を繰り返すことができる。代わりに、判断ブロック３２４において、レンダリングされうるさらなるコンテンツタイルが無いと決定された場合、プロセス３００は完了する。
【００９１】
プロセス３００は例示であり、プロセス３００の多くの変更が可能であることを認識されたい。例えば、図示の実施形態では、レンダリング対象のコンテンツは２つのコンテンツレイヤを含んでいる。しかしながら、これは、コンテンツが任意の適切な数のコンテンツレイヤを含むことができるので、本発明に対する限定ではない。したがって、プロセス３００は、任意の適切な数のコンテンツレイヤ（例えば、少なくとも３レイヤ、少なくとも４レイヤなど）をレンダリングするように変更することができる。これは任意の適切な方法で行うことができ、例えば、プロセス３００の一部として、２つよりも多くのコンテンツレイヤ（例えば、３レイヤ、４レイヤなど）の１つのタイルに対応するコンテンツの構成部分をレンダリングすることができ、別のタイルに対応するコンテンツをレンダリングする操作に移行する前に、任意の適切な操作（例えば、透過性またはクリッピング効果を適用する操作）を上記１つのタイルに対応するコンテンツに関連する１つ以上の画素値に対して行うことができる。
【００９２】
別の例として、図示の実施形態において、レイヤ群の合成を行う操作は、別のメモリ（例えば、メモリ１２０）にコピーされて格納された画素値群を用いて、高速オンチップメモリに格納された画素値群に対して行うことができる。しかしながら、他の実施形態では、このような操作は、オンチップメモリ内の画素値群を用いて、他のメモリに格納された画素値群に対して行うことができる。より一般的に、操作群は、任意の適切なメモリ内の画素群に対して行うことにより、レンダリング性能を向上させることができ、したがって、「タイルの次にレイヤ」アプローチでは、あるタイルに対応するコンテンツに関連する画素グループに対する操作群は、任意のメモリ内で行うことができ、例えば、ＧＰＵに通信可能に接続された任意の高速メモリ内で行うことができる。
【００９３】
プロセス３００の２つの経路（すなわち、動作３０６〜３１０、および動作３１６〜３２３）の差をさらに理解するために、図４ａ〜４ｂは、各場合においてどのようにコンテンツをレンダリングすることができるかを示している。具体的には、図４ａは、「レイヤの次にタイル」アプローチを用い、かつミッドシーンフラッシュを用いる例示的なプロセス４００を示している。これとは異なり、図４ｂは、「タイルの次にレイヤ」アプローチを用い、かつミッドシーンフラッシュを用いない例示的なプロセス４２０を示している。
【００９４】
図示のように、プロセス４００および４２０は、各レイヤが２つのプリミティブを含む構成の２つのコンテンツレイヤを含むコンテンツをレンダリングすることにより、各コンテンツレイヤが２タイルにおいてレンダリングされるものとして図示されている。詳細には、この非限定的な例では、第１コンテンツレイヤおよび第２コンテンツレイヤはそれぞれ、２つのプリミティブを含み、各プリミティブが特定のタイルに対応している。しかしながら、これは本発明に対する限定ではなく、これらのプロセスの各々を用いて任意の適切な数のレイヤを含むコンテンツをレンダリングすることができ、各コンテンツレイヤには任意の適切な数のタイルに対応する任意の適切なコンテンツを含むことができる。また、この例では、図示のプリミティブ群の各プリミティブは１タイルに対応しているが、これは本発明に対する限定ではなく、あるプリミティブが任意の適切な数のタイルに対応することにより、複数のタイルに関連する画素値群を用いて上記プリミティブをレンダリングすることができることを認識されたい。
【００９５】
プロセス４００は、動作４０２〜４０５において始まり、これらの動作４０２〜４０５では、第１コンテンツレイヤをレンダリングすることができる。第１コンテンツレイヤは、任意の適切な方法でレンダリングすることができ、例えば、タイルベースレンダリングを用いてレンダリングすることができる。したがって、動作４０２において、第１タイルに対応する第１コンテンツレイヤの少なくとも１つの構成部分をレンダリングすることができ、動作４０４において、第２タイルに対応する第１コンテンツレイヤの少なくとも１つの別の構成部分をレンダリングすることができる。暗黙的コピーが動作４０２および４０４それぞれの後に続く動作４０３および４０５において行われることにより、動作４０２および４０４において計算される画素値群を記憶することができることに留意されたい。動作４０３および４０５において、上記の画素値は、高速メモリ（例えば、ＧＰＵオンチップメモリ１１２）からイメージプレーン（例えば、イメージプレーン１２２）または任意の他の適切なメモリにコピーすることができる。
【００９６】
次に、プロセス４００は動作４０６に進み、この動作４０６では、イメージプレーン（例えば、イメージプレーン１２２）のデータをコピーすることができる。コピーされるデータは、任意の適切なデータであってよく、第１コンテンツレイヤをレンダリングする操作の一部として計算される画素値群を含むことができる。上記データは任意の適切な宛先にコピーすることができ、例えば、コピーされたデータを格納するほど十分な容量を有するメモリの任意の他の領域にコピーすることができる。動作４０６において行われるコピー操作は、明示的コピー操作とすることができる。
【００９７】
どのようにデータをコピーできるか、またはどの宛先にデータをコピーできるかに関係なく、プロセス４００は動作４０８〜４１２に進み、これらの動作４０８〜４１２では、第２コンテンツレイヤをレンダリングすることができる。第２レイヤは、任意の適切な方法でレンダリングすることができ、例えば、タイルベースレンダリングを用いてレンダリングすることができる。したがって、動作４０８において、第１タイルに対応する第２コンテンツレイヤの少なくとも１つの構成部分をレンダリングすることができる。
【００９８】
次に、動作４０９において、１つ以上の操作を、第１タイルに対応するコンテンツに関連する画素群に対して行うことができる。例えば、動作４０９では、１つ以上の操作を行ってブレンド効果を適用することができる。このような操作では、タイル１に対応する第１コンテンツレイヤの構成部分に基づいて計算された（動作４０２における）画素値群とタイル１に対応する第２コンテンツレイヤの構成部分に基づいて計算された（動作４０８における）画素値群とに基づいて、新たな画素値群を計算することができる。１つ以上の操作を行った後、暗黙的コピーが動作４０９の一部として行われうることにより、動作４０８〜４０９において計算された任意の画素値群を記憶することができる。
【００９９】
動作４０８〜４０９の後、動作４１０において、第２タイルに対応する第２コンテンツレイヤの少なくとも１つの別の構成部分をレンダリングすることができる。次に、動作４１２において、１つ以上の操作を、第２タイルに対応するコンテンツに関連する画素群に対して行うことができる。例えば、１つ以上の操作を行ってブレンド効果を適用することができる。このような操作では、タイル２に対応する第１コンテンツレイヤの構成部分に基づいて計算された（動作４０４における）画素値群とタイル２に対応する第２コンテンツレイヤの構成部分に基づいて計算された（動作４１０における）画素値群とに基づいて、新たな画素値群を計算することができる。１つ以上の操作を行った後、暗黙的コピーが動作４１２の一部として行われうることにより、動作４１０〜４１２において計算された任意の画素値群を記憶することができる。
【０１００】
プロセス４００において、タイル２に対応する第１コンテンツレイヤの少なくとも１つの別の構成部分をレンダリングする動作４０４が終わるまで、タイル１に対応するコンテンツに関連する画素値群に対する操作はまったく行われないことをさらに理解されたい。その結果、プロセス４００は、ミッドシーンフラッシュを行うプロセスであると言うことができ、すなわち、既に計算されている画素値群に対する任意の操作が行われる前に第１コンテンツレイヤの全てのタイルが処理される。
【０１０１】
これとは異なり、ミッドシーンフラッシュは、プロセス４２０では行われない。プロセス４２０は動作４２２において始まり、この動作４２２では、第１タイルに対応する第１コンテンツレイヤの少なくとも１つの構成部分をレンダリングすることができる。次に、プロセス４２０は動作４２４に進み、この動作４２４では、第１タイルに格納されたデータをコピーすることができる。プロセス３００の動作３１８について説明したように、上記データは、任意の適切なデータとすることができ、第１コンテンツレイヤの少なくとも１つの構成部分をレンダリングする操作の一部として計算された画素値群を含むことができる。上記データは、高速メモリ（例えば、オンチップメモリ１１２）からイメージプレーン（例えば、イメージプレーン１２２）または任意の他の適切なメモリにコピーすることができる。
【０１０２】
どのようにデータをコピーできるか、またはどの宛先にデータをコピーできるかに関係なく、プロセス４２０は動作４２６に進み、この動作４２６では、第１タイルに対応する第１コンテンツレイヤの少なくとも１つの別の構成部分をレンダリングすることができる。
【０１０３】
次に、プロセス４２０は動作４２８に進み、この動作４２８では、１つ以上の操作を、第１タイルに対応するコンテンツに関連する画素値群に対して行うことができる。前に説明したように、このような操作は、任意の適切な目的で行うことができ、例えば、ブレンド効果を適用するために行うことができる。この場合、新たな画素値群を、動作４２４においてコピーされた画素値群と動作４２６において計算された画素値群とに基づいて計算することができる。１つ以上の操作を行った後、暗黙的コピーが動作４２８の一部として行われうることにより、動作４２６〜４２８において計算されたいかなる画素値群も記憶することができる。
【０１０４】
動作４２８の後、プロセス４２０は動作４３０〜４３６に進み、これらの動作４３０〜４３６では、動作４２２〜４２８において第１レイヤおよび第２レイヤの構成部分を第１タイルにレンダリングした方法に類似する方法で、第１レイヤおよび第２レイヤの双方の構成部分を第２タイルにレンダリングすることができる。プロセス４２０は動作４３６の後に完了する。
【０１０５】
プロセス４２０では、１つ以上の操作を第１タイルに格納された画素値群に対して行った後になるまで、コンテンツの構成部分が第２タイルにまったくレンダリングされないことを理解されたい。具体的には、任意のコンテンツが第２タイルにレンダリングされる前に、両コンテンツレイヤの構成部分が第１タイルにレンダリングされる。その結果、プロセス４００におけるよりもプロセス４２０においてキャッシュスラッシングが起こり難くなりうる。明らかなことであるが、プロセス４２０では、２つの暗黙的コピーしか行われない（動作４２８および４３６）のに対し、プロセス４００では、４つの暗黙的コピーが行われる（動作４０３，４０５，４０９，および４１２）。
【０１０６】
図５は、本発明を実施することができる適切な計算システム環境５００の一例を示している。計算システム環境５００は、適切な計算環境の一例に過ぎず、本発明の使用法または機能性の範囲について限定を示唆するものではない。計算環境５００は、例示的な動作環境５００に図示されている任意の１つの構成要素、または構成要素群の組合せに関するいかなる依存性も要件も有するものとして解釈されるべきではない。
【０１０７】
本発明は、非常に多くの他の汎用計算システム環境若しくは構成、または専用計算システム環境若しくは構成で動作する。本発明での使用に適した周知の計算システム、環境、および／または構成の例として、これらには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マイクロプロセッサシステム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブルコンシューマ電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記システム群または装置群のうちのいずれかを含む分散計算環境などが挙げられる。
【０１０８】
計算環境では、プログラムモジュールのようなコンピュータ実行可能命令を実行することができる。一般的に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は、タスクが通信ネットワークを介してリンクされたリモート処理装置群により実行されるところの分散計算環境において実施することもできる。分散計算環境では、プログラムモジュールは、メモリ記憶装置を含むローカルコンピュータ記憶媒体およびリモートコンピュータ記憶媒体の双方に格納することができる。
【０１０９】
図５を参照するに、本発明を実施する例示的なシステムは、コンピュータ５１０の形態の汎用計算装置を含む。コンピュータ５１０の構成要素として、これらには限定されないが、処理ユニット５２０、システムメモリ５３０、およびシステムメモリを含む種々のシステム構成要素を処理ユニット５２０に接続するシステムバス５２１を挙げることができる。システムバス５２１は、メモリバスまたはメモリコントローラ、ペリフェラルバス、および多種多様なバスアーキテクチャのうちの任意のバスアーキテクチャを用いるローカルバスを含むいくつかの種類のバスアーキテクチャのうちの任意の種類のバスアーキテクチャとすることができる。一例として、これらには限定されないが、このようなアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ）ローカルバス、およびメザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られているペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスを含む。
【０１１０】
コンピュータ５１０は典型的には、多種多様なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ５１０がアクセスすることができる任意の可用媒体とすることができ、揮発性媒体および不揮発性媒体、着脱可能媒体および着脱不能媒体を共に含むことができる。一例として、これらには限定されないが、コンピュータ可読媒体として、コンピュータ記憶媒体および通信媒体を挙げることができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータのような情報を記憶する任意の方法または技術において実装される揮発性媒体および不揮発性媒体、着脱可能媒体および着脱不能媒体を含む。コンピュータ記憶媒体として、これらには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デシタル多用途ディスク（ＤＶＤ）若しくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置、又は所望の情報を記憶するために用いることができ、かつコンピュータ５１０がアクセスすることができる任意の他の媒体が挙げられる。通信媒体は典型的には、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを、搬送波または他の輸送機構のような変調データ信号において具体化し、任意の情報伝送媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するように設定される、または変更される信号特性群のうちの１つ以上の特性を有する信号を意味する。一例として、これらには限定されないが、通信媒体として、有線ネットワークまたは直接ワイヤ接続のような有線媒体、並びに音波、ＲＦ、赤外線および他の無線媒体のような無線媒体を挙げることができる。上に挙げた要素のうちの任意の要素の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
【０１１１】
システムメモリ５３０は、リードオンリーメモリ（ＲＯＭ）５３１およびランダムアクセスメモリ（ＲＡＭ）５３２のような揮発性メモリおよび／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中などにコンピュータ５１０内の要素間での情報の転送を容易にする基本ルーチンを含むベーシック入力／出力システム５３３（ＢＩＯＳ）は典型的には、ＲＯＭ５３１に格納される。ＲＡＭ５３２は典型的には、処理ユニット５２０が直接的にアクセス可能であり、かつ／あるいは処理ユニット５２０により現在実行されているデータおよび／またはプログラムモジュールを記憶する。一例として、非限定的に、図５は、オペレーティングシステム５３４、アプリケーションプログラム５３５、他のプログラムモジュール５３６、およびプログラムデータ５３７を示している。
【０１１２】
コンピュータ５１０は更に、他の着脱可能／着脱不能な揮発性／不揮発性コンピュータ記憶媒体を含むことができる。一例に過ぎないが、図５は、着脱不能な不揮発性磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ５４１、着脱可能な不揮発性磁気ディスク５５２に対して読み取りまたは書き込みを行う磁気ディスクドライブ５５１、およびＣＤ  ＲＯＭまたは他の光媒体のような着脱可能な不揮発性光ディスク５５６に対して読み取りまたは書き込みを行う光ディスクドライブ５５５を示している。例示的な動作環境において使用することができる他の着脱可能／着脱不能な揮発性／不揮発性のコンピュータ記憶媒体として、これらには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが挙げられる。ハードディスクドライブ５４１は典型的には、インターフェース５４０のような着脱不能なメモリインターフェースを介してシステムバス５２１に接続され、磁気ディスクドライブ５５１および光ディスクドライブ５５５は典型的には、インターフェース５５０のような着脱可能なメモリインターフェースを介してシステムバス５２１に接続される。
【０１１３】
上に説明され、かつ図５に図示されるドライブ群、およびこれらのドライブに関連するコンピュータ記憶媒体は、コンピュータ５１０用のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの記憶を行う。図５では、例えばハードディスクドライブ５４１は、オペレーティングシステム５４４、アプリケーションプログラム５４５、他のプログラムモジュール５４６、およびプログラムデータ５４７を記憶するものとして図示されている。これらの構成要素は、オペレーティングシステム５３４、アプリケーションプログラム５３５、他のプログラムモジュール５３６、およびプログラムデータ５３７と同一であってもよく、あるいは異なってもよいことに留意されたい。オペレーティングシステム５４４、アプリケーションプログラム５４５、他のプログラムモジュール５４６、およびプログラムデータ５４７には、これらが少なくとも異なるコピーであることを示すために、ここでは異なる参照番号が付与されている。ユーザは、キーボード５６２と、マウス、トラックボール、またはタッチパッドと広く表記されるポインティングデバイス５６１となどの入力装置を介して、コンピュータ５１０にコマンドおよび情報を入力することができる。他の入力装置（図示せず）として、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを挙げることができる。これらの入力装置および他の入力装置は多くの場合、システムバスに接続されたユーザ入力インターフェース５６０を介して処理ユニット５２０に接続されるが、パラレルポート、ゲームポートまたはユニバーサル・シリアル・バス（ＵＳＢ）のような他のインターフェースおよびバス構造を介して接続することができる。モニタ５９１または他の種類の表示装置も、ビデオインターフェース５９０のようなインターフェースを介してシステムバス５２１に接続される。モニタの他に、コンピュータは更に、出力周辺インターフェース５９５を介して接続することができるスピーカ５９７およびプリンタ５９６のような他の周辺出力装置を含むことができる。
【０１１４】
コンピュータ５１０は、リモートコンピュータ５８０のような１つ以上のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。リモートコンピュータ５８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることができ、典型的には、コンピュータ５１０に関して上述した要素群の多く、または全てを含むが、メモリ記憶装置５８１のみが図５に図示されている。図５に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）５７１およびワイド・エリア・ネットワーク（ＷＡＮ）５７３を含むが、他のネットワークを含むことができる。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて普通に見られる。ＬＡＮネットワーキング環境で使用される場合、コンピュータ５１０は、ネットワークインターフェースまたはアダプタ５７０を介してＬＡＮ５７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ５１０は典型的には、インターネットのようなＷＡＮ５７３を介して通信を確立するモデム５７２または他の手段を含む。内蔵または外付けとすることができるモデム５７２は、ユーザ入力インターフェース５６０または他の適切な機構を介してシステムバス５２１に接続することができる。ネットワーク環境では、コンピュータ５１０に関して図示したプログラムモジュール群、またはこれらのプログラムモジュールの一部をリモートメモリ記憶装置に記憶することができる。一例として、非限定的に、図５は、リモート・アプリケーション・プログラム５８５がメモリ装置５８１に常駐する様子を示している。図示のネットワーク接続は例示であり、通信リンクをコンピュータ間で確立する他の手段を用いることができることを理解されたい。
【０１１５】
以上のように本発明の少なくとも１つの実施形態のいくつかの態様を説明してきたが、様々な変更、修正および改善をこの技術分野の当業者であれば容易に想到することができることを理解されたい。
【０１１６】
このような変更、修正および改善は本開示の一部となるものであり、本発明の思想および範囲に含まれるものである。更に、本発明の利点を示してきたが、本発明の全ての実施形態が、記載の全ての利点を含んでいる訳ではないことを理解されたい。したがって、これまでの説明および図面は例示に過ぎない。
【０１１７】
本発明の上述の実施形態は、非常に多くの方法のいずれの方法でも実施することができる。例えば、これらの実施形態は、ハードウェア、ソフトウェア、またはそれらの組合せを用いて実施することができる。ソフトウェアで実施される場合、ソフトウェアコードは、単一のコンピュータ内に設けられるか、または複数のコンピュータに分散されるかに関係なく、任意の適切なプロセッサで、またはプロセッサ集合体で実行することができる。このようなプロセッサは、集積回路部品内に１つ以上のプロセッサを備える集積回路として実現することができる。しかしながら、プロセッサは、任意の適切な構成の回路を用いて実現することができる。
【０１１８】
更に、コンピュータは、ラックマウントコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータのような多数の構成のうちの任意の構成で具体化することができることを理解されたい。更に、コンピュータは、パーソナル・デジタル・アシスタント（ＰＤＡ）、スマートフォン、または任意の他の適切な携帯電子機器若しくは固定電子機器を含む、コンピュータとは一般的にはみなされないが適切な処理能力を備える装置に内蔵させることができる。
【０１１９】
また、コンピュータは、１つ以上の入力装置および出力装置を有することができる。これらの装置は、とりわけ、ユーザインターフェースを提示するために使用することができる。ユーザインターフェースを提供するために使用することができる出力装置の例として、出力を視覚的に提示するプリンタまたはディスプレイスクリーン、および出力を聴覚的に提示するスピーカまたは他の音声生成装置が挙げられる。ユーザインターフェースに使用できる入力装置の例として、キーボードおよびポインティングデバイスが挙げられ、ポインティングデバイスにはマウス、タッチパッドおよびデジタイジングタブレットなどがある。別の例として、コンピュータは、音声認識により、または他の可聴形式で、入力情報を受信することができる。
【０１２０】
このようなコンピュータは、企業ネットワークまたはインターネットのようなローカル・エリア・ネットワークまたはワイド・エリア・ネットワークを含む、任意の適切な方法の１つ以上のネットワークを介して相互接続することができる。このようなネットワークは、任意の適切な技術に基づくことができ、任意の適切なプロトコルに従って動作することができ、無線ネットワーク、有線ネットワークまたは光ファイバネットワークを含むことができる。
【０１２１】
また、本明細書で概要説明した種々の方法またはプロセスは、多種多様なオペレーティングシステムまたはプラットフォームのうちの任意の１つを用いる１つ以上のプロセッサ上で実行可能なソフトウェアとして符号化することができる。更に、このようなソフトウェアは、多数の適切なプログラミング言語、および／またはプログラミングツール若しくはスクリプティングツールのうちのいずれかを用いて書くことができ、更に、フレームワーク上で、または仮想マシン上で実行される実行可能な機械語コードまたは中間コードとしてコンパイルすることができる。
【０１２２】
この点に関して、本発明は、１つ以上のコンピュータ上で、または他のプロセッサ上で実行されると、上に説明した本発明の種々の実施形態を実施する方法を実行する１つ以上のプログラムで符号化されたコンピュータ可読記憶媒体（または、複数のコンピュータ可読媒体）（例えば、コンピュータメモリ、１つ以上のフロッピディスク、コンパクトディスク（ＣＤ）、光ディスク、デジタルビデオディスク（ＤＶＤ）、磁気テープ、フラッシュメモリ、フィールド・プログラマブル・ゲート・アレイ若しくは他の半導体装置における回路構成、または他の有形コンピュータ記憶媒体）として具体化することができる。これまでの例から明らかなように、コンピュータ可読記憶媒体は、情報を、非一時的な形式でコンピュータ実行可能命令を供給するほど十分長い時間にわたって保持することができる。このようなコンピュータ可読記憶媒体または媒体群は、可搬型とすることにより、媒体に格納されるプログラムまたはプログラム群を１つ以上の異なるコンピュータ、または他のプロセッサに読み込んで、上に説明した本発明の種々の態様を実施することができる。本明細書において、「コンピュータ可読記憶媒体」という用語は、製造物（すなわち、製造物品）または機械であると考えることができるコンピュータ可読媒体のみを包含する。代替的に、または追加的に、本発明は、伝達信号のような、コンピュータ可読記憶媒体以外のコンピュータ可読媒体として具体化することができる。
【０１２３】
「プログラム」または「ソフトウェア」という用語は、本明細書では、コンピュータまたは他のプロセッサをプログラムして上に説明した本発明の種々の態様を実施するために用いることができる任意の種類のコンピュータコードまたはコンピュータ実行可能命令セットを指す一般的な意味で使用される。更に、本実施形態の１つの態様によれば、実行されると、本発明の方法を実施する１つ以上のコンピュータプログラムは、単一のコンピュータまたはプロセッサに常駐させる必要はないが、多数の異なるコンピュータまたはプロセッサにモジュール形式で分散させて本発明の種々の態様を実施させることができることを理解されたい。
【０１２４】
コンピュータ実行可能命令は、１つ以上のコンピュータまたは他の装置が実行するプログラムモジュールのような多数の形式の命令とすることができる。一般的に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラムモジュールの機能は、種々の実施形態において必要に応じて組み合わせるか、または分散させることができる。
【０１２５】
また、データ構造は、コンピュータ可読媒体に任意の適切な形式で格納することができる。説明を簡単にするため、データ構造は、データ構造内の位置を介して関連付けられるフィールド群を有するものとして示すことができる。このような関係は同様にして、上記フィールド用の記憶領域に、上記フィールド間の関係を伝達するコンピュータ可読媒体内の位置を割り当てることによって実現することができる。しかしながら、任意の適切な機構を用いて、データ要素間の関係を確立するポインタ、タグまたは他の機構を使用することにより、データ構造のフィールド群に含まれる情報の関係を確立することができる。
【０１２６】
本発明の種々の態様は、単独で、組み合わせで、またはこれまで説明してきた実施形態では詳細には説明していない多種多様な構成で用いることができ、ゆえに、本発明の応用形態において、これまでの説明に開示され、または図面に図示された詳細と構成要素群の配置とに限定されない。例えば、１つの実施形態において記載される態様は、他の実施形態において記載される態様と、任意の方法で組み合わせることができる。
【０１２７】
また、本発明は１つの方法として具体化することができ、上記方法の例が提供されてきた。上記方法の一部として行われる動作は、任意の適切な方法で順序付けることができる。したがって、動作が図示された順序とは異なる順序で行われる実施形態を構築することができ、それにより、いくつかの動作が、図示の実施形態において順次的な動作として示されていたとしても、同時に行われうる。
【０１２８】
クレーム要素を修飾するために請求項において「第１の」、「第２の」、「第３の」などのような序数詞表現を用いることは、それ自体、１つのクレーム要素の、別のクレーム要素に対するいかなる優先度、先行性、または順序も含意しておらず、あるいは方法の動作が行われる時間的順序を含意しておらず、単に、特定の名前を有する１つのクレーム要素と同じ名前を有する（序数詞表現の使用を除く）別の要素とを区別してこれらのクレーム要素を区別するためのラベルとして用いられる。
【０１２９】
また、本明細書において使用される表現および専門用語は説明を目的としており、限定的に捉えられるべきではない。「含む」または「有する」、およびこれらの単語の変形の使用は、本明細書では、上記単語に続いて列挙されるアイテム、およびこれらのアイテムの均等物のみならず更に別のアイテムを含むことを意味している。
【図１】
2014530403.tif 000003
【図２】
2014530403.tif 000004
【図３】
2014530403.tif 000005
【図４ａ】
2014530403.tif 000006
【図４ｂ】
2014530403.tif 000007
【図５】
2014530403.tif 000008
【国際調査報告】
2014530403.tif 000009
2014530403.tif 000010