(35 U.S.C. §119の下の優先権の主張)
本特許出願は、2008年7月25日付け提出され、本願の譲受人に譲渡され、参照によって本明細書に明確に組み込まれる「PARTITIONING-BASED PERFORMANCE ANALYSIS FOR GRAPHICS IMAGING」と題された米国仮出願第61/083,659号の優先権を主張する。
(同時継続の特許出願への参照)
本特許出願は、以下の同時継続の米国特許出願に関係する:
2008年7月25日付け提出され、これと共に同時に提出され、本願の譲受人に譲渡され、参照によって本明細書に明確に組み込まれる米国特許出願第61/083,656号(Attorney Docket No. 080967P1);及び
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)のフルセットは、ハードウェアにより1又は複数のグラフィックス・プリミティブ(例えば、1又は複数の三角形)からイメージがレンダリングされるプロセスを記述することがある。
さらに、ビニング・ベース(binning-based)又はパーティショニング・ベース(partitioning-based)のグラフィックス・ハードウェアは、表示デバイスのスクリーン上に表示されるイメージのシーンを分割(divide up)するために、レンダリングすることになっている個々のグラフィックス・プリミティブが、複数のビニング・パーティション又はビンにクラスタリングされるプロセスを使用して、しばしば実装されることがある。該ハードウェアは、スクリーンサイズ若しくは解像度の制約上のために又はレンダリング・オペレーションに関連するメモリの限界上のために、そうしても良い。グラフィックス・プリミティブ(それは複数のビニング・パーティションにわたることがある)は、プリミティブ・フラグメントがレンダリングされる前に、パーティションのエッジに沿って、ハードウェアにより複数のフラグメントに分割されることがある。ハードウェアは、各々のパーティションにおいて、独立して、すべてのプリミティブ・フラグメントをレンダリングすることがある。
それゆえ、個々のプリミティブ(それは例えば2つのビニング・パーティションにわたることがある)は、2つのフラグメントに分割されることがあり、そして、これらの2つのフラグメントの各々は、独立してレンダリングされることがある。しかし、これらのフラグメントの各々により生成されるグラフィックス・イメージは、それから、表示デバイスのスクリーン上に表示される前に、イメージ・データのフレーム内で再結合(re-combined)される必要があることがある。それゆえに、複数の異なるパーティションにわたっているプリミティブ・グラフィックス・データは、独立して処理及びレンダリングされることがあり、そして、レンダリングされたイメージ・データは、最終的なイメージを形成するために再結合されることがある。
一般に、この開示は、幾つかの異なるグラフィカル・パーティションを含むグラフィカル・シーンのビジュアル表現を提供するための技術に関係する。それは、ユーザが、スクリーン分割(screen partitioning)に関連し得るコストに起因して低下したパフォーマンスを示すグラフィックス・シーンの部分を識別するのを可能にし得る。グラフィックス・デバイス(例えば、モバイル・デバイス)は、グラフィックス・ドライバーによって作成されたパーティションの数及びタイプに基づいて、パーティショニング又はビニング情報を外部コンピュータ・デバイス(例えば、パーソナル・コンピュータ)へ提供しても良い。グラフィックス・デバイスはまた、グラフィックス命令及びステート情報をコンピュータ・デバイスに提供しても良い。
コンピュータ・デバイスは、グラフィックス命令及びステート情報に基づいて、グラフィカル・シーン中に1又は複数のグラフィックス・イメージを表示しても良い。コンピュータ・デバイスはまた、受信されたパーティショニング情報に基づいて、シーンをオーバーレイするパーティションのグラフィカル表現を表示しても良く、また、潜在的な(potential)分割コスト又はパフォーマンス・オーバーヘッドに関する解析情報を提供しても良い。アプリケーション開発者は、これらのコスト及び/又はパフォーマンス・オーバーヘッドを低減するのを支援するために、シーンの代わりのコンポジション(compositions)を調査(investigate)するために、この情報を使用しても良い。
一つの態様において、方法は、グラフィカル・シーン中に1又は複数のグラフィックス・イメージを表示することと、1又は複数のグラフィックス・イメージをオーバーレイし且つ前記シーンをグラフィカルに分割するパーティションのグラフィカル表現を表示することと、前記1又は複数のグラフィックス・イメージに関するグラフィックス・データのうちのいずれの部分が前記パーティションのうちの複数のものに関連しているかについて判定するために、該グラフィックス・データを解析することを含む。
一つの態様において、デバイスは、表示デバイス及び1又は複数のプロセッサを含む。前記1又は複数のプロセッサは、グラフィカル・シーン中に1又は複数のグラフィックス・イメージを前記表示デバイス上に表示し、1又は複数のグラフィックス・イメージをオーバーレイし且つ前記シーンをグラフィカルに分割するパーティションのグラフィカル表現を前記表示デバイス上に表示し、前記1又は複数のグラフィックス・イメージに関するグラフィックス・データのうちのいずれの部分が前記パーティションのうちの複数のものに関連しているかについて判定するために、該グラフィックス・データを解析するように構成される。
一つの態様において、コンピュータ読み取り可能な媒体は、1又は複数のプロセッサに、グラフィカル・シーン中に1又は複数のグラフィックス・イメージを表示させ、1又は複数のグラフィックス・イメージをオーバーレイし且つ前記シーンをグラフィカルに分割するパーティションのグラフィカル表現を表示させ、前記1又は複数のグラフィックス・イメージに関するグラフィックス・データのうちのいずれの部分が前記パーティションのうちの複数のものに関連しているかについて判定するために、該グラフィックス・データを解析させるためのコンピュータ実行可能な命令を含む。
この開示において説明される技術は、ハードウェア、ソフトウェア、ファームウェア又はそれらの任意の組み合せにおいて実装されても良い。ソフトウェアで実装される場合には、ソフトウェアは、プロセッサで実行されても良い。プロセッサは、1又は複数のプロセッサ(例えば、マイクロプロセッサ)、特定用途向けIC(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はデジタルシグナルプロセッサ(DSP)、又は他の等価な集積化された若しくは個別の論理回路を指し示しても良い。本技術を実行するための命令を含むソフトウェアは、最初にコンピュータ読み取り可能な媒体に記憶されロードされ、そして、プロセッサにより実行されても良い。
したがって、この開示はまた、この開示において説明される様々な技術の任意のものをプロセッサに実行させる命令を含むコンピュータ読み取り可能な媒体を意図する。場合によっては、コンピュータ読み取り可能な媒体は、製造者に販売され得る及び/又はデバイスで使用され得るコンピュータ・プログラム製品の一部を形成しても良い。コンピュータ・プログラム製品は、コンピュータ読み取り可能な媒体を含んでも良いし、場合によっては、また、パッケージ材料を含んでも良い。
添付の図面及び下記の説明において1又は複数の態様の詳細が説明される。他の特徴、目的及び利点は説明及び図面から並びにクレームから明らかである。
図1は、本開示の一つの態様に従って、グラフィックス命令、ステート及び/又はパフォーマンス情報及びパーティショニング情報を、アプリケーション・コンピュータ・デバイスに提供し得るグラフィックス・デバイスを示すブロック図である。
図2は、本開示の一つの態様に従って、図1に示されるグラフィックス処理システム、グラフィックス・ドライバー及びアプリケーション・コンピュータ・デバイスの特定の詳細を示すブロック図である。
図3は、本開示の一つの態様に従って、図1に示される制御プロセッサ、グラフィックス・プロセッサ、頂点プロセッサ及び表示プロセッサにより実行され得るオペレーションの更なる詳細を示すフロー・ダイアグラムである。
図4は、本開示の一つの態様に従って、図2に示されるグラフィックス・ドライバーの更なる詳細を示すブロック図である。
図5Aは、本開示の一つの態様に従って、表示デバイスにより提供されるスクリーン・エリアの4つのパーティションにわたり得るグラフィックス・データの第1の例を示す概念図である。
図5Bは、パーティション境界に沿ってスプリットされる図5Aの第1の例のグラフィックス・データを示す概念図である。
図6は、本開示の一つの態様に従って、表示デバイスにより提供されるスクリーン・エリアの8つのパーティションにわたり得るグラフィックス・データの第2の例を示す概念図である。
図7は、本開示の一つの態様に従って、図1に示されるアプリケーション・コンピュータ・デバイスにより実行され得る第1の方法のフローチャートである。
図8は、本開示の一つの態様に従って、図1に示されるアプリケーション・コンピュータ・デバイスにより実行され得る第2の方法のフローチャートである。
図9は、本開示の一つの態様に従って、グラフィック・ウインドウ中に情報を表示するための表示デバイスに接続されるグラフィックス・デバイスの例を示す概念図である。
図10は、本開示の一つの態様に従って、グラフィカル・ウインドウ中に情報を表示する表示デバイスに接続されるグラフィックス・デバイスの他の例を示す概念図である。
詳細な説明
図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は、個々の命令に対してレンダリングされるべき個々のプリミティブのマッピングを維持しても良い。プリミティブがレンダリングされた後、マッピング情報23は、個々の命令から、グラフィックス・デバイス6上に最終的に表示される1又は複数のイメージを作成するのに使用されたオリジナルのプリミティブ・グラフィックス・データへのマッピングを可能にする。マッピング情報23は、場合によっては、デバッギング及び/又はパフォーマンス解析に役立つことがある。
また、図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)がしばしば制限されることがある。さらに、異なるハードウェア・プラットホームは、これらのステート及び/又は状態遷移の異なるハードウェア・デザイン及び実装を有することがある。
さらに、ビニング・ベースのグラフィックス・ハードウェア(例えば、プロセッサ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は、シーンを表示すること、及び、グラフィックス・デバイス2によって実装され得るビニング・パーティションのグラフィカル表現をオーバーレイすることができても良い。アプリケーション・コンピュータ・デバイス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に同様に表示されるグラフィックス・イメージ又はシーンを再作成(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のスクリーン・スペース又はサイズを複数のパーティションに分割しても良い。パーティショニング情報は、作成及び使用されるパーティションに関する情報を提供する。図5及び6は、そのようなパーティションの例を表す。
シミュレーション・アプリケーション28は、グラフィックス命令30及びステート/パフォーマンス情報32の受信に応じて、グラフィックス・イメージ又はシーンを再作成し、そして、イメージ又は複数のイメージからなるシーンを表示デバイス24上に表示するために、アプリケーション・コンピュータ・デバイス20の1又は複数のプロセッサ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を改善するためのプロトタイプ修正を使用しても良い。
一つの態様において、アプリケーション・コンピュータ・デバイス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、グラフィックス・ドライバー18及びアプリケーション・コンピュータ・デバイス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、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数のためのプロセッサの使用(usage)又は利用(utilization)に関係するイッシューを含む場合がある。
特に、ビニング・ベースのオペレーション(それにおいては、レンダリングに先立って、プリミティブ・グラフィックス・データが複数のビニング・パーティションにわたって分割される)は、しばしば、特定のパフォーマンス・イッシューを作り出すことがある。例えば、ポリゴン(例えば、図5Aの例で示される三角形146)が2つの異なるパーティション(例えば、図5Aに示されるパーティション136と138)にわたる場合に、該ポリゴンは、2つの構成フラグメント(constituent fragments)(パーティションごとに一つ)に分割され、そして、これらの2つの構成フラグメント(例えば、図5Bに示されるフラグメント146Aと146B)は、ピクセル・データを含む独立したグラフィックス・イメージに独立してレンダリングされ得る。これらの2つの独立したグラフィックス・イメージは、それから、三角形146のビジュアル表現を作成するために、表示の前に結合される必要があり得る。三角形146の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中の識別された命令にマッピングするマッピング情報を含んでも良い。
任意の識別されたパフォーマンス・イッシューに対する回避方法(workaround)又は解決を識別する試行において、開発者は、アプリケーション・コンピュータ・デバイス20上で1又は複数の要求された修正34を開始しても良い。例えば、開発者は、要求された修正34を作成するために、再作成されたイメージ又はステート/パフォーマンス情報32の表現とインタラクトしても良い。場合によっては、開発者は、要求された修正34を生成するために、下でより詳しく説明されるように、ステート/パフォーマンス情報32を直接変更さえしても良い。特定のケースでは、要求された修正34は、グラフィックス・デバイス2のグラフィックス処理システム4におけるグラフィックス命令30のうちの1又は複数の実行を無効にする1又は複数のリクエスト、又は、1又は複数のグラフィックス命令30を修正するリクエストを含んでも良い。
場合によっては、ユーザは、グラフィックス・シーンの修正された斜視図が表示されるよう要求するために、表示デバイス24上に表示されるナビゲーション・コントローラとインタラクトしても良い。ナビゲーション・モジュール29は、このナビゲーション・コントローラの表示及びこのナビゲーション・コントローラとのインタラクションを管理しても良い。ユーザ・インタフェースを介してユーザにより入力される任意のリクエストは、要求された修正34とともに含まれても良い。これらのリクエストは、例えば、シーン内で1又は複数のグラフィックス・イメージを回転させるリクエスト、ズームインするリクエスト、ズームアウトするリクエスト、又は、シーン内でイメージの斜視図を変更する他の同様のリクエストを含んでも良い。
要求された修正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のビジュアル表現だけでなく、更新されたイメージを解析することができても良い。
更新された命令/情報35はまた、更新されたマッピン及び/又はパーティショニング情報(例えば、命令/情報35内に同様に含まれる命令へのグラフィックス・データの更新されたマッピング)を含んでも良い。更新された命令/情報35の結果として、シーンの更新された斜視図が表示デバイス24に表示される場合には、パーティショニング・モジュール27は、修正された斜視図をオーバーレイし及び修正されたシーンをグラフィカルに分割するパーティションのグラフィカル表現を表示しても良い。パーティショニング・モジュール27はまた、グラフィックス・データのいずれの部分が該パーティションのうちの複数のものに関連するかについて判定するために、修正された斜視図(それはまた更新された命令/情報35内に含まれても良い)のためのグラフィックス・データを解析しても良い。パーティションは、グラフィックス・データに関して実行されるオペレーションのレンダリングに基づいて判定されても良い。
そのような方法において、アプリケーション開発者は、グラフィックス・デバイス2上のグラフィックス処理システム4のオペレーションをシミュレートするアプリケーション・コンピュータ・デバイス20上の環境内でグラフィックス命令30の実行を速く及び効果的にデバッグ又は解析することができても良い。開発者は、グラフィックス命令30の実行パフォーマンスを最大にするために、シーン又は複数のイメージ・フレームにおける複数のグラフィックス・イメージを解析するために、アプリケーション・コンピュータ・デバイス20上の表示されたイメージ及びステート/パフォーマンス情報と繰り返しインタラクトしても良い。アプリケーション・コンピュータ・デバイス20上のそのようなインタラクション及び表示される情報の例は、下で更に詳細に提示される。
図3は、一つの態様に従って、制御プロセッサ10、グラフィックス・プロセッサ12、頂点プロセッサ14及び表示プロセッサ16により実行され得るオペレーションの更なる詳細を示すフロー・ダイアグラムである。図3はまた、フレーム・バッファ・ストレージ100及びディスプレイ102に関するオペレーションを示す。一つの態様において、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び/又は表示プロセッサ16は、グラフィックス命令30のうちの1又は複数の実行の結果として、様々なオペレーションを実行する。
前に説明されたように、制御プロセッサ10は、グラフィックス処理パイプラインを通してデータ又は命令実行のフローの1又は複数の態様を制御しても良く、さらに、ジオメトリ情報を頂点プロセッサ14に提供しても良い。図3に示されるように、制御プロセッサ10は、90においてジオメトリ・ストレージを実行しても良い。場合によっては、1又は複数のプリミティブのためのジオメトリ情報は、制御プロセッサ10によってバッファ15(図1)に記憶されても良い。場合によっては、ジオメトリ情報は、記憶媒体8に記憶されても良い。
頂点プロセッサ14は、それから、92において、制御プロセッサにより提供され及び/又は処理のためにバッファ15に記憶される所定のプリミティブのためのジオメトリ情報を取得しても良い。特定のケースでは、頂点プロセッサ14は、ジオメトリ情報の頂点変換を管理しても良い。特定のケースでは、頂点プロセッサ14は、ジオメトリ情報に関してライティング・オペレーション(lighting operations)を実行しても良い。
頂点プロセッサ14は、グラフィックス・プロセッサ12にその出力を提供しても良い。そして、グラフィックス・プロセッサ12は、94において、該データに関してレンダリング又はラスタライゼーション・オペレーションを実行しても良い。グラフィックス・プロセッサ12は、表示プロセッサ16にその出力を提供しても良い。そして、表示プロセッサ16は、表示のために、ピクセル・フォームで、1又は複数のグラフィックス・イメージを準備する。場合によっては、グラフィックス・プロセッサ12は、判定されたビニング・パーティションに基づいて、ジオメトリ(例えば1又は複数のポリゴン)のために、グラフィックス・データをスプリットしても良い。前に説明されたように、グラフィックス・デバイス2(例えばグラフィックス・プロセッサ12)内のプロセッサのうちの1又は複数は、特定の要因(例えばメモリ要求又は制限)に基づいて、ディスプレイ102の異なるスクリーン・エリアに関連する複数のビニング・パーティションを作成しても良い。特定のジオメトリ(例えば、三角形)が複数のパーティションにわたるならば、グラフィックス・プロセッサは、パーティション境界に沿ってジオメトリを複数のフラグメントにスプリットし、そして、独立して各フラグメントを生成しても良い。幾つかのケースにおいて、グラフィックス・プロセッサ12は、判定されたパーティションの数、タイプ、サイズ、形状などに基づいて、マッピング/パーティショニング情報33を、アプリケーション・コンピュータ・デバイス20に提供しても良い。
表示プロセッサ16は、98において、データの様々なフラグメントを処理するためのフラグメント処理を含む、ピクセル・データに関する様々なオペレーションを実行しても良い。特定のケースでは、これは、技術的に知られていているような、デプス・テスト、ステンシル・テスト、ブレンディング、又はテクスチャ・マッピングのうちの1又は複数を含んでも良い。グラフィックス・プロセッサ12が前に複数のジオメトリ・フラグメントをレンダリングしたならば、表示プロセッサ16のフラグメント処理98は、それから、フレーム・バッファに記憶するために、レンダリングされた複数のフラグメントを結合しても良い。テクスチャ・マッピングを実行するとき、表示プロセッサ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の実行の間に起こる(例えば図3に示されるそれらのような)様々なオペレーションに関して、制御プロセッサ10、頂点プロセッサ14、グラフィックス・プロセッサ12及び表示プロセッサ16のうちの1又は複数からのデータを含んでも良い。アプリケーション・コンピュータ・デバイス20は、効率的且つ効果的な方法でボトルネックの識別及び解決を支援するために、デバイス2上に示されるグラフィックス・イメージを作成しても良い。アプリケーション・コンピュータ・デバイス20はまた、パーティショニング情報を表示し、また、データのいずれの部分が該パーティションのうちの複数のものに関連するかについて判定するために、1又は複数のジオメトリに関するグラフィックス・データを解析しても良い。
一つの態様に従って、図4は、本開示の一つの態様に従って、図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として図4に示される。グラフィックス・ドライバー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へ提供することができる。
図5Aは、表示デバイス(例えば、図1中のグラフィックス・デバイス2の表示デバイス6又はアプリケーション・コンピュータ・デバイス20の表示デバイス24)により提供されるスクリーン・エリア130の4つのパーティションにわたり得るグラフィックス・データの第1の例を示す概念図である。図5Aに示されるデータは、場合によっては、表示デバイス6上に表示されても良い。一つの態様において、図5Aに示されるデータは、グラフィックス・デバイス2から受信されるステート/パフォーマンス情報32に、さらに、グラフィックス・デバイス2から受信されるマッピング/パーティショニング情報33に基づいて、アプリケーション・コンピュータ・デバイス20の表示デバイス24上にグラフィカルに表示される。ステート/パフォーマンス情報32は、ポリゴン(すなわち、ジオメトリ)140,142,144及び146のためのグラフィックス・データを含んでも良く、また、マッピング/パーティショニング情報33は、パーティション132,134,136及び138に関する情報を含んでも良い。例えば、アプリケーション・コンピュータ・デバイス20により受信されるマッピング/パーティショニング情報33は、グラフィックス・データのレンダリングのときにグラフィックス・デバイス2が4つの異なるパーティション(132,134,136及び138により表される)を使用することを指示しても良い。
図5Aの例において、4つのビニング・パーティション132,134,136及び138が実装される。これらのパーティションは、表示デバイス6又は表示デバイス24上に表示され得るスクリーン・エリア130内に4つの対応するエリアを表す。数字で分かるように、ポリゴン140及び142は、各々、完全に対応するパーティション内に位置する又は存在するように、アプリケーション命令21(図1)により定義される。ポリゴン140は、パーティション132内に位置し、ポリゴン142は、パーティション134内に位置する。グラフィックス・データのレンダリングのときに、グラフィックス・プロセッサ12は、例えば、別々に、そして、独立したレンダリング・オペレーションの間、パーティション132,134,136及び138の各々の中にデータをレンダリングしても良い。ポリゴン140は完全にパーティション132の中にあるので、それはパーティション132に関連するレンダリング・オペレーションの間の完全なジオメトリとしてレンダリングされても良い。同様に、ポリゴン142は完全にパーティション134の中にあるので、それはパーティション134に関連するレンダリング・オペレーションの間の完全なジオメトリとしてレンダリングされても良い。
他方、ポリゴン144及び146は、複数のパーティションにわたる。ポリゴン144は、全4つのパーティション132,134,136及び138にわたり、一方、ポリゴン146は、2つのパーティション136及び138にわたる。ポリゴン144をレンダリングするために、グラフィックス・プロセッサ12は、ポリゴン144を、4つの構成フラグメント144A,144B,144C及び144D(図5Bに示される)にスプリットしても良い。グラフィックス・プロセッサ12は、それから、独立したレンダリング・オペレーションの間に、フラグメント144A,144B,144C及び144Dを独立してレンダリングしても良い。例えば、パーティション132に関連するレンダリング・オペレーションの間に、グラフィックス・プロセッサ12がフラグメントに144Aをレンダリングしても良い;パーティション134に関連するレンダリング・オペレーションの間に、グラフィックス・プロセッサ12がフラグメント144Bをレンダリングしても良い;パーティション138に関連するレンダリング・オペレーションの間に、グラフィックス・プロセッサ12がフラグメントに144Cをレンダリングしても良い;そして、パーティション136に関連するレンダリング・オペレーションの間に、グラフィックス・プロセッサ12がフラグメントに144Dをレンダリングしても良い。
これらのフラグメント144A,144B,144C及び144Dが独立してレンダリングされた後、表示プロセッサ16は、ポリゴン144の正確なグラフィカル表現を表示するために、これらのフラグメントの各々のためのレンダリングされたイメージを結合する必要があり得る。これらの独立したレンダリング及び結合オペレーションは、パフォーマンス・オーバーヘッドを引き起こす場合がある。
同様に、ポリゴン146をレンダリングするために、グラフィックス・プロセッサ12は、ポリゴン146を2つの構成フラグメント146A及び146B(図5Bに示される)にスプリットしても良い。グラフィックス・プロセッサ12は、それから、独立したレンダリング・オペレーションの間に、フラグメント146A及び146Bを独立してレンダリングしても良い。例えば、パーティション138に関連するレンダリング・オペレーションの間に、グラフィックス・プロセッサ12がフラグメントに146Aをレンダリングしても良く、パーティション136に関連するレンダリング・オペレーションの間に、グラフィックス・プロセッサ12がフラグメント146Bをレンダリングしても良い。これらのフラグメント146A及び146Bが独立してレンダリングされた後、表示プロセッサ16は、ポリゴン146の正確なグラフィカル表現を表示するために、これらのフラグメントの各々のためのレンダリングされたイメージを結合しても良い。
図5A−5Bで示される情報は、場合によっては、アプリケーション・コンピュータ・デバイス20の表示デバイス24に表示されても良い。アプリケーション・コンピュータ・デバイス20は、表示デバイス24のスクリーン・エリア130内にポリゴン140,142,144及び146の表現(又はグラフィックス・イメージ)を表示するために、グラフィックス命令30及びステート/パフォーマンス情報32を使用しても良い。アプリケーション・コンピュータ・デバイス20はまた、グラフィックス・イメージをオーバーレイし、そして、これらのイメージのシーンをグラフィカルに分割するパーティション132,134,136及び138のグラフィカル表現を表示するために、マッピング/パーティショニング情報33を使用しても良い。アプリケーション・コンピュータ・デバイス20はまた、これらのポリゴンのうちのいずれがパーティション132,134,136及び/又は138のうちの複数のものにわたるかについて判定するために、ポリゴン140,142,144及び146のためのグラフィックス・データを解析しても良い。
アプリケーション開発者がウインドウ130内に表示された情報を閲覧するとき、開発者は、いずれのポリゴンが(それらが複数のパーティションにわたるので)ハードウェアによりスプリットされるか、さらに、そのようなパーティションはどこに位置するかの考えを得ることができる。開発者は、シーンを定義するとき、グラフィックス・アプリケーション(例えばアプリケーション命令21(図1)を使用するアプリケーション)内の特定のグラフィックス・データの最適化された構成(configuration)又は位置(location)を判定するために、この情報を使用することができ得る。例えば、図5Aに示される情報の閲覧に応じて、開発者は、ポリゴン144及び146が複数のパーティションにわたらないように、ポリゴン144及び146を再編成(rearrange)又は再構成(reconfigure)すると判定しても良い。
開発者は、ウインドウ130内にグラフィックス・イメージをオーバーレイするパーティションの表現を提示されるので(これらのパーティションはグラフィックス・デバイス2により定義される)、開発者は、ポリゴン144及び146が複数のパーティションにわたらないように、あるいは、それらが最小の数のパーティションだけにわたるように、ポリゴン144及び146を定義、構成又は位置決め(locate)の方法をより良く理解し得る。場合によっては、開発者は、レンダリングの後で表示プロセッサ16によりポリゴンが結合される必要がないように、一つのポリゴンを複数のサブ・ポリゴンとして再定義すると判定しても良い。例えば、図5Bで示すように、開発者は、アプリケーション命令21の修正版において、ポリゴン146を2つの独立したポリゴン146A及び146Bとして再定義しても良い。これらのポリゴンが当初は別々に定義されるならば、これらのポリゴンのレンダリングされたバージョンは、それから、表示に先立って結合される必要はない可能性がある。そして、それは、パフォーマンス・オーバーヘッドを低減する可能性がある。
図6は、表示デバイス(例えば、図1に示される(グラフィックス・デバイス2中の)表示デバイス6又は(アプリケーション・コンピュータ・デバイス20中の)表示デバイス24)により提供されるスクリーン・エリアの8つのパーティションにわたり得るグラフィックス・データの第2の例を示す概念図である。前に説明されたように、グラフィックス・デバイス2のグラフィックス処理システム4は、様々な異なる形状、サイズ及びタイプの表示デバイス6のスクリーン・エリアに関連するビニング・パーティションを作成又は使用しても良い。そして、それは、様々な要因(例えば、メモリサイズ要求又は制約のような)又は他のパフォーマンス考慮点に依存しても良い。図6の第2の例において、プロセッサ10,12,14又は16のうちの1又は複数は、(図5A及び5B中の例に示される4つのパーティションよりもむしろ)8つの独立したパーティションを作成及び使用すると判定しても良い。
スクリーン・エリア150内で、8つのパーティションは、パーティション152,154,156,158,160,162,164及び166である。これらのパーティションの各々は、形状が長方形である。説明の目的のために、スクリーン・エリア150が実質的にスクリーン・エリア130(図5A及び5B)と同じ面積のサイズであるならば、図6に示される各々のパーティションは、図5A及び5Bに示される各々のパーティションの2分の1のサイズである。
図6の例において、ポリゴン140,142,144及び146を作成及び/又はレンダリングするために、アプリケーション命令21が、再び、実行されても良い。図5A及び5Bにおいて、4つのパーティションだけが使用されたとき、ポリゴン140及び142は、複数のパーティションにわたらなかった。このように、グラフィックス・デバイス2が4つだけのビニング・パーティションを実装するならば、これらのポリゴンは複数のパーティションにわたらないので、アプリケーション命令21を含むグラフィックス・アプリケーションは、ポリゴン140及び142のレンダリングから引き起こされる更なるパフォーマンス・オーバーヘッドを経験しない可能性がある。しかし、図6に示されるように、グラフィックス・デバイス2が8つのビニング・パーティションを実装するならば、ポリゴン140及び142は各々2つの独立したパーティションにわたる(ポリゴン140はパーティション152及び154にわたり、一方、ポリゴン142はパーティション156及び58にわたる)。
一つの態様において、パーティション152,154,156,158,160,162,164及び166のグラフィカル表現は、表示デバイス24上でアプリケーション開発者に対して表示されても良い。グラフィックス・イメージをオーバーレイするそのようなパーティションの任意のグラフィカル表示(例えば、ポリゴン140,142,144及び146の表現)は、開発者にとって全く有用であり得る。しばしば、開発者は、任意の個々のデバイス(例えばグラフィックス・デバイス2)により作成及び使用されるパーティションの数、タイプ、形状、サイズなどについての情報又は考えをほとんど有しないであろう。シーン中のグラフィックス・イメージの上にオーバーレイされるそのようなパーティションのグラフィカル表現を閲覧することができることによって、開発者は、いずれのグラフィックス・イメージ又はプリミティブ・グラフィックス・データが、例えば、複数のパーティションにわたり得るかというより良い考えを得る可能性があり、したがって、特定のレンダリング・パフォーマンス・オーバーヘッドを有する可能性がある。その結果、開発者は、グラフィックス・アプリケーション(例えばアプリケーション命令21を含むもの)により生成及び操作されるグラフィックス・データを、再定義、再構成、リサイズ又はさもなければ変更することができ得る。
図7は、一つの態様に従って、シミュレーション・アプリケーション28(図1)の実行を通してアプリケーション・コンピュータ・デバイス20により実行され得る方法のフローチャートである。アプリケーション・コンピュータ・デバイス20は、マッピング/パーティショニング情報33を、外部グラフィックス・デバイス(例えばグラフィックス・デバイス2)から受信しても良い(170)。アプリケーション・コンピュータ・デバイス20はまた、グラフィックス命令30をグラフィックス・デバイス2から受信しても良い(172)。グラフィックス命令30は、1又は複数のグラフィックス・イメージ(例えば3次元(3D)グラフィックス・イメージ)を表示デバイス6上に表示するために、グラフィックス・デバイス2によって実行される。一つの態様において、グラフィックス命令30は、実行されるときにグラフィックス・イメージをレンダリングするコール・ストリームを含む。一つの態様において、コール・ストリームは、アプリケーション・プログラミング・インタフェース(API)命令から生成されるバイナリ命令を含む。
アプリケーション・コンピュータ・デバイス20は、更に、ステート及び/又はパフォーマンス情報32を、グラフィックス・デバイス2から受信しても良い(174)。ステート/パフォーマンス情報32は、グラフィックス・デバイス2上でのグラフィックス命令30の実行に関連する。ステート/パフォーマンス情報32は、グラフィックス・デバイス2がグラフィックス・イメージをレンダリングするときの、グラフィックス・デバイス2の1又は複数のステートを指示するステート情報を含んでも良い。ステート情報は、グラフィックス命令30を実行するグラフィックス・デバイス2の1又は複数のプロセッサ(例えば制御プロセッサ10、グラフィックス・プロセッサ12、頂点プロセッサ14及び/又は表示プロセッサ16)からのステート情報を含んでも良い。場合によっては、ステート情報は、グラフィックス・データ(例えばグラフィックス・イメージ・データをレンダリングするためにグラフィックス・プロセッサ12により使用されるプリミティブ・ポリゴン・データ)を含んでも良い。
アプリケーション・コンピュータ・デバイス20は、グラフィカル・シーンにおいて、グラフィックス命令30及びステート/パフォーマンス情報32に基づいて、1又は複数のグラフィックス・イメージの表現を表示しても良い(176)。そのような方法において、アプリケーション・コンピュータ・デバイス20は、グラフィックス・デバイス2をシミュレートするシミュレーションされた環境内で、これらのグラフィックス・イメージの表現を表示することができる。シミュレーションされた環境は、アプリケーション・コンピュータ・デバイス20のプロセッサ22の上で、シミュレーション・アプリケーション28の実行を通して提供されても良い。
アプリケーション・コンピュータ・デバイス20は、グラフィックス・イメージをオーバーレイし、そして、シーンをグラフィカルに分割するパーティションのグラフィカル表現を表示しても良い(178)。例えば、一つのシナリオにおいて、アプリケーション・コンピュータ・デバイス20は、図5A及び5Bに示されるパーティションのグラフィカル表現を表示しても良い。場合によっては、パーティションは、長方形の形のパーティションを含んでも良い。アプリケーション・コンピュータ・デバイス20は、受信されたマッピング/パーティショニング情報33に基づいて、パーティションのグラフィカル表現を表示しても良い。
さらに、アプリケーション・コンピュータ・デバイス20は、表示されたグラフィックス・イメージのためのグラフィックス・データを解析して、いずれの部分が複数のパーティションに関連するかについて判定しても良い(180)。例えば、アプリケーション・コンピュータ・デバイス20は、グラフィックス・プリミティブ(例えば、表示グラフィックス・イメージを生成又はレンダリングするために使用されるポリゴン・データ)を解析して、いずれのポリゴン(例えば、三角形)が複数のパーティションにわたるかについて判定しても良い。
処理すべきより多くのフレームがあるならば(182)、グラフィックス命令の受信(172)、ステート情報の受信(174)、グラフィックス・イメージの表現の表示(176)、パーティションの表示(178)、及び、グラフィックス・データの解析(180)が、1又は複数のグラフィックス・イメージの複数のイメージ・フレームについて繰り返されても良い。この方法において、アプリケーション・コンピュータ・デバイス20は、静止及び動画グラフィックス・イメージの両方(3Dイメージを含む)を表示デバイス24上に表示することができ、また、イメージをオーバーレイし、そして、シーンをグラフィカルに分割するパーティションのグラフィカル表現を表示することができる。グラフィックス・イメージが変更し、あるいは、イメージの代わりの斜視図が示されるので、アプリケーション開発者は、パーティションのイメージ及び位置に関連するグラフィックス・データ間の関係を連続的に確認することができる。
図8は、一つの態様に従って、シミュレーション・アプリケーション28(図1)の実行を通してアプリケーション・コンピュータ・デバイス20により実行され得る方法のフローチャートである。一つの態様において、プロセッサ22は、ナビゲーション・コントローラを表示デバイス24上に表示するために、シミュレーション・アプリケーション28を実行しても良い。
アプリケーション・コンピュータ・デバイス20は、マッピング/パーティショニング情報33を、外部グラフィックス・デバイス(例えばグラフィックス・デバイス2)から受信しても良い(190)。アプリケーション・コンピュータ・デバイス20はまた、1又は複数のグラフィックス・イメージの斜視図を、その表示デバイス24に表示しても良い(191)。例えば、アプリケーション・コンピュータ・デバイス20は、受信されたグラフィックス命令30及び/又はステート/パフォーマンス情報32に基づいて、グラフィックス・イメージの斜視図を表示しても良い。
アプリケーション・コンピュータ・デバイス20は、受信されたマッピング/パーティショニング情報33(192)に基づいて、グラフィックス・イメージをオーバーレイするパーティションのグラフィックス表現を表示デバイス24上に表示しても良い。アプリケーション・コンピュータ・デバイス20はまた、グラフィックス・データのいずれの部分が該パーティションのうちの複数のものに関連するかについて判定するために、グラフィックス・データ(例えばステート/パフォーマンス情報32内に含まれるグラフィックス・データ)のためのグラフィックス・イメージを解析しても良い。例えば、グラフィックス・データは、複数のグラフィックス・プリミティブ(例えば三角形)を含んでも良い。アプリケーション・コンピュータ・デバイス20は、三角形のうちのいずれが該パーティションのうちの複数のものにわたるかについて判定しても良い(193)。これらの三角形は、複数のパーティションにおいて少なくとも部分的にレンダリングされた三角形を含んでも良い。
一つの態様において、アプリケーション・コンピュータ・デバイス20は、パーティションのグラフィカル表現を表示すると共に、該パーティションのうちの複数のものにわたる三角形のグラフィカル表現を表示デバイス24上に表示する。場合によっては、アプリケーション・コンピュータ・デバイス20は、複数のパーティションにわたる各々の三角形について、グラフィカル・インジケーション(例えば色)を表示しても良い(194)。
例えば、アプリケーション・コンピュータ・デバイス20は、一つの態様において、三角形の“ヒートマップ(heat map)”表現を表示デバイス24上に表示しても良い。ここで、各々の三角形は、関連するグラフィカル・インジケータ(例えば色)を有する。色に加えて、他の形のグラフィカル・インジケータ(例えば、ダッシュ線、点滅インジケータ、ハイライト・インジケータ)が、三角形を互いから区別する特定のシナリオにおいて使用されても良い。複数のパーティションにわたらない三角形は、第1の色(例えば、青)で表示されても良い。複数のパーティション(例えば、2〜3のパーティション)にわたる三角形は、第2の色(例えば、紫)で表示されても良い。3を超えるパーティションにわたる三角形は、第3の色(例えば、赤)で顕著に表示されても良い。このように、この例では、アプリケーション開発者は、いずれの三角形が複数のパーティションにわたるか、及び、いずれの三角形が他よりも多くのパーティションにわたるかについて、速く判定することができる。開発者は、パフォーマンス(例えば、レンダリング)オーバーヘッドを低減するために、複数のパーティションにわたる三角形を再構成、再定義又はさもなければ再構築(restructure)構成する方法について判定するために、この情報を使用することができ得る。
アプリケーション・コンピュータ・デバイス20は、表示デバイス24上に表示されるユーザ・インタフェース内にナビゲーション・コントローラを表示するために、ナビゲーション・モジュール29(図1)を使用しても良い。例えば、ナビゲーション・コントローラは、3Dカメラ・コントローラを含んでも良い。アプリケーション開発者は、表示デバイス24上に表示されるグラフィックス・イメージのシーンをナビゲートするために、ナビゲーション・コントローラとインタラクトしても良い。アプリケーション・コンピュータ・デバイス20は、イメージの斜視図を修正するために、ナビゲーション・コントローラを介して開発者からのユーザ入力を受信しても良い(195)。
アプリケーション・コンピュータ・デバイス20は、それから、ナビゲーション・コントローラに入力されるユーザに基づいて、修正されたグラフィックス・シーンにおけるグラフィックス・イメージの修正された斜視図を表示しても良い。例えば、開発者は、イメージのシーンを回転するために、シーンをズームイン又はズームアウトするために、又はさもなければ、シーンの斜視図を変更するために、ナビゲーション・コントローラとインタラクトしても良い。そして、それは、それから、新しいイメージを含む、修正されたシーン内のイメージの修正された斜視図を表示しても良い。ナビゲーション・コントローラに提供されるユーザ入力は、要求された修正34としてグラフィックス・デバイス2へ送信されても良く、そして、更新された斜視図の表示は、グラフィックス・デバイス2により元のアプリケーション・コンピュータ・デバイス20へ提供される更新された命令/情報35に基づいても良い。一つの態様において、要求された修正34は、グラフィックス・デバイス2上のグラフィックス命令30のうちの1又は複数の実行を無効にするリクエスト、グラフィックス・デバイス2上のグラフィックス命令30のうちの1又は複数を修正するリクエスト及びグラフィックス・デバイス2に関するステート/パフォーマンス情報32を修正するリクエストのうちの少なくとも一つを含んでも良い。
一つの態様において、アプリケーション・コンピュータ・デバイス20はまた、グラフィックス・イメージの修正された斜視図をオーバーレイし、そして、修正されたシーンをグラフィカルに分割したパーティションのグラフィカル表現を表示しても良い。アプリケーション・コンピュータ・デバイス20は、グラフィックス・データのいずれの部分が該パーティションのうちの複数のものに関連するかについて判定するために、グラフィックス・イメージの修正された斜視図のためのグラフィックス・データを解析しても良い。
(1又は複数の)グラフィックス・イメージの斜視図を表示すること(191)、その(1又は複数の)グラフィックス・イメージをオーバーレイするパーティションを表示すること(192)、いずれの(1又は複数の)プリミティブ三角形が複数のパーティションにわたるかについて判定すること(193)、各々の判定された三角形についてグラフィカル・インジケーションを表示すること(194)及びシーンの斜視図を修正するためにナビゲーション・コントローラを介してユーザ入力を受信すること(195)は、シーンの複数の斜視図について繰り返されても良い(196)。グラフィックス・イメージが変更するので、あるいは、イメージの代わりの斜視図が表示されるので、アプリケーション開発者は、パーティションのイメージ及び位置に関連するグラフィックス・データ間の関係を連続的に確認することができる。
図9は、一つの態様に従って、グラフィック・ウインドウ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を含むコンピュータ・デバイスは、図10に示される概念図から省略された。)
前に説明されたように、グラフィックス・デバイス200は、3Dグラフィックス・イメージ202(それは図9の例における立方体である)の表示ができる。図9の例において、グラフィックス・デバイス200はまた、キーパッド204を有する。ユーザは、グラフィックス・デバイス200を操作するために、キーパッド204とインタラクトしても良い。キーパッド204は、幾つかのキー及び/又はボタンを含んでも良い。グラフィックス・デバイス200は、コネクタ206を介して、グラフィックス・デバイス201を含むデバイス(例えば、アプリケーション・コンピュータ・デバイス20)に、グラフィックス命令及びステート/パフォーマンス情報を送信することができる。一つの態様において、コネクタ206は、ユニバーサルシステムバス(USB)コネクタを含む。他の態様において、異なる形のコネクタが、使用されても良い。幾つかの態様において、無線通信がコネクタ206を置き換えても良い。
図9の例において示されるように、表示デバイス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は、様々なステート及び/又はパフォーマンス・データを提供するために、ステート/パフォーマンス・データ・モジュール(例えば、図4に示されるステート/パフォーマンス・データ・モジュール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内の任意のステートを修正することができる。
一つの態様において、表示デバイス201はまた、複数のパーティションにわたり得るポリゴン・データだけでなく、パーティショニング情報を表示することができる。例えば、アプリケーション開発者は、表示デバイス201に、イメージ210をオーバーレイさせ、そして、表示エリア211中のシーンをグラフィカルに分割するパーティション(例えば、長方形の形のパーティション)のグラフィカル表現を表示させるために、ボタン(例えば、ボタン212A〜212Nのうちの1つ)を選択しても良い。場合によっては、デバイス200がグラフィックス・デバイス2の一部であるとき、表示されたパーティションは、受信されたマッピング/パーティショニング情報33(図1)に基づいても良い。表示デバイス201を含むデバイスはまた、グラフィックス・データのいずれの部分が該パーティションのうちの複数のものに関連するかについて判定するために、グラフィックス・イメージ210のためのグラフィックス・データ(例えば、ポリゴン・データ)を解析しても良い。例えば、複数のポリゴンがグラフィックス・イメージ210をレンダリングするために使用されるならば、デバイスは、これらのポリゴンのいずれが複数のパーティションにわたるかについて判定するためにポリゴンを解析しても良い。
図10は、一つの態様に従って、グラフィカル・ウインドウ220中に情報を表示する表示デバイス201に接続されるグラフィックス・デバイス200の他の例を示す概念図である。この態様において、ウインドウ220は、メトリック情報だけでなく、様々な命令情報を含む。
例えば、グラフィックス命令エリア208内に、様々なグラフィックス命令242が示される。グラフィックス命令242は、グラフィックス・デバイス200により提供されるグラフィックス命令のサブセットであっても良い。例えば、グラフィックス・デバイス200がグラフィックス・デバイス2の一部であるならば、グラフィックス命令242はグラフィックス命令30のサブセットであっても良い。場合によっては、マッピング情報(例えば、図1に示されるマッピング情報31)は、グラフィックス・デバイス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のグラフィックス・ドライバー(例えば、図4に示されるグラフィックス・ドライバー18)により提供されても良い。このグラフィックス・ドライバーは、それからウインドウ220内にメトリック・データとして表示され得る様々なデータを提供するために、ハードウェア・カウンタ・モジュール(例えば、図4のハードウェア・カウンタ・モジュール114)及び/又はプロセッサ使用モジュール(例えば、図4のプロセッサ使用モジュール112)を実装しても良い。
開発者はまた、場合によっては、テクスチャー・ボタン236を選択しても良い。選択に応じて、グラフィックス・イメージ210に関係する様々な形のテクスチャー情報が、グラフィックス・デバイス201により表示されても良い。例えば、テクスチャー情報は、ウインドウ220内に(例えばステート/パフォーマンス情報エリア214内などに)表示されても良い。場合によっては、テクスチャー情報は、更なる(例えば、ポップアップ)ウインドウ(図示せず)内に表示されても良い。開発者は、表示されたテクスチャー情報を閲覧しても良いが、また、場合によっては、テクスチャー情報を修正しても良い。これらの場合、テクスチャー情報に対する任意の修正が、要求された修正として、グラフィックス・デバイス200へ伝播されても良い。グラフィックス・デバイス200からの更新された命令/情報の受信に応じて、グラフィックス・イメージ210に対する変更が、表示エリア211内に表示されても良い。テクスチャー・ボタン236の選択に応じて、特定のテクスチャー情報が表示されても良い。
開発者はまた、場合によっては、オーバーライド・ボタン238を選択しても良い。オーバーライド・ボタン238の選択の後、特定の情報(命令及び/又はステート)が、(例えば、ウインドウ220又は他のウインドウ内に)表示されても良い。そして、それは、開発者によって、修正又はオーバーライドされても良い。任意の修正又はオーバーライドは、グラフィックス・デバイス200に送信される1又は複数の要求された修正の中に含まれても良い。一つの態様において、グラフィックス・デバイス200は、任意の要求された修正を処理するために、グラフィックス・ドライバー(例えばグラフィックス・ドライバー18A(図4))を実装しても良い。例えば、グラフィックス・デバイス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上での命令の実行を最適化するための、そして、命令実行の間の任意のパフォーマンス・イッシュー(例えば、ボトルネック)を除去又は軽減するためのプロセスを、試行錯誤又はデバッギングすることに、インタラクティブに動的に従事することができる。
さらに、幾つかの異なるグラフィカル・パーティションを含むグラフィカル・シーンの視覚の表現は、開発者が、スクリーン・パーティションに関連し得るコストに起因する低下したパフォーマンスを示すグラフィカル・シーンの部分を識別することができるようにしても良い。開発者は、これらのコスト及び/又は関係するパフォーマンス・オーバーヘッドを低減するのは支援するために、シーンの代わりのコンポジションを調査するために、パーティション及び関連する解析情報をレビューしても良い。
この開示において説明される技術は、汎用マイクロプロセッサ、デジタルシグナルプロセッサ(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又は複数のグラフィックス・イメージを表示することと、1又は複数のグラフィックス・イメージをオーバーレイし且つ前記シーンをグラフィカルに分割するパーティションのグラフィカル表現を表示することと、前記1又は複数のグラフィックス・イメージに関するグラフィックス・データのうちのいずれの部分が前記パーティションのうちの複数のものに関連しているかについて判定するために、該グラフィックス・データを解析することを含む方法。
[2]前記1又は複数のグラフィックス・イメージの表示、複数のパーティションのグラフィカル表現の表示及び前記1又は複数のグラフィックス・イメージの前記複数のフレームに関するグラフィックス・データの解析を、繰り返し行うことを更に含む[1]の方法。
[3]前記1又は複数のグラフィックス・イメージのうちの少なくとも一つは、3次元グラフィックス・イメージを含む[1]の方法。
[4]前記複数のパーティションの前記グラフィカル表現を表示することは、前記1又は複数のグラフィックス・イメージをオーバーレイし且つ前記シーンをグラフィカルに分割する複数の長方形の形状のパーティションのグラフィカル表現を表示することを含む[1]の方法。
[5]前記グラフィックス・データは、前記1又は複数のグラフィックス・イメージをレンダーするために使用される複数のグラフィックス・プリミティブを含む[1]の方法。
[6]前記複数のグラフィックス・プリミティブは、複数の三角形を含む[5]の方法。
[7]前記グラフィックス・データを解析することは、前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定することを含む[6]の方法。
[8]前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定することは、前記三角形のうちのいずれの三角形が少なくとも部分的に前記パーティションのうちの複数のものにおいてレンダリングされたか判定することを含む[7]の方法。
[9]前記パーティションのうちの複数のものにわたる前記三角形のグラフィカル表現を表示することを更に含む[7]の方法。
[10]前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示することは、前記パーティションの前記グラフィカル表現を表示することと共に、前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示することを含む[9]の方法。
[11]前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示することは、各々の三角形に関するグラフィカル・インジケーションを表示することを含み、前記グラフィカル・インジケーションは、各々の対応する三角形によりわたられるパーティションの数のビジュアル・インジケーションを提供する[9]の方法。
[12]各々の対応する三角形に関する前記グラフィカル・インジケーションは、色を含む[11]の方法。
[13]各々の三角形に関する前記グラフィカル・インジケーションを表示することは、他の三角形より多くのパーティションにわたるそれらの三角形に関する前記グラフィカル・インジケーションを顕著に表示することを含む[11]の方法。
[14]前記複数のパーティションの前記グラフィカル表現を表示することは、外部グラフィックス・デバイスからパーティショニング情報を受信することと、前記受信されたパーティショニング情報に基づいて、前記複数のパーティションの前記グラフィカル表現を表示することを含む[1]の方法。
[15]ナビゲーション・コントローラを表示することと、前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信することと、前記ナビゲーション・コントローラに対する前記ユーザ入力に基づいて、修正されたグラフィックス・シーン中の前記1又は複数のグラフィックス・イメージの修正された斜視図を表示することを更に含む[1]の方法。
[16]前記複数のパーティションの前記グラフィカル表現を表示することは、前記1又は複数のグラフィカル・イメージの前記修正された斜視図をオーバーレイし且つ前記修正されたシーンをグラフィカルに分割する前記複数のパーティションの前記グラフィカル表現を表示することを含み、前記グラフィックス・データを解析することは、前記グラフィックス・データのうちのいずれの部分が前記複数のパーティションのうちの前記複数のパーティションに関連するかについて判定するために、前記1又は複数のグラフィックス・イメージの前記修正された斜視図に関するグラフィックス・データを解析することを含む[15]の方法。
[17]外部グラフィックス・デバイスからグラフィックス命令を受信することと、前記外部グラフィックス・デバイスからステート情報(該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信することを含み、前記グラフィカル・シーン中に前記1又は複数のグラフィックス・イメージを表示することは、前記グラフィックス命令及び前記ステート情報に基づいて、前記1又は複数のグラフィックス・イメージを表示することを含む[1]の方法。
[18]前記ステート情報は、前記1又は複数のグラフィックス・イメージに関する前記グラフィックス・データを含む[17]の方法。
[19]前記グラフィックス・データを前記グラフィックス命令にマッピングする前記外部グラフィックス・デバイスからのマッピング情報を受信することを更に含む[17]の方法。
[20]前記パーティションは、前記グラフィックス・データ上で実行されるオペレーションのレンダリングに基づいて判定される[1]の方法。
[21]1又は複数のプロセッサに、グラフィカル・シーン中に1又は複数のグラフィックス・イメージを表示させ、1又は複数のグラフィックス・イメージをオーバーレイし且つ前記シーンをグラフィカルに分割するパーティションのグラフィカル表現を表示させ、前記1又は複数のグラフィックス・イメージに関するグラフィックス・データのうちのいずれの部分が前記パーティションのうちの複数のものに関連しているかについて判定するために、該グラフィックス・データを解析させるためのコンピュータ実行可能な命令を含むコンピュータ読み取り可能な媒体。
[22]前記1又は複数のプロセッサに、前記1又は複数のグラフィックス・イメージの表示、複数のパーティションのグラフィカル表現の表示及び前記1又は複数のグラフィックス・イメージの前記複数のフレームに関するグラフィックス・データの解析を、繰り返し行わせるためのコンピュータ実行可能な命令を更に含む[21]のコンピュータ読み取り可能な媒体。
[23]前記1又は複数のグラフィックス・イメージのうちの少なくとも一つは、3次元グラフィックス・イメージを含む[21]のコンピュータ読み取り可能な媒体。
[24]前記1又は複数のプロセッサに前記複数のパーティションの前記グラフィカル表現を表示させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに前記1又は複数のグラフィックス・イメージをオーバーレイし且つ前記シーンをグラフィカルに分割する複数の長方形の形状のパーティションのグラフィカル表現を表示させるためのコンピュータ実行可能な命令を含む[21]のコンピュータ読み取り可能な媒体。
[25]前記グラフィックス・データは、前記1又は複数のグラフィックス・イメージをレンダリングするために使用される複数のグラフィックス・プリミティブを含む[21]のコンピュータ読み取り可能な媒体。
[26]前記複数のグラフィックス・プリミティブは、複数の三角形を含む[25]のコンピュータ読み取り可能な媒体。
[27]前記1又は複数のプロセッサに前記グラフィックス・データを解析させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定させるためのコンピュータ実行可能な命令を含む[2]のコンピュータ読み取り可能な媒体。
[28]前記1又は複数のプロセッサに前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに前記三角形のうちのいずれの三角形が少なくとも部分的に前記パーティションのうちの複数のものにおいてレンダリングされたか判定させるためのコンピュータ実行可能な命令を含む[27]のコンピュータ読み取り可能な媒体。
[29]前記1又は複数のプロセッサに前記パーティションのうちの複数のものにわたる前記三角形のグラフィカル表現を表示させるための前記コンピュータ実行可能な命令を更に含む[27]のコンピュータ読み取り可能な媒体。
[30]前記1又は複数のプロセッサに前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに前記パーティションの前記グラフィカル表現を表示させると共に、前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示させるためのコンピュータ実行可能な命令を含む[29]のコンピュータ読み取り可能な媒体。
[31]前記1又は複数のプロセッサに前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに各々の三角形に関するグラフィカル・インジケーションを表示させるためのコンピュータ実行可能な命令を含み、前記グラフィカル・インジケーションは、各々の対応する三角形によりわたられるパーティションの数のビジュアル・インジケーションを提供する[29]のコンピュータ読み取り可能な媒体。
[32]各々の対応する三角形に関する前記グラフィカル・インジケーションは、色を含む[31]のコンピュータ読み取り可能な媒体。
[33]前記1又は複数のプロセッサに各々の三角形に関する前記グラフィカル・インジケーションを表示させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに他の三角形より多くのパーティションにわたるそれらの三角形に関する前記グラフィカル・インジケーションを顕著に表示させるためのコンピュータ実行可能な命令を含む[31]のコンピュータ読み取り可能な媒体。
[34]前記1又は複数のプロセッサに前記複数のパーティションの前記グラフィカル表現を表示させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに、外部グラフィックス・デバイスからパーティショニング情報を受信させ、前記受信されたパーティショニング情報に基づいて、前記複数のパーティションの前記グラフィカル表現を表示させるためのコンピュータ実行可能な命令を含む[21]のコンピュータ読み取り可能な媒体。
[35]前記1又は複数のプロセッサに、ナビゲーション・コントローラを表示させ、前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信させ、前記ナビゲーション・コントローラに対する前記ユーザ入力に基づいて、修正されたグラフィックス・シーン中の前記1又は複数のグラフィックス・イメージの修正された斜視図を表示させるためのコンピュータ実行可能な命令を更に含む[21]のコンピュータ読み取り可能な媒体。
[36]前記1又は複数のプロセッサに前記複数のパーティションの前記グラフィカル表現を表示させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに前記1又は複数のグラフィカル・イメージの前記修正された斜視図をオーバーレイし且つ前記修正されたシーンをグラフィカルに分割する前記複数のパーティションの前記グラフィカル表現を表示させるためのコンピュータ実行可能な命令を含み、前記1又は複数のプロセッサに前記グラフィックス・データを解析させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに前記グラフィックス・データのうちのいずれの部分が前記複数のパーティションのうちの前記複数のパーティションに関連するかについて判定するために、前記1又は複数のグラフィックス・イメージの前記修正された斜視図に関するグラフィックス・データを解析させるためのコンピュータ実行可能な命令を含む[35]のコンピュータ読み取り可能な媒体。
[37]前記1又は複数のプロセッサに、外部グラフィックス・デバイスからグラフィックス命令を受信させ、前記外部グラフィックス・デバイスからステート情報(該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信させるためのコンピュータ実行可能な命令を更に含み、前記1又は複数のプロセッサに前記グラフィカル・シーン中に前記1又は複数のグラフィックス・イメージを表示させるための前記コンピュータ実行可能な命令は、前記1又は複数のプロセッサに前記グラフィックス命令及び前記ステート情報に基づいて、前記1又は複数のグラフィックス・イメージを表示させるためのコンピュータ実行可能な命令を含む[21]のコンピュータ読み取り可能な媒体。
[38]前記ステート情報は、前記1又は複数のグラフィックス・イメージに関する前記グラフィックス・データを含む[37]のコンピュータ読み取り可能な媒体。
[39]前記1又は複数のプロセッサに前記グラフィックス・データを前記グラフィックス命令にマッピングする前記外部グラフィックス・デバイスからのマッピング情報を受信させるためのコンピュータ実行可能な命令を更に含む[37]のコンピュータ読み取り可能な媒体。
[40]前記パーティションは、前記グラフィックス・データ上で実行されるオペレーションのレンダリングに基づいて判定される[2]のコンピュータ読み取り可能な媒体。
[41]表示デバイスと、グラフィカル・シーン中に1又は複数のグラフィックス・イメージを前記表示デバイス上に表示し、1又は複数のグラフィックス・イメージをオーバーレイし且つ前記シーンをグラフィカルに分割するパーティションのグラフィカル表現を前記表示デバイス上に表示し、前記1又は複数のグラフィックス・イメージに関するグラフィックス・データのうちのいずれの部分が前記パーティションのうちの複数のものに関連しているかについて判定するために、該グラフィックス・データを解析するように構成される1又は複数のプロセッサとを含むデバイス。
[42]前記1又は複数のプロセッサは、前記1又は複数のグラフィックス・イメージの表示、複数のパーティションのグラフィカル表現の表示及び前記1又は複数のグラフィックス・イメージの前記複数のフレームに関するグラフィックス・データの解析を、繰り返し行うように更に構成される[41]のデバイス。
[43]前記1又は複数のグラフィックス・イメージのうちの少なくとも一つは、3次元グラフィックス・イメージを含む[41]のデバイス。
[44]前記1又は複数のプロセッサは、前記1又は複数のグラフィックス・イメージをオーバーレイし且つ前記シーンをグラフィカルに分割する複数の長方形の形状のパーティションのグラフィカル表現を表示することに少なくともよって、前記複数のパーティションの前記グラフィカル表現を表示するように構成された[41]のデバイス。
[45]前記グラフィックス・データは、前記1又は複数のグラフィックス・イメージをレンダリングするために使用される複数のグラフィックス・プリミティブを含む[41]のデバイス。
[46]前記複数のグラフィックス・プリミティブは、複数の三角形を含む[45]のデバイス。
[47]前記1又は複数のプロセッサは、前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定することに少なくともよって、前記グラフィックス・データを解析するように構成された[46]のデバイス。
[48]前記1又は複数のプロセッサは、前記三角形のうちのいずれの三角形が少なくとも部分的に前記パーティションのうちの複数のものにおいてレンダリングされたか判定することに少なくともよって、前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定するように構成された[47]のデバイス。
[49]前記1又は複数のプロセッサは、前記パーティションのうちの複数のものにわたる前記三角形のグラフィカル表現を表示するように更に構成された[47]のデバイス。
[50]前記1又は複数のプロセッサは、前記パーティションの前記グラフィカル表現を表示することと共に、前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示することに少なくともよって、前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示するように構成された[49]のデバイス。
[51]前記1又は複数のプロセッサは、各々の三角形に関するグラフィカル・インジケーションを表示することに少なくともよって、前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示し、前記グラフィカル・インジケーションは、各々の対応する三角形によりわたられるパーティションの数のビジュアル・インジケーションを提供する[49]のデバイス。
[52]各々の対応する三角形に関する前記グラフィカル・インジケーションは、色を含む[51]のデバイス。
[53]前記1又は複数のプロセッサは、他の三角形より多くのパーティションにわたるそれらの三角形に関する前記グラフィカル・インジケーションを顕著に表示することに少なくともよって、各々の三角形に関する前記グラフィカル・インジケーションを表示するように構成された[51]のデバイス。
[54]前記1又は複数のプロセッサは、外部グラフィックス・デバイスからパーティショニング情報を受信し、前記受信されたパーティショニング情報に基づいて、前記複数のパーティションの前記グラフィカル表現を表示することに少なくともよって、前記複数のパーティションの前記グラフィカル表現を表示するように構成された[41]のデバイス。
[55]前記1又は複数のプロセッサは、前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信することと、前記ナビゲーション・コントローラに対する前記ユーザ入力に基づいて、修正されたグラフィックス・シーン中の前記1又は複数のグラフィックス・イメージの修正された斜視図を表示することに少なくともよって、ナビゲーション・コントローラを表示するように更に構成された[41]のデバイス。
[56]前記1又は複数のプロセッサは、前記1又は複数のグラフィカル・イメージの前記修正された斜視図をオーバーレイし且つ前記修正されたシーンをグラフィカルに分割する前記複数のパーティションの前記グラフィカル表現を表示することに少なくともよって、前記複数のパーティションの前記グラフィカル表現を表示するように構成され、前記1又は複数のプロセッサは、前記グラフィックス・データのうちのいずれの部分が前記複数のパーティションのうちの前記複数のパーティションに関連するかについて判定するために、前記1又は複数のグラフィックス・イメージの前記修正された斜視図に関するグラフィックス・データを解析することに少なくともよって、前記グラフィックス・データを解析するように構成された[55]のデバイス。
[57]前記1又は複数のプロセッサは、外部グラフィックス・デバイスからグラフィックス命令を受信し、前記外部グラフィックス・デバイスからステート情報(該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信するように更に構成され、前記1又は複数のプロセッサは、前記グラフィックス命令及び前記ステート情報に基づいて、前記1又は複数のグラフィックス・イメージを表示することに少なくともよって、前記グラフィカル・シーン中に前記1又は複数のグラフィックス・イメージを表示するように構成された[41]のデバイス。
[58]前記ステート情報は、前記1又は複数のグラフィックス・イメージに関する前記グラフィックス・データを含む[57]のデバイス。
[59]前記1又は複数のプロセッサは、前記グラフィックス・データを前記グラフィックス命令にマッピングする前記外部グラフィックス・デバイスからのマッピング情報を受信するように更に構成された[57]のデバイス。
[60]前記パーティションは、前記グラフィックス・データ上で実行されるオペレーションのレンダリングに基づいて判定される[41]のデバイス。
[61]グラフィカル・シーン中に1又は複数のグラフィックス・イメージを表示するための手段と、1又は複数のグラフィックス・イメージをオーバーレイし且つ前記シーンをグラフィカルに分割するパーティションのグラフィカル表現を表示するための手段と、前記1又は複数のグラフィックス・イメージに関するグラフィックス・データのうちのいずれの部分が前記パーティションのうちの複数のものに関連しているかについて判定するために、該グラフィックス・データを解析するための手段とを含むデバイス。
[62]前記1又は複数のグラフィックス・イメージの表示、複数のパーティションのグラフィカル表現の表示及び前記1又は複数のグラフィックス・イメージの前記複数のフレームに関するグラフィックス・データの解析を、繰り返し行うための手段を更に含む[61]のデバイス。
[63]前記1又は複数のグラフィックス・イメージのうちの少なくとも1つは、3次元グラフィックス・イメージを含む[61]のデバイス。
[64]前記複数のパーティションの前記グラフィカル表現を表示するための前記手段は、前記1又は複数のグラフィックス・イメージをオーバーレイし且つ前記シーンをグラフィカルに分割する複数の長方形の形状のパーティションのグラフィカル表現を表示するための手段を含む[61]のデバイス。
[65]前記グラフィックス・データは、前記1又は複数のグラフィックス・イメージをレンダリングするために使用される複数のグラフィックス・プリミティブを含む[61]のデバイス。
[66]前記複数のグラフィックス・プリミティブは、複数の三角形を含む[65]のデバイス。
[67]前記グラフィックス・データを解析するための前記手段は、前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定するための手段を含む[66]のデバイス。
[68]前記三角形のうちのいずれの三角形が前記パーティションのうちの複数のものにわたるか判定するための前記手段は、前記三角形のうちのいずれの三角形が少なくとも部分的に前記パーティションのうちの複数のものにおいてレンダリングされたか判定するための手段を含む[67]のデバイス。
[69]前記パーティションのうちの複数のものにわたる前記三角形のグラフィカル表現を表示するための手段を更に含む[67]のデバイス。
[70]前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示するための前記手段は、前記パーティションの前記グラフィカル表現を表示することと共に、前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示するための手段を含む[69]のデバイス。
[71]前記パーティションのうちの複数のものにわたる前記三角形の前記グラフィカル表現を表示するための前記手段は、各々の三角形に関するグラフィカル・インジケーションを表示するための手段を含み、前記グラフィカル・インジケーションは、各々の対応する三角形によりわたられるパーティションの数のビジュアル・インジケーションを提供する[69]のデバイス。
[72]各々の対応する三角形に関する前記グラフィカル・インジケーションは、色を含む[71]のデバイス。
[73]各々の三角形に関する前記グラフィカル・インジケーションを表示するための前記手段は、他の三角形より多くのパーティションにわたるそれらの三角形に関する前記グラフィカル・インジケーションを顕著に表示するための手段を含む[71]のデバイス。
[74]前記複数のパーティションの前記グラフィカル表現を表示するための前記手段は、外部グラフィックス・デバイスからパーティショニング情報を受信するための手段と、前記受信されたパーティショニング情報に基づいて、前記複数のパーティションの前記グラフィカル表現を表示するための手段とを含む[61]のデバイス。
[75]ナビゲーション・コントローラを表示するための手段と、前記ナビゲーション・コントローラとインタラクトするためのユーザ入力を受信するための手段と、前記ナビゲーション・コントローラに対する前記ユーザ入力に基づいて、修正されたグラフィックス・シーン中の前記1又は複数のグラフィックス・イメージの修正された斜視図を表示するための手段とを更に含む[61]のデバイス。
[76]前記複数のパーティションの前記グラフィカル表現を表示するための前記手段は、前記1又は複数のグラフィカル・イメージの前記修正された斜視図をオーバーレイし且つ前記修正されたシーンをグラフィカルに分割する前記複数のパーティションの前記グラフィカル表現を表示するための手段を含み、前記グラフィックス・データを解析するための前記手段は、前記グラフィックス・データのうちのいずれの部分が前記複数のパーティションのうちの前記複数のパーティションに関連するかについて判定するために、前記1又は複数のグラフィックス・イメージの前記修正された斜視図に関するグラフィックス・データを解析するための手段を含む[75]のデバイス。
[77]外部グラフィックス・デバイスからグラフィックス命令を受信するための手段と、前記外部グラフィックス・デバイスからステート情報(該ステート情報は、前記外部グラフィックス・デバイス上での前記グラフィックス命令の実行に関連する)を受信するための手段とを更に含み、前記グラフィカル・シーン中に前記1又は複数のグラフィックス・イメージを表示するための前記手段は、前記グラフィックス命令及び前記ステート情報に基づいて、前記1又は複数のグラフィックス・イメージを表示するための手段を含む[61]のデバイス。
[78]前記ステート情報は、前記1又は複数のグラフィックス・イメージに関する前記グラフィックス・データを含む[77]のデバイス。
[79]前記グラフィックス・データを前記グラフィックス命令にマッピングする前記外部グラフィックス・デバイスからのマッピング情報を受信するための手段を更に含む[77]のデバイス。
[80]前記パーティションは、前記グラフィックス・データ上で実行されるオペレーションのレンダリングに基づいて判定される[61]のデバイス。