(57)【要約】１つ又はそれ以上の表示装置における表示のために独立画像を同時にレンダリングするための方法、装置及びシステムである。一実施形態において、グラフィックレンダリングエンジンは、複数の表示装置への表示のために独立画像を同時にレンダリングする。時間アロケータは、レンダリングされた独立画像の各々の間におけるグラフィックレンダリングエンジンの同時使用を裁定する。
2004531841.tif 000002
【特許請求の範囲】
【請求項１】
複数の表示装置における表示のための２つ又はそれ以上の独立画像を同時にレンダリングするためのグラフィックレンダリングエンジン；並びに
２つ又はそれ以上の独立画像の間においてグラフィックレンダリングエンジンの使用を裁定するための時間アロケータ；
から構成されることを特徴とする装置。
【請求項２】
請求項１に記載の装置であって、時間アロケータは：
第１レジスタを含む複数のレジスタであって、第１レジスタは第１レジスタがグラフィックレンダリングエンジンを用いるために裁定プロセスに加わるかどうかを決定するための第１フィールドと、第１命令ストリームからの命令を含むメモリ位置を指し示すための第２フィールドとを含む複数のフィールドを含む、複数のレジスタ；
から構成される、ことを特徴とする装置。
【請求項３】
請求項２に記載の装置であって、時間アロケータは：
グラフィックレンダリングエンジンを用いるプログラマブル経過期間を確立するための第１モジュール；
から更に構成される、ことを特徴とする装置。
【請求項４】
請求項３に記載の装置であって、時間アロケータは：
第１レジスタがプログラマブル経過期間の間にグラフィックレンダリングエンジンを用いた後に、第２レジスタがグラフィックレンダリングエンジンを用いることを可能にされるかどうかをチェックするための信号を生成する第１回路；
から更に構成される、ことを特徴とする装置。
【請求項５】
請求項２に記載の装置であって、時間アロケータは：
第１独立画像に関連する命令を処理するためのグラフィックレンダリングエンジンに命令する第１モジュールであって、その命令は第１メモリ領域に記憶され、第１メモリ領域は複数のフィールドに含まれる情報により規定されるアドレスを有する、第１モジュール；
から更に構成される、ことを特徴とする装置。
【請求項６】
請求項５に記載の装置であって、第１メモリ領域は開始と終了を有し、第１メモリ領域は第１メモリ領域の終了から第１メモリ領域の開始に命令をラップアラウンドすることが可能である、ことを特徴とする装置。
【請求項７】
請求項５に記載の装置であって、第１モジュールは：
複数のレジスタにおいてどのレジスタがグラフィックレンダリングエンジンにより現在サービスされているかを追跡するための第２回路；並びに
裁定プロセスに加わらない第２レジスタと裁定プロセスに加わる第３レジスタとの間におけるグラフィックレンダリングエンジンの使用を管理するための第３回路；
から構成される、ことを特徴とする装置。
【請求項８】
請求項３に記載の装置であって、第１モジュールは：
特定のレジスタがグラフィックレンダリングエンジンを用いる経過期間を追跡するための第１回路；並びに
プログラマブル経過期間を同等のクロックサイクル数に変換する第２回路；
から構成される、ことを特徴とする装置。
【請求項９】
請求項１に記載の装置であって、時間アロケータは：
第１独立画像のために生じる非同期イベントを待つ間に、グラフィックアプリケーションからのグラフィック装置命令が第２独立画像に関連する命令を処理するためにグラフィックレンダリングエンジンに命令することを可能にするための第１回路；
から構成される、ことを特徴とする装置。
【請求項１０】
請求項１に記載の装置であって、時間アロケータは：
グラフィックアプリケーションからのソフトウェア命令を実行するために第１回路であって、そのソフトウェア命令は第２独立画像に関連する命令にグラフィックレンダリングエンジンを用いるために第１独立画像に関連する命令を割り当てられる時間を生成する、第１回路；
から構成される、ことを特徴とする装置。
【請求項１１】
請求項１に記載の装置であって：
第１表示装置及び第２表示装置；
から更に構成される、ことを特徴とする装置。
【請求項１２】
請求項１に記載の装置であって：
メモリからグラフィックレンダリングエンジンに情報を回復するためのグラフィクコンテキストであって、その情報はグラフィックレンダリングエンジンによりレンダリングされる第１独立画像に関連するレンダリングコンテキストを説明し、第１独立画像は２つ又はそれ以上の独立画像に含まれる、グラフィクコンテキスト；
から更に構成される、ことを特徴とする装置。
【請求項１３】
請求項１に記載の装置であって：
２つ又はそれ以上の独立画像に含まれる１つ又はそれ以上の独立画像のための命令を受信する第１メモリ領域；並びに
２つ又はそれ以上の独立画像に含まれる１つ又はそれ以上の独立画像のための命令を受信する第２メモリ領域；
から更に構成される、ことを特徴とする装置。
【請求項１４】
請求項１に記載の装置であって：
グラフィックレンダリングエンジンに２つ又はそれ以上の画像のための命令を提供するための１つ又はそれ以上の命令搬送部であって、１つ又はそれ以上の命令搬送部は第１命令搬送部を含む、命令搬送部；
から更に構成される、ことを特徴とする装置。
【請求項１５】
請求項１４に記載の装置であって、各々の命令搬送部は特定の表示装置に関連している、ことを特徴とする装置。
【請求項１６】
請求項１４に記載の装置であって、第１命令搬送部は：
命令メモリ領域；
命令メモリ領域に対して開始と終了を規定する第１レジスタ；並びに
命令メモリ領域からグラフィックレンダリングエンジンに命令を持っていき且つ提供するためのメモリアクセスエンジン；
から構成される、ことを特徴とする装置。
【請求項１７】
請求項１４に記載の装置であって、命令搬送部は：
命令ストリームから呼び出すことができる独立した一連の命令を記憶するための第３メモリ；
から更に構成される、ことを特徴とする装置。
【請求項１８】
請求項１６に記載の装置であって、第１レジスタは、命令メモリ領域において利用可能である空き領域の量を自動的にレポートするために、周期ベースで詮索メモリ位置に第２フィールドに含まれるコンテンツを書き込むようにグラフィック装置に命令するための第１フィールドを含む、ことを特徴とする装置。
【請求項１９】
第１命令ストリームに関連する命令を実行するために１つのグラフィックレンダリングエンジンを用いる段階；
第１命令ストリームに関連する命令による第１独立画像と第２命令ストリームに関連する命令による第２独立画像とを１つのグラフィックレンダリングエンジンにより同時にレンダリングする段階；並びに
第１命令ストリームに関連する命令と第２命令ストリームに関連する命令との間において１つのグラフィックレンダリングエンジンの使用を裁定する段階；
から構成されることを特徴とする方法。
【請求項２０】
請求項１９に記載の方法であって：
タイミング機構を用いることにより第１命令ストリームに関連する命令と第２命令ストリームに関連する命令との間に１つのグラフィックレンダリングエンジンの同時使用を割り当てる段階；
から更に構成される、ことを特徴とする方法。
【請求項２１】
請求項１９に記載の方法であって：
第１メモリアドレスからグラフィックレンダリングエンジンに情報を回復する段階であって、その情報は１つのグラフィックレンダリングエンジンによりレンダリングされる第１独立画像に関連する第１レンダリングコンテキストを説明し、且つ第２メモリアドレスに第２独立画像に関連する第２レンダリングコンテキストを説明する情報を記憶する段階であって、第２独立画像は１つのグラフィックレンダリングエンジンによりレンダリングされる、段階；
から更に構成される、ことを特徴とする方法。
【請求項２２】
請求項１９に記載の方法であって：
複数の表示装置に１つ又はそれ以上の画像を表示する段階；
から更に構成される、ことを特徴とする方法。
【請求項２３】
グラフィックレンダリングエンジンを用いて複数の表示装置における表示のために独立画像を同時にレンダリングする段階；
レンダリングされた各々の独立画像の間にグラフィックレンダリングエンジンの使用を割り当てる段階；並びに
第１独立画像に関連する第１レンダリングコンテキストをメモリ領域に記憶し且つメモリ領域から回復する段階；
から構成されることを特徴とする方法。
【請求項２４】
請求項２３に記載の方法であって：
第１独立画像に関連する第１レジスタがグラフィックレンダリングエンジンを用いるために裁定処理に加わるかどうかを決定する段階；
から更に構成される、ことを特徴とする方法。
【請求項２５】
請求項２４に記載の方法であって：
グラフィックアプリケーションからのソフトウェア命令により、グラフィックレンダリングエンジンが、第１画像に生じる非同期イベントを待っている間に、第２画像に関連する命令を処理することを可能にする段階；
から更に構成される、ことを特徴とする方法。
【請求項２６】
請求項２４に記載の方法であって：
グラフィックアプリケーションからのソフトウェア命令により第２独立画像に関連する命令に、グラフィックレンダリングエンジンを用いるために、第１独立画像に関連する命令を割り当てる時間を生成する段階；
から更に構成される、ことを特徴とする方法。
【請求項２７】
請求項２３に記載の方法であって：
第１レジスタに含まれるプログラマブルコンテンツによりメモリ領域を規定する段階であって、そのメモリ領域は第１命令ストリームに関連する命令の記憶に対して専用化されている、段階；
から更に構成される、ことを特徴とする方法。
【請求項２８】
請求項２３に記載の方法であって：
第１レジスタに含まれるプログラマぶるコンテンツによりメモリ領域を規定する段階であって、そのメモリ領域は第１命令ストリームに関連する命令の記憶に対して専用化されている、段階；
から更に構成される、ことを特徴とする方法。
【請求項２９】
請求項２３に記載の方法であって：
第１周波数において動作する第１装置及び第２周波数において動作する第１装置と互換性があるタイミング回路におけるタイムユニットクアンタムを確立する段階；
から更に構成される、ことを特徴とする方法。
【請求項３０】
中央演算処理装置；
グラフィック装置であって、中央演算処理装置はグラフィック装置に結合され、グラフィック装置は複数の表示装置における表示のための２つ又はそれ以上の独立画像を同時にレンダリングするためにグラフィックレンダリングエンジンを含む、グラフィック装置；並びに
２つ又はそれ以上の独立画像間においてグラフィックレンダリングエンジンの使用を裁定するための時間アロケータ；
から構成される、ことを特徴とするシステム。
【請求項３１】
請求項３０に記載のシステムであって、時間アロケータは：
複数のレジスタは第１レジスタを含み、第１レジスタは複数のフィールドを有し、第１フィールドは第１レジスタがグラフィックレンダリングエンジンを用いるために裁定プロセスに加わるかどうかを決定し、第２フィールドは第１命令ストリームからの命令を含むメモリ位置を指し示す、複数のレジスタ；
から構成される、ことを特徴とするシステム。
【請求項３２】
請求項３１に記載のシステムであって、時間アロケータは：
グラフィックレンダリングエンジンの使用するプログラマブル経過期間を確立するための第１モジュール；
から更に構成される、ことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、複数の画像のレンダリングに関する。本発明は、更に詳細には、１つ又はそれ以上の表示装置への複数の画像のレンダリングに関する。
【背景技術】
【０００２】
画像レンダリングとは、ハイレベルの対象物ベースの表示をある表示装置における表示のためのグラフィック画像に変換することである。例えば、画像レンダリングは、３次元対象物又はシーンの数学的モデルをビットマップ画像に変換する間に現れる。画像レンダリングの他の例は、ＨＴＭＬ文書をコンピュータモニタにおける表示のための画像に変換することである。一般に、グラフィックレンダリングエンジンと呼ばれるハードウェア装置により、これらのグラフィック処理タスクを加速することができる。
【０００３】
インターネットをサーフィンするとき、通常、複数の画像がコンピュータモニタ上に表示される。例えば、インターネットをサーフィンするとき、ウェブページとウェブページ上に重ね合わされる２つのバナー広告とがコンピュータモニタ上に表示される。グラフィックレンダリングエンジンは、代表的には、ウェブページのような第１画像に関連する命令全てをレンダリングする。第１画像のための命令を完全に処理した後、グラフィックレンダリングエンジンは、バナー広告の１つのような第２画像に関連する命令の処理を開始する。しかしながら、一般に、グラフィックレンダリングエンジンは、第２画像に関連する命令の処理を開始する前に、第１画像に関連する命令のレンダリングを終了しなければならない。このように、グラフィックグラフィックレンダリングエンジンが、グラフィックアプリケーションプログラムが命令を生成するより速く命令を処理する場合、グラフィックグラフィックレンダリングエンジンは、その時間の間、アイドルの状態のまま保たれる。又、次の命令を実行する前に現れる現実の世界のイベントを画像命令が呼び出す場合、グラフィックグラフィックレンダリングエンジンは、その時間の間、アイドルの状態のまま保たれる。代表的には、グラフィックグラフィックレンダリングエンジンは、連続して命令ストリームをサービスする。このようにして、グラフィックレンダリングエンジンが第２命令ストリームに関連する命令の処理を開始する前に、第１命令ストリームに関連する命令は処理された。
【０００４】
他の例は、３次元環境において２つの独立した画像をレンダリングすることである。１つの表示スクリーンは、３次元画像を含む第１ウィンドウと、制御２Ｄグラフィックユーザインタフェースの表示画像を含む第２ウィンドウとを表示する。上で述べたように、先行技術においては、グラフィックレンダリングエンジンが第２ウィンドウにおける画像に関連する命令の処理を開始する前に、第１ウィンドウにおける画像のための命令は処理された。
【０００５】
従来の技術は、複数の表示装置上に複数の画像を表示した。代表的には、２つ又はそれ以上のグラフィックレンダリングエンジンが、複数の画像に関連する命令を処理するために存在する。各々のグラフィックレンダリングエンジンは１つの表示装置にサービスする。しかしながら、実際には、複数のグラフィックレンダリングエンジンはより大きい物理的空間を占め、より大きい電力を消費し、１つのグラフィックレンダリングエンジンを生成することに比べてより大きいコストが掛かる。従って、グラフィックレンダリングエンジンの数を減少させる古都は有益である。更に、２つ又はそれ以上のグラフィックレンダリングエンジンをもつ同じ表示スクリーン上の異なる画像をレンダリングすることを試みる従来の技術は重大なアービトレーションの競合に直面する。
【０００６】
各々のグラフィックレンダリングエンジンは、レンダリング状態変数のセットにより制御される。これらの状態変数はレンダリングコンテキストとして集合的に呼びならわされている。レンダリング状態関数は、対象物の色、テクスチャ、テクスチャ適用モード等のグラフィックレンダリングプロセスの特定の側面を制御する。
【０００７】
特定のレンダリングコンテキストは、各々の画像と共に、その画像がレンダリングされるときに存在する。従来の技術は、画像に関連するレンダリングコンテキストのセットに役にたたない方法を用いている。グラフィックドライバプログラムはアプリケーションプログラムからの命令を受信し、グラフィックレンダリングエンジンに画像に現関連状態変数の設定を含んだその命令を含む命令ストリームを送信する。グラフィックレンダリングエンジンは、他のレンダリング命令の実行の前にこれらのレンダリングコンテキストの命令を処理する。グラフィックレンダリングエンジンが第１画像に関連する処理命令と第２画像に関連する命令との間をスイッチングするとき、グラフィックアプリケーションプログラムはレンダリングコンテキスト命令を送信する必要があり、グラフィックレンダリングエンジンはそれらレンダリングコンテキスト命令を処理することが必要である。
【０００８】
従来、グラフィックレンダリングエンジンに関連するレンダリングコンテキストはソフトウェア生成命令ストリームによってのみ修正され、ホストＣＰＵから直接アクセス可能ではなかった。現レンダリングコンテキストのような第１レンダリングコンテキストから、新しいレンダリングコンテキストのような第２レンダリングコンテキストへの変更は、それ故、第２レンダリングコンテキストを設定する状態変数を指定するために命令を生成する応用ソフトウェアを必要とした。第１レンダリングコンテキストが読み込まれる場合、応用ソフトウェアは、後のある時点にその第１レンダリングテキストを回復するために、第１レンダリングコンテキストのシャドーコピーを保つことが必要とされた。
【発明の開示】
【課題を解決するための手段】
【０００９】
本発明は種々の修正及び変更形態を必要とする一方、本発明の特定の実施形態は図面を例として示し、以下に詳述する。本発明は、開示された特定の形態に限定されるものではないことを理解する必要があり、それと対照的に、本発明は、本発明の主旨及び発明の適用範囲内に含まれる修正、同等のもの及び代替のもの全てをカバーするものである。
【００１０】
以下、本発明の全体的な理解を提供するために、特定命令、指定構成要素、コネクション等について数々の特定な内容により詳述する。しかしながら、本発明はそれらの詳細説明がなくても実行可能であることが明らかであることは、当業者には理解されるであろう。他の例として、本発明を不必要に分かりにくくすることを回避するために、周知の構成要素又は方法については詳細に説明せずに、ブロックダイアグラムを用いて説明する。それ故、詳述する特定の内容は単なる例である。その特定の内容について、本発明の主旨と適用範囲から逸脱することなく、変更すること及び更に検討を加えることが可能である。結合された用語は、直接的に又は非直接的に結合された意味として定義される。
【００１１】
一般に、グラフィックレンダリングエンジンは、複数の表示装置上における表示のために独立した画像を、同時にレンダリングする。命令搬送部は、グラフィックレンダリングエンジンに２つ又はそれ以上の独立した画像のための命令を提供する。時間アロケータは、レンダリングされた各々の独立した画像間のグラフィックレンダリングエンジンの同時使用の調停を行う。グラフィックコンテキストマネージャは、確立されたメモリ位置からグラフィックレンダリングエンジンに第１独立画像に関連するレンダリングコンテキストを戻す。
【発明を実施するための最良の形態】
【００１２】
図１は、複数の表示装置上の１つ又はそれ以上の画像を表示するためにグラフィックレンダリングエンジンを用いる１つ又はそれ以上の画像をレンダリングするグラフィック装置の実施形態を示すブロック図である。図１を参照するに、グラフィック装置１００はグラフィックレンダリングエンジン１０２、１つ又はそれ以上の命令搬送部１０４、コンテキストマネージャ１０６、時間アロケータ１０８、及び、第１表示装置１１０と第２表示装置１１２のような１つ又はそれ以上の表示装置を備える。一実施形態において、グラフィック装置１００は、１つのグラフィックレンダリングエンジン１０２を備える。
【００１３】
グラフィックレンダリングエンジン１０２は、１つの表示装置又は複数の表示装置のどちらかに表示されるために独立画像を生成する。それ故、例えば、２つの独立画像は同じ表示装置上に表示されることが可能であり、又は２つの独立画像は別々の表示装置上に各々表示されることが可能である。各々の独立画像のための命令は、複数のグラフィックアプリケーションプログラムからの命令を含む１つの命令ストリーム１１４又は別々の命令ストリームによりもたらされる。
【００１４】
各々の独立画像は、ブラウザアプリケーションによるバナー広告をもつウェブページを表示する、又は２次元画像に関連する第１命令ストリームを連続してレンダリングし、次いで３次元画像に関連する第２命令ストリームをレンダリングする従来技術に比較して、同時にレンダリングされることが可能である。一般に、従来技術は、バナー広告等の第１ウィンドウに含まれる第１画像に関連する画像命令を完全にレンダリングし、ウェブページ等の第２ウィンドウに含まれる第２画像についての命令を完全にレンダリングする。代表的には、従来技術、即ちグラフィクスレンダリングエンジンは、各々の独立画像のための命令を同時には実行しない。
【００１５】
時間アロケータ１０８は、レンダリングされる各々の独立画像間でグラフィックレンダリングエンジン１０２の使用を裁定する。グラフィックコンテキストマネージャ１０６は、メモリ装置（図示せず）においてレンダリングされる各々の独立画像に関連するコンテキストを記憶する。種々のグラフィックアプリケーションは、プロセッサにおいて動き、又は命令ストリームに命令をレンダリングするプロセッサ挿入画像において動くブラウザにおいて動く。命令搬送部１０４は、命令ストリーム１１４から処理のためのグラフィックレンダリングエンジン１０２に命令を提供する。
【００１６】
グラフィックレンダリングエンジン１０２は、グラフィックコンテキストマネージャ１０６、時間アロケータ１０８、及びグラフィックレンダリングエンジン１０２の効率的な使用を行うための１つ又はそれ以上の命令搬送部１０４を用いて機能する。命令ストリーム１１４に命令を供給する各々のグラフィックアプリケーションは異なる速度で動作し、画像を生成することが可能である。例えば、ストリーミングライブビデオアップリケーションは、通常、ワードプロセッシングアプリケーションよりかなり速い画像生成速度で動作する。グラフィックレンダリングエンジン１０２は、グラフィックレンダリングエンジン１０２がアイドルのまま保たれる時間を最小にするために、２つ又はそれ以上の画像に関する命令を同時にレンダリングすることが可能である。又、従来の技術においては、第１画像のための命令が次の命令を実行する前に生じる実ワードイベントを要求する場合、グラフィックレンダリングエンジン１０２は、その時間の間、アイドルのまま保たれる。しかしながら、グラフィックレンダリングエンジン１０２は、グラフィックレンダリングエンジン１０２のためのアイドル時間を減少させるために、複数の画像から命令を同時にレンダリングすることが可能である。
【００１７】
グラフィックレンダリングエンジン１０２は、第１画像に関連する現レンダリングコンテキストを保存し、確立されたメモリ位置（図示せず）から第２画像に関連する新しいレンダリングコンテキストをロードすることが可能である。一実施形態において、レンダリングコンテキストを記憶するために用いられる確立されたメモリ位置は、論理コンテキスト（図示せず）と呼ばれる。グラフィックスレンダリング装置１００は、レンダリングコンテキストをスイッチングするためにレンダリングされるとき、（１）レンダリング状態変数からメモリにおける第１確立メモリ位置に現レンダリングコンテキストを書き込み、（２）メモリにおける第２確立メモリ位置からその新しいレンダリングコンテキストを読み込み、及び（３）その新しいレンダリングコンテキストからの情報を用いてレンダリング状態変数をロードする。一実施形態において、別々の命令搬送部１０４は、特定の表示装置１１０、１１２のために処理される画像レンダリング命令の独立したセットを記憶するために、各々の表示装置１１０、１１２に関連している。
【００１８】
図２は、中央演算処理装置（ＣＰＵ），キャッシュ、メモリ、表示装置及びグラフィックコンテキストマネージャの実施形態及び命令搬送部の実施形態を有するグラフィック装置を含むコンピュータシステムの実施形態のブロック図を示している。グラフィック装置２００は、複数のリングバッファレジスタ２０４，２０６、リングバッファ直接メモリアクセスエンジン（ＲＢ  ＤＭＡ  ＥＮＧ）２１２、グラフィックレンダリングエンジン２１４及びコンテキスト識別レジスタ（ＣＩＤ）２２２、２２４を備えている。複数のリングバッファメモリ領域２０８、２１０、複数の確立メモリ位置２１６，２１８，２２０及び複数の表示装置２２８、２３０はグラフィック装置２００に関連している。一実施形態において、命令搬送部は、複数のリングバッファレジスタ２０４、２０６、複数のリングバッファメモリ領域２０８、２１０及び直接メモリアクセスエンジン２１２を含む。一実施形態において、コンテキストマネージャは、コンテキスト識別マネージャ（ＣＩＤ）２２２、２２４、アクティブコンテキスト識別レジスタ（Ａｃｔｉｖｅ  ＣＩＤ）２２６及び複数の確立メモリ位置２１６、２１８、２２０からなる。
【００１９】
図３は、リングバッファメモリ領域の一実施形態のブロック図を示している。上述のように、命令搬送部の実施形態は、１つ又はそれ以上のリングバッファレジスタ３１０、及びソフトウェア生成命令がグラフィックレンダリングエンジン（図示せず）に移動されることができる１つ又はそれ以上のリングバッファメモリ領域３００を備えている。リングバッファメモリ領域３００は、グラフィックアプリケーション（図示せず）からの実際の画像レンダリング命令を維持する。リングバッファレジスタ３１０は、リングバッファメモリ領域３００の開始と長さを規定し、リングバッファメモリ領域３００への２つの“オフセット”、ヘッド３０４及びテール３０２を備えている。テールオフセット３０２は、実行されなければならない有効な命令の存在をグラフィックレンダリングエンジンに知らせる。ヘッドオフセット３０４は、それらの命令が解析されて実行されるとき、グラフィックレンダリングエンジンにより増加される。命令は、リングバッファメモリ領域３００の底部からリングバッファメモリ領域３００の最上部に戻してラップアラウンドされることができる。一実施形態において、リングバッファメモリ領域３００は、バッチバッファ（図示せず）の位置を指し示すために命令を記憶する。バッチバッファは、余分な命令記憶容量を提供するために離散したメモリ領域に記憶されることが可能である画像レンダリング命令の離散リストを備えている。一実施形態において、バッチバッファは、命令ストリームから呼び出されることができる独立した一連の命令を記憶する。
【００２０】
図２を再び参照するに、各々のリングバッファレジスタ２０４、２０６は、レジスタ内に複数のフィールドを有することが可能である。第１リングバッファレジスタ２０４のようなリングバッファレジスタの実施形態において含まれるフィールドは、リングバッファ有効validフィールド（Ｖ）２３２、開始アドレスフィールド（Ｓ）２３４、バッファ長さフィールド（Ｌ）２３５、ヘッドオフセットフィールド（Ｈ）２３６、ヘッドラップカウントフィールド（Ｗ）２３３、テールオフセットフィールド（Ｔ）２３７、自動レポートヘッドイネーブルフィールド（Ｒ）２３８、時間スライスフィールド（ＴＳ）２３９及び他の類似したフィールドであることが可能である。
【００２１】
リングバッファ有効フィールド２３２は、この特定のリングバッファレジスタがグラフィックレンダリングエンジン２１４を共有するための裁定プロセスに含まれるかどうかを制御する。開始アドレスフィールド２３４は、リングバッファメモリ領域２０８、２１０から構成される隣接メモリ領域の開始を指し示す。リングバッファメモリ領域２０８、２１０は、システムメモリ２３２又は専用メモリに位置付けられる。バッファ長さフィールド２３５は、割り当てられたリングバッファメモリ領域２０８、２１０のバイトでのるサイズを指定する。一実施形態において、リングバッファ長さフィールド２３５は、どの時点においても、リングバッファメモリ領域２０８，２１０に提出されることができる最大データ量を規定する。一実施形態において、リングバッファメモリ領域２０８、２１０は画像レンダリング命令及び１つ又はそれ以上のバッチバッファ２４０へのポインタを含むことが可能であり、それ故、特定の命令に対して実質的に無制限メモリ領域を生成する。
【００２２】
ヘッドオフセットフィールド２３６は、グラフィックレンダリングエンジン２１４が解析する次の命令の開始アドレス２３４からメモリオフセットを指し示す。例えば、ヘッドオフセット２３６は、解析された最後の命令が過ぎるまで、１つのメモリを指し示すことが可能である。グラフィックレンダリングエンジン２１４は、命令が解析されたとき、ヘッドオフセットフィールド２３６をアップデートする。一旦、ヘッドオフセット２３６がテールオフセットフィールド２３７の値に達するとき、即ち両方のオフセットが等しくなったとき、グラフィックレンダリングエンジン２１４はリングバッファメモリ領域２０８，２１０が空であるとみなし、その条件が留まる限り、グラフィックレンダリングエンジン２１４を共有するために、裁定プロセスから対応するリングバッファレジスタ２０４、２０６を取り除く。このようにして、表示には、特定の表示装置のための命令ストリームが中心プロセスから取り除かれることが存在する。又、より効率的なフロー制御アルゴリズムのためのキャッシャブルメモリに、ヘッドポインタ値とヘッドラップカウントフィールド２３３が書き込まれることを可能にする自動レポートヘッドイネーブルフィールドが、リングバッファレジスタに含まれる。例えば、進行を確認するためにヘッドオフセット２３６をポーリングする間のフロー制御アルゴリズム。
【００２３】
リングバッファメモリ領域２０８、２１０は、メモリ領域の終了からメモリ領域の開始まで、命令をラップすることが可能である。ヘッドラップカウントフィールド２３３は、ヘッドオフセット２３６がリングバッファメモリ領域２０８、２１０の開始アドレス２３４にラップアラウンドして戻る度に、グラフィックレンダリングエンジン２１４により増加される。一実施形態において、ヘッドラップカウントフィールド２３３は、“レポートヘッド”プロセスに書き込まれたＤＷｏｒｄに含まれる。グラフィック装置２００は、まるでリングバッファメモリ領域２０８、２１０が実際の物理的バッファのサイズよりかなり大きい“仮想的”長さを有しているかのように、命令が解析する進行状況を追跡するためにヘッドラップカウントフィールドを用いることができる。
【００２４】
テールオフセットフィールド２３７はリングバッファメモリ領域２０８における位置を指し示す。テールオフセットフィールド２３７は、グラフィックアプリケーションソフトウェアが後に実行される付加的な画像レンダリング命令を記憶するために用いることができる命令データの次のメモリユニットを指し示す。例えば、テールオフセットフィールド２３７は、グラフィックレンダリングエンジン２１４が実行するように提出された最後の命令に合格した１つのメモリユニット２３２を指し示す。提出された命令は、リングバッファメモリ領域２０８、２１０の末端部から先端部に戻るようにラップアラウンドされることができ、この場合、書き込まれたテールオフセット２３７は前の値より小さくなる。リングバッファメモリ領域２０８、２１０の“空”の状態は、“ヘッドオフセットフィールド２３６がタールオフセットフィールド２３７に等しい”として定義される。
【００２５】
自動レポートヘッドイネーブルフィールド２３８は、グラフィックアプリケーションソフトウェア又はオペレーティングソフトウェアが、周期的ベースで特定のＣＰＵ詮索システムメモリ位置に書き込まれるヘッドオフセットフィールド２３６とヘッドラップカウントフィールド２３３の内容を有するように要求することを可能にする。自動レポートは、ヘッドオフセットフィールド２３６が進む度に生じるように、プログラムされた量により、プログラムされることができる。自動レポート機構は、リングバッファにおける空き領域の量を決定するために、ソフトウェアがヘッドオフセットフィールド２３６とヘッドラップカウントフィールド２３３を用いることを可能にする。このようにして、ヘッドオフセットフィールド２３６は、命令によりヘッドポインタ値を明白に得る必要がないようにして、適正な最新のヘッドオフセットフィールド２３６を提供するために、システムメモリに周期的に報告されることが可能である。
【００２６】
各々の表示装置２２８、２３０は、その個々の表示装置に関連する別々の命令搬送部を有することが可能である。図２に示したように、第１リングバッファレジスタ２０４と第１リングバッファメモリ領域２０８は、第１表示装置２２８に関連している。第２リングバッファレジスタ２０６と第２リングバッファメモリ領域２１０は、第２表示装置２３０に関連している。このようにして、この例においては、第１リングバッファレジスタ２０４と第１リングバッファメモリ２０８領域は、第１表示装置２２８に表示される独立した画像のレンダリングのための命令を提供する。一実施形態において、第１リングバッファレジスタ２０４と第１リングバッファメモリ領域２０８は、第２表示装置２３０に関連している。
【００２７】
複数の命令搬送部は、異なる優先順位を各々の命令搬送部に関連させることを可能にする。例えば、低い優先順位の命令搬送部は、割り込みバックグラウンドレンダリングタスクのために用いられることができる。同様に、高い優先順位の命令搬送部は、ビデオフレーム捕捉のような非同期のイベントをサービスするために用いられることができる。また、サービスするための第１命令搬送部に第１表示装置２２８のような１つの表示装置を、そしてサービスするための第２命令搬送部に第２表示装置２３０のような１つの表示装置を割り当てることにより、グラフィック装置２００は、表示装置毎に別々の命令ストリームをサポートすることができる。更に、グラフィック装置２００は、表示装置毎に分離して制御される命令ストリームをサポートすることができる。
【００２８】
上述のように、各々の命令搬送部は直接メモリアクセスエンジン２１２を含むことが可能である。直接メモリアクセスエンジン２１２は、特定の命令搬送部から命令をもってきて、グラフィックレンダリングエンジン２１４にそれらの命令を提供する。グラフィクレンダリングエンジン２１４は、直接メモリアクセスエンジン２１２により命令搬送部から画像命令を読み込み、それらの画像命令を実行する。グラフィックレンダリングエンジン２１４は、ヘッドオフセットフィールド２３６とテールオフセットフィールド２３７との間の違いにより、リングバッファメモリ領域２０８、２１０内の命令の存在を検出する。グラフィックレンダリングエンジン２１４は、どのような情報を命令が含み、それ故、どのようにその命令を更に実行するかを決定するために、命令の共通の“ヘッダ”フィールドに割り込み、それを復号化する。このような命令の割り込み及び復号化は、一般に、パーシング（ｐａｒｓｉｎｇ）と呼ばれる。
【００２９】
一実施形態において、グラフィックレンダリングエンジン２１４は、どのような情報（例えば、適用される状態変数変化２４６又はレンダリングされるプリミティブ２４８）を命令が含むかを調べるために、命令ストリーム２４２から特定の命令を復号化する。グラフィックレンダリングエンジン２１４は、次いで、適宜にその命令を実行する。状態変数変化命令２４６の実行は、源レンダリングコンテキストに特定の変化をもたらす。プリミティブ命令２４８の実行は、メモリ２５６、２５８における適切な画像情報の修正をもたらす（即ち、画像はレンダリングされる）。グラフィックレンダリングエンジン２１４は、次いで、第１表示画像２５６と第２表示画像２５８のような、各々の表示装置２２８、２３０に対応するメモリ位置における画像情報を記憶する。一実施形態において、第１表示画像２５６のための情報と第２表示画像のための情報は、第１表示装置２２８と第２表示装置２３０の両方に専用のローカルメモリに記憶される。一実施形態において、第１表示画像２５６のための命令と第２表示画像２５８のための命令はシステムメモリ２３２に記憶される。グラフィックレンダリングエンジン２１４は、メモリからレンダリングされた画像情報を読み出し、周期的ベースで関連する表示装置にレンダリングされた画像情報を提供する。第１表示装置２２８のような表示装置は、次いで、この情報に基づいて表示装置に実際の画像を表示する。
【００３０】
一実施形態において、グラフィックアプリケーションは命令ストリーム２４２に命令を供給する。上述のように、これらの命令は、通常、特定の表示装置２２８、２３０に関連するリングバッファメモリ領域２０８、２１０に記憶されることが可能である。一実施形態において、命令ストリーム２４２において見つけられた一部の命令のタイプは、状態変数変化命令２４６、プリミティブ２４８及びセットコンテキストコマンド２５０、２５２とすることが可能である。プリミティブ命令２４８は、描かれる形状とそれら形状に帰する位置と寸法に関するグラフィックレンダリングエンジン２１４を命令する。状態変数変化命令２４６は、画像をレンダリングするときに、ハードウェアグラフィックコンテキスト回路２４４に記憶されたレンダリング状態変数のセットの現値を修正するためにグラフィックレンダリングエンジン２１４を命令する。一実施形態において、セットコンテキストコマンド（Ｓｅｔ  ＣＸＴ  ＃）２５０、２５２は、グラフィックレンダリングエンジン２１４が、第１確立メモリ位置１６のような確立メモリ位置に現レンダリングコンテキストを保存すること、及び第２確立メモリ位置２１８のような新しい確立メモリ位置から新しいレンダリングコンテキストを回復させることをもたらす。
【００３１】
第１確立メモリ位置のような各々の確立メモリ位置は、グラフィックレンダリングエンジン２１４により、レンダリングされた画像のレンダリングコンテキストを記憶する。同様に、各々の確立メモリ位置２１６、２１８、２２０は、関連する独立画像をレンダリングするとき、用いられるレンダリング状態変数の設定を記憶することが可能である。一実施形態において、複数の確立メモリ位置２１６、２１８、２２０は、グラフィックレンダリングエンジン２１４がレンダリングされた各々の画像に関連するレンダリングコンテキストのトラックを維持することを可能にする。コンテキストマネージャの実施形態は、複数の画像の現レンダリングを管理するために、複数の確立メモリ位置２１６、２１８、２２０とコンテキスト識別レジスタ２２２、２２４、２２６を含む。コンテキストマネージャの実施系形態は、複数の表示装置２２８、２３０に画像を表示すること及び第１表示装置２２８のような同じ表示装置に複数の画像を表示することをサポートするグラフィック表示制御器回路（ＧＤＣ）２７０に合わせる。
【００３２】
ハードウェアグラフィックコンテキスト回路２４４における数多くのハードウェア状態変数の設定は、グラフィック装置２００におけるレンダリングのようなグラフィック操作を制御する。状態変数は、全体的状態変数とコンテキスト状態変数を含むことが可能である。全体的状態変数は、全てのコンテキスト（例えば、論理アドレスマッピング資源等）に共通であり、それ故、任意の特定のレンダリングコンテキストの範囲の外側にあるとみなされる。しかしながら、特定のグラフィックアプリケーションに関連する各々のレンダリングコンテキストは分離したコンテキスト状態変数のセットを含む。一実施形態において、特定のグラフィックアプリケーションに関するこれらのレンダリングコンテキストは、アクティブなオンチップメモリにおける確立メモリ位置又はシステムメモリ２３２における複数の確立メモリ位置２１６、２１８、２２０に記憶されることが可能である。
【００３３】
上述のように、複数の確立メモリ位置２１６、２１８、２２０は、グラフィックレンダリング画像によりレンダリングされる独立画像に関連するレンダリングコンテキストをメモリ２３２において記憶すること及びメモリ２３２から回復することにより、グラフィックレンダリングエンジン２１４をサポートする。一実施形態において、セットコンテキストＡ０（２５０）のような命令ストリーム２４２からの第２セットコンテキスト命令は、記憶のために第１確立メモリ位置２１６のような確立メモリ位置にレンダリングされた画像のための現レンダリングコンテキストを送信するようにグラフィックレンダリングエンジン２１４に命令する。同時に、第２画像を生成するグラフィックアプリケーションに関連する第２確立メモリ位置１８は、グラフィクレンダリングエンジン２１４により同時にレンダリングされる第２画像に関連するレンダリングコンテキストを回復するためにグラフィックレンダリングエンジン２１４から信号を受信する。一実施形態において、その装置に位置された付加的なコンテキストキャッシュは、メモリバンド幅とスワップコンテキストに必要な時間を減少させる。
【００３４】
コンテキストマネージャは又、コンテキスト識別レジスタ（ＣＩＤ）２２２、２２４とアクティブコンテキスト識別レジスタ２２６とからなる。コンテキスト識別レジスタ２２２、２２４は、特定のリングバッファレジスタ２０４，２０６と、それ故、特定の画像メモリ位置２５６、２５８に関連する。
【００３５】
一実施形態において、アクティブコンテキスト識別レジスタ２２６は、現アクティブリングバッファレジスタ２０４、２０６に含まれるコンテキスト識別レジスタ２２２、２２４値を追跡する。第１コンテキスト識別レジスタ２２２のような追跡コンテキスト識別レジスタは、特定の確立メモリ位置２１６、２１８、２２０がグラフィックレンダリングエンジンによりレンダリングされている現画像に関連する。
【００３６】
一実施形態において、各々のコンテキストと識別レジスタ２２２、２２４は、確立メモリ位置アドレスとコンテキストクオリファイアビットとを含む。コンテキストクオリファイアビットは、レンダリングコンテキストの位置がコンテキストスイッチに関して保存／回復されなければならないか、そうではないかを制御する。一実施形態において、各々のコンテキスト識別レジスタ２２２、２２４は、“テクスチャパレット保存ディセーブル”コンテキストクオリファイアビット及び““テクスチャパレット回復ディセーブル”コンテキストクオリファイアビットのようなコンテキストクオリファイアビットを実行する。一実施形態において、これらのコンテキストクオリファイアビットは、３次元画像が維持されるべき（即ち、レンダリングコンテキストの一部として保存され回復される）現テクスチャパレットを必要とすることが可能である一方、２次元画像はそうではない２次元と３次元画像との間のコンテキストを交換することの役に立つ。
【００３７】
確立メモリ位置２１６、２１８、２２０は、対応するコンテキスト識別レジスタ２２２、２２４の確立メモリ位置アドレスにより参照される。確立メモリ位置２１６、２１８、２２０の実際のサイズは、コンテキストスイッチの間に記憶／回復されたデータ量であり、レンダリングコンテキストがテクスチャパレットを含むかどうかに依存する。一実施形態において、コンテキスト識別レジスタ２２２、２２４は、メモリ２３２におけるそれぞれの確立メモリ位置２１６、２１８，２２０サイズを特定するために２つの付加的なレジスタを含むことが可能である。一実施形態において、特定のコンテキスト識別レジスタ２２２、２２４は、対応するリングバッファメモリ領域２０８、２１０に記憶される命令ストリーム２４２から“ｓｅｔ＿ｃｏｎｔｅｘｔ”命令２５０、２５２の処理の間に、アクティブなレジスタを生成する。一実施形態において、ｓｅｔ＿ｃｏｎｔｅｘｔ命令２５０、２５２は、コンテキスト識別レジスタ２２２、２２４にロードされるように新しいコンテキスト識別値（局所コンテキストアドレス＋パレット保存ディセーブルビット）を提供する。ｓｅｔ＿ｃｏｎｔｅｘｔ命令２５０、２５２は又、新しいコンテキストの回復を随意的に抑制するために用いられる回復抑制ビットを含む。一実施形態において、回復抑制ビットは、メモリ２３２から非識別コンテキストデータのローディングを回避するためにコンテキスト識別の間に、用いられることが可能である。
【００３８】
アクティブコンテキスト識別レジスタ２２６は、第１リングバッファレジスタ２０４のようなアクティブなリングバッファレジスタのコンテキスト識別値を含む。ｓｅｔ＿ｃｏｎｔｅｘｔ命令２５０、２５２の実行の一部として、アクティブなコンテキスト識別レジスタ２２６からの確立メモリ位置アドレスフィールドとｓｅｔ＿ｃｏｎｔｅｘｔ命令が比較される。それらが異なるか又はアクティブなコンテキスト識別レジスタ２２６が初期化されない場合、コンテキストスイッチ操作は生じない。
【００３９】
一実施形態において、コンテキストスイッチ操作の間に、回復抑制命令フィールドが設定されない場合、コンテキスト回復操作は実行されることが可能である。ここで、第１確立メモリ位置２１６のような確立メモリ位置のためのアドレス値は、アクティブなコンテキスト識別レジスタ２２６をロードするために用いられる。命令のコンテキストクオリファイアフィールドは、レンダリングコンテキストの一部の回復を更に調整することが可能であることことに留意されたい。例えば、テクスチャパレットは回復されることも、そうでないことも可能である。
【００４０】
ＨＷ  ＧＦＸ  ＣＸＴ２４４は、適切な確立メモリ位置からの新しいコンテキストのロードと共に、セットコンテキスト命令２５０、２５２からの値をもつアクティブなコンテキスト識別レジスタをもたらす。この時点で、対応するリングバッファレジスタ２０４、２０６とリングバッファメモリ領域２０８、２１０は、新しい確立メモリ位置２１６、２１８、２２０にアクティブなコンテキストをスイッチングした。
【００４１】
上述のように、各々のグラフィックアプリケーションは異なる速度において画像命令を生成することが可能である。同様に、各々の表示装置２２８、２３０は、異なる速度で、表示及びその関連する画像を一新することが可能である。一実施形態において、コンテンツマネージャと命令搬送部は、異なる命令ストリーム間の継ぎ目のないスイッチング、異なる表示装置２２８、２５２間の継ぎ目のないスイッチング、及び同じ命令ストリーム２４２における異なるグラフィックアプリケーションに関連するレンダリングコンテキスト間の継ぎ目のないスイッチングをサポートする。
【００４２】
図４は、レンダリングされる各々の独立画像間のグラフィックレンダリングエンジンの使用を割り当てるために時間アロケータの実施形態のブロック図を示している。一実施形態において、時間アロケータ４００は、裁定及びスイッチングモジュール４１０、タイマーレジスタ４１２、ユニットレジスタ４１４、ユニット時間カウンタ４１６及び時間スライスカウンタ４１８を含む。一実施形態において、時間アロケータ４００は、１つのグラフィックレンダリングエンジンの使用を割り当てるために、経過時間の基準と公平使用の基準を提供する。一実施形態において、時間アロケータ４００は、複数の表示装置（図示せず）、各々がそれ自身の命令ストリーム４１３を有する複数のグラフィックアプリケーションプログラム、及び１つの命令ストリーム４１３における複数のグラフィックアプリケーションプログラムの間の独立画像をレンダリングするためにグラフィックレンダリングエンジン４１１を割り当てることが可能である。
【００４３】
第１リングバッファレジスタ４０２及び第２リングバッファレジスタ４０４のような各々のリングバッファレジスタはタイムスライシングされることが可能であるか、又は、リングバッファレジスタは第３リングバッファレジスタ２０６のようにタイムスライシングされない。後に説明するように、各々の非タイムスライスレジスタは、グラフィックレンダリングエンジン４１１の使用を一時的に独占するライブビデオのような優先度の高いグラフィック画像のために用いられることが可能である。
【００４４】
各々のタイムスライスリングバッファレジスタ４０２、４０４は、他のタイムスライスリングバッファへのスイッチングがチェックされるべきであることが示される前に実行される命令実行の所望の持続時間を特定するＴＩＭＥ＿ＳＬＩＣＥレジスタ４２０、４２２をそれに関連させる。一実施形態において、リングバッファレジスタ４０２、４０４におけるタイムスライスフィールド４２０、４２２は、この特定のリングバッファレジスタ４０２，４０４に一致する必要があるグラフィックレンダリングエンジン４１１を使用する割合を特定するために存在する。タイムスライスフィールド４２０、４２２は又、この特定のリングバッファレジスタ４０２，４０４に一致する必要があるグラフィックレンダリングエンジン４１１を使用する最小の絶対時間を特定することが可能である。一実施形態において、命令実行の好適な持続時間は、タイムユニットにおいてプログラムされることが可能である。一実施形態において、ドライバソフトウェア４２４は、各々のタイムスライスフィールド４２０、４２２にこれらのタイムユニット値を書き込むことが可能である。このようにして、ドライバソフトウェア４２４は、各々のタイムスライスリングバッファレジスタ４２０、４２２に当てられる絶対時間と相対時間の両方を制御することが可能である。ＣＰＵ４４０は、メモリ４４２のようなメモリからドライバソフトウェア４２４にアクセスする。
【００４５】
ユニットレジスタ４１４は、ドライバソフトウェア４２４により用いられるタイムクアンタムを前方互換ユニットタイムに提供する。ユニットタイムクアンタムの確立は、実際の装置の時間基準が設定及び／又は実行の間で変化することとなる。一実施形態において、ユニットレジスタ４１４は、実際の時間基準としてグラフィックドライバ４００のコアクロック周期を用いている。ユニットレジスタ４１４は、グラフィック装置４００のためのＢＩＯＳファームウェア４２６によりプログラムされることが可能である。他のタイムスライスパラメータは、ユニットレジスタ４１４により確立されたこのユニットタイムクアンタムに関連して定義される。ユニットレジスタ４１４により規定された各々のユニットタイムクアンタムは、例えば、１ユニット時間が５０マイクロ秒に等しい又は１ユニット時間が４０クロックサイクルに等しいとすることが可能である。
【００４６】
ユニットレジスタ４１４は又、リングバッファタイムスライシングをオン又はオフにするために、タイムスライスイネーブルビット（Ｔ）４２８を含む。一実施形態において、ユニットレジスタ４１４のタイムスライスイネーブルビット４２８が明確であるとき、固定リングバッファの優先度は効力がある。一実施形態において、タイムスライスイネーブルビットが設定されるとき、タイムスライスリングバッファレジスタ間の裁定はタイムスライスフィールド４２０、４２２により制御される。
【００４７】
タイマーレジスタ４１２はタイムスライスのタイミング制御を実行する。タイムスライスイネーブルビット４２８が設定されるとき、タイムレジスタ４１２は、各々のリングバッファレジスタ４０２、４０４のタイムスライスフィールド４２０、４２２位置に書き込まれたユニットの値を読み込む。このモードにおいて、第１リングバッファメモリ領域４３０のような特定のリングバッファメモリ領域に命令を供給する命令ストリーム４１３の起動又は再起動は、タイマーカウントダウンフィールド（ＴＣ）４３４が第１リングバッファレジスタ４２０のような特定のリングバッファのタイムスライスレジスタ４２０、４２２位置に内容値と共に初期化されるようにする。タイマーカウントダウンフィールド４３４は、全てのタイムユニットを減少させる一方、リングバッファメモリ領域からの命令の実行は継続する。
【００４８】
タイムスライスカウンタ４１８は、タイマーカウントダウンフィールド４３４に全てのタイムユニットを減少させる。ユニットタイムカウンタ４１６は、全てのコアクロックサイクルをモニタし且つカウントする。ユニットタイムカウンタ４１６は、ユニットレジスタ４１４により規定される確立ユニットタイムクアンタムに基づくタイマーカウントダウンフィールド４３４を減少させるために、タイムスライスカウンタ４１８に信号を送信する。
【００４９】
一実施形態において、次のような２つの条件が存在する場合、グラフィクレンダリングエンジン４１１は、リングバッファメモリ領域からの命令のレンダリングを止め、他のリングバッファメモリ領域からの命令のレンダリングを開始するために、裁定及びスイッチングモジュールから命令を受信する。２つの条件において、タイマーカウントダウンフィールド４３４が０になる場合、保留中の命令が他のリングバッファメモリ領域に存在する。グラフィックレンダリングエンジン４１１は、次いで、第２リングバッファメモリ領域４３２のような他のリングバッファメモリ領域の実行に向けてスイッチングし、これにより、タイマーカウントダウンフィールド４３４が第２リングバッファレジスタ４０４のタイムスライスフィールド４２２におけるコンテンツと共に再初期化されるようにする。このスイッチングは、次の命令の裁定ポイントにおいて生じる。
【００５０】
しかしながら、タイマーカウントダウンフィールド４３４が０になるとき、第１リングバッファメモリ領域４３０のような他のリングバッファメモリ領域における保留中の命令がない場合、現リングバッファメモリ領域における命令の実行が継続される。位置実施形態において、現リングバッファメモリ領域における命令の実行は、他のリングバッファレジスタが命令の存在を通信するときまで、いつまでも続く。一実施形態において、第１リングバッファレジスタ４０２のようなリングバッファレジスタは、ヘッドオフセットフィールド４１５における値がテールオフセット値４１７と異なるとき、実行する命令の存在を示す。位置実施形態において、新しい命令の存在は、裁定及びスイッチングモジュール４１０に通信される。裁定及びスイッチングモジュールは、タイムスライスフィールド４０２、４２２において指定された値について現リングバッファメモリ領域において命令の実行を継続し、次いで、新しい命令の実行に向けてスイッチングする。
【００５１】
アクティブなコンテキスト識別レジスタは、裁定及びスイッチングモジュール４１０によりグラフィックレンダリングエンジン４１１に、アクティブなリングバッファレジスタ（図示せず）のコンテキスト識別レジスタ値を通信する。
【００５２】
幾つかの機構は、それぞれのリングバッファメモリ領域に記憶された保留中の命令を有する２つのリングバッファレジスタ間のグラフィックレンダリングエンジン４１１の使用のための裁定プロセスを中断させることができる。上述のように、第３リングバッファレジスタ４０６のような非タイムスライシングの優先度の高いリングバッファは、タイマーカウントダウン４３４を中断するために裁定及びスイッチングモジュール４１０に通信し、現アクティブタイムスライスリングバッファレジスタのための命令をレンダリングすることが可能である。このような中断は、グラフィックレンダリングエンジン４１１が非タイムスライスリングバッファに関連する現命令のレンダリングを終了するまでの、一時的なものである。
【００５３】
グラフィックアプリケーションソフトウェアからの命令ストリーム４１３は、グラフィックレンダリングエンジン４１１の裁定使用を一時的に中断させるための命令を含むことが可能である。例えば、“レジスタをロードせよ”命令４２３は、それぞれのリングバッファメモリ領域４３０、４３２に記憶された保留中の命令を有する２つのタイムスライスリングバッファレジスタ４０２、４２２間のグラフィックレンダリングエンジン４１１の裁定使用を中断することが可能である。ソフトウェアは、タイマーカウントダウンフィールド４３４をクリアするために“レジスタをロードせよ”命令４２３を用いることができ、それ故、保留中の命令が他のリングバッファメモリ領域に存在する場合、アクティブなリングバッファレジスタがそのタイムスライスの期間の残りを放棄するように効果的にする。例えば、実行される命令のための時間が、リングバッファレジスタ４０２、４２２に一致する絶対最小時間又は特定の使用割合のどちらかを上回ることを予測されないとき、“レジスタをロードせよ”命令４２３が用いられることが可能である。一実施形態において、第１ストリームに関連する命令が全体のタイムスライス期間を取らない場合、裁定及びスイッチングモジュール４１０は、保留中の命令を含んでいる他のリングバッファメモリ領域にスイッチングされる。又、例えば、“レジスタをロードせよ”命令４２３は、グラフィックレンダリングエンジン４１１が特定の命令シーケンスに関して機能する前に、第２アプリケーションのための保留中の命令が処理されることが可能であるように、きわめて時間を消費する命令又は中断されない命令シーケンスに先立って使用されることが可能である。
【００５４】
上述のように、実行する準備ができている命令をもつ他のリングバッファメモリ領域４３０、４３２がない場合、命令の実行は合格した“レジスタをロードせよ”命令４２３を継続する。他のリングバッファ命令の実行の後、他のリングバッファメモリ領域４３０、４３２が実行される命令を有しない場合、グラフィックレンダリングエンジン４１１は、タイマーカウントダウン４３４による待ち時間なしにオリジナルのリングバッファの命令に戻るように即座にスイッチングされる。
【００５５】
命令ストリーム４１３は又、“イベントを待て”命令４２５を含むことが可能である。“イベントを待て”命令４２５は、特定の条件が存在するか特定のイベントが生じるまで、この特定の命令ストリーム４１３からの命令の実行を休止するために用いられることが可能である。“イベントを待て”命令４２５の実行が休止を結果的にもたらす場合、他のタイムスライスリングバッファレジスタ４０２、４０４は、中断中のリングバッファのタイムスライス期間の残りが切れる前であったとしても、グラフィックレンダリングエンジンはそれらの関連する命令を処理することを可能にする。例えば、“イベントを待て”命令４２５は、ビデオ捕捉イベントを待つために用いられることが可能である。表示装置は、表示装置の表示スクリーンの垂直最上部からスクリーンの垂直下部までいくとき、画像を表示するためにそれらの命令を用いる必要がある。このように、グラフィックレンダリングエンジン４１１は、表示スクリーン上の完全な画像のための命令全てをレンダリングし、移行期間が垂直最上部から垂直下部までの間に切れるまで、表示装置のためにそれ以上命令をレンダリングすることはない。グラフィック装置４００がそのようなイベントが生じることを待っている間に、“イベントを待て”命令４２５は、グラフィクレンダリングエンジン４１１が現表示装置のために生じる非同期性イベントを待っている間に異なる表示装置に関連する他のタイムスライスリングバッファメモリ領域の処理を再度可能にするようにする。非同期性イベントは、ビデオ捕捉イベントのように、規則的なインターバル又は時間と調和するようにして起こらないイベントである。一実施形態において、非同期性イベントは、ランダムに又は命令ストリームの実行に関係ないインターバルで起こる。例えば、表示装置の垂直のブランクイベント、非同期イベントは、実際には、現実世界の時間における規則的なインターバル（即ち６０Ｈｚ）で起こるが、命令ストリーム４１３の実行に関する不規則なサービス時間に対して非同期である。
【００５６】
図５及び図６は、１つのグラフィックレンダリングエンジンを用いる複数の表示装置上の複数の画像をレンダリングするためのプロセスの実施形態のフロー図を示している。命令ストリームは、１つ又はそれ以上のグラフィックアプリケーションから命令搬送部に命令ストリームが命令を運ぶとき、そのプロセスを始める。
【００５７】
ブロック５０５において、リングバッファレジスタにより規定される第１リングバッファメモリ領域は、複数のグラフィックアップリケーションプログラムか又は１つのグラフィックアプリケーションプログラムにより、命令を受信する。第１リングバッファメモリ領域の位置及びサイズは、第１リングバッファレジスタに含まれるプログラマブルコンテンツにより規定されることが可能である。命令搬送部は、１つ又はそれ以上のリングバッファレジスタ又は類似した装置を含むことが可能である。
【００５８】
ブロック５１０においては、ドライバは、第１リングバッファメモリ領域に画像を表示する命令を記憶する。一実施形態において、対応するリングバッファレジスタにおけるテールオフセットフィールドは、第１リングバッファメモリ領域に含まれる保留中の命令の存在を示すためにドライバにより変化される。第１リングバッファレジスタは、グラフィックレンダリングエンジンと裁定及びスイッチングモジュールに、実行される命令の存在を知らせる。
【００５９】
ブロック５１５においては、命令搬送部は、グラフィックレンダリングエンジンのために第１リングバッファメモリから命令を持ってくるようにＤＭＡエンジンを用いる。裁定及びスイッチングモジュールは、グラフィックレンダリングエンジンが命令を処理するメモリとして、第１リングバッファメモリを設定する。
【００６０】
ブロック５２０においては、グラフィックコンテキストマネージャが第１リングバッファレジスタに関連する現レンダリングを設定する。
【００６１】
ブロック５２５においては、一実施形態において、グラフィックレンダリングエンジンにより処理される第１（現）画像が、次に処理される第２（次の）画像と異なるレンダリングコンテキストを有する場合、次のようなことが生じる。グラフィックコンテキストマネージャは第１画像に関連するレンダリングコンテキストを記憶し、グラフィックレンダリングエンジンに第２画像に関連するコンテキストを回復させる。グラフィックコンテキストマネージャは、確立メモリ位置のような第２メモリ領域における特定のグラフィックアプリケーションからの画像に関連するレンダリングコンテキストを表す状態変数値を記憶し且つ回復させる。第２メモリ領域は、コンテキスト識別レジスタのような第２レジスタに含まれるプログラマブルコンテンツにより規定されることが可能である。
【００６２】
ブロック５３０において、グラフィックレンダリングエンジンは、第１リングバッファメモリ領域のような打アイ１表示装置に関連するリングバッファメモリ領域からの命令を実行し、第１画像表示メモリ領域に適切な修正を行う。時間アロケータに基づいて、グラフィックレンダリングエンジンは、次いで、第２表示装置に関連する第２リングバッファメモリ領域からの命令の実行を開始することが可能である。一実施形態において、グラフィックレンダリングエンジンは、第１リングバッファメモリ領域を供給する同じ命令ストリーム内に含まれる第２グラフィックアプリケーションからの命令の実行を開始する。このようにして、グラフィックレンダリングエンジンは、第１独立画像に関連する命令と第２独立画像に関連する命令との処理の間に、スイッチングにより交互に変わる。グラフィックレンダリングエンジンは、同じ命令ストリーム内の２つの異なるグラフィックアプリケーションからの命令を処理することにより、又は異なるリングバッファメモリ領域からの処理命令間で、スイッチングすることが可能である。グラフィックレンダリングエンジンは、第２独立画像に関連する命令を処理することを開始する前に、第１独立画像に関連する全ての命令を完全に処理することを待つ必要はないことに留意されたい。
【００６３】
ブロック５３５において、時間アロケータは、第１独立画像と第２独立画像に関連する命令の間のグラフィックレンダリングエンジンのバランス使用をロードすることが可能である。一実施形態において、時間アロケータは、２つ又はそれ以上の独立画像に関連する命令の間でグラフィックレンダリングエンジンのバランス使用をロードすることが可能である。一実施形態において、時間アロケータは、各々の画像について決定されるグラフィックレンダリングエンジンの絶対最小使用時間と各々の画像について決定される割合とに基づくグラフィックレンダリングエンジンの使用のバランスをとる。時間アロケータは又、グラフィックレンダリングエンジンの即座の使用を要求する優先度の高い画像、並びに、グラフィックレンダリングエンジンの使用割合と絶対最小時間使用とを共有する画像との間でグラフィックレンダリングエンジンの使用のバランスをとることが可能である。
【００６４】
ブロック５４０において、時間アロケータは、異なるコア周波数で機能する装置と互換性があるタイミング回路においてユニットタイムクアンタムを確立することが可能である。これらのブロックは、任意のセットのシーケンシャル順序の実行を示すことが可能という訳ではないことに留意されたい。例えば、ブロック５４０は、ブロック５０５の前に置くことが可能である。
【００６５】
ブロック５４５において、時間アロケータは、グラフィック装置ドライバからのソフトウェア命令により第２画像に関連する命令に対してグラフィックレンダリングエンジンを用いるために、第１画像に関連する命令のために指定される時間を生成することが可能である。
【００６６】
ブロック５５０において、時間アロケータは、グラフィックアプリケーションからのソフトウェア命令により第１画像に生じる画像レンダリングイベントを待つ間に、グラフィックレンダリングエンジンが、第２画像に関連する命令を処理するようにすることが可能である。
【００６７】
ブロック５５５において、グラフィック装置は、１つ又はそれ以上の表示装置上に複数の画像を同時に表示する。
【００６８】
ブロック５７０において、グラフィック装置は、ブロック５０５において開始されたプロセスを継続する。
【図面の簡単な説明】
【００６９】
【図１】複数の表示装置に１つ又はそれ以上の画像を表示するために１つのグラフィックレンダリングエンジンを用いて１つ又はそれ以上の画像をレンダリングするグラフィック装置の実施形態を示すブロック図である。
【図２】中央演算処理装置（ＣＰＵ）、キャッシュ、メモリ、表示装置及び命令搬送部の実施形態とグラフィックコンテキストマネージャに実施形態を有するグラフィック装置を含むコンピュータシステムの実施形態を示すブロック図である。
【図３】リングバッファメモリ領域の実施形態を示すブロック図である。
【図４】レンダリングされた各々の独立画像間においてグラフィックレンダリングエンジンの使用を割り当てるための時間アロケータの実施形態を示すブロック図である。
【図５】１つのグラフィックレンダリングエンジンを用いて複数の表示装置において複数の画像をレンダリングするための実施形態を示すフロー図である。
【図６】１つのグラフィックレンダリングエンジンを用いて複数の表示装置において複数の画像をレンダリングするための実施形態を示すフロー図である。
【図１】
2004531841.tif 000003
【図２】
2004531841.tif 000004
【図３】
2004531841.tif 000005
【図４】
2004531841.tif 000006
【図５】
2004531841.tif 000007
【図６】
2004531841.tif 000008
【国際公開パンフレット】
2004531841.tif 000009
2004531841.tif 000010
2004531841.tif 000011
2004531841.tif 000012
2004531841.tif 000013
2004531841.tif 000014
2004531841.tif 000015
2004531841.tif 000016
2004531841.tif 000017
2004531841.tif 000018
2004531841.tif 000019
2004531841.tif 000020
2004531841.tif 000021
2004531841.tif 000022
2004531841.tif 000023
2004531841.tif 000024
2004531841.tif 000025
2004531841.tif 000026
2004531841.tif 000027
2004531841.tif 000028
2004531841.tif 000029
2004531841.tif 000030
2004531841.tif 000031
2004531841.tif 000032
2004531841.tif 000033
2004531841.tif 000034
2004531841.tif 000035
2004531841.tif 000036
2004531841.tif 000037
2004531841.tif 000038
2004531841.tif 000039
2004531841.tif 000040
2004531841.tif 000041
2004531841.tif 000042
2004531841.tif 000043
2004531841.tif 000044
2004531841.tif 000045
2004531841.tif 000046
2004531841.tif 000047
2004531841.tif 000048
2004531841.tif 000049
2004531841.tif 000050
【国際公開パンフレット（コレクトバージョン）】
2004531841.tif 000051
2004531841.tif 000052
【国際調査報告】
2004531841.tif 000053
2004531841.tif 000054
2004531841.tif 000055