(35 U.S.C. §119の下の優先権の主張)
本特許出願は、2008年7月25日付け提出され、本願の譲受人に譲渡され、参照によって本明細書に明確に組み込まれる「MAPPING GRAPHICS INSTRUCTIONS TO ASSOCIATED GRAPHICS DATA DURING PERFORMANCE ANALYSIS」と題された米国仮出願第61/083,665号の優先権を主張する。
(同時継続の特許出願への参照)
本特許出願は、以下の同時継続の米国特許出願に関係する:
2008年7月25日付け提出され、これと共に同時に提出され、本願の譲受人に譲渡され、参照によって本明細書に明確に組み込まれる米国特許出願第61/083,656号(Attorney Docket No. 080967P1);及び
2008年7月25日付け提出され、これと共に同時に提出され、本願の譲受人に譲渡され、参照によって本明細書に明確に組み込まれる米国特許出願第61/083,659号(Attorney Docket No. 080969P1)。
(技術分野)
この開示は、グラフィックス・イメージの表示に関係する。
グラフィックス・プロセッサは、例えばテレビゲーム、グラフィックス・プログラム、コンピュータ・デザイン(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)のフルセットは、ハードウェアにより1又は複数のグラフィックス・プリミティブ(例えば、1又は複数の三角形)からイメージがレンダリングされるプロセスを記述することがある。
グラフィックス・アーティストは、しばしば、様々なグラフィックス・プリミティブを作成することによって、1つのシーンの1又は複数の部分を定義することがある。例えば、グラフィックス・アーティストは、シーンの構成部品(constituent parts)を含む3次元(3D)プリミティブ・ポリゴン及び/又はテクスチャー・データを生成するために、デジタル・コンテンツ作成(DCC)ツールを使用することがある。このデータは、それから、ユーザに表示されるべき最終的なグラフィックス・イメージ・データを作成又はレンダリングするために、グラフィックス・アプリケーションに組み込まれ、ハードウェア・グラフィックス・デバイスのコンテンツ−処理パイプライン内で処理されることがある。多くの場合、異なるアーティストが、1つのシーンの異なる部分を定義することがあり、それから、それらは、単一のグラフィックス・アプリケーションの中に結合される必要があることがあり、そして、これらのアーティストはまた、互いに独立に作業することがある。さらに、アーティストは、しばしば、プリミティブ・ポリゴン及び/又はテクスチャー・データに対して修正を行うときに、グラフィックス・アプリケーションの開発者とコミュニケーションし作業する必要があることがある。
一般に、この開示は、アプリケーション開発者及び/又はグラフィックス・アーティストが、いずれのグラフィックス命令及び関連するグラフィックス・データ(例えば、ポリゴン・データ、テクスチャー・データ)が、識別されたパフォーマンス・イッシューに関連し得るか識別できるようにすることによって、グラフィックス・シーン(例えば、3次元(3D)シーン)を最適化するための技術に関係する。その結果、アプリケーション開発者は、パフォーマンス・イッシューをもたらすアプリケーション内のシーンの部分を判定するために又は該イッシューを解決するためにこの情報を1又は複数のアーティストに手作業で伝えるために、ターゲット・デバイス(例えば、モバイル・デバイス、グラフィックス・デバイス)上の試行錯誤プロセスを使用する必要がなくても良い。それよりも、開発者は、パフォーマンス・イッシューを識別するためにシミュレーション環境を使用することができ、そして、シミュレーション環境は、自動的に、これらのイッシューをもたらした可能性のある関連するグラフィックス・データを識別することができる。識別されたパフォーマンス・イッシュー及び/又は関連するグラフィックス・データは、解決のために、開発者及び対応する(1又は複数の)アーティストに伝えられても良い。アーティストはまた、それらのリモート・コンピュータ・デバイス上で直接該伝えられた情報を閲覧(view)することができても良い。
一つの態様において、方法は、前記外部デバイスからのマッピング情報(該マッピング情報は、該グラフィックス命令の実行中に1又は複数のグラフィックスをレンダリングするために使用されるプリミティブ・グラフィックス・データへ、該グラフィックス命令をマッピングするための情報を含む)を受信することと、前記グラフィックス命令の中で少なくとも一つのグラフィックス命令の実行に関連するパフォーマンス・イッシューを識別することを含む。前記方法は、前記少なくとも一つのグラフィックス命令の実行に基づく前記パフォーマンス・イッシューに関連するプリミティブ・グラフィックス・データの部分を識別するために前記マッピング情報を使用することをを更に含む。
一つの態様において、コンピュータ読み取り可能な媒体は、1又は複数のプロセッサに、外部デバイスからグラフィックス命令を受信させ、前記外部デバイスからのマッピング情報(該マッピング情報は、該グラフィックス命令の実行中に1又は複数のグラフィックスをレンダリングするために使用されるプリミティブ・グラフィックス・データへ、該グラフィックス命令をマッピングするための情報を含む)を受信させ、前記グラフィックス命令の中で少なくとも一つのグラフィックス命令の実行に関連するパフォーマンス・イッシューを識別させ、前記少なくとも一つのグラフィックス命令の実行に基づく前記パフォーマンス・イッシューに関連するプリミティブ・グラフィックス・データの部分を識別するために前記マッピング情報を使用させるためのコンピュータ実行可能な命令を含む。
一つの態様において、デバイスは、表示デバイスと1又は複数のプロセッサを含む。前記1又は複数のプロセッサは、外部デバイスからグラフィックス命令を受信し、前記外部デバイスからのマッピング情報(該マッピング情報は、該グラフィックス命令の実行中に1又は複数のグラフィックスをレンダリングするために使用されるプリミティブ・グラフィックス・データへ、該グラフィックス命令をマッピングするための情報を含む)を受信し、前記グラフィックス命令の中で少なくとも一つのグラフィックス命令の実行に関連するパフォーマンス・イッシューを識別し、前記少なくとも一つのグラフィックス命令の実行に基づく前記パフォーマンス・イッシューに関連するプリミティブ・グラフィックス・データの部分を識別するために前記マッピング情報を使用するように構成される。
この開示において説明される技術は、ハードウェア、ソフトウェア、ファームウェア又はそれらの任意の組み合せにおいて実装されても良い。ソフトウェアで実装される場合には、ソフトウェアは、プロセッサで実行されても良い。プロセッサは、1又は複数のプロセッサ(例えば、マイクロプロセッサ)、特定用途向けIC(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はデジタルシグナルプロセッサ(DSP)、又は他の等価な集積化された若しくは個別の論理回路を指し示しても良い。本技術を実行するための命令を含むソフトウェアは、最初にコンピュータ読み取り可能な媒体に記憶されロードされ、そして、プロセッサにより実行されても良い。
したがって、この開示はまた、この開示において説明される様々な技術の任意のものをプロセッサに実行させる命令を含むコンピュータ読み取り可能な媒体を意図する。場合によっては、コンピュータ読み取り可能な媒体は、製造者に販売され得る及び/又はデバイスで使用され得るコンピュータ・プログラム製品の一部を形成しても良い。コンピュータ・プログラム製品は、コンピュータ読み取り可能な媒体を含んでも良いし、場合によっては、また、パッケージ材料を含んでも良い。
添付の図面及び下記の説明において1又は複数の態様の詳細が説明される。他の特徴、目的及び利点は説明及び図面から並びにクレームから明らかである。
図1は、本開示の一つの態様に従って、マッピング及び/又はパーティショニング情報とともに、グラフィックス命令、ステート及び/又はパフォーマンス情報を、アプリケーション・コンピュータ・デバイスに提供し得るグラフィックス・デバイスを示すブロック図である。
図2は、本開示の一つの態様に従って、図1に示されるグラフィックス処理システム及びアプリケーション・コンピュータ・デバイスの特定の詳細を示すブロック図である。
図3は、本開示の一つの態様に従って、図2に示されるグラフィックス・ドライバーの更なる詳細を示すブロック図である。
図4Aは、本開示の一つの態様に従って、1又は複数の更なるアプリケーション・コンピュータ・デバイスに接続される、図1に示されるグラフィックス・デバイス及びアプリケーション・コンピュータ・デバイスを示すブロック図である。
図4Bは、本開示の一つの態様に従って、図4Aに示される更なるアプリケーション・コンピュータ・デバイスのうちの一つの更なる詳細を示すブロック図である。
図5は、本開示の一つの態様に従って、個々のグラフィックス命令とグラフィックス・データとの間の例示的なマッピングを示す概念図である。
図6は、本開示の一つの態様に従って、図1に示されるアプリケーション・コンピュータ・デバイス又は図4Aに示されるアプリケーション・コンピュータ・デバイスのうちの任意の一つにより実行され得る第1の方法のフローチャートである。
図7は、本開示の一つの態様に従って、図1に示されるアプリケーション・コンピュータ・デバイス又は図4Aに示されるアプリケーション・コンピュータ・デバイスのうちの任意の一つにより実行され得る第2の方法のフローチャートである。
図8は、本開示の一つの態様に従って、グラフィック・ウインドウ中に情報を表示するための表示デバイスに接続されるグラフィックス・デバイスの例を示す概念図である。
図9は、本開示の一つの態様に従って、グラフィカル・ウインドウ中に情報を表示する表示デバイスに接続されるグラフィックス・デバイスの他の例を示す概念図である。
図10は、本開示の一つの態様に従って、表示デバイスにより提供されるスクリーン・エリアの4つのパーティションにわたり得るグラフィックス・データの例を示す概念図である。
図11は、本開示の一つの態様に従って、表示デバイスにより提供され得るスクリーン・エリア270内のテクスチャー情報を示す概念図である。
詳細な説明
図1は、本開示の一つの態様に従って、グラフィックス命令30、ステート及び/又はパフォーマンス情報32及びマッピング/パーティショニング情報33を、アプリケーション・コンピュータ・デバイス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は、下で更に詳細に説明される。
記憶媒体8はまた、グラフィックス・データ・マッピング情報23を含む。グラフィックス・データ・マッピング情報23は、アプリケーション命令21のうちの1又は複数を、アプリケーション命令21の実行の間にレンダリングされ得るプリミティブ・グラフィックス・データにマッピングする情報を含む。グラフィックス・データ(それは記憶媒体8及び/又はバッファ15に記憶されても良い)は、1又は複数のプリミティブ(例えば、ポリゴン)を含んでも良く、また、テクスチャー・データを含んでも良い。グラフィックス・データ・マッピング情報23は、アプリケーション命令21内の個々の命令に対してレンダリングされるべき個々のプリミティブのマッピングを維持しても良い。これらの個々の命令の実行の間、プリミティブがレンダリングされた後、マッピング情報23は、これらの命令から、グラフィックス・デバイス6上に最終的に表示される1又は複数のイメージをレンダリングするのに使用されたオリジナルのプリミティブ・グラフィックス・データへのマッピングを提供にする。グラフィックス・データ・マッピング情報は、下で更に詳細に説明される。
また、図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上にレンダリング又は表示するために実行されても良い。
一つの態様において、グラフィックス・データ・マッピング情報23は、アプリケーション命令21の実行の間、得られても良く、そして、記憶媒体8内に格納されても良い。アプリケーション命令21は、グラフィックス・オブジェクトに対する1又は複数のバインディングを含んでも良い。各々のバインディングは、アプリケーション命令21とプリミティブ・グラフィックス・データ(例えば、ポリゴン・データ、テクスチャー・データ)のうちの1又は複数を表す個々のグラフィックス・オブジェクトとの間のリンクを作成する。一セットの命令にバインドされたプリミティブ・グラフィックス・データは、この命令のセットの実行の間、グラフィックス・イメージ・データをレンダリングするために使用される。命令のセットと関連するグラフィックス・データとの間のバインディングは、この命令のセットと関連するグラフィックス・データとの間のマッピングを作成するためのグラフィックス・データ・マッピング情報23内に含まれ、識別され、抽出されても良い。
例えば描画コールのような命令に関するステートのフルセットは、イメージがグラフィックス処理システム4によりレンダリングされるプロセスを記述しても良い。しかし、アプリケーション命令21を書いたアプリケーション開発者は、定義されたシーン中のイメージを記述又はレンダリングする代わりの方法(alternate methods)によるデバッギング又は実験の目的で、これらのステートをインタラクティブに閲覧(view)又は修正する能力(ability)がしばしば制限されることがある。さらに、異なるハードウェア・プラットホームは、これらのステート及び/又は状態遷移の異なるハードウェア・デザイン及び実装を有することがある。
さらに、ビニング・ベースのグラフィックス・ハードウェア(例えば、プロセッサ10,12,14及び16のうちの1又は複数)は、表示デバイス6のスクリーン上に表示されるイメージのシーンを分割するために、レンダリングすることになっている個々のプリミティブが、長方形の形の(rectangular-shaped)ビニング・パーティション又はビンにクラスターされるプロセスを使用して、しばしば実装されても良い。ハードウェアは、表示デバイス6のスクリーンサイズ又は解像度制約に基づいて又はオペレーションのレンダリングに関連する記憶媒体8のメモリ制限に基づいて、そうしても良い。複数のビニング・パーティションにわたり得るプリミティブは、プリミティブ・フラグメントがレンダリングされる前に、パーティションのエッジに沿って、プロセッサ10,12,14又は16のうちの1又は複数によって、複数のフラグメントに分割されても良い。各々のパーティションにおけるプリミティブ・フラグメントは、それから、別々にレンダリングされても良い。一般に、ビニング・パーティションは、ハードウェア・アーキテクチャーに応じて、総計が変化させられても良く、また、様々なサイズ及び形を有しても良い。例えば、ビニング・パーティションは、複数(例えば、4つ,8つ)の長方形の形のパーティションを含んでも良い。
それゆえ、例えば2つのビニング・パーティションにわたり得る個々のプリミティブは、2つのフラグメントに分割されても良く、また、これらの2つのフラグメントの各々は、それから、独立してレンダリングされても良い。しかし、これらのフラグメントの各々によって生成されるグラフィックス・イメージは、それから、表示デバイス6のスクリーン上に表示される前に、イメージ・データのフレーム内で再結合される必要があり得る。それゆえ、複数のビニング・パーティションにわたる個々のプリミティブを分割することは、潜在的な(potential)処理オーバーヘッドを有する可能性があり、また、全体的なパフォーマンス劣化を引き起こす可能性がある。
一つの態様において、アプリケーション開発者は、シーン中のイメージを記述又はレンダリングするための代わりの方法によるデバッギング及び実験の処理を支援するために、図1に示されるように、アプリケーション・コンピュータ・デバイス20を使用しても良い。アプリケーション・コンピュータ・デバイス20は、1又は複数のプロセッサ22、表示デバイス24及び記憶媒体26を含む。記憶媒体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に同様に表示されるグラフィックス・イメージ又はシーンを再作成(re-create)するために、ステート/パフォーマンス情報32とともに、グラフィックス命令30を使用することができる。
グラフィックス・デバイス2はまた、マッピング及び/又はパーティショニング情報33を、アプリケーション・コンピュータ・デバイス20に送信しても良い。一つの態様において、グラフィックス・ドライバー18が、マッピング/パーティショニング情報33を、アプリケーション・コンピュータ・デバイス20に送信するように構成される。マッピング/パーティショニング情報33は、グラフィックス・データ・マッピング情報23(それはグラフィックス命令30内の個々の命令にグラフィックス・データをマッピングする情報を含む)の1又は複数の部分を含んでも良い。例えば、マッピング/パーティショニング情報33は、グラフィックス命令30内の個々の命令に1又は複数のプリミティブ(例えば、ポリゴン)又はテクスチャー・データをマッピングする情報を含んでも良い。
マッピング/パーティショニング情報33はまた、グラフィックス・デバイス2によって生成及び提供されるパーティショニング情報を含んでも良い。このパーティショニング情報は、場合によっては、プロセッサ10,12,14及び16のうちの1又は複数(例えば制御プロセッサ10)によって生成及び提供されても良い。パーティショニング情報は、1又は複数のグラフィックス・イメージ中にグラフィックス・データをレンダリングし及びそのようなイメージを表示デバイス6上に表示するためにグラフィックス処理システム4内で使用され得る、ビニング・パーティション又はビンの数、タイプ、サイズ及び/又は形状を識別する情報を含んでも良い。前に説明されたように、グラフィックス・デバイス2は、例えば、オペレーションのレンダリング中のバッファ15及び/又は記憶媒体8のメモリサイズ制限に基づいて、表示デバイス6のスクリーン・スペース又はサイズを複数のパーティションに分割しても良い。パーティショニング情報は、作成及び使用されるパーティションに関する情報を提供する。
シミュレーション・アプリケーション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の全体的なパフォーマンスを向上させるプロトタイプ修正でさえ、速く識別することができ得る。
記憶媒体26はまた、グラフィックス・データ・マッピング・モジュール25を含む。グラフィックス・データ・マッピング・モジュール25は、プロセッサ22により実行されても良い。グラフィックス・データ・マッピング・モジュール25は、グラフィックス命令30内の個々の命令を、特定のプリミティブ・グラフィックス・データ(例えばポリゴン又はテクスチャー・データ)にマッピングするために、マッピング/パーティショニング情報33を受信及び処理する。このグラフィックス・データは、ステート/パフォーマンス情報32内に含まれても良い。グラフィックス命令30の実行の間、シミュレーション・アプリケーション28は、特定の命令のセットがパフォーマンス・イッシュー又はボトルネックを引き起こす可能性があると判定しても良い。例えば、これらのイッシュー又はボトルネックは、あまりに高いプロセッサ使用又は利用に基づいても良い。グラフィックス・データ・マッピング・モジュール25は、それから、この特定の命令のセットを、これらの命令の実行の間の画像データをレンダリングするために使用され得るグラフィックス・データの部分にマッピングするために、マッピング/パーティショニング情報33を使用しても良い。グラフィックス・データのこの部分は、識別されたパフォーマンス・イッシューに関連する場合がある。
アプリケーション・コンピュータ・デバイス20は、特定の命令のセット及び/又はグラフィックス・データの部分を(例えばそのような情報を表示デバイス24上に表示することなどによって)識別又は表示しても良い。そのような方法において、アプリケーション・コンピュータ・デバイス20は、グラフィックス命令30の実行の間の1又は複数のパフォーマンス・イッシューに関する理由である可能性があるプリミティブ・グラフィックス・データの選択された部分を自動的に識別及び表示することができる。アプリケーション開発者は、それから、より容易且つ効果的にこれらのイッシューを対処又は解決することができ得る。さらに、これらのアーティストがパフォーマンス・イッシューを解決するために使用でき得るパフォーマンス及びグラフィックス・データへの容易なアクセスを有し得るように、アプリケーション・コンピュータ・デバイス20は、下でより詳しく説明されるように、パフォーマンス及び/又はマッピング情報を、グラフィックス・アーティストにより使用される1又は複数の外部デバイスへ自動的に送信することができても良い。
マッピング情報を使用することなく、実行の間の特定の問題に関連する特定のグラフィックス命令に関して、オリジナルのプリミティブ・グラフィックス・データ(例えばグラフィックス・アーティストによって作成されるデータ)の部分を識別することはさもなければ難しい場合がある。なぜならば、グラフィックス命令の実行に応じてグラフィックス・データが出力画像データにレンダリングされた後、そのような問題がより一般的に識別される可能性があるからである。マッピング情報は、命令実行に応じて、そのような後で識別された問題に関する理由である可能性があるオリジナルのグラフィックス・データへのマッピングを提供する。これらの問題は、例えば、あまりに多くのテクスチャー、あまりに多くのポリゴン、などに起因する特定のパフォーマンス・イッシューに関係する場合がある。アプリケーション開発者又はアーティストは、プリミティブ・グラフィックス・データに起因する潜在的な問題の学習に応じて、オリジナルのグラフィックス・データにおけるテクスチャー又はポリゴンに対して特定の修正(例えば、ポリゴンを移動すること、テクスチャーを追加又は除去すること、ポリゴンを再編成すること)を施すことを選択しても良い。
アプリケーション開発者は、アプリケーション・コンピュータ・デバイス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は、グラフィックス・データ・マッピング情報23からの更新されたマッピング情報を含んでも良い。
更新された命令/情報35は、表示デバイス24上での再作成されたイメージ情報の表示を更新するために、さらに更新された命令/情報35のビジュアル表現を、アプリケーション開発者に提供するために、シミュレーション・アプリケーション28により処理される(それは命令マッピング情報31を再び使用することを含んでも良い)。アプリケーション開発者は、それから、パフォーマンス・イッシューが解決又は軽減されたかについて判定するために、更新された命令/情報35のビジュアル表現だけでなく、表示デバイス24上の更新されたイメージ情報を閲覧しても良い。アプリケーション開発者は、グラフィックス命令30をデバッグするための反復的なプロセス、又は、全体的なパフォーマンス・グラフィックス・アプリケーション30を改善するためのプロトタイプ修正を使用しても良い。
一つの態様において、アプリケーション・コンピュータ・デバイス20は、表示デバイス24上に表示されるグラフィックス・イメージをオーバーレイするパーティションのビジュアル・グラフィカル表現を表示するために、マッピング/パーティショニング情報23を使用する。これらのパーティションは、表示デバイス24上でこれらのイメージを含むシーンをグラフィカルに分割する。例えば、シミュレーション・アプリケーション28は、表示デバイス24のスクリーン上でこれらのパーティション(例えば、複数の長方形の形のパーティション)のグラフィックス表現を作成するために、マッピング/パーティショニング情報33を処理するパーティショニング・モジュール27を使用しても良い。パーティショニング・モジュール27は、記憶媒体26からロードされ、プロセッサ22により実行されても良い。実行されるとき、パーティショニング・モジュール27はまた、グラフィックス・データのいずれの部分が該パーティションのうちの複数のものに関連するか判定するために、1又は複数のグラフィックス・イメージについて、グラフィックス・データ(それはステート/パフォーマンス情報32内に含まれても良い)を解析しても良い。例えば、パーティショニング・モジュール27は、下で更に詳細に説明されるように、表示デバイス24上での表示のためのグラフィックス・イメージを作成するために及びこれらのポリゴンのうちのいずれのポリゴンが複数のパーティションにわたり得るかについて判定するために使用される、1又は複数のポリゴンを解析しても良い。
記憶媒体26は、ナビゲーション・モジュール29を更に含む。ナビゲーション・モジュール29はまた、プロセッサ22により実行されても良い。シミュレーション・アプリケーション28は、実行の間、表示デバイス上にナビゲーション・コントローラを表示するために、ナビゲーション・モジュール29を使用しても良い。ユーザ(例えばアプリケーション開発者)は、表示デバイス24上に表示されるシーン内のグラフィックス・イメージの修正された斜視図を閲覧するために、このナビゲーション・コントローラとインタラクトしても良い。パーティショニング・モジュール27は、それから、修正されたシーンをグラフィカルに分割するために、グラフィックス・イメージの修正された斜視図をオーバーレイするパーティションのグラフィカル表現を表示しても良い。パーティショニング・モジュール27はまた、それから、複数のポリゴンのうちのいずれのが複数のパーティションにわたり得るかについて判定するために、修正された斜視図中にグラフィックス・イメージを作成するために使用される1又は複数のポリゴンを解析しても良い。
一つの態様に従って、図2は、本開示の一つの態様に従って、図1に示されるグラフィックス処理システム4及びアプリケーション・コンピュータ・デバイス20の特定の詳細を示すブロック図である。図2において、アプリケーション・コンピュータ・デバイス20は、デバイス2のグラフィックス処理システム4に接続されることが仮定される。しかし、これは説明の目的のためにだけ示される。他のシナリオでは、アプリケーション・コンピュータ・デバイス20は、多くの他の形のグラフィックス処理システム及びデバイスに接続されても良い。
図2に示されるように、グラフィックス処理システム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のいずれのプロセッサがパフォーマンス・イッシューを有するものである可能性があるかについて、必ずしも分るわけではない。
特に、ビニング・ベースのオペレーション(それにおいては、レンダリングに先立って、プリミティブ・グラフィックス・データが複数のビニング・パーティションにわたって分割される)は、しばしば、特定のパフォーマンス・イッシューを作り出すことがある。例えば、ポリゴン(例えば、図10の例で示される三角形266)が2つの異なるパーティション(例えば、図10に示されるパーティション256と258)にわたる場合に、該ポリゴンは、2つの構成フラグメント(constituent fragments)(パーティションごとに一つ)に分割され、そして、これらの2つの構成フラグメントは、ピクセル・データを含む独立したグラフィックス・イメージに独立してレンダリングされ得る。これらの2つの独立したグラフィックス・イメージは、それから、三角形266のビジュアル表現を作成するために、表示の前に結合される必要があり得る。三角形266の2つのフラグメントのための独立したレンダリング・オペレーションは、2つの関係するグラフィックス・イメージのための結合オペレーションとともに、パフォーマンス・オーバーヘッドを引き起こす可能性がある。
パフォーマンス・ボトルネック及び潜在的な解決を識別する問題を支援するために、図2に示されるように、グラフィックス・デバイス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のうちのいずれの特定の複数のプロセッサがパフォーマンス・イッシューを有する可能性があるかについて識別することができ得る。
さらに、グラフィックス・ドライバー18Aはまた、アプリケーション・コンピュータ・デバイス20にマッピング及び/又はパーティショニング情報33を提供する。図1を参照して前に説明されたように、パーティショニング・モジュール27は、シーンをグラフィカルに分割するために、シーン中でグラフィックス・イメージをオーバーレイする表示デバイス24上でのパーティションのグラフィカル表現を表示するために、受信されたマッピング/パーティショニング情報33を処理しても良い。パーティショニング・モジュール27はまた、データのいずれの部分が該パーティションのうちの複数のものに関連するかについて判定するために、グラフィックス・データ(それはステート/パフォーマンス情報32内に含まれても良い)を解析するために、マッピング/パーティショニング情報33を使用しても良い。
さらに、マッピン/パーティショニング情報33は、グラフィックス・データ(それは1又は複数のグラフィックス・イメージを生成するために使用されても良い)をグラフィックス命令30中の識別された命令にマッピングするマッピング情報を含んでも良い。例えば、マッピング/分割情報33は、グラフィックス命令30のうちの1又は複数を、プリミティブ・グラフィックス・データの部分(例えばポリゴン又はテクスチャー・データ)にマッピングするための情報を含んでも良い。識別されたパフォーマンス・イッシューがこれらの1又は複数の命令に関連すると判定された場合には、マッピング情報は、1又は複数の命令の実行の間、このパフォーマンス・イッシューに同様に関連し得るグラフィックス・データの部分を判定するのに使用されもて良い。一般的に、これらの1又は複数の命令は、実行に応じて、イメージ・データ中にグラフィックス・データの部分をレンダリングする。それゆえ、レンダリングが終了し、そして、イメージ・データが表示された後、そのようなマッピング情報を使用せずに、イッシューに関連するオリジナルのグラフィックス・データを識別することは難しい場合がある。
任意の識別されたパフォーマンス・イッシューに対する回避方法(workaround)又は解決を識別する試行において、開発者は、アプリケーション・コンピュータ・デバイス20上で1又は複数の要求された修正34を開始しても良い。例えば、開発者は、要求された修正34を作成するために、再作成されたイメージ又はステート/パフォーマンス情報32の表現とインタラクトしても良い。場合によっては、開発者は、要求された修正34を生成するために、下でより詳しく説明されるように、ステート/パフォーマンス情報32を直接変更さえしても良い。特定のケースでは、要求された修正34は、グラフィックス・デバイス2のグラフィックス処理システム4におけるグラフィックス命令30のうちの1又は複数の実行を無効にする1又は複数のリクエストを含んでも良いし、又は、1又は複数のグラフィックス命令30を修正するリクエストを含んでも良い。
場合によっては、ユーザは、グラフィックス・シーンの修正された斜視図が表示されるよう要求するために、表示デバイス24上に表示されるナビゲーション・コントローラとインタラクトしても良い。ナビゲーション・モジュール29は、このナビゲーション・コントローラの表示及びこのナビゲーション・コントローラとのインタラクションを管理しても良い。ユーザ・インタフェースを介してユーザにより入力される任意のリクエストは、要求された修正34とともに含まれても良い。
要求された修正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は、更新されたグラフィックス命令及び/又はグラフィックス・データを含んでも良い。場合によっては、更新された命令/情報35はまた、更新された命令をオリジナルの(プリミティブ)グラフィックス・データにマッピングするために、グラフィックス・データ・マッピング情報23からの更新されたマッピング情報を含んでも良い。
アプリケーション・コンピュータ・デバイス20は、更新された命令/情報35のビジュアル表現だけでなく、グラフィックス・イメージの更新された表現を表示するために、更新された命令/情報35を使用しても良い。アプリケーション開発者は、それから、前に識別されたパフォーマンス・イッシューが解決又はさもなければ対処されたかどうかについて判断することができても良い。例えば、アプリケーション開発者は、特定のテクスチャーか、ポリゴン若しくは他の特徴が最適化されたか又は他のパフォーマンス・パラメータが改善されたか判定するために、更新された命令/情報35のビジュアル表現だけでなく、更新されたイメージを解析することができても良い。
更新された命令/情報35はまた、更新されたマッピン及び/又はパーティショニング情報(例えば、命令/情報35内に同様に含まれる命令へのグラフィックス・データの更新されたマッピング)を含んでも良い。更新された命令/情報35の結果として、シーンの更新された斜視図が表示デバイス24に表示される場合には、パーティショニング・モジュール27は、修正された斜視図をオーバーレイし及び修正されたシーンをグラフィカルに分割するパーティションのグラフィカル表現を表示しても良い。パーティショニング・モジュール27はまた、グラフィックス・データのいずれの部分が該パーティションのうちの複数のものに関連するかについて判定するために、修正された斜視図(それはまた更新された命令/情報35内に含まれても良い)のためのグラフィックス・データを解析しても良い。
そのような方法において、アプリケーション開発者は、グラフィックス・デバイス2上のグラフィックス処理システム4のオペレーションをシミュレートするアプリケーション・コンピュータ・デバイス20上の環境内でグラフィックス命令30の実行を速く及び効果的にデバッグ又は解析することができても良い。開発者は、グラフィックス命令30の実行パフォーマンスを最大にするために、シーン又は複数のイメージ・フレームにおける複数のグラフィックス・イメージを解析するために、アプリケーション・コンピュータ・デバイス20上の表示されたイメージ及びステート/パフォーマンス情報と繰り返しインタラクトしても良い。アプリケーション・コンピュータ・デバイス20上のそのようなインタラクション及び表示される情報の例は、下で更に詳細に提示される。
一つの態様に従って、図3は、本開示の一つの態様に従って、図2に示されるグラフィックス・ドライバー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として図3に示される。グラフィックス・ドライバー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に提供しても良い。
マッピング/パーティショニング・モジュール117は、制御プロセッサ10、グラフィックス・プロセッサ12、頂点プロセッサ14及び表示プロセッサ16のうちの1又は複数からマッピング及び/又はパーティショニング情報33を収集し、また、グラフィックス・データ・マッピング情報23(図1)から情報を収集しても良い。マッピング情報は、グラフィックス・データの識別された部分(それは表示のためのグラフィックス・イメージを生成するためにレンダリングされる)を、グラフィックス命令30のうちの1又は複数にマッピングする情報を含んでも良い。このマッピング情報は、個々の命令を、出力イメージをレンダリングするために使用されたオリジナルのグラフィックス・データへマッピングするのに有効であり得る。パーティショニング情報は、レンダリングに先立って別々のグラフィックス・データを構成フラグメントにスプリットするときに、グラフィックス処理システム4内で作成及び使用されるパーティションの数、タイプ、サイズ、形状などを識別する情報を含んでも良い。マッピング/パーティショニング・モジュール117は、マッピング/パーティショニング情報33をアプリケーション・コンピュータ・デバイス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へ提供することができる。
図4Aは、一つの態様に従って、1又は複数の更なるアプリケーション・コンピュータ・デバイス40A〜40Nに接続される、図1に示されるグラフィックス・デバイス2及びアプリケーション・コンピュータ・デバイス20を示すブロック図である。この態様において、図1に示されるように、グラフィックス・デバイス2は、アプリケーション・コンピュータ・デバイス20に接続され、アプリケーション・コンピュータ・デバイス20は、アプリケーション開発者によって使用されても良い。前に説明されたように、グラフィックス・デバイス2は、アプリケーション・コンピュータ・デバイス20へ、グラフィックス命令、ステート/パフォーマンス情報及びマッピング/パーティショニング情報を送信しても良い。アプリケーション・コンピュータ・デバイス20は、グラフィックス・デバイス2へ、1又は複数の要求された修正を送信しても良い。
さらに、アプリケーション・コンピュータ・デバイス20は、1又は複数の更なるアプリケーション・コンピュータ・デバイス40A〜40Nに接続される。アプリケーション・コンピュータ・デバイス40A〜40Nは、グラフィックス・アプリケーションのためのグラフィックス命令の実行の間、出力グラフィックス・イメージ・データをレンダリングするために使用され得るプリミティブ・グラフィックス・データを作成するグラフィックス・アーティストによって使用されても良い。各々のアーティストは、他のアーティストと独立して働いても良く、それゆえ、アプリケーション・コンピュータ・デバイス40A〜40Nは、異なる場所にある独立したデバイスを含んでも良い。
例えば、アプリケーション・コンピュータ・デバイス40Aは、カナダにいるアーティストによって使用されても良い。アプリケーション・コンピュータ・デバイス40Nは、アメリカ合衆国(例えば、シカゴ)にいるアーティストによって使用されても良い。アプリケーション・コンピュータ・デバイス20は、この例において、例えば無線又はネットワーク接続(例えば、インターネット接続)を介するなどして、アプリケーション・コンピュータ・デバイス40A及び40Nのいずれか又は両方と通信することができても良い。多くの場合に、アプリケーション・コンピュータ・デバイス20及びアプリケーション・コンピュータ・デバイス40A〜40Nは、パーソナル・コンピュータ・デバイスを含んでも良く、また、これらのデバイスは、ネットワーク接続(例えばセキュアなネットワーク接続)を介して通信しても良い。特定のケースでは、アプリケーション・コンピュータ・デバイス20は、グラフィックス・デバイス2と同一の場所に配置されても良いが、アプリケーション・コンピュータ・デバイス40A〜40Nから離れて位置しても良い。例えば、アプリケーション・コンピュータ・デバイス40Aがカナダにあり、アプリケーション・コンピュータ・デバイス40Nがシカゴにあるならば、アプリケーション・コンピュータ・デバイス20及びグラフィックス・デバイス2はカリフォルニアにあっても良い。
コンピュータ・デバイス20を使用するアプリケーション開発者がコンピュータ・デバイス40A〜40Nを使用するアーティストと同一の場所に配置されない可能性があるので、アプリケーション開発者がこれらのアーティストとインタラクト又は通信することは必ずしも容易でない場合がある。特に、コンピュータ・デバイス20を使用するアプリケーション開発者が、グラフィックス命令の実行の間、1又は複数のパフォーマンス・イッシューを識別するならば、開発者がアーティストにこれらのイッシューを通知するか、又は、パフォーマンス・イッシューを引き起こす可能性のある、これらのアーティストによって作成されるグラフィックス・データの部分に関して特定の情報をアーティストに提供することは必ずしも容易でない場合がある。本開示の様々な態様に従って、アーティストが、パフォーマンス情報をレビューすることができるように、さらに、パフォーマンス問題のソースである可能性がある、それらが作成したされたグラフィックス・データの部分を速く識別することができるように、コンピュータ・デバイス20は、そのような情報をコンピュータ・デバイス40A〜40Nに自動的に提供することができる。これらのアーティストはまた、グラフィックス・データの変更をすることができ、また、これらの変化がパフォーマンスにどのように影響を及ぼし得るか判定し又は任意のパフォーマンス・イッシューを解決することができても良い。
図4Aに示されるように、コンピュータ・デバイス20は、コンピュータ・デバイス40A〜40Nの各々に、グラフィックス命令、ステート/パフォーマンス情報及びマッピング/パーティショニング情報を送信することができる。例えば、コンピュータ・デバイス20は、コンピュータ・デバイス40A〜40Nに、(それが以前グラフィックス・デバイス2から受信した)グラフィックス命令30(図1)、ステート/パフォーマンス情報32及びマッピング/パーティショニング情報33を送信しても良い。各々のコンピュータ・デバイス40A〜40Nは、レンダリングされた画像データのビジュアル表現を作成するために、更にステート及びパフォーマンス情報を表示するために、受信された命令及び情報を使用することができても良い。場合によっては、アーティストがパーティションの表示及びそのようなパーティションがどのようにシーンを分割するかを閲覧することができるように、各々のコンピュータ・デバイス40A〜40Nは、グラフィカル・シーンをオーバーレイするグラフィカル・パーティションの表現を表示しても良い。さらに、各々のコンピュータ・デバイス40A〜40Nはまた、任意の識別されたパフォーマンス・イッシューに関連するグラフィックス命令を、対応するアーティストによって作成されたオリジナルのプリミティブ・グラフィックス・データの特定の部分にマッピングするために、受信された情報を解析しても良い。このように、アーティストは、命令の実行に基づいてパフォーマンス情報をレビューすることができ、また、アーティストによって作成されるデータがグラフィックスのいずれの部分に関連するか又は特定のパフォーマンス・イッシューの原因になり得るかについて速く識別することができる。パフォーマンス・イッシューは、特定のテクスチャーのサイズ、特定のポリゴンのサイズ、ブレンディングの量又はその種の他のものに関係しても良い。
任意の個々のアーティストは、グラフィックス・データのこれらの識別された部分に対して1又は複数の修正を施すことを望むことがある。例えば、識別されたパフォーマンス・イッシューがテクスチャーのサイズに関係するならば、アーティストはテクスチャーを調整したいかもしれない。他の識別されたパフォーマンス・イッシューが特定のポリゴンのサイズに関係するならば、アーティストは、パフォーマンス・イッシューを処理、解決又はさもなければ軽減する努力において、ポリゴンをスプリットすること、ポリゴンを削除すること、又は、ポリゴンを移動することを選択しても良い。任意の変更が、アプリケーション・コンピュータ・デバイス20へ送信されても良い。そして、それは、それから、(例えば前に説明された)処理のために、元のグラフィックス・デバイス2へ送信される要求された修正34内にそのような変更を含んでも良い。
グラフィックス・デバイス2からの更新された命令/情報35の受信に応じて、コンピュータ・デバイス20は、そのような情報を解析しても良く、さらに、更新された命令/情報を、要求された修正を送信したリモート・コンピュータ・デバイス(例えば、デバイス40A)に提供しても良い。更新された命令/情報は、更新されたマッピング情報を含んでも良い。この例では、コンピュータ・デバイス20及び/又は40Aは、パフォーマンス・イッシューが解決されたか又はさもなければ軽減されたかどうか判定するために、更新された命令/情報を使用又は解析しても良い。場合によっては、コンピュータ・デバイス20は、パフォーマンス・イッシューが解決されたかどうかに関して、インジケーションを、コンピュータ・デバイス40Aに送信しても良い。そのような方法において、アーティストは、コンピュータ・デバイス20及びグラフィックス・デバイス2から自動的にデータを受信することる効率的な方法で、オリジナルのグラフィックス・データに対する任意の要求された変更が、パフォーマンス・イッシューを解決し得たかどうか判定しても良い。パフォーマンス・イッシューが軽減されなかったか又は完全には解決されなかったならば、アーティストが問題を解決するために反復的な方法でグラフィックス・データに対する修正をし続けようとし得るように、更新された命令/情報は、未解決の問題に関連するグラフィックス・データの特定の部分を識別するために使用され得る更新されたマッピング情報を含んでも良い。
図4Bは、一つの態様に従って、図4Aに示される更なるアプリケーション・コンピュータ・デバイス40Aのうちの一つの更なる詳細を示すブロック図である。場合によっては、図4Aに示されるコンピュータ・デバイス40A〜40Nの各々は、図4Bに示されるコンピュータ・デバイスと同様のデザインを有しても良い。
図4Bの例において、アプリケーション・コンピュータ・デバイス40A(それはグラフィックス・アーティストによって使用されても良い)は、図1に示されたアプリケーション・コンピュータ・デバイス20と同様のデザインを有する。場合によっては、コンピュータ・デバイス40Aは、パーソナル・コンピュータ・デバイス(例えばラップトップ又はデスクトップ・コンピュータ)を含んでも良い。アーティストは、オリジナルのプリミティブ・グラフィックス・データ(例えば、ポリゴン及び/又はテクスチャー・データ)を作成するために、コンピュータ・デバイス40Aを使用しても良い。そして、それは、グラフィックス・アプリケーションにおけるグラフィックス・シーン(例えば、3Dシーン)に組み込まれても良い。
図4Bに示されるように、コンピュータ・デバイス40Aは、1又は複数のプロセッサ122及び表示デバイス124を含む。表示デバイス124は、例えばLCD(液晶ディスプレイ)、プラズマ・ディスプレイ・デバイス又は他のテレビ(TV)表示デバイスのような、表示目的の画像データを表示することができる任意のデバイスであっても良い。コンピュータ・デバイス40Aはまた、記憶媒体126を含む。記憶媒体126は、メモリを含んでも良い。記憶媒体126は、命令及び/又はデータ(例えば、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、リードオンリーメモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、埋め込まれたダイナミックランダムアクセスメモリ(eDRAM)、スタティックランダムアクセスメモリ(SRAM)又はフラッシュメモリ)を格納することができるどんな永久であるか不安定なメモリでも含んでも良い。
記憶媒体126は、プロセッサ122により実行されるときに、アーティストが、表示デバイス124上に表示されるグラフィックス・データを作成することを可能にするDCC(デジタル・コンテンツ・クリエーション)アプリケーション127を含んでも良い。記憶媒体126はまた、シミュレーション・アプリケーション128、パーティショニング・モジュール130、グラフィックス・データ・マッピング・モジュール132、ナビゲーション・モジュール134及び命令マッピング情報136を含む。これらのモジュール及びデータ・ストアは、シミュレーション・アプリケーション28(図1)、パーティショニング・モジュール27、グラフィックス・データ・マッピング・モジュール25、ナビゲーション・モジュール29及び命令マッピング情報31と同様である。このように、グラフィックス命令、ステート/パフォーマンス情報及びマッピング/パーティショニング情報を処理するときに、更に、要求された修正を作成するときに、コンピュータ・デバイス40Aは、コンピュータ・デバイス20と同様に機能しても良い。コンピュータ・デバイス40Aにおいて、アーティストが、グラフィックス・データを作成及び修正するために使用されるDCCツールの使用とともに、要求された修正をし得るだけでなく、グラフィックス及びパフォーマンス情報を閲覧し得るように、これらの機能はまた、DCCアプリケーション127に組み込まれても良い。このように、アーティストがDCCツール内でグラフィックス・データの変更をするならば、これらの変更は、コンピュータ・デバイス20へ送信される要求された修正として処理されることができる。
図5は、一つの態様に従って、個々のグラフィックス命令とグラフィックス・データとの間の例示的なマッピングを示す概念図である。図5の例において、示されたグラフィックス命令30A〜30Nは、図1に示されるグラフィックス命令30の一部であると仮定される。一つの態様において、図5に示される例示的なマッピングは、グラフィックス・デバイス2のグラフィックス・データ・マッピング情報23内のマッピング情報として捕捉されても良い。
図5に示されるように、個々のグラフィックス命令30A〜30Gは、グラフィックス・データ140に関連しても良く、また、それによって、グラフィックス・データ140にマッピングされても良い。例えば、グラフィックス命令30A〜30Gは、グラフィックス・アプリケーション内のグラフィックス・データ140にバインドされていても良く、また、実行に応じてグラフィックス・データ140を画像データにレンダリングするドロー命令を含んでも良い。場合によっては、グラフィックス・データ・マッピング情報23は、グラフィックス命令30A〜30Gをグラフィックス・データ140にマッピングする情報を含んでも良い。図5の例において、グラフィックス・データ140は、ポリゴン(例えば、三角形)データ142及びテクスチャー・データ144を含むプリミティブ・グラフィックス・データを含む。テクスチャー・データ144は、ポリゴン・データ142内で定義されるポリゴンのためのテクスチャーを含んでも良い。ポリゴン・データ142及びテクスチャー・データ144は、グラフィックス・シーン(例えば三次元グラフィックス・シーン)内に含まれるグラフィックス・データ140の構成部分を含んでも良い。
図5に示される概念図から明白であるように、アプリケーション・コンピュータ・デバイス20及び/又はアプリケーション・コンピュータ・デバイス40A〜40Nは、グラフィックス命令30A〜30Gをグラフィックス・データ140にマッピングするマッピング情報を使用しても良い。このように、例えば、グラフィックス命令30A〜30Gが、画像データをレンダリングする命令の実行の間の特定のパフォーマンスに関連するならば、マッピング情報は、グラフィックス・データ140を、パフォーマンス・イッシューに関連し得る又はパフォーマンス・イッシューの原因になり得るオリジナルの、プリミティブ・グラフィックス・データとして識別する。例えば、パフォーマンス・イッシューがテクスチャリングの過剰又はオーバーサイズのポリゴンに関係するならば、グラフィックス・データ140は、過度のテクスチャリング(例えば、テクスチャー・データ144内で)又はオーバーサイズのポリゴン(例えば、ポリゴン・データ142内で)の原因である場合がある。グラフィックス・データ140を作成又は生成したアーティストは、イッシューを解決するために、例えばテクスチャー・データ144の調整又はポリゴン・データ142内の1又は複数のポリゴンのサイズの変更などによって、識別されたグラフィックス・データ140だけでなく、パフォーマンス・イッシューをチェックすることができても良い。
図5はまた、グラフィックス命令30H〜30Nが、グラフィックス・データ146にマッピングされることを示す。そして、それは、グラフィックス・データ140から独立している。グラフィックス命令30H〜30Nは、したがって、グラフィックス・データ146内に含まれるポリゴン・データ148及びテクスチャー・データ150に関連する。
図6は、一つの態様に従って、アプリケーション・コンピュータ・デバイス20(図1)又はアプリケーション・コンピュータ・デバイス40A〜40N(図4A)のうちの任意の一つにより実行され得る第1の方法のフローチャートである。説明の便宜のためだけに、本方法は、アプリケーション・コンピュータ・デバイス20により実行されると仮定される。
アプリケーション・コンピュータ・デバイス20は、外部デバイス(例えばグラフィックス・デバイス2)から、グラフィックス命令30を受信しても良い(170)。グラフィックス命令30は、プリミティブ・グラフィックス・データから画像データをレンダリングして、1又は複数のグラフィックス・イメージ(例えば3次元(3D)グラフィックス・イメージ)を表示デバイス6上に表示するために、グラフィックス・デバイス2により実行される。一つの態様において、グラフィックス命令30は、実行されるときに、グラフィックス・イメージをレンダリングするコール・ストリームを含む。一つの態様において、コール・ストリームは、アプリケーション・プログラミング・インタフェース(API)命令から生成されるバイナリ命令を含む。
コンピュータ・デバイス20はまた、グラフィックス・デバイス2からマッピング/パーティショニング情報33を受信しても良い。そして、それは、グラフィックス命令30の実行の間、グラフィックス命令30を、グラフィックス・イメージをレンダリングするために使用されるプリミティブ・グラフィックス・データにマッピングする情報を含む(172)。プリミティブ・グラフィックス・データは、グラフィカル・シーンの構成セグメントを含むポリゴン・データ及びテクスチャー・データのうちの少なくとも一つを含んでも良い。
マッピング情報は、少なくとも一つのグラフィックス命令の実行の間、グラフィックス命令30内の少なくとも一つのグラフィックス命令を、1又は複数のグラフィックス・イメージをレンダリングするために使用されるプリミティブ・グラフィックス・データの部分にマッピングする情報を含んでも良い。コンピュータ・デバイス20は、グラフィックス・デバイス2から、ステート/パフォーマンス情報32を受信しても良い(174)。ステート/パフォーマンス情報32は、グラフィックス・デバイス2上でのグラフィックス命令30の実行に関連する。ステート/パフォーマンス情報32は、グラフィックス命令30及びプリミティブ・グラフィックス・データの部分のうちの少なくとも一つの実行に関連するパフォーマンス情報を含んでも良い。
ステート/パフォーマンス情報32はまた、グラフィックス・デバイス2がグラフィックス・イメージをレンダリングするときの、グラフィックス・デバイス2の1又は複数のステートを示すステート情報を含んでも良い。ステート情報は、グラフィックス命令30を実行するグラフィックス・デバイス2の1又は複数のプロセッサ(例えば、制御プロセッサ10、図形プロセッサ12、頂点プロセッサ14及び/又は表示プロセッサ16)からのステート情報を含んでも良い。場合によっては、ステート情報は、プリミティブ・グラフィックス・データ(例えばグラフィックス・イメージ・データをレンダリングするためにグラフィックス・デバイス2においてグラフィックス・プロセッサ12により使用されるプリミティブ・ポリゴン・データ)を含んでも良い。
コンピュータ・デバイス20は、グラフィカル・シーンにおいて、グラフィックス命令30及びステート/パフォーマンス情報32に基づいて、1又は複数のグラフィックス・イメージの表現を表示しても良い。そのような方法において、コンピュータ・デバイス20は、グラフィックス・デバイス2をシミュレートするシミュレーションされた環境内で、これらのグラフィックス・イメージの表現を表示することができる。シミュレーションされた環境は、コンピュータ・デバイス20のプロセッサ22の上で、シミュレーション・アプリケーション28の実行を通して提供されても良い。
コンピュータ・デバイス20は、グラフィックス命令30のうちの少なくとも一つの実行に関連するパフォーマンス・イッシューを識別しても良い(176)。このパフォーマンス・イッシューは、例えば、極端に大きなポリゴン、過度のテクスチャリング、過度のブレンディング、又はその種の他のものに起因する増加したプロセッサ利用に関連する場合がある。場合によっては、プリミティブ・グラフィックス・データの部分が、1又は複数のポリゴンを含むとき、コンピュータ・デバイス20は、マッピング情報により指定されるような関連するグラフィックス命令30のうちの少なくとも一つの実行に基づくパフォーマンス・イッシューに関連する1又は複数のポリゴンを識別するために、受信されたマッピング情報を使用しても良い。コンピュータ・デバイス20は、場合によっては、プリミティブ・グラフィックス・データの部分に関連するパフォーマンス・イッシューを識別するために、グラフィックス・デバイス2からの任意の受信されたパフォーマンス情報を解析しても良い。
コンピュータ・デバイス20は、それから、少なくとも一つのグラフィックス命令の実行に基づくパフォーマンス・イッシューに関連するプリミティブ・グラフィックス・データをの部分識別するために、マッピング情報を使用しても良い(178)。さらに、コンピュータ・デバイス20は、表示デバイス24上に、命令30内の少なくとも一つのグラフィックス命令に基づくパフォーマンス・イッシューに関連するグラフィックス・データの部分の表現及び任意の受信されたステート情報を表示しても良い(180)。
一つの態様において、コンピュータ・デバイス20は、ナビゲーション・コントローラを表示デバイス24上に表示するために、ナビゲーション・モジュール29(図1)を使用しても良い。ユーザは、スクリーン上のグラフィカル・ユーザ・インタフェースを介して表示されるナビゲーション・コントローラとインタラクトしても良い。このグラフィカル・ユーザ・インタフェースは、ナビゲーション・コントローラとインタラクトするために、ユーザ入力を受信しても良い。コンピュータ・デバイス20は、表示デバイス24上に、ユーザ入力に基づくプリミティブ・グラフィックス・データの部分の表現の修正された斜視図を表示しても良い。
グラフィックス命令を受信すること(170)、マッピング情報を受信すること(172)、パフォーマンス情報を受信すること(174)、パフォーマンス・イッシューを識別すること(176)、グラフィックス・データの部分を識別することと(178)及び表示すること(180)は、複数のイメージ又は画像フレームについて繰り返されても良い(182)。グラフィックス・イメージが変更するので、あるいは、イメージの代わりの斜視図が複数のフレームにおいて示されるので、ユーザ(例えば、アプリケーション開発者)は、命令の実行の間、イメージに関連するグラフィックス・データと任意の識別されたパフォーマンス・イッシューとの間の関係を連続的に確認することができる。これらのイッシューを軽減又は解決しようとして、ユーザは、それから、適切なアクションをとっても良い。
図7は、一つの態様に従って、アプリケーション・コンピュータ・デバイス20(図1)又はアプリケーション・コンピュータ・デバイス40A〜40N(図4A)のうちの任意の一つにより実行され得る第2の方法のフローチャートである。説明の便宜のために、図7に示される方法は、アプリケーション・コンピュータ・デバイス40Aにより実行されると仮定される。
図7に示されるように、アプリケーション・コンピュータ・デバイス40Aは、外部デバイス(例えばアプリケーション・コンピュータ・デバイス20)から、グラフィックス命令を受信しても良い(184)。コンピュータ・デバイス20は、それがグラフィックス・デバイス2から受信するグラフィックス命令30に基づいて、これらの命令を、コンピュータ・デバイス40Aに送信しても良い。
コンピュータ・デバイス40Aはまた、コンピュータ・デバイス20から受信された命令を、グラフィックス・データ(例えばポリゴン・データ又はテクスチャー・データ)にマッピングするマッピング情報を、コンピュータ・デバイス20から受信しても良い(186)。コンピュータ・デバイス20は、それがグラフィックス・デバイス2から受信するマッピング/パーティショニング情報33に基づいて、このマッピング情報を、コンピュータ・デバイス40Aに送信しても良い。
グラフィックス命令及びマッピング情報の受信に応じて、コンピュータ・デバイス40Aは、パフォーマンス・イッシューに関連するグラフィックス・データの部分を識別するために、受信されたマッピング情報を使用しても良い(188)。コンピュータ・デバイス40Aは、コンピュータ・デバイス20から受信される、受信されたグラフィックス命令及び/又は他の情報(例えばステート/パフォーマンス情報又はパーティショニング情報)に基づいて、パフォーマンス・イッシューを識別しても良い。一つの態様において、コンピュータ・デバイス20が、グラフィックス命令30、ステート/パフォーマンス情報32及び/又はマッピング/パーティショニング情報33に基づいて、パフォーマンス・イッシューを識別し得るとき、コンピュータ・デバイス20は、プリミティブ・グラフィックス・データの部分に関連するパフォーマンス・イッシューのインジケーションを、コンピュータ・デバイス40Aへ送信しても良い。
コンピュータ・デバイス40Aは、例えばコンピュータ・デバイス40Aを使用するアーティストなどからの、プリミティブ・グラフィックス・データの部分に対する要求された修正を指定する、ユーザ入力を受信しても良い(190)。コンピュータ・デバイス40Aは、処理のために、コンピュータ・デバイス20に要求された修正を送信しても良い(192)。要求された修正の受信に応じて、コンピュータ・デバイス20は、それがグラフィックス・デバイス2に送信する要求された修正34内に、要求された修正を含んでも良い。コンピュータ・デバイス20が更新された命令/情報35(それは要求された修正に関連する更新されたパフォーマンス情報を含んでも良い)をグラフィックス・デバイス2から受信する後、コンピュータ・デバイス20は、更新された命令/情報をコンピュータ・デバイス40Aに提供しても良い。
コンピュータ・デバイス40Aは、パフォーマンス・イッシューが解決されたかどうか判定するために、更新された命令/情報(それは更新されたパフォーマンス情報を含んでも良い)を受信しても良い(194)。更新されたパフォーマンス情報は、以前コンピュータ・デバイス40Aによりコンピュータ・デバイス20へ送信された要求された修正に関連する。コンピュータ・デバイス20及びコンピュータ・デバイス40Aのいずれか又は両方は、パフォーマンス・イッシューが解決されたか又は解決されなかったかについて判定するために、更新されたパフォーマンス情報を解析しても良い。場合によっては、コンピュータ・デバイス20は、イッシューが解決された否か示すインジケーションを、コンピュータ・デバイス40Aに送信しても良い。
コンピュータ・デバイス20により送信され、コンピュータ・デバイス40Aにより受信される更新された命令/情報は、要求された修正に関連する少なくとも一つの更新されたグラフィックス命令を含んでも良い。さらに、更新された命令/情報はまた、少なくとも一つの更新されたグラフィックス命令を、少なくとも一つの更新されたグラフィックス命令の実行に関連するプリミティブ・グラフィックス・データの第2の部分にマッピングする更新された情報を含む更新されたマッピング情報を含んでも良い。そのような方法において、アーティストは、重要なプリミティブ・グラフィックス・データの第2の部分を識別することができても良い。そして、それは、第1の部分と異なっても良い。プリミティブ・グラフィックス・データの第2の部分は、場合によっては、アーティストにより処理されるべき同一又は異なるパフォーマンス・イッシューに関連しても良い。
一つの態様において、コンピュータ・デバイス40Aは、表示デバイス124上に、少なくとも一つのグラフィックス命令に基づくパフォーマンス・イッシューに関連するプリミティブ・グラフィックス・データの部分の表現を表示しても良く、また、プリミティブ・グラフィックス・データの部分をオーバーレイするパーティションの表現を表示しても良い。コンピュータ・デバイス40Aは、場合によっては、パーティションの表現を表示するために、それがコンピュータ・デバイス20から受信するパーティショニング情報を使用しても良い。コンピュータ・デバイス40Aは、プリミティブ・グラフィックス・データの部分が該パーティションのうちの複数のものに関連するかどうか判定するために、プリミティブ・グラフィックス・データの部分を解析しても良い。
場合によっては、プリミティブ・グラフィックス・データの部分は、複数の三角形を含んでも良く、また、コンピュータ・デバイス40Aは、三角形のうちのいずれが、該パーティションのうちの複数のものにわたるか判定しても良い。コンピュータ・デバイス40Aは、該パーティションのうちの複数のものにわたる三角形のグラフィカル表現を表示デバイス124上に表示しても良い。
グラフィックス命令を受信すること(184)、マッピング情報を受信すること(186)、グラフィック・データの部分を識別すること(188)、ユーザ入力を受信すること(190)、要求された修正を送信すること(192)及び更新された情報を受信すること(194)は、複数のイメージ又は画像フレームについて繰り返されても良い(196)。グラフィックス・イメージが変更するので、あるいは、イメージの代わりの斜視図が複数のフレームにおいて示されるので、ユーザ(例えば、アーティスト)は、命令の実行の間、イメージに関連するグラフィックス・データと任意の識別されたパフォーマンス・イッシューとの間の関係を連続的に確認することができる。これらのイッシューを軽減又は解決しようとして、ユーザは、それから、適切なアクションをとっても良い。
図8は、一つの態様に従って、グラフィック・ウインドウ203中に情報を表示するための表示デバイス201に接続されるグラフィックス・デバイス200の例を示す概念図である。例えば、グラフィックス・デバイス200がグラフィックス・デバイス2(図1)の一部であるならば、表示デバイス201は、アプリケーション・コンピュータ・デバイス20のグラフィックス・デバイス24の一部であっても良い。グラフィックス・デバイス200は、3Dグラフィックス・イメージ202を表示することができる。表示デバイス201は、グラフィックス・デバイス200から送信されるグラフィックス命令及びステート/パフォーマンス情報に基づいて、ウインドウ203中に、3Dグラフィックス・イメージ210(それはグラフィックス・イメージ202の改造(re-creation)である)を表示することができる。開発者がグラフィックス・イメージ210又はグラフィックス・イメージ210を含む全体のシーンを修正するために、これらの命令及びステート/パフォーマンス情報を変更し得るように、表示デバイス201はまた、これらの命令及びステート/パフォーマンス情報のビジュアル表現を表示することができる。表示デバイス201は、グラフィックス・デバイス200に接続された任意のタイプのコンピュータ・デバイス(図示せず)中に含まれても良く、また、グラフィックス・デバイス200からそのような命令及びステート/パフォーマンス情報を受信することができる。(簡単にするために、表示デバイス201を含むコンピュータ・デバイスは、図9に示される概念図から省略された。)
前に説明されたように、グラフィックス・デバイス200は、3Dグラフィックス・イメージ202(それは図8の例における立方体である)の表示ができる。グラフィックス・デバイス200はまた、キーパッド204を有する。ユーザは、グラフィックス・デバイス200を操作するために、キーパッド204とインタラクトしても良い。キーパッド204は、幾つかのキー及び/又はボタンを含んでも良い。グラフィックス・デバイス200は、コネクタ206を介して、グラフィックス・デバイス201を含むデバイス(例えば、アプリケーション・コンピュータ・デバイス20)に、グラフィックス命令及びステート/パフォーマンス情報を送信することができる。一つの態様において、コネクタ206は、ユニバーサルシステムバス(USB)コネクタを含む。他の態様において、異なる形のコネクタが、使用されても良い。幾つかの態様において、無線通信がコネクタ206を置き換えても良い。
図8の例において示されるように、表示デバイス201は、グラフィカル・ユーザ・インタフェース内に様々なタイプの情報を表示しても良い。この例では、表示デバイス201は、グラフィカル・ユーザ・インタフェース内にグラフィカル・ウインドウ203を表示する。ウインドウ203は、表示エリア211、グラフィックス命令エリア208及びステート/パフォーマンス情報エリア214を含む。表示エリア211は、3Dグラフィックス・イメージ210を含む。そして、それは、前に説明されたように、3Dグラフィックス・イメージ202の改造(re-creation)である。この例において、3Dグラフィックス・イメージは、立方体を含む。一つの態様に従って、表示デバイス201に表示される情報は、デバッギング及びテストの目的のために、グラフィックス・デバイス202上に表示される情報の表現又はシミュレーションを含む。
グラフィックス命令エリア208は、グラフィックス・デバイス200から受信された1又は複数のグラフィックス命令のビジュアル表現を含む。前に説明されたように、そのような命令のビジュアル表現は、そのような命令の表現を含んでも良い。例えば、グラフィックス・デバイス200がバイナリのグラフィックス命令を送信するならば、表示デバイス201は、他の形(例えば、よりハイレベルなアプリケーション・プログラミング・インタフェース(API)命令(例えば、OpenGL命令))で、そのようなバイナリ命令の表現を表示しても良い。マッピング情報(例えば、図1に示されるマッピング情報31)は、受信されたバイナリ命令を、グラフィックス命令エリア208NAIに表示され得る他のフォーマットにマッピングするために、使用されても良い。
ステート/パフォーマンス情報エリア214は、グラフィックス・デバイス200から受信されたステート及び/又はパフォーマンス情報のビジュアル表現を含む。受信されたグラフィックス命令及びステート/パフォーマンス情報は、表示エリア内に3Dグラフィックス・イメージ210を表示するために使用されても良い。一つの態様において、グラフィックス・デバイス200は、様々なステート及び/又はパフォーマンス・データを提供するために、ステート/パフォーマンス・データ・モジュール(例えば、図3に示されるステート/パフォーマンス・データ・モジュール116)を実装するグラフィックス・ドライバーを利用しても良い。受信されたステート/パフォーマンス情報は、グラフィックス・データ(例えば、プリミティブ・データ及び/又はラスタライズされたデータ)を含んでも良い。
ウインドウ203又は、1又は複数のセレクター212A〜212Nを含む。ユーザは、これらのセレクター212A〜212Nの任意のものを選択しても良い。各々のセレクター212A〜212Nは、下で更に詳細に説明されるように、異なる機能(例えば統計及びナビゲーション機能)に関連し得る。ウインドウ203は、セレクター216A〜216N及び218A〜218Nを更に含む。そして、それぞれは、ユーザにより選択されても良い。各々のセレクター216A〜216N及び218A〜218Nはまた、図9を参照して下で更に詳細に説明されるように、異なる機能(例えば、メトリック機能、、オーバーライド機能及び/又はテクスチャー機能)に関連し得る。
ユーザ(例えばアプリケーション開発者)は、ウインドウ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は、パフォーマンス・イッシューに関連するグラフィックス・データのための情報を表示しても良い。例えば、表示デバイス201を含むコンピュータ・デバイス(例えば、アプリケーション・コンピュータ・デバイス20)は、命令の実行の間、グラフィックス命令を、グラフィックス・イメージ210をレンダリングするために使用されるプリミティブ・グラフィックス・データにマッピングする情報を含むマッピング情報を、グラフィックス・デバイス200から受信しても良い。コンピュータ・デバイスは、グラフィックス命令のうちの少なくとも一つの実行に関連するパフォーマンス・イッシューを識別しても良く、また、パフォーマンス・イッシューに関連するグラフィックス・データの部分を識別するために、マッピング情報を使用しても良い。パフォーマンス・イッシューは、場合によっては、特定のテクスチャーのサイズ、特定のポリゴンのサイズ、ブレンディングの量又はその種の他のものに関係しても良い。グラフィックス・データの部分は、パフォーマンス・イッシューの原因に関係し得るポリゴン又はテクスチャー・データを含んでも良い。グラフィックス・デバイス201は、いずれの部分が識別されたパフォーマンス・イッシューに関係するかについてハイライトするために、ウインドウ203内でグラフィックス・データの部分の表現を表示しても良い。例えば、グラフィックス・データの部分が、グラフィックス・イメージ210をレンダリングするために使用される部分であるならば、グラフィックス・デバイス201は、一つの態様において、イメージ210のソースであるグラフィックス・データが、識別されたパフォーマンス・イッシューに関連することを示すために、表示エリア211内にグラフィックス・イメージ210を表示しても良い。
アプリケーション開発者は、パフォーマンス・イッシューを軽減又は解決しようとして、グラフィックス・データ又は関連するイメージ210の部分に対して修正を施すことを選択しても良い。例えば、開発者は、命令エリア208中に示される命令、ステート/パフォーマンス情報エリア214中に示される情報又はイメージ210の斜視図のうちの1又は複数を修正しても良い。場合によっては、開発者は、イメージ210に関連するテクスチャーを修正しても良いし、あるいは、イメージ210に関連するポリゴン・データを修正しても良い。これらの要求された修正は、グラフィックス・デバイス200に送信される。そして、それは、要求された修正を処理して、アップデートされたマッピング及び/又はパフォーマンス情報を含む更新された命令/情報を送信する。グラフィックス・デバイス201は、それから、イメージ210に関連するグラフィックス・データに関係する更新された情報を表示しても良く、また、パフォーマンス・イッシューが解決したかどうか関するインジケーションを提供するために、イメージ210の更新されたビューを、表示エリア211内に表示しても良い。
ユーザは、実験又は試行/エラー・デバッギングの目的のために、ウインドウ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内の任意のステートを修正することができる。
一つの態様において、表示デバイス201はまた、複数のパーティションにわたり得るポリゴン・データだけでなく、パーティショニング情報を表示することができる。例えば、アプリケーション開発者は、表示デバイス201に、イメージ210をオーバーレイさせ、そして、表示エリア211中のシーンをグラフィカルに分割するパーティション(例えば、長方形の形のパーティション)のグラフィカル表現を表示させるために、ボタン(例えば、ボタン212A〜212Nのうちの1つ)を選択しても良い。場合によっては、デバイス200がグラフィックス・デバイス2の一部であるとき、表示されたパーティションは、受信されたマッピング/パーティショニング情報33(図1)に基づいても良い。表示デバイス201を含むデバイスはまた、グラフィックス・データのいずれの部分が該パーティションのうちの複数のものに関連するかについて判定するために、グラフィックス・イメージ210のためのグラフィックス・データ(例えば、ポリゴン・データ)を解析しても良い。例えば、複数のポリゴンがグラフィックス・イメージ210をレンダリングするために使用されるならば、デバイスは、これらのポリゴンのいずれが複数のパーティションにわたるかについて判定するためにポリゴンを解析しても良い。
図9は、一つの態様に従って、グラフィカル・ウインドウ220中に情報を表示する表示デバイス201に接続されるグラフィックス・デバイス200の他の例を示す概念図である。この態様において、ウインドウ220は、メトリック情報だけでなく、様々な命令情報を含む。
例えば、グラフィックス命令エリア208内に、様々なグラフィックス命令242が示される。グラフィックス命令242は、グラフィックス・デバイス200により提供されるグラフィックス命令のサブセットである場合がある。例えば、グラフィックス・デバイス200がグラフィックス・デバイス2の一部であるならば、グラフィックス命令242はグラフィックス命令30のサブセットであっても良い。場合によっては、マッピング情報(例えば、図1に示されるマッピング情報31)は、グラフィックス・デバイス200から受信される到来命令(incoming instructions)を、グラフィックス命令エリア208内に表示される命令242として実体化される、これらの命令のビジュアル表現にマッピングするために使用されても良い。例えば、受信された命令がバイナリ形式であるならば、命令242はバイナリ形式の命令を生成するために使用されたAPI命令を含んでも良い。
図9の例に示されるように、グラフィックス命令242は、ハイレベル命令及びローレベル命令の両方を含む。ユーザ(例えばアプリケーション開発者)は、命令242のフルセットを閲覧するために、スクロールバー244を使用しても良い。特定のハイレベル命令は、1又は複数のローレベル命令(例えば、より低いレベルのAPI命令)を含んでも良い。アプリケーション開発者は、場合によっては、関連するハイレベル命令の一部である又は関連するハイレベル命令により実行される、任意のローレベル命令を閲覧するために、特定のハイレベル命令の上で(例えば、クリックすることなどによって)選択しても良い。前に説明されたように、受信されたグラフィックス命令(例えば命令242)は、グラフィックス・イメージ202の表現を生成するために使用される。そして、それは、ウインドウ220の表示エリア211中に示されるグラフィックス・イメージ210を含む。マッピング情報は、1又は複数の命令242を、1又は複数のパフォーマンス・イッシューに関連し得る又はその潜在的な原因になり得るグラフィックス・データの部分へマッピングしても良い。
様々な選択ボタンは、図9中のステート/パフォーマンス情報エリア214の下に示される。これらの選択ボタンは、テクスチャー・ボタン236、オーバーライド・ボタン238及びメトリック・ボタン240を含む。図9の例において、アプリケーション開発者は、メトリック・ボタン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のグラフィックス・ドライバー(例えば、図3に示されるグラフィックス・ドライバー18)により提供されても良い。このグラフィックス・ドライバーは、それからウインドウ220内にメトリック・データとして表示され得る様々なデータを提供するために、ハードウェア・カウンタ・モジュール(例えば、図3のハードウェア・カウンタ・モジュール114)及び/又はプロセッサ使用モジュール(例えば、図3のプロセッサ使用モジュール112)を実装しても良い。
開発者はまた、場合によっては、テクスチャー・ボタン236を選択しても良い。選択に応じて、グラフィックス・イメージ210に関係する様々な形のテクスチャー情報が、グラフィックス・デバイス201により表示されても良い。例えば、テクスチャー情報は、ウインドウ220内に(例えばステート/パフォーマンス情報エリア214内などに)表示されても良い。場合によっては、テクスチャー情報は、更なる(例えば、ポップアップ)ウインドウ(図示せず)内に表示されても良い。開発者は、表示されたテクスチャー情報を閲覧しても良いが、また、場合によっては、テクスチャー情報を修正しても良い。これらの場合、テクスチャー情報に対する任意の修正が、要求された修正として、グラフィックス・デバイス200へ伝播されても良い。グラフィックス・デバイス200からの更新された命令/情報の受信に応じて、グラフィックス・イメージ210に対する変更が、表示エリア211内に表示されても良い。図11は、テクスチャー・ボタン236の選択に応じて表示され得る特定のテクスチャー情報を含む。
受信されたマッピング情報が、このグラフィックス・データが命令242(又は命令242のためのバイナリのソース命令)のうちの1又は複数の実行の間のパフォーマンス・イッシューに関連することを示したならば、開発者は、イメージ210を生成するために使用されたグラフィックスに関連するテクスチャー情報を修正することを要求しても良い。命令の実行の間にイメージ210をレンダリングするために使用されたソース・グラフィックス・データ(それはポリゴンとテクスチャー・データを含む)が、パフォーマンス問題の潜在的なソースであるならば、開発者は、テクスチャー・データ及び/又はポリゴン・データを修正したいかもしれない。
開発者はまた、場合によっては、オーバーライド・ボタン238を選択しても良い。オーバーライド・ボタン238の選択の後、特定の情報(命令及び/又はステート)が、(例えば、ウインドウ220又は他のウインドウ内に)表示されても良い。そして、それは、開発者によって、修正又はオーバーライドされても良い。任意の修正又はオーバーライドは、グラフィックス・デバイス200に送信される1又は複数の要求された修正の中に含まれても良い。一つの態様において、グラフィックス・デバイス200は、任意の要求された修正を処理するために、グラフィックス・ドライバー(例えばグラフィックス・ドライバー18A(図3))を実装しても良い。例えば、グラフィックス・デバイス200は、1又は複数のオーバーライドを含むそのような要求された修正を処理するために、オーバーライド・モジュール120を使用しても良い。
場合によっては、開発者は、グラフィックス命令エリア208内に示されるグラフィックス命令242上の1又は複数をオーバーライドしても良い。これらの場合、開発者は、グラフィックス命令242のうちの1又は複数を修正又はオーバーライドするために、グラフィックス命令エリア208内に情報をタイプ又は入力しても良い。これらの修正は、それから、グラフィックス・デバイス200に送信されても良い。そして、それは、表示エリア211内のグラフィックス・イメージ210の表示を更新するために、更新された命令/情報を提供するであろう。開発者は、命令242により提供される1又は複数の機能をオーバーライドするために、例えば、グラフィックス命令242のパラメータ、順序付け、タイプなどを変更しても良い。一つの態様において、マッピング情報31(図1)は、それから、グラフィックス命令242に対する変更を、グラフィックス・デバイス200に提供され得る他のフォーマット(例えば、バイナリ命令)の対応する命令に、マッピング又は変換するために使用されても良い。
場合によっては、開発者はまた、グラフィックス・デバイス200により実装される処理パイプラインに関連する1又は複数の機能をオーバーライドするオーバーライド・ボタン238を選択しても良い。オーバーライド・ボタン238の選択に応じて、オーバーライド・スクリーンが開発者に対して表示されても良い。
ウインドウ220は、選択ボタン231及び232を更に含む。選択ボタン231は、パーティション・ボタンであり、選択ボタン232は、ナビゲーション・ボタンである。開発者は、グラフィックス・イメージ210をオーバーレイし、そして、表示エリア211中に表示されるシーンをグラフィカルに分割するパーティション(例えば長方形の形のパーティション)のグラフィカル表現を閲覧するためのパーティション・ボタン231を選択しても良い。パーティション・ボタン231のユーザ選択に応じて、グラフィカル・パーティションが、表示エリア211中に表示されても良い。
表示エリア211、又は独立した表示エリア又はウインドウはまた、データのいずれの部分が複数のパーティションに関連するかについて判定するグラフィックス・イメージ210のためのグラフィックス・データの解析に基づいて、情報を表示しても良い。例えば、表示エリア211、又は独立した表示エリア又はウインドウは、パーティションのグラフィカル表現とともに、いずれのポリゴン(それはグラフィックス・イメージ210をレンダリングするために使用される)が複数のパーティションにわたるかについて、表示しても良い。場合によっては、グラフィカル・インジケーション(例えば色)が、複数のパーティションにわたるポリゴン(例えば、三角形)ごとに表示されても良い。
例えば、一つの態様において、“ヒートマップ(heat map)”が表示されても良い。ここで、各々の三角形は特定の色で表示される。複数のパーティションにわたらない三角形は、第1の色(例えば、青)で表示されても良い。複数のパーティション(例えば、2〜3のパーティション)にわたる三角形は、第2の色(例えば、紫)で表示されても良い。3を超えるパーティションにわたる三角形は、第3の色(例えば、赤)で顕著に表示されても良い。このように、この例では、アプリケーション開発者は、いずれの三角形が複数のパーティションにわたるか、及び、いずれの三角形が他より多くのパーティションにわたるかについて、速く判定することができる。開発者は、グラフィックス・イメージ210を生成するときのパフォーマンス(例えば、レンダリング)オーバーヘッドを低減するために、複数のパーティションにわたる三角形を再構成、再定義又はさもなければ再構成する方法について判定するために、この情報を使用することができ得る。
開発者はまた、表示エリア211内でナビゲートするために、そして、表示エリア211内のグラフィックス・イメージ210の斜視図の変更さえ可能にする、ナビゲーション・ボタン232を選択しても良い。例えば、ナビゲーション・ボタン232の選択に応じて、3Dグラフィカル・カメラ又はナビゲーション・コントローラが、表示されても良い。開発者は、表示エリア211内の任意のエリアに対してナビゲートするために、コントローラとインタラクトしても良い。開発者はまた、グラフィックス・イメージ210の斜視図を(例えばグラフィックス・イメージ210の回転又はズームイン/ズームアウトなどによって)変更するために、コントローラを使用しても良い。
一つの態様において、ナビゲーション・ボタン232の選択を通した任意の開発者起動(developer-initiated)の変更及びグラフィカル・ナビゲーション・コントローラに対するインタラクションは、要求された修正(例えば、図1に示される要求された修正84の一部)として、グラフィックス・デバイス200へ伝播されても良い。それからグラフィックス・デバイス200により提供される更新された命令/情報は、それから、グラフィックス・イメージ210の表示(例えば、斜視図)を更新するために使用されても良い。さらに、更新された命令は、グラフィックス命令エリア208内に表示されても良い。更新されたステート/パフォーマンス情報は、ステート/パフォーマンス情報エリア214内に表示されても良い。
一つの態様において、グラフィカル・パーティションが、グラフィックス・イメージ210の修正された斜視図の上に表示又はオーバーレイされても良い。さらに、グラフィックス・イメージ210の修正された斜視図のための更新された命令/情報の中に含まれるグラフィックス・データは、データのいずれの部分が複数のパーティションに関連するかについて判定するために解析されても良い。
その結果、開発者は、グラフィックス・イメージ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上での命令の実行を最適化するための、そして、命令実行の間の任意のパフォーマンス・イッシュー(例えば、ボトルネック)を除去又は軽減するためのプロセスを、試行錯誤又はデバッギングすることに、インタラクティブに動的に従事することができる。
さらに、幾つかの異なるグラフィカル・パーティションを含むグラフィカル・シーンの視覚の表現は、開発者が、スクリーン・パーティションに関連し得るコストに起因する低下したパフォーマンスを示すグラフィカル・シーンの部分を識別することができるようにしても良い。開発者は、これらのコスト及び/又は関係するパフォーマンス・オーバーヘッドを低減するのは支援するために、シーンの代わりのコンポジションを調査するために、パーティション及び関連する解析情報をレビューしても良い。さらに、開発者は、パフォーマンス・イッシューに関連し得るグラフィックス・データの特定の部分を識別しても良い。これは、これらのイッシューを解決しようとして、開発者がグラフィックス・データを修正する集中する努力(focused efforts)に従事できるようにする。
図10は、本開示の一つの態様に従って、表示デバイス(例えば、グラフィックス・デバイス2の表示デバイス6(図1)、アプリケーション・コンピュータ・デバイス20の表示デバイス24、アプリケーション・コンピュータ・デバイス40Aの表示デバイス124(図4B)、又は表示デバイス201(図8及び9))により提供されるスクリーン・エリア250の4つのパーティションにわたり得るグラフィックス・データの例を示す概念図である。説明の便宜のみのために、以下の説明において、図10に示されるデータが、グラフィックス・デバイス2から受信されるグラフィックス命令30及びステート/パフォーマンス情報32に、さらに、グラフィックス・デバイス2から受信されるマッピング/パーティショニング情報33に基づいて、アプリケーション・コンピュータ・デバイス20の表示デバイス24上にグラフィカルに表示されると仮定される。ステート/パフォーマンス情報32は、ポリゴン(すなわち、ジオメトリ)260,262,264及び266のためのグラフィックス・データを含んでも良く、また、マッピング/パーティショニング情報33は、パーティション252,254,256及び258のための情報を含んでも良い。例えば、アプリケーション・コンピュータ・デバイス20により受信されるマッピング/パーティショニング情報33は、グラフィックス・データのレンダリングのときにグラフィックス・デバイス2が4つの異なるパーティション(252,254,256及び258により表される)を使用することを指示しても良い。
図10の例において、4つのビニング・パーティション252,254,256及び258が実装される。これらのパーティションは、表示デバイス24上に表示され得るスクリーン・エリア250内に4つの対応するエリアを表す。数字で分かるように、ポリゴン260及び262は、各々、完全に対応するパーティション内に位置する又は存在するように、定義される。ポリゴン260は、パーティション252内に位置し、ポリゴン262は、パーティション254内に位置する。グラフィックス・データのレンダリングのときに、グラフィックス・プロセッサ12は、例えば、別々に、そして、独立したレンダリング・オペレーションの間、パーティション252,254,256及び258の各々の中にデータをレンダリングしても良い。ポリゴン260は完全にパーティション252の中にあるので、それはパーティション252に関連するレンダリング・オペレーションの間の完全な幾何学としてレンダリングされても良い。同様に、ポリゴン262は完全にパーティション254の中にあるので、それはパーティション254に関連するレンダリング・オペレーションの間の完全な幾何学としてレンダリングされても良い。
他方、ポリゴン264及び266は、複数のパーティションにわたる。ポリゴン264は、全4つのパーティション252,254,256及び258にわたり、一方、ポリゴン266は、2つのパーティション256及び258にわたる。ポリゴン264をレンダリングするために、グラフィックス・プロセッサ12は、ポリゴン264を、4つの構成フラグメントにスプリットしても良い。グラフィックス・プロセッサ12は、それから、独立したレンダリング・オペレーションの間に、これらのフラグメントを独立してレンダリングしても良い。これらのフラグメントが独立してレンダリングされた後、表示プロセッサ16は、ポリゴン264の正確なグラフィカル表現を表示するために、これらのフラグメントの各々のためのレンダリングされた画像を結合する必要があり得る。これらの独立したレンダリング及び結合オペレーションは、パフォーマンス・オーバーヘッドを引き起こす場合がある。
アプリケーション開発者がスクリーン・エリア250内に表示された情報を見るとき、開発者は、いずれのポリゴンが(それらが複数のパーティションにわたるので)ハードウェアによりスプリットされるか、さらに、そのようなパーティションはどこに位置するかの考えを得ることができる。開発者は、シーンを定義するとき、グラフィックス・アプリケーション内の特定のグラフィックス・データの最適化された構成又は位置を判定するために、この情報を使用することができ得る。場合によっては、スクリーン・エリア250は、命令の実行の間、1又は複数のパフォーマンス・イッシューに関連するプリミティブ・グラフィックス・データの特定の部分をハイライト又はさもなければ識別しても良い。
例えば、グラフィックス・データのこれらの特定の部分(すなわち、これらの特定のポリゴン)が、これらの特定のポリゴンが複数のパーティションにわたるという事実に起因する潜在的なパフォーマンス・イッシューに関連することを、ユーザに知らせるために、スクリーン・エリア250内で、ポリゴン264及び266が、ハイライト又はさもなければ顕著に表示されても良い。先に述べたように、これらのポリゴンは、レンダリングの目的のためにスプリットされても良く、そして、レンダリングされたフラグメントが再結合されても良い。これらの様々なステップは、ポリゴンを移動することによって、ポリゴンをバラバラにすることによって、又は、ポリゴンを削除することによってさて、最小に又は軽減されることができる高性能オーバーヘッドをもたらす場合がある。
例えば、図10に示される情報のレビューに応じて、開発者は、それらが複数のパーティションにわたらないように、ポリゴン264及び266を再編成又は再構成すると判定しても良い。開発者は、スクリーン・エリア250内にグラフィックス・イメージをオーバーレイするパーティションの表現を提示されるので(これらパーティションはグラフィックス・デバイス2により定義される)、また、グラフィックス・データの特定の部分が識別又はハイライトされ得るので、開発者は、ポリゴン264及び266が複数のパーティションにわたらないように、又は、それらが最小の数のパーティションだけにわたるように、ポリゴン264及び266を定義、構成又は位置付ける方法をより良く理解し得る。場合によっては、開発者は、レンダリングの後で表示プロセッサ16によりポリゴンが結合される必要がないように、一つのポリゴンを複数のサブ・ポリゴンとして再定義すると判定しても良い。例えば、開発者は、アプリケーション命令21の修正版において、ポリゴン266を、2つの独立したポリゴン266A及び266Bとして再定義しても良い。これらのポリゴンが当初は別々に定義されるならば、これらのポリゴンのレンダリングされたバージョンは、それから、表示に先立って結合される必要はない可能性がある。そして、それは、パフォーマンス・オーバーヘッドを低減する可能性がある。
図11は、表示デバイス(例えば、グラフィックス・デバイス2の表示デバイス6(図1)、アプリケーション・コンピュータ・デバイス20の表示デバイス24、アプリケーション・コンピュータ・デバイス40Aの表示デバイス124(図4B)、又は表示デバイス201(図8及び9))により提供され得るスクリーン・エリア270内のテクスチャー情報を示す概念図である。説明の便宜のみのために、以下の説明において、図11に示されるデータがアプリケーション・コンピュータ・デバイス40Aの表示デバイス124上にグラフィカルに表示されると仮定される。
図11のスクリーン・エリア270は、図9に示されるグラフィックス・イメージ210と類似する3次元立方体を定義するプリミティブ・グラフィックス・データのグラフィカル表現を示す。プリミティブ・グラフィックス・データは、立方体のジオメトリを定義するための複数のポリゴンを含む、ポリゴン・データを含んでも良く、また、立方体の1又は複数のテクスチャーを定義するテクスチャー・データを更に含んでも良い。様々なケースにおいて、テクスチャーは、立方体に詳細を追加し得るが、特定のケースでは、それらは特定のパフォーマンス・イッシュー又はオーバーヘッドの原因になる場合がある。例えば、豊富なテクスチャー又は複雑なテクスチャーのレンダリングは、更なる処理サイクル又はオーバーヘッドを引き起こす場合がある。これらの場合、アプリケーション開発者又はアーティストは、これらのイッシューに関連するグラフィックス・データの任意の部分だけでなく、任意のパフォーマンス・イッシューを知っていることは、役に立ち得る。
図11において、テクスチャー272が、識別されたパフォーマンス・イッシューに関連すると仮定される。例えば、テクスチャー272は、大きいか又は複雑なテクスチャーであっても良い。コンピュータ・デバイス40Aは、実行されるときにテクスチャー272をレンダリングするグラフィックス命令に対してテクスチャー272をマッピングするマッピング情報を、コンピュータ・デバイス20から受信しても良い。そして、それは、そのような実行の結果として、識別されたパフォーマンス・イッシューに関連する。このマッピング情報の受信に応じて、コンピュータ・デバイス40Aは、アーティストが、パフォーマンス・イッシューに関連する又は潜在的にパフォーマンス・イッシューの原因になる特定のテクスチャー272を識別することができるように、グラフィックス・データのこの部分(すなわち、テクスチャー272)の表現を表示しても良い。アーティストは、それから、パフォーマンス・イッシューを軽減又は解決するように、テクスチャー272を調整しようとしても良い。
一つの態様において、コンピュータ・デバイス40AのDCCアプリケーション127は、例えばスクリーン・エリア270内などで、図11に示される立方体に関連するプリミティブ・グラフィックス・データを作成するために、アーティストにより使用されても良い。この態様において、マッピング情報の受信に応じて、DCCアプリケーション127は、アーティストが、識別されたパフォーマンス・イッシューに関連するグラフィックス・データの部分(例えば、テクスチャー272)を閲覧及び変更することができるように、DCCアプリケーション127内で、直接、テクスチャー272を識別することができる。
この開示において説明される技術は、汎用マイクロプロセッサ、デジタルシグナルプロセッサ(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]外部デバイスからグラフィックス命令を受信することと、前記外部デバイスからのマッピング情報(該マッピング情報は、該グラフィックス命令の実行中に1又は複数のグラフィックスをレンダリングするために使用されるプリミティブ・グラフィックス・データへ、該グラフィックス命令をマッピングするための情報を含む)を受信することと、前記グラフィックス命令の中で少なくとも一つのグラフィックス命令の実行に関連するパフォーマンス・イッシューを識別することと、前記少なくとも一つのグラフィックス命令の実行に基づく前記パフォーマンス・イッシューに関連するプリミティブ・グラフィックス・データの部分を識別するために前記マッピング情報を使用することを含む方法。
[2]前記マッピング情報を受信することは、前記少なくとも一つのグラフィックス命令の実行中に1又は複数のグラフィックス・イメージをレンダリングするために使用される前記プリミティブ・グラフィックス・データの前記部分に、前記少なくとも一つのグラフィックス命令をマッピングする情報を受信することを含む[1]の方法。
[3]前記プリミティブ・グラフィックス・データの前記部分は、1又は複数のポリゴンを含み、前記マッピング情報を使用することは、前記少なくとも一つのグラフィックス命令の前記実行に基づく前記パフォーマンス・イッシューに関連する前記1又は複数のポリゴンを識別することを含む[2]の方法。
[4]前記プリミティブ・グラフィックス・データは、グラフィカル・シーンの構成セグメントを含むテクスチャー・データとポリゴン・データとのうちの少なくとも一つを含む[1]の方法。
[5]前記外部デバイスからステート情報(該ステート情報は、前記少なくとも一つのグラフィックス命令の前記実行に関連する)を受信することと、前記少なくとも一つのグラフィックス命令及び前記ステート情報に基づいて、前記パフォーマンス・イッシューに関連する前記プリミティブ・グラフィックス・データの前記部分の表現を表示することを更に含む[1]の方法。
[6]前記ステート情報は、前記プリミティブ・グラフィックス・データを含む[5]の方法。
[7]前記外部デバイスからのパフォーマンス情報(該パフォーマンス情報は、前記少なくとも一つのグラフィックス命令の実行及び前記プリミティブ・グラフィックス・データの前記部分に関連する)を受信することと、前記プリミティブ・グラフィックス・データの前記部分に関連する前記パフォーマンス・イッシューを識別するために前記パフォーマンス情報を解析することを含む[1]の方法。
[8]前記プリミティブ・グラフィックス・データの前記部分に対して要求された修正を特定するユーザ入力を受信することと、前記要求された修正を、前記処理のために前記外部デバイスに送信することと、前記外部デバイスから、更新されたパフォーマンス情報(該更新されたパフォーマンス情報は、前記要求された修正に関連する)を受信することと、前記パフォーマンス・イッシューが解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析することを更に含む[7]の方法。
[9]前記外部デバイスから、少なくとも一つの更新されたグラフィックス命令(該少なくとも一つの更新されたグラフィックス命令は、要求された修正に関連する)を受信することと、前記外部デバイスから、更新されたマッピング情報(該更新されたマッピング情報は、前記少なくとも一つの更新されたグラフィックス命令の前記実行に関連する前記プリミティブ・グラフィックス・データの第2の部分に、前記少なくとも一つの更新されたグラフィックス命令をマッピングする更新された情報を含む)を受信することを更に含む[8]の方法。
[10]前記少なくとも一つのグラフィックス命令に基づいて、前記パフォーマンス・イッシューに関連する前記プリミティブ・グラフィックス・データの前記部分の表現を表示することと、前記外部デバイスからパーティショニング情報を受信することと、前記受信されたパーティショニング情報に基づいて、前記プリミティブ・グラフィックス・データの前記部分をオーバーレイするパーティションの表現を表示することと、前記プリミティブ・グラフィックス・データの前記部分が前記パーティションのうちの複数のものに関連するかどうか判定するために、前記プリミティブ・グラフィックス・データの前記部分を解析することを含む[1]の方法。
[11]前記プリミティブ・グラフィックスの前記部分は、複数の三角形を含み、前記プリミティブ・グラフィックスの前記部分を解析することは、前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定することを含み、前記方法は、前記パーティションのうちの複数のものにわたる前記三角形のグラフィカル表現を表示することを含む[10]の方法。
[12]前記少なくとも一つのグラフィックス命令を、第2の外部デバイスへ送信することと、前記マッピング情報(該マッピング情報は、前記少なくとも一つのグラフィックス命令を前記プリミティブ・グラフィックス・データの前記部分にマッピングするための情報を含む)を前記第2の外部デバイスへ送信することと、前記プリミティブ・グラフィックス・データの前記部分に関連するパフォーマンス・イッシューのインジケーションを、前記第2の外部デバイスへ送信することを含む[1]の方法。
[13]前記第2の外部デバイスから、前記プリミティブ・グラフィックス・データの前記部分に対して要求された修正を受信することと、前記要求された修正を、処理のために前記外部デバイスに送信することと、前記外部デバイスから、更新されたパフォーマンス情報(該更新されたパフォーマンス情報は、前記要求された修正に関連する)を受信することを更に含む[12]の方法。
[14]前記パフォーマンス・イッシューが解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析することと、前記パフォーマンス・イッシューが解決されたかどうかを示す第2のインジケーションを、前記第2の外部デバイスに送信することを更に含む[13]の方法。
[15]1又は複数のプロセッサに、外部デバイスからグラフィックス命令を受信させ、前記外部デバイスからのマッピング情報(該マッピング情報は、該グラフィックス命令の実行中に1又は複数のグラフィックスをレンダリングするために使用されるプリミティブ・グラフィックス・データへ、該グラフィックス命令をマッピングするための情報を含む)を受信させ、前記グラフィックス命令の中で少なくとも一つのグラフィックス命令の実行に関連するパフォーマンス・イッシューを識別させ、前記少なくとも一つのグラフィックス命令の実行に基づく前記パフォーマンス・イッシューに関連するプリミティブ・グラフィックス・データの部分を識別するために前記マッピング情報を使用させるためのコンピュータ実行可能な命令を含むコンピュータ読み取り可能な媒体。
[16]前記1又は複数のプロセッサに前記マッピング情報を受信させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに前記少なくとも一つのグラフィックス命令の実行中に1又は複数のグラフィックス・イメージをレンダリングするために使用される前記プリミティブ・グラフィックス・データの前記部分に、前記少なくとも一つのグラフィックス命令をマッピングする情報を受信させるためのコンピュータ実行可能な命令を含む[15]のコンピュータ読み取り可能な媒体。
[17]前記プリミティブ・グラフィックス・データの前記部分は、1又は複数のポリゴンを含み、前記1又は複数のプロセッサに前記マッピング情報を使用させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに前記少なくとも一つのグラフィックス命令の前記実行に基づく前記パフォーマンス・イッシューに関連する前記1又は複数のポリゴンを識別させるためのコンピュータ実行可能な命令を含む[16]のコンピュータ読み取り可能な媒体。
[18]前記プリミティブ・グラフィックス・データは、グラフィカル・シーンの構成セグメントを含むテクスチャー・データとポリゴン・データとのうちの少なくとも一つを含む[15]のコンピュータ読み取り可能な媒体。
[19]前記1又は複数のプロセッサに、前記外部デバイスからステート情報(該ステート情報は、前記少なくとも一つのグラフィックス命令の前記実行に関連する)を受信させ、前記少なくとも一つのグラフィックス命令及び前記ステート情報に基づいて、前記パフォーマンス・イッシューに関連する前記プリミティブ・グラフィックス・データの前記部分の表現を表示させるためのコンピュータ実行可能な命令を更に含む[15]のコンピュータ読み取り可能な媒体。
[20]前記ステート情報は、前記プリミティブ・グラフィックス・データを含む[19]のコンピュータ読み取り可能な媒体。
[21]前記1又は複数のプロセッサに、前記外部デバイスからのパフォーマンス情報(該パフォーマンス情報は、前記少なくとも一つのグラフィックス命令の実行及び前記プリミティブ・グラフィックス・データの前記部分に関連する)を受信させ、前記プリミティブ・グラフィックス・データの前記部分に関連する前記パフォーマンス・イッシューを識別するために前記パフォーマンス情報を解析させるためのコンピュータ実行可能な命令を更に含む[15]のコンピュータ読み取り可能な媒体。
[22]前記1又は複数のプロセッサに、前記プリミティブ・グラフィックス・データの前記部分に対して要求された修正を特定するユーザ入力を受信させ、前記要求された修正を、前記処理のために前記外部デバイスに送信させ、前記外部デバイスから、更新されたパフォーマンス情報(該更新されたパフォーマンス情報は、前記要求された修正に関連する)を受信させ、前記パフォーマンス・イッシューが解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析させるためのコンピュータ実行可能な命令を更に含む[21]のコンピュータ読み取り可能な媒体。
[23]前記1又は複数のプロセッサに、前記外部デバイスから、少なくとも一つの更新されたグラフィックス命令(該少なくとも一つの更新されたグラフィックス命令は、要求された修正に関連する)を受信させ、前記外部デバイスから、更新されたマッピング情報(該更新されたマッピング情報は、前記少なくとも一つの更新されたグラフィックス命令の前記実行に関連する前記プリミティブ・グラフィックス・データの第2の部分に、前記少なくとも一つの更新されたグラフィックス命令をマッピングする更新された情報を含む)を受信させるためのコンピュータ実行可能な命令を更に含む[22]のコンピュータ読み取り可能な媒体。
[24]前記1又は複数のプロセッサに、前記少なくとも一つのグラフィックス命令に基づいて、前記パフォーマンス・イッシューに関連する前記プリミティブ・グラフィックス・データの前記部分の表現を表示させ、前記外部デバイスからパーティショニング情報を受信させ、前記受信されたパーティショニング情報に基づいて、前記プリミティブ・グラフィックス・データの前記部分をオーバーレイするパーティションの表現を表示させ、前記プリミティブ・グラフィックス・データの前記部分が前記パーティションのうちの複数のものに関連するかどうか判定するために、前記プリミティブ・グラフィックス・データの前記部分を解析させるためのコンピュータ実行可能な命令を更に含む[15]のコンピュータ読み取り可能な媒体。
[25]前記プリミティブ・グラフィックスの前記部分は、複数の三角形を含み、前記1又は複数のプロセッサに前記プリミティブ・グラフィックスの前記部分を解析させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定させるためのコンピュータ実行可能な命令を含み、前記方法は、前記1又は複数のプロセッサに前記パーティションのうちの複数のものにわたる前記三角形のグラフィカル表現を表示させるためのコンピュータ実行可能な命令を更に含む[24]のコンピュータ読み取り可能な媒体。
[26]前記1又は複数のプロセッサに、前記少なくとも一つのグラフィックス命令を、第2の外部デバイスへ送信させ、前記マッピング情報(該マッピング情報は、前記少なくとも一つのグラフィックス命令を前記プリミティブ・グラフィックス・データの前記部分にマッピングするための情報を含む)を前記第2の外部デバイスへ送信させ、前記プリミティブ・グラフィックス・データの前記部分に関連するパフォーマンス・イッシューのインジケーションを、前記第2の外部デバイスへ送信させるためのコンピュータ実行可能な命令を更に含む[15]のコンピュータ読み取り可能な媒体。
[27]前記1又は複数のプロセッサに、前記第2の外部デバイスから、前記プリミティブ・グラフィックス・データの前記部分に対して要求された修正を受信させ、前記要求された修正を、処理のために前記外部デバイスに送信させ、前記外部デバイスから、更新されたパフォーマンス情報(該更新されたパフォーマンス情報は、前記要求された修正に関連する)を受信させるためのコンピュータ実行可能な命令を更に含む[26]のコンピュータ読み取り可能な媒体。
[28]前記1又は複数のプロセッサに、前記パフォーマンス・イッシューが解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析させ、前記パフォーマンス・イッシューが解決されたかどうかを示す第2のインジケーションを、前記第2の外部デバイスに送信させるためのコンピュータ実行可能な命令を更に含む[27]のコンピュータ読み取り可能な媒体。
[29]表示デバイスと、外部デバイスからグラフィックス命令を受信し、前記外部デバイスからのマッピング情報(該マッピング情報は、該グラフィックス命令の実行中に1又は複数のグラフィックスをレンダリングするために使用されるプリミティブ・グラフィックス・データへ、該グラフィックス命令をマッピングするための情報を含む)を受信し、前記グラフィックス命令の中で少なくとも一つのグラフィックス命令の実行に関連するパフォーマンス・イッシューを識別し、前記少なくとも一つのグラフィックス命令の実行に基づく前記パフォーマンス・イッシューに関連するプリミティブ・グラフィックス・データの部分を識別するために前記マッピング情報を使用するように構成される1又は複数のプロセッサとを含むデバイス。
[30]前記1又は複数のプロセッサは、前記少なくとも一つのグラフィックス命令の実行中に1又は複数のグラフィックス・イメージをレンダリングするために使用される前記プリミティブ・グラフィックス・データの前記部分に、前記少なくとも一つのグラフィックス命令をマッピングする情報を受信することに少なくともよって、前記マッピング情報を受信するように構成された[29]のデバイス。
[31]前記プリミティブ・グラフィックス・データの前記部分は、1又は複数のポリゴンを含み、前記1又は複数のプロセッサは、前記少なくとも一つのグラフィックス命令の前記実行に基づく前記パフォーマンス・イッシューに関連する前記1又は複数のポリゴンを識別することに少なくともよって、前記マッピング情報を使用するように構成された[30]のデバイス。
[32]前記プリミティブ・グラフィックス・データは、グラフィカル・シーンの構成セグメントを含むテクスチャー・データとポリゴン・データとのうちの少なくとも一つを含む[29]のデバイス。
[33]前記1又は複数のプロセッサは、前記外部デバイスからステート情報(該ステート情報は、前記少なくとも一つのグラフィックス命令の前記実行に関連する)を受信し、前記少なくとも一つのグラフィックス命令及び前記ステート情報に基づいて、前記パフォーマンス・イッシューに関連する前記プリミティブ・グラフィックス・データの前記部分の表現を前記表示デバイス上に表示するように更に構成された[29]のデバイス。
[34]前記ステート情報は、前記プリミティブ・グラフィックス・データを含む[33]のデバイス。
[35]前記1又は複数のプロセッサは、前記外部デバイスからのパフォーマンス情報(該パフォーマンス情報は、前記少なくとも一つのグラフィックス命令の実行及び前記プリミティブ・グラフィックス・データの前記部分に関連する)を受信し、前記プリミティブ・グラフィックス・データの前記部分に関連する前記パフォーマンス・イッシューを識別するために前記パフォーマンス情報を解析するように更に構成された[29]のデバイス。
[36]前記1又は複数のプロセッサは、前記プリミティブ・グラフィックス・データの前記部分に対して要求された修正を特定するユーザ入力を受信し、前記要求された修正を、前記処理のために前記外部デバイスに送信し、前記外部デバイスから、更新されたパフォーマンス情報(該更新されたパフォーマンス情報は、前記要求された修正に関連する)を受信し、前記パフォーマンス・イッシューが解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析するように更に構成された[35]のデバイス。
[37]前記1又は複数のプロセッサは、前記外部デバイスから、少なくとも一つの更新されたグラフィックス命令(該少なくとも一つの更新されたグラフィックス命令は、要求された修正に関連する)を受信し、前記外部デバイスから、更新されたマッピング情報(該更新されたマッピング情報は、前記少なくとも一つの更新されたグラフィックス命令の前記実行に関連する前記プリミティブ・グラフィックス・データの第2の部分に、前記少なくとも一つの更新されたグラフィックス命令をマッピングする更新された情報を含む)を受信するように更に構成された[36]のデバイス。
[38]前記1又は複数のプロセッサは、前記少なくとも一つのグラフィックス命令に基づいて、前記パフォーマンス・イッシューに関連する前記プリミティブ・グラフィックス・データの前記部分の表現を前記表示デバイス上に表示し、前記外部デバイスからパーティショニング情報を受信し、前記受信されたパーティショニング情報に基づいて、前記プリミティブ・グラフィックス・データの前記部分をオーバーレイするパーティションの表現を前記表示デバイス上に表示し、前記プリミティブ・グラフィックス・データの前記部分が前記パーティションのうちの複数のものに関連するかどうか判定するために、前記プリミティブ・グラフィックス・データの前記部分を解析するように更に構成された[29]のデバイス。
[39]前記プリミティブ・グラフィックスの前記部分は、複数の三角形を含み、前記1又は複数のプロセッサは、前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定することに少なくともよって、前記プリミティブ・グラフィックスの前記部分を解析するように構成され、前記1又は複数のプロセッサは、前記パーティションのうちの複数のものにわたる前記三角形のグラフィカル表現を表示するように更に構成された[38]のデバイス。
[40]前記1又は複数のプロセッサは、前記少なくとも一つのグラフィックス命令を、第2の外部デバイスへ送信し、前記マッピング情報(該マッピング情報は、前記少なくとも一つのグラフィックス命令を前記プリミティブ・グラフィックス・データの前記部分にマッピングするための情報を含む)を前記第2の外部デバイスへ送信し、前記プリミティブ・グラフィックス・データの前記部分に関連するパフォーマンス・イッシューのインジケーションを、前記第2の外部デバイスへ送信するように更に構成された[29]のデバイス。
[41]前記1又は複数のプロセッサは、前記第2の外部デバイスから、前記プリミティブ・グラフィックス・データの前記部分に対して要求された修正を受信し、前記要求された修正を、処理のために前記外部デバイスに送信し、前記外部デバイスから、更新されたパフォーマンス情報(該更新されたパフォーマンス情報は、前記要求された修正に関連する)を受信するように更に構成された[40]のデバイス。
[42]前記1又は複数のプロセッサは、前記パフォーマンス・イッシューが解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析し、前記パフォーマンス・イッシューが解決されたかどうかを示す第2のインジケーションを、前記第2の外部デバイスに送信するように更に構成された[41]のデバイス。
[43]外部デバイスからグラフィックス命令を受信するための手段と、前記外部デバイスからのマッピング情報(該マッピング情報は、該グラフィックス命令の実行中に1又は複数のグラフィックスをレンダリングするために使用されるプリミティブ・グラフィックス・データへ、該グラフィックス命令をマッピングするための情報を含む)を受信するための手段と、前記グラフィックス命令の中で少なくとも一つのグラフィックス命令の実行に関連するパフォーマンス・イッシューを識別するための手段と、前記少なくとも一つのグラフィックス命令の実行に基づく前記パフォーマンス・イッシューに関連するプリミティブ・グラフィックス・データの部分を識別するために前記マッピング情報を使用するための手段とを含むデバイス。
[44]前記マッピング情報を受信するための手段は、前記少なくとも一つのグラフィックス命令の実行中に1又は複数のグラフィックス・イメージをレンダリングするために使用される前記プリミティブ・グラフィックス・データの前記部分に、前記少なくとも一つのグラフィックス命令をマッピングする情報を受信するための手段を含む[43]のデバイス。
[45]前記プリミティブ・グラフィックス・データの前記部分は、1又は複数のポリゴンを含み、前記マッピング情報を使用するための手段は、前記少なくとも一つのグラフィックス命令の前記実行に基づく前記パフォーマンス・イッシューに関連する前記1又は複数のポリゴンを識別するための手段を含む[44]のデバイス。
[46]前記プリミティブ・グラフィックス・データは、グラフィカル・シーンの構成セグメントを含むテクスチャー・データとポリゴン・データとのうちの少なくとも一つを含む[43]のデバイス。
[47]前記外部デバイスからステート情報(該ステート情報は、前記少なくとも一つのグラフィックス命令の前記実行に関連する)を受信するための手段と、前記少なくとも一つのグラフィックス命令及び前記ステート情報に基づいて、前記パフォーマンス・イッシューに関連する前記プリミティブ・グラフィックス・データの前記部分の表現を表示するための手段とを更に含む[43]のデバイス。
[48]前記ステート情報は、前記プリミティブ・グラフィックス・データを含む[47]のデバイス。
[49]前記外部デバイスからのパフォーマンス情報(該パフォーマンス情報は、前記少なくとも一つのグラフィックス命令の実行及び前記プリミティブ・グラフィックス・データの前記部分に関連する)を受信するための手段と、前記プリミティブ・グラフィックス・データの前記部分に関連する前記パフォーマンス・イッシューを識別するために前記パフォーマンス情報を解析するための手段とを更に含む[43]のデバイス。
[50]前記プリミティブ・グラフィックス・データの前記部分に対して要求された修正を特定するユーザ入力を受信するための手段と、前記要求された修正を、前記処理のために前記外部デバイスに送信するための手段と、前記外部デバイスから、更新されたパフォーマンス情報(該更新されたパフォーマンス情報は、前記要求された修正に関連する)を受信するための手段と、前記パフォーマンス・イッシューが解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析するための手段を更に含む[49]のデバイス。
[51]前記外部デバイスから、少なくとも一つの更新されたグラフィックス命令(該少なくとも一つの更新されたグラフィックス命令は、要求された修正に関連する)を受信するための手段と、前記外部デバイスから、更新されたマッピング情報(該更新されたマッピング情報は、前記少なくとも一つの更新されたグラフィックス命令の前記実行に関連する前記プリミティブ・グラフィックス・データの第2の部分に、前記少なくとも一つの更新されたグラフィックス命令をマッピングする更新された情報を含む)を受信するための手段とを更に含む[50]のデバイス。
[52]前記少なくとも一つのグラフィックス命令に基づいて、前記パフォーマンス・イッシューに関連する前記プリミティブ・グラフィックス・データの前記部分の表現を表示するための手段と、前記外部デバイスからパーティショニング情報を受信するための手段と、前記受信されたパーティショニング情報に基づいて、前記プリミティブ・グラフィックス・データの前記部分をオーバーレイするパーティションの表現を表示するための手段と、前記プリミティブ・グラフィックス・データの前記部分が前記パーティションのうちの複数のものに関連するかどうか判定するために、前記プリミティブ・グラフィックス・データの前記部分を解析するための手段とを含む[43]のデバイス。
[53]前記プリミティブ・グラフィックスの前記部分は、複数の三角形を含み、前記プリミティブ・グラフィックスの前記部分を解析するための手段は、前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定するための手段を含み、前記デバイスは、前記パーティションのうちの複数のものにわたる前記三角形のグラフィカル表現を表示するための手段を更に含む[52]のデバイス。
[54]前記少なくとも一つのグラフィックス命令を、第2の外部デバイスへ送信するための手段と、前記マッピング情報(該マッピング情報は、前記少なくとも一つのグラフィックス命令を前記プリミティブ・グラフィックス・データの前記部分にマッピングするための情報を含む)を前記第2の外部デバイスへ送信するための手段と、前記プリミティブ・グラフィックス・データの前記部分に関連するパフォーマンス・イッシューのインジケーションを、前記第2の外部デバイスへ送信するための手段とを含む[43]のデバイス。
[55]前記第2の外部デバイスから、前記プリミティブ・グラフィックス・データの前記部分に対して要求された修正を受信するための手段と、前記要求された修正を、処理のために前記外部デバイスに送信するための手段と、前記外部デバイスから、更新されたパフォーマンス情報(該更新されたパフォーマンス情報は、前記要求された修正に関連する)を受信するための手段とを更に含む[54]のデバイス。
[56]前記パフォーマンス・イッシューが解決されたかどうか判定するために、前記更新されたパフォーマンス情報を解析するための手段と、前記パフォーマンス・イッシューが解決されたかどうかを示す第2のインジケーションを、前記第2の外部デバイスに送信するための手段とを更に含む[55]のデバイス。