JP5437485B2 - レンダリングされたグラフィックス要素のためのパフォーマンスメトリックの視覚的表現の表示 - Google Patents

レンダリングされたグラフィックス要素のためのパフォーマンスメトリックの視覚的表現の表示 Download PDF

Info

Publication number
JP5437485B2
JP5437485B2 JP2012514092A JP2012514092A JP5437485B2 JP 5437485 B2 JP5437485 B2 JP 5437485B2 JP 2012514092 A JP2012514092 A JP 2012514092A JP 2012514092 A JP2012514092 A JP 2012514092A JP 5437485 B2 JP5437485 B2 JP 5437485B2
Authority
JP
Japan
Prior art keywords
graphics
performance
elements
processing unit
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012514092A
Other languages
English (en)
Other versions
JP2012529120A (ja
Inventor
リッツ、ジェームズ・ピー.
エルミー、ババック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2012529120A publication Critical patent/JP2012529120A/ja
Application granted granted Critical
Publication of JP5437485B2 publication Critical patent/JP5437485B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Description

この出願は、参照によってその全ての内容が本明細書に組み込まれる、2009年6月2日に出願された米国仮出願第61/183,476号の優先権を主張する。
この開示は、グラフィックス画像の表示に関する。
グラフィックスプロセッサは、ビデオゲーム、グラフィックスプログラム、コンピュータ利用デザイン(CAD)アプリケーション、シミュレーション及び視覚化ツール及びイメージングのような、多様なアプリケーションのための二次元(2D)及び三次元(3D)画像をレンダリングするために広く使用されている。ディスプレイプロセッサは、ユーザにディスプレイデバイスを通してプレゼンテーションするためにグラフィックスプロセッサのレンダリングされた出力を表示するために使用されることができる。
3Dグラフィックスアプリケーションのような、グラフィックスアプリケーションは、画像を生成するために、グラフィックスデバイス中の一つ以上のプロセッサのような基本的なグラフィックスハードウェアを順に使用する、アプリケーション・プログラミング・インタフェース(API)コール又は命令を呼び出すことによって、シーンのコンテンツを記述または定義することができる。グラフィックスハードウェアは、これらのAPIの呼び出しを介して行使された一連の状態遷移を受けることができる。ドローコールや命令などの各APIコールのための状態や状態遷移のフルセットは、画像がハードウェアでレンダリングされる処理を記述することができる。
組み込まれたハードウェアアクセラレートされたグラフィックスアプリケーションの開発では、個々のグラフィックス要素(例えば、メッシュ、ポリゴン、または他のグラフィカルプリミティブ)がグラフィックス処理ユニット(GPU)ハードウェアデバイスによって処理される方法の多くの態様を定量化すること、はしばしば困難である。上記要素に捧げられたクロックサイクルの数、そのレンダリングで発生したストール、消費されたメモリ帯域、等々のような、GPU処理のそのような態様は、アプリケーション開発者にとって非常に貴重な情報を構成する。
本開示は、レンダリングされたグラフィックス要素のパフォーマンスメトリックの視覚的表現を表示するために使用されることができるパフォーマンス分析アプリケーションを提供するための様々な手法を述べる。分析アプリケーションは、いくつかのケースでは、オープン・グラフィックス・ライブラリ(OpenGL(登録商標))、組み込みシステム用のOpenGL(登録商標)ES)またはOpenVG(ベクトル・グラフィックス)APIなどの特定のアプリケーション・プログラミング・インターフェイス(API)の使用をなさせるプラットフォーム用のマルチメディアアプリケーションを作成している開発者によって使用されることができる。分析アプリケーションは、アプリケーション開発者に、グラフィックス処理ハードウェアでレンダリングされる個々の2Dまたは3D要素の処理の属性の大きなセットを可視化することを許すことができる。この処理から収集した情報は、ターゲットハードウェアプラットフォーム上でより効率的に実行するために開発されたアプリケーションの設計やパフォーマンス特性を、開発者がより効果的に調整するのを助けることができるできる。
いくつかの例では、分析アプリケーションは、グラフィックスのシーンでレンダリングされる個々のグラフィックス要素のため、携帯デバイスや他のデバイスなどのターゲットデバイスからパフォーマンス測定値の一つ以上の大規模なセットのキャプチャを有効にすることができる。ターゲットデバイスは、グラフィックスアプリケーションが動作することを意図されているデバイス、またはデバイスのクラス、であることができる。アプリケーションは、開発者に、受信したパフォーマンスデータに基づいて開発デバイス上でパフォーマンスメトリックをグラフィカルに視覚化することを許すことができる。開発デバイスは、パフォーマンスデータを収集する実際のデバイスまたは別のデバイス(例えば、実際のデバイスのエミュレータまたはシミュレータとして機能するパーソナルコンピュータ)、を備えることができる。
一例の方法は、グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、パフォーマンス情報に基づいてグラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値がグラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、を備える。上記方法はさらに、グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、グラフィックス要素にグラフィカル識別子を割り当てることであって、グラフィカル識別子の一つがグラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、グラフィックスシーンをレンダリングするときに、グラフィックス要素に割り当てられたグラフィカル識別子に従って、グラフィックス要素を表示することと、を備える。
一例のデバイスは、ディスプレイデバイスと一つ以上のプロセッサとを含む。上記一つ以上のプロセッサは、グラフィックス処理ユニットにより提供されるパフォーマンス情報を受信するように構成されるものであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信するように構成され、且つ、上記パフォーマンス情報に基づいてグラフィックス要素のパフォーマンスメトリックの値を計算するように構成されるものであって、それぞれの計算値がグラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算するように構成される。上記一つ以上のプロセッサはさらに、上記グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てるように構成されるものであって、上記グラフィカル識別子の一つがグラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てるように構成され、且つ、ディスプレイデバイス上にグラフィックスシーンをレンダリングするときに、グラフィックス要素に割り当てられたグラフィカル識別子に従って、グラフィックス要素を表示するように構成される。
一例のコンピュータ可読記憶媒体は、一つ以上のプログラマブルプロセッサに、グラフィックスデバイスのグラフィックス処理ユニットによって提供されるパフォーマンス情報を受信させるための命令であって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、グラフィックス処理ユニットによって測定される、命令と、上記パフォーマンス情報に基づいてグラフィックス要素のためのパフォーマンスメトリックの値を計算するための命令であって、それぞれの計算値が、グラフィックス要素の少なくとも一つに関連付けられている、命令と、を含む。コンピュータ可読記憶媒体は、さらに、グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、グラフィックス要素にグラフィカル識別子を割り当てるための命令であって、上記グラフィカル識別子の一つがグラフィックス要素のそれぞれに割り当てられる、命令と、グラフィックスシーンをレンダリングするときに、グラフィックス要素に割り当てられたグラフィカル識別子に従って、上記グラフィックス要素を表示するための命令と、を含む。
この開示中で説明されている技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装されることができる。ソフトウェアで実装する場合、ソフトウェアは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはデジタル信号プロセッサ(DSP)、あるいは、他の同等の集積またはディスクリートロジック回路のような、一つ以上のプロセッサを指すことがあり得る、プロセッサで実行されることができる。上記技法を実行するための命令を備えるソフトウェアは、最初にコンピュータ可読媒体に格納され、プロセッサによって実行されることができる。
従って、この開示はまた、この開示中に説明されているように、プロセッサに様々な技法のいずれかを実行させるための命令を備えるコンピュータ可読媒体を企図する。いくつかのケースでは、コンピュータ可読媒体は、製造業者に販売される及び/またはデバイスで使用されることができる、コンピュータプログラム製品の一部を形成することができる。コンピュータプログラム製品は、コンピュータ可読媒体を含むことができ、場合によっては、梱包材も含むことができる。
一つ以上の様相の詳細は、添付図面及び以下の説明中に示される。他の特徴、目的及び効果は、その説明及び図面から及び請求項から明白であろう。
図1は、パフォーマンス分析アプリケーションを実行するアプリケーションコンピューティングデバイスに、状態及び/またはパフォーマンス情報と共にグラフィックスコマンドを提供することができる、グラフィックスデバイスの一例を示すブロック図である。 図2は、パフォーマンス分析アプリケーションを直接実装したり実行したりすることができる、グラフィックスデバイスの別の例を示すブロック図である。 図3は、一例に従った、図1に示されたグラフィックス処理システムの詳細を示すブロック図である。 図4は、一例に従った、図1に示された制御プロセッサ、グラフィックスプロセッサ、頂点プロセッサ及びディスプレイプロセッサによって実行されることができる、動作の詳細を示す流れ図である。 図5は、一例に従った、図3に示されたグラフィックスドライバの追加の詳細を示すブロック図である。 図6は、図1又は図2に示されたグラフィックスデバイスによって実行されることができる、例示的な方法の流れ図である。 図7は、図3及び図5に示されたグラフィックスドライバなどの、グラフィックスドライバによって実行されることができる、例示的な方法の流れ図である。 図8は、図1又は図2に示されたパフォーマンス分析アプリケーションなどの、パフォーマンス分析アプリケーションによって実行されることができる、例示的な方法の流れ図である。 図9は、図1又は図2に示されたパフォーマンス分析アプリケーションなどの、パフォーマンス分析アプリケーションによって表示されることができる情報の例を示す概念図である。 図10は、図1又は図2に示されたパフォーマンス分析アプリケーションなどの、パフォーマンス分析アプリケーションによって表示されることができる情報の他の例を示す概念図である。 図11は、多数の個々にレンダリングされた要素を含むグラフィカルシーンを示す一例の画面図である。 図12は、図11と同じグラフィカルシーンを示しているが、割り当てられたグラフィカル識別子(例えば、色、シェーディング及び/またはクロスハッチングの識別子)に従って表示される個々にレンダリングされた要素を持つ、一例の画面図である。
図1は、開示の一態様に従ったパフォーマンス分析アプリケーションを実行するアプリケーションコンピューティングデバイス20に、状態及び/またはパフォーマンス情報32と共に、複数のグラフィックスコマンド30を提供することができる、グラフィックスデバイス2を示すブロック図である。グラフィックスデバイス2は、スタンドアロンデバイスであっても良いし、あるいは、大規模システムの一部であっても良い。例えば、グラフィックスデバイス2は、無線モバイル通信端末のような無線通信装置の一部を形成することができ、あるいは、デジタルカメラ、ビデオカメラ、デジタルマルチメディアプレーヤ、パーソナル・デジタル・アシスタント(PDA)、ビデオゲームのコンソール、他のビデオデバイス、またはテレビなど専用のビューイングステーション、の一部とすることができる。
グラフィックスデバイス2は、コンピューティングデバイスを備えても良く、あるいは、パーソナルコンピュータやラップトップデバイスの一部であっても良い。グラフィックスデバイス2は、一つ以上の集積回路中に、あるいは、一部または上記のすべてのデバイスに使用することができる複数チップ/複数チップセット中に、含まれることもできる。図1は、グラフィックスデバイス2とは分離した別体のデバイス20中で実行されるパフォーマンス分析アプリケーション28の例を示している。図2示した例のような他のケースにおいては、パフォーマンス分析アプリケーションは、図2を参照してより詳細に説明するように、グラフィックスデバイス内で実行される又はグラフィックスデバイス内に直接実装されることもできる。
いくつかのケースでは、グラフィックスデバイス2は、グラフィックスアプリケーション、ビデオアプリケーション、オーディオアプリケーション、及び/または他のマルチメディアアプリケーションなどの、様々なアプリケーションを実行したり、実装したりすることができ得る。例えば、グラフィックスデバイス2は、グラフィックスアプリケーション、ビデオゲームアプリケーション、ビデオ再生アプリケーション、デジタルカメラアプリケーション、インスタントメッセージアプリケーション、ビデオ会議アプリケーション、モバイルアプリケーション、またはビデオストリーミングアプリケーションに使用することができる。
グラフィックスデバイス2は、様々な異なるデータタイプ又はフォーマットを処理することができ得る。例えば、グラフィックスデバイス2は、以下でより詳細に説明するように、静止画像データ、動画像(ビデオ)データ、または他のマルチメディアデータを処理することができる。画像データは、コンピュータ生成グラフィックスデータを含むことができる。図1の例では、グラフィックスデバイス2は、グラフィックス処理システム4、メモリを備える記憶媒体8、ディスプレイデバイス6を含む。
プロセッサ10、12、14及び16は、グラフィックス処理システム4内に含まれることができる。プロセッサ10は、制御プロセッサ又は汎用プロセッサである。プロセッサ12は図形プロセッサである、プロセッサ14は頂点プロセッサである及び、プロセッサ16はディスプレイプロセッサである。制御プロセッサ10は、グラフィックス処理ユニット12、頂点プロセッサ14及び/またはディスプレイプロセッサ16を制御することができ得る。一例では、グラフィックス処理システム4は、他のメディアプロセッサ(例えば、オーディオエンジン)を含む他のプロセッサを含むことができる。いくつかのケースでは、グラフィックスデバイス2が頂点処理能力を提供しないとき(例えば、グラフィックスデバイス2がOpenVGのための処理を実装していない場合)には、グラフィックス処理システム4は、頂点プロセッサ14を含まないことがあり得る。
グラフィックスデバイス2では、グラフィックス処理システム4は、記憶媒体8とディスプレイデバイス6の両方に結合されている。記憶媒体8は、命令及び/またはデータを記憶することが可能な任意の永久メモリまたは揮発性メモリを含むことができる。記憶媒体8は、同期ダイナミック・ランダム・アクセス・メモリ(SDRAM)、リード・オンリ・メモリ(ROM)、不揮発性ランダム・アクセス・メモリ(NVRAM)、埋め込みダイナミック・ランダム・アクセス・メモリ(eDRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)、またはフラッシュ・メモリ、を含むことができる。ディスプレイデバイス6は、LCD(液晶ディスプレイ)、プラズマディスプレイデバイス、または他のディスプレイデバイスのような、表示を目的とした画像データを表示することができる任意のデバイスであることができる。
頂点プロセッサ14は、頂点情報を管理し、頂点変換を処理することができる。一例では、頂点プロセッサ14は、デジタル信号プロセッサ(DSP)を備えることができる。グラフィックス処理ユニット12は、コンピュータ処理されたグラフィックスを、レンダリングするため、操作するため及び表示するために利用される、専用のグラフィックスレンダリングデバイスであることができる。グラフィックス処理ユニット12は、様々な複雑なグラフィックス関連のアルゴリズムを実装することができる。例えば、上記複雑なアルゴリズムは、二次元または三次元コンピュータグラフィックスの表現に対応することができる。グラフィックス処理ユニット12は、ディスプレイデバイス6等のディスプレイ上に、複雑な三次元画像を作成するために、点、線及び三角形または他のポリゴンサーフェスを形成するような、多数のいわゆる「原始的な」グラフィックス演算を実装することができる。
グラフィックス処理ユニット12は、記憶媒体8に記憶されているコマンドを実行することができる。記憶媒体8は、一つ以上のグラフィックスドライバ18だけでなく、グラフィックスアプリケーションやビデオアプリケーション等のアプリケーション用の複数のアプリケーション命令21を記憶することが可能である。アプリケーション命令21は、実行のためのグラフィックス処理システム4に記憶媒体8からロードされることができる。例えば、制御プロセッサ10、グラフィックス処理部12及びディスプレイプロセッサ16の内の少なくとも一つが、命令21を実行することができる。一例では、アプリケーション命令21は、記憶媒体8に、無線で、動的にダウンロードされる一つ以上のダウンロード可能なモジュールを備えることができる。一例では、アプリケーション命令21は、生成またはアプリケーション開発者によって作成されたアプリケーション・プログラミング・インタフェース(API)命令から生成される又はコンパイルされるバイナリ命令の呼び出しストリームを備えることができる。
グラフィックスドライバ18もまた、実行のためのグラフィックス処理システム4に記憶媒体8からロードされることができる。例えば、制御プロセッサ10、グラフィックス処理ユニット12及びディスプレイプロセッサ16の内の少なくとも一つは、グラフィックスドライバ18からの特定の命令を実行することができる。一例の態様では、グラフィックスドライバ18は、グラフィックス処理ユニット12によってロードされ、実行される。グラフィックスドライバ18は、以下でさらに詳細に説明されるだろう。
また、図1に示すように、グラフィックス処理システム4は、一つ以上のバッファ15を含む。制御プロセッサ10、グラフィックス処理ユニット12、頂点プロセッサ14及び/またはディスプレイプロセッサ16は、それぞれバッファ15へのアクセスを有し、バッファ15にデータを記憶したり、バッファ15からデータを検索したりすることができる。バッファ15は、キャッシュメモリを備えることができ、データと命令の両方を記憶することができ得る。例えば、バッファ15は、一つ以上のアプリケーション命令21、または、記憶媒体8からグラフィックス処理システム4にロードされたグラフィックスドライバ18からの一つ以上の命令を含むことができる。バッファ15及び/または記憶媒体8はまた、命令実行中に使用されるグラフィックスデータを含むこともできる。
アプリケーション命令21は、特定のケースでは、3Dグラフィックスアプリケーションなどのグラフィックスアプリケーションのための命令を含むことができる。アプリケーション命令21は、一つ以上のグラフィックスオブジェクトを含むグラフィックスシーンの内容を記述または定義する命令を備えることができる。アプリケーション命令21がグラフィックス処理システム4にロードされて、実行されるときには、一連の状態遷移を経ることができる。グラフィックスドライバ18内の一つ以上の命令はまた、アプリケーション命令21の実行中に、グラフィックス要素をレンダリングし、また、ディスプレイデバイス6上にレンダリングされたグラフィックス要素を表示するために実行されることができる。個々の要素はそれぞれ、レンダリングされた要素をディスプレイ上に描画させる特定のドローコマンドの実行中に、レンダリングされることができる。
ドローコールのような命令のための状態のフルセットは、要素がグラフィックス処理システム4内のドローコール(またはコマンド)によってレンダリングされる処理を記述することができる。しかしながら、アプリケーション命令21を書き込んだアプリケーション開発者はしばしば、デバッグしたり、定義されたシーンで要素を記述する又はレンダリングする別の方法で実験したりする目的で、インタラクティブにこれらの状態を表示または変更するために、限られた能力しか持つことができない。さらに、異なるハードウェアプラットフォームは、異なるハードウェア設計と、これらの状態及び/または状態遷移の実装を有することができる。
従って、一例では、アプリケーション開発者は、デバッグしたり、シーンでの画像を記述する又はレンダリングするための別の方法で実験したりする処理を支援するために、図1に示すアプリケーションコンピューティングデバイス20を使用することができる。アプリケーションコンピューティングデバイス20は、グラフィックスデバイス2に結合されている。例えば、一例では、アプリケーションコンピューティングデバイス20は、ユニバーサル・シリアル・バス(USB)接続を介してグラフィックスデバイス2に結合されている。他の態様では、無線接続や他の形態の有線接続などの他の形態の接続が使用されることができる。
アプリケーションコンピューティングデバイス20は、一つ以上のプロセッサ22、ディスプレイデバイス24及び記憶媒体26を含む。プロセッサ22は、一態様によれば、制御プロセッサ、グラフィックスプロセッサ、頂点プロセッサ、及びディスプレイプロセッサの内の少なくとも一つを含むことができる。記憶媒体26は、命令及び/またはデータを記憶することが可能な任意の永久メモリまたは揮発性メモリを含むことができる。記憶媒体26は、同期ダイナミック・ランダム・アクセス・メモリ(SDRAM)、リード・オンリ・メモリ(ROM)、不揮発性ランダム・アクセス・メモリ(NVRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)、またはフラッシュ・メモリ、を含むことができる。ディスプレイデバイス24は、LCD(液晶ディスプレイ)、プラズマディスプレイデバイス、または他のディスプレイデバイスのような、表示を目的とした画像データを表示することができる任意のデバイスであることができる。
組み込まれた、ハードウェアアクセラレートされたグラフィックスアプリケーションなどの特定のアプリケーションの開発において、個々のグラフィックス要素(例えば、メッシュ、ポリゴン、または他のグラフィカルなプリミティブ)が、グラフィックスデバイス2上のグラフィックス処理ユニットによって処理される多くの態様を定量化することは、しばしば困難であるか、不可能である。例えば、グラフィックス処理ユニット12内の要素に当てられたクロックサイクルの数、そのレンダリングで発生したストール、消費されたメモリ帯域幅、等々、のような、グラフィックス処理のそのような態様は、アプリケーション開発者のための非常に貴重な情報を備えることができるが、まだ、実際のアプリケーション開発中には一般に利用できない。グラフィックス処理ユニット12の詳細なアクティビティに関する詳細情報を確認しなければ、開発者は、最適化の機会を見逃し、チューニング作業を誤った方向に行き、及び/または、パフォーマンスの目標とスケジュールを満たすために、視覚的な品質を低下させることを余儀なくされることがあり得る。
従って、図1に示すように、アプリケーションコンピューティングデバイス20は、グラフィックスデバイス2から送信される状態及び/またはパフォーマンス情報32と共に、グラフィックスコマンド30を取得して分析することが可能である。一例では、グラフィックスドライバ18は、アプリケーションコンピューティングデバイス20にグラフィックスコマンド30と状態/パフォーマンス情報32とを送信するように構成される。グラフィックスコマンド30は、一つ以上のアプリケーション命令21を含むことができ、状態/パフォーマンス情報32は、グラフィックス処理システム4内でのグラフィックスコマンド30の実行または実装の間に、生成されるまたは取得されることができる。
状態/パフォーマンス情報32は、命令実行または実装中のグラフィックス処理システム4の状態とパフォーマンスに関する情報を含むものであり、以下でより詳細に説明されるだろう。状態/パフォーマンス情報32は、グラフィックスコマンド30と共に使用され得るまたは別なふうに関連し得る、グラフィックスデータ(例えば、プリミティブなグラフィックスデータ及び/またはラスタライズされたグラフィックスデータ)を含むことができる。グラフィックス処理システム4は、ディスプレイデバイス6上に、画像を、またはレンダリングされたグラフィックス要素のシーンを表示するために、グラフィックスコマンド30を実行することができる。アプリケーションコンピューティングデバイス20は、いくつかのケースでは、グラフィックスデバイス2のディスプレイデバイス6上にもまた表示されることができるグラフィックスイ画像やシーンを作成するために、状態/パフォーマンス情報32と共に、グラフィックスコマンド30を使用することが可能である。
パフォーマンス分析アプリケーション28は、グラフィックスコマンド30と状態/パフォーマンス情報32の受領で、レンダリングされた要素のグラフィックス画像やシーンを作成し、ディスプレイデバイス24上にそのレンダリングされた要素を表示するために、アプリケーションコンピューティングデバイス20のプロセッサ22によって実行されることができる。パフォーマンス分析アプリケーション28は、多数のアプリケーション命令を含むソフトウェアモジュールを備えることができる。パフォーマンス分析アプリケーション28は、記憶媒体26に記憶され、プロセッサ22によってロードされて、実行されることができる。パフォーマンス分析アプリケーション28は、記憶媒体26中に予めロードされることができ、グラフィックスデバイス2で動作するようにカスタマイズされることができる。一例では、パフォーマンス分析アプリケーション28は、グラフィックスデバイスのハードウェア動作をシミュレートし、状態/パフォーマンス情報32の一つ以上の態様を表すことができるグラフィカル情報を提供する。
パフォーマンス分析アプリケーション28の異なるバージョンは、記憶媒体26に格納されることができ、異なるハードウェア設計を持つ別のグラフィックスデバイスのためのプロセッサ22によって実行されることができる。いくつかのケースでは、パフォーマンス分析アプリケーション28と組み合わせて使用されるソフトウェアライブラリも、記憶媒体26内に記憶されることができる。一例では、パフォーマンス分析アプリケーション28は、一般的なアプリケーションであることができ、特定のハードウェア又はグラフィックスデバイスのシミュレーション機能が、実行中のパフォーマンス分析アプリケーション28とリンクされ得るそれぞれ別個のライブラリ内に含められることができる。
例えば、第1のライブラリは、第1の特定のタイプのグラフィックスデバイス(例えば、第1のタイプの無線通信端末に含まれるもの)のためのシミュレーション機能を提供することができるのに対して、第2の異なるライブラリは、第1のグラフィックスデバイスとは異なるハードウェアアーキテクチャを持つ第2の異なるタイプのグラフィックスデバイスのためのシミュレーション機能を提供することができる。これらのライブラリの各々は、記憶媒体26内に記憶されることができ、第1及び第2のグラフィックスデバイスの何れかをシミュレートするための実行中、パフォーマンス分析アプリケーション28とで別々にリンクされることができる。その結果、パフォーマンス分析アプリケーション28、または、実行でのそのようなアプリケーションの異なるバージョンは、アプリケーションコンピューティングデバイス20上の様々な異なるタイプのグラフィックスデバイスをシミュレートすることが可能である。
一例では、状態/パフォーマンス情報32の視覚的表現は、アプリケーションコンピューティングデバイス20のディスプレイデバイス24上で、アプリケーション開発者に表示されることができる。さらに、グラフィックスコマンド30の視覚的表現もまた、表示されることができる。多くのケースでは、グラフィックスコマンド30はバイナリ命令を備えることができるので、アプリケーションコンピューティングデバイス20は、ディスプレイデバイス24上にグラフィックスコマンド30の視覚的表現を生成するために、パフォーマンス分析アプリケーション31を使用することができる。パフォーマンス分析アプリケーション31は、記憶媒体26内に記憶され、グラフィックスコマンド30の視覚的表現を表示するためにプロセッサ22にロードされることができる。
一例では、パフォーマンス分析アプリケーション31は、グラフィックスコマンド30を生成するときに予めコンパイルされることができる、対応するAPI命令に、グラフィックスコマンド30をマッピングするための機能を提供することができる。アプリケーション開発者は、API命令を使用するプログラムを書くことができるが、これらのAPI命令は通常、グラフィックスデバイス2上での実行のための、グラフィックスコマンドの30のような、バイナリ命令にコンパイルされる。
グラフィックスコマンド30内の一つ以上の命令は、個々のAPI命令にマッピングされることができる。そして、マッピングされたAPI命令は、実際に実行されるグラフィックスコマンド30の視覚的表現を提供するために、ディスプレイデバイス24上でアプリケーションの開発者に表示されることができる。いくつかのケースでは、パフォーマンス分析アプリケーション28は、そのようなマッピングを実行するためにマッピング情報を利用することができる。このようなマッピング情報は、例えば、記憶媒体26内に記憶されることができる。マッピング情報は、いくつかのケースでは、グラフィックスデバイス2から提供されることができ、また、他のケースでは、アプリケーションコンピューティングデバイス20上に予めプログラムされることができる。
一例では、アプリケーション開発者などのユーザは、例えば、パフォーマンス上のそのような変更の影響を判断するために、グラフィックスコマンド30の一つ以上を変更することを望むことができる。そのようなケースでは、アプリケーションコンピューティングデバイス20は、以下に詳細に記載されるように、グラフィックスデバイス2に、実行されるべきであるコマンドへの変更などの修正要求34を、オプションで提供することができる。
上述したように、グラフィックス画像あるいはディスプレイデバイス24に表示されたセットされた又はレンダリングされた要素も、また、グラフィックスデバイス2上に表示されることができる。パフォーマンス分析アプリケーション28が、正確にグラフィックスデバイス2上に提供されるように、レンダリングされたグラフィックス要素のシーンを作成するために、グラフィックスコマンド30と状態/パフォーマンス情報32を使用することができるので、アプリケーションコンピューティングデバイス20を使用するアプリケーション開発者は、グラフィックスアプリケーション30の実行中に、潜在的なパフォーマンス問題やボトルネックを迅速に識別し、及び、グラフィックスアプリケーション30の全体的なパフォーマンスを向上させるための修正を試作さえすることができ得る。
例えば、アプリケーション開発者は、アプリケーションコンピューティングデバイス20上のパフォーマンス分析アプリケーション28の実行中及びディスプレイデバイス24上の画像の表示中、グラフィックスコマンド30及び/または状態/パフォーマンス情報32に対する一つ以上の修正要求34を行うことを、オプションで選択することができる。そのような修正要求34は、グラフィックスコマンド30の実行または状態/パフォーマンス情報32の分析中に、観測されたパフォーマンス問題またはボトルネックに基づくことができる。そして、これらの修正要求34は、グラフィックスデバイス2にアプリケーションコンピューティングデバイス20から送信されることができ、それらはグラフィックス処理システム4で処理される。一例では、一つ以上のグラフィックスドライバ18が、修正要求34を処理するために、グラフィックス処理システム4内で実行される。いくつかのケースでは、修正要求34は、修正されたコマンドを含むことができる。いくつかのケースでは、修正要求は、修正された状態及び/またはパフォーマンス情報を含むことができる。
修正要求34の処理で、更新された命令及び/または情報35が、一つ以上のグラフィックスドライバ18によるような、アプリケーションコンピューティングデバイス20に送り返される。更新されたコマンド/情報35は、グラフィックスデバイス2によって処理された、修正要求34に基づいて実行するための更新されたグラフィックス命令を含むことができる。更新されたコマンド/情報35はまた、グラフィックスデバイス2によって処理された、修正要求34に基づいて更新された状態及び/またはパフォーマンス情報も含むことができる。
更新されたコマンド/情報35は、ディスプレイデバイス24上の画像情報又はレンダリングされたグラフィックス要素の表示を更新するために、パフォーマンス分析アプリケーション28によって処理され、また、アプリケーション開発者に更新されたコマンド/情報35の視覚表現を提供することもでき、これは、パフォーマンス分析アプリケーション31を再び使用することを含むことができる。そして、アプリケーション開発者は、パフォーマンス問題が解決または緩和されているかどうかを判断するために、ディスプレイデバイス24上で更新された画像情報だけでなく、更新されたコマンド/情報35の視覚的表現を見ることができる。アプリケーション開発者は、グラフィックスアプリケーション30の全体的なパフォーマンスを改善するために、グラフィックスコマンド30またはプロトタイプの修正をデバッグするために反復的な処理を使用することができる。
従って、パフォーマンスプロファイリングアプリケーション28は、OpenGL(登録商標)、OpenGL(登録商標)ES、又はOpenVG APIなどの特定のAPIの使用をなす組み込みプラットフォームのためのマルチメディアアプリケーションを書いているコンテンツ開発者(例えば、ビデオゲーム開発者)によって、アプリケーション開発ツールとして使用されることができる。パフォーマンス分析アプリケーション28の使用は、アプリケーション開発者に、グラフィックス処理ユニット12のグラフィックス処理ハードウェアによって個々の2Dまたは3D要素の処理の属性の大規模なセットを、測定し可視化することを許すことができる。これから収集した情報は、開発者がターゲットハードウェアプラットフォーム(例えば、図1のグラフィックスデバイス2によって提供されたプラットフォーム)で、より効率的に実行するために、アプリケーションの設計やパフォーマンス特性をより効果的に調整することを助けることができる。
パフォーマンス分析アプリケーション28は、それぞれの個々のレンダリングされた要素ごと(例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと)に、グラフィックスデバイス2からパフォーマンス測定値の一つ以上の大規模なセットの取得を可能にする。パフォーマンス分析アプリケーション28は、開発者に、グラフィックスデバイス2から受信したパフォーマンス測定値(例えば、状態/パフォーマンス情報32)に基づいて、アプリケーションコンピューティングデバイス20などの開発デバイス上で、パフォーマンスメトリックをグラフィカルに視覚化することを許すことができる。いくつかのケースでは、各ドローコマンドは、実行時に、一つ以上のグラフィックスプリミティブ、頂点、ピクセルフラグメント、またはその任意の一部/組み合わせのレンダリングをすることが可能である。
例えば、アプリケーション命令21内に含まれるドローコマンドがグラフィックス処理ユニット12によって実行されるとき、グラフィックスドライバ18のうちの少なくとも一つは、ドローコマンドを実行するためにグラフィックスス処理ユニット12で行われた作業を包含する、グラフィックス処理ユニット12の一つ以上のカウンタの値を得ることができる。これらのカウンタの内の少なくとも一つは、グラフィックス処理ユニット12からの、又はパフォーマンス分析アプリケーション28が高レベルのパフォーマンスメトリックを計算することができるような、グラフィックス処理システム4の他のコンポーネントからの、他のカウンタや測定でサンプリングされ、集約される、低レベルのハードウェアカウンタを含むことができる。カウンタの値は、アプリケーションコンピューティングデバイス20に送信される状態/パフォーマンス情報32内に含まれることができる。状態/パフォーマンス情報32はさらに、関数コールパラメータ、レンダリング状態、形状データ、テクスチャ、シェーダ、等々、を含むエミュレーション環境でのグラフィックスコマンド30を再作成するために、パフォーマンス分析アプリケーション28によって必要とされるデータを含むことができる。
開示の一態様では、実行時、パフォーマンス分析アプリケーション28は、グラフィックス処理ユニット12によって提供されている(例えば、状態/パフォーマンス情報32内に含まれる)パフォーマンス情報を受信することができる。グラフィックス処理ユニット12によって測定されたパフォーマンス情報は、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連する。例えば、グラフィックス要素は、グラフィックスシーンをレンダリングするために、ドローコマンド(例えば、アプリケーション命令21内に含まれたコマンド)であることができる。いくつかのケースでは、グラフィックス要素は、グラフィックスプリミティブ、頂点、及び/またはピクセルフラグメントを含むことができる。
パフォーマンス情報の受信で、パフォーマンス分析アプリケーション28は、それぞれの計算値がグラフィックス要素の少なくとも一つに関連する、パフォーマンス情報に基づいて、グラフィックス要素のパフォーマンスメトリックの値を計算することができる。例えば、さらに後述するように、指定されたパフォーマンスメトリックは、ほんの一例を挙げると、クロックサイクルごとに書き込まれたピクセルのためのメトリック、頂点ごとに発行されたシェーダ命令のためのメトリック、及び/または毎秒実行されたメモリ書き込みの数のためのメトリック、のような高レベルのパフォーマンスメトリックを備えることができる。
さらに後述するように、パフォーマンス分析アプリケーション28は、グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、グラフィックス要素のそれぞれに、グラフィカル識別子(例えば、色、シェーディング/クロスハッチング識別子、他のグラフィカル識別子)を割り当てることができ、且つ、ディスプレイデバイス24上のように、表示の目的のためにグラフィックスシーンをレンダリングするためにグラフィックス要素を処理することができる。グラフィックス識別子の内の一つは、グラフィックス要素の各々に割り当てられることができる。そのような形態では、パフォーマンス分析アプリケーション28は、グラフィックス要素の処理中(例えば、ドローコマンドの実行中)にレンダリングされたグラフィックス要素を表示し、グラフィックス要素に割り当てられたグラフィカル識別子に従ってそのような要素を視覚的に表示することが可能である。
このような情報の表示は、多くの場合、アプリケーション開発者が、グラフィックス処理ユニット12によって個々のグラフィックス要素(例えば、2Dまたは3Dオブジェクト)の処理の属性の大規模なセットを直接且つ正確に測定し、ディスプレイユニット24上にそのような測定値の表現を容易に見るのを、支援することができる。表示された情報はまた、開発者が、グラフィックスデバイス2によって提供されたターゲットのハードウェアプラットフォーム上でより効率的に実行するために、アプリケーション命令21の設計やパフォーマンス特性をより効果的に調整するのを助けることができる。
例えば、開発者は、任意の変更が、ディスプレイデバイス24上のレンダリングされた要素のためのパフォーマンスメトリックの更新された視覚的表現の検査時に実行されるアプリケーションの一つ以上のパフォーマンス特性を向上させることができるかどうかを判断するために、アプリケーションの様々な態様を調整することができる。開発者はまた、上述したように、グラフィックスデバイス2にアプリケーションコンピューティングデバイス20から送信された修正要求34内に含まれるコマンドの内の少なくとも一つを修正するために、パフォーマンス分析アプリケーション28を利用することもできる。そして、レンダリングされた要素のためのパフォーマンスメトリックの更新された表示が、更新されたコマンド/情報35の受領で、ディスプレイデバイス24上に提供されることができる。
図2は、パフォーマンス分析アプリケーション70を直接実装する又は実行することができる、グラフィックスデバイス50の別の例を示すブロック図である。図1に示されたグラフィックスデバイス2と同様に、グラフィックスデバイス50は、ディスプレイデバイス72と記憶媒体(例えば、メモリ)64に結合された、グラフィックス処理システム52を含む。グラフィックスデバイス50は、グラフィックスデバイス2と同様に機能することができ、また、コンピューティングデバイスを備えることができる。
グラフィックス処理システム52は、制御プロセッサ54、グラフィックス処理ユニット56、一つ以上のバッファ58、オプションの頂点プロセッサ60、及びディスプレイプロセッサ62を含む。グラフィックス処理システム52は、システム52が頂点処理動作を提供する場合には、頂点プロセッサ60を含む。
図1に示される記憶媒体8と同様の記憶媒体64は、複数のアプリケーション命令66と複数のグラフィックスドライバ68とを含む。しかしながら、記憶媒体8とは異なり、記憶媒体64は、グラフィックス処理システム52中のプロセッサ/ユニットの内の少なくとも一つにロードされて実行されることができる、パフォーマンス分析アプリケーション70を含む。
パフォーマンス分析アプリケーション70は、図1に示されたパフォーマンス分析アプリケーション28と同様に動作することができる。しかしながら、図2の例においては、デバイス内でアプリケーション命令66を実際に実行する同様のデバイス(即ち、グラフィックスデバイス50)もまた、パフォーマンス分析アプリケーション70を実行する。よって、別個のアプリケーションコンピューティングデバイスは必要なく、図2の例では示されていない。
図2のグラフィックスデバイス50は、様々な動作モードを持つことができる。例えば、メインモードでは、グラフィックス処理システム52は、パフォーマンス分析アプリケーション70を使用せずに、アプリケーション命令66及び/またはメイン動作モードにあるグラフィックスドライバ68を実行する又は実装することができる。しかしながら、別の(例えば、テスト、エミュレーション/シミュレーション)モードでは、グラフィックス処理システム52はさらに、パフォーマンス分析アプリケーション70を実行する又は実装することができる。開発者は、ディスプレイデバイス72におけるパフォーマンス分析アプリケーション70の結果及び出力を直接見ることができ得る。
従って、パフォーマンス分析アプリケーション70は、OpenGL(登録商標)、OpenGL(登録商標)ES、又はOpenVG APIなどの特定のAPIの使用をなす組み込みプラットフォームのためのマルチメディアアプリケーションを書いているコンテンツ開発者(例えば、ビデオゲーム開発者)によって、アプリケーション開発ツールとして使用されることができる。パフォーマンス分析アプリケーション70の使用は、アプリケーション開発者に、ディスプレイデバイス72上に直接、グラフィックス処理ユニット56のグラフィックス処理ハードウェアによって個々の2Dまたは3D要素の処理の属性の大規模なセットを、測定し可視化することを許すことができる。これから収集した情報は、開発者がターゲットハードウェアプラットフォーム(例えば、図2のグラフィックスデバイス50によって提供されたプラットフォーム)で、より効率的に実行するために、アプリケーションの設計やパフォーマンス特性をより効果的に調整することを助けることができる。
パフォーマンス分析アプリケーション70は、それぞれの個々のレンダリングされた要素ごと(例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと)に、グラフィックスデバイス50からパフォーマンス測定値の一つ以上の大規模なセットの取得を可能にする。パフォーマンス分析アプリケーション70は、開発者に、グラフィックス処理ユニット56から受信したパフォーマンス測定値に基づいて、他の別体のアプリケーションコンピューティングデバイスの必要なしに、グラフィックスデバイス50上で直接、パフォーマンスメトリックをグラフィカルに視覚化することを許すことができる。
一態様では、出て行くピクセルフラグメントは、パフォーマンス分析アプリケーション70の実装または実行中に、グラフィックス処理ユニット56によって提供されるパフォーマンスカウンタデータのような、パフォーマンスカウンタデータから直接それらの値を得ることができる。いくつかのケースでは、グラフィックス処理システム52によって(例えば、グラフィックス処理ユニット56及び/またはディスプレイプロセッサ62によって)実装されたフラグメントシェーダエンジンは、シェーダコードに特別なレジスタを公開することにより、一つ以上のパフォーマンスカウンタへのアクセスを与えることができる。ピクセルフラグメントの値は、上記特別なレジスタ内のデータに基づいて、またはそれから導出されることができる。グラフィックス処理システム52中のブレンディングハードウェアは、複数のピクセルフラグメントが、同じスクリーン座標に配置されることができるので、フレームバッファ上で、これらのピクセルフラグメントを蓄積する又は結合することができる。従って、ピクセルフラグメントに割り当てられたグラフィカル識別子(例えば、色、クロスハッチング/シェーディングパターン)は、カウンタ(例えば、グラフィックス処理ユニット56のカウンタ)の内の少なくとも一つの値に基づいて、ピクセルフラグメントの複数のものを結合するために、ブレンディングを使用することによって決定されることができる。
図3は、一例による、図1に示された、グラフィックス処理システム4、グラフィックスドライバ18、及びアプリケーションコンピューティングデバイス20の特定の詳細を示すブロック図である。図3においては、アプリケーションコンピューティングデバイス20がグラフィックスデバイス2のグラフィックス処理システム4に結合されているものと仮定する。しかしながら、これは、例示の目的だけのために示されている。他のシナリオでは、パフォーマンス分析アプリケーションは、(例えば、図2の例におけるように)デバイス内に直接実装されることができる。
図3に示すように、グラフィックス処理システム4は、4つのプログラマブルプロセッサ、即ち、図1にも示された、制御プロセッサ10、オプションの頂点プロセッサ14、グラフィックス処理ユニット12、及び、ディスプレイプロセッサ16、を含む。制御プロセッサ10は、頂点プロセッサ14、グラフィックス処理ユニット12、又はディスプレイプロセッサ16のいずれも制御することができる。多くの場合、これらのプロセッサ10、12、14及び16は、システム4内のグラフィックス処理パイプラインの一部であることができる。
制御プロセッサ10は、パイプラインを介してデータまたは命令実行の流れの一つ以上の態様を制御することができ、且つ、頂点プロセッサ14にグラフィックス画像のためのジオメトリ情報を提供することもできる。オプションの頂点プロセッサ14は、原始的なジオメトリ形式での複数の頂点に従って記述又は定義されることができる、グラフィックス画像の頂点変換又はジオメトリ処理を管理することができる。利用される場合は、頂点プロセッサ14は、グラフィックス画像のレンダリング動作またはラスタライズ動作を実行することができる、グラフィックス処理ユニット12に、その出力を提供することができる。グラフィックス処理ユニット12は、表示のために、ピクセル形式で、グラフィックス画像を準備する、ディスプレイプロセッサ16に、その出力を提供することができる。グラフィックス処理ユニット12はまた、シェーディングやスケーリングなどの、ピクセルデータ上の様々な操作を実行することもできる。
しばしば、グラフィックス画像データは、アプリケーション命令21(図1)の一部であり得る、グラフィックスコマンド30の実行中に、この処理パイプラインで処理されることができる。その結果、グラフィックスコマンド30は、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12、及びディスプレイプロセッサ16の内の少なくとも一つによって実行されることができる。アプリケーション開発者は通常、グラフィックス処理システム4内のどの特定のプロセッサがグラフィックスコマンド30のどれを実行しているかの、多くの知識やコントロールを有していないことがあり得る。いくつかのケースでは、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12、及びディスプレイプロセッサ16の内の少なくとも一つは、グラフィックスコマンド30の実行中に、パフォーマンス問題を持ち得る、あるいは、処理パイプライン内の潜在的なボトルネックとなり得る。これらのケースでは、グラフィックス処理システム4内の全体的なパフォーマンスはが低下するおそれがあり、アプリケーション開発者は、パフォーマンスを向上させるために、グラフィックスコマンド30に変更を加えることを望むことができる。しかしながら、開発者は、必ずしも、プロセッサ10、12、14または16の何れが、パフォーマンス問題を持つものであるか、知ることができるわけではない。
パフォーマンスのボトルネックと潜在的な解法を識別する問題を支援するために、グラフィックスデバイス2のグラフィックスドライバ18Aは、図3に示すように、グラフィックス処理システム4からグラフィックスコマンド30を取得、又は収集し、アプリケーションコンピューティングデバイス20にそれを送ることができる。グラフィックスドライバ18Aは、図1に示されたグラフィックスドライバ18の一部である。グラフィックスドライバ18Aは、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12、及びディスプレイプロセッサ16の内の少なくとも一つによって、ロードされ、実行されることができる。加えて、グラフィックスドライバ18Aはまた、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12、及びディスプレイプロセッサ16の内の少なくとも一つから状態及び/またはパフォーマンス情報32を収集し、さらに、アプリケーションコンピューティングデバイス20にこの情報32を送ることもできる。一例では、グラフィックスドライバ18Aは、グラフィックスコマンド30がOpenGL ES API命令から生成される又はコンパイルされることができるバイナリ命令を含む場合、OpenGL ESドライバを備えることができる。
状態データの様々な形式が、状態/パフォーマンス情報32内に含まれることができる。例えば、状態データは、グラフィックスコマンド30の実行中に使用される、または、別なふうに関連する、グラフィックスデータを含むことができる。状態データは、位置などの頂点配列、色、座標、サイズ、または重量のデータに関連することができる。状態データはさらに、テクスチャ状態データ、ポイント状態データ、ライン状態データ、ポリゴン状態データ、間引き(culling)状態データ、アルファテスト状態データ、ブレンディング状態データ、深さ状態データ、ステンシル状態データ、または色状態データを含むことができる。前述したように、状態データは、状態情報と実際のデータの両方を含むことができる。いくつかのケースでは、状態データは、一つ以上のOpenGLトークンに関連したデータを含むことができる。
様々な形式のパフォーマンスデータもまた、状態/パフォーマンス情報32内に含まれることができる。一般的に、このパフォーマンスデータは、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12、及びディスプレイプロセッサ16の内の少なくとも一つからのメトリックまたはハードウェアカウンタデータを含むことができる。パフォーマンスデータは、フレームレートまたはサイクルデータを含むことができる。サイクルのデータは、プロファイリング、コマンド配列、頂点およびインデックスデータ、または他の動作のために使用されるサイクルのためのデータを含むことができる。様々な態様において、様々な形式の状態及びパフォーマンスデータは、グラフィックスドライバ18Aによってグラフィックス処理システム4から収集された状態/パフォーマンス情報32内に含まれることができる。いくつかの例では、パフォーマンスデータはまた、グラフィックス処理ユニット12によって提供されたカウンタデータを含むことができる。
前述したように、アプリケーションコンピューティングデバイス20は、受信したグラフィックスコマンド30及び状態/パフォーマンス情報32に従って、グラフィックス画像の表現を表示することができる。アプリケーションコンピューティングデバイス20はまた、状態/パフォーマンス情報32の視覚的表現を表示することができる。再作成されたグラフィックス画像及び/または状態/パフォーマンス情報32の視覚的表現を見て対話することにより、アプリケーション開発者は、グラフィックスコマンド30の実行の中に、グラフィックスデバイス2のグラフィックス処理システム4内のパフォーマンス問題を直ちに識別して解決することができる。例えば、アプリケーション開発者は、プロセッサ10、12、14及び/または16の内の特定のものがパフォーマンス問題を持つことができると識別することができ得る。
パフォーマンス分析アプリケーション28は、アプリケーション開発者によって、アプリケーション開発ツールとして使用されることができる。いくつかの例では、パフォーマンス分析アプリケーション28の使用は、アプリケーション開発者に、グラフィックス処理ユニット12のグラフィックス処理ハードウェアによって、個々の2Dまたは3D要素の処理の属性の大規模なセットを測定し、可視化させることを許すことができる。パフォーマンス分析アプリケーション28は、それぞれの個々のレンダリングされた要素ごと(例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと)に、グラフィックス処理システム4のためのパフォーマンス測定値の一つ以上の大規模なセットの取得を可能にする。
パフォーマンス分析アプリケーション28は、開発者に、グラフィックス処理システム4から受信したパフォーマンス測定値に基づいて、アプリケーションコンピューティングデバイス20などの開発デバイス上で、パフォーマンスメトリックをグラフィカルに視覚化することを許すことができる。これから収集した情報は、開発者がターゲットハードウェアプラットフォーム(例えば、グラフィックス処理システム4によって提供されたプラットフォーム)上で、より効率的に実行するために、アプリケーションの設計やパフォーマンス特性をより効果的に調整することを助けることができる。
識別されたパフォーマンス問題への回避策や解決策を識別するための試みでは、開発者は、アプリケーションコンピューティングデバイス20上の一つ以上の修正要求34を開始することができる。例えば、開発者は、修正要求34を作成するために、再作成した画像または状態/パフォーマンス情報32の表現と対話することができる。いくつかのケースでは、開発者は、修正要求34を生成するために、以下により詳細に説明されるように、状態/パフォーマンス情報32を、さらに直接、変更することができる。あるケースでは、修正要求34は、グラフィックスデバイス2のグラフィックス処理システム4中のグラフィックスコマンド30の内の少なくとも一つの実行を無効にするための一つ以上の要求、あるいは、グラフィックスコマンド30の内の少なくとも一つを修正する要求を含むことができる。
修正要求34は、動作中、グラフィックスデバイス2のための要求を取り扱うグラフィックスドライバ18Aにアプリケーションコンピューティングデバイス20から送信される。多くのケースでは、修正要求34は、グラフィックスコマンド30の実行中、グラフィックス処理システム4内のプロセッサ10、12、14又は16の内の少なくとも一つ中でデータを含むことができる、状態情報を修正するための要求を含むことができる。そして、グラフィックスドライバ18Aは、修正要求34内に含まれるグラフィックス処理システム4内の変更を実装することができる。これらの変更は、グラフィックスコマンド30の実行のためのプロセッサ10、12、14及び/または16の間での実行の流れを変更することができる。あるケースでは、グラフィックスコマンド30の内の一つ以上は、修正要求34に従ってグラフィックス処理システム4での実行中、無効にすることができる。
グラフィックスドライバ18Aは、修正要求34の処理に応答してアプリケーションコンピューティングデバイス20に、更新された命令及び/または情報35を送信することが可能である。更新されたコマンド/情報35は、パフォーマンス情報を含む、グラフィックスドライバ18Aによってグラフィックス処理システム4から収集された、更新された状態情報を含むことができる。更新されたコマンド/情報35はまた、更新されたグラフィックス命令を含むこともできる。
アプリケーションコンピューティングデバイス20は、グラフィックス画像の更新された表現だけでなく、パフォーマンス分析アプリケーション28の実行または実装を介して更新されたコマンド/情報35の視覚的表現を、表示するために、更新されたコマンド/情報35を使用することができる。パフォーマンス分析アプリケーション28は、グラフィックスドライバ18Aから受信した更新されたコマンド/情報35に基づいてグラフィックスシーンのためのレンダリングされた要素単位でパフォーマンスメトリックのグラフィカルな表示を更新することができる。そして、アプリケーション開発者は、以前に識別されたパフォーマンス問題が、解決されたか、あるいは別なふうに取り組まれたかどうかを評価することができ得る。例えば、アプリケーション開発者は、あるテクスチャ、ポリゴンまたは他の特徴が最適化されているかどうか、あるいは、他のパフォーマンスパラメータが改善されているかどうかを判断するために、更新された画像だけでなく、更新されたコマンド/情報35の視覚的表現を分析することができ得る。
そのような形態では、アプリケーション開発者は、グラフィックスデバイス2上のグラフィックス処理システム4の動作をシミュレートするアプリケーションコンピューティングデバイス20上の環境中で、グラフィックスコマンド30の実行を、迅速且つ効果的にデバッグしたり、分析したりすることができ得る。開発者は、グラフィックスコマンド30の実行パフォーマンスを最大化するため、シーン内の複数のグラフィックス画像又は複数の画像フレームを分析するために、アプリケーションコンピューティングデバイス20上の表示された画像及び状態/パフォーマンス情報と反復的に対話することができる。
図4は、一態様による、制御プロセッサ10、グラフィックス処理ユニット12、頂点プロセッサ14及びディスプレイプロセッサ16によって実行されることができる動作の詳細を示す流れ図である。図4はまた、フレームバッファ格納100及びディスプレイ6のための動作も示している。一例では、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12及び/またはディスプレイプロセッサ16は、グラフィックスコマンド30の内の一つ以上の実行の結果として、様々な動作を行う。
前述したように、制御プロセッサ10は、グラフィックス処理パイプラインを介してデータや命令実行の流れの一つ以上の態様を制御することができ、且つ、頂点プロセッサ14にジオメトリ情報を提供することもできる。図4に示すように、制御プロセッサ10は、90で、ジオメトリ格納を実行することができる。いくつかのケースでは、一つ以上のプリミティブのためのジオメトリ情報は、バッファ15(図1)に制御プロセッサ10によって記憶されることができる。いくつかのケースでは、ジオメトリ情報は、記憶媒体8に記憶されることができる。
そして、頂点プロセッサ14は、グラフィックスデバイス内で使用され場合、制御プロセッサによって提供され及び/または92で処理するためのバッファ15に記憶された所与のプリミティブのためのジオメトリ情報を得ることができる。あるケースでは、頂点プロセッサ14は、ジオメトリ情報の頂点変換を管理することができる。あるケースでは、頂点プロセッサ14は、ジオメトリ情報上で照明動作を実行することができる。
頂点プロセッサ14は、94でデータ上にレンダリングまたはラスタライズ動作を実行することができる、グラフィックス処理ユニット12に、その出力を提供することができる。グラフィックス処理ユニット12は、表示のために、ピクセル形式で、一つ以上グラフィックス画像を準備する、ディスプレイプロセッサ16に、その出力を提供することができる。ディスプレイプロセッサ16は、98で、データの様々なフラグメントを処理するためのフラグメント処理を含む、ピクセルデータ上に様々な操作を行うことができる。あるケースでは、これは、当該技術分野で知られているような、深さテスト、ステンシルテスト、ブレンディング、またはテクスチャマッピングの内の一つ以上を含むことができる。テクスチャマッピングを実行するときには、ディスプレイプロセッサ16は、96で、テクスチャ格納及びフィルタリング情報を組み込むことができる。いくつかのケースでは、グラフィックス処理部16は、シェーディングやスケーリング操作などの、ラスタライズされたデータ上に他の操作を実行することができる。
ディスプレイプロセッサ16は、100で、フレームバッファに記憶するための出力ピクセル情報を提供する。いくつかのケースでは、フレームバッファは、バッファ15(図1)内に含まれることができる。他のケースでは、フレームバッファは、記憶媒体8内に含まれることができる。フレームバッファは、ディスプレイデバイス6上などのディスプレイデバイス6上にその後に表示されることができる、画像データの一つ以上のフレームを格納する。
前述したように、グラフィックスコマンド30は、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12及びディスプレイプロセッサ16の内の少なくとも一つによって実行されることができる。アプリケーション開発者は通常、グラフィックス処理システム4内のどの特定のプロセッサがグラフィックスコマンド30の内のどれを実行しているかの、多くの知識や制御を持たないことがあり得る。あるケースでは、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12及びディスプレイプロセッサ16の内の一つ以上は、パフォーマンス問題を持つことができ、あるいは、グラフィックスコマンド30の実行中に、処理パイプライン内の潜在的なボトルネックとなり得る。
ボトルネックの場所、あるいは、そのようなボトルネックの影響を解決または軽減するにはどのようにするのが最善かを特定するのは、アプリケーション開発者には、しばしば難しいことがあり得る。従って、一例では、グラフィックスコマンド30及び/または状態情報は、アプリケーションコンピューティングデバイス20などの外部コンピューティングデバイスに、グラフィックスデバイス2から提供されることができる。状態情報は、グラフィックスコマンド30の実行中に発生する、図4に示されるものなど、様々な操作に関する、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12及びディスプレイプロセッサ16の内の少なくとも一つからのデータを含むことができる。アプリケーションコンピューティングデバイス20は、効率的且つ効果的な方法でボトルネックを識別し、解決するために、デバイス2上に示されるグラフィックス画像を作成することができる。
図5は、一例によれる、図3に示したグラフィックスドライバ18Aの追加の詳細を示すブロック図である。前述したように、グラフィックスドライバ18Aは、例えば、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12及びディスプレイプロセッサ16の内の少なくとも一つによるような、グラフィックス処理システム4内で実行されることができる命令を備えることができる。グラフィックスドライバ18Aの実行は、グラフィックス処理システム4に、アプリケーションコンピューティングデバイス20と通信することを許す。一例では、グラフィックスドライバ18Aは、グラフィックス処理ユニット12内で実行されることができる命令を備えることができ、且つ、様々な状態及びパフォーマンス情報に、パフォーマンス分析アプリケーション28へグラフィックス処理システム4によって提供されることを許すことができる。
グラフィックスドライバ18Aは、実行時に、トランスポートインタフェース110、プロセッサ使用状況モジュール112、ハードウェアカウンタモジュール114、他の状態及び/またはパフォーマンスデータを管理することができる状態/パフォーマンスデータモジュール116、APIトレースモジュール118及びオーバライドモジュール120の例として図5に示される、様々な機能ブロックを含むことができる。グラフィックスドライバ18Aは、アプリケーションコンピューティングデバイス20のパフォーマンス分析アプリケーション28と通信するために、トランスポートインタフェースモジュール110を使用する。
プロセッサ使用状況モジュール112は、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12及びディスプレイプロセッサ16の内の少なくとも一つのためのプロセッサ使用状況情報を収集し、保持する。プロセッサ使用状況情報は、プロセッササイクル及び/またはパフォーマンス情報を含むことができる。サイクルデータは、プロファイリング、コマンド配列、頂点及びインデックスデータ、または他の動作に使用されるサイクルのためのデータを含むことができる。そして、プロセッサ使用状況モジュール112は、トランスポートインタフェースモジュール110を介してアプリケーションコンピューティングデバイス20に、このようなプロセッサ使用状況情報を提供することができる。いくつかのケースでは、プロセッサ使用状況モジュール112は、それが非同期的に情報を受信するにつれて、デバイス20にこの情報を提供する。他のケースでは、プロセッサ使用状況モジュール112は、パフォーマンス分析アプリケーション28から要求を受け取ったとき、情報を提供することができる。
ハードウェアカウンタモジュール114は、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12及びディスプレイプロセッサ16の内の少なくとも一つによって命令の実行中に、様々なハードウェアカウンタを収集し、保持する。カウンタは、グラフィックス処理システム4内の命令実行に関して、様々な状態インジケータ及び/またはメトリックを追跡し続けることができる。ハードウェアカウンタモジュール114は、非同期で又は要求に応じて、デバイス20に情報を提供することができる。特に、ハードウェアカウンタモジュール114は、グラフィックス処理ユニット12から様々なカウンタ値を取得し、そのような値を、パフォーマンス分析アプリケーション28へ、グラフィックス処理ユニット12によるコマンドの実行に関連するパフォーマンス情報として、提供することができる。
状態/パフォーマンスデータモジュール116は、制御プロセッサ10、頂点プロセッサ14、グラフィックス処理ユニット12及びディスプレイプロセッサ16の内の少なくとも一つのための他の状態及び/またはパフォーマンスデータを収集し、保持する。例えば、状態データは、いくつかのケースでは、グラフィックスデータを備えることができる。状態データは、位置のような頂点配列、色、座標、サイズ、または重量データに関連したデータを含むことができる。状態データはさらに、テクスチャ状態データ、ポイント状態データ、ライン状態データ、ポリゴン状態データ、間引き状態データ、アルファテスト状態データ、ブレンディング状態データ、深さ状態データ、ステンシル状態データ、または色状態データを含むことができる。パフォーマンスデータは、様々な他のメトリックまたはサイクルデータを含むことができる。状態/パフォーマンスデータモジュール116は、非同期でまたは要求に応じて、パフォーマンス分析アプリケーション18に情報を提供することができる。
APIトレースモジュール118は、グラフィックス処理システム4によって実行されて、トランスポートインタフェースモジュール110を介してパフォーマンス分析アプリケーション28にトランスポートされる、グラフィックス命令の流れ及び/またはトレースを管理する。前述したように、グラフィックスデバイス2は、デバイス20に、その処理パイプラインでグラフィックス処理システム4によって実行されるグラフィックスコマンド30のコピーを提供する。APIトレースモジュール118は、これらのグラフィックスコマンド30の取得とトランスポートを管理する。APIトレースモジュール118はまた、グラフィックスコマンド30を生成するために使用されることができるAPI命令などの、グラフィックスコマンド30をグラフィックスコマンド30の視覚的表現にマッピングするために、パフォーマンス分析アプリケーション31(図1)で使用されるある種の情報を提供することもできる。
一例では、アプリケーションコンピューティングデバイス20にグラフィックスデバイス2から送信される状態/パフォーマンス情報32(例えば、図1)は、プロセッサ使用状況モジュール112、ハードウェアカウンタモジュール114、及び/または状態/パフォーマンスデータモジュール116によって提供されるデータまたは情報の何れかを含むことができる。一例では、アプリケーションコンピューティングデバイス20にグラフィックスデバイス2から送信されるグラフィックスコマンド30(例えば、図1)は、APIトレースモジュール118によって提供される情報を含むことができる。
オーバライドモジュール120は、グラフィックスドライバ18Aに、グラフィックス処理システム4内のある命令の実行を変更すること、またはオーバライドすることを許す。前述したように、パフォーマンス分析アプリケーション28は、グラフィックスデバイス2に、修正34のような、一つ以上の修正要求を送信することができる。あるケースでは、修正要求34は、グラフィックス処理システム4でのグラフィックスコマンド30の内の少なくとも一つの実行を無効にするための一つ以上の要求、あるいは、グラフィックスコマンド30の内の少なくとも一つを修正するための要求を含むことができる。いくつかのケースでは、修正要求34は、状態/パフォーマンス情報32を変更するための要求を含むことができる。
オーバライドモジュール120は、修正要求34を受理し、処理することができる。例えば、オーバライドモジュール120は、パフォーマンス分析アプリケーション28から、状態/パフォーマンス情報32を修正するための何れかの要求と共に、グラフィックスコマンド30の内の少なくとも一つを修正するための何れかの要求を受信し、グラフィックス処理システム4にそのような要求を送信することができる。そして、制御プロセッサ10、グラフィックス処理ユニット12、頂点プロセッサ14及びディスプレイプロセッサ16の内の少なくとも一つは、これらの要求を処理し、更新されたコマンド/情報35を生成することができる。そして、オーバライドモジュール1220は、前述したように、処理のためのパフォーマンス分析アプリケーション28に、更新されたコマンド/情報35を送信することができる。
そのような形態では、グラフィックスドライバ18Aは、グラフィックス処理システム4とアプリケーションコンピューティングデバイス20のパフォーマンス分析アプリケーション28との間のインタフェースを提供する。グラフィックスドライバ18Aは、パフォーマンス分析アプリケーション28にグラフィックス命令と状態/パフォーマンス情報32を提供し、また、パフォーマンス分析アプリケーション28から修正要求34を受信することが可能である。このような修正要求34を処理した後、グラフィックスドライバ18Aは、パフォーマンス分析アプリケーション28に戻る、更新されたコマンド/情報35を提供することがその後に可能となる。
図6は、開示の一態様による、図1に示したアプリケーションコンピューティングデバイス20又は図2に示したグラフィックスデバイス50によって実行されることができる方法の流れ図である。単に例示の目的のために、図6の方法は、アプリケーションのコンピューティングデバイス20のパフォーマンス分析アプリケーション28(図1)又はパフォーマンス分析アプリケーション70(図2)などのパフォーマンス分析アプリケーションによって実行される、ということが以降の説明中では仮定されるだろう。
パフォーマンス分析アプリケーションは、グラフィックス処理ユニット(例えば、グラフィックスデバイス2のグラフィックス処理ユニット12)によって提供されるパフォーマンス情報を受信することができるものであり、ここで、パフォーマンス情報は、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連してグラフィックス処理ユニットによって測定されるものである(130)。例えば、パフォーマンス情報は、アプリケーションコンピューティングデバイス20に提供される、図1に示した状態/パフォーマンス情報32の一部であることができる。パフォーマンス情報は、グラフィックスコマンド30内に含まれるあるドローコマンドの実行と関連されることができる。グラフィックスコマンド30は、API命令から生成されるバイナリ命令を備えることができる。
パフォーマンス情報は、いくつかの例では、グラフィックス処理ユニットによって収集されたパフォーマンスカウンタデータを備えることができる。例えば、パフォーマンスカウンタデータは、ドローコマンドがドローコマンドによって実行されているにつれて、間引かれた又はクリッピングされたグラフィックスプリミティブの数のカウンタ値を含むことができる。パフォーマンスカウンタデータの様々な他の形態もまた、収集されることができる。パフォーマンスカウンタデータの様々な他の形式もまた、収集されることができるもので、限定はしないが以下を含む:即ち、フレームごとのハードウェアクロックサイクル、ドローコマンド、プリミティブ、頂点、またはフラグメント、の数;フレームごとのグラフィックスデバイス(例えば、グラフィックスデバイス2)の一つ以上のサブコンポーネント内でのアイドル又はストールサイクル、ドローコマンド、プリミティブ、頂点、またはフラグメント、の数;等々。
そして、パフォーマンス分析アプリケーションは、パフォーマンス情報に基づいて、グラフィックス要素のパフォーマンスメトリックの値を計算することができる(132)。それぞれの計算値は、グラフィックス要素の少なくとも一つと関連する。パフォーマンス分析アプリケーションは、任意の数の異なるパフォーマンスメトリックのための値を計算することができる。例示パフォーマンスメトリックは、例えば、クロックサイクルごとに書き込まれるピクセルの数、頂点ごとに発行されるシェーダ命令の数、秒ごとに実行されるメモリ書き込みの数、等々を含むことができる。パフォーマンス分析アプリケーションは、受信されたパフォーマンス情報に基づいて、これらのメトリックのための値を計算することができる。
パフォーマンス分析アプリケーションは、グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、グラフィックス要素にグラフィカル識別子を割り当てることができるものであり、ここで、グラフィカル識別子の一つがグラフィックス要素のそれぞれに割り当てられるものである(134)。そして、パフォーマンス分析アプリケーションは、グラフィックス要素に割り当てられたグラフィカル識別子に従ってグラフィックスシーンをレンダリングするとき、個々のグラフィックス要素を(例えば、ディスプレイデバイス24上に)表示することができる(136)。
パフォーマンス情報は、グラフィックス要素のそれぞれのためにグラフィックス処理ユニットによって収集及び提供される、一つ以上のカウンタの値を備えることができる。グラフィックス要素のそれぞれは、グラフィックスシーン、グラフィックスプリミティブ、頂点、ピクセルフラグメント、等々をレンダリングするための一つ以上のドローコマンドを備えることができる。パフォーマンスプロファイリングアプリケーションはまた、いくつかのインスタンスでは、選択可能なパフォーマンスメトリックの表現を表示し、且つ、指定されたパフォーマンスメトリックとして選択可能なパフォーマンスメトリックの内の一つのユーザ選択を受けることもできる。そのような形態では、ユーザは、レンダリングされたグラフィックス要素のための所望のパフォーマンスデータを見るために、利用可能な選択可能なメトリックのリストから、パフォーマンスメトリックを指定することができる。
いくつかの例では、パフォーマンス分析アプリケーションは、グラフィックス要素のためのパフォーマンスメトリックの計算値に基づいて、パフォーマンスメトリックの値の範囲を決定することができる。そして、パフォーマンスプロファイリングアプリケーションは、上記値の範囲内のグラフィックス要素のためのパフォーマンスメトリックの計算値の位置に基づいて、グラフィックス要素にグラフィカル識別子(例えば、色、シェーディング識別子、クロスハッチング識別子)を割り当てることができる。
前述したように、グラフィックス要素に割り当てられるグラフィカル識別子は、色を備えることができる。これらのケースでは、パフォーマンス分析アプリケーションは、色の一つがグラフィックス要素のそれぞれに割り当てられている、グラフィックス要素に割り当てられた色に従って、個々のグラフィックス要素を表示することができる。例えば、グラフィックス要素の処理で、パフォーマンス分析アプリケーションは、表示の際に(例えば、ドローコマンドごとに、グラフィックスプリミティブごとに、頂点ごとに、ピクセルフラグメントごとに、)第1のレンダリングされる要素に第1の色を割り当て、表示の際に第2のレンダリングされる要素に第2の(異なる)色を割り当て、・・・、とすることができる。そのような形態では、パフォーマンス分析アプリケーションは、容易に理解できるフォーマットで、パフォーマンス情報を、要素ごと単位で、表示することができる。アプリケーション開発者は、アプリケーション開発、デバッグ、最適化、及び/またはアプリケーション開発中の他の機能で開発者を助けることができる、シーンをレンダリングするためのグラフィックス要素のパフォーマンス特性を識別するために、そのような情報を素早く見ることができる。
グラフィックス要素に割り当てられるグラフィカル識別子は、色よりはむしろ、他の識別子の形式を備えることができる。例えば、シェーディング及び/またはクロスハッチングパターン、または識別子が、使用されることができる。いくつかの例では、パフォーマンス分析アプリケーションは、識別子の一つがグラフィックス要素のそれぞれに割り当てられるグラフィックス要素に割り当てられているシェーディング/クロスハッチング識別子に従って、個々のグラフィックス要素を表示することができる。例えば、グラフィックス要素の処理で、パフォーマンス分析アプリケーションは、表示の際に(例えば、ドローコマンドごとに、グラフィックスプリミティブごとに、頂点ごとに、ピクセルフラグメントごとに、)第1のレンダリングされる要素に第1のクロスハッチングパターンまたは識別子を割り当て、表示の際に第2のレンダリングされる要素に第2の(異なる)クロスハッチングパターンまたは識別子を割り当て、・・・、とすることができる。
いくつかのケースでは、図6に示した行為は、図2に示したグラフィックスデバイス50などの、単一のデバイスによって実装されることができる。いくつかのケースでは、図6の行為は、図1に示したグラフィックスデバイス2及び/またはアプリケーションコンピューティングデバイス20などの、一つ以上の物理的に別個のデバイスによって実装されることができる。
図2の例に示すように、いくつかの代替例では、パフォーマンス分析アプリケーションは、グラフィックスデバイス内で(例えば、グラフィックスデバイス50内で)実行されるまたは直接実装されることができる。これらの特定の例では、パフォーマンス情報を受信することは、ピクセルフラグメントを備えるグラフィックス要素のそれぞれのために、グラフィックス処理ユニットによって収集および提供される、一つ以上のカウンタの値を受信することを含むことができる。グラフィックス要素にグラフィカル識別子を割り当てることは、一つ以上のカウンタの値に基づいて、ピクセルフラグメントの複数のものを組み合わせるために、ブレンディング(例えば、グラフィックス処理システム内でブレンディングハードウェア)を使用することによって、グラフィカル識別子を決定することを含むことができる。
さらに、例えば、図2に示した例示デバイスのためには、図6の方法は、グラフィックスデバイス50によって(例えば、図3及び図5に示したグラフィックスドライバ18Aなどのデバイスのグラフィックスドライバによって)実行される、さらなる行為を含むことができる。図8を参照してさらに詳細に説明するように、例えば、グラフィックス処理ユニットは、グラフィックス処理ユニットによってグラフィックス要素の少なくとも一つを処理する前に、グラフィックス処理ユニットの少なくとも一つのカウンタ(例えば、間引かれた/クリッピングされたプリミティブの数のためのカウンタ)の少なくとも第1の値を決定することができる。
そして、グラフィックス処理ユニットは、グラフィックス処理ユニットによって少なくとも一つのグラフィックス要素の処理に続いて、グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第2の値を決定することができる。グラフィックス処理ユニットは、グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第1と第2の値の差に基づいて、少なくとも一つのグラフィックス要素のためのパフォーマンス情報を決定することができる。そのような形態では、パフォーマンス情報は、グラフィックス要素の実際の処理に基づいているカウンタ値のΔを備え、それによって、これらの要素の処理のためのパフォーマンス関連情報を提供する。
図7は、図3及び図5に示したグラフィックスドライバ18A又は図2に示したグラフィックスドライバ68の内の一つなどのグラフィックスドライバによって実行されることができる例示的な方法の流れ図である。この例では、説明のみの目的のために、グラフィックス要素は個々のドローコマンドを備えると仮定される。しかしながら、他の例では、グラフィックス要素は、グラフィックスプリミティブ、頂点、またはピクセルフラグメントのような他の要素を備えることができる。
最初に、グラフィックスドライバは、命令(例えば、図1の命令21、図2の命令66)のセット内に含まれることができる特定のドローコマンドをインターセプトすることができる(150)。グラフィックスドライバは、グラフィックス処理ユニットによるその実行の前に、コマンドをインターセプトすることができる。
コマンドをインターセプトした後、グラフィックスドライバは、任意の要素ごと(例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと)のパフォーマンスデータ収集が、パフォーマンス分析アプリケーション(例えば、図1のパフォーマンス分析アプリケーション28、図2のパフォーマンス分析アプリケーション70)によって有効になっているかどうかを見るためにチェックすることができる(154)。従って、パフォーマンス分析アプリケーションは、それぞれのドローコマンドが特定の要素をレンダリングすることができるならば、グラフィックスドライバによって、コマンド毎単位で、そのようなデータ収集を動的に有効にまたは無効にする機能を持つ。
パフォーマンス分析アプリケーションは、要素ごとのパフォーマンス情報が必要ない又は望ましくない場合は、特定のケースでのデータ収集機能を無効化することができる。これらのケースでは(即ち、154のNO分岐)、グラフィックスドライバは、グラフィックス処理ユニットによってドローコマンドの実行を駆動し(152)、そして、パフォーマンス分析アプリケーションに、ドローコマンドのためのコマンドデータを送信することができる(166)。そして、パフォーマンス分析アプリケーションは、コマンドの実行をエミュレートまたはシミュレートすることができるが、グラフィックスドライバによるこのようなデータ収集が有効になっていないならば、要素ごとのパフォーマンスメトリックを表示しないことができる。いくつかのオプションのケースでは、グラフィックスドライバは、分析アプリケーションにグラフィックス処理ユニットのための現在のカウンタ値を提供することができるが、そのような値は、個々のグラフィックス要素をレンダリングするために実行される個々のドローコマンドに関連した値よりはむしろ、対応するカウンタの現在の全体の値を備えることができる。
しかしながら、そのような要素ごとのデータ収集が有効になっている場合には(即ち、154のYES分岐)、グラフィックスドライバは、ドローコマンドの実行の前に、グラフィックス処理ユニット(GPU)の全ての有効なカウンタの現在の値をサンプリングすることができる(156)。カウンタの内の少なくとも一つは、データ収集を有効にすることができる。いくつかのケースでは、パフォーマンス分析アプリケーションが、ユーザの少なくとも一つの選択に基づいてカウンタを有効または無効とすることができるのに対して、いくつかのケースでは、グラフィックスデバイスは、カウンタを有効または無効にすることができる。例えば、アプリケーション開発者が任意の時点で一つ以上の指定されたメトリックのためのパフォーマンスメトリック情報を見ることに関心がある場合、パフォーマンス分析アプリケーションは、指定された所望のメトリックの決定または計算するのに使用される、グラフィックス処理ユニットのこれらのカウンタからのデータ収集を有効にする要求を提供することができる。分析アプリケーションは、しかしながら、処理のオーバヘッドを軽減または削減するために、任意の他のカウンタのためのデータ収集を無効にすることができる。
次に、グラフィックスドライバは、グラフィックス処理ユニットによってドローコマンドの実行を駆動し(158)、グラフィックス処理ユニットの全ての有効なカウンタの値を再びサンプリングする(160)。図7の例では、GPUカウンタをサンプリングすることとドローコマンドを実行することとは、同期した動作であると仮定する。この例では、グラフィックスドライバは、カウンタ値を含むグラフィックス処理ユニットによって公開された一つ以上のハードウェアレジスタを問い合わせることができる。そして、これらの値は、グラフィックスドライバに直ちに返されることができる。
他の例では、特あるGPUアーキテクチャは、グラフィックスドライバにGPUカウンタをサンプリングするための「パイプライン」要求を作成することを許すことができ、そして、グラフィックスドライバは、サンプリングが完了したとき、グラフィックス処理ユニットによってその後に通知される又は中断されることができる。これらのインスタンスでは、カウンタデータの実際の収集又はサンプリング(156、160)は、ドローコマンドの実行後のある時点まで、延期されることができる。
有効にされた各GPUカウンタのために、第1のサンプリング値は、有効にされたGPUカウンタの対応する第2のサンプリング値から減算される(162)。従って、有効にされた各特定のGPUカウンタのために、グラフィックスドライバは、単一のドローコマンドを実行するために、特定のGPUカウンタに関連した、グラフィックス処理ユニットによって実行される作業を表す、Δまたは差分値を計算する。従って、特定のGPUカウンタの値がドローコマンドの実行前に5であり、その値がドローコマンドの実行後には8に変化した場合には、そのカウンタのための3のΔ値が、その特定のドローコマンドの実行に関連する。
そして、グラフィックスドライバは、パフォーマンス分析アプリケーションに、ドローコマンドに関連付けられているコマンドデータを送信するだけでなく、分析アプリケーションが、エミュレーション環境でのドローコマンドを作成し直して、該ドローコマンドの実行に基づいて個々の要素のための計算されたパフォーマンスメトリックのグラフィカルな表現を表示することができるような、有効にされたGPUカウンタのためのΔ値を送信することができる(164)。コマンドデータは、関数コールパラメータ、レンダリング状態、形状データ、テクスチャ、シェーダ、等々を含むことができる。
そして、パフォーマンス分析アプリケーションにデータを送信した後は、グラフィックスドライバは、一つ以上の更なるドローコマンドのために、図7に示した種々の行為を繰り返すことができる。そうすることで、グラフィックスドライバは、パフォーマンス分析アプリケーションに、ドローコマンドと共に、パフォーマンス分析アプリケーションが、ドローコマンドを再作成して、要素ごと単位で、計算されたメトリックのグラフィカル表現を表示できるような、状態及びパフォーマンス情報を提供することが可能である。図12は、そのようなグラフィカルな表現の一例を示している。
図7の例では、説明のみの目的のために、グラフィックス要素が個々のドローコマンドを備えると仮定されている。しかしながら、他の例では、グラフィックス要素は、グラフィックスプリミティブ、頂点、またはピクセルフラグメントなどの他の要素を備えることができる。これらの例では、グラフィックスドライバは、これらのグラフィックス要素の処理に基づいて、Δ/差異データを含む、GPUカウンタデータを収集することが可能である。例えば、150で、ドローコマンドをインターセプトするよりはむしろ、グラフィックスドライバは、ピクセルフラグメントをインターセプトすることができる。156で、グラフィックスドライバは、ピクセルフラグメントの処理をする前に、全ての有効にされたGPUカウンタをサンプリングすることができ、160で、グラフィックスドライバは、ピクセルフラグメントを処理した後に、全ての有効にされたGPUカウンタをサンプリングすることができる。そして、グラフィックスドライバは、パフォーマンス分析アプリケーションに、ピクセルフラグメントごと単位でのパフォーマンス情報として、GPUカウンタデータを送信することが可能である。
図8は、図1のパフォーマンス分析アプリケーション28又は図2のパフォーマンス分析アプリケーション70などのパフォーマンス分析アプリケーションによって実行されることができる例示的な方法の流れ図である。パフォーマンス分析アプリケーションは、図7に示すように送信されるデータなどの、グラフィックスドライバによって提供されるデータを受信することができる。パフォーマンス分析アプリケーションは、グラフィックスドライバからの受信で、そのような入来送信データをバッファリングすることができる(170)。入来データは、グラフィックス要素のためのデータ(例えば、ドローコマンド、ドローコマンドデータ、プリミティブデータ、頂点データ、ピクセルフラグメントデータ)と、GPUカウンタのデータと、状態/パフォーマンス情報(例えば、状態/パフォーマンス情報32)と、を備えることができる。図7に関して前述したように、GPUカウンタデータは、要素ごと単位で、グラフィックス要素の個々の処理に関連する、任意の所与のGPUカウンタのために、Δ値を備えることができる。
そして、パフォーマンス分析アプリケーションは、それがグラフィックスドライバからアニメーションの完全なフレームを受信したかどうか、即ち、フレームの最後に達しているかどうかを見るためにチェックすることができる(172)。そうでない場合(即ち、172のNO分岐)、分析アプリケーションは、特定のフレームの最後に到達するまで、入来データをバッファリングし続けるだろう。そして、フレームの最後に到達したならば(即ち、172のYES分岐)、各受信グラフィックス要素及び関連するGPUカウンタデータのために、パフォーマンス分析アプリケーションは、受信したGPUカウンタ値を使用して、一つ以上の指定されたパフォーマンスメトリックのための値を計算する(174)。
そして、パフォーマンス分析アプリケーションは、各パフォーマンスメトリックのためのコマンドに関連する計算された値を正規化し、その後に、識別子のセットの範囲内のグラフィカル識別子に(例えば、色範囲内の色に、識別子の範囲またはグループ内のシェーディング/クロスハッチング識別子に)各値をマッピングすることができる(176)。例えば、パフォーマンス分析アプリケーションは、取得されたフレーム内で各パフォーマンスメトリックのための範囲(例えば、ほんの一例を挙げれば、クロックサイクルごとに書かれたピクセル、頂点ごとに発行されたシェーダ命令、秒当たり実行されるメモリ書き込み)を形成する、全てのグラフィックス要素間の各指定されたパフォーマンスメトリックの最小値及び最大値を計算することができる。そして、各パフォーマンスメトリックのために、数値範囲は、グラフィカル識別子(例えば、色、デリミッタ、シェーディング、クロスハッチング、または他の素材属性)のスペクトルまたはグループにマッピングされることができる。そして、パフォーマンス分析アプリケーションは、そのメトリックのための値の範囲内で対応するコマンドの計算値の位置を使用して、各グラフィックス要素にグラフィカル識別子を割り当てる。
例えば、パフォーマンス分析アプリケーションは、グラフィックスドライバから三つの異なるグラフィックス要素のためのGPUカウンタデータを受信することができる。パフォーマンス分析アプリケーションは、上記三つの要素のそれぞれのための特定のメトリックの値を計算することができる。第1のグラフィックス要素は、例えば、この要素のためのGPUカウンタデータに基づいて3の計算されたメトリック値を持つことができ;第2のグラフィックス要素は、5の計算されたメトリック値を持つことができ;第3のグラフィックス要素は、7の計算されたメトリック値を持つことができる。従って、このメトリックの値の範囲は、3から7に及ぶことができる。それは、この特定のメトリックのために、より高い値が、一つ以上の潜在的なパフォーマンス問題(例えば、メモリ書き込みのより高い回数)を示すということであり得る。
この特定の例では、パフォーマンス分析アプリケーションは、これらの値のグラフィカル識別子のスペクトルまたは範囲を作成することができる。例えば、黄色は3のメトリック値に関連することができ;青色は5のメトリック値に関連することができ;赤色は7のメトリック値に関連することができる。そして、これらの色指定に基づいて、パフォーマンス分析アプリケーションは、第1のグラフィックス要素に黄色を割り当て、第2のグラフィックス要素に青色を割り当て、第3のグラフィックス要素に赤色を割り当てることができる。
図8示すように、パフォーマンス分析アプリケーションは、これらの要素に割り当てられるグラフィカル識別子に基づいてレンダリングされるべきである任意の要素を視覚的に表す(例えば、色や色合い、シェーディング/クロスハッチング)ために、各グラフィックス要素のシェーディング又はその他の素材属性を修正することができ(178)、その後、デバイスエミュレータを使用してグラフィックス要素を処理することができる(180)。そのような形態では、取得されたフレームは再作成され、各取得されたグラフィックス要素を処理する(例えば、各ドローコマンドを実行する、各プリミティブ/頂点/ピクセルフラグメントを処理する)ことによって分析アプリケーションのために結合されたデバイスエミュレータにおいて表示されるものであり、ここで、(例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごとの)個々の要素は、計算されたパフォーマンスメトリックの対応する値に従って適切に識別される(例えば、色付けされる)。
従って、上記の例を続けると、パフォーマンス分析アプリケーションは、第1のグラフィックス要素を処理し、黄色を使用してこの要素のレンダリングを視覚的に表示することができる。分析アプリケーションは、第2のグラフィックス要素を処理し、青色を使用してこの要素のレンダリングを視覚的に表示することができる。最後に、分析アプリケーションは、第3のグラフィックス要素を処理し、赤色を使用してこの要素のレンダリングを視覚的に表示することができる。
この例では、特定のメトリックのために、より高い値は、一つ以上の潜在的なパフォーマンス問題(例えば、メモリ書き込みのより高い回数)を示す、ということがあり得る。より高いメトリック値が赤色と関連するので、アプリケーション開発者は、第1、第2及び第3のグラフィックス要素の処理でレンダリングされた要素の視覚的表現を迅速に見ることが可能である。赤く色付けられたこれらのレンダリングされた要素は、潜在的なパフォーマンス影響を持つことができる。そして、開発者は、これらの要素を選択するか、または(例えば、図9乃至図12に示すように、コマンドウィンドウ内で)赤色のグラフィックス要素を別なふうに識別することができ、その後、コマンドへのまたはプログラムへの任意の最適化が一般的になされることができるかどうかを評価することができる。上述したように、色以外のグラフィカル識別子の様々な他の形態が、異なる例で使用されることができる。
そのような形態では、開発者は、エミュレーション環境で、レンダリングされた要素のグラフィカルな表示を迅速に見て、それらが表示されている仕方に基づいてパフォーマンスに影響が出る可能性がある特定の要素を識別することが可能である。開発者は、いくつかのケースでは、これらの要素にレンダリングさせられる対応するドローコマンドを識別し、最適化のためのアプリケーションをチューニングするか、または別なふうに修正することができる。
グラフィックス要素の処理では、パフォーマンス分析アプリケーションは、複数の異なるフレームのために、170、172、174、176、178及び180を繰り返すことができる。上記の例では、パフォーマンス分析アプリケーションは、レンダリングされた要素を区別するために、異なる色を利用した。他のケースでは、グラフィカル識別子の様々な他の形態は、色の代わりに、または、色と組み合わせて、使用されることができる。例えば、パフォーマンス分析アプリケーションは、これらの要素の特定のメトリックの計算値に基づいて、異なるグラフィックス要素に、シェーディングやクロスハッチングプロパティ、または識別子を割り当てることができる。一般的に、パフォーマンス分析アプリケーションは、処理される様々な異なるグラフィックス要素に、グラフィカル識別子を割り当てることができる。
図9は、図1又は図2に示したパフォーマンス分析アプリケーションなどのパフォーマンス分析アプリケーションによって、ディスプレイデバイス201上に表示されることができる情報の例を示す概念図である。ディスプレイデバイス201は、図1または図2に示したグラフィックスデバイスの内の一つなどの、グラフィックスデバイスから送信されるグラフィックスコマンドと状態/パフォーマンス情報に基づいて、そのような2Dや3Dグラフィックス画像210をウィンドウ203内に表示することが可能である。グラフィックス画像210は、ドローコマンドを含む、グラフィックスコマンドの実行中にレンダリングされる一つ以上の要素を備えることができる。
ディスプレイデバイス201はまた、開発者がグラフィックス画像210またはグラフィックス画像210を含むシーン全体を修正するために、命令及び状態/パフォーマンス情報を変更することができるような、命令及び状態/パフォーマンス情報の視覚的表現を表示することも可能であり得る。図9の例に示すように、ディスプレイデバイス201は、グラフィカルユーザインターフェイス内で、様々な種類の情報を表示することができる。この例では、ディスプレイデバイス201は、グラフィカルユーザインターフェイス内でのグラフィカルなウィンドウ203を表示する。ウィンドウ203は、表示領域211、グラフィックスコマンド(複数)領域208、及び状態/パフォーマンス情報領域214を含む。表示領域211は、グラフィックス画像210を含む。この例では、グラフィックス画像210は、立方体を備える。
図9の例では、グラフィックスコマンド領域208は、分析アプリケーションによって受信され且つ現在実行されている又は実行された描画コマンドを含む、一つ以上のグラフィックスコマンドの視覚的表現を含む。このようなコマンドの視覚的表現は、そのようなコマンドの表現を備えることができる。例えば、分析アプリケーションがバイナリグラフィックスコマンドを受信したとき、ディスプレイデバイス201は、高レベルのアプリケーション・プログラミング・インターフェイス(API)命令(例えば、OpenGL命令)などの、別の形式でそのようなバイナリ命令の表現を表示することができる。パフォーマンス分析アプリケーションでローカルに保存された又はグラフィックスデバイスによって提供されるマッピング情報は、グラフィックスコマンド領域208内に表示されることができる別のフォーマットに、受信されたバイナリコマンドをマッピングするために使用されることができる。
状態/パフォーマンス情報領域214は、パフォーマンス分析アプリケーションによって受信されている選択された状態及び/またはパフォーマンス情報の視覚的表現を含む。受信したグラフィックスコマンド及び状態/パフォーマンス情報は、表示領域内にグラフィックス画像210を表示するために使用されることができる。
ウィンドウ203はまた、一つ以上のセレクタ212A乃至212Nを含む。アプリケーション開発者などのユーザは、これらのセレクタ212A乃至212Nの何れかを選択することができる。各セレクタ212A乃至212Nは、以下により詳細に説明するように、統計及びナビゲーション機能など、異なる機能と関連付けられることができる。ウィンドウ203はさらに、ユーザによってそれぞれ選択されることができる、セレクタ216A乃至216Nと218A乃至218Nを含む。各セレクタ216A乃至216Nと218A乃至218Nは、図10を参照して以下により詳細に説明するように、メトリック機能、オーバライド機能、及び/またはテクスチャ機能などの、異なる機能と関連付けられることができる。
アプリケーション開発者などのユーザは、ウィンドウ203内に表示された情報を変更することができる。例えば、ユーザは、グラフィックスコマンド領域208内に表示された命令の内の少なくとも一つ、または、状態/パフォーマンス情報領域214内の状態/パフォーマンス情報の何れか、を修正することができる。
そして、ウィンドウ20内でユーザによって開始された何れかの変更は、修正要求(例えば、図1に示した修正要求34)として、グラフィックスデバイスに、またはグラフィックスデバイス内に、送り返されることができる。そして、グラフィックスデバイスは、これらの修正を処理し、グラフィックスコマンド領域208及び/または状態/パフォーマンス情報領域214内にその後に表示されることができる、更新された命令及び/または情報を提供することができる。更新された命令及び/または情報はまた、表示領域211内にグラフィックス画像210の修正バージョンを表示するために使用されることもできる。
一例では、領域214内に表示されることができる状態及び/またはパフォーマンス情報は、グラフィックスコマンドの実行中に、潜在的なボトルネックを識別するために、グラフィックスデバイス(図2)または別体のアプリケーションコンピューティングデバイス(図1)であることができる、ディスプレイデバイス201を含むデバイスによって分析されることができる。最終的に、アプリケーション開発者などのユーザは、コマンドの実行を最適化するために、デバッグ処理中にウィンドウ203に表示される情報を見ることを望むことができる。状態及び/またはパフォーマンス情報の分析を通じて、潜在的なボトルネック及び可能な回避策は、一つ以上のサブウィンドウ又はポップアップウィンドウ内などのウィンドウ203内に、あるいはウィンドウ203の領域214内に、表示されることができる。
一例では、ウィンドウ203は、グラフィックスデバイス200から受信したグラフィックス命令のコールストリーム中で遭遇されるボトルネックに関するレポートを表示することができ、また、可能な回避策も表示することもできる。いくつかのケースでは、これらの可能な回避策は、ユーザへの「〜したらどうなるか(what-if)」シナリオとして提示されることができる。例えば、コールストリーム中で最適化されていない三角形リストをレンダリングすることは、三角形ストリップ最適化フレームワークを介してリストアップする前処理が二番目の可能なシナリオとして提示されることができるのに対して、一つの可能なシナリオとして提示されることができる。ユーザは、修正要求としてこれらの可能な回避策シナリオの何れかを選択することができ、修正要求は、その後、修正によって生成されるパフォーマンスが測定されることができる、グラフィックスデバイスに送信戻される。
そして、グラフィックスデバイスは、グラフィックスコマンド領域208及び/または状態/パフォーマンス情報領域214内に提示されることができる、更新されたコマンド/情報を送信する。そして、ユーザは、結果を見て、最適な解決策を特定するために、様々な潜在的な回避策の結果を比較することができる。ユーザは、自身のアプリケーションからボトルネックを除去するために取ることができる一連のステップを迅速に識別するために、この処理を使用することができる。
ユーザは、実験の目的で、または試験/エラーデバッグのために、ウィンドウ203内で調整を行うことを繰り返し続けることができる。ユーザは、表示領域211内に表示される画像やシーンの変化を識別するために、グラフィックスコマンドと状態/パフォーマンス情報の様々な異なる形態や組み合わせを実験することができる。ユーザは、ソースコードを再コンパイルし且つグラフィックスデバイス上でコンパイルされたコードを再実行しなければならないことなしに、コールストリームの一部であることができるグラフィックスコマンドとグラフィックスデバイスによって提供される状態とを、対話的に見て修正するために、ウィンドウ203の内容によって提供されるシミュレーション環境を使用することができる。
いくつかのケースでは、ユーザは、グラフィックス画像210の斜視図を修正するために、グラフィカルなカメラなどのグラフィカルなナビゲーションコントローラを操作するため、ボタン212A乃至212Nの内の少なくとも一つを操作することができる。そして、そのような操作は、グラフィックスデバイス200に送信戻される修正要求として取得されることができる。そして、グラフィックスデバイスによって提供された更新されたコマンド/情報は、グラフィックス画像210の斜視図を修正するために使用される。
いくつかのケースでは、様々なテクスチャ及び/または状態情報は、修正可能なエンティティとしてウィンドウ203の領域214中に提供されることができる。更に、ユーザは、例えば、グラフィックスコマンド領域208内の一つ以上の対応する命令が識別されるような、表示領域211内のグラフィックス画像210のピクセルを選択することさえもできる。この形態では、ユーザは、そのピクセル又はグラフィックス画像210の他の部分をレンダリングするため又は作成するために使用されるレンダリング命令又はコールに対して逆方向に、効果的に教え込むことができる。グラフィックスデバイス200上に提示されるとおり正確にウィンドウ203内に画像210をグラフィックス装置201が作成することができるので、ユーザは、(グラフィックスコマンド領域208に表示された様々なグラフィックス命令に基づくことができる)そのアプリケーションにおいて問題を迅速に分離することが可能であり、新しい効果を試作するために状態/パフォーマンス領域214内の任意の状態を修正することが可能である。
表示領域211内に表示される情報は、アプリケーション開発者に、グラフィックスデバイスのグラフィックス処理ユニットによる個々の2D又は3D要素の処理の属性の大規模なセットを測定し、可視化することを許すことができる。パフォーマンス分析アプリケーションは、画像210内の個々のレンダリングされた要素ごと(例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと)のパフォーマンス測定値の一つ以上の大規模なセットの取得を有効にすることができる。これから収集された情報は、ターゲットハードウェアプラットフォーム上でより効率的に実行するために、アプリケーションの設計やパフォーマンス特性を、開発者がより効果的に調整するのを助けることができる。
例えば、上述したように、表示領域211内にレンダリングされた画像210の各要素(例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと)は、要素をレンダリングするために実行されるドローコマンドのための指定されたパフォーマンスメトリックの計算されたメトリック値に基づいて、グラフィカル識別子を割り当てられることができる。計算されたメトリック値は、パフォーマンス分析アプリケーションによって受信されるパフォーマンス情報に基づいている。画像210の各要素が、図12を参照して前に詳細に説明したように、その割り当てられたグラフィカル識別子(例えば、色、シェーディング、クロスハッチング)に従って表示されるので、開発者は、所与のアプリケーションで提供されている特定のドローコマンドに従って要素をレンダリングすることパフォーマンス問題又は影響を迅速に特定することが可能である。
図10は、図1又は図2に示したパフォーマンス分析アプリケーションなどのパフォーマンス分析アプリケーションによって表示されることができる情報の別の例を示す概念図である。この例では、グラフィックスデバイス内に表示されるウィンドウ220は、種々の命令情報だけでなく、メトリック情報を含む。
例えば、グラフィックスコマンド領域208内には、様々なグラフィックスコマンド242が示される。グラフィックスコマンド242は、グラフィックスデバイスによって提供されるグラフィックスコマンドのサブセットであることができる。
図10の例で示されるように、グラフィックスコマンド242は、高レベル命令と低レベル命令の両方を含む。アプリケーション開発者などのユーザは、命令242のフルセットを見るために、スクロールバー244を使用することができる。ある高レベル命令は、低レベルAPI命令などの一つ以上の低レベル命令を含むことができる。アプリケーション開発者は、いくつかのケースでは、関連する高レベル命令の一部である、または関連する高レベル命令によって実行される、何れかの低レベル命令を見るために、特定の高レベル命令上で(例えば、クリックすることによるなど)選択することができる。
いくつかの例では、開発者は、画像210のグラフィックス要素をレンダリングするために実行される、領域208内のコマンドを見ることが可能である。いくつかのケースでは、画像210の特定の要素がグラフィカル識別子又は属性(例えば、計算されたパフォーマンスメトリック値に基づく色)で示されている場合、ユーザは、コマンド(複数可)が選択された要素をレンダリングするために実行されるグラフィックスコマンド領域208内での表示から、そのような要素を選択し、決定することが可能であることができる。いくつかのケースでは、コマンド自体は、エリア208内で、ユーザがレンダリングされた要素と特定のコマンドを関連付けることができるような、画像210のレンダリングされた要素と同じグラフィカル識別子と関連付けられることができる。そのような形態では、ユーザは、コマンドが画像210中の要素をレンダリングしたどのコマンドと関連付けられているかの、より良好な理解を持たせることが可能である。
様々な選択ボタンが、図10では、状態/パフォーマンス情報領域214の下に表示される。これらの選択ボタンは、テクスチャ(複数)ボタン236、オーバライドボタン238、及びメトリック(複数)ボタン240を含む。図10の例では、アプリケーション開発者は、メトリックボタン240を選択している。このボタンの選択で、様々なメトリックのオプションが表示されることができる。例えば、一つ以上のメトリックボタン234A乃至234Nが、状態/パフォーマンス領域214の上に表示されることができる。各メトリックボタン234A乃至234Nは、特定のメトリックに関連付けられることができる。いくつかのケースでは、これらのメトリックの内の少なくとも一つは、予め定義された又は構成されたメトリックタイプであることができ、いくつかのケースでは、アプリケーション開発者は、メトリックの内の少なくとも一つを選択する又はカスタマイズすることができる。例示のメトリックは、例えば、秒当たりのフレーム、%ビジー(一つ以上のプロセッサ用)、バスビジー、メモリビジー、頂点ビジー、秒当たりの頂点ビジー、秒当たりの三角形、秒当たりのピクセルクロック、秒当たりのフラグメント、頂点ごとに発行されたシェーダ命令、等々、の内の何れか一つ又は複数を含むことができる。アプリケーション開発者は、選択されたメトリックに関する追加詳細を見るために、メトリックボタン234A乃至234Nの内の何れかを選択することができる。
メトリックボタン234A乃至234Nの内の一つを選択することにより、開発者は、特定のコマンドのためのメトリック値を計算するための特定のパフォーマンスメトリックを選択または指定することが可能である。例えば、グラフィックス処理ユニットを含むグラフィックスデバイスからのドローコマンドとパフォーマンス情報とのグループの受信で、図1及び2に示したものなどのパフォーマンス分析アプリケーションは、受信パフォーマンス情報(例えば、グラフィックス処理ユニットのためのカウンタ)に基づいてコマンドのための指定されたメトリックのメトリック値を計算することが可能である。指定されたメトリックは、メトリックボタン234A乃至234Nの内の一つの選択に基づくことができる。
例えば、メトリックボタン234Aが秒当たりのフレーム数に関連付けられている場合、アプリケーション開発者は、グラフィックス画像210のための、パフォーマンスに関連する、秒当たりのフレーム数に関する追加詳細を見るためにメトリックボタン234Aを選択すること、又は、グラフィックス画像210の部分を選択することができる。開発者は、いくつかのケースでは、メトリックボタン234Aを選択する、または、状態/パフォーマンス情報エリア214中にメトリックボタン234Aをドラッグすることができる。秒当たりフレーム数の詳細情報については、状態/パフォーマンス情報領域214内に表示されることができる。開発者はまた、表示領域211中にメトリックボタン234Aをドラッグする、またはメトリックボタン234Aのアプリケーションのためのグラフィックス画像210の一部分を選択することもできる。例えば、開発者は、メトリックボタン234Aを選択した後にグラフィックス画像210の一部分を選択することができ、次に、その選択した部分の秒当たりのフレーム数の詳細情報が、状態/パフォーマンス情報領域2214内に表示されることができる。そのような形態では、開発者は、メトリックボタン234A乃至234Nの内の一つ以上の選択、更にはグラフィックス画像210又はその一部の選択さえも可能であるが、その選択に基づいて、異なるメトリックタイプの任意の数のためのパフォーマンスデータを見ることができる。
一例では、ウィンドウ220内に表示されることができるメトリックデータは、グラフィックスデバイスのグラフィックスドライバ(例えば、図5に示したグラフィックスドライバ18A)によって提供されることができる。このグラフィックスドライバは、ウィンドウ220内にメトリックデータとしてその後に表示されることができる各種データを提供するために、ハードウェアカウンタモジュール(例えば、図5のハードウェアカウンタモジュール114)及び/またはプロセッサ使用状況モジュール(例えば、図5のプロセッサ使用状況モジュール112)を実装することができる。
開発者はまた、いくつかのケースでは、テクスチャボタン236を選択することもできる。選択で、グラフィックス画像210に関連したテクスチャ情報の様々な形態が、グラフィックスデバイスによって表示されることができる。例えば、テクスチャ情報は、状態/パフォーマンス情報領域214内などのウィンドウ220内に表示されることができる。いくつかのケースでは、テクスチャ情報は、追加の(例えば、ポップアップ)ウィンドウ(図示せず)内に表示されることができる。開発者は、表示されるテクスチャ情報を見ることができるが、また、いくつかのケースでは、テクスチャ情報を修正することもできる。これらのケースでは、テクスチャ情報に対するどのような修正も、修正要求としてグラフィックスデバイスに伝播されることができる。グラフィックスデバイスからの更新されたコマンド/情報の受信で、グラフィックス画像に対する変更は、表示領域211内に表示されることができる。
開発者はまた、いくつかのケースでは、オーバライドボタン238を選択することもできる。オーバライドボタン238の選択の後、命令及び/または状態情報などの、ある情報が(例えば、ウィンドウ220又は別のウィンドウ内で)表示されることができるもので、これは開発者によって修正またはオーバライドされることができる。任意の修正またはオーバライドは、グラフィックスデバイスに送信される一つ以上の修正要求中に含まれることができる。一例では、グラフィックスデバイスは、任意の修正要求を処理するために、グラフィックスドライバ18A(図5)などのグラフィックスドライバを実装することができる。例えば、グラフィックスデバイスは、一つ以上のオーバライドを備えるそのような修正要求を処理するために、オーバライドモジュール120を使用することができる。
いくつかのケースでは、開発者は、グラフィックスコマンドの領域208内に示されるグラフィックスコマンド242上の一つ以上をオーバライドすることができる。これらのケースでは、開発者は、グラフィックスコマンド242の内の一つ以上を修正またはオーバライドするために、グラフィックスコマンド領域208内に情報をタイピングするか、別なふうに入力することができる。そして、これらの修正は、表示領域211内のグラフィックス画像210の表示を更新するために、更新コマンド/情報を提供するだろうグラフィックスデバイスに送信されることができる。開発者は、命令242によって提供される一つ以上の関数をオーバライドするために、グラフィックスコマンド242の、例えば、パラメータ、順序、種類、等々を変更することができる。
ウィンドウ220は更に、選択ボタン230及び232を含む。選択ボタン230は統計ボタンであり、選択ボタン232はナビゲーションボタンである。開発者は、グラフィックス画像210の表示に関連する統計情報を見るために、統計ボタン230を選択することができる。この統計情報は、一つ以上のグラフ、テーブル、または統計情報の他の形態を備えることができる。開発者は、様々なパフォーマンス又はグラフィックス画像210の表示に関連する他の関連の問題のより良い理解を得るために、統計情報を見ることができる。
開発者は、表示領域211内でナビゲートするためにナビゲーションボタン232を選択することができ、さらに場合によっては、表示領域211内でグラフィックス画像210の斜視図を変更することができる。例えば、ナビゲーションボタン232の選択で、3Dグラフィカルなカメラやナビゲーションコントローラが表示されることができる。開発者は、表示領域211内の任意のエリアにナビゲートするために、コントローラと対話することができる。開発者はまた、グラフィックス画像210を回転させる又はズームイン/アウトするなどの、グラフィックス画像210の斜視図を変更するために、コントローラを使用することができる。
一例では、ナビゲーションボタン232の選択及びグラフィカルなナビゲーションコントローラとの相互作用を介した任意の開発者起点の変更は、修正要求(例えば、図1に示した修正要求84の一部)として、グラフィックスデバイスに伝播されることができる。そして、グラフィックスデバイスによって提供された更新されたコマンド/情報は、グラフィックス画像210の表示(例えば、斜視図)を更新するために使用されることができる。さらに、更新された命令は、グラフィックスコマンド領域208内に表示されることができる。更新された状態/パフォーマンス情報はまた、状態/パフォーマンス情報領域214内に表示されることもできる。
その結果、開発者は、グラフィックス画像210をレンダリングして表示するための、代替の視点、方向、ビュー、等々が、グラフィックスデバイスのパフォーマンスや状態に、どのように影響を与えることができるかを、効果的且つ効率的に決定することができる。これは、ディスプレイデバイス201上に表示されるシミュレーション環境でグラフィックス画像210を作成してレンダリングするために使用されるグラフィックスコマンド242の最適化において開発者に非常に有用であり、グラフィックスデバイス上で表示されるグラフィックス画像に効果的であることができる。
図11は、幾つかの個々にレンダリングされた要素304(例えば、星)、306(例えば、円)、308(例えば、立方体)を含むグラフィカルシーンを示す例示画面図である。一般的には、グラフィックス要素は、一つ以上のドローコマンド、プリミティブ、頂点、ピクセル/ピクセルフラグメント、等々を備えることができる。例示グラフィックスシーンは、例えば、ビデオゲームアプリケーションなどのアプリケーションから取得することができるアニメーションのフレームを示している。グラフィックスシーンは、いくつかのケースでは、ウィンドウ203(図9)又はウィンドウ220(図10)内に含まれることができる、ウィンドウ300の内部に表示される。従って、これらのケースでは、グラフィックスシーンは、図1又は図2に示したパフォーマンス分析アプリケーションなどのパフォーマンス分析アプリケーションによって、グラフィックス要素(例えば、ドローコマンド)の処理中にレンダリングされることができる。
しかしながら、図11の図においては、パフォーマンス分析アプリケーションは、グラフィックス要素に関連するパフォーマンスメトリック値を表すグラフィカル識別子を使用してグラフィックス要素304、306、308をレンダリングしていない。この例では、要素ごとのデータ収集は、要素ごとのパフォーマンスメトリックがパフォーマンス分析アプリケーションによって計算されていない場合、レンダリングされた要素が特別なグラフィカル識別子または特徴(例えば、色、クロスハッチング、シェーディング)なしで表示されるような、有効でないことができる(例えば、図7における154のNO分岐を参照)。
ウィンドウ300は、表示領域(例えば、図9及び図10の表示領域211)内にグラフィックス要素304、306、308を表示する。グラフィックス要素304はシーン内の星であり;グラフィックス要素306はシーン内の円であり;グラフィックス素子308は立方体である。
ウィンドウ300は更に、グラフィックスコマンド領域302(例えば、図9及び図10のグラフィックスコマンド領域208)を含む。図11の例では、図10の領域208内に示したそれらなどの、様々な高レベルコマンド及び/または低レベルコマンド(例えば、「コマンド1」、「コマンド2」、「コマンド3」)が表示されることができる。いくつかのケースでは、シーン中のグラフィックス要素を描画するためにアプリケーションによって実行されるOpenGL ES APIコールのリストは、グラフィックスコマンド領域302中に表示されることができる。これらのOpenGL ES APIコールは、パフォーマンス分析アプリケーションによって実行されるとき、表示されるシーンの様々なグラフィックス要素をレンダリングするドローコールを備えることができる。一つの特定の例では、各ドローコールは、「glDrawElements」コールを備えることができるものであり、ここで、「glDrawElements」への各コールは、シーン内の個々のレンダリングされたオブジェクトに対応する。
レンダリングされた要素は、図11に示した様々なオブジェクトなどのオブジェクト、あるいは、その任意の部分(例えば、プリミティブ、頂点、ピクセルフラグメント、それらの組合せ)を備えることができる。いくつかのケースでは、レンダリングされた要素は、グラフィックスシーン内に表示される、個々のプリミティブ/頂点/ピクセル/フラグメント/等々を備えることができる。これらのケースでは、特定のドローコマンドは、実行で、これらのプリミティブ/頂点/ピクセル/フラグメント/等々の一つ以上をレンダリングすることができる。
図11はまた、状態情報(例えば、状態コール)を表示することが可能である領域314も示している。様々なOpenGL状態コールは、この領域中に表示されることができる。これらの状態コールの内の少なくとも一つは、領域302中に示した任意の特定のドローコマンドの発動の前に、パフォーマンス分析アプリケーションによって呼び出されることができる。状態コールは、ドローコマンドの少なくとも一つの実行のために必要とされることができる様々な状態パラメータを設定するために呼び出されることができる。
図12は、図11と同じであるが、割り当てられたグラフィカル識別子(例えば、色、シェーディング、クロスハッチング)に従って表示された個々にレンダリングされた要素を持つ、グラフィカルシーンを示す例示画面図である。この特定の例では、要素ごとのレンダリング及び/データ収集が有効にされている(例えば、図7中の154のYES分岐)。図12は、図11のシーンが取得されたパフォーマンスデータに従って今度はグラフィカルに提示されていることを除いて、図11と同じシーンを示している。
パフォーマンス分析アプリケーションは、領域302中に示したドローコマンドのそれぞれのためのグラフィックス処理ユニットからのパフォーマンスデータを収集し、収集されたパフォーマンスデータに基づいて指定されたパフォーマンスメトリックの値を計算している。パフォーマンス分析アプリケーションはまた、指定されたパフォーマンスメトリックの対応する計算値に基づいてグラフィックス要素のそれぞれに、グラフィカル識別子(例えば、色、シェーディング識別子、クロスハッチング識別子)を割り当て、グラフィックス要素に割り当てられたグラフィカル識別子に従ってレンダリングされた個々のグラフィックス要素304、306、308を表示している。一般的に、グラフィックス要素は、表示されたシーンのレンダリング中に処理または実行される、一つ以上の描画コマンド、プリミティブ、頂点、ピクセル/ピクセルフラグメント、等々、を備えることができる。パフォーマンス分析アプリケーションは、幾つかの異なるパフォーマンスメトリックのための各コマンドのそのようなメトリック値を計算することができる。
図12の例では、「メトリック1」の例示パフォーマンスメトリックが、メトリック領域320中に示されている。「メトリック1」は、例えば、シェーディングされたフラグメント又はクロックのパフォーマンスメトリックを備えることができる。「メトリック1」は、グラフィックス要素のメトリック値が特定のグラフィカル識別子でレンダリングされた要素を表示するために計算される、現在指定されているパフォーマンスメトリックである。
グラフィカル識別子が、図12の例に示すように、クロスハッチングの識別子を備える場合、パフォーマンス分析アプリケーションは、そのような要素が、描画するのに(例えば、より多くの処理、より高い帯域幅を必要とする)より多くの計算コストになり得ることを意味する、指定されたパフォーマンスメトリックのためのより高いメトリック値を持つならば、一つのクロスハッチング識別子(例えば、パターン)を使用して、ある要素をレンダリングすることができる。パフォーマンス分析アプリケーションは、要素が、描画するのに計算上安価になることを意味する、より低いメトリック値を持つ場合は、他のクロスハッチング識別子(例えば、パターン)を使用して、別の要素をレンダリングすることができる。
グラフィカル識別子が、別の例では、クロスハッチング識別子よりはむしろ色を備える場合には、パフォーマンス分析アプリケーションは、そのような要素が、描画するのに(例えば、より多くの処理、より高い帯域幅を必要とする)より多くの計算コストになり得ることを意味する、指定されたパフォーマンスメトリックのためのより高いメトリック値を持つならば、赤などの一つの色でレンダリングされた要素に色付けすることができる。パフォーマンス分析アプリケーションは、要素が、描画するのに計算上安価になることを意味する、より低いメトリック値を持つ場合は、緑などの別の色でレンダリングされた要素を色付けすることができる。
このようにメトリックデータを視覚化することは、ゲーム開発者に、例えば、デバイスが特定のシーンをどのようにレンダリングするかの迅速な調査を行うことを許すことができる。図12のシーンでは、要素306は、最も赤い色である、または、レンダリングするのにグラフィックス処理ユニット上で最もクロックサイクルを取ることを意味する特定のクロスハッチングパターンを持つことができる。
レンダリングされた要素は、図12に示した様々なオブジェクトなどのオブジェクトを備えることができる。いくつかのケースでは、レンダリングされた要素は、グラフィックスシーン内に表示される、個々のプリミティブ、頂点、ピクセル/ピクセルフラグメント、等々、を備えることができる。そのようなケースでは、より大きなオブジェクトよりはむしろグラフィックスシーン内の要素は、シーンのレンダリング中に要素の処理に基づいて、あるメトリック値に関連付けられているグラフィカル識別子(例えば、色、シェーディング、クロスハッチング識別子)を使用して表示されることができる。したがって、ユーザは、要素ごと単位(例えば、ドローコマンドごと、グラフィックスプリミティブごと、頂点ごと、ピクセルフラグメントごと)でパフォーマンスメトリックデータを見て、どの要素がレンダリングするのに計算コストがより高くなるか評価することが可能である。
領域320は、特定のコマンドに関連付けられている個々の水平棒グラフを示している。各棒グラフは、対応するコマンドのための計算されたメトリック値の表現を備える。例えば、「コマンド1」は、「メトリック1」のための特定の計算メトリック値を持ち、領域320中の対応するバーグラフは、この値のグラフィカル表現を提供する。示すように、ドローコマンド「コマンド1」、「コマンド2」及び「コマンド3」のそれぞれは、メトリック「トリック1」(例えば、フラグメントシェーディングメトリック、クロックメトリック)のそれらに対応するメトリック値のためのバーグラフ表現を含む。
個々の棒グラフのそれぞれはまた、パフォーマンス分析アプリケーションによって対応するコマンドに割り当てられているグラフィカル識別子に従って表示されることもできる。従って、グラフィックスコマンド「コマンド1」が、このコマンドの実行がこのメトリックのための計算コストが高くなり得ることを示す「メトリック1」のための特定のクロスハッチング識別子(例えば、パターン)を割り当てられている場合には、(例えば、「コマンド1」の右側に配置された)領域320中の「コマンド1」のための対応する棒グラフはまた、同じクロスハッチング識別子を使用して表示される又は表現されることもできる。そのような形態で、ユーザは、対応するメトリック値と特定のコマンドを関連付けることが可能である。素子308もまたこの例では同じクロスハッチング識別子で表示または表現されると仮定すると、ユーザは、レンダリングされた要素が特定のコマンド(例えば、「コマンド1」)でレンダリングされた又は別なふうに関連付けられたかを判断することが可能であり、そして、それら関連付けられた識別子に基づいて計算コストが高くなるそれらの要素/コマンドを迅速に識別することが可能である。いくつかのケースでは、ユーザは、計算されたメトリックの数値を見るために、棒グラフをクリックする又は選択することができる。
図12の例では、「コマンド1」は素子308をレンダリングするために実行されることができ、「コマンド2」は要素304をレンダリングするために実行されることができ、「コマンド3」は要素306をレンダリングするために実行されることができる。「メトリック1」のための領域320中の対応する棒グラフによって示されるように、(対応する素子308のための)「コマンド1」は、対応する棒グラフの長さの場合、(対応する要素304のための)「コマンド2」よりも、レンダリングするにより多くの計算コストがかかることができる。(対応する要素304のための)「コマンド2」は、(対応する要素306のための)「コマンド3」よりも、レンダリングするのにより多くの計算コストがかかることができる。
この開示に記載されている技法は、汎用マイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等のロジックデバイス内に実装されることができる。従って、本明細書中で使用されるような用語「プロセッサ」または「コントローラ」、前述の構造または本明細書に記載された技法の実装に適した任意の他の構造の内の少なくとも一つを指すことができる。
図示した様々なコンポーネントは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせ、の任意の適切な組み合わせによって実現されることができる。図では、様々なコンポーネントが別々のユニットまたはモジュールとして描かれている。しかしながら、これらの図を参照して説明した様々なコンポーネントの全ての又はいくつかは、共通のハードウェア及び/またはソフトウェア内で結合されたユニット又はモジュール内に組み込まれことができる。従って、コンポーネント、ユニット又はモジュールとしての特徴の表現は、図示の便宜のために特定の機能的特徴を強調することを意図したるものであり、必ずしも個別のハードウェア又はソフトウェアコンポーネントによってこのような特徴の実現を必要とはしない。いくつかのケースでは、様々なユニットは、一つ以上のプロセッサによって実行されるプログラム可能な処理として実装されることができる。
グラフィックスデバイス100及び/またはそれを構成するコンポーネントを含む、モジュール、デバイス、またはコンポーネントなどの、本明細書中に記載された特徴は、統合されたロジックデバイス中に一緒に実装される、または、ディスクリートであるが相互運用可能なロジックデバイスとして別個にされることができる。様々な態様で、そのようなコンポーネントは、集積回路チップ又はチップセットなどの集積回路デバイスとして総称されることができる、一つ以上の集積回路デバイスとして少なくとも部分的に形成されることができる。そのような回路は、単一の集積回路チップデバイス中または複数の相互運用可能な集積回路チップデバイス中に提供されることができ、様々な画像、ディスプレイ、オーディオ、またはその他のマルチメディアアプリケーションやデバイスの何れかで使用されることができる。いくつかの態様において、例えば、そのようなコンポーネントは、無線通信デバイスハンドセットなどのモバイルデバイスの一部を形成することができる。
ソフトウェアで実装される場合、上記技法、一つ以上のプロセッサによって実行されるとき、上述した方法の内の少なくとも一つを行う、命令を有するコードを備えるコンピュータ可読データ記憶媒体によって少なくとも部分的に実現されることができる。コンピュータ可読媒体は、梱包材を含むことができるコンピュータプログラム製品の一部を形成することができる。コンピュータ可読媒体は、同期ダイナミック・ランダム・アクセスメモリ(SDRAM)などのランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、不揮発性ランダム・アクセス・メモリ(NVRAM)、電気的に消去可能なプログラマブル・リードオンリ・メモリ(EEPROM)、埋め込みダイナミック・ランダム・アクセス・メモリ(eDRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)、フラッシュ・メモリ、磁気または光データ記憶媒体、を備えることができる。
上記技法更に、または代わりに、命令またはデータ構造の形でコードを運ぶ又は通信し、且つ、一つ以上のプロセッサによってアクセスされ、読み込まれ及び/または実行されることができる、コンピュータ可読通信媒体によって少なくとも部分的に実現されることができる。何れの接続もコンピュータ可読媒体と適切に呼ばれることができる。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または、赤外線、無線及びマイクロ波などのワイヤレス技術、を使用して、ウェブサイト、サーバまたは他のリモートソースから送信される場合には、それら同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線(DSL)、または、赤外線、無線及びマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。利用される何れのソフトウェアも、一つ以上のDSP、汎用マイクロプロセッサ、ASIC、FPGA、または他の同等の集積またはディスクリートロジック回路などの、一つ以上のプロセッサによって実行されることができる。
様々な態様が、本開示中に記載されている。これらの及び他の態様は、以下の特許請求の範囲の範囲内である。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
(1) グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
コンピューティングユニットによって、上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
を備える、方法。
(2) 上記パフォーマンス情報を受信することは、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信することを備える、(1)の方法。
(3) 上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、(1)の方法。
(4) 選択可能なパフォーマンスメトリックの表現を表示することと、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けることと、
を更に備える、(1)の方法。
(5) 上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定すること、
を更に備え、
上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てることを備える、(1)の方法。
(6) 上記ドローコマンドにグラフィカル識別子を割り当てることは、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てることを備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、(1)の方法。
(7) 上記グラフィックス要素を表示することは、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示することを備える、(6)の方法。
(8) 上記グラフィックス処理ユニットは、上記コンピューティングデバイス内に含まれる、(1)の方法。
(9) 上記パフォーマンス情報を受信することは、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信することを備え、上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定することを備える、(8)の方法。
(10) 上記グラフィックス処理ユニットは、上記コンピューティングデバイスから物理的に別個であるモバイルデバイス内に含まれる、(1)の方法。
(11) 上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第1の値を決定することと、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第2の値を決定することと、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第1の値と上記第2の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定することと、
を更に備える、(1)の方法。
(12) ディスプレイデバイスと、及び
グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
上記ディスプレイデバイス上に上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
を行うように構成される、上記ディスプレイデバイスに結合された一つ以上のプロセッサと、
を備える、デバイス。
(13) 上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信することによって、上記パフォーマンス情報を受信するように構成される、(12)のデバイス。
(14) 上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、(12)のデバイス。
(15) 上記一つ以上のプロセッサは、
上記ディスプレイデバイス上に、選択可能なパフォーマンスメトリックの表現を表示することと、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けることと、
を行うように更に構成される、(12)のデバイス。
(16) 上記一つ以上のプロセッサは、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するように更に構成され、上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てることを備える、(12)のデバイス。
(17) 上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記グラフィックス要素に色を割り当てることによって、上記ドローコマンドにグラフィカル識別子を割り当てるように構成され、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、(12)のデバイス。
(18) 上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示することによって、上記グラフィックス要素を表示するように構成される、(17)のデバイス。
(19) 上記グラフィックス処理ユニットは、上記コンピューティングデバイス内に含まれる、(12)のデバイス。
(20) 上記パフォーマンス情報は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を備え、上記グラフィックス要素は、ピクセルフラグメントを備え、及び上記一つ以上のプロセッサは、少なくとも、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるために上記デバイス中のブレンディングハードウェアを使用することにより上記グラフィカル識別子を決定することによって、上記グラフィックス要素に上記グラフィカル識別子を割り当てるように構成される、(19)のデバイス。
(21) 上記グラフィックス処理ユニットは、別の、物理的に別個なデバイス内に含まれる、(12)のデバイス。
(22) 上記一つ以上のプロセッサは、
上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第1の値を決定することと、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第2の値を決定することと、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第1の値と上記第2の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定することと、
を行うように更に構成される、(12)のデバイス。
(23) 上記デバイスは、無線通信デバイスハンドセットを備える、(12)のデバイス。
(24) 上記デバイスは、一つ以上の集積回路デバイスを備える、(12)のデバイス。
(25) グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信するための手段であって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信するための手段と、
上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算するための手段であって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算するための手段と、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てるための手段であって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てるための手段と、及び
上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示するための手段と、
を備える、デバイス。
(26) 上記パフォーマンス情報を受信するための手段は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための手段を備える、(25)のデバイス。
(27) 上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、(25)のデバイス。
(28) 選択可能なパフォーマンスメトリックの表現を表示するための手段と、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けるための手段と、
を更に備える、(25)のデバイス。
(29) 上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するための手段を更に備え、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段は、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段を備える、(25)のデバイス。
(30) 上記ドローコマンドにグラフィカル識別子を割り当てるための手段は、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てるための手段を備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、(25)のデバイス。
(31) 上記グラフィックス要素を表示するための手段は、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示するための手段を備える、(30)のデバイス。
(32) 上記パフォーマンス情報を受信するための手段は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための手段を備え、上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段は、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定するための手段を備える、(25)のデバイス。
(33) 上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第1の値を決定するための手段と、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第2の値を決定するための手段と、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第1の値と上記第2の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定するための手段と、
を更に備える、(25)のデバイス。
(34) 一つ以上のプログラマブルプロセッサに、
グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
を行わせるための命令を備える、コンピュータ可読記憶媒体。
(35) 上記パフォーマンス情報を受信するための命令は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための命令を備える、(34)のコンピュータ可読記憶媒体。
(36) 上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、(34)のコンピュータ可読記憶媒体。
(37) 選択可能なパフォーマンスメトリックの表現を表示するための命令と、及び
上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けるための命令と、
を更に備える、(34)のコンピュータ可読記憶媒体。
(38) 上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するための命令を更に備え、
上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令は、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令を備える、
(34)のコンピュータ可読記憶媒体。
(39) 上記ドローコマンドにグラフィカル識別子を割り当てるための命令は、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てるための命令を備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、(34)のコンピュータ可読記憶媒体。
(40) 上記グラフィックス要素を表示するための命令は、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示するための命令を備える、(39)のコンピュータ可読記憶媒体。
(41) 上記パフォーマンス情報を受信するための命令は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための命令を備え、上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令は、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定するための命令を備える、(34)のコンピュータ可読記憶媒体。
(42) 上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第1の値を決定するための命令と、
上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第2の値を決定するための命令と、及び
上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第1の値と上記第2の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定するための命令と、
を更に備える、(34)のコンピュータ可読記憶媒体。

Claims (38)

  1. グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
    コンピューティングデバイスによって、上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
    上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
    上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
    備え、
    上記パフォーマンス情報を受信することは、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信することを備える、方法。
  2. 上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、請求項1の方法。
  3. 選択可能なパフォーマンスメトリックの表現を表示することと、及び
    上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けることと、
    を更に備える、請求項1の方法。
  4. 上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定すること、
    を更に備え、
    上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てることを備える、請求項1の方法。
  5. 上記グラフィックス要素にグラフィカル識別子を割り当てることは、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てることを備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、請求項1の方法。
  6. 上記グラフィックス要素を表示することは、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示することを備える、請求項の方法。
  7. 上記グラフィックス処理ユニットは、上記コンピューティングデバイス内に含まれる、請求項1の方法。
  8. 上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定することを備える、請求項の方法。
  9. 上記グラフィックス処理ユニットは、上記コンピューティングデバイスから物理的に別個であるモバイルデバイス内に含まれる、請求項1の方法。
  10. 上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第1の値を決定することと、
    上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第2の値を決定することと、及び
    上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第1の値と上記第2の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定することと、
    を更に備える、請求項1の方法。
  11. ディスプレイデバイスと、及び
    グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
    上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
    上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
    上記ディスプレイデバイス上に上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
    を行うように構成される、上記ディスプレイデバイスに結合された一つ以上のプロセッサと、
    備え、
    上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信することによって、上記パフォーマンス情報を受信するように構成される、デバイス。
  12. 上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、請求項11のデバイス。
  13. 上記一つ以上のプロセッサは、
    上記ディスプレイデバイス上に、選択可能なパフォーマンスメトリックの表現を表示することと、及び
    上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けることと、
    を行うように更に構成される、請求項11のデバイス。
  14. 上記一つ以上のプロセッサは、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するように更に構成され、上記グラフィックス要素に上記グラフィカル識別子を割り当てることは、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てることを備える、請求項11のデバイス。
  15. 上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記グラフィックス要素に色を割り当てることによって、上記グラフィックス要素にグラフィカル識別子を割り当てるように構成され、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、請求項11のデバイス。
  16. 上記一つ以上のプロセッサは、少なくとも、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示することによって、上記グラフィックス要素を表示するように構成される、請求項15のデバイス。
  17. 上記グラフィックス処理ユニットは、当該デバイス内に含まれる、請求項11のデバイス。
  18. 上記グラフィックス要素は、ピクセルフラグメントを備え、及び上記一つ以上のプロセッサは、少なくとも、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるために上記デバイス中のブレンディングハードウェアを使用することにより上記グラフィカル識別子を決定することによって、上記グラフィックス要素に上記グラフィカル識別子を割り当てるように構成される、請求項17のデバイス。
  19. 上記グラフィックス処理ユニットは、別の、物理的に別個なデバイス内に含まれる、請求項11のデバイス。
  20. 上記一つ以上のプロセッサは、
    上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第1の値を決定することと、
    上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第2の値を決定することと、及び
    上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第1の値と上記第2の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定することと、
    を行うように更に構成される、請求項11のデバイス。
  21. 上記デバイスは、無線通信デバイスハンドセットを備える、請求項11のデバイス。
  22. 上記デバイスは、一つ以上の集積回路デバイスを備える、請求項11のデバイス。
  23. グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信するための手段であって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信するための手段と、
    上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算するための手段であって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算するための手段と、
    上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てるための手段であって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てるための手段と、及び
    上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示するための手段と、
    備え、
    上記パフォーマンス情報を受信するための手段は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための手段を備える、デバイス。
  24. 上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、請求項23のデバイス。
  25. 選択可能なパフォーマンスメトリックの表現を表示するための手段と、及び
    上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けるための手段と、
    を更に備える、請求項23のデバイス。
  26. 上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するための手段を更に備え、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段は、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段を備える、請求項23のデバイス。
  27. 上記グラフィックス要素にグラフィカル識別子を割り当てるための手段は、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てるための手段を備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、請求項23のデバイス。
  28. 上記グラフィックス要素を表示するための手段は、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示するための手段を備える、請求項27のデバイス。
  29. 上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための手段は、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定するための手段を備える、請求項23のデバイス。
  30. 上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第1の値を決定するための手段と、
    上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第2の値を決定するための手段と、及び
    上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第1の値と上記第2の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定するための手段と、
    を更に備える、請求項23のデバイス。
  31. 一つ以上のプログラマブルプロセッサに、
    グラフィックス処理ユニットによって提供されるパフォーマンス情報を受信することであって、上記パフォーマンス情報が、グラフィックスシーンをレンダリングするための個々のグラフィックス要素と関連して、上記グラフィックス処理ユニットによって測定される、パフォーマンス情報を受信することと、
    上記パフォーマンス情報に基づいて上記グラフィックス要素のためのパフォーマンスメトリックの値を計算することであって、それぞれの計算値が上記グラフィックス要素の少なくとも一つに関連付けられている、パフォーマンスメトリックの値を計算することと、
    上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素にグラフィカル識別子を割り当てることであって、上記グラフィカル識別子の一つが上記グラフィックス要素のそれぞれに割り当てられる、グラフィカル識別子を割り当てることと、及び
    上記グラフィックスシーンをレンダリングするときに、上記グラフィックス要素に割り当てられた上記グラフィカル識別子に従って、上記グラフィックス要素を表示することと、
    を行わせるための命令を備え、
    上記パフォーマンス情報を受信するための命令は、上記グラフィックス要素のそれぞれのために上記グラフィックス処理ユニットによって収集され提供される一つ以上のカウンタの値を受信するための命令を備える、コンピュータ可読記憶媒体。
  32. 上記グラフィックス要素のそれぞれは、上記グラフィックスシーン、グラフィックスプリミティブ、頂点、またはピクセルフラグメントをレンダリングするための一つ以上のドローコマンドを備える、請求項31のコンピュータ可読記憶媒体。
  33. 選択可能なパフォーマンスメトリックの表現を表示するための命令と、及び
    上記パフォーマンスメトリックとして上記選択可能なパフォーマンスメトリックの一つのユーザ選択を受けるための命令と、
    を更に備える、請求項31のコンピュータ可読記憶媒体。
  34. 上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて上記パフォーマンスメトリックの値の範囲を決定するための命令を更に備え、
    上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令は、上記値の範囲内の上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値の位置に基づいて、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令を備える、
    請求項31のコンピュータ可読記憶媒体。
  35. 上記グラフィックス要素にグラフィカル識別子を割り当てるための命令は、上記グラフィックス要素のための上記パフォーマンスメトリックの上記計算値に基づいて、上記グラフィックス要素に色を割り当てるための命令を備え、上記色の一つが、上記グラフィックス要素のそれぞれに割り当てられる、請求項31のコンピュータ可読記憶媒体。
  36. 上記グラフィックス要素を表示するための命令は、上記グラフィックス要素に割り当てられた上記色に従って上記個々のグラフィックス要素を表示するための命令を備える、請求項35のコンピュータ可読記憶媒体。
  37. 上記グラフィックス要素は、ピクセルフラグメントを備え、及び、上記グラフィックス要素に上記グラフィカル識別子を割り当てるための命令は、上記一つ以上のカウンタの上記値に基づいて上記ピクセルフラグメントの内の複数を組み合わせるためにブレンディングを使用することにより上記グラフィカル識別子を決定するための命令を備える、請求項31のコンピュータ可読記憶媒体。
  38. 上記グラフィックス処理ユニットによって上記グラフィックス要素の少なくとも一つを処理する前に、上記グラフィックス処理ユニットの少なくとも一つのカウンタの少なくとも第1の値を決定するための命令と、
    上記グラフィックス処理ユニットによって上記少なくとも一つのグラフィックス要素の処理に続けて、上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも第2の値を決定するための命令と、及び
    上記グラフィックス処理ユニットの上記少なくとも一つのカウンタの少なくとも上記第1の値と上記第2の値との差に基づいて、上記少なくとも一つのグラフィックス要素のための上記パフォーマンス情報を決定するための命令と、
    を更に備える、請求項31のコンピュータ可読記憶媒体。
JP2012514092A 2009-06-02 2010-06-02 レンダリングされたグラフィックス要素のためのパフォーマンスメトリックの視覚的表現の表示 Expired - Fee Related JP5437485B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US18347609P 2009-06-02 2009-06-02
US61/183,476 2009-06-02
US12/791,239 2010-06-01
US12/791,239 US8471858B2 (en) 2009-06-02 2010-06-01 Displaying a visual representation of performance metrics for rendered graphics elements
PCT/US2010/037103 WO2010141612A1 (en) 2009-06-02 2010-06-02 Displaying a visual representation of performance metrics for rendered graphics elements

Publications (2)

Publication Number Publication Date
JP2012529120A JP2012529120A (ja) 2012-11-15
JP5437485B2 true JP5437485B2 (ja) 2014-03-12

Family

ID=42739151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012514092A Expired - Fee Related JP5437485B2 (ja) 2009-06-02 2010-06-02 レンダリングされたグラフィックス要素のためのパフォーマンスメトリックの視覚的表現の表示

Country Status (7)

Country Link
US (1) US8471858B2 (ja)
EP (1) EP2438576B1 (ja)
JP (1) JP5437485B2 (ja)
KR (1) KR101286318B1 (ja)
CN (1) CN102449665B (ja)
TW (1) TW201108152A (ja)
WO (1) WO2010141612A1 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8228338B1 (en) * 2006-11-03 2012-07-24 Nvidia Corporation Hardware override of application programming interface programmed state
US8438199B1 (en) * 2009-09-10 2013-05-07 Bentley Systems, Incorporated System and method for identifying and highlighting a graphic element
US8692836B2 (en) * 2009-10-08 2014-04-08 Ocz Technology Group, Inc. Computer system and processing method utilizing graphics processing unit with ECC and non-ECC memory switching capability
US8587594B2 (en) * 2010-05-21 2013-11-19 International Business Machines Corporation Allocating resources based on a performance statistic
US8629867B2 (en) 2010-06-04 2014-01-14 International Business Machines Corporation Performing vector multiplication
US9373186B2 (en) * 2010-06-14 2016-06-21 Nintendo Co., Ltd. Device and method utilizing animated frames to dynamically create snapshots for selectable menus
US8692825B2 (en) 2010-06-24 2014-04-08 International Business Machines Corporation Parallelized streaming accelerated data structure generation
US9092873B2 (en) * 2011-02-03 2015-07-28 L-3 Communications Corporation Rasterizer packet generator for use in graphics processor
US10162491B2 (en) 2011-08-12 2018-12-25 Otoy Inc. Drag and drop of objects between applications
US20130275430A1 (en) * 2011-10-06 2013-10-17 Jerald Hammann System and Method for Visually Representing Data
US8935671B2 (en) * 2011-10-11 2015-01-13 Apple Inc. Debugging a graphics application executing on a target device
CN103164121B (zh) * 2011-12-19 2016-07-06 腾讯科技(深圳)有限公司 一种终端软件界面展示的方法和装置
US8839039B2 (en) * 2012-01-24 2014-09-16 Nvidia Corporation Initialization of GPU using ROM-based initialization unit and programmable microcontroller
US10535185B2 (en) * 2012-04-04 2020-01-14 Qualcomm Incorporated Patched shading in graphics processing
KR101428577B1 (ko) * 2012-08-06 2014-08-11 동명대학교산학협력단 적외선 동작 인식 카메라를 사용하여 화면상에 네추럴 유저 인터페이스 기반 입체 지구본을 제공하는 방법
US8982137B2 (en) 2012-12-18 2015-03-17 Google Technology Holdings LLC Methods and systems for overriding graphics commands
US9214005B2 (en) * 2012-12-18 2015-12-15 Google Technology Holdings LLC Methods and systems for overriding graphics commands
US9137320B2 (en) * 2012-12-18 2015-09-15 Google Technology Holdings LLC Methods and systems for overriding graphics commands
DE102013201377A1 (de) * 2013-01-29 2014-07-31 Bayerische Motoren Werke Aktiengesellschaft Verfahren und Vorrichtung zum Verarbeiten von 3d-Bilddaten
US9589314B2 (en) * 2013-04-29 2017-03-07 Qualcomm Incorporated Query processing for tile-based renderers
US9177413B2 (en) * 2013-06-26 2015-11-03 Nvidia Corporation Unique primitive identifier generation
US20150042641A1 (en) * 2013-08-12 2015-02-12 Travis T. Schluessler Techniques to automatically adjust 3d graphics application settings
US10843084B2 (en) * 2013-10-30 2020-11-24 Nvidia Corporation Method and system for gathering time-varying metrics
US10878770B2 (en) 2013-12-02 2020-12-29 Nvidia Corporation Method and system for customizing optimal settings using end-user preferences
CN103785174B (zh) * 2014-02-26 2016-08-17 北京智明星通科技有限公司 一种游戏同一屏幕显示万人的方法和系统
US9846607B2 (en) 2015-03-12 2017-12-19 Nvidia Corporation Method and system for associating crash reports with end user analytics
US9551579B1 (en) * 2015-08-07 2017-01-24 Google Inc. Automatic connection of images using visual features
US10002400B2 (en) * 2016-03-30 2018-06-19 Change Healthcare Holdings, Llc Method and apparatus for dynamic generation of vector graphics
US10410313B2 (en) * 2016-08-05 2019-09-10 Qualcomm Incorporated Dynamic foveation adjustment
GB2555586B (en) * 2016-10-31 2019-01-02 Imagination Tech Ltd Performance profiling in a graphics unit
US20180225420A1 (en) * 2017-02-09 2018-08-09 Banyan Medical Systems, Inc. Medical Data Sharing in a Replicated Environment
US10475149B2 (en) * 2017-09-25 2019-11-12 Intel Corporation Policies and architecture to dynamically offload VR processing to HMD based on external cues
US10529219B2 (en) 2017-11-10 2020-01-07 Ecolab Usa Inc. Hand hygiene compliance monitoring
CN108089862B (zh) * 2017-12-15 2021-03-19 东南大学 一种OpenGL ES 3D应用的裁剪与合成方法
CN109413337A (zh) * 2018-08-30 2019-03-01 北京达佳互联信息技术有限公司 视频渲染方法、装置、电子设备及存储介质
KR102649351B1 (ko) * 2018-11-06 2024-03-20 삼성전자주식회사 세분화된 상태들에 기초한 그래픽스 프로세서 및 그래픽스 처리 방법
CN109697157A (zh) * 2018-12-12 2019-04-30 中国航空工业集团公司西安航空计算技术研究所 一种基于数据流模型的gpu性能统计分析方法
CN109966742B (zh) * 2019-03-21 2022-08-26 深圳市腾讯信息技术有限公司 游戏运行中获取渲染性能数据的方法及装置
US10818067B1 (en) * 2019-05-31 2020-10-27 Texas Instruments Incorporated GPU assist using DSP pre-processor system and method
US11010863B2 (en) 2019-09-27 2021-05-18 Apple Inc. Bindpoint emulation
CN111144057B (zh) * 2019-12-30 2023-09-15 西安芯瞳半导体技术有限公司 图形渲染管线的性能分析方法、装置及计算机存储介质
CN111831284B (zh) * 2020-07-29 2023-08-08 网易(杭州)网络有限公司 渲染调试方法、装置及设备
US11368408B2 (en) * 2020-08-27 2022-06-21 Red Hat, Inc. Dynamic visualization of requests traveling through a microservice mesh
CN113467869A (zh) * 2021-06-22 2021-10-01 中科曙光国际信息产业有限公司 数据渲染方法、装置、计算机设备和存储介质
CN117011444B (zh) * 2023-10-07 2024-01-02 芯动微电子科技(武汉)有限公司 一种gpu分块渲染的性能分析方法及系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5894308A (en) 1996-04-30 1999-04-13 Silicon Graphics, Inc. Interactively reducing polygon count in three-dimensional graphic objects
US5903278A (en) * 1996-08-02 1999-05-11 Hewlett-Packard Company Primitive colorization of three dimensional graphics to provide feedback to a developer
JP2002503854A (ja) 1998-02-17 2002-02-05 サン・マイクロシステムズ・インコーポレーテッド ポリゴンのためのグラフィックス・システム・パフォーマンスの推定
US6567091B2 (en) 2000-02-01 2003-05-20 Interactive Silicon, Inc. Video controller system with object display lists
US6952206B1 (en) 2002-08-12 2005-10-04 Nvidia Corporation Graphics application program interface system and method for accelerating graphics processing
TWI220096B (en) 2003-07-28 2004-08-01 Realtek Semiconductor Corp Image processing device and method thereof
US7511718B2 (en) 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US7903116B1 (en) * 2003-10-27 2011-03-08 Nvidia Corporation Method, apparatus, and system for adaptive performance level management of a graphics system
WO2008004135A2 (en) * 2006-01-18 2008-01-10 Lucid Information Technology, Ltd. Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US20080074428A1 (en) * 2003-11-19 2008-03-27 Reuven Bakalash Method of rendering pixel-composited images for a graphics-based application running on a computing system embodying a multi-mode parallel graphics rendering system
ATE534114T1 (de) 2004-05-14 2011-12-15 Nvidia Corp Programmierbarer prozessor mit geringem stromverbrauch
US7250953B2 (en) 2004-05-14 2007-07-31 Nvidia Corporation Statistics instrumentation for low power programmable processor
US7952588B2 (en) * 2006-08-03 2011-05-31 Qualcomm Incorporated Graphics processing unit with extended vertex cache
US7415385B2 (en) * 2006-11-29 2008-08-19 Mitsubishi Electric Research Laboratories, Inc. System and method for measuring performances of surveillance systems
US8448067B2 (en) 2006-12-07 2013-05-21 Sony Computer Entertainment America, LLC Graphics command management tool and methods for analyzing performance for command changes before application modification
US8022958B2 (en) * 2007-04-04 2011-09-20 Qualcomm Incorporated Indexes of graphics processing objects in graphics processing unit commands
US8284205B2 (en) * 2007-10-24 2012-10-09 Apple Inc. Methods and apparatuses for load balancing between multiple processing units

Also Published As

Publication number Publication date
EP2438576A1 (en) 2012-04-11
US8471858B2 (en) 2013-06-25
JP2012529120A (ja) 2012-11-15
CN102449665A (zh) 2012-05-09
KR20120026116A (ko) 2012-03-16
WO2010141612A1 (en) 2010-12-09
TW201108152A (en) 2011-03-01
EP2438576B1 (en) 2016-08-31
CN102449665B (zh) 2014-07-16
US20110018884A1 (en) 2011-01-27
KR101286318B1 (ko) 2013-07-15

Similar Documents

Publication Publication Date Title
JP5437485B2 (ja) レンダリングされたグラフィックス要素のためのパフォーマンスメトリックの視覚的表現の表示
US8587593B2 (en) Performance analysis during visual creation of graphics images
US8448067B2 (en) Graphics command management tool and methods for analyzing performance for command changes before application modification
US7548244B2 (en) Interactive debugging and monitoring of shader programs executing on a graphics processor
KR101267120B1 (ko) 성능 분석 동안 관련된 그래픽스 데이터에 대한 그래픽스 명령들의 매핑
US20220292759A1 (en) Ray tracing hardware acceleration for supporting motion blur and moving/deforming geometry
JP5450624B2 (ja) グラフィックス・イメージのビジュアル作成におけるパフォーマンス解析
CN111986304A (zh) 使用射线追踪和光栅化的结合来渲染场景
US20210065422A1 (en) Graphics processing
JP5242788B2 (ja) グラフィックス・イメージングのためのパーティション・ベースのパフォーマンス解析
Nah et al. L-Bench: An Android benchmark set for low-power mobile GPUs

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130415

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130423

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130610

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130617

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130920

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130930

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131022

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131211

R150 Certificate of patent or registration of utility model

Ref document number: 5437485

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees