(35 U.S.C. §119の下の優先権の主張)
本特許出願は、2008年7月25日付け提出され、本願の譲受人に譲渡され、参照によって本明細書に明確に組み込まれる「PERFORMANCE ANALYSIS DURING VISUAL CREATION OF GRAPHICS IMAGES」と題された米国仮出願第61/083,656号の優先権を主張する。
(同時継続の特許出願への参照)
本特許出願は、以下の同時継続の米国特許出願に関係する:
2008年7月25日付け提出され、これと共に同時に提出され、本願の譲受人に譲渡され、参照によって本明細書に明確に組み込まれる米国特許出願第61/083,659号(Attorney Docket No. 080969P1);及び
2008年7月25日付け提出され、これと共に同時に提出され、本願の譲受人に譲渡され、参照によって本明細書に明確に組み込まれる米国特許出願第61/083,665号(Attorney Docket No. 080971P1)。
(技術分野)
この開示は、グラフィックス・イメージの表示に関係する。
グラフィックス・プロセッサは、例えばテレビゲーム、グラフィックス・プログラム、コンピュータ・デザイン(CAD)アプリケーション、シミュレーション及びビジュアライゼーション・ツール、及びイメージングのような様々なアプリケーションのために、二次元イメージ(2D)及び三次元イメージ(3D)をレンダリング(render)するために広く使用されている。表示プロセッサは、表示デバイスを介したユーザへの提示のために、グラフィックス・プロセッサのレンダリング出力(rendered output)を表示するのに使用されることがある。
OpenGL(登録商標)(オープン・グラフィックス・ライブラリー)は、2Dグラフィックス及び3Dグラフィックスを生成するアプリケーションを記述するときに使用されることがあるAPI(アプリケーション・プログラミング・インタフェース)を定義する標準的な仕様である。例えばJava(登録商標)のような他の言語は、それら自身の標準的なプロセスを通したOpenGL APIへのバインディングを定義することがある。インタフェースは、単純なプリミティブからシーンを描画(draw)するために使用可能な複数の関数コール又は命令(instructions)を含む。グラフィックス・プロセッサ、マルチメディア・プロセッサ、そして、汎用CPUでさえ、OpenGL関数コールを使用して記述されるアプリケーションを実行することができる。OpenGL ES(組み込みシステム)は、例えばモバイル無線電話、デジタル・マルチメディア・プレイヤー、携帯情報端末(PDA)又はテレビゲーム機のような、組み込みデバイスのために設計されるOpenGLの改良型(variant)である。
グラフィックス・アプリケーション(例えば、3Dグラフィックス・アプリケーション)は、API群又は命令群を呼び出す(invoking)ことによって、シーンの内容を記述又は定義することがある。API群又は命令群は、イメージを生成するために、内在する(underlying)グラフィックス・ハードウェア(例えば、グラフィックス・デバイス中の1又は複数のプロセッサ)を使用する。グラフィックス・ハードウェアは、これらのAPIを通して実行される一連の状態遷移(state transitions)を経ることがある。各々のAPIコール(例えば、描画コール(draw call)又は命令)に関するステート(states)のフルセットは、ハードウェアによりイメージがレンダリングされるプロセスを記述することがある。
一般に、この開示は、グラフィックス・デバイス(例えば、モバイル・デバイス)から送信されるステート情報とともに、グラフィックス命令又はコール・ストリームを捕捉(capturing)及び解析するための技術に関係する。グラフィックス命令は、アプリケーション・プログラミング・インタフェース(API)命令から生成又はコンパイルされても良い。グラフィックス命令及びステート情報は、通信媒体をわたってアプリケーション・コンピュータ・デバイス(例えば、パーソナル・コンピュータ)に送信され、シミュレーション環境内でグラフィックス・イメージ(例えば、3Dイメージ)を表示するために使用されても良い。
表示されたグラフィックス・イメージは、グラフィックス・デバイス上に表示されるイメージの表現であっても良い。シミュレーション環境は、イメージ又はシーン(それは、一連のイメージを含んでも良い)を再作成(re-creating)することができる。シミュレーション環境は、シーンがグラフィックス・デバイス上で提示されているときに、シーンを作成しても良いので、アプリケーション開発者は、そのようなアプリケーションの全体的なパフォーマンスを向上させ得るそれらのグラフィックス・アプリケーション及びプロトタイプ修正において複数のパフォーマンス・イッシュー又は複数のボトルネックを分離させることができる。
一つの態様において、方法は、外部グラフィックス・デバイスから複数のグラフィックス命令(該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される)を受信することと、前記外部グラフィックス・デバイスからステート情報(該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信することを含む。前記方法は、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージの表現を表示することを更に含む。特定のケースでは、前記方法は、前記グラフィックス命令の受信、前記ステート情報の受信及び前記グラフィックス・イメージの複数のフレームに関する前記グラフィックス・イメージの前記表現の表示を、繰り返し行うことを更に含む。特定のケースでは、前記方法は、前記外部グラフィックス・デバイスから、パフォーマンス情報(該パフォーマンス情報は、該外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信することと、前記グラフィックス命令のその実行の間、前記外部グラフィックス上での1又は複数のパフォーマンス・イッシューを識別するために、前記パフォーマンス情報を解析することを更に含む。
この開示において説明される技術は、ハードウェア、ソフトウェア、ファームウェア又はそれらの任意の組み合せにおいて実装されても良い。ソフトウェアで実装される場合には、ソフトウェアは、プロセッサで実行されても良い。プロセッサは、1又は複数のプロセッサ(例えば、マイクロプロセッサ)、特定用途向けIC(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はデジタルシグナルプロセッサ(DSP)、又は他の等価な集積化された若しくは個別の論理回路を指し示しても良い。本技術を実行するための命令を含むソフトウェアは、最初にコンピュータ読み取り可能な媒体に記憶されロードされ、そして、プロセッサにより実行されても良い。
したがって、この開示はまた、この開示において説明される様々な技術の任意のものをプロセッサに実行させる命令を含むコンピュータ読み取り可能な媒体を意図する。場合によっては、コンピュータ読み取り可能な媒体は、製造者に販売され得る及び/又はデバイスで使用され得るコンピュータ・プログラム製品の一部を形成しても良い。コンピュータ・プログラム製品は、コンピュータ読み取り可能な媒体を含んでも良いし、場合によっては、また、パッケージ材料を含んでも良い。
添付の図面及び下記の説明において1又は複数の態様の詳細が説明される。他の特徴、目的及び利点は説明及び図面から並びにクレームから明らかである。
図1は、本開示の一つの態様に従って、ステート及び/又はパフォーマンス情報とともに、グラフィックス命令を、アプリケーション・コンピュータ・デバイスに提供し得るグラフィックス・デバイスを示すブロック図である。
図2は、本開示の他の態様に従って、ステート及び/又はパフォーマンス情報とともに、グラフィックス命令を、アプリケーション・コンピュータ・デバイスに提供し得るグラフィックス・デバイスを示すブロック図である。
図3は、本開示の一つの態様に従って、図1に示されるグラフィックス処理システム、グラフィックス・ドライバー及びアプリケーション・コンピュータ・デバイスの特定の詳細を示すブロック図である。
図4は、本開示の一つの態様に従って、図1に示される制御プロセッサ、グラフィックス・プロセッサ、頂点プロセッサ及び表示プロセッサにより実行され得るオペレーションの更なる詳細を示すフロー・ダイアグラムである。
図5は、本開示の一つの態様に従って、図3に示されるグラフィックス・ドライバーの更なる詳細を示すブロック図である。
図6は、本開示の一つの態様に従った、図1又は図2に示されるグラフィックス・デバイスにより実行され得る方法のフローチャートである。
図7は、本開示の一つの態様に従って、図1及び図2に示されるアプリケーション・コンピュータ・デバイスにより実行され得る第1の方法のフローチャートである。
図8は、本開示の一つの態様に従って、図1及び図2に示されるアプリケーション・コンピュータ・デバイスにより実行され得る第2の方法のフローチャートである。
図9は、本開示の一つの態様に従って、グラフィック・ウインドウ中に情報を表示するための表示デバイスに接続されるグラフィックス・デバイスの例を示す概念図である。
図10は、本開示の一つの態様に従って、グラフィカル・ウインドウ中に情報を表示する表示デバイスに接続されるグラフィックス・デバイスの他の例を示す概念図である。
図11は、本開示の一つの態様に従って、図10の表示デバイスにより表示され得る統計及び/又はテクスチャー情報の例を示す図である。
図12は、本開示の一つの態様に従って、図10に示されるグラフィックス・デバイス上に表示され得るオーバーライド・スクリーンの一例を示すスクリーン・ダイアグラムである。
図13は、図10に示されるグラフィックス・デバイス上に表示され得るオーバーライド情報の一例を示すスクリーン・ダイアグラムである。
図14は、本開示の一つの態様に従って、図10に示されるグラフィックス・デバイス上に表示され得るテクスチャー情報の一例を示すスクリーン・ダイアグラムである。
図15は、本開示の一つの態様に従って、図10に示されるグラフィックス・デバイス上に表示され得るパフォーマンス情報の一例を示すスクリーン・ダイアグラムである。
詳細な説明
図1は、本開示の一つの態様に従って、ステート及び/又はパフォーマンス情報32とともに、グラフィックス命令30を、アプリケーション・コンピュータ・デバイス20に提供し得るグラフィックス・デバイス2を示すブロック図である。グラフィックス・デバイス2は、独立型デバイスであっても良いし、あるいは、より大きなシステムの一部であっても良い。例えば、グラフィックス・デバイス2は、無線通信デバイス(例えば、無線モバイル・ハンドセット)を含んでも良いし、あるいは、デジタル・カメラ、ビデオ・カメラ、デジタル・マルチメディア・プレイヤー、携帯情報端末(PDA)、テレビゲーム機、他のビデオ・デバイス又は専用の視聴局(viewing station)(例えば、テレビ)の一部であっても良い。グラフィックス・デバイス2はまた、パソコン又はラップトップ・デバイスを含んでも良い。グラフィックス・デバイス2は、上で説明されたデバイスの一部又は全部において使用され得る、1又は複数の集積回路又はチップに含まれても良い。
場合によっては、グラフィックス・デバイス2は、様々なアプリケーション(例えば、グラフィックス・アプリケーション、ビデオ・アプリケーション、音声アプリケーション及び/又は他のマルチメディア・アプリケーション)を実行することができても良い。例えば、グラフィックス・デバイス2は、グラフィックス・アプリケーション、テレビゲーム・アプリケーション、ビデオ・プレイバック・アプリケーション、デジタル・カメラ・アプリケーション、インスタントメッセージング・アプリケーション、ビデオ通信会議アプリケーション、モバイル・アプリケーション又はビデオストリーミング・アプリケーションのために使用されても良い。
グラフィックス・デバイス2は、様々な異なるデータ・タイプ及びフォーマットを処理することができても良い。例えば、グラフィックス・デバイス2は、下で更に詳細に説明されるように、静止画データ、動画(ビデオ)データ又は他のマルチメディア・データを処理しても良い。イメージ・データは、コンピュータグラフィック・データを含んでも良い。図1の例において、グラフィックス・デバイス2は、グラフィックス処理システム4、記憶媒体8(それは、メモリを含む)及び表示デバイス6を含む。
プログラム可能なプロセッサ10,12,14及び16は、グラフィックス処理システム4内に含まれても良い。プログラム可能なプロセッサ10は、制御又は汎用プロセッサである。プログラム可能なプロセッサ12は、グラフィックス・プロセッサであり、プログラム可能なプロセッサ14は、頂点プロセッサであり、プログラム可能なプロセッサ16は、表示プロセッサである。制御プロセッサ10は、グラフィックス・プロセッサ12、頂点プロセッサ14及び/又は表示プロセッサ16を制御することができても良い。一つの態様において、グラフィックス処理システム4は、他の形のマルチメディア・プロセッサを含んでも良い。
グラフィックス・デバイス2において、グラフィックス処理システム4は、記憶媒体8に及び表示デバイス6に接続する。記憶媒体8は、例えばシンクロナスダイナミックランダムアクセスメモリ(SDRAM)、リードオンリーメモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、組み込みダイナミックランダムアクセスメモリ(eDRAM)、スタティックランダムアクセスメモリ(SRAM)又はフラッシュメモリのような、命令及び/又はデータを格納することができる任意の固定(permanent)又は揮発性メモリを含んでも良い。表示デバイス6は、例えばLCD(液晶ディスプレイ)、プラズマ・ディスプレイ・デバイス又は他のテレビ(TV)表示デバイスのような、表示目的のイメージ・データを表示することができる任意のデバイスであっても良い。
頂点プロセッサ14は、頂点情報を管理し、頂点変換を処理することができる。一つの態様において、頂点プロセッサ14は、デジタルシグナルプロセッサ(DSP)を含んでも良い。グラフィックス・プロセッサ12は、コンピュータ化されたグラフィックスをレンダリング、操作(manipulate)及び表示するために利用される専用グラフィックス・レンダリング・デバイスであっても良い。グラフィックス・プロセッサ12は、様々な複雑な(complex)グラフィックス関係アルゴリズムを実装しても良い。例えば、複雑なアルゴリズムは、2次元又は3次元コンピュータ化グラフィックスの表現(representations)に対応しても良い。グラフィックス・プロセッサ12は、ディスプレイ(例えば表示デバイス6)上の複雑な3次元イメージを作成するために、幾つかのいわゆる“プリミティブ(primitive)”グラフィックス・オペレーション(例えば、点、線及び三角形又は他のポリゴン面の形成)を実装しても良い。
グラフィックス・プロセッサ12は、記憶媒体8に記憶される命令を実行しても良い。記憶媒体8は、1又は複数のグラフィックス・ドライバー18だけでなく、アプリケーション(例えばグラフィックス又はビデオ・アプリケーション)に関するアプリケーション命令21を記憶することができる。アプリケーション命令21は、実行のために記憶媒体8からグラフィックス処理システム4へロードされても良い。例えば、制御プロセッサ10、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数が、命令21を実行しても良い。一つの態様において、アプリケーション命令21は、記憶媒体8に無線で動的にダウンロードされる1又は複数のダウンロード可能なモジュールを含んでも良い。一つの態様において、アプリケーション命令21は、アプリケーション開発者により作成されるアプリケーション・プログラミング・インタフェース(API)命令から生成又はコンパイルされるるバイナリ命令のコール・ストリームを含んでも良い。
グラフィックス・ドライバー18はまた、実行のために記憶媒体8からグラフィックス処理システム4にロードされても良い。例えば、制御プロセッサ10、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数が、グラフィックス・ドライバー18からの特定の命令を実行しても良い。一つの例示的な態様において、グラフィックス・ドライバー18は、グラフィックス・プロセッサ12によりロード及び実行される。グラフィックス・ドライバー18は、下で更に詳細に説明される。
また、図1に示されるように、グラフィックス処理システム4は、1又は複数のバッファ15を含む。制御プロセッサ10、グラフィックス・プロセッサ12、頂点プロセッサ14及び/又は表示プロセッサ16は、各々、バッファ15へのアクセスを有し、また、バッファ15へデータを記憶し又はバッファ15からデータを検索しても良い。バッファ15は、キャッシュメモリを含んでも良く、また、データと命令の両方を記憶することができても良い。例えば、バッファ15は、アプリケーション命令21のうちの1又は複数、又は、記憶媒体8からグラフィックス処理システム4にロードされたグラフィックス・ドライバー18からの1又は複数の命令を含んでも良い。バッファ15及び/又は記憶媒体8はまた、命令の実行の間に使用されるグラフィックス・データを含んでも良い。
アプリケーション命令21は、特定のケースにおいて、グラフィックス・アプリケーション(例えば、3Dグラフィックス・アプリケーション)のための命令を含んでも良い。アプリケーション命令21は、1又は複数のグラフィックス・イメージを含むグラフィックス・シーンのコンテンツを記述又は定義する命令を含んでも良い。アプリケーション命令21がグラフィックス処理システム4によりロード及び実行されるとき、グラフィックス処理システム4は、一連の状態遷移を経ても良い。グラフィックス・ドライバー18内の1又は複数の命令はまた、アプリケーション命令21の実行の間にグラフィックス・イメージを表示デバイス6上にレンダリング又は表示するために実行されても良い。
例えば描画コールのような命令に関するステートのフルセットは、イメージがグラフィックス処理システム4によりレンダリングされるプロセスを記述しても良い。しかし、アプリケーション命令21を書いたアプリケーション開発者は、定義されたシーン中のイメージを記述又はレンダリングする代わりの方法(alternate methods)によるデバッギング又は実験の目的で、これらのステートをインタラクティブに閲覧(view)又は修正する能力(ability)がしばしば制限されることがある。さらに、異なるハードウェア・プラットホーム(例えば図2に示されるグラフィックス処理システム17のプラットホーム)は、これらのステート及び/又は状態遷移の異なるハードウェア・デザイン及び実装を有することがある。
それゆえ、一つの態様において、アプリケーション開発者は、シーン中のイメージを記述又はレンダリングするための代わりの方法によるデバッギング及び実験の処理を支援するために、図1に示されるように、アプリケーション・コンピュータ・デバイス20を使用しても良い。アプリケーション・コンピュータ・デバイス20は、グラフィックス・デバイス2に接続される。例えば、一つの態様において、アプリケーション・コンピュータ・デバイス20は、ユニバーサルシステムバス(USB)コネクションを介して、グラフィックス・デバイス2に接続される。他の態様において、他のタイプのコネクション(例えば無線又は他の形の有線接続)が、使用されても良い。
アプリケーション・コンピュータ・デバイス20は、1又は複数のプロセッサ22、表示デバイス24及び記憶媒体26を含む。一つの態様に従って、プロセッサ22は、制御プロセッサ、グラフィックス・プロセッサ、頂点プロセッサ及び表示プロセッサのうちの1又は複数を含んでも良い。記憶媒体26は、例えばシンクロナスダイナミックランダムアクセスメモリ(SDRAM)、リードオンリーメモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、スタティックランダムアクセスメモリ(SRAM)又はフラッシュメモリ)のような、命令及び/又はデータを格納することができる任意の固定又は揮発性メモリを含んでも良い。表示デバイス24は、例えばLCD(液晶ディスプレイ)、プラズマ・ディスプレイ・デバイス又は他のテレビ(TV)表示デバイスのような、表示目的のイメージ・データを表示することができる任意のデバイスであっても良い。
アプリケーション・コンピュータ・デバイス20は、グラフィックス・デバイス2から送信される、ステート及び/又はパフォーマンス情報32とともに、グラフィックス命令30を捕捉(capturing)及び解析することができる。一つの態様において、グラフィックス・ドライバー18は、グラフィックス命令30及びステート/パフォーマンス情報32を、アプリケーション・コンピュータ・デバイス20に送信するように構成される。グラフィックス命令30は、アプリケーション命令21のうちの1又は複数を含んでも良く、ステート/パフォーマンス情報32は、グラフィックス処理システム4内でのグラフィックス命令30の実行の間に生成又は補足されても良い。
ステート/パフォーマンス情報32は、命令の実行の間のグラフィックス処理システム4のステート及びパフォーマンスに関する情報を含んでも良く、それは下で更に詳細に説明される。ステート/パフォーマンス情報32は、グラフィックス命令30で使用され得る又はさもなければグラフィックス命令30に関連し得るグラフィックス・データ(例えば、プリミティブの及び/又はラスタライズされたグラフィックス・データ)を含んでも良い。グラフィックス処理システム4は、表示デバイス6上にイメージ又は複数のイメージからなるシーンを表示するためにグラフィックス命令30を実行しても良い。アプリケーション・コンピュータ・デバイス20は、グラフィックス・デバイス2の表示デバイス6に同様に表示されるグラフィックス・イメージ又はシーンを作成するために、ステート/パフォーマンス情報32とともに、グラフィックス命令30を使用することができる。
シミュレーション・アプリケーション28は、グラフィックス命令30及びステート/パフォーマンス情報32の受信に応じて、グラフィックス・イメージ又はシーンを作成し、そして、イメージ又は複数のイメージからなるシーンを表示デバイス24上に表示するために、アプリケーション・コンピュータ・デバイス20のプロセッサ22によって実行されても良い。シミュレーション・アプリケーション28は、幾つかのアプリケーション命令を含むソフトウェア・モジュールを含んでも良い。シミュレーション・アプリケーション28は、記憶媒体26に記憶され、また、プロセッサ22によってロード及び実行されても良い。シミュレーション・アプリケーション28は、記憶媒体26にプリロードされても良く、また、グラフィックス・デバイス2で動作するようにカスタマイズされても良い。一つの態様において、シミュレーション・アプリケーション28は、グラフィックス・デバイス2のハードウェア・オペレーションをシミュレートする。シミュレーション・アプリケーション28の異なるバージョンが、記憶媒体26に記憶され、異なるハードウェア・デザインを有する異なるグラフィックス・デバイスのためにプロセッサ22によって実行されても良い。また、場合によっては、シミュレーション・アプリケーション28とともに使用されるソフトウェア・ライブラリが、記憶媒体26内に記憶されても良い。一つの態様において、シミュレーション・アプリケーション28は、一般アプリケーションであっても良く、また、特定のハードウェア又はグラフィックス・デバイス・シミュレーション機能性は、実行の間、シミュレーション・アプリケーション28にリンクされ得る各々の独立したライブラリ内に含まれても良い。
一つの態様において、ステート/パフォーマンス情報32のビジュアル表現が、表示デバイス2上でアプリケーション開発者に対して表示されても良い。さらに、グラフィックス命令30のビジュアル表現が、同様に、表示されても良い。多くの場合、グラフィックス命令30はバイナリ命令を含むことがあるので、アプリケーション・コンピュータ・デバイス20は、表示デバイス24上でのグラフィックス命令30のビジュアル表現を生成するために、命令マッピング情報31を使用しても良い。命令マッピング情報31は、記憶媒体26内に記憶され、また、グラフィックス命令30のビジュアル表現を表示するために、プロセッサ22にロードされても良い。
一つの態様において、命令マッピング情報31は、グラフィックス命令30を生成するときに以前コンパイルされた可能性のある対応するAPI命令へ、グラフィックス命令30をマッピングするために、例えば検索テーブル中などに、マッピング情報を含んでも良い。アプリケーション開発者は、API命令を使用するプログラムを書いても良いが、これらのAPI命令は、一般的に、グラフィックス・デバイス2上での実行のために、例えばグラフィックス命令30(それは、アプリケーション命令21内に含まれる)のようなバイナリ命令にコンパイルされる。グラフィックス命令30内の1又は複数の命令は、個々のAPI命令にマッピングされても良い。マッピングされたAPI命令は、それから、実際に実行されているグラフィックス命令30のビジュアル表現を提供するために、表示デバイス24上でアプリケーション開発者に対して表示されても良い。
一つの態様において、ユーザ(例えばアプリケーション開発者)は、例えばそのようなパフォーマンスの変化の効果を判定するために、グラフィックス命令30のうちの1又は複数を変更することを望むことがある。この態様において、ユーザは、グラフィックス命令30のビジュアル表現を変更しても良い。マッピング情報31は、それから、下で更に詳細に説明されるように、要求された修正34内のグラフィックス・デバイス2へ提供されることができるバイナリ命令に、グラフィックス命令30のビジュアル表現中のこれらの変更をマッピングするために使用される。
先に述べたように、アプリケーション・コンピュータ・デバイス20の表示デバイス24上に表示されるグラフィックス・イメージは、グラフィックス・デバイス2上に表示されるイメージの表現であっても良い。グラフィックス・デバイス2上にイメージが提示されているときに、正確にイメージ又はシーンを再作成するために、シミュレーション・アプリケーション28は、グラフィックス命令30及びステート/パフォーマンス情報32を使用しても良いので、アプリケーション・コンピュータ・デバイス20を使用するアプリケーション開発者は、グラフィックス・アプリケーション30の実行の間の潜在的な(potential)パフォーマンス・イッシュー又はボトルネックと、そして、グラフィックス・アプリケーション30の全体的なパフォーマンスを向上させるプロトタイプ修正でさえ、速く識別することができ得る。
例えば、アプリケーション開発者は、アプリケーション・コンピュータ・デバイス20上のシミュレーション・アプリケーション28の実行及び表示デバイス24上のイメージの表示の間、グラフィックス命令30及び/又はステート/パフォーマンス情報32に対して1又は複数の要求された修正34を施すことを選択しても良い。グラフィックス命令30の実行又はステート/パフォーマンス情報32の解析の間、そのような要求された修正34は、観測されたパフォーマンス・イッシュー又はボトルネックに基づいても良い。これらの要求された修正34は、それから、アプリケーション・コンピュータ・デバイス20からグラフィックス・デバイス2へ送信されても良い。そこでは、それらはグラフィックス処理システム4によって処理される。一つの態様において、グラフィックス・ドライバー18のうちの1又は複数が、要求された修正34を処理するために、グラフィックス処理システム4中で実行される。要求された修正34は、場合によっては、修正された命令を含んでも良い。場合によっては、要求された修正は、修正されたステート及び/又はパフォーマンス情報を含んでも良い。
要求された修正34の処理に応じて、更新された命令及び/又は情報35は、アプリケーション・コンピュータ・デバイス20へ送信される(例えばグラフィックス・ドライバー18のうちの1又は複数によって)。更新された命令/情報35は、グラフィックス・デバイス2により処理された要求された修正34に基づく実行のための更新されたグラフィックス命令を含んでも良い。更新された命令/情報35はまた、グラフィックス・デバイス2により処理された要求された修正34に基づく更新されたステート及び/又はパフォーマンス情報を含んでも良い。
更新された命令/情報35は、表示デバイス24上でのイメージ情報の表示を更新するために、さらに更新された命令/情報35のビジュアル表現を、アプリケーション開発者に提供するために、シミュレーション・アプリケーション28により処理される(それは命令マッピング情報31を再び使用することを含んでも良い)。アプリケーション開発者は、それから、パフォーマンス・イッシューが解決又は軽減されたかについて判定するために、更新された命令/情報35のビジュアル表現だけでなく、表示デバイス24上の更新されたイメージ情報を閲覧しても良い。アプリケーション開発者は、グラフィックス命令30をデバッグするための反復的なプロセス、又は、全体的なパフォーマンス・グラフィックス・アプリケーション30を改善するためのプロトタイプ修正を使用しても良い。
図2は、本開示の他の態様に従って、ステート及び/又はパフォーマンス情報82とともに、グラフィックス命令80を、アプリケーション・コンピュータ・デバイスに提供し得るグラフィックス・デバイス52を示すブロック図である。この態様において、グラフィックス・デバイス52は、図1に示されるグラフィックス・デバイス2とは異なるハードウェア設計及びアーキテクチャーを有する。しかし、アプリケーション・コンピュータ・デバイス20は、依然として、他のシミュレーション・アプリケーション29を使用することによって、グラフィックス・デバイス52とのインタラクト、画像情報の作成、グラフィックス・デバイス52に関するパフォーマンス情報の表示をすることができる。図1において、シミュレーション・プログラム28は、グラフィックス・デバイス2の用途に、設計され、カスタマイズされる。図2において、シミュレーション・プログラム29は、グラフィックス・デバイス52の用途に、設計され、カスタマイズされる。
図2に示されるように、グラフィックス・デバイス52は、グラフィックス処理システム54、表示デバイス56及び記憶媒体58を含む。もしグラフィックス処理システム4(図1)でなければ、グラフィックス処理システム54は、頂点プロセッサを含まない。グラフィックス処理システム54は、制御プロセッサ60、グラフィックス・プロセッサ62、表示プロセッサ66及び1又は複数のバッファ65を含む。制御プロセッサ60は、グラフィックス・プロセッサ62及び/又は表示プロセッサ66を制御しても良い。制御プロセッサ60、グラフィックス・プロセッサ62及び表示プロセッサ66の各々は、バッファ65へのアクセスを有する。バッファ65は、データ又は命令を含んでも良い。
記憶媒体8(図1)と同様に、グラフィックス・デバイス52の記憶媒体58は、命令及びドライバーを記憶することができる。図2に示されるように、記憶媒体(メモリを含む)は、アプリケーション命令71及び1又は複数のグラフィックス・ドライバー68を含む。アプリケーション命令71は、グラフィックス・アプリケーションのための命令を含んでも良く、グラフィックス・ドライバー68は、表示デバイス56上での画像データの表示のための命令及びアプリケーション・コンピュータ・デバイス20と通信するための命令を含んでも良い。アプリケーション命令71及びグラフィックス・ドライバー68は、グラフィックス処理システム54における制御プロセッサ60、グラフィックス・プロセッサ62及び/又は表示プロセッサ66にロードされて実行されても良い。場合によっては、アプリケーション命令71のうちの1又は複数と、グラフィックス・ドライバー68からの1又は複数の命令は、グラフィックス処理システム54内での実行のためにバッファ65にロードされても良い。
グラフィックス処理システム54内でのアプリケーション命令71の実行の間、グラフィックス・ドライバー68のうちの1又は複数はまた、実行の間、グラフィックス命令80及びステート及び/又はパフォーマンス情報82を、アプリケーション・コンピュータ・デバイス20に送信しても良い。グラフィックス命令80は、アプリケーション命令71の部分又はサブセットを含んでも良い。ステート/パフォーマンス情報82は、制御プロセッサ60、グラフィックス・プロセッサ62及び表示プロセッサ66のうちの1又は複数のプロセッサ内でのグラフィックス命令80の実行に基づいても良い。
シミュレーション・アプリケーション29は、グラフィックス命令80及びステート/パフォーマンス情報82を処理するために、プロセッサ22のうちの1又は複数にロードされ実行されても良い。上記したように、シミュレーション・アプリケーション29は、特にグラフィックス・デバイス52のオペレーションをシミュレーションするようにデザインされていても良い。グラフィックス・デバイスの様々なタイプのデザインは、対応するシミュレーション・アプリケーションの作成及び実行を通して、アプリケーション・コンピュータ・デバイス20上でシミュレーションされても良い。
シミュレーション・アプリケーション29は、プロセッサ22に、受信されたグラフィックス命令80及びステート/パフォーマンス情報82に従って、グラフィックス・イメージ又はシーンの表現を表示デバイス24上に表示させても良い。このイメージ又はシーンは、当初、グラフィックス・デバイス52の表示デバイス56上に表示された可能性があるが、その表現は、表示デバイス24上に表示される。さらに、シミュレーション・アプリケーション29は、プロセッサ22に、ステート/パフォーマンス情報82のビジュアル表現を表示デバイス24上に表示させても良い。アプリケーション・コンピュータ・デバイス20はまた、表示デバイス24においてグラフィックス命令80のビジュアル表現を提供するために、命令マッピング情報33を使用しても良い。
アプリケーション開発者は、シミュレーション・アプリケーション29の実行の間、グラフィックス命令80及び/又はステート/パフォーマンス情報82に対して1又は複数の要求された修正84を施すことを選択しても良い。そのような要求された修正84は、グラフィックス命令80の実行又はステート/パフォーマンス情報82の解析の間、観測されたパフォーマンス・イッシュー又はボトルネックに基づいても良い。これらの要求された修正84は、それから、アプリケーション・コンピュータ・デバイス20からグラフィックス・デバイス52へ送信されても良い。ここで、それらは、グラフィックス・ドライバー68のうちの1又は複数により処理されても良い・
要求された修正84の処理に応じて、更新された命令及び/又は情報85は、グラフィックス・ドライバー68のうちの1又は複数により、アプリケーション・コンピュータ・デバイス20へ送信される。更新された命令/情報85は、更新されたグラフィックス命令、更新されたステート情報、及び/又は、更新されたパフォーマンス情報を含んでも良い。
更新された命令/情報85は、表示デバイス24上の画像情報の表示を更新するために、さらに、更新された命令/情報85のビジュアル表現をアプリケーション開発者に提供するために、シミュレーション・アプリケーション29により処理される。アプリケーション開発者は、パフォーマンス・イッシューが解決又は軽減されたかどうか判定するために、更新された命令/情報85のビジュアル表現だけでなく、表示デバイス24上の更新された画像情報を閲覧しても良い。アプリケーション開発者は、全体的なパフォーマンス・グラフィックス・アプリケーション80を改善するために、グラフィックス命令80又はプロトタイプ修正をデバッグするために、反復的なプロセスを使用しても良い。
一つの態様に従って、図3は、本開示の一つの態様に従って、図1に示されるグラフィックス処理システム4、グラフィックス・ドライバー18及びアプリケーション・コンピュータ・デバイス20の特定の詳細を示すブロック図である。図3において、アプリケーション・コンピュータ・デバイス20は、デバイス2のグラフィックス処理システム4に接続されることが仮定される。しかし、これは説明の目的のためにだけ示される。他のシナリオでは、アプリケーション・コンピュータ・デバイス20は、多くの他の形のグラフィックス処理システム及びデバイス(例えばデバイス52(図2)のグラフィックス処理システム54)に接続されても良い。
図3に示されるように、グラフィックス処理システム4は、4つのプログラム可能なプロセッサ、すなわち、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16を含む。それらは図1にも示される。制御プロセッサ10は、頂点プロセッサ14、グラフィックス・プロセッサ12又は表示プロセッサ16のうちの任意のものを制御しても良い。多くの場合に、これらのプロセッサ10,12,14及び16は、システム4内のグラフィックス処理パイプラインの一部であっても良い。
制御プロセッサ10はまた、パイプラインを通してデータ又は命令実行のフローの1又は複数の態様を制御しても良く、さらに、グラフィックス・イメージに関するジオメトリ情報を、頂点プロセッサ14に提供しても良い。頂点プロセッサ14は、グラフィックス・イメージの頂点変換又はジオメトリ処理を管理しても良い。それは、プリミティブのジオメトリ・フォームにおける複数の頂点に従って記述又は定義されても良い。頂点プロセッサ14は、その出力をグラフィックス・プロセッサ12に提供しても良い。グラフィックス・プロセッサ12は、グラフィックス・イメージに対するレンダリング又はラスタライゼーション・オペレーションを実行しても良い。グラフィックス・プロセッサ12は、表示プロセッサ16にその出力を提供しても良い。表示プロセッサ16は、表示のために、ピクセル・フォームで、グラフィックス・イメージを準備する。グラフィックス・プロセッサ12はまた、ピクセル・データに対する様々なオペレーション(例えばシェーディング又はスケーリング)を実行しても良い。
しばしば、グラフィックス・イメージ・データは、グラフィックス命令30の実行の間、この処理パイプラインで処理されても良い。グラフィックス命令30は、アプリケーション命令21(図1)の一部であっても良い。その結果、グラフィックス命令30は、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数によって実行されても良い。アプリケーション開発者は、一般的に、グラフィックス処理システム4内のいずれの特定のプロセッサがグラフィックス命令30のうちのいずれを実行するかという多くの知識又は制御を有しなくても良い。場合によっては、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数は、グラフィックス命令30の実行の間、パフォーマンス・イッシューを有する可能性があり、あるいは、処理パイプライン中の潜在的なボトルネックとして機能する可能性がある。これらの場合、グラフィックス処理システム4内の全体的なパフォーマンスが悪化する可能性があり、そして、アプリケーション開発者は、パフォーマンスを向上させるために、グラフィックス命令30の変更を行うことを望むことがある。かし、開発者がプロセッサ10,12,14又は16のいずれのプロセッサがパフォーマンス・イッシューを有するものである可能性があるかについて、必ずしも分るわけではない。
パフォーマンス・ボトルネック及び潜在的な解決を識別する問題を支援するために、図3に示されるように、グラフィックス・デバイス2のグラフィックス・ドライバー18Aは、グラフィックス処理システム4からグラフィックス命令30を捕捉又は収集しても良く、また、アプリケーション・コンピュータ・デバイス20にそれらを送っても良い。グラフィックス・ドライバー18Aは、図1に示されるグラフィックス・ドライバー18の一部である。グラフィックス・ドライバー18Aは、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数によってロード及び実行されても良い。さらに、グラフィックス・ドライバー18Aはまた、制御プロセッサ10、ベクトルプロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数からステート及び/又はパフォーマンス情報32を収集しても良く、同様に、アプリケーション・コンピュータ・デバイス20にこの情報32を送っても良い。一つの態様において、グラフィックス命令30がOpenGL ES API命令から生成又はコンパイルされた可能性のあるバイナリ命令を含むとき、グラフィックス・ドライバー18Aは、OpenGL ESドライバーを含んでも良い。
様々な形のステート・データが、ステート/パフォーマンス情報32内に含まれても良い。例えば、ステート・データは、グラフィックス命令30の実行の間に使用される又はさもなければグラフィックス命令30に関連するグラフィックス・データを含んでも良い。ステート・データは、頂点アレイ(例えば、位置、色、座標、サイズ又は重みデータ)に関係しても良い。ステート・データは、テクスチャー状態データ(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)を更に含んでも良い。前に説明されたように、ステート・データは、ステート情報と実際のデータの両方を含んでも良い。場合によっては、ステート・データは、1又は複数のOpenGLトークンに関連するデータを含んでも良い。
様々な形のパフォーマンス・データはまた、ステート/パフォーマンス情報32内に含まれても良い。一般に、このパフォーマンス・データは、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数からのメトリック又はハードウェア・カウンタ・データを含んでも良い。パフォーマンス・データは、フレーム・レート又はサイクル・データを含んでも良い。サイクル・データは、プロファイリング、命令アレイ、頂点及びインデックス・データ、又は他のオペレーションのために使用されるサイクルに関するデータを含んでも良い。様々な態様において、様々な形のステート及びパフォーマンス・データが、グラフィックス・ドライバー18Aによりグラフィックス処理システム4から収集されるステート/パフォーマンス情報32内に含まれても良い。
前に説明されたように、アプリケーション・コンピュータ・デバイス20は、受信されたグラフィックス命令30及びステート/パフォーマンス情報32に従って、グラフィックス・イメージの表現を表示しても良い。アプリケーション・コンピュータ・デバイス20はまた、ステート/パフォーマンス情報32のビジュアル表現を表示しても良い。再作成されたグラフィックス・イメージ及び/又はステート/パフォーマンス情報32のビジュアル表現の閲覧及びインタラクトによって、アプリケーション開発者は、グラフィックス命令30の実行の間、グラフィックス・デバイス2のグラフィックス処理システム4内のパフォーマンス・イッシューを速く識別及び解決することができ得る。例えば、アプリケーション開発者は、プロセッサ10,12,14及び/又は16のうちのいずれの特定の複数のプロセッサがパフォーマンス・イッシューを有する可能性があるかについて識別することができ得る。
任意の識別されたパフォーマンス・イッシューに対する回避方法(workaround)又は解決を識別する試行において、開発者は、アプリケーション・コンピュータ・デバイス20上で1又は複数の要求された修正34を開始しても良い。例えば、開発者は、要求された修正34を作成するために、再作成されたイメージ又はステート/パフォーマンス情報32の表現とインタラクトしても良い。場合によっては、開発者は、要求された修正34を生成するために、下でより詳しく説明されるように、ステート/パフォーマンス情報32を直接変更さえしても良い。特定のケースでは、要求された修正34は、グラフィックス・デバイス2のグラフィックス処理システム4におけるグラフィックス命令30のうちの1又は複数の実行を無効にする1又は複数のリクエスト、又は、1又は複数のグラフィックス命令30を修正するリクエストを含んでも良い。
要求された修正34は、アプリケーション・コンピュータ・デバイス20からグラフィックス・ドライバー18Aへ送信される。グラフィックス・ドライバー18Aは、オペレーションの間、グラフィックス・デバイス2のためのリクエストを処理する。多くの場合に、要求された修正34は、ステート情報を修正するリクエストを含んでも良い。ステート情報は、グラフィックス命令30の実行の間のグラフィックス処理システム4中のプロセッサ10,12,14又は16のうちの1又は複数の中のデータを含んでも良い。グラフィックス・ドライバー18Aは、それから、要求された修正34内に含まれるグラフィックス処理システム4の変更を実行しても良い。これらの変更は、グラフィックス命令30の実行のために、プロセッサ10,12,14及び/又は16の間で、実行のフローを変えても良い。特定のケースでは、グラフィックス命令30のうちの1又は複数は、要求された修正34に従って、グラフィックス処理システム4における実行の間、無効にされても良い。
グラフィックス・ドライバー18Aは、要求された修正34の処理に応答して、更新された命令及び/又は情報35を、アプリケーション・コンピュータ・デバイス20に送信することができる。更新された命令/情報35は、パフォーマンス情報を含む、グラフィックス・ドライバー18Aによりグラフィックス処理システム4から収集される更新されたステート情報を含んでも良い。更新された命令/情報3はまた、更新されたグラフィックス命令を含んでも良い。
アプリケーション・コンピュータ・デバイス20は、更新された命令/情報35のビジュアル表現だけでなく、グラフィックス・イメージの更新された表現を表示するために、更新された命令/情報35を使用しても良い。アプリケーション開発者は、それから、前に識別されたパフォーマンス・イッシューが解決又はさもなければ対処されたかどうかについて判断することができても良い。例えば、アプリケーション開発者は、特定のテクスチャー、ポリゴン若しくは他の特徴が最適化されたか又は他のパフォーマンス・パラメータが改善されたか判定するために、更新された命令/情報35のビジュアル表現だけでなく、更新されたイメージを解析することができても良い。
そのような方法において、アプリケーション開発者は、グラフィックス・デバイス2上のグラフィックス処理システム4のオペレーションをシミュレートするアプリケーション・コンピュータ・デバイス20上の環境内でグラフィックス命令30の実行を速く及び効果的にデバッグ又は解析することができても良い。開発者は、グラフィックス命令30の実行パフォーマンスを最大にするために、シーン又は複数のイメージ・フレームにおける複数のグラフィックス・イメージを解析するために、アプリケーション・コンピュータ・デバイス20上の表示されたイメージ及びステート/パフォーマンス情報と繰り返しインタラクトしても良い。アプリケーション・コンピュータ・デバイス20上のそのようなインタラクション及び表示される情報の例は、下で更に詳細に提示される。
図4は、一つの態様に従って、制御プロセッサ10、グラフィックス・プロセッサ12、頂点プロセッサ14及び表示プロセッサ16により実行され得るオペレーションの更なる詳細を示すフロー・ダイアグラムである。図4はまた、フレーム・バッファ・ストレージ100及びディスプレイ102に関するオペレーションを示す。一つの態様において、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び/又は表示プロセッサ16は、グラフィックス命令30のうちの1又は複数の実行の結果として、様々なオペレーションを実行する。
前に説明されたように、制御プロセッサ10は、グラフィックス処理パイプラインを通してデータ又は命令実行のフローの1又は複数の態様を制御しても良く、さらに、ジオメトリ情報を頂点プロセッサ14に提供しても良い。図4に示されるように、制御プロセッサ10は、90においてジオメトリ・ストレージを実行しても良い。場合によっては、1又は複数のプリミティブのためのジオメトリ情報は、制御プロセッサ10によってバッファ15(図1)に記憶されても良い。場合によっては、ジオメトリ情報は、記憶媒体8に記憶されても良い。
頂点プロセッサ14は、それから、92において、制御プロセッサにより提供され及び/又は処理のためにバッファ15に記憶される所定のプリミティブのためのジオメトリ情報を取得しても良い。特定のケースでは、頂点プロセッサ14は、ジオメトリ情報の頂点変換を管理しても良い。特定のケースでは、頂点プロセッサ14は、ジオメトリ情報に関してライティング・オペレーション(lighting operations)を実行しても良い。
頂点プロセッサ14は、グラフィックス・プロセッサ12にその出力を提供しても良い。そして、グラフィックス・プロセッサ12は、94において、該データに関してレンダリング又はラスタライゼーション・オペレーションを実行しても良い。グラフィックス・プロセッサ12は、表示プロセッサ16にその出力を提供しても良い。そして、表示プロセッサ16は、表示のために、ピクセル・フォームで、1又は複数のグラフィックス・イメージを準備する。表示プロセッサ16は、98において、データの様々なフラグメントを処理するためのフラグメント処理を含む、ピクセル・データに関する様々なオペレーションを実行しても良い。特定のケースでは、これは、技術的に知られていているような、デプス・テスト、ステンシル・テスト、ブレンディング、又はテクスチャ・マッピングのうちの1又は複数を含んでも良い。テクスチャ・マッピングを実行するとき、表示プロセッサ16は、96において、テクスチャー・ストレージ及びフィルタリング情報を組み込んでも良い。場合によっては、グラフィックス・プロセッサ16は、ラスタライズされたデータに関する他のオペレーション(例えば、シェーディング又はスケーリング・オペレーション)を実行しても良い。
表示プロセッサ16は、100において、フレーム・バッファに記憶するために、出力ピクセル情報を提供する。場合によっては、フレーム・バッファは、バッファ15(図1)内に含まれても良い。他の場合において、フレーム・バッファは、記憶媒体8内に含まれても良い。フレーム・バッファは、イメージ・データの1又は複数のフレームを記憶する。そして、それは、102において、例えば表示デバイス6上などで、表示されることができる。
前に説明されたように、グラフィックス命令30は、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数によって実行されても良い。アプリケーション開発者は、一般的に、グラフィックス処理システム4内のいずれの特定のプロセッサがグラフィックス命令30のうちのいずれのグラフィックス命令を実行するかという多くの知識又は制御を有しなくても良い。特定のケースでは、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数は、グラフィックス命令30の実行の間、パフォーマンス・イッシューを有する可能性があり、あるいは、処理パイプライン中の潜在的なボトルネックとして機能する可能性がある。アプリケーション開発者がボトルネックの位置又はそのようなボトルネックの影響を解決又は軽減する最も良い方法を正確に指摘することは、しばしば難しい場合がある。このように、一つの態様において、グラフィックス命令30及び/又はステート情報は、グラフィックス・デバイス2から外部コンピュータ・デバイス(例えばアプリケーション・コンピュータ・デバイス20)へ提供されても良い。ステート情報は、グラフィックス命令30の実行の間に起こる(例えば図4に示されるそれらのような)様々なオペレーションに関して、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数からのデータを含んでも良い。アプリケーション・コンピュータ・デバイス20は、効率的且つ効果的な方法でボトルネックの識別及び解決を支援するために、デバイス2上に示されるグラフィックス・イメージを作成しても良い。
一つの態様に従って、図5は、本開示の一つの態様に従って、図3に示されるグラフィックス・ドライバー18Aの更なる詳細を示すブロック図である。前に説明されたように、グラフィックス・ドライバー18Aは、グラフィックス処理システム4内で(例えば、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数によって)実行されることができる命令を含んでも良く、また、グラフィックス・ドライバー18の一部であっても良い。グラフィックス・ドライバー18Aの実行は、グラフィックス処理システム4がアプリケーション・コンピュータ・デバイス20と通信するのを可能にする。一つの態様において、グラフィックス・ドライバー18Aは、グラフィックス処理システム54内で実行されることができる命令を含んでも良く、また、グラフィックス・ドライバー68の一部であっても良い。
グラフィックス・ドライバー18Aは、実行されるとき、様々な機能ブロックを含む。様々な機能ブロックは、転送インタフェース110、プロセッサ使用モジュール112、ハードウェア・カウンタ・モジュール114、他のステート及び/又はパフォーマンス・データを管理することができるステート/パフォーマンス・データ・モジュール116、APIトレース・モジュール118、及び、オーバーライド・モジュール(override module)120として図5に示される。グラフィックス・ドライバー18Aは、アプリケーション・コンピュータ・デバイス20と通信するために、転送インタフェース・モジュール110を使用する。
プロセッサ使用モジュール112は、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数に関するプロセッサ使用情報を収集及び維持する。プロセッサ使用情報は、プロセッサ・サイクル及び/又はパフォーマンス情報を含んでも良い。サイクル・データは、プロファイリング、命令アレイ、頂点及びインデックス・データ又は、他のオペレーションのために使用されるサイクルに関するデータを含んでも良い。プロセッサ使用モジュール112は、それから、転送インタフェース・モジュール110を介してそのようなプロセッサ使用情報をアプリケーション・コンピュータ・デバイス20に提供しても良い。場合によっては、プロセッサ使用モジュール112は、非同期の方法で、それがこの情報を受信しながら、該情報をデバイス20に提供する。他の場合において、プロセッサ使用モジュール112は、デバイス20からのリクエストの受信に応じて、情報を提供しても良い。
ハードウェア・カウンタ・モジュール114は、制御プロセッサ10、グラフィックス・プロセッサ12、頂点プロセッサ14又は表示プロセッサ16のうちの1又は複数による命令の実行の間、様々なハードウェア・カウンタを収集及び維持する。カウンタは、グラフィックス処理システム4内での命令実行に関して様々なステート・インジケータ及び/又はメトリックの経過を追っても良い(keep track)。ハードウェア・カウンタ・モジュール114は、非同期で又はリクエストに応じて、情報をデバイス20に提供しても良い。
ステート/パフォーマンス・データ・モジュール116は、グラフィックス処理システム4における制御プロセッサ10、グラフィックス・プロセッサ12、頂点プロセッサ14及び表示プロセッサ16のうちの1又は複数に関する他のステート及び/又はパフォーマンス・データを収集及び維持する。例えば、ステート・データは、場合によっては、グラフィックス・データを含んでも良い。ステート・データは、頂点アレイ(例えば、位置、色、座標、サイズ又は重みデータ)に関係するデータを含んでも良い。ステート・データは、テクスチャー状態データ、点状態データ、線状態データ、ポリゴン状態データ、カリング状態データ、アルファ・テスト状態データ、ブレンド状態データ、デプス状態データ、ステンシル状態データ又は色状態データを更に含んでも良い。パフォーマンス・データは、様々な他のメトリック又はサイクル・データを含んでも良い。ステート/パフォーマンス・データ・モジュール116は、非同期で又はリクエストに応じて、情報をデバイス20に提供しても良い。
APIトレース・モジュール118は、グラフィックス処理システム4により実行され、転送インタフェース・モジュール110を介してアプリケーション・コンピュータ・デバイス20へ転送されるグラフィックス命令のフロー及び/又はトレースを管理する。前に説明されたように、グラフィックス・デバイス2は、グラフィックス命令30のコピー(それはその処理パイプラインにおいてグラフィックス処理システム4により実行される)を、デバイス20に提供する。APIトレース・モジュール118は、これらのグラフィックス命令30の捕捉及び転送を管理する。APIトレース・モジュール118はまた、グラフィックス命令30を、グラフィックス命令30のビジュアル表現にマッピングする命令マッピング情報31(図1)で使用される特定の情報(例えばグラフィックス命令30を生成するのに使用された可能性のあるAPI命令)を提供しても良い。
オーバーライド・モジュール120は、グラフィックス・ドライバー18Aが、グラフィックス処理システム4内の特定の命令の実行を変更又はオーバーライドできるようにする。前に説明されたように、アプリケーション・コンピュータ・デバイス20は、1又は複数の要求された修正(例えば修正34)を、グラフィックス・デバイス2に送信しても良い。特定のケースでは、要求された修正34は、グラフィックス処理システム4におけるグラフィックス命令30のうちの1又は複数の実行を無効にする1又は複数のリクエスト、又は、グラフィックス命令30のうちの1又は複数を修正するリクエストを含んでも良い。場合によっては、要求された修正34は、ステート/パフォーマンス情報32を変更するリクエストを含んでも良い。
オーバーライド・モジュール120は、要求された修正34を受信又は処理しても良い。例えば、オーバーライド・モジュール120は、ステート/パフォーマンス情報32を修正する任意のリクエストとともに、グラフィックス命令30のうちの1又は複数を修正するリクエストを、デバイス20から受信しても良く、また、そのようなリクエストを、グラフィックス処理システム4に送信する。制御プロセッサ10、グラフィックス・プロセッサ12、頂点プロセッサ14及び表示プロセッサ16のうちの1又は複数は、それから、これらのリクエストを処理し、また、更新された命令/情報35を生成しても良い。オーバーライド・モジュール120は、それから、前に説明されたように、更新された命令/情報35を、処理のためにアプリケーション・コンピュータ・デバイス20に送信しても良い。
そのような方法において、グラフィックス・ドライバー18Aは、グラフィックス・デバイス2とアプリケーション・コンピュータ・デバイス20との間のインタフェースを提供する。グラフィックス・ドライバー18Aは、グラフィックス命令及びステート/パフォーマンス情報32をアプリケーション・コンピュータ・デバイス20に提供することができ、さらに、アプリケーション・コンピュータ・デバイス20から要求された修正34を受信することができる。そのような要求された修正34の処理の後に、グラフィックス・ドライバー18Aは、更新された命令/情報35を、アプリケーション・コンピュータ・デバイス20へ提供することができる。
図6は、本開示の一つの態様に従った、図1に示されるグラフィックス・デバイス2又は図2に示されるグラフィックス・デバイス52により実行され得る方法のフローチャートである。説明の便宜のためだけに、以下の説明において、図6の方法は、グラフィックス・デバイス2により実行されると仮定される。
グラフィックス・デバイス2は、コンピュータ・デバイス(例えばアプリケーション・コンピュータ・デバイス20)に、複数のグラフィックス命令を送信しても良い(121)。グラフィックス命令(例えばグラフィックス命令30)は、グラフィックス・イメージを表示するために、グラフィックス・デバイス2により実行される。グラフィックス命令30は、アプリケーション・プログラミング・インタフェース(API)命令から生成されるバイナリの命令を含んでも良い。一つの態様において、グラフィックス・デバイス2は、グラフィックス・ドライバー18A(図5)のAPIトレース・モジュール118を使用して、グラフィックス命令30を送信しても良い。グラフィックス・デバイス2はまた、アプリケーション・コンピュータ・デバイス20に、ステート/パフォーマンス情報32を送信する(122)。ステート/パフォーマンス情報32は、グラフィックス・デバイス2によるグラフィックス命令30の実行に関連する。一つの態様において、グラフィックス・デバイス2は、グラフィックス・ドライバー18Aのステート/パフォーマンス・データ・モジュール116を使用して、ステート/パフォーマンス情報32を送信しても良い。ステート/パフォーマンス情報32は、グラフィックス命令30を実行するグラフィックス・デバイス2のプロセッサ10,12,14又は16のうちの1又は複数からのステート情報又はデータを含んでも良く、また、グラフィックス・データを含んでも良い。ステート/パフォーマンス情報32はまた、これらのプロセッサ10,12,14又は16のうちの1又は複数から収集されるパフォーマンス・メトリックを含んでも良い。これらの場合、グラフィックス・デバイス2は、グラフィックス・ドライバー18Aのプロセッサ使用モジュール112及び/又はハードウェア・カウンター・モジュール114を使用して、ステート/パフォーマンス情報32を送信しても良い。
グラフィックス・デバイス2はまた、アプリケーション・コンピュータ・デバイス20から、1又は複数の要求された修正34を受信することができる(123)。これらの要求された修正34は、グラフィックス・デバイス2に、グラフィックス・デバイス2によるグラフィックス命令30の実行を修正させても良い。要求された修正34は、グラフィックス・デバイス2上でのグラフィックス命令30のうちの1又は複数の実行を無効にするリクエスト、グラフィックス・デバイス2上でグラフィックス命令30のうちの1又は複数を修正するリクエスト、又は、グラフィックス・デバイス2上でのステート情報を修正するリクエストのうちの1又は複数を含んでも良い。一つの態様において、グラフィックス・デバイス2は、グラフィックス・ドライバー18Aのオーバーライド・モジュール120、APIトレース・モジュール118及び/又はステート/パフォーマンス・データ・モジュール116を使用して、要求された修正34を受信しても良い。
要求された修正34の処理に応じて、グラフィックス・デバイス2は、要求された修正34に基づいて、アプリケーション・コンピュータ・デバイス20に、更新された命令及び/又はステート情報35を送信しても良い(124)。一つの態様において、グラフィックス・デバイス2は、グラフィックス・ドライバー18AのAPIトレース・モジュール118及び/又はステート/パフォーマンス・データ・モジュール116を使用して、更新された命令/情報35を送信しても良い。
グラフィックス・デバイス2が、1又は複数のグラフィックス・イメージ又は画像フレームのために情報の処理を終了しなかったならば(125)、グラフィックス・デバイスは、グラフィックス命令30を送信すること、ステート/パフォーマンス情報32を送信すること、要求された修正34を受信すること、及び、更新された命令/情報35を送信することを、複数のイメージ又はグラフィックス・イメージのフレームについて、繰り返しても良い。場合によっては、グラフィックス・デバイス2は、グラフィックス命令30及びステート/パフォーマンス情報32に従って、1又は複数のグラフィックス・イメージを表示デバイス6上に表示しても良い。
図7は、一つの態様に従って、プロセッサ22上でのシミュレーション・アプリケーション28(図1)又はシミュレーション・アプリケーション29(図2)の実行を通してアプリケーション・コンピュータ・デバイス20により実行され得る方法のフローチャートである。アプリケーション・コンピュータ・デバイス20は、外部グラフィックス・デバイスから複数のグラフィックス命令を(例えば外部グラフィックス・デバイス2からグラフィックス命令30)受信する(130)。グラフィックス命令30は、1又は複数のグラフィックス・イメージ(例えば3次元(3D)グラフィックス・イメージ)を表示デバイス6上に表示するために、グラフィックス・デバイス2により実行される。一つの態様において、グラフィックス命令30は、実行されるときに、グラフィックス・イメージをレンダリングするコール・ストリームを含む。一つの態様において、コール・ストリームは、アプリケーション・プログラミング・インタフェース(API)命令から生成されるバイナリの命令を含む。
アプリケーション・コンピュータ・デバイス20は、グラフィックス・デバイス2から、ステート及び/又はパフォーマンス情報32を受信しても良い(132)。ステート/パフォーマンス情報32は、グラフィックス・デバイス2上でのグラフィックス命令30の実行に関連する。ステート/パフォーマンス情報32は、それがグラフィックス・イメージをレンダリングするときの、グラフィックス・デバイス2の1又は複数のステートを示すステート情報を含んでも良い。ステート情報は、グラフィックス命令30を実行するグラフィックス・デバイス2の1又は複数のプロセッサ(例えば、制御プロセッサ10、グラフィックス・プロセッサ12、頂点プロセッサ14及び/又は表示プロセッサ16)からのステート情報を含んでも良い。ステート/パフォーマンス情報32は、場合によっては、グラフィックス・データ(例えば、プリミティブ・データ及び/又はラスタライズされたデータ)を含んでも良い。
アプリケーション・コンピュータ・デバイス20は、グラフィックス命令30及びステート/パフォーマンス情報32に従って、1又は複数のグラフィックス・イメージの表現を表示しても良い(134)。そのような方法において、アプリケーション・コンピュータ・デバイス20は、グラフィックス・デバイス2をシミュレーションするシミュレーションされた環境内でこれらのグラフィックス・イメージの表現を表示することができる。シミュレーションされた環境は、アプリケーション・コンピュータ・デバイス20のプロセッサ22の上で、シミュレーション・アプリケーション28の実行を通して提供されても良い。
アプリケーション・コンピュータ・デバイス20は、グラフィックス命令30及びステート/パフォーマンス情報32の少なくとも一部を表示デバイス24上に表示する(136)。場合によっては、グラフィックス命令30がバイナリの命令を含むとき、アプリケーション・コンピュータ・デバイス20は、グラフィックス命令30のビジュアル表現を表示する。前に説明されたように、アプリケーション・コンピュータ・デバイス20は、グラフィックス命令30を命令30の表現にマッピングする命令マッピング情報31を使用しても良い。その表現は、表示デバイス24上にビジュアルに表示され得る関連するグラフィックスアプリケーション・プログラミング・インタフェース(API)命令を含んでも良い。ステート/パフォーマンス情報32のビジュアル表現はまた、表示デバイス24上に表示されても良い。グラフィックス命令30を受信すること(130)、ステート情報32を受信すること(132)、グラフィックス・イメージの表現を表示すること(134)、及び、命令及びステート情報を表示すること(136)は、更なるフレームがあるならば(138)、1又は複数のグラフィックス・イメージの複数のイメージ・フレームについて、繰り返されても良い。この方法において、アプリケーション・コンピュータ・デバイス20は、静止及び動画グラフィックス・イメージ(3Dイメージを含む)を表示デバイス24上に表示することができる。
一つの態様において、プロセッサ22は、ナビゲーション・コントローラを表示デバイス24上に表示するために、シミュレーション・アプリケーション28を実行しても良い。ユーザ(例えばアプリケーション開発者)は、表示デバイス24上に表示されるグラフィカル・ユーザ・インタフェース内のナビゲーション・コントローラとビジュアルにインタラクトしても良い。グラフィカル・ユーザ・インタフェースは、1又は複数の表示されたグラフィックス・イメージの斜視図を変更するために、ナビゲーション・コントローラとインタラクトするために、アプリケーション開発者からのユーザ入力を受信しても良い。グラフィックス・イメージの修正された斜視図は、それから、ナビゲーション・コントローラに対するユーザ入力に基づいて、グラフィカル・ユーザ・インタフェースにおいて表示されても良い。
一般に、1又は複数のグラフィックス・イメージが、ビジュアルに提示され、表示デバイス24上に表示された後、シミュレーション・アプリケーション28(プロセッサ22の上の実行の間)は、グラフィックス・イメージを修正するために、ユーザ入力を受信しても良い。例えば、下で更に詳細に説明されるように、アプリケーション・コンピュータ・デバイス20は、外部グラフィックス・デバイス2(ここで、グラフィックス・デバイス2は、アプリケーション・コンピュータ・デバイス20に関して外部にある)によるグラフィックス命令30の実行に対する1又は複数の要求された修正34を指定するユーザ入力を受信しても良い。このユーザ入力の受信に応じて、アプリケーション・コンピュータ・デバイス20は、処理のために、要求された修正34をグラフィックス・デバイス2に送信する。グラフィックス・デバイス2は、それから、前に説明されたように、要求された修正34を処理しても良い。要求された修正34は、グラフィックス・デバイス2上でのグラフィックス命令30のうちの1又は複数の実行を無効にするリクエスト、グラフィックス・デバイス2上でグラフィックス命令30のうちの1又は複数を修正するリクエスト、及び、グラフィックス・デバイス2上でのステート/パフォーマンス情報を修正するリクエストのうちの少なくとも一つを含んでも良い。
アプリケーション・コンピュータ・デバイス20は、続いて、グラフィックス・デバイス2から複数の更新されたグラフィックス命令及び/又は情報35を受信しても良い。更新されたグラフィックス命令/情報35は、要求された修正34に関連する場合がある。更新された命令/情報35は、グラフィックス・デバイス2によるグラフィックス命令30の実行に対する要求された修正34に関連する更新されたステート情報を含んでも良い。更新された命令/情報35の受信に応じて、アプリケーション・コンピュータ・デバイス20は、更新された命令/情報35に従って、1又は複数のグラフィックス・イメージの更新されたバージョンを表示しても良い。
図8は、一つの態様に従って、プロセッサ22でのシミュレーション・アプリケーション28(図1)又はシミュレーション・アプリケーション29(図2)の実行を通してアプリケーション・コンピュータ・デバイス20により実行され得る方法のフローチャートである。この態様において、アプリケーション・コンピュータ・デバイス20は、グラフィックス・デバイス2から、グラフィックス命令30を受信しても良い(150)。アプリケーション・コンピュータ・デバイス20はまた、グラフィックス・デバイス2から、ステート及び/又はパフォーマンス情報32を受信しても良い(152)。グラフィックス命令30及びステート/パフォーマンス情報32の受信に応じて、アプリケーション・コンピュータ・デバイス20は、グラフィックス命令30及びステート/パフォーマンス情報32に従って、1又は複数のグラフィックス・イメージの表現を表示しても良い(154)。
これらのイメージの作成の間又はそれに応じて、アプリケーション・コンピュータ・デバイス20は、1又は複数のパフォーマンス・イッシューを識別するための入力を受信しても良い(156)。例えば、場合によっては、アプリケーション・コンピュータ・デバイス20は、グラフィックス命令30の実行に及び/又はグラフィックス・デバイス2により提供されるステート/パフォーマンス情報32の解析に基づいて、グラフィックス命令30の実行における潜在的なボトルネックを識別するために、シミュレーション・アプリケーション28からの入力を自動的に受信しても良い。これらのボトルネックは、グラフィックス・デバイス2の処理パイプライン(例えば、制御プロセッサ10、グラフィックス・プロセッサ12、頂点プロセッサ14及び/又は表示プロセッサ16)内のグラフィックス命令30の実行に関連する場合がある。場合によっては、アプリケーション・コンピュータ・デバイス20は、グラフィックス・イメージを作成するための、アプリケーション・コンピュータ・デバイス20上でのグラフィックス命令30の実行の間の1又は複数のパフォーマンス・イッシューを指定又はさもなければ識別する入力を、ユーザ(例えばアプリケーション開発者)から受信しても良い。
一つの態様において、ステート/パフォーマンス情報32は、グラフィックス・デバイス2上でのグラフィックス命令30の実行に関連するパフォーマンス情報を含む。アプリケーション・コンピュータ・デバイス20は、そのグラフィックス命令30の実行の間、グラフィックス・デバイス2上の1又は複数のパフォーマンス・イッシューを識別するために、パフォーマンス情報を解析しても良い。場合によっては、パフォーマンス情報は、グラフィックス・デバイス2上でグラフィックス命令30を実行し得る1又は複数のプロセッサ10,12,14又は16から収集されるパフォーマンス・メトリックを含んでも良い。アプリケーション・コンピュータ・デバイス20が、グラフィックス・デバイス2から受信されるパフォーマンス情報を解析するとき、それは、これらのプロセッサ10,12,14又は16のうちの1又は複数における減少したパフォーマンスを識別しても良い。
そのようなイッシューの識別に応じて、アプリケーション・コンピュータ・デバイス20は、グラフィックス命令30の実行に対する1又は複数の要求された修正34を、グラフィックス・デバイス2に送信しても良い(158)。場合によっては、アプリケーション・コンピュータ・デバイス20は、要求された修正34のうちの1又は複数を指定するユーザ入力を受信しても良い。要求された修正34は、グラフィックス・デバイス2上でのグラフィックス命令30のうちの1又は複数の実行を無効にするリクエスト、グラフィックス・デバイス2上でグラフィックス命令30のうちの1又は複数を修正するリクエスト、及び、グラフィックス・デバイス2上でのステート/パフォーマンス情報を修正するリクエストのうちの少なくとも一つを含んでも良い。
グラフィックス・デバイス2が、要求された修正34(例えば、前に説明された)を処理した後、アプリケーション・コンピュータ・デバイス20は、グラフィックス・デバイス2から、複数の更新された命令及び/又は情報35を受信しても良い(160)。更新された命令/情報35は、更新されたグラフィックス命令及び/又は更新されたパフォーマンス情報を含んでも良い。任意の更新されたグラフィックス命令及び/又はパフォーマンス情報は、グラフィックス・デバイス2によるグラフィックス命令30の実行に対して要求された修正34に関連する場合がある。アプリケーション・コンピュータ・デバイス20は、それから、更新されたグラフィックス命令及び更新されたパフォーマンス情報に従って、1又は複数のグラフィックス・イメージのアップデートされた表現を表示デバイス24上に表示しても良い。
アプリケーション・コンピュータ・デバイス20は、それから、前に識別されたパフォーマンス・イッシューのうちの1又は複数が解決されたかどうか判定するために、更新されたパフォーマンス情報を解析しても良い(162)。場合によっては、アプリケーション・コンピュータ・デバイス20は、特定のパフォーマンス・イッシューが解決又はさもなければ軽減されたかどうか判定するために、更新された命令/情報35を、自動的に解析又は処理することができても良い。場合によっては、アプリケーション開発者は、更新された命令/情報35の開発者の解析及び/又は表示デバイス24上に表示されたグラフィックス・イメージのアップデートされた表現のレビューに応じて、特定のパフォーマンス・イッシューが解決又はさもなければ軽減されたことを、ユーザ入力を通して、アプリケーション・コンピュータ・デバイス20に知らせることができても良い。
アプリケーション・コンピュータ・デバイス20は、既存のパフォーマンス・イッシューを識別すること、要求された修正34をグラフィックス・デバイス2に送信すること、及び、更新された命令及び/又は情報35を受信することからなるアクトを、識別されたパフォーマンス・イッシューが解決又はさもなければ軽減されるまで、反復的な方法で、繰り返しても良い。アプリケーション・コンピュータ・デバイス20はまた、表示デバイス24上にビジュアルに提示される1又は複数のグラフィックス・イメージの複数の画像フレームについて図8に示されるアクトを繰り返す(164)。この方法において、アプリケーション・コンピュータ・デバイス20は、静止及び動画グラフィックス・イメージ(3Dイメージを含む)を表示デバイス24上に表示することができる。
図9は、一つの態様に従って、グラフィック・ウインドウ203中に情報を表示するための表示デバイス201に接続されるグラフィックス・デバイス200の例を示す概念図である。例えば、グラフィックス・デバイス200がグラフィックス・デバイス2(図1)の一部であるならば、表示デバイス201は、アプリケーション・コンピュータ・デバイス20のグラフィックス・デバイス24の一部であっても良い。グラフィックス・デバイス200は、3Dグラフィックス・イメージ202を表示することができる。表示デバイス201は、グラフィックス・デバイス200から送信されるグラフィックス命令及びステート/パフォーマンス情報に基づいて、ウインドウ203中に、3Dグラフィックス・イメージ210(それはグラフィックス・イメージ202の表現である)を表示することができる。
開発者がグラフィックス・イメージ210又はグラフィックス・イメージ210を含む全体のシーンを修正するために、これらの命令及びステート/パフォーマンス情報を変更し得るように、表示デバイス201はまた、これらの命令及びステート/パフォーマンス情報のビジュアル表現を表示することができる。表示デバイス201は、グラフィックス・デバイス200に接続された任意のタイプのコンピュータ・デバイス(図示せず)中に含まれても良く、また、グラフィックス・デバイス200からそのような命令及びステート/パフォーマンス情報を受信することができる。簡単にするために、表示デバイス201を含むコンピュータ・デバイスは、図10に示される概念図から省略された。
前に説明されたように、グラフィックス・デバイス200は、3Dグラフィックス・イメージ202(それは図9の例における立方体である)の表示ができる。グラフィックス・デバイス200はまた、キーパッド204を有する。ユーザは、グラフィックス・デバイス200を操作するために、キーパッド204とインタラクトしても良い。キーパッド204は、幾つかのキー及び/又はボタンを含んでも良い。グラフィックス・デバイス200は、コネクタ206を介して、グラフィックス・デバイス201を含むデバイス(例えば、アプリケーション・コンピュータ・デバイス20)に、グラフィックス命令及びステート/パフォーマンス情報を送信することができる。一つの態様において、コネクタ206は、ユニバーサルシステムバス(USB)コネクタを含む。他の態様において、異なる形のコネクタ(例えば電気電子技術者協会(Institute of Electrical and Electronic Engineers)(IEEE)1394コネクタ))が、使用されても良い。幾つかの態様において、無線通信がコネクタ206を置き換えても良い。
図9の例において示されるように、表示デバイス201は、グラフィカル・ユーザ・インタフェース内に様々なタイプの情報を表示しても良い。この例では、表示デバイス201は、グラフィカル・ユーザ・インタフェース内にグラフィカル・ウインドウ203を表示する。ウインドウ203は、表示エリア211、グラフィックス命令エリア208及びステート/パフォーマンス情報エリア214を含む。表示エリア211は、3Dグラフィックス・イメージ210を含む。そして、それは、前に説明されたように、3Dグラフィックス・イメージ202の表現である。この例において、3Dグラフィックス・イメージは、立方体を含む。一つの態様に従って、表示デバイス201に表示される情報は、デバッギング及びテストの目的のために、グラフィックス・デバイス202上に表示される情報の表現又はシミュレーションを含む。
図9の例において、グラフィックス命令エリア208は、グラフィックス・デバイス200から受信された1又は複数のグラフィックス命令のビジュアル表現を含む。前に説明されたように、そのような命令のビジュアル表現は、そのような命令の表現を含んでも良い。例えば、グラフィックス・デバイス200がバイナリのグラフィックス命令を送信するならば、表示デバイス201は、他の形(例えば、よりハイレベルなアプリケーション・プログラミング・インタフェース(API)命令(例えば、OpenGL命令))で、そのようなバイナリ命令の表現を表示しても良い。マッピング情報(例えば、図1に示されるマッピング情報31)は、受信されたバイナリ命令を、グラフィックス命令エリア208NAIに表示され得る他のフォーマットにマッピングするために、使用されても良い。
ステート/パフォーマンス情報エリア214は、グラフィックス・デバイス200から受信された選択されたステート及び/又はパフォーマンス情報のビジュアル表現を含む。受信されたグラフィックス命令及びステート/パフォーマンス情報は、表示エリア内に3Dグラフィックス・イメージ210を表示するために使用されても良い。一つの態様において、グラフィックス・デバイス200は、様々なステート及び/又はパフォーマンス・データを提供するために、ステート/パフォーマンス・データ・モジュール(例えば、図5に示されるステート/パフォーマンス・データ・モジュール116)を実装するグラフィックス・ドライバーを利用しても良い。受信されたステート/パフォーマンス情報は、グラフィックス・データ(例えば、プリミティブ・データ及び/又はラスタライズされたデータ)を含んでも良い。
ウインドウ203又は、1又は複数のセレクター212A〜212Nを含む。ユーザは、これらのセレクター212A〜212Nの任意のものを選択しても良い。各々のセレクター212A〜212Nは、下で更に詳細に説明されるように、異なる機能(例えば統計及びナビゲーション機能)に関連し得る。ウインドウ203は、セレクター216A〜216N及び218A〜218Nを更に含む。そして、それぞれは、ユーザにより選択されても良い。各々のセレクター216A〜216N及び218A〜218Nはまた、図10を参照して下で更に詳細に説明されるように、異なる機能(例えば、メトリック機能、、オーバーライド機能及び/又はテクスチャー機能)に関連し得る。
ユーザ(例えばアプリケーション開発者)は、ウインドウ203内に表示される情報を変更しても良い。例えば、ユーザは、グラフィックス命令エリア208内に表示される命令のうちの1又は複数、又は、ステート/パフォーマンス情報エリア214内のステート/パフォーマンス情報の任意のものを修正しても良い。
ウインドウ203内でユーザにより開始される任意の変更は、それから、要求された修正としてグラフィックス・デバイス200へ送信されても良い。グラフィックス・デバイス200は、それから、これらの修正を処理しても良く、また、それからグラフィックス命令エリア208及び/又はステート/パフォーマンス情報エリア214内に表示され得る更新された命令及び/又は情報を提供しても良い。更新された命令及び/又は情報はまた、表示エリア211内に3Dグラフィックス・イメージ210の修正版を表示するために使用されても良い。
一つの態様において、エリア214内に表示され得るステート及び/又はパフォーマンス情報は、グラフィックス・デバイス200上でのグラフィックス命令の実行の間、潜在的なボトルネックを識別するために、表示デバイス201(例えば、図1に示されるアプリケーション・コンピュータ・デバイス20)を含むコンピュータ・デバイスにより解析されても良い。最終的に、ユーザ(例えばアプリケーション開発者)は、グラフィックス・デバイス200上でのグラフィックス命令の実行を最適化するために、デバッギング・プロセスの間に、ウインドウ203中に提示される情報の閲覧を望む場合がある。前に説明されたように、ボトルネックは、グラフィックス・デバイス200中のグラフィックス処理パイプライン内のどこにでも、もたらされる可能性があり、アプリケーション開発者がパフォーマンス最適化のためにそのようなボトルネックを分離することは難しい場合がある。ステート及び/又はパフォーマンス情報の解析を通して、潜在的なボトルネック及び考えられる回避方法は、ウインドウ203中に、例えば1又は複数のサブウインドウ又はポップアップウインドウ内に、又は、ウインドウ203のエリア214内に、表示されることができる。
一つの態様において、ウインドウ203は、グラフィックス・デバイス200から受信されるグラフィックス命令のコール・ストリームにおいて発生されるボトルネックに関するレポートを表示しても良く、さらに、考えられる回避方法を表示しても良い。場合によっては、これらの考えられる回避方法は、“仮定の(what-if)”シナリオとしてユーザへ提示されても良い。例えば、コール・ストリームにおける最適化されていない三角形のリストのレンダリングが、第1の可能性があるシナリオとして提示されても良く、一方、三角形−細片の最適化フレームワーク(triangle-strip optimization framework)を通してリストアップする前処理が、第2の可能性があるシナリオとして提示されても良い。ユーザは、これらの可能性がある回避方法シナリオの任意のものを要求された修正として選択しても良く、そして、要求された修正は、それから、グラフィックス・デバイス200へ送信される(そこでパフォーマンスが測定されても良い)。グラフィックス・デバイス200は、それから、更新された命令/情報を送信する。そして、それは、グラフィックス命令エリア208及び/又はステート/パフォーマンス情報エリア214内に提示されても良い。ユーザは、それから、その結果を閲覧することができ、そして、最適の解決を識別するために、様々な異なる潜在的な回避方法に関する結果を比較することができる。ユーザは、それらのアプリケーションからボトルネックを取り除くために、取ることができる一連のステップを速く識別するために、このプロセスを使用することができる。
ユーザは、実験又は試行/エラー・デバッギングの目的のために、ウインドウ203内での調整を行うことを繰り返し継続しても良い。ユーザは、表示エリア211内に表示されるイメージ又はシーンの変化を識別するために、グラフィックス命令及びステート/パフォーマンス情報の様々な異なる形又は組み合せで実験しても良い。ユーザは、グラフィックス・デバイス200上でソース・コードの再コンパイル及びコンパイルされたコードの再実行の必要なしに、グラフィックス命令(それはコール・ストリームの一部である場合がある)及びグラフィックス・デバイス200により提供されるステートをインタラクティブにビューイング及び修正するために、ウインドウ203の内容により提供されるシミュレーション環境を使用することができる。
場合によっては、ユーザは、グラフィックス・イメージ210の斜視図を修正するために、グラフィカル・ナビゲーション・コントローラ(例えば、グラフィカル・カメラ)を操作するために、ボタン212A〜212Nのうちの1又は複数を操作しても良い。そのような操作は、それから元のグラフィックス・デバイス200へ送信される要求された修正として捕捉されても良い。グラフィックス・デバイス200により提供される更新された命令/情報は、それから、グラフィックス・イメージ210の斜視図を修正するために使用される。
場合によっては、様々なテクスチャー及び/又はステート情報は、修正可能な実体としてウインドウ203のエリア214中に提供されても良い。さらに、グラフィックス命令エリア208内の1又は複数の対応する命令が識別されるように、ユーザは、例えば、表示エリア211内のグラフィックス・イメージ210のピクセルの選択さえ行っても良い。この方法において、ユーザは、そのピクセル又はグラフィックス・イメージ210の他の部分をレンダリングするために使用されたレンダリング命令又はコールに後退して効果的にドリル(drill)することができる。正確にそれがグラフィックス・デバイス200上で提示されているときに、グラフィックス・デバイス201がウインドウ203中でイメージ210を作成する可能性があるので、ユーザは、それらのアプリケーション(それはグラフィックス命令エリア208中に表示される様々なグラフィックス命令に基づいても良い)におけるイッシューを速く分離させ、新たな影響をプロトタイピングするために、ステート/パフォーマンス・エリア214内の任意のステートを修正することができる。
図10は、一つの態様に従って、グラフィカル・ウインドウ220中に情報を表示する表示デバイス201に接続されるグラフィックス・デバイス200の他の例を示す概念図である。この態様において、ウインドウ220は、メトリック情報だけでなく、様々な命令情報を含む。
例えば、グラフィックス命令エリア208内に、様々なグラフィックス命令242が示される。グラフィックス命令242は、グラフィックス・デバイス200により提供されるグラフィックス命令のサブセットである場合がある。例えば、グラフィックス・デバイス200がグラフィックス・デバイス2の一部であるならば、グラフィックス命令242はグラフィックス命令30のサブセットであっても良い。場合によっては、マッピング情報(例えば、図1に示されるマッピング情報31又は図2に示されるマッピング情報33)は、グラフィックス・デバイス200から受信される到来命令(incoming instructions)を、グラフィックス命令エリア208内に表示される命令242として実体化される、これらの命令のビジュアル表現にマッピングするために使用されても良い。例えば、受信された命令がバイナリ形式であるならば、命令242はバイナリ形式の命令を生成するために使用されたAPI命令を含んでも良い。
図10の例に示されるように、グラフィックス命令242は、ハイレベル命令及びローレベル命令の両方を含む。ユーザ(例えばアプリケーション開発者)は、命令242のフルセットを閲覧するために、スクロールバー244を使用しても良い。特定のハイレベル命令は、1又は複数のローレベル命令(例えば、より低いレベルのAPI命令)を含んでも良い。アプリケーション開発者は、場合によっては、関連するハイレベル命令の一部である又は関連するハイレベル命令により実行される、任意のローレベル命令を閲覧するために、特定のハイレベル命令の上で(例えば、クリックすることなどによって)選択しても良い。前に説明されたように、受信されたグラフィックス命令(例えば命令242)は、グラフィックス・イメージ202の表現を生成するために使用される。そして、それは、ウインドウ220の表示エリア211中に示されるグラフィックス・イメージ210を含む。
様々な選択ボタンは、図10中のステート/パフォーマンス情報エリア214の下に示される。これらの選択ボタンは、テクスチャー・ボタン236、オーバーライド・ボタン238及びメトリック・ボタン240を含む。図10の例において、アプリケーション開発者は、メトリック・ボタン240を選択した。このボタンの選択に応じて、様々なメトリック・オプションが示されても良い。例えば、1又は複数のメトリック・ボタン234A〜234Nが、ステート/パフォーマンス・エリア214より上に示されても良い。各々のメトリック・ボタン234A〜234Nは、特定のメトリックに関連しても良い。場合によっては、これらのメトリックのうちの1又は複数は予め定義又は予め構成されたメトリック・タイプであっても良く、また、場合によっては、アプリケーション開発者が、メトリックのうちの1又は複数を選択又はカスタマイズしても良い。例示的なメトリックは、例えば、以下のうちの任意の1又は複数を含んでも良い:フレーム毎秒、%ビジー(1又は複数のプロセッサについて)、バス・ビジー、メモリ・ビジー、頂点ビジー、頂点毎秒、三角形毎秒、ピクセル・クロック毎秒、フラグメント毎秒、その他。アプリケーション開発者は、選択されたメトリックに関して更なる詳細を閲覧するために、メトリック・ボタン234A〜234Nのうちの任意のものを選択しても良い。
例えば、メトリック・ボタン234Aがフレーム毎秒の数に関連するならば、アプリケーション開発者は、グラフィックス・イメージ210について(パフォーマンスに関係する)フレーム毎秒の数に関する更なる詳細を閲覧するために、メトリック・ボタン234Aを選択しても良く、又は、グラフィックス・イメージ210の部分を選択しても良い。開発者は、場合によっては、メトリック・ボタン234Aを選択しても良く、または、メトリック・ボタン234Aをステート/パフォーマンス情報エリア214にドラッグしても良い。フレーム毎秒の数に関する詳細な情報は、ステート/パフォーマンス情報エリア214内に表示されても良い。開発者はまた、メトリック・ボタン234Aを表示エリア211にドラッグしても良く、又は、メトリック・ボタン234Aのアプリケーションのためのグラフィックス・イメージ210の部分を選択しても良い。例えば、開発者は、メトリック・ボタン234Aの選択の後にグラフィックス・イメージ210の部分を選択しても良く、そして、その選択された部分に対するフレーム毎秒の数に関する詳細な情報が、ステート/パフォーマンス情報エリア214内に表示されても良い。そのような方法において、開発者は、メトリック・ボタン234A〜234Nのうちの1又は複数の選択に基づいて、そして、グラフィックス・イメージ210(又はその部分)の可能性がある選択にさえ基づいて、任意の数の異なるメトリック・タイプのためのパフォーマンス・データを閲覧しても良い。
一つの態様において、ウインドウ220内に表示され得るメトリック・データは、グラフィックス・デバイス200のグラフィックス・ドライバー(例えば、図5に示されるグラフィックス・ドライバー18)により提供されても良い。このグラフィックス・ドライバーは、それからウインドウ220内にメトリック・データとして表示され得る様々なデータを提供するために、ハードウェア・カウンタ・モジュール(例えば、図5のハードウェア・カウンタ・モジュール114)及び/又はプロセッサ使用モジュール(例えば、図5のプロセッサ使用モジュール112)を実装しても良い。
開発者はまた、場合によっては、テクスチャー・ボタン236を選択しても良い。選択に応じて、グラフィックス・イメージ210に関係する様々な形のテクスチャー情報が、グラフィックス・デバイス201により表示されても良い。例えば、テクスチャー情報は、ウインドウ220内に(例えばステート/パフォーマンス情報エリア214内などに)表示されても良い。場合によっては、テクスチャー情報は、更なる(例えば、ポップアップ)ウインドウ(図示せず)内に表示されても良い。開発者は、表示されたテクスチャー情報を閲覧しても良いが、また、場合によっては、テクスチャー情報を修正しても良い。これらの場合、テクスチャー情報に対する任意の修正が、要求された修正として、グラフィックス・デバイス200へ伝播されても良い。グラフィックス・デバイス200からの更新された命令/情報の受信に応じて、グラフィックス・イメージ210に対する変更が、表示エリア211内に表示されても良い。図11は、テクスチャー・ボタン236の選択に応じて表示され得る特定のテクスチャー情報を含む。
開発者はまた、場合によっては、オーバーライド・ボタン238を選択しても良い。オーバーライド・ボタン238の選択の後、特定の情報(命令及び/又はステート)が、(例えば、ウインドウ220又は他のウインドウ内に)表示されても良い。そして、それは、開発者によって、修正又はオーバーライドされても良い。任意の修正又はオーバーライドは、グラフィックス・デバイス200に送信される1又は複数の要求された修正の中に含まれても良い。一つの態様において、グラフィックス・デバイス200は、任意の要求された修正を処理するために、グラフィックス・ドライバー(例えばグラフィックス・ドライバー18A(図5))を実装しても良い。例えば、グラフィックス・デバイス200は、1又は複数のオーバーライドを含むそのような要求された修正を処理するために、オーバーライド・モジュール120を使用しても良い。
場合によっては、開発者は、グラフィックス命令エリア208内に示されるグラフィックス命令242上の1又は複数をオーバーライドしても良い。これらの場合、開発者は、グラフィックス命令242のうちの1又は複数を修正又はオーバーライドするために、グラフィックス命令エリア208内に情報をタイプ又は入力しても良い。これらの修正は、それから、グラフィックス・デバイス200に送信されても良い。そして、それは、表示エリア211内のグラフィックス・イメージ210の表示を更新するために、更新された命令/情報を提供するであろう。開発者は、命令242により提供される1又は複数の機能をオーバーライドするために、例えば、グラフィックス命令242のパラメータ、順序付け、タイプなどを変更しても良い。一つの態様において、マッピング情報31(図1)又はマッピング情報33(図2)は、それから、グラフィックス命令242に対する変更を、グラフィックス・デバイス200に提供され得る他のフォーマット(例えば、バイナリ命令)の対応する命令に、マッピング又は変換するために使用されても良い。
場合によっては、開発者はまた、グラフィックス・デバイス200により実装される処理パイプラインに関連する1又は複数の機能をオーバーライドするオーバーライド・ボタン238を選択しても良い。図12は、オーバーライド・ボタン238の選択に応じて、開発者に対して表示され得るオーバーライド・スクリーンの例を表す。
ウインドウ220は、選択ボタン230及び232を更に含む。選択ボタン230は、パーティション・ボタンであり、選択ボタン232は、ナビゲーション・ボタンである。開発者は、グラフィックス・イメージ210の表示に関連する統計情報を閲覧するために、統計ボタン230を選択しても良い。この統計情報は、1又は複数のグラフ、テーブル又は他の形の統計情報を含んでも良い。図11は、統計ボタン230のユーザ選択に応じて表示され得る特定の統計及びテクスチャー情報の一例を提供する。開発者は、様々なパフォーマンス又はグラフィックス・イメージ210の表示に関連する他の関係するイッシューのより良い理解を得るために、統計情報を閲覧しても良い。
開発者は、表示エリア211内でナビゲートするために、そして、表示エリア211内のグラフィックス・イメージ210の斜視図の変更さえ可能にする、ナビゲーション・ボタン232を選択しても良い。例えば、ナビゲーション・ボタン232の選択に応じて、3Dグラフィカル・カメラ又はナビゲーション・コントローラが、表示されても良い。開発者は、表示エリア211内の任意のエリアに対してナビゲートするために、コントローラとインタラクトしても良い。開発者はまた、グラフィックス・イメージ210の斜視図を(例えばグラフィックス・イメージ210の回転又はズームイン/ズームアウトなどによって)変更するために、コントローラを使用しても良い。
一つの態様において、ナビゲーション・ボタン232の選択を通した任意の開発者起動(developer-initiated)の変更及びグラフィカル・ナビゲーション・コントローラに対するインタラクションは、要求された修正(例えば、図1に示される要求された修正84の一部)として、グラフィックス・デバイス200へ伝播されても良い。それからグラフィックス・デバイス200により提供される更新された命令/情報は、それから、グラフィックス・イメージ210の表示(例えば、斜視図)を更新するために使用されても良い。さらに、更新された命令は、グラフィックス命令エリア208内に表示されても良い。更新されたステート/パフォーマンス情報はまた、ステート/パフォーマンス情報エリア214内に表示されても良い。
その結果、開発者は、グラフィックス・イメージ210をレンダリング又は表示するための代わりの展望、方針、ビュー、その他が、グラフィックス・デバイス200のパフォーマンス及びステートにどのように影響を及ぼし得るかについて効果的且つ効率的に判定し得る。これは、表示デバイス201上に表示されたシミュレーション環境においてグラフィックス・イメージ210及び効果的にグラフィックス・デバイス200上に表示されるグラフィックス・イメージ202を作成及びレンダリングするために使用されるグラフィックス命令242を最適化する際に、開発者にとって非常に有用であり得る。一つの態様において、ウインドウ220内の開発者起動の選択及び制御に基づくグラフィックス・イメージ210の位置、奥行き、方向、その他の任意の変更はまた、テスティング・プロセスの間にグラフィックス・デバイス200に表示され得るグラフィックス・イメージ202のための変更とみなされても良い。
グラフィカル・ユーザ・インタフェース内のグラフィカル・ウインドウ220とのインタラクションを通して、アプリケーション開発者は、グラフィックス命令242の実行の間、パフォーマンス・イッシュー及び/又はボトルネックを識別しようとすることができる。そして、それは、グラフィックス・イメージ202を作成するために、グラフィックス・デバイス200により実行されるグラフィックス命令のビジュアル表現である。グラフィックス・イメージ202(すなわち、グラフィックス・イメージ210)の表現は、グラフィックス・デバイス200により受信されるグラフィックス命令242及びステート/パフォーマンス・データに基づいて、表示エリア211内に表示される。グラフィックス命令242、グラフィックス・イメージ210及びステート/パフォーマンス情報と、これらのうちの1又は複数に対するユーザ起動(user-initiated)の修正に基づく影響とを閲覧することによって、アプリケーション開発者は、グラフィックス・デバイス200上での命令の実行を最適化するための、そして、命令実行の間の任意のパフォーマンス・イッシュー(例えば、ボトルネック)を除去又は軽減するためのプロセスを、試行錯誤又はデバッギングすることに、インタラクティブに動的に従事することができる。
図11は、一つの態様に従って、図10の表示デバイス201により表示され得る統計及び/又はテクスチャー情報250の例を示す図である。例えば、統計/テクスチャー情報250の1又は複数の部分は、テクスチャー・ボタン236のユーザ選択上に表示されても良い。統計/テクスチャー情報250の1又は複数の部分はまた、統計ボタン230のユーザ選択上に表示されても良い。
図11に示される統計/テクスチャー情報250は、各々が1又は複数の値を有する幾つかの例示的な統計及び/又はテクスチャー・フィールドを含む。例えば、情報250は、グラフィックス・イメージ210をレンダリングして表示するために必要で有り得る幾つかのレンダー・コール(グラフィックス命令242に関連する)に関する値を含む。ウインドウ220に示されるデータは、グラフィックス・デバイス200のシミュレーションに基づくので、レンダー・コールの数は、グラフィックス・イメージ202をレンダリングして、グラフィックス・デバイス200上に表示するために必要で有り得るコールの数を有効に示しても良い。レンダー・コールは、グラフィックス命令242(例えば1又は複数のハイレベル及び/又はローレベルの命令)のうちの1又は複数に関連する場合がある。
統計/テクスチャー情報250はまた、レンダー・コールあたりの平均的テクスチャー変更及びレンダー・コールあたりの平均的ステート変更に関する値を含む。これらの値は、全体的なパフォーマンスに影響を及ぼし得るテクスチャー及び/又はステート変更の数に関する情報を開発者に提供しても良い。
グラフィックス・イメージ210中の画像データの特定のフレームについては、統計/テクスチャー情報250は、画像データのフレームを作成するためにレンダリングされたプリミティブのための頂点の数及び三角形の数に関する値を含んでも良い。さらに、レンダー・コールあたりの平均的三角形及びレンダー・コールあたりの平均的頂点に関する値も表示される。これらの値は、グラフィックス命令により実装されるレンダー・コールの効率を評価する際に、アプリケーション開発者のために役に立ち得る。
統計/テクスチャー情報250はまた、テクスチャー・サイズ情報を含む。図11の下側の近くに示されるように、情報2501は、グラフィックス・イメージ210のための各々のテクスチャー・サイズの数を示す、1又は複数のテクスチャー・サイズ(例えば、64x64,64x128,128x128,256x256)に関する値を提供しても良い。
さらに、統計/テクスチャー情報250はまた、パフォーマンス及び効率のレンダリングに関係する様々な値を含む。例えば、情報250は、グラフィックス・イメージ210のための最適化されたテクスチャーのパーセントに関する値を含む。場合によっては、表示デバイス201(例えば、アプリケーション・コンピュータ・デバイス20)を含むコンピュータ・デバイスは、グラフィックス・デバイス200から受信されるグラフィックス命令及び/又はステート/パフォーマンス情報に基づいて、この値を計算しても良い。アプリケーション開発者は、一般的に、このパーセント値ができるだけ高いことを望んでも良い。それが要求されるより低いならば、開発者は、グラフィックス命令、ステート情報、パフォーマンス情報、又は、グラフィックス・デバイス200に対して1又は複数の要求された修正を提供するためのウインドウ220内の他のパラメータを、操作又は変更しても良い。グラフィックス・デバイス200からの更新された命令/情報の受信に応じて、更新された値は、最適化されたテクスチャーのパーセンテージについて表示されても良い。開発者は、ウインドウ220において提供されるシミュレーション環境内でテクスチャーを最適化するために、このプロセスを継続しても良い(例えば、デバッギング又は試行錯誤セッションの間)。コード/命令の再コンパイルの必要なしに、開発者は、効果的且つ効率的な方法で、そうすることができても良い。
統計/テクスチャー情報250は、インデックス付け及び空にされた頂点のパーセンテージに関する値を更に含む。これらの値は、グラフィックス・イメージ210のレンダリング及び表示のために最適化された三角形のパーセンテージを示しても良い。アプリケーション開発者は、一般的に、インデックス付け及び空にされた頂点のパーセント値ができるだけ高いことを望んでも良い。それらが要求されるより低いならば、開発者は、グラフィックス命令、ステート情報、パフォーマンス情報、又は、グラフィックス・デバイス200に対して1又は複数の要求された修正を提供するためのウインドウ220内の他のパラメータを、操作又は変更しても良い。グラフィックス・デバイス200からの更新された命令/情報の受信に応じて、更新された値は、これらのパーセンテージ値について表示されても良い。開発者は、コード/命令の再コンパイル又はグラフィックス・デバイス200上での時間のかかる又は退屈なデバッギング・オペレーションへの従事の必要なく、も持最適化された数の三角形を得るために、このプロセスを継続しても良い。
図12は、本開示の一つの態様に従って、図10に示されるグラフィックス・デバイス201上に表示され得るオーバーライド・スクリーン260を示すスクリーン・ダイアグラムである。アプリケーション開発者は、スクリーン260を閲覧し、そして、グラフィックス・デバイス200により提供される1又は複数の機能をオーバーライドするために、スクリーン260内に表示される情報の1又は複数の選択をしても良く、それによって、グラフィックス・デバイス200上で命令の実行のフローを変える。
場合によっては、オーバーライド・スクリーン260は、オーバーライド・ボタン238のユーザ選択上に表示されても良い。オーバーライド・スクリーン260は、スクリーン220の一部として表示されても良く、または、独立したウインドウ(例えば、ポップアップ・ウインドウ)として表示されても良い。オーバーライド・スクリーン260は、グラフィックス・デバイス200により実装され得るグラフィックス処理パイプラインのビジュアル表現を示す。一つの態様において、グラフィックス・デバイス200は、図1に示されるグラフィックス・デバイス2を含んでも良い。その場合には、それは、制御プロセッサ、頂点プロセッサ、グラフィックス・プロセッサ及び表示プロセッサを含んでも良い。その結果、オーバーライド・スクリーン260中に示されるグラフィックス処理パイプラインのビジュアル表現は、制御プロセッサ・アイコン262、頂点プロセッサ・アイコン264、グラフィックス・プロセッサ・アイコン266及び表示プロセッサ・アイコン268を含んでも良い。
各々のアイコン262,264,266及び268は、グラフィックス・デバイス200内の対応するプロセッサに関連する。これらのアイコンは、グラフィックの、テキストの又は他の形のアイコンを含んでも良い。アプリケーション開発者は、例えばオーバーライド・スクリーン260内のアイコンをクリックすることによって、アイコン262,264,266又は268のうちの1又は複数を選択しても良い。アイコン(例えばグラフィックス・プロセッサ・アイコン266)の選択に応じて、オーバーライド・スクリーン260は、アイコン266に関連する対応するメニュー271(例えばドロップダウン・メニュー)を表示する。
図12の例において、メニュー271は、4つの選択可能なオプションを含む:(アルファ/透明度オペレーションを無効にする)オプション270、(ブレンド・オペレーションを無効にする)オプション272、(Zリジェクト・オペレーションを無効にする)オプション274及び(デプス・テスト・オペレーションを無効にする)オプション276。オプション270,272,274及び276に関連するオペレーションの各々は、グラフィックス・デバイス200内のグラフィックス・プロセッサにより実行され得るるオペレーションに対応する。
図12は、アルファ(透明度)オペレーションを無効にするオプション270について、ユーザ選択がなされたことを示す。オプション270のユーザ選択に応じて、要求された修正は、アルファ・オペレーションを無効にするために、グラフィックス・デバイス200に送信されても良い。グラフィックス・デバイス200が図5に示されるグラフィックス・ドライバー18Aを実装するならば、グラフィックス・デバイス200は、要求された修正を処理し又はオーバーライドするために、オーバーライド・モジュール120を使用しても良い。オーバーライド・モジュール120は、それから、アルファ・オペレーションを無効にするために、対応するグラフィックス・プロセッサ(例えば、図1に示されるグラフィックス・プロセッサ12)にオーバーライド・リクエストを送信する。
同様に、アプリケーション・プログラマーは、グラフィックス・プロセッサ上のブレンド・オペレーションを無効にするために、オプション272を選択しても良い。開発者は、Zリジェクト・オペレーションを無効にするために、オプション274を選択しても良い。開発者は、グラフィックス・プロセッサ内のデプス・テストに関係するオペレーションを無効にするために、オプション276を選択しても良い。
図12の例において、開発者は、例えば以前有効にされた可能性のある1又は複数のオペレーションを無効にすることによって、グラフィックス・デバイス200のグラフィックス・プロセッサに関連する1又は複数の機能をオーバーライドしても良い。場合によっては、開発者は、以前無効にされた任意のオペレーション(例えば、アルファ、ブレンド、Zリジェクト及び/又はデプス・テスト・オペレーション)を再度有効にするために、メニュー271と同様の他のメニューを使用しても良い。
このように、開発者は、グラフィックス・プロセッサのための様々な機能及びオペレーションを、連続的且つ反復的に、オーバーライド又は変更し、そして、そのような変更がどのようにパフォーマンスに影響を及ぼすかについて判定しても良い。例えば、開発者は、メニュー・オプション270の選択によってアルファ・オペレーションを無効にし、そして、任意の前のパフォーマンス・イッシュー(例えば、グラフィックス・デバイス200のグラフィックス・プロセッサに関係するそれら)が解決又は軽減されたかどうかについて判定するために、そのようなオペレーションの無効化に応じて、グラフィックス・デバイス200により提供される更新されたステート/パフォーマンス情報を閲覧しても良い。開発者はまた、アルファ・オペレーションの無効化に基づくパフォーマンスの変化又は可能性がある改善を評価するために、統計情報(例えば図11に示される例示的な情報のタイプ)をレビューしても良い。さらに、グラフィックス・イメージ210の更新されたバージョン及び更新された命令242は、アルファ・オペレーションの無効化に応じて、ウインドウ220(図10)中に表示されても良い。
もちろん、他のシナリオにおいて、アプリケーション開発者は、グラフィックス・プロセッサに関連する他の機能を無効化又は有効化しても良い。さらに、開発者は、グラフィックス・デバイス200における他のプロセッサ(例えば、制御プロセッサ、頂点プロセッサ及び/又は表示プロセッサ)に関連する機能を無効化又は有効化しても良い。例えば、開発者は、メニュー271と同様のメニューを閲覧するために、制御プロセッサ・アイコン262を選択しても良い。そして、それは、制御プロセッサ(例えば、図1に示される制御プロセッサ10)に関連する1又は複数の機能を無効化又は有効化するために1又は複数の選択可能なオプションを含んでも良い。これらの機能の任意の変更は、例えばオーバーライド・モジュール120によって、処理のためにグラフィックス・デバイス200に送信される1又は複数の要求された修正として、提供されても良い。それから、開発者が、制御プロセッサに関係するパフォーマンス・イッシュー又はボトルネックが解決又はさもなければ軽減されたかどうか判定し得るように、更新された命令及び/又は他の情報(例えば、ステート及び/又はパフォーマンス情報)が、ウインドウ220中に示される情報を更新するために、グラフィックス・デバイス200により提供されても良い。
図13は、本開示の図10に示されるグラフィックス・デバイス201上に表示され得るオーバーライド情報の一例を示すスクリーン・ダイアグラムである。この態様において、オーバーライド情報は、グラフィック・ウインドウ280内に示される。グラフィックス・イメージ210は、表示エリア211内に示される。前に説明されたように、ユーザは、表示エリア211内のグラフィックス・イメージ210の表示を修正するために、1又は複数のオーバーライドをリクエストしても良い。一つのシナリオにおいて、ユーザは、1又は複数のオーバーライド選択をするために、オーバーライド・ボタン238(図10)を選択しても良い。図13は、オーバーライド・ボタン238のユーザ選択に応じて、ウインドウ280内に表示され得るオーバーライド情報の例を示す。
図13は、3つの例示的なオーバーライドを示す:オーバーライドA、オーバーライドB、オーバーライドC。これらの3つの例示的なオーバーライドの各々は、任意のオーバーライド機能(例えば、無効化機能、有効化機能、又はその種の他のもの(図12に示されるそれらを含む))に対応しても良い。さらに、これらの3つの例示的なオーバーライドの各々は、1又は複数のプロセッサの機能性に関連する場合がある。かくして、ユーザは、1又は複数のプロセッサの動作を変えるために(例えばこれらのプロセッサの特定のオペレーションを有効化又は無効化するために)、オーバーライドのうちの1又は複数を選択しても良い。
各々のオーバーライド(オーバーライドA、オーバーライドB、オーバーライドC)は、ユーザによって、選択又はさもなければ構成され得る、対応するパラメータ又はオプションを有しても良い。例えば、オーバーライドAはオーバーライド・パラメータ282Aを有し、オーバーライドBはオーバーライド・パラメータ282Bを有し、オーバーライドCはオーバーライド・パラメータ282Cを有する。ユーザは、対応するパラメータを修正することによって、オーバーライドの各々をカスタマイズしても良い。例えば、オーバーライドAがブレンドを無効にするオーバーライドに対応するならば、ユーザは、ブレンドを無効にするためのオーバーライド機能性を修正又はカスタマイズするために、オーバーライド・パラメータ282Aを選択又は変更しても良い。オーバーライド・パラメータ282Aはまた、1又は複数のプロセッサの識別情報を含んでも良い。例えば、ユーザがグラフィックス・プロセッサ上のブレンディングを無効にすることを望むならば、オーバーライド・パラメータ282Aは、グラフィックス・プロセッサの識別情報を含んでも良い。
ユーザによって要求される任意のオーバーライドは、グラフィックス・デバイスへ送信される要求された修正34内に含まれても良い。前に説明されたように、グラフィックス・デバイスは、それから、要求された修正34を処理し、そして、更新された命令/情報35を提供しても良い。更新された命令/情報35は、表示エリア211内のグラフィックス・イメージ210の表示を更新するために使用されても良い。
図14は、本開示の一つの態様に従って、図10に示されるグラフィックス・デバイス201上に表示され得るテクスチャー情報の一例を示すスクリーン・ダイアグラムである。この態様において、テクスチャー情報は、グラフィック・ウインドウ290内に示される。グラフィックス・イメージ210は、表示エリア211内に示される。ユーザは、グラフィックス・イメージ210の1又は複数のテクスチャーを修正しても良い。そして、それは、それから、表示エリア211内に示されることができる。
例えば、図14において、ユーザは、テクスチャー294,296及び/又は298の任意のものを選択しても良い。図14において、示されるように、ユーザがテクスチャー294を選択したと仮定される。任意の数の異なるテクスチャーは、ウインドウ290で表示及び選択されても良く、また、図14中に表示されたテクスチャーは、説明の目的のためだけに示される。
テクスチャー294のユーザ選択に応じて、選択されたテクスチャー294の拡大された表現が、テクスチャー・エリア300に示される。ユーザは、それから、テクスチャー294を、グラフィックス・イメージ210の1又は複数の部分に適用しても良い。一つのシナリオにおいて、ユーザは、テクスチャー294をテクスチャー・エリア300から表示エリア211にドラッグして、該テクスチャーをグラフィックス・イメージ210の要求された部分に適用しても良い。図14の例において、ユーザは、テクスチャー294をグラフィックス・イメージ210の示された部分に適用した。この方法で、ユーザ、1又は複数のテクスチャー(例えば、テクスチャー294,296,298)のうちの任意のものを選択して、当該テクスチャーをグラフィックス・イメージ210に適用し、さらに、表示エリア211内のグラフィックス・イメージ210の対応する変化を閲覧しても良い。
ユーザにより選択又は適用される任意のテクスチャーは、グラフィックス・デバイスへ送信される要求された修正34内に含まれても良い。前に説明されたように、グラフィックス・デバイスは、それから、要求された修正34を処理し、そして、更新された命令/情報35を提供しても良い。更新された命令/情報35は、表示エリア211内のグラフィックス・イメージ210の表示を更新するために使用されても良い。
図15は、本開示の一つの態様に従って、図10に示されるグラフィックス・デバイス201上に表示され得るパフォーマンス情報の一例を示すスクリーン・ダイアグラムである。この態様において、パフォーマンス情報は、グラフィック・ウインドウ302内に示される。図15の例において、パフォーマンス情報は、パフォーマンス・グラフ304によって提示される。グラフ304は、水平軸に沿った時間と、垂直軸に沿ったプロセッサ使用のパーセンテージ(%)とを示す。プロセッサ使用のパーセンテージは、グラフィックス処理システム内の1又は複数のプロセッサ(例えば、制御プロセッサ、表示プロセッサ、頂点プロセッサ及び/又はグラフィックス・プロセッサ)のパーセント使用状況に対応しても良い。
パフォーマンス・グラフ304を連続的にモニターすることによって、ユーザは、要求された修正34内のグラフィックス・デバイスに対してなされるか又は送信される任意の変化の効果を評価することができても良い。例えば、ユーザは、グラフィックス・アプリケーションの実行の間の任意の観測されたパフォーマンス・イッシュー又はボトルネックを解決又はさもなければ軽減する努力において、グラフィックス命令を更新し、ステート/パフォーマンス情報を更新し、グラフィックス・イメージの斜視図を修正し、1又は複数のオーバーライドを起動し、テクスチャーを変更し、又は、他の修正をしても良い。特定の変更は、パーセント使用状況(又はプロセッサ利用状況)を減少させることによってパフォーマンスを向上させる場合があり、一方、他の変更は、プロセッサ利用状況を増加させる場合がある。グラフィックス・アプリケーション(より低い又は減少されたプロセッサ利用状況をもたらすそれら)に対する最適な又は望ましい解決又は変更を識別するのを支援するために、ユーザは、時間とともに、任意の実装された変更(例えば、要求された修正34内に含まれるそれら)の影響を確認するために、パフォーマンス・グラフ304を連続的にモニターしても良い。
この開示において説明される技術は、汎用マイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向けIC(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)又は他の均等な論理デバイスの中に実装されても良い。したがって、本明細書で使用される用語“プロセッサ(processor)”又は“コントローラ(controller)”は、本明細書で説明される技術の実装に適した前述の構造のうちの任意のもの又は他の任意の構造を指し示しても良い。
本明細書で説明される様々なコンポーネントは、ハードウェア、ソフトウェア、ファームウェアの適切な組み合わせ、又はそれらの任意の組み合わせにより実現されても良い。図において、様々なコンポーネントは、独立したユニット又はモジュールとして示される。しかし、これらの図を参照して説明される様々なコンポーネントの全て又は幾つかは、共通のハードウェア及び/又はソフトウェア内の複合のユニット又はモジュールに集積されても良い。したがって、コンポーネント、ユニット又はモジュールとしての特徴の表現は、説明図の容易さのために特定の機能的な特徴をハイライトすることを目的として、独立したハードウェア又はソフトウェア・コンポーネントによってそのような特徴の実現を必ずしも要求するというわけではない。場合によっては、様々なユニットは、1又は複数のプロセッサにより実行されるプログラム可能なプロセスとして実装されても良い。
モジュール群、デバイス群又はコンポーネント群(グラフィックス・デバイス100及び/又はその構成要素群を含む)として本明細書で説明されるいずれの機能群も、集積化された論理デバイスに一緒に又は別々であるが適時情報交換ができる(interoperable)複数の論理デバイスとして独立して実装されても良い。様々な態様において、そのようなコンポーネント群は、1又は複数の集積回路デバイスとして少なくとも部分的に形成されても良い。そして、それらは集積回路デバイス(例えば集積回路チップ又はチップセット)として集合的に指し示されても良い。そのような回路は、単一の集積回路チップ・デバイスで又は複数の適時情報交換ができる集積回路チップ・デバイスで提供されても良く、また、様々なイメージ、ディスプレイ、オーディオ又は他のマルチメディアのアプリケーション及びデバイスの任意のものにおいて使用されても良い。幾つかの態様において、例えば、そのようなコンポーネントは、モバイル・デバイス(例えば無線通信デバイス・ハンドセット)の一部を形成しても良い。
ソフトウェアで実装されるならば、本技術は、1又は複数のプロセッサにより実行されるときに上で説明された方法のうちの1又は複数を実行する命令をもつコードを含むコンピュータ読み取り可能な媒体によって少なくとも部分的に実現されても良い。コンピュータ読み取り可能な媒体は、コンピュータ・プログラム製品(それはパッケージ材料を含んでもよい)の一部を形成しても良い。コンピュータ読み取り可能な媒体は、ランダムアクセスメモリ(RAM)(例えばシンクロナスダイナミックランダムアクセスメモリ(SDRAM))、リードオンリーメモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能PROM(EEPROM)、組み込み形ダイナミックランダムアクセスメモリ(eDRAM)、スタティックランダムアクセスメモリ(SRAM)、フラッシュメモリ、磁気又は光学データ記憶媒体を含んでも良い。
加えて又は代わりに、本技術は、命令又はデータ構造の形でコードを運ぶか又は伝え且つ1又は複数のプロセッサによりアクセス、リード及び/又は実行されることができるコンピュータ読み取り可能な通信媒体に少なくとも部分的によって実現されても良い。いずれのコネクションも、コンピュータ読み取り可能な媒体と適切に呼ばれることができる。例えば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイスト・ペア、デジタル加入者回線(DSL)又は無線技術(例えば、赤外線、無線及びマイクロ波)を使用するウェブサイト、サーバ又は他のリモート・ソースから送信されるならば、該同軸ケーブル、光ファイバーケーブル、ツイスト・ペア、DSL又は無線技術(例えば、赤外線、無線及び電子レンジ)は、媒体の定義に含まれる。上記の組み合せは、コンピュータ読み取り可能な媒体の範囲内に含まれなければならないまた。利用されるいずれのソフトウェアも、1又は複数のプロセッサ(例えば、1又は複数のDSP、汎用マイクロプロセッサ、複数のASIC、複数のFPGA又は他の均等な集積化された又は個別の論理回路)によって実行されても良い。
様々な態様が本明細書で説明された。これら及び他の態様は以下のクレームの範囲内である。
以下に、本願出願の当初の特許請求の範囲に記載された各請求項に対応する発明を付記する。
[1]外部グラフィックス・デバイスからグラフィックス命令(該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される)を受信することと、前記外部グラフィックス・デバイスからステート情報(該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信することと、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージの表現を表示することを含む方法。
[2]前記グラフィックス命令の受信、前記ステート情報の受信及び前記グラフィックス・イメージの複数のフレームに関する前記グラフィックス・イメージの前記表現の表示を、繰り返し行うことを更に含む[1]の方法。
[3]前記外部グラフィックス・デバイスが前記グラフィックス・イメージをレンダリングするときの、前記ステート情報が前記外部グラフィックス・デバイスの1又は複数のステートを示す[1]の方法。
[4]前記ステート情報は、前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの1又は複数のプロセッサからのステート情報を含む[1]の方法。
[5]前記ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連するデータを含む[1]の方法。
[6]前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定するユーザ入力を受信することと、前記要求された修正を、処理のために外部グラフィックス・デバイスに送信することを更に含む[1]の方法。
[7]前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令(該更新されたグラフィックス命令は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する)を受信することと、前記外部グラフィックス・デバイスから、更新されたステート情報(該更新されたステート情報は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する)を受信することと、前記更新されたグラフィックス命令及び前記更新されたステート情報により前記グラフィックス・イメージの前記更新されたバージョンを表示することを更に含む[6]の方法。
[8]前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも1つを含む[6]の方法。
[9]前記グラフィックス命令のビジュアル表現を表示することと、前記ステート情報のビジュアル表現を表示することを更に含む[1]の方法。
[10]前記グラフィックス命令の前記ビジュアル表現を表示することは、前記グラフィックス命令を、関連するグラフィックス・アプリケーション・プログラミング・インタフェース(API)命令にマッピングすることと、前記グラフィックスAPI命令を表示することを更に含む[9]の方法。
[11]前記グラフィックス・イメージの前記表現を表示することは、前記外部グラフィックス・デバイスをシミュレーションするシミュレーションされた環境内で前記グラフィックス・イメージの前記表現を表示することを含む[1]の方法。
[12]前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース(API)命令から生成されるバイナリ命令を含む[1]の方法。
[13]前記ナビゲーション・コントローラを表示することと、前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信することと、前記ユーザ入力に基づいて、前記グラフィックス・イメージの修正された斜視図を表示することを更に含む[1]の方法。
[14]前記グラフィックス・イメージを修正するためのユーザ入力を受信することと、前記ユーザ入力に従って前記グラフィックス・イメージの修正されたバージョンを表示することを更に含む[1]の方法。
[15]前記外部グラフィックス・デバイスから、パフォーマンス情報(該パフォーマンス情報は、該外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信することと、前記グラフィックス命令のその実行の間、前記外部グラフィックス・デバイス上での1又は複数のパフォーマンス・イッシューを識別するために、前記パフォーマンス情報を解析することを更に含む[1]の方法。
[16]前記パフォーマンス情報は、前記外部グラフィックス・デバイス上で前記グラフィックス命令を実行する1又は複数のプロセッサから収集されるパフォーマンス・メトリックを含む[15]の方法。
[17]前記パフォーマンス情報を解析することは、前記グラフィックス命令の実行の間、前記外部グラフィックス・デバイスの前記複数のプロセッサのうちの1又は複数における減少したパフォーマンスを識別することを含む[16]の方法。
[18]前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定するユーザ入力を受信することと、前記要求された修正を、処理のために前記外部グラフィックス・デバイスに送信することと、前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令(該更新されたグラフィックス命令は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する)を受信することと、前記外部グラフィックス・デバイスから、更新されたパフォーマンス情報(該更新されたパフォーマンス情報は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する)を受信することと、前記パフォーマンス・イッシューのうちの1又は複数が解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析することを更に含む[15]の方法。
[19]前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも1つを含む[18]の方法。
[20]前記更新されたグラフィックス命令及び前記更新されたパフォーマンス情報に従って、前記グラフィックス・イメージの更新された表現を表示することを更に含む[18]の方法。
[21]1又は複数のプロセッサに、外部グラフィックス・デバイスからグラフィックス命令(該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される)を受信させ、前記外部グラフィックス・デバイスからステート情報(該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信させ、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージの表現を表示させるための命令を含むコンピュータ読み取り可能な媒体。
[22]前記1又は複数のプロセッサに、前記グラフィックス命令の受信、前記ステート情報の受信及び前記グラフィックス・イメージの複数のフレームに関する前記グラフィックス・イメージの前記表現の表示を、繰り返し行わせるための命令を更に含む[21]のコンピュータ読み取り可能な媒体。
[23]前記外部グラフィックス・デバイスが前記グラフィックス・イメージをレンダリングするときの、前記ステート情報が前記外部グラフィックス・デバイスの1又は複数のステートを示す[21]のコンピュータ読み取り可能な媒体。
[24]前記ステート情報は、前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの少なくとも一つのプロセッサからのステート情報を含む[21]のコンピュータ読み取り可能な媒体。
[25]前記ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連するデータを含む[21]のコンピュータ読み取り可能な媒体。
[26]前記1又は複数のプロセッサに、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定するユーザ入力を受信させ、前記要求された修正を、処理のために外部グラフィックス・デバイスに送信させるための命令を更に含む[21]のコンピュータ読み取り可能な媒体。
[27]前記1又は複数のプロセッサに、前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令(該更新されたグラフィックス命令は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する)を受信させ、前記外部グラフィックス・デバイスから、更新されたステート情報(該更新されたステート情報は、該外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する)を受信させ、前記更新されたグラフィックス命令及び前記更新されたステート情報により前記グラフィックス・イメージの前記更新されたバージョンを表示させるための命令を更に含む[26]のコンピュータ読み取り可能な媒体。
[28]前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも1つを含む[26]のコンピュータ読み取り可能な媒体。
[29]前記1又は複数のプロセッサに、前記グラフィックス命令のビジュアル表現を表示させ、前記ステート情報のビジュアル表現を表示させるための命令を更に含む[21]のコンピュータ読み取り可能な媒体。
[30]前記1又は複数のプロセッサに前記グラフィックス命令の前記ビジュアル表現を表示させるための前記命令は、前記1又は複数のプロセッサに、前記グラフィックス命令を、関連するグラフィックス・アプリケーション・プログラミング・インタフェース(API)命令にマッピングさせ、前記グラフィックスAPI命令を表示させるための命令を含む[29]のコンピュータ読み取り可能な媒体。
[31]前記1又は複数のプロセッサに前記グラフィックス・イメージの前記表現を表示させるための前記命令は、前記1又は複数のプロセッサに前記外部グラフィックス・デバイスをシミュレーションするシミュレーションされた環境内で前記グラフィックス・イメージの前記表現を表示させるための命令を含む[21]のコンピュータ読み取り可能な媒体。
[32]前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース(API)命令から生成されるバイナリ命令を含む[21]のコンピュータ読み取り可能な媒体。
[33]前記1又は複数のプロセッサに、前記ナビゲーション・コントローラを表示させ、前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信させ、前記ユーザ入力に基づいて、前記グラフィックス・イメージの修正された斜視図を表示させるための命令を更に含む[21]のコンピュータ読み取り可能な媒体。
[34]前記1又は複数のプロセッサに、前記グラフィックス・イメージを修正するためのユーザ入力を受信させ、前記ユーザ入力に従って前記グラフィックス・イメージの修正されたバージョンを表示させるための命令を更に含む[21]のコンピュータ読み取り可能な媒体。
[35]前記1又は複数のプロセッサに、前記外部グラフィックス・デバイスから、パフォーマンス情報(該パフォーマンス情報は、該外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信させ、前記グラフィックス命令のその実行の間、前記外部グラフィックス・デバイス上での1又は複数のパフォーマンス・イッシューを識別するために、前記パフォーマンス情報を解析させるための命令を更に含む[21]のコンピュータ読み取り可能な媒体。
[36]前記パフォーマンス情報は、前記外部グラフィックス・デバイス上で前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの少なくとも一つのプロセッサから収集されるパフォーマンス・メトリックを含む[35]のコンピュータ読み取り可能な媒体。
[37]前記1又は複数のプロセッサに前記パフォーマンス情報を解析させるための前記命令は、前記1又は複数のプロセッサに前記グラフィックス命令の実行の間、前記外部グラフィックス・デバイスの前記複数のプロセッサのうちの1又は複数における減少したパフォーマンスを識別させるための命令を含む[36]のコンピュータ読み取り可能な媒体。
[38]前記1又は複数のプロセッサに、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定するユーザ入力を受信させ、前記要求された修正を、処理のために前記外部グラフィックス・デバイスに送信させ、前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令(該更新されたグラフィックス命令は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する)を受信させ、前記外部グラフィックス・デバイスから、更新されたパフォーマンス情報(該更新されたパフォーマンス情報は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する)を受信させ、前記パフォーマンス・イッシューのうちの1又は複数が解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析させるための命令を更に含む[35]のコンピュータ読み取り可能な媒体。
[39]前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも1つを含む[38]のコンピュータ読み取り可能な媒体。
[40]前記1又は複数のプロセッサに、前記更新されたグラフィックス命令及び前記更新されたパフォーマンス情報に従って、前記グラフィックス・イメージの更新された表現を表示させるための命令を更に含む[38]のコンピュータ読み取り可能な媒体。
[41]表示デバイスと、外部グラフィックス・デバイスからグラフィックス命令(該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される)を受信し、前記外部グラフィックス・デバイスからステート情報(該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信し、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージの表現を前記表示デバイス上に表示するように構成された1又は複数のプロセッサとを含むデバイス。
[42]前記1又は複数のプロセッサは、前記グラフィックス命令の受信、前記ステート情報の受信及び前記グラフィックス・イメージの複数のフレームに関する前記グラフィックス・イメージの前記表現の表示を、繰り返し行うように更に構成された[41]のデバイス。
[43]前記1又は複数のプロセッサは、前記グラフィックス命令のビジュアル表現を前記表示デバイス上に表示し、前記ステート情報のビジュアル表現を前記表示デバイス上に表示するように更に構成された[41]のデバイス。
[44]前記1又は複数のプロセッサは、前記ナビゲーション・コントローラを前記表示デバイス上に表示し、前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信し、前記ユーザ入力に基づいて、前記グラフィックス・イメージの修正された斜視図を前記表示デバイス上に表示するように更に構成された[41]のデバイス。
[45]前記1又は複数のプロセッサは、前記外部グラフィックス・デバイスから、パフォーマンス情報(該パフォーマンス情報は、該外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信し、前記グラフィックス命令のその実行の間、前記外部グラフィックス・デバイス上での1又は複数のパフォーマンス・イッシューを識別するために、前記パフォーマンス情報を解析するように更に構成された[41]のデバイス。
[46]前記パフォーマンス情報は、前記外部グラフィックス・デバイス上で前記グラフィックス命令を実行する前記外部グラフィックス・デバイスの少なくとも一つのプロセッサから収集されるパフォーマンス・メトリックを含む[45]のデバイス。
[47]前記1又は複数のプロセッサは、前記グラフィックス命令の実行の間、前記外部グラフィックス・デバイスの前記複数のプロセッサのうちの1又は複数における減少したパフォーマンスを識別することに少なくともよって、前記パフォーマンス情報を解析するように構成された[46]のデバイス。
[48]前記1又は複数のプロセッサは、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正を特定するユーザ入力を受信し、前記要求された修正を、処理のために前記外部グラフィックス・デバイスに送信し、前記外部グラフィックス・デバイスから、複数の更新されたグラフィックス命令(該更新されたグラフィックス命令は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する)を受信し、前記外部グラフィックス・デバイスから、更新されたパフォーマンス情報(該更新されたパフォーマンス情報は、前記外部グラフィックス・デバイスによる前記グラフィックス命令の前記実行に対して要求された修正に関連する)を受信し、前記パフォーマンス・イッシューのうちの1又は複数が解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析するように構成された[45]のデバイス。
[49]前記要求された修正は、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数の実行をディスエーブルするリクエスト、前記外部グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数を修正するリクエスト及び前記外部グラフィックス・デバイスに関する前記ステート情報を修正するリクエストのうちの少なくとも1つを含む[48]のデバイス。
[50]前記1又は複数のプロセッサは、前記更新されたグラフィックス命令及び前記更新されたパフォーマンス情報に従って、前記グラフィックス・イメージの更新された表現を前記表示デバイス上に表示するように更に構成された[48]のデバイス。
[51]外部グラフィックス・デバイスからグラフィックス命令(該グラフィックス命令は、グラフィックス・イメージを表示するために該外部グラフィックス・デバイスにより実行される)を受信するための手段と、前記外部グラフィックス・デバイスからステート情報(該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信するための手段と、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージの表現を表示するための手段とを含むデバイス。
[52]グラフィックス・デバイスからコンピュータ・デバイスへ、グラフィックス命令(該グラフィックス命令は、グラフィックス・イメージを表示するために該グラフィックス・デバイスにより実行される)を送信することと、前記グラフィックス・デバイスからコンピュータ・デバイスへ、ステート情報(該ステート情報は、該グラフィックス・デバイスによる前記グラフィックス命令の実行に関連する)を送信することと、前記グラフィックス・デバイスによる前記グラフィックス命令の前記実行を修正するために、前記コンピュータ・デバイスから、1又は複数の要求された修正を受信することと、前記1又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたステート情報を送信することを含む方法。
[53]前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージを表示することを更に含む[52]の方法。
[54]前記1又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたグラフィックス命令を送信することを更に含む[52]の方法。
[55]前記グラフィックス命令の送信、ステート情報の送信、1又は複数の要求された修正の受信、前記グラフィックス・イメージの複数のフレームに関する更新されたステート情報の送信を、繰り返し行うことを更に含む[52]の方法。
[56]前記ステート情報は、前記グラフィックス命令を実行する前記グラフィックス・デバイスの1又は複数のプロセッサからのステート情報又はデータを含む[52]の方法。
[57]前記1又は複数の要求された修正は、前記グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数の実行をディスエーブルするリクエスト、前記外部デバイス上での前記グラフィックス命令のうちの1又は複数を修正するリクエスト及び前記グラフィックス・デバイスに関するステート情報を修正するリクエストのうちの少なくとも1つを含む[52]の方法。
[58]前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース(API)命令から生成されるバイナリ命令を含む[52]の方法。
[59]前記ステート情報は、前記グラフィックス・デバイス上で前記グラフィックス命令を実行する1又は複数のプロセッサから収集されるパフォーマンス・メトリックを含む[52]の方法。
[60]命令を記憶するように構成された記憶媒体と、前記デバイスから外部コンピュータ・デバイスへ、前記命令(該命令は、グラフィックス・イメージを表示するために該デバイスにより実行される)を送信することと、前記デバイスから前記外部コンピュータ・デバイスへ、ステート情報(該ステート情報は、該デバイスによる前記命令の実行に関連する)を送信することと、前記デバイスによる前記命令の前記実行を修正するために、前記外部コンピュータ・デバイスから、1又は複数の要求された修正を受信することと、前記1又は複数の要求された修正に基づいて、前記デバイスから前記外部コンピュータ・デバイスへ、更新されたステート情報を送信するように構成された1又は複数のプロセッサとを含むデバイス。
[61]前記1又は複数のプロセッサは、前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージを前記表示デバイス上に表示するように更に構成された[60]のデバイス。
[62]前記1又は複数のプロセッサは、前記1又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたグラフィックス命令を送信するように更に構成された[60]のデバイス。
[63]前記グラフィックス命令の送信、ステート情報の送信、1又は複数の要求された修正の受信、前記グラフィックス・イメージの複数のフレームに関する更新されたステート情報の送信を、繰り返し行うことを更に含む[60]のデバイス。
[64]前記ステート情報は、前記グラフィックス命令を実行する前記グラフィックス・デバイスの1又は複数のプロセッサからのステート情報又はデータを含む[60]のデバイス。
[65]前記1又は複数の要求された修正は、前記グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数の実行をディスエーブルするリクエスト、前記外部デバイス上での前記グラフィックス命令のうちの1又は複数を修正するリクエスト及び前記グラフィックス・デバイスに関するステート情報を修正するリクエストのうちの少なくとも1つを含む[60]のデバイス。
[66]前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース(API)命令から生成されるバイナリ命令を含む[60]のデバイス。
[67]前記ステート情報は、前記グラフィックス・デバイス上で前記グラフィックス命令を実行する前記1又は複数のプロセッサから収集されるパフォーマンス・メトリックを含む[60]のデバイス。
[68]前記1又は複数のプロセッサの各々は、表示プロセッサ、グラフィックス・プロセッサ、頂点プロセッサ又は制御プロセッサを含む[60]のデバイス。
[69]前記デバイスは、無線通信デバイス・ハンドセットを含む[60]のデバイス。
[70]前記デバイスは、1又は複数の集積回路装置を含む[60]のデバイス。
[71]1又は複数のプロセッサに、グラフィックス・デバイスからコンピュータ・デバイスへ、グラフィックス命令(該グラフィックス命令は、グラフィックス・イメージを表示するために該グラフィックス・デバイスにより実行される)を送信させ、
前記グラフィックス・デバイスからコンピュータ・デバイスへ、ステート情報(該ステート情報は、該グラフィックス・デバイスによる前記グラフィックス命令の実行に関連する)を送信させ、前記グラフィックス・デバイスによる前記グラフィックス命令の前記実行を修正するために、前記コンピュータ・デバイスから、1又は複数の要求された修正を受信させ、前記1又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたステート情報を送信させるための命令を含むコンピュータ読み取り可能な媒体。
[72]前記1又は複数のプロセッサに前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージを表示させるための命令を含む[71]のコンピュータ読み取り可能な媒体。
[73]前記1又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたグラフィックス命令を送信することを更に含む[71]のコンピュータ読み取り可能な媒体。
[74]前記1又は複数のプロセッサに、前記グラフィックス命令の送信、ステート情報の送信、1又は複数の要求された修正の受信、前記グラフィックス・イメージの複数のフレームに関する更新されたステート情報の送信を、繰り返し行わせるための命令を更に含む[71]のコンピュータ読み取り可能な媒体。
[75]前記ステート情報は、前記グラフィックス命令を実行する前記グラフィックス・デバイスの1又は複数のプロセッサからのステート情報又はデータを含む[71の方コンピュータ読み取り可能な媒体。
[76]前記1又は複数の要求された修正は、前記グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数の実行をディスエーブルするリクエスト、前記外部デバイス上での前記グラフィックス命令のうちの1又は複数を修正するリクエスト及び前記グラフィックス・デバイスに関するステート情報を修正するリクエストのうちの少なくとも1つを含む[71]のコンピュータ読み取り可能な媒体。
[77]前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース(API)命令から生成されるバイナリ命令を含む[71]のコンピュータ読み取り可能な媒体。
[78]前記ステート情報は、前記グラフィックス・デバイス上で前記グラフィックス命令を実行する1又は複数のプロセッサから収集されるパフォーマンス・メトリックを含む[71]のコンピュータ読み取り可能な媒体。
[79]グラフィックス・デバイスからコンピュータ・デバイスへ、グラフィックス命令(該グラフィックス命令は、グラフィックス・イメージを表示するために該グラフィックス・デバイスにより実行される)を送信するための手段と、前記グラフィックス・デバイスからコンピュータ・デバイスへ、ステート情報(該ステート情報は、該グラフィックス・デバイスによる前記グラフィックス命令の実行に関連する)を送信するための手段と、前記グラフィックス・デバイスによる前記グラフィックス命令の前記実行を修正するために、前記コンピュータ・デバイスから、1又は複数の要求された修正を受信するための手段と、前記1又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたステート情報を送信するための手段とを含むデバイス。
[80]前記グラフィックス命令及び前記ステート情報に従って前記グラフィックス・イメージを表示するための手段を更に含む[79]のデバイス。
[81]前記1又は複数の要求された修正に基づいて、前記グラフィックス・デバイスから前記コンピュータ・デバイスへ、更新されたグラフィックス命令を送信するための手段を更に含む[79]のデバイス。
[82]前記グラフィックス命令の送信、ステート情報の送信、1又は複数の要求された修正の受信、前記グラフィックス・イメージの複数のフレームに関する更新されたステート情報の送信を、繰り返し行うための手段を更に含む[79]のデバイス。
[83]前記ステート情報は、前記グラフィックス命令を実行する前記グラフィックス・デバイスの1又は複数のプロセッサからのステート情報又はデータを含む[79]のデバイス。
[84]前記1又は複数の要求された修正は、前記グラフィックス・デバイス上での前記グラフィックス命令のうちの1又は複数の実行をディスエーブルするリクエスト、前記外部デバイス上での前記グラフィックス命令のうちの1又は複数を修正するリクエスト及び前記グラフィックス・デバイスに関するステート情報を修正するリクエストのうちの少なくとも1つを含む[79]のデバイス。
[85]前記グラフィックス命令は、前記アプリケーション・プログラミング・インタフェース(API)命令から生成されるバイナリ命令を含む[79]のデバイス。
[86]前記ステート情報は、前記グラフィックス・デバイス上で前記グラフィックス命令を実行する1又は複数のプロセッサから収集されるパフォーマンス・メトリックを含む[79]のデバイス。