(57)【特許請求の範囲】
【請求項１】
第１の表示ソースおよび第２の表示ソースからの情報を表示装置に表示するためのシステムであって、
前記表示装置がフレームを読み取る一次プレゼンテーション面、および該一次プレゼンテーション面に接続され、前記表示ソースからフレームが書き込まれるプレゼンテーションバックバッファを有するプレゼンテーションフリッピングチェーンを含むプレゼンテーション面セットと、
前記第１の表示ソースからフレームが書き込まれる第１のバックバッファ、および該第１のバックバッファに接続され、前記プレゼンテーション面セットに転送されるフレームが格納される第１のレディバッファを含む第１の表示メモリ面セットと、
前記第２の表示ソースからフレームが書き込まれる第２のバックバッファ、および該第２のバックバッファに接続され、前記プレゼンテーション面セットに転送されるフレームが格納される第２のレディバッファを含む第２の表示メモリ面セットと、
前記表示装置が前記一次プレゼンテーション面から読み取ったフレームを前記表示装置に表示した時刻を前記第１および第２の表示ソースに渡し、前記第１のレディバッファまたは前記第２のレディバッファからフレームを読み取り、前記プレゼンテーションバックバッファに読取られたフレームを転送するためのグラフィックスアービタと
を備えたことを特徴とするシステム。
【請求項２】
前記転送は、前記プレゼンテーションフリッピングチェーンにおける前記プレゼンテーションバックバッファ内のフレームと、前記第１および第２のレディバッファ内のフレームとを比較して、前記プレゼンテーションバックバッファ内のフレームから変更された部分にのみ、前記第１および第２のレディバッファから表示情報を転送することを備えたことを特徴とする請求項１に記載のシステム。
【請求項３】
前記グラフィックスアービタは、前記一次プレゼンテーション面から読み取ったフレームの後のフレームが前記表示装置に表示される推定時刻を前記第１の表示ソースに通知することを特徴とする請求項１に記載のシステム。
【請求項４】
前記グラフィックスアービタは、前記表示装置のリフレッシュを指示するデータを受け取ると、前記第１の表示ソースに通知することを特徴とする請求項３に記載のシステム。
【請求項５】
前記第１の表示ソースは、前記推定時刻を用いてビデオをデインタレースし、前記第１の表示メモリ面セットの表示情報を準備することを特徴とする請求項３に記載のシステム。
【請求項６】
前記第１の表示ソースは、前記推定時刻を用いてフレームを補間し、前記第１の表示メモリ面セットの表示情報を準備することを特徴とする請求項３に記載のシステム。
【請求項７】
前記グラフィックスアービタは、走査線が前記表示装置に表示された時刻を前記第１の表示ソースに通知することを特徴とする請求項１に記載のシステム。
【請求項８】
前記グラフィックスアービタは、前記第１の表示ソースに隠蔽情報を提供することを特徴とする請求項１に記載のシステム。
【請求項９】
前記グラフィックスアービタは、前記第１の表示メモリ面セットからの表示情報を変換することを特徴とする請求項１に記載のシステム。
【請求項１０】
前記第１の表示メモリ面セットからの表示情報を変換することは、ストレッチング、テクスチャマッピング、ライティング、ハイライティング、第１の表示フォーマットから第２の表示フォーマットへの変換、および多次元変換の適用からなるセットのオペレーションを実行することを含むことを特徴とする請求項９に記載のシステム。
【請求項１１】
前記グラフィックスアービタは、前記第１の表示ソースから画素ごとのアルファ情報を受け取り、前記グラフィックスアービタが、前記第１の表示ソースから受け取った前記画素ごとのアルファ情報を使用して、前記第１の表示メモリ面セットからの前記表示情報と前記第２の表示メモリ面セットからの前記表示情報とを結合して、前記プレゼンテーション面セットに転送することを特徴とする請求項１に記載のシステム。
【請求項１２】
前記グラフィックスアービタとは異なる第３の表示ソースをさらに備え、前記グラフィックスアービタは、前記第３の表示ソースから描画命令を読み取り、前記描画命令を実行して前記プレゼンテーション面セットに書き込むことを特徴とする請求項１に記載のシステム。
【請求項１３】
第１の表示ソースとも第２の表示ソースとも異なるグラフィックスアービタが、前記第１の表示ソースおよび前記第２の表示ソースからの情報を表示装置に表示するための方法であって、
前記第１の表示ソースからフレームが書き込まれる第１のバックバッファ、および該第１のバックバッファに接続され、前記プレゼンテーション面セットに転送されるフレームが格納される第１のレディバッファを含む第１の表示メモリ面セットから表示情報を集めることと、
前記第２の表示ソースからフレームが書き込まれる第２のバックバッファ、および該第２のバックバッファに接続され、前記プレゼンテーション面セットに転送されるフレームが格納される第２のレディバッファを含む第２の表示メモリ面セットから表示情報を集めることと、
前記表示装置が前記一次プレゼンテーション面から読み取ったフレームを前記表示装置に表示した時刻を前記第１および第２の表示ソースに渡すことと、
前記第１のレディバッファまたは前記第２のレディバッファからフレームを読み取り、前記表示装置がフレームを読み取る一次プレゼンテーション面、および該一次プレゼンテーション面に接続され、前記表示ソースからフレームが書き込まれるプレゼンテーションバックバッファを有するプレゼンテーションフリッピングチェーンを含むプレゼンテーション面セットに読取られたフレームを転送することと
を備えたことを特徴とする方法。
【請求項１４】
表示情報を転送することは、前記プレゼンテーションフリッピングチェーンにおける前記プレゼンテーションバックバッファ内のフレームと、前記第１および第２のレディバッファ内のフレームとを比較して、前記プレゼンテーションバックバッファ内のフレームから変更された部分にのみ、前記第１および第２のレディバッファから表示情報を転送することを備えたことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記一次プレゼンテーション面から読み取ったフレームの後のフレームが前記表示装置に表示される推定時刻を前記第１の表示ソースに通知することをさらに備えたことを特徴とする請求項１３に記載の方法。
【請求項１６】
前記第１の表示ソースへの前記通知は、前記表示装置のリフレッシュの指示を受け取ることに関連することを特徴とする請求項１５に記載の方法。
【請求項１７】
前記第１の表示ソースは、前記推定時刻を用いてビデオをデインタレースし、前記第１の表示メモリ面セットの表示情報を準備することを特徴とする請求項１５に記載の方法。
【請求項１８】
前記第１の表示ソースは、前記推定時刻を用いてフレームを補間し、前記第１の表示メモリ面セットの表示情報を準備することを特徴とする請求項１５に記載の方法。
【請求項１９】
走査線が前記表示装置上に表示された時刻を前記第１の表示ソースに通知することをさらに備えたことを特徴とする請求項１３に記載の方法。
【請求項２０】
前記第１の表示ソースに隠蔽情報を提供することをさらに備えたことを特徴とする請求項１３に記載の方法。
【請求項２１】
前記第１の表示メモリ面セットからの表示情報を変換することをさらに備えたことを特徴とする請求項１３に記載の方法。
【請求項２２】
前記第１の表示メモリ面セットからの表示情報を変換することは、ストレッチング、テクスチャマッピング、ライティング、ハイライティング、第１の表示フォーマットから第２の表示フォーマットへの変換、および多次元変換の適用からなるセットのオペレーションを実行することを備えたことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記第１の表示ソースから画素ごとのアルファ情報を受け取ることと、
前記第１の表示ソースから受け取った前記画素ごとのアルファ情報を使用して、前記第１の表示メモリ面セットからの前記表示情報と前記第２の表示メモリ面セットからの前記表示情報とを結合して、前記プレゼンテーション面セットに転送することと
をさらに備えたことを特徴とする請求項１３に記載の方法。
【請求項２４】
前記グラフィックスアービタとは異なる第３の表示ソースから描画命令を読み取ることと、
前記描画命令を実行して前記プレゼンテーション面セットに書き込むことと
をさらに備えたことを特徴とする請求項１３に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に、表示装置の画面にアニメ化された視覚情報を表示することに関し、より詳細には、コンピューティング装置が提供する表示資源を効率的に使用することに関する。
【０００２】
【従来の技術】
コンピューティングの全ての局面で、情報を表示する洗練さのレベルは、急速に上がっている。単純なテキストとして送達されていた情報は、今では、視覚的に心地よい画像として提示されている。かつては静止画像で十分であったところで、コンピュータによって生成されたまたは生物から記録されたフルモーションビデオが増えている。より多くのビデオ情報源が使用可能になるにつれて、開発者は、複数のビデオストリームを結合する機会が増してている（本出願では、「ビデオ」が動画情報と静止画情報の両方を含むことに留意されたい）。テキストバナーがフィルムクリップの上にオーバレイするときなどのように、単一の表示画面がいくつかのビデオソースの出力を同時に表示し、それらの出力を相互作用させることができる。
【０００３】
しかし、この豊富な視覚情報の提示は、コンピューティング資源の消費の点で高い失費につながる。問題は、増加するビデオソースの数および異なる表示フォーマットの数によって悪化する。ビデオソースは通常、静止フレームを描画し、それらをホスト装置に提供して高速に連続表示することによってビデオを生成する。対話式ゲームなど、いくつかのアプリケーションがただ１つのフレームを生成するために必要とするコンピューティング資源が重要な意味を持ち、毎秒６０以上のフレームを生成するのに必要な資源は、膨大なものである。複数のビデオソースを同じホスト装置上で実行しているとき、資源要求は高まる。これは、各ビデオソースに適当な資源を割り当てなければならないためだけでなく、ビデオソースの出力をスムーズに結合するためにアプリケーションまたはホストのオペレーティングシステムがいっそう多くの資源を必要とするからである。さらに、ビデオソースは、異なる表示フォーマットを使用することができ、ホストは、ホストの表示に適合したフォーマットに表示情報を変換しなければならない。
【０００４】
【発明が解決しようとする課題】
表示資源に対する拡大する要求の問題にアプローチする伝統的な方法は、ホストの環境に対してビデオソースを注意深く最適化する方法から、ホストの詳細をほとんど完全に無視する方法まで広い範囲にわたる。いくつかのビデオソースは、特定のビデオタスクに対して最適化することによって資源の使用を導く。これらのビデオソースには例えば、対話式ゲームおよびディジタルバーサタイルディスク（ＤＶＤ）プレーヤなどの固定された機能ハードウェア装置が含まれる。カスタムハードウェアはしばしば、ビデオソースが、ホスト装置によって指定された最適時刻および速度でそのフレームを送達することを可能にする。今後の表示フレームのパイプラインバッファリングは、これを実施する方法の一例である。残念ながら、最適化すると、ビデオソースが提供する特定のタイプの表示情報に制限が加わる。ハードウェアによって最適化されたＤＶＤプレーヤは一般に、ＤＶＤから読み取った情報に基づくＭＰＥＧ２ビデオしか生成することができない。これらのビデオソースを内部から考えると、最適化は、ビデオソースが、ディジタルカメラ、インターネットストリーミングコンテンツサイトなどの他のソースからの表示情報を、出力ストリームに柔軟に組み込むことを妨げる。最適化されたビデオソースを外部から考えると、それらの特定の要件は、他のアプリケーションによってビデオソースの出力を一体化された表示に簡単に組み込むことを妨げる。
【０００５】
最適化の他方では、多くのアプリケーションは、ホスト装置の機能および限界を多かれ少なかれ無視して、ビデオ出力を生成する。伝統的にこれらのアプリケーションは、ホストが「短い待ち時間」、すなわちアプリケーションからフレームを受け取った後の短い時間のうちにホストがフレームを表示画面に送達するという前提の下に、それら出力の品質を信用する。短い待ち時間は通常、軽負荷のグラフィックスシステムによって提供されるが、ビデオアプリケーションが増し、集約的な表示処理の要求が増大するとともにシステムは苦闘する。このような状況では、これらのアプリケーションが、ホストの資源を恐ろしく浪費する。例えば、所与の表示画面は、固定された速度でフレームを表示するが（「リフレッシュ速度」と呼ばれる）、これらのアプリケーションは、しばしばホストの画面のリフレッシュ速度を知らず、そのため、アプリケーションは、必要な数よりも多くのフレームを生成する傾向がある。これらの「余分」のフレームは、ホストの表示画面には決して提示されないが、このようなフレームの生成は大切な資源を消費する。いくつかのアプリケーションは、ホスト表示のリフレッシュ速度を大雑把に追跡するタイマを組み込むことによって、ホストが提供する環境の細目に順応しようとする。これによって、アプリケーションは、余分のフレームを生成せず、タイマの点火のたびにフレームを１つだけ描画する。しかし、タイマを表示の実際のリフレッシュ速度に同期させることが難しくまたは不可能であるので、この方法は、完全ではない。さらにタイマは、表示のリフレッシュが予想されるよりもわずかに多くまたはわずかに少ない時間だった場合には、ドリフトを考慮することができない。その原因とは無関係に、タイマの不完全性は、余分のフレームの生成し、その表示時刻までにフレームが完全に構成されなかったときには、さらに悪いフレームの「スキップ」を生じさせる可能性がある。
【０００６】
アプリケーションがその環境を知らないことの浪費的な他の結果として、アプリケーションは、たとえその出力が、他のアプリケーションの出力によってホストの表示画面を完全に隠蔽している場合でも、フレームを生成し続ける可能性がある。先に説明した「余分」のフレームとちょうど同じように、これらの隠蔽されたフレームは見ることができないが、その生成には大切な資源が消費される。
【０００７】
従って、ホストの動作上の詳細にアプリケーションをあまり密接に結びつけなくても、アプリケーションがそのホスト装置の表示資源を知的に使用できる方法が求められている。
【０００８】
【課題を解決するための手段】
以上の課題および欠点ならびに他の課題および欠点は、本発明によって解決される。本発明は、明細書、図面および請求項を参照することによって理解することができる。本発明の一態様によれば、グラフィックスアービタが、コンピューティングシステムのビデオソースと表示コンポーネントの間のインタフェースの働きをする。（ビデオソースは、例えばオペレーティングシステムおよびユーザアプリケーションを含む画像情報の生成源である。）グラフィックスアービタは、（１）表示環境についての情報を集め、その情報をビデオソースに渡し、（２）ビデオソースが生成した出力にアクセスして、表示画面コンポーネントにその出力を効率的に提示し、このプロセスの際に、出力を変換しまたは他のアプリケーションに出力を変換させる。
【０００９】
グラフィックスアービタは、アプリケーションが表示資源を知的に使用できるように現在の表示環境についての情報を提供する。例えば、表示ハードウェアとの親密な関係を使用して、グラフィックスアービタは、表示が「リフレッシュ」する、すなわち次のフレームが表示される推定時刻をアプリケーションに知らせる。アプリケーションは、その出力を推定表示時刻に合わせて、出力品質を向上させ、その一方で「余分」なフレームの生成を回避することによって資源の浪費を低減させる。グラフィックスアービタはさらに、フレームが実際に表示された時刻をアプリケーションに知らせる。アプリケーションはこの情報を使用して、十分に速くフレームを生成しているかどうかを調べ、もしそうでなければ、遅れないためにビデオ品質を低下させることができる。アプリケーションは、グラフィックスアービタと協力し、アプリケーションのフレーム生成速度を直接に設定することによって、アプリケーションによる資源の使用を制御することができる。アプリケーションは、新しいフレームが呼び出されるまでそのオペレーションをブロックし、グラフィックスアービタは、アプリケーションがフレームを生成する間アプリケーションのブロックを解除し、次いでアプリケーションは、再びブロックする。ホストのオペレーティングシステムとの関係のため、グラフィックスアービタは、表示画面上のすべての配置を知っている。グラフィックスアービタは、アプリケーションに、アプリケーションの出力が完全にまたは部分的に隠蔽されて、見えないフレームの部分を描画するために資源を消費する必要がないことを知らせる。グラフィックスアービタが提供する表示環境情報を使用することによって、さまざまな表示環境で機能するようにアプリケーションの表示出力を最適化することができる。
【００１０】
グラフィックスアービタは、表示環境情報を使用して表示資源を節約することができる。グラフィックスアービタは、画面用にフレームを準備するのに使用する表示バッファに、あるレベルの永続性を導入する。アービタは、表示バッファの直前のフレームから変更された部分だけを更新すればよい。
【００１１】
グラフィックスアービタは、アプリケーションの出力バッファにアクセスできるので、表示ハードウェアに出力を送る前に、アプリケーションの出力の変換を容易に実行することができる。例えば、グラフィックスアービタは、アプリケーションが好む表示フォーマットから表示画面が受入れ可能なフォーマットへの変換を実施する。アプリケーションの設計対象である画面とは異なる表示画面の特性と一致させるために、出力を「引き伸ばす」ことができる。同様に、アプリケーションは、他のアプリケーションの出力がホストの画面に表示される前にこの出力にアクセスし、変換することができる。３次元レンダリング、照明効果、および複数のビデオストリームの画素ごとのアルファブレンド（alpha blend）は、適用可能な変換の例である。アプリケーションに対してトランスペアレントに変換を実行することができるので、この方法は、柔軟性を与え、同時に、ホストの表示環境の詳細に対してアプリケーションがその出力を最適化することを可能にする。
【００１２】
【発明の実施の形態】
請求項には本発明の特徴が詳細に記述されているが、本発明ならびにその目的および利点は、以下の詳細な説明を添付図面とともに検討することによって最もよく理解される。
【００１３】
図面を参照する。図中、同じ参照符号は同じ要素を指す。本発明は、適当なコンピューティング環境で実現されるものとして説明する。以下の説明は本発明の実施形態に基づくものである。以下の説明を、本明細書に明示的に記載されていない代替実施形態に関して本発明を限定するものと解釈してはならない。第１章では、アプリケーションによってビデオフレームがどのように生成され、画面に表示するためにどのように提示されるかについての背景情報を提示する。第２章では、本発明を実行することができる例示的なコンピューティング環境を提示する。第３章では、表示ソースと表示装置の間で動作するインテリジェントインタフェース（グラフィックスアービタ）について説明する。第４章では、インテリジェントインタフェース法によって可能になる２、３の機能の拡大議論を提示する。第５章では、拡大された一次面を記載する。第６章では、グラフィックスアービタとの例示的なインタフェースを提示する。
【００１４】
特に指示しない限り以下の説明では、１台または数台のコンピューティング装置によって実行される動作およびオペレーションの象徴的表現に関して本発明を説明する。コンピュータによる実行と呼ばれるこのような動作およびオペレーションには、コンピューティング装置の構造化されたデータを表す電気信号の処理ユニットによる操作を含むことを理解されたい。この操作は、データを変換しまたはコンピューティング装置のメモリシステム中にデータを維持する。コンピューティング装置は、当業者がよく知っている方法で装置のオペレーションを再構成するか、または他の方法で変更する。データが維持されるデータ構造は、データのフォーマットによって定義される特定の属性を有するメモリの物理的位置である。しかし、本発明は以上の文脈で説明されるが、以下に説明するさまざまな動作およびオペレーションは、ハードウェアでも実現できることは当業者ならば明らかであり限定的なものではない。
【００１５】
（１．ビデオフレームの生成および表示）
本発明の態様を説明する前に、ビデオ表示の基本的な２、３の概念を大まかに説明しておく。図１に、コンピューティング装置１００で実行される非常に単純な表示システムを示す。表示装置１０２は、ユーザの眼に、個々の静止フレームを高速かつ連続的に提示する。これらフレームが提示される速度は、表示の「リフレッシュ速度」と呼ばれる。一般的なリフレッシュ速度は、６０Ｈｚと７２Ｈｚとである。それぞれのフレームが直前のフレームとわずかに異なるとき、連続するフレームは動きの錯覚を引き起こす。典型的には、表示装置上に表示されるものは、ビデオメモリバッファに記憶されたイメージデータによって制御され、図において、ビデオメモリバッファは、表示するフレームのディジタル表現を含む一次プレゼンテーション面（primary presentation surface）１０４として示されている。表示装置は、そのリフレッシュ速度で定期的に、このバッファからフレームを読み取る。具体的には、表示装置がアナログモニタであるときには、ハードウェアドライバが、一次プレゼンテーション面からディジタル表現を読み取り、表示を駆動するアナログ信号に変換する。他の表示装置は、一次プレゼンテーション面からディジタル信号を変換なしに直接に受け入れる。
【００１６】
表示装置１０２が一次プレゼンテーション面１０４からフレームを読み取るのと同時に、表示ソース１０６が、表示したいフレームを一次プレゼンテーション面に書き込む。表示ソースは、表示装置上に表示するための出力を生成する一切のものをいい、例えばユーザアプリケーション、コンピューティング装置１００のオペレーティングシステムまたはファームウェアベースのルーチンである。この議論ではほとんどの場合、これらさまざまな表示ソース間の区別はしない。それらは全て表示情報の供給源であり、基本的に全て同様に取り扱われる。
【００１７】
表示装置１０２が一次プレゼンテーション面１０４から読み取るのと同時に、表示ソース１０６が一次プレゼンテーション面１０４に書き込むため、図１のシステムは、多くのアプリケーションにとって単純なシステムである。表示装置の読取りでは、表示ソースが書き込んだ１つの完全なフレームを取り出し、または２つの連続するフレームの部分を取り出すことができる。後者のケースでは、２つのフレームの部分の境界に、「ティアリング（tearing）」と呼ばれる目障りな誤差（artifact）が表示装置に生み出される可能性がある。
【００１８】
図２および図３に、ティアリングを回避する標準的な方法を示す。表示装置１０２に関連づけられたビデオメモリは、プレゼンテーション面セット（presentation surface set）１１０に拡張されている。表示装置はこれまでどおり、図１に関して上述した一次プレゼンテーション面１０４から読取りを実施する。しかし、表示ソース１０６は、プレゼンテーションバックバッファ１０８と呼ばれる別個のバッファに書込みを実施する。表示ソースの書込みは、表示装置の読取りから切り離され、そのため表示装置の読取りを妨害しない。プレゼンテーション面セット中のバッファは、リフレッシュ速度で定期的に「フリップ（flip）」される。すなわち、プレゼンテーションバックバッファであった、表示ソースが最も最近に書き込んだフレームを含むバッファが一次プレゼンテーション面になる。表示装置は、この新しい一次プレゼンテーション面から最新のフレームを読み取り、これを表示する。さらにフリップの間に、一次プレゼンテーション面であったバッファは、プレゼンテーションバックバッファとなり、表示ソースはこのバッファに次に表示するフレームを書き込むことができる。図２は時刻Ｔ＝０のバッファを示し、図３はフリップ後のバッファ、１リフレッシュ期間後の時刻Ｔ＝１のバッファを示す。ハードウェアの観点からいえば、アナログモニタのフリッピングは、モニタの画面を「ペイント」する電子ビームが１つのフレームを塗り終え、次のフレームのペインティングを開始するために画面の最上部に戻るときに起こる。これは、垂直同期イベント（vertical synchronization event）またはＶＳＹＮＣと呼ばれる。
【００１９】
これまでの議論は、表示のためにフレームを提示することに焦点をおいて論じた。表示のためフレームを提示する前にはもちろん、表示ソース１０６がフレームを構成しなければならない。図４では、議論をフレーム構成プロセスに移す。いくつかの表示ソースは、非常に高速に動作するので、プレゼンテーションバックバッファ１０８に書き込むときに表示フレームを構成する。しかしながら、一般にこれでは限定的にすぎる。多くのアプリケーションでは、フレームを構成するのに必要な時間は、フレームごとに異なる。例えば、ビデオはたいてい圧縮されたフォーマットで記憶される。この圧縮は、フレームとその直前のフレームとの間の差分に基づく。あるフレームがその直前のフレームとは大幅に異なる場合、ビデオを再生する表示ソースは、多くの計算資源を圧縮解除に消費する可能性があり、一方、根本的に違いの小さいフレームではより少ない計算で済む。他の例として、ビデオゲームのフレームを構成するときにも同様に、描写される動作の状況に応じて必要となる計算量は変動する。計算要求の差を平滑化するため、多くの表示ソースがメモリ面セット（memory surface set）１１２を生成する。フレームの構成は、メモリ面セットの「バック」バッファ１１４で開始され、フレームは完全に構成されるまで、複合パイプラインに沿って進み、「レディ」バッファ１１６で表示の準備がなされる。フレームは、レディバッファからプレゼンテーションバックバッファへ転送される。この方法では、構成プロセスの間に消費された時間の多少に関係なく、表示ソースは、通常の間隔でフレームを表示するために提示する。図４では、メモリ面セット１１２が２つのバッファを含むように示されているが、いくつかの表示ソースは、フレームの構成タスクの複雑さの程度に応じてより多くの、またはより少ないバッファを必要とする。
【００２０】
図５に、これまでの議論では暗黙の了解であった、表示装置１０２が、多数の表示ソースからの情報を同時に表示することができることを明白に示す。この図では、表示ソース１０６ａ、１０６ｂおよび１０６ｃによって示されている。表示ソースは、例えば対話式ビデオゲームに静止テキストの形態の警告メッセージを表示するオペレーティングシステムからビデオ再生ルーチンにまでの範囲に及ぶ。それらの構成の複雑さまたはそれらの固有のビデオフォーマットに関わらず、全ての表示ソースは最終的に、その出力を同じプレゼンテーションバックバッファ１０８に送達する。
【００２１】
先に論じたように、表示装置１０２は、そのリフレッシュ速度で定期的にフレームを提示する。しかし、表示ソース１０６がそのフレームの構成を表示装置のリフレッシュ速度と同期させるか否か、またはどのように同期させるかについては論じていない。図６〜８の流れ図は、しばしば使用される同期方法を示す。
【００２２】
図６の方法に従って動作する表示ソース１０６は、表示タイミング情報にアクセスすることができない。ステップ２００では、表示ソースが、メモリ面セット１１２を生成し（表示ソースがこれを使用する場合）、表示フレームの出力ストリームを初期化するのに必要なその他のことを実施する。ステップ２０２で表示ソースは、フレームを構成する。図４に関して論じたように、フレームの構成に伴う作業の量は、表示ソースごとに、また、単一の表示ソースによって構成されるフレームごとに幅広く変化する。必要な作業がどんなに多くともステップ２０４によって構成は完了し、フレームの表示の準備が整う。フレームは、プレゼンテーションバックバッファ１０８に移される。表示ソースが別のフレームを生成する場合には、ステップ２０６でループを戻り、ステップ２０２で次のフレームを構成する。出力ストリーム全体の表示が終了すると、ステップ２０８で表示ソースはクリーンアップされ、終了する。
【００２３】
この方法では、ステップ２０４で、フレームの構成を表示装置１０２のリフレッシュ速度と同期させてもよいし、または同期させなくてもよい。同期させない場合、使用可能な資源が許す限りの速さで表示ソース１０６はフレームを構成する。表示装置は、例えば毎秒７２フレームしか表示できないときに、表示ソースは、例えば毎秒１５００個のフレームを構成することによって、そのホストコンピューティング装置１００のかなりの資源を浪費している場合がある。資源の浪費の他に、表示同期の欠如は、表示装置の唇の動きとオーディオクリップとの同期など、ビデオストリームと他の出力ストリームとの間の同期を妨げる可能性がある。一方、表示のそれぞれのリフレッシュサイクルで表示ソースが１つのフレームをプレゼンテーションバックバッファ１０８に転送するようにするだけで、ステップ２０４を、同期式のスロットリング構成とすることもできる。このような場合、表示されない余分のフレームを描画することによってではなく、表示装置が次のフレームの送達を受け入れるときを知るために表示装置を絶えずポーリングすることによって、表示ソースが資源を浪費する可能性がある。
【００２４】
図６の単純な技法は、資源を浪費する以外にも欠点を有する。ステップ２０４で、フレーム構成速度を表示装置１０２のリフレッシュ速度に同期させるか否かに関わらず、表示ソース１０６は、表示タイミング情報にアクセスすることができない。表示ソースが生み出したフレームストリームは、さまざまな表示装置上でさまざまな速度で実行される。例えば、物体を１０画素ずつ右へ１００画素移動させるアニメーションでは、表示のリフレッシュ速度とは無関係に１０個のフレームが要る。１０フレームアニメーションは、７２Ｈｚ表示上では１０／７２秒（１３．９ミリ秒）、８５Ｈｚ表示上では１０／８５秒（１１．８ミリ秒）で実行される。
【００２５】
図７の方法は、図６の方法よりも洗練されている。ステップ２１２で、表示ソース１０６が現在時刻をチェックする。次いでステップ２１４で、表示ソース１０６は、現在時刻に対して適当なフレームを構成する。この技法を使用することによって、表示ソースは、上述した異なる表示速度の問題を回避することができる。しかしこの方法にも欠点がある。この方法は、ステップ２１２の時刻のチェックとステップ２１６のフレームの表示との間の短い待ち時間（latency）に依存する。待ち時間が非常に大きく、構成されたフレームが実際に表示される時刻に対して適当でない場合には、ユーザは問題に気づく可能性がある。待ち時間の変動は、たとえ待ち時間が常に短く保たれるにしても、表示にジャーキネス（jerkiness）を生み出す可能性もある。ステップ２１６でフレームの構成速度と表示速度を同期させるか否かに関わらず、この方法は、資源を浪費する図６の方法の欠点を維持する。
【００２６】
図８の方法は、資源浪費の問題に直接に対処する。この方法は、構成されたフレームをステップ２２８でプレゼンテーションバックバッファ１０８に転送するまで、概ね図７の方法のステップに従う。次いでステップ２３０で、表示ソース１０６はしばらくの間待機してその実行を一時停止してから、ステップ２２４へ戻って次のフレームを構成するプロセスを開始する。この待ちは、ポーリングの資源コストを招くことなく表示のリフレッシュサイクルごとに１つのフレームを生成しようとする試みである。しかし、この待ち時間は、表示装置１０２が次のフレームを表示する時刻を表示ソースが推定することに基づく。表示ソースは、表示装置のタイミング情報にアクセスできないので、これはあくまで推定にすぎない。表示ソースの推定が短すぎる場合、資源の浪費をかなり減らすには、待ち時間が短すぎる可能性がある。さらに悪いことに、推定が長すぎる場合には、表示ソースが、表示の次のリフレッシュサイクルに合わせてフレームを構成できない可能性がある。その結果、目障りなフレームスキップが発生する。
【００２７】
（２．例示的なコンピューティング環境）
図１のコンピューティング装置１００のアーキテクチャは任意とすることができる。図９は、本発明をサポートする例示的なコンピュータシステムを概略的に示すブロック図である。コンピューティング装置１００は、適当な環境の一例にすぎず、本発明の使用または機能の範囲に関して限界を示唆しようとするものではない。コンピューティング装置１００が、図９に示した１つの構成要素または構成要素の組合せに関する依存性または要件を有すると解釈してはならない。本発明は、他の多数の汎用または専用コンピューティング環境または構成とともに動作可能である。本発明とともに使用するのに適した周知のコンピューティングシステム、環境および構成の例には、パーソナルコンピュータ、サーバ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能なコンシューマ電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、および以上の任意のシステムまたは装置を含む分散コンピューティング環境が含まれる。ただしこれらに限定されるわけではない。その最も基本的な構成では、コンピューティング装置１００は、典型的には、少なくとも１つの処理ユニット３００およびメモリ３０２を含む。メモリ３０２は、揮発性メモリ（ＲＡＭなど）または不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）、あるいはこれらの組合せとすることができる。この最も基本的な構成が破線３０４によって図３に示されている。このコンピューティング装置は、追加の機構および機能を有することができる。例えばコンピューティング装置１００は、追加の記憶装置（リムーバブルおよび非リムーバブル）を含むことができ、これには、磁気ディスクおよびテープならびに光ディスクおよびテープが含まれる。ただしこれらに限定されるわけではない。このような追加の記憶装置が、リムーバブル記憶装置３０６および非リムーバル記憶装置３０８として図３に示されている。コンピュータ記憶媒体には、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体が含まれ、例えばコンピュータ読み取り可能な命令、データ構造、プログラムモジュール、その他のデータなどの情報を記憶する任意の方法または技術で実現される。メモリ３０２、リムーバブル記憶装置３０６および非リムーバブル記憶装置３０８は全て、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、他の記憶技術、ＣＤ−ＲＯＭ、ディジタルバーサタイルディスク、他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、他の磁気記憶装置、および所望の情報を記憶する目的に使用することができ、かつ装置１００がアクセスすることができるる他の任意の媒体が含まれる。ただしこれらに限定されるわけではない。このようなコンピュータ記憶媒体を、装置１００の一部とすることができる。装置１００はさらに、装置が他の装置と通信することを可能にする通信チャネル３１０を含むことができる。通信チャネル３１０は、通信媒体の例である。通信媒体は一般に、コンピュータ読み取り可能な命令、データ構造、プログラムモジュールまたは他のデータを、搬送波、他の移送機構などの被変調データ信号中に具体化するものであり、任意の情報送達媒体を含む。用語「被変調データ信号」は、１または複数の特性が、その信号中に情報をコード化する方法でセットまたは変更された信号を意味する。通信媒体は例えば、有線ネットワーク、直接有線接続などの有線媒体、および音、ＲＦ、赤外線などの無線媒体を含む。ただしこれらに限定されるわけではない。本明細書で使用する用語「コンピュータ読み取り可能な媒体」は、記憶媒体と通信媒体の両方を含む。コンピューティング装置１００はさらに、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置３１２を有することができる。表示１０２、スピーカ、プリンタなどの出力装置３１４を含むこともできる。これらの装置は全て当技術分野で周知であり、ここで詳細に論じる必要はない。
【００２８】
（３．インテリジェントインタフェース：グラフィックスアービタ）
表示ソース１０６ａ、１０６ｂおよび１０６ｃと表示装置１０２のプレゼンテーション面１０４との間にインテリジェントインタフェースが配置される。図１０のグラフィックスアービタ４００によって表されるこのインタフェースは、表示環境全体についての知識を集め、その知識を表示ソースに提供して、表示ソースがより効率的にタスクを実行できるようにする。グラフィックスアービタの知識収集プロセスの例として、図１０のビデオ情報フローは、図４のそれとは異なる。メモリ面セット１１２ａ、１１２ｂおよび１１２ｃは、図４の場合とは違って表示ソースの内部ではなく表示ソースの外部に示されている。それぞれの表示ソースがフレームをプレゼンテーションバックバッファ１０８に転送する代わりに、グラフィックスアービタがフレームの転送を制御し、必要に応じてビデオフォーマットを変換する。その情報アクセスおよび制御によって、グラフィックスアービタは、コンピューティング装置１００のユーザに対して継ぎ目なく統合された表示を生み出すため、対話している複数の表示ソースの活動を調整する。グラフィックスアービタの動作の詳細およびそれによって可能になるグラフィックス効果がこのセクションの主題である。
【００２９】
本出願は、新しいグラフィックスアービタ４００が提供する発明の機能に集中するが、伝統的なグラフィックスシステムが提供する機能をグラフィックスアービタの機能から除外しようとするものではない。例えば、伝統的なグラフィックスシステムはたいてい、ビデオ復号およびビデオディジタル化機能を提供する。本発明のグラフィックスアービタ４００は、その新しい機能とともにこのような機能を提供することもできる。
【００３０】
図１１は、図１０のビデオ情報のフローにコマンドおよび制御情報のフローを追加したものである。双方向フロー５００の一方向は、ＶＳＹＮＣ指示などの表示装置１０２からの表示情報へのグラフィックスアービタ４００のアクセスを表す。フロー５００のもう他方の方向は、グラフィックスアービタによる、プレゼンテーション面セット１１０のフリッピングの制御を表す。双方向フロー５０２ａ、５０２ｂおよび５０２ｃは、一方は、グラフィックスアービタによる表示ソース１０６ａ、１０６ｂおよび１０６ｃへの供給であり、各々は表示タイミング、隠蔽情報などの表示環境情報である。他方は、表示ソースからグラフィックスアービタへの供給であり、複数の表示ソースからの出力を結合するときにグラフィックスアービタが使用することができる画素ごとアルファ情報（alpha information）などの情報である。
【００３１】
このインテリジェントインタフェース法は、多数のグラフィックス機能を可能にする。これらの機能の議論を組み立てるため、議論は、グラフィックスアービタ４００（図１２）および表示ソース１０６ａ、１０６ｂおよび１０６ｃ（図１３）により使用可能な例示的な動作方法を説明することから開始する。これらの方法の流れ図を概説した後に、可能な機能を詳細に検討する。
【００３２】
図１２の流れ図では、ステップ６００で、グラフィックスアービタ４００は、プレゼンテーション面セット１１０を初期化し、表示装置１０２が表示フレームを受け取る準備をするのに必要なその他のことを実施する。ステップ６０２では、グラフィックスアービタが、表示ソース１０６ａ、１０６ｂおよび１０６ｃのメモリ面セット１１２ａ、１１２ｂおよび１１２ｃのレディバッファ１１６から次の表示フレームを読み取り、プレゼンテーションバックバッファ１０８に次の表示フレームを構成する。この構成をグラフィックスアービタの制御下におくことにより、この方法は、それぞれの表示ソースがその表示情報をプレゼンテーションバックバッファに個別に転送するときに、容易には達成できない単一の提示を生み出す。構成が完了するとグラフィックスアービタは、プレゼンテーション面セット１１０中のバッファをフリップし、プレゼンテーションバックバッファ内に構成されたフレームを表示装置１０２が使用できるようにする。次のリフレッシュサイクルの間に、表示装置１０２は、新しい一次プレゼンテーション面１０４から新しいフレームを読み取り、それを表示する。
【００３３】
インテリジェントインタフェース法のより重要な１つの態様は、表示装置１０２のＶＳＹＮＣ指示を、グラフィックスシステム全体の多くの作業を駆動するクロックとして使用することである。このシステム全体にわたるクロックの効果は、この方法によって可能になる特定の機能の議論の中で詳細に検討する。ステップ６０４では、表示フレームの構成の次のラウンドを開始する前に、グラフィックスアービタ４００がＶＳＹＮＣを待つ。
【００３４】
制御フロー５０２ａ、５０２ｂおよび５０２ｃを使用して、グラフィックスアービタ４００は、ステップ６０６において、構成されたフレームを表示装置１０２に提示した時刻を、関連するクライアント（例えば表示ソース１０６ｂ）に通知する。この時刻は、プレゼンテーション面セット１１０をフリップするグラフィックスアービタから直接に来るので、図６および７の方法の表示ソースが提供するタイマよりも正確である。
【００３５】
ステップ６０８で、ＶＳＹＮＣ指示が情報フロー５００を介してグラフィックスアービタ４００に到着すると、グラフィックスアービタは、ブロックされたクライアントのブロックを解除し、表示する次のフレームを構成するのに必要な作業を実行できるようにする。（図１３に関して後に論じるように、クライアントは、表示フレームの構成を完了した後にそれ自体をブロックすることができる。）ステップ６１０で、グラフィックスアービタは、次のフレームが表示される推定時刻をクライアントに知らせる。表示ハードウェアが生成したＶＳＹＮＣに基づくので、この推定は、クライアント自体が生成したものよりもずっと正確である。
【００３６】
グラフィックスアービタ４００がステップ６０８、６１０、６１２と進む間に、表示ソース１０６ａ、１０６ｂおよび１０６ｃは、次のフレームを構成し、それぞれのメモリ面セット１１２ａ、１１２ｂおよび１１２ｃのレディバッファ１１６にフレームを移動する。しかし、いくつかの表示ソースでは、その表示出力が、他の表示ソースからの表示出力によって表示装置１０２に部分的または完全に隠蔽されるために、完全なフレームを準備する必要がない場合がある。グラフィックスアービタ４００は、ステップ６１２において、そのシステム全体の知識から、表示装置に実際に表示されるもののリストを作成する。グラフィックスアービタ４００は、この情報を表示ソースに提供し、表示ソースは、その出力の隠蔽された部分の情報を展開することで、資源を浪費しなくて済む。グラフィックスアービタ自体は、再びステップ６０２に戻り、プレゼンテーションバックバッファ１０８に次の表示フレームを構成するために、レディバッファから非隠蔽情報だけを読み取るときに、この隠蔽情報を使用して、システム資源、特にビデオメモリ帯域幅を保護する。
【００３７】
隠蔽情報を使用してシステム資源を節約するのと同様の方法で、グラフィックスアービタ４００は、あるフレームから次のフレームへ移ったときに表示の一部分が変化しなかったことを検出することができる。グラフィックスアービタは、現在表示されているフレームを、表示ソースのレディバッファ１１６内の情報と比較する。プレゼンテーション面セット１１０のフリッピングが無効でなければ、すなわち、そのバッファがプレゼンテーションバックバッファ１０８となったときに一次プレゼンテーション面１０４の表示情報が維持される場合には、グラフィックスアービタは、ステップ６０２で、直前のフレームから変更されたプレゼンテーションバックバッファの部分だけを書き込めばよい。何も変化しない極端なケースでは、グラフィックスアービタは、ステップ６０２において２つのうち１つを実行する。第１の選択肢では、グラフィックスアービタは何も実行しない。プレゼンテーション面セットはフリップされず、表示装置１０２は、変更のない同じ一次プレゼンテーション面から読み取り続ける。第２の選択肢では、グラフィックスアービタが、プレゼンテーションバックバッファの情報を変更しないが、フリップは通常通り実行される。フリッピングが無効である表示システムでは、これらの選択肢はどちらも使用できないことに留意されたい。この場合、グラフィックスアービタは、空のプレゼンテーションバックバッファを用いてステップ６０２を開始し、変更の有無に関わらず、プレゼンテーションバックバッファを完全に満たさなければならない。表示ソースがその出力を変更するか、またはステップ６１２で集めた隠蔽情報が変化することによって、表示の部分は変化する。
【００３８】
グラフィックスアービタ４００が図１２の方法を実行しているのと同時に、表示ソース１０６ａ、１０６ｂおよび１０６ｃは、自身の動作方法を実行している。これらの方法は、表示ソースごとに大きく異なる。グラフィックスアービタの技法は、グラフィックスアービタが提供する情報を無視する従来技術の表示ソース（図６〜８に示した表示ソースなど）を含む全てのタイプの表示ソースとともに動作するが、表示ソースがこの情報を完全に使用するときに、その利点は増大する。図１３に、可能ないくつかのオプションおよびバリエーションを有する例示的な表示ソースの方法を示す。ステップ７００で、表示ソース１０６ａは、そのメモリ面セット１１２ａを作成し（使用する場合）、さらに、表示フレームストリームの生成を開始するのに必要なその他のことを実行する。
【００３９】
ステップ７０２において表示ソース１０６ａは、表示装置１０２が次のフレームを提示する推定時刻を受け取る。これは、図１２のステップ６１０でグラフィックスアービタ４００が送った時刻であり、表示装置のＶＳＹＮＣ指示に基づく。グラフィックスアービタがステップ６１２で隠蔽情報を提供する場合、表示ソースは、ステップ７０２でその情報も受け取る。いくつかの表示ソース、特に古い表示ソースは、隠蔽情報を無視する。他の表示ソースは、ステップ７０４でこの情報を使用して、その出力の全てまたは一部が隠蔽されているかどうかを見る。その出力が完全に隠蔽されている場合には、表示ソースは、フレームを生成する必要はなく、ステップ７０２に戻って、次のフレームの表示時刻の推定の受信を待つ。
【００４０】
表示ソース１０６ａの少なくともいくつかの出力が可視ならば（または表示ソースが隠蔽情報を無視する場合には）、ステップ７０６において表示ソースは、フレームまたは少なくともフレームの可視部分を構成する。フレームの可視部分だけを描けばよいように、さまざまな表示ソースがさまざまな技法を使用して隠蔽情報を組み込む。例えば、Ｚバッファリングを使用して、その表示のどの項目が他のどの項目の前にあるかを指示する３次元（３Ｄ）表示ソースは、そのＺバッファ値を以下の方法で操作することができる。表示ソースは、表示の隠蔽された部分のＺバッファ値を、それらの部分が他の項目の後ろにある項目であるかのように初期化する。それらの部分に対するＺテストは失敗する。これらの表示ソースが、多くのグラフィックスアービタ４００が提供する３Ｄハードウェアを使用してフレームを構成するとき、ハードウェアは、隠蔽された部分で高速に動作する。これは、ハードウェアが、Ｚテストに失敗した部分に対するテクスチャ値またはアルファブレンドのカラーバッファ値（color buffer value）を取り出す必要がないためである。
【００４１】
ステップ７０６で構成されたフレームは、ステップ７０２で受け取った推定表示時刻に一致する。多くの表示ソースは、例えば推定された表示時刻をそのシーンの３Ｄモデルへの入力値として使用することによって、連続する時刻値の範囲で任意の時刻に対応するフレームを与えることができる。３Ｄモデルは、推定表示時刻に基づいて角度、位置、方向、色および他の変量を補間する。３Ｄモデルは、シーンの出現と推定表示時刻との間の正確な対応が得られるようにそのシーンを与える。
【００４２】
ステップ７０２および７０６では、表示ソース１０６ａのフレーム構成速度を表示装置１０２のリフレッシュ速度と同期させることに留意されたい。図１２のステップ６１０でグラフィックスアービタ４００が１リフレッシュサイクルごとに送る推定表示時刻をステップ７０２で待つことによって、提示された全てのフレームに対して（それが完全に隠蔽されていない限り）１つのフレームが構成される。決して表示されることのない余分のフレームは生成されず、次のフレームを送達する許可を求めて表示装置をポーリングする際の資源の浪費は生じない。この同期はさらに、表示システムが短い待ち時間を提供することに表示ソースが依存することを排除する。（比較のため図６の方法を参照されたい。）ステップ７０８で、構成されたフレームは、メモリ面セット１１２ａのレディバッファ１１６中におかれ、グラフィックスアービタへと放出されて、グラフィックスアービタの構成ステップ６０２で読み取られる。
【００４３】
任意に、表示ソース１０６ａは、ステップ７１０において、ステップ７０６で表示ソースが構成したフレームの実際の表示時刻を受け取る。この時刻は、プレゼンテーション面セット１１０のバッファのフリッピングに基づき、グラフィックスアービタ４００によってステップ６０６で送られたものである。表示ソース１０６ａは、ステップ７１２において、この時刻をチェックして、フレームが適当な時刻に提示されたどうかを見る。フレームが適当な時刻に提示されなかった場合には、表示ソース１０６ａは、フレームを構成するのに時間をとりすぎ、ステップ７０２で受け取った推定表示時刻にフレームの準備ができていなかったことになる。表示ソース１０６ａは、現在の表示環境に対して計算上複雑すぎるフレームを構成しようとしたか、または他の表示ソースが、コンピューティング装置１００の資源を多く要求しすぎた可能性がある。いずれにせよ、手続き的に柔軟な表示ソースは、ステップ７１４において、表示リフレッシュ速度に遅れないよう補正処置を講じる。例えば、表示ソース１０６ａは、いくつかのフレームに対する構成の品質を下げる。表示リフレッシュ速度に遅れないようにするためにフレームの品質を知的に低下させるこの能力は、グラフィックスアービタ４００によって集められ、システム全体のクロックとしてのＶＳＹＮＣの使用において反映されたシステム全体の知識の利点であると言える。
【００４４】
表示ソース１０６ａがその表示タスクをまだ完了していない場合には、図１３のステップ７１６でステップ７０２に戻り、次のフレームの推定表示時刻を待つ。表示タスクが完了すると、ステップ７１８で表示ソースは終了し、クリーンアップする。
【００４５】
いくつかの実施形態では、（ステップ７０４または７１６から）ステップ７０２へ戻る前に、表示ソース１０６ａが自身の動作をブロックする。これは、コンピューティング装置１００の他のアプリケーションが使用するための資源を解放し、決して表示することのない余分のフレームを生成することによって、または次のフレームを転送する許可のためのポーリングによって、表示ソースが資源を浪費しないことを保証する。グラフィックスアービタ４００は、図１２のステップ６０８で表示ソースのブロックを解除し、表示ソースがステップ７０２で次のフレームの構成を開始できるようにする。自身のブロックを解除する制御によって、グラフィックスアービタは、図８の方法の推定時刻ベースの待ちよりも多くの資源を確実に節約し、フレームスキップの問題を回避する。
【００４６】
（４．インテリジェントインタフェースによって可能になるいくつかの機能の拡張された議論）
（Ａ．フォーマット変換）
表示ソース１０６ａ、１０６ｂおよび１０６ｃのメモリ面セット１１２ａ、１１２ｂおよび１１２ｃにグラフィックスアービタ４００がアクセスすることによって、レディバッファ１１６の表示フォーマットから表示装置１０２に適合したフォーマットへの変換が可能になる。例えば、ビデオ復号標準は、たいていＹＵＶ色空間に基づくが、コンピューティング装置１００用に開発された３Ｄモデルは、一般にＲＧＢ色空間を使用する。さらに、いくつかの３Ｄモデルは、物理的に線形の色（ｓｃＲＧＢ標準）を使用し、他の３Ｄモデルは、知覚的に線形の色（ｓＲＧＢ標準）を使用する。他の例として、表示装置が提供する解像度と一致させるために、１つの表示解像度に対して設計された出力を「引き伸ばす」必要がある場合がある。グラフィックスアービタ４００は、フレーム速度間の変換を実施する必要があり、例えば、ＮＴＳＣの５９．９４Ｈｚ固有速度のビデオデコーダによって生成されたフレームを受け入れ、表示装置の７２Ｈｚ画面になめらかな表示を生成するためにフレームを補間する。変換の他の例として、その予想される表示時刻に対して表示ソースがフレームを与えることを可能にする上述した機構は、任意に、高度なデインタレース（deinterlacing）およびフレーム補間をビデオストリームに適用することも可能にする。これらの全ての標準とバリエーションとは、１台のコンピューティング装置上で同時に使用することができる。グラフィックスアービタ４００は、プレゼンテーションバックバッファ１０８に次の表示フレームを構成するとき（図１２のステップ６０２）に、それらを全て変換する。この変換スキームは、表示フォーマットがそのアプリケーションに対して意味をなすものに対して、各表示ソースを最適化することを可能にし、その表示環境が変化しても変更する必要がない。
【００４７】
（Ｂ．アプリケーション変換）
フォーマット間の変換に加えて、グラフィックスアービタ４００は、グラフィックス変換の効果を表示ソース１０６ａの出力に、おそらくは表示ソースによる介入なしに適用することができる。これらの効果には例えば、照明（lighting）、３Ｄテクスチャマップの適用、透視変換などが含まれる。表示ソースは、その表示フレームとともに画素ごとのアルファ情報を提供することができる。グラフィックスアービタは、２つ以上の表示ソースからのアルファブレンド出力にその情報を使用して、例えば任意の形状のオーバレイを作成することができる。
【００４８】
表示ソース１０６ａが生成しグラフィックスアービタ４００が読み取る出力については、ビットマップ、表示フレームなどのイメージデータに関して先に論じた。しかし他のデータフォーマットも可能である。グラフィックスアービタはさらに、表示ソースが生成した一組の描画命令を入力として受け入れる。グラフィックスアービタは、これらの命令に従って、プレゼンテーション面セット１１０に描画する。描画命令セットは、表示ソースのオプションで固定し、更新することができ、または特定のプレゼンテーション時刻に結びつけることができる。描画命令の処理では、グラフィックスアービタは、表示ソースの出力を含むために中間のイメージバッファを使用する必要はないが、他の資源を使用して、表示ソースの出力を表示出力に組み込む（例えばテクスチャマップ、頂点、命令およびグラフィックスハードウェアへの他の入力）。
【００４９】
注意深く管理しないと、描画命令を生成する表示ソース１０６ａは隠蔽に不利な影響を及ぼす。その出力領域が境界を有しない場合、より高い優先順位の（出力が前である）表示ソースの描画命令は、グラフィックスアービタ４００に指示して、より低い優先順位の（出力が後ろである）表示ソースが所有する領域に描きこみ、その領域を隠蔽させる。任意の描画命令の柔軟性とそれら命令からの出力と接する要件とを一致させる１つの方法は、グラフィックスアービタが、「シザーレクタングル（scissor rectangle）」と呼ばれるグラフィックスハードウェア機能を使用する方法である。グラフィックスハードウェアは、描画命令を実行するときに、その出力をシザーレクタングルに切り抜く。たいてい、シザーレクタングルは、出力面の外接長方形と同じであり、描画命令出力を出力面に切り取る。グラフィックスアービタは、表示ソースから描画命令を実行する前に、シザーレクタングルを指定することができる。これによって、それらの描画命令によって生成された出力が、指定された外接長方形の外側には見出さないことが保証される。グラフィックスアービタはこの保証を使用して、描画命令を生成した表示ソースの前後の表示ソースに対して隠蔽情報を更新する。Ｚバッファまたはステンシルバッファ情報を使用する方法など、描画命令を生成する表示ソースの可視性を追跡する他の可能な方法がある。可視長方形に基づく隠蔽スキームは、描画命令を処理するときにシザーレクタングルを使用するように簡単に拡張可能である。
【００５０】
図１４に、アプリケーションの変換を実行するのがグラフィックスアービタ４００でなくてもよいことを示す。この図で、「実行可能変換（transformation executable）」８００は、グラフィックスアービタ４００から表示システム情報８０２を受け取り、この情報を使用して、表示ソース１０６ａの出力または２以上の表示ソースからの出力の組合せの変換を実行する（フロー８０４ａおよび８０４ｂによって表されている）。実行可能変換自体は、おそらく他の表示ソースからの表示情報をそれ自身の出力と統合する他の表示ソースであることができる。さらに、実行可能変換は例えば、それ自身によって表示出力を生成しないユーザアプリケーションと、ユーザのワークフローのクリティカルステージに達したときに表示ソースの出力をハイライトするオペレーティングシステムを含む。
【００５１】
その入力が他の表示ソースからの出力を含む表示ソースを、その出力に依存する表示ソースの「下流」にあるという。例えば、あるゲームはリビングルームの３Ｄイメージを与える。リビングルームは、テレビジョン画面を含む。テレビジョン画面のイメージは、「上流」の表示ソース（おそらくテレビジョンチューナ）によって生成され、下流の３Ｄゲームの表示ソースに入力として供給される。下流の表示ソースは、テレビジョンイメージをリビングルームの演出に組み込む。この用語が含意するとおり、従属する表示ソースのチェーンを構築することができ、１または複数の上流表示ソースが１または複数の下流表示ソースに対して出力を生成する。最後の下流表示ソースからの出力は、グラフィックスアービタ４００によってプレゼンテーション面セット１１０に組み込まれる。上流表示ソースの表示出力を処理するのに下流表示ソースはある時間を必要とするので、グラフィックスアービタは、上流の表示ソースのタイミング情報をオフセットさせるのが適当と考える。例えば、上流の表示情報を組み込むのに下流表示ソースが１フレーム時間を必要とする場合、上流の表示ソースに、１フレーム時間だけ後にオフセットさせた推定フレーム表示時刻を与えることができる（図１２のステップ６１０および図１３のステップ７０２を参照されたい）。次いで、上流の表示ソースは、フレームが実際に表示装置１０２に現れる時刻に対して、適当な表示フレームを生成する。これによって例えば、ビデオストリームとオーディオストリームの同期が可能になる。
【００５２】
隠蔽情報を、チェーンの下流表示ソースからその上流の表示ソースに渡すことができる。例えば、下流の表示が完全に隠蔽された場合、上流の表示ソースは、表示装置１０２上で決して表示されないであろう出力を生成するのに時間を浪費する必要はない。
【００５３】
（Ｃ．オペレーショナルプライオリティスキーム）
グラフィックスアービタ４００の制御下にあるいくつかのサービスは、グラフィックスアービタ４００がプレゼンテーションバックバッファ１０８に次の表示フレームを構成するときにグラフィックスアービタ４００によって使用され、表示ソース１０６ａ、１０６ｂおよび１０６ｃがそれらのメモリ面セット１１２に表示フレームを構成するときに表示ソース１０６ａ、１０６ｂおよび１０６ｃによって使用される。これらのサービスの多くが、典型的には、一度に１つのタスクしか実行できないグラフィックスハードウェアによって提供されるため、競合するユーザの間をプライオリティスキームが仲裁して、表示フレームが適当な時刻に構成されることを保証する。タスクにはプライオリティが割り当てられる。プレゼンテーションバックバッファ内に次の表示フレームを構成することの優先順位は高く、個々の表示ソースの作業は通常のプライオリティである。通常のプライオリティの操作は、待機している高いプライオリティタスクがない場合に限って進行する。グラフィックスアービタが図１２のステップ６０８でＶＳＹＮＣを受け取ると、新しいフレームが構成されるまで、通常のプライオリティ操作は切り替えられる。通常のプライオリティの操作が比較的に自律的なハードウェアコンポーネントを使用しているときには、この切り替え（pre-emption）に例外がある。この場合には、高いプライオリティ操作を遅延させることなく通常のプライオリティのオペレーションを進めることができる。高にプライオリティのコマンドの実行中に自律的なハードウェアコンポーネントを動作させる唯一の実際的な効果は、使用可能なビデオメモリ帯域幅がわずかな低減することである。
【００５４】
グラフィックスハードウェアサービスのリクエストを待ち行列に入れることによって、切り替えをソフトウェアで実現することができる。次の表示フレームがプレゼンテーションバックバッファ１０８内で構成されるまで、高いプライオリティのリクエストだけが提出される。次のフレームを構成するコマンドストリームをセットアップし、グラフィックスアービタ４００を前もって準備して、ＶＳＹＮＣの受信時にそれを実行することができる。
【００５５】
プライオリティスキームのハードウェア実施態様では、よりロバストにすることができる。グラフィックスハードウェアをセットアップして、所与の事象が起こるときに、それ自体を切り替えることができる。例えば、ＶＳＹＮＣの受取り時に、ハードウェアは実行中のオペレーションを切り替え、ＶＳＹＮＣを処理し（すなわちプレゼンテーションバックバッファ１０８を構成し、プレゼンテーション面セット１１０をフリップし）、もとに戻って実行していたオペレーションを完了させる。
【００５６】
（Ｄ．走査線タイミング情報の使用）
ＶＳＹＮＣを、非常に有用なシステム全体クロックであるように上では示したが、使用可能なクロックはこれだけではない。多くの表示装置１０２はさらに、各水平走査線の表示を完了したときを指示する。グラフィックスアービタ４００は、図１１の情報フロー５００を介してこの情報にアクセスし、それを使用して、より正確なタイマ情報を提供する。表示ソース１０６ａ、１０６ｂおよび１０６ｃには、どの走査線が表示されたかに応じてさまざまな推定表示時刻が与えられる。
【００５７】
走査線「クロック」を使用して、（プレゼンテーションバックバッファ１０８ではなく）一次プレゼンテーション面１０４に直接表示フレームを、表示の裂け目（tear）を引き起こすことなく構成する。現在のフレームとは異なる次の表示フレームの最下部が現在の走査線位置よりも上にある場合、変更は、一次プレゼンテーション面に直接に安全に書き込まれる。ただし、この変更は短い待ち時間で書き込まれなければならない。この方法は、プレゼンテーション面セット１１０がフリップされないのでいくらかの処理時間を節約し、表示装置１０２のリフレッシュ速度で表示フレームを構成するためにグラフィックスアービタ４００が苦闘しているときの合理的な戦略となりうる。切り替え可能なグラフィックスエンジンは、適当な時刻に書込みを完了するより良好な機会を有する。
【００５８】
（５．一次面の拡張）
複数の表示面を同時に使用して表示装置１０２を駆動することができる。図１５にその構成を示し、図１６に例示的な方法を示す。ステップ１０００で、表示ンタフェースドライバ９００（通常、ハードウェアとして実現される）は、プレゼンテーション面セット１１０およびオーバレイ面セット９０２を初期化する。ステップ１００２では、表示インタフェースドライバが、一次プレゼンテーション面１０４およびオーバレイ一次面９０４から表示情報を読み取る。ステップ１００４で、これらの２つのソースからの表示情報を結合する。結合された情報は、次の表示フレームとなり、これがステップ１００６で表示装置に送達される。プレゼンテーション面セットとオーバレイ面セットのバッファがフリップされ、ループはステップ１００２に戻る。
【００５９】
この手順の要点は、ステップ１００４の結合である。システムの要求に応じて多くのタイプの結合が可能である。一例として、表示ンタフェースドライバ９００は、一次プレゼンテーション面１０４の画素をカラーキーと比較することができる。カラーキーと一致する画素については、オーバレイ一次面９０４から対応する画素が読み取られ、表示装置１０２に送られる。カラーキーと一致しない画素は、変更されずに表示装置に送られる。これは、「デスティネーションカラーキードオーバレイ（destination color-keyed overlay）」と呼ばれる。他の形態の結合では、アルファ値が、一次プレゼンテーション面の各画素の不透明度を指定する。アルファ０の画素については、一次プレゼンテーション面の表示情報が専ら使用される。アルファ２５５の画素では、オーバレイ一次面９０４からの表示情報が専ら使用される。０と２５５の間のアルファを有する画素では、２つの面の表示情報を補間して表示する値を形成する。第３の可能な結合は、Ｚオーダを、表示情報の順位を定義する各画素に関連づける。
【００６０】
図１５は、プレゼンテーションバックバッファ１０８およびオーバレイバックバッファ９０６に情報を提供するグラフィックスアービタ４００を示す。グラフィックスアービタ４００は、先に第３章および第４章で説明したものであることが好ましい。しかし、図１５の拡張された一次面機構は、従来技術のグラフィックスアービタなどの機能的に劣るグラフィックスアービタとともに使用したときにも利点を提供する。任意のタイプのグラフィックスアービタとともに機能するので、次の表示フレームのこの「バックエンド構成」は、表示プロセスの効率を相当に増大させる。
【００６１】
（６．グラフィックスアービタとの例示的インタフェース）
図１７に、アプリケーションインタフェース１１００を使用してグラフィックスアービタ４００と通信する表示ソース１０６ａ、１０６ｂおよび１０６ｃを示す。この章では、アプリケーションインタフェースの実施態様の詳細を提示する。このセクションは、請求の発明の一実施形態を単に例示するものであって、発明の範囲を限定するものではないことに留意されたい。
【００６２】
例示的なアプリケーションインタフェース１１００は、詳細については後に示す多数のデータ構造および機能を備える。図１１のアプリケーションインタフェースに示した枠は、サポートされる機能のカテゴリである。ビジュアルライフタイムマネージメント（１１０２）は、グラフィック表示要素（簡潔にするためしばしば単に「ビジュアル」と呼ぶ）の作成および破壊、ならびにビジュアルの損失および修復の管理を取り扱う。ビジュアルリストＺオーダマネージメント（１１０４）は、ビジュアルのリストにあるビジュアルのｚオーダを取り扱う。これは、ビジュアルリストの特定の位置にビジュアルを挿入すること、ビジュアルリストからビジュアルを削除することなどを含む。ビジュアルスペーシャルコントロール（１１０６）は、ビジュアルの位置決め、縮尺および回転を取り扱う。ビジュアルブレンディングコントロール（１１０８）は、ビジュアルのアルファタイプ（不透明、一定または画素ごと）およびブレンディングモードを指定することによるビジュアルのブレンディングを取り扱う。ビジュアルフレームマネージメント（１１１０）は、表示ソースが、特定のビジュアルの新しいフレームを開始することを要求し、特定のフレームの演出の完了を要求するのに使用される。ビジュアルプレゼンテーションタイムフィードバック（１１１２）は、ビジュアルの予想表示時刻および実際の表示時刻を問い合わせる。ビジュアルレンダリングコントロール（１１１４）は、ビジュアルのレンダリングを制御する。これには、装置をビジュアルに結び付けること、現在結びつけられている装置を得ることなどが含まれる。フィードバック／バジェティング（１１１６）は、フィードバック情報をクライアントに報告する。このフィードバックには、ビジュアルリストへのビジュアルの追加、ビジュアルリストからのビジュアルの削除などの編集操作に予想されるグラフィックスハードウェア（ＧＰＵ）およびメモリに対する影響を含み、ＧＰＵ構成負荷、ビデオメモリ負荷、フレームタイミングなどの尺度（metrics）が含まれる。ヒットテスティング（１１１８）は、ビジュアルの単純なヒットテスティングを提供する。
【００６３】
（Ａ．データ型）
（Ａ．１  HVISUAL）
HVISUALは、ビジュアルを参照するハンドルである。これは、CECreateDeviceVisual、CECreateStaticVisualおよびCECreateISVisualによって戻され、CESetInFrontなどのビジュアルを参照する全ての関数に渡される。
【００６４】
【数１】
0003863796.tif 000002
【００６５】
（Ｂ．データ構造）
（Ｂ．１  CECREATEDEVICEVISUAL）
この構造は、CECreateDeviceVisualエントリポイントに渡され、Direct3D装置で与えることができる面のビジュアルを作成する。
【００６６】
【数２】
0003863796.tif 000003
【００６７】
CECREATEDEVICEVISUALのビジュアル作成フラグは以下の通りである。
【００６８】
【数３】
0003863796.tif 000004
【００６９】
【数４】
0003863796.tif 000005
【００７０】
（Ｂ．２  CECREATESTATICVISUAL）
この構造は、CECreateStaticVisualエントリポイントに渡され、面ビジュアルを作成する。
【００７１】
【数５】
0003863796.tif 000006
【００７２】
CECREATESTATICVISUALのビジュアル作成フラグは以下の通りである。
【００７３】
【数６】
0003863796.tif 000007
【００７４】
【数７】
0003863796.tif 000008
【００７５】
（Ｂ．３  CECREATEISVISUAL）
この構造は、CECreateISVisualエントリポイントに渡され、面ビジュアルを作成する。
【００７６】
【数８】
0003863796.tif 000009
【００７７】
CECREATEISVISUALのビジュアル作成フラグは以下の通りである。
【００７８】
【数９】
0003863796.tif 000010
【００７９】
（Ｂ．４  アルファ情報）
この構造は、ビジュアルをデスクトップに組み込むときに使用し、ビジュアルのソースイメージ中の画素ごとアルファを用いてビジュアルアルファを調節する一定のアルファ値を指定する。
【００８０】
【数１０】
0003863796.tif 000011
【００８１】
（Ｃ．関数呼出し）
（Ｃ．１  ビジュアルライフタイムマネージメント（図１７の１１０２））
さまざまなタイプのビジュアル、すなわち装置ビジュアル、静止ビジュアルおよび命令ストリームビジュアルを作成するためのいくつかのエントリポイントがある。
【００８２】
（Ｃ．１．ａ  CECreateDeviceVisual）
CECreateDeviceVisualは、１または複数の面およびそれらの面を与えるためのDirect3D装置を用いてビジュアルを作成する。ほとんどの場合、この呼出しによって、新しいDirect3D装置が生成され、このビジュアルに関連づけられる。しかし、他の装置ビジュアルを指定することも可能であり、その場合には、新しく作成されたビジュアルが指定されたビジュアルの装置を共用する。プロセスを横断して装置を共用することはできないので、共用される装置は、新しいビジュアルと同じプロセスによって所有されなければならない。
【００８３】
いくつかの作成フラグを使用して、例えばビジュアルを引き伸ばし、変換を適用し、またはビジュアルを一定のアルファとブレンドするかどうかなど、どのオペレーションがこのビジュアルに必要であるかを示す。グラフィックスアービタ４００は、いくつかの係数に基づいて適当な機構を選択するので、これらのフラグは、特定の構成オペレーション（ｂｌｔ対テクスチャリング）を強制するのに使用されない。これらのフラグは、特定の面の型では許されない可能性があるオペレーションについて呼び出し元にフィードバックを提供するのに使用される。例えば、ある特定のアダプタは、あるフォーマットを引き伸ばすことができない。指定されたオペレーションがその面の型に対してサポートされていない場合、エラーが戻される。CECreateDeviceVisualは、この呼出しが戻される時刻までに実際の面メモリまたは装置が作成されることを保証しない。グラフィックスアービタは、後のある時刻に面メモリおよび装置を作成することを選択することができる。
【００８４】
【数１１】
0003863796.tif 000012
【００８５】
（Ｃ．１．ｂ  CECreateStaticVisiual）
CECreateStaticVisualは、１または複数の面を有するビジュアルを作成する。その内容はスタティックであり、作成時刻に指定される。
【００８６】
【数１２】
0003863796.tif 000013
【００８７】
（Ｃ．１．ｃ  CECreateISVisuial）
CECreateISVisualは、命令ストリームビジュアルを作成する。この作成呼出しは、描画命令を保持するのに望ましいバッファサイズを指定する。
【００８８】
【数１３】
0003863796.tif 000014
【００８９】
（Ｃ．１．ｄ  CECreateRefVisiual）
CECreateRefVisualは、既存のビジュアルを参照する新しいビジュアルを作成し、そのビジュアルの下にある面または命令ストリームを共用する。新しいビジュアルは、ビジュアルの属性セット（長方形、変換、アルファなど）を維持し、構成リストに自身のｚオーダを有するが、以下にあるイメージデータまたは描画命令を共用する。
【００９０】
【数１４】
0003863796.tif 000015
【００９１】
（Ｃ．１．ｅ  CEDestroyVisual）
CEDestroyVisualは、ビジュアルを破壊し、ビジュアルに関連づけられた資源を解放する。
【００９２】
【数１５】
0003863796.tif 000016
【００９３】
（Ｃ．２  ビジュアルリストＺオーダマネージメント（図１１の１１０４））
CESetVisualOrderは、ビジュアルのｚオーダをセットする。この呼出しは、構成リストからのビジュアルの追加または削除、およびｚオーダ中でのビジュアルの絶対的な移動または他のビジュアルに対する相対的な移動を含むいくつかの関連機能を実行することができる。
【００９４】
【数１６】
0003863796.tif 000017
【００９５】
呼出しで指定されたフラグがどのアクションをとるかを決定する。フラグは以下の通りである。
・CESVO_ADDVISUALは、指定された構成リストにビジュアルを追加する。ビジュアルは、その既存のリストから削除される（リストがある場合）。挿入された要素のｚオーダは、呼出しに対する他のパラメータによって決定される。
・CESVO_REMOVEVISUALは、その構成リストからビジュアルを削除する（リストがある場合）。構成リストは指定されない。このフラグが指定された場合、hVisual以外のパラメータおよび他のフラグは無視される。
・CESVO_BRINGTOFRONTは、その構成リストの先頭にビジュアルを移動させる。ビジュアルは既に構成リストのメンバであるか、またはこの呼出しによって構成リストに追加されなければならない。
・CESVO_SENDTOBACKは、その構成リストの最後部にビジュアルを移動させる。ビジュアルは既に構成リストのメンバであるか、またはこの呼出しによって構成リストに追加されなければならない。
・ESVO_INFRONTは、ビジュアルhRefVisualの先頭にビジュアルを移動させる。この２つのビジュアルは同じ構成リストのメンバでなければならない（または、この呼出しによってhRefVisualの構成リストにhVisualを追加しなければならない）。
・ESVO_BEHINDは、ビジュアルhRefVisualの後ろにビジュアルを移動させる。この２つのビジュアルは同じ構成リストのメンバでなければならない（または、この呼出しによってhRefVisualの構成リストにhVisualを追加しなければならない）。
【００９６】
（Ｃ．３  ビジュアルスペーシャルコントロール（図１７の１１０６））ビジュアルは、２つの方法のうちの一方、すなわち単純な画面整列された長方形のコピー（おそらく引伸しを含む）、または変換行列によって定義されるより複雑な変換によって、出力を構成する空間に配置することができる。所与のビジュアルは、任意の一時刻にこれらの機構のうちの一方だけを使用するが、長方形ベースの位置決めと変換ベースの位置決めとの間で切り替えることができる。
【００９７】
ビジュアルの位置決めの２つのモードのどちらを使用するかは、最も最近にセットされたパラメータによって決定される。例えば、CESetTransformが長方形ベースの呼出しよりも最近に呼び出された場合には、変換は、ビジュアルの位置決めに使用される。一方、長方形呼出しがより最近に使用された場合には、変換が使用される。
【００９８】
長方形の位置と変換とを同期させる試みは実施されない。これらは独立した属性である。従って、変換を更新しても別のデスティネーションレクタングル（destination rectangle）にはならない。
【００９９】
（Ｃ．３．ａ  CESetおよびGetSrcRect）
ビジュアルのソースレクタングル、すなわち表示されるビジュアル全体のサブレクタングルをセットし、これを得る。デフォルトでは、ソースレクタングルがフルサイズのビジュアルである。ソースレクタングルは、ISVisualsに対して無視される。ソースの修正は、長方形位置決めモードと変換モードの両方に適用される。
【０１００】
【数１７】
0003863796.tif 000018
【０１０１】
（Ｃ．３．ｂ  CESetおよびGetUL）
長方形の左上隅をセットし、これを得る。現時点で変換が適用されている場合、左上隅のセッティングが、変換モードから長方形位置決めモードに切り替わる。
【０１０２】
【数１８】
0003863796.tif 000019
【０１０３】
（Ｃ．３．ｃ  CESetおよびGetDestRect）
ビジュアルのデスティネーションレクタングルをセットし、これを得る。現時点で変換が適用されている場合、デスティネーションレクタングルのセッティングが、変換モードから長方形位置決めモードに切り替わる。デスティネーションレクタングルは、ISVisualsに対するビューポートを定義する。
【０１０４】
【数１９】
0003863796.tif 000020
【０１０５】
（Ｃ．３．ｄ  CESetおよびGetTransform）
現在の変換をセットし、これを得る。変換のセッティングは、指定されたデスティネーションレクタングルに上書きする（それがある場合）。NULL変換が指定されている場合、構成空間中にビジュアルを位置決めするためビジュアルはデスティネーションレクタングルに戻る。
【０１０６】
【数２０】
0003863796.tif 000021
【０１０７】
（Ｃ．３．ｅ  CESetおよびGetClipRect）
このビジュアルに対する画面整列されたクリッピングレクタングル（clipping rectangle）をセットし、これを得る。
【０１０８】
【数２１】
0003863796.tif 000022
【０１０９】
（Ｃ．４  ビジュアルブレンディングコントロール（図１７の１１０８））
（Ｃ．４．ａ  CESetColorKey）
【０１１０】
【数２２】
0003863796.tif 000023
【０１１１】
（Ｃ．４．ｂ  CESetおよびGetAlphaInfo）
一定のアルファおよび変調をセットし、これを得る。
【０１１２】
【数２３】
0003863796.tif 000024
【０１１３】
（Ｃ．５  ビジュアルプレゼンテーションタイムフィードバック（図１７の１１１２））いくつかのアプリケーションシナリオがこのインフラストラクチャによって収容される。
・単一バッファのアプリケーションは、面を更新したいだけであり、それらの更新をデスクトップ構成に反映させる。これらのアプリケーションは、ティアリングを気にしない。
・二重バッファのアプリケーションは、更新を任意の時刻に使用可能にすることを望み、更新の後、できるだけ早くそれらの更新を組み込む。
・アニメーションアプリケーションは、定期的に、好ましくは表示のリフレッシュで更新することを望み、タイミングおよび隠蔽を知っている。
・ビデオアプリケーションは、フィールドまたはフレームを提出して、タグ付けされたタイミング情報とともに組み込むことを望む。
【０１１４】
バックバッファのデスクトップ構成に貢献する部分だけを描くステップを実施することができるように、いくつかのクライアントは露出した長方形のリストを得ることを希望する。（ここで可能な戦略には、Direct3Dクリッピング平面を管理すること、およびＺテストに決して通らないと保証された値を有する隠蔽された領域でＺバッファを初期化することが含まれる。）
【０１１５】
【数２４】
0003863796.tif 000025
【０１１６】
フラグおよびフラグの意味は以下の通りである。
・CEFRAME_UPDATEは、タイミング情報が必要でないことを示す。アプリケーションは、ビジュアルを更新するとCECloseFrameを呼び出す。
・CEFRAME_VISIBLEINFOは、アプリケーションが、出力中の可視画素に対応する長方形を有する領域の受取りを希望していることを意味する。
・CEFRAME_NOWAITは、このビジュアル上でフレームをすぐに開くことができない場合に、エラーを返すよう求める。このフラグがセットされていない場合、この呼出しは同期しており、フレームが使用可能となるまでリターンしない。
【０１１７】
（Ｃ．５．ｂ  CECloseFrame）
CEOpenFrame呼出しで開始された所与のビジュアルの変更を提出する。CEOpenFrameが再び呼び出されるまで新しいフレームは開かない。
【０１１８】
【数２５】
0003863796.tif 000026
【０１１９】
（Ｃ．５．ｃ  CENextFrame）
所与のビジュアルに対して原始的にフレームを提出し、新しいフレームを作成する。これは、hVisual上のフレームを閉じ、新しいフレームを開くことと同義である。フラグワードパラメータは、CEOpenFrameのそれと全く同じである。CEFRAME_NOWAITがセットされている場合、ビジュアルのペンディングフレームは提出され、新しいフレームをすぐに取得できない場合、関数はエラーを返す。そうでなければ、関数は同期しており、新しいフレームが使用可能となるまでリターンしない。NOWAITが指定され、エラーが返された場合、アプリケーションはCEOpenFrameを呼び出して、新しいフレームを始めなければならない。
【０１２０】
【数２６】
0003863796.tif 000027
【０１２１】
（Ｃ．５．ｄ  CEFRAMEINFO）
【０１２２】
【数２７】
0003863796.tif 000028
【０１２３】
（Ｃ．６  ビジュアルレンダリングコントロール（図１７の１１１４））  CEGetDirect3DDeviceは、このビジュアルを与えるのに使用するDirect3D装置を検索する。この関数は、装置のビジュアルだけに適用され、任意の他のビジュアルの型が呼び出されたときには失敗する。複数のビジュアル間で装置が共用されている場合、この関数は、指定されたビジュアルを装置の現在のターゲットとしてセットする。装置への実際の演出は、CEOpenFrameまたはCENextFrame呼出しとCECloseFrame呼出しの間に限って可能であるが、状態のセッティングは、この文脈の外で起こる可能性がある。
この関数は、装置の参照カウントを増分する。
【０１２４】
【数２８】
0003863796.tif 000029
【０１２５】
（Ｃ．７  ヒットテスティング（図１７の１１１８））
（Ｃ．７．ａ  CESetVisible）
ビジュアルの可視量（visibility count）を操作する。可視量を増分し（bVisibleが真の場合）、または可視量を減分する（bVisibleが偽の場合）。このカウントが０以下である場合、ビジュアルはデスクトップ出力に組み込まれない。pCountがnon-NULLである場合、それは、新しい可視量を戻すのに使用される。
【０１２６】
【数２９】
0003863796.tif 000030
【０１２７】
（Ｃ．７．ｂ  CEHitDetect）
画面空間内の点をとり、その点に対応する一番上のビジュアルのハンドルを戻す。０以下のヒットビジブルカウントを有するビジュアルは考慮されない。所与の点の下にビジュアルがない場合、NULLハンドルが戻される。
【０１２８】
【数３０】
0003863796.tif 000031
【０１２９】
（Ｃ．７．ｃ  CEHitVisible）
ヒットビジブルカウントを増分し、または減分する。このカウントが０以下である場合、ヒットテスティングアルゴリズムはこのビジュアルを考慮しない。Non-NULLである場合、pCountによって指されたLONGは、増分または減分の後にビジュアルの新しいヒットビジブルカウントを戻す。
【０１３０】
【数３１】
0003863796.tif 000032
【０１３１】
（Ｃ．８  命令ストリームのビジュアル命令）
これらの描画関数は、命令ストリームのビジュアルに対して使用可能である。それらは、即時モードの演出を実行しないが、描画コマンドをISVisualのコマンドバッファに追加する。これらの関数に渡されたhVisualは、ISVisualを指す。ISVisualに対する新しいフレームは、これらの関数を呼び出そうとする前にCEOpenFrameによって開かれていなければならない。
【０１３２】
所与の演出状態をセットする命令をビジュアルに追加する。
【０１３３】
【数３２】
0003863796.tif 000033
【０１３４】
所与の変換行列をセットする命令をビジュアルに追加する。
【０１３５】
【数３３】
0003863796.tif 000034
【０１３６】
所与のステージに対してテクスチャをセットする命令をビジュアルに追加する。
【０１３７】
【数３４】
0003863796.tif 000035
【０１３８】
所与の照明の特性をセットする命令をビジュアルに追加する。
【０１３９】
【数３５】
0003863796.tif 000036
【０１４０】
所与の照明を使用可能または使用不可にする命令をビジュアルに追加する。
【０１４１】
【数３６】
0003863796.tif 000037
【０１４２】
現在の材料特性をセットする命令をビジュアルに追加する。
【０１４３】
【数３７】
0003863796.tif 000038
【０１４４】
本発明の原理を適用することができる多くの可能な実施形態を考えれば、図面に関して本明細書で説明した実施形態は単に例示的なものであり、本発明の範囲を限定するものと解釈してはならないことを理解されたい。例えば、グラフィックスアービタは、同時に複数の表示装置をサポートすることができ、それぞれの装置のタイミングおよび隠蔽情報を提供することができる。従って、本明細書に記載した発明は、以下の請求項およびその等価物の範囲に含まれる全ての実施形態を企図する。
【図面の簡単な説明】
【図１】典型的な従来技術の表示のメモリバッファの動作を説明するブロック図である。表示ソースがプレゼンテーションバッファに書き込み、表示装置がこれを読み取る最も単純な配置を示す。
【図２】表示装置に関連づけられたバッファの「フリッピングチェーン」が、表示ソースによる書込みと表示装置による読取りをどのように切り離すかを説明する図である。
【図３】表示装置に関連づけられたバッファの「フリッピングチェーン」が、表示ソースによる書込みと表示装置による読取りをどのように切り離すかを説明する図である。
【図４】表示ソースが、内部にフリッピングチェーンを有することができることを示す図である。
【図５】表示装置に関連づけられたフリッピングチェーンに複数の表示ソースが同時に書き込む場合があることを示す図である。
【図６】従来技術の表示ソースが表示装置のタイミングを取り扱う方法を示す流れ図である。表示ソースが、表示タイミング情報にアクセスできず、表示装置に不十分に同期している場合を示す。
【図７】表示ソースは、現在時刻に合わせてフレームを作成する方法を示す流れ図である。
【図８】表示ソースが、フレームの作成をその表示の推定時刻に合わせて調整する方法を示す流れ図である。
【図９】本発明をサポートする例示的なコンピュータシステムを概略的に示すブロック図である。
【図１０】インテリジェントインタフェースとしてグラフィックスアービタを導入するブロック図である。
【図１１】グラフィックスアービタによって可能になるコマンドおよび制御情報フローを示すブロック図である。
【図１２】グラフィックスアービタが実施する方法の一実施形態の流れ図である。
【図１３】グラフィックスアービタと対話するときに表示ソースが使用する方法の流れ図である。
【図１４】１または複数の表示ソースからの出力をアプリケーションが変換する方法を示すブロック図である。
【図１５】拡大された一次面表示システムのブロック図である。
【図１６】拡大された一次面を使用して表示装置を駆動する方法を示す流れ図である。
【図１７】グラフィックスアービタとの例示的なインタフェースによって提供される機能のカテゴリを示すブロック図である。
【符号の説明】
１００  コンピューティング装置
１０２  表示装置
１０４  一次プレゼンテーション面
１０６  表示ソース
１０８  プレゼンテーションバックバッファ
１１０  プレゼンテーション面セット
１１２  メモリ面セット
１１４  バックバッファ
１１６  レディバッファ
３００  処理ユニット
３０２  メモリ
３０６  リムーバブル記憶装置
３０８  非リムーバル記憶装置
３１０  通信チャネル
３１２  入力装置
３１４  出力装置
３１６  電源
３１８  ネットワーク
４００  グラフィックスアービタ
９００  表示インタフェースドライバ
９０２  オーバレイ面セット
９０４  オーバレイ一次面
９０６  オーバレイバックバッファ
１１００  アプリケーションインタフェース
１１０２  ビジュアルライフタイムマネージメント
１１０４  ビジュアルリストＺオーダマネージメント
１１０６  ビジュアルスペーシャルコントロール
１１０８  ビジュアルブレンディングコントロール
１１１０  ビジュアルフレームマネージメント
１１１２  ビジュアルプレゼンテーションタイムフィードバック
１１１４  ビジュアルレンダリングコントロール
１１１６  フィードバック／バジェティング
１１１８  ヒットテスティング
【図１】
0003863796.tif 000039
【図２】
0003863796.tif 000040
【図３】
0003863796.tif 000041
【図４】
0003863796.tif 000042
【図５】
0003863796.tif 000043
【図６】
0003863796.tif 000044
【図７】
0003863796.tif 000045
【図８】
0003863796.tif 000046
【図９】
0003863796.tif 000047
【図１０】
0003863796.tif 000048
【図１１】
0003863796.tif 000049
【図１２】
0003863796.tif 000050
【図１３】
0003863796.tif 000051
【図１４】
0003863796.tif 000052
【図１５】
0003863796.tif 000053
【図１６】
0003863796.tif 000054
【図１７】
0003863796.tif 000055