説明

遠隔グラフィック装置を分析及びパフォーマンス調整するクライアントサーバシステム

【課題】遠隔装置上で実行されているグラフィックアプリケーションの性能分析及びデバッグに使用されるデータ通信プロトコル及びクライアントサーバアーキテクチャを提供すること。
【解決手段】遠隔装置は携帯型のビデオゲームコンソール、携帯電話機、或いは集合装置としてもよいし、パーソナルコンピュータシステムとしてもよい。グラフィックアプリケーションデバッガは、ホストコンポーネントとターゲットコンポーネントとを含む。ホストコンポーネントは、ホストシステム上で実行され、開発者にデバッグインタフェースを提示する。ターゲットコンポーネントは、対象装置上のグラフィックパイプラインの性能に関するデータを記録し、そのデータを通信回線を通じてホストシステムに送信する。ターゲットコンポーネントは、グラフィックデバイスドライバの計装バージョンの一部として含まれていてもよい。

【発明の詳細な説明】
【技術分野】
【0001】
[0001]本発明の実施形態は、コンピュータグラフィックに関し、より詳細には、遠隔装置で実行されているグラフィックアプリケーションを分析及びパフォーマンス調整する通信プロトコル及びクライアントサーバシステムに関する。
【背景技術】
【0002】
[0002]用語「レンダリング」は、物体や背景を描いた画像をコンピュータで作成するときにコンピュータソフトウェア及びハードウェアによって実行される処理を意味する。一般に、グラフィックハードウェアは、各フレームに指定されている図形要素集合に対してオブジェクト幾何学演算、頂点演算、及びラスター演算を実行することで連続するフレームを生成するグラフィックパイプラインを含んでいる。グラフィックパイプラインは、設定を大幅に変更できることが多い。例えば、グラフィックパイプラインは、特に、様々なシェーダプログラム、ライティング定数、テクスチャマップを用いて設定可能である。ハードウェアドライバは、特定のグラフィックハードウェアと、グラフィックAPIによって提供される呼出命令との間のインタフェースを提供する。グラフィックアプリケーションは、フレームを生成するためにグラフィックAPIで提供される「描画」呼出命令を呼び出す。広く使用されているグラフィックAPIには、Khronosグループから出されているOpenGL(登録商標)APIや、Microsoft(登録商標)によって配布されているDirect3D(登録商標)APIがある。
【0003】
[0003]グラフィックアプリケーションをデバッグするための一般的なサイクルには、アプリケーションのコンパイル及び実行が含まれる。アプリケーション実行中に、開発者は、ハードウェア及びソフトウェアによってレンダリングされたフレームにおける異常や視覚的アーチファクトを探す。視覚的アーチファクトとしては、開発者が意図したものとは見た目が異なるフレームの要素が挙げられ、非視覚的な異常としては、フレームレンダリング速度が低いなどといった、グラフィックアプリケーションの性能不足が挙げられる。これらの問題は、とりわけ、アプリケーションにおける不適切なレンダリング状態の設定、最適ではない或いは不適切なテクスチャの使用、描画呼出しに渡される不適切なパラメータの使用に起因して発生する。
【0004】
[0004]一般に、アプリケーションの開発者は、これらの種類の視覚的アーチファクト及びパフォーマンス上の問題を診断して解決するために単純な試行錯誤(experiment)を行う。例えば、開発者は、プログラムのソースコードを微修正し、レンダリング状態を調整し、グラフィックパイプラインのパラメータを変更することで、グラフィックアプリケーションを試す。次に、開発者は、アプリケーションを実行して結果を観察する。この方法は有効なことがあるが、しばしば手間のかかる処理となる。更に、組み込み装置や携帯装置(例えば、携帯型のビデオゲームコンソール、携帯電話機、集合装置)などのような、特定のターゲットプラットフォームで問題を診断して修正しようとするときには、グラフィックアプリケーションを対象装置上に展開(deploy)しなければならないため、この処理は更に複雑となることがある。
【0005】
[0005]純粋にアドホックな手法に起因するこれらの問題に対処するために、グラフィックアプリケーションデバッガを利用できる。しかしながら、これらのアプリケーションは、一般にグラフィックアプリケーションと同じシステム上で実行される。しかしながら、この方法は、携帯装置のグラフィックアプリケーションの場合には携帯装置の画面サイズの問題で非実用的である。例えば、現在利用可能な携帯型のビデオゲーム装置のほとんどは、画面の解像度が320×240ピクセル、又は640×480ピクセルである。従って、有用なデバッグインタフェースを開発者に提供するには画面表示が小さすぎることがある。更に、携帯装置は、グラフィックアプリケーションと平行してグラフィックアプリケーションデバッガを実行するのに必要な処理能力(又はマルチタスク能力)を備えていないことがある。
【発明の概要】
【発明が解決しようとする課題】
【0006】
[0006]上述したように、この技術分野には、遠隔のグラフィック装置を分析及びパフォーマンス調整するクライアントサーバシステムのニーズが依然として存在している。
【課題を解決するための手段】
【0007】
[0007]本発明の実施形態は、遠隔装置上で実行されているグラフィックアプリケーションの性能分析及びデバッグに使用されるデータ通信プロトコル及びクライアントサーバアーキテクチャを提供する。遠隔装置は、携帯型のビデオゲームコンソール、携帯電話機、又は集合装置でもよいし、パーソナルコンピュータシステムでもよい。一実施形態においては、グラフィックアプリケーションデバッガは、ホストコンポーネントとターゲットコンポーネントとを含んでいてもよい。ホストコンポーネントはホストシステム上で実行され、開発者にデバッグインタフェースを提供する。このインタフェースは、対象装置上のグラフィックアプリケーション及びグラフィックパイプラインの実行状態及び性能に関する一連のデータを提供することができる。
【0008】
[0008]本発明の一実施形態では、対象装置で実行されるように構成されたグラフィックアプリケーションをデバッグ及びパフォーマンス調整する方法を示す。この方法は、一般的には、対象装置と、グラフィックアプリケーションデバッガのホストコンポーネントを実行しているホストシステムとの間に通信回線を確立するステップと、対象装置上にグラフィックアプリケーションを呼び出すステップとを含んでいる。グラフィックアプリケーションは、対象装置に存在するグラフィックパイプライン用の計装ドライバ(instrumented driver)により提供されるグラフィックコマンドを呼び出すように構成されており、計装ドライバは、対象装置上のグラフィックアプリケーションの実行に関するデータを記録する、グラフィックアプリケーションデバッガのターゲットコンポーネントを含んでいる。更に、この方法は、ターゲットコンポーネントの第1の動作状態を判定するステップと、ターゲットコンポーネントのこの第1の動作状態に基づいて、対象装置上のグラフィックアプリケーションの実行に関するデータの一部を通信回線を通じてホストコンポーネントに送信するステップと、を含んでいる。
【0009】
[0009]上述した本発明の特徴を詳しく理解できるように、上記のように簡潔に要約した本発明について、実施形態を参照しながら更に具体的に説明する。いくつかの実施形態は添付図面に示している。しかしながら、添付図面は、本発明の代表的な実施形態を示しているに過ぎず、従って、本発明の範囲を制限するように解釈されないものとする。本発明は、同等の効果を備える別の実施形態を含んでいる。
【図面の簡単な説明】
【0010】
【図1】本発明の一実施形態に係る、遠隔装置上で実行されているグラフィックアプリケーションを分析するクライアントサーバ環境の概念図である。
【図2】本発明の一実施形態に係る、遠隔装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するためにホストシステムによって使用される通信プロトコルの状態図である。
【図3】本発明の一実施形態に係る、ホストシステム上で実行されているグラフィックアプリケーションデバッガによってデバッグされているグラフィックアプリケーションを実行するターゲットシステムの通信プロトコルの状態図である。
【図4】本発明の一実施形態に係る、ホストシステムが遠隔のグラフィック装置上で実行されているグラフィックアプリケーションをデバッグ及び調整する方法を示す流れ図である。
【図5】本発明の一実施形態に係る、対象装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するために使用されるホストシステム上で実行されるグラフィックアプリケーションデバッガのユーザインタフェースの概念図である。
【図6】本発明の一実施形態に係る、対象装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するために使用されるホストシステム上で実行されるグラフィックアプリケーションデバッガのユーザインタフェースの概念図である。
【図7】本発明の一実施形態に係る、対象装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するために使用されるホストシステム上で実行されるグラフィックアプリケーションデバッガのユーザインタフェースの概念図である。
【発明を実施するための形態】
【0011】
[0015]本発明の実施形態は、遠隔装置上で実行されているグラフィックアプリケーションの性能分析及びデバッグに使用されるデータ通信プロトコル及びクライアントサーバアーキテクチャが提供される。遠隔装置は、携帯型のビデオゲームコンソール、携帯電話機、又は集合装置でもよいし、パーソナルコンピュータシステムでもよい。一実施形態においては、グラフィックアプリケーションデバッガはホストコンポーネントとターゲットコンポーネントとを含んでもよい。ホストコンポーネントは、ホストシステム上で実行され、デバッグインタフェースを開発者に提供する。このインタフェースは、対象装置上のグラフィックアプリケーション及びグラフィックパイプラインの実行状態及び性能に関する一連のデータを提供できる。
【0012】
[0016]対象装置上で実行されているターゲットコンポーネントは、グラフィックパイプラインの性能に関連するデータを記録して、そのデータを通信回線を介してホストシステムに送信することができる。例えば、対象装置は、グラフィックアプリケーションデバッガのホストコンポーネントと通信する、グラフィックデバイスドライバの計装バージョン(instrumented version)を含んでもよい。一実施形態においては、グラフィックアプリケーションが対象装置で実行されている間、ホストシステムと対象装置との間の接続をいつでも確立することができる。接続が確立すると、開発者は、対象装置上のグラフィックパイプラインの状態と、対象装置上のアプリケーションのパフォーマンスとに関する情報をホストデバイス上で調査することができる。更に、開発者は、ユーザインタフェースと対話して、リアルタイムストリーミングモード、デバッグモードと、及び性能分析モードの間で遷移させることができる。
【0013】
[0017]次に、パフォーマンスのツール、グラフ、及び試行錯誤を使用して、特定のフレームのレンダリング時にグラフィックパイプラインにおいて行われた処理を掘り下げて詳しく調べることができる。デバッグモードと性能分析モードは、開発者が、対象装置上のグラフィックパイプラインによってレンダリングされたフレームのいくつかの側面を調べて評価する目的に使用することができる。この情報を使用して、開発者は、グラフィックパイプラインにおける最も低速の段階を識別して機能上の問題をデバッグすることにより、グラフィックアプリケーションのパフォーマンスを高めることができる。従って、本発明の実施形態では、分析及びパフォーマンス調整を行うクライアントサーバシステムを提供することによって、開発者は、対象装置上のグラフィックパイプラインにおけるパフォーマンスのボトルネックを特定して最適化することができ、これは有利である。
【0014】
[0018]図1は、本発明の一実施形態に係る、遠隔装置上で実行されているグラフィックアプリケーションを分析するクライアントサーバ環境100の概念図である。図1に示したクライアントサーバ環境100は、既存のコンピュータシステム(例えば、デスクトップコンピュータ、サーバコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、携帯装置など)を表している。しかしながら、本明細書に記載したソフトウェアアプリケーションは、特定の計算システム或いは計算装置に限定されることはなく、新たな計算システムが登場したときにそれを利用するように適合させることができる。当業者は、図1に示した構成要素が本発明の態様が強調されるように単純化され、典型的なホストシステム105及び対象装置125が他の様々な種類の構成要素を含んでもよいことを認識するであろう。
【0015】
[0019]更には、システム100に示したソフトウェアアプリケーションは、1つのコンピュータシステムで実行されたり、ローカルエリアネットワークや、インターネットのような大規模なワイドエリアネットワークなどのコンピュータネットワークを通じて通信する分散システムで実行されたりするように実装されてもよい。また、本発明の実施形態は、CD−ROM、DVD−ROM、フラッシュメモリモジュールなどの有形の記憶媒体のようなコンピュータ可読媒体に格納された一つ以上のアプリケーションプログラムとして提供されてもよい。
【0016】
[0020]図示するように、クライアントサーバ環境100は、ホストシステム105と、ディスプレイ画面130を有する対象装置125と、通信回線120とを含んでいる。ホストシステム105は、グラフィックアプリケーションデバッガのホストコンポーネント110を実行するコンピュータシステムである。ユーザインタフェース115は、対象装置125上で実行されているグラフィックアプリケーション160を分析及びデバッグするために使用されるグラフィカル要素(例えば、ウィンドウ、メニューボタン、リボン、ダイアログボックス)の任意の組み合わせを開発者に提供可能である。ユーザインタフェース115によって、開発者は、デバッグセッションを開始して、様々なデバッグ機能を実行することができる。一実施形態においては、ユーザインタフェース115は、対象装置125上でレンダリングされたフレーム画像と、対象装置125上で実行されているグラフィックアプリケーション160の性能に関するデータを示す図形、チャート、表の半透明のオーバーレイとを、一緒に表示することができる。
【0017】
[0021]ホストシステム105は、通信回線120を通じて対象装置125と通信するように構成されてもよい。例えば、ホストシステム105は、TCP/IPネットワークを通じて対象装置125と通信してもよいし、USB、ファイヤーワイヤ(Firewire)、シリアル接続などの直接接続を有してもよい。当然ながら、それ以外のネットワークプロトコル及び/又は通信規格を使用してもよい。更に、対象装置及びホストシステムは同一のマシンとすることができ、その場合、通信回線をプロセス間メッセージングシステムとすることができる。一実施形態においては、ホストシステム105は、通信プロトコルを使用して、対象装置125とともに様々なデバッグトランザクション(debugging transaction)を実行する。トランザクションは、グラフィック処理ユニット140又はグラフィックパイプライン145の構成設定又は状態を制御するためにホストシステム105から対象装置125に送信されるコマンドを含んでもよい。例えば開発者は、通信回線120を通じて送信されるコマンドによって、グラフィックアプリケーション160のアニメーション速度の変更、詳細な評価のためのアニメーションの個々のフレームの選択、特定の一連の図形要素の選り分け、グラフィックAPIの状態要素(例えばライティング)の一時的な変更又は無効化を行うことができる。その他のトランザクションには、(リアルタイムストリーミングモードの一部として)パフォーマンスカウンタ及びグラフィックデータを対象装置125からホストシステム105に流すトランザクションと、(デバッグモード又は性能分析モードの一部として)アニメーションのフレームに対するパイプラインの状態及びフレームデータを対象装置125からホストシステム105に送信するトランザクションとが含まれうる。
【0018】
[0022]対象装置125は、グラフィックアプリケーション160を実行するように構成された任意の種類の装置とすることができる。対象装置125の例としては、携帯型のビデオゲームコンソール、携帯型メディアプレーヤー、携帯電話機、或いはこれらの種類の装置を1つの物理筐体にまとめた集合装置が挙げられる。当然ながら、対象装置125はパーソナルコンピュータシステムであってもよい。対象装置125は、プロトタイプ装置のハードウェアコンポーネントのすべてを有する開発ボードであってもよい。図示するように、対象装置125は、ディスプレイ画面130と、フレームバッファ135と、グラフィック処理ユニット(GPU)140と、計装ドライバ150と、CPU155と、グラフィックアプリケーション160とを含んでいる。
【0019】
[0023]グラフィックアプリケーション160は、CPU155上で実行されるソフトウェアアプリケーションを表している。例えば、グラフィックアプリケーション160は、携帯型のゲーム装置上で実行されるビデオゲームであってもよい。中央処理装置(CPU)155は、グラフィックアプリケーション160を実行する処理装置である。一実施形態においては、グラフィックアプリケーション160は、一般にはグラフィックAPI(例えば、OpenGL API)によって定義されている特定のグラフィックレンダリングタスクを実行する機能を呼び出すことができる。グラフィックAPIによって定義された周知のグラフィックタスクの一つは、「描画」演算の呼出しである。グラフィックアプリケーション160が、描画呼出しなどの、グラフィックAPIによって提供される機能を呼び出した場合に、計装ドライバ150がGPU140上でそのコマンドを実行してもよい。より一般的には、計装ドライバ150は、対象装置125の特定のグラフィックハードウェア用のグラフィックAPIにより提供された標準インタフェースの機能を実行できる。
【0020】
[0024]図示するように、計装グラフィックドライバ150は、グラフィックアプリケーションデバッガのターゲットコンポーネント110を含んでいる。一実施形態においては、ターゲットコンポーネント110は、ホストコンポーネント110に対応するコンポーネントである。計装ドライバ150は、グラフィックAPIの機能を実行することに加えて、GPU140の特定のコンポーネントを監視してそのコンポーネントに関連する性能データ及び状態データを記録するコード命令を含んでもよい。例えば計装ドライバ150は、グラフィックパイプライン145の動作に関する状態データ及び性能情報を出力するコード命令を含んでもよい。
【0021】
[0025]グラフィックパイプライン145は、3Dグラフィック機能を実行するように構成された一連のシェーディングユニットを提供することが可能である。知られているように、これは特に、ライティング効果、オブジェクト変換、及び3D動作を計算する機能を含むのが一般的である。グラフィックパイプライン145に設けることが可能な一般的なシェーダユニットとしては、頂点シェーダユニット、幾何シェーダユニット、ピクセルシェーダユニット、及びラスター演算ユニットが挙げられる。知られているように、グラフィックパイプラインのシェーディングユニットは、一連の図形要素から始まるグラフィックデータを連続的に処理し、最終的にディスプレイ画面130上の各画素(すなわち、各ピクセルの)の色及び強度値を決定することができる。一般には、完全な画像が生成されてディスプレイ画面130に出力されるまで、ピクセル値が算出されてフレームバッファ135に格納される。
【0022】
[0026]図2は、本発明の一実施形態に係る、ホストシステムで実行されるグラフィックアプリケーションデバッガによってデバッグされるグラフィックアプリケーションを実行する対象装置により使用される通信プロトコルの状態図200を示している。図示するように、状態図200は、対象装置の一連の状態205〜250と、状態205〜250を結ぶ有向矢印により表された状態間の一連の遷移とを含んでいる。リスン状態205は、対象装置がグラフィックアプリケーションを実行可能であるが、グラフィックデバッグアプリケーションを実行しているホストシステムと対象装置との間にまだ接続が確立されていない状態に対応する。このような状態において、計装ドライバは、ホストシステムからのコマンドを待つ。対象装置が接続を確立するためのコマンドをホストシステムから受信すると、対象装置は状態205から接続確立状態210に遷移する。状態210において、対象装置は、ホストシステムとの「ハンドシェーク」動作を実行する。例えば一実施形態においては、対象装置は、対象装置の種類、グラフィックパイプラインの能力、対象装置上で実行されている計装ドライバのバージョン、及びその他の類似する情報を識別するための4バイト(又はそれ以外のサイズ)の値を通信回線を介して送信することができる。対象装置は、ホストシステムからの応答メッセージを受信して「ハンドシェーク」を完了するまで状態210を維持する。エラーが起こった場合には、対象装置は例外回復状態215に遷移し、その後、状態205又は状態210のいずれかに戻ることができる。
【0023】
[0027]対象装置とホストシステムとの間に接続が確立されると、対象装置はアプリケーションリアルタイム監視状態225に遷移する。状態225において、対象装置は、グラフィックアプリケーションを実行し、GPU及びグラフィックパイプラインを使用してフレームをレンダリングする。それと同時に、計装ドライバに含まれているグラフィックアプリケーションデバッガのターゲットコンポーネントが、GPU及びグラフィックパイプラインに関する性能データ及び状態データを記録する。一実施形態においては、計装ドライバは、ホストシステムとの間に確立されている通信回線を通じて性能データを送信することができる。状態225である間、開発者は一般に、低いパフォーマンス或いは望ましくない視覚的アーチファクトを示しているフレームを特定するまで、対象装置で実行されているグラフィックアプリケーションと対話する。そのようなフレームを特定した時点で、開発者は対象装置の状態を、状態225から、フレームデバッグ初期化状態220かパフォーマンスプロファイリング初期化状態230のいずれかに遷移させることができる。
【0024】
[0028]フレームデバッグ状態220において、計装ドライバは、対象装置上で実行されているアプリケーションとグラフィックパイプライン上で実行されている処理とを一時中断する。対象装置は、状態220に遷移するためのコマンドをホストシステムから受信すると状態220に遷移することができる。対象装置は状態220からフレーム送信状態240に遷移できる。このフレーム送信状態240では、計装ドライバが特定のフレームに関する情報をホストシステム上で実行中のグラフィックアプリケーションデバッガに送信する。例えば、計装ドライバは、テクスチャバッファの内容と、フィルタリングパラメータの値、フレームを描画するために使用される描画呼出しに渡されるパラメータ、グラフィックパイプラインに渡される幾何データ及び頂点データなどを送信することができる。送信されると、開発者はアプリケーションが一時中断された特定のフレームに関連する様々な要素を調べて評価することができる。
【0025】
[0029]パフォーマンスプロファイリング状態230においても、計装ドライバは、対象装置上で実行されているアプリケーションを一時中断させることができる。対象装置は状態230からフレーム送信状態245に遷移できる。この状態245では、計装ドライバは一連のテストを実行することで、現在のフレームにおける描画呼出しのそれぞれについて様々なドライバ及びGPUパフォーマンスカウンタに問い合わせ、ホストシステム上で実行されているグラフィックアプリケーションデバッガにその情報を送信する。
【0026】
[0030]フレームデバッグデータ又はパフォーマンスプロファイルデータのいずれかを送信した後に、対象装置は状態240及び状態245からアイドル状態250に遷移することができる。対象装置は、フレームデバッグ初期化状態220、アプリケーションリアルタイム監視状態225、パフォーマンスプロファイリング初期化状態230のうちの一つに遷移するためのコマンドをホストシステム上で実行されているグラフィックアプリケーションデバッガから受信するまで、状態250を維持する。
【0027】
[0031]図3は、本発明の一実施形態に係る、遠隔装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するホストシステムにより使用される通信プロトコルの状態図300を示している。状態図300は、ホストシステムの観点からみると状態図200に対応している。対象装置によって受信されるコマンドはホストシステムにより送信され、対象装置により送信された応答及びデータはホストシステムによって受信される。図示するように、状態図300は、ホストシステムの一連の状態305〜350と、有向矢印によって表された状態305〜350間の一連の遷移とを含んでいる。未接続状態305は、ホストシステムが対象装置にコマンドを送信する(次いで、リスン状態205になる)状態に対応している。ホストシステム装置は状態305から接続確立状態310に遷移することができる。この状態においては、ホストシステムは上述した「ハンドシェーク」動作のうちの担当部分を実行する。例えば一実施形態においては、ホストシステムは、ホストシステム上で実行されているグラフィックアプリケーションデバッガの能力に関連する情報を対象装置に提供するための4バイト(又はそれ以外のサイズ)の値を通信回線を介して送信することができる。エラーが起こった場合には、ホストシステムは例外回復状態315に遷移し、その後、状態305又は状態310のいずれかに戻ることができる。
【0028】
[0032]対象装置とホストシステムとの間に接続が確立されると、ホストシステムは(対象装置のリアルタイム監視状態225に対応する)性能データ受信状態325に遷移することができる。状態325である間、ホストシステムは、対象装置の性能に関連するデータを通信回線を通じて受信できる。ホストシステムは、このデータを、アプリケーションの性能の様々な側面を強調表示したグラフ、チャート、表の任意の組み合わせによって開発者に提供することができる。一実施形態においては、ホストシステム上のグラフィックアプリケーションデバッガは、タイミンググラフを使用して、各フレームの様々なタスクに消費された時間を示すことができる。この情報には例えば、フレームあたりのミリ秒、CPU又はGPUがアイドルである時間の割合、メモリ使用量、描画呼出しの回数、オーバーヘッド、グラフィックパイプラインのシェーディングユニットがアクティブ又はアイドルである時間長が含まれ得る。一般には、状態325である間、開発者は、低いパフォーマンス或いは望ましくない視覚的アーチファクトを示しているフレームを特定するまで、対象装置上で実行されているグラフィックアプリケーションと対話することができる。
【0029】
[0033]対象装置の状態220及び状態240に対応する状態320においては、ホストシステムは、特定のフレームのデバッグ情報を対象装置から受信することができる。上述したように、例えば計装ドライバは、テクスチャバッファの内容、フィルタリングパラメータの値、フレームを描画するために使用される描画呼出しに渡されるパラメータ、グラフィックパイプラインに渡される幾何データ及び頂点データをホストシステムに送信することができる。送信されると、開発者は、ホストシステム上で実行されているグラフィックアプリケーションデバッガを使用して、特定のフレームの要素を評価することができる。
【0030】
[0034]対象装置の状態230及び状態245に対応する状態330においては、ホストシステムは、プロファイリングされた対象装置の性能特性に関連するプロファイル情報を対象装置から受信することができる。フレームデバッグデータ又はパフォーマンスプロファイルデータを受信すると、ホストシステムは状態320及び状態330からアイドル状態350に遷移することができる。状態350においては、通信回線は確立されたままであり利用可能であるが、ホストシステムから対象装置にコマンドは送信されない。ホストシステムは、開発者がグラフィックアプリケーションデバッガを使用して状態320、状態325、状態330のうちの一つに遷移するためのコマンドを送信するまで、状態350を維持する。
【0031】
[0035]図4は、本発明の一実施形態に係る、遠隔のグラフィック装置上で実行されているグラフィックアプリケーションをホストシステムがデバッグ及び調整する方法400を示す流れ図である。この方法を図1のシステムに関連して説明しているが、当業者は、方法400の一連のステップを順序を問わず実行するシステムが本発明の範囲内であることを理解するであろう。
【0032】
[0036]ステップ405において、開発者は、ホストシステム上でデバッグアプリケーションを起動することができる。起動すると、デバッグアプリケーションは、ステップ410において対象装置との接続の確立を開始できる。例えば、ホストシステム上のデバッグアプリケーションは、上述した「ハンドシェーク」処理を開始するためのコマンドを通信回線を通じて送信し、対象装置からの応答を待機することができる。ステップ415において、開発者は対象装置上でグラフィックアプリケーションを起動することができる。
【0033】
[0037]接続が確立された状態で、ホストシステム上で実行されているグラフィカルデバッグアプリケーションを使用して、対象装置上で実行されているアプリケーションをデバッグすることができる。従って、ステップ420において、ステップ420〜ステップ460を含むループが開始され、このループにおいて、対象装置の計装ドライバが、開発者によって選択された動作モードに基づいて、デバッグするアプリケーションに関するデータをホストシステムに送信する。ステップ420において、対象装置はデバッガの動作モードを識別する。一実施形態においては、グラフィックデバッグアプリケーションは、最初に起動されると、開発者によって別のモードに遷移するまでリアルタイムストリーミングモードで開始する。ステップ430においてリアルタイム監視モードがアクティブである場合には、ステップ435において計装ドライバは、対象装置上でグラフィックアプリケーションが実行されている間、パイプラインの状態データを送信する。上述したように、計装ドライバは例えば、フレームあたりのミリ秒、CPU又はGPUがアイドルである時間の割合、メモリ使用量、描画呼出しの回数、オーバーヘッド、グラフィックパイプラインのシェーディングユニットがアクティブ又はアイドルである時間長に関するデータをホストシステムに送信することができる。ホストシステムはこの情報を受信し、アプリケーションの性能の様々な側面を強調表示するグラフ、チャート、又は表の任意の組み合わせを表示することができる。更に、リアルタイム監視モードである間、開発者は、対象装置上で実行されているグラフィックアプリケーションのいくつかの状況を制御することができる。例えば開発者は、グラフィックアプリケーションのアニメーション速度を変更したり、グラフィックAPI(例えば、ライティング)の状態要素を一時的に変更又は無効化したりすることができる。
【0034】
[0038]ステップ460において、開発者は、詳細に評価するフレームを特定すると、グラフィックアプリケーションデバッガを使用してモード変更コマンドを対象装置に送信することができる。すると、方法400はステップ420に戻り、対象装置がデバッガの動作モードを識別する。
【0035】
[0039]ステップ440において、フレームデバッグモードがアクティブである場合には、対象装置上の計装ドライバは現在選択されているフレームのフレームデータを生成し、それをホストシステムに送信する。上述したように、フレームデバッグモードにおいては、計装ドライバは、テクスチャバッファの内容、フィルタリングパラメータの値、フレームを描画するために使用される描画呼出しに渡されるパラメータ、グラフィックパイプラインに渡される幾何データ及び頂点データ、フレームバッファの内容などを送信することができる。
【0036】
[0040]或いは、ステップ450において開発者がプロファイリングモードを選択した場合には、ステップ455において、対象装置上の計装ドライバは現在選択されているフレームのプロファイリングデータを生成し、それをホストシステムに送信することができる。上述したように、パフォーマンスプロファイリングモードにおいては、計装ドライバは一連のテストを実行し、グラフィックパイプラインの性能を問い合わせることができる。方法400は、次のモード変更が検出されるまで、ステップ435、ステップ445、及びステップ455からステップ460に遷移することができる。
【0037】
[0041]図5〜図7は、本発明の一実施形態に係る、対象装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するために使用されるホストシステム上で実行されるグラフィックアプリケーションデバッガのユーザインタフェースの概念図である。より詳しく言うと、図5は、ホストシステム上で実行されているグラフィックアプリケーションデバッガのリアルタイム監視モード(図3の状態325)におけるインタフェースの例示的な画面を示している。図示するように、インタフェース500は、特定の種類の対象装置上で実行されているグラフィックアプリケーションの名前を表すステータスボックス505を含んでいる。更に、ステータスボックス500は、接続が確立されていること、及びグラフィックアプリケーションデバッガが現在リアルタイム監視モードであることも表している。一連のボタン510は、対象装置上のアニメーション速度の上げ下げや、対象装置でのレンダリングの一時停止、或いは別のモードへの遷移のために使用できる。
【0038】
[0042]更に、図示するように、タイミンググラフ515及び棒グラフ520は、対象装置上のグラフィックパイプラインの性能を視覚的に示している。示されているように、タイミンググラフ510は、CPU及びGPUの利用状況のタイミンググラフと、フレームレンダリング速度とを示している。棒グラフ520は、対象装置上でのビデオメモリ及びシステムメモリの使用量を表している。当然ながら、タイミンググラフ515及び棒グラフ520の内容は、対象装置から伝送されてインタフェース500において提示される情報の例を示すものであり、対象装置により実行されるリアルタイムのレンダリング以外の態様をインタフェース500において提示してもよい。更に、インタフェース500によって、開発者は、対象装置のレンダリング状態を変更してグラフィックパイプラインの特定の部分を分割したり、レンダリングパフォーマンスの様々な態様を評価したりすることができる。例えば、開発者は、GPUに2×2のテクスチャを強制的に使用させることによってテクスチャ帯域幅(texture bandwidth)のボトルネックについてテストしたり、1×1のシザー矩形を使用することによって頂点ユニットを分離することですべてのラスター演算及びピクセル処理を省略したり、すべての描画呼出しを無視するように伝えるコマンドを計装ドライバに送信することでドライバのオーバーヘッドを評価したりすることができる。当然ながら、他のデバッグ手法を使用してもよい。
【0039】
[0043]上述したように、開発者は、低いパフォーマンス或いは望ましくない視覚的アーチファクトを示しているフレームを特定するまで、対象装置上で実行されているグラフィックアプリケーションと対話することができる。そのようなフレームが特定されると、開発者は、上述したようにグラフィックアプリケーションデバッガをデバッグモードに遷移させることができる。
【0040】
[0044]図6は、ホストシステム上で実行されているグラフィックアプリケーションデバッガのフレームデバッグモード(図3の状態320)におけるインタフェースの例示的な図である。図示するように、インタフェース600は、テクスチャディスプレイ605と、レンダリングフレームディスプレイ610と、スライダーバー615と、ボタン620,625とを含んでいる。レンダリングフレームディスプレイ610は、各描画呼出しが実行されているときのレンダリングフレームの状態を示している。スライダーバー615は、フレーム作成のために用いられる描画呼出しのそれぞれに移動する目的で使用される。テクスチャディスプレイ605は、スライダーバー615の位置に基づいて決まる特定の描画呼出しに対して設定されている、対象装置上のテクスチャユニットの内容を表示する。ボタン620,625は、別のデバッグモードに遷移するために使用される。当然ながら、インタフェース600はグラフィックアプリケーションデバッガのインタフェースの例を示しているのであり、その配置及び内容は、特定の場合における開発者のニーズに合うように変更してもよい。
【0041】
[0045]図7は、ホストシステム上で実行されているグラフィックアプリケーションデバッガのパフォーマンスプロファイリングモード(図3の状態330)におけるインタフェース700の例示的な図である。上述したように、ホストシステムによって対象装置がプロファイリングモードに遷移すると、計装ドライバは、一連のテストを実行して、現在のフレームにおける各描画呼出しについて、様々なドライバ及びGPUパフォーマンスカウンタに問い合わせる。一実施形態においては、この情報をホストシステムに送信し、グラフィックアプリケーションデバッガにより提供されるインタフェース上に表示してもよい。
【0042】
[0046]説明すると、インタフェース700は、一連のテストを実行して、現在のフレームにおける各描画呼出しについて様々なドライバ及びGPUパフォーマンスカウンタに問い合わせた後に計装ドライバから得られたデータを示している。図示するように、インタフェース700は、レンダリングフレームディスプレイ710と、スライダーバー715と、ユニット利用状況グラフ720と、ボタン725,730とから構成されている。レンダリングフレームディスプレイ710は、各描画呼出しが実行されるときのレンダリングフレームの状態を示している。スライダーバー715により、開発者は特定のフレームの複数の描画呼出しの間を効率的に移動できる。説明すると、ユニット利用状況グラフ720は、グラフィックパイプラインの主要なユニット(この場合には、幾何シェーダユニット、頂点シェーダユニット、及びラスター演算ユニット)のユニット利用状況バーを示している。図示するように、このようなユニットのそれぞれにおいて、最も長いバーは、そのフレーム全体に対するユニットの利用を表している。次の棒は、関連する描画呼出しのグループに対するユニットの利用を示している。例えば、同じシェーダプログラム、ラスター演算状態、及びレンダリングターゲットを使用しているすべての描画呼出しに対して性能データをグループ化することができる。各ユニットにおける最も短いバーは、スライダー715によって指定されている現在の描画呼出しに対するユニットの利用を表している。ボタン725,730は、別のデバッグモードに遷移するために使用される。当然ながら、インタフェース700は、グラフィックアプリケーションデバッガのインタフェースの例を示すものであり、その配置及び内容は、特定の場合における開発者のニーズに合うように変更してもよい。例えば、性能の他の視覚的情報としては、描画呼出しの時間、倍速z及びステンシルの利用状況(stencil usage)、ピクセルカウントなどが挙げられる。
【0043】
[0047]本発明の実施形態により、遠隔装置上で実行されているグラフィックアプリケーションの性能分析及びデバッグに使用されるデータ通信プロトコル及びクライアントサーバアーキテクチャが提供される。本発明の実施形態では、分析及びパフォーマンス調整のためのクライアントサーバシステムを提供することによって、開発者は、対象装置上のグラフィックパイプラインにおけるパフォーマンスのボトルネックを除去して最適化することができ、これは有利である。
【0044】
[0048]ここまで本発明の実施形態について説明してきたが、本発明の基本的な範囲から逸脱することなく本発明の別の更なる実施形態を考えることができ、本発明の範囲は請求項によって定義されている。
【符号の説明】
【0045】
100…クライアントサーバ環境、105…ホストシステム、115…ユーザインタフェース、120…通信回線、125…対象装置、130…ディスプレイ画面、135…フレームバッファ、140…グラフィック処理ユニット、145…グラフィックパイプライン、150…計装ドライバ、160…グラフィックアプリケーション、110…ホストコンポーネント、110…ターゲットコンポーネント。

【特許請求の範囲】
【請求項1】
対象装置で実行されているグラフィックアプリケーションをデバッグ及びパフォーマンス調整する方法であって、
前記対象装置と、グラフィックアプリケーションデバッガのホストコンポーネントを実行するホストシステムとの間に通信回線を確立するステップと、
前記対象装置上に前記グラフィックアプリケーションを呼び出すステップであって、該グラフィックアプリケーションが、該対象装置上に存在するグラフィックパイプライン用に提供された計装ドライバにより提供されるグラフィックコマンドを呼び出し、該計装ドライバが、該対象装置での該グラフィックアプリケーションの実行に関する性能データ及び状態データを記録する前記グラフィックアプリケーションデバッガのターゲットコンポーネントを含んでいる、ステップと、
前記ターゲットコンポーネントの第1の動作状態を判定するステップと、
前記ターゲットコンポーネントの前記第1の動作状態に基づいて、前記対象装置での前記グラフィックアプリケーションの実行に関する前記記録された性能データ及び状態データの一部を、前記通信回線を通じて前記ホストコンポーネントに送信するステップと、
グラフィック処理ユニットを制御することで特定の一連の図形要素を選り分けるためのコマンドを、前記ホストコンポーネントから前記通信回線を通じて前記対象装置に送信するステップと
を含んでいる方法。
【請求項2】
前記記録された性能データ及び状態データを前記ホストシステムにより受信し、前記第1の動作状態に基づいて、前記ホストシステムにおいてユーザインタフェースの表示を生成するステップ、
を更に含む請求項1に記載の方法。
【請求項3】
前記通信回線が、TCP/IPネットワーク接続、USB接続、ファイヤーワイヤ(Firewire)接続、又はプロセス間メッセージングシステムのうちの一つである、請求項1に記載の方法。
【請求項4】
前記対象装置が、携帯型ビデオゲーム装置、携帯型メディアプレーヤー、携帯電話機、プロトタイプ装置を含む開発ボード、パーソナルコンピュータシステム、又はこれらの組み合わせを提供する集合装置のうちの一つである、請求項1に記載の方法。
【請求項5】
前記第1の動作状態がリアルタイムパフォーマンスモードであり、
前記グラフィックアプリケーションがフレームをレンダリングしている間に、前記対象装置上の前記グラフィックパイプラインによりレンダリングされる各フレームの前記性能データ及び状態データを記録する、
請求項1に記載の方法。
【請求項6】
前記動作状態がフレームデバッグモードであり、
前記計装ドライバが、前記グラフィックパイプラインによりレンダリングされる特定のフレームに対して複数の性能テストを実行し、前記ホストシステム上で実行されている前記グラフィックアプリケーションデバッガに該性能テストの結果を送信する、
請求項1に記載の方法。
【請求項7】
前記ホストシステムが、前記通信回線を通じてコマンドを送信することで、前記ターゲットコンポーネントの前記第1の動作状態を第2の動作状態に遷移させる、請求項1に記載の方法。
【請求項8】
プログラム命令を含んでいるコンピュータ可読記憶媒体であって、
該プログラム命令が、プロセッサで実行されたときに該プロセッサに、
前記対象装置と、グラフィックアプリケーションデバッガのホストコンポーネントを実行するホストシステムとの間に通信回線を確立するステップと、
前記対象装置上に前記グラフィックアプリケーションを呼び出すステップであって、該グラフィックアプリケーションが、該対象装置上に存在するグラフィックパイプライン用に提供された計装ドライバにより提供されるグラフィックコマンドを呼び出し、該計装ドライバが、該対象装置での該グラフィックアプリケーションの実行に関する性能データ及び状態データを記録する前記グラフィックアプリケーションデバッガのターゲットコンポーネントを含んでいる、ステップと、
前記ターゲットコンポーネントの第1の動作状態を判定するステップと、
前記ターゲットコンポーネントの前記第1の動作状態に基づいて、前記対象装置での前記グラフィックアプリケーションの実行に関する前記記録された性能データ及び状態データの一部を、前記通信回線を通じて前記ホストコンポーネントに送信するステップと、
グラフィック処理ユニットを制御することで特定の一連の図形要素を選り分けるためのコマンドを、前記ホストコンポーネントから前記通信回線を通じて前記対象装置に送信するステップと
を含む方法を実行させることで、前記プロセッサに、前記対象装置上で実行されているグラフィックアプリケーションのデバッグ及びパフォーマンス調整をさせる、
コンピュータ可読記憶媒体。
【請求項9】
前記方法が、前記記録された性能データ及び状態データを前記ホストシステムにより受信し、前記第1の動作状態に基づいて、前記ホストシステムにおいてユーザインタフェースの表示を生成するステップを更に含む、
請求項8に記載のコンピュータ可読記憶媒体。
【請求項10】
前記通信回線が、TCP/IPネットワーク接続、USB接続、ファイヤーワイヤ(Firewire)接続、又はプロセス間メッセージングシステムのうちの一つである、請求項8に記載のコンピュータ可読記憶媒体。
【請求項11】
前記対象装置が、携帯型のビデオゲーム装置、携帯型のメディアプレーヤー、携帯電話機、プロトタイプ装置を含む開発ボード、パーソナルコンピュータシステム、又はこれらの組み合わせを提供する集合装置のうちの一つである、請求項8に記載のコンピュータ可読記憶媒体。
【請求項12】
前記第1の動作状態がリアルタイムパフォーマンスモードであり、
前記グラフィックアプリケーションがフレームをレンダリングしている間に、前記対象装置上の前記グラフィックパイプラインによってレンダリングされる各フレームの前記性能データ及び状態データを記録する、
請求項8に記載のコンピュータ可読記憶媒体。
【請求項13】
前記動作状態がフレームデバッグモードであり、
前記計装ドライバが、前記グラフィックパイプラインによりレンダリングされる特定のフレームに対して複数の性能テストを実行し、前記ホストシステム上で実行されている前記グラフィックアプリケーションデバッガに該性能テストの結果を送信する、
請求項8に記載のコンピュータ可読記憶媒体。
【請求項14】
前記ホストシステムが、前記通信回線を通じてコマンドを送信することで、前記ターゲットコンポーネントの前記第1の動作状態を第2の動作状態に遷移させる、
請求項8に記載のコンピュータ可読記憶媒体。
【請求項15】
対象装置上で実行されているグラフィックアプリケーションをデバッグ及びパフォーマンス調整するシステムであって、
対象装置と、グラフィックアプリケーションデバッガのホストコンポーネントを実行するホストシステムとの間の通信回線と、
前記対象装置上に存在するグラフィック処理ユニット内のグラフィックパイプライン用に提供され、グラフィックアプリケーションデバッガのターゲットコンポーネントを含む、前記対象装置上の計装ドライバであって、該グラフィックアプリケーションが、該対象装置上に存在するグラフィックパイプラインによる実行用の前記計装ドライバにより提供されるグラフィックコマンドを呼び出し、該グラフィックアプリケーションデバッガのターゲットコンポーネントが、
前記対象装置上の前記グラフィックアプリケーションの実行に関する性能データ及び状態データを、前記グラフィック処理ユニットに接続されているメモリに記録し、
前記ターゲットコンポーネントの第1の動作状態を判定し、
前記ターゲットコンポーネントの前記第1の動作状態に基づいて、前記対象装置上の前記グラフィックアプリケーションの実行に関する前記記録された性能データ及び状態データの一部を、前記通信回線を通じて前記ホストコンポーネントに送信し、
前記グラフィック処理ユニットを制御することで特定の一連の図形要素を選り分けるためのコマンドを、前記ホストコンポーネントから前記通信回線を通じて受信する、該計装ドライバと、
を備えるシステム。
【請求項16】
前記ホストシステムが、
前記記録された性能データ及び状態データを受信し、
前記第1の動作状態に基づいて、前記ホストシステムにおいてユーザインタフェースの表示を生成する、
請求項15に記載のシステム。
【請求項17】
前記通信回線が、TCP/IPネットワーク接続、USB接続、ファイヤーワイヤ(Firewire)接続、又はプロセス間メッセージングシステムのうちの一つである、請求項15に記載のシステム。
【請求項18】
前記対象装置が、携帯型のビデオゲーム装置、携帯型のメディアプレーヤー、携帯電話、プロトタイプ装置を含んでいる開発ボード、パーソナルコンピュータシステム、又はこれらの組み合わせを提供する集合装置のうちの一つである、請求項15に記載のシステム。
【請求項19】
前記第1の動作状態がリアルタイムパフォーマンスモードであり、
前記グラフィックアプリケーションがフレームをレンダリングしている間に、前記対象装置上の前記グラフィックパイプラインによりレンダリングされる各フレームの前記性能データ及び状態データを記録する、
請求項15に記載のシステム。
【請求項20】
前記動作状態がフレームデバッグモードであり、
前記計装ドライバが、前記グラフィックパイプラインによりレンダリングされる特定のフレームに対して複数の性能テストを実行し、前記ホストシステム上で実行されている前記グラフィックアプリケーションデバッガに前記性能テストの結果を送信する、
請求項15に記載のシステム。
【請求項21】
前記ホストシステムが、前記通信回線を通じてコマンドを送信することで、前記ターゲットコンポーネントの前記第1の動作状態を第2の動作状態に遷移させる、請求項15に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−94182(P2012−94182A)
【公開日】平成24年5月17日(2012.5.17)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−14440(P2012−14440)
【出願日】平成24年1月26日(2012.1.26)
【分割の表示】特願2008−196576(P2008−196576)の分割
【原出願日】平成20年7月30日(2008.7.30)
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】