(57)【特許請求の範囲】
【請求項１】
対象装置で実行されているグラフィックアプリケーションをデバッグ及びパフォーマンス調整する方法であって、
前記対象装置と、グラフィックアプリケーションデバッガのホストコンポーネントを実行するホストシステムとの間に通信回線を確立するステップと、
前記対象装置上に前記グラフィックアプリケーションを呼び出すステップであって、該グラフィックアプリケーションが、該対象装置上に存在するグラフィックパイプライン用に提供された計装ドライバにより提供されるグラフィックコマンドを呼び出し、該計装ドライバが、該対象装置での該グラフィックアプリケーションの実行に関する性能データ及び状態データを記録する前記グラフィックアプリケーションデバッガのターゲットコンポーネントを含んでいる、ステップと、
前記ターゲットコンポーネントの第１の動作状態を判定するステップと、
前記ターゲットコンポーネントの前記第１の動作状態に基づいて、前記対象装置での前記グラフィックアプリケーションの実行に関する前記記録された性能データ及び状態データの一部を、前記通信回線を通じて前記ホストコンポーネントに送信するステップと、
グラフィック処理ユニットを制御することで特定の一連の図形要素を選り分けるためのコマンドを、前記ホストコンポーネントから前記通信回線を通じて前記対象装置に送信するステップと
を含んでいる方法。
【請求項２】
前記記録された性能データ及び状態データを前記ホストシステムにより受信し、前記第１の動作状態に基づいて、前記ホストシステムにおいてユーザインタフェースの表示を生成するステップ、
を更に含む請求項１に記載の方法。
【請求項３】
前記通信回線が、ＴＣＰ／ＩＰネットワーク接続、ＵＳＢ接続、ファイヤーワイヤ（Ｆｉｒｅｗｉｒｅ）接続、又はプロセス間メッセージングシステムのうちの一つである、請求項１に記載の方法。
【請求項４】
前記対象装置が、携帯型ビデオゲーム装置、携帯型メディアプレーヤー、携帯電話機、プロトタイプ装置を含む開発ボード、パーソナルコンピュータシステム、又はこれらの組み合わせを提供する集合装置のうちの一つである、請求項１に記載の方法。
【請求項５】
前記第１の動作状態がリアルタイムパフォーマンスモードであり、
前記グラフィックアプリケーションがフレームをレンダリングしている間に、前記対象装置上の前記グラフィックパイプラインによりレンダリングされる各フレームの前記性能データ及び状態データを記録する、
請求項１に記載の方法。
【請求項６】
前記動作状態がフレームデバッグモードであり、
前記計装ドライバが、前記グラフィックパイプラインによりレンダリングされる特定のフレームに対して複数の性能テストを実行し、前記ホストシステム上で実行されている前記グラフィックアプリケーションデバッガに該性能テストの結果を送信する、
請求項１に記載の方法。
【請求項７】
前記ホストシステムが、前記通信回線を通じてコマンドを送信することで、前記ターゲットコンポーネントの前記第１の動作状態を第２の動作状態に遷移させる、請求項１に記載の方法。
【請求項８】
プログラム命令を含んでいるコンピュータ可読記憶媒体であって、
該プログラム命令が、プロセッサで実行されたときに該プロセッサに、
対象装置と、グラフィックアプリケーションデバッガのホストコンポーネントを実行するホストシステムとの間に通信回線を確立するステップと、
前記対象装置上にグラフィックアプリケーションを呼び出すステップであって、該グラフィックアプリケーションが、該対象装置上に存在するグラフィックパイプライン用に提供された計装ドライバにより提供されるグラフィックコマンドを呼び出し、該計装ドライバが、該対象装置での該グラフィックアプリケーションの実行に関する性能データ及び状態データを記録する前記グラフィックアプリケーションデバッガのターゲットコンポーネントを含んでいる、ステップと、
前記ターゲットコンポーネントの第１の動作状態を判定するステップと、
前記ターゲットコンポーネントの前記第１の動作状態に基づいて、前記対象装置での前記グラフィックアプリケーションの実行に関する前記記録された性能データ及び状態データの一部を、前記通信回線を通じて前記ホストコンポーネントに送信するステップと、
グラフィック処理ユニットを制御することで特定の一連の図形要素を選り分けるためのコマンドを、前記ホストコンポーネントから前記通信回線を通じて前記対象装置に送信するステップと
を含む方法を実行させることで、前記プロセッサに、前記対象装置上で実行されているグラフィックアプリケーションのデバッグ及びパフォーマンス調整をさせる、
コンピュータ可読記憶媒体。
【請求項９】
前記方法が、前記記録された性能データ及び状態データを前記ホストシステムにより受信し、前記第１の動作状態に基づいて、前記ホストシステムにおいてユーザインタフェースの表示を生成するステップを更に含む、
請求項８に記載のコンピュータ可読記憶媒体。
【請求項１０】
前記通信回線が、ＴＣＰ／ＩＰネットワーク接続、ＵＳＢ接続、ファイヤーワイヤ（Ｆｉｒｅｗｉｒｅ）接続、又はプロセス間メッセージングシステムのうちの一つである、請求項８に記載のコンピュータ可読記憶媒体。
【請求項１１】
前記対象装置が、携帯型のビデオゲーム装置、携帯型のメディアプレーヤー、携帯電話機、プロトタイプ装置を含む開発ボード、パーソナルコンピュータシステム、又はこれらの組み合わせを提供する集合装置のうちの一つである、請求項８に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記第１の動作状態がリアルタイムパフォーマンスモードであり、
前記グラフィックアプリケーションがフレームをレンダリングしている間に、前記対象装置上の前記グラフィックパイプラインによってレンダリングされる各フレームの前記性能データ及び状態データを記録する、
請求項８に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記動作状態がフレームデバッグモードであり、
前記計装ドライバが、前記グラフィックパイプラインによりレンダリングされる特定のフレームに対して複数の性能テストを実行し、前記ホストシステム上で実行されている前記グラフィックアプリケーションデバッガに該性能テストの結果を送信する、
請求項８に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記ホストシステムが、前記通信回線を通じてコマンドを送信することで、前記ターゲットコンポーネントの前記第１の動作状態を第２の動作状態に遷移させる、
請求項８に記載のコンピュータ可読記憶媒体。
【請求項１５】
対象装置上で実行されているグラフィックアプリケーションをデバッグ及びパフォーマンス調整するシステムであって、
対象装置と、グラフィックアプリケーションデバッガのホストコンポーネントを実行するホストシステムとの間の通信回線と、
前記対象装置上に存在するグラフィック処理ユニット内のグラフィックパイプライン用に提供され、グラフィックアプリケーションデバッガのターゲットコンポーネントを含む、前記対象装置上の計装ドライバであって、該グラフィックアプリケーションが、該対象装置上に存在するグラフィックパイプラインによる実行用の前記計装ドライバにより提供されるグラフィックコマンドを呼び出し、該グラフィックアプリケーションデバッガのターゲットコンポーネントが、
前記対象装置上の前記グラフィックアプリケーションの実行に関する性能データ及び状態データを、前記グラフィック処理ユニットに接続されているメモリに記録し、
前記ターゲットコンポーネントの第１の動作状態を判定し、
前記ターゲットコンポーネントの前記第１の動作状態に基づいて、前記対象装置上の前記グラフィックアプリケーションの実行に関する前記記録された性能データ及び状態データの一部を、前記通信回線を通じて前記ホストコンポーネントに送信し、
前記グラフィック処理ユニットを制御することで特定の一連の図形要素を選り分けるためのコマンドを、前記ホストコンポーネントから前記通信回線を通じて受信する、該計装ドライバと、
を備えるシステム。
【請求項１６】
前記ホストシステムが、
前記記録された性能データ及び状態データを受信し、
前記第１の動作状態に基づいて、前記ホストシステムにおいてユーザインタフェースの表示を生成する、
請求項１５に記載のシステム。
【請求項１７】
前記通信回線が、ＴＣＰ／ＩＰネットワーク接続、ＵＳＢ接続、ファイヤーワイヤ（Ｆｉｒｅｗｉｒｅ）接続、又はプロセス間メッセージングシステムのうちの一つである、請求項１５に記載のシステム。
【請求項１８】
前記対象装置が、携帯型のビデオゲーム装置、携帯型のメディアプレーヤー、携帯電話、プロトタイプ装置を含んでいる開発ボード、パーソナルコンピュータシステム、又はこれらの組み合わせを提供する集合装置のうちの一つである、請求項１５に記載のシステム。
【請求項１９】
前記第１の動作状態がリアルタイムパフォーマンスモードであり、
前記グラフィックアプリケーションがフレームをレンダリングしている間に、前記対象装置上の前記グラフィックパイプラインによりレンダリングされる各フレームの前記性能データ及び状態データを記録する、
請求項１５に記載のシステム。
【請求項２０】
前記動作状態がフレームデバッグモードであり、
前記計装ドライバが、前記グラフィックパイプラインによりレンダリングされる特定のフレームに対して複数の性能テストを実行し、前記ホストシステム上で実行されている前記グラフィックアプリケーションデバッガに前記性能テストの結果を送信する、
請求項１５に記載のシステム。
【請求項２１】
前記ホストシステムが、前記通信回線を通じてコマンドを送信することで、前記ターゲットコンポーネントの前記第１の動作状態を第２の動作状態に遷移させる、請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明の実施形態は、コンピュータグラフィックに関し、より詳細には、遠隔装置で実行されているグラフィックアプリケーションを分析及びパフォーマンス調整する通信プロトコル及びクライアントサーバシステムに関する。
【背景技術】
【０００２】
[0002]用語「レンダリング」は、物体や背景を描いた画像をコンピュータで作成するときにコンピュータソフトウェア及びハードウェアによって実行される処理を意味する。一般に、グラフィックハードウェアは、各フレームに指定されている図形要素集合に対してオブジェクト幾何学演算、頂点演算、及びラスター演算を実行することで連続するフレームを生成するグラフィックパイプラインを含んでいる。グラフィックパイプラインは、設定を大幅に変更できることが多い。例えば、グラフィックパイプラインは、特に、様々なシェーダプログラム、ライティング定数、テクスチャマップを用いて設定可能である。ハードウェアドライバは、特定のグラフィックハードウェアと、グラフィックＡＰＩによって提供される呼出命令との間のインタフェースを提供する。グラフィックアプリケーションは、フレームを生成するためにグラフィックＡＰＩで提供される「描画」呼出命令を呼び出す。広く使用されているグラフィックＡＰＩには、Ｋｈｒｏｎｏｓグループから出されているＯｐｅｎＧＬ（登録商標）ＡＰＩや、Ｍｉｃｒｏｓｏｆｔ（登録商標）によって配布されているＤｉｒｅｃｔ３Ｄ（登録商標）ＡＰＩがある。
【０００３】
[0003]グラフィックアプリケーションをデバッグするための一般的なサイクルには、アプリケーションのコンパイル及び実行が含まれる。アプリケーション実行中に、開発者は、ハードウェア及びソフトウェアによってレンダリングされたフレームにおける異常や視覚的アーチファクトを探す。視覚的アーチファクトとしては、開発者が意図したものとは見た目が異なるフレームの要素が挙げられ、非視覚的な異常としては、フレームレンダリング速度が低いなどといった、グラフィックアプリケーションの性能不足が挙げられる。これらの問題は、とりわけ、アプリケーションにおける不適切なレンダリング状態の設定、最適ではない或いは不適切なテクスチャの使用、描画呼出しに渡される不適切なパラメータの使用に起因して発生する。
【０００４】
[0004]一般に、アプリケーションの開発者は、これらの種類の視覚的アーチファクト及びパフォーマンス上の問題を診断して解決するために単純な試行錯誤（ｅｘｐｅｒｉｍｅｎｔ）を行う。例えば、開発者は、プログラムのソースコードを微修正し、レンダリング状態を調整し、グラフィックパイプラインのパラメータを変更することで、グラフィックアプリケーションを試す。次に、開発者は、アプリケーションを実行して結果を観察する。この方法は有効なことがあるが、しばしば手間のかかる処理となる。更に、組み込み装置や携帯装置（例えば、携帯型のビデオゲームコンソール、携帯電話機、集合装置）などのような、特定のターゲットプラットフォームで問題を診断して修正しようとするときには、グラフィックアプリケーションを対象装置上に展開（ｄｅｐｌｏｙ）しなければならないため、この処理は更に複雑となることがある。
【０００５】
[0005]純粋にアドホックな手法に起因するこれらの問題に対処するために、グラフィックアプリケーションデバッガを利用できる。しかしながら、これらのアプリケーションは、一般にグラフィックアプリケーションと同じシステム上で実行される。しかしながら、この方法は、携帯装置のグラフィックアプリケーションの場合には携帯装置の画面サイズの問題で非実用的である。例えば、現在利用可能な携帯型のビデオゲーム装置のほとんどは、画面の解像度が３２０×２４０ピクセル、又は６４０×４８０ピクセルである。従って、有用なデバッグインタフェースを開発者に提供するには画面表示が小さすぎることがある。更に、携帯装置は、グラフィックアプリケーションと平行してグラフィックアプリケーションデバッガを実行するのに必要な処理能力（又はマルチタスク能力）を備えていないことがある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
[0006]上述したように、この技術分野には、遠隔のグラフィック装置を分析及びパフォーマンス調整するクライアントサーバシステムのニーズが依然として存在している。
【課題を解決するための手段】
【０００７】
[0007]本発明の実施形態は、遠隔装置上で実行されているグラフィックアプリケーションの性能分析及びデバッグに使用されるデータ通信プロトコル及びクライアントサーバアーキテクチャを提供する。遠隔装置は、携帯型のビデオゲームコンソール、携帯電話機、又は集合装置でもよいし、パーソナルコンピュータシステムでもよい。一実施形態においては、グラフィックアプリケーションデバッガは、ホストコンポーネントとターゲットコンポーネントとを含んでいてもよい。ホストコンポーネントはホストシステム上で実行され、開発者にデバッグインタフェースを提供する。このインタフェースは、対象装置上のグラフィックアプリケーション及びグラフィックパイプラインの実行状態及び性能に関する一連のデータを提供することができる。
【０００８】
[0008]本発明の一実施形態では、対象装置で実行されるように構成されたグラフィックアプリケーションをデバッグ及びパフォーマンス調整する方法を示す。この方法は、一般的には、対象装置と、グラフィックアプリケーションデバッガのホストコンポーネントを実行しているホストシステムとの間に通信回線を確立するステップと、対象装置上にグラフィックアプリケーションを呼び出すステップとを含んでいる。グラフィックアプリケーションは、対象装置に存在するグラフィックパイプライン用の計装ドライバ（ｉｎｓｔｒｕｍｅｎｔｅｄ  ｄｒｉｖｅｒ）により提供されるグラフィックコマンドを呼び出すように構成されており、計装ドライバは、対象装置上のグラフィックアプリケーションの実行に関するデータを記録する、グラフィックアプリケーションデバッガのターゲットコンポーネントを含んでいる。更に、この方法は、ターゲットコンポーネントの第１の動作状態を判定するステップと、ターゲットコンポーネントのこの第１の動作状態に基づいて、対象装置上のグラフィックアプリケーションの実行に関するデータの一部を通信回線を通じてホストコンポーネントに送信するステップと、を含んでいる。
【０００９】
[0009]上述した本発明の特徴を詳しく理解できるように、上記のように簡潔に要約した本発明について、実施形態を参照しながら更に具体的に説明する。いくつかの実施形態は添付図面に示している。しかしながら、添付図面は、本発明の代表的な実施形態を示しているに過ぎず、従って、本発明の範囲を制限するように解釈されないものとする。本発明は、同等の効果を備える別の実施形態を含んでいる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係る、遠隔装置上で実行されているグラフィックアプリケーションを分析するクライアントサーバ環境の概念図である。
【図２】本発明の一実施形態に係る、遠隔装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するためにホストシステムによって使用される通信プロトコルの状態図である。
【図３】本発明の一実施形態に係る、ホストシステム上で実行されているグラフィックアプリケーションデバッガによってデバッグされているグラフィックアプリケーションを実行するターゲットシステムの通信プロトコルの状態図である。
【図４】本発明の一実施形態に係る、ホストシステムが遠隔のグラフィック装置上で実行されているグラフィックアプリケーションをデバッグ及び調整する方法を示す流れ図である。
【図５】本発明の一実施形態に係る、対象装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するために使用されるホストシステム上で実行されるグラフィックアプリケーションデバッガのユーザインタフェースの概念図である。
【図６】本発明の一実施形態に係る、対象装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するために使用されるホストシステム上で実行されるグラフィックアプリケーションデバッガのユーザインタフェースの概念図である。
【図７】本発明の一実施形態に係る、対象装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するために使用されるホストシステム上で実行されるグラフィックアプリケーションデバッガのユーザインタフェースの概念図である。
【発明を実施するための形態】
【００１１】
[0015]本発明の実施形態は、遠隔装置上で実行されているグラフィックアプリケーションの性能分析及びデバッグに使用されるデータ通信プロトコル及びクライアントサーバアーキテクチャが提供される。遠隔装置は、携帯型のビデオゲームコンソール、携帯電話機、又は集合装置でもよいし、パーソナルコンピュータシステムでもよい。一実施形態においては、グラフィックアプリケーションデバッガはホストコンポーネントとターゲットコンポーネントとを含んでもよい。ホストコンポーネントは、ホストシステム上で実行され、デバッグインタフェースを開発者に提供する。このインタフェースは、対象装置上のグラフィックアプリケーション及びグラフィックパイプラインの実行状態及び性能に関する一連のデータを提供できる。
【００１２】
[0016]対象装置上で実行されているターゲットコンポーネントは、グラフィックパイプラインの性能に関連するデータを記録して、そのデータを通信回線を介してホストシステムに送信することができる。例えば、対象装置は、グラフィックアプリケーションデバッガのホストコンポーネントと通信する、グラフィックデバイスドライバの計装バージョン（ｉｎｓｔｒｕｍｅｎｔｅｄ  ｖｅｒｓｉｏｎ）を含んでもよい。一実施形態においては、グラフィックアプリケーションが対象装置で実行されている間、ホストシステムと対象装置との間の接続をいつでも確立することができる。接続が確立すると、開発者は、対象装置上のグラフィックパイプラインの状態と、対象装置上のアプリケーションのパフォーマンスとに関する情報をホストデバイス上で調査することができる。更に、開発者は、ユーザインタフェースと対話して、リアルタイムストリーミングモード、デバッグモードと、及び性能分析モードの間で遷移させることができる。
【００１３】
[0017]次に、パフォーマンスのツール、グラフ、及び試行錯誤を使用して、特定のフレームのレンダリング時にグラフィックパイプラインにおいて行われた処理を掘り下げて詳しく調べることができる。デバッグモードと性能分析モードは、開発者が、対象装置上のグラフィックパイプラインによってレンダリングされたフレームのいくつかの側面を調べて評価する目的に使用することができる。この情報を使用して、開発者は、グラフィックパイプラインにおける最も低速の段階を識別して機能上の問題をデバッグすることにより、グラフィックアプリケーションのパフォーマンスを高めることができる。従って、本発明の実施形態では、分析及びパフォーマンス調整を行うクライアントサーバシステムを提供することによって、開発者は、対象装置上のグラフィックパイプラインにおけるパフォーマンスのボトルネックを特定して最適化することができ、これは有利である。
【００１４】
[0018]図１は、本発明の一実施形態に係る、遠隔装置上で実行されているグラフィックアプリケーションを分析するクライアントサーバ環境１００の概念図である。図１に示したクライアントサーバ環境１００は、既存のコンピュータシステム（例えば、デスクトップコンピュータ、サーバコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、携帯装置など）を表している。しかしながら、本明細書に記載したソフトウェアアプリケーションは、特定の計算システム或いは計算装置に限定されることはなく、新たな計算システムが登場したときにそれを利用するように適合させることができる。当業者は、図１に示した構成要素が本発明の態様が強調されるように単純化され、典型的なホストシステム１０５及び対象装置１２５が他の様々な種類の構成要素を含んでもよいことを認識するであろう。
【００１５】
[0019]更には、システム１００に示したソフトウェアアプリケーションは、１つのコンピュータシステムで実行されたり、ローカルエリアネットワークや、インターネットのような大規模なワイドエリアネットワークなどのコンピュータネットワークを通じて通信する分散システムで実行されたりするように実装されてもよい。また、本発明の実施形態は、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、フラッシュメモリモジュールなどの有形の記憶媒体のようなコンピュータ可読媒体に格納された一つ以上のアプリケーションプログラムとして提供されてもよい。
【００１６】
[0020]図示するように、クライアントサーバ環境１００は、ホストシステム１０５と、ディスプレイ画面１３０を有する対象装置１２５と、通信回線１２０とを含んでいる。ホストシステム１０５は、グラフィックアプリケーションデバッガのホストコンポーネント１１０１を実行するコンピュータシステムである。ユーザインタフェース１１５は、対象装置１２５上で実行されているグラフィックアプリケーション１６０を分析及びデバッグするために使用されるグラフィカル要素（例えば、ウィンドウ、メニューボタン、リボン、ダイアログボックス）の任意の組み合わせを開発者に提供可能である。ユーザインタフェース１１５によって、開発者は、デバッグセッションを開始して、様々なデバッグ機能を実行することができる。一実施形態においては、ユーザインタフェース１１５は、対象装置１２５上でレンダリングされたフレーム画像と、対象装置１２５上で実行されているグラフィックアプリケーション１６０の性能に関するデータを示す図形、チャート、表の半透明のオーバーレイとを、一緒に表示することができる。
【００１７】
[0021]ホストシステム１０５は、通信回線１２０を通じて対象装置１２５と通信するように構成されてもよい。例えば、ホストシステム１０５は、ＴＣＰ／ＩＰネットワークを通じて対象装置１２５と通信してもよいし、ＵＳＢ、ファイヤーワイヤ（Ｆｉｒｅｗｉｒｅ）、シリアル接続などの直接接続を有してもよい。当然ながら、それ以外のネットワークプロトコル及び／又は通信規格を使用してもよい。更に、対象装置及びホストシステムは同一のマシンとすることができ、その場合、通信回線をプロセス間メッセージングシステムとすることができる。一実施形態においては、ホストシステム１０５は、通信プロトコルを使用して、対象装置１２５とともに様々なデバッグトランザクション（ｄｅｂｕｇｇｉｎｇ  ｔｒａｎｓａｃｔｉｏｎ）を実行する。トランザクションは、グラフィック処理ユニット１４０又はグラフィックパイプライン１４５の構成設定又は状態を制御するためにホストシステム１０５から対象装置１２５に送信されるコマンドを含んでもよい。例えば開発者は、通信回線１２０を通じて送信されるコマンドによって、グラフィックアプリケーション１６０のアニメーション速度の変更、詳細な評価のためのアニメーションの個々のフレームの選択、特定の一連の図形要素の選り分け、グラフィックＡＰＩの状態要素（例えばライティング）の一時的な変更又は無効化を行うことができる。その他のトランザクションには、（リアルタイムストリーミングモードの一部として）パフォーマンスカウンタ及びグラフィックデータを対象装置１２５からホストシステム１０５に流すトランザクションと、（デバッグモード又は性能分析モードの一部として）アニメーションのフレームに対するパイプラインの状態及びフレームデータを対象装置１２５からホストシステム１０５に送信するトランザクションとが含まれうる。
【００１８】
[0022]対象装置１２５は、グラフィックアプリケーション１６０を実行するように構成された任意の種類の装置とすることができる。対象装置１２５の例としては、携帯型のビデオゲームコンソール、携帯型メディアプレーヤー、携帯電話機、或いはこれらの種類の装置を１つの物理筐体にまとめた集合装置が挙げられる。当然ながら、対象装置１２５はパーソナルコンピュータシステムであってもよい。対象装置１２５は、プロトタイプ装置のハードウェアコンポーネントのすべてを有する開発ボードであってもよい。図示するように、対象装置１２５は、ディスプレイ画面１３０と、フレームバッファ１３５と、グラフィック処理ユニット（ＧＰＵ）１４０と、計装ドライバ１５０と、ＣＰＵ１５５と、グラフィックアプリケーション１６０とを含んでいる。
【００１９】
[0023]グラフィックアプリケーション１６０は、ＣＰＵ１５５上で実行されるソフトウェアアプリケーションを表している。例えば、グラフィックアプリケーション１６０は、携帯型のゲーム装置上で実行されるビデオゲームであってもよい。中央処理装置（ＣＰＵ）１５５は、グラフィックアプリケーション１６０を実行する処理装置である。一実施形態においては、グラフィックアプリケーション１６０は、一般にはグラフィックＡＰＩ（例えば、ＯｐｅｎＧＬ  ＡＰＩ）によって定義されている特定のグラフィックレンダリングタスクを実行する機能を呼び出すことができる。グラフィックＡＰＩによって定義された周知のグラフィックタスクの一つは、「描画」演算の呼出しである。グラフィックアプリケーション１６０が、描画呼出しなどの、グラフィックＡＰＩによって提供される機能を呼び出した場合に、計装ドライバ１５０がＧＰＵ１４０上でそのコマンドを実行してもよい。より一般的には、計装ドライバ１５０は、対象装置１２５の特定のグラフィックハードウェア用のグラフィックＡＰＩにより提供された標準インタフェースの機能を実行できる。
【００２０】
[0024]図示するように、計装グラフィックドライバ１５０は、グラフィックアプリケーションデバッガのターゲットコンポーネント１１０２を含んでいる。一実施形態においては、ターゲットコンポーネント１１０２は、ホストコンポーネント１１０１に対応するコンポーネントである。計装ドライバ１５０は、グラフィックＡＰＩの機能を実行することに加えて、ＧＰＵ１４０の特定のコンポーネントを監視してそのコンポーネントに関連する性能データ及び状態データを記録するコード命令を含んでもよい。例えば計装ドライバ１５０は、グラフィックパイプライン１４５の動作に関する状態データ及び性能情報を出力するコード命令を含んでもよい。
【００２１】
[0025]グラフィックパイプライン１４５は、３Ｄグラフィック機能を実行するように構成された一連のシェーディングユニットを提供することが可能である。知られているように、これは特に、ライティング効果、オブジェクト変換、及び３Ｄ動作を計算する機能を含むのが一般的である。グラフィックパイプライン１４５に設けることが可能な一般的なシェーダユニットとしては、頂点シェーダユニット、幾何シェーダユニット、ピクセルシェーダユニット、及びラスター演算ユニットが挙げられる。知られているように、グラフィックパイプラインのシェーディングユニットは、一連の図形要素から始まるグラフィックデータを連続的に処理し、最終的にディスプレイ画面１３０上の各画素（すなわち、各ピクセルの）の色及び強度値を決定することができる。一般には、完全な画像が生成されてディスプレイ画面１３０に出力されるまで、ピクセル値が算出されてフレームバッファ１３５に格納される。
【００２２】
[0026]図２は、本発明の一実施形態に係る、ホストシステムで実行されるグラフィックアプリケーションデバッガによってデバッグされるグラフィックアプリケーションを実行する対象装置により使用される通信プロトコルの状態図２００を示している。図示するように、状態図２００は、対象装置の一連の状態２０５〜２５０と、状態２０５〜２５０を結ぶ有向矢印により表された状態間の一連の遷移とを含んでいる。リスン状態２０５は、対象装置がグラフィックアプリケーションを実行可能であるが、グラフィックデバッグアプリケーションを実行しているホストシステムと対象装置との間にまだ接続が確立されていない状態に対応する。このような状態において、計装ドライバは、ホストシステムからのコマンドを待つ。対象装置が接続を確立するためのコマンドをホストシステムから受信すると、対象装置は状態２０５から接続確立状態２１０に遷移する。状態２１０において、対象装置は、ホストシステムとの「ハンドシェーク」動作を実行する。例えば一実施形態においては、対象装置は、対象装置の種類、グラフィックパイプラインの能力、対象装置上で実行されている計装ドライバのバージョン、及びその他の類似する情報を識別するための４バイト（又はそれ以外のサイズ）の値を通信回線を介して送信することができる。対象装置は、ホストシステムからの応答メッセージを受信して「ハンドシェーク」を完了するまで状態２１０を維持する。エラーが起こった場合には、対象装置は例外回復状態２１５に遷移し、その後、状態２０５又は状態２１０のいずれかに戻ることができる。
【００２３】
[0027]対象装置とホストシステムとの間に接続が確立されると、対象装置はアプリケーションリアルタイム監視状態２２５に遷移する。状態２２５において、対象装置は、グラフィックアプリケーションを実行し、ＧＰＵ及びグラフィックパイプラインを使用してフレームをレンダリングする。それと同時に、計装ドライバに含まれているグラフィックアプリケーションデバッガのターゲットコンポーネントが、ＧＰＵ及びグラフィックパイプラインに関する性能データ及び状態データを記録する。一実施形態においては、計装ドライバは、ホストシステムとの間に確立されている通信回線を通じて性能データを送信することができる。状態２２５である間、開発者は一般に、低いパフォーマンス或いは望ましくない視覚的アーチファクトを示しているフレームを特定するまで、対象装置で実行されているグラフィックアプリケーションと対話する。そのようなフレームを特定した時点で、開発者は対象装置の状態を、状態２２５から、フレームデバッグ初期化状態２２０かパフォーマンスプロファイリング初期化状態２３０のいずれかに遷移させることができる。
【００２４】
[0028]フレームデバッグ状態２２０において、計装ドライバは、対象装置上で実行されているアプリケーションとグラフィックパイプライン上で実行されている処理とを一時中断する。対象装置は、状態２２０に遷移するためのコマンドをホストシステムから受信すると状態２２０に遷移することができる。対象装置は状態２２０からフレーム送信状態２４０に遷移できる。このフレーム送信状態２４０では、計装ドライバが特定のフレームに関する情報をホストシステム上で実行中のグラフィックアプリケーションデバッガに送信する。例えば、計装ドライバは、テクスチャバッファの内容と、フィルタリングパラメータの値、フレームを描画するために使用される描画呼出しに渡されるパラメータ、グラフィックパイプラインに渡される幾何データ及び頂点データなどを送信することができる。送信されると、開発者はアプリケーションが一時中断された特定のフレームに関連する様々な要素を調べて評価することができる。
【００２５】
[0029]パフォーマンスプロファイリング状態２３０においても、計装ドライバは、対象装置上で実行されているアプリケーションを一時中断させることができる。対象装置は状態２３０からフレーム送信状態２４５に遷移できる。この状態２４５では、計装ドライバは一連のテストを実行することで、現在のフレームにおける描画呼出しのそれぞれについて様々なドライバ及びＧＰＵパフォーマンスカウンタに問い合わせ、ホストシステム上で実行されているグラフィックアプリケーションデバッガにその情報を送信する。
【００２６】
[0030]フレームデバッグデータ又はパフォーマンスプロファイルデータのいずれかを送信した後に、対象装置は状態２４０及び状態２４５からアイドル状態２５０に遷移することができる。対象装置は、フレームデバッグ初期化状態２２０、アプリケーションリアルタイム監視状態２２５、パフォーマンスプロファイリング初期化状態２３０のうちの一つに遷移するためのコマンドをホストシステム上で実行されているグラフィックアプリケーションデバッガから受信するまで、状態２５０を維持する。
【００２７】
[0031]図３は、本発明の一実施形態に係る、遠隔装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するホストシステムにより使用される通信プロトコルの状態図３００を示している。状態図３００は、ホストシステムの観点からみると状態図２００に対応している。対象装置によって受信されるコマンドはホストシステムにより送信され、対象装置により送信された応答及びデータはホストシステムによって受信される。図示するように、状態図３００は、ホストシステムの一連の状態３０５〜３５０と、有向矢印によって表された状態３０５〜３５０間の一連の遷移とを含んでいる。未接続状態３０５は、ホストシステムが対象装置にコマンドを送信する（次いで、リスン状態２０５になる）状態に対応している。ホストシステム装置は状態３０５から接続確立状態３１０に遷移することができる。この状態においては、ホストシステムは上述した「ハンドシェーク」動作のうちの担当部分を実行する。例えば一実施形態においては、ホストシステムは、ホストシステム上で実行されているグラフィックアプリケーションデバッガの能力に関連する情報を対象装置に提供するための４バイト（又はそれ以外のサイズ）の値を通信回線を介して送信することができる。エラーが起こった場合には、ホストシステムは例外回復状態３１５に遷移し、その後、状態３０５又は状態３１０のいずれかに戻ることができる。
【００２８】
[0032]対象装置とホストシステムとの間に接続が確立されると、ホストシステムは（対象装置のリアルタイム監視状態２２５に対応する）性能データ受信状態３２５に遷移することができる。状態３２５である間、ホストシステムは、対象装置の性能に関連するデータを通信回線を通じて受信できる。ホストシステムは、このデータを、アプリケーションの性能の様々な側面を強調表示したグラフ、チャート、表の任意の組み合わせによって開発者に提供することができる。一実施形態においては、ホストシステム上のグラフィックアプリケーションデバッガは、タイミンググラフを使用して、各フレームの様々なタスクに消費された時間を示すことができる。この情報には例えば、フレームあたりのミリ秒、ＣＰＵ又はＧＰＵがアイドルである時間の割合、メモリ使用量、描画呼出しの回数、オーバーヘッド、グラフィックパイプラインのシェーディングユニットがアクティブ又はアイドルである時間長が含まれ得る。一般には、状態３２５である間、開発者は、低いパフォーマンス或いは望ましくない視覚的アーチファクトを示しているフレームを特定するまで、対象装置上で実行されているグラフィックアプリケーションと対話することができる。
【００２９】
[0033]対象装置の状態２２０及び状態２４０に対応する状態３２０においては、ホストシステムは、特定のフレームのデバッグ情報を対象装置から受信することができる。上述したように、例えば計装ドライバは、テクスチャバッファの内容、フィルタリングパラメータの値、フレームを描画するために使用される描画呼出しに渡されるパラメータ、グラフィックパイプラインに渡される幾何データ及び頂点データをホストシステムに送信することができる。送信されると、開発者は、ホストシステム上で実行されているグラフィックアプリケーションデバッガを使用して、特定のフレームの要素を評価することができる。
【００３０】
[0034]対象装置の状態２３０及び状態２４５に対応する状態３３０においては、ホストシステムは、プロファイリングされた対象装置の性能特性に関連するプロファイル情報を対象装置から受信することができる。フレームデバッグデータ又はパフォーマンスプロファイルデータを受信すると、ホストシステムは状態３２０及び状態３３０からアイドル状態３５０に遷移することができる。状態３５０においては、通信回線は確立されたままであり利用可能であるが、ホストシステムから対象装置にコマンドは送信されない。ホストシステムは、開発者がグラフィックアプリケーションデバッガを使用して状態３２０、状態３２５、状態３３０のうちの一つに遷移するためのコマンドを送信するまで、状態３５０を維持する。
【００３１】
[0035]図４は、本発明の一実施形態に係る、遠隔のグラフィック装置上で実行されているグラフィックアプリケーションをホストシステムがデバッグ及び調整する方法４００を示す流れ図である。この方法を図１のシステムに関連して説明しているが、当業者は、方法４００の一連のステップを順序を問わず実行するシステムが本発明の範囲内であることを理解するであろう。
【００３２】
[0036]ステップ４０５において、開発者は、ホストシステム上でデバッグアプリケーションを起動することができる。起動すると、デバッグアプリケーションは、ステップ４１０において対象装置との接続の確立を開始できる。例えば、ホストシステム上のデバッグアプリケーションは、上述した「ハンドシェーク」処理を開始するためのコマンドを通信回線を通じて送信し、対象装置からの応答を待機することができる。ステップ４１５において、開発者は対象装置上でグラフィックアプリケーションを起動することができる。
【００３３】
[0037]接続が確立された状態で、ホストシステム上で実行されているグラフィカルデバッグアプリケーションを使用して、対象装置上で実行されているアプリケーションをデバッグすることができる。従って、ステップ４２０において、ステップ４２０〜ステップ４６０を含むループが開始され、このループにおいて、対象装置の計装ドライバが、開発者によって選択された動作モードに基づいて、デバッグするアプリケーションに関するデータをホストシステムに送信する。ステップ４２０において、対象装置はデバッガの動作モードを識別する。一実施形態においては、グラフィックデバッグアプリケーションは、最初に起動されると、開発者によって別のモードに遷移するまでリアルタイムストリーミングモードで開始する。ステップ４３０においてリアルタイム監視モードがアクティブである場合には、ステップ４３５において計装ドライバは、対象装置上でグラフィックアプリケーションが実行されている間、パイプラインの状態データを送信する。上述したように、計装ドライバは例えば、フレームあたりのミリ秒、ＣＰＵ又はＧＰＵがアイドルである時間の割合、メモリ使用量、描画呼出しの回数、オーバーヘッド、グラフィックパイプラインのシェーディングユニットがアクティブ又はアイドルである時間長に関するデータをホストシステムに送信することができる。ホストシステムはこの情報を受信し、アプリケーションの性能の様々な側面を強調表示するグラフ、チャート、又は表の任意の組み合わせを表示することができる。更に、リアルタイム監視モードである間、開発者は、対象装置上で実行されているグラフィックアプリケーションのいくつかの状況を制御することができる。例えば開発者は、グラフィックアプリケーションのアニメーション速度を変更したり、グラフィックＡＰＩ（例えば、ライティング）の状態要素を一時的に変更又は無効化したりすることができる。
【００３４】
[0038]ステップ４６０において、開発者は、詳細に評価するフレームを特定すると、グラフィックアプリケーションデバッガを使用してモード変更コマンドを対象装置に送信することができる。すると、方法４００はステップ４２０に戻り、対象装置がデバッガの動作モードを識別する。
【００３５】
[0039]ステップ４４０において、フレームデバッグモードがアクティブである場合には、対象装置上の計装ドライバは現在選択されているフレームのフレームデータを生成し、それをホストシステムに送信する。上述したように、フレームデバッグモードにおいては、計装ドライバは、テクスチャバッファの内容、フィルタリングパラメータの値、フレームを描画するために使用される描画呼出しに渡されるパラメータ、グラフィックパイプラインに渡される幾何データ及び頂点データ、フレームバッファの内容などを送信することができる。
【００３６】
[0040]或いは、ステップ４５０において開発者がプロファイリングモードを選択した場合には、ステップ４５５において、対象装置上の計装ドライバは現在選択されているフレームのプロファイリングデータを生成し、それをホストシステムに送信することができる。上述したように、パフォーマンスプロファイリングモードにおいては、計装ドライバは一連のテストを実行し、グラフィックパイプラインの性能を問い合わせることができる。方法４００は、次のモード変更が検出されるまで、ステップ４３５、ステップ４４５、及びステップ４５５からステップ４６０に遷移することができる。
【００３７】
[0041]図５〜図７は、本発明の一実施形態に係る、対象装置上で実行されているグラフィックアプリケーションをデバッグ及び調整するために使用されるホストシステム上で実行されるグラフィックアプリケーションデバッガのユーザインタフェースの概念図である。より詳しく言うと、図５は、ホストシステム上で実行されているグラフィックアプリケーションデバッガのリアルタイム監視モード（図３の状態３２５）におけるインタフェースの例示的な画面を示している。図示するように、インタフェース５００は、特定の種類の対象装置上で実行されているグラフィックアプリケーションの名前を表すステータスボックス５０５を含んでいる。更に、ステータスボックス５００は、接続が確立されていること、及びグラフィックアプリケーションデバッガが現在リアルタイム監視モードであることも表している。一連のボタン５１０は、対象装置上のアニメーション速度の上げ下げや、対象装置でのレンダリングの一時停止、或いは別のモードへの遷移のために使用できる。
【００３８】
[0042]更に、図示するように、タイミンググラフ５１５及び棒グラフ５２０は、対象装置上のグラフィックパイプラインの性能を視覚的に示している。示されているように、タイミンググラフ５１０は、ＣＰＵ及びＧＰＵの利用状況のタイミンググラフと、フレームレンダリング速度とを示している。棒グラフ５２０は、対象装置上でのビデオメモリ及びシステムメモリの使用量を表している。当然ながら、タイミンググラフ５１５及び棒グラフ５２０の内容は、対象装置から伝送されてインタフェース５００において提示される情報の例を示すものであり、対象装置により実行されるリアルタイムのレンダリング以外の態様をインタフェース５００において提示してもよい。更に、インタフェース５００によって、開発者は、対象装置のレンダリング状態を変更してグラフィックパイプラインの特定の部分を分割したり、レンダリングパフォーマンスの様々な態様を評価したりすることができる。例えば、開発者は、ＧＰＵに２×２のテクスチャを強制的に使用させることによってテクスチャ帯域幅（ｔｅｘｔｕｒｅ  ｂａｎｄｗｉｄｔｈ）のボトルネックについてテストしたり、１×１のシザー矩形を使用することによって頂点ユニットを分離することですべてのラスター演算及びピクセル処理を省略したり、すべての描画呼出しを無視するように伝えるコマンドを計装ドライバに送信することでドライバのオーバーヘッドを評価したりすることができる。当然ながら、他のデバッグ手法を使用してもよい。
【００３９】
[0043]上述したように、開発者は、低いパフォーマンス或いは望ましくない視覚的アーチファクトを示しているフレームを特定するまで、対象装置上で実行されているグラフィックアプリケーションと対話することができる。そのようなフレームが特定されると、開発者は、上述したようにグラフィックアプリケーションデバッガをデバッグモードに遷移させることができる。
【００４０】
[0044]図６は、ホストシステム上で実行されているグラフィックアプリケーションデバッガのフレームデバッグモード（図３の状態３２０）におけるインタフェースの例示的な図である。図示するように、インタフェース６００は、テクスチャディスプレイ６０５と、レンダリングフレームディスプレイ６１０と、スライダーバー６１５と、ボタン６２０，６２５とを含んでいる。レンダリングフレームディスプレイ６１０は、各描画呼出しが実行されているときのレンダリングフレームの状態を示している。スライダーバー６１５は、フレーム作成のために用いられる描画呼出しのそれぞれに移動する目的で使用される。テクスチャディスプレイ６０５は、スライダーバー６１５の位置に基づいて決まる特定の描画呼出しに対して設定されている、対象装置上のテクスチャユニットの内容を表示する。ボタン６２０，６２５は、別のデバッグモードに遷移するために使用される。当然ながら、インタフェース６００はグラフィックアプリケーションデバッガのインタフェースの例を示しているのであり、その配置及び内容は、特定の場合における開発者のニーズに合うように変更してもよい。
【００４１】
[0045]図７は、ホストシステム上で実行されているグラフィックアプリケーションデバッガのパフォーマンスプロファイリングモード（図３の状態３３０）におけるインタフェース７００の例示的な図である。上述したように、ホストシステムによって対象装置がプロファイリングモードに遷移すると、計装ドライバは、一連のテストを実行して、現在のフレームにおける各描画呼出しについて、様々なドライバ及びＧＰＵパフォーマンスカウンタに問い合わせる。一実施形態においては、この情報をホストシステムに送信し、グラフィックアプリケーションデバッガにより提供されるインタフェース上に表示してもよい。
【００４２】
[0046]説明すると、インタフェース７００は、一連のテストを実行して、現在のフレームにおける各描画呼出しについて様々なドライバ及びＧＰＵパフォーマンスカウンタに問い合わせた後に計装ドライバから得られたデータを示している。図示するように、インタフェース７００は、レンダリングフレームディスプレイ７１０と、スライダーバー７１５と、ユニット利用状況グラフ７２０と、ボタン７２５，７３０とから構成されている。レンダリングフレームディスプレイ７１０は、各描画呼出しが実行されるときのレンダリングフレームの状態を示している。スライダーバー７１５により、開発者は特定のフレームの複数の描画呼出しの間を効率的に移動できる。説明すると、ユニット利用状況グラフ７２０は、グラフィックパイプラインの主要なユニット（この場合には、幾何シェーダユニット、頂点シェーダユニット、及びラスター演算ユニット）のユニット利用状況バーを示している。図示するように、このようなユニットのそれぞれにおいて、最も長いバーは、そのフレーム全体に対するユニットの利用を表している。次の棒は、関連する描画呼出しのグループに対するユニットの利用を示している。例えば、同じシェーダプログラム、ラスター演算状態、及びレンダリングターゲットを使用しているすべての描画呼出しに対して性能データをグループ化することができる。各ユニットにおける最も短いバーは、スライダー７１５によって指定されている現在の描画呼出しに対するユニットの利用を表している。ボタン７２５，７３０は、別のデバッグモードに遷移するために使用される。当然ながら、インタフェース７００は、グラフィックアプリケーションデバッガのインタフェースの例を示すものであり、その配置及び内容は、特定の場合における開発者のニーズに合うように変更してもよい。例えば、性能の他の視覚的情報としては、描画呼出しの時間、倍速ｚ及びステンシルの利用状況（ｓｔｅｎｃｉｌ  ｕｓａｇｅ）、ピクセルカウントなどが挙げられる。
【００４３】
[0047]本発明の実施形態により、遠隔装置上で実行されているグラフィックアプリケーションの性能分析及びデバッグに使用されるデータ通信プロトコル及びクライアントサーバアーキテクチャが提供される。本発明の実施形態では、分析及びパフォーマンス調整のためのクライアントサーバシステムを提供することによって、開発者は、対象装置上のグラフィックパイプラインにおけるパフォーマンスのボトルネックを除去して最適化することができ、これは有利である。
【００４４】
[0048]ここまで本発明の実施形態について説明してきたが、本発明の基本的な範囲から逸脱することなく本発明の別の更なる実施形態を考えることができ、本発明の範囲は請求項によって定義されている。
【符号の説明】
【００４５】
１００…クライアントサーバ環境、１０５…ホストシステム、１１５…ユーザインタフェース、１２０…通信回線、１２５…対象装置、１３０…ディスプレイ画面、１３５…フレームバッファ、１４０…グラフィック処理ユニット、１４５…グラフィックパイプライン、１５０…計装ドライバ、１６０…グラフィックアプリケーション、１１０１…ホストコンポーネント、１１０２…ターゲットコンポーネント。
【図１】
0005246896.tif 000002
【図２】
0005246896.tif 000003
【図３】
0005246896.tif 000004
【図４】
0005246896.tif 000005
【図５】
0005246896.tif 000006
【図６】
0005246896.tif 000007
【図７】
0005246896.tif 000008