(57)【特許請求の範囲】
【請求項１】
グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
コンピューティングデバイスによって、上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
を備え、
上記パフォーマンス情報を受信することは、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信することを備える、方法。
【請求項２】
上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、請求項１の方法。
【請求項３】
選択可能なパフォーマンスメトリックの表現を表示することと、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けることと、
を更に備える、請求項１の方法。
【請求項４】
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定すること、
を更に備え、
上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てることを備える、請求項１の方法。
【請求項５】
上記グラフィックス要素にグラフィカル識別子を割り当てることは、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てることを備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、請求項１の方法。
【請求項６】
上記グラフィックス要素を表示することは、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示することを備える、請求項５の方法。
【請求項７】
上記グラフィックス処理ユニットは、上記コンピューティングデバイス内に含まれる、請求項１の方法。
【請求項８】
上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定することを備える、請求項７の方法。
【請求項９】
上記グラフィックス処理ユニットは、上記コンピューティングデバイスから物理的に別個であるモバイルデバイス内に含まれる、請求項１の方法。
【請求項１０】
上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第１の値を決定することと、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第２の値を決定することと、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第１の値と上記第２の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定することと、
を更に備える、請求項１の方法。
【請求項１１】
ディスプレイデバイスと、及び
グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
上記ディスプレイデバイス上に上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
を行うように構成される、上記ディスプレイデバイスに結合された一つ以上のプロセッサと、
を備え、
上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信することによって、上記パフォーマンス情報を受信するように構成される、デバイス。
【請求項１２】
上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、請求項１１のデバイス。
【請求項１３】
上記一つ以上のプロセッサは、
上記ディスプレイデバイス上に、選択可能なパフォーマンスメトリックの表現を表示することと、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けることと、
を行うように更に構成される、請求項１１のデバイス。
【請求項１４】
上記一つ以上のプロセッサは、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するように更に構成され、上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てることを備える、請求項１１のデバイス。
【請求項１５】
上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記グラフィックス要素に色を割り当てることによって、上記グラフィックス要素にグラフィカル識別子を割り当てるように構成され、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、請求項１１のデバイス。
【請求項１６】
上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示することによって、上記グラフィックス要素を表示するように構成される、請求項１５のデバイス。
【請求項１７】
上記グラフィックス処理ユニットは、当該デバイス内に含まれる、請求項１１のデバイス。
【請求項１８】
上記グラフィックス要素は、ピクセルフラグメントを備え、及び上記一つ以上のプロセッサは、少なくとも、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるために上記デバイス中のブレンディングハードウェアを使用することにより上記グラフィカル識別子を決定することによって、上記グラフィックス要素に上記グラフィカル識別子を割り当てるように構成される、請求項１７のデバイス。
【請求項１９】
上記グラフィックス処理ユニットは、別の、物理的に別個なデバイス内に含まれる、請求項１１のデバイス。
【請求項２０】
上記一つ以上のプロセッサは、
上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第１の値を決定することと、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第２の値を決定することと、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第１の値と上記第２の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定することと、
を行うように更に構成される、請求項１１のデバイス。
【請求項２１】
上記デバイスは、無線通信デバイスハンドセットを備える、請求項１１のデバイス。
【請求項２２】
上記デバイスは、一つ以上の集積回路デバイスを備える、請求項１１のデバイス。
【請求項２３】
グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信するための手段であって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信するための手段と、
上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算するための手段であって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算するための手段と、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てるための手段であって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てるための手段と、及び
上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示するための手段と、
を備え、
上記パフォーマンス情報を受信するための手段は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための手段を備える、デバイス。
【請求項２４】
上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、請求項２３のデバイス。
【請求項２５】
選択可能なパフォーマンスメトリックの表現を表示するための手段と、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けるための手段と、
を更に備える、請求項２３のデバイス。
【請求項２６】
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するための手段を更に備え、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段は、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段を備える、請求項２３のデバイス。
【請求項２７】
上記グラフィックス要素にグラフィカル識別子を割り当てるための手段は、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てるための手段を備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、請求項２３のデバイス。
【請求項２８】
上記グラフィックス要素を表示するための手段は、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示するための手段を備える、請求項２７のデバイス。
【請求項２９】
上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段は、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定するための手段を備える、請求項２３のデバイス。
【請求項３０】
上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第１の値を決定するための手段と、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第２の値を決定するための手段と、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第１の値と上記第２の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定するための手段と、
を更に備える、請求項２３のデバイス。
【請求項３１】
一つ以上のプログラマブルプロセッサに、
グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
を行わせるための命令を備え、
上記パフォーマンス情報を受信するための命令は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための命令を備える、コンピュータ可読記憶媒体。
【請求項３２】
上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、請求項３１のコンピュータ可読記憶媒体。
【請求項３３】
選択可能なパフォーマンスメトリックの表現を表示するための命令と、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けるための命令と、
を更に備える、請求項３１のコンピュータ可読記憶媒体。
【請求項３４】
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するための命令を更に備え、
上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令は、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令を備える、
請求項３１のコンピュータ可読記憶媒体。
【請求項３５】
上記グラフィックス要素にグラフィカル識別子を割り当てるための命令は、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てるための命令を備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、請求項３１のコンピュータ可読記憶媒体。
【請求項３６】
上記グラフィックス要素を表示するための命令は、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示するための命令を備える、請求項３５のコンピュータ可読記憶媒体。
【請求項３７】
上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令は、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定するための命令を備える、請求項３１のコンピュータ可読記憶媒体。
【請求項３８】
上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第１の値を決定するための命令と、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第２の値を決定するための命令と、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第１の値と上記第２の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定するための命令と、
を更に備える、請求項３１のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、参照によってその全ての内容が本明細書に組み込まれる、２００９年６月２日に出願された米国仮出願第６１／１８３，４７６号の優先権を主張する。
【０００２】
この開示は、グラフィックス画像の表示に関する。
【背景技術】
【０００３】
グラフィックスプロセッサは、ビデオゲーム、グラフィックスプログラム、コンピュータ利用デザイン（ＣＡＤ）アプリケーション、シミュレーション及び視覚化ツール及びイメージングのような、多様なアプリケーションのための二次元（２Ｄ）及び三次元（３Ｄ）画像をレンダリングするために広く使用されている。ディスプレイプロセッサは、ユーザにディスプレイデバイスを通してプレゼンテーションするためにグラフィックスプロセッサのレンダリングされた出力を表示するために使用されることができる。
【０００４】
３Ｄグラフィックスアプリケーションのような、グラフィックスアプリケーションは、画像を生成するために、グラフィックスデバイス中の一つ以上のプロセッサのような基本的なグラフィックスハードウェアを順に使用する、アプリケーション・プログラミング・インタフェース（ＡＰＩ）コール又は命令を呼び出すことによって、シーンのコンテンツを記述または定義することができる。グラフィックスハードウェアは、これらのＡＰＩの呼び出しを介して行使された一連の状態遷移を受けることができる。ドローコールや命令などの各ＡＰＩコールのための状態や状態遷移のフルセットは、画像がハードウェアでレンダリングされる処理を記述することができる。
【０００５】
組み込まれたハードウェアアクセラレートされたグラフィックスアプリケーションの開発では、個々のグラフィックス要素（例えば、メッシュ、ポリゴン、または他のグラフィカルプリミティブ）がグラフィックス処理ユニット（ＧＰＵ）ハードウェアデバイスによって処理される方法の多くの態様を定量化すること、はしばしば困難である。上記要素に捧げられたクロックサイクルの数、そのレンダリングで発生したストール、消費されたメモリ帯域、等々のような、ＧＰＵ処理のそのような態様は、アプリケーション開発者にとって非常に貴重な情報を構成する。
【発明の概要】
【０００６】
本開示は、レンダリングされたグラフィックス要素のパフォーマンスメトリックの視覚的表現を表示するために使用されることができるパフォーマンス分析アプリケーションを提供するための様々な手法を述べる。分析アプリケーションは、いくつかのケースでは、オープン・グラフィックス・ライブラリ（ＯｐｅｎＧＬ（登録商標））、組み込みシステム用のＯｐｅｎＧＬ（登録商標）ＥＳ）またはＯｐｅｎＶＧ（ベクトル・グラフィックス）ＡＰＩなどの特定のアプリケーション・プログラミング・インターフェイス（ＡＰＩ）の使用をなさせるプラットフォーム用のマルチメディアアプリケーションを作成している開発者によって使用されることができる。分析アプリケーションは、アプリケーション開発者に、グラフィックス処理ハードウェアでレンダリングされる個々の２Ｄまたは３Ｄ要素の処理の属性の大きなセットを可視化することを許すことができる。この処理から収集した情報は、ターゲットハードウェアプラットフォーム上でより効率的に実行するために開発されたアプリケーションの設計やパフォーマンス特性を、開発者がより効果的に調整するのを助けることができるできる。
【０００７】
いくつかの例では、分析アプリケーションは、グラフィックスのシーンでレンダリングされる個々のグラフィックス要素のため、携帯デバイスや他のデバイスなどのターゲットデバイスからパフォーマンス測定値の一つ以上の大規模なセットのキャプチャを有効にすることができる。ターゲットデバイスは、グラフィックスアプリケーションが動作することを意図されているデバイス、またはデバイスのクラス、であることができる。アプリケーションは、開発者に、受信したパフォーマンスデータに基づいて開発デバイス上でパフォーマンスメトリックをグラフィカルに視覚化することを許すことができる。開発デバイスは、パフォーマンスデータを収集する実際のデバイスまたは別のデバイス（例えば、実際のデバイスのエミュレータまたはシミュレータとして機能するパーソナルコンピュータ）、を備えることができる。
【０００８】
一例の方法は、グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、パフォーマンス情報に基づいてグラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値がグラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、を備える。上記方法はさらに、グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、グラフィックス要素にグラフィカル識別子を割り当てることであって、グラフィカル識別子の一つがグラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、グラフィックスシーンをレンダリングするときに、グラフィックス要素に割り当てられたグラフィカル識別子に従って、グラフィックス要素を表示することと、を備える。
【０００９】
一例のデバイスは、ディスプレイデバイスと一つ以上のプロセッサとを含む。上記一つ以上のプロセッサは、グラフィックス処理ユニットにより提供されるパフォーマンス情報を受信するように構成されるものであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信するように構成され、且つ、上記パフォーマンス情報に基づいてグラフィックス要素のパフォーマンスメトリックの値を計算するように構成されるものであって、それぞれの計算値がグラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算するように構成される。上記一つ以上のプロセッサはさらに、上記グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てるように構成されるものであって、上記グラフィカル識別子の一つがグラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てるように構成され、且つ、ディスプレイデバイス上にグラフィックスシーンをレンダリングするときに、グラフィックス要素に割り当てられたグラフィカル識別子に従って、グラフィックス要素を表示するように構成される。
【００１０】
一例のコンピュータ可読記憶媒体は、一つ以上のプログラマブルプロセッサに、グラフィックスデバイスのグラフィックス処理ユニットによって提供されるパフォーマンス情報を受信させるための命令であって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、グラフィックス処理ユニットによって測定される、命令と、上記パフォーマンス情報に基づいてグラフィックス要素のためのパフォーマンスメトリックの値を計算するための命令であって、それぞれの計算値が、グラフィックス要素の少なくとも一つに関連付けられている、命令と、を含む。コンピュータ可読記憶媒体は、さらに、グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、グラフィックス要素にグラフィカル識別子を割り当てるための命令であって、上記グラフィカル識別子の一つがグラフィックス要素のそれぞれに割り当てられる、命令と、グラフィックスシーンをレンダリングするときに、グラフィックス要素に割り当てられたグラフィカル識別子に従って、上記グラフィックス要素を表示するための命令と、を含む。
【００１１】
この開示中で説明されている技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装されることができる。ソフトウェアで実装する場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはデジタル信号プロセッサ（ＤＳＰ）、あるいは、他の同等の集積またはディスクリートロジック回路のような、一つ以上のプロセッサを指すことがあり得る、プロセッサで実行されることができる。上記技法を実行するための命令を備えるソフトウェアは、最初にコンピュータ可読媒体に格納され、プロセッサによって実行されることができる。
【００１２】
従って、この開示はまた、この開示中に説明されているように、プロセッサに様々な技法のいずれかを実行させるための命令を備えるコンピュータ可読媒体を企図する。いくつかのケースでは、コンピュータ可読媒体は、製造業者に販売される及び／またはデバイスで使用されることができる、コンピュータプログラム製品の一部を形成することができる。コンピュータプログラム製品は、コンピュータ可読媒体を含むことができ、場合によっては、梱包材も含むことができる。
【００１３】
一つ以上の様相の詳細は、添付図面及び以下の説明中に示される。他の特徴、目的及び効果は、その説明及び図面から及び請求項から明白であろう。
【図面の簡単な説明】
【００１４】
【図１】図１は、パフォーマンス分析アプリケーションを実行するアプリケーションコンピューティングデバイスに、状態及び／またはパフォーマンス情報と共にグラフィックスコマンドを提供することができる、グラフィックスデバイスの一例を示すブロック図である。
【図２】図２は、パフォーマンス分析アプリケーションを直接実装したり実行したりすることができる、グラフィックスデバイスの別の例を示すブロック図である。
【図３】図３は、一例に従った、図１に示されたグラフィックス処理システムの詳細を示すブロック図である。
【図４】図４は、一例に従った、図１に示された制御プロセッサ、グラフィックスプロセッサ、頂点プロセッサ及びディスプレイプロセッサによって実行されることができる、動作の詳細を示す流れ図である。
【図５】図５は、一例に従った、図３に示されたグラフィックスドライバの追加の詳細を示すブロック図である。
【図６】図６は、図１又は図２に示されたグラフィックスデバイスによって実行されることができる、例示的な方法の流れ図である。
【図７】図７は、図３及び図５に示されたグラフィックスドライバなどの、グラフィックスドライバによって実行されることができる、例示的な方法の流れ図である。
【図８】図８は、図１又は図２に示されたパフォーマンス分析アプリケーションなどの、パフォーマンス分析アプリケーションによって実行されることができる、例示的な方法の流れ図である。
【図９】図９は、図１又は図２に示されたパフォーマンス分析アプリケーションなどの、パフォーマンス分析アプリケーションによって表示されることができる情報の例を示す概念図である。
【図１０】図１０は、図１又は図２に示されたパフォーマンス分析アプリケーションなどの、パフォーマンス分析アプリケーションによって表示されることができる情報の他の例を示す概念図である。
【図１１】図１１は、多数の個々にレンダリングされた要素を含むグラフィカルシーンを示す一例の画面図である。
【図１２】図１２は、図１１と同じグラフィカルシーンを示しているが、割り当てられたグラフィカル識別子（例えば、色、シェーディング及び／またはクロスハッチングの識別子）に従って表示される個々にレンダリングされた要素を持つ、一例の画面図である。
【発明を実施するための形態】
【００１５】
図１は、開示の一態様に従ったパフォーマンス分析アプリケーションを実行するアプリケーションコンピューティングデバイス２０に、状態及び／またはパフォーマンス情報３２と共に、複数のグラフィックスコマンド３０を提供することができる、グラフィックスデバイス２を示すブロック図である。グラフィックスデバイス２は、スタンドアロンデバイスであっても良いし、あるいは、大規模システムの一部であっても良い。例えば、グラフィックスデバイス２は、無線モバイル通信端末のような無線通信装置の一部を形成することができ、あるいは、デジタルカメラ、ビデオカメラ、デジタルマルチメディアプレーヤ、パーソナル・デジタル・アシスタント（ＰＤＡ）、ビデオゲームのコンソール、他のビデオデバイス、またはテレビなど専用のビューイングステーション、の一部とすることができる。
【００１６】
グラフィックスデバイス２は、コンピューティングデバイスを備えても良く、あるいは、パーソナルコンピュータやラップトップデバイスの一部であっても良い。グラフィックスデバイス２は、一つ以上の集積回路中に、あるいは、一部または上記のすべてのデバイスに使用することができる複数チップ／複数チップセット中に、含まれることもできる。図１は、グラフィックスデバイス２とは分離した別体のデバイス２０中で実行されるパフォーマンス分析アプリケーション２８の例を示している。図２示した例のような他のケースにおいては、パフォーマンス分析アプリケーションは、図２を参照してより詳細に説明するように、グラフィックスデバイス内で実行される又はグラフィックスデバイス内に直接実装されることもできる。
【００１７】
いくつかのケースでは、グラフィックスデバイス２は、グラフィックスアプリケーション、ビデオアプリケーション、オーディオアプリケーション、及び／または他のマルチメディアアプリケーションなどの、様々なアプリケーションを実行したり、実装したりすることができ得る。例えば、グラフィックスデバイス２は、グラフィックスアプリケーション、ビデオゲームアプリケーション、ビデオ再生アプリケーション、デジタルカメラアプリケーション、インスタントメッセージアプリケーション、ビデオ会議アプリケーション、モバイルアプリケーション、またはビデオストリーミングアプリケーションに使用することができる。
【００１８】
グラフィックスデバイス２は、様々な異なるデータタイプ又はフォーマットを処理することができ得る。例えば、グラフィックスデバイス２は、以下でより詳細に説明するように、静止画像データ、動画像（ビデオ）データ、または他のマルチメディアデータを処理することができる。画像データは、コンピュータ生成グラフィックスデータを含むことができる。図１の例では、グラフィックスデバイス２は、グラフィックス処理システム４、メモリを備える記憶媒体８、ディスプレイデバイス６を含む。
【００１９】
プロセッサ１０、１２、１４及び１６は、グラフィックス処理システム４内に含まれることができる。プロセッサ１０は、制御プロセッサ又は汎用プロセッサである。プロセッサ１２は図形プロセッサである、プロセッサ１４は頂点プロセッサである及び、プロセッサ１６はディスプレイプロセッサである。制御プロセッサ１０は、グラフィックス処理ユニット１２、頂点プロセッサ１４及び/またはディスプレイプロセッサ１６を制御することができ得る。一例では、グラフィックス処理システム４は、他のメディアプロセッサ（例えば、オーディオエンジン）を含む他のプロセッサを含むことができる。いくつかのケースでは、グラフィックスデバイス２が頂点処理能力を提供しないとき（例えば、グラフィックスデバイス２がＯｐｅｎＶＧのための処理を実装していない場合）には、グラフィックス処理システム４は、頂点プロセッサ１４を含まないことがあり得る。
【００２０】
グラフィックスデバイス２では、グラフィックス処理システム４は、記憶媒体８とディスプレイデバイス６の両方に結合されている。記憶媒体８は、命令及び／またはデータを記憶することが可能な任意の永久メモリまたは揮発性メモリを含むことができる。記憶媒体８は、同期ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）、埋め込みダイナミック・ランダム・アクセス・メモリ（ｅＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、またはフラッシュ・メモリ、を含むことができる。ディスプレイデバイス６は、ＬＣＤ（液晶ディスプレイ）、プラズマディスプレイデバイス、または他のディスプレイデバイスのような、表示を目的とした画像データを表示することができる任意のデバイスであることができる。
【００２１】
頂点プロセッサ１４は、頂点情報を管理し、頂点変換を処理することができる。一例では、頂点プロセッサ１４は、デジタル信号プロセッサ（ＤＳＰ）を備えることができる。グラフィックス処理ユニット１２は、コンピュータ処理されたグラフィックスを、レンダリングするため、操作するため及び表示するために利用される、専用のグラフィックスレンダリングデバイスであることができる。グラフィックス処理ユニット１２は、様々な複雑なグラフィックス関連のアルゴリズムを実装することができる。例えば、上記複雑なアルゴリズムは、二次元または三次元コンピュータグラフィックスの表現に対応することができる。グラフィックス処理ユニット１２は、ディスプレイデバイス６等のディスプレイ上に、複雑な三次元画像を作成するために、点、線及び三角形または他のポリゴンサーフェスを形成するような、多数のいわゆる「原始的な」グラフィックス演算を実装することができる。
【００２２】
グラフィックス処理ユニット１２は、記憶媒体８に記憶されているコマンドを実行することができる。記憶媒体８は、一つ以上のグラフィックスドライバ１８だけでなく、グラフィックスアプリケーションやビデオアプリケーション等のアプリケーション用の複数のアプリケーション命令２１を記憶することが可能である。アプリケーション命令２１は、実行のためのグラフィックス処理システム４に記憶媒体８からロードされることができる。例えば、制御プロセッサ１０、グラフィックス処理部１２及びディスプレイプロセッサ１６の内の少なくとも一つが、命令２１を実行することができる。一例では、アプリケーション命令２１は、記憶媒体８に、無線で、動的にダウンロードされる一つ以上のダウンロード可能なモジュールを備えることができる。一例では、アプリケーション命令２１は、生成またはアプリケーション開発者によって作成されたアプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成される又はコンパイルされるバイナリ命令の呼び出しストリームを備えることができる。
【００２３】
グラフィックスドライバ１８もまた、実行のためのグラフィックス処理システム４に記憶媒体８からロードされることができる。例えば、制御プロセッサ１０、グラフィックス処理ユニット１２及びディスプレイプロセッサ１６の内の少なくとも一つは、グラフィックスドライバ１８からの特定の命令を実行することができる。一例の態様では、グラフィックスドライバ１８は、グラフィックス処理ユニット１２によってロードされ、実行される。グラフィックスドライバ１８は、以下でさらに詳細に説明されるだろう。
【００２４】
また、図１に示すように、グラフィックス処理システム４は、一つ以上のバッファ１５を含む。制御プロセッサ１０、グラフィックス処理ユニット１２、頂点プロセッサ１４及び／またはディスプレイプロセッサ１６は、それぞれバッファ１５へのアクセスを有し、バッファ１５にデータを記憶したり、バッファ１５からデータを検索したりすることができる。バッファ１５は、キャッシュメモリを備えることができ、データと命令の両方を記憶することができ得る。例えば、バッファ１５は、一つ以上のアプリケーション命令２１、または、記憶媒体８からグラフィックス処理システム４にロードされたグラフィックスドライバ１８からの一つ以上の命令を含むことができる。バッファ１５及び／または記憶媒体８はまた、命令実行中に使用されるグラフィックスデータを含むこともできる。
【００２５】
アプリケーション命令２１は、特定のケースでは、３Ｄグラフィックスアプリケーションなどのグラフィックスアプリケーションのための命令を含むことができる。アプリケーション命令２１は、一つ以上のグラフィックスオブジェクトを含むグラフィックスシーンの内容を記述または定義する命令を備えることができる。アプリケーション命令２１がグラフィックス処理システム４にロードされて、実行されるときには、一連の状態遷移を経ることができる。グラフィックスドライバ１８内の一つ以上の命令はまた、アプリケーション命令２１の実行中に、グラフィックス要素をレンダリングし、また、ディスプレイデバイス６上にレンダリングされたグラフィックス要素を表示するために実行されることができる。個々の要素はそれぞれ、レンダリングされた要素をディスプレイ上に描画させる特定のドローコマンドの実行中に、レンダリングされることができる。
【００２６】
ドローコールのような命令のための状態のフルセットは、要素がグラフィックス処理システム４内のドローコール（またはコマンド）によってレンダリングされる処理を記述することができる。しかしながら、アプリケーション命令２１を書き込んだアプリケーション開発者はしばしば、デバッグしたり、定義されたシーンで要素を記述する又はレンダリングする別の方法で実験したりする目的で、インタラクティブにこれらの状態を表示または変更するために、限られた能力しか持つことができない。さらに、異なるハードウェアプラットフォームは、異なるハードウェア設計と、これらの状態及び／または状態遷移の実装を有することができる。
【００２７】
従って、一例では、アプリケーション開発者は、デバッグしたり、シーンでの画像を記述する又はレンダリングするための別の方法で実験したりする処理を支援するために、図１に示すアプリケーションコンピューティングデバイス２０を使用することができる。アプリケーションコンピューティングデバイス２０は、グラフィックスデバイス２に結合されている。例えば、一例では、アプリケーションコンピューティングデバイス２０は、ユニバーサル・シリアル・バス（ＵＳＢ）接続を介してグラフィックスデバイス２に結合されている。他の態様では、無線接続や他の形態の有線接続などの他の形態の接続が使用されることができる。
【００２８】
アプリケーションコンピューティングデバイス２０は、一つ以上のプロセッサ２２、ディスプレイデバイス２４及び記憶媒体２６を含む。プロセッサ２２は、一態様によれば、制御プロセッサ、グラフィックスプロセッサ、頂点プロセッサ、及びディスプレイプロセッサの内の少なくとも一つを含むことができる。記憶媒体２６は、命令及び／またはデータを記憶することが可能な任意の永久メモリまたは揮発性メモリを含むことができる。記憶媒体２６は、同期ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、またはフラッシュ・メモリ、を含むことができる。ディスプレイデバイス２４は、ＬＣＤ（液晶ディスプレイ）、プラズマディスプレイデバイス、または他のディスプレイデバイスのような、表示を目的とした画像データを表示することができる任意のデバイスであることができる。
【００２９】
組み込まれた、ハードウェアアクセラレートされたグラフィックスアプリケーションなどの特定のアプリケーションの開発において、個々のグラフィックス要素（例えば、メッシュ、ポリゴン、または他のグラフィカルなプリミティブ）が、グラフィックスデバイス２上のグラフィックス処理ユニットによって処理される多くの態様を定量化することは、しばしば困難であるか、不可能である。例えば、グラフィックス処理ユニット１２内の要素に当てられたクロックサイクルの数、そのレンダリングで発生したストール、消費されたメモリ帯域幅、等々、のような、グラフィックス処理のそのような態様は、アプリケーション開発者のための非常に貴重な情報を備えることができるが、まだ、実際のアプリケーション開発中には一般に利用できない。グラフィックス処理ユニット１２の詳細なアクティビティに関する詳細情報を確認しなければ、開発者は、最適化の機会を見逃し、チューニング作業を誤った方向に行き、及び／または、パフォーマンスの目標とスケジュールを満たすために、視覚的な品質を低下させることを余儀なくされることがあり得る。
【００３０】
従って、図１に示すように、アプリケーションコンピューティングデバイス２０は、グラフィックスデバイス２から送信される状態及び／またはパフォーマンス情報３２と共に、グラフィックスコマンド３０を取得して分析することが可能である。一例では、グラフィックスドライバ１８は、アプリケーションコンピューティングデバイス２０にグラフィックスコマンド３０と状態／パフォーマンス情報３２とを送信するように構成される。グラフィックスコマンド３０は、一つ以上のアプリケーション命令２１を含むことができ、状態／パフォーマンス情報３２は、グラフィックス処理システム４内でのグラフィックスコマンド３０の実行または実装の間に、生成されるまたは取得されることができる。
【００３１】
状態／パフォーマンス情報３２は、命令実行または実装中のグラフィックス処理システム４の状態とパフォーマンスに関する情報を含むものであり、以下でより詳細に説明されるだろう。状態／パフォーマンス情報３２は、グラフィックスコマンド３０と共に使用され得るまたは別なふうに関連し得る、グラフィックスデータ（例えば、プリミティブなグラフィックスデータ及び／またはラスタライズされたグラフィックスデータ）を含むことができる。グラフィックス処理システム４は、ディスプレイデバイス６上に、画像を、またはレンダリングされたグラフィックス要素のシーンを表示するために、グラフィックスコマンド３０を実行することができる。アプリケーションコンピューティングデバイス２０は、いくつかのケースでは、グラフィックスデバイス２のディスプレイデバイス６上にもまた表示されることができるグラフィックスイ画像やシーンを作成するために、状態／パフォーマンス情報３２と共に、グラフィックスコマンド３０を使用することが可能である。
【００３２】
パフォーマンス分析アプリケーション２８は、グラフィックスコマンド３０と状態／パフォーマンス情報３２の受領で、レンダリングされた要素のグラフィックス画像やシーンを作成し、ディスプレイデバイス２４上にそのレンダリングされた要素を表示するために、アプリケーションコンピューティングデバイス２０のプロセッサ２２によって実行されることができる。パフォーマンス分析アプリケーション２８は、多数のアプリケーション命令を含むソフトウェアモジュールを備えることができる。パフォーマンス分析アプリケーション２８は、記憶媒体２６に記憶され、プロセッサ２２によってロードされて、実行されることができる。パフォーマンス分析アプリケーション２８は、記憶媒体２６中に予めロードされることができ、グラフィックスデバイス２で動作するようにカスタマイズされることができる。一例では、パフォーマンス分析アプリケーション２８は、グラフィックスデバイスのハードウェア動作をシミュレートし、状態／パフォーマンス情報３２の一つ以上の態様を表すことができるグラフィカル情報を提供する。
【００３３】
パフォーマンス分析アプリケーション２８の異なるバージョンは、記憶媒体２６に格納されることができ、異なるハードウェア設計を持つ別のグラフィックスデバイスのためのプロセッサ２２によって実行されることができる。いくつかのケースでは、パフォーマンス分析アプリケーション２８と組み合わせて使用されるソフトウェアライブラリも、記憶媒体２６内に記憶されることができる。一例では、パフォーマンス分析アプリケーション２８は、一般的なアプリケーションであることができ、特定のハードウェア又はグラフィックスデバイスのシミュレーション機能が、実行中のパフォーマンス分析アプリケーション２８とリンクされ得るそれぞれ別個のライブラリ内に含められることができる。
【００３４】
例えば、第１のライブラリは、第１の特定のタイプのグラフィックスデバイス（例えば、第１のタイプの無線通信端末に含まれるもの）のためのシミュレーション機能を提供することができるのに対して、第２の異なるライブラリは、第１のグラフィックスデバイスとは異なるハードウェアアーキテクチャを持つ第２の異なるタイプのグラフィックスデバイスのためのシミュレーション機能を提供することができる。これらのライブラリの各々は、記憶媒体２６内に記憶されることができ、第１及び第２のグラフィックスデバイスの何れかをシミュレートするための実行中、パフォーマンス分析アプリケーション２８とで別々にリンクされることができる。その結果、パフォーマンス分析アプリケーション２８、または、実行でのそのようなアプリケーションの異なるバージョンは、アプリケーションコンピューティングデバイス２０上の様々な異なるタイプのグラフィックスデバイスをシミュレートすることが可能である。
【００３５】
一例では、状態／パフォーマンス情報３２の視覚的表現は、アプリケーションコンピューティングデバイス２０のディスプレイデバイス２４上で、アプリケーション開発者に表示されることができる。さらに、グラフィックスコマンド３０の視覚的表現もまた、表示されることができる。多くのケースでは、グラフィックスコマンド３０はバイナリ命令を備えることができるので、アプリケーションコンピューティングデバイス２０は、ディスプレイデバイス２４上にグラフィックスコマンド３０の視覚的表現を生成するために、パフォーマンス分析アプリケーション３１を使用することができる。パフォーマンス分析アプリケーション３１は、記憶媒体２６内に記憶され、グラフィックスコマンド３０の視覚的表現を表示するためにプロセッサ２２にロードされることができる。
【００３６】
一例では、パフォーマンス分析アプリケーション３１は、グラフィックスコマンド３０を生成するときに予めコンパイルされることができる、対応するＡＰＩ命令に、グラフィックスコマンド３０をマッピングするための機能を提供することができる。アプリケーション開発者は、ＡＰＩ命令を使用するプログラムを書くことができるが、これらのＡＰＩ命令は通常、グラフィックスデバイス２上での実行のための、グラフィックスコマンドの３０のような、バイナリ命令にコンパイルされる。
【００３７】
グラフィックスコマンド３０内の一つ以上の命令は、個々のＡＰＩ命令にマッピングされることができる。そして、マッピングされたＡＰＩ命令は、実際に実行されるグラフィックスコマンド３０の視覚的表現を提供するために、ディスプレイデバイス２４上でアプリケーションの開発者に表示されることができる。いくつかのケースでは、パフォーマンス分析アプリケーション２８は、そのようなマッピングを実行するためにマッピング情報を利用することができる。このようなマッピング情報は、例えば、記憶媒体２６内に記憶されることができる。マッピング情報は、いくつかのケースでは、グラフィックスデバイス２から提供されることができ、また、他のケースでは、アプリケーションコンピューティングデバイス２０上に予めプログラムされることができる。
【００３８】
一例では、アプリケーション開発者などのユーザは、例えば、パフォーマンス上のそのような変更の影響を判断するために、グラフィックスコマンド３０の一つ以上を変更することを望むことができる。そのようなケースでは、アプリケーションコンピューティングデバイス２０は、以下に詳細に記載されるように、グラフィックスデバイス２に、実行されるべきであるコマンドへの変更などの修正要求３４を、オプションで提供することができる。
【００３９】
上述したように、グラフィックス画像あるいはディスプレイデバイス２４に表示されたセットされた又はレンダリングされた要素も、また、グラフィックスデバイス２上に表示されることができる。パフォーマンス分析アプリケーション２８が、正確にグラフィックスデバイス２上に提供されるように、レンダリングされたグラフィックス要素のシーンを作成するために、グラフィックスコマンド３０と状態／パフォーマンス情報３２を使用することができるので、アプリケーションコンピューティングデバイス２０を使用するアプリケーション開発者は、グラフィックスアプリケーション３０の実行中に、潜在的なパフォーマンス問題やボトルネックを迅速に識別し、及び、グラフィックスアプリケーション３０の全体的なパフォーマンスを向上させるための修正を試作さえすることができ得る。
【００４０】
例えば、アプリケーション開発者は、アプリケーションコンピューティングデバイス２０上のパフォーマンス分析アプリケーション２８の実行中及びディスプレイデバイス２４上の画像の表示中、グラフィックスコマンド３０及び／または状態／パフォーマンス情報３２に対する一つ以上の修正要求３４を行うことを、オプションで選択することができる。そのような修正要求３４は、グラフィックスコマンド３０の実行または状態／パフォーマンス情報３２の分析中に、観測されたパフォーマンス問題またはボトルネックに基づくことができる。そして、これらの修正要求３４は、グラフィックスデバイス２にアプリケーションコンピューティングデバイス２０から送信されることができ、それらはグラフィックス処理システム４で処理される。一例では、一つ以上のグラフィックスドライバ１８が、修正要求３４を処理するために、グラフィックス処理システム４内で実行される。いくつかのケースでは、修正要求３４は、修正されたコマンドを含むことができる。いくつかのケースでは、修正要求は、修正された状態及び／またはパフォーマンス情報を含むことができる。
【００４１】
修正要求３４の処理で、更新された命令及び／または情報３５が、一つ以上のグラフィックスドライバ１８によるような、アプリケーションコンピューティングデバイス２０に送り返される。更新されたコマンド／情報３５は、グラフィックスデバイス２によって処理された、修正要求３４に基づいて実行するための更新されたグラフィックス命令を含むことができる。更新されたコマンド／情報３５はまた、グラフィックスデバイス２によって処理された、修正要求３４に基づいて更新された状態及び／またはパフォーマンス情報も含むことができる。
【００４２】
更新されたコマンド／情報３５は、ディスプレイデバイス２４上の画像情報又はレンダリングされたグラフィックス要素の表示を更新するために、パフォーマンス分析アプリケーション２８によって処理され、また、アプリケーション開発者に更新されたコマンド／情報３５の視覚表現を提供することもでき、これは、パフォーマンス分析アプリケーション３１を再び使用することを含むことができる。そして、アプリケーション開発者は、パフォーマンス問題が解決または緩和されているかどうかを判断するために、ディスプレイデバイス２４上で更新された画像情報だけでなく、更新されたコマンド／情報３５の視覚的表現を見ることができる。アプリケーション開発者は、グラフィックスアプリケーション３０の全体的なパフォーマンスを改善するために、グラフィックスコマンド３０またはプロトタイプの修正をデバッグするために反復的な処理を使用することができる。
【００４３】
従って、パフォーマンスプロファイリングアプリケーション２８は、ＯｐｅｎＧＬ（登録商標）、ＯｐｅｎＧＬ（登録商標）ＥＳ、又はＯｐｅｎＶＧ  ＡＰＩなどの特定のＡＰＩの使用をなす組み込みプラットフォームのためのマルチメディアアプリケーションを書いているコンテンツ開発者（例えば、ビデオゲーム開発者）によって、アプリケーション開発ツールとして使用されることができる。パフォーマンス分析アプリケーション２８の使用は、アプリケーション開発者に、グラフィックス処理ユニット１２のグラフィックス処理ハードウェアによって個々の２Ｄまたは３Ｄ要素の処理の属性の大規模なセットを、測定し可視化することを許すことができる。これから収集した情報は、開発者がターゲットハードウェアプラットフォーム（例えば、図１のグラフィックスデバイス２によって提供されたプラットフォーム）で、より効率的に実行するために、アプリケーションの設計やパフォーマンス特性をより効果的に調整することを助けることができる。
【００４４】
パフォーマンス分析アプリケーション２８は、それぞれの個々のレンダリングされた要素ごと（例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと）に、グラフィックスデバイス２からパフォーマンス測定値の一つ以上の大規模なセットの取得を可能にする。パフォーマンス分析アプリケーション２８は、開発者に、グラフィックスデバイス２から受信したパフォーマンス測定値（例えば、状態／パフォーマンス情報３２）に基づいて、アプリケーションコンピューティングデバイス２０などの開発デバイス上で、パフォーマンスメトリックをグラフィカルに視覚化することを許すことができる。いくつかのケースでは、各ドローコマンドは、実行時に、一つ以上のグラフィックスプリミティブ、頂点、ピクセルフラグメント、またはその任意の一部／組み合わせのレンダリングをすることが可能である。
【００４５】
例えば、アプリケーション命令２１内に含まれるドローコマンドがグラフィックス処理ユニット１２によって実行されるとき、グラフィックスドライバ１８のうちの少なくとも一つは、ドローコマンドを実行するためにグラフィックスス処理ユニット１２で行われた作業を包含する、グラフィックス処理ユニット１２の一つ以上のカウンタの値を得ることができる。これらのカウンタの内の少なくとも一つは、グラフィックス処理ユニット１２からの、又はパフォーマンス分析アプリケーション２８が高レベルのパフォーマンスメトリックを計算することができるような、グラフィックス処理システム４の他のコンポーネントからの、他のカウンタや測定でサンプリングされ、集約される、低レベルのハードウェアカウンタを含むことができる。カウンタの値は、アプリケーションコンピューティングデバイス２０に送信される状態／パフォーマンス情報３２内に含まれることができる。状態／パフォーマンス情報３２はさらに、関数コールパラメータ、レンダリング状態、形状データ、テクスチャ、シェーダ、等々、を含むエミュレーション環境でのグラフィックスコマンド３０を再作成するために、パフォーマンス分析アプリケーション２８によって必要とされるデータを含むことができる。
【００４６】
開示の一態様では、実行時、パフォーマンス分析アプリケーション２８は、グラフィックス処理ユニット１２によって提供されている（例えば、状態／パフォーマンス情報３２内に含まれる）パフォーマンス情報を受信することができる。グラフィックス処理ユニット１２によって測定されたパフォーマンス情報は、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連する。例えば、グラフィックス要素は、グラフィックスシーンをレンダリングするために、ドローコマンド（例えば、アプリケーション命令２１内に含まれたコマンド）であることができる。いくつかのケースでは、グラフィックス要素は、グラフィックスプリミティブ、頂点、及び／またはピクセルフラグメントを含むことができる。
【００４７】
パフォーマンス情報の受信で、パフォーマンス分析アプリケーション２８は、それぞれの計算値がグラフィックス要素の少なくとも一つに関連する、パフォーマンス情報に基づいて、グラフィックス要素のパフォーマンスメトリックの値を計算することができる。例えば、さらに後述するように、指定されたパフォーマンスメトリックは、ほんの一例を挙げると、クロックサイクルごとに書き込まれたピクセルのためのメトリック、頂点ごとに発行されたシェーダ命令のためのメトリック、及び／または毎秒実行されたメモリ書き込みの数のためのメトリック、のような高レベルのパフォーマンスメトリックを備えることができる。
【００４８】
さらに後述するように、パフォーマンス分析アプリケーション２８は、グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、グラフィックス要素のそれぞれに、グラフィカル識別子（例えば、色、シェーディング／クロスハッチング識別子、他のグラフィカル識別子）を割り当てることができ、且つ、ディスプレイデバイス２４上のように、表示の目的のためにグラフィックスシーンをレンダリングするためにグラフィックス要素を処理することができる。グラフィックス識別子の内の一つは、グラフィックス要素の各々に割り当てられることができる。そのような形態では、パフォーマンス分析アプリケーション２８は、グラフィックス要素の処理中（例えば、ドローコマンドの実行中）にレンダリングされたグラフィックス要素を表示し、グラフィックス要素に割り当てられたグラフィカル識別子に従ってそのような要素を視覚的に表示することが可能である。
【００４９】
このような情報の表示は、多くの場合、アプリケーション開発者が、グラフィックス処理ユニット１２によって個々のグラフィックス要素（例えば、２Ｄまたは３Ｄオブジェクト）の処理の属性の大規模なセットを直接且つ正確に測定し、ディスプレイユニット２４上にそのような測定値の表現を容易に見るのを、支援することができる。表示された情報はまた、開発者が、グラフィックスデバイス２によって提供されたターゲットのハードウェアプラットフォーム上でより効率的に実行するために、アプリケーション命令２１の設計やパフォーマンス特性をより効果的に調整するのを助けることができる。
【００５０】
例えば、開発者は、任意の変更が、ディスプレイデバイス２４上のレンダリングされた要素のためのパフォーマンスメトリックの更新された視覚的表現の検査時に実行されるアプリケーションの一つ以上のパフォーマンス特性を向上させることができるかどうかを判断するために、アプリケーションの様々な態様を調整することができる。開発者はまた、上述したように、グラフィックスデバイス２にアプリケーションコンピューティングデバイス２０から送信された修正要求３４内に含まれるコマンドの内の少なくとも一つを修正するために、パフォーマンス分析アプリケーション２８を利用することもできる。そして、レンダリングされた要素のためのパフォーマンスメトリックの更新された表示が、更新されたコマンド／情報３５の受領で、ディスプレイデバイス２４上に提供されることができる。
【００５１】
図２は、パフォーマンス分析アプリケーション７０を直接実装する又は実行することができる、グラフィックスデバイス５０の別の例を示すブロック図である。図１に示されたグラフィックスデバイス２と同様に、グラフィックスデバイス５０は、ディスプレイデバイス７２と記憶媒体（例えば、メモリ）６４に結合された、グラフィックス処理システム５２を含む。グラフィックスデバイス５０は、グラフィックスデバイス２と同様に機能することができ、また、コンピューティングデバイスを備えることができる。
【００５２】
グラフィックス処理システム５２は、制御プロセッサ５４、グラフィックス処理ユニット５６、一つ以上のバッファ５８、オプションの頂点プロセッサ６０、及びディスプレイプロセッサ６２を含む。グラフィックス処理システム５２は、システム５２が頂点処理動作を提供する場合には、頂点プロセッサ６０を含む。
【００５３】
図１に示される記憶媒体８と同様の記憶媒体６４は、複数のアプリケーション命令６６と複数のグラフィックスドライバ６８とを含む。しかしながら、記憶媒体８とは異なり、記憶媒体６４は、グラフィックス処理システム５２中のプロセッサ／ユニットの内の少なくとも一つにロードされて実行されることができる、パフォーマンス分析アプリケーション７０を含む。
【００５４】
パフォーマンス分析アプリケーション７０は、図１に示されたパフォーマンス分析アプリケーション２８と同様に動作することができる。しかしながら、図２の例においては、デバイス内でアプリケーション命令６６を実際に実行する同様のデバイス（即ち、グラフィックスデバイス５０）もまた、パフォーマンス分析アプリケーション７０を実行する。よって、別個のアプリケーションコンピューティングデバイスは必要なく、図２の例では示されていない。
【００５５】
図２のグラフィックスデバイス５０は、様々な動作モードを持つことができる。例えば、メインモードでは、グラフィックス処理システム５２は、パフォーマンス分析アプリケーション７０を使用せずに、アプリケーション命令６６及び／またはメイン動作モードにあるグラフィックスドライバ６８を実行する又は実装することができる。しかしながら、別の（例えば、テスト、エミュレーション／シミュレーション）モードでは、グラフィックス処理システム５２はさらに、パフォーマンス分析アプリケーション７０を実行する又は実装することができる。開発者は、ディスプレイデバイス７２におけるパフォーマンス分析アプリケーション７０の結果及び出力を直接見ることができ得る。
【００５６】
従って、パフォーマンス分析アプリケーション７０は、ＯｐｅｎＧＬ（登録商標）、ＯｐｅｎＧＬ（登録商標）ＥＳ、又はＯｐｅｎＶＧ  ＡＰＩなどの特定のＡＰＩの使用をなす組み込みプラットフォームのためのマルチメディアアプリケーションを書いているコンテンツ開発者（例えば、ビデオゲーム開発者）によって、アプリケーション開発ツールとして使用されることができる。パフォーマンス分析アプリケーション７０の使用は、アプリケーション開発者に、ディスプレイデバイス７２上に直接、グラフィックス処理ユニット５６のグラフィックス処理ハードウェアによって個々の２Ｄまたは３Ｄ要素の処理の属性の大規模なセットを、測定し可視化することを許すことができる。これから収集した情報は、開発者がターゲットハードウェアプラットフォーム（例えば、図２のグラフィックスデバイス５０によって提供されたプラットフォーム）で、より効率的に実行するために、アプリケーションの設計やパフォーマンス特性をより効果的に調整することを助けることができる。
【００５７】
パフォーマンス分析アプリケーション７０は、それぞれの個々のレンダリングされた要素ごと（例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと）に、グラフィックスデバイス５０からパフォーマンス測定値の一つ以上の大規模なセットの取得を可能にする。パフォーマンス分析アプリケーション７０は、開発者に、グラフィックス処理ユニット５６から受信したパフォーマンス測定値に基づいて、他の別体のアプリケーションコンピューティングデバイスの必要なしに、グラフィックスデバイス５０上で直接、パフォーマンスメトリックをグラフィカルに視覚化することを許すことができる。
【００５８】
一態様では、出て行くピクセルフラグメントは、パフォーマンス分析アプリケーション７０の実装または実行中に、グラフィックス処理ユニット５６によって提供されるパフォーマンスカウンタデータのような、パフォーマンスカウンタデータから直接それらの値を得ることができる。いくつかのケースでは、グラフィックス処理システム５２によって（例えば、グラフィックス処理ユニット５６及び／またはディスプレイプロセッサ６２によって）実装されたフラグメントシェーダエンジンは、シェーダコードに特別なレジスタを公開することにより、一つ以上のパフォーマンスカウンタへのアクセスを与えることができる。ピクセルフラグメントの値は、上記特別なレジスタ内のデータに基づいて、またはそれから導出されることができる。グラフィックス処理システム５２中のブレンディングハードウェアは、複数のピクセルフラグメントが、同じスクリーン座標に配置されることができるので、フレームバッファ上で、これらのピクセルフラグメントを蓄積する又は結合することができる。従って、ピクセルフラグメントに割り当てられたグラフィカル識別子（例えば、色、クロスハッチング／シェーディングパターン）は、カウンタ（例えば、グラフィックス処理ユニット５６のカウンタ）の内の少なくとも一つの値に基づいて、ピクセルフラグメントの複数のものを結合するために、ブレンディングを使用することによって決定されることができる。
【００５９】
図３は、一例による、図１に示された、グラフィックス処理システム４、グラフィックスドライバ１８、及びアプリケーションコンピューティングデバイス２０の特定の詳細を示すブロック図である。図３においては、アプリケーションコンピューティングデバイス２０がグラフィックスデバイス２のグラフィックス処理システム４に結合されているものと仮定する。しかしながら、これは、例示の目的だけのために示されている。他のシナリオでは、パフォーマンス分析アプリケーションは、（例えば、図２の例におけるように）デバイス内に直接実装されることができる。
【００６０】
図３に示すように、グラフィックス処理システム４は、４つのプログラマブルプロセッサ、即ち、図１にも示された、制御プロセッサ１０、オプションの頂点プロセッサ１４、グラフィックス処理ユニット１２、及び、ディスプレイプロセッサ１６、を含む。制御プロセッサ１０は、頂点プロセッサ１４、グラフィックス処理ユニット１２、又はディスプレイプロセッサ１６のいずれも制御することができる。多くの場合、これらのプロセッサ１０、１２、１４及び１６は、システム４内のグラフィックス処理パイプラインの一部であることができる。
【００６１】
制御プロセッサ１０は、パイプラインを介してデータまたは命令実行の流れの一つ以上の態様を制御することができ、且つ、頂点プロセッサ１４にグラフィックス画像のためのジオメトリ情報を提供することもできる。オプションの頂点プロセッサ１４は、原始的なジオメトリ形式での複数の頂点に従って記述又は定義されることができる、グラフィックス画像の頂点変換又はジオメトリ処理を管理することができる。利用される場合は、頂点プロセッサ１４は、グラフィックス画像のレンダリング動作またはラスタライズ動作を実行することができる、グラフィックス処理ユニット１２に、その出力を提供することができる。グラフィックス処理ユニット１２は、表示のために、ピクセル形式で、グラフィックス画像を準備する、ディスプレイプロセッサ１６に、その出力を提供することができる。グラフィックス処理ユニット１２はまた、シェーディングやスケーリングなどの、ピクセルデータ上の様々な操作を実行することもできる。
【００６２】
しばしば、グラフィックス画像データは、アプリケーション命令２１（図１）の一部であり得る、グラフィックスコマンド３０の実行中に、この処理パイプラインで処理されることができる。その結果、グラフィックスコマンド３０は、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２、及びディスプレイプロセッサ１６の内の少なくとも一つによって実行されることができる。アプリケーション開発者は通常、グラフィックス処理システム４内のどの特定のプロセッサがグラフィックスコマンド３０のどれを実行しているかの、多くの知識やコントロールを有していないことがあり得る。いくつかのケースでは、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２、及びディスプレイプロセッサ１６の内の少なくとも一つは、グラフィックスコマンド３０の実行中に、パフォーマンス問題を持ち得る、あるいは、処理パイプライン内の潜在的なボトルネックとなり得る。これらのケースでは、グラフィックス処理システム４内の全体的なパフォーマンスはが低下するおそれがあり、アプリケーション開発者は、パフォーマンスを向上させるために、グラフィックスコマンド３０に変更を加えることを望むことができる。しかしながら、開発者は、必ずしも、プロセッサ１０、１２、１４または１６の何れが、パフォーマンス問題を持つものであるか、知ることができるわけではない。
【００６３】
パフォーマンスのボトルネックと潜在的な解法を識別する問題を支援するために、グラフィックスデバイス２のグラフィックスドライバ１８Ａは、図３に示すように、グラフィックス処理システム４からグラフィックスコマンド３０を取得、又は収集し、アプリケーションコンピューティングデバイス２０にそれを送ることができる。グラフィックスドライバ１８Ａは、図１に示されたグラフィックスドライバ１８の一部である。グラフィックスドライバ１８Ａは、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２、及びディスプレイプロセッサ１６の内の少なくとも一つによって、ロードされ、実行されることができる。加えて、グラフィックスドライバ１８Ａはまた、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２、及びディスプレイプロセッサ１６の内の少なくとも一つから状態及び／またはパフォーマンス情報３２を収集し、さらに、アプリケーションコンピューティングデバイス２０にこの情報３２を送ることもできる。一例では、グラフィックスドライバ１８Ａは、グラフィックスコマンド３０がＯｐｅｎＧＬ  ＥＳ  ＡＰＩ命令から生成される又はコンパイルされることができるバイナリ命令を含む場合、ＯｐｅｎＧＬ  ＥＳドライバを備えることができる。
【００６４】
状態データの様々な形式が、状態／パフォーマンス情報３２内に含まれることができる。例えば、状態データは、グラフィックスコマンド３０の実行中に使用される、または、別なふうに関連する、グラフィックスデータを含むことができる。状態データは、位置などの頂点配列、色、座標、サイズ、または重量のデータに関連することができる。状態データはさらに、テクスチャ状態データ、ポイント状態データ、ライン状態データ、ポリゴン状態データ、間引き（culling）状態データ、アルファテスト状態データ、ブレンディング状態データ、深さ状態データ、ステンシル状態データ、または色状態データを含むことができる。前述したように、状態データは、状態情報と実際のデータの両方を含むことができる。いくつかのケースでは、状態データは、一つ以上のＯｐｅｎＧＬトークンに関連したデータを含むことができる。
【００６５】
様々な形式のパフォーマンスデータもまた、状態／パフォーマンス情報３２内に含まれることができる。一般的に、このパフォーマンスデータは、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２、及びディスプレイプロセッサ１６の内の少なくとも一つからのメトリックまたはハードウェアカウンタデータを含むことができる。パフォーマンスデータは、フレームレートまたはサイクルデータを含むことができる。サイクルのデータは、プロファイリング、コマンド配列、頂点およびインデックスデータ、または他の動作のために使用されるサイクルのためのデータを含むことができる。様々な態様において、様々な形式の状態及びパフォーマンスデータは、グラフィックスドライバ１８Ａによってグラフィックス処理システム４から収集された状態／パフォーマンス情報３２内に含まれることができる。いくつかの例では、パフォーマンスデータはまた、グラフィックス処理ユニット１２によって提供されたカウンタデータを含むことができる。
【００６６】
前述したように、アプリケーションコンピューティングデバイス２０は、受信したグラフィックスコマンド３０及び状態／パフォーマンス情報３２に従って、グラフィックス画像の表現を表示することができる。アプリケーションコンピューティングデバイス２０はまた、状態／パフォーマンス情報３２の視覚的表現を表示することができる。再作成されたグラフィックス画像及び／または状態／パフォーマンス情報３２の視覚的表現を見て対話することにより、アプリケーション開発者は、グラフィックスコマンド３０の実行の中に、グラフィックスデバイス２のグラフィックス処理システム４内のパフォーマンス問題を直ちに識別して解決することができる。例えば、アプリケーション開発者は、プロセッサ１０、１２、１４及び／または１６の内の特定のものがパフォーマンス問題を持つことができると識別することができ得る。
【００６７】
パフォーマンス分析アプリケーション２８は、アプリケーション開発者によって、アプリケーション開発ツールとして使用されることができる。いくつかの例では、パフォーマンス分析アプリケーション２８の使用は、アプリケーション開発者に、グラフィックス処理ユニット１２のグラフィックス処理ハードウェアによって、個々の２Ｄまたは３Ｄ要素の処理の属性の大規模なセットを測定し、可視化させることを許すことができる。パフォーマンス分析アプリケーション２８は、それぞれの個々のレンダリングされた要素ごと（例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと）に、グラフィックス処理システム４のためのパフォーマンス測定値の一つ以上の大規模なセットの取得を可能にする。
【００６８】
パフォーマンス分析アプリケーション２８は、開発者に、グラフィックス処理システム４から受信したパフォーマンス測定値に基づいて、アプリケーションコンピューティングデバイス２０などの開発デバイス上で、パフォーマンスメトリックをグラフィカルに視覚化することを許すことができる。これから収集した情報は、開発者がターゲットハードウェアプラットフォーム（例えば、グラフィックス処理システム４によって提供されたプラットフォーム）上で、より効率的に実行するために、アプリケーションの設計やパフォーマンス特性をより効果的に調整することを助けることができる。
【００６９】
識別されたパフォーマンス問題への回避策や解決策を識別するための試みでは、開発者は、アプリケーションコンピューティングデバイス２０上の一つ以上の修正要求３４を開始することができる。例えば、開発者は、修正要求３４を作成するために、再作成した画像または状態／パフォーマンス情報３２の表現と対話することができる。いくつかのケースでは、開発者は、修正要求３４を生成するために、以下により詳細に説明されるように、状態／パフォーマンス情報３２を、さらに直接、変更することができる。あるケースでは、修正要求３４は、グラフィックスデバイス２のグラフィックス処理システム４中のグラフィックスコマンド３０の内の少なくとも一つの実行を無効にするための一つ以上の要求、あるいは、グラフィックスコマンド３０の内の少なくとも一つを修正する要求を含むことができる。
【００７０】
修正要求３４は、動作中、グラフィックスデバイス２のための要求を取り扱うグラフィックスドライバ１８Ａにアプリケーションコンピューティングデバイス２０から送信される。多くのケースでは、修正要求３４は、グラフィックスコマンド３０の実行中、グラフィックス処理システム４内のプロセッサ１０、１２、１４又は１６の内の少なくとも一つ中でデータを含むことができる、状態情報を修正するための要求を含むことができる。そして、グラフィックスドライバ１８Ａは、修正要求３４内に含まれるグラフィックス処理システム４内の変更を実装することができる。これらの変更は、グラフィックスコマンド３０の実行のためのプロセッサ１０、１２、１４及び／または１６の間での実行の流れを変更することができる。あるケースでは、グラフィックスコマンド３０の内の一つ以上は、修正要求３４に従ってグラフィックス処理システム４での実行中、無効にすることができる。
【００７１】
グラフィックスドライバ１８Ａは、修正要求３４の処理に応答してアプリケーションコンピューティングデバイス２０に、更新された命令及び／または情報３５を送信することが可能である。更新されたコマンド／情報３５は、パフォーマンス情報を含む、グラフィックスドライバ１８Ａによってグラフィックス処理システム４から収集された、更新された状態情報を含むことができる。更新されたコマンド／情報３５はまた、更新されたグラフィックス命令を含むこともできる。
【００７２】
アプリケーションコンピューティングデバイス２０は、グラフィックス画像の更新された表現だけでなく、パフォーマンス分析アプリケーション２８の実行または実装を介して更新されたコマンド／情報３５の視覚的表現を、表示するために、更新されたコマンド／情報３５を使用することができる。パフォーマンス分析アプリケーション２８は、グラフィックスドライバ１８Ａから受信した更新されたコマンド／情報３５に基づいてグラフィックスシーンのためのレンダリングされた要素単位でパフォーマンスメトリックのグラフィカルな表示を更新することができる。そして、アプリケーション開発者は、以前に識別されたパフォーマンス問題が、解決されたか、あるいは別なふうに取り組まれたかどうかを評価することができ得る。例えば、アプリケーション開発者は、あるテクスチャ、ポリゴンまたは他の特徴が最適化されているかどうか、あるいは、他のパフォーマンスパラメータが改善されているかどうかを判断するために、更新された画像だけでなく、更新されたコマンド／情報３５の視覚的表現を分析することができ得る。
【００７３】
そのような形態では、アプリケーション開発者は、グラフィックスデバイス２上のグラフィックス処理システム４の動作をシミュレートするアプリケーションコンピューティングデバイス２０上の環境中で、グラフィックスコマンド３０の実行を、迅速且つ効果的にデバッグしたり、分析したりすることができ得る。開発者は、グラフィックスコマンド３０の実行パフォーマンスを最大化するため、シーン内の複数のグラフィックス画像又は複数の画像フレームを分析するために、アプリケーションコンピューティングデバイス２０上の表示された画像及び状態／パフォーマンス情報と反復的に対話することができる。
【００７４】
図４は、一態様による、制御プロセッサ１０、グラフィックス処理ユニット１２、頂点プロセッサ１４及びディスプレイプロセッサ１６によって実行されることができる動作の詳細を示す流れ図である。図４はまた、フレームバッファ格納１００及びディスプレイ６のための動作も示している。一例では、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２及び／またはディスプレイプロセッサ１６は、グラフィックスコマンド３０の内の一つ以上の実行の結果として、様々な動作を行う。
【００７５】
前述したように、制御プロセッサ１０は、グラフィックス処理パイプラインを介してデータや命令実行の流れの一つ以上の態様を制御することができ、且つ、頂点プロセッサ１４にジオメトリ情報を提供することもできる。図４に示すように、制御プロセッサ１０は、９０で、ジオメトリ格納を実行することができる。いくつかのケースでは、一つ以上のプリミティブのためのジオメトリ情報は、バッファ１５（図１）に制御プロセッサ１０によって記憶されることができる。いくつかのケースでは、ジオメトリ情報は、記憶媒体８に記憶されることができる。
【００７６】
そして、頂点プロセッサ１４は、グラフィックスデバイス内で使用され場合、制御プロセッサによって提供され及び／または９２で処理するためのバッファ１５に記憶された所与のプリミティブのためのジオメトリ情報を得ることができる。あるケースでは、頂点プロセッサ１４は、ジオメトリ情報の頂点変換を管理することができる。あるケースでは、頂点プロセッサ１４は、ジオメトリ情報上で照明動作を実行することができる。
【００７７】
頂点プロセッサ１４は、９４でデータ上にレンダリングまたはラスタライズ動作を実行することができる、グラフィックス処理ユニット１２に、その出力を提供することができる。グラフィックス処理ユニット１２は、表示のために、ピクセル形式で、一つ以上グラフィックス画像を準備する、ディスプレイプロセッサ１６に、その出力を提供することができる。ディスプレイプロセッサ１６は、９８で、データの様々なフラグメントを処理するためのフラグメント処理を含む、ピクセルデータ上に様々な操作を行うことができる。あるケースでは、これは、当該技術分野で知られているような、深さテスト、ステンシルテスト、ブレンディング、またはテクスチャマッピングの内の一つ以上を含むことができる。テクスチャマッピングを実行するときには、ディスプレイプロセッサ１６は、９６で、テクスチャ格納及びフィルタリング情報を組み込むことができる。いくつかのケースでは、グラフィックス処理部１６は、シェーディングやスケーリング操作などの、ラスタライズされたデータ上に他の操作を実行することができる。
【００７８】
ディスプレイプロセッサ１６は、１００で、フレームバッファに記憶するための出力ピクセル情報を提供する。いくつかのケースでは、フレームバッファは、バッファ１５（図１）内に含まれることができる。他のケースでは、フレームバッファは、記憶媒体８内に含まれることができる。フレームバッファは、ディスプレイデバイス６上などのディスプレイデバイス６上にその後に表示されることができる、画像データの一つ以上のフレームを格納する。
【００７９】
前述したように、グラフィックスコマンド３０は、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２及びディスプレイプロセッサ１６の内の少なくとも一つによって実行されることができる。アプリケーション開発者は通常、グラフィックス処理システム４内のどの特定のプロセッサがグラフィックスコマンド３０の内のどれを実行しているかの、多くの知識や制御を持たないことがあり得る。あるケースでは、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２及びディスプレイプロセッサ１６の内の一つ以上は、パフォーマンス問題を持つことができ、あるいは、グラフィックスコマンド３０の実行中に、処理パイプライン内の潜在的なボトルネックとなり得る。
【００８０】
ボトルネックの場所、あるいは、そのようなボトルネックの影響を解決または軽減するにはどのようにするのが最善かを特定するのは、アプリケーション開発者には、しばしば難しいことがあり得る。従って、一例では、グラフィックスコマンド３０及び／または状態情報は、アプリケーションコンピューティングデバイス２０などの外部コンピューティングデバイスに、グラフィックスデバイス２から提供されることができる。状態情報は、グラフィックスコマンド３０の実行中に発生する、図４に示されるものなど、様々な操作に関する、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２及びディスプレイプロセッサ１６の内の少なくとも一つからのデータを含むことができる。アプリケーションコンピューティングデバイス２０は、効率的且つ効果的な方法でボトルネックを識別し、解決するために、デバイス２上に示されるグラフィックス画像を作成することができる。
【００８１】
図５は、一例によれる、図３に示したグラフィックスドライバ１８Ａの追加の詳細を示すブロック図である。前述したように、グラフィックスドライバ１８Ａは、例えば、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２及びディスプレイプロセッサ１６の内の少なくとも一つによるような、グラフィックス処理システム４内で実行されることができる命令を備えることができる。グラフィックスドライバ１８Ａの実行は、グラフィックス処理システム４に、アプリケーションコンピューティングデバイス２０と通信することを許す。一例では、グラフィックスドライバ１８Ａは、グラフィックス処理ユニット１２内で実行されることができる命令を備えることができ、且つ、様々な状態及びパフォーマンス情報に、パフォーマンス分析アプリケーション２８へグラフィックス処理システム４によって提供されることを許すことができる。
【００８２】
グラフィックスドライバ１８Ａは、実行時に、トランスポートインタフェース１１０、プロセッサ使用状況モジュール１１２、ハードウェアカウンタモジュール１１４、他の状態及び／またはパフォーマンスデータを管理することができる状態／パフォーマンスデータモジュール１１６、ＡＰＩトレースモジュール１１８及びオーバライドモジュール１２０の例として図５に示される、様々な機能ブロックを含むことができる。グラフィックスドライバ１８Ａは、アプリケーションコンピューティングデバイス２０のパフォーマンス分析アプリケーション２８と通信するために、トランスポートインタフェースモジュール１１０を使用する。
【００８３】
プロセッサ使用状況モジュール１１２は、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２及びディスプレイプロセッサ１６の内の少なくとも一つのためのプロセッサ使用状況情報を収集し、保持する。プロセッサ使用状況情報は、プロセッササイクル及び／またはパフォーマンス情報を含むことができる。サイクルデータは、プロファイリング、コマンド配列、頂点及びインデックスデータ、または他の動作に使用されるサイクルのためのデータを含むことができる。そして、プロセッサ使用状況モジュール１１２は、トランスポートインタフェースモジュール１１０を介してアプリケーションコンピューティングデバイス２０に、このようなプロセッサ使用状況情報を提供することができる。いくつかのケースでは、プロセッサ使用状況モジュール１１２は、それが非同期的に情報を受信するにつれて、デバイス２０にこの情報を提供する。他のケースでは、プロセッサ使用状況モジュール１１２は、パフォーマンス分析アプリケーション２８から要求を受け取ったとき、情報を提供することができる。
【００８４】
ハードウェアカウンタモジュール１１４は、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２及びディスプレイプロセッサ１６の内の少なくとも一つによって命令の実行中に、様々なハードウェアカウンタを収集し、保持する。カウンタは、グラフィックス処理システム４内の命令実行に関して、様々な状態インジケータ及び／またはメトリックを追跡し続けることができる。ハードウェアカウンタモジュール１１４は、非同期で又は要求に応じて、デバイス２０に情報を提供することができる。特に、ハードウェアカウンタモジュール１１４は、グラフィックス処理ユニット１２から様々なカウンタ値を取得し、そのような値を、パフォーマンス分析アプリケーション２８へ、グラフィックス処理ユニット１２によるコマンドの実行に関連するパフォーマンス情報として、提供することができる。
【００８５】
状態／パフォーマンスデータモジュール１１６は、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス処理ユニット１２及びディスプレイプロセッサ１６の内の少なくとも一つのための他の状態及び／またはパフォーマンスデータを収集し、保持する。例えば、状態データは、いくつかのケースでは、グラフィックスデータを備えることができる。状態データは、位置のような頂点配列、色、座標、サイズ、または重量データに関連したデータを含むことができる。状態データはさらに、テクスチャ状態データ、ポイント状態データ、ライン状態データ、ポリゴン状態データ、間引き状態データ、アルファテスト状態データ、ブレンディング状態データ、深さ状態データ、ステンシル状態データ、または色状態データを含むことができる。パフォーマンスデータは、様々な他のメトリックまたはサイクルデータを含むことができる。状態／パフォーマンスデータモジュール１１６は、非同期でまたは要求に応じて、パフォーマンス分析アプリケーション１８に情報を提供することができる。
【００８６】
ＡＰＩトレースモジュール１１８は、グラフィックス処理システム４によって実行されて、トランスポートインタフェースモジュール１１０を介してパフォーマンス分析アプリケーション２８にトランスポートされる、グラフィックス命令の流れ及び／またはトレースを管理する。前述したように、グラフィックスデバイス２は、デバイス２０に、その処理パイプラインでグラフィックス処理システム４によって実行されるグラフィックスコマンド３０のコピーを提供する。ＡＰＩトレースモジュール１１８は、これらのグラフィックスコマンド３０の取得とトランスポートを管理する。ＡＰＩトレースモジュール１１８はまた、グラフィックスコマンド３０を生成するために使用されることができるＡＰＩ命令などの、グラフィックスコマンド３０をグラフィックスコマンド３０の視覚的表現にマッピングするために、パフォーマンス分析アプリケーション３１（図１）で使用されるある種の情報を提供することもできる。
【００８７】
一例では、アプリケーションコンピューティングデバイス２０にグラフィックスデバイス２から送信される状態／パフォーマンス情報３２（例えば、図１）は、プロセッサ使用状況モジュール１１２、ハードウェアカウンタモジュール１１４、及び／または状態／パフォーマンスデータモジュール１１６によって提供されるデータまたは情報の何れかを含むことができる。一例では、アプリケーションコンピューティングデバイス２０にグラフィックスデバイス２から送信されるグラフィックスコマンド３０（例えば、図１）は、ＡＰＩトレースモジュール１１８によって提供される情報を含むことができる。
【００８８】
オーバライドモジュール１２０は、グラフィックスドライバ１８Ａに、グラフィックス処理システム４内のある命令の実行を変更すること、またはオーバライドすることを許す。前述したように、パフォーマンス分析アプリケーション２８は、グラフィックスデバイス２に、修正３４のような、一つ以上の修正要求を送信することができる。あるケースでは、修正要求３４は、グラフィックス処理システム４でのグラフィックスコマンド３０の内の少なくとも一つの実行を無効にするための一つ以上の要求、あるいは、グラフィックスコマンド３０の内の少なくとも一つを修正するための要求を含むことができる。いくつかのケースでは、修正要求３４は、状態／パフォーマンス情報３２を変更するための要求を含むことができる。
【００８９】
オーバライドモジュール１２０は、修正要求３４を受理し、処理することができる。例えば、オーバライドモジュール１２０は、パフォーマンス分析アプリケーション２８から、状態／パフォーマンス情報３２を修正するための何れかの要求と共に、グラフィックスコマンド３０の内の少なくとも一つを修正するための何れかの要求を受信し、グラフィックス処理システム４にそのような要求を送信することができる。そして、制御プロセッサ１０、グラフィックス処理ユニット１２、頂点プロセッサ１４及びディスプレイプロセッサ１６の内の少なくとも一つは、これらの要求を処理し、更新されたコマンド／情報３５を生成することができる。そして、オーバライドモジュール１２２０は、前述したように、処理のためのパフォーマンス分析アプリケーション２８に、更新されたコマンド／情報３５を送信することができる。
【００９０】
そのような形態では、グラフィックスドライバ１８Ａは、グラフィックス処理システム４とアプリケーションコンピューティングデバイス２０のパフォーマンス分析アプリケーション２８との間のインタフェースを提供する。グラフィックスドライバ１８Ａは、パフォーマンス分析アプリケーション２８にグラフィックス命令と状態／パフォーマンス情報３２を提供し、また、パフォーマンス分析アプリケーション２８から修正要求３４を受信することが可能である。このような修正要求３４を処理した後、グラフィックスドライバ１８Ａは、パフォーマンス分析アプリケーション２８に戻る、更新されたコマンド／情報３５を提供することがその後に可能となる。
【００９１】
図６は、開示の一態様による、図１に示したアプリケーションコンピューティングデバイス２０又は図２に示したグラフィックスデバイス５０によって実行されることができる方法の流れ図である。単に例示の目的のために、図６の方法は、アプリケーションのコンピューティングデバイス２０のパフォーマンス分析アプリケーション２８（図１）又はパフォーマンス分析アプリケーション７０（図２）などのパフォーマンス分析アプリケーションによって実行される、ということが以降の説明中では仮定されるだろう。
【００９２】
パフォーマンス分析アプリケーションは、グラフィックス処理ユニット（例えば、グラフィックスデバイス２のグラフィックス処理ユニット１２）によって提供されるパフォーマンス情報を受信することができるものであり、ここで、パフォーマンス情報は、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連してグラフィックス処理ユニットによって測定されるものである（１３０）。例えば、パフォーマンス情報は、アプリケーションコンピューティングデバイス２０に提供される、図１に示した状態／パフォーマンス情報３２の一部であることができる。パフォーマンス情報は、グラフィックスコマンド３０内に含まれるあるドローコマンドの実行と関連されることができる。グラフィックスコマンド３０は、ＡＰＩ命令から生成されるバイナリ命令を備えることができる。
【００９３】
パフォーマンス情報は、いくつかの例では、グラフィックス処理ユニットによって収集されたパフォーマンスカウンタデータを備えることができる。例えば、パフォーマンスカウンタデータは、ドローコマンドがドローコマンドによって実行されているにつれて、間引かれた又はクリッピングされたグラフィックスプリミティブの数のカウンタ値を含むことができる。パフォーマンスカウンタデータの様々な他の形態もまた、収集されることができる。パフォーマンスカウンタデータの様々な他の形式もまた、収集されることができるもので、限定はしないが以下を含む：即ち、フレームごとのハードウェアクロックサイクル、ドローコマンド、プリミティブ、頂点、またはフラグメント、の数；フレームごとのグラフィックスデバイス（例えば、グラフィックスデバイス２）の一つ以上のサブコンポーネント内でのアイドル又はストールサイクル、ドローコマンド、プリミティブ、頂点、またはフラグメント、の数；等々。
【００９４】
そして、パフォーマンス分析アプリケーションは、パフォーマンス情報に基づいて、グラフィックス要素のパフォーマンスメトリックの値を計算することができる（１３２）。それぞれの計算値は、グラフィックス要素の少なくとも一つと関連する。パフォーマンス分析アプリケーションは、任意の数の異なるパフォーマンスメトリックのための値を計算することができる。例示パフォーマンスメトリックは、例えば、クロックサイクルごとに書き込まれるピクセルの数、頂点ごとに発行されるシェーダ命令の数、秒ごとに実行されるメモリ書き込みの数、等々を含むことができる。パフォーマンス分析アプリケーションは、受信されたパフォーマンス情報に基づいて、これらのメトリックのための値を計算することができる。
【００９５】
パフォーマンス分析アプリケーションは、グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、グラフィックス要素にグラフィカル識別子を割り当てることができるものであり、ここで、グラフィカル識別子の一つがグラフィックス要素のそれぞれに割り当てられるものである（１３４）。そして、パフォーマンス分析アプリケーションは、グラフィックス要素に割り当てられたグラフィカル識別子に従ってグラフィックスシーンをレンダリングするとき、個々のグラフィックス要素を（例えば、ディスプレイデバイス２４上に）表示することができる（１３６）。
【００９６】
パフォーマンス情報は、グラフィックス要素のそれぞれのためにグラフィックス処理ユニットによって収集及び提供される、一つ以上のカウンタの値を備えることができる。グラフィックス要素のそれぞれは、グラフィックスシーン、グラフィックスプリミティブ、頂点、ピクセルフラグメント、等々をレンダリングするための一つ以上のドローコマンドを備えることができる。パフォーマンスプロファイリングアプリケーションはまた、いくつかのインスタンスでは、選択可能なパフォーマンスメトリックの表現を表示し、且つ、指定されたパフォーマンスメトリックとして選択可能なパフォーマンスメトリックの内の一つのユーザ選択を受けることもできる。そのような形態では、ユーザは、レンダリングされたグラフィックス要素のための所望のパフォーマンスデータを見るために、利用可能な選択可能なメトリックのリストから、パフォーマンスメトリックを指定することができる。
【００９７】
いくつかの例では、パフォーマンス分析アプリケーションは、グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、パフォーマンスメトリックの値の範囲を決定することができる。そして、パフォーマンスプロファイリングアプリケーションは、上記値の範囲内のグラフィックス要素のためのパフォーマンスメトリックの計算値の位置に基づいて、グラフィックス要素にグラフィカル識別子（例えば、色、シェーディング識別子、クロスハッチング識別子）を割り当てることができる。
【００９８】
前述したように、グラフィックス要素に割り当てられるグラフィカル識別子は、色を備えることができる。これらのケースでは、パフォーマンス分析アプリケーションは、色の一つがグラフィックス要素のそれぞれに割り当てられている、グラフィックス要素に割り当てられた色に従って、個々のグラフィックス要素を表示することができる。例えば、グラフィックス要素の処理で、パフォーマンス分析アプリケーションは、表示の際に（例えば、ドローコマンドごとに、グラフィックスプリミティブごとに、頂点ごとに、ピクセルフラグメントごとに、）第１のレンダリングされる要素に第１の色を割り当て、表示の際に第２のレンダリングされる要素に第２の（異なる）色を割り当て、・・・、とすることができる。そのような形態では、パフォーマンス分析アプリケーションは、容易に理解できるフォーマットで、パフォーマンス情報を、要素ごと単位で、表示することができる。アプリケーション開発者は、アプリケーション開発、デバッグ、最適化、及び／またはアプリケーション開発中の他の機能で開発者を助けることができる、シーンをレンダリングするためのグラフィックス要素のパフォーマンス特性を識別するために、そのような情報を素早く見ることができる。
【００９９】
グラフィックス要素に割り当てられるグラフィカル識別子は、色よりはむしろ、他の識別子の形式を備えることができる。例えば、シェーディング及び／またはクロスハッチングパターン、または識別子が、使用されることができる。いくつかの例では、パフォーマンス分析アプリケーションは、識別子の一つがグラフィックス要素のそれぞれに割り当てられるグラフィックス要素に割り当てられているシェーディング／クロスハッチング識別子に従って、個々のグラフィックス要素を表示することができる。例えば、グラフィックス要素の処理で、パフォーマンス分析アプリケーションは、表示の際に（例えば、ドローコマンドごとに、グラフィックスプリミティブごとに、頂点ごとに、ピクセルフラグメントごとに、）第１のレンダリングされる要素に第１のクロスハッチングパターンまたは識別子を割り当て、表示の際に第２のレンダリングされる要素に第２の（異なる）クロスハッチングパターンまたは識別子を割り当て、・・・、とすることができる。
【０１００】
いくつかのケースでは、図６に示した行為は、図２に示したグラフィックスデバイス５０などの、単一のデバイスによって実装されることができる。いくつかのケースでは、図６の行為は、図１に示したグラフィックスデバイス２及び／またはアプリケーションコンピューティングデバイス２０などの、一つ以上の物理的に別個のデバイスによって実装されることができる。
【０１０１】
図２の例に示すように、いくつかの代替例では、パフォーマンス分析アプリケーションは、グラフィックスデバイス内で（例えば、グラフィックスデバイス５０内で）実行されるまたは直接実装されることができる。これらの特定の例では、パフォーマンス情報を受信することは、ピクセルフラグメントを備えるグラフィックス要素のそれぞれのために、グラフィックス処理ユニットによって収集および提供される、一つ以上のカウンタの値を受信することを含むことができる。グラフィックス要素にグラフィカル識別子を割り当てることは、一つ以上のカウンタの値に基づいて、ピクセルフラグメントの複数のものを組み合わせるために、ブレンディング（例えば、グラフィックス処理システム内でブレンディングハードウェア）を使用することによって、グラフィカル識別子を決定することを含むことができる。
【０１０２】
さらに、例えば、図２に示した例示デバイスのためには、図６の方法は、グラフィックスデバイス５０によって（例えば、図３及び図５に示したグラフィックスドライバ１８Ａなどのデバイスのグラフィックスドライバによって）実行される、さらなる行為を含むことができる。図８を参照してさらに詳細に説明するように、例えば、グラフィックス処理ユニットは、グラフィックス処理ユニットによってグラフィックス要素の少なくとも一つを処理する前に、グラフィックス処理ユニットの少なくとも一つのカウンタ（例えば、間引かれた／クリッピングされたプリミティブの数のためのカウンタ）の少なくとも第１の値を決定することができる。
【０１０３】
そして、グラフィックス処理ユニットは、グラフィックス処理ユニットによって少なくとも一つのグラフィックス要素の処理に続いて、グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第２の値を決定することができる。グラフィックス処理ユニットは、グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第１と第２の値の差に基づいて、少なくとも一つのグラフィックス要素のためのパフォーマンス情報を決定することができる。そのような形態では、パフォーマンス情報は、グラフィックス要素の実際の処理に基づいているカウンタ値のΔを備え、それによって、これらの要素の処理のためのパフォーマンス関連情報を提供する。
【０１０４】
図７は、図３及び図５に示したグラフィックスドライバ１８Ａ又は図２に示したグラフィックスドライバ６８の内の一つなどのグラフィックスドライバによって実行されることができる例示的な方法の流れ図である。この例では、説明のみの目的のために、グラフィックス要素は個々のドローコマンドを備えると仮定される。しかしながら、他の例では、グラフィックス要素は、グラフィックスプリミティブ、頂点、またはピクセルフラグメントのような他の要素を備えることができる。
【０１０５】
最初に、グラフィックスドライバは、命令（例えば、図１の命令２１、図２の命令６６）のセット内に含まれることができる特定のドローコマンドをインターセプトすることができる（１５０）。グラフィックスドライバは、グラフィックス処理ユニットによるその実行の前に、コマンドをインターセプトすることができる。
【０１０６】
コマンドをインターセプトした後、グラフィックスドライバは、任意の要素ごと（例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと）のパフォーマンスデータ収集が、パフォーマンス分析アプリケーション（例えば、図１のパフォーマンス分析アプリケーション２８、図２のパフォーマンス分析アプリケーション７０）によって有効になっているかどうかを見るためにチェックすることができる（１５４）。従って、パフォーマンス分析アプリケーションは、それぞれのドローコマンドが特定の要素をレンダリングすることができるならば、グラフィックスドライバによって、コマンド毎単位で、そのようなデータ収集を動的に有効にまたは無効にする機能を持つ。
【０１０７】
パフォーマンス分析アプリケーションは、要素ごとのパフォーマンス情報が必要ない又は望ましくない場合は、特定のケースでのデータ収集機能を無効化することができる。これらのケースでは（即ち、１５４のＮＯ分岐）、グラフィックスドライバは、グラフィックス処理ユニットによってドローコマンドの実行を駆動し（１５２）、そして、パフォーマンス分析アプリケーションに、ドローコマンドのためのコマンドデータを送信することができる（１６６）。そして、パフォーマンス分析アプリケーションは、コマンドの実行をエミュレートまたはシミュレートすることができるが、グラフィックスドライバによるこのようなデータ収集が有効になっていないならば、要素ごとのパフォーマンスメトリックを表示しないことができる。いくつかのオプションのケースでは、グラフィックスドライバは、分析アプリケーションにグラフィックス処理ユニットのための現在のカウンタ値を提供することができるが、そのような値は、個々のグラフィックス要素をレンダリングするために実行される個々のドローコマンドに関連した値よりはむしろ、対応するカウンタの現在の全体の値を備えることができる。
【０１０８】
しかしながら、そのような要素ごとのデータ収集が有効になっている場合には（即ち、１５４のＹＥＳ分岐）、グラフィックスドライバは、ドローコマンドの実行の前に、グラフィックス処理ユニット（ＧＰＵ）の全ての有効なカウンタの現在の値をサンプリングすることができる（１５６）。カウンタの内の少なくとも一つは、データ収集を有効にすることができる。いくつかのケースでは、パフォーマンス分析アプリケーションが、ユーザの少なくとも一つの選択に基づいてカウンタを有効または無効とすることができるのに対して、いくつかのケースでは、グラフィックスデバイスは、カウンタを有効または無効にすることができる。例えば、アプリケーション開発者が任意の時点で一つ以上の指定されたメトリックのためのパフォーマンスメトリック情報を見ることに関心がある場合、パフォーマンス分析アプリケーションは、指定された所望のメトリックの決定または計算するのに使用される、グラフィックス処理ユニットのこれらのカウンタからのデータ収集を有効にする要求を提供することができる。分析アプリケーションは、しかしながら、処理のオーバヘッドを軽減または削減するために、任意の他のカウンタのためのデータ収集を無効にすることができる。
【０１０９】
次に、グラフィックスドライバは、グラフィックス処理ユニットによってドローコマンドの実行を駆動し（１５８）、グラフィックス処理ユニットの全ての有効なカウンタの値を再びサンプリングする（１６０）。図７の例では、ＧＰＵカウンタをサンプリングすることとドローコマンドを実行することとは、同期した動作であると仮定する。この例では、グラフィックスドライバは、カウンタ値を含むグラフィックス処理ユニットによって公開された一つ以上のハードウェアレジスタを問い合わせることができる。そして、これらの値は、グラフィックスドライバに直ちに返されることができる。
【０１１０】
他の例では、特あるＧＰＵアーキテクチャは、グラフィックスドライバにＧＰＵカウンタをサンプリングするための「パイプライン」要求を作成することを許すことができ、そして、グラフィックスドライバは、サンプリングが完了したとき、グラフィックス処理ユニットによってその後に通知される又は中断されることができる。これらのインスタンスでは、カウンタデータの実際の収集又はサンプリング（１５６、１６０）は、ドローコマンドの実行後のある時点まで、延期されることができる。
【０１１１】
有効にされた各ＧＰＵカウンタのために、第１のサンプリング値は、有効にされたＧＰＵカウンタの対応する第２のサンプリング値から減算される（１６２）。従って、有効にされた各特定のＧＰＵカウンタのために、グラフィックスドライバは、単一のドローコマンドを実行するために、特定のＧＰＵカウンタに関連した、グラフィックス処理ユニットによって実行される作業を表す、Δまたは差分値を計算する。従って、特定のＧＰＵカウンタの値がドローコマンドの実行前に５であり、その値がドローコマンドの実行後には８に変化した場合には、そのカウンタのための３のΔ値が、その特定のドローコマンドの実行に関連する。
【０１１２】
そして、グラフィックスドライバは、パフォーマンス分析アプリケーションに、ドローコマンドに関連付けられているコマンドデータを送信するだけでなく、分析アプリケーションが、エミュレーション環境でのドローコマンドを作成し直して、該ドローコマンドの実行に基づいて個々の要素のための計算されたパフォーマンスメトリックのグラフィカルな表現を表示することができるような、有効にされたＧＰＵカウンタのためのΔ値を送信することができる（１６４）。コマンドデータは、関数コールパラメータ、レンダリング状態、形状データ、テクスチャ、シェーダ、等々を含むことができる。
【０１１３】
そして、パフォーマンス分析アプリケーションにデータを送信した後は、グラフィックスドライバは、一つ以上の更なるドローコマンドのために、図７に示した種々の行為を繰り返すことができる。そうすることで、グラフィックスドライバは、パフォーマンス分析アプリケーションに、ドローコマンドと共に、パフォーマンス分析アプリケーションが、ドローコマンドを再作成して、要素ごと単位で、計算されたメトリックのグラフィカル表現を表示できるような、状態及びパフォーマンス情報を提供することが可能である。図１２は、そのようなグラフィカルな表現の一例を示している。
【０１１４】
図７の例では、説明のみの目的のために、グラフィックス要素が個々のドローコマンドを備えると仮定されている。しかしながら、他の例では、グラフィックス要素は、グラフィックスプリミティブ、頂点、またはピクセルフラグメントなどの他の要素を備えることができる。これらの例では、グラフィックスドライバは、これらのグラフィックス要素の処理に基づいて、Δ／差異データを含む、ＧＰＵカウンタデータを収集することが可能である。例えば、１５０で、ドローコマンドをインターセプトするよりはむしろ、グラフィックスドライバは、ピクセルフラグメントをインターセプトすることができる。１５６で、グラフィックスドライバは、ピクセルフラグメントの処理をする前に、全ての有効にされたＧＰＵカウンタをサンプリングすることができ、１６０で、グラフィックスドライバは、ピクセルフラグメントを処理した後に、全ての有効にされたＧＰＵカウンタをサンプリングすることができる。そして、グラフィックスドライバは、パフォーマンス分析アプリケーションに、ピクセルフラグメントごと単位でのパフォーマンス情報として、ＧＰＵカウンタデータを送信することが可能である。
【０１１５】
図８は、図１のパフォーマンス分析アプリケーション２８又は図２のパフォーマンス分析アプリケーション７０などのパフォーマンス分析アプリケーションによって実行されることができる例示的な方法の流れ図である。パフォーマンス分析アプリケーションは、図７に示すように送信されるデータなどの、グラフィックスドライバによって提供されるデータを受信することができる。パフォーマンス分析アプリケーションは、グラフィックスドライバからの受信で、そのような入来送信データをバッファリングすることができる（１７０）。入来データは、グラフィックス要素のためのデータ（例えば、ドローコマンド、ドローコマンドデータ、プリミティブデータ、頂点データ、ピクセルフラグメントデータ）と、ＧＰＵカウンタのデータと、状態／パフォーマンス情報（例えば、状態／パフォーマンス情報３２）と、を備えることができる。図７に関して前述したように、ＧＰＵカウンタデータは、要素ごと単位で、グラフィックス要素の個々の処理に関連する、任意の所与のＧＰＵカウンタのために、Δ値を備えることができる。
【０１１６】
そして、パフォーマンス分析アプリケーションは、それがグラフィックスドライバからアニメーションの完全なフレームを受信したかどうか、即ち、フレームの最後に達しているかどうかを見るためにチェックすることができる（１７２）。そうでない場合（即ち、１７２のＮＯ分岐）、分析アプリケーションは、特定のフレームの最後に到達するまで、入来データをバッファリングし続けるだろう。そして、フレームの最後に到達したならば（即ち、１７２のＹＥＳ分岐）、各受信グラフィックス要素及び関連するＧＰＵカウンタデータのために、パフォーマンス分析アプリケーションは、受信したＧＰＵカウンタ値を使用して、一つ以上の指定されたパフォーマンスメトリックのための値を計算する（１７４）。
【０１１７】
そして、パフォーマンス分析アプリケーションは、各パフォーマンスメトリックのためのコマンドに関連する計算された値を正規化し、その後に、識別子のセットの範囲内のグラフィカル識別子に（例えば、色範囲内の色に、識別子の範囲またはグループ内のシェーディング／クロスハッチング識別子に）各値をマッピングすることができる（１７６）。例えば、パフォーマンス分析アプリケーションは、取得されたフレーム内で各パフォーマンスメトリックのための範囲（例えば、ほんの一例を挙げれば、クロックサイクルごとに書かれたピクセル、頂点ごとに発行されたシェーダ命令、秒当たり実行されるメモリ書き込み）を形成する、全てのグラフィックス要素間の各指定されたパフォーマンスメトリックの最小値及び最大値を計算することができる。そして、各パフォーマンスメトリックのために、数値範囲は、グラフィカル識別子（例えば、色、デリミッタ、シェーディング、クロスハッチング、または他の素材属性）のスペクトルまたはグループにマッピングされることができる。そして、パフォーマンス分析アプリケーションは、そのメトリックのための値の範囲内で対応するコマンドの計算値の位置を使用して、各グラフィックス要素にグラフィカル識別子を割り当てる。
【０１１８】
例えば、パフォーマンス分析アプリケーションは、グラフィックスドライバから三つの異なるグラフィックス要素のためのＧＰＵカウンタデータを受信することができる。パフォーマンス分析アプリケーションは、上記三つの要素のそれぞれのための特定のメトリックの値を計算することができる。第１のグラフィックス要素は、例えば、この要素のためのＧＰＵカウンタデータに基づいて３の計算されたメトリック値を持つことができ；第２のグラフィックス要素は、５の計算されたメトリック値を持つことができ；第３のグラフィックス要素は、７の計算されたメトリック値を持つことができる。従って、このメトリックの値の範囲は、３から７に及ぶことができる。それは、この特定のメトリックのために、より高い値が、一つ以上の潜在的なパフォーマンス問題（例えば、メモリ書き込みのより高い回数）を示すということであり得る。
【０１１９】
この特定の例では、パフォーマンス分析アプリケーションは、これらの値のグラフィカル識別子のスペクトルまたは範囲を作成することができる。例えば、黄色は３のメトリック値に関連することができ；青色は５のメトリック値に関連することができ；赤色は７のメトリック値に関連することができる。そして、これらの色指定に基づいて、パフォーマンス分析アプリケーションは、第１のグラフィックス要素に黄色を割り当て、第２のグラフィックス要素に青色を割り当て、第３のグラフィックス要素に赤色を割り当てることができる。
【０１２０】
図８示すように、パフォーマンス分析アプリケーションは、これらの要素に割り当てられるグラフィカル識別子に基づいてレンダリングされるべきである任意の要素を視覚的に表す（例えば、色や色合い、シェーディング／クロスハッチング）ために、各グラフィックス要素のシェーディング又はその他の素材属性を修正することができ（１７８）、その後、デバイスエミュレータを使用してグラフィックス要素を処理することができる（１８０）。そのような形態では、取得されたフレームは再作成され、各取得されたグラフィックス要素を処理する（例えば、各ドローコマンドを実行する、各プリミティブ／頂点／ピクセルフラグメントを処理する）ことによって分析アプリケーションのために結合されたデバイスエミュレータにおいて表示されるものであり、ここで、（例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごとの）個々の要素は、計算されたパフォーマンスメトリックの対応する値に従って適切に識別される（例えば、色付けされる）。
【０１２１】
従って、上記の例を続けると、パフォーマンス分析アプリケーションは、第１のグラフィックス要素を処理し、黄色を使用してこの要素のレンダリングを視覚的に表示することができる。分析アプリケーションは、第２のグラフィックス要素を処理し、青色を使用してこの要素のレンダリングを視覚的に表示することができる。最後に、分析アプリケーションは、第３のグラフィックス要素を処理し、赤色を使用してこの要素のレンダリングを視覚的に表示することができる。
【０１２２】
この例では、特定のメトリックのために、より高い値は、一つ以上の潜在的なパフォーマンス問題（例えば、メモリ書き込みのより高い回数）を示す、ということがあり得る。より高いメトリック値が赤色と関連するので、アプリケーション開発者は、第１、第２及び第３のグラフィックス要素の処理でレンダリングされた要素の視覚的表現を迅速に見ることが可能である。赤く色付けられたこれらのレンダリングされた要素は、潜在的なパフォーマンス影響を持つことができる。そして、開発者は、これらの要素を選択するか、または（例えば、図９乃至図１２に示すように、コマンドウィンドウ内で）赤色のグラフィックス要素を別なふうに識別することができ、その後、コマンドへのまたはプログラムへの任意の最適化が一般的になされることができるかどうかを評価することができる。上述したように、色以外のグラフィカル識別子の様々な他の形態が、異なる例で使用されることができる。
【０１２３】
そのような形態では、開発者は、エミュレーション環境で、レンダリングされた要素のグラフィカルな表示を迅速に見て、それらが表示されている仕方に基づいてパフォーマンスに影響が出る可能性がある特定の要素を識別することが可能である。開発者は、いくつかのケースでは、これらの要素にレンダリングさせられる対応するドローコマンドを識別し、最適化のためのアプリケーションをチューニングするか、または別なふうに修正することができる。
【０１２４】
グラフィックス要素の処理では、パフォーマンス分析アプリケーションは、複数の異なるフレームのために、１７０、１７２、１７４、１７６、１７８及び１８０を繰り返すことができる。上記の例では、パフォーマンス分析アプリケーションは、レンダリングされた要素を区別するために、異なる色を利用した。他のケースでは、グラフィカル識別子の様々な他の形態は、色の代わりに、または、色と組み合わせて、使用されることができる。例えば、パフォーマンス分析アプリケーションは、これらの要素の特定のメトリックの計算値に基づいて、異なるグラフィックス要素に、シェーディングやクロスハッチングプロパティ、または識別子を割り当てることができる。一般的に、パフォーマンス分析アプリケーションは、処理される様々な異なるグラフィックス要素に、グラフィカル識別子を割り当てることができる。
【０１２５】
図９は、図１又は図２に示したパフォーマンス分析アプリケーションなどのパフォーマンス分析アプリケーションによって、ディスプレイデバイス２０１上に表示されることができる情報の例を示す概念図である。ディスプレイデバイス２０１は、図１または図２に示したグラフィックスデバイスの内の一つなどの、グラフィックスデバイスから送信されるグラフィックスコマンドと状態／パフォーマンス情報に基づいて、そのような２Ｄや３Ｄグラフィックス画像２１０をウィンドウ２０３内に表示することが可能である。グラフィックス画像２１０は、ドローコマンドを含む、グラフィックスコマンドの実行中にレンダリングされる一つ以上の要素を備えることができる。
【０１２６】
ディスプレイデバイス２０１はまた、開発者がグラフィックス画像２１０またはグラフィックス画像２１０を含むシーン全体を修正するために、命令及び状態／パフォーマンス情報を変更することができるような、命令及び状態／パフォーマンス情報の視覚的表現を表示することも可能であり得る。図９の例に示すように、ディスプレイデバイス２０１は、グラフィカルユーザインターフェイス内で、様々な種類の情報を表示することができる。この例では、ディスプレイデバイス２０１は、グラフィカルユーザインターフェイス内でのグラフィカルなウィンドウ２０３を表示する。ウィンドウ２０３は、表示領域２１１、グラフィックスコマンド（複数）領域２０８、及び状態／パフォーマンス情報領域２１４を含む。表示領域２１１は、グラフィックス画像２１０を含む。この例では、グラフィックス画像２１０は、立方体を備える。
【０１２７】
図９の例では、グラフィックスコマンド領域２０８は、分析アプリケーションによって受信され且つ現在実行されている又は実行された描画コマンドを含む、一つ以上のグラフィックスコマンドの視覚的表現を含む。このようなコマンドの視覚的表現は、そのようなコマンドの表現を備えることができる。例えば、分析アプリケーションがバイナリグラフィックスコマンドを受信したとき、ディスプレイデバイス２０１は、高レベルのアプリケーション・プログラミング・インターフェイス（ＡＰＩ）命令（例えば、ＯｐｅｎＧＬ命令）などの、別の形式でそのようなバイナリ命令の表現を表示することができる。パフォーマンス分析アプリケーションでローカルに保存された又はグラフィックスデバイスによって提供されるマッピング情報は、グラフィックスコマンド領域２０８内に表示されることができる別のフォーマットに、受信されたバイナリコマンドをマッピングするために使用されることができる。
【０１２８】
状態／パフォーマンス情報領域２１４は、パフォーマンス分析アプリケーションによって受信されている選択された状態及び／またはパフォーマンス情報の視覚的表現を含む。受信したグラフィックスコマンド及び状態／パフォーマンス情報は、表示領域内にグラフィックス画像２１０を表示するために使用されることができる。
【０１２９】
ウィンドウ２０３はまた、一つ以上のセレクタ２１２Ａ乃至２１２Ｎを含む。アプリケーション開発者などのユーザは、これらのセレクタ２１２Ａ乃至２１２Ｎの何れかを選択することができる。各セレクタ２１２Ａ乃至２１２Ｎは、以下により詳細に説明するように、統計及びナビゲーション機能など、異なる機能と関連付けられることができる。ウィンドウ２０３はさらに、ユーザによってそれぞれ選択されることができる、セレクタ２１６Ａ乃至２１６Ｎと２１８Ａ乃至２１８Ｎを含む。各セレクタ２１６Ａ乃至２１６Ｎと２１８Ａ乃至２１８Ｎは、図１０を参照して以下により詳細に説明するように、メトリック機能、オーバライド機能、及び／またはテクスチャ機能などの、異なる機能と関連付けられることができる。
【０１３０】
アプリケーション開発者などのユーザは、ウィンドウ２０３内に表示された情報を変更することができる。例えば、ユーザは、グラフィックスコマンド領域２０８内に表示された命令の内の少なくとも一つ、または、状態／パフォーマンス情報領域２１４内の状態／パフォーマンス情報の何れか、を修正することができる。
【０１３１】
そして、ウィンドウ２０内でユーザによって開始された何れかの変更は、修正要求（例えば、図１に示した修正要求３４）として、グラフィックスデバイスに、またはグラフィックスデバイス内に、送り返されることができる。そして、グラフィックスデバイスは、これらの修正を処理し、グラフィックスコマンド領域２０８及び／または状態／パフォーマンス情報領域２１４内にその後に表示されることができる、更新された命令及び／または情報を提供することができる。更新された命令及び／または情報はまた、表示領域２１１内にグラフィックス画像２１０の修正バージョンを表示するために使用されることもできる。
【０１３２】
一例では、領域２１４内に表示されることができる状態及び／またはパフォーマンス情報は、グラフィックスコマンドの実行中に、潜在的なボトルネックを識別するために、グラフィックスデバイス（図２）または別体のアプリケーションコンピューティングデバイス（図１）であることができる、ディスプレイデバイス２０１を含むデバイスによって分析されることができる。最終的に、アプリケーション開発者などのユーザは、コマンドの実行を最適化するために、デバッグ処理中にウィンドウ２０３に表示される情報を見ることを望むことができる。状態及び／またはパフォーマンス情報の分析を通じて、潜在的なボトルネック及び可能な回避策は、一つ以上のサブウィンドウ又はポップアップウィンドウ内などのウィンドウ２０３内に、あるいはウィンドウ２０３の領域２１４内に、表示されることができる。
【０１３３】
一例では、ウィンドウ２０３は、グラフィックスデバイス２００から受信したグラフィックス命令のコールストリーム中で遭遇されるボトルネックに関するレポートを表示することができ、また、可能な回避策も表示することもできる。いくつかのケースでは、これらの可能な回避策は、ユーザへの「〜したらどうなるか（what-if）」シナリオとして提示されることができる。例えば、コールストリーム中で最適化されていない三角形リストをレンダリングすることは、三角形ストリップ最適化フレームワークを介してリストアップする前処理が二番目の可能なシナリオとして提示されることができるのに対して、一つの可能なシナリオとして提示されることができる。ユーザは、修正要求としてこれらの可能な回避策シナリオの何れかを選択することができ、修正要求は、その後、修正によって生成されるパフォーマンスが測定されることができる、グラフィックスデバイスに送信戻される。
【０１３４】
そして、グラフィックスデバイスは、グラフィックスコマンド領域２０８及び／または状態／パフォーマンス情報領域２１４内に提示されることができる、更新されたコマンド／情報を送信する。そして、ユーザは、結果を見て、最適な解決策を特定するために、様々な潜在的な回避策の結果を比較することができる。ユーザは、自身のアプリケーションからボトルネックを除去するために取ることができる一連のステップを迅速に識別するために、この処理を使用することができる。
【０１３５】
ユーザは、実験の目的で、または試験／エラーデバッグのために、ウィンドウ２０３内で調整を行うことを繰り返し続けることができる。ユーザは、表示領域２１１内に表示される画像やシーンの変化を識別するために、グラフィックスコマンドと状態／パフォーマンス情報の様々な異なる形態や組み合わせを実験することができる。ユーザは、ソースコードを再コンパイルし且つグラフィックスデバイス上でコンパイルされたコードを再実行しなければならないことなしに、コールストリームの一部であることができるグラフィックスコマンドとグラフィックスデバイスによって提供される状態とを、対話的に見て修正するために、ウィンドウ２０３の内容によって提供されるシミュレーション環境を使用することができる。
【０１３６】
いくつかのケースでは、ユーザは、グラフィックス画像２１０の斜視図を修正するために、グラフィカルなカメラなどのグラフィカルなナビゲーションコントローラを操作するため、ボタン２１２Ａ乃至２１２Ｎの内の少なくとも一つを操作することができる。そして、そのような操作は、グラフィックスデバイス２００に送信戻される修正要求として取得されることができる。そして、グラフィックスデバイスによって提供された更新されたコマンド／情報は、グラフィックス画像２１０の斜視図を修正するために使用される。
【０１３７】
いくつかのケースでは、様々なテクスチャ及び／または状態情報は、修正可能なエンティティとしてウィンドウ２０３の領域２１４中に提供されることができる。更に、ユーザは、例えば、グラフィックスコマンド領域２０８内の一つ以上の対応する命令が識別されるような、表示領域２１１内のグラフィックス画像２１０のピクセルを選択することさえもできる。この形態では、ユーザは、そのピクセル又はグラフィックス画像２１０の他の部分をレンダリングするため又は作成するために使用されるレンダリング命令又はコールに対して逆方向に、効果的に教え込むことができる。グラフィックスデバイス２００上に提示されるとおり正確にウィンドウ２０３内に画像２１０をグラフィックス装置２０１が作成することができるので、ユーザは、（グラフィックスコマンド領域２０８に表示された様々なグラフィックス命令に基づくことができる）そのアプリケーションにおいて問題を迅速に分離することが可能であり、新しい効果を試作するために状態／パフォーマンス領域２１４内の任意の状態を修正することが可能である。
【０１３８】
表示領域２１１内に表示される情報は、アプリケーション開発者に、グラフィックスデバイスのグラフィックス処理ユニットによる個々の２Ｄ又は３Ｄ要素の処理の属性の大規模なセットを測定し、可視化することを許すことができる。パフォーマンス分析アプリケーションは、画像２１０内の個々のレンダリングされた要素ごと（例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと）のパフォーマンス測定値の一つ以上の大規模なセットの取得を有効にすることができる。これから収集された情報は、ターゲットハードウェアプラットフォーム上でより効率的に実行するために、アプリケーションの設計やパフォーマンス特性を、開発者がより効果的に調整するのを助けることができる。
【０１３９】
例えば、上述したように、表示領域２１１内にレンダリングされた画像２１０の各要素（例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと）は、要素をレンダリングするために実行されるドローコマンドのための指定されたパフォーマンスメトリックの計算されたメトリック値に基づいて、グラフィカル識別子を割り当てられることができる。計算されたメトリック値は、パフォーマンス分析アプリケーションによって受信されるパフォーマンス情報に基づいている。画像２１０の各要素が、図１２を参照して前に詳細に説明したように、その割り当てられたグラフィカル識別子（例えば、色、シェーディング、クロスハッチング）に従って表示されるので、開発者は、所与のアプリケーションで提供されている特定のドローコマンドに従って要素をレンダリングすることパフォーマンス問題又は影響を迅速に特定することが可能である。
【０１４０】
図１０は、図１又は図２に示したパフォーマンス分析アプリケーションなどのパフォーマンス分析アプリケーションによって表示されることができる情報の別の例を示す概念図である。この例では、グラフィックスデバイス内に表示されるウィンドウ２２０は、種々の命令情報だけでなく、メトリック情報を含む。
【０１４１】
例えば、グラフィックスコマンド領域２０８内には、様々なグラフィックスコマンド２４２が示される。グラフィックスコマンド２４２は、グラフィックスデバイスによって提供されるグラフィックスコマンドのサブセットであることができる。
【０１４２】
図１０の例で示されるように、グラフィックスコマンド２４２は、高レベル命令と低レベル命令の両方を含む。アプリケーション開発者などのユーザは、命令２４２のフルセットを見るために、スクロールバー２４４を使用することができる。ある高レベル命令は、低レベルＡＰＩ命令などの一つ以上の低レベル命令を含むことができる。アプリケーション開発者は、いくつかのケースでは、関連する高レベル命令の一部である、または関連する高レベル命令によって実行される、何れかの低レベル命令を見るために、特定の高レベル命令上で（例えば、クリックすることによるなど）選択することができる。
【０１４３】
いくつかの例では、開発者は、画像２１０のグラフィックス要素をレンダリングするために実行される、領域２０８内のコマンドを見ることが可能である。いくつかのケースでは、画像２１０の特定の要素がグラフィカル識別子又は属性（例えば、計算されたパフォーマンスメトリック値に基づく色）で示されている場合、ユーザは、コマンド（複数可）が選択された要素をレンダリングするために実行されるグラフィックスコマンド領域２０８内での表示から、そのような要素を選択し、決定することが可能であることができる。いくつかのケースでは、コマンド自体は、エリア２０８内で、ユーザがレンダリングされた要素と特定のコマンドを関連付けることができるような、画像２１０のレンダリングされた要素と同じグラフィカル識別子と関連付けられることができる。そのような形態では、ユーザは、コマンドが画像２１０中の要素をレンダリングしたどのコマンドと関連付けられているかの、より良好な理解を持たせることが可能である。
【０１４４】
様々な選択ボタンが、図１０では、状態／パフォーマンス情報領域２１４の下に表示される。これらの選択ボタンは、テクスチャ（複数）ボタン２３６、オーバライドボタン２３８、及びメトリック（複数）ボタン２４０を含む。図１０の例では、アプリケーション開発者は、メトリックボタン２４０を選択している。このボタンの選択で、様々なメトリックのオプションが表示されることができる。例えば、一つ以上のメトリックボタン２３４Ａ乃至２３４Ｎが、状態／パフォーマンス領域２１４の上に表示されることができる。各メトリックボタン２３４Ａ乃至２３４Ｎは、特定のメトリックに関連付けられることができる。いくつかのケースでは、これらのメトリックの内の少なくとも一つは、予め定義された又は構成されたメトリックタイプであることができ、いくつかのケースでは、アプリケーション開発者は、メトリックの内の少なくとも一つを選択する又はカスタマイズすることができる。例示のメトリックは、例えば、秒当たりのフレーム、％ビジー（一つ以上のプロセッサ用）、バスビジー、メモリビジー、頂点ビジー、秒当たりの頂点ビジー、秒当たりの三角形、秒当たりのピクセルクロック、秒当たりのフラグメント、頂点ごとに発行されたシェーダ命令、等々、の内の何れか一つ又は複数を含むことができる。アプリケーション開発者は、選択されたメトリックに関する追加詳細を見るために、メトリックボタン２３４Ａ乃至２３４Ｎの内の何れかを選択することができる。
【０１４５】
メトリックボタン２３４Ａ乃至２３４Ｎの内の一つを選択することにより、開発者は、特定のコマンドのためのメトリック値を計算するための特定のパフォーマンスメトリックを選択または指定することが可能である。例えば、グラフィックス処理ユニットを含むグラフィックスデバイスからのドローコマンドとパフォーマンス情報とのグループの受信で、図１及び２に示したものなどのパフォーマンス分析アプリケーションは、受信パフォーマンス情報（例えば、グラフィックス処理ユニットのためのカウンタ）に基づいてコマンドのための指定されたメトリックのメトリック値を計算することが可能である。指定されたメトリックは、メトリックボタン２３４Ａ乃至２３４Ｎの内の一つの選択に基づくことができる。
【０１４６】
例えば、メトリックボタン２３４Ａが秒当たりのフレーム数に関連付けられている場合、アプリケーション開発者は、グラフィックス画像２１０のための、パフォーマンスに関連する、秒当たりのフレーム数に関する追加詳細を見るためにメトリックボタン２３４Ａを選択すること、又は、グラフィックス画像２１０の部分を選択することができる。開発者は、いくつかのケースでは、メトリックボタン２３４Ａを選択する、または、状態／パフォーマンス情報エリア２１４中にメトリックボタン２３４Ａをドラッグすることができる。秒当たりフレーム数の詳細情報については、状態／パフォーマンス情報領域２１４内に表示されることができる。開発者はまた、表示領域２１１中にメトリックボタン２３４Ａをドラッグする、またはメトリックボタン２３４Ａのアプリケーションのためのグラフィックス画像２１０の一部分を選択することもできる。例えば、開発者は、メトリックボタン２３４Ａを選択した後にグラフィックス画像２１０の一部分を選択することができ、次に、その選択した部分の秒当たりのフレーム数の詳細情報が、状態／パフォーマンス情報領域2２１４内に表示されることができる。そのような形態では、開発者は、メトリックボタン２３４Ａ乃至２３４Ｎの内の一つ以上の選択、更にはグラフィックス画像２１０又はその一部の選択さえも可能であるが、その選択に基づいて、異なるメトリックタイプの任意の数のためのパフォーマンスデータを見ることができる。
【０１４７】
一例では、ウィンドウ２２０内に表示されることができるメトリックデータは、グラフィックスデバイスのグラフィックスドライバ（例えば、図５に示したグラフィックスドライバ１８Ａ）によって提供されることができる。このグラフィックスドライバは、ウィンドウ２２０内にメトリックデータとしてその後に表示されることができる各種データを提供するために、ハードウェアカウンタモジュール（例えば、図５のハードウェアカウンタモジュール１１４）及び／またはプロセッサ使用状況モジュール（例えば、図５のプロセッサ使用状況モジュール１１２）を実装することができる。
【０１４８】
開発者はまた、いくつかのケースでは、テクスチャボタン２３６を選択することもできる。選択で、グラフィックス画像２１０に関連したテクスチャ情報の様々な形態が、グラフィックスデバイスによって表示されることができる。例えば、テクスチャ情報は、状態／パフォーマンス情報領域２１４内などのウィンドウ２２０内に表示されることができる。いくつかのケースでは、テクスチャ情報は、追加の（例えば、ポップアップ）ウィンドウ（図示せず）内に表示されることができる。開発者は、表示されるテクスチャ情報を見ることができるが、また、いくつかのケースでは、テクスチャ情報を修正することもできる。これらのケースでは、テクスチャ情報に対するどのような修正も、修正要求としてグラフィックスデバイスに伝播されることができる。グラフィックスデバイスからの更新されたコマンド／情報の受信で、グラフィックス画像に対する変更は、表示領域２１１内に表示されることができる。
【０１４９】
開発者はまた、いくつかのケースでは、オーバライドボタン２３８を選択することもできる。オーバライドボタン２３８の選択の後、命令及び／または状態情報などの、ある情報が（例えば、ウィンドウ２２０又は別のウィンドウ内で）表示されることができるもので、これは開発者によって修正またはオーバライドされることができる。任意の修正またはオーバライドは、グラフィックスデバイスに送信される一つ以上の修正要求中に含まれることができる。一例では、グラフィックスデバイスは、任意の修正要求を処理するために、グラフィックスドライバ１８Ａ（図５）などのグラフィックスドライバを実装することができる。例えば、グラフィックスデバイスは、一つ以上のオーバライドを備えるそのような修正要求を処理するために、オーバライドモジュール１２０を使用することができる。
【０１５０】
いくつかのケースでは、開発者は、グラフィックスコマンドの領域２０８内に示されるグラフィックスコマンド２４２上の一つ以上をオーバライドすることができる。これらのケースでは、開発者は、グラフィックスコマンド２４２の内の一つ以上を修正またはオーバライドするために、グラフィックスコマンド領域２０８内に情報をタイピングするか、別なふうに入力することができる。そして、これらの修正は、表示領域２１１内のグラフィックス画像２１０の表示を更新するために、更新コマンド／情報を提供するだろうグラフィックスデバイスに送信されることができる。開発者は、命令２４２によって提供される一つ以上の関数をオーバライドするために、グラフィックスコマンド２４２の、例えば、パラメータ、順序、種類、等々を変更することができる。
【０１５１】
ウィンドウ２２０は更に、選択ボタン２３０及び２３２を含む。選択ボタン２３０は統計ボタンであり、選択ボタン２３２はナビゲーションボタンである。開発者は、グラフィックス画像２１０の表示に関連する統計情報を見るために、統計ボタン２３０を選択することができる。この統計情報は、一つ以上のグラフ、テーブル、または統計情報の他の形態を備えることができる。開発者は、様々なパフォーマンス又はグラフィックス画像２１０の表示に関連する他の関連の問題のより良い理解を得るために、統計情報を見ることができる。
【０１５２】
開発者は、表示領域２１１内でナビゲートするためにナビゲーションボタン２３２を選択することができ、さらに場合によっては、表示領域２１１内でグラフィックス画像２１０の斜視図を変更することができる。例えば、ナビゲーションボタン２３２の選択で、３Ｄグラフィカルなカメラやナビゲーションコントローラが表示されることができる。開発者は、表示領域２１１内の任意のエリアにナビゲートするために、コントローラと対話することができる。開発者はまた、グラフィックス画像２１０を回転させる又はズームイン／アウトするなどの、グラフィックス画像２１０の斜視図を変更するために、コントローラを使用することができる。
【０１５３】
一例では、ナビゲーションボタン２３２の選択及びグラフィカルなナビゲーションコントローラとの相互作用を介した任意の開発者起点の変更は、修正要求（例えば、図１に示した修正要求８４の一部）として、グラフィックスデバイスに伝播されることができる。そして、グラフィックスデバイスによって提供された更新されたコマンド／情報は、グラフィックス画像２１０の表示（例えば、斜視図）を更新するために使用されることができる。さらに、更新された命令は、グラフィックスコマンド領域２０８内に表示されることができる。更新された状態／パフォーマンス情報はまた、状態／パフォーマンス情報領域２１４内に表示されることもできる。
【０１５４】
その結果、開発者は、グラフィックス画像２１０をレンダリングして表示するための、代替の視点、方向、ビュー、等々が、グラフィックスデバイスのパフォーマンスや状態に、どのように影響を与えることができるかを、効果的且つ効率的に決定することができる。これは、ディスプレイデバイス２０１上に表示されるシミュレーション環境でグラフィックス画像２１０を作成してレンダリングするために使用されるグラフィックスコマンド２４２の最適化において開発者に非常に有用であり、グラフィックスデバイス上で表示されるグラフィックス画像に効果的であることができる。
【０１５５】
図１１は、幾つかの個々にレンダリングされた要素３０４（例えば、星）、３０６（例えば、円）、３０８（例えば、立方体）を含むグラフィカルシーンを示す例示画面図である。一般的には、グラフィックス要素は、一つ以上のドローコマンド、プリミティブ、頂点、ピクセル／ピクセルフラグメント、等々を備えることができる。例示グラフィックスシーンは、例えば、ビデオゲームアプリケーションなどのアプリケーションから取得することができるアニメーションのフレームを示している。グラフィックスシーンは、いくつかのケースでは、ウィンドウ２０３（図９）又はウィンドウ２２０（図１０）内に含まれることができる、ウィンドウ３００の内部に表示される。従って、これらのケースでは、グラフィックスシーンは、図１又は図２に示したパフォーマンス分析アプリケーションなどのパフォーマンス分析アプリケーションによって、グラフィックス要素（例えば、ドローコマンド）の処理中にレンダリングされることができる。
【０１５６】
しかしながら、図１１の図においては、パフォーマンス分析アプリケーションは、グラフィックス要素に関連するパフォーマンスメトリック値を表すグラフィカル識別子を使用してグラフィックス要素３０４、３０６、３０８をレンダリングしていない。この例では、要素ごとのデータ収集は、要素ごとのパフォーマンスメトリックがパフォーマンス分析アプリケーションによって計算されていない場合、レンダリングされた要素が特別なグラフィカル識別子または特徴（例えば、色、クロスハッチング、シェーディング）なしで表示されるような、有効でないことができる（例えば、図７における１５４のＮＯ分岐を参照）。
【０１５７】
ウィンドウ３００は、表示領域（例えば、図９及び図１０の表示領域２１１）内にグラフィックス要素３０４、３０６、３０８を表示する。グラフィックス要素３０４はシーン内の星であり；グラフィックス要素３０６はシーン内の円であり；グラフィックス素子３０８は立方体である。
【０１５８】
ウィンドウ３００は更に、グラフィックスコマンド領域３０２（例えば、図９及び図１０のグラフィックスコマンド領域２０８）を含む。図１１の例では、図１０の領域２０８内に示したそれらなどの、様々な高レベルコマンド及び／または低レベルコマンド（例えば、「コマンド１」、「コマンド２」、「コマンド３」）が表示されることができる。いくつかのケースでは、シーン中のグラフィックス要素を描画するためにアプリケーションによって実行されるＯｐｅｎＧＬ  ＥＳ  ＡＰＩコールのリストは、グラフィックスコマンド領域３０２中に表示されることができる。これらのＯｐｅｎＧＬ  ＥＳ  ＡＰＩコールは、パフォーマンス分析アプリケーションによって実行されるとき、表示されるシーンの様々なグラフィックス要素をレンダリングするドローコールを備えることができる。一つの特定の例では、各ドローコールは、「ｇｌＤｒａｗＥｌｅｍｅｎｔｓ」コールを備えることができるものであり、ここで、「ｇｌＤｒａｗＥｌｅｍｅｎｔｓ」への各コールは、シーン内の個々のレンダリングされたオブジェクトに対応する。
【０１５９】
レンダリングされた要素は、図１１に示した様々なオブジェクトなどのオブジェクト、あるいは、その任意の部分（例えば、プリミティブ、頂点、ピクセルフラグメント、それらの組合せ）を備えることができる。いくつかのケースでは、レンダリングされた要素は、グラフィックスシーン内に表示される、個々のプリミティブ／頂点／ピクセル／フラグメント／等々を備えることができる。これらのケースでは、特定のドローコマンドは、実行で、これらのプリミティブ／頂点／ピクセル／フラグメント／等々の一つ以上をレンダリングすることができる。
【０１６０】
図１１はまた、状態情報（例えば、状態コール）を表示することが可能である領域３１４も示している。様々なＯｐｅｎＧＬ状態コールは、この領域中に表示されることができる。これらの状態コールの内の少なくとも一つは、領域３０２中に示した任意の特定のドローコマンドの発動の前に、パフォーマンス分析アプリケーションによって呼び出されることができる。状態コールは、ドローコマンドの少なくとも一つの実行のために必要とされることができる様々な状態パラメータを設定するために呼び出されることができる。
【０１６１】
図１２は、図１１と同じであるが、割り当てられたグラフィカル識別子（例えば、色、シェーディング、クロスハッチング）に従って表示された個々にレンダリングされた要素を持つ、グラフィカルシーンを示す例示画面図である。この特定の例では、要素ごとのレンダリング及び／データ収集が有効にされている（例えば、図７中の１５４のＹＥＳ分岐）。図１２は、図１１のシーンが取得されたパフォーマンスデータに従って今度はグラフィカルに提示されていることを除いて、図１１と同じシーンを示している。
【０１６２】
パフォーマンス分析アプリケーションは、領域３０２中に示したドローコマンドのそれぞれのためのグラフィックス処理ユニットからのパフォーマンスデータを収集し、収集されたパフォーマンスデータに基づいて指定されたパフォーマンスメトリックの値を計算している。パフォーマンス分析アプリケーションはまた、指定されたパフォーマンスメトリックの対応する計算値に基づいてグラフィックス要素のそれぞれに、グラフィカル識別子（例えば、色、シェーディング識別子、クロスハッチング識別子）を割り当て、グラフィックス要素に割り当てられたグラフィカル識別子に従ってレンダリングされた個々のグラフィックス要素３０４、３０６、３０８を表示している。一般的に、グラフィックス要素は、表示されたシーンのレンダリング中に処理または実行される、一つ以上の描画コマンド、プリミティブ、頂点、ピクセル／ピクセルフラグメント、等々、を備えることができる。パフォーマンス分析アプリケーションは、幾つかの異なるパフォーマンスメトリックのための各コマンドのそのようなメトリック値を計算することができる。
【０１６３】
図１２の例では、「メトリック１」の例示パフォーマンスメトリックが、メトリック領域３２０中に示されている。「メトリック１」は、例えば、シェーディングされたフラグメント又はクロックのパフォーマンスメトリックを備えることができる。「メトリック１」は、グラフィックス要素のメトリック値が特定のグラフィカル識別子でレンダリングされた要素を表示するために計算される、現在指定されているパフォーマンスメトリックである。
【０１６４】
グラフィカル識別子が、図１２の例に示すように、クロスハッチングの識別子を備える場合、パフォーマンス分析アプリケーションは、そのような要素が、描画するのに（例えば、より多くの処理、より高い帯域幅を必要とする）より多くの計算コストになり得ることを意味する、指定されたパフォーマンスメトリックのためのより高いメトリック値を持つならば、一つのクロスハッチング識別子（例えば、パターン）を使用して、ある要素をレンダリングすることができる。パフォーマンス分析アプリケーションは、要素が、描画するのに計算上安価になることを意味する、より低いメトリック値を持つ場合は、他のクロスハッチング識別子（例えば、パターン）を使用して、別の要素をレンダリングすることができる。
【０１６５】
グラフィカル識別子が、別の例では、クロスハッチング識別子よりはむしろ色を備える場合には、パフォーマンス分析アプリケーションは、そのような要素が、描画するのに（例えば、より多くの処理、より高い帯域幅を必要とする）より多くの計算コストになり得ることを意味する、指定されたパフォーマンスメトリックのためのより高いメトリック値を持つならば、赤などの一つの色でレンダリングされた要素に色付けすることができる。パフォーマンス分析アプリケーションは、要素が、描画するのに計算上安価になることを意味する、より低いメトリック値を持つ場合は、緑などの別の色でレンダリングされた要素を色付けすることができる。
【０１６６】
このようにメトリックデータを視覚化することは、ゲーム開発者に、例えば、デバイスが特定のシーンをどのようにレンダリングするかの迅速な調査を行うことを許すことができる。図１２のシーンでは、要素３０６は、最も赤い色である、または、レンダリングするのにグラフィックス処理ユニット上で最もクロックサイクルを取ることを意味する特定のクロスハッチングパターンを持つことができる。
【０１６７】
レンダリングされた要素は、図１２に示した様々なオブジェクトなどのオブジェクトを備えることができる。いくつかのケースでは、レンダリングされた要素は、グラフィックスシーン内に表示される、個々のプリミティブ、頂点、ピクセル／ピクセルフラグメント、等々、を備えることができる。そのようなケースでは、より大きなオブジェクトよりはむしろグラフィックスシーン内の要素は、シーンのレンダリング中に要素の処理に基づいて、あるメトリック値に関連付けられているグラフィカル識別子（例えば、色、シェーディング、クロスハッチング識別子）を使用して表示されることができる。したがって、ユーザは、要素ごと単位（例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと）でパフォーマンスメトリックデータを見て、どの要素がレンダリングするのに計算コストがより高くなるか評価することが可能である。
【０１６８】
領域３２０は、特定のコマンドに関連付けられている個々の水平棒グラフを示している。各棒グラフは、対応するコマンドのための計算されたメトリック値の表現を備える。例えば、「コマンド１」は、「メトリック１」のための特定の計算メトリック値を持ち、領域３２０中の対応するバーグラフは、この値のグラフィカル表現を提供する。示すように、ドローコマンド「コマンド１」、「コマンド２」及び「コマンド３」のそれぞれは、メトリック「トリック１」（例えば、フラグメントシェーディングメトリック、クロックメトリック）のそれらに対応するメトリック値のためのバーグラフ表現を含む。
【０１６９】
個々の棒グラフのそれぞれはまた、パフォーマンス分析アプリケーションによって対応するコマンドに割り当てられているグラフィカル識別子に従って表示されることもできる。従って、グラフィックスコマンド「コマンド１」が、このコマンドの実行がこのメトリックのための計算コストが高くなり得ることを示す「メトリック１」のための特定のクロスハッチング識別子（例えば、パターン）を割り当てられている場合には、（例えば、「コマンド１」の右側に配置された）領域３２０中の「コマンド１」のための対応する棒グラフはまた、同じクロスハッチング識別子を使用して表示される又は表現されることもできる。そのような形態で、ユーザは、対応するメトリック値と特定のコマンドを関連付けることが可能である。素子３０８もまたこの例では同じクロスハッチング識別子で表示または表現されると仮定すると、ユーザは、レンダリングされた要素が特定のコマンド（例えば、「コマンド１」）でレンダリングされた又は別なふうに関連付けられたかを判断することが可能であり、そして、それら関連付けられた識別子に基づいて計算コストが高くなるそれらの要素／コマンドを迅速に識別することが可能である。いくつかのケースでは、ユーザは、計算されたメトリックの数値を見るために、棒グラフをクリックする又は選択することができる。
【０１７０】
図１２の例では、「コマンド１」は素子３０８をレンダリングするために実行されることができ、「コマンド２」は要素３０４をレンダリングするために実行されることができ、「コマンド３」は要素３０６をレンダリングするために実行されることができる。「メトリック１」のための領域３２０中の対応する棒グラフによって示されるように、（対応する素子３０８のための）「コマンド１」は、対応する棒グラフの長さの場合、（対応する要素３０４のための）「コマンド２」よりも、レンダリングするにより多くの計算コストがかかることができる。（対応する要素３０４のための）「コマンド２」は、（対応する要素３０６のための）「コマンド３」よりも、レンダリングするのにより多くの計算コストがかかることができる。
【０１７１】
この開示に記載されている技法は、汎用マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または他の同等のロジックデバイス内に実装されることができる。従って、本明細書中で使用されるような用語「プロセッサ」または「コントローラ」、前述の構造または本明細書に記載された技法の実装に適した任意の他の構造の内の少なくとも一つを指すことができる。
【０１７２】
図示した様々なコンポーネントは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせ、の任意の適切な組み合わせによって実現されることができる。図では、様々なコンポーネントが別々のユニットまたはモジュールとして描かれている。しかしながら、これらの図を参照して説明した様々なコンポーネントの全ての又はいくつかは、共通のハードウェア及び／またはソフトウェア内で結合されたユニット又はモジュール内に組み込まれことができる。従って、コンポーネント、ユニット又はモジュールとしての特徴の表現は、図示の便宜のために特定の機能的特徴を強調することを意図したるものであり、必ずしも個別のハードウェア又はソフトウェアコンポーネントによってこのような特徴の実現を必要とはしない。いくつかのケースでは、様々なユニットは、一つ以上のプロセッサによって実行されるプログラム可能な処理として実装されることができる。
【０１７３】
グラフィックスデバイス１００及び／またはそれを構成するコンポーネントを含む、モジュール、デバイス、またはコンポーネントなどの、本明細書中に記載された特徴は、統合されたロジックデバイス中に一緒に実装される、または、ディスクリートであるが相互運用可能なロジックデバイスとして別個にされることができる。様々な態様で、そのようなコンポーネントは、集積回路チップ又はチップセットなどの集積回路デバイスとして総称されることができる、一つ以上の集積回路デバイスとして少なくとも部分的に形成されることができる。そのような回路は、単一の集積回路チップデバイス中または複数の相互運用可能な集積回路チップデバイス中に提供されることができ、様々な画像、ディスプレイ、オーディオ、またはその他のマルチメディアアプリケーションやデバイスの何れかで使用されることができる。いくつかの態様において、例えば、そのようなコンポーネントは、無線通信デバイスハンドセットなどのモバイルデバイスの一部を形成することができる。
【０１７４】
ソフトウェアで実装される場合、上記技法、一つ以上のプロセッサによって実行されるとき、上述した方法の内の少なくとも一つを行う、命令を有するコードを備えるコンピュータ可読データ記憶媒体によって少なくとも部分的に実現されることができる。コンピュータ可読媒体は、梱包材を含むことができるコンピュータプログラム製品の一部を形成することができる。コンピュータ可読媒体は、同期ダイナミック・ランダム・アクセスメモリ（ＳＤＲＡＭ）などのランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）、電気的に消去可能なプログラマブル・リードオンリ・メモリ（ＥＥＰＲＯＭ）、埋め込みダイナミック・ランダム・アクセス・メモリ（ｅＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、フラッシュ・メモリ、磁気または光データ記憶媒体、を備えることができる。
【０１７５】
上記技法更に、または代わりに、命令またはデータ構造の形でコードを運ぶ又は通信し、且つ、一つ以上のプロセッサによってアクセスされ、読み込まれ及び／または実行されることができる、コンピュータ可読通信媒体によって少なくとも部分的に実現されることができる。何れの接続もコンピュータ可読媒体と適切に呼ばれることができる。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）、または、赤外線、無線及びマイクロ波などのワイヤレス技術、を使用して、ウェブサイト、サーバまたは他のリモートソースから送信される場合には、それら同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）、または、赤外線、無線及びマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。利用される何れのソフトウェアも、一つ以上のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、または他の同等の集積またはディスクリートロジック回路などの、一つ以上のプロセッサによって実行されることができる。
【０１７６】
様々な態様が、本開示中に記載されている。これらの及び他の態様は、以下の特許請求の範囲の範囲内である。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
（１）  グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
コンピューティングユニットによって、上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
を備える、方法。
（２）  上記パフォーマンス情報を受信することは、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信することを備える、（１）の方法。
（３）  上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、（１）の方法。
（４）  選択可能なパフォーマンスメトリックの表現を表示することと、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けることと、
を更に備える、（１）の方法。
（５）  上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定すること、
を更に備え、
上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てることを備える、（１）の方法。
（６）  上記ドローコマンドにグラフィカル識別子を割り当てることは、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てることを備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、（１）の方法。
（７）  上記グラフィックス要素を表示することは、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示することを備える、（６）の方法。
（８）  上記グラフィックス処理ユニットは、上記コンピューティングデバイス内に含まれる、（１）の方法。
（９）  上記パフォーマンス情報を受信することは、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信することを備え、上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定することを備える、（８）の方法。
（１０）  上記グラフィックス処理ユニットは、上記コンピューティングデバイスから物理的に別個であるモバイルデバイス内に含まれる、（１）の方法。
（１１）  上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第１の値を決定することと、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第２の値を決定することと、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第１の値と上記第２の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定することと、
を更に備える、（１）の方法。
（１２）  ディスプレイデバイスと、及び
グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
上記ディスプレイデバイス上に上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
を行うように構成される、上記ディスプレイデバイスに結合された一つ以上のプロセッサと、
を備える、デバイス。
（１３）  上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信することによって、上記パフォーマンス情報を受信するように構成される、（１２）のデバイス。
（１４）  上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、（１２）のデバイス。
（１５）  上記一つ以上のプロセッサは、
上記ディスプレイデバイス上に、選択可能なパフォーマンスメトリックの表現を表示することと、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けることと、
を行うように更に構成される、（１２）のデバイス。
（１６）  上記一つ以上のプロセッサは、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するように更に構成され、上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てることを備える、（１２）のデバイス。
（１７）  上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記グラフィックス要素に色を割り当てることによって、上記ドローコマンドにグラフィカル識別子を割り当てるように構成され、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、（１２）のデバイス。
（１８）  上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示することによって、上記グラフィックス要素を表示するように構成される、（１７）のデバイス。
（１９）  上記グラフィックス処理ユニットは、上記コンピューティングデバイス内に含まれる、（１２）のデバイス。
（２０）  上記パフォーマンス情報は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を備え、上記グラフィックス要素は、ピクセルフラグメントを備え、及び上記一つ以上のプロセッサは、少なくとも、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるために上記デバイス中のブレンディングハードウェアを使用することにより上記グラフィカル識別子を決定することによって、上記グラフィックス要素に上記グラフィカル識別子を割り当てるように構成される、（１９）のデバイス。
（２１）  上記グラフィックス処理ユニットは、別の、物理的に別個なデバイス内に含まれる、（１２）のデバイス。
（２２）  上記一つ以上のプロセッサは、
上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第１の値を決定することと、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第２の値を決定することと、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第１の値と上記第２の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定することと、
を行うように更に構成される、（１２）のデバイス。
（２３）  上記デバイスは、無線通信デバイスハンドセットを備える、（１２）のデバイス。
（２４）  上記デバイスは、一つ以上の集積回路デバイスを備える、（１２）のデバイス。
（２５）  グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信するための手段であって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信するための手段と、
上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算するための手段であって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算するための手段と、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てるための手段であって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てるための手段と、及び
上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示するための手段と、
を備える、デバイス。
（２６）  上記パフォーマンス情報を受信するための手段は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための手段を備える、（２５）のデバイス。
（２７）  上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、（２５）のデバイス。
（２８）  選択可能なパフォーマンスメトリックの表現を表示するための手段と、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けるための手段と、
を更に備える、（２５）のデバイス。
（２９）  上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するための手段を更に備え、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段は、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段を備える、（２５）のデバイス。
（３０）  上記ドローコマンドにグラフィカル識別子を割り当てるための手段は、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てるための手段を備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、（２５）のデバイス。
（３１）  上記グラフィックス要素を表示するための手段は、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示するための手段を備える、（３０）のデバイス。
（３２）  上記パフォーマンス情報を受信するための手段は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための手段を備え、上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段は、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定するための手段を備える、（２５）のデバイス。
（３３）  上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第１の値を決定するための手段と、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第２の値を決定するための手段と、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第１の値と上記第２の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定するための手段と、
を更に備える、（２５）のデバイス。
（３４）  一つ以上のプログラマブルプロセッサに、
グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
を行わせるための命令を備える、コンピュータ可読記憶媒体。
（３５）  上記パフォーマンス情報を受信するための命令は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための命令を備える、（３４）のコンピュータ可読記憶媒体。
（３６）  上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、（３４）のコンピュータ可読記憶媒体。
（３７）  選択可能なパフォーマンスメトリックの表現を表示するための命令と、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けるための命令と、
を更に備える、（３４）のコンピュータ可読記憶媒体。
（３８）  上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するための命令を更に備え、
上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令は、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令を備える、
（３４）のコンピュータ可読記憶媒体。
（３９）  上記ドローコマンドにグラフィカル識別子を割り当てるための命令は、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てるための命令を備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、（３４）のコンピュータ可読記憶媒体。
（４０）  上記グラフィックス要素を表示するための命令は、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示するための命令を備える、（３９）のコンピュータ可読記憶媒体。
（４１）  上記パフォーマンス情報を受信するための命令は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための命令を備え、上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令は、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定するための命令を備える、（３４）のコンピュータ可読記憶媒体。
（４２）  上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第１の値を決定するための命令と、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第２の値を決定するための命令と、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第１の値と上記第２の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定するための命令と、
を更に備える、（３４）のコンピュータ可読記憶媒体。
【図１】
0005437485.tif 000002
【図２】
0005437485.tif 000003
【図３】
0005437485.tif 000004
【図４】
0005437485.tif 000005
【図５】
0005437485.tif 000006
【図６】
0005437485.tif 000007
【図７】
0005437485.tif 000008
【図８】
0005437485.tif 000009
【図９】
0005437485.tif 000010
【図１０】
0005437485.tif 000011
【図１１】
0005437485.tif 000012
【図１２】
0005437485.tif 000013