JP2015528145A - 仮想サーフェス割り当て - Google Patents

仮想サーフェス割り当て Download PDF

Info

Publication number
JP2015528145A
JP2015528145A JP2015515033A JP2015515033A JP2015528145A JP 2015528145 A JP2015528145 A JP 2015528145A JP 2015515033 A JP2015515033 A JP 2015515033A JP 2015515033 A JP2015515033 A JP 2015515033A JP 2015528145 A JP2015528145 A JP 2015528145A
Authority
JP
Japan
Prior art keywords
composition system
computing device
composition
virtual surface
update
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015515033A
Other languages
English (en)
Other versions
JP6230076B2 (ja
JP2015528145A5 (ja
Inventor
フィンク,ライナー
ブランコ,レオナルド,イー.
プリーストリー,ジョシュア,ウォレン
エルガン,ジェンク
モンカヨ,シルヴァーナ,パトリシア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015528145A publication Critical patent/JP2015528145A/ja
Publication of JP2015528145A5 publication Critical patent/JP2015528145A5/ja
Application granted granted Critical
Publication of JP6230076B2 publication Critical patent/JP6230076B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Abstract

仮想サーフェス技術について説明する。このような技術は、アップデートの初期化及びバッチングのサポート、アップデート及びルック・アサイド・リストの使用、ガターの使用、ブレンディング操作及びBLT操作、プッシュ・ダウン等のサーフェス最適化技術、並びに、列挙及びクランピング、メッシュ使用、及びオクルージョン管理技術を含む。

Description

多様なコンピューティング・デバイス構成が増加し続けている。従来のデスクトップ・パーソナル・コンピュータから携帯電話、ゲーム・コンソール、セットトップ・ボックス、タブレット・コンピュータ等に至るまで、これらの構成の各々から利用可能な機能は大いに変わり得る。
結果として、1つの構成向けに開発された従来のディスプレイ技術は、別の構成に対してあまり適していない場合がある。例えば、かなりのメモリ・リソースを有するデバイス向けに以前に利用されていたディスプレイ技術は、より少ないリソースしか有さないデバイスにとっては適していない場合がある。
仮想サーフェス(virtual surface)技術について説明する。このような技術は、アップデートの初期化及びバッチング(batching)のサポート、アップデート及びルック・アサイド・リスト(look aside list)の使用、ガター(gutter)の使用、ブレンディング(blending)操作及びBLT操作、プッシュ・ダウン(push down)等のサーフェス最適化技術、並びに、列挙(enumeration)及びクランピング(clumping)、メッシュ使用、及びオクルージョン管理技術(occlusion management technique)を含む。
この概要は、詳細な説明において以下でさらに説明されるコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を決定する際の助けとして使用されることを意図するものでもない。
添付の図面を参照して、詳細な説明が記載される。図面において、参照番号の一番左の数字は、その参照番号が最初に現れる図を特定する。説明中及び図面中の異なる例における同一の参照番号の使用は、類似の項目又は同一の項目を示し得る。
本明細書で説明する仮想サーフェス技術を実行するために動作可能な例示的な実装における環境の図。 仮想サーフェスがリサイズされる例示的な実装を示す図。 アプリケーションと仮想サーフェスの論理サーフェスとの間のインタラクションが示されている例示的な実装を示す図。 図1のコンポジション・システムをより詳細に示す例示的な実装を示す図。 仮想サーフェスを開始するコンポジション・システムの動作の例示的な実装を示す図。 アップデートのための、コンポジション・システムによるサーフェスの準備を示す例示的な実装を示す図。 図6のルック・アサイド・リストを用いたコンポジション・システムの動作の例示的な実装を示す図。 ガターを使用するコンポジション・システムの動作を示す例示的な実装を示す図。 コンポジション・システムによる有効な領域の管理を示す例示的な実装を示す図。 プッシュ・ダウン技術を用いてサーフェスを結合するコンポジション・システムの動作を示す例示的な実装を示す図。 有効な領域を新たなサーフェスに結合するコンポジション・システムの動作を示す例示的な実装を示す図。 メッシュを使用するコンポジション・システムの動作を示す例示的な実装を示す図。 オクルージョンに関するコンポジション・システムの動作を示す例示的な実装を示す図。 データをレンダリングするためにサーフェスにサイズが割り当てられる例示的な実装における手順を示すフロー図。 有効な領域がコンポジション・システムによりトラッキングされる例示的な実装における手順を示すフロー図。 サーフェスを管理するためにルック・アサイド・リストが使用される例示的な実装における手順を示すフロー図。 オクルージョンに基づいてサーフェスがリサイズされる例示的な実装における手順を示すフロー図。 1つのサーフェスから別のサーフェスへの有効な領域のプッシュ・ダウンを伴うコンパクション技術が説明される例示的な実装における手順を示すフロー図。 有効な領域を新たなサーフェスに結合することを伴うコンパクション技術が説明される例示的な実装における手順を示すフロー図。 ドライバへの呼び出しを行ってメッシュを用いてサーフェスをレンダリングするために、コンポジション・システムがメッシュを使用する例示的な実装における手順を示すフロー図。 本明細書で説明する技術の実施形態を実装するために、図1〜図20を参照して説明される任意のタイプのコンピューティング・デバイスとして実装することができる例示的なデバイスの様々なコンポーネントを含む例示的なシステムを示す図。
概要
仮想サーフェスを使用して、ビジュアル(visual)をレンダリングするためにサーフェスを割り当てて管理することができる。例えば、仮想サーフェスを使用して、ビジュアルをレンダリングするためにハードウェアにより割り当てられ得るメモリよりも大きなウェブ・ページのレンダリングを管理する、大きなウェブ・ページや没入型アプリケーション(immersive application)を管理する等、ハードウェアの制限を克服することができる。
仮想サーフェス・コンポジション及びアップデート技術が、本明細書において説明される。1以上の実装において、レンダリングのためにサーフェスを管理する技術が説明される。これは、図4及び図5に関連してさらに説明されるアップデートの初期化及びバッチングをサポートする技術、図6及び図7に関連して説明されるアップデート及びルック・アサイド・リストの使用、図8に関連して説明されるガターの使用、図9に関連して説明されるブレンディング操作及びBLT操作、図10に関連して説明されるプッシュ・ダウン等のサーフェス最適化技術、並びに、図11に関連して説明される列挙及びクランピング、図12に関連して説明されるメッシュ使用、及び図13に関連して説明されるオクルージョン管理技術を含む。
以下の記載において、本明細書で説明する仮想サーフェス技術を実行するために動作可能な例示的な環境が最初に説明される。次いで、例示的な環境及び他の環境において動作可能な例示的な手順が説明される。さらに、例示的な環境は、例示的な手順のパフォーマンスに限定されるものではない。
例示的な環境
図1は、1以上の実施形態に従った動作環境を一般に100で示している。環境100は、1以上のプロセッサを含み得る処理システム104を有するコンピューティング・デバイス102、メモリ106として図示される例示的なコンピュータ読み取り可能な記憶媒体、オペレーティング・システム108、及び1以上のアプリケーション110を含む。コンピューティング・デバイス102は、限定ではなく例として、デスクトップ・コンピュータ、ポータブル・コンピュータ、携帯情報端末(PDA)といったハンドヘルド・コンピュータ、携帯電話、タブレット・コンピュータ等の任意の適切なコンピューティング・デバイスとして具現化することができる。コンピューティング・デバイス102の異なる例が、図21において示され以下で説明される。
コンピューティング・デバイス102は、処理システム104上で実行されるものとして示されメモリ106に記憶可能なオペレーティング・システム108を含む。コンピューティング・デバイス102は、メモリ106に記憶されるものとして示され処理システム104上で実行可能なアプリケーション110をさらに含む。オペレーティング・システム108は、アプリケーション110により使用される基本的なハードウェア・リソース及びソフトウェア・リソースを抽象化し得るコンピューティング・デバイス102の機能を表す。例えば、オペレーティング・システム108は、データがディスプレイ・デバイス112上にどのようにして表示されるかという機能を、この表示がどのようにして実現されるかをアプリケーション110が「知る」必要なく、抽象化し得る。コンピューティング・デバイス102の処理システム104及びメモリ106といったリソースやネットワーク・リソース等を抽象化するといった多様な他の例も意図されている。
コンピューティング・デバイス102はまた、コンポジション・システム114を含むものとして示されている。コンポジション・システム114は、オペレーティング・システム108の一部として示されているが、スタンドアロン・モジュールとして、別個のアプリケーションとして、コンピューティング・デバイス102自体のハードウェアの一部(例えば、SOC又はASIC)として等、様々な形で実装されてよい。コンポジション・システム114は、ビジュアルをレンダリングするためにアプリケーション110により使用される1以上のアプリケーション・プログラミング・インタフェース(API)を介して機能を公開する等、ビジュアルをレンダリングするための多様な技術を使用することができる。
例えば、そのような1つの技術は、スワップ・チェーン(swap chain)と呼ばれるオブジェクトに基づくものであり、これは、ビットマップを表すバッファのアレイを利用することができる。例えば、そのバッファの1つを使用して、ディスプレイ・デバイス112上に一度にデータを表示することができ、したがって、そのバッファは、「オンスクリーン・バッファ」又は「フロント・バッファ」と呼ばれることがある。他のバッファも、オフスクリーンのラスタ化のためにアプリケーション110に利用可能となっており、したがって、他のバッファは、「オフスクリーン・バッファ」又は「バック・バッファ」と呼ばれることがある。
アプリケーション110は、様々な方法により、ディスプレイ・デバイス112上に表示されるものに変更を加えることができる。そのような最初の技術では、アプリケーション110は、ポインタを用いてオフスクリーン・バッファのうちの1つをオンスクリーン・バッファにしたりその逆を行ったりすること等により、バック・バッファのうちの1つを再描画して、内容を「フリップする(flip)」ことができる。
そのような第2の技術では、異なるサイズのバッファを利用することができる。例えば、コンポジション・システム114は、オンスクリーン・バッファとして、第1のバッファを利用することができる。コンポジション・システム114はまた、オフスクリーン・バッファとして、第1のバッファよりも小さな第2のバッファを利用することができる。したがって、コンテンツに対するアップデートがなされる場合、そのアップデートは、第2のバッファにラスタ化することができる。次いで、例えば、bltを用いて、そのアップデートをオンスクリーン・バッファにコピーすることができる。このようにして、コンピューティング・デバイス102のリソースを節約することができる。
コンポジション・システム114はまた、仮想サーフェス技術をサポートするよう構成され得る。こうした技術を使用して、ビジュアルをレンダリングするために使用されるコンピューティング・デバイス102のリソースを低減させるために、アプリケーション110の開発者を支援することができる。これは、仮想サーフェス118の使用を含み得る。これにより、アプリケーション110が、ビジュアル・データのサーフェスをタイル(tile)に分割し、次いで、前もってそのタイルをレンダリングすることを可能にする。以下でさらに説明されるように、サーフェスを分割するためにタイルが使用されない(例えば、アプリケーション110がサイズを指定する)他の実装も意図されている。
仮想サーフェス118は、1以上の論理サーフェス120の集合として構成され得る。論理サーフェス120は、アプリケーション110により確認される個々のサーフェスを表し、1以上のビジュアルに関連付けることができる。例えば、論理サーフェス120は、固定サイズを有するタイルとして構成され得る。複数のタイルは、固定グリッド状に配列され得る。しかしながら、タイルが固定サイズで利用されない多様な他の例も意図されていることは明らかであろう。例えば、タイルのサイズは、ビジュアルをレンダリングしようとするアプリケーションにより指定することができ、したがって、この例におけるタイルのサイズは、アプリケーション自体により設定することができる。これは、以下の説明において、「チャンク(chunk)」とも呼ばれる。
仮想サーフェス118を使用して、テクスチャにより表される領域よりも大きな領域を表すことができる。例えば、アプリケーション110は、作成時に、仮想テクスチャのサイズを指定することができる。サイズは、仮想サーフェス118のための境界を定める。サーフェスは、1以上のビジュアルに関連付けることができる。1以上の実装において、仮想サーフェスが最初に初期化されるとき、仮想サーフェスは、実際の割り当てによりバックされない。すなわち、仮想サーフェス118は、初期化時に「ビットを保持せず」、例えば、割り当て時といった後の時点でビットを保持する。
以下の説明において、ビジュアルは、基本的コンポジション要素(basic composition element)を指すことがある。例えば、ビジュアルは、ビットマップと、コンポジション・システム114により処理するための関連コンポジショナル・メタデータとを含み得る。ビジュアルのビットマップは、(例えば、ビデオ等の動的コンテンツでは、)スワップ・チェーンに関連付けることができ、あるいは、(例えば、半動的コンテンツでは、)アトラス・サーフェス(atlas surface)に関連付けることができる。2つのプレゼンテーション・モデルが、コンポジション・システム114によりサポートされる単一のビジュアル・ツリーにおいて、サポートされ得る。
半動的コンテンツでは、アトラスは、ビジュアルのビットマップのための更新モデルとして機能することができ、集合的レイヤ(aggregate layer)を指し得る。集合的レイヤは、レンダリングされる複数のレイヤを含み得るが、単一のレイヤも意図されている。ビジュアル及びそのプロパティ操作(例えば、オフセット、トランスフォーム、エフェクト等)、並びにビジュアルのアトラスベースのビットマップを更新するメソッド(Begin Draw、Suspend Draw、Resume Draw、End Draw)が、アプリケーション・プログラミング・インタフェース116を介して公開されるのに対し、アトラス・レイヤ・サイズ、タイル・サイズ、ビットマップ・アップデートのパッキング(packing)/コンパクション/管理は、アプリケーション110から隠すことができる。
スワップ・チェーンは、ポインタを変える等により、オンスクリーンに次々に「フリップ」し得る一連のバッファを指す。したがって、フリップ・モードは、スワップ・チェーン技術を使用してオフスクリーン・バッファをオンスクリーン・バッファにするモードである。オフスクリーン・バッファは、例えば、オフスクリーン・バッファとオンスクリーン・バッファとの間のスワッピング・ポイントを使用することにより、オンスクリーン・バッファにされる。しかしながら、bltモードは、コンポジション・システム114のランタイムが、オフスクリーン・バッファからオンスクリーン・バッファへの「blt」(例えば、ビット・ブロック画像転送)を発する技術を指し、これを使用して、オンスクリーン・バッファを更新することができる。
前述したように、1以上の実装において、仮想サーフェス118が最初に初期化されるとき、仮想サーフェス118は、実際の割り当てによりバックされない。すなわち、仮想サーフェス118は、「ビットを保持しない」。アプリケーション110がサーフェスを更新するのを始めると、コンポジション・システム114は、タイル(すなわち、コンポジション・サーフェス・オブジェクト)の割り当てを実行することができる。アプリケーション110は、それぞれの操作に対するbegin draw、suspend draw、resume draw、及びend drawといったAPIコール等の多様な操作を介して、仮想サーフェス118を更新することができる。マッピングは、コンポジション・システム114の内部アルゴリズムにより決定することができ、1以上の実装において、アプリケーション110に対して可視的とはならない。
さらに、コンポジション・システム114は、アプリケーション110が仮想サーフェス118をリサイズしてトリムすることを可能にするAPIを介して、機能を公開し得る。例えば、リサイズ操作を使用して、仮想サーフェス118の境界を変えることができる。これは、新たなアップデート及び/又は割り当てが新たなサイズにより設定される境界内に含まれることを意味する。アプリケーション110はまた、コンポジション・システム114に、仮想サーフェス118の領域がもはや利用されておらず(例えば、有効でなく)、したがって、再利用することができることを通知するために、このメソッドを使用することができる。リサイズが領域の縮小をもたらす場合、アプリケーション110は、コンポジション・システム114による管理を介して、新たな境界の範囲外にある領域に対するアップデートをもはや行うことができない。
図2は、仮想サーフェスがリサイズされる例示的な実装200を示している。図示された例において、第1の段階202及び第2の段階204を使用して、3×3の仮想サーフェスが2×2にリサイズされることを示す。第2の段階204におけるクロス・ハッチングを含む領域は、リサイズ操作の一部として破棄されるタイルを表す。前述したように、次いで、これらのタイルを記憶するために使用されるメモリ106は、コンポジション・システム114により、再利用することができる。リサイズの後、アプリケーション110は、再度仮想サーフェスをリサイズすることなく、破棄された領域(すなわち、クロス・ハッチングの領域)に対するアップデートをもはや行うことができない。
さらに、1以上の実装において、リサイズ操作は、操作のインジケーションの受信に応答して、コンポジション・システム114により開始することができる。例えば、コンポジション・システム114は、アプリケーションが「commit」を呼び出すのを待つことなく、インジケーションの受信時に、リサイズ・アップデートを実行することができる。例えば、アプリケーションは、「Resize(0,0)」、「Resize(INT_MAX,INT_MAX)」、及び「Commit()」を呼び出すことができる。この例において、アプリケーション110は、第1のリサイズでコンテンツを破棄したので、第2のリサイズが、「Commit()」の前に呼び出されたとしても、影響を与えない。このケースでは、表示のために何も利用可能でないので、ディスプレイ・デバイス112は、コンテンツを表示しない。
トリム操作を使用して、アプリケーション110によりリクエストされている仮想アトラスの領域をコンポジション・システム114に記述することができる。したがって、仮想サーフェス118の境界をリサイズすることなく、トリム操作を実行することができる。しかしながら、これは、どの論理サーフェスが現在割り当てられるのかをコンポジション・システム114に通知しない。論理サーフェスの例については、次の図に関連して説明する。
図3は、アプリケーションと仮想サーフェスの論理サーフェスとの間のインタラクションが示されている例示的な実装300を示している。この例も、第1の段階302及び第2の段階304を使用することにより示されている。この例において、アプリケーションのビューポート(viewport)306が、第1の段階302及び第2の段階304の両方で示されている。したがって、第1の段階302において、アプリケーションは、ビューポート306に含まれる、(15タイルを含む)仮想サーフェスの最初の6タイルをまずレンダリングする。これらのタイルがクロス・ハッチングにより示されている。
仮想サーフェスにより表されるページがスクロールされると、次に、アプリケーションは、第2の段階304に示されるように、最後の6タイルをレンダリングさせることができる。したがって、アプリケーション110は、最後の6タイルにより定められる領域が現在使用されており、このため、コンテンツの残りが現在使用されていないことを示すために、「trim」を呼び出すことができる。次いで、コンポジション・システム114は、元々最初の6タイルを表していた論理サーフェス506を再利用することを選択することができる。
コンポジション・システム114はまた、論理サーフェス(すなわち、物理サーフェス)及び仮想サーフェスを作成して削除するとともに、個々のサーフェスに対するアップデートを行うために、図1のAPI116を公開し得る。コンポジション・システム114は、更新可能な領域の範囲外に描画するときの無関係なビジュアルを避けるために、アプリケーション110により領域を更新させることができる。
初期化及びバッチング
図4は、図1のコンポジション・システム114をより詳細に示す例示的な実装400を示している。今日のコンピューティングの世界において、ユーザは、しばしば、自分自身が大きなリッチ・コンテンツを閲覧し、その中をナビゲートしているのに気付くであろう。そのようなコンテンツの全体は、ディスプレイ・デバイスにより一度に表示されない。このような例は、複雑な動的ウェブ・ページ、写真のライブ・アイテム/グループの大きなリストを有する最新のアプリケーション・ビュー、音楽若しくは他のライブ・コンテンツ、又は大きなドキュメントを含む。
タッチ及び画像キャプチャベースの操作等のユーザ・インタフェースにより、ユーザは、スレート、電話、大型TV/プロジェクション等のユーザ・インタフェースの多数のディスプレイにわたり、迅速に、スクロール、パン、及びズームを行うことができる。多くのケースにおいて、コンテンツ全体を事前にレンダリングすること、及びコンテンツがアニメーション化し変化するときに最新の状態に保つことは、極めてコストがかかり、実際、デバイスのハードウェアによりサポートされないことさえあり得る。その代わりに、ユーザ操作によりコンテンツがビューポートに入る前に推測で先にコンテンツをレンダリングし、上述したように使用されたリソースを低減させるためにビューポートが動いたときにキャッシュからコンテンツを破棄する等、ビューポートに入ってくるコンテンツの一部をインテリジェントにレンダリングしキャッシュすることができる。
所望の応答性をユーザに提供するために、コンポジション及びレンダリングは、コンポジション・システム114により別個に実行することができる。これが、コンポジション・エンジン402、コントローラ404、及びレンダラ406をコンポジション・システム114に組み込むことにより示されている。1以上の実装において、コンポジション・システム114のこれらのコンポーネントは、非同期に実行され得る。このようにして、事前にレンダリングされたコンテンツは、ユーザ入力に応答するコントローラ404及びコンポジション・エンジン402により、パン/ズームを行うことができるのに対し、レンダラ406は、レンダリングを続ける。
前述したように、コンポジション・システム114は、1以上の仮想サーフェス118を使用することができる。仮想サーフェス118を使用することにより、すでにレンダリングされたコンテンツのキャッシング及びコンポジションが可能になる。レンダラ406による仮想サーフェス118上の領域のアップデート及びトリムは、推測的なレンダリング・ポリシに基づいて実行することができるのに対し、コントローラ404及びコンポジション・エンジン402は、仮想サーフェス118を変形するために使用される。この変形は、コンテンツをレンダリングしビューポート内に存在する仮想サーフェス118の領域に基づくユーザ・インタフェースに対するアップデートを生成するためのユーザ入力に基づいて実行することができる。コンポジション・エンジン402は、複数の仮想サーフェス118及び/又はビジュアルを一度に作成するよう構成され得る。
1以上の実装において、コンポジション・システム114は、コンポジションのためにフロント・バッファとして使用される固定サイズのタイル又は混合サイズのタイルとして、論理サーフェス120を使用するよう構成され得る。レンダラ406が、仮想サーフェス118の一部を更新することを望むとき、レンダラ406は、別個のアップデート・サーフェスにレンダリングすること、又は、タイル・サーフェスに直接レンダリングすることを実行することができる。別個のアップデート・サーフェスを用いる場合、描画を終えるときに、コンテンツが、アップデート・サーフェスからフロント・バッファにコピーされる。次いで、レンダラ406がタイルから有効なコンテンツをトリムするときに、タイルをリリースすることができる。
しかしながら、変化したコンテンツは、古いコンテンツを伴うスクリーン上に構成されるので、この実装は、構造的テアリング(structural tearing)をもたらす場合がある。さらに、タイル間又は仮想サーフェス上で更新される領域のチャンク間の継ぎ目が、ガター及びサンプリング(例えば、双線形)又はTジャンクション(T-junction)のために、生成される場合があるとともに、ガター、複数のオーバラッピング・アップデート、及び複雑な有効領域を扱うために過度のCPU使用率及びGPU使用率を生じさせる場合がある。さらに、動的なコンテンツ変化又はユーザにより操作されるコンテンツのために、過度のメモリ使用率に直面する場合がある。タイル手法による固定/混合サイズのサーフェスでは、タイルの不使用部分のために、より大きなサイズのタイルほどメモリ浪費に直面し、より小さなタイルに対するレンダリング/処理アップデートと構成時におけるアップデートのレンダリングとのために、CPU/GPU浪費に直面し、別個のアップデート・バッファが使用される場合、アップデート・バッファからフロント・バッファへのCPU/GPUコピー・コストに直面し得る。したがって、コンポジション・システム114の実装において、多様な考慮事項の間でバランスが取られ得る。
これらの考慮事項は、ビューポートに収まらないリッチで且つ/又は動的なコンテンツを操作するときのユーザ・エクスペリエンス品質及びパフォーマンスに関する以下のテネット(tenet)のセットを含み得る。第1のそのようなテネットは、ビジュアル応答性(visual responsiveness)と呼ばれる。これは、仮想サーフェス118が、ユーザの「指の先端」及びユーザ操作において真のサーフェスのように感じるように構成され得ることを意味する。これは、知覚される遅延なく操作に応答しそのような操作をトラッキングするために、コンポジション・システム114の構成によりサポートされ得る。コントローラ404及びコンポジション・エンジン402と別々にレンダラ406を用いることで、堅牢な形でこのテネットをサポートすることができる。
第2のそのようなテネットは、ビジュアル統一性(visual coherence)に関する。この例において、サーフェスが操作され、サーフェス内の動的コンテンツ(例えば、アニメーション)が更新されるので、ディスプレイ・デバイス112上のコンテンツは、ユーザの熱中又は信頼を妨げるアーチファクトを示さない。例えば、継ぎ目、目に見えるテアリング、又は破損なく、コンテンツを表示することができる、ユーザ・インタフェースの一部が、付随すべき他の一部に後れを取ることがない、等である。
第3のテネットは、ビジュアル完全性(visual completeness)に関する。ユーザ・インタフェースが、視覚的に完全である場合、ユーザは、ディスプレイ・デバイス112の一部を覆うフィラー/プレースホルダ・パターン(例えば、チェッカーボード)をめったに見ない。そのようなパターンがある場合、このディスプレイは、比較的短い時間制限される。さらに、例えば、性能の低いデバイス上での複数のズーム・レベルにわたる終わりのないリッチ・コンテンツにおいて、保証されないかもしれないが、サーフェス・コンテンツ・アップデートは明らかに衰えない。例えば、レンダラ406が仮想サーフェス118を更新しコンポジション・エンジン402がそれを作成するのがより最適で効率的であるほど、追加的なビジュアル完全性を実現するために、レンダラ406は、先に推測でさらにレンダリングするためのより高い処理能力を有するようになる。
第4のテネットは、ライブ・サーフェスに関する。このテネットでは、アニメーション、ビデオ、及び他の動的コンテンツが、操作中休むことなく再生及び実行を続ける。レンダラ406がビジュアル完全性を実現しライブ・サーフェスを実現する処理能力を有する場合、これは実現され得る。これは、仮想サーフェス118の効率的な更新及び作成によりサポートされ得る。
コンポジション・システム114は、これらのテネットのバランスを取るよう構成され得る。このようにして、レンダラ406がビジュアル完全性及びライブ・サーフェスを確実にするための十分な処理能力を有するよう、仮想サーフェス・アップデートを管理して構成するためにビジュアル正確性(visual correctness)及びビジュアル統一性並びにビジュアル応答性をサポートする総合的な解決策が実行され得る。
図5は、仮想サーフェス118を開始するコンポジション・システム114の動作の例示的な実装500を示している。この実装は、第1の段階502及び第2の段階504を使用することにより示されている。第1の段階502において、アプリケーション110は、ユーザ・インタフェースをレンダリングするために、サーフェスのサイズをリクエストする。これは、1以上のビジュアルに関連付けることができる。前述したように、仮想サーフェス118が、実際の割り当てによりバックされない、したがって、初期化時に「ビットを保持しない」ように、仮想サーフェス118が、まず初期化される(例えば、作成される)。
次いで、アプリケーション110は、レンダリングされるビジュアルを、仮想サーフェス118に指定することができる。したがって、コンポジション・エンジン402は、レンダラ406により仮想サーフェス118にレンダリングするために、図示される車等のこうしたビジュアルを構成することができる。これは、タイル、又は、割り当てのサイズがアプリケーションにより指定される「チャンク」を使用することにより実行され得る。
第2の段階504において、レンダラ406は、サーフェスの矩形領域等の仮想サーフェス118の領域を更新する命令を受信することができる。レンダラ406とコンポジション・エンジン402との間のインタフェースは、レンダラ406が、複数の仮想サーフェス118にわたる複数のアップデート506(例えば、トリム命令、ビジュアルに対する変更、ビジュアルの作成又は削除等)とともに、コンテンツとしてこうしたサーフェスを有することができるビジュアルに対するトランスフォーム・アップデートを実行できることである。アップデート506の例は、カーソルとして構成されるビジュアル、及びユーザが選択可能なボタンとして構成されるビジュアルを含む。
一実装において、複数のアップデート506がレンダラ406によりレンダリングされ得るよう、例えば、バッチとして更新され得るよう、「commit」操作が呼び出され得る。このようにして、コンポジション・システム114は、不完全なアップデートのレンダリングに対して保護することができる。これにより、レンダラ406は、ビジュアル統一性テネットによる、ディスプレイ・デバイス112により一貫した統一性のあるビジュアルを表示させることができる。
さらに、ユーザ入力を処理するコントローラ404は、レンダラ406を経ることなく、直接的にコンポジション・エンジン402に対して、ユーザ操作に基づいて、(例えば、パン又はズームのための)ビジュアルに対するトランスフォームを更新することができる。例えば、アニメーション又は動的コンテンツの他の状態変化を処理するために、且つ/又は、制限された処理リソースしか有さないシン・デバイス上で複雑なコンテンツをラスタ化するために、レンダラ406が比較的長い時間占められる場合であっても、この態様は、ビジュアル応答性を提供する。
仮想サーフェス118の実装は、レンダラ406がレンダリングすることができるサーフェス及びオフセットをレンダラ406に提供することを含む。次いで、コンポジション・エンジン402がピックアップし、レンダラ406に対してコミットされた完全なアップデートのバッチを処理しているときに、コンポジション・エンジン402によりこのサーフェスを「フリップする」ことができる。これを使用して、別のアップデート・サーフェスがレンダラ406によるアップデートのレンダリングのために使用された場合、そうでない場合に実行されるコピー操作を除外することができる。
また、このフリッピングにより、コンポジション・エンジン402が、(例えば、コミット操作を介した)単一のバッチにおいてレンダラ406により生成される複数のアップデートの各々が全体としてディスプレイ・デバイス112まで到達するのを確実にすることを可能にすることができる。したがって、コンポジション・システム114による部分的なアップデートの処理を回避することができる。
アップデート及びルック・アサイド・リスト
図6は、更新のための、コンポジション・システム114によるサーフェスの準備を示す例示的な実装600を示している。コンポジション・システム114は、更新のためのサーフェスを準備するために、多種多様な技術を利用することができる。第1のケースでは、コンポジション・システム114は、アプリケーションからのアップデートを実行するために、領域を割り当てるリクエストを受信することができる。これが、図示された例において、第1の矩形602として示されている。
このリクエストに応答して、コンポジション・システム114は、リクエストされた領域よりも大きな領域を割り当てることができる。これが、リクエストされた第1の矩形602を含む第2の矩形604として示されている。したがって、わずかに異なるサイズのアップデートがその後に受信される場合、これにより、以前に割り当てられたサーフェスの再利用が可能となる。
例えば、コンポジション・システム114は、コンポジション・システム114により以前に割り当てられたサーフェス608のルック・アサイド・リスト606を保持することができる。これは、サーフェス608の再利用及びサーフェス608の「チャンク」のためにメモリを「蓄積する」ために、コンポジション・システム114により使用することができる。
例えば、これらのサーフェス608は、もはや使用されていないサーフェスのために、コンピューティング・デバイス102のメモリ106内に保持することができる。したがって、アップデートのためのサーフェスを提供する、コンポジション・システム114によるリクエストの受信時に、コンポジション・システム114は、そのリクエストに対応する以前に割り当てられたサーフェス608が、コンピューティング・デバイス102のメモリ106内で利用可能であるかを判定するために、ルック・アサイド・リスト606をまず調べることができる。利用可能なサーフェス608が存在する場合、コンポジション・システム114は、そのようなサーフェスを利用することができ、それにより、新たなサーフェスを割り当てないことで、システムの全体的な効率を向上させることができる。さらに、前述したように、リクエストされたよりも大きなサイズ(例えば、より多くのピクセルを有する)をサーフェスに割り当てることにより、こうしたサーフェス608がその後のアップデートに関連する可能性が増大し得る。
例えば、わずかに異なるサイズのアップデートが、ある時間期間の間受信される場合、これにより、例えば、次のアップデートがわずかに広い又は高い領域に対するものであるときには、以前に割り当てられたサーフェス608のより多くの再利用が可能となる。したがって、新たなサーフェスを割り当てることなく、コンポジション・システム114は、関連するサーフェスを見つけるために、以前に利用可能となったサーフェスのルック・アサイド・リスト606を利用することができる。サーフェスの一部のトリム及び他のアップデートも利用可能であることに留意すべきである。
これは、確認されたバッチ(confirmed batch)に基づく領域を通じてトラッキングされ得る。アップデートが、他の有効なコンテンツも有する既存のサーフェス608の利用可能な一部に収まる場合、そのサーフェスを再利用することができる。そのような各遷移(transition)はセットアップ・コストを招くので、これはまた、複数の異なるサーフェスからレンダリングすることを避けることにより、コンポジション側のコストを低減させる。ルック・アサイド・リスト606のサイズ(例えば、リスト及びコンピューティング・デバイス102のメモリ内に保持されるサーフェス608の数)は、過去のピーク使用又は多様な他のファクタに基づいて設定することができる。
図7は、図6のルック・アサイド・リスト606を用いたコンポジション・システム114の動作の例示的な実装700を示している。この実装は、第1の段階702、第2の段階704、及び第3の段階706を用いて示されている。第1の段階702において、サーフェス708が、レンダラ406によるレンダリングのために割り当てられる。次いで、レンダラ406には、レンダリングを実行するために、サーフェス708の制御が与えられる。
このレンダリング中、アップデートを実行するために、第2の段階704において、別のサーフェス710を割り当てることができる。この例において、別のサーフェス710は、レンダラ406によりレンダリングされているサーフェス708と同一のディスプレイの領域内に含まれる。したがって、サーフェス708がレンダリングされている間に、サーフェス710を割り当てることができ、サーフェス710を満たす(例えば、描画する)ことができる。次いで、例えば、前述したコミット・コマンドに応答して、レンダリングのために、このサーフェス710をレンダラ406に渡すことができる。
第3の段階706において、ユーザ・インタフェースを更新するための別のアップデートが受信され得る。この例において、コンポジション・システム114は、図6のルック・アサイド・リスト606を使用することにより、アップデートが、以前に割り当てられたサーフェス、例えば、第1の段階702のサーフェス708を含むかを判定する。したがって、コンポジション・システム114は、アップデート712を含む、すでに割り当てられたサーフェス708を使用することができる。このようにして、新たなサーフェスを再割り当てすることなく、サーフェス708を使用することができ、それにより、コンピューティング・デバイス102のリソースを節約することができる。多様な他の例も意図されている。
ガター
図8は、ガターを使用するコンポジション・システム114の動作を示す例示的な実装800を示している。ビジュアル正確性を維持する際の1つの問題点は、ガターを逃してしまうことに関する。例えば、スクロール等のため、仮想サーフェスが、サブピクセル・オフセットに配置又はスケーリングされ得る。したがって、ディスプレイ・デバイス112により表示されるピクセルの値は、例えば、双線形サンプリングを利用するために、隣接ピクセルに基づいて決定される。
しかしながら、アップデート802のエッジ804に配置されるアップデート802の隣接ピクセルは、間違った情報に基づく値を有する場合がある。例えば、アップデート802外の隣接ピクセルが、(例えば、他のアップデートからの)「ごみ」を含む場合、ラスタライザ(rasterizer)は、こうしたピクセルからサンプリングし得るので、それにより、良くない値を有するピクセルを生成する。これは、ディスプレイ・デバイス112により表示されるとき、継ぎ目のように見える場合がある。
これに対処する1つの方法は、アップデート802の新たに割り当てられたサーフェス内の隣接ピクセルに重なる別のタイル/クランプ(clump)・サーフェス806内に存在し得るエッジにおけるピクセルのロー又はカラムをコピーすることである。しかしながら、こうした追加的なコピーは、コンピューティング・デバイスのリソース、例えば、コンピューティング・デバイス102のCPUリソース及びGPUリソースの両方を処理するために、極めてコストがかかり得る。
したがって、1以上の実装において、アップデート802のエッジは、サーフェス・エッジとともにアラインされる。次いで、サーフェス外になる「隣接」ピクセルをサンプリングするときにラスタライザにサーフェス・エッジにおけるピクセルの値を使用させるクランピング操作を利用する。結果が視覚的に完全に正確ではなくとも、これを利用して、コストとビジュアル正確性との間の合理的なトレードオフを生成することができ、ユーザにとって、結果がかなり正確に見え得る。1以上の実装において、ガター自体は更新されない。
いくつかの例において、アップデート・エッジは、サーフェス・エッジとともにアラインさせることができない場合がある。これは、アップデートよりも大きなサーフェスの割り当てのためである。このような例において、同一のサーフェス上のアップデートのエッジにおけるピクセルのロー/カラムは、クランピング動作に対する類似の効果のために、隣接ピクセルにコピーすることができる。
同様に、トリムされ更新されるとき、1以上の実装において、ガターは、描画することができる新しいと考えられるピクセルとともには更新されない。というのは、ガターが、そのときの有効なピクセルとともに表示されていた以前の有効なピクセルを含むからである。これは、正確性と、ユーザが見たときにユーザにとって邪魔になる、一般的ケースにおける最小限の映像アーチファクトを生み出すパフォーマンスとの間のトレードオフをサポートする。
ブレンディング及びBLT
図9は、コンポジション・システム114による有効な領域の管理を示す例示的な実装900を示している。前述したように、仮想サーフェス118は、アップデートのための有効な部分と有効でない部分とを含み得る。図示した仮想サーフェス118の例では、例えば、アップデートは、車ではなく、仮想サーフェス118内のカーソルを含み得る。したがって、カーソルを使用して、仮想サーフェス118の他の領域ではなく、有効である仮想サーフェス118の領域を定めることができる。この仮想サーフェス118及び他のサーフェスのこうした領域をトラッキングすることにより、コンポジション・システム114は、多様な最適化を利用することができる。
例えば、サーフェスから2つの部分にレンダリングされ、ブレンドされ、BLTされる(BLT’d)領域を分割する技術について説明する。この技術を使用して、アップデートが小さく仮想サーフェス上に結果として生じる有効な領域が比較的複雑である(例えば、多数の小さなソース・サーフェス(source surface)を有する複雑なメッシュをもたらす)例に対処することができる。
サーフェスが「予めマルチプライされている(pre multiplied)」又は透明である(且つ「不透明でなく」若しくはアルファ値を無視できるよう設定されている)場合、サーフェスが「ブレンドされる」。これを利用して、レンダラにより提供されるコンテンツが存在しない「クリアされた」且つ/又は完全に透明なピクセルを含むより大きな矩形形状をブレンドすることができる。いくつかのケースでは、これは、複雑な形状のパス/エッジの各々の外形を描く複雑なメッシュを用いて処理してラスタ化するよりも、より最適となる。
有効な領域が不透明なサーフェスに対して複雑であるときには、この手法は、ガターに対して使用することもできる。例えば、内部的な部分はBLTされるが、エッジ周りのピクセルは、隣接ピクセルがクリアされるようにブレンドされる。したがって、ラスタライザがこうしたピクセルからサンプリングするとき、正確な値を実現することができる。1以上の実装において、この技術は、仮想サーフェス118のエッジに対して使用され、タイル・クランプと仮想サーフェスを構成するサーフェスとの間の内部的なエッジに対しては使用されない。
タイル・サイズにアラインされるクランプ・サーフェスが割り当てられることを確実にするとともに、そのタイルを保持していた以前のサーフェスからのコンテンツが新たなサーフェスに移動されることを確実にするために、ビットをコピーし、一部をクリアすることができる。1以上の実装において、これは、例えば、図7に示される中央におけるアップデート矩形等のレンダラ406により更新される部分については実行されない。サーフェスが不透明である場合、アップデート後、エッジ上のピクセルは、「ブレンディング」により、不透明になり得る、すなわち、こうしたピクセルのアルファ・チャネルにおいて、完全な不透明に到達する。
コピーすること、クリアすること、及び不透明にすることというタスクの各々は、非オーバラッピング矩形ストライプ(non-overlapping rectangular stripe)から成る「領域」を用いて実行され得る。領域は、交差してもよいし、ユニオン(union)を形成してもよいし、又は、取り去られてもよい。さらに、領域を構成する非オーバラッピング矩形ストライプは、列挙されてもよい。これにより、様々な矩形及び領域を単一の領域に効率的にまとめることが可能となり、結果として生じる矩形の最適なセットを効率的に抽出することが可能となる。例えば、Win32 HRGNは、こうしたファシリティ(facility)を利用するために使用することができるGDI構造体である。各タイルについて個別に何をすべきか決定するのではなく、このような操作を使用して、例えば、クリア又はコピー等の操作が実行される、まとめられ最適化された矩形のセットを識別する。これを使用して、こうしたタスクを実行するために、CPU及びGPU両方における著しい効率を実現することができ、これにより、タイル/アラインメント・サイズを、32×32又は16×16といった比較的小さな値に低減させることができる。これにより、前述したように、消費を低減させることができる。
レンダラ406からのトリム・リクエストは、有効な領域の複雑さに基づいて異なるように対処され得る。一般的ケースでは、タイル・クランプ/サーフェスの有効な領域は、トリム・リクエストに従って更新され得る。しかしながら、有効な領域が複雑であり、BLT/ブレンド技術が利用されている場合、追加的な操作を実行することができる。例えば、有効な領域の一部が、不透明になるようにブレンドされ得る。というのは、このような部分は、現在領域のエッジに配置されているからである。これに対処する別の方法は、有効な領域が取り除かれるタイルのための新たなクランプを作成することである。しかしながら、タイルは、いくつかの残存する有効な部分を有し続ける場合がある。このようなタイルに対しては、残存する有効な部分を既存のサーフェスからコピーすることができ、不透明になったトリムされた部分をクリアすることができる。レンダラ406が、例えば、コミット操作のために、アップデートの完全なバッチをコミットするときに、このような新たなクランプは、コミットされ得る。この操作は、矩形ストライプの領域を用いて最適化され得るが、他の例も意図されている。
レンダラ406によりアップデートのセットをコミットするとき、トリム及び視覚的トランスフォーム(例えば、結果として生じるタイル・クランプ/サーフェスのセット及びそれらの有効な領域)が、コンポジション・エンジン402に伝達され得る。このようなサーフェス上でのラスタ化のための未処理のCPU/GPUワークが完全であることを確実にするためにコンポジション・エンジン402により使用することができるそれぞれのトークンを用いて、アップデートを伝達することができる。このとき、追加的な技術を利用して、効率をさらに向上させることができる。このような技術の例について、以下のセクション群で説明する。
プッシュ・ダウン
図10は、プッシュ・ダウン技術を用いてサーフェスを結合するコンポジション・システム114の動作を示す例示的な実装1000を示している。この例において、コンポジション・システム114は、ビジュアルを表示するために、サーフェス割り当て1002を行った。これが、図において、ハッシュ・マークを用いたボックスとして示されている。次いで、別のサーフェス割り当て1004が、アップデートを実行するために行われる。これが、ハッシュ・マークのボックスを用いて配置された白のボックスとして示されている。
コンポジション・システム114によりサーフェスの有効な領域をトラッキングすることにより、リソース利用を向上させるために、割り当てを結合することができる。例えば、複数のサーフェスからのレンダリングは、単一のサーフェスからレンダリングするよりもリソース集中型であり得る。
図示した例において、サーフェス割り当て1004の有効な部分は、サーフェス割り当て1002に「プッシュ・ダウンされる」。サーフェス割り当て1004からの有効な領域が現在サーフェス割り当て1002に含まれることを示すために、これが、破線のボックスを用いて示されている。プッシュ・ダウンの後、アップデートを含んでいたサーフェス割り当て1004をリリースすることができ、それにより、コンピューティング・デバイス102のメモリ106の一部を自由にすることができる。したがって、この技術を使用して、新たなサーフェス割り当てを作成することなく、結合されたサーフェスの1つの割り当てを利用することにより、サーフェスを結合することができる。
例えば、いくつかの例において、コンポジション・システム114は、現在の又は以前のアップデートのバッチにおいて、重なり合う大きなアップデートに直面する場合がある。これは、比較的小さい有効な領域を含む複数のサーフェスの割り当てを引き起こす場合がある。結果として、コンポジション・システム114は、大きなサーフェスを割り当てる場合があるが、比較的小さい有効な領域は、このようなサーフェスがリリースされるのを妨げる場合がある。
しかしながら、第1のサーフェス(例えば、より新しいより小さなサーフェス)からの有効な領域を、第2のサーフェス(例えば、より古いより大きなサーフェス)に「プッシュ・ダウンする」ことにより、第1のサーフェスからの有効な領域を取り除くことができる。これは、第1のサーフェスのリリースを可能にし、それにより、メモリを自由にし、追加的なサーフェス割り当てを伴うことなく、コンポジション・システム114により管理されるサーフェス割り当ての量を低減させることができる。このようにして、レンダラ406には、より少ないサーフェスをレンダリングするタスクが与えられ、それにより、コンポジション・システム114の効率を向上させることができる。新たなサーフェス割り当てが行われる他の技術も意図されており、この技術の例について、以下のセクションで説明する。
列挙及びクランピング
図11は、有効な領域を新たなサーフェスに結合するコンポジション・システム114の動作を示す例示的な実装1100を示している。前述したように、コンポジション・システム114は、サーフェス割り当ての有効な領域をトラッキングするよう構成され得る。その例が、それぞれ有効な領域を有する1102(1)、1102(2)、及び1102(n)として示されている。時間が経過するにつれ、有効な領域を含むサーフェスに対する有効な領域のサイズは、他のサーフェスからのアップデート等のために、減少し得る。したがって、コンポジション・システム114は、サーフェス割り当て1102(1)〜1102(n)からの有効な領域を1以上の新たなサーフェス割り当て1104に結合するよう構成され得る。
例えば、コンポジション・システム114は、ソースとしてセットアップされ、ディスプレイ・デバイス112上のディスプレイを構成するためにレンダリングされる元となるサーフェスの数を低減することにより、サーフェス割り当て及びコンポジションに対処するよう構成され得る。これは、全体的な仮想サーフェスの有効な領域内の矩形の最適化されたセットを列挙することにより実行され得る。次いで、そのような各矩形に対して、クランプを作成することができる。これが多数の小さな矩形をもたらす場合、上述したブレンド/BLT技術を使用することができる。このようにして、コンポジション・エンジン402により適切に構成される、クリアされたピクセルの領域を有するより大きな矩形が実現され得る。
例えば、コンポジション・エンジン402がアップデート・バッチを受信すると、コンポジション・エンジン402は、更新される、ディスプレイ・ツリーを構成する仮想サーフェス及びビジュアルの「汚れた(dirtied)」部分を最初に判定することができる。これは、例えば、元となるサーフェス又は「クランプ」が変化する場合であっても(例えば、プッシュ・ダウン又は再クランピング)、アップデートから汚れた領域を明示的に計算して伝達し、コンポジタ(compositor)にトリムすることを含むよう実行され得、同一のコンテンツの有効な領域が持ち越され得るので、新たな汚れた領域は生成されない。有効な領域を記述するこのような矩形は、アップデート/トリム操作により、明示的に伝達され得る。1以上の実装において、より少ない数のより大きな矩形をもたらしてセットアップする際及びより多数のより小さなレンダリング操作を実行する際の大きなオーバヘッドを招くことを避けるために、汚れた領域を低減させることができる。このようにするための1つの技術は、最大数の汚れた矩形を許容することである。新たな汚れた矩形同士が遭遇すると、これらの矩形は、リストに付加され得るか、あるいは、全体的な最小領域増加をもたらす矩形を用いてまとめられ得る(例えば、ユニオンを形成する)。
メッシュ
図12は、メッシュを使用するコンポジション・システム114の動作を示す例示的な実装1200を示している。メッシュ(例えば、ポイントのリスト)は、単一のdraw呼び出しがGPUのドライバに対してなされ得る複数のビジュアルを含み得る。このようにして、ドライバに対する多数のdraw呼び出しを低減させることができ、それにより、各呼び出しに伴われるオーバヘッドを回避することができる。
コンポジション・エンジン402は、仮想サーフェス118のクランプ/サーフェスを構成するための多数のオプションを有する。例えば、コンポジション・エンジン402は、各クランプの有効な領域を認識しているので、コンポジション・エンジン402は、更新される汚れた領域に重なり合わないクランプをスキップすることにより開始することができる。仮想サーフェス118に含まれるビジュアルがピクセル・アラインされる場合、上述したガター技術を利用することなく、トランスレーション(translation)は変形する。これにより、クランプ内の各矩形に対して単純なBLT/ブレンドを使用することが可能となる。
こうした操作を1つずつ実行する代わりに、コンポジション・エンジン402は、矩形のセットから三角形メッシュを作成することができ、そのメッシュを用いてサーフェスをレンダリングさせることができる。例えば、有効な領域を有する矩形のセット1202が、コンポジション・システム114により調べられ得る。次いで、各矩形を2つの三角形に分割することにより、矩形のセットに対して、三角形メッシュ1204が生成され得る。しかしながら、矩形から、Tジャンクションが形成される場合もある。Tジャンクションは、例えば、浮動小数点又は丸め誤差のため、三角形メッシュ1204を継ぎ目とともにラスタ化させる場合がある。したがって、コンポジション・システム114は、代わりに、Tジャンクションを含まない、非オーバラッピング矩形の三角形メッシュ1206を形成するために、矩形のセットを処理することができる。
生成されたメッシュは、クランプの矩形が変化しない場合、コンポジション・フレームにわたってキャッシュさせることができ、再利用することができる。非ピクセル・アラインされた(non-pixel aligned)トランスフォームが存在するが、そのトランスフォームが単にトランスレーションを含む場合、コンポジション・エンジン402は、それでもメッシュを生成することができ、そのまま各クランプをレンダリングすることができる。しかしながら、より複雑なトランスフォームが存在する場合、コンポジション・エンジン402は、Tジャンクションを回避して継ぎ目のない正確なラスタ化を確実にするために、矩形のセットを処理することができる。
こうするために、各クランプは、それぞれの矩形のセットをコンポジション・システム114により管理されるメッシュ・ジェネレータ・オブジェクト(mesh generator object)に登録することができる。各座標が調べられるので、コンポジション・システム114のメッシュ・ジェネレータ機能は、すでに登録されているエッジ上に、1以上の追加的な頂点を付加することができる。エッジをそれぞれ登録することは、それ自体に付加されるその範囲において既存の頂点を有することでもある。結果は、追加的な頂点を有する、各クランプについての矩形のセットである。次いで、これらの矩形が、このような頂点を用いて非オーバラッピング三角形のセットに分割される。したがって、単純でないトランスフォームのケースでは、三角形メッシュ1206内に示される、これらの生成されたTジャンクションのないメッシュを用いて、クランプをレンダリングすることができる。
オクルージョン
図13は、オクルージョンに関するコンポジション・システム114の動作を示す例示的な実装1300を示している。各クランプが、不透明な仮想サーフェスのために、そのサーフェスの一部及びBLTの他の部分をブレンドする命令を有し得る場合であっても、コンポジション・システム114は、各クランプ上の有効で不透明な領域を認識している。
オクルージョンに関して、こうした領域は、仮想サーフェス全体にわたって蓄積することができ、オクルージョン検出のためにコンポジション・エンジン402により使用することができる。1以上の実装において、コンポジション・エンジン402は、ディスプレイ・デバイス112により表示するためにz次(z-order)においてユーザにより近い不透明なビジュアルにより隠される部分を識別するために、登録されたオクルージョン矩形を介して列挙することができる。
しかしながら、オクルージョン・パス(occlusion pass)を介して矩形を複雑な形状に分解することは、コストがかかり得る。領域を構成する非オーバラッピング矩形ストライプが、その領域全体により隠されるであろう矩形を完全に隠すことを確実にするために、コンポジション・システム114は、矩形コンテインメント技術(rectangular containment technique)及びインターセクション技術を利用することができる。
そのような技術の例が、図13の例示的な実装1300において示されている。例示的な実装1300は、第1の段階1302及び第2の段階1304により示されている。第1の段階1302において、第1の矩形1306及び第2の矩形1308が、コンポジション・エンジン402により作成される。しかしながら、コンポジション・エンジン402は、第1の矩形1306の一部1310が、第2の矩形1308により隠されていることを判定することができる。
したがって、隠している矩形がエッジ全体を見えなくするので、その結果が低減された単一の矩形である場合、コンポジション・エンジン402は、チェックされた矩形を低減するよう構成され得る。この例が、第2の段階1304において示されている。第2の段階1304において、第1の矩形1306は、第2の矩形1308により隠される一部1310を含まないように低減される。したがって、第2の矩形1308のエッジを使用して、第1の矩形1306のための新たなエッジを定めることができ、それにより、コンピューティング・デバイス102のリソースを節約することができる。多様な他の例も意図されている。
例示的な手順
以下の記載は、前述したシステム及びデバイスを利用して実装することができる技術を説明する。各手順の態様は、ハードウェア、ファームウェア、若しくはソフトウェア、又はこれらの組合せにより実装することができる。この手順は、1以上のデバイスにより実装される動作を指定するブロックのセットとして示されるが、それぞれのブロックにより動作を実行するために示される順序に限定されるわけではない。以下の記載の一部において、図1の環境100、及び図2〜図13の例示的な実装を参照する。
図14は、データをレンダリングするためにサーフェスにサイズが割り当てられる例示的な実装における手順1400を示している。1以上のビジュアルをレンダリングするためにサーフェスを割り当てるリクエストであって、サーフェスのサイズを指定するリクエストが、コンポジション・システムにより受信される(ブロック1402)。例えば、リクエストは、「ビットをレンダリングする」ことを始めるアプリケーションから発生し得る。1以上の実装において、リクエストが受信されたときにサーフェスが「ビットを保持していなかった」ように、リクエストが受信されるが割り当てられなかったときに、サーフェスは、すでに初期化されている。
リクエストの受信に応答して、1以上のビジュアルをレンダリングするために、リクエストされたサイズよりも大きなサイズを有するサーフェスが、コンポジション・システムにより割り当てられる(ブロック1404)。前述したように、コンポジション・システム114は、もはや有効ではない割り当てられたサーフェスの再利用を促進するために「メモリを蓄積する」よう構成され得る。アプリケーションによりリクエストされたよりもサーフェスを大きくすることにより、コンポジション・システム114は、サーフェスが後に再利用される可能性を増大させることができる。
図15は、有効な領域がコンポジション・システムによりトラッキングされる例示的な実装における手順1500を示している。ディスプレイ・デバイスによる表示のために、ビジュアルを含むサーフェスが、コンポジション・システムにより管理される(ブロック1502)。例えば、サーフェスは、前述した仮想サーフェスとして構成することができる。
ディスプレイ・デバイスにより表示されるサーフェス内の有効な領域がトラッキングされる(ブロック1504)。例えば、サーフェスは、ディスプレイの一部を更新するよう最初は構成され得る。しかしながら、時間の経過とともに、他のサーフェスが、そのディスプレイのすでに更新された部分をさらに更新し得る。したがって、サーフェスの一部は、表示のために有効のまま残っているが、他の部分は有効ではない。コンポジション・システム114は、この有効性をトラッキングするよう構成され得る。これを使用して、オクルージョン管理、サーフェス・リサイズ、サーフェス・コンパクション等、この記載の他の場所で説明された多種多様な機能をサポートすることができる。
図16は、サーフェスを管理するためにルック・アサイド・リストが使用される例示的な実装における手順1600を示している。1以上のビジュアルをレンダリングするためにサーフェスを割り当てるリクエストが、コンポジション・システムにより受信される(ブロック1602)。前と同様、アプリケーション110は、コンポジション・システム114の1以上のAPI116を介した呼び出しとして、リクエストを行うことができる。
受信されたリクエストに対応し、コンピューティング・デバイスのディスプレイ・デバイスによる表示のために有効であるビジュアルを含まないサーフェスが、コンピューティング・デバイスのメモリ内に割り当てられたものとして利用可能であるかを判定するために、ルック・アサイド・リストが、コンポジション・システムにより調べられる(ブロック1604)。例えば、ルック・アサイド・リストは、例えば、後の受信されるアップデートのために、メモリ内に割り当てられているがもはや有効な部分を有していないサーフェスを参照することができる。
判定されるサーフェスが利用可能であるかの調査に応答して、判定されたサーフェスが、1以上のビジュアルのレンダリングのために利用可能となる(ブロック1606)。例えば、判定されたサーフェスには、前述したように、リクエストされたよりも大きなサイズが割り当てられており、したがって、判定されたサーフェスは、後のアップデートと関連し得る。多様な他の例も意図されている。
図17は、オクルージョンに基づいてサーフェスがリサイズされる例示的な実装における手順1700を示している。サーフェスの一部が、ディスプレイ・デバイスにより表示される別のサーフェスにより隠されるかの判定がなされる(ブロック1702)。例えば、コンポジション・エンジン402は、サーフェスの表示のためのz次を判定することができ、他のサーフェスの少なくとも一部がサーフェスの一部に重なってレンダリングされるかを判定することができる。
サーフェスから一部が取り除かれる(ブロック1704)。これは、他のサーフェスのエッジを使用して、低減されるサーフェスのエッジを定め、それにより、サーフェスの少なくとも1つの新たなエッジを定めることによって等、多様な方法により実行することができる。
取り除かれた一部を有するサーフェスが、他のサーフェスとともにレンダリングされる(ブロック1706)。このようにして、サーフェスから取り除かれる一部をレンダリングすることを回避することができ、それにより、コンピューティング・デバイス102のリソースを節約することができる。
図18は、1つのサーフェスから別のサーフェスへの有効な領域のプッシュ・ダウンを伴うコンパクション技術が説明される例示的な実装における手順1800を示している。1以上のビジュアルをレンダリングするために、使用可能な複数のサーフェスの有効な領域が、コンポジション・システムによりトラッキングされる(ブロック1802)。例えば、コンポジション・システム114は、サーフェスのどの部分がディスプレイ・デバイスにより表示され、サーフェスのどの部分がディスプレイ・デバイスにより表示されないかを判定することができる。
次いで、第1のサーフェスの第1の有効な領域が、第2のサーフェスの割り当て内に包含可能かの判定が、コンポジション・システムによりなされる(ブロック1804)。例えば、第1のサーフェスは、アップデートとして構成することができる。次いで、第1の有効な領域以外のアップデートの一部を無効にする後続のアップデートが実行され得る。
次いで、第2のサーフェスの一部として包含するために、第1の有効な領域がプッシュ・ダウンされる(ブロック1806)。これは、有効な領域のビットを第2のサーフェスにコピーすることを含み得る。コピーの後、次いで、第1のサーフェスをリリースすることができ、それにより、別個のサーフェスを維持する際のリソースを節約することができるとともに、より小さな数のサーフェスを使用することにより、レンダリング操作の効率を向上させることができる。したがって、この例において、新たなサーフェスは割り当てられず、それにより、割り当てを行い維持する際のコンピューティング・デバイス102のリソースを節約することができる。他の例も意図されており、そのうちの1つについて以下で説明する。
図19は、有効な領域を新たなサーフェスに結合することを伴うコンパクション技術が説明される例示的な実装における手順1900を示している。1以上のビジュアルをレンダリングするために、使用可能な複数のサーフェスの有効な領域が、コンポジション・システムによりトラッキングされる(ブロック1902)。前と同様、コンポジション・システム114は、複数のサーフェスのどの部分がディスプレイ・デバイスにより表示され、複数のサーフェスのどの部分がディスプレイ・デバイスにより表示されないかを判定することができる。
次いで、複数のサーフェスからの有効な領域を包含するために使用可能な新たなサーフェスのための割り当てが計算される(ブロック1904)。例えば、新たなサーフェスは、複数の有効な領域の包含のために境界を有する矩形として構成することができる。次いで、新たなサーフェスが、複数のサーフェスからの有効な領域を包含するために割り当てられ(ブロック1906)、次いで、有効な領域が、新たなサーフェスにコピーされ、それにより、コンポジション・システム114が元となるサーフェスを自由にすることを可能にする。コンポジション・システム114によるサーフェス・コンパクションの多様な他の例も意図されている。
図20は、ドライバへの呼び出しを行ってメッシュを用いてサーフェスをレンダリングするために、コンポジション・システムがメッシュを使用する例示的な実装における手順2000を示している。Tジャンクションを含まない矩形のセットからメッシュが形成される(ブロック2002)。例えば、メッシュは、Tジャンクションと、したがって、前述したように、こうしたジャンクション(例えば、継ぎ目)をレンダリングする際に遭遇する複雑さとを避けるために形成される三角形のセットを記述するものとして形成することができる。ユーザ・インタフェース内にアップデートのための有効な領域を有する複数の矩形を記述するために使用することができるグラフィックス機能(例えば、GPU)のドライバに対する単一の呼び出し等、メッシュを用いてサーフェスをレンダリングするために、ドライバへの呼び出しがなされる(ブロック2004)。したがって、メッシュは、上記の対応するセクションにおいて説明したメッシュの三角形を形成するために使用される矩形の各々に対する呼び出しの使用を回避することに役立ち得る。
例示的なシステム及びデバイス
図21は、本明細書で説明した様々な技術を実装することができる1以上のコンピューティング・システム及び/又はデバイスを表す例示的なコンピューティング・デバイス2102を含む例示的なシステムを、一般に2100で示している。例えば、コンピューティング・デバイス2102は、サービス・プロバイダのサーバ、クライアントに関連付けられたデバイス(例えば、クライアント・デバイス)、オンチップ・システム、及び/又は任意の他の適切なコンピューティング・デバイス若しくはコンピューティング・システムとすることができる。コンピューティング・デバイス2102は、図1のコンポジション・システム114を含むものとして示されている。
図示された例示的なコンピューティング・デバイス2102は、処理システム2104、1以上のコンピュータ読み取り可能な媒体2106、及び1以上のI/Oインタフェース2108を含み、これらは、互いに通信可能に接続される。図示されてはいないが、コンピューティング・デバイス2102は、互いに様々なコンポーネントを接続するシステム・バス又は他のデータ・コマンド転送システムをさらに含んでもよい。システム・バスは、メモリ・バス若しくはメモリ・コントローラ、周辺バス、ユニバーサル・シリアル・バス、及び/又は多様なバス・アーキテクチャのいずれかを利用するプロセッサ・バス若しくはローカル・バス等の異なるバス・アーキテクチャの任意の1つ又はそれらの組合せを含むことができる。制御線及びデータ線等の多様な他の例も意図されている。
処理システム2104は、ハードウェアを用いて1以上の動作を実行する機能を表す。したがって、処理システム2104は、プロセッサ、機能ブロック等として構成され得るハードウェア要素2110を含むものとして示されている。これは、1以上の半導体を用いて形成される特定用途向け集積回路又は他の論理デバイスとしてのハードウェアの実装を含み得る。ハードウェア要素2110は、ハードウェア要素が形成される材料又はハードウェア要素において使用される処理機構により限定されるものではない。例えば、プロセッサは、1以上の半導体及び/又はトランジスタ(例えば、電子集積回路(IC))から構成されることがある。このようなコンテキストにおいて、プロセッサ実行可能な命令は、電子的に実行可能な命令であってよい。
コンピュータ読み取り可能な記憶媒体2106は、メモリ/ストレージ2112を含むものとして示されている。メモリ/ストレージ2112は、1以上のコンピュータ読み取り可能な媒体に関連付けられたメモリ/ストレージ能力を表す。メモリ/ストレージ・コンポーネント2112は、(ランダム・アクセス・メモリ(RAM)等の)揮発性媒体及び/又は(読み取り専用メモリ(ROM)、フラッシュ・メモリ、光ディスク、磁気ディスク等の)不揮発性媒体を含み得る。メモリ/ストレージ・コンポーネント2112は、固定媒体(例えば、RAM、ROM、固定ハード・ドライブ等)及び取り外し可能な媒体(例えば、フラッシュ・メモリ、取り外し可能なハード・ドライブ、光ディスク等)を含み得る。コンピュータ読み取り可能な媒体2106は、以下でさらに説明するような多様な他の形で構成され得る。
1以上の入力/出力インタフェース2108は、様々な入力/出力デバイスを用いて、ユーザがコマンド及び情報をコンピューティング・デバイス2102に入力することを可能にするとともに、情報をユーザ及び/又は他のコンポーネント若しくはデバイスに提示することを可能にする機能を表す。入力デバイスの例は、キーボード、カーソル制御デバイス(例えば、マウス)、マイクロフォン、スキャナ、タッチ機能(例えば、物理的接触を検出するよう構成されている静電容量式センサ又は他のセンサ)、カメラ(例えば、赤外周波数等の可視波長又は不可視波長を使用して、接触を伴わないジェスチャとして動きを認識することができる)等を含む。出力デバイスの例は、ディスプレイ・デバイス(例えば、モニタ又はプロジェクタ)、スピーカ、プリンタ、ネットワーク・カード、触覚応答デバイス等を含む。したがって、コンピューティング・デバイス2102は、ユーザ・インタラクションをサポートするために、以下でさらに説明するような多様な形で構成され得る。
ソフトウェア、ハードウェア要素、又はプログラム・モジュールの一般的コンテキストにおいて、様々な技術が、本明細書において説明され得る。一般に、そのようなモジュールは、特定のタスクを実行するか、あるいは、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、エレメント、コンポーネント、データ構造等を含む。「モジュール」、「機能」、及び「コンポーネント」という用語は、本明細書で使用されるとき、一般に、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せを表す。本明細書で説明した技術の特徴は、プラットフォームに依存しない、すなわち、こうした技術は、多様なプロセッサを有する多様な商用コンピューティング・プラットフォーム上で実装することができる。
説明したモジュール及び技術の実装は、何らかの形態のコンピュータ読み取り可能な媒体上に記憶することができ、あるいは、何らかの形態のコンピュータ読み取り可能な媒体にわたって伝送することができる。コンピュータ読み取り可能な媒体は、コンピューティング・デバイス2102によりアクセスされ得る多様な媒体を含み得る。限定ではなく例として、コンピュータ読み取り可能な媒体は、「コンピュータ読み取り可能な記憶媒体」及び「コンピュータ読み取り可能な信号媒体」を含み得る。
「コンピュータ読み取り可能な記憶媒体」は、単なる信号伝送、搬送波、又は信号自体ではなく、永続的な且つ/又は非トランジトリな情報の記憶を可能にする媒体及び/又はデバイスを指し得る。したがって、コンピュータ読み取り可能な記憶媒体は、非信号担持媒体を指す。コンピュータ読み取り可能な記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、論理エレメント/回路、又は他のデータ等の情報を記憶するのに適した方法又は技術により実装された、揮発性及び不揮発性、取り外し可能な及び取り外し不可能な媒体及び/又はストレージ・デバイス等のハードウェアを含む。コンピュータ読み取り可能な記憶媒体の例は、RAM、ROM、EEPROM、フラッシュ・メモリ、若しくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、若しくは他の光ストレージ、ハード・ディスク、磁気カセット、磁気テープ、磁気ディスク・ストレージ、若しくは他の磁気ストレージ・デバイス、又は他のストレージ・デバイス、有体の媒体、又は所望の情報を記憶するのに適しておりコンピュータによりアクセスされ得る製品を含み得るが、これらに限定されるものではない。
「コンピュータ読み取り可能な信号媒体」は、例えばネットワークを介して、コンピューティング・デバイス2102のハードウェアに命令を伝送するよう構成されている信号担持媒体を指し得る。信号媒体は、一般的に、搬送波、データ信号、又は他の搬送機構等の変調されたデータ信号内に、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、又は他のデータを具現化し得る。信号媒体はまた、任意の情報伝達媒体を含む。「変調されたデータ信号」という用語は、情報をその信号内で符号化するような方法で設定又は変更されたその特性の1以上を有する信号を意味する。例えば、通信媒体は、有線ネットワーク又は直接配線接続などの有線媒体、並びに、音響、RF、赤外線、及び他の無線媒体等の無線媒体を含むが、これらに限定されるものではない。
前述したように、ハードウェア要素2110及びコンピュータ読み取り可能な媒体2106は、1以上の命令を実行する等のために、本明細書で説明した少なくともいくつかの技術の態様を実装するいくつかの実施形態において使用することができるハードウェア形態で実装されたモジュール、プログラマブル・デバイス・ロジック、及び/又は固定デバイス・ロジックを表す。ハードウェアは、集積回路又はオンチップ・システムのコンポーネント、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、コンプレックス・プログラマブル論理デバイス(CPLD)、及び、シリコン又は他のハードウェアによる他の実装を含み得る。このコンテキストにおいて、ハードウェアは、命令により定められるプログラム・タスク及び/又はハードウェアにより具現化されるロジックを実行する処理デバイスとして機能することができるとともに、例えば、前述したコンピュータ読み取り可能な記憶媒体といった実行するための命令を記憶するために利用されるハードウェアとして機能することができる。
上記の組合せを使用して、本明細書で説明した様々な技術を実装することもできる。したがって、ソフトウェア、ハードウェア、又は実行可能なモジュールが、何らかの形態のコンピュータ読み取り可能な記憶媒体上に具現化される、且つ/又は1以上のハードウェア要素2110により具現化される1以上の命令及び/又はロジックとして実装され得る。コンピューティング・デバイス2102は、ソフトウェア・モジュール及び/又はハードウェア・モジュールに対応する特定の命令及び/又は機能を実装するよう構成され得る。したがって、ソフトウェアとしてコンピューティング・デバイス2102により実行可能なモジュールの実装は、例えば、コンピュータ読み取り可能な記憶媒体及び/又は処理システム2104のハードウェア要素2110を使用することにより、少なくとも一部はハードウェアを用いて実現され得る。命令及び/又は機能は、本明細書で説明した技術、モジュール、及び例を実装するために、1以上の製品(例えば、1以上のコンピューティング・デバイス2102及び/又は処理システム2104)により実行可能/動作可能であり得る。
図21にさらに示されるように、例示的なシステム2100は、パーソナル・コンピュータ(PC)、テレビジョン・デバイス、及び/又はモバイル・デバイス上でアプリケーションを実行するときに、シームレスなユーザ・エクスペリエンスのためのユビキタス環境を可能にする。サービス及びアプリケーションは、アプリケーションを使用している、ビデオ・ゲームをプレイしている、ビデオを観賞している間等に1つのデバイスから次のデバイスに移るとき、共通のユーザ・エクスペリエンスのために、3つの環境全てにおいて実質的に同様に動作する。
例示的なシステム2100において、複数のデバイスが、中央コンピューティング・デバイスを介して相互接続される。中央コンピューティング・デバイスは、複数のデバイスに対してローカルにあってもよいし、あるいは、複数のデバイスからリモートに配置されてもよい。一実施形態において、中央コンピューティング・デバイスは、ネットワーク、インタネット、又は他のデータ通信リンクを介して複数のデバイスに接続されている1以上のサーバ・コンピュータのクラウドであってよい。
一実施形態において、この相互接続アーキテクチャにより、共通のシームレスなエクスペリエンスを複数のデバイスのユーザに提供するために、機能を複数のデバイスにわたって分散させることが可能となる。複数のデバイスの各々は、異なる物理的要件及び能力を有し得る。中央コンピューティング・デバイスは、プラットフォームを使用して、デバイス向けに調整されるとともにそれでも全てのデバイスに共通のエクスペリエンスをデバイスに提供することを可能にする。一実施形態において、ターゲット・デバイスのクラスが作成され、エクスペリエンスが、デバイスの全体的クラス向けに調整される。デバイスのクラスは、物理的特徴、使用のタイプ、又はデバイスの他の共通の特性により定められ得る。
様々な実装において、コンピューティング・デバイス2102は、コンピュータ2114、モバイル2116、及びテレビジョン2118向け等、多種多様な構成を想定し得る。これらの構成の各々は、一般に異なる構造及び能力を有し得るデバイスを含み、したがって、コンピューティング・デバイス2102は、異なるデバイス・クラスの1以上に従って構成され得る。例えば、コンピューティング・デバイス2102は、パーソナル・コンピュータ、デスクトップ・コンピュータ、マルチ・スクリーン・コンピュータ、ラップトップ・コンピュータ、ネット・ブック等を含むデバイスのコンピュータ2114・クラスとして実装され得る。
コンピューティング・デバイス2102はまた、携帯電話、ポータブル音楽プレイヤ、ポータブル・ゲーミング・デバイス、タブレット・コンピュータ、マルチ・スクリーン・コンピュータ等のモバイル・デバイスを含むデバイスのモバイル2116・クラスとしても実装され得る。コンピューティング・デバイス2102はまた、臨時の視聴環境におけるより大きなスクリーンを有するデバイス又はそのようなスクリーンに一般に接続されたデバイスを含むデバイスのテレビジョン2118・クラスとしても実装され得る。これらのデバイスは、テレビジョン、セットトップ・ボックス、ゲーミング・コンソール等を含む。
本明細書で説明した技術は、コンピューティング・デバイス2102のこれら様々な構成によりサポートされ得るものであり、本明細書で説明した技術の特定の例に限定されるものではない。この機能は、以下で説明するように、「クラウド」2120を介してプラットフォーム2122を用いる等、分散システムを使用することにより、全てが又は部分的に実装され得る。
クラウド2120は、リソース2124のためのプラットフォーム2122を含む、且つ/又はリソース2124のためのプラットフォーム2122を表す。プラットフォーム2122は、クラウド2120のハードウェア・リソース(例えば、サーバ)及びソフトウェア・リソースの基本的機能を抽象化する。リソース2124は、コンピューティング・デバイス2102からリモートにあるサーバ上でコンピュータ処理が実行されている間に使用することができるアプリケーション及び/又はデータを含み得る。リソース2124はまた、インタネット、及び/又は、セルラネットワーク若しくはWi−Fi(登録商標)ネットワーク等の加入者ネットワークを介して提供されるサービスも含み得る。
プラットフォーム2122は、コンピューティング・デバイス2102を他のコンピューティング・デバイスに接続するためのリソース及び機能を抽象化し得る。プラットフォーム2122はまた、プラットフォーム2122を通じて実現されるリソース2124に対して出された要求に合わせて、対応するレベルの規模を提供するために、リソースの規模調整(scaling)を抽象化する働きもする。したがって、相互接続されたデバイスの実施形態において、本明細書で説明した機能の実装は、システム2100全体を通じて分散させることができる。例えば、機能は、コンピューティング・デバイス2102上に部分的に実装されるとともに、クラウド2120の機能を抽象化するプラットフォーム2122を通じて実装され得る。
結論
本発明が、構造的特徴及び/又は方法論的動作に特有の言葉で説明されたが、添付の特許請求の範囲において定められる本発明は、説明した特定の特徴又は動作に必ずしも限定される必要がないことを理解すべきである。むしろ、特定の特徴及び動作は、特許請求された発明を実施するための例示的な形態として開示されたものである。

Claims (10)

  1. コンピューティング・デバイスにより実施される方法であって、
    1以上のビジュアルをレンダリングするためにサーフェスを割り当てるリクエストを、コンポジション・システムにより受信するステップであって、前記リクエストは、前記サーフェスのサイズを指定する、受信するステップと、
    前記リクエストの前記受信に応答して、前記1以上のビジュアルをレンダリングするために、リクエストされた前記サイズよりも大きなサイズを有する前記サーフェスを、前記コンポジション・システムにより割り当てるステップと、
    を含む、方法。
  2. 前記リクエストは、前記コンピューティング・デバイスにより実行される1以上のアプリケーションから、前記コンポジション・システムにより受信される、請求項1記載の方法。
  3. 前記リクエストは、前記1以上のアプリケーションから、前記コンポジション・システムの1以上のアプリケーション・プログラミング・インタフェースを介して受信される、請求項2記載の方法。
  4. 前記リクエストが受信されるとき、前記サーフェスは、前記コンポジション・システムにより初期化されるが、前記コンピューティング・デバイスのメモリ内には割り当てられない、請求項1記載の方法。
  5. 前記サーフェスは、前記コンポジション・システムにより維持される仮想サーフェスであり、前記仮想サーフェスを作成し、更新し、削除する機能を含む、請求項1記載の方法。
  6. 前記仮想サーフェスは、1以上のビジュアルを前記コンピューティング・デバイスのディスプレイ・デバイス上に表示するために、リクエストが受信される前に前記1以上のビジュアルをレンダリングする機能を含む、請求項5記載の方法。
  7. 前記仮想サーフェスは、初期化されるときに、実際の割り当てにより、前記1以上のアプリケーションから、バックされない、請求項1記載の方法。
  8. 少なくとも部分的にハードウェアを用いて実装された1以上のモジュールを備え、
    1以上のアプリケーションによりアクセスするための1以上のアプリケーション・プログラミング・インタフェースを公開して、1以上のビジュアルをレンダリングするために前記1以上のアプリケーションにより指定されるサイズを有する仮想サーフェスを割り当てるコンポジション・システムを実装するよう構成されたコンピューティング・デバイス。
  9. 前記コンポジション・システムによる前記仮想サーフェスの前記割り当ては、前記1以上のアプリケーションによりリクエストされた前記サイズよりも大きなサイズを有するように実行される、請求項8記載のコンピューティング・デバイス。
  10. 命令を記憶した1以上のコンピュータ読み取り可能な記憶媒体であって、コンピューティング・デバイスによる実行に応答して、前記命令は、前記コンピューティング・デバイスに、
    ディスプレイ・デバイスにより表示されるビジュアルを含むサーフェスを管理すること、及び前記ディスプレイ・デバイスにより表示される前記サーフェス内の有効な領域をトラッキングすることを含む1以上の動作を実行するコンポジション・システムを実装させる、1以上のコンピュータ読み取り可能な記憶媒体。
JP2015515033A 2012-05-31 2013-05-17 仮想サーフェス割り当て Expired - Fee Related JP6230076B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/485,805 US9286122B2 (en) 2012-05-31 2012-05-31 Display techniques using virtual surface allocation
US13/485,805 2012-05-31
PCT/US2013/041485 WO2013180977A1 (en) 2012-05-31 2013-05-17 Virtual surface allocation

Publications (3)

Publication Number Publication Date
JP2015528145A true JP2015528145A (ja) 2015-09-24
JP2015528145A5 JP2015528145A5 (ja) 2016-06-16
JP6230076B2 JP6230076B2 (ja) 2017-11-15

Family

ID=48538069

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015515033A Expired - Fee Related JP6230076B2 (ja) 2012-05-31 2013-05-17 仮想サーフェス割り当て

Country Status (6)

Country Link
US (1) US9286122B2 (ja)
EP (1) EP2859447B1 (ja)
JP (1) JP6230076B2 (ja)
KR (1) KR102055467B1 (ja)
CN (1) CN104321752B (ja)
WO (1) WO2013180977A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9230517B2 (en) * 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9582848B2 (en) 2012-12-28 2017-02-28 Apple Inc. Sprite Graphics rendering system
US20140320592A1 (en) * 2013-04-30 2014-10-30 Microsoft Corporation Virtual Video Camera
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
CN108961382B (zh) * 2018-07-11 2019-11-26 腾讯科技(深圳)有限公司 一种图像渲染方法、装置和存储介质
CN110570506B (zh) * 2019-09-11 2023-09-22 珠海金山数字网络科技有限公司 一种地图资源管理方法、装置、计算设备及存储介质
US20230059021A1 (en) * 2021-08-23 2023-02-23 Jobby Inc. Portal and interface system and method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
JP2002536754A (ja) * 1999-02-05 2002-10-29 エクスサイズ コーポレイション 代替型表示コンテンツコントローラ
US7594093B1 (en) * 2006-10-12 2009-09-22 Foundry Networks, Inc. Virtual memory mapping for efficient memory usage

Family Cites Families (198)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0418638A (ja) * 1990-05-11 1992-01-22 Fujitsu Ltd 静的メモリ割当て処理方法
US5270103A (en) 1990-11-21 1993-12-14 Xerox Corporation Coated receiver sheets
EP0620520A1 (en) 1993-03-30 1994-10-19 AT&T Corp. Method for making persistent data objects having hidden pointers
US5729704A (en) * 1993-07-21 1998-03-17 Xerox Corporation User-directed method for operating on an object-based model data structure through a second contextual image
WO1995022104A1 (en) * 1994-02-14 1995-08-17 Ni-Tech Pty. Limited Use of multiple applications and allocation of memory or other resources in a gui environment
JP3346513B2 (ja) 1994-07-01 2002-11-18 ミノルタ株式会社 マップ記憶方法及びそのマップを使用する経路作成方法
AUPM701394A0 (en) 1994-07-22 1994-08-18 Monash University A graphical display system
AUPM704194A0 (en) 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Efficient methods for the evaluation of a graphical programming language
US5564002A (en) 1994-08-01 1996-10-08 International Business Machines Corporation Method and apparatus for implementing a virtual desktop through window positioning
US5588071A (en) 1994-10-26 1996-12-24 Minnesota Mining And Manufacturing Company Identifying an area of interest using histogram data arranged in predetermined sequence
US5929852A (en) * 1995-05-05 1999-07-27 Apple Computer, Inc. Encapsulated network entity reference of a network component system
US6525722B1 (en) 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US5781195A (en) 1996-04-16 1998-07-14 Microsoft Corporation Method and system for rendering two-dimensional views of a three-dimensional surface
US5801717A (en) * 1996-04-25 1998-09-01 Microsoft Corporation Method and system in display device interface for managing surface memory
US5844569A (en) 1996-04-25 1998-12-01 Microsoft Corporation Display device interface including support for generalized flipping of surfaces
US5870769A (en) 1996-06-07 1999-02-09 At&T Corp. Internet access system and method with active link status indicators
US6067093A (en) * 1996-08-14 2000-05-23 Novell, Inc. Method and apparatus for organizing objects of a network map
US5986670A (en) 1996-09-13 1999-11-16 Dries; Roberta L. Method and apparatus for producing a computer generated display that permits visualization of changes to the interior or exterior of a building structure shown in its actual environment
US6249289B1 (en) 1996-11-27 2001-06-19 Silicon Graphics, Inc. Multi-purpose high resolution distortion correction
US5918239A (en) 1997-01-21 1999-06-29 International Business Machines Corporation Deferred display of web pages corresponding to links selected by user
US6191796B1 (en) 1998-01-21 2001-02-20 Sensable Technologies, Inc. Method and apparatus for generating and interfacing with rigid and deformable surfaces in a haptic virtual reality environment
US6182133B1 (en) 1998-02-06 2001-01-30 Microsoft Corporation Method and apparatus for display of information prefetching and cache status having variable visual indication based on a period of time since prefetching
US6278479B1 (en) 1998-02-24 2001-08-21 Wilson, Hewitt & Associates, Inc. Dual reality system
JP4434355B2 (ja) 1998-03-27 2010-03-17 キヤノン株式会社 アニメ―ションフォント作成装置
US6091422A (en) 1998-04-03 2000-07-18 Avid Technology, Inc. System for editing complex visual data providing a continuously updated rendering
US6426750B1 (en) 1998-07-14 2002-07-30 Microsoft Corporation Run-time geomorphs
US6552722B1 (en) 1998-07-17 2003-04-22 Sensable Technologies, Inc. Systems and methods for sculpting virtual objects in a haptic virtual reality environment
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US7031517B1 (en) 1998-10-02 2006-04-18 Canon Kabushiki Kaisha Method and apparatus for segmenting images
US6853385B1 (en) 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6411302B1 (en) * 1999-01-06 2002-06-25 Concise Multimedia And Communications Inc. Method and apparatus for addressing multiple frame buffers
US7013021B2 (en) 1999-03-19 2006-03-14 Digimarc Corporation Watermark detection utilizing regions with higher probability of success
US6636633B2 (en) 1999-05-03 2003-10-21 Intel Corporation Rendering of photorealistic computer graphics images
US6657645B2 (en) 1999-06-11 2003-12-02 Microsoft Corporation System, method, and computer-readable medium for displaying keyboard cues in a window
US6542160B1 (en) 1999-06-18 2003-04-01 Phoenix Technologies Ltd. Re-generating a displayed image
US6226017B1 (en) 1999-07-30 2001-05-01 Microsoft Corporation Methods and apparatus for improving read/modify/write operations
US6330003B1 (en) 1999-07-30 2001-12-11 Microsoft Corporation Transformable graphical regions
US6335765B1 (en) 1999-11-08 2002-01-01 Weather Central, Inc. Virtual presentation system and method
US6501474B1 (en) 1999-11-29 2002-12-31 Ati International Srl Method and system for efficient rendering of image component polygons
US6894698B2 (en) 2000-01-11 2005-05-17 Sun Microsystems, Inc. Recovering added precision from L-bit samples by dithering the samples prior to an averaging computation
US6850967B1 (en) 2000-02-19 2005-02-01 Hewlett-Packard Development Company, L.P. System and method for ensuring transparent sychronization of multiple applications across remote systems
US7738688B2 (en) 2000-05-03 2010-06-15 Aperio Technologies, Inc. System and method for viewing virtual slides
US6704024B2 (en) 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
US6864886B1 (en) 2000-08-10 2005-03-08 Sportvision, Inc. Enhancing video using a virtual surface
JP4595228B2 (ja) 2000-08-24 2010-12-08 ソニー株式会社 受信装置および方法、送信装置および方法、記録媒体、並びに通信システム
US7756391B1 (en) 2000-09-01 2010-07-13 Matrox Electronic Systems Ltd. Real-time video editing architecture
US6900813B1 (en) 2000-10-04 2005-05-31 Ati International Srl Method and apparatus for improved graphics rendering performance
US6954218B2 (en) 2000-10-30 2005-10-11 Microsoft Corporation Method and apparatus for high-performance rendering and hit-testing of a window tree
US6762776B2 (en) 2000-11-10 2004-07-13 Microsoft Corporation Mouse input panel windows class list
US6906985B2 (en) 2001-01-25 2005-06-14 Dphi Acquisitions, Inc. Calibration of tracking error signal gain in a tracking servo system
JP4551018B2 (ja) 2001-04-05 2010-09-22 富士通株式会社 画像結合装置
US6885374B2 (en) 2001-06-29 2005-04-26 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a time allocator
US6809745B1 (en) 2001-10-01 2004-10-26 Adobe Systems Incorporated Compositing two-dimensional and 3-dimensional images
US6904169B2 (en) 2001-11-13 2005-06-07 Nokia Corporation Method and system for improving color images
US7010755B2 (en) 2002-04-05 2006-03-07 Microsoft Corporation Virtual desktop manager
CN1659589A (zh) 2002-04-19 2005-08-24 电脑联合想象公司 用于提供推理服务的系统和方法
US6894692B2 (en) 2002-06-11 2005-05-17 Hewlett-Packard Development Company, L.P. System and method for sychronizing video data streams
US7324116B2 (en) * 2002-06-20 2008-01-29 Microsoft Corporation Systems and methods for providing controllable texture sampling
US7069396B2 (en) 2002-06-27 2006-06-27 Hewlett-Packard Development Company, L.P. Deferred memory allocation for application threads
US20040008212A1 (en) 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Reshaping irregularly-shaped images for improved compression
US7051040B2 (en) 2002-07-23 2006-05-23 Lightsurf Technologies, Inc. Imaging system providing dynamic viewport layering
US7130890B1 (en) 2002-09-04 2006-10-31 Hewlett-Packard Development Company, L.P. Method and system for adaptively prefetching objects from a network
JP4158462B2 (ja) 2002-09-04 2008-10-01 ソニー株式会社 画面表示処理装置及び画面表示処理方法、並びにコンピュータ・プログラム
US8961316B2 (en) 2002-12-10 2015-02-24 Ol2, Inc. System and method for improving the graphics performance of hosted applications
US7127592B2 (en) * 2003-01-08 2006-10-24 Sun Microsystems, Inc. Method and apparatus for dynamically allocating registers in a windowed architecture
US6992675B2 (en) 2003-02-04 2006-01-31 Ati Technologies, Inc. System for displaying video on a portable device and method thereof
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
US7133054B2 (en) 2004-03-17 2006-11-07 Seadragon Software, Inc. Methods and apparatus for navigating an image
US7126606B2 (en) 2003-03-27 2006-10-24 Microsoft Corporation Visual and scene graph interfaces
US7088374B2 (en) 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
EP1465116A1 (en) 2003-03-31 2004-10-06 STMicroelectronics Limited Computer graphics
NO20031586L (no) 2003-04-08 2004-10-11 Favourite Systems As Vindussystem for datainnretning
JP3966832B2 (ja) 2003-04-28 2007-08-29 株式会社東芝 描画処理装置、及び、描画処理方法
US7215801B2 (en) 2003-06-05 2007-05-08 General Electric Company Method, system and apparatus for processing radiographic images of scanned objects
DE10326811A1 (de) 2003-06-13 2005-01-20 Siemens Ag Verfahren zur Darstellung von Grafikobjekten und Kommunikationsgerät
US7391424B2 (en) 2003-08-15 2008-06-24 Werner Gerhard Lonsing Method and apparatus for producing composite images which contain virtual objects
US7219209B2 (en) * 2003-08-29 2007-05-15 Motorola, Inc. Bus filter for memory address translation
US20050283566A1 (en) 2003-09-29 2005-12-22 Rockwell Automation Technologies, Inc. Self testing and securing ram system and method
US7949960B2 (en) 2003-09-30 2011-05-24 Sap Ag Predictive rendering of user interfaces
US7839419B2 (en) 2003-10-23 2010-11-23 Microsoft Corporation Compositing desktop window manager
US7511718B2 (en) 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US7369134B2 (en) * 2003-12-29 2008-05-06 Anark Corporation Methods and systems for multimedia memory management
US7313668B2 (en) * 2004-01-29 2007-12-25 Hewlett-Packard Development Company, L.P. Immediate virtual memory
US7986328B2 (en) 2004-02-26 2011-07-26 Hewlett-Packard Development Company, L.P. Graphics optimization system and method
US7342580B1 (en) 2004-04-02 2008-03-11 Pacific Data Images Llc Surface compression based on reference geometry in animation models
US7484065B2 (en) * 2004-04-20 2009-01-27 Hewlett-Packard Development Company, L.P. Selective memory allocation
US7950026B1 (en) 2004-06-24 2011-05-24 Julian Michael Urbach Virtual application execution system and method
US7830372B2 (en) * 2004-08-30 2010-11-09 Qnx Software Systems Gmbh & Co. Kg Method and system for providing transparent access to hardware graphic layers
US20060107229A1 (en) 2004-11-15 2006-05-18 Microsoft Corporation Work area transform in a graphical user interface
US7334104B2 (en) * 2004-11-20 2008-02-19 International Business Machines Corporation Satisfying memory allocation requests from memory pool or lookaside lists based on memory size requested to be allocated
GB0502844D0 (en) 2005-02-11 2005-03-16 Univ Edinburgh Storing digital content for access using a captured image
US7624354B2 (en) 2005-04-29 2009-11-24 Microsoft Corporation Efficient workspace management using content groups
US7404152B2 (en) 2005-06-03 2008-07-22 Research In Motion Limited Displaying messages on handheld devices
US20060290705A1 (en) 2005-06-24 2006-12-28 Microsoft Corporation Performing a pre-rendering pass in digital image processing
US9041744B2 (en) * 2005-07-14 2015-05-26 Telecommunication Systems, Inc. Tiled map display on a wireless device
US7681200B2 (en) 2005-07-22 2010-03-16 Microsoft Corporation Secure hardware desktop buffer composition
US20070040788A1 (en) 2005-08-17 2007-02-22 Texas Instruments, Inc. Modular Graphics Stack With Video Support
JP4305431B2 (ja) 2005-09-06 2009-07-29 ソニー株式会社 画像処理装置、マスク作成方法及びプログラム
EP1770954A1 (en) 2005-10-03 2007-04-04 Amadeus S.A.S. System and method to maintain coherence of cache contents in a multi-tier software system aimed at interfacing large databases
WO2007047349A2 (en) * 2005-10-14 2007-04-26 Symantec Operating Corporation Technique for improving scalability and portability of a storage management system
TWI322354B (en) 2005-10-18 2010-03-21 Via Tech Inc Method and system for deferred command issuing in a computer system
US7383393B2 (en) 2005-10-28 2008-06-03 Freescale Semiconductor, Inc. System and method for cooperative prefetching
US8255818B2 (en) 2005-11-17 2012-08-28 Oracle International Corporation System and method for providing drag and drop functionality in a communities framework
US20070121132A1 (en) * 2005-11-30 2007-05-31 Microsoft Corporation Spectral color management
JP2007157063A (ja) 2005-12-08 2007-06-21 Sony Corp 画像処理装置及び画像処理方法、並びにコンピュータ・プログラム
KR101256548B1 (ko) 2005-12-30 2013-04-19 삼성전자주식회사 영상 부호화 및 복호화 장치 및 그 방법
US8244051B2 (en) 2006-03-15 2012-08-14 Microsoft Corporation Efficient encoding of alternative graphic sets
US7880745B2 (en) 2006-06-20 2011-02-01 Via Technologies, Inc. Systems and methods for border color handling in a graphics processing unit
US7401199B2 (en) * 2006-06-28 2008-07-15 Motorola, Inc Method and system for allocating memory to an electronic device
US7733350B2 (en) 2006-06-30 2010-06-08 Microsoft Corporation Anisometric texture synthesis
US20080071559A1 (en) * 2006-09-19 2008-03-20 Juha Arrasvuori Augmented reality assisted shopping
KR101217559B1 (ko) 2006-10-27 2013-01-02 삼성전자주식회사 전력 소모를 최소화하는 그래픽스 데이터 렌더링 방법 및장치
KR20080051484A (ko) 2006-12-06 2008-06-11 삼성전자주식회사 휴대단말기의 응용프로그램 인터페이스 제공 시스템 및방법
CN101197044B (zh) 2006-12-06 2011-02-02 鸿富锦精密工业(深圳)有限公司 图像合成系统及方法
JP4860488B2 (ja) 2007-01-04 2012-01-25 ルネサスエレクトロニクス株式会社 画像表示制御装置
US20090213081A1 (en) 2007-01-10 2009-08-27 Case Jr Charlie W Portable Electronic Device Touchpad Input Controller
US8203564B2 (en) 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
US8108799B2 (en) * 2007-03-30 2012-01-31 Microsoft Corporation Remoting of windows presentation framework based applications in a non-composed desktop
US20080238928A1 (en) * 2007-03-30 2008-10-02 Bimal Poddar Frame buffer compression for desktop composition
US20080285074A1 (en) 2007-04-20 2008-11-20 Global Graphics Software Limited Systems, devices, and methods for variable data printing
US7843451B2 (en) 2007-05-25 2010-11-30 Google Inc. Efficient rendering of panoramic images, and applications thereof
US7941758B2 (en) 2007-09-04 2011-05-10 Apple Inc. Animation of graphical objects
US8368692B2 (en) 2007-10-19 2013-02-05 Siemens Aktiengesellschaft Clipping geometries in ray-casting
EP2235713A4 (en) 2007-11-29 2012-04-25 Oculis Labs Inc METHOD AND APPARATUS FOR SECURE VISUAL CONTENT DISPLAY
KR100932634B1 (ko) 2007-12-27 2009-12-21 팅크웨어(주) 증강 현실을 이용한 3차원 웹 지도 서비스 방법 및 그시스템
US20090172331A1 (en) * 2007-12-31 2009-07-02 Balaji Vembu Securing content for playback
US8555193B2 (en) 2008-01-17 2013-10-08 Google Inc. System for intelligent automated layout and management of interactive windows
US8204338B2 (en) 2008-02-14 2012-06-19 Microsoft Corporation Factoring repeated content within and among images
US7937452B2 (en) 2008-02-19 2011-05-03 Microsoft Corporation Framework for rendering plug-ins in remote access services
US8525825B2 (en) 2008-02-27 2013-09-03 Google Inc. Using image content to facilitate navigation in panoramic image data
US8010624B2 (en) 2008-03-27 2011-08-30 Amazon Technologies, Inc. Dynamic composition for image transmission
US8125495B2 (en) 2008-04-17 2012-02-28 Microsoft Corporation Displaying user interface elements having transparent effects
US8307300B1 (en) 2008-05-13 2012-11-06 Google Inc. Content resizing and caching in multi-process browser architecture
JP5043748B2 (ja) 2008-05-19 2012-10-10 キヤノン株式会社 コンテンツ管理装置、コンテンツ管理装置の制御方法、プログラム及び記録媒体
US8184120B2 (en) * 2008-05-19 2012-05-22 Siemens Aktiengesellschaft Framework for processing and rendering large volume data
US20090315900A1 (en) * 2008-06-23 2009-12-24 Microsoft Corporation Generic surface manager
US8432405B2 (en) 2008-06-26 2013-04-30 Microsoft Corporation Dynamically transitioning between hardware-accelerated and software rendering
US8176433B2 (en) * 2008-08-18 2012-05-08 International Business Machines Corporation Application window area change surveillance
WO2010030712A1 (en) * 2008-09-09 2010-03-18 Citrix Systems, Inc. Methods and systems for per pixel alpha-blending of a parent window and a portion of a background image
US20100073379A1 (en) 2008-09-24 2010-03-25 Sadan Eray Berger Method and system for rendering real-time sprites
US8176096B2 (en) * 2008-12-18 2012-05-08 Microsoft Corporation Data visualization interactivity architecture
US20100162126A1 (en) 2008-12-23 2010-06-24 Palm, Inc. Predictive cache techniques
US8161087B2 (en) 2008-12-30 2012-04-17 Sap France Displaying and manipulating virtual objects on virtual surfaces
EP2375404A4 (en) 2009-01-06 2013-03-06 Mitsubishi Electric Corp DEVICE FOR CONTROLLING DRAWING PLATES
US8448090B2 (en) 2009-01-23 2013-05-21 Hewlett-Packard Development Company, L.P. Selective plug-in activation for resource-limited platforms
US8207983B2 (en) 2009-02-18 2012-06-26 Stmicroelectronics International N.V. Overlaying videos on a display device
WO2010124397A1 (en) 2009-04-29 2010-11-04 Torch Mobile Inc. Software-based asynchronous tiled backingstore
JP4676011B2 (ja) 2009-05-15 2011-04-27 株式会社東芝 情報処理装置、表示制御方法およびプログラム
US8368707B2 (en) * 2009-05-18 2013-02-05 Apple Inc. Memory management based on automatic full-screen detection
US8368694B2 (en) 2009-06-04 2013-02-05 Autodesk, Inc Efficient rendering of multiple frame buffers with independent ray-tracing parameters
US9009612B2 (en) 2009-06-07 2015-04-14 Apple Inc. Devices, methods, and graphical user interfaces for accessibility using a touch-sensitive surface
US8896505B2 (en) 2009-06-12 2014-11-25 Global Oled Technology Llc Display with pixel arrangement
US8907941B2 (en) 2009-06-23 2014-12-09 Disney Enterprises, Inc. System and method for integrating multiple virtual rendering systems to provide an augmented reality
US9298345B2 (en) 2009-06-23 2016-03-29 Microsoft Technology Licensing, Llc Block view for geographic navigation
US8223180B2 (en) 2009-08-24 2012-07-17 Samsung Electronics Co., Ltd. Gamut mapping which takes into account pixels in adjacent areas of a display unit
JP5451285B2 (ja) 2009-09-24 2014-03-26 キヤノン株式会社 画像処理装置、画像処理方法
US8832585B2 (en) 2009-09-25 2014-09-09 Apple Inc. Device, method, and graphical user interface for manipulating workspace views
KR101718533B1 (ko) 2009-09-25 2017-03-21 톰슨 라이센싱 그리드 내비게이션을 위한 장치 및 방법
US8497876B2 (en) 2009-11-02 2013-07-30 Pacific Data Images Llc Infinite complexity deep-framebuffer rendering
US9268466B2 (en) 2009-12-09 2016-02-23 Citrix Systems, Inc. Methods and systems for updating a dock with a user interface element representative of a remote application
US9146884B2 (en) 2009-12-10 2015-09-29 Microsoft Technology Licensing, Llc Push pull adaptive capture
JP4818427B2 (ja) 2009-12-22 2011-11-16 株式会社東芝 情報処理装置及び画面選択方法
US20110173569A1 (en) 2010-01-13 2011-07-14 Rockmelt, Inc. Preview Functionality for Increased Browsing Speed
KR101661931B1 (ko) 2010-02-12 2016-10-10 삼성전자주식회사 3차원 그래픽스 랜더링 장치 및 그 방법
EP2558956B1 (en) 2010-04-12 2019-06-12 Google LLC Synthetic navigation elements for electronic documents
JP5541974B2 (ja) 2010-06-14 2014-07-09 任天堂株式会社 画像表示プログラム、装置、システムおよび方法
US8839112B2 (en) * 2010-08-10 2014-09-16 Microsoft Corporation Cloning or extending a computer desktop on a wireless display surface
US8493404B2 (en) 2010-08-24 2013-07-23 Qualcomm Incorporated Pixel rendering on display
KR101705581B1 (ko) 2010-09-30 2017-02-22 삼성전자주식회사 데이터 처리 장치 및 방법
US8860716B2 (en) 2010-10-13 2014-10-14 3D Nuri Co., Ltd. 3D image processing method and portable 3D display apparatus implementing the same
KR101174216B1 (ko) 2010-10-25 2012-08-14 엔에이치엔(주) 지역기반의 검색어를 추천하는 시스템 및 그 방법
US8799759B2 (en) 2010-12-13 2014-08-05 International Business Machines Corporation Pre-rendering web content
US10109065B2 (en) * 2011-01-25 2018-10-23 Qualcomm Incorporated Using occlusions to detect and track three-dimensional objects
US9147264B2 (en) 2011-02-23 2015-09-29 Nvidia Corporation Method and system for quantizing and squeezing base values of associated tiles in an image
US9077970B2 (en) 2011-02-25 2015-07-07 Adobe Systems Incorporated Independent layered content for hardware-accelerated media playback
GB201104066D0 (en) 2011-03-09 2011-04-20 Imagination Tech Ltd Compression of a tessellated primitive index list in a tile rendering system
JP2012194794A (ja) 2011-03-16 2012-10-11 Fujitsu Ltd 携帯端末及びコンテンツ表示プログラム
GB2489272B (en) 2011-03-23 2013-03-13 Toshiba Res Europ Ltd An image processing system and method
US9383917B2 (en) 2011-03-28 2016-07-05 Microsoft Technology Licensing, Llc Predictive tiling
EP2691935A1 (en) * 2011-03-29 2014-02-05 Qualcomm Incorporated System for the rendering of shared digital interfaces relative to each user's point of view
US8438474B1 (en) 2011-04-27 2013-05-07 Google Inc. Speculative rendering during cache revalidation
US8788711B2 (en) 2011-06-14 2014-07-22 Google Inc. Redacting content and inserting hypertext transfer protocol (HTTP) error codes in place thereof
US8996987B2 (en) 2011-06-30 2015-03-31 Apple Inc. List view optimization
US8745212B2 (en) 2011-07-01 2014-06-03 Google Inc. Access to network content
US8612418B2 (en) 2011-07-14 2013-12-17 Google Inc. Mobile web browser for pre-loading web pages
US8810533B2 (en) * 2011-07-20 2014-08-19 Z124 Systems and methods for receiving gesture inputs spanning multiple input devices
US8384726B1 (en) 2011-08-31 2013-02-26 Google Inc. Selective rendering of off-screen content
US20130073670A1 (en) 2011-09-15 2013-03-21 Microsoft Corporation Geo-Migration Of User State
US8600921B2 (en) 2011-09-15 2013-12-03 Google Inc. Predicting user navigation events in a browser using directed graphs
US9229770B2 (en) 2011-09-16 2016-01-05 Skype Invoking timed iterator for executing tasks within timeout constraint without spawning new thread
US8341245B1 (en) 2011-09-26 2012-12-25 Google Inc. Content-facilitated speculative preparation and rendering
US20130093750A1 (en) 2011-10-12 2013-04-18 Google Inc. Use of banding to optimize map rendering in a three-dimensional tilt view
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
JP2002536754A (ja) * 1999-02-05 2002-10-29 エクスサイズ コーポレイション 代替型表示コンテンツコントローラ
US7594093B1 (en) * 2006-10-12 2009-09-22 Foundry Networks, Inc. Virtual memory mapping for efficient memory usage

Also Published As

Publication number Publication date
CN104321752B (zh) 2018-01-02
EP2859447B1 (en) 2020-07-08
EP2859447A1 (en) 2015-04-15
US20130321453A1 (en) 2013-12-05
JP6230076B2 (ja) 2017-11-15
US9286122B2 (en) 2016-03-15
CN104321752A (zh) 2015-01-28
KR102055467B1 (ko) 2019-12-12
KR20150016527A (ko) 2015-02-12
WO2013180977A1 (en) 2013-12-05

Similar Documents

Publication Publication Date Title
JP6230076B2 (ja) 仮想サーフェス割り当て
US9235925B2 (en) Virtual surface rendering
US10043489B2 (en) Virtual surface blending and BLT operations
US9959668B2 (en) Virtual surface compaction
US9715750B2 (en) System and method for layering using tile-based renderers
JP5242789B2 (ja) パフォーマンス解析におけるグラフィックス命令の関連するグラフィックス・データへのマッピング
TW201539294A (zh) 跨平台顯像引擎
CN113112579A (zh) 渲染方法、装置、电子设备和计算机可读存储介质
CN105190701B (zh) 基于原语的合成系统及方法
US10319068B2 (en) Texture not backed by real mapping
US9324299B2 (en) Atlasing and virtual surfaces
JP5242788B2 (ja) グラフィックス・イメージングのためのパーティション・ベースのパフォーマンス解析
CN111414104B (zh) 一种电子地图局部显示方法及装置
KR20230101803A (ko) 구역 불연속성에 기반한 모션 추정

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160419

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170523

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170823

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170912

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20171003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171011

R150 Certificate of patent or registration of utility model

Ref document number: 6230076

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees