(57)【特許請求の範囲】
【請求項１】
レンダーターゲットの選択を受け付けるステップと；
前記レンダーターゲットの選択を受け付けるステップの後に、前記選択されたレンダーターゲットへのグラフィックス・アプリケーション・プログラム・インターフェース（ＡＰＩ）要求のシーケンスを受信するステップであって、前記シーケンスはディスエーブルされたグラフィックス処理パイプラインテストを含み、前記選択されたレンダーターゲットは複数のピクセルを含む、ステップと；
前記シーケンスを受信するステップの後に、グラフィックスＡＰＩ要求の前記シーケンスをログ・データベースに記憶するステップと；
前記シーケンスを記憶するステップの後に、グラフィックスＡＰＩ要求のシーケンスにおけるグラフィックスＡＰＩ要求によって前記選択されたレンダーターゲットのピクセルに書き込まれることを生じさせる回数を特定するステップと；
前記回数を特定するステップの後に、前記選択されたレンダーターゲットへの処理の結果を、複数のピクセルに対する描画要求を含むピクセルヒストリーとして、提示するステップと；
前記提示するステップの後、ピクセルの選択を受信するステップと；
前記ピクセルの選択を受信するステップの後、前記選択されたレンダーターゲットへの処理の間に、前記選択されたピクセルに、影響を与えた前記グラフィックスＡＰＩ要求のシーケンスの、複数のグラフィックスＡＰＩ要求を提示するステップと；
前記要求を提示するステップの後、複数の提示されたグラフィックスＡＰＩ要求の一つの選択を受信するステップと；
前記要求の一つの選択を受信するステップの後、グラフィックス処理パイプラインテストがディスエーブルされた前記選択されたグラフィックスＡＰＩ要求による第１のパスを実行するステップと；
前記第１のパスを実行するステップの後、前記ディスエーブルされたグラフィックス処理パイプラインテストの選択された１つがイネーブルされた前記選択されたグラフィックスＡＰＩ要求による第２のパスを実行するステップと；
前記第２のパスを実行するステップの後、前記レンダーターゲットの前記選択されたピクセルに対するピクセルヒストリーを生成するステップであって、前記ピクセルヒストリーは、前記選択されたグラフィックスＡＰＩ要求を介した前記第１のパスと前記第２のパスとを含む、ステップと；
前記ピクセルヒストリーを生成するステップの後に、前記第１のパス及び前記第２のパスにおける前記選択されたグラフィックスＡＰＩ要求によって、前記選択されたピクセルが書き込まれる数を特定するステップと；
前記数を特定するステップの後に、前記選択されたグラフィックスＡＰＩ要求を介した前記第１のパス及び前記第２のパスに基づいて、前記選択されたピクセルが書き込まれる数に関する前記イネーブルされたグラフィックス処理パイプラインテストの影響を出力するステップと；
を有する方法。
【請求項２】
ピクセルヒストリーを生成するステップは、グラフィックスＡＰＩ要求に基づいて、上書きイメージを形成するステップを含み、
ピクセルの選択を受信するステップは、前記上書きイメージに基づいた選択を受信するステップを含む、
請求項１記載の方法。
【請求項３】
前記上書きイメージを形成するステップは、
前記ピクセルが書き込まれる毎に、ピクセルヒットカウントをインクリメントするステップ、を有する請求項２記載の方法。
【請求項４】
前記選択されたグラフィックスＡＰＩ要求を介した前記第２のパスは、ディスエーブルされた１つ以上のグラフィックス処理パイプラインテストで実行される、
請求項１記載の方法。
【請求項５】
前記ピクセルヒストリーは、ログを取られたグラフィックスＡＰＩ要求の選択し得るリストを含み、かつパスを実行するステップは、前記選択し得るリストからログを取られたグラフィックスＡＰＩ要求の選択を受信すると選択されたグラフィックスＡＰＩ要求を実行するステップを含む、
請求項１記載の方法。
【請求項６】
前記選択されたテストは、範囲指定されたシザーテスト、Ｚテストまたはステンシルテストのうちの１つである、
請求項１記載の方法。
【請求項７】
前記ピクセルヒストリーを生成するステップは、前記選択されたテストが、前記選択されたピクセルに対して適用された都度失敗した場合、前記選択されたピクセルに対してゼロピクセル値を示し、前記選択されたピクセルに対して少なくとも１度は、前記選択されたテストがパスした場合、非ゼロピクセル値を示す、ステップを含む、
請求項１記載の方法。
【請求項８】
ディスプレイにグラフィックスを描画するグラフィックスＡＰＩ要求を生成するアプリケションプログラミングインタフェース（ＡＰＩ）と、前記グラフィックスＡＰＩ要求のインタフェースオペレーションを制御するグラフィックスエンジンと、オペレーションを実行するグラフィックス解析ツールを含む装置であって、前記オペレーションは：
レンダーターゲットの選択を受け付け；
前記レンダーターゲットの選択を受け付けた後に、前記選択されたレンダーターゲットへのグラフィックス・アプリケーション・プログラム・インターフェース（ＡＰＩ）要求のシーケンスを受信し、前記シーケンスはディスエーブルされたグラフィックス処理パイプラインテストを含み、前記選択されたレンダーターゲットは複数のピクセルを含み；
前記シーケンスを受信した後に、グラフィックスＡＰＩ要求の前記シーケンスをログ・データベースに記憶し；
前記シーケンスを記憶した後に、グラフィックスＡＰＩ要求のシーケンスにおけるグラフィックスＡＰＩ要求によって前記選択されたレンダーターゲットのピクセルに書き込まれることを生じさせる回数を特定し；
前記回数を特定した後に、前記選択されたレンダーターゲットへの処理の結果を、複数のピクセルに対する描画要求を含むピクセルヒストリーとして、提示し；
前記提示した後、ピクセルの選択を受信し；
前記ピクセルの選択を受信した後に、前記選択されたレンダーターゲットへの処理の間に、前記選択されたピクセルに、影響を与えた前記グラフィックスＡＰＩ要求のシーケンスの、複数のグラフィックスＡＰＩ要求を提示し；
前記要求を提示した後、複数の提示されたグラフィックスＡＰＩ要求の一つの選択を受信し；
前記要求の一つの選択を受信した後、グラフィックス処理パイプラインテストがディスエーブルされた前記選択されたグラフィックスＡＰＩ要求による第１のパスを実行し；
前記第１のパスを実行した後に、前記ディスエーブルされたグラフィックス処理パイプラインテストの選択された１つがイネーブルされた前記選択されたグラフィックスＡＰＩ要求による第２のパスを実行し；
前記第２のパスを実行した後、前記レンダーターゲットの前記選択されたピクセルに対するピクセルヒストリーを生成し、前記ピクセルヒストリーは、前記選択されたグラフィックスＡＰＩ要求を介した前記第１のパスと前記第２のパスとを含み；
前記ピクセルヒストリーを生成した後に、前記第１のパス及び前記第２のパスにおける前記選択されたグラフィックスＡＰＩ要求によって、前記選択されたピクセルが書き込まれる数を特定し；
前記数を特定した後に、前記選択されたグラフィックスＡＰＩ要求を介した前記第１のパス及び前記第２のパスに基づいて、前記選択されたピクセルが書き込まれる数に関する前記イネーブルされたグラフィックス処理パイプラインテストの影響を出力する；
ことを含む、装置。
【請求項９】
前記グラフィックス解析ツールは
グラフィックスＡＰＩ要求に基づいて、上書きイメージを形成し、前記上書きイメージは、前記レンダーターゲットのピクセルが書き込まれた数を表し、
ピクセルの選択を受信することは、前記上書きイメージに基づいた選択を受信することを含む、
請求項８記載の装置。
【請求項１０】
複数のグラフィックスＡＰＩ要求のシーケンスを生成するグラフィックスアプリケーションを更に含む、
請求項８記載の装置。
【請求項１１】
前記グラフィックスエンジンは、グラフィックスパイプラインを含む、
請求項８記載の装置。
【請求項１２】
前記グラフィックス解析ツールは、ログ・データベースを含む、
請求項８記載の装置。
【請求項１３】
前記グラフィックス解析ツールは、レンダリングされたフレームを記憶するデータベースを含む、
請求項８記載の装置。
【請求項１４】
前記ピクセルヒストリーは、前記選択されたピクセルに影響を与える前記グラフィックスＡＰＩ要求のリストを含む、
請求項８記載の装置。
【請求項１５】
イメージを生成することは、前記第１のパス及び前記第２のパスにおいて、前記グラフィックスＡＰＩ要求によって、前記選択されたピクセルが書き込まれた回数を表す、
請求項８記載の装置。
【請求項１６】
前記ピクセルヒストリーを生成することは、前記選択されたテストが、前記選択されたピクセルに対して適用された都度失敗した場合、前記選択されたピクセルに対してゼロピクセル値を示し、前記選択されたピクセルに対して少なくとも１度は、前記選択されたテストがパスした場合、非ゼロピクセル値を示すことを含む、
請求項８記載の装置。
【請求項１７】
レンダーターゲットの選択を受け付けるステップと；
前記レンダーターゲットの選択を受け付けるステップの後に、前記選択されたレンダーターゲットへのグラフィックス・アプリケーション・プログラム・インターフェース（ＡＰＩ）要求のシーケンスを受信するステップであって、前記シーケンスはディスエーブルされたグラフィックス処理パイプラインテストを含み、前記選択されたレンダーターゲットは複数のピクセルを含む、ステップと；
前記シーケンスを受信するステップの後に、グラフィックスＡＰＩ要求の前記シーケンスをログ・データベースに記憶するステップと；
前記シーケンスを記憶するステップの後に、グラフィックスＡＰＩ要求のシーケンスにおけるグラフィックスＡＰＩ要求によって前記選択されたレンダーターゲットのピクセルに書き込まれることを生じさせる回数を特定するステップと；
前記回数を特定するステップの後に、前記選択されたレンダーターゲットへの処理の結果を、複数のピクセルに対する描画要求を含むピクセルヒストリーとして、提示するステップと；
前記提示するステップの後、ピクセルの選択を受信するステップと；
前記ピクセルの選択を受信するステップの後、前記選択されたレンダーターゲットへの処理の間に、前記選択されたピクセルに、影響を与えた前記グラフィックスＡＰＩ要求のシーケンスの、複数のグラフィックスＡＰＩ要求を提示するステップと；
前記要求を提示するステップの後、複数の提示されたグラフィックスＡＰＩ要求の一つの選択を受信するステップと；
前記要求の一つの選択を受信するステップの後、グラフィックス処理パイプラインテストがディスエーブルされた前記選択されたグラフィックスＡＰＩ要求による第１のパスを実行するステップと；
前記第１のパスを実行するステップの後、前記ディスエーブルされたグラフィックス処理パイプラインテストの選択された１つがイネーブルされた前記選択されたグラフィックスＡＰＩ要求による第２のパスを実行するステップと；
前記第２のパスを実行するステップの後、前記レンダーターゲットの前記選択されたピクセルに対するピクセルヒストリーを生成するステップであって、前記ピクセルヒストリーは、前記選択されたグラフィックスＡＰＩ要求を介した前記第１のパスと前記第２のパスとを含む、ステップと；
前記ピクセルヒストリーを生成するステップの後に、前記第１のパス及び前記第２のパスにおける前記選択されたグラフィックスＡＰＩ要求によって、前記選択されたピクセルが書き込まれる数を特定するステップと；
前記数を特定するステップの後に、前記選択されたグラフィックスＡＰＩ要求を介した前記第１のパス及び前記第２のパスに基づいて、前記選択されたピクセルが書き込まれる数に関する前記イネーブルされたグラフィックス処理パイプラインテストの影響を出力するステップと；
を含むオペレーションをコンピュータに実行させるプログラム。
【請求項１８】
前記オペレーションは、前記レンダーターゲットへの第２のパスに対するグラフィックスＡＰＩ要求の第２のシーケンスを受信するステップを更に含み、前記グラフィックスＡＰＩ要求の第２のシーケンスは、ディスエーブルされた１つ以上のグラフィックス処理パイプラインテストによる前記選択されたレンダーターゲットに対応する、
請求項１７記載のプログラム。
【請求項１９】
前記オペレーションは、
グラフィックスＡＰＩ要求の前記第１のパス及び第２のパスの間に、前記選択されたピクセルが書き込まれた回数に対して、幾つかの前記グラフィックスＡＰＩ要求のディスエーブルが与える影響を特定するステップを更に有する、
請求項１８記載のプログラム。
【請求項２０】
前記ピクセルヒストリーを生成するステップは、前記選択されたテストが、前記選択されたピクセルに対して適用された都度失敗した場合、前記選択されたピクセルに対してゼロピクセル値を示し、前記選択されたピクセルに対して少なくとも１度は、前記選択されたテストがパスした場合、非ゼロピクセル値を示す、ステップを含む、
請求項１７記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、グラフィック・アプリケーションの分析技術に関する。
【背景技術】
【０００２】
コンピュータアプリケーションによって使用されるグラフィックは、ますます複雑になっている。例えば、ゲーム・アプリケーションは、通常、リアルタイム・ベースでのアニメーションを得る３次元グラフィクスを提供する。グラフィックをテストし、分析し、かつ、デバッグするためのツールは、グラフィック・アプリケーションの発展にとって重要である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
この種のグラフィックは、次第にリアルなものとなってきている。この種のグラフィックの複雑度が増加するにつれて、アプリケーション開発者に対する課題も増加する。例えば、開発者は、グラフィックレンダリングが動作しない場合や、正常に表示されない場合に、デバッグしなければならない。開発者は、限られた処理能力を取扱わなければならない。
【課題を解決するための手段】
【０００４】
したがって、グラフィックレンダリングによる処理負荷が分析され、かつこの種の限られた能力の範囲内で適合するように改良することが必要となる。
【０００５】
図面において、同様の符号は、能的に類似した、および／または、構造的に類似した要素を示す。要素が最初に示された図面の番号は、参照番号の最上位桁によって示される。本発明は、添付の図面を参照して後述する。
【図面の簡単な説明】
【０００６】
【図１】例示的なオペレーション環境の図である。
【図２】グラフィック解析ツールに含まれ得るインプリメンテーションの図である。
【図３】例示的なユーザインタフェースの図である。
【図４】論理流れ図である。
【図５】論理流れ図である。
【図６】論理流れ図である。
【図７】論理流れ図である。
【図８】論理流れ図である。
【図９】論理流れ図である。
【図１０】例示的なプラットフォームの図である。
【発明を実施するための形態】
【０００７】
実施例は、グラフィック・アプリケーションの分析の技術を提供する。例えば、装置は、グラフィック・アプリケーション・プログラム・インターフェース（ＡＰＩ）、グラフィックエンジン、およびグラフィック解析ツールを含む。グラフィック解析ツールはグラフィックＡＰＩに発行された複数の描画要求（draw  call）を受信してもよく、かつ、複数のシーケンスとして描画要求を配置する（並べる）。各々のシーケンスはレンダーターゲットに対応する。この情報から、さまざまな分析タスクが遂行されてもよい。例えば、上書き（ｏｖｅｒｄｒａｗ）イメージが生成されてもよい。また、ピクセルヒストリーが、対応するピクセル選択に基づいて生成されてもよい。更に、選択されたピクセル上の描画要求の効果が決定されてもよい。さらに、この種のタスクは、レンダリングターゲット毎に実行されてもよい。
【０００８】
本明細書の全体にわたって「一実施例」または「実施例」という語は、実施例に対応して記載されている特定の特徴または構造が少なくとも一つの実施例に含まれることを意味する。したがって、「実施例において」という言葉は、本明細書の全体にわたって、必ずしも同じ実施例に関するものというわけではない。さらにまた、特定の特徴または構造は、一つ以上の実施例のいかなる適切な方法に組み込まれてもよい。
【実施例】
【０００９】
図１は例示的なオペレーション環境１００の図である。そして、それは本願明細書において記載されている技術を使用し得る。環境１００は、さまざまな要素を含んでもよい。例えば、図１は、グラフィック・アプリケーション１０２、グラフィック・アプリケーション・プログラム・インターフェース（ＡＰＩ）１０４、グラフィックエンジン１０６、およびグラフィック解析ツール１１０を含む環境１００を示している。これらの要素は、ハードウェアおよび／またはソフトウェアのいかなる組合せでインプリメントされてもよい。さらに、実施例は、図１の要素に限られない。
【００１０】
実施例において、グラフィック・アプリケーション１０２（例えばユーザアプリケーション）は、コンピュータアプリケーションであり、一つ以上のディスプレイにグラフィック（例えば３次元グラフィクス）を出力する。例示的なユーザアプリケーションとしては、ビデオゲーム、およびシミュレーション・ツールが含まれる（なおこれに制限されるものではない）。
【００１１】
グラフィックＡＰＩ１０４は、グラフィック・アプリケーション１０２にグラフィックエンジン１０６のサービスを提供する。実施例において、これは、さまざまなルーチン、データ構造、オブジェクト・クラスおよび／またはプッロト要求で提供されてもよい。この種のグラフィックＡＰＩ１０４の使用を、本願明細書において「描画要求」と呼ぶ。実施例は、商用として利用可能なＡＰＩを使用してもよい（これに制限されるものではない）。この種のＡＰＩの例としては、ＯｐｅｎＧＬ、ＤｉｒｅｃｔＸ等が含まれる。
【００１２】
一般のオペレーションにおいて、グラフィック・アプリケーション１０２は、複数のレンダーターゲットを用いて、グラフィックを生成してもよい。
【００１３】
レンダーターゲットとは、（グラフィックエンジン１０６によって管理される）バッファである。このバッファは、グラフィックＡＰＩ１０４を介してグラフィック・アプリケーション１０２が生成する作画オペレーションによって影響を受ける。
【００１４】
複数のレンダーターゲットは、さまざまな方法で使用されてもよい。例えば、グラフィック・アプリケーション１０２は、複数のレンダーターゲットを用いてもよい。各レンダーターゲットは、特定の効果に対応する。典型的な効果としては、シャドーイング（Ｓｈａｄｏｗｉｎｇ）、霧、照明、動きに起因するブラー等がある（なお、これに限定されるものではない）。加えて、または代替的には、複数のレンダーターゲットの各々は、レンダリングされた１つまたは複数のオブジェクトまたはプリミティブに対応する。しかしながら、実施例は、これらの例示的なレンダーターゲットの用途に限られない。
【００１５】
グラフィックエンジン１０６は、グラフィック・アプリケーション１０２のためのグラフィック処理を実行する。上述の通り、この種のオペレーションは、グラフィックＡＰＩ１０４で受信され、かつ処理された描画要求に応答して実行されてもよい。例示的なオペレーションとしては、イメージ（フレーム）をレンダリングすることとディスプレイ装置へ出力することとを含む。したがって、グラフィックエンジン１０６は、グラフィックパイプラインを使用する。上述の通り、グラフィックエンジン１０６は、ハードウェアおよび／またはソフトウェアのいかなる組合せによってインプリメントされてもよい。したがって、実施例において、グラフィックエンジン１０６は、グラフィック処理装置（ＧＰＵ）を含む。
【００１６】
図１において、グラフィック解析ツール１１０は、グラフィックＡＰＩ１０４、およびグラフィックエンジン１０６に接続される。グラフィック解析ツール１１０は、グラフィック・アプリケーションの分析を含むオペレーションを実行してもよい。これを行うため、グラフィック解析ツール１１０は、グラフィック・アプリケーション１０２によって作られる描画要求を取得してもよい。この描画要求に基づいて、グラフィック解析ツール１１０は、描画要求に関するオペレーション情報を生成するために、グラフィックエンジン１０６を用いてもよい。この情報は、上書きイメージおよびピクセルヒストリーを含んでもよい（これに制限されるわけではない）。
【００１７】
また、グラフィック解析ツール１１０は、グラフィックエンジン１０６によってレンダリングされたフレームを取得（またはキャプチャ）してもよい。また、グラフィック解析ツール１１０は、この種のキャプチャされたフレームに関連する描画要求を取得してもよい。さらに、グラフィック解析ツール１１０は、アプリケーション１０２に対応するフレームが生成されるレートを制御してもよい。この種のコントロールによって、フレームは、所望のペースで進行し得る。このペースは、ユーザによって設定されてもよい。
【００１８】
図１に関し上述したように、グラフィック解析ツール１１０は、グラフィック・アプリケーションの分析を含むオペレーションを実行してもよい。図２は、グラフィック解析ツール１１０に含まれてもよい例示的なインプリメンテーション２００の図である。図２は、グラフィックＡＰＩインターセプタ・モジュール２０２、グラフィックＡＰＩ要求・ログ・データベース２０４、再構成モジュール２０６、上書き解析モジュール２０７、ピクセルヒストリー解析モジュール２０８、再生モジュール２１０、およびユーザインタフェースモジュール２１２を含むインプリメンテーション２００を示している。これらの要素は、ハードウェアおよび／またはソフトウェアのいかなる組合せによってインプリメントされてもよい。
【００１９】
グラフィックＡＰＩインターセプタ・モジュール２０２は、グラフィック・アプリケーション（例えばグラフィック・アプリケーション１０２）を生成する、グラフィックＡＰＩオペレーション（本明細書において、描画要求と称される）を複製する。更に、グラフィックＡＰＩインターセプタ・モジュール２０２は、複製された描画要求を、グラフィックＡＰＩ要求ログ・データベース２０４に転送する。次に、グラフィックＡＰＩ要求・ログ・データベース２０４は、これらの受信された描画要求を記憶する。
【００２０】
グラフィックＡＰＩ要求ログ・データベース２０４は、受信した描画要求をさまざまな方法で記憶してもよい。例えば、グラフィックＡＰＩ要求・ログ・データベース２０４に描画要求を、時刻順に記憶してもよい。更に、この種の時刻順の記憶は、各々の複数のレンダーターゲットに対する描画要求にまとめられてもよい。
【００２１】
再構成モジュール２０６は、ＡＰＩ要求・ログ・データベース２０４に記憶されている描画要求に基づいて、さまざまなイメージ（フレーム）を生成してもよい。この種の再構成は、グラフィックエンジン（例えばグラフィックエンジン１０６）の使用を含む。さらに、この種のイメージを生成する場合、再構成モジュール２０６は、グラフィックエンジンに特定の設定を使用するように指示してもよい。例えば、特定のイベント（例えば上書き）が発生した数をレンダリングイメージが示すために、設定が変更されてもよい。また、再構成モジュール２０６は、グラフィックエンジンの中のさまざまなパイプラインテストを作動させ、または停止させてもよい。上書き解析モジュール２０７は、特定の描画要求に関する上書きを（レンターターゲット毎に）特定する。これは、選定された（ユーザにより選択されたか自動的に選択された）描画要求およびレンダーターゲットに基づいて、再構成モジュール２０６に、様々な上書きイメージを生成する。この種の特徴に関する例示的なオペレーションは、図４を使って後述する。
【００２２】
ピクセルヒストリー解析モジュール２０８は、ピクセルに書き込まれる（「描かれる（ｔｏｕｃｈｅｄ）」）描画要求のシーケンスを特定する。これは、再構成モジュール２０６に対して、さまざまな設定に従って特定のイメージを生成するように指示することを含んでもよい。この種の特徴に関する例示的なオペレーションは、図５、図６、および図７に関連して後述する。
【００２３】
ユーザインタフェースモジュール２１０は、グラフィック解析ツール１１０によってユーザとの対話処理を提供する。例えば、実施例において、ユーザインタフェースモジュール２１０は、本願明細書において記載されている技術に対して効率的なユーザ・オペレーションを提供するグラフィカルユーザーインタフェースを提供する。
【００２４】
フレーム記憶モジュール２１２は、グラフィックエンジン（例えばグラフィックエンジン１０６）によって生成される一つ以上のフレーム（イメージ）を記憶する。これらのフレームは、出力されるディスプレイ装置（図示せず）上の位置に対応する複数のピクセルを有する。フレームは、さまざまなフォーマットであってもよい。例示的なフォーマットとしては、さまざまなＲＧＢ、およびＣＭＹＫフォーマットを含む（これに制限されるわけではない）。また、フレームキャプチャデータベース１０８は、フレームを記憶するために
さまざまな圧縮およびまたはエンコードする方式を使用してもよい。
【００２５】
実施例において、これらのフレームは、本願明細書に記載されている技術に従って生成され得る。例えば、フレーム記憶モジュール２１２は、アプリケーション１０２、グラフィックＡＰＩ１０４、およびグラフィックエンジン１０６の正常動作で生成されるフレームを記憶してもよい。また、フレーム記憶モジュール２１２は、上書きイメージフレーム、ピクセルヒストリーフレーム、および他のタイプのフレームを含むフレームを記憶してもよい。
【００２６】
実施例は、グラフィック関連情報をユーザに表示するユーザインタフェースを提供する。図３は、例示的なユーザインタフェース（また、インターフェース・コンソールと称する）３００の図である。インターフェース・コンソール３００によって、ユーザはグラフィック処理に関連づけられたさまざまな情報を見ることができる。図３に示すように、インターフェース・コンソール３００は、描画要求・フィールド３０２、レンダーターゲットフィールド３０４、イメージレンダリングフィールド３０６、およびピクセルヒストリーフィールド３０８を有する。
【００２７】
レンダーターゲットフィールド３０４は、複数の特定のイメージに関連づけられたレンダーターゲットを示す。実施例において、このレンダーターゲットは、アイコンまたは他のグラフィック表示として示されてもよい。ユーザは、ＧＵＩ対話オペレーションによって（例えば、カーソル配置、およびダブルクリックすることによって）特定の描画要求を選んでもよい。
【００２８】
実施例において、描画要求・フィールド３０２は、時刻順の（例えば、左から右の）バーチャート形式で、描画要求（例えば、フィールド３０４で選択されたレンダーターゲットに対応する描画要求）を示す。したがって、各々のバーは、特定の描画要求に対応する。さらに、各々のバーの高さは、対応する描画要求によって生じるグラフィックエンジン・オペレーションの数（例えばパイプライン・オペレーション）を示す。実施例において、ユーザは、ＧＵＩ対話オペレーションによって（例えば、カーソル配置、およびダブルクリックすることによって）特定の描画要求を選んでもよい。
【００２９】
選択された描画要求に基づいて、ユーザは、上書きイメージをイメージレンダリングフィールド３０６において見ることができる。上書きイメージに関する特徴については、図４を用いて後述する。上書きイメージから、ユーザは分析のための特定ピクセルを選んでもよい。このピクセル選択によって、ピクセルヒストリーイメージが、イメージをレンダリングフィールド３０６に示されてもよい。さらに、描画要求に対応するピクセルヒストリーが、ピクセルヒストリーフィールド３０８に示されてもよい。ピクセルヒストリーに関する例示的な詳細は、図５ないし図７を用いて後述する。
【００３０】
各種実施形態のオペレーションは、以下の図、およびこれらの実施例によって更に後述する。いくつかの図は、論理フローを含んでいる。本願明細書において発表されるこの種の図が以下に記載されているが、特定の論理フロー、単に本願明細書において記載されている一般の機能がどのようにインプリメントされ得るかという例を提供するものであると理解されたい。更に、示された論理フローは、特に明記しない限り示される順番に、必ずしも実行される必要があるというわけではない。加えて、与えられた論理フローは、ハードウェア要素、一つ以上のプロセッサによって実行されるソフトウェア要素またはそれのいかなる組合せによってインプリメントされてもよい。実施例は、本明細書の説明に限定されない。
【００３１】
実施例は、グラフィック・アプリケーションを分析するために、さまざまな技術を提供する。その技術には、上書き（overdraw）、ピクセルヒストリー、描画要求等の分析が含まれる。更に、この種の技術においては、代替（alternate）のイメージ再構成、および表示を使用してもよい。
【００３２】
これらの代替の再構成、および表示は、グラフィック・シーンからパフォーマンスに関する情報を都合よく、よりすばやく抽出することを可能とする。代替の再構成、および表示の例としては、レンダーターゲット毎に実行される上書きの分析が挙げられる。この分析から、対応するピクセルヒストリーが生成されてもよい。これらの特徴によって、グラフィック処理のシーケンスから、通常では隠れた情報を抽出する技術を都合よく提供できる。上書きの分析、およびピクセルヒストリー生成を含む例については、図４によって後述する。
【００３３】
図４は論理フロー４００を例示する。これは、一つ以上の実施例によって実行されるオペレーションを示している。このフローは、図１および図２と関連して描かれている。なお、このフローは、他の実施例において使用されてもよい。図４は、特定のシーケンスを示しているが、他のシーケンスが使用されてもよい。また、示されたオペレーションは、さまざまに、パラレルに、かつ／またはシーケンシャルに、組合せて実行されてもよい。
【００３４】
ブロック４０２で、グラフィックＡＰＩ要求（描画要求）のシーケンスが記憶される。このシーケンスは、特定のイメージ（フレーム）に対応してもよい。図２において、これは、これらの描画要求をインターセプトするＡＰＩインターセプタ・モジュール２０２、およびそれらを記憶しているグラフィックＡＰＩ要求・ログ・データベース２０４と関連している。
【００３５】
ブロック４０４で、ＡＰＩ要求の記憶されたシーケンスは、複数のレンダーターゲットの各々に対するシーケンスにソートされる。図２において、これは、各々のＡＰＩ要求からレンダーターゲットを特定する再構成モジュール２０６に関連する。実施例において、再構成モジュール２０６は、これを実行するために、グラフィックエンジン（例えばグラフィックエンジン１０６）を使用してもよい。
【００３６】
これらの各々のレンダーターゲットグループに対して、上書きイメージがブロック４０６で作成される。図２を再度参照する。これは、各々のレンダーターゲットに対して描画要求を実行するグラフィックエンジン（例えばグラフィックエンジン１０６）に命令する再構成モジュール２０６に関連する。なお、通常動作の代わりに、ピクセル値が蓄積されるように、グラフィックエンジンが構成される。より詳細には、描画要求によって、書かれる（「描かれる」）たびに、対応するレンダーターゲットピクセル値（ピクセルがヒットカウントを＋１増加）が蓄積されるようにグラフィックエンジンが構成される。したがって、各々のレンダーターゲットにおいて、各々のピクセルのためにカウントが生成される。このカウントは、ピクセルが何度描かれたかを示すこととなる。
【００３７】
ブロック４０８で、一つのレンダーターゲットが選択される。この選択は、ユーザにより、または自動的になされる。実施例において、このレンダーターゲットを、ディスプレイに表示された複数のレンダーターゲットのリスト（例えば、アイコンまたは他のグラフィック表示）から選択さしてもよい。
【００３８】
ブロック４０９で、選択されたレンダーターゲットに対する上書きイメージが視覚的に強調されてもよい。この強調は、上書きイメージのダイナミック・レンジを増加させることを含んでもよい。この強調に関する詳細は、図８に関連して後述する。
【００３９】
ブロック４１０で、上書きイメージは、選択されたレンダーターゲットに対して表示される。上述の通り、上書きイメージによって、ピクセルが描かれた回数を示す。実施例において、この数は、表示された上書きイメージのピクセルの明るさによって示されてもよい。しかしながら、実施例は、この特徴に限定されない。
【００４０】
上書きイメージの一つ以上の対応するピクセルが、ブロック４１２で選択されてもよい。この選択は、ユーザによってなされるか、または自動的な技術が使われてもよい。ユーザによる選択は、グラフィカルユーザーインタフェース（ＧＵＩ）によって、上書きイメージとインターフェースを形成してもよい。例えば、ユーザは、グラフィック十字カーソルによって、座標値の入力によって、および／または、他の技術によって、ピクセルを選択してもよい。あるいは、自動選択は、上書きの値に基づく自動的なピクセルの選択であってもよい。例えば、最も大きい数の描画（touch）を示すピクセルが、自動的に選択されてもよい。
【００４１】
ブロック４１４で、各々の一つ以上選択されたピクセルに対するピクセルヒストリーが、ユーザのために取得される。ピクセルヒストリーは、ピクセルに影響を及ぼした（または書込がなされた）各々の描画要求を含んでもよい。実施例において、ブロック４０８で選択されたレンダーターゲットに影響与えた描画要求だけが、関係してもよい。しかしながら、実施例では、これに加えて、またはこれに代えて、他のレンダーターゲットに影響を与える描画要求を提供してもよい。
【００４２】
このピクセルヒストリーは、ブロック４１６で示されてもよい。実施例において、この表示は、各々の描画要求を示すアイコンのシーケンスの形であってもよい。ユーザは、描画要求に関して詳細を見るために、このアイコンを（例えばダブルクリックで）選択してもよい。しかしながら、ピクセルヒストリーを示す他の技術（例えばテキスト・リスト）が使用されてもよい。
【００４３】
図４のフローは、画面において最も複雑なピクセルから情報を抽出する直接的な方法を都合よく提供する。例えば、ブロック４１０で示される上書きイメージから、比較的多数回の描画が行われたピクセル（これを、高い複雑度を有するピクセルと称する）が選択されてもよい。上記のように、この種のピクセルは、表示されたそれらの明るさによって明らかにされてもよい。高い複雑度を有するピクセルを選ぶと、ユーザは、ピクセルに影響を及ぼしたＡＰＩ要求（ピクセルヒストリー）を見ることができるようにしてもよい。加えて、ユーザに対して、イメージの（上書きの表示ではなく）通常の表示を見せてもよい。描画要求を分析することによって、ユーザは、ＡＰＩ要求のより効率的なセットが作れるかを検討（determine）してもよい。したがって、このピクセルの識別によって、開発者は、ピクセルがレンダリングされる回数を減らすために、アプリケーションを改善してもよい。これは、グラフィック・アプリケーションのパフォーマンスを都合よく向上させ得る。
【００４４】
上述の通り、実施例は、ピクセルに関して情報を抽出することを提供する。また、実施例は、描画要求によって、ピクセルが描画された回数を提供してもよい。単一の描画要求は、二回以上特定ピクセルを描画してもよい。例えば、グラフィックエンジン（例えばグラフィックエンジン１０６）に３つの次元のオブジェクトをレンダリングすることを命じる描画要求によって、グラフィックエンジンは、重なり合うピクセル位置の表層をレンダリングすることとなる場合がある。例えば、描かれた立方体では、正面、および裏が重なり合うことがある。実施例では、あるピクセルが特定の描画要求によって描画されるたびに、（特定のレンダーターゲットに対して）これを検出し、表示してもよい。この特徴を含む実施例は、図５に関連して後述する。
【００４５】
図５は論理フロー５００を例示する。そして、これは一つ以上の実施例によって実行されるオペレーションを示し得る。このフローは、図１および図２と関連している。なお、このフローは、他の実施例において使用されてもよい。図５は、特定のシーケンスを示しているが、他のシーケンスが使用されてもよい。また、示されたオペレーションは、さまざまに、並列に、および／または、時系列的に、組合せて実行されてもよい。
【００４６】
ブロック５０２で、レンダーターゲットが、選択される。この選択は、ユーザによってなされてもよい。あるいは、この選択は、自動でなされてもよい。また、ブロック５０４で、一つ以上のピクセルが、選択されてもよい。このピクセルは、さまざまな方法で選択されてもよい。例えば、このピクセルは、図４に示されるように、ユーザに選択されるか、または上書きに基づいて、自動的に選択されてもよい。なお、実施例はこれに限定されない。
【００４７】
ブロック５０６で、ユーザは、選択されたピクセルに対応する描画要求を選ぶ。例えば、ユーザは、図４のブロック４１４でピクセルヒストリーが生成されたように、ピクセルヒストリーにおいて特定される複数描画要求（例えば描画要求のシーケンス）から、この描画要求を選んでもよい。したがって、これがシーケンスの最初の選択である場合、実施例では、ブロック５０７で、これを最初に選択された描画要求に指定してもよい。
【００４８】
この時点で、（選択されたレンダーターゲット中の）選択されたピクセルが描画された回数に関する情報をブロック５０９で特定（測定）してもよい。実施例において、この特定は、選択された描画要求に対するものであってもよい。あるいは、この特定は、ブロック５０６で示された最初の描画要求から始まり、ブロック５０７で選択された描画要求で終了する描画要求のシーケンスに対するものであってもよい。
【００４９】
図５に示すように、この種の特定は、複数パスを必要としてもよい。例えば、第１のパスは、グラフィックパイプラインテストをアクティベートさせることなく、描画要求を実行させてもよい。また、第２のパスは特定のグラフィックパイプラインテストをアクティベートさせた描画要求を実行させてもよい。更に、第２のパスは、アルファ・ブレンディングを有する描画要求を実行することを含んでもよい。ブロック５０９の内のこれらの３つのパスは、説明のためのものであって、限定するためのものではない。したがって、実施例は、パスおよび／または他のシーケンスの他の組合せを使用してもよい。これらのパスに関する更なる詳細は、図６によって後述する。
【００５０】
ブロック５１０で、ユーザは、次の描画要求を選んでもよい。この次の描画要求は、時刻順のシーケンスの描画要求であって、レンダーターゲットにおいて、選択されたピクセルに影響を与えるものである。例えば、この次の描画要求は、一番最近に（ブロック５０６かブロック５１０で）選択された描画要求の後の描画要求であってもよい。図５に示すように、次の描画要求が選択された場合、オペレーションはブロック５０９に戻る。したがって、図５の特徴は、ユーザに、一つ以上の関心対象の描画要求を選択させ、かつそれ（またはそれら）が特定のピクセルに与える影響を分析させることである。この種の特徴は、都合よく、特定のレンダーターゲットのいかなるピクセルにおける画面の複雑度をも評価することを可能とする。この情報は、ユーザが特定の画面の複雑度を減少させるべきかどうかを決める場合や、特定の３Ｄオペレーションのパフォーマンスを向上させるためにアプリケーションの設定を変更する場合に、都合よく利用し得る。
【００５１】
上述の通り、（選択されたレンダーターゲットにおいて）選択されたピクセルが描かれた回数に関する測定は、複数パスで実行されてもよい。この種の複数パスの例は、図６に示されている。
【００５２】
特に、図６は、第１のパス６０２、第２のパス６０４、および第３のパス６０６を含むフローチャート６００である。これらのパスの各々は、多重オペレーションを含む。例えば、図６の第１のパス６０２は、ブロック６１０−６１４を含む。ブロック６１０で、特定のグラフィックパイプラインテスト（例えば、シザーテスト（scissor  test）、長方形テスト（rectangle  test）、Ｚテスト（Z  test）、ステンシルテスト（stencil  test）および／またはアルファテスト（alpha  test））が、ディスエーブルとされる。ブロック６１２で、これらのテストがディスエーブルであるとき、描画要求が、選択されたピクセルを何回描画したかが、測定される。これは、修正されたレンダリングオペレーションを有する描画要求を実行することを含んでもよい。例えば、ピクセルシェーダコードが修正されてもよい。描画要求によって描画されるたびに、選択されたピクセルのシェーディングが増加する（例えば、１だけ増加する）。なお、実施例は、この技術に限定されない。
【００５３】
この測定の結果は、ブロック６１４でユーザに出力される。これらの結果は、グラフィック形式で出力してもよい（例えば、選択されたピクセル位置で、対応する明るさ、シェーディングまたは透明度のレベルとして示される）。あるいは、これらの結果は、テキスト形式の出力であってもよい。
【００５４】
図６において、ブロック６２０−６３２を含む第２のパス６０４が示されている。ブロック６２０で、ユーザは、特定のテストをアクティベートさせてもよい。例えば、ユーザは、範囲指定されたシザーテスト（ranged  scissor  test）、Ｚテストまたはステンシルテストを作動させてもよい。ブロック６２２で、テストが選択されたかどうかが判定される。その場合は、オペレーションは、ブロック６２４に続く。それ以外は、オペレーションは、ブロック６４０で第３のパスへ進む。ブロック６２４で、選択されたレンダーターゲットがクリアーされる。その後、ブロック６２６で選択されたテストが、グラフィックエンジンにおいてイネーブルとされる。ブロック６２８で、描画要求が実行される。
【００５５】
これらの描画要求の結果は、ブロック６３０でユーザに出力される。これらの結果は、グラフィック形式で出力されてもよい（例えば、選択されたピクセル位置で、対応する明るさまたは透明度のレベルとして示される）。あるいは、これらの結果は、テキスト形式の出力であってもよい。結果がゼロである（ピクセル値が無い）場合、選択されたテストが呼び出されるたびに、それが失敗したことを示す。しかしながら、結果が非ゼロである場合、選択されたテストが呼び出されたとき、少なくとも１回はそれがパスしたことを示す。
【００５６】
ブロック６３２に示されるように、ユーザは他のテストを選んでもよい。その場合は、オペレーションは、６２０をブロックに戻る。それ以外は、オペレーションは、ブロック６４０で第３のパスへ進む。
【００５７】
図６のブロック６４０は、第３のパスを示す。このブロックでは、ピクセルの出力色を測定するために通常のレンダリングが実行される。
【００５８】
図６のフローに加えて、あるピクセルが描かれた回数に関して、さまざまな非制限的な例となる実施例を以下に示す。例えば、「描画」の数は、描かれた図形がピクセルを横切る回数であってもよい。例えば、描かれている図形が、二つの側面のある三角形（two  sided  triangles）を含む丸いもの（sphere）である場合、中心ピクセルは、上書きとして２回カウントされる。すなわち、正面で1回、背面で１回である（ｚ−テストは、この場合ディスエーブルされる）。さらに、描かれている図形が、１つ側面のある三角形（one  sided  triangles）を含む丸いものである場合、中心ピクセルでは、上書きのカウントは１回である。すなわち、正面で１回、背面でゼロ回である。（なぜなら、裏側はくり抜かれているからである（この場合には、くり抜きがイネーブルされている））。
【００５９】
さらに、「描画」の数は、ピクセルが実際にバッファに書かれた回数であってもよい（Zテストリジェクトされた図形の回数を破棄する）。例えば、ビューアの視野から３つの三角形を相互に重ねてレンダリングしたときに、描画の数は、描画の順序に依存する。例えば、もし、一番遠くのものが最初に描かれ、次に、真ん中のもの、そして一番近いものが描かれた場合、三角形が重なるピクセルに対しては、カウントは３となる。しかしながら、もし最も近いものが最初に、次に真ん中、最後に一番遠いものが描かれた場合、同じピクセルに対してカウントは１である。これは、後者の２つがＺテストリジェクトされるからである。
【００６０】
上述の通り、実施例は、ユーザが特定のピクセル上の描画要求の効果を決定することを可能とする。更に、実施例は、描画要求のディスエーブルを可能とする。例えば、ユーザは、一つ以上の描画要求をディスエーブルにしてもよく、かつこのディスエーブルのピクセル処理への影響を判断してもよい。したがって、計算の相違を検討してもよい。例えば、シーンのレンダリングがより速くなったかどうかが、判断されてもよい。また、ユーザは、このディスエーブルにより、レンダリングされたイメージへの、視覚の影響を判定してもよい。例えば、ユーザは、描画要求をディスエーブルにすることによって、シーンの見栄えが許容できないものになってしまうかを判断してもよい。この種の特徴を含む実施例は、図７を用いて後述する。
【００６１】
図７は論理フロー７００を例示する。これは一つ以上の実施例によって実行されるオペレーションを示している。このフローは、図１および図２と関連している。なお、このフローは、他の実施例において使用されてもよい。図７は、特定のシーケンスを示しているが、他のシーケンスが使用されてもよい。また、表されたオペレーションは、さまざまに、並列に、および／または時系列的に、組合せて実行されてもよい。図７に示すように、レンダーターゲットが、ブロック７０２で選択される。この選択は、ユーザによってなされるか、または自動的な技術によってなされてもよい。また、ブロック７０４で、ピクセルが選択される。このピクセルは、さまざまな方法で選択されてもよい。例えば、図４を参照しながら説明したように、ピクセルは、ユーザにより選択されてもよく、また、自動的に選択されていてもよい。しかしながら、実施例は、これに限定されない。
【００６２】
ユーザは、ブロック７０６で一つ以上の描画要求をディスエーブルするように選択する。この選択は、描画要求のシーケンスからなされてもよい。ブロック７０８で、ピクセルヒストリーが、描画要求のシーケンスに対して特定（determined）される。実施例において、これは、図５において既に述べたオペレーションを実行することを含んでもよい。したがって、ディスエーブルされた描画要求によって、あるピクセルが描かれた回数が特定される。
【００６３】
図５に関して上述したように、この種の特定は、さまざまなグラフィックパイプラインテスト（例えばシザーテスト、長方形テスト、Ｚテスト、ステンシルテストおよび／またはアルファテスト）によってアクティベートされてもよく、またはデアクティベートされてもよい。ディスエーブルされた描画要求がレンダリングされないため、次の描画要求に対するこの種のテストは異なるテスト結果を含んでもよい。したがって、描画要求をディスエーブルにすることは、動的なピクセルヒストリーを提供する。
【００６４】
ブロック７１０で、選択された描画要求がディスエーブルされた状態で描画要求のシーケンスに対してレンダリングされる。このレンダリングされたイメージは、ブロック７１２でユーザに表示される。
【００６５】
上述の通り、実施例は、上書きイメージを提供する。さらに、実施例では任意にユーザ選択された描画要求をイネーブルまたはディスエーブルする能力を与える。これによって、上書きイメージの構成をブレークダウンすることができ、レンダリングされたピクセルをより深く調査できる。
【００６６】
上書きされたイメージは、判断するのが難しい微妙な違いを含み得る。例えば、１つの領域は、隣接した領域よりわずかに暗くなることがある（これは、その領域が描画された回数が異なることを示している）。実施例は、これらの違いを視覚的に強調してもよい。例えば、図４のブロック４０９で、上書きイメージは、強調される。
【００６７】
この種の強調は、上書きイメージのダイナミック・レンジを増加させる。その結果、微妙な違いのある上書きイメージを見つけるのが容易になる。このようなダイナミック・レンジの増加を提供するためにさまざまな技術が使用されてもよい。例えば、実施例では、クランピングオペレーションを使用してもよい。
【００６８】
図８は論理フロー８００を例示する。そして、これは一つ以上の実施例によって実行されるオペレーションを表している。図８は、特定のシーケンスを示すものであるが、他のシーケンスが使用されてもよい。また、示されたオペレーションは、さまざまに、並列に、および／または時系列的に、組合わされて実行されてもよい。
【００６９】
ブロック８０２で、上書きイメージが、提供される。ブロック８０４で、上書きイメージの最小および最大の値が、決定される。
【００７０】
ブロック８０６で、最小値および最大値に基づいてマトリックスが生成される。上書きイメージは、ブロック８０８でマトリックスによって処理される。この処理は、強調した上書きイメージを生み出し、ブロック８１０で表示されてもよい。
【００７１】
この技術の実施例が提供される。この実施例は、５×５のマトリックスを含む。これは、イメージデータ上の線形オペレーションを実行する標準の技術である。ピクセル値が範囲［０、２５５］であり、かつマトリックス値は浮動小数点スケールファクタであるとすると、以下の式が使用される：
【００７２】
【数１】
0005875751.tif 000002
これは、基底行列乗算演算である。ここで、元のＲＧＢＡイメージ・カラー（Ｉｒ、Ｉｇ、Ｉｂ、Ｉａ）は、調整されたＲＧＢＡイメージ・カラー（またはＯｇ、Ｏｂ、Ｏａ）を計算するために、５×５マトリックスＭによって乗算される。Ｍの２０個の可変要素の値を調整することによって、多くのカラー調整オペレーションが実行され得る。上書きイメージの場合、マトリックス値は、興味深いデータの範囲を拡大するために、上書きイメージが一定の比率で調整される。例えば、レンダーターゲットの全てのピクセルが２０回書き込まれた（レンダーターゲットの全ての４要素（quads）それぞれに加えて、全てが混合された場合）とする。そして、更に３つの小さい三角形がレンダーターゲットに書かれたと仮定する（そのうち２つの三角形の一部が重なりを有するとする）。この例において、ほとんどのピクセルは、２０回の上書きを有することとなる。幾つか（小さい三角形によって描かれたもの）は、２１回、そして、幾つか（２つの小さい三角形の重なった部分）は、２２回の上書きを有する。ユーザが、普通に、このイメージを見る場合、それは暗く見え、２１回、および２２回の上書きの値を有するフレームの部分を見分けるのは、極めて困難である。本実施例において、調整されたイメージを見る場合、通常のイメージ中の各々のピクセルは、マトリックスＭによって乗算され、上書きイメージの色が調整される。ここにおいて、ある値が使われる。８ビットのカラーチャネル（オリジナルおよび上書きされたイメージの各々のＲＧＢＡ値は、［０、２５５］の値を有する）であると仮定する。なお、この技術に限定されるものではなく、他のカラー階調でも機能する。
【００７３】
【数２】
0005875751.tif 000003
Mを以下のように置く。
【００７４】
【数３】
0005875751.tif 000004
この実施例の場合、行列計算によって、イメージには、以下のユニークな３つのオリジナル値が存在する：
【００７５】
【数４】
0005875751.tif 000005
これらは、マトリックスによる乗算によって、以下の変換がなされる：
【００７６】
【数５】
0005875751.tif 000006
なぜなら：
【００７７】
【数６】
0005875751.tif 000007
であるため、したがって、
【００７８】
【数７】
0005875751.tif 000008
中間の２１の値に対して、以下が実行される：
【００７９】
【数８】
0005875751.tif 000009
したがって：
【００８０】
【数９】
0005875751.tif 000010
最も高い、２２の値に対して、以下が実行される：
【００８１】
【数１０】
0005875751.tif 000011
したがって：
【００８２】
【数１１】
0005875751.tif 000012
上記の技術は、小さいレンジの値を最大のレンジに拡大し、視認性を最大にする。なお、この技術は例示のために提示したものであり、限定を目的としたものではない。したがって、更なる技術が、イメージの可視性を増加するために使用されてもよい。
【００８３】
上述の実施例（例えば図１および図２の要素）は、ハードウェアおよび／またはソフトウェアのいかなる組合せによってインプリメントされてもよい。そして、図１０は、本願明細書において記載されている本発明の機能をインプリメントし得る例示的なプラットフォーム１００２の図である。
【００８４】
上述の通り、実施例は、フレームをキャプチャする技術を提供する。加えて、実施例は、グラフィック・フレームによるシングルステッピング（single  stepping）（例えば、一度に単一のグラフィック・フレームの処理）の技術を提供する。これは、アプリケーションによって生成される。この種の特徴は都合よく、アプリケーションのワークロードをオンザフライでキャプチャする処理に向ける。したがって、関心対象の正確なフレームがキャプチャされることを可能とする。
【００８５】
実施例において、この種のシングルステッピングは、ユーザとの対話処理によって制御されてもよい。例えば、ユーザには、ポーズボタン、ステップ・ボタン、およびキャプチャボタンが提供されてもよい。この種のボタンは、グラフィカルユーザーインタフェース（例えば図３のインターフェース・コンソール３００）で提供されてもよい。なお、実施例は、以上の説明に限定されない。さらに、実施例は、グラフィカルユーザーインタフェースの使用に限定されない。
【００８６】
ポーズボタン機能は、ユーザが遠隔でアプリケーション（例えばグラフィック・アプリケーション１０２）をその現在フレームでポーズすることを可能とする。次に、ステップ・ボタン機能は、ユーザが正確に１フレーム先に進めることを可能とする。キャプチャボタン／機能は、ユーザがフレーム・データ（及びその対応する描画要求）を分析のために保存することを決めることを可能とする。
【００８７】
図９は、論理フロー９００を例示する。そして、これはこの種のステッピング、およびフレームキャプチャリング特徴を含むオペレーションの代表例であってもよい。このフローは、図１と図２に関連する。しかしながら、このフローは、他の実施例において使用されてもよい。また、図９は特定のシーケンスを示すが、他のシーケンスが使用されてもよい。また、示されたオペレーションは、さまざまに、並列に、および／または時系列的に、組合せて実行されてもよい。
【００８８】
ブロック９０２で、グラフィックアプリケーション（例えばゲーム）が開始される。例えば、図１において、これは、グラフィック・アプリケーション１０２の実行開始を有してもよい。
【００８９】
ブロック９０４で、ユーザは、ポーズボタンを作動させる。その結果、グラフィック・アプリケーションは、その現在のフレームが完成すると、ブロック９０６においてオペレーションを停止させる。この特徴は、（グラフィックＡＰＩ１０４を介して）「現在の要求（current  call）」を行うアプリケーション１０２を待っているグラフィック解析ツール１１０を含んでもよい。この種の要求は現在フレームに対する描画要求が完全なことを示し、かつ現在フレームはグラフィックエンジン１０６によってレンダリングされる準備ができていることを示す。この種の要求がなされると、それから、グラフィック解析ツール１１０は、グラフィック・アプリケーション１０２をポーズしてもよい。これは、例えば、一つ以上のオペレーティングシステム要求で実行されてもよい。例えば、グラフィック解析ツール１１０は、グラフィック・アプリケーションに関連づけられた全ての実行中のＣＰＵソフトウェア・スレッドを停止させてもよい。このポーズを行うことによって、現在フレームが示されてもよい。
【００９０】
ブロック９０７で、ユーザは、ボタンを作動させる。それがステップ・ボタンである場合、オペレーションは、ブロック９０９へ進む。ここでグラフィック・アプリケーションは再開され、かつ、次のフレームが、現在フレームとなる。図１において、これは、一つ以上のオペレーティングシステム要求を行うグラフィック解析ツール１１０を含んでもよい。その後、オペレーションはブロック９０６に戻る。そして一旦フレーム完了すると、グラフィック・アプリケーションは再びポーズする。
【００９１】
しかしながら、ユーザがキャプチャボタンを作動させた場合、グラフィックエンジン（例えばグラフィックエンジン１０６）によりフレーム生成され、ブロック９１０で記憶される。図２に関して、これは、フレーム記憶モジュール２１２に、現在フレームの画素データを記憶することを有してもよい。また、ブロック９１２で、現在フレームに関連する追加情報が記憶される。この種の情報は、現在フレームに対応する描画要求、グラフィックエンジンを含む状態情報（例えばパイプライン状態情報）、グラフィックＡＰＩおよび／またはグラフィック・アプリケーションを含んでもよい（なお、これに制限されるわけではない）。また、この種の情報は、アプリケーション（例えば、世界モデル情報（world  model  information）、頂点情報（vertex  information）、陰影情報（shading  information）、テクスチャ情報、その他）によって提供されるリソースを含んでもよい。実施例は、これらの実施例に限定されない。図２において、いくつかのこの種の情報は、インターセプトされてもよく、かつグラフィックＡＰＩ描画要求・インターセプタ・モジュール２０２によって特定されてもよく、かつグラフィックＡＰＩ要求・ログ・データベース２０４で記憶されてもよい。
【００９２】
図９には、それ以下のブロック９１０、および９１２が示されている。オペレーションはブロック９０９に続いてもよい。ここで、グラフィック・アプリケーションは再開され、かつ次のフレームが現在フレームになる。この後、オペレーションはブロック９０６に戻り、かつ一旦それがフレームを完了すると、グラフィック・アプリケーションは再びポーズされる。
【００９３】
さらに別の方法として、ユーザがポーズボタンを作動させる場合、図９は、通常動作のグラフィック・アプリケーションがブロック９１４で再開されることを示す。図１において、これは、一つ以上のオペレーティングシステム要求を発行するグラフィック解析ツール１１０を含んでもよい。この後、ブロック９１６は、そのオペレーションが、更なるフレーム・ステッピング、およびフレームキャプチャオペレーションを実行するために、ブロック９０４に戻ってもよいことを示す。
【００９４】
したがって、これらのフレーム・ステッピング、およびフレームキャプチャ技術によって、正確にどのフレームをデバッグするべきか、およびプロファイルを得る詳細なコントロールをユーザは手にすることができる。その結果、ユーザは、ボトルネックを見つけ、修正してもよく、かつ／または、冗長または、重要でないグラフィック処理を取り除いてもよい。図９のフローは、ＧＵＩボタンを前提に記載されている。これは、説明の目的のためであり、限定するものではない。したがって、他のユーザとの対話処理技術／デバイスが使用されてもよい。したがって、実施例は、上述したポーズ、ステッピング、キャプチャリング、及び再開の技術のための、さまざまなユーザ制御を提供してもよい。
【００９５】
実施例において、プラットフォーム１００２は、ＣＰＵ１０１２、ＧＰＵ１０１３、一つ以上のドライバ１０１４、一つ以上のネットワークコネクション１０１５、オペレーティングシステム１０１６、記憶装置１０１８、ディスプレイ装置１０１９を有してもよい。
【００９６】
ＣＰＵ１０１２は、一つ以上のプロセッサ（例えばデュアル・コアプロセッサ）を有してもよい。デュアル・コアプロセッサの例は、Ｐｅｎｔｉｕｍ（登録商標）Dプロセッサ、Ｐｅｎｔｉｕｍ（登録商標）プロセッサＥｘｔｒｅｍｅ版（両者ともＩｎｔｅｌ（登録商標）社製）があり、例えば、これらは、インテルＣｏｒｅ  Ｄｕｏ（登録商標）プロセッサと称されている。
【００９７】
ＧＰＵ１０１３は、さまざまなグラフィックプロセッサが存在し、例えばＰＣＩ  Ｅｘｐｒｅｓｓグラフィックカードが挙げられる。なお、実施例は、この例に限定されない。図１に関連して、ＧＰＵ１０１３は、グラフィックエンジン１０６の特徴を提供してもよい。
【００９８】
実施例において、ネットワークコネクション１０１５は、ＰＲＯ／１０００ＰＭまたはＰＲＯ／１００  ＶＥ／ＶＭネットワークコネクションを有してもよい。両者ともＩｎｔｅｌ（登録商標）によって市販されている。
【００９９】
実施例において、オペレーティングシステム１０１６は、Ｍｉｃｒｏｓｏｆｔ（登録商標）社の、Ｗｉｎｄｏｗｓ（登録商標）ＸＰメディア・センターを有してもよい。更なる実施例において、オペレーティングシステム１０１６は、Ｌｉｎｕｘ（登録商標）、同様に、他方式のオペレーティングシステムをであってもよい。
【０１００】
実施例において、記憶装置１０１８は、さまざまな有形の記憶媒体を有してもよい。この種の記憶媒体は、本願明細書において記載されているさまざまな特徴（例えば図１および図２の要素）をインプリメントするために、命令または制御ロジック（例えばソフトウェア）と同様に、データ（例えばイメージまたはフレーム）を含んでもよい。この種の命令または制御ロジックは、ＣＰＵ１０１２および／またはＧＰＵ１０１３によって実行されてもよい。記憶媒体の例は、更に下記に記載する。
【０１０１】
ディスプレイ装置１０１９は、ユーザに情報を出力してもよい。加えて、本願明細書において記載されているように、ディスプレイ装置１０１９はユーザとの対話処理を可能としてもよい。例えば、この種のユーザとの対話処理は、例示的なユーザインタフェース３００によってなされてもよい。
【０１０２】
本願明細書において記載されているように、各種実施例は、ハードウェア要素、ソフトウェア要素またはいかなるそれらの組合せをも使用してインプリメントされてもよい。ハードウェア要素の例としては、プロセッサ、マイクロプロセッサ、回路、回路素子（例えばトランジスタ、レジスタ、コンデンサ、インダクタ、その他）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル・ロジック・デバイス（ＰＬＤ）、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット、その他を含んでもよい。
【０１０３】
ソフトウェアの例としては、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータ・プログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、手順、ソフトウェアインタフェース、アプリケーション・プログラム・インタフェース（ＡＰＩ）、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコード部分、語、値、シンボルまたはいかなる組合せを含んでもよい。
【０１０４】
一部の実施例は、例えば、機械によって実行される場合、実施例に従って、方法および／またはオペレーションを実行するよう、機械が実行する命令または一組の命令を記憶し得る有形の機械読取り可能な媒体（記憶媒体）または製品を使用してインプリメントされてもよい。この種の機械は、例えば、いかなる適切な処理プラットフォームを含んでもよい。すなわち、計算プラットフォーム、コンピューティング装置、処理デバイス、コンピューティング・システム、処理システム、コンピュータ、プロセッサ等が挙げられ、かつこれらは、ハードウェアおよび／またはソフトウェアのいかなる適切な組合せを使用してインプリメントされてもよい。
【０１０５】
機械で読み取ることができる媒体（記憶媒体）または製品としては、例えば、記憶装置、メモリ素子、メモリ製品、記憶媒体、記憶装置、記憶製品、記憶装置媒体および／または記憶装置（例えばメモリ、リムーバブルまたは非リムーバブル・メディア、消去可能なまたは消去不可能なメディア、書き込み可能または再書き込み可能なメディア、デジタルまたはアナログ・メディア、ハードディスク、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、光ディスク、磁気媒体、光磁気のメディア、リムーバブル・メモリーカードまたはディスク、様々な形のＤＶＤ、テープ、カセット、等のいかなる適切なタイプを含んでもよい。命令は、適切ないかなる種類のコード、例えばソースコード、コンパイル済みコード、インタープリットされたコード、実行可能コード、静的コード、動的コード、暗号化されたコード、などを含んでもよい。そして、いかなる適切な高水準、低レベルの、オブジェクト指向の、視覚の、編集されたおよび／または、インタープリットされたプログラミング言語をも使用してインプリメントされる。
【０１０６】
一部の実施例は、「接続され（coupled）」および「接続され（connected）」という語を使用して記載され得る。これらの語は、同義語として用いているものではない。例えば、一部の実施例は、「接続され（coupled）」および／または「接続され（connected）」の語を使用して記載され、２つ以上の各々の要素が直接的に物理的に、あるいは電気にコンタクトすることを意味している。しかしながら、「接続され（coupled）」の語は、また、２つ以上の各々の要素が、直接接触していなくても、協働し、または、インターラクトしていることを意味してもよい。
【０１０７】
以上、本発明の各種実施形態を説明したが、それらは、実施例であり、かつ限定するものではないと理解されなければならない。したがって、本発明の精神と範囲から逸脱することなく、さまざまな形および細部の変更がなされてもよいことは、当業者にとって明らかである。したがって、本発明の技術的範囲は、上述の例示的実施形態のいずれによっても、制限されてはならず、以下に記載する請求項およびその均等物のみによって定義される。
【符号の説明】
【０１０８】
１０２  グラフィック・アプリケーション
１０４  グラフィックＡＰＩ
１０６  グラフィックエンジン
１１０  グラフィック解析ツール
２０２  グラフィックＡＰＩ要求インターセプタ・モジュール
２０４  グラフィックＡＰＩ要求・ログ・データベース
２０６  再構成モジュール
２０７  上書き解析モジュール
２０８  ピクセルヒストリー解析モジュール
２１０  ユーザインタフェースモジュール
２１２  フレーム記憶モジュール
３０２  描画要求・フィールド
３０４  レンダーターゲットフィールド
３０６  イメージレンダリングフィールド
３０８  ピクセルヒストリーフィールド
９１８  記憶装置
１００２  プラットフォーム
１０１４  ドライバ
１０１５  ネットワーク接続
１０１６  オペレーティングシステム
１０１９  ディスプレイ装置
【図１】
0005875751.tif 000013
【図２】
0005875751.tif 000014
【図３】
0005875751.tif 000015
【図４】
0005875751.tif 000016
【図５】
0005875751.tif 000017
【図６】
0005875751.tif 000018
【図７】
0005875751.tif 000019
【図８】
0005875751.tif 000020
【図９】
0005875751.tif 000021
【図１０】
0005875751.tif 000022