(57)【特許請求の範囲】
【請求項１】
コンピュータ・デバイスによって、外部グラフィックス・デバイスから送信されるグラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される）を受信することと、
前記コンピュータ・デバイスによって、前記外部グラフィックス・デバイスから送信されるステート情報（該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信することと、
前記コンピュータ・デバイスによって、前記外部グラフィックス・デバイスをシミュレーションするためのシミュレーションされた環境を提供するシミュレーション・アプリケーションを実行することと、
前記コンピュータ・デバイスによって、前記シミュレーション・アプリケーションの実行中に、前記グラフィックス命令及び前記ステート情報に従って前記シミュレーションされた環境内で前記グラフィックス・イメージの表現を表示することを含む方法。
【請求項２】
前記グラフィックス命令の受信、前記ステート情報の受信及び前記グラフィックス・イメージの複数のフレームに関する前記グラフィックス・イメージの前記表現の表示を、繰り返し行うことを更に含む請求項１の方法。
【請求項３】
前記外部グラフィックス・デバイスが前記グラフィックス・イメージをレンダリングするときの、前記ステート情報が前記外部グラフィックス・デバイスの１又は複数のステートを示す請求項１の方法。
【請求項４】
前記ステート情報は、前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの１又は複数のプロセッサからのステート情報を含む請求項１の方法。
【請求項５】
前記ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連するデータを含む請求項１の方法。
【請求項６】
前記コンピュータ・デバイスにより提供されるグラフィカル・ユーザ・インタフェースを介してユーザ入力（該ユーザ入力は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定する）を受信することと、
前記要求された修正を、処理のために外部グラフィックス・デバイスに送信することを更に含む請求項１の方法。
【請求項７】
前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令（該更新されたグラフィックス命令は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信することと、
前記外部グラフィックス・デバイスから、更新されたステート情報（該更新されたステート情報は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信することと、
前記更新されたグラフィックス命令及び前記更新されたステート情報により前記グラフィックス・イメージの前記更新されたバージョンを表示することを更に含む請求項６の方法。
【請求項８】
前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも１つを含む請求項６の方法。
【請求項９】
前記グラフィックス命令のビジュアル表現を表示することと、
前記ステート情報のビジュアル表現を表示することを更に含む請求項１の方法。
【請求項１０】
前記グラフィックス命令の前記ビジュアル表現を表示することは、
前記グラフィックス命令を、関連するグラフィックス・アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令にマッピングすることと、
前記グラフィックスＡＰＩ命令を表示することを更に含む請求項９の方法。
【請求項１１】
前記コンピュータ・デバイスによって、前記グラフィックス命令のビジュアル表現と前記ステート情報のビジュアル表現とのうちの少なくとも一つのユーザ修正を可能にするグラフィカル・ユーザ・インタフェースを提供することを更に含む請求項１の方法。
【請求項１２】
前記グラフィックス命令は、アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成されるバイナリ命令を含む請求項１の方法。
【請求項１３】
ナビゲーション・コントローラを表示することと、
前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信することと、
前記ユーザ入力に基づいて、前記グラフィックス・イメージの修正された斜視図を表示することを更に含む請求項１の方法。
【請求項１４】
前記グラフィックス・イメージを修正するためのユーザ入力を受信することと、
前記ユーザ入力に従って前記グラフィックス・イメージの修正されたバージョンを表示することを更に含む請求項１の方法。
【請求項１５】
前記外部グラフィックス・デバイスから、パフォーマンス情報（該パフォーマンス情報は、該外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信することと、
前記グラフィックス命令のその実行の間、前記外部グラフィックス・デバイス上での１又は複数のパフォーマンス・イッシューを識別するために、前記パフォーマンス情報を解析することを更に含む請求項１の方法。
【請求項１６】
前記パフォーマンス情報は、前記外部グラフィックス・デバイス上で前記グラフィックス命令を実行する１又は複数のプロセッサから収集されるパフォーマンス・メトリックを含む請求項１５の方法。
【請求項１７】
前記パフォーマンス情報を解析することは、前記グラフィックス命令の実行の間、前記外部グラフィックス・デバイスの前記複数のプロセッサのうちの１又は複数における減少したパフォーマンスを識別することを含む請求項１６の方法。
【請求項１８】
前記コンピュータ・デバイスにより提供されるグラフィカル・ユーザ・インタフェースを介してユーザ入力（該ユーザ入力は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定する）を受信することと、
前記要求された修正を、処理のために前記外部グラフィックス・デバイスに送信することと、
前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令（該更新されたグラフィックス命令は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信することと、
前記外部グラフィックス・デバイスから、更新されたパフォーマンス情報（該更新されたパフォーマンス情報は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信することと、
前記パフォーマンス・イッシューのうちの１又は複数が解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析することを更に含む請求項１５の方法。
【請求項１９】
前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも１つを含む請求項１８の方法。
【請求項２０】
前記更新されたグラフィックス命令及び前記更新されたパフォーマンス情報に従って、前記グラフィックス・イメージの更新された表現を表示することを更に含む請求項１８の方法。
【請求項２１】
１又は複数のプロセッサに、
外部グラフィックス・デバイスから送信されるグラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される）を受信させ、
前記外部グラフィックス・デバイスから送信されるステート情報（該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信させ、
前記外部グラフィックス・デバイスをシミュレーションするためのシミュレーションされた環境を提供するシミュレーション・アプリケーションを実行させ、
前記シミュレーション・アプリケーションの実行中に、前記グラフィックス命令及び前記ステート情報に従って前記シミュレーションされた環境内で前記グラフィックス・イメージの表現を表示させるための命令を含むコンピュータ読み取り可能な記憶媒体。
【請求項２２】
前記１又は複数のプロセッサに、前記グラフィックス命令の受信、前記ステート情報の受信及び前記グラフィックス・イメージの複数のフレームに関する前記グラフィックス・イメージの前記表現の表示を、繰り返し行わせるための命令を更に含む請求項２１のコンピュータ読み取り可能な記憶媒体。
【請求項２３】
前記外部グラフィックス・デバイスが前記グラフィックス・イメージをレンダリングするときの、前記ステート情報が前記外部グラフィックス・デバイスの１又は複数のステートを示す請求項２１のコンピュータ読み取り可能な記憶媒体。
【請求項２４】
前記ステート情報は、前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの少なくとも一つのプロセッサからのステート情報を含む請求項２１のコンピュータ読み取り可能な記憶媒体。
【請求項２５】
前記ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連するデータを含む請求項２１のコンピュータ読み取り可能な記憶媒体。
【請求項２６】
前記１又は複数のプロセッサに、
前記コンピュータ・デバイスにより提供されるグラフィカル・ユーザ・インタフェースを介してユーザ入力（該ユーザ入力は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定する）を受信させ、
前記要求された修正を、処理のために外部グラフィックス・デバイスに送信させるための命令を更に含む請求項２１のコンピュータ読み取り可能な記憶媒体。
【請求項２７】
前記１又は複数のプロセッサに、
前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令（該更新されたグラフィックス命令は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信させ、
前記外部グラフィックス・デバイスから、更新されたステート情報（該更新されたステート情報は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信させ、
前記更新されたグラフィックス命令及び前記更新されたステート情報により前記グラフィックス・イメージの前記更新されたバージョンを表示させるための命令を更に含む請求項２６のコンピュータ読み取り可能な記憶媒体。
【請求項２８】
前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも１つを含む請求項２６のコンピュータ読み取り可能な記憶媒体。
【請求項２９】
前記１又は複数のプロセッサに、
前記グラフィックス命令のビジュアル表現を表示させ、
前記ステート情報のビジュアル表現を表示させるための命令を更に含む請求項２１のコンピュータ読み取り可能な記憶媒体。
【請求項３０】
前記１又は複数のプロセッサに前記グラフィックス命令の前記ビジュアル表現を表示させるための前記命令は、
前記１又は複数のプロセッサに、
前記グラフィックス命令を、関連するグラフィックス・アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令にマッピングさせ、
前記グラフィックスＡＰＩ命令を表示させるための命令を含む請求項２９のコンピュータ読み取り可能な記憶媒体。
【請求項３１】
前記１又は複数のプロセッサに、前記グラフィックス命令のビジュアル表現と前記ステート情報のビジュアル表現とのうちの少なくとも一つのユーザ修正を可能にするグラフィカル・ユーザ・インタフェースを提供させるための命令を更に含む請求項２１のコンピュータ読み取り可能な記憶媒体。
【請求項３２】
前記グラフィックス命令は、アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成されるバイナリ命令を含む請求項２１のコンピュータ読み取り可能な記憶媒体。
【請求項３３】
前記１又は複数のプロセッサに、
ナビゲーション・コントローラを表示させ、
前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信させ、
前記ユーザ入力に基づいて、前記グラフィックス・イメージの修正された斜視図を表示させるための命令を更に含む請求項２１のコンピュータ読み取り可能な記憶媒体。
【請求項３４】
前記１又は複数のプロセッサに、
前記グラフィックス・イメージを修正するためのユーザ入力を受信させ、
前記ユーザ入力に従って前記グラフィックス・イメージの修正されたバージョンを表示させるための命令を更に含む請求項２１のコンピュータ読み取り可能な記憶媒体。
【請求項３５】
前記１又は複数のプロセッサに、
前記外部グラフィックス・デバイスから、パフォーマンス情報（該パフォーマンス情報は、該外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信させ、
前記グラフィックス命令のその実行の間、前記外部グラフィックス・デバイス上での１又は複数のパフォーマンス・イッシューを識別するために、前記パフォーマンス情報を解析させるための命令を更に含む請求項２１のコンピュータ読み取り可能な記憶媒体。
【請求項３６】
前記パフォーマンス情報は、前記外部グラフィックス・デバイス上で前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの少なくとも一つのプロセッサから収集されるパフォーマンス・メトリックを含む請求項３５のコンピュータ読み取り可能な記憶媒体。
【請求項３７】
前記１又は複数のプロセッサに前記パフォーマンス情報を解析させるための前記命令は、前記１又は複数のプロセッサに前記グラフィックス命令の実行の間、前記外部グラフィックス・デバイスの前記複数のプロセッサのうちの１又は複数における減少したパフォーマンスを識別させるための命令を含む請求項３６のコンピュータ読み取り可能な記憶媒体。
【請求項３８】
前記１又は複数のプロセッサに、
グラフィカル・ユーザ・インタフェースを介してユーザ入力（該ユーザ入力は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定する）を受信させ、
前記要求された修正を、処理のために前記外部グラフィックス・デバイスに送信させ、
前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令（該更新されたグラフィックス命令は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信させ、
前記外部グラフィックス・デバイスから、更新されたパフォーマンス情報（該更新されたパフォーマンス情報は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信させ、
前記パフォーマンス・イッシューのうちの１又は複数が解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析させるための命令を更に含む請求項３５のコンピュータ読み取り可能な記憶媒体。
【請求項３９】
前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも１つを含む請求項３８のコンピュータ読み取り可能な記憶媒体。
【請求項４０】
前記１又は複数のプロセッサに、前記更新されたグラフィックス命令及び前記更新されたパフォーマンス情報に従って、前記グラフィックス・イメージの更新された表現を表示させるための命令を更に含む請求項３８のコンピュータ読み取り可能な記憶媒体。
【請求項４１】
表示デバイスと、
外部グラフィックス・デバイスから送信されるグラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される）を受信し、
前記外部グラフィックス・デバイスから送信されるステート情報（該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信し、
前記外部グラフィックス・デバイスをシミュレーションするためのシミュレーションされた環境を提供するシミュレーション・アプリケーションを実行し、
前記シミュレーション・アプリケーションの実行中に、前記グラフィックス命令及び前記ステート情報に従って前記シミュレーションされた環境内で前記グラフィックス・イメージの表現を前記表示デバイス上に表示するように構成された１又は複数のプロセッサとを含むデバイス。
【請求項４２】
前記１又は複数のプロセッサは、前記グラフィックス命令の受信、前記ステート情報の受信及び前記グラフィックス・イメージの複数のフレームに関する前記グラフィックス・イメージの前記表現の表示を、繰り返し行うように更に構成された請求項４１のデバイス。
【請求項４３】
前記１又は複数のプロセッサは、
前記グラフィックス命令のビジュアル表現を前記表示デバイス上に表示し、
前記ステート情報のビジュアル表現を前記表示デバイス上に表示するように更に構成された請求項４１のデバイス。
【請求項４４】
前記１又は複数のプロセッサは、
ナビゲーション・コントローラを前記表示デバイス上に表示し、
前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信し、
前記ユーザ入力に基づいて、前記グラフィックス・イメージの修正された斜視図を前記表示デバイス上に表示するように更に構成された請求項４１のデバイス。
【請求項４５】
前記１又は複数のプロセッサは、
前記外部グラフィックス・デバイスから、パフォーマンス情報（該パフォーマンス情報は、該外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信し、
前記グラフィックス命令のその実行の間、前記外部グラフィックス・デバイス上での１又は複数のパフォーマンス・イッシューを識別するために、前記パフォーマンス情報を解析するように更に構成された請求項４１のデバイス。
【請求項４６】
前記パフォーマンス情報は、前記外部グラフィックス・デバイス上で前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの少なくとも一つのプロセッサから収集されるパフォーマンス・メトリックを含む請求項４５のデバイス。
【請求項４７】
前記１又は複数のプロセッサは、前記グラフィックス命令の実行の間、前記外部グラフィックス・デバイスの前記複数のプロセッサのうちの１又は複数における減少したパフォーマンスを識別することに少なくともよって、前記パフォーマンス情報を解析するように構成された請求項４６のデバイス。
【請求項４８】
前記１又は複数のプロセッサは、
グラフィカル・ユーザ・インタフェースを介してユーザ入力（該ユーザ入力は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定する）を受信し、
前記要求された修正を、処理のために前記外部グラフィックス・デバイスに送信し、
前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令（該更新されたグラフィックス命令は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信し、
前記外部グラフィックス・デバイスから、更新されたパフォーマンス情報（該更新されたパフォーマンス情報は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信し、
前記パフォーマンス・イッシューのうちの１又は複数が解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析するように構成された請求項４５のデバイス。
【請求項４９】
前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも１つを含む請求項４８のデバイス。
【請求項５０】
前記１又は複数のプロセッサは、前記更新されたグラフィックス命令及び前記更新されたパフォーマンス情報に従って、前記グラフィックス・イメージの更新された表現を前記表示デバイス上に表示するように更に構成された請求項４８のデバイス。
【請求項５１】
前記１又は複数のプロセッサは、前記グラフィックス命令のビジュアル表現と前記ステート情報のビジュアル表現とのうちの少なくとも一つのユーザ修正を可能にするグラフィカル・ユーザ・インタフェースを提供するように更に構成された請求項４１のデバイス。
【請求項５２】
外部グラフィックス・デバイスから送信されるグラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される）を受信するための手段と、
前記外部グラフィックス・デバイスから送信されるステート情報（該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信するための手段と、
前記コンピュータ・デバイスによって、前記外部グラフィックス・デバイスをシミュレーションするためのシミュレーションされた環境を提供するシミュレーション・アプリケーションを実行するための手段と、
前記シミュレーション・アプリケーションの実行中に、前記グラフィックス命令及び前記ステート情報に従って前記シミュレーションされた環境内で前記グラフィックス・イメージの表現を表示するための手段とを含むデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
（35 U.S.C. §119の下の優先権の主張）
本特許出願は、２００８年７月２５日付け提出され、本願の譲受人に譲渡され、参照によって本明細書に明確に組み込まれる「PERFORMANCE ANALYSIS DURING VISUAL CREATION OF GRAPHICS IMAGES」と題された米国仮出願第６１／０８３，６５６号の優先権を主張する。
【０００２】
（同時継続の特許出願への参照）  
本特許出願は、以下の同時継続の米国特許出願に関係する：  
２００８年７月２５日付け提出され、これと共に同時に提出され、本願の譲受人に譲渡され、参照によって本明細書に明確に組み込まれる米国特許出願第６１／０８３，６５９号（Attorney Docket No. 080969P1）;及び  
２００８年７月２５日付け提出され、これと共に同時に提出され、本願の譲受人に譲渡され、参照によって本明細書に明確に組み込まれる米国特許出願第６１／０８３，６６５号（Attorney Docket No. 080971P1）。
【０００３】
（技術分野）  
この開示は、グラフィックス・イメージの表示に関係する。
【背景技術】
【０００４】
グラフィックス・プロセッサは、例えばテレビゲーム、グラフィックス・プログラム、コンピュータ・デザイン（ＣＡＤ）アプリケーション、シミュレーション及びビジュアライゼーション・ツール、及びイメージングのような様々なアプリケーションのために、二次元イメージ（２Ｄ）及び三次元イメージ（３Ｄ）をレンダリング（render）するために広く使用されている。表示プロセッサは、表示デバイスを介したユーザへの提示のために、グラフィックス・プロセッサのレンダリング出力（rendered output）を表示するのに使用されることがある。
【０００５】
ＯｐｅｎＧＬ（登録商標）（オープン・グラフィックス・ライブラリー）は、２Ｄグラフィックス及び３Ｄグラフィックスを生成するアプリケーションを記述するときに使用されることがあるＡＰＩ（アプリケーション・プログラミング・インタフェース）を定義する標準的な仕様である。例えばＪａｖａ（登録商標）のような他の言語は、それら自身の標準的なプロセスを通したＯｐｅｎＧＬ ＡＰＩへのバインディングを定義することがある。インタフェースは、単純なプリミティブからシーンを描画（draw）するために使用可能な複数の関数コール又は命令（instructions）を含む。グラフィックス・プロセッサ、マルチメディア・プロセッサ、そして、汎用ＣＰＵでさえ、ＯｐｅｎＧＬ関数コールを使用して記述されるアプリケーションを実行することができる。ＯｐｅｎＧＬ ＥＳ（組み込みシステム）は、例えばモバイル無線電話、デジタル・マルチメディア・プレイヤー、携帯情報端末（ＰＤＡ）又はテレビゲーム機のような、組み込みデバイスのために設計されるＯｐｅｎＧＬの改良型（variant）である。
【０００６】
グラフィックス・アプリケーション（例えば、３Ｄグラフィックス・アプリケーション）は、ＡＰＩ群又は命令群を呼び出す（invoking）ことによって、シーンの内容を記述又は定義することがある。ＡＰＩ群又は命令群は、イメージを生成するために、内在する(underlying）グラフィックス・ハードウェア（例えば、グラフィックス・デバイス中の１又は複数のプロセッサ）を使用する。グラフィックス・ハードウェアは、これらのＡＰＩを通して実行される一連の状態遷移（state transitions）を経ることがある。各々のＡＰＩコール（例えば、描画コール(draw call）又は命令）に関するステート（states）のフルセットは、ハードウェアによりイメージがレンダリングされるプロセスを記述することがある。
【発明の概要】
【０００７】
一般に、この開示は、グラフィックス・デバイス（例えば、モバイル・デバイス）から送信されるステート情報とともに、グラフィックス命令又はコール・ストリームを捕捉（capturing）及び解析するための技術に関係する。グラフィックス命令は、アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成又はコンパイルされても良い。グラフィックス命令及びステート情報は、通信媒体をわたってアプリケーション・コンピュータ・デバイス（例えば、パーソナル・コンピュータ）に送信され、シミュレーション環境内でグラフィックス・イメージ（例えば、３Ｄイメージ）を表示するために使用されても良い。
【０００８】
表示されたグラフィックス・イメージは、グラフィックス・デバイス上に表示されるイメージの表現であっても良い。シミュレーション環境は、イメージ又はシーン（それは、一連のイメージを含んでも良い）を再作成（re-creating）することができる。シミュレーション環境は、シーンがグラフィックス・デバイス上で提示されているときに、シーンを作成しても良いので、アプリケーション開発者は、そのようなアプリケーションの全体的なパフォーマンスを向上させ得るそれらのグラフィックス・アプリケーション及びプロトタイプ修正において複数のパフォーマンス・イッシュー又は複数のボトルネックを分離させることができる。
【０００９】
一つの態様において、方法は、外部グラフィックス・デバイスから複数のグラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される）を受信することと、前記外部グラフィックス・デバイスからステート情報（該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信することを含む。前記方法は、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージの表現を表示することを更に含む。特定のケースでは、前記方法は、前記グラフィックス命令の受信、前記ステート情報の受信及び前記グラフィックス・イメージの複数のフレームに関する前記グラフィックス・イメージの前記表現の表示を、繰り返し行うことを更に含む。特定のケースでは、前記方法は、前記外部グラフィックス・デバイスから、パフォーマンス情報（該パフォーマンス情報は、該外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信することと、前記グラフィックス命令のその実行の間、前記外部グラフィックス上での１又は複数のパフォーマンス・イッシューを識別するために、前記パフォーマンス情報を解析することを更に含む。
【００１０】
この開示において説明される技術は、ハードウェア、ソフトウェア、ファームウェア又はそれらの任意の組み合せにおいて実装されても良い。ソフトウェアで実装される場合には、ソフトウェアは、プロセッサで実行されても良い。プロセッサは、１又は複数のプロセッサ（例えば、マイクロプロセッサ）、特定用途向けＩＣ（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はデジタルシグナルプロセッサ（ＤＳＰ）、又は他の等価な集積化された若しくは個別の論理回路を指し示しても良い。本技術を実行するための命令を含むソフトウェアは、最初にコンピュータ読み取り可能な媒体に記憶されロードされ、そして、プロセッサにより実行されても良い。
【００１１】
したがって、この開示はまた、この開示において説明される様々な技術の任意のものをプロセッサに実行させる命令を含むコンピュータ読み取り可能な媒体を意図する。場合によっては、コンピュータ読み取り可能な媒体は、製造者に販売され得る及び／又はデバイスで使用され得るコンピュータ・プログラム製品の一部を形成しても良い。コンピュータ・プログラム製品は、コンピュータ読み取り可能な媒体を含んでも良いし、場合によっては、また、パッケージ材料を含んでも良い。
【００１２】
添付の図面及び下記の説明において１又は複数の態様の詳細が説明される。他の特徴、目的及び利点は説明及び図面から並びにクレームから明らかである。
【図面の簡単な説明】
【００１３】
【図１】図１は、本開示の一つの態様に従って、ステート及び／又はパフォーマンス情報とともに、グラフィックス命令を、アプリケーション・コンピュータ・デバイスに提供し得るグラフィックス・デバイスを示すブロック図である。
【図２】図２は、本開示の他の態様に従って、ステート及び／又はパフォーマンス情報とともに、グラフィックス命令を、アプリケーション・コンピュータ・デバイスに提供し得るグラフィックス・デバイスを示すブロック図である。
【図３】図３は、本開示の一つの態様に従って、図１に示されるグラフィックス処理システム、グラフィックス・ドライバー及びアプリケーション・コンピュータ・デバイスの特定の詳細を示すブロック図である。
【図４】図４は、本開示の一つの態様に従って、図１に示される制御プロセッサ、グラフィックス・プロセッサ、頂点プロセッサ及び表示プロセッサにより実行され得るオペレーションの更なる詳細を示すフロー・ダイアグラムである。
【図５】図５は、本開示の一つの態様に従って、図３に示されるグラフィックス・ドライバーの更なる詳細を示すブロック図である。
【図６】図６は、本開示の一つの態様に従った、図１又は図２に示されるグラフィックス・デバイスにより実行され得る方法のフローチャートである。
【図７】図７は、本開示の一つの態様に従って、図１及び図２に示されるアプリケーション・コンピュータ・デバイスにより実行され得る第１の方法のフローチャートである。
【図８】図８は、本開示の一つの態様に従って、図１及び図２に示されるアプリケーション・コンピュータ・デバイスにより実行され得る第２の方法のフローチャートである。
【図９】図９は、本開示の一つの態様に従って、グラフィック・ウインドウ中に情報を表示するための表示デバイスに接続されるグラフィックス・デバイスの例を示す概念図である。
【図１０】図１０は、本開示の一つの態様に従って、グラフィカル・ウインドウ中に情報を表示する表示デバイスに接続されるグラフィックス・デバイスの他の例を示す概念図である。
【図１１】図１１は、本開示の一つの態様に従って、図１０の表示デバイスにより表示され得る統計及び／又はテクスチャー情報の例を示す図である。
【図１２】図１２は、本開示の一つの態様に従って、図１０に示されるグラフィックス・デバイス上に表示され得るオーバーライド・スクリーンの一例を示すスクリーン・ダイアグラムである。
【図１３】図１３は、図１０に示されるグラフィックス・デバイス上に表示され得るオーバーライド情報の一例を示すスクリーン・ダイアグラムである。
【図１４】図１４は、本開示の一つの態様に従って、図１０に示されるグラフィックス・デバイス上に表示され得るテクスチャー情報の一例を示すスクリーン・ダイアグラムである。
【図１５】図１５は、本開示の一つの態様に従って、図１０に示されるグラフィックス・デバイス上に表示され得るパフォーマンス情報の一例を示すスクリーン・ダイアグラムである。
【詳細な説明】
【００１４】
図１は、本開示の一つの態様に従って、ステート及び／又はパフォーマンス情報３２とともに、グラフィックス命令３０を、アプリケーション・コンピュータ・デバイス２０に提供し得るグラフィックス・デバイス２を示すブロック図である。グラフィックス・デバイス２は、独立型デバイスであっても良いし、あるいは、より大きなシステムの一部であっても良い。例えば、グラフィックス・デバイス２は、無線通信デバイス（例えば、無線モバイル・ハンドセット）を含んでも良いし、あるいは、デジタル・カメラ、ビデオ・カメラ、デジタル・マルチメディア・プレイヤー、携帯情報端末（ＰＤＡ）、テレビゲーム機、他のビデオ・デバイス又は専用の視聴局（viewing station）（例えば、テレビ）の一部であっても良い。グラフィックス・デバイス２はまた、パソコン又はラップトップ・デバイスを含んでも良い。グラフィックス・デバイス２は、上で説明されたデバイスの一部又は全部において使用され得る、１又は複数の集積回路又はチップに含まれても良い。
【００１５】
場合によっては、グラフィックス・デバイス２は、様々なアプリケーション（例えば、グラフィックス・アプリケーション、ビデオ・アプリケーション、音声アプリケーション及び／又は他のマルチメディア・アプリケーション）を実行することができても良い。例えば、グラフィックス・デバイス２は、グラフィックス・アプリケーション、テレビゲーム・アプリケーション、ビデオ・プレイバック・アプリケーション、デジタル・カメラ・アプリケーション、インスタントメッセージング・アプリケーション、ビデオ通信会議アプリケーション、モバイル・アプリケーション又はビデオストリーミング・アプリケーションのために使用されても良い。
【００１６】
グラフィックス・デバイス２は、様々な異なるデータ・タイプ及びフォーマットを処理することができても良い。例えば、グラフィックス・デバイス２は、下で更に詳細に説明されるように、静止画データ、動画（ビデオ）データ又は他のマルチメディア・データを処理しても良い。イメージ・データは、コンピュータグラフィック・データを含んでも良い。図１の例において、グラフィックス・デバイス２は、グラフィックス処理システム４、記憶媒体８（それは、メモリを含む）及び表示デバイス６を含む。
【００１７】
プログラム可能なプロセッサ１０，１２，１４及び１６は、グラフィックス処理システム４内に含まれても良い。プログラム可能なプロセッサ１０は、制御又は汎用プロセッサである。プログラム可能なプロセッサ１２は、グラフィックス・プロセッサであり、プログラム可能なプロセッサ１４は、頂点プロセッサであり、プログラム可能なプロセッサ１６は、表示プロセッサである。制御プロセッサ１０は、グラフィックス・プロセッサ１２、頂点プロセッサ１４及び／又は表示プロセッサ１６を制御することができても良い。一つの態様において、グラフィックス処理システム４は、他の形のマルチメディア・プロセッサを含んでも良い。
【００１８】
グラフィックス・デバイス２において、グラフィックス処理システム４は、記憶媒体８に及び表示デバイス６に接続する。記憶媒体８は、例えばシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、組み込みダイナミックランダムアクセスメモリ（ｅＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）又はフラッシュメモリのような、命令及び／又はデータを格納することができる任意の固定（permanent）又は揮発性メモリを含んでも良い。表示デバイス６は、例えばＬＣＤ（液晶ディスプレイ）、プラズマ・ディスプレイ・デバイス又は他のテレビ（ＴＶ）表示デバイスのような、表示目的のイメージ・データを表示することができる任意のデバイスであっても良い。
【００１９】
頂点プロセッサ１４は、頂点情報を管理し、頂点変換を処理することができる。一つの態様において、頂点プロセッサ１４は、デジタルシグナルプロセッサ（ＤＳＰ）を含んでも良い。グラフィックス・プロセッサ１２は、コンピュータ化されたグラフィックスをレンダリング、操作（manipulate）及び表示するために利用される専用グラフィックス・レンダリング・デバイスであっても良い。グラフィックス・プロセッサ１２は、様々な複雑な（complex）グラフィックス関係アルゴリズムを実装しても良い。例えば、複雑なアルゴリズムは、２次元又は３次元コンピュータ化グラフィックスの表現（representations）に対応しても良い。グラフィックス・プロセッサ１２は、ディスプレイ（例えば表示デバイス６）上の複雑な３次元イメージを作成するために、幾つかのいわゆる“プリミティブ（primitive）”グラフィックス・オペレーション（例えば、点、線及び三角形又は他のポリゴン面の形成）を実装しても良い。
【００２０】
グラフィックス・プロセッサ１２は、記憶媒体８に記憶される命令を実行しても良い。記憶媒体８は、１又は複数のグラフィックス・ドライバー１８だけでなく、アプリケーション（例えばグラフィックス又はビデオ・アプリケーション）に関するアプリケーション命令２１を記憶することができる。アプリケーション命令２１は、実行のために記憶媒体８からグラフィックス処理システム４へロードされても良い。例えば、制御プロセッサ１０、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数が、命令２１を実行しても良い。一つの態様において、アプリケーション命令２１は、記憶媒体８に無線で動的にダウンロードされる１又は複数のダウンロード可能なモジュールを含んでも良い。一つの態様において、アプリケーション命令２１は、アプリケーション開発者により作成されるアプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成又はコンパイルされるるバイナリ命令のコール・ストリームを含んでも良い。
【００２１】
グラフィックス・ドライバー１８はまた、実行のために記憶媒体８からグラフィックス処理システム４にロードされても良い。例えば、制御プロセッサ１０、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数が、グラフィックス・ドライバー１８からの特定の命令を実行しても良い。一つの例示的な態様において、グラフィックス・ドライバー１８は、グラフィックス・プロセッサ１２によりロード及び実行される。グラフィックス・ドライバー１８は、下で更に詳細に説明される。
【００２２】
また、図１に示されるように、グラフィックス処理システム４は、１又は複数のバッファ１５を含む。制御プロセッサ１０、グラフィックス・プロセッサ１２、頂点プロセッサ１４及び／又は表示プロセッサ１６は、各々、バッファ１５へのアクセスを有し、また、バッファ１５へデータを記憶し又はバッファ１５からデータを検索しても良い。バッファ１５は、キャッシュメモリを含んでも良く、また、データと命令の両方を記憶することができても良い。例えば、バッファ１５は、アプリケーション命令２１のうちの１又は複数、又は、記憶媒体８からグラフィックス処理システム４にロードされたグラフィックス・ドライバー１８からの１又は複数の命令を含んでも良い。バッファ１５及び／又は記憶媒体８はまた、命令の実行の間に使用されるグラフィックス・データを含んでも良い。
【００２３】
アプリケーション命令２１は、特定のケースにおいて、グラフィックス・アプリケーション（例えば、３Ｄグラフィックス・アプリケーション）のための命令を含んでも良い。アプリケーション命令２１は、１又は複数のグラフィックス・イメージを含むグラフィックス・シーンのコンテンツを記述又は定義する命令を含んでも良い。アプリケーション命令２１がグラフィックス処理システム４によりロード及び実行されるとき、グラフィックス処理システム４は、一連の状態遷移を経ても良い。グラフィックス・ドライバー１８内の１又は複数の命令はまた、アプリケーション命令２１の実行の間にグラフィックス・イメージを表示デバイス６上にレンダリング又は表示するために実行されても良い。
【００２４】
例えば描画コールのような命令に関するステートのフルセットは、イメージがグラフィックス処理システム４によりレンダリングされるプロセスを記述しても良い。しかし、アプリケーション命令２１を書いたアプリケーション開発者は、定義されたシーン中のイメージを記述又はレンダリングする代わりの方法（alternate methods）によるデバッギング又は実験の目的で、これらのステートをインタラクティブに閲覧（view）又は修正する能力（ability）がしばしば制限されることがある。さらに、異なるハードウェア・プラットホーム（例えば図２に示されるグラフィックス処理システム１７のプラットホーム）は、これらのステート及び／又は状態遷移の異なるハードウェア・デザイン及び実装を有することがある。
【００２５】
それゆえ、一つの態様において、アプリケーション開発者は、シーン中のイメージを記述又はレンダリングするための代わりの方法によるデバッギング及び実験の処理を支援するために、図１に示されるように、アプリケーション・コンピュータ・デバイス２０を使用しても良い。アプリケーション・コンピュータ・デバイス２０は、グラフィックス・デバイス２に接続される。例えば、一つの態様において、アプリケーション・コンピュータ・デバイス２０は、ユニバーサルシステムバス（ＵＳＢ）コネクションを介して、グラフィックス・デバイス２に接続される。他の態様において、他のタイプのコネクション（例えば無線又は他の形の有線接続）が、使用されても良い。
【００２６】
アプリケーション・コンピュータ・デバイス２０は、１又は複数のプロセッサ２２、表示デバイス２４及び記憶媒体２６を含む。一つの態様に従って、プロセッサ２２は、制御プロセッサ、グラフィックス・プロセッサ、頂点プロセッサ及び表示プロセッサのうちの１又は複数を含んでも良い。記憶媒体２６は、例えばシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）又はフラッシュメモリ）のような、命令及び／又はデータを格納することができる任意の固定又は揮発性メモリを含んでも良い。表示デバイス２４は、例えばＬＣＤ（液晶ディスプレイ）、プラズマ・ディスプレイ・デバイス又は他のテレビ（ＴＶ）表示デバイスのような、表示目的のイメージ・データを表示することができる任意のデバイスであっても良い。
【００２７】
アプリケーション・コンピュータ・デバイス２０は、グラフィックス・デバイス２から送信される、ステート及び／又はパフォーマンス情報３２とともに、グラフィックス命令３０を捕捉（capturing）及び解析することができる。一つの態様において、グラフィックス・ドライバー１８は、グラフィックス命令３０及びステート／パフォーマンス情報３２を、アプリケーション・コンピュータ・デバイス２０に送信するように構成される。グラフィックス命令３０は、アプリケーション命令２１のうちの１又は複数を含んでも良く、ステート／パフォーマンス情報３２は、グラフィックス処理システム４内でのグラフィックス命令３０の実行の間に生成又は補足されても良い。
【００２８】
ステート／パフォーマンス情報３２は、命令の実行の間のグラフィックス処理システム４のステート及びパフォーマンスに関する情報を含んでも良く、それは下で更に詳細に説明される。ステート／パフォーマンス情報３２は、グラフィックス命令３０で使用され得る又はさもなければグラフィックス命令３０に関連し得るグラフィックス・データ（例えば、プリミティブの及び／又はラスタライズされたグラフィックス・データ）を含んでも良い。グラフィックス処理システム４は、表示デバイス６上にイメージ又は複数のイメージからなるシーンを表示するためにグラフィックス命令３０を実行しても良い。アプリケーション・コンピュータ・デバイス２０は、グラフィックス・デバイス２の表示デバイス６に同様に表示されるグラフィックス・イメージ又はシーンを作成するために、ステート／パフォーマンス情報３２とともに、グラフィックス命令３０を使用することができる。
【００２９】
シミュレーション・アプリケーション２８は、グラフィックス命令３０及びステート／パフォーマンス情報３２の受信に応じて、グラフィックス・イメージ又はシーンを作成し、そして、イメージ又は複数のイメージからなるシーンを表示デバイス２４上に表示するために、アプリケーション・コンピュータ・デバイス２０のプロセッサ２２によって実行されても良い。シミュレーション・アプリケーション２８は、幾つかのアプリケーション命令を含むソフトウェア・モジュールを含んでも良い。シミュレーション・アプリケーション２８は、記憶媒体２６に記憶され、また、プロセッサ２２によってロード及び実行されても良い。シミュレーション・アプリケーション２８は、記憶媒体２６にプリロードされても良く、また、グラフィックス・デバイス２で動作するようにカスタマイズされても良い。一つの態様において、シミュレーション・アプリケーション２８は、グラフィックス・デバイス２のハードウェア・オペレーションをシミュレートする。シミュレーション・アプリケーション２８の異なるバージョンが、記憶媒体２６に記憶され、異なるハードウェア・デザインを有する異なるグラフィックス・デバイスのためにプロセッサ２２によって実行されても良い。また、場合によっては、シミュレーション・アプリケーション２８とともに使用されるソフトウェア・ライブラリが、記憶媒体２６内に記憶されても良い。一つの態様において、シミュレーション・アプリケーション２８は、一般アプリケーションであっても良く、また、特定のハードウェア又はグラフィックス・デバイス・シミュレーション機能性は、実行の間、シミュレーション・アプリケーション２８にリンクされ得る各々の独立したライブラリ内に含まれても良い。
【００３０】
一つの態様において、ステート／パフォーマンス情報３２のビジュアル表現が、表示デバイス２上でアプリケーション開発者に対して表示されても良い。さらに、グラフィックス命令３０のビジュアル表現が、同様に、表示されても良い。多くの場合、グラフィックス命令３０はバイナリ命令を含むことがあるので、アプリケーション・コンピュータ・デバイス２０は、表示デバイス２４上でのグラフィックス命令３０のビジュアル表現を生成するために、命令マッピング情報３１を使用しても良い。命令マッピング情報３１は、記憶媒体２６内に記憶され、また、グラフィックス命令３０のビジュアル表現を表示するために、プロセッサ２２にロードされても良い。
【００３１】
一つの態様において、命令マッピング情報３１は、グラフィックス命令３０を生成するときに以前コンパイルされた可能性のある対応するＡＰＩ命令へ、グラフィックス命令３０をマッピングするために、例えば検索テーブル中などに、マッピング情報を含んでも良い。アプリケーション開発者は、ＡＰＩ命令を使用するプログラムを書いても良いが、これらのＡＰＩ命令は、一般的に、グラフィックス・デバイス２上での実行のために、例えばグラフィックス命令３０（それは、アプリケーション命令２１内に含まれる）のようなバイナリ命令にコンパイルされる。グラフィックス命令３０内の１又は複数の命令は、個々のＡＰＩ命令にマッピングされても良い。マッピングされたＡＰＩ命令は、それから、実際に実行されているグラフィックス命令３０のビジュアル表現を提供するために、表示デバイス２４上でアプリケーション開発者に対して表示されても良い。
【００３２】
一つの態様において、ユーザ（例えばアプリケーション開発者）は、例えばそのようなパフォーマンスの変化の効果を判定するために、グラフィックス命令３０のうちの１又は複数を変更することを望むことがある。この態様において、ユーザは、グラフィックス命令３０のビジュアル表現を変更しても良い。マッピング情報３１は、それから、下で更に詳細に説明されるように、要求された修正３４内のグラフィックス・デバイス２へ提供されることができるバイナリ命令に、グラフィックス命令３０のビジュアル表現中のこれらの変更をマッピングするために使用される。
【００３３】
先に述べたように、アプリケーション・コンピュータ・デバイス２０の表示デバイス２４上に表示されるグラフィックス・イメージは、グラフィックス・デバイス２上に表示されるイメージの表現であっても良い。グラフィックス・デバイス２上にイメージが提示されているときに、正確にイメージ又はシーンを再作成するために、シミュレーション・アプリケーション２８は、グラフィックス命令３０及びステート／パフォーマンス情報３２を使用しても良いので、アプリケーション・コンピュータ・デバイス２０を使用するアプリケーション開発者は、グラフィックス・アプリケーション３０の実行の間の潜在的な（potential）パフォーマンス・イッシュー又はボトルネックと、そして、グラフィックス・アプリケーション３０の全体的なパフォーマンスを向上させるプロトタイプ修正でさえ、速く識別することができ得る。
【００３４】
例えば、アプリケーション開発者は、アプリケーション・コンピュータ・デバイス２０上のシミュレーション・アプリケーション２８の実行及び表示デバイス２４上のイメージの表示の間、グラフィックス命令３０及び／又はステート／パフォーマンス情報３２に対して１又は複数の要求された修正３４を施すことを選択しても良い。グラフィックス命令３０の実行又はステート／パフォーマンス情報３２の解析の間、そのような要求された修正３４は、観測されたパフォーマンス・イッシュー又はボトルネックに基づいても良い。これらの要求された修正３４は、それから、アプリケーション・コンピュータ・デバイス２０からグラフィックス・デバイス２へ送信されても良い。そこでは、それらはグラフィックス処理システム４によって処理される。一つの態様において、グラフィックス・ドライバー１８のうちの１又は複数が、要求された修正３４を処理するために、グラフィックス処理システム４中で実行される。要求された修正３４は、場合によっては、修正された命令を含んでも良い。場合によっては、要求された修正は、修正されたステート及び／又はパフォーマンス情報を含んでも良い。
【００３５】
要求された修正３４の処理に応じて、更新された命令及び／又は情報３５は、アプリケーション・コンピュータ・デバイス２０へ送信される（例えばグラフィックス・ドライバー１８のうちの１又は複数によって）。更新された命令／情報３５は、グラフィックス・デバイス２により処理された要求された修正３４に基づく実行のための更新されたグラフィックス命令を含んでも良い。更新された命令／情報３５はまた、グラフィックス・デバイス２により処理された要求された修正３４に基づく更新されたステート及び／又はパフォーマンス情報を含んでも良い。
【００３６】
更新された命令／情報３５は、表示デバイス２４上でのイメージ情報の表示を更新するために、さらに更新された命令／情報３５のビジュアル表現を、アプリケーション開発者に提供するために、シミュレーション・アプリケーション２８により処理される（それは命令マッピング情報３１を再び使用することを含んでも良い）。アプリケーション開発者は、それから、パフォーマンス・イッシューが解決又は軽減されたかについて判定するために、更新された命令／情報３５のビジュアル表現だけでなく、表示デバイス２４上の更新されたイメージ情報を閲覧しても良い。アプリケーション開発者は、グラフィックス命令３０をデバッグするための反復的なプロセス、又は、全体的なパフォーマンス・グラフィックス・アプリケーション３０を改善するためのプロトタイプ修正を使用しても良い。
【００３７】
図２は、本開示の他の態様に従って、ステート及び／又はパフォーマンス情報８２とともに、グラフィックス命令８０を、アプリケーション・コンピュータ・デバイスに提供し得るグラフィックス・デバイス５２を示すブロック図である。この態様において、グラフィックス・デバイス５２は、図１に示されるグラフィックス・デバイス２とは異なるハードウェア設計及びアーキテクチャーを有する。しかし、アプリケーション・コンピュータ・デバイス２０は、依然として、他のシミュレーション・アプリケーション２９を使用することによって、グラフィックス・デバイス５２とのインタラクト、画像情報の作成、グラフィックス・デバイス５２に関するパフォーマンス情報の表示をすることができる。図１において、シミュレーション・プログラム２８は、グラフィックス・デバイス２の用途に、設計され、カスタマイズされる。図２において、シミュレーション・プログラム２９は、グラフィックス・デバイス５２の用途に、設計され、カスタマイズされる。
【００３８】
図２に示されるように、グラフィックス・デバイス５２は、グラフィックス処理システム５４、表示デバイス５６及び記憶媒体５８を含む。もしグラフィックス処理システム４（図１）でなければ、グラフィックス処理システム５４は、頂点プロセッサを含まない。グラフィックス処理システム５４は、制御プロセッサ６０、グラフィックス・プロセッサ６２、表示プロセッサ６６及び１又は複数のバッファ６５を含む。制御プロセッサ６０は、グラフィックス・プロセッサ６２及び／又は表示プロセッサ６６を制御しても良い。制御プロセッサ６０、グラフィックス・プロセッサ６２及び表示プロセッサ６６の各々は、バッファ６５へのアクセスを有する。バッファ６５は、データ又は命令を含んでも良い。
【００３９】
記憶媒体８（図１）と同様に、グラフィックス・デバイス５２の記憶媒体５８は、命令及びドライバーを記憶することができる。図２に示されるように、記憶媒体（メモリを含む）は、アプリケーション命令７１及び１又は複数のグラフィックス・ドライバー６８を含む。アプリケーション命令７１は、グラフィックス・アプリケーションのための命令を含んでも良く、グラフィックス・ドライバー６８は、表示デバイス５６上での画像データの表示のための命令及びアプリケーション・コンピュータ・デバイス２０と通信するための命令を含んでも良い。アプリケーション命令７１及びグラフィックス・ドライバー６８は、グラフィックス処理システム５４における制御プロセッサ６０、グラフィックス・プロセッサ６２及び／又は表示プロセッサ６６にロードされて実行されても良い。場合によっては、アプリケーション命令７１のうちの１又は複数と、グラフィックス・ドライバー６８からの１又は複数の命令は、グラフィックス処理システム５４内での実行のためにバッファ６５にロードされても良い。
【００４０】
グラフィックス処理システム５４内でのアプリケーション命令７１の実行の間、グラフィックス・ドライバー６８のうちの１又は複数はまた、実行の間、グラフィックス命令８０及びステート及び／又はパフォーマンス情報８２を、アプリケーション・コンピュータ・デバイス２０に送信しても良い。グラフィックス命令８０は、アプリケーション命令７１の部分又はサブセットを含んでも良い。ステート／パフォーマンス情報８２は、制御プロセッサ６０、グラフィックス・プロセッサ６２及び表示プロセッサ６６のうちの１又は複数のプロセッサ内でのグラフィックス命令８０の実行に基づいても良い。
【００４１】
シミュレーション・アプリケーション２９は、グラフィックス命令８０及びステート／パフォーマンス情報８２を処理するために、プロセッサ２２のうちの１又は複数にロードされ実行されても良い。上記したように、シミュレーション・アプリケーション２９は、特にグラフィックス・デバイス５２のオペレーションをシミュレーションするようにデザインされていても良い。グラフィックス・デバイスの様々なタイプのデザインは、対応するシミュレーション・アプリケーションの作成及び実行を通して、アプリケーション・コンピュータ・デバイス２０上でシミュレーションされても良い。
【００４２】
シミュレーション・アプリケーション２９は、プロセッサ２２に、受信されたグラフィックス命令８０及びステート／パフォーマンス情報８２に従って、グラフィックス・イメージ又はシーンの表現を表示デバイス２４上に表示させても良い。このイメージ又はシーンは、当初、グラフィックス・デバイス５２の表示デバイス５６上に表示された可能性があるが、その表現は、表示デバイス２４上に表示される。さらに、シミュレーション・アプリケーション２９は、プロセッサ２２に、ステート／パフォーマンス情報８２のビジュアル表現を表示デバイス２４上に表示させても良い。アプリケーション・コンピュータ・デバイス２０はまた、表示デバイス２４においてグラフィックス命令８０のビジュアル表現を提供するために、命令マッピング情報３３を使用しても良い。
【００４３】
アプリケーション開発者は、シミュレーション・アプリケーション２９の実行の間、グラフィックス命令８０及び／又はステート／パフォーマンス情報８２に対して１又は複数の要求された修正８４を施すことを選択しても良い。そのような要求された修正８４は、グラフィックス命令８０の実行又はステート／パフォーマンス情報８２の解析の間、観測されたパフォーマンス・イッシュー又はボトルネックに基づいても良い。これらの要求された修正８４は、それから、アプリケーション・コンピュータ・デバイス２０からグラフィックス・デバイス５２へ送信されても良い。ここで、それらは、グラフィックス・ドライバー６８のうちの１又は複数により処理されても良い・
要求された修正８４の処理に応じて、更新された命令及び／又は情報８５は、グラフィックス・ドライバー６８のうちの１又は複数により、アプリケーション・コンピュータ・デバイス２０へ送信される。更新された命令／情報８５は、更新されたグラフィックス命令、更新されたステート情報、及び／又は、更新されたパフォーマンス情報を含んでも良い。
【００４４】
更新された命令／情報８５は、表示デバイス２４上の画像情報の表示を更新するために、さらに、更新された命令／情報８５のビジュアル表現をアプリケーション開発者に提供するために、シミュレーション・アプリケーション２９により処理される。アプリケーション開発者は、パフォーマンス・イッシューが解決又は軽減されたかどうか判定するために、更新された命令／情報８５のビジュアル表現だけでなく、表示デバイス２４上の更新された画像情報を閲覧しても良い。アプリケーション開発者は、全体的なパフォーマンス・グラフィックス・アプリケーション８０を改善するために、グラフィックス命令８０又はプロトタイプ修正をデバッグするために、反復的なプロセスを使用しても良い。
【００４５】
一つの態様に従って、図３は、本開示の一つの態様に従って、図１に示されるグラフィックス処理システム４、グラフィックス・ドライバー１８及びアプリケーション・コンピュータ・デバイス２０の特定の詳細を示すブロック図である。図３において、アプリケーション・コンピュータ・デバイス２０は、デバイス２のグラフィックス処理システム４に接続されることが仮定される。しかし、これは説明の目的のためにだけ示される。他のシナリオでは、アプリケーション・コンピュータ・デバイス２０は、多くの他の形のグラフィックス処理システム及びデバイス（例えばデバイス５２（図２）のグラフィックス処理システム５４）に接続されても良い。
【００４６】
図３に示されるように、グラフィックス処理システム４は、４つのプログラム可能なプロセッサ、すなわち、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス・プロセッサ１２及び表示プロセッサ１６を含む。それらは図１にも示される。制御プロセッサ１０は、頂点プロセッサ１４、グラフィックス・プロセッサ１２又は表示プロセッサ１６のうちの任意のものを制御しても良い。多くの場合に、これらのプロセッサ１０，１２，１４及び１６は、システム４内のグラフィックス処理パイプラインの一部であっても良い。
【００４７】
制御プロセッサ１０はまた、パイプラインを通してデータ又は命令実行のフローの１又は複数の態様を制御しても良く、さらに、グラフィックス・イメージに関するジオメトリ情報を、頂点プロセッサ１４に提供しても良い。頂点プロセッサ１４は、グラフィックス・イメージの頂点変換又はジオメトリ処理を管理しても良い。それは、プリミティブのジオメトリ・フォームにおける複数の頂点に従って記述又は定義されても良い。頂点プロセッサ１４は、その出力をグラフィックス・プロセッサ１２に提供しても良い。グラフィックス・プロセッサ１２は、グラフィックス・イメージに対するレンダリング又はラスタライゼーション・オペレーションを実行しても良い。グラフィックス・プロセッサ１２は、表示プロセッサ１６にその出力を提供しても良い。表示プロセッサ１６は、表示のために、ピクセル・フォームで、グラフィックス・イメージを準備する。グラフィックス・プロセッサ１２はまた、ピクセル・データに対する様々なオペレーション（例えばシェーディング又はスケーリング）を実行しても良い。
【００４８】
しばしば、グラフィックス・イメージ・データは、グラフィックス命令３０の実行の間、この処理パイプラインで処理されても良い。グラフィックス命令３０は、アプリケーション命令２１（図１）の一部であっても良い。その結果、グラフィックス命令３０は、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数によって実行されても良い。アプリケーション開発者は、一般的に、グラフィックス処理システム４内のいずれの特定のプロセッサがグラフィックス命令３０のうちのいずれを実行するかという多くの知識又は制御を有しなくても良い。場合によっては、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数は、グラフィックス命令３０の実行の間、パフォーマンス・イッシューを有する可能性があり、あるいは、処理パイプライン中の潜在的なボトルネックとして機能する可能性がある。これらの場合、グラフィックス処理システム４内の全体的なパフォーマンスが悪化する可能性があり、そして、アプリケーション開発者は、パフォーマンスを向上させるために、グラフィックス命令３０の変更を行うことを望むことがある。かし、開発者がプロセッサ１０，１２，１４又は１６のいずれのプロセッサがパフォーマンス・イッシューを有するものである可能性があるかについて、必ずしも分るわけではない。
【００４９】
パフォーマンス・ボトルネック及び潜在的な解決を識別する問題を支援するために、図３に示されるように、グラフィックス・デバイス２のグラフィックス・ドライバー１８Ａは、グラフィックス処理システム４からグラフィックス命令３０を捕捉又は収集しても良く、また、アプリケーション・コンピュータ・デバイス２０にそれらを送っても良い。グラフィックス・ドライバー１８Ａは、図１に示されるグラフィックス・ドライバー１８の一部である。グラフィックス・ドライバー１８Ａは、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数によってロード及び実行されても良い。さらに、グラフィックス・ドライバー１８Ａはまた、制御プロセッサ１０、ベクトルプロセッサ１４、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数からステート及び／又はパフォーマンス情報３２を収集しても良く、同様に、アプリケーション・コンピュータ・デバイス２０にこの情報３２を送っても良い。一つの態様において、グラフィックス命令３０がＯｐｅｎＧＬ ＥＳ ＡＰＩ命令から生成又はコンパイルされた可能性のあるバイナリ命令を含むとき、グラフィックス・ドライバー１８Ａは、ＯｐｅｎＧＬ ＥＳドライバーを含んでも良い。
【００５０】
様々な形のステート・データが、ステート／パフォーマンス情報３２内に含まれても良い。例えば、ステート・データは、グラフィックス命令３０の実行の間に使用される又はさもなければグラフィックス命令３０に関連するグラフィックス・データを含んでも良い。ステート・データは、頂点アレイ（例えば、位置、色、座標、サイズ又は重みデータ）に関係しても良い。ステート・データは、テクスチャー状態データ（texture state data）、点状態データ（point state data）、線状態データ（line state data）、ポリゴン状態データ（polygon state data）、カリング状態データ（culling state data）、アルファ・テスト状態データ（alpha test state data）、ブレンド状態データ（blending state data）、デプス状態データ（depth state data）、ステンシル状態データ（stencil state data）又は色状態データ（color state data）を更に含んでも良い。前に説明されたように、ステート・データは、ステート情報と実際のデータの両方を含んでも良い。場合によっては、ステート・データは、１又は複数のＯｐｅｎＧＬトークンに関連するデータを含んでも良い。
【００５１】
様々な形のパフォーマンス・データはまた、ステート／パフォーマンス情報３２内に含まれても良い。一般に、このパフォーマンス・データは、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数からのメトリック又はハードウェア・カウンタ・データを含んでも良い。パフォーマンス・データは、フレーム・レート又はサイクル・データを含んでも良い。サイクル・データは、プロファイリング、命令アレイ、頂点及びインデックス・データ、又は他のオペレーションのために使用されるサイクルに関するデータを含んでも良い。様々な態様において、様々な形のステート及びパフォーマンス・データが、グラフィックス・ドライバー１８Ａによりグラフィックス処理システム４から収集されるステート／パフォーマンス情報３２内に含まれても良い。
【００５２】
前に説明されたように、アプリケーション・コンピュータ・デバイス２０は、受信されたグラフィックス命令３０及びステート／パフォーマンス情報３２に従って、グラフィックス・イメージの表現を表示しても良い。アプリケーション・コンピュータ・デバイス２０はまた、ステート／パフォーマンス情報３２のビジュアル表現を表示しても良い。再作成されたグラフィックス・イメージ及び／又はステート／パフォーマンス情報３２のビジュアル表現の閲覧及びインタラクトによって、アプリケーション開発者は、グラフィックス命令３０の実行の間、グラフィックス・デバイス２のグラフィックス処理システム４内のパフォーマンス・イッシューを速く識別及び解決することができ得る。例えば、アプリケーション開発者は、プロセッサ１０，１２，１４及び／又は１６のうちのいずれの特定の複数のプロセッサがパフォーマンス・イッシューを有する可能性があるかについて識別することができ得る。
【００５３】
任意の識別されたパフォーマンス・イッシューに対する回避方法（workaround）又は解決を識別する試行において、開発者は、アプリケーション・コンピュータ・デバイス２０上で１又は複数の要求された修正３４を開始しても良い。例えば、開発者は、要求された修正３４を作成するために、再作成されたイメージ又はステート／パフォーマンス情報３２の表現とインタラクトしても良い。場合によっては、開発者は、要求された修正３４を生成するために、下でより詳しく説明されるように、ステート／パフォーマンス情報３２を直接変更さえしても良い。特定のケースでは、要求された修正３４は、グラフィックス・デバイス２のグラフィックス処理システム４におけるグラフィックス命令３０のうちの１又は複数の実行を無効にする１又は複数のリクエスト、又は、１又は複数のグラフィックス命令３０を修正するリクエストを含んでも良い。
【００５４】
要求された修正３４は、アプリケーション・コンピュータ・デバイス２０からグラフィックス・ドライバー１８Ａへ送信される。グラフィックス・ドライバー１８Ａは、オペレーションの間、グラフィックス・デバイス２のためのリクエストを処理する。多くの場合に、要求された修正３４は、ステート情報を修正するリクエストを含んでも良い。ステート情報は、グラフィックス命令３０の実行の間のグラフィックス処理システム４中のプロセッサ１０，１２，１４又は１６のうちの１又は複数の中のデータを含んでも良い。グラフィックス・ドライバー１８Ａは、それから、要求された修正３４内に含まれるグラフィックス処理システム４の変更を実行しても良い。これらの変更は、グラフィックス命令３０の実行のために、プロセッサ１０，１２，１４及び／又は１６の間で、実行のフローを変えても良い。特定のケースでは、グラフィックス命令３０のうちの１又は複数は、要求された修正３４に従って、グラフィックス処理システム４における実行の間、無効にされても良い。
【００５５】
グラフィックス・ドライバー１８Ａは、要求された修正３４の処理に応答して、更新された命令及び／又は情報３５を、アプリケーション・コンピュータ・デバイス２０に送信することができる。更新された命令／情報３５は、パフォーマンス情報を含む、グラフィックス・ドライバー１８Ａによりグラフィックス処理システム４から収集される更新されたステート情報を含んでも良い。更新された命令／情報３はまた、更新されたグラフィックス命令を含んでも良い。
【００５６】
アプリケーション・コンピュータ・デバイス２０は、更新された命令／情報３５のビジュアル表現だけでなく、グラフィックス・イメージの更新された表現を表示するために、更新された命令／情報３５を使用しても良い。アプリケーション開発者は、それから、前に識別されたパフォーマンス・イッシューが解決又はさもなければ対処されたかどうかについて判断することができても良い。例えば、アプリケーション開発者は、特定のテクスチャー、ポリゴン若しくは他の特徴が最適化されたか又は他のパフォーマンス・パラメータが改善されたか判定するために、更新された命令／情報３５のビジュアル表現だけでなく、更新されたイメージを解析することができても良い。
【００５７】
そのような方法において、アプリケーション開発者は、グラフィックス・デバイス２上のグラフィックス処理システム４のオペレーションをシミュレートするアプリケーション・コンピュータ・デバイス２０上の環境内でグラフィックス命令３０の実行を速く及び効果的にデバッグ又は解析することができても良い。開発者は、グラフィックス命令３０の実行パフォーマンスを最大にするために、シーン又は複数のイメージ・フレームにおける複数のグラフィックス・イメージを解析するために、アプリケーション・コンピュータ・デバイス２０上の表示されたイメージ及びステート／パフォーマンス情報と繰り返しインタラクトしても良い。アプリケーション・コンピュータ・デバイス２０上のそのようなインタラクション及び表示される情報の例は、下で更に詳細に提示される。
【００５８】
図４は、一つの態様に従って、制御プロセッサ１０、グラフィックス・プロセッサ１２、頂点プロセッサ１４及び表示プロセッサ１６により実行され得るオペレーションの更なる詳細を示すフロー・ダイアグラムである。図４はまた、フレーム・バッファ・ストレージ１００及びディスプレイ１０２に関するオペレーションを示す。一つの態様において、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス・プロセッサ１２及び／又は表示プロセッサ１６は、グラフィックス命令３０のうちの１又は複数の実行の結果として、様々なオペレーションを実行する。
【００５９】
前に説明されたように、制御プロセッサ１０は、グラフィックス処理パイプラインを通してデータ又は命令実行のフローの１又は複数の態様を制御しても良く、さらに、ジオメトリ情報を頂点プロセッサ１４に提供しても良い。図４に示されるように、制御プロセッサ１０は、９０においてジオメトリ・ストレージを実行しても良い。場合によっては、１又は複数のプリミティブのためのジオメトリ情報は、制御プロセッサ１０によってバッファ１５（図１）に記憶されても良い。場合によっては、ジオメトリ情報は、記憶媒体８に記憶されても良い。
【００６０】
頂点プロセッサ１４は、それから、９２において、制御プロセッサにより提供され及び／又は処理のためにバッファ１５に記憶される所定のプリミティブのためのジオメトリ情報を取得しても良い。特定のケースでは、頂点プロセッサ１４は、ジオメトリ情報の頂点変換を管理しても良い。特定のケースでは、頂点プロセッサ１４は、ジオメトリ情報に関してライティング・オペレーション（lighting operations）を実行しても良い。
【００６１】
頂点プロセッサ１４は、グラフィックス・プロセッサ１２にその出力を提供しても良い。そして、グラフィックス・プロセッサ１２は、９４において、該データに関してレンダリング又はラスタライゼーション・オペレーションを実行しても良い。グラフィックス・プロセッサ１２は、表示プロセッサ１６にその出力を提供しても良い。そして、表示プロセッサ１６は、表示のために、ピクセル・フォームで、１又は複数のグラフィックス・イメージを準備する。表示プロセッサ１６は、９８において、データの様々なフラグメントを処理するためのフラグメント処理を含む、ピクセル・データに関する様々なオペレーションを実行しても良い。特定のケースでは、これは、技術的に知られていているような、デプス・テスト、ステンシル・テスト、ブレンディング、又はテクスチャ・マッピングのうちの１又は複数を含んでも良い。テクスチャ・マッピングを実行するとき、表示プロセッサ１６は、９６において、テクスチャー・ストレージ及びフィルタリング情報を組み込んでも良い。場合によっては、グラフィックス・プロセッサ１６は、ラスタライズされたデータに関する他のオペレーション（例えば、シェーディング又はスケーリング・オペレーション）を実行しても良い。
【００６２】
表示プロセッサ１６は、１００において、フレーム・バッファに記憶するために、出力ピクセル情報を提供する。場合によっては、フレーム・バッファは、バッファ１５（図１）内に含まれても良い。他の場合において、フレーム・バッファは、記憶媒体８内に含まれても良い。フレーム・バッファは、イメージ・データの１又は複数のフレームを記憶する。そして、それは、１０２において、例えば表示デバイス６上などで、表示されることができる。
【００６３】
前に説明されたように、グラフィックス命令３０は、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数によって実行されても良い。アプリケーション開発者は、一般的に、グラフィックス処理システム４内のいずれの特定のプロセッサがグラフィックス命令３０のうちのいずれのグラフィックス命令を実行するかという多くの知識又は制御を有しなくても良い。特定のケースでは、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数は、グラフィックス命令３０の実行の間、パフォーマンス・イッシューを有する可能性があり、あるいは、処理パイプライン中の潜在的なボトルネックとして機能する可能性がある。アプリケーション開発者がボトルネックの位置又はそのようなボトルネックの影響を解決又は軽減する最も良い方法を正確に指摘することは、しばしば難しい場合がある。このように、一つの態様において、グラフィックス命令３０及び／又はステート情報は、グラフィックス・デバイス２から外部コンピュータ・デバイス（例えばアプリケーション・コンピュータ・デバイス２０）へ提供されても良い。ステート情報は、グラフィックス命令３０の実行の間に起こる（例えば図４に示されるそれらのような）様々なオペレーションに関して、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数からのデータを含んでも良い。アプリケーション・コンピュータ・デバイス２０は、効率的且つ効果的な方法でボトルネックの識別及び解決を支援するために、デバイス２上に示されるグラフィックス・イメージを作成しても良い。
【００６４】
一つの態様に従って、図５は、本開示の一つの態様に従って、図３に示されるグラフィックス・ドライバー１８Ａの更なる詳細を示すブロック図である。前に説明されたように、グラフィックス・ドライバー１８Ａは、グラフィックス処理システム４内で（例えば、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数によって）実行されることができる命令を含んでも良く、また、グラフィックス・ドライバー１８の一部であっても良い。グラフィックス・ドライバー１８Ａの実行は、グラフィックス処理システム４がアプリケーション・コンピュータ・デバイス２０と通信するのを可能にする。一つの態様において、グラフィックス・ドライバー１８Ａは、グラフィックス処理システム５４内で実行されることができる命令を含んでも良く、また、グラフィックス・ドライバー６８の一部であっても良い。
【００６５】
グラフィックス・ドライバー１８Ａは、実行されるとき、様々な機能ブロックを含む。様々な機能ブロックは、転送インタフェース１１０、プロセッサ使用モジュール１１２、ハードウェア・カウンタ・モジュール１１４、他のステート及び／又はパフォーマンス・データを管理することができるステート／パフォーマンス・データ・モジュール１１６、ＡＰＩトレース・モジュール１１８、及び、オーバーライド・モジュール（override module）１２０として図５に示される。グラフィックス・ドライバー１８Ａは、アプリケーション・コンピュータ・デバイス２０と通信するために、転送インタフェース・モジュール１１０を使用する。
【００６６】
プロセッサ使用モジュール１１２は、制御プロセッサ１０、頂点プロセッサ１４、グラフィックス・プロセッサ１２及び表示プロセッサ１６のうちの１又は複数に関するプロセッサ使用情報を収集及び維持する。プロセッサ使用情報は、プロセッサ・サイクル及び／又はパフォーマンス情報を含んでも良い。サイクル・データは、プロファイリング、命令アレイ、頂点及びインデックス・データ又は、他のオペレーションのために使用されるサイクルに関するデータを含んでも良い。プロセッサ使用モジュール１１２は、それから、転送インタフェース・モジュール１１０を介してそのようなプロセッサ使用情報をアプリケーション・コンピュータ・デバイス２０に提供しても良い。場合によっては、プロセッサ使用モジュール１１２は、非同期の方法で、それがこの情報を受信しながら、該情報をデバイス２０に提供する。他の場合において、プロセッサ使用モジュール１１２は、デバイス２０からのリクエストの受信に応じて、情報を提供しても良い。
【００６７】
ハードウェア・カウンタ・モジュール１１４は、制御プロセッサ１０、グラフィックス・プロセッサ１２、頂点プロセッサ１４又は表示プロセッサ１６のうちの１又は複数による命令の実行の間、様々なハードウェア・カウンタを収集及び維持する。カウンタは、グラフィックス処理システム４内での命令実行に関して様々なステート・インジケータ及び／又はメトリックの経過を追っても良い（keep track）。ハードウェア・カウンタ・モジュール１１４は、非同期で又はリクエストに応じて、情報をデバイス２０に提供しても良い。
【００６８】
ステート／パフォーマンス・データ・モジュール１１６は、グラフィックス処理システム４における制御プロセッサ１０、グラフィックス・プロセッサ１２、頂点プロセッサ１４及び表示プロセッサ１６のうちの１又は複数に関する他のステート及び／又はパフォーマンス・データを収集及び維持する。例えば、ステート・データは、場合によっては、グラフィックス・データを含んでも良い。ステート・データは、頂点アレイ（例えば、位置、色、座標、サイズ又は重みデータ）に関係するデータを含んでも良い。ステート・データは、テクスチャー状態データ、点状態データ、線状態データ、ポリゴン状態データ、カリング状態データ、アルファ・テスト状態データ、ブレンド状態データ、デプス状態データ、ステンシル状態データ又は色状態データを更に含んでも良い。パフォーマンス・データは、様々な他のメトリック又はサイクル・データを含んでも良い。ステート／パフォーマンス・データ・モジュール１１６は、非同期で又はリクエストに応じて、情報をデバイス２０に提供しても良い。
【００６９】
ＡＰＩトレース・モジュール１１８は、グラフィックス処理システム４により実行され、転送インタフェース・モジュール１１０を介してアプリケーション・コンピュータ・デバイス２０へ転送されるグラフィックス命令のフロー及び／又はトレースを管理する。前に説明されたように、グラフィックス・デバイス２は、グラフィックス命令３０のコピー（それはその処理パイプラインにおいてグラフィックス処理システム４により実行される）を、デバイス２０に提供する。ＡＰＩトレース・モジュール１１８は、これらのグラフィックス命令３０の捕捉及び転送を管理する。ＡＰＩトレース・モジュール１１８はまた、グラフィックス命令３０を、グラフィックス命令３０のビジュアル表現にマッピングする命令マッピング情報３１（図１）で使用される特定の情報（例えばグラフィックス命令３０を生成するのに使用された可能性のあるＡＰＩ命令）を提供しても良い。
【００７０】
オーバーライド・モジュール１２０は、グラフィックス・ドライバー１８Ａが、グラフィックス処理システム４内の特定の命令の実行を変更又はオーバーライドできるようにする。前に説明されたように、アプリケーション・コンピュータ・デバイス２０は、１又は複数の要求された修正（例えば修正３４）を、グラフィックス・デバイス２に送信しても良い。特定のケースでは、要求された修正３４は、グラフィックス処理システム４におけるグラフィックス命令３０のうちの１又は複数の実行を無効にする１又は複数のリクエスト、又は、グラフィックス命令３０のうちの１又は複数を修正するリクエストを含んでも良い。場合によっては、要求された修正３４は、ステート／パフォーマンス情報３２を変更するリクエストを含んでも良い。
【００７１】
オーバーライド・モジュール１２０は、要求された修正３４を受信又は処理しても良い。例えば、オーバーライド・モジュール１２０は、ステート／パフォーマンス情報３２を修正する任意のリクエストとともに、グラフィックス命令３０のうちの１又は複数を修正するリクエストを、デバイス２０から受信しても良く、また、そのようなリクエストを、グラフィックス処理システム４に送信する。制御プロセッサ１０、グラフィックス・プロセッサ１２、頂点プロセッサ１４及び表示プロセッサ１６のうちの１又は複数は、それから、これらのリクエストを処理し、また、更新された命令／情報３５を生成しても良い。オーバーライド・モジュール１２０は、それから、前に説明されたように、更新された命令／情報３５を、処理のためにアプリケーション・コンピュータ・デバイス２０に送信しても良い。
【００７２】
そのような方法において、グラフィックス・ドライバー１８Ａは、グラフィックス・デバイス２とアプリケーション・コンピュータ・デバイス２０との間のインタフェースを提供する。グラフィックス・ドライバー１８Ａは、グラフィックス命令及びステート／パフォーマンス情報３２をアプリケーション・コンピュータ・デバイス２０に提供することができ、さらに、アプリケーション・コンピュータ・デバイス２０から要求された修正３４を受信することができる。そのような要求された修正３４の処理の後に、グラフィックス・ドライバー１８Ａは、更新された命令／情報３５を、アプリケーション・コンピュータ・デバイス２０へ提供することができる。
【００７３】
図６は、本開示の一つの態様に従った、図１に示されるグラフィックス・デバイス２又は図２に示されるグラフィックス・デバイス５２により実行され得る方法のフローチャートである。説明の便宜のためだけに、以下の説明において、図６の方法は、グラフィックス・デバイス２により実行されると仮定される。
【００７４】
グラフィックス・デバイス２は、コンピュータ・デバイス（例えばアプリケーション・コンピュータ・デバイス２０）に、複数のグラフィックス命令を送信しても良い（１２１）。グラフィックス命令（例えばグラフィックス命令３０）は、グラフィックス・イメージを表示するために、グラフィックス・デバイス２により実行される。グラフィックス命令３０は、アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成されるバイナリの命令を含んでも良い。一つの態様において、グラフィックス・デバイス２は、グラフィックス・ドライバー１８Ａ（図５）のＡＰＩトレース・モジュール１１８を使用して、グラフィックス命令３０を送信しても良い。グラフィックス・デバイス２はまた、アプリケーション・コンピュータ・デバイス２０に、ステート／パフォーマンス情報３２を送信する（１２２）。ステート／パフォーマンス情報３２は、グラフィックス・デバイス２によるグラフィックス命令３０の実行に関連する。一つの態様において、グラフィックス・デバイス２は、グラフィックス・ドライバー１８Ａのステート／パフォーマンス・データ・モジュール１１６を使用して、ステート／パフォーマンス情報３２を送信しても良い。ステート／パフォーマンス情報３２は、グラフィックス命令３０を実行するグラフィックス・デバイス２のプロセッサ１０，１２，１４又は１６のうちの１又は複数からのステート情報又はデータを含んでも良く、また、グラフィックス・データを含んでも良い。ステート／パフォーマンス情報３２はまた、これらのプロセッサ１０，１２，１４又は１６のうちの１又は複数から収集されるパフォーマンス・メトリックを含んでも良い。これらの場合、グラフィックス・デバイス２は、グラフィックス・ドライバー１８Ａのプロセッサ使用モジュール１１２及び／又はハードウェア・カウンター・モジュール１１４を使用して、ステート／パフォーマンス情報３２を送信しても良い。
【００７５】
グラフィックス・デバイス２はまた、アプリケーション・コンピュータ・デバイス２０から、１又は複数の要求された修正３４を受信することができる（１２３）。これらの要求された修正３４は、グラフィックス・デバイス２に、グラフィックス・デバイス２によるグラフィックス命令３０の実行を修正させても良い。要求された修正３４は、グラフィックス・デバイス２上でのグラフィックス命令３０のうちの１又は複数の実行を無効にするリクエスト、グラフィックス・デバイス２上でグラフィックス命令３０のうちの１又は複数を修正するリクエスト、又は、グラフィックス・デバイス２上でのステート情報を修正するリクエストのうちの１又は複数を含んでも良い。一つの態様において、グラフィックス・デバイス２は、グラフィックス・ドライバー１８Ａのオーバーライド・モジュール１２０、ＡＰＩトレース・モジュール１１８及び／又はステート／パフォーマンス・データ・モジュール１１６を使用して、要求された修正３４を受信しても良い。
【００７６】
要求された修正３４の処理に応じて、グラフィックス・デバイス２は、要求された修正３４に基づいて、アプリケーション・コンピュータ・デバイス２０に、更新された命令及び／又はステート情報３５を送信しても良い（１２４）。一つの態様において、グラフィックス・デバイス２は、グラフィックス・ドライバー１８ＡのＡＰＩトレース・モジュール１１８及び／又はステート／パフォーマンス・データ・モジュール１１６を使用して、更新された命令／情報３５を送信しても良い。
【００７７】
グラフィックス・デバイス２が、１又は複数のグラフィックス・イメージ又は画像フレームのために情報の処理を終了しなかったならば（１２５）、グラフィックス・デバイスは、グラフィックス命令３０を送信すること、ステート／パフォーマンス情報３２を送信すること、要求された修正３４を受信すること、及び、更新された命令／情報３５を送信することを、複数のイメージ又はグラフィックス・イメージのフレームについて、繰り返しても良い。場合によっては、グラフィックス・デバイス２は、グラフィックス命令３０及びステート／パフォーマンス情報３２に従って、１又は複数のグラフィックス・イメージを表示デバイス６上に表示しても良い。
【００７８】
図７は、一つの態様に従って、プロセッサ２２上でのシミュレーション・アプリケーション２８（図１）又はシミュレーション・アプリケーション２９（図２）の実行を通してアプリケーション・コンピュータ・デバイス２０により実行され得る方法のフローチャートである。アプリケーション・コンピュータ・デバイス２０は、外部グラフィックス・デバイスから複数のグラフィックス命令を（例えば外部グラフィックス・デバイス２からグラフィックス命令３０）受信する（１３０）。グラフィックス命令３０は、１又は複数のグラフィックス・イメージ（例えば３次元（３Ｄ）グラフィックス・イメージ）を表示デバイス６上に表示するために、グラフィックス・デバイス２により実行される。一つの態様において、グラフィックス命令３０は、実行されるときに、グラフィックス・イメージをレンダリングするコール・ストリームを含む。一つの態様において、コール・ストリームは、アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成されるバイナリの命令を含む。
【００７９】
アプリケーション・コンピュータ・デバイス２０は、グラフィックス・デバイス２から、ステート及び／又はパフォーマンス情報３２を受信しても良い（１３２）。ステート／パフォーマンス情報３２は、グラフィックス・デバイス２上でのグラフィックス命令３０の実行に関連する。ステート／パフォーマンス情報３２は、それがグラフィックス・イメージをレンダリングするときの、グラフィックス・デバイス２の１又は複数のステートを示すステート情報を含んでも良い。ステート情報は、グラフィックス命令３０を実行するグラフィックス・デバイス２の１又は複数のプロセッサ（例えば、制御プロセッサ１０、グラフィックス・プロセッサ１２、頂点プロセッサ１４及び／又は表示プロセッサ１６）からのステート情報を含んでも良い。ステート／パフォーマンス情報３２は、場合によっては、グラフィックス・データ（例えば、プリミティブ・データ及び／又はラスタライズされたデータ）を含んでも良い。
【００８０】
アプリケーション・コンピュータ・デバイス２０は、グラフィックス命令３０及びステート／パフォーマンス情報３２に従って、１又は複数のグラフィックス・イメージの表現を表示しても良い（１３４）。そのような方法において、アプリケーション・コンピュータ・デバイス２０は、グラフィックス・デバイス２をシミュレーションするシミュレーションされた環境内でこれらのグラフィックス・イメージの表現を表示することができる。シミュレーションされた環境は、アプリケーション・コンピュータ・デバイス２０のプロセッサ２２の上で、シミュレーション・アプリケーション２８の実行を通して提供されても良い。
【００８１】
アプリケーション・コンピュータ・デバイス２０は、グラフィックス命令３０及びステート／パフォーマンス情報３２の少なくとも一部を表示デバイス２４上に表示する（１３６）。場合によっては、グラフィックス命令３０がバイナリの命令を含むとき、アプリケーション・コンピュータ・デバイス２０は、グラフィックス命令３０のビジュアル表現を表示する。前に説明されたように、アプリケーション・コンピュータ・デバイス２０は、グラフィックス命令３０を命令３０の表現にマッピングする命令マッピング情報３１を使用しても良い。その表現は、表示デバイス２４上にビジュアルに表示され得る関連するグラフィックスアプリケーション・プログラミング・インタフェース（ＡＰＩ）命令を含んでも良い。ステート／パフォーマンス情報３２のビジュアル表現はまた、表示デバイス２４上に表示されても良い。グラフィックス命令３０を受信すること（１３０）、ステート情報３２を受信すること（１３２）、グラフィックス・イメージの表現を表示すること（１３４）、及び、命令及びステート情報を表示すること（１３６）は、更なるフレームがあるならば（１３８）、１又は複数のグラフィックス・イメージの複数のイメージ・フレームについて、繰り返されても良い。この方法において、アプリケーション・コンピュータ・デバイス２０は、静止及び動画グラフィックス・イメージ（３Ｄイメージを含む）を表示デバイス２４上に表示することができる。
【００８２】
一つの態様において、プロセッサ２２は、ナビゲーション・コントローラを表示デバイス２４上に表示するために、シミュレーション・アプリケーション２８を実行しても良い。ユーザ（例えばアプリケーション開発者）は、表示デバイス２４上に表示されるグラフィカル・ユーザ・インタフェース内のナビゲーション・コントローラとビジュアルにインタラクトしても良い。グラフィカル・ユーザ・インタフェースは、１又は複数の表示されたグラフィックス・イメージの斜視図を変更するために、ナビゲーション・コントローラとインタラクトするために、アプリケーション開発者からのユーザ入力を受信しても良い。グラフィックス・イメージの修正された斜視図は、それから、ナビゲーション・コントローラに対するユーザ入力に基づいて、グラフィカル・ユーザ・インタフェースにおいて表示されても良い。
【００８３】
一般に、１又は複数のグラフィックス・イメージが、ビジュアルに提示され、表示デバイス２４上に表示された後、シミュレーション・アプリケーション２８（プロセッサ２２の上の実行の間）は、グラフィックス・イメージを修正するために、ユーザ入力を受信しても良い。例えば、下で更に詳細に説明されるように、アプリケーション・コンピュータ・デバイス２０は、外部グラフィックス・デバイス２（ここで、グラフィックス・デバイス２は、アプリケーション・コンピュータ・デバイス２０に関して外部にある）によるグラフィックス命令３０の実行に対する１又は複数の要求された修正３４を指定するユーザ入力を受信しても良い。このユーザ入力の受信に応じて、アプリケーション・コンピュータ・デバイス２０は、処理のために、要求された修正３４をグラフィックス・デバイス２に送信する。グラフィックス・デバイス２は、それから、前に説明されたように、要求された修正３４を処理しても良い。要求された修正３４は、グラフィックス・デバイス２上でのグラフィックス命令３０のうちの１又は複数の実行を無効にするリクエスト、グラフィックス・デバイス２上でグラフィックス命令３０のうちの１又は複数を修正するリクエスト、及び、グラフィックス・デバイス２上でのステート／パフォーマンス情報を修正するリクエストのうちの少なくとも一つを含んでも良い。
【００８４】
アプリケーション・コンピュータ・デバイス２０は、続いて、グラフィックス・デバイス２から複数の更新されたグラフィックス命令及び／又は情報３５を受信しても良い。更新されたグラフィックス命令／情報３５は、要求された修正３４に関連する場合がある。更新された命令／情報３５は、グラフィックス・デバイス２によるグラフィックス命令３０の実行に対する要求された修正３４に関連する更新されたステート情報を含んでも良い。更新された命令／情報３５の受信に応じて、アプリケーション・コンピュータ・デバイス２０は、更新された命令／情報３５に従って、１又は複数のグラフィックス・イメージの更新されたバージョンを表示しても良い。
【００８５】
図８は、一つの態様に従って、プロセッサ２２でのシミュレーション・アプリケーション２８（図１）又はシミュレーション・アプリケーション２９（図２）の実行を通してアプリケーション・コンピュータ・デバイス２０により実行され得る方法のフローチャートである。この態様において、アプリケーション・コンピュータ・デバイス２０は、グラフィックス・デバイス２から、グラフィックス命令３０を受信しても良い（１５０）。アプリケーション・コンピュータ・デバイス２０はまた、グラフィックス・デバイス２から、ステート及び／又はパフォーマンス情報３２を受信しても良い（１５２）。グラフィックス命令３０及びステート／パフォーマンス情報３２の受信に応じて、アプリケーション・コンピュータ・デバイス２０は、グラフィックス命令３０及びステート／パフォーマンス情報３２に従って、１又は複数のグラフィックス・イメージの表現を表示しても良い（１５４）。
【００８６】
これらのイメージの作成の間又はそれに応じて、アプリケーション・コンピュータ・デバイス２０は、１又は複数のパフォーマンス・イッシューを識別するための入力を受信しても良い（１５６）。例えば、場合によっては、アプリケーション・コンピュータ・デバイス２０は、グラフィックス命令３０の実行に及び／又はグラフィックス・デバイス２により提供されるステート／パフォーマンス情報３２の解析に基づいて、グラフィックス命令３０の実行における潜在的なボトルネックを識別するために、シミュレーション・アプリケーション２８からの入力を自動的に受信しても良い。これらのボトルネックは、グラフィックス・デバイス２の処理パイプライン（例えば、制御プロセッサ１０、グラフィックス・プロセッサ１２、頂点プロセッサ１４及び／又は表示プロセッサ１６）内のグラフィックス命令３０の実行に関連する場合がある。場合によっては、アプリケーション・コンピュータ・デバイス２０は、グラフィックス・イメージを作成するための、アプリケーション・コンピュータ・デバイス２０上でのグラフィックス命令３０の実行の間の１又は複数のパフォーマンス・イッシューを指定又はさもなければ識別する入力を、ユーザ（例えばアプリケーション開発者）から受信しても良い。
【００８７】
一つの態様において、ステート／パフォーマンス情報３２は、グラフィックス・デバイス２上でのグラフィックス命令３０の実行に関連するパフォーマンス情報を含む。アプリケーション・コンピュータ・デバイス２０は、そのグラフィックス命令３０の実行の間、グラフィックス・デバイス２上の１又は複数のパフォーマンス・イッシューを識別するために、パフォーマンス情報を解析しても良い。場合によっては、パフォーマンス情報は、グラフィックス・デバイス２上でグラフィックス命令３０を実行し得る１又は複数のプロセッサ１０，１２，１４又は１６から収集されるパフォーマンス・メトリックを含んでも良い。アプリケーション・コンピュータ・デバイス２０が、グラフィックス・デバイス２から受信されるパフォーマンス情報を解析するとき、それは、これらのプロセッサ１０，１２，１４又は１６のうちの１又は複数における減少したパフォーマンスを識別しても良い。
【００８８】
そのようなイッシューの識別に応じて、アプリケーション・コンピュータ・デバイス２０は、グラフィックス命令３０の実行に対する１又は複数の要求された修正３４を、グラフィックス・デバイス２に送信しても良い（１５８）。場合によっては、アプリケーション・コンピュータ・デバイス２０は、要求された修正３４のうちの１又は複数を指定するユーザ入力を受信しても良い。要求された修正３４は、グラフィックス・デバイス２上でのグラフィックス命令３０のうちの１又は複数の実行を無効にするリクエスト、グラフィックス・デバイス２上でグラフィックス命令３０のうちの１又は複数を修正するリクエスト、及び、グラフィックス・デバイス２上でのステート／パフォーマンス情報を修正するリクエストのうちの少なくとも一つを含んでも良い。
【００８９】
グラフィックス・デバイス２が、要求された修正３４（例えば、前に説明された）を処理した後、アプリケーション・コンピュータ・デバイス２０は、グラフィックス・デバイス２から、複数の更新された命令及び／又は情報３５を受信しても良い（１６０）。更新された命令／情報３５は、更新されたグラフィックス命令及び／又は更新されたパフォーマンス情報を含んでも良い。任意の更新されたグラフィックス命令及び／又はパフォーマンス情報は、グラフィックス・デバイス２によるグラフィックス命令３０の実行に対して要求された修正３４に関連する場合がある。アプリケーション・コンピュータ・デバイス２０は、それから、更新されたグラフィックス命令及び更新されたパフォーマンス情報に従って、１又は複数のグラフィックス・イメージのアップデートされた表現を表示デバイス２４上に表示しても良い。
【００９０】
アプリケーション・コンピュータ・デバイス２０は、それから、前に識別されたパフォーマンス・イッシューのうちの１又は複数が解決されたかどうか判定するために、更新されたパフォーマンス情報を解析しても良い（１６２）。場合によっては、アプリケーション・コンピュータ・デバイス２０は、特定のパフォーマンス・イッシューが解決又はさもなければ軽減されたかどうか判定するために、更新された命令／情報３５を、自動的に解析又は処理することができても良い。場合によっては、アプリケーション開発者は、更新された命令／情報３５の開発者の解析及び／又は表示デバイス２４上に表示されたグラフィックス・イメージのアップデートされた表現のレビューに応じて、特定のパフォーマンス・イッシューが解決又はさもなければ軽減されたことを、ユーザ入力を通して、アプリケーション・コンピュータ・デバイス２０に知らせることができても良い。
【００９１】
アプリケーション・コンピュータ・デバイス２０は、既存のパフォーマンス・イッシューを識別すること、要求された修正３４をグラフィックス・デバイス２に送信すること、及び、更新された命令及び／又は情報３５を受信することからなるアクトを、識別されたパフォーマンス・イッシューが解決又はさもなければ軽減されるまで、反復的な方法で、繰り返しても良い。アプリケーション・コンピュータ・デバイス２０はまた、表示デバイス２４上にビジュアルに提示される１又は複数のグラフィックス・イメージの複数の画像フレームについて図８に示されるアクトを繰り返す（１６４）。この方法において、アプリケーション・コンピュータ・デバイス２０は、静止及び動画グラフィックス・イメージ（３Ｄイメージを含む）を表示デバイス２４上に表示することができる。
【００９２】
図９は、一つの態様に従って、グラフィック・ウインドウ２０３中に情報を表示するための表示デバイス２０１に接続されるグラフィックス・デバイス２００の例を示す概念図である。例えば、グラフィックス・デバイス２００がグラフィックス・デバイス２（図１）の一部であるならば、表示デバイス２０１は、アプリケーション・コンピュータ・デバイス２０のグラフィックス・デバイス２４の一部であっても良い。グラフィックス・デバイス２００は、３Ｄグラフィックス・イメージ２０２を表示することができる。表示デバイス２０１は、グラフィックス・デバイス２００から送信されるグラフィックス命令及びステート／パフォーマンス情報に基づいて、ウインドウ２０３中に、３Ｄグラフィックス・イメージ２１０（それはグラフィックス・イメージ２０２の表現である）を表示することができる。
【００９３】
開発者がグラフィックス・イメージ２１０又はグラフィックス・イメージ２１０を含む全体のシーンを修正するために、これらの命令及びステート／パフォーマンス情報を変更し得るように、表示デバイス２０１はまた、これらの命令及びステート／パフォーマンス情報のビジュアル表現を表示することができる。表示デバイス２０１は、グラフィックス・デバイス２００に接続された任意のタイプのコンピュータ・デバイス（図示せず）中に含まれても良く、また、グラフィックス・デバイス２００からそのような命令及びステート／パフォーマンス情報を受信することができる。簡単にするために、表示デバイス２０１を含むコンピュータ・デバイスは、図１０に示される概念図から省略された。
【００９４】
前に説明されたように、グラフィックス・デバイス２００は、３Ｄグラフィックス・イメージ２０２（それは図９の例における立方体である）の表示ができる。グラフィックス・デバイス２００はまた、キーパッド２０４を有する。ユーザは、グラフィックス・デバイス２００を操作するために、キーパッド２０４とインタラクトしても良い。キーパッド２０４は、幾つかのキー及び／又はボタンを含んでも良い。グラフィックス・デバイス２００は、コネクタ２０６を介して、グラフィックス・デバイス２０１を含むデバイス（例えば、アプリケーション・コンピュータ・デバイス２０）に、グラフィックス命令及びステート／パフォーマンス情報を送信することができる。一つの態様において、コネクタ２０６は、ユニバーサルシステムバス（ＵＳＢ）コネクタを含む。他の態様において、異なる形のコネクタ（例えば電気電子技術者協会（Institute of Electrical and Electronic Engineers）（ＩＥＥＥ）１３９４コネクタ））が、使用されても良い。幾つかの態様において、無線通信がコネクタ２０６を置き換えても良い。
【００９５】
図９の例において示されるように、表示デバイス２０１は、グラフィカル・ユーザ・インタフェース内に様々なタイプの情報を表示しても良い。この例では、表示デバイス２０１は、グラフィカル・ユーザ・インタフェース内にグラフィカル・ウインドウ２０３を表示する。ウインドウ２０３は、表示エリア２１１、グラフィックス命令エリア２０８及びステート／パフォーマンス情報エリア２１４を含む。表示エリア２１１は、３Ｄグラフィックス・イメージ２１０を含む。そして、それは、前に説明されたように、３Ｄグラフィックス・イメージ２０２の表現である。この例において、３Ｄグラフィックス・イメージは、立方体を含む。一つの態様に従って、表示デバイス２０１に表示される情報は、デバッギング及びテストの目的のために、グラフィックス・デバイス２０２上に表示される情報の表現又はシミュレーションを含む。
【００９６】
図９の例において、グラフィックス命令エリア２０８は、グラフィックス・デバイス２００から受信された１又は複数のグラフィックス命令のビジュアル表現を含む。前に説明されたように、そのような命令のビジュアル表現は、そのような命令の表現を含んでも良い。例えば、グラフィックス・デバイス２００がバイナリのグラフィックス命令を送信するならば、表示デバイス２０１は、他の形（例えば、よりハイレベルなアプリケーション・プログラミング・インタフェース（ＡＰＩ）命令（例えば、ＯｐｅｎＧＬ命令））で、そのようなバイナリ命令の表現を表示しても良い。マッピング情報（例えば、図１に示されるマッピング情報３１）は、受信されたバイナリ命令を、グラフィックス命令エリア２０８ＮＡＩに表示され得る他のフォーマットにマッピングするために、使用されても良い。
【００９７】
ステート／パフォーマンス情報エリア２１４は、グラフィックス・デバイス２００から受信された選択されたステート及び／又はパフォーマンス情報のビジュアル表現を含む。受信されたグラフィックス命令及びステート／パフォーマンス情報は、表示エリア内に３Ｄグラフィックス・イメージ２１０を表示するために使用されても良い。一つの態様において、グラフィックス・デバイス２００は、様々なステート及び／又はパフォーマンス・データを提供するために、ステート／パフォーマンス・データ・モジュール（例えば、図５に示されるステート／パフォーマンス・データ・モジュール１１６）を実装するグラフィックス・ドライバーを利用しても良い。受信されたステート／パフォーマンス情報は、グラフィックス・データ（例えば、プリミティブ・データ及び／又はラスタライズされたデータ）を含んでも良い。
【００９８】
ウインドウ２０３又は、１又は複数のセレクター２１２Ａ〜２１２Ｎを含む。ユーザは、これらのセレクター２１２Ａ〜２１２Ｎの任意のものを選択しても良い。各々のセレクター２１２Ａ〜２１２Ｎは、下で更に詳細に説明されるように、異なる機能（例えば統計及びナビゲーション機能）に関連し得る。ウインドウ２０３は、セレクター２１６Ａ〜２１６Ｎ及び２１８Ａ〜２１８Ｎを更に含む。そして、それぞれは、ユーザにより選択されても良い。各々のセレクター２１６Ａ〜２１６Ｎ及び２１８Ａ〜２１８Ｎはまた、図１０を参照して下で更に詳細に説明されるように、異なる機能（例えば、メトリック機能、、オーバーライド機能及び／又はテクスチャー機能）に関連し得る。
【００９９】
ユーザ（例えばアプリケーション開発者）は、ウインドウ２０３内に表示される情報を変更しても良い。例えば、ユーザは、グラフィックス命令エリア２０８内に表示される命令のうちの１又は複数、又は、ステート／パフォーマンス情報エリア２１４内のステート／パフォーマンス情報の任意のものを修正しても良い。
【０１００】
ウインドウ２０３内でユーザにより開始される任意の変更は、それから、要求された修正としてグラフィックス・デバイス２００へ送信されても良い。グラフィックス・デバイス２００は、それから、これらの修正を処理しても良く、また、それからグラフィックス命令エリア２０８及び／又はステート／パフォーマンス情報エリア２１４内に表示され得る更新された命令及び／又は情報を提供しても良い。更新された命令及び／又は情報はまた、表示エリア２１１内に３Ｄグラフィックス・イメージ２１０の修正版を表示するために使用されても良い。
【０１０１】
一つの態様において、エリア２１４内に表示され得るステート及び／又はパフォーマンス情報は、グラフィックス・デバイス２００上でのグラフィックス命令の実行の間、潜在的なボトルネックを識別するために、表示デバイス２０１（例えば、図１に示されるアプリケーション・コンピュータ・デバイス２０）を含むコンピュータ・デバイスにより解析されても良い。最終的に、ユーザ（例えばアプリケーション開発者）は、グラフィックス・デバイス２００上でのグラフィックス命令の実行を最適化するために、デバッギング・プロセスの間に、ウインドウ２０３中に提示される情報の閲覧を望む場合がある。前に説明されたように、ボトルネックは、グラフィックス・デバイス２００中のグラフィックス処理パイプライン内のどこにでも、もたらされる可能性があり、アプリケーション開発者がパフォーマンス最適化のためにそのようなボトルネックを分離することは難しい場合がある。ステート及び／又はパフォーマンス情報の解析を通して、潜在的なボトルネック及び考えられる回避方法は、ウインドウ２０３中に、例えば１又は複数のサブウインドウ又はポップアップウインドウ内に、又は、ウインドウ２０３のエリア２１４内に、表示されることができる。
【０１０２】
一つの態様において、ウインドウ２０３は、グラフィックス・デバイス２００から受信されるグラフィックス命令のコール・ストリームにおいて発生されるボトルネックに関するレポートを表示しても良く、さらに、考えられる回避方法を表示しても良い。場合によっては、これらの考えられる回避方法は、“仮定の（what-if）”シナリオとしてユーザへ提示されても良い。例えば、コール・ストリームにおける最適化されていない三角形のリストのレンダリングが、第１の可能性があるシナリオとして提示されても良く、一方、三角形−細片の最適化フレームワーク（triangle-strip optimization framework）を通してリストアップする前処理が、第２の可能性があるシナリオとして提示されても良い。ユーザは、これらの可能性がある回避方法シナリオの任意のものを要求された修正として選択しても良く、そして、要求された修正は、それから、グラフィックス・デバイス２００へ送信される（そこでパフォーマンスが測定されても良い）。グラフィックス・デバイス２００は、それから、更新された命令／情報を送信する。そして、それは、グラフィックス命令エリア２０８及び／又はステート／パフォーマンス情報エリア２１４内に提示されても良い。ユーザは、それから、その結果を閲覧することができ、そして、最適の解決を識別するために、様々な異なる潜在的な回避方法に関する結果を比較することができる。ユーザは、それらのアプリケーションからボトルネックを取り除くために、取ることができる一連のステップを速く識別するために、このプロセスを使用することができる。
【０１０３】
ユーザは、実験又は試行／エラー・デバッギングの目的のために、ウインドウ２０３内での調整を行うことを繰り返し継続しても良い。ユーザは、表示エリア２１１内に表示されるイメージ又はシーンの変化を識別するために、グラフィックス命令及びステート／パフォーマンス情報の様々な異なる形又は組み合せで実験しても良い。ユーザは、グラフィックス・デバイス２００上でソース・コードの再コンパイル及びコンパイルされたコードの再実行の必要なしに、グラフィックス命令（それはコール・ストリームの一部である場合がある）及びグラフィックス・デバイス２００により提供されるステートをインタラクティブにビューイング及び修正するために、ウインドウ２０３の内容により提供されるシミュレーション環境を使用することができる。
【０１０４】
場合によっては、ユーザは、グラフィックス・イメージ２１０の斜視図を修正するために、グラフィカル・ナビゲーション・コントローラ（例えば、グラフィカル・カメラ）を操作するために、ボタン２１２Ａ〜２１２Ｎのうちの１又は複数を操作しても良い。そのような操作は、それから元のグラフィックス・デバイス２００へ送信される要求された修正として捕捉されても良い。グラフィックス・デバイス２００により提供される更新された命令／情報は、それから、グラフィックス・イメージ２１０の斜視図を修正するために使用される。
【０１０５】
場合によっては、様々なテクスチャー及び／又はステート情報は、修正可能な実体としてウインドウ２０３のエリア２１４中に提供されても良い。さらに、グラフィックス命令エリア２０８内の１又は複数の対応する命令が識別されるように、ユーザは、例えば、表示エリア２１１内のグラフィックス・イメージ２１０のピクセルの選択さえ行っても良い。この方法において、ユーザは、そのピクセル又はグラフィックス・イメージ２１０の他の部分をレンダリングするために使用されたレンダリング命令又はコールに後退して効果的にドリル（drill）することができる。正確にそれがグラフィックス・デバイス２００上で提示されているときに、グラフィックス・デバイス２０１がウインドウ２０３中でイメージ２１０を作成する可能性があるので、ユーザは、それらのアプリケーション（それはグラフィックス命令エリア２０８中に表示される様々なグラフィックス命令に基づいても良い）におけるイッシューを速く分離させ、新たな影響をプロトタイピングするために、ステート／パフォーマンス・エリア２１４内の任意のステートを修正することができる。
【０１０６】
図１０は、一つの態様に従って、グラフィカル・ウインドウ２２０中に情報を表示する表示デバイス２０１に接続されるグラフィックス・デバイス２００の他の例を示す概念図である。この態様において、ウインドウ２２０は、メトリック情報だけでなく、様々な命令情報を含む。
【０１０７】
例えば、グラフィックス命令エリア２０８内に、様々なグラフィックス命令２４２が示される。グラフィックス命令２４２は、グラフィックス・デバイス２００により提供されるグラフィックス命令のサブセットである場合がある。例えば、グラフィックス・デバイス２００がグラフィックス・デバイス２の一部であるならば、グラフィックス命令２４２はグラフィックス命令３０のサブセットであっても良い。場合によっては、マッピング情報（例えば、図１に示されるマッピング情報３１又は図２に示されるマッピング情報３３）は、グラフィックス・デバイス２００から受信される到来命令（incoming instructions）を、グラフィックス命令エリア２０８内に表示される命令２４２として実体化される、これらの命令のビジュアル表現にマッピングするために使用されても良い。例えば、受信された命令がバイナリ形式であるならば、命令２４２はバイナリ形式の命令を生成するために使用されたＡＰＩ命令を含んでも良い。
【０１０８】
図１０の例に示されるように、グラフィックス命令２４２は、ハイレベル命令及びローレベル命令の両方を含む。ユーザ（例えばアプリケーション開発者）は、命令２４２のフルセットを閲覧するために、スクロールバー２４４を使用しても良い。特定のハイレベル命令は、１又は複数のローレベル命令（例えば、より低いレベルのＡＰＩ命令）を含んでも良い。アプリケーション開発者は、場合によっては、関連するハイレベル命令の一部である又は関連するハイレベル命令により実行される、任意のローレベル命令を閲覧するために、特定のハイレベル命令の上で（例えば、クリックすることなどによって）選択しても良い。前に説明されたように、受信されたグラフィックス命令（例えば命令２４２）は、グラフィックス・イメージ２０２の表現を生成するために使用される。そして、それは、ウインドウ２２０の表示エリア２１１中に示されるグラフィックス・イメージ２１０を含む。
【０１０９】
様々な選択ボタンは、図１０中のステート／パフォーマンス情報エリア２１４の下に示される。これらの選択ボタンは、テクスチャー・ボタン２３６、オーバーライド・ボタン２３８及びメトリック・ボタン２４０を含む。図１０の例において、アプリケーション開発者は、メトリック・ボタン２４０を選択した。このボタンの選択に応じて、様々なメトリック・オプションが示されても良い。例えば、１又は複数のメトリック・ボタン２３４Ａ〜２３４Ｎが、ステート／パフォーマンス・エリア２１４より上に示されても良い。各々のメトリック・ボタン２３４Ａ〜２３４Ｎは、特定のメトリックに関連しても良い。場合によっては、これらのメトリックのうちの１又は複数は予め定義又は予め構成されたメトリック・タイプであっても良く、また、場合によっては、アプリケーション開発者が、メトリックのうちの１又は複数を選択又はカスタマイズしても良い。例示的なメトリックは、例えば、以下のうちの任意の１又は複数を含んでも良い：フレーム毎秒、％ビジー（１又は複数のプロセッサについて）、バス・ビジー、メモリ・ビジー、頂点ビジー、頂点毎秒、三角形毎秒、ピクセル・クロック毎秒、フラグメント毎秒、その他。アプリケーション開発者は、選択されたメトリックに関して更なる詳細を閲覧するために、メトリック・ボタン２３４Ａ〜２３４Ｎのうちの任意のものを選択しても良い。
【０１１０】
例えば、メトリック・ボタン２３４Ａがフレーム毎秒の数に関連するならば、アプリケーション開発者は、グラフィックス・イメージ２１０について（パフォーマンスに関係する）フレーム毎秒の数に関する更なる詳細を閲覧するために、メトリック・ボタン２３４Ａを選択しても良く、又は、グラフィックス・イメージ２１０の部分を選択しても良い。開発者は、場合によっては、メトリック・ボタン２３４Ａを選択しても良く、または、メトリック・ボタン２３４Ａをステート／パフォーマンス情報エリア２１４にドラッグしても良い。フレーム毎秒の数に関する詳細な情報は、ステート／パフォーマンス情報エリア２１４内に表示されても良い。開発者はまた、メトリック・ボタン２３４Ａを表示エリア２１１にドラッグしても良く、又は、メトリック・ボタン２３４Ａのアプリケーションのためのグラフィックス・イメージ２１０の部分を選択しても良い。例えば、開発者は、メトリック・ボタン２３４Ａの選択の後にグラフィックス・イメージ２１０の部分を選択しても良く、そして、その選択された部分に対するフレーム毎秒の数に関する詳細な情報が、ステート／パフォーマンス情報エリア２１４内に表示されても良い。そのような方法において、開発者は、メトリック・ボタン２３４Ａ〜２３４Ｎのうちの１又は複数の選択に基づいて、そして、グラフィックス・イメージ２１０（又はその部分）の可能性がある選択にさえ基づいて、任意の数の異なるメトリック・タイプのためのパフォーマンス・データを閲覧しても良い。
【０１１１】
一つの態様において、ウインドウ２２０内に表示され得るメトリック・データは、グラフィックス・デバイス２００のグラフィックス・ドライバー（例えば、図５に示されるグラフィックス・ドライバー１８）により提供されても良い。このグラフィックス・ドライバーは、それからウインドウ２２０内にメトリック・データとして表示され得る様々なデータを提供するために、ハードウェア・カウンタ・モジュール（例えば、図５のハードウェア・カウンタ・モジュール１１４）及び／又はプロセッサ使用モジュール（例えば、図５のプロセッサ使用モジュール１１２）を実装しても良い。
【０１１２】
開発者はまた、場合によっては、テクスチャー・ボタン２３６を選択しても良い。選択に応じて、グラフィックス・イメージ２１０に関係する様々な形のテクスチャー情報が、グラフィックス・デバイス２０１により表示されても良い。例えば、テクスチャー情報は、ウインドウ２２０内に（例えばステート／パフォーマンス情報エリア２１４内などに）表示されても良い。場合によっては、テクスチャー情報は、更なる（例えば、ポップアップ）ウインドウ（図示せず）内に表示されても良い。開発者は、表示されたテクスチャー情報を閲覧しても良いが、また、場合によっては、テクスチャー情報を修正しても良い。これらの場合、テクスチャー情報に対する任意の修正が、要求された修正として、グラフィックス・デバイス２００へ伝播されても良い。グラフィックス・デバイス２００からの更新された命令／情報の受信に応じて、グラフィックス・イメージ２１０に対する変更が、表示エリア２１１内に表示されても良い。図１１は、テクスチャー・ボタン２３６の選択に応じて表示され得る特定のテクスチャー情報を含む。
【０１１３】
開発者はまた、場合によっては、オーバーライド・ボタン２３８を選択しても良い。オーバーライド・ボタン２３８の選択の後、特定の情報（命令及び／又はステート）が、（例えば、ウインドウ２２０又は他のウインドウ内に）表示されても良い。そして、それは、開発者によって、修正又はオーバーライドされても良い。任意の修正又はオーバーライドは、グラフィックス・デバイス２００に送信される１又は複数の要求された修正の中に含まれても良い。一つの態様において、グラフィックス・デバイス２００は、任意の要求された修正を処理するために、グラフィックス・ドライバー（例えばグラフィックス・ドライバー１８Ａ（図５））を実装しても良い。例えば、グラフィックス・デバイス２００は、１又は複数のオーバーライドを含むそのような要求された修正を処理するために、オーバーライド・モジュール１２０を使用しても良い。
【０１１４】
場合によっては、開発者は、グラフィックス命令エリア２０８内に示されるグラフィックス命令２４２上の１又は複数をオーバーライドしても良い。これらの場合、開発者は、グラフィックス命令２４２のうちの１又は複数を修正又はオーバーライドするために、グラフィックス命令エリア２０８内に情報をタイプ又は入力しても良い。これらの修正は、それから、グラフィックス・デバイス２００に送信されても良い。そして、それは、表示エリア２１１内のグラフィックス・イメージ２１０の表示を更新するために、更新された命令／情報を提供するであろう。開発者は、命令２４２により提供される１又は複数の機能をオーバーライドするために、例えば、グラフィックス命令２４２のパラメータ、順序付け、タイプなどを変更しても良い。一つの態様において、マッピング情報３１（図１）又はマッピング情報３３（図２）は、それから、グラフィックス命令２４２に対する変更を、グラフィックス・デバイス２００に提供され得る他のフォーマット（例えば、バイナリ命令）の対応する命令に、マッピング又は変換するために使用されても良い。
【０１１５】
場合によっては、開発者はまた、グラフィックス・デバイス２００により実装される処理パイプラインに関連する１又は複数の機能をオーバーライドするオーバーライド・ボタン２３８を選択しても良い。図１２は、オーバーライド・ボタン２３８の選択に応じて、開発者に対して表示され得るオーバーライド・スクリーンの例を表す。
【０１１６】
ウインドウ２２０は、選択ボタン２３０及び２３２を更に含む。選択ボタン２３０は、パーティション・ボタンであり、選択ボタン２３２は、ナビゲーション・ボタンである。開発者は、グラフィックス・イメージ２１０の表示に関連する統計情報を閲覧するために、統計ボタン２３０を選択しても良い。この統計情報は、１又は複数のグラフ、テーブル又は他の形の統計情報を含んでも良い。図１１は、統計ボタン２３０のユーザ選択に応じて表示され得る特定の統計及びテクスチャー情報の一例を提供する。開発者は、様々なパフォーマンス又はグラフィックス・イメージ２１０の表示に関連する他の関係するイッシューのより良い理解を得るために、統計情報を閲覧しても良い。
【０１１７】
開発者は、表示エリア２１１内でナビゲートするために、そして、表示エリア２１１内のグラフィックス・イメージ２１０の斜視図の変更さえ可能にする、ナビゲーション・ボタン２３２を選択しても良い。例えば、ナビゲーション・ボタン２３２の選択に応じて、３Ｄグラフィカル・カメラ又はナビゲーション・コントローラが、表示されても良い。開発者は、表示エリア２１１内の任意のエリアに対してナビゲートするために、コントローラとインタラクトしても良い。開発者はまた、グラフィックス・イメージ２１０の斜視図を（例えばグラフィックス・イメージ２１０の回転又はズームイン／ズームアウトなどによって）変更するために、コントローラを使用しても良い。
【０１１８】
一つの態様において、ナビゲーション・ボタン２３２の選択を通した任意の開発者起動（developer-initiated）の変更及びグラフィカル・ナビゲーション・コントローラに対するインタラクションは、要求された修正（例えば、図１に示される要求された修正８４の一部）として、グラフィックス・デバイス２００へ伝播されても良い。それからグラフィックス・デバイス２００により提供される更新された命令／情報は、それから、グラフィックス・イメージ２１０の表示（例えば、斜視図）を更新するために使用されても良い。さらに、更新された命令は、グラフィックス命令エリア２０８内に表示されても良い。更新されたステート／パフォーマンス情報はまた、ステート／パフォーマンス情報エリア２１４内に表示されても良い。
【０１１９】
その結果、開発者は、グラフィックス・イメージ２１０をレンダリング又は表示するための代わりの展望、方針、ビュー、その他が、グラフィックス・デバイス２００のパフォーマンス及びステートにどのように影響を及ぼし得るかについて効果的且つ効率的に判定し得る。これは、表示デバイス２０１上に表示されたシミュレーション環境においてグラフィックス・イメージ２１０及び効果的にグラフィックス・デバイス２００上に表示されるグラフィックス・イメージ２０２を作成及びレンダリングするために使用されるグラフィックス命令２４２を最適化する際に、開発者にとって非常に有用であり得る。一つの態様において、ウインドウ２２０内の開発者起動の選択及び制御に基づくグラフィックス・イメージ２１０の位置、奥行き、方向、その他の任意の変更はまた、テスティング・プロセスの間にグラフィックス・デバイス２００に表示され得るグラフィックス・イメージ２０２のための変更とみなされても良い。
【０１２０】
グラフィカル・ユーザ・インタフェース内のグラフィカル・ウインドウ２２０とのインタラクションを通して、アプリケーション開発者は、グラフィックス命令２４２の実行の間、パフォーマンス・イッシュー及び／又はボトルネックを識別しようとすることができる。そして、それは、グラフィックス・イメージ２０２を作成するために、グラフィックス・デバイス２００により実行されるグラフィックス命令のビジュアル表現である。グラフィックス・イメージ２０２（すなわち、グラフィックス・イメージ２１０）の表現は、グラフィックス・デバイス２００により受信されるグラフィックス命令２４２及びステート／パフォーマンス・データに基づいて、表示エリア２１１内に表示される。グラフィックス命令２４２、グラフィックス・イメージ２１０及びステート／パフォーマンス情報と、これらのうちの１又は複数に対するユーザ起動（user-initiated）の修正に基づく影響とを閲覧することによって、アプリケーション開発者は、グラフィックス・デバイス２００上での命令の実行を最適化するための、そして、命令実行の間の任意のパフォーマンス・イッシュー（例えば、ボトルネック）を除去又は軽減するためのプロセスを、試行錯誤又はデバッギングすることに、インタラクティブに動的に従事することができる。
【０１２１】
図１１は、一つの態様に従って、図１０の表示デバイス２０１により表示され得る統計及び／又はテクスチャー情報２５０の例を示す図である。例えば、統計／テクスチャー情報２５０の１又は複数の部分は、テクスチャー・ボタン２３６のユーザ選択上に表示されても良い。統計／テクスチャー情報２５０の１又は複数の部分はまた、統計ボタン２３０のユーザ選択上に表示されても良い。
【０１２２】
図１１に示される統計／テクスチャー情報２５０は、各々が１又は複数の値を有する幾つかの例示的な統計及び／又はテクスチャー・フィールドを含む。例えば、情報２５０は、グラフィックス・イメージ２１０をレンダリングして表示するために必要で有り得る幾つかのレンダー・コール（グラフィックス命令２４２に関連する）に関する値を含む。ウインドウ２２０に示されるデータは、グラフィックス・デバイス２００のシミュレーションに基づくので、レンダー・コールの数は、グラフィックス・イメージ２０２をレンダリングして、グラフィックス・デバイス２００上に表示するために必要で有り得るコールの数を有効に示しても良い。レンダー・コールは、グラフィックス命令２４２（例えば１又は複数のハイレベル及び／又はローレベルの命令）のうちの１又は複数に関連する場合がある。
【０１２３】
統計／テクスチャー情報２５０はまた、レンダー・コールあたりの平均的テクスチャー変更及びレンダー・コールあたりの平均的ステート変更に関する値を含む。これらの値は、全体的なパフォーマンスに影響を及ぼし得るテクスチャー及び／又はステート変更の数に関する情報を開発者に提供しても良い。
【０１２４】
グラフィックス・イメージ２１０中の画像データの特定のフレームについては、統計／テクスチャー情報２５０は、画像データのフレームを作成するためにレンダリングされたプリミティブのための頂点の数及び三角形の数に関する値を含んでも良い。さらに、レンダー・コールあたりの平均的三角形及びレンダー・コールあたりの平均的頂点に関する値も表示される。これらの値は、グラフィックス命令により実装されるレンダー・コールの効率を評価する際に、アプリケーション開発者のために役に立ち得る。
【０１２５】
統計／テクスチャー情報２５０はまた、テクスチャー・サイズ情報を含む。図１１の下側の近くに示されるように、情報２５０１は、グラフィックス・イメージ２１０のための各々のテクスチャー・サイズの数を示す、１又は複数のテクスチャー・サイズ（例えば、６４ｘ６４，６４ｘ１２８，１２８ｘ１２８，２５６ｘ２５６）に関する値を提供しても良い。
【０１２６】
さらに、統計／テクスチャー情報２５０はまた、パフォーマンス及び効率のレンダリングに関係する様々な値を含む。例えば、情報２５０は、グラフィックス・イメージ２１０のための最適化されたテクスチャーのパーセントに関する値を含む。場合によっては、表示デバイス２０１（例えば、アプリケーション・コンピュータ・デバイス２０）を含むコンピュータ・デバイスは、グラフィックス・デバイス２００から受信されるグラフィックス命令及び／又はステート／パフォーマンス情報に基づいて、この値を計算しても良い。アプリケーション開発者は、一般的に、このパーセント値ができるだけ高いことを望んでも良い。それが要求されるより低いならば、開発者は、グラフィックス命令、ステート情報、パフォーマンス情報、又は、グラフィックス・デバイス２００に対して１又は複数の要求された修正を提供するためのウインドウ２２０内の他のパラメータを、操作又は変更しても良い。グラフィックス・デバイス２００からの更新された命令／情報の受信に応じて、更新された値は、最適化されたテクスチャーのパーセンテージについて表示されても良い。開発者は、ウインドウ２２０において提供されるシミュレーション環境内でテクスチャーを最適化するために、このプロセスを継続しても良い（例えば、デバッギング又は試行錯誤セッションの間）。コード／命令の再コンパイルの必要なしに、開発者は、効果的且つ効率的な方法で、そうすることができても良い。
【０１２７】
統計／テクスチャー情報２５０は、インデックス付け及び空にされた頂点のパーセンテージに関する値を更に含む。これらの値は、グラフィックス・イメージ２１０のレンダリング及び表示のために最適化された三角形のパーセンテージを示しても良い。アプリケーション開発者は、一般的に、インデックス付け及び空にされた頂点のパーセント値ができるだけ高いことを望んでも良い。それらが要求されるより低いならば、開発者は、グラフィックス命令、ステート情報、パフォーマンス情報、又は、グラフィックス・デバイス２００に対して１又は複数の要求された修正を提供するためのウインドウ２２０内の他のパラメータを、操作又は変更しても良い。グラフィックス・デバイス２００からの更新された命令／情報の受信に応じて、更新された値は、これらのパーセンテージ値について表示されても良い。開発者は、コード／命令の再コンパイル又はグラフィックス・デバイス２００上での時間のかかる又は退屈なデバッギング・オペレーションへの従事の必要なく、も持最適化された数の三角形を得るために、このプロセスを継続しても良い。
【０１２８】
図１２は、本開示の一つの態様に従って、図１０に示されるグラフィックス・デバイス２０１上に表示され得るオーバーライド・スクリーン２６０を示すスクリーン・ダイアグラムである。アプリケーション開発者は、スクリーン２６０を閲覧し、そして、グラフィックス・デバイス２００により提供される１又は複数の機能をオーバーライドするために、スクリーン２６０内に表示される情報の１又は複数の選択をしても良く、それによって、グラフィックス・デバイス２００上で命令の実行のフローを変える。
【０１２９】
場合によっては、オーバーライド・スクリーン２６０は、オーバーライド・ボタン２３８のユーザ選択上に表示されても良い。オーバーライド・スクリーン２６０は、スクリーン２２０の一部として表示されても良く、または、独立したウインドウ（例えば、ポップアップ・ウインドウ）として表示されても良い。オーバーライド・スクリーン２６０は、グラフィックス・デバイス２００により実装され得るグラフィックス処理パイプラインのビジュアル表現を示す。一つの態様において、グラフィックス・デバイス２００は、図１に示されるグラフィックス・デバイス２を含んでも良い。その場合には、それは、制御プロセッサ、頂点プロセッサ、グラフィックス・プロセッサ及び表示プロセッサを含んでも良い。その結果、オーバーライド・スクリーン２６０中に示されるグラフィックス処理パイプラインのビジュアル表現は、制御プロセッサ・アイコン２６２、頂点プロセッサ・アイコン２６４、グラフィックス・プロセッサ・アイコン２６６及び表示プロセッサ・アイコン２６８を含んでも良い。
【０１３０】
各々のアイコン２６２，２６４，２６６及び２６８は、グラフィックス・デバイス２００内の対応するプロセッサに関連する。これらのアイコンは、グラフィックの、テキストの又は他の形のアイコンを含んでも良い。アプリケーション開発者は、例えばオーバーライド・スクリーン２６０内のアイコンをクリックすることによって、アイコン２６２，２６４，２６６又は２６８のうちの１又は複数を選択しても良い。アイコン（例えばグラフィックス・プロセッサ・アイコン２６６）の選択に応じて、オーバーライド・スクリーン２６０は、アイコン２６６に関連する対応するメニュー２７１（例えばドロップダウン・メニュー）を表示する。
【０１３１】
図１２の例において、メニュー２７１は、４つの選択可能なオプションを含む：（アルファ／透明度オペレーションを無効にする）オプション２７０、（ブレンド・オペレーションを無効にする）オプション２７２、（Ｚリジェクト・オペレーションを無効にする）オプション２７４及び（デプス・テスト・オペレーションを無効にする）オプション２７６。オプション２７０，２７２，２７４及び２７６に関連するオペレーションの各々は、グラフィックス・デバイス２００内のグラフィックス・プロセッサにより実行され得るるオペレーションに対応する。
【０１３２】
図１２は、アルファ（透明度）オペレーションを無効にするオプション２７０について、ユーザ選択がなされたことを示す。オプション２７０のユーザ選択に応じて、要求された修正は、アルファ・オペレーションを無効にするために、グラフィックス・デバイス２００に送信されても良い。グラフィックス・デバイス２００が図５に示されるグラフィックス・ドライバー１８Ａを実装するならば、グラフィックス・デバイス２００は、要求された修正を処理し又はオーバーライドするために、オーバーライド・モジュール１２０を使用しても良い。オーバーライド・モジュール１２０は、それから、アルファ・オペレーションを無効にするために、対応するグラフィックス・プロセッサ（例えば、図１に示されるグラフィックス・プロセッサ１２）にオーバーライド・リクエストを送信する。
【０１３３】
同様に、アプリケーション・プログラマーは、グラフィックス・プロセッサ上のブレンド・オペレーションを無効にするために、オプション２７２を選択しても良い。開発者は、Ｚリジェクト・オペレーションを無効にするために、オプション２７４を選択しても良い。開発者は、グラフィックス・プロセッサ内のデプス・テストに関係するオペレーションを無効にするために、オプション２７６を選択しても良い。
【０１３４】
図１２の例において、開発者は、例えば以前有効にされた可能性のある１又は複数のオペレーションを無効にすることによって、グラフィックス・デバイス２００のグラフィックス・プロセッサに関連する１又は複数の機能をオーバーライドしても良い。場合によっては、開発者は、以前無効にされた任意のオペレーション（例えば、アルファ、ブレンド、Ｚリジェクト及び／又はデプス・テスト・オペレーション）を再度有効にするために、メニュー２７１と同様の他のメニューを使用しても良い。
【０１３５】
このように、開発者は、グラフィックス・プロセッサのための様々な機能及びオペレーションを、連続的且つ反復的に、オーバーライド又は変更し、そして、そのような変更がどのようにパフォーマンスに影響を及ぼすかについて判定しても良い。例えば、開発者は、メニュー・オプション２７０の選択によってアルファ・オペレーションを無効にし、そして、任意の前のパフォーマンス・イッシュー（例えば、グラフィックス・デバイス２００のグラフィックス・プロセッサに関係するそれら）が解決又は軽減されたかどうかについて判定するために、そのようなオペレーションの無効化に応じて、グラフィックス・デバイス２００により提供される更新されたステート／パフォーマンス情報を閲覧しても良い。開発者はまた、アルファ・オペレーションの無効化に基づくパフォーマンスの変化又は可能性がある改善を評価するために、統計情報（例えば図１１に示される例示的な情報のタイプ）をレビューしても良い。さらに、グラフィックス・イメージ２１０の更新されたバージョン及び更新された命令２４２は、アルファ・オペレーションの無効化に応じて、ウインドウ２２０（図１０）中に表示されても良い。
【０１３６】
もちろん、他のシナリオにおいて、アプリケーション開発者は、グラフィックス・プロセッサに関連する他の機能を無効化又は有効化しても良い。さらに、開発者は、グラフィックス・デバイス２００における他のプロセッサ（例えば、制御プロセッサ、頂点プロセッサ及び／又は表示プロセッサ）に関連する機能を無効化又は有効化しても良い。例えば、開発者は、メニュー２７１と同様のメニューを閲覧するために、制御プロセッサ・アイコン２６２を選択しても良い。そして、それは、制御プロセッサ（例えば、図１に示される制御プロセッサ１０）に関連する１又は複数の機能を無効化又は有効化するために１又は複数の選択可能なオプションを含んでも良い。これらの機能の任意の変更は、例えばオーバーライド・モジュール１２０によって、処理のためにグラフィックス・デバイス２００に送信される１又は複数の要求された修正として、提供されても良い。それから、開発者が、制御プロセッサに関係するパフォーマンス・イッシュー又はボトルネックが解決又はさもなければ軽減されたかどうか判定し得るように、更新された命令及び／又は他の情報（例えば、ステート及び／又はパフォーマンス情報）が、ウインドウ２２０中に示される情報を更新するために、グラフィックス・デバイス２００により提供されても良い。
【０１３７】
図１３は、本開示の図１０に示されるグラフィックス・デバイス２０１上に表示され得るオーバーライド情報の一例を示すスクリーン・ダイアグラムである。この態様において、オーバーライド情報は、グラフィック・ウインドウ２８０内に示される。グラフィックス・イメージ２１０は、表示エリア２１１内に示される。前に説明されたように、ユーザは、表示エリア２１１内のグラフィックス・イメージ２１０の表示を修正するために、１又は複数のオーバーライドをリクエストしても良い。一つのシナリオにおいて、ユーザは、１又は複数のオーバーライド選択をするために、オーバーライド・ボタン２３８（図１０）を選択しても良い。図１３は、オーバーライド・ボタン２３８のユーザ選択に応じて、ウインドウ２８０内に表示され得るオーバーライド情報の例を示す。
【０１３８】
図１３は、３つの例示的なオーバーライドを示す：オーバーライドＡ、オーバーライドＢ、オーバーライドＣ。これらの３つの例示的なオーバーライドの各々は、任意のオーバーライド機能（例えば、無効化機能、有効化機能、又はその種の他のもの（図１２に示されるそれらを含む））に対応しても良い。さらに、これらの３つの例示的なオーバーライドの各々は、１又は複数のプロセッサの機能性に関連する場合がある。かくして、ユーザは、１又は複数のプロセッサの動作を変えるために（例えばこれらのプロセッサの特定のオペレーションを有効化又は無効化するために）、オーバーライドのうちの１又は複数を選択しても良い。
【０１３９】
各々のオーバーライド（オーバーライドＡ、オーバーライドＢ、オーバーライドＣ）は、ユーザによって、選択又はさもなければ構成され得る、対応するパラメータ又はオプションを有しても良い。例えば、オーバーライドＡはオーバーライド・パラメータ２８２Ａを有し、オーバーライドＢはオーバーライド・パラメータ２８２Ｂを有し、オーバーライドＣはオーバーライド・パラメータ２８２Ｃを有する。ユーザは、対応するパラメータを修正することによって、オーバーライドの各々をカスタマイズしても良い。例えば、オーバーライドＡがブレンドを無効にするオーバーライドに対応するならば、ユーザは、ブレンドを無効にするためのオーバーライド機能性を修正又はカスタマイズするために、オーバーライド・パラメータ２８２Ａを選択又は変更しても良い。オーバーライド・パラメータ２８２Ａはまた、１又は複数のプロセッサの識別情報を含んでも良い。例えば、ユーザがグラフィックス・プロセッサ上のブレンディングを無効にすることを望むならば、オーバーライド・パラメータ２８２Ａは、グラフィックス・プロセッサの識別情報を含んでも良い。
【０１４０】
ユーザによって要求される任意のオーバーライドは、グラフィックス・デバイスへ送信される要求された修正３４内に含まれても良い。前に説明されたように、グラフィックス・デバイスは、それから、要求された修正３４を処理し、そして、更新された命令／情報３５を提供しても良い。更新された命令／情報３５は、表示エリア２１１内のグラフィックス・イメージ２１０の表示を更新するために使用されても良い。
【０１４１】
図１４は、本開示の一つの態様に従って、図１０に示されるグラフィックス・デバイス２０１上に表示され得るテクスチャー情報の一例を示すスクリーン・ダイアグラムである。この態様において、テクスチャー情報は、グラフィック・ウインドウ２９０内に示される。グラフィックス・イメージ２１０は、表示エリア２１１内に示される。ユーザは、グラフィックス・イメージ２１０の１又は複数のテクスチャーを修正しても良い。そして、それは、それから、表示エリア２１１内に示されることができる。
【０１４２】
例えば、図１４において、ユーザは、テクスチャー２９４，２９６及び／又は２９８の任意のものを選択しても良い。図１４において、示されるように、ユーザがテクスチャー２９４を選択したと仮定される。任意の数の異なるテクスチャーは、ウインドウ２９０で表示及び選択されても良く、また、図１４中に表示されたテクスチャーは、説明の目的のためだけに示される。
【０１４３】
テクスチャー２９４のユーザ選択に応じて、選択されたテクスチャー２９４の拡大された表現が、テクスチャー・エリア３００に示される。ユーザは、それから、テクスチャー２９４を、グラフィックス・イメージ２１０の１又は複数の部分に適用しても良い。一つのシナリオにおいて、ユーザは、テクスチャー２９４をテクスチャー・エリア３００から表示エリア２１１にドラッグして、該テクスチャーをグラフィックス・イメージ２１０の要求された部分に適用しても良い。図１４の例において、ユーザは、テクスチャー２９４をグラフィックス・イメージ２１０の示された部分に適用した。この方法で、ユーザ、１又は複数のテクスチャー（例えば、テクスチャー２９４，２９６，２９８）のうちの任意のものを選択して、当該テクスチャーをグラフィックス・イメージ２１０に適用し、さらに、表示エリア２１１内のグラフィックス・イメージ２１０の対応する変化を閲覧しても良い。
【０１４４】
ユーザにより選択又は適用される任意のテクスチャーは、グラフィックス・デバイスへ送信される要求された修正３４内に含まれても良い。前に説明されたように、グラフィックス・デバイスは、それから、要求された修正３４を処理し、そして、更新された命令／情報３５を提供しても良い。更新された命令／情報３５は、表示エリア２１１内のグラフィックス・イメージ２１０の表示を更新するために使用されても良い。
【０１４５】
図１５は、本開示の一つの態様に従って、図１０に示されるグラフィックス・デバイス２０１上に表示され得るパフォーマンス情報の一例を示すスクリーン・ダイアグラムである。この態様において、パフォーマンス情報は、グラフィック・ウインドウ３０２内に示される。図１５の例において、パフォーマンス情報は、パフォーマンス・グラフ３０４によって提示される。グラフ３０４は、水平軸に沿った時間と、垂直軸に沿ったプロセッサ使用のパーセンテージ（％）とを示す。プロセッサ使用のパーセンテージは、グラフィックス処理システム内の１又は複数のプロセッサ（例えば、制御プロセッサ、表示プロセッサ、頂点プロセッサ及び／又はグラフィックス・プロセッサ）のパーセント使用状況に対応しても良い。
【０１４６】
パフォーマンス・グラフ３０４を連続的にモニターすることによって、ユーザは、要求された修正３４内のグラフィックス・デバイスに対してなされるか又は送信される任意の変化の効果を評価することができても良い。例えば、ユーザは、グラフィックス・アプリケーションの実行の間の任意の観測されたパフォーマンス・イッシュー又はボトルネックを解決又はさもなければ軽減する努力において、グラフィックス命令を更新し、ステート／パフォーマンス情報を更新し、グラフィックス・イメージの斜視図を修正し、１又は複数のオーバーライドを起動し、テクスチャーを変更し、又は、他の修正をしても良い。特定の変更は、パーセント使用状況（又はプロセッサ利用状況）を減少させることによってパフォーマンスを向上させる場合があり、一方、他の変更は、プロセッサ利用状況を増加させる場合がある。グラフィックス・アプリケーション（より低い又は減少されたプロセッサ利用状況をもたらすそれら）に対する最適な又は望ましい解決又は変更を識別するのを支援するために、ユーザは、時間とともに、任意の実装された変更（例えば、要求された修正３４内に含まれるそれら）の影響を確認するために、パフォーマンス・グラフ３０４を連続的にモニターしても良い。
【０１４７】
この開示において説明される技術は、汎用マイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向けＩＣ（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は他の均等な論理デバイスの中に実装されても良い。したがって、本明細書で使用される用語“プロセッサ（processor）”又は“コントローラ（controller）”は、本明細書で説明される技術の実装に適した前述の構造のうちの任意のもの又は他の任意の構造を指し示しても良い。
【０１４８】
本明細書で説明される様々なコンポーネントは、ハードウェア、ソフトウェア、ファームウェアの適切な組み合わせ、又はそれらの任意の組み合わせにより実現されても良い。図において、様々なコンポーネントは、独立したユニット又はモジュールとして示される。しかし、これらの図を参照して説明される様々なコンポーネントの全て又は幾つかは、共通のハードウェア及び／又はソフトウェア内の複合のユニット又はモジュールに集積されても良い。したがって、コンポーネント、ユニット又はモジュールとしての特徴の表現は、説明図の容易さのために特定の機能的な特徴をハイライトすることを目的として、独立したハードウェア又はソフトウェア・コンポーネントによってそのような特徴の実現を必ずしも要求するというわけではない。場合によっては、様々なユニットは、１又は複数のプロセッサにより実行されるプログラム可能なプロセスとして実装されても良い。
【０１４９】
モジュール群、デバイス群又はコンポーネント群（グラフィックス・デバイス１００及び／又はその構成要素群を含む）として本明細書で説明されるいずれの機能群も、集積化された論理デバイスに一緒に又は別々であるが適時情報交換ができる（interoperable）複数の論理デバイスとして独立して実装されても良い。様々な態様において、そのようなコンポーネント群は、１又は複数の集積回路デバイスとして少なくとも部分的に形成されても良い。そして、それらは集積回路デバイス（例えば集積回路チップ又はチップセット）として集合的に指し示されても良い。そのような回路は、単一の集積回路チップ・デバイスで又は複数の適時情報交換ができる集積回路チップ・デバイスで提供されても良く、また、様々なイメージ、ディスプレイ、オーディオ又は他のマルチメディアのアプリケーション及びデバイスの任意のものにおいて使用されても良い。幾つかの態様において、例えば、そのようなコンポーネントは、モバイル・デバイス（例えば無線通信デバイス・ハンドセット）の一部を形成しても良い。
【０１５０】
ソフトウェアで実装されるならば、本技術は、１又は複数のプロセッサにより実行されるときに上で説明された方法のうちの１又は複数を実行する命令をもつコードを含むコンピュータ読み取り可能な媒体によって少なくとも部分的に実現されても良い。コンピュータ読み取り可能な媒体は、コンピュータ・プログラム製品（それはパッケージ材料を含んでもよい）の一部を形成しても良い。コンピュータ読み取り可能な媒体は、ランダムアクセスメモリ（ＲＡＭ）（例えばシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ））、リードオンリーメモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、組み込み形ダイナミックランダムアクセスメモリ（ｅＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、フラッシュメモリ、磁気又は光学データ記憶媒体を含んでも良い。
【０１５１】
加えて又は代わりに、本技術は、命令又はデータ構造の形でコードを運ぶか又は伝え且つ１又は複数のプロセッサによりアクセス、リード及び／又は実行されることができるコンピュータ読み取り可能な通信媒体に少なくとも部分的によって実現されても良い。いずれのコネクションも、コンピュータ読み取り可能な媒体と適切に呼ばれることができる。例えば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイスト・ペア、デジタル加入者回線（ＤＳＬ）又は無線技術（例えば、赤外線、無線及びマイクロ波）を使用するウェブサイト、サーバ又は他のリモート・ソースから送信されるならば、該同軸ケーブル、光ファイバーケーブル、ツイスト・ペア、ＤＳＬ又は無線技術(例えば、赤外線、無線及び電子レンジ）は、媒体の定義に含まれる。上記の組み合せは、コンピュータ読み取り可能な媒体の範囲内に含まれなければならないまた。利用されるいずれのソフトウェアも、１又は複数のプロセッサ（例えば、１又は複数のＤＳＰ、汎用マイクロプロセッサ、複数のＡＳＩＣ、複数のＦＰＧＡ又は他の均等な集積化された又は個別の論理回路）によって実行されても良い。
【０１５２】
様々な態様が本明細書で説明された。これら及び他の態様は以下のクレームの範囲内である。 
以下に、本願出願の当初の特許請求の範囲に記載された各請求項に対応する発明を付記する。 
［１］外部グラフィックス・デバイスからグラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される）を受信することと、前記外部グラフィックス・デバイスからステート情報（該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信することと、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージの表現を表示することを含む方法。 
［２］前記グラフィックス命令の受信、前記ステート情報の受信及び前記グラフィックス・イメージの複数のフレームに関する前記グラフィックス・イメージの前記表現の表示を、繰り返し行うことを更に含む［１］の方法。 
［３］前記外部グラフィックス・デバイスが前記グラフィックス・イメージをレンダリングするときの、前記ステート情報が前記外部グラフィックス・デバイスの１又は複数のステートを示す［１］の方法。 
［４］前記ステート情報は、前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの１又は複数のプロセッサからのステート情報を含む［１］の方法。 
［５］前記ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連するデータを含む［１］の方法。 
［６］前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定するユーザ入力を受信することと、前記要求された修正を、処理のために外部グラフィックス・デバイスに送信することを更に含む［１］の方法。 
［７］前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令（該更新されたグラフィックス命令は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信することと、前記外部グラフィックス・デバイスから、更新されたステート情報（該更新されたステート情報は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信することと、前記更新されたグラフィックス命令及び前記更新されたステート情報により前記グラフィックス・イメージの前記更新されたバージョンを表示することを更に含む［６］の方法。 
［８］前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも１つを含む［６］の方法。 
［９］前記グラフィックス命令のビジュアル表現を表示することと、前記ステート情報のビジュアル表現を表示することを更に含む［１］の方法。 
［１０］前記グラフィックス命令の前記ビジュアル表現を表示することは、前記グラフィックス命令を、関連するグラフィックス・アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令にマッピングすることと、前記グラフィックスＡＰＩ命令を表示することを更に含む［９］の方法。 
［１１］前記グラフィックス・イメージの前記表現を表示することは、前記外部グラフィックス・デバイスをシミュレーションするシミュレーションされた環境内で前記グラフィックス・イメージの前記表現を表示することを含む［１］の方法。 
［１２］前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成されるバイナリ命令を含む［１］の方法。 
［１３］前記ナビゲーション・コントローラを表示することと、前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信することと、前記ユーザ入力に基づいて、前記グラフィックス・イメージの修正された斜視図を表示することを更に含む［１］の方法。 
［１４］前記グラフィックス・イメージを修正するためのユーザ入力を受信することと、前記ユーザ入力に従って前記グラフィックス・イメージの修正されたバージョンを表示することを更に含む［１］の方法。 
［１５］前記外部グラフィックス・デバイスから、パフォーマンス情報（該パフォーマンス情報は、該外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信することと、前記グラフィックス命令のその実行の間、前記外部グラフィックス・デバイス上での１又は複数のパフォーマンス・イッシューを識別するために、前記パフォーマンス情報を解析することを更に含む［１］の方法。 
［１６］前記パフォーマンス情報は、前記外部グラフィックス・デバイス上で前記グラフィックス命令を実行する１又は複数のプロセッサから収集されるパフォーマンス・メトリックを含む［１５］の方法。 
［１７］前記パフォーマンス情報を解析することは、前記グラフィックス命令の実行の間、前記外部グラフィックス・デバイスの前記複数のプロセッサのうちの１又は複数における減少したパフォーマンスを識別することを含む［１６］の方法。 
［１８］前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定するユーザ入力を受信することと、前記要求された修正を、処理のために前記外部グラフィックス・デバイスに送信することと、前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令（該更新されたグラフィックス命令は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信することと、前記外部グラフィックス・デバイスから、更新されたパフォーマンス情報（該更新されたパフォーマンス情報は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信することと、前記パフォーマンス・イッシューのうちの１又は複数が解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析することを更に含む［１５］の方法。 
［１９］前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも１つを含む［１８］の方法。 
［２０］前記更新されたグラフィックス命令及び前記更新されたパフォーマンス情報に従って、前記グラフィックス・イメージの更新された表現を表示することを更に含む［１８］の方法。 
［２１］１又は複数のプロセッサに、外部グラフィックス・デバイスからグラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される）を受信させ、前記外部グラフィックス・デバイスからステート情報（該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信させ、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージの表現を表示させるための命令を含むコンピュータ読み取り可能な媒体。 
［２２］前記１又は複数のプロセッサに、前記グラフィックス命令の受信、前記ステート情報の受信及び前記グラフィックス・イメージの複数のフレームに関する前記グラフィックス・イメージの前記表現の表示を、繰り返し行わせるための命令を更に含む［２１］のコンピュータ読み取り可能な媒体。 
［２３］前記外部グラフィックス・デバイスが前記グラフィックス・イメージをレンダリングするときの、前記ステート情報が前記外部グラフィックス・デバイスの１又は複数のステートを示す［２１］のコンピュータ読み取り可能な媒体。 
［２４］前記ステート情報は、前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの少なくとも一つのプロセッサからのステート情報を含む［２１］のコンピュータ読み取り可能な媒体。 
［２５］前記ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連するデータを含む［２１］のコンピュータ読み取り可能な媒体。 
［２６］前記１又は複数のプロセッサに、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定するユーザ入力を受信させ、前記要求された修正を、処理のために外部グラフィックス・デバイスに送信させるための命令を更に含む［２１］のコンピュータ読み取り可能な媒体。 
［２７］前記１又は複数のプロセッサに、前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令（該更新されたグラフィックス命令は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信させ、前記外部グラフィックス・デバイスから、更新されたステート情報（該更新されたステート情報は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信させ、前記更新されたグラフィックス命令及び前記更新されたステート情報により前記グラフィックス・イメージの前記更新されたバージョンを表示させるための命令を更に含む［２６］のコンピュータ読み取り可能な媒体。 
［２８］前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも１つを含む［２６］のコンピュータ読み取り可能な媒体。 
［２９］前記１又は複数のプロセッサに、前記グラフィックス命令のビジュアル表現を表示させ、前記ステート情報のビジュアル表現を表示させるための命令を更に含む［２１］のコンピュータ読み取り可能な媒体。 
［３０］前記１又は複数のプロセッサに前記グラフィックス命令の前記ビジュアル表現を表示させるための前記命令は、前記１又は複数のプロセッサに、前記グラフィックス命令を、関連するグラフィックス・アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令にマッピングさせ、前記グラフィックスＡＰＩ命令を表示させるための命令を含む［２９］のコンピュータ読み取り可能な媒体。 
［３１］前記１又は複数のプロセッサに前記グラフィックス・イメージの前記表現を表示させるための前記命令は、前記１又は複数のプロセッサに前記外部グラフィックス・デバイスをシミュレーションするシミュレーションされた環境内で前記グラフィックス・イメージの前記表現を表示させるための命令を含む［２１］のコンピュータ読み取り可能な媒体。 
［３２］前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成されるバイナリ命令を含む［２１］のコンピュータ読み取り可能な媒体。 
［３３］前記１又は複数のプロセッサに、前記ナビゲーション・コントローラを表示させ、前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信させ、前記ユーザ入力に基づいて、前記グラフィックス・イメージの修正された斜視図を表示させるための命令を更に含む［２１］のコンピュータ読み取り可能な媒体。 
［３４］前記１又は複数のプロセッサに、前記グラフィックス・イメージを修正するためのユーザ入力を受信させ、前記ユーザ入力に従って前記グラフィックス・イメージの修正されたバージョンを表示させるための命令を更に含む［２１］のコンピュータ読み取り可能な媒体。 
［３５］前記１又は複数のプロセッサに、前記外部グラフィックス・デバイスから、パフォーマンス情報（該パフォーマンス情報は、該外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信させ、前記グラフィックス命令のその実行の間、前記外部グラフィックス・デバイス上での１又は複数のパフォーマンス・イッシューを識別するために、前記パフォーマンス情報を解析させるための命令を更に含む［２１］のコンピュータ読み取り可能な媒体。 
［３６］前記パフォーマンス情報は、前記外部グラフィックス・デバイス上で前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの少なくとも一つのプロセッサから収集されるパフォーマンス・メトリックを含む［３５］のコンピュータ読み取り可能な媒体。 
［３７］前記１又は複数のプロセッサに前記パフォーマンス情報を解析させるための前記命令は、前記１又は複数のプロセッサに前記グラフィックス命令の実行の間、前記外部グラフィックス・デバイスの前記複数のプロセッサのうちの１又は複数における減少したパフォーマンスを識別させるための命令を含む［３６］のコンピュータ読み取り可能な媒体。 
［３８］前記１又は複数のプロセッサに、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定するユーザ入力を受信させ、前記要求された修正を、処理のために前記外部グラフィックス・デバイスに送信させ、前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令（該更新されたグラフィックス命令は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信させ、前記外部グラフィックス・デバイスから、更新されたパフォーマンス情報（該更新されたパフォーマンス情報は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信させ、前記パフォーマンス・イッシューのうちの１又は複数が解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析させるための命令を更に含む［３５］のコンピュータ読み取り可能な媒体。 
［３９］前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも１つを含む［３８］のコンピュータ読み取り可能な媒体。 
［４０］前記１又は複数のプロセッサに、前記更新されたグラフィックス命令及び前記更新されたパフォーマンス情報に従って、前記グラフィックス・イメージの更新された表現を表示させるための命令を更に含む［３８］のコンピュータ読み取り可能な媒体。 
［４１］表示デバイスと、外部グラフィックス・デバイスからグラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される）を受信し、前記外部グラフィックス・デバイスからステート情報（該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信し、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージの表現を前記表示デバイス上に表示するように構成された１又は複数のプロセッサとを含むデバイス。 
［４２］前記１又は複数のプロセッサは、前記グラフィックス命令の受信、前記ステート情報の受信及び前記グラフィックス・イメージの複数のフレームに関する前記グラフィックス・イメージの前記表現の表示を、繰り返し行うように更に構成された［４１］のデバイス。 
［４３］前記１又は複数のプロセッサは、前記グラフィックス命令のビジュアル表現を前記表示デバイス上に表示し、前記ステート情報のビジュアル表現を前記表示デバイス上に表示するように更に構成された［４１］のデバイス。 
［４４］前記１又は複数のプロセッサは、前記ナビゲーション・コントローラを前記表示デバイス上に表示し、前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信し、前記ユーザ入力に基づいて、前記グラフィックス・イメージの修正された斜視図を前記表示デバイス上に表示するように更に構成された［４１］のデバイス。 
［４５］前記１又は複数のプロセッサは、前記外部グラフィックス・デバイスから、パフォーマンス情報（該パフォーマンス情報は、該外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信し、前記グラフィックス命令のその実行の間、前記外部グラフィックス・デバイス上での１又は複数のパフォーマンス・イッシューを識別するために、前記パフォーマンス情報を解析するように更に構成された［４１］のデバイス。 
［４６］前記パフォーマンス情報は、前記外部グラフィックス・デバイス上で前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの少なくとも一つのプロセッサから収集されるパフォーマンス・メトリックを含む［４５］のデバイス。 
［４７］前記１又は複数のプロセッサは、前記グラフィックス命令の実行の間、前記外部グラフィックス・デバイスの前記複数のプロセッサのうちの１又は複数における減少したパフォーマンスを識別することに少なくともよって、前記パフォーマンス情報を解析するように構成された［４６］のデバイス。 
［４８］前記１又は複数のプロセッサは、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定するユーザ入力を受信し、前記要求された修正を、処理のために前記外部グラフィックス・デバイスに送信し、前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令（該更新されたグラフィックス命令は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信し、前記外部グラフィックス・デバイスから、更新されたパフォーマンス情報（該更新されたパフォーマンス情報は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する）を受信し、前記パフォーマンス・イッシューのうちの１又は複数が解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析するように構成された［４５］のデバイス。 
［４９］前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも１つを含む［４８］のデバイス。 
［５０］前記１又は複数のプロセッサは、前記更新されたグラフィックス命令及び前記更新されたパフォーマンス情報に従って、前記グラフィックス・イメージの更新された表現を前記表示デバイス上に表示するように更に構成された［４８］のデバイス。 
［５１］外部グラフィックス・デバイスからグラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される）を受信するための手段と、前記外部グラフィックス・デバイスからステート情報（該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する）を受信するための手段と、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージの表現を表示するための手段とを含むデバイス。 
［５２］グラフィックス・デバイスからコンピュータ・デバイスへ、グラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該グラフィックス・デバイスにより実行される）を送信することと、前記グラフィックス・デバイスからコンピュータ・デバイスへ、ステート情報（該ステート情報は、該グラフィックス・デバイスによる前記グラフィックス命令の実行に関連する）を送信することと、前記グラフィックス・デバイスによる前記グラフィックス命令の前記実行を修正するために、前記コンピュータ・デバイスから、１又は複数の要求された修正を受信することと、前記１又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたステート情報を送信することを含む方法。 
［５３］前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージを表示することを更に含む［５２］の方法。 
［５４］前記１又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたグラフィックス命令を送信することを更に含む［５２］の方法。 
［５５］前記グラフィックス命令の送信、ステート情報の送信、１又は複数の要求された修正の受信、前記グラフィックス・イメージの複数のフレームに関する更新されたステート情報の送信を、繰り返し行うことを更に含む［５２］の方法。 
［５６］前記ステート情報は、前記グラフィックス命令を実行する前記グラフィックス・デバイスの１又は複数のプロセッサからのステート情報又はデータを含む［５２］の方法。 
［５７］前記１又は複数の要求された修正は、前記グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記グラフィックス・デバイスに関するステート情報を修正するリクエストのうちの少なくとも１つを含む［５２］の方法。 
［５８］前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成されるバイナリ命令を含む［５２］の方法。 
［５９］前記ステート情報は、前記グラフィックス・デバイス上で前記グラフィックス命令を実行する１又は複数のプロセッサから収集されるパフォーマンス・メトリックを含む［５２］の方法。 
［６０］命令を記憶するように構成された記憶媒体と、前記デバイスから外部コンピュータ・デバイスへ、前記命令（該命令は、グラフィックス・イメージを表示するために該デバイスにより実行される）を送信することと、前記デバイスから前記外部コンピュータ・デバイスへ、ステート情報（該ステート情報は、該デバイスによる前記命令の実行に関連する）を送信することと、前記デバイスによる前記命令の前記実行を修正するために、前記外部コンピュータ・デバイスから、１又は複数の要求された修正を受信することと、前記１又は複数の要求された修正に基づいて、前記デバイスから前記外部コンピュータ・デバイスへ、更新されたステート情報を送信するように構成された１又は複数のプロセッサとを含むデバイス。 
［６１］前記１又は複数のプロセッサは、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージを前記表示デバイス上に表示するように更に構成された［６０］のデバイス。 
［６２］前記１又は複数のプロセッサは、前記１又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたグラフィックス命令を送信するように更に構成された［６０］のデバイス。 
［６３］前記グラフィックス命令の送信、ステート情報の送信、１又は複数の要求された修正の受信、前記グラフィックス・イメージの複数のフレームに関する更新されたステート情報の送信を、繰り返し行うことを更に含む［６０］のデバイス。 
［６４］前記ステート情報は、前記グラフィックス命令を実行する前記グラフィックス・デバイスの１又は複数のプロセッサからのステート情報又はデータを含む［６０］のデバイス。 
［６５］前記１又は複数の要求された修正は、前記グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記グラフィックス・デバイスに関するステート情報を修正するリクエストのうちの少なくとも１つを含む［６０］のデバイス。 
［６６］前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成されるバイナリ命令を含む［６０］のデバイス。 
［６７］前記ステート情報は、前記グラフィックス・デバイス上で前記グラフィックス命令を実行する前記１又は複数のプロセッサから収集されるパフォーマンス・メトリックを含む［６０］のデバイス。 
［６８］前記１又は複数のプロセッサの各々は、表示プロセッサ、グラフィックス・プロセッサ、頂点プロセッサ又は制御プロセッサを含む［６０］のデバイス。 
［６９］前記デバイスは、無線通信デバイス・ハンドセットを含む［６０］のデバイス。 
［７０］前記デバイスは、１又は複数の集積回路装置を含む［６０］のデバイス。 
［７１］１又は複数のプロセッサに、グラフィックス・デバイスからコンピュータ・デバイスへ、グラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該グラフィックス・デバイスにより実行される）を送信させ、
前記グラフィックス・デバイスからコンピュータ・デバイスへ、ステート情報（該ステート情報は、該グラフィックス・デバイスによる前記グラフィックス命令の実行に関連する）を送信させ、前記グラフィックス・デバイスによる前記グラフィックス命令の前記実行を修正するために、前記コンピュータ・デバイスから、１又は複数の要求された修正を受信させ、前記１又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたステート情報を送信させるための命令を含むコンピュータ読み取り可能な媒体。 
［７２］前記１又は複数のプロセッサに前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージを表示させるための命令を含む［７１］のコンピュータ読み取り可能な媒体。 
［７３］前記１又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたグラフィックス命令を送信することを更に含む［７１］のコンピュータ読み取り可能な媒体。 
［７４］前記１又は複数のプロセッサに、前記グラフィックス命令の送信、ステート情報の送信、１又は複数の要求された修正の受信、前記グラフィックス・イメージの複数のフレームに関する更新されたステート情報の送信を、繰り返し行わせるための命令を更に含む［７１］のコンピュータ読み取り可能な媒体。 
［７５］前記ステート情報は、前記グラフィックス命令を実行する前記グラフィックス・デバイスの１又は複数のプロセッサからのステート情報又はデータを含む［７１の方コンピュータ読み取り可能な媒体。 
［７６］前記１又は複数の要求された修正は、前記グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記グラフィックス・デバイスに関するステート情報を修正するリクエストのうちの少なくとも１つを含む［７１］のコンピュータ読み取り可能な媒体。 
［７７］前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成されるバイナリ命令を含む［７１］のコンピュータ読み取り可能な媒体。 
［７８］前記ステート情報は、前記グラフィックス・デバイス上で前記グラフィックス命令を実行する１又は複数のプロセッサから収集されるパフォーマンス・メトリックを含む［７１］のコンピュータ読み取り可能な媒体。 
［７９］グラフィックス・デバイスからコンピュータ・デバイスへ、グラフィックス命令（該グラフィックス命令は、グラフィックス・イメージを表示するために該グラフィックス・デバイスにより実行される）を送信するための手段と、前記グラフィックス・デバイスからコンピュータ・デバイスへ、ステート情報（該ステート情報は、該グラフィックス・デバイスによる前記グラフィックス命令の実行に関連する）を送信するための手段と、前記グラフィックス・デバイスによる前記グラフィックス命令の前記実行を修正するために、前記コンピュータ・デバイスから、１又は複数の要求された修正を受信するための手段と、前記１又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたステート情報を送信するための手段とを含むデバイス。 
［８０］前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージを表示するための手段を更に含む［７９］のデバイス。 
［８１］前記１又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたグラフィックス命令を送信するための手段を更に含む［７９］のデバイス。 
［８２］前記グラフィックス命令の送信、ステート情報の送信、１又は複数の要求された修正の受信、前記グラフィックス・イメージの複数のフレームに関する更新されたステート情報の送信を、繰り返し行うための手段を更に含む［７９］のデバイス。 
［８３］前記ステート情報は、前記グラフィックス命令を実行する前記グラフィックス・デバイスの１又は複数のプロセッサからのステート情報又はデータを含む［７９］のデバイス。 
［８４］前記１又は複数の要求された修正は、前記グラフィックス・デバイス上での前記グラフィックス命令のうちの１又は複数の実行をディスエーブルするリクエスト、前記外部デバイス上での前記グラフィックス命令のうちの１又は複数を修正するリクエスト及び前記グラフィックス・デバイスに関するステート情報を修正するリクエストのうちの少なくとも１つを含む［７９］のデバイス。 
［８５］前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース（ＡＰＩ）命令から生成されるバイナリ命令を含む［７９］のデバイス。 
［８６］前記ステート情報は、前記グラフィックス・デバイス上で前記グラフィックス命令を実行する１又は複数のプロセッサから収集されるパフォーマンス・メトリックを含む［７９］のデバイス。
【図１】
0005450624.tif 000002
【図２】
0005450624.tif 000003
【図３】
0005450624.tif 000004
【図４】
0005450624.tif 000005
【図５】
0005450624.tif 000006
【図６】
0005450624.tif 000007
【図７】
0005450624.tif 000008
【図８】
0005450624.tif 000009
【図９】
0005450624.tif 000010
【図１０】
0005450624.tif 000011
【図１１】
0005450624.tif 000012
【図１２】
0005450624.tif 000013
【図１３】
0005450624.tif 000014
【図１４】
0005450624.tif 000015
【図１５】
0005450624.tif 000016