JP2006190255A - グラフィクス・ストリームの多重化および分離 - Google Patents

グラフィクス・ストリームの多重化および分離 Download PDF

Info

Publication number
JP2006190255A
JP2006190255A JP2005334401A JP2005334401A JP2006190255A JP 2006190255 A JP2006190255 A JP 2006190255A JP 2005334401 A JP2005334401 A JP 2005334401A JP 2005334401 A JP2005334401 A JP 2005334401A JP 2006190255 A JP2006190255 A JP 2006190255A
Authority
JP
Japan
Prior art keywords
higher level
graphics
computer
level graphics
application program
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.)
Ceased
Application number
JP2005334401A
Other languages
English (en)
Inventor
Gilles Khouzam
ホウザム ギレス
Paul C David
シー.デビッド ポール
Oreste Dorin Ungureanu
ドリン ウングレアーヌ オレスト
Adrian Secchia
セッキア エイドリアン
Andrey E Arsov
イー.アショブ アンドレー
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 JP2006190255A publication Critical patent/JP2006190255A/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)
  • Digital Computer Display Output (AREA)

Abstract

【課題】機能豊富なグラフィカル・コンテンツの遠隔送信時に帯域幅を削減すること。
【解決手段】クライアント・コンピュータ(CPと略す)への接続時に、第一のより高レベルのグラフィクス命令(G命令と略す)を第一のアプリケーション・プログラム(APと略す)から生成して、グラフィクス・ストリームを多重化し、その後に分離する。第一のAPを表す第一の識別子を第一のより高レベルのG命令に関連付け、第二のより高レベルのG命令は第二のAPから生成され、第二のAPを表す第二の識別子を第二のG命令に関連付ける。第一と第二のG命令はCPに送信される。この結果、サーバ・コンピュータは、CPからの1つ又は複数のAPへのアクセスを可能にする。サーバは、APの1つからより高レベルのG命令を抽出する合成器と、CPがグラフィクスの生成に使用するために抽出したG命令をパッケージするリモート・ディスプレイ・ドライバ、を備える。
【選択図】図8

Description

本発明は、クライアント・コンピュータとの接続時に、第一のアプリケーション・プログラムから第一のより高レベルのグラフィクス命令を生成することを含み、グラフィクス・ストリームを多重化すること(multiplexing)、および分離すること(de-multiplexing)に関する。
サーバ・コンピュータは、リモート・コンピュータに代表されるクライアント・マシンによってアクセスされるアプリケーション・プログラムを、そのホストとして動作させることができる。このような技術の一例は、ターミナル・サービス・プラットフォームであり、たとえばMicrosoft CorporationのWindows(登録商標)サーバベース・オペレーティング・システムが挙げられ、このシステムでは、アプリケーション・プログラムが、中央のサーバ上で実行され、その間、そのプログラムに対応するユーザ・インターフェースがクライアント・マシン上に提示される。
上記のような構成におけるアプリケーション・プログラムのユーザ・インターフェースには、複雑なグラフィクスが含まれることがある。しかしながら、サーバからクライアント・マシンへの機能豊富(rich)なグラフィカル・コンテンツの遠隔送信は、大量の帯域幅を消費することがある。消費される帯域幅の量を削減するひとつの方法は、レンダリングされたインスタンスを送るのではなく、送信媒体を通じてグラフィクスの高レベルの記述を送る方法である。たとえば、ビットマップの代わりに、ベクトル描画プリミティブ(ベクトル・ドローイング・プリミティブズ: vector drawing primitives)を送ってもよい。しかしながら、ベクトル描画プリミティブを送るメカニズムを用いても、複雑なグラフィクスのためのベクトル描画プリミティブを伝送するのに依然として大量の帯域幅が必要となることが多い。
第一のアプリケーション・プログラムを表す第一の識別子が、第一のより高レベルのグラフィクス命令に関連付けられる。第二のより高レベルのグラフィクス命令が、第二のアプリケーション・プログラムから、第二のより高レベルのグラフィクス命令に関連付けられた第二のアプリケーション・プログラムを表す第二の識別子と共に生成される。第一のより高レベルのグラフィクス命令と第二のより高レベルのグラフィクス命令は、クライアント・コンピュータに送られる。
サーバ・コンピュータは、ひとつまたは複数のアプリケーション・プログラムがクライアント・コンピュータによってアクセスされるのを可能とする。このサーバは、アプリケーション・プログラムのひとつからのより高レベルのグラフィクス・コマンドを抽出する合成器と、グラフィクスを生成するクライアント・コンピュータの使用を目的に、より高レベルのグラフィクス・コマンドをパッケージするリモート・ディスプレイ・ドライバを備える。
その他の利点は、図面と共に以下の詳細な説明を読むことによって明らかとなる。
本発明は、それだけで制限されないが、添付の図面を使用して説明され、図中、同様の要素には同様の参照番号が付与されている。
オペレーティング環境の例
図1は、本発明を実装できる、適当なコンピューティング・システム環境100の例を示す。コンピューティング・システム環境100は適当なコンピューティング環境の一例にすぎず、本発明の使用または機能性の範囲に関し、いかなる限定も示唆するものではない。また、コンピューティング環境100には、オペレーティング環境の一例である100に示されているコンポーネントのひとつまたはいくつかの組合せに関する依存性または必要性がある、とも解釈されるべきではない。
本発明は、多数の他の汎用または特定用途コンピューティング・システム環境または構成でも運用できる。本発明との使用に適した周知のコンピューティング・システム、環境および/または構成の例には、これらに限定されないが、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルドもしくはラップトップ・デバイス、タブレット・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベース・システム、セットトップボックス、プログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、上記のシステムまたはデバイスのいずれかを含む分散型コンピューティング環境等がある。
本発明は、コンピュータにより実行される、プログラム・モジュール等のコンピュータ実行可能命令の一般的文脈において説明することができる。一般に、プログラム・モジュールには、特定の作業を実行し、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ・ストラクチャ等がある。本発明はまた、通信ネットワークを通じて連結された遠隔処理デバイスによってタスクが実行される分散型コンピューティング環境においても実践できる。分散型コンピューティング環境において、プログラム・モジュールは、メモリ記憶デバイスを含むローカルおよび/またはリモート・コンピュータ記憶媒体に置くこともできる。
図1において、本発明を実装するためのシステムの一例には、コンピュータ110の形での汎用コンピューティング・デバイスが含まれる。コンピュータ110のコンポーネントとしては、これに限定されないが、処理ユニット120、システム・メモリ130と、システム・メモリを処理ユニット120に接続する等、各種のシステム・コンポーネントを連結するシステム・バス121がある。システム・バス121は、メモリ・バスもしくはメモリ・コントローラ、周辺バス、各種のバス・アーキテクチャのいずれかを用いるローカル・バスを含めたさまざまなバス・ストラクチャのいずれでもよい。たとえば、これに限定されないが、このようなアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、メザニン・バスとも呼ばれるPeripheral Component Interconnect(PCI)バス等がある。
コンピュータ110は通常、さまざまなコンピュータ読取可能媒体を含む。コンピュータ読取可能媒体は、コンピュータ110によってアクセスできる、入手可能などのような媒体でもよく、揮発性および不揮発性媒体や取り外し可能および取り外し不能媒体のすべてがこれに含まれる。たとえば、これに限定されないが、コンピュータ読取可能媒体はコンピュータ記憶媒体と通信媒体であってもよい。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ・ストラクチャ、プログラム・モジュールその他のデータ等の情報を記憶するためのいずれかの方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不能媒体が含まれる。コンピュータ記憶媒体には、これに限定されないが、RAM、ROM、EEPROM、フラッシュ・メモリその他のメモリ技術、CD−ROM、デジタル・バーサタイル・ディスク(DVD)もしくはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置その他の磁気記憶デバイス、あるいは所望の情報を記憶するのに使用でき、コンピュータ110によってアクセスされる上記以外の媒体がある。通信媒体は、一般に、搬送波その他の送信メカニズム等の変調データ信号の形で、コンピュータ読取可能命令、データ・ストラクチャ、プログラム・モジュールまたは、その他を、具体化し、および、あらゆる情報伝達媒体を含む。「変調データ信号」という言葉が意味する信号とは、その特性のひとつまたは複数が、その信号中の情報を符号化するような方法で設定または変更されている信号を意味する。たとえば、これに限定されないが、通信媒体は有線ネットワークまたは直接有線接続等の有線媒体と、音響、FR、赤外線その他の無線媒体等の無線媒体を含む。上記のいずれかを組み合わせたものも、コンピュータ読取可能媒体の範囲に含まれる。
システム・メモリ130は、リード・オンリ・メモリ(ROM)131とランダム・アクセス・メモリ(RAM)132等の揮発性および/または不揮発性メモリの形態でのコンピュータ記憶媒体を含む。起動時等にコンピュータ110内のデバイス間の情報伝達を助ける基本的ルーチンを含むベーシック入出力システム133(BIOS)が通常、ROM131に記憶されている。RAM132は一般に、処理ユニット120によってダイレクトにアクセス可能で、および/または現在、オペレーション中のデータおよび/またはプログラム・モジュールを含む。たとえば、これに限定されないが、図1にはオペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136およびプログラム・データ137が描かれている。
コンピュータ110はまた、他の取り外し可能/取り外し不能、揮発性/不揮発性コンピュータ記憶媒体を含んでいてもよい。たとえば、図1には、取り外し不能の不揮発性磁気媒体の読み書きを行うハードディスク・ドライブ141、取り外し可能の不揮発性磁気ディスク152の読み書きを行う磁気ディスク・ドライブ151、CD ROMその他の光媒体等の取り外し可能の不揮発性光ディスク156の読み書きを行う光ディスク・ドライブ155が描かれている。このオペレーティング・システムの例で使用できるその他の取り外し可能または取り外し不能、揮発性または不揮発性コンピュータ記憶媒体には、これに限定されないが、磁気テープカセット、フラッシュ・メモリ・カード、デジタル・バーサタイル・ディスク、デジタル・ビデオ・テープ、ソリッドステートRAM、ソリッドステートROM等がある。ハードディスク・ドライブ141は通常、インターフェース140等の取り外し不能メモリ・インターフェースを通じてシステム・バス121に接続され、磁気ディスク・ドライブ151と光ディスク・ドライブ155は通常、インターフェース150のような取り外し可能メモリ・インターフェースによってシステム・バス121に接続されている。
上で説明し、図1に描かれているドライブとこれに関連付けられたコンピュータ記憶媒体は、コンピュータ110のためのコンピュータ読取可能命令、データ・ストラクチャ、プログラム・モジュールその他のデータを記憶する。たとえば、図1において、ハードディスク・ドライブ141は、オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146およびプログラム・データ147を記憶しているように描かれている。これらのコンポーネントは、オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136およびプログラム・データ137と同じであっても、違ってもよい。オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146およびプログラム・データ147には、ここでは、少なくともこれらが別のコピーであることを示すために、異なる番号が付与されている。ユーザは、タブレットまたは電子デジタイザ164、マイクロフォン163、キーボード162および、一般にマウス、トラック・ボールまたはタッチ・パッドと呼ばれるポインティング・デバイス151等の入力デバイスを通じてコンピュータ110にコマンドや情報を入力することができる。図1に示されていないその他の入力デバイスとしては、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナその他がある。これらおよびその他の入力デバイスはしばしば、システム・バスに接続されるユーザ入力インターフェース160を通じて処理ユニット120に接続されているが、パラレル・ポート、ゲーム・ポートまたはユニバーサル・シリアル・バス(USB)等の他のインターフェースやバス・ストラクチャによって接続されていてもよい。モニタ191またはその他のタイプのディスプレイ・デバイスもまた、ビデオ・インターフェース190等のインターフェースを介してシステム・バス121に接続される。モニタ191は、タッチ・スクリーン・パネルその他と一体化されていてもよい。モニタおよび/またはタッチ・スクリーン・パネルは、タブレット・タイプのパーソナル・コンピュータ等のように、コンピューティング・デバイス110が格納されているハウジングに物理的に接続させることもできる。さらに、コンピュータ・デバイス110等のコンピュータは、スピーカ195とプリンタ196等の周辺出力装置を備えていてもよく、これらは出力周辺機器インターフェース194その他を通じて接続される。
コンピュータ110は、リモート・コンピュータ180等、1台または複数のリモート・コンピュータとの論理結合を使って、ネットワーク環境で運用できる。リモート・コンピュータ180は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイスその他の一般的なネットワーク・ノードでもよく、一般的には、コンピュータ110に関して上述したようなデバイスの多くまたは全部を備えるが、図1においては、メモリ記憶デバイス181だけが描かれている。図1の論理結合には、ローカル・エリア・ネットワーク(LAN)171と広域ネットワーク(WAN)173があるが、その他のネットワークでもよい。このようなネットワーキング環境は、オフィス、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットにおいて一般的である。
LANネットワーキング環境で使用する場合、コンピュータ110はネットワーク・インターフェースまたはアダプタ170を通じてLAN171に接続される。WANネットワーキング環境で使用する場合、コンピュータ110は通常、インターネット等のWAN173上での通信を確立するためのモデム172その他の手段を備える。モデム172は、内蔵でも外付けでもよいが、ユーザ入力インターフェース160またはその他の適当なメカニズムを介してシステム・バス121に接続されていてもよい。ネットワーク環境において、コンピュータ110に関連して説明したプログラム・モジュールまたはその一部は、リモート・メモリ記憶デバイスに記憶することができる。たとえば、これに限定されないが、図1では、リモート・アプリケーション・プログラム185がメモリ・デバイス181に備えられているように描かれている。図のネットワーク接続は例であり、コンピュータ間の通信リンクを確立するためのその他の手段も利用できると理解されるであろう。
境界を越えるグラフィクス・ストリーム(graphics streams across boundaries)
ここで説明する技術のさまざまな態様は、クライアント・マシンに送信するために、各種のサーバ・アプリケーション・プログラムからの命令を、時として複雑なグラフィクスに変更する命令を多重化するのに使用できるメカニズムと方法に関する。ここで一般的に説明するひとつの実施形態において、このメカニズムはサーバとリモート・クライアント・マシンとが一体になって機能する。しかしながら、容易に理解できるように、本発明はリモート・マシンには限定されず、これらの例を、サーバと同じマシンで動作するクライアント、単独のクライアント・マシンのために機能する複数の分散型サーバ等、他の状況にも応用できる。さらに、グラフィクスの表示に使用するためだけでなく、プリンタ、ファイル、一般的なデバイス等に出力するためなど、本発明を実装する多数の方法がある。したがって、本発明はここで使用される特定の例のいずれにも限定されず、コンピューティング全般において利益と利点を提供するさまざまな方法で使用できる。
図2は、クライアント−サーバ・コンピューティング環境の例200を表すブロック図である。コンピューティング環境の例200には、ネットワーク215で連結された複数のクライアント・コンピュータ2101−2103に接続されたサーバ・コンピュータ205(たとえば、図1のコンピュータ・システム110)が含まれる。この例では3台のクライアント・マシン2101−2103が示されているが、任意の現実的な数とすることができる。
一般に、ひとつまたは複数のアプリケーション・プログラム322(図3)が、クライアント・コンピュータ2101−2103のためにサーバ・コンピュータ205上で実行される。後述のように、アプリケーション・プログラムは、最終的にリモートクライアントコンピュータ2101−2103のディスプレイ・デバイス上でグラフィクスを生成するのに使用されるグラフィクス・コマンドを生成する。ここではディスプレイ・デバイス上のグラフィクスについて説明するが、この例はプリンタ出力等、他の同等の出力にも応用される。
コンピューティング環境200は、たとえばモデムによる直接ダイアルアップ、企業LAN(ローカル・エリア・ネットワーク)、WAN(広域ネットワーク)およびインターネット等、さまざまなアーキテクチャを代表する一例にすぎない。ネットワーク215は、有線ベースの技術や無線技術を含め、このようなネットワーキングの状況をサポートするさまざまな方法で実装できる。ここで説明する技術の各種の態様は、ひとつの特定のネットワーク・アーキテクチャまたはネットワーク技術に限定されない。
サーバ・コンピュータ205は、Windows(登録商標)のオペレーティング・システム・ベースのサーバとして実装されているが、他のサーバ・プラットフォームに基づくものとすることもできる。サーバ・コンピュータ205は、Microsoft Corporationにより定義されるリモート・デスクトップ・プロトコル(RDP)またはリモート・プロシージ・ャコール(RPC)等の通信プロトコルを通じて、クライアント・コンピュータ210によりアクセスされるひとつまたは複数のアプリケーション・プログラム322をサポートし、あるいはそのホストとなる。通信プロトコルを通じて、サーバ・コンピュータ205は、クライアント・コンピュータ210のうちの1台のクライアント・コンピュータが比較的高レベルのグラフィクス・コマンドで、アプリケーション・プログラムから受け取られ、サーバ・コンピュータ205でローカル的にグラフィクスを生成するのに使用されるコマンド、を使ってグラフィクスを生成することができるか否かを判断する。このような、より高レベルのグラフィクス・コマンドの例には、描画プリミティブ、コマンドおよび/またはデータを備える保持モード描画命令があり、合成(またはレンダリング)ツリー構造の中のノードとして表されることがある。
クライアント・コンピュータ210は、ネットワーク215上でサーバ205に接続できる各種のコンピュータまたはコンピューティング・デバイスを表す。たとえば、2101の番号が付与されたクライアント・コンピュータは従来のデスクトップ・パーソナル・コンピュータとすることが可能であり、これは、ローカル・オペレーティング・システム、処理ユニット、記憶システムを含んでいる。クライアント・コンピュータ2102は、携帯用ラップトップコンピュータとして描かれており、これは従来のネットワーク・カードまたはモデム接続を介してネットワークに接続することができる。クライアント・コンピュータ2102は、自己のオペレーティング・システム、処理ユニットおよび記憶システムで構成することのできるスタンドアローン・コンピュータであってもよい。クライアント・コンピュータ2103は、一般的に、汎用コンピュータより少ない機能を処理するハンドヘルドPCとすることもできる。
ディスプレイ・モニタを備え、キーボードやマウス等の入力デバイスを有するものと考えることのできるディスプレイ・デバイス220をサーバ205にローカルで接続することができる。ディスプレイ・デバイス220と付属の入力デバイスは、サーバ・コンピュータ205上にあるアプリケーション・プログラムへのローカル・ユーザ入力を提供する。一般に、グラフィクスはサーバ・コンピュータ205の中に常駐するグラフィクス合成エンジンによってディスプレイ・デバイス205で生成され、このグラフィクス合成エンジンは、常駐アプリケーション・プログラムからより高レベルのグラフィクス・コマンドを受け取る。
サーバ・コンピュータ205上に常駐するアプリケーション・プログラム322(図3)は、グラフィクス・コマンド/データ/プリミティブを含む、比較的高レベルのグラフィクス命令によってグラフィクスを特定することができる。たとえば、保持モードのグラフィクス・レンダリング(合成)ツリー構造に対応するプリミティブを、プレゼンテーション・サブ・システム/メディア・インテグレーション・レイヤ(MIL)が提供することが可能である。アプリケーション・プログラム322は、オペレーティング・システムによって提供されるグラフィクス・コンポーネントを活用し、これによってアプリケーション・プログラム322は、ユーザ・インターフェースを指定するノードによってグラフィクスを指定できる、比較的高レベルのグラフィクス・コマンドを生成することが可能である。
図3は、サーバ・コンピュータ205とクライアント・コンピュータ(たとえば2101)のコンポーネントの例を示す。サーバ・コンピュータ205は、少なくともひとつのアプリケーション・プログラム322と、ソフトウェア・グラフィクス・コンポーネント325を含む。ソフトウェア・グラフィクス・コンポーネント325は、複数のコンポーネントを含むことができる。一般に、ソフトウェア・グラフィクス・コンポーネント325は、アプリケーション・プログラム322からより高レベルのグラフィクス・コマンドを受け取ることができる。より高レベルのグラフィクス・コマンドは、ディスプレイ・デバイス220上で表示されることになるグラフィクスをローカルで生成するのに使用される。「シャドウイング(shadowing)」と呼ばれるコンセプトを実行することができ、この場合、サーバ・コンピュータ上で生成され、クライアント・コンピュータ2101で表示されるものと同じグラフィクスが、サーバ・コンピュータ205でもローカルでレンダリングされ、表示される。
サーバ・コンピュータ205はクライアント・コンピュータ2101と交信し、クライアント・コンピュータ2101がより高レベルのグラフィクス・コマンドを使ってグラフィクスを生成することが可能か否かを判断する。可能であれば、サーバ・コンピュータ205はより高レベルのグラフィクス・コマンドをクライアント・コンピュータ2101に送る。可能でなければ、サーバ・コンピュータ205は、より高レベルのグラフィクス・コマンドから生成したビットマップ等の、より低レベルのグラフィクスをレンダリングし、そのより低レベルのグラフィクス・コマンドをクライアント・コンピュータに送ることができる。
説明のために、以下に、より高レベルのグラフィクス・コマンドがクライアント・コンピュータ2101に送られる例を挙げる。このように、クライアント・コンピュータ2101のグラフィクス・コンポーネント335はより高レベルのグラフィクス・コマンドを受け取り、クライアント・コンピュータ2101のディスプレイ・デバイス215上で表示されるグラフィクスを生成する。
図4は、サーバ・コンピュータ205とクライアント・コンピュータ2101における詳細な実装形態の例を示す。これらのアーキテクチャの実装例は、フォーマットされたグラフィクス命令という形態のより高レベルのグラフィクス・コマンドを、このような高レベルのグラフィクス・コマンドを使ってグラフィクスを生成することのできるクライアント・コンピュータに、供給するよう特に設計されている。
図4において、図3のアプリケーション・プログラム322によって示されるような、ひとつまたは複数のアプリケーション・プログラム3221−322Nは、サーバ・コンピュータ205でホストされ、クライアント・コンピュータ(たとえば、2101)によりアクセスされる。アプリケーション・プログラム3221−322Nは、レンダリング(合成)ツリー構造に対応する保持モード・グラフィクス・プリミティブとデータ等の、比較的高レベルのグラフィクス命令を提供する。より高レベルのグラフィクス・プリミティブの例は、形状(shapes)、テキスト、ボタン、変換(トランスフォーム: transform)その他を表すノードのそれである。
アプリケーション・プログラム3221−322Nのいずれも、グラフィクス合成またはグラフィックス生成のための専用スレッドを備えることができ、この専用スレッドは、合成器/UCE(ユニファイド・コンポジション・エンジン)4281−428Nの接続に使用される通信プロトコル(たとえば、RDPまたはRPC)をモニタするのに使用される。専用の合成器またはUCEは、アプリケーション・プログラムの各々について設置することができる。
合成器/UCEモジュール4281−428Nは、メディア・インテグレーション・レイヤ(MIL)をサポートするビジュアル・コンポジション・モジュールであり、メディア・インテグレーション・レイヤ(MIL)は、ひとつまたは複数のクライアント・コンピュータ・プラットフォームによって使用されるグラフィック情報を提供する。たとえば、合成器/UCE(たとえば4281)は、対応するアプリケーション・プログラム3221からのより高レベルのグラフィクス命令を処理または抽出することができる。より高レベルのグラフィクス命令は、連続して処理され、クライアント・コンピュータ、たとえば、クライアント・コンピュータ2101に送信される。
ひとつまたは複数のアプリケーション・プログラム3221−322Nがデスクトップまたはウィンドウ環境で実行されているとき、ディスプレイまたはグラフィクス画像が示され、これにはアプリケーション・プログラム3221−322Nの中のひとつまたはいくつかおよびデスクトップからのグラフィクスのほか、ウィンドウ環境からのグラフィクスも含まれる。デスクトップ・マネージャ/UCE440は、デスクトップまたはウィンドウ環境によって提供されるグラフィクスのためのより高レベルのグラフィクス命令を提供し、これらは後述のように、アプリケーション・プログラム3221−322Nのうちのひとつまたはいくつかからのグラフィクスと組み合わされる。
ひとつの実装形態において、合成器/UCE4281−428Nとデスクトップ・マネージャ/UCE440は、アプリケーション・プログラム・インターフェース(API)エクスポーザ445に、より高レベルのグラフィクス命令を提供する。APIエクスポーザ445は、合成器/UCE4281−428Nとデスクトップ・マネージャ/UCE440がディスプレイ・ドライバ・ローダ450と通信できるようにするインターフェースを備える。
ディスプレイ・ドライブ・ローダ450は、リモート・ディスプレイ・ドライバ460とローカル・ディスプレイ・ドライバ465のロードする(取り込む)。より高レベルのグラフィクス命令が、リモート・ディスプレイ・ドライバ460に送られ、このリモート・ディスプレイ・ドライバ460は、グラフィクス・コマンドを、サーバ205とクライアント2101によって使用される通信プロトコルにより定義される適当なフォーマットへとフォーマッティングする。たとえば、リモート・ディスプレイ・ドライバ460は、グラフィクス・コマンドをパッケージし、これについてキャッシングを実行し、および/またはこれを圧縮する。
ローカル・ディスプレイ・ドライバ465は、サーバ・コンピュータ205においてローカルにグラフィクスの中に生成されるより高レベルのグラフィクス・コマンドを受け取る。ローカル・ディスプレイ・ドライバ465は、ローカル的にグラフィクスを表示するとき、および/またはシャドウイングの際に使用される。シャドウイングまたはリモート・アシスタンスは、クライアント・コンピュータ2101に送られるグラフィクス画像(つまり、より高レベルまたは低レベルのグラフィクス・コマンド)が、図2のディスプレイ・デバイス220のようなローカル・ディスプレイ・デバイスで閲覧されるときに実行される。
リモート・ディスプレイ・ドライバ460からのフォーマットされた高レベルのグラフィクス・コマンドは、ひとつまたは複数のネットワーク上でクライアント・コンピュータ2101に送信するためのトランスポート・ドライバ470に供給される。トランスポート・ドライバ470は、トランスミッション・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)等のいくつかのトランスポート・プロトコルのひとつに基づくものでよい。トランスポート・ドライバ470は、フォーマットされたグラフィクス・プリミティブまたはグラフィクス・データをデータ・パケットにパッケージする。
グラフィクス・コマンド(つまり、データ・パケット)は、リモート・デバイス・インターフェース475を通じてクライアント・コンピュータ2101で受け取られる。リモート・デバイス・インターフェース475は、サーバ・コンピュータ205とクライアント・コンピュータ2101の間の通信プロトコルに基づくものとすることができる。
リモート・デバイス・インターフェース475は、より高レベルのグラフィクス命令プロセッサ480(および/または、より低レベルのグラフィクス・コマンドのため、たとえば、他のサーバに接続されているときの、より低レベルのグラフィクス・コマンドを扱うためのGDI/GDI+レンダリング・エンジン485)を備える。クライアント・コンピュータ2101がより高レベルのグラフィクス命令という形でグラフィクスを受け取ると、より高レベルのグラフィクス命令プロセッサ485は、サーバ・コンピュータ205から受け取ったデータ・ストリームから、高レベルグラフィクス命令を含むデータ・パケットを抽出する。受け取られたコマンドが低レベルグラフィクス・コマンドの場合、これらはGDI/GDI+レンダリング・エンジン485によって処理され、GDI/GDI+グラフィクス・ドライバ490に送られ、これによってグラフィクスが生成される。生成されたグラフィクスは、図3のディスプレイ・デバイス215等のローカル(クライアント)ディスプレイ・デバイス上で示される。
クライアント・コンピュータ2101がグラフィクス生成のための高レベルのグラフィクス命令を受け取ると、クライアント・コンピュータ・コネクタ495は高レベル・グラフィクス・コマンド・プロセッサ480からデータのパケットを受信し、このパケットを解析して高レベルのグラフィクス命令にする。解析された高レベル・グラフィクス命令は、クライアント・コンピュータ・コネクタ495からクライアント合成器/UCE499へと送られ、これが高レベル・グラフィクス・コマンドを使ってグラフィクスを生成する。
このように、サーバからリモート・クライアント・マシンへの機能豊富(rich)なグラフィカル・コンテンツの伝送は、ビットマップではなく、ベクトル描画プリミティブとその他のグラフィクス命令を送ることによって有利となる。本発明によれば、帯域幅の使用量はアップデート・プロセス中にさらに削減される。この目的のために、クライアント側のグラフィクスのアップデートが必要となると、デスクトップ全体をレンダリングするためのグラフィクス命令に対応する情報ではなく、細分化した(granular)高レベルのアップデート情報を送信するほうがより効率的である。たとえば、ユーザがウィンドウを動かすとき、ウィンドウ全体および/またはデスクトップのコンテンツ全体を描きなおすグラフィクス命令を再送信するよりも、そのウィンドウの位置を変更するための命令を送るほうがより効率的である。
高レベルの命令を送ってこれを、細分化した態様でアップデートするために、描画プリミティブの相対的な位置と相互関係を説明する伝送構造情報(transport structural information)が送られる。ローカルの場合、合成(またはレンダリング)ツリー構造を使って、これらのプリミティブの階層的位置(たとえば、重複)と相互関係(たとえば、透明性)を記述することができる。
ここで説明する技術の各種の態様は、この合成ツリー構造の階層をクライアント・マシンに効率的に伝送し、レンダリングとアップデートがクライアントで行われるようにすることに関する。最初にツリー構造を構築するのと同じトランスポート・メカニズムにより、個々のノードを細分化してアップデートすることが可能となる。このトランスポート方法は、マシンまたはプロセスの境界を越えて伝送する間に、単独または複数の木構造の階層的な関係を保持するのに使用できる。
ひとつの実装形態において、マルチスレッドの合成インフラストラクチャが、プロセス間伝送のローカル使用のよい例である。マルチスレッド合成アーキテクチャを用い、複数のスレッドにまたがってレンダリングを分散させることにより、プロセッサ・パワーを活用できる。ここで例として説明するトランスポート・メカニズムは、この種のアーキテクチャが、複数のプロセスにまたがるツリー構造のアップデートを整理(marshal)することを可能にする。
マシンの境界、プロセスの境界またはその両方の境界を越える伝送を可能にするために、いくつかの異なるプロセスおよび/またはマシンからの情報を連続させてひとつのストリームにすることが、ローカルの場合とリモートの場合の両方において必要となる可能性がある。伝送後、この情報ストリームを、その当初のデバイスおよび/またはプロセスに関する情報が損なわれないまま保たれるようにアンパッキング(unpack)する必要がある。このことは、各プロセスおよび/またはデバイスが、独立してアップデートを受け取ることを可能にする。
この目的のために、境界の片側で定義され、その境界を越えて伝送され、反対側でレンダリングされるコンテンツへの細分化されたアップデートを可能にする各種のメカニズムと方法について説明する。このメカニズムと方法は、以下に説明するように、多くの階級からなる境界を越えた伝送にも適用される。パッキングとアンパッキングからなるこのスケーラブルで効率的な伝送は、その完全な定義が、全体を繰り返し送信するには帯域幅消費の点であまりにも付加が重い機能豊富(rich)なグラフィクスに対し、的を絞った細分化されたアップデートを行うことが可能となる。ここで紹介する実装例は、別の情報源については、特定のメカニズムを必要としないかもしれない点に注意すべきである。たとえば、デスクトップ・ウィンドウ・マネージャからのコンテンツは、アプリケーション・プログラムからのコンテンツと同じ送信媒体(パイプ)を通じて移動でき、その後同じ方法でアンパッキングすることができる。
前述のように、アプリケーション・プログラム322は、グラフィクス命令のストリームを生成して、何らかのコンテンツを出力し、レンダリングシステムがこのストリームを、たとえばディスプレイ・モニタ、プリンタ等で見ることのできる何かに変換することができる。アプリケーションをリモート化する場合(つまり、ディスプレイが別のマシンで行われる場合)、同時にグラフィクスを生成している複数のアプリケーションで共有される1つのトランスポートがあるだけである可能性がある。
ひとつのアプリケーションによって生成されるグラフィクス命令と別のアプリケーションにより生成される命令とを区別するために、各グラフィクス・パケット(またはバッチ)はその伝送で送られる準備ができた際に、リモート側で、それが特定のアプリケーションに属すると特定されることが可能なように、各アプリケーションのための固有の識別子がパケットに追加され。
パケットがリモート側に到達すると、ストリームはこの固有の識別子によって分離され、その結果、各グラフィクス・ストリームは原形を保ち、類似のストリームで同じトランスポートを使用した可能性のある別のアプリケーションとは独立してレンダリングされる。つまり、固有の識別子は、各種のアプリケーションおよび/またはデスクトップからの命令の多重化と分離を可能とし、それによってグラフィカル・アップデート情報の送信を容易とする。
個々の合成(composition)に関連付けられたパケットを識別することにより、パケットは、その発生源のデバイスおよび/またはプロセスに関する情報を失うことなく、シリアライズさせることができる。この目的のために、シリアライズされたパケットには、これらを統合して伝送のためのパイプにするたびに、タグが付けられる。これらのパイプからアンパッキングすると、各パケットは適切な合成(composition)を使用して再び関連付けられる。
図5は、独立した個々の合成における情報が、境界を越えて伝送されるために統合される様子を示している(境界は点線で示されている)。統合の潜在的なレベルには、ひとつのプロセス内のコンテンツをひとつのパイプにシリアライズするもの(ローカル・クライアントの場合等)、多数のプロセスの中のコンテンツを1セッションにつき1つのパイプにシリアライズするもの(リモート・デスクトップの場合等)、多くのセッションの中のコンテンツを各マシンにつき1つのパイプにシリアライズするもの、多くのマシンからのコンテンツをサブネットにつき1つのパイプにシリアライズするものがある。
ここで説明する実装例のひとつは、これらの各々の場合に使用されるよう一般化できるようなシリアライズを提供する。この目的のために、図6に示されているように、各パケットには、マルチプレクサ/ID修飾メカニズム602により、ひとつまたは複数の識別子でタグ付けされる。この例は、パイプの統合の各段階において、発生源のプロセスを区別する一連の固有の識別子で構成されるプロセス識別子(PID)を示している。マシンまたはセッション識別子等、その他の識別子を使って、発生源のデバイスとセッションの区別をつけることもできる。マージの前のストリームの発生源を個々に識別することのできる他の方法も使用可能である。図6において、パケットは、仮定に基づく順序で共通のトランスポートに乗せられたように描かれている。
図7は、境界の反対側での情報のアンパッキングを示しており、その後、各情報バンドルは個別に処理され、レンダリングされる。これにより、各プロセスのコンテンツが、別のプロセスのコンテンツとは独立してアップデートすることが可能となる。独立した処理により、複雑なグラフィクスを伝送するとき等、トランスポート・パイプを詰まらせることなく、このコンテンツの細分化されたアップデートが可能となる。
図8は、グラフィクスまたは他のコンテンツが境界の片側で定義され、境界の反対側で処理される(たとえば、レンダリングおよび表示される)際に、これらのグラフィクスまたはその他のコンテンツを効率的にレンダリングすることのできる各種のメカニズムと方法の論理を説明する。たとえば、2つのアプリケーションが、図8において、ブロック801−804に一般的に示されるように、別のレンダリング・ツリー構造(たとえば、アプリケーション固有情報を有するユーザ・インターフェース、つまりUIツリー構造)を生成することができる。ステップ805、806で判断される各々のリモート・レンダリングについて、それぞれのツリー構造の記述は、伝送用に提出される前に、各アプリケーションの固有のIDと組み合わせることができる(ステップ807、808)。ひとつのパケット内の修飾としては、目的地、発生源、プロセスID(クライアント側でのアプリケーションを区別するため)がある。固有のIDにより、情報のツリー構造と伝送の独立した管理、クライアント側の平行コンテンツの実行および/またはアプリケーション間の安全確実な境界の設置が可能となる。たとえば、このメカニズムは、認証されたパケットだけを使用し、セキュリティ度を高めることもできる。さらに、このメカニズムにより、ターミナルサービスをトランスポート・レイヤの最上部にあるIPレイヤの最上部のTCPレイヤに似たものとすることができる。
ステップ810によって表されるように、ストリームが多重化のためにマージされると、トランスポートは、その木構造がどのアプリケーションをアップデートするのに使用されるかを特定する固有のIDを収容する。リモート・トランスポーティングに加えて、あるいはこれに代わって行われるローカル・レンダリングを、ステップ815によって表す。
ステップ812は、デ・マルチプレックスする動作を表し、この動作において、固有の識別子が使用されて、グラフィクス命令のマージされたストリームを分離する。ステップ816,817は、独立したストリームのレンダリングを表す。
トランスポート・サブシステムの例示的な構造と機能に説明を移すと、トランスポート・サブシステムのひとつの態様は、合成ツリー構造の変更に影響を与えるためにアプリケーションが使用するスレッドから(つまり、アプリケーションのUIスレッドから)合成スレッド(composition thread)を分離することに関する。概ね、図9、図10は、ストリームの修飾とストリームの生成の例を示す。この目的のために、チャネル・コンセプトが導入され、サーバ・マシン上で動作中のアプリケーションの中からコマンドを生成するパラレル・スレッド内のリソースをアドレス指定する。チャネルは、トランスポート・インスタンスの中に存在する。トランスポートは、次に、グラフィクス・ストリームの修飾に使用される固有の識別子に接続コンテクストをマッピングする。
図9は、このような合成プロセスにかかわるオブジェクトの簡略図を示し、データフローにかかわるサブシステムと共に、データがシステム内の境界を越えてどのように移動するかを表している。データが越える境界には、図9のトランスポート利用図に一般的に示されように、スレッド、プロセスおよび/またはマシンの境界がある。
図9に示される情報交換にかかわる要素には、スレッド・アフィニティを提供するUIコンテクスト901−904、合成時に使用される管理されていないリソースのためのオブジェクト・モデル・インターフェースである管理されたリソース、そして合成物の伝達パス中に使用されるグラフィクス・オブジェクトからなる管理されていないリソース、が含まれる。また、管理されていない合成ツリー構造を構成する合成インフラクストラクチャ913も描かれている。
図9の実装例は、管理されたリソースについて発行されたAPIコールに応答して管理されていないリソースをアップデートすること、管理されていないリソースの寿命(lifetime)を管理されたリソースによって管理すること、およびコマンドをその発行順と同じ順序で実行する必要のある範囲を画定すること、等、データ転送上の多数の問題を解決する。
この解決策は、UIスレッドについてはできるだけロックを取得せず、合成スレッドではまったくロックを取得しない。合成スレッドのロックは、管理されたリソースについてのAPIコールをコマンドに翻訳し、次に、このコマンドをコマンド変更キューへと待ち行列化することによって不要となる。このコマンド待ち行列の実行の結果、管理されていないリソースのアップデートが行われる。管理されたリソースから変更待ち行列にコマンドを送るためのパイプは、合成スレッドのロックを回避するほか、コマンド・シーケンスを保持することを不要にするのに利用できる。しかしながら、このパイプには、さらに別の構造が必要となる。なぜなら、管理されたリソースは、複数のスレッドからアクセスされる可能性があり、また、UIスレッドの境界を越えたロックを最低限にする必要があるからである。
コマンド・アップデート、寿命管理およびコマンド順序保護の必要性に対応するために、チャネルのコンセプトが定義され、このチャネルがUIコンテクストと関連付けられる。このチャネルは、UIコンテクストの境界の中での管理されていないリソースの管理された通信を実装するための、順序保護コマンド・パイプ(order-preserving command pipe)を提供する。
データ転送のクライアント側とサーバ側の両方について、そのチャネルは管理されたリソースが管理されていないリソースをアップデートすること、管理されていないリソースの寿命を管理すること、を可能にするアドレス方式を提供する。このアドレス方式は、ハンドル値を管理されていないリソースの管理されたペアに関連付け、これをリソース・ハンドルと呼ぶ。管理されたリソースがUIコンテクストの中で使用されると、管理されたリソースはUIコンテクストのチャネルを使って、そのチャネル上にこれと対応する管理されていないリソースを作る。UIコンテクストに関連付けられたチャネルはまた、ハンドル(チャネル・ハンドル)によって識別される。複数のUIコンテクストの上で使用できる管理されたリソースについて、管理されていないリソースが、それが使用されるチャネルの各々のために作られる。合成器を使用するプロセス/アプリケーションの各ドメインについて、UIコンテクストと同じだけのチャネルを収容する接続が定義される。図9は、管理されたオブジェクトと管理されていないオブジェクトの関係(relationship)を示し、図10は論理的なチャネルの使用とリソースのアドレス指定を示しており、管理されていないリソースの管理されたペアがそれに対応するチャネルとどのように関連しているかが描かれている。
管理されたリソースとこれに対応する管理されていないリソースの間のマッピングは、したがって、接続ID、チャネル・ハンドルおよびリソース・ハンドルによって認定される。
データは管理されたリソースから管理されていないリソースに流れるだけでなく、管理されていないリソースから管理されたリソースにも流れることに注意されたい。管理されていないリソースから発生し、UIコンテクストで消費されるデータは、たとえば、管理されていないリソースの中で発生している特定の状況を示すために送られる通知を備えることができる。
本発明には、さまざまな変更や代替構成が可能であるが、その特定の実施例を図面に示し、上で詳細に説明した。しかしながら、本発明は開示された特定の形態に限定されるものではなく、反対に、本発明の精神と範囲に含まれるすべての改変、代替構成および同等の構成のすべてを含むものである。
本発明の各種の態様を取り入れることのできる汎用コンピューティング環境の例を示す図である。 サーバ・コンピュータと、このサーバ・コンピュータに接続可能な各種のクライアント・コンピュータの例を示すブロック図である。 それぞれがグラフィクス・コンポーネントを含むサーバ・コンピュータとクライアント・コンピュータを示すブロック図である。 サーバ・コンピュータとクライアント・コンピュータでグラフィクスを生成する、より高レベルのグラフィクス・コマンド、を処理するのに使用されるサーバおよびクライアンとコンピューティング環境のブロック図である。 境界を越えてでマルチプレックスおよびデ・マルチプレックスされる合成を表す図である。 境界を越えた伝送のために。パケットを識別子で修飾する多重化(multiplexing)メカニズムを表す図である。 境界を越えて伝送されるパケットをデ・マルチプレックスするために、パケット識別子を使用するメカニズムを表す図であり、図6のストリームがクライアント側で分離された後に、レンダリング可能な状態になっていることを示す図である。 リモート送信用のパケットを識別子で修飾する方法を一般に表すフロー図である。 識別子を伴うトランスポートの使用を一般に示す図である。 論理的なチャネルの使用とリソースのアドレス指定を示す図である。
符号の説明
110 コンピュータ
120 処理ユニット
121 システム・バス
130 システム・メモリ
131 (ROM)
132 (RAM)
133 BIOS
134 オペレーティング・システム
135 アプリケーション・プログラム
136 他のプログラム・モジュール
137 プログラム・データ
140 取り外し可能不揮発性メモリ・インターフェース
141 ハードディスク・ドライブ
150 取り外し不能不揮発性メモリ・インターフェース
151 磁気ディスク・ドライブ
152 不揮発性磁気ディスク
155 光ディスク・ドライブ
156 不揮発性光ディスク
160 ユーザ入力インターフェース
170 ネットワーク・インターフェース
171 ローカル・エリア・ネットワーク
172 モデム
173 広域ネットワーク
180 リモート・コンピュータ
181 メモリ記憶デバイス
185 リモート・アプリケーション・プログラム
190 ビデオ・インターフェース
191 モニタ
194 出力周辺インターフェース
195 スピーカ
196 プリンタ
161 マウス
162 キーボード
164 タブレット
163 マイクロフォン
205 サーバ・コンピュータ
210−1 デスクトップ・クライアント
210−2 ラップトップ・クライアント
210−3 ハンドヘルドPC
220 ディスプレイ・デバイス
215 ネットワーク
322 アプリケーション・プログラム
325 ソフトウェア・グラフィクス・コンポーネント
335 グラフィクス・コンポーネント
322−1 アプリケーション・プログラム1
322−2 アプリケーション・プログラム2
322−N アプリケーション・プログラムN
420−1 合成器/UCE
420−2 合成器/UCE
420−N 合成器/UCE
445 APIエクスポーザ
440 デスクトップ・マネージャ/UCE
450 ディスプレイ・ドライバ・ローダ
460 リモート・ディスプレイ・ドライバ
465 ローカル・ディスプレイ・ドライバ
470 トランスポート・ドライバ
475 リモート・デバイス・インターフェース
480 より高レベルのグラフィクス命令プロセッサ
485 GDI/GDI+レンダリング・エンジン
490 GDI/GDI+グラフィクス・ドライバ
495 クライアント・コンピュータ・コネクタ

Claims (18)

  1. コンピューティング環境における方法において、
    クライアント・コンピュータに接続すること、
    第一のアプリケーション・プログラムから第一のより高レベルのグラフィクス命令を生成すること、
    前記第一のアプリケーション・プログラムを表す第一の識別子を、前記第一のより高レベルのグラフィクス命令に関連付けること、
    第二のアプリケーション・プログラムから第二のより高レベルのグラフィクス命令を生成すること、
    前記第二のアプリケーション・プログラムを表す第二の識別子を、前記第二のより高レベルのグラフィクス命令に関連付けること、および
    前記第一のより高レベルのグラフィクス命令と前記第二のより高レベルのグラフィクス命令を前記クライアント・コンピュータに送信すること
    を備えることを特徴とする方法。
  2. 前記第一のより高レベルのグラフィクス命令と前記第二のより高レベルのグラフィクス命令を前記クライアント・コンピュータで受信すること、および
    前記第一と第二の識別子に基づき、前記第二のより高レベルのグラフィクス・コマンドから前記第一のより高レベルの生成グラフィクスを分離すること
    をさらに備えることを特徴とする請求項1に記載の方法。
  3. 前記第一のアプリケーション・プログラムから前記第一のより高レベルのグラフィクス命令を生成することは、専用スレッドを使用することを備えることを特徴とする請求項1に記載の方法。
  4. 前記第一のより高レベルのグラフィクス命令を前記クライアント・コンピュータに送信することは、前記第一のアプリケーション・プログラムの既存のグラフィクス表現を変更するのに使用される高レベルのアップデート情報を送信することを備えることを特徴とする請求項1に記載の方法。
  5. 前記第一のより高レベルのグラフィクス・コマンドで前記第一のアプリケーション・プログラムをアップデートすること、および
    前記第二のより高レベルのグラフィクス・コマンドで前記第二のアプリケーション・プログラムをアップデートすること
    をさらに備えることを特徴とする請求項1に記載の方法。
  6. 前記第一のより高レベルのグラフィクス命令に関連付けられた前記識別子は、接続識別子、チャネル・ハンドルおよびリソース・ハンドルのうちの少なくともひとつに対応することを特徴とする請求項1に記載の方法。
  7. コンピュータ実行可能命令を有するコンピュータ読取可能媒体において、前記命令は実行されると、
    クライアント・コンピュータで、第一のアプリケーション・プログラムに関連付けられ、前記第一のアプリケーション・プログラムに対応する識別子と関連付けられた第一のより高レベルのグラフィクス命令と、第二のアプリケーション・プログラムに関連付けられた第二のより高レベルのグラフィクス命令からなるストリームを受信すること、
    前記第一のより高レベルのグラフィクス・コマンドを処理し、前記第一のアプリケーション・プログラムに対応する前記クライアント・コンピュータ上の第一のユーザ・インターフェースをアップデートすること、および
    前記第二のより高レベルのグラフィクス・コマンドを処理し、前記第二のアプリケーション・プログラムに対応する前記クライアント上の第二のユーザ・インターフェースをアップデートすること
    を備える各ステップを遂行することを特徴とするコンピュータ読取可能媒体。
  8. 前記第一のより高レベルのグラフィクス・コマンドを処理することは、前記第一の識別子に基づいて前記第二のより高レベルのグラフィクス・コマンドから前記第一のより高レベルの生成グラフィクスを分離することを備えることを特徴とする請求項6に記載のコンピュータ読取可能媒体。
  9. 前記第一のより高レベルのグラフィクス命令に関連付けられた前記識別子は、接続識別子、チャネル・ハンドルおよびリソース・ハンドルのうちの少なくともひとつに対応することを特徴とする請求項6に記載のコンピュータ読取可能媒体。
  10. 前記第一のユーザ・インターフェースをアップデートする前記第一のより高レベルのグラフィクス・コマンドを処理することは、前記第一のユーザ・インターフェースに対応する保持モードのレンダリング木構造を変更するコマンドの少なくともいくつかを使用することを備えることを特徴とする請求項6に記載のコンピュータ読取可能媒体。
  11. 前記第二のより高レベルのグラフィクス命令は、前記第二のアプリケーション・プログラムに対応する第二の識別子に関連付けられ、さらに、前記クライアント・コンピュータで、第三のアプリケーション・プログラムに関連付けられた第三のより高レベルのグラフィクス命令を備えるストリームを受信することを備えるコンピュータ実行可能命令を、さらに有することを特徴とする請求項6に記載のコンピュータ読取可能媒体。
  12. クライアント・コンピュータによってアクセスされるひとつまたは複数のアプリケーション・プログラムと、
    前記アプリケーション・プログラムのひとつから、より高レベルのグラフィクス・コマンドを抽象化する合成器と、
    グラフィクスを生成する前記クライアント・コンピュータによる使用のために、前記より高レベルのグラフィクス・コマンドをパッケージするリモート・ディスプレイ・ドライバと
    を備えることを特徴とするサーバ・コンピュータ。
  13. プレアプリケーション(pre-application)識別子を、前記アプリケーション・プログラムのひとつに対応する、より高レベルのグラフィクス・コマンドの各集合に関連付けるための手段をさらに備えることを特徴とする請求項12に記載のサーバ・コンピュータ。
  14. 前記リモート・ディスプレイ・ドライバは、少なくともひとつの伝送パイプに統合するためにシリアライズされたパケットにタグ付けすることにより、前記より高レベルのグラフィクス・コマンドをパッケージすることを特徴とする請求項12に記載のサーバ・コンピュータ。
  15. 前記リモート・ディスプレイ・ドライバは、物理的境界を越えて伝送するために、前記より高レベルのグラフィクス・コマンドをパッケージすることを特徴とする請求項12に記載のサーバ・コンピュータ。
  16. 前記リモート・ディスプレイ・ドライバは、マシンの境界を越えて伝送するために、前記より高レベルのグラフィクス・コマンドをパッケージすることを特徴とする請求項12に記載のサーバ・コンピュータ。
  17. 前記リモート・ディスプレイ・ドライバは、プロセスの境界を越えて伝送するために、前記より高レベルのグラフィクス・コマンドをパッケージすることを特徴とする請求項12に記載のサーバ・コンピュータ。
  18. 前記サーバでローカル的にグラフィクスをレンダリングする手段をさらに備えることを特徴とする請求項12に記載のサーバ・コンピュータ。
JP2005334401A 2004-11-18 2005-11-18 グラフィクス・ストリームの多重化および分離 Ceased JP2006190255A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62903604P 2004-11-18 2004-11-18
US11/194,131 US20060129634A1 (en) 2004-11-18 2005-07-29 Multiplexing and de-multiplexing graphics streams

Publications (1)

Publication Number Publication Date
JP2006190255A true JP2006190255A (ja) 2006-07-20

Family

ID=36585342

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005334401A Ceased JP2006190255A (ja) 2004-11-18 2005-11-18 グラフィクス・ストリームの多重化および分離

Country Status (4)

Country Link
US (1) US20060129634A1 (ja)
EP (1) EP1705561A3 (ja)
JP (1) JP2006190255A (ja)
KR (1) KR20060092973A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009020723A (ja) * 2007-07-12 2009-01-29 Casio Comput Co Ltd サーバ装置およびプログラム
JP5086486B1 (ja) * 2012-03-09 2012-11-28 Scsk株式会社 情報出力共有システム
JP2013543190A (ja) * 2010-11-04 2013-11-28 マイクロソフト コーポレーション ドキュメント編集コマンドのシリアル化

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8037169B2 (en) 2005-05-18 2011-10-11 Oracle International Corporation Determining affinity in a cluster
US8386628B1 (en) * 2005-05-23 2013-02-26 Glance Networks, Inc. Method and apparatus for reducing the amount of information that must be transmitted to slower viewers over a remote viewing session
US7814065B2 (en) * 2005-08-16 2010-10-12 Oracle International Corporation Affinity-based recovery/failover in a cluster environment
US7868893B2 (en) * 2006-03-07 2011-01-11 Graphics Properties Holdings, Inc. Integration of graphical application content into the graphical scene of another application
US20080140798A1 (en) * 2006-12-08 2008-06-12 Aten International Co., Ltd. Storage adapter and method thereof
FR2912233B1 (fr) * 2007-02-01 2009-08-21 Sagem Comm Dispositif client leger et procede d'utilisation
US7996787B2 (en) * 2007-02-06 2011-08-09 Cptn Holdings Llc Plug-in architecture for window management and desktop compositing effects
US20080209048A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation Loading A Mirror Driver In Remote Terminal Server Session
WO2009000334A1 (en) * 2007-06-27 2008-12-31 International Business Machines Corporation System and method for providing a composite display
US8484291B1 (en) 2008-04-02 2013-07-09 Glance Networks, Inc. Method and apparatus for selecting commands for transmission from an updated queue
WO2010123523A1 (en) * 2009-04-24 2010-10-28 Citrix Systems, Inc. Methods and systems for preventing a local display device from displaying data generated by a remote computing device
US20110298787A1 (en) * 2010-06-02 2011-12-08 Daniel Feies Layer composition, rendering, and animation using multiple execution threads
US10031636B2 (en) * 2011-09-08 2018-07-24 Microsoft Technology Licensing, Llc Remoting desktop displays using move regions
US10123187B2 (en) * 2012-04-17 2018-11-06 Qualcomm Incorporated Methods and apparatus for multiplexing application identifiers for peer-to-peer discovery systems
US10345989B2 (en) * 2013-02-14 2019-07-09 Autodesk, Inc. Collaborative, multi-user system for viewing, rendering, and editing 3D assets
US9471194B2 (en) 2013-10-29 2016-10-18 Microsoft Technology Licensing, Llc Rendering windows having transparent properties from a remote desktop environment
US11347756B2 (en) * 2019-08-26 2022-05-31 Microsoft Technology Licensing, Llc Deep command search within and across applications
US11900046B2 (en) 2020-08-07 2024-02-13 Microsoft Technology Licensing, Llc Intelligent feature identification and presentation

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07282272A (ja) * 1994-04-13 1995-10-27 Hitachi Ltd 描画処理システム
JPH08297617A (ja) * 1995-04-26 1996-11-12 Nippon Denki Joho Service Kk コンピュータの遠隔表示装置
JPH10126773A (ja) * 1996-10-23 1998-05-15 Nec Corp 画面データ転送用符号化方式
JPH10257462A (ja) * 1997-03-13 1998-09-25 Omron Corp 描画方法および描画システム
JP2000231643A (ja) * 1999-02-08 2000-08-22 Digital Electronics Corp 動的描画方法および動的描画システム
JP2001134776A (ja) * 1999-08-25 2001-05-18 Alpine Electronics Inc 地図データ配信方法
JP2003114873A (ja) * 2001-10-05 2003-04-18 Toshiba Corp 描画分散システム、命令委託先装置及びプログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2270581A (en) * 1992-09-15 1994-03-16 Ibm Computer workstation
US5325361A (en) * 1992-12-01 1994-06-28 Legent Corporation System and method for multiplexing data transmissions
US5444709A (en) * 1993-09-30 1995-08-22 Apple Computer, Inc. Protocol for transporting real time data
US5777621A (en) * 1994-12-22 1998-07-07 Apple Computer, Inc. Quality control mechanism for three-dimensional graphics rendering
US5831639A (en) * 1995-07-05 1998-11-03 Symantec Corporation Scanning display driver
GB2317470A (en) * 1996-09-24 1998-03-25 Ibm Screen remote control
US5941949A (en) * 1997-05-14 1999-08-24 Citrix Systems, Inc. System and method for transmitting data from a server application to more than one client node
CN1293502C (zh) * 1999-06-30 2007-01-03 倾向探测公司 用于监控网络流量的方法和设备
US7055028B2 (en) * 2000-10-10 2006-05-30 Juniper Networks, Inc. HTTP multiplexor/demultiplexor system for use in secure transactions
US6766333B1 (en) * 2000-11-08 2004-07-20 Citrix Systems, Inc. Method and apparatus for synchronizing a user interface element displayed on a client and a software application component executing on a web server
US6922812B2 (en) * 2001-07-12 2005-07-26 International Business Machines Corp. System and method for presenting text upon the display of a server that employs and X window graphical interface
US7064766B2 (en) * 2001-10-18 2006-06-20 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7161599B2 (en) * 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
EP1552520B1 (en) * 2002-10-15 2012-02-29 LG Electronics, Inc. Recording medium having data structure for managing reproduction of multiple graphics streams recorded thereon and recording and reproducing methods and apparatuses
US7249355B2 (en) * 2002-12-18 2007-07-24 Microsoft Corporation Unified network thread management
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
US20050278642A1 (en) * 2004-06-10 2005-12-15 Chang Nelson L A Method and system for controlling a collaborative computing environment

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07282272A (ja) * 1994-04-13 1995-10-27 Hitachi Ltd 描画処理システム
JPH08297617A (ja) * 1995-04-26 1996-11-12 Nippon Denki Joho Service Kk コンピュータの遠隔表示装置
JPH10126773A (ja) * 1996-10-23 1998-05-15 Nec Corp 画面データ転送用符号化方式
JPH10257462A (ja) * 1997-03-13 1998-09-25 Omron Corp 描画方法および描画システム
JP2000231643A (ja) * 1999-02-08 2000-08-22 Digital Electronics Corp 動的描画方法および動的描画システム
JP2001134776A (ja) * 1999-08-25 2001-05-18 Alpine Electronics Inc 地図データ配信方法
JP2003114873A (ja) * 2001-10-05 2003-04-18 Toshiba Corp 描画分散システム、命令委託先装置及びプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009020723A (ja) * 2007-07-12 2009-01-29 Casio Comput Co Ltd サーバ装置およびプログラム
JP2013543190A (ja) * 2010-11-04 2013-11-28 マイクロソフト コーポレーション ドキュメント編集コマンドのシリアル化
JP5086486B1 (ja) * 2012-03-09 2012-11-28 Scsk株式会社 情報出力共有システム

Also Published As

Publication number Publication date
EP1705561A2 (en) 2006-09-27
KR20060092973A (ko) 2006-08-23
US20060129634A1 (en) 2006-06-15
EP1705561A3 (en) 2007-10-03

Similar Documents

Publication Publication Date Title
JP2006190255A (ja) グラフィクス・ストリームの多重化および分離
JP5080554B2 (ja) 代替的グラフィック・セットの効率的な符号化
US7899864B2 (en) Multi-user terminal services accelerator
US8112513B2 (en) Multi-user display proxy server
US7852342B2 (en) Remote client graphics rendering
EP2315123B1 (en) Methods and systems for remoting three dimensional graphics
US9235452B2 (en) Graphics remoting using augmentation data
EP2165259A1 (en) Methods and systems for remoting three dimensional graphical data
AU2004279201B2 (en) Protocol for remote visual composition
US7567253B2 (en) Mirror driver notification of device independent bitmap drawing calls
US20170201763A1 (en) Digital watermarking for securing remote display protocol output
EP1821490A1 (en) Method for transmitting graphical data to a thin client
EP4057138A1 (en) Improved streaming of graphic rendering elements
CN1776604A (zh) 图形数据流的复用和去复用
Aumüller D5. 3.2–Remote hybrid rendering: protocol definition for exascale systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110208

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110509

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110701

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120516

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20120517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120517

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120607

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120731

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20121127