[go: up one dir, main page]

JP2011008789A - グラフィック分析技術 - Google Patents

グラフィック分析技術 Download PDF

Info

Publication number
JP2011008789A
JP2011008789A JP2010145332A JP2010145332A JP2011008789A JP 2011008789 A JP2011008789 A JP 2011008789A JP 2010145332 A JP2010145332 A JP 2010145332A JP 2010145332 A JP2010145332 A JP 2010145332A JP 2011008789 A JP2011008789 A JP 2011008789A
Authority
JP
Japan
Prior art keywords
pixel
graphic
requests
api
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010145332A
Other languages
English (en)
Other versions
JP5875751B2 (ja
Inventor
Christopher J Cormack
ジェイ. コーマック クリストファー
Sergey Shtin
シュティン セルゲイ
Brian W Brown
ダブリュー. ブラウン ブライアン
Lawrence Wickstrom
ウィックストロム ローレンス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2011008789A publication Critical patent/JP2011008789A/ja
Application granted granted Critical
Publication of JP5875751B2 publication Critical patent/JP5875751B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3636Debugging of software by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Debugging And Monitoring (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

【課題】
実施例は、グラフィック・アプリケーションの分析技術を提供する。
【解決手段】
例えば、本装置は、グラフィック・アプリケーション・プログラム・インターフェース(API)、グラフィックエンジン、およびグラフィック解析ツールを有する。グラフィック解析ツールはグラフィックAPIに発行された複数の描画要求を受信してもよく、かつ描画要求を複数のシーケンスに配置する。各々のシーケンスは特定のレンダーターゲットに対応する。この情報から、さまざまな分析タスクが遂行されてもよい。例えば、上書きイメージが生成されてもよい。そのような上書きイメージは、ダイナミック・レンジを増加させるために強調してもよい。また、ピクセルヒストリーが対応するピクセル選択に基づいて生成されてもよい。選択されたピクセル上の描画要求の効果を特定してもよい。更に、この種のタスクは、レンダーターゲット毎に実行されてもよい。
【選択図】図1

Description

本願発明は、グラフィック・アプリケーションの分析技術に関する。
コンピュータアプリケーションによって使用されるグラフィックは、ますます複雑になっている。例えば、ゲーム・アプリケーションは、通常、リアルタイム・ベースでのアニメーションを得る3次元グラフィクスを提供する。グラフィックをテストし、分析し、かつ、デバッグするためのツールは、グラフィック・アプリケーションの発展にとって重要である。
この種のグラフィックは、次第にリアルなものとなってきている。この種のグラフィックの複雑度が増加するにつれて、アプリケーション開発者に対する課題も増加する。例えば、開発者は、グラフィックレンダリングが動作しない場合や、正常に表示されない場合に、デバッグしなければならない。開発者は、限られた処理能力を取扱わなければならない。
したがって、グラフィックレンダリングによる処理負荷が分析され、かつこの種の限られた能力の範囲内で適合するように改良することが必要となる。
図面において、同様の符号は、能的に類似した、および/または、構造的に類似した要素を示す。要素が最初に示された図面の番号は、参照番号の最上位桁によって示される。本発明は、添付の図面を参照して後述する。
例示的なオペレーション環境の図である。 グラフィック解析ツールに含まれ得るインプリメンテーションの図である。 例示的なユーザインタフェースの図である。 論理流れ図である。 論理流れ図である。 論理流れ図である。 論理流れ図である。 論理流れ図である。 論理流れ図である。 例示的なプラットフォームの図である。
実施例は、グラフィック・アプリケーションの分析の技術を提供する。例えば、装置は、グラフィック・アプリケーション・プログラム・インターフェース(API)、グラフィックエンジン、およびグラフィック解析ツールを含む。グラフィック解析ツールはグラフィックAPIに発行された複数の描画要求(draw call)を受信してもよく、かつ、複数のシーケンスとして描画要求を配置する(並べる)。各々のシーケンスはレンダーターゲットに対応する。この情報から、さまざまな分析タスクが遂行されてもよい。例えば、上書き(overdraw)イメージが生成されてもよい。また、ピクセルヒストリーが、対応するピクセル選択に基づいて生成されてもよい。更に、選択されたピクセル上の描画要求の効果が決定されてもよい。さらに、この種のタスクは、レンダリングターゲット毎に実行されてもよい。
本明細書の全体にわたって「一実施例」または「実施例」という語は、実施例に対応して記載されている特定の特徴または構造が少なくとも一つの実施例に含まれることを意味する。したがって、「実施例において」という言葉は、本明細書の全体にわたって、必ずしも同じ実施例に関するものというわけではない。さらにまた、特定の特徴または構造は、一つ以上の実施例のいかなる適切な方法に組み込まれてもよい。
図1は例示的なオペレーション環境100の図である。そして、それは本願明細書において記載されている技術を使用し得る。環境100は、さまざまな要素を含んでもよい。例えば、図1は、グラフィック・アプリケーション102、グラフィック・アプリケーション・プログラム・インターフェース(API)104、グラフィックエンジン106、およびグラフィック解析ツール110を含む環境100を示している。これらの要素は、ハードウェアおよび/またはソフトウェアのいかなる組合せでインプリメントされてもよい。さらに、実施例は、図1の要素に限られない。
実施例において、グラフィック・アプリケーション102(例えばユーザアプリケーション)は、コンピュータアプリケーションであり、一つ以上のディスプレイにグラフィック(例えば3次元グラフィクス)を出力する。例示的なユーザアプリケーションとしては、ビデオゲーム、およびシミュレーション・ツールが含まれる(なおこれに制限されるものではない)。
グラフィックAPI104は、グラフィック・アプリケーション102にグラフィックエンジン106のサービスを提供する。実施例において、これは、さまざまなルーチン、データ構造、オブジェクト・クラスおよび/またはプッロト要求で提供されてもよい。この種のグラフィックAPI104の使用を、本願明細書において「描画要求」と呼ぶ。実施例は、商用として利用可能なAPIを使用してもよい(これに制限されるものではない)。この種のAPIの例としては、OpenGL、DirectX等が含まれる。
一般のオペレーションにおいて、グラフィック・アプリケーション102は、複数のレンダーターゲットを用いて、グラフィックを生成してもよい。
レンダーターゲットとは、(グラフィックエンジン106によって管理される)バッファである。このバッファは、グラフィックAPI104を介してグラフィック・アプリケーション102が生成する作画オペレーションによって影響を受ける。
複数のレンダーターゲットは、さまざまな方法で使用されてもよい。例えば、グラフィック・アプリケーション102は、複数のレンダーターゲットを用いてもよい。各レンダーターゲットは、特定の効果に対応する。典型的な効果としては、シャドーイング(Shadowing)、霧、照明、動きに起因するブラー等がある(なお、これに限定されるものではない)。加えて、または代替的には、複数のレンダーターゲットの各々は、レンダリングされた1つまたは複数のオブジェクトまたはプリミティブに対応する。しかしながら、実施例は、これらの例示的なレンダーターゲットの用途に限られない。
グラフィックエンジン106は、グラフィック・アプリケーション102のためのグラフィック処理を実行する。上述の通り、この種のオペレーションは、グラフィックAPI104で受信され、かつ処理された描画要求に応答して実行されてもよい。例示的なオペレーションとしては、イメージ(フレーム)をレンダリングすることとディスプレイ装置へ出力することとを含む。したがって、グラフィックエンジン106は、グラフィックパイプラインを使用する。上述の通り、グラフィックエンジン106は、ハードウェアおよび/またはソフトウェアのいかなる組合せによってインプリメントされてもよい。したがって、実施例において、グラフィックエンジン106は、グラフィック処理装置(GPU)を含む。
図1において、グラフィック解析ツール110は、グラフィックAPI104、およびグラフィックエンジン106に接続される。グラフィック解析ツール110は、グラフィック・アプリケーションの分析を含むオペレーションを実行してもよい。これを行うため、グラフィック解析ツール110は、グラフィック・アプリケーション102によって作られる描画要求を取得してもよい。この描画要求に基づいて、グラフィック解析ツール110は、描画要求に関するオペレーション情報を生成するために、グラフィックエンジン106を用いてもよい。この情報は、上書きイメージおよびピクセルヒストリーを含んでもよい(これに制限されるわけではない)。
また、グラフィック解析ツール110は、グラフィックエンジン106によってレンダリングされたフレームを取得(またはキャプチャ)してもよい。また、グラフィック解析ツール110は、この種のキャプチャされたフレームに関連する描画要求を取得してもよい。さらに、グラフィック解析ツール110は、アプリケーション102に対応するフレームが生成されるレートを制御してもよい。この種のコントロールによって、フレームは、所望のペースで進行し得る。このペースは、ユーザによって設定されてもよい。
図1に関し上述したように、グラフィック解析ツール110は、グラフィック・アプリケーションの分析を含むオペレーションを実行してもよい。図2は、グラフィック解析ツール110に含まれてもよい例示的なインプリメンテーション200の図である。図2は、グラフィックAPIインターセプタ・モジュール202、グラフィックAPI要求・ログ・データベース204、再構成モジュール206、上書き解析モジュール207、ピクセルヒストリー解析モジュール208、再生モジュール210、およびユーザインタフェースモジュール212を含むインプリメンテーション200を示している。これらの要素は、ハードウェアおよび/またはソフトウェアのいかなる組合せによってインプリメントされてもよい。
グラフィックAPIインターセプタ・モジュール202は、グラフィック・アプリケーション(例えばグラフィック・アプリケーション102)を生成する、グラフィックAPIオペレーション(本明細書において、描画要求と称される)を複製する。更に、グラフィックAPIインターセプタ・モジュール202は、複製された描画要求を、グラフィックAPI要求ログ・データベース204に転送する。次に、グラフィックAPI要求・ログ・データベース204は、これらの受信された描画要求を記憶する。
グラフィックAPI要求ログ・データベース204は、受信した描画要求をさまざまな方法で記憶してもよい。例えば、グラフィックAPI要求・ログ・データベース204に描画要求を、時刻順に記憶してもよい。更に、この種の時刻順の記憶は、各々の複数のレンダーターゲットに対する描画要求にまとめられてもよい。
再構成モジュール206は、API要求・ログ・データベース204に記憶されている描画要求に基づいて、さまざまなイメージ(フレーム)を生成してもよい。この種の再構成は、グラフィックエンジン(例えばグラフィックエンジン106)の使用を含む。さらに、この種のイメージを生成する場合、再構成モジュール206は、グラフィックエンジンに特定の設定を使用するように指示してもよい。例えば、特定のイベント(例えば上書き)が発生した数をレンダリングイメージが示すために、設定が変更されてもよい。また、再構成モジュール206は、グラフィックエンジンの中のさまざまなパイプラインテストを作動させ、または停止させてもよい。上書き解析モジュール207は、特定の描画要求に関する上書きを(レンターターゲット毎に)特定する。これは、選定された(ユーザにより選択されたか自動的に選択された)描画要求およびレンダーターゲットに基づいて、再構成モジュール206に、様々な上書きイメージを生成する。この種の特徴に関する例示的なオペレーションは、図4を使って後述する。
ピクセルヒストリー解析モジュール208は、ピクセルに書き込まれる(「描かれる(touched)」)描画要求のシーケンスを特定する。これは、再構成モジュール206に対して、さまざまな設定に従って特定のイメージを生成するように指示することを含んでもよい。この種の特徴に関する例示的なオペレーションは、図5、図6、および図7に関連して後述する。
ユーザインタフェースモジュール210は、グラフィック解析ツール110によってユーザとの対話処理を提供する。例えば、実施例において、ユーザインタフェースモジュール210は、本願明細書において記載されている技術に対して効率的なユーザ・オペレーションを提供するグラフィカルユーザーインタフェースを提供する。
フレーム記憶モジュール212は、グラフィックエンジン(例えばグラフィックエンジン106)によって生成される一つ以上のフレーム(イメージ)を記憶する。これらのフレームは、出力されるディスプレイ装置(図示せず)上の位置に対応する複数のピクセルを有する。フレームは、さまざまなフォーマットであってもよい。例示的なフォーマットとしては、さまざまなRGB、およびCMYKフォーマットを含む(これに制限されるわけではない)。また、フレームキャプチャデータベース108は、フレームを記憶するために
さまざまな圧縮およびまたはエンコードする方式を使用してもよい。
実施例において、これらのフレームは、本願明細書に記載されている技術に従って生成され得る。例えば、フレーム記憶モジュール212は、アプリケーション102、グラフィックAPI104、およびグラフィックエンジン106の正常動作で生成されるフレームを記憶してもよい。また、フレーム記憶モジュール212は、上書きイメージフレーム、ピクセルヒストリーフレーム、および他のタイプのフレームを含むフレームを記憶してもよい。
実施例は、グラフィック関連情報をユーザに表示するユーザインタフェースを提供する。図3は、例示的なユーザインタフェース(また、インターフェース・コンソールと称する)300の図である。インターフェース・コンソール300によって、ユーザはグラフィック処理に関連づけられたさまざまな情報を見ることができる。図3に示すように、インターフェース・コンソール300は、描画要求・フィールド302、レンダーターゲットフィールド304、イメージレンダリングフィールド306、およびピクセルヒストリーフィールド308を有する。
レンダーターゲットフィールド304は、複数の特定のイメージに関連づけられたレンダーターゲットを示す。実施例において、このレンダーターゲットは、アイコンまたは他のグラフィック表示として示されてもよい。ユーザは、GUI対話オペレーションによって(例えば、カーソル配置、およびダブルクリックすることによって)特定の描画要求を選んでもよい。
実施例において、描画要求・フィールド302は、時刻順の(例えば、左から右の)バーチャート形式で、描画要求(例えば、フィールド304で選択されたレンダーターゲットに対応する描画要求)を示す。したがって、各々のバーは、特定の描画要求に対応する。さらに、各々のバーの高さは、対応する描画要求によって生じるグラフィックエンジン・オペレーションの数(例えばパイプライン・オペレーション)を示す。実施例において、ユーザは、GUI対話オペレーションによって(例えば、カーソル配置、およびダブルクリックすることによって)特定の描画要求を選んでもよい。
選択された描画要求に基づいて、ユーザは、上書きイメージをイメージレンダリングフィールド306において見ることができる。上書きイメージに関する特徴については、図4を用いて後述する。上書きイメージから、ユーザは分析のための特定ピクセルを選んでもよい。このピクセル選択によって、ピクセルヒストリーイメージが、イメージをレンダリングフィールド306に示されてもよい。さらに、描画要求に対応するピクセルヒストリーが、ピクセルヒストリーフィールド308に示されてもよい。ピクセルヒストリーに関する例示的な詳細は、図5ないし図7を用いて後述する。
各種実施形態のオペレーションは、以下の図、およびこれらの実施例によって更に後述する。いくつかの図は、論理フローを含んでいる。本願明細書において発表されるこの種の図が以下に記載されているが、特定の論理フロー、単に本願明細書において記載されている一般の機能がどのようにインプリメントされ得るかという例を提供するものであると理解されたい。更に、示された論理フローは、特に明記しない限り示される順番に、必ずしも実行される必要があるというわけではない。加えて、与えられた論理フローは、ハードウェア要素、一つ以上のプロセッサによって実行されるソフトウェア要素またはそれのいかなる組合せによってインプリメントされてもよい。実施例は、本明細書の説明に限定されない。
実施例は、グラフィック・アプリケーションを分析するために、さまざまな技術を提供する。その技術には、上書き(overdraw)、ピクセルヒストリー、描画要求等の分析が含まれる。更に、この種の技術においては、代替(alternate)のイメージ再構成、および表示を使用してもよい。
これらの代替の再構成、および表示は、グラフィック・シーンからパフォーマンスに関する情報を都合よく、よりすばやく抽出することを可能とする。代替の再構成、および表示の例としては、レンダーターゲット毎に実行される上書きの分析が挙げられる。この分析から、対応するピクセルヒストリーが生成されてもよい。これらの特徴によって、グラフィック処理のシーケンスから、通常では隠れた情報を抽出する技術を都合よく提供できる。上書きの分析、およびピクセルヒストリー生成を含む例については、図4によって後述する。
図4は論理フロー400を例示する。これは、一つ以上の実施例によって実行されるオペレーションを示している。このフローは、図1および図2と関連して描かれている。なお、このフローは、他の実施例において使用されてもよい。図4は、特定のシーケンスを示しているが、他のシーケンスが使用されてもよい。また、示されたオペレーションは、さまざまに、パラレルに、かつ/またはシーケンシャルに、組合せて実行されてもよい。
ブロック402で、グラフィックAPI要求(描画要求)のシーケンスが記憶される。このシーケンスは、特定のイメージ(フレーム)に対応してもよい。図2において、これは、これらの描画要求をインターセプトするAPIインターセプタ・モジュール202、およびそれらを記憶しているグラフィックAPI要求・ログ・データベース204と関連している。
ブロック404で、API要求の記憶されたシーケンスは、複数のレンダーターゲットの各々に対するシーケンスにソートされる。図2において、これは、各々のAPI要求からレンダーターゲットを特定する再構成モジュール206に関連する。実施例において、再構成モジュール206は、これを実行するために、グラフィックエンジン(例えばグラフィックエンジン106)を使用してもよい。
これらの各々のレンダーターゲットグループに対して、上書きイメージがブロック406で作成される。図2を再度参照する。これは、各々のレンダーターゲットに対して描画要求を実行するグラフィックエンジン(例えばグラフィックエンジン106)に命令する再構成モジュール206に関連する。なお、通常動作の代わりに、ピクセル値が蓄積されるように、グラフィックエンジンが構成される。より詳細には、描画要求によって、書かれる(「描かれる」)たびに、対応するレンダーターゲットピクセル値(ピクセルがヒットカウントを+1増加)が蓄積されるようにグラフィックエンジンが構成される。したがって、各々のレンダーターゲットにおいて、各々のピクセルのためにカウントが生成される。このカウントは、ピクセルが何度描かれたかを示すこととなる。
ブロック408で、一つのレンダーターゲットが選択される。この選択は、ユーザにより、または自動的になされる。実施例において、このレンダーターゲットを、ディスプレイに表示された複数のレンダーターゲットのリスト(例えば、アイコンまたは他のグラフィック表示)から選択さしてもよい。
ブロック409で、選択されたレンダーターゲットに対する上書きイメージが視覚的に強調されてもよい。この強調は、上書きイメージのダイナミック・レンジを増加させることを含んでもよい。この強調に関する詳細は、図8に関連して後述する。
ブロック410で、上書きイメージは、選択されたレンダーターゲットに対して表示される。上述の通り、上書きイメージによって、ピクセルが描かれた回数を示す。実施例において、この数は、表示された上書きイメージのピクセルの明るさによって示されてもよい。しかしながら、実施例は、この特徴に限定されない。
上書きイメージの一つ以上の対応するピクセルが、ブロック412で選択されてもよい。この選択は、ユーザによってなされるか、または自動的な技術が使われてもよい。ユーザによる選択は、グラフィカルユーザーインタフェース(GUI)によって、上書きイメージとインターフェースを形成してもよい。例えば、ユーザは、グラフィック十字カーソルによって、座標値の入力によって、および/または、他の技術によって、ピクセルを選択してもよい。あるいは、自動選択は、上書きの値に基づく自動的なピクセルの選択であってもよい。例えば、最も大きい数の描画(touch)を示すピクセルが、自動的に選択されてもよい。
ブロック414で、各々の一つ以上選択されたピクセルに対するピクセルヒストリーが、ユーザのために取得される。ピクセルヒストリーは、ピクセルに影響を及ぼした(または書込がなされた)各々の描画要求を含んでもよい。実施例において、ブロック408で選択されたレンダーターゲットに影響与えた描画要求だけが、関係してもよい。しかしながら、実施例では、これに加えて、またはこれに代えて、他のレンダーターゲットに影響を与える描画要求を提供してもよい。
このピクセルヒストリーは、ブロック416で示されてもよい。実施例において、この表示は、各々の描画要求を示すアイコンのシーケンスの形であってもよい。ユーザは、描画要求に関して詳細を見るために、このアイコンを(例えばダブルクリックで)選択してもよい。しかしながら、ピクセルヒストリーを示す他の技術(例えばテキスト・リスト)が使用されてもよい。
図4のフローは、画面において最も複雑なピクセルから情報を抽出する直接的な方法を都合よく提供する。例えば、ブロック410で示される上書きイメージから、比較的多数回の描画が行われたピクセル(これを、高い複雑度を有するピクセルと称する)が選択されてもよい。上記のように、この種のピクセルは、表示されたそれらの明るさによって明らかにされてもよい。高い複雑度を有するピクセルを選ぶと、ユーザは、ピクセルに影響を及ぼしたAPI要求(ピクセルヒストリー)を見ることができるようにしてもよい。加えて、ユーザに対して、イメージの(上書きの表示ではなく)通常の表示を見せてもよい。描画要求を分析することによって、ユーザは、API要求のより効率的なセットが作れるかを検討(determine)してもよい。したがって、このピクセルの識別によって、開発者は、ピクセルがレンダリングされる回数を減らすために、アプリケーションを改善してもよい。これは、グラフィック・アプリケーションのパフォーマンスを都合よく向上させ得る。
上述の通り、実施例は、ピクセルに関して情報を抽出することを提供する。また、実施例は、描画要求によって、ピクセルが描画された回数を提供してもよい。単一の描画要求は、二回以上特定ピクセルを描画してもよい。例えば、グラフィックエンジン(例えばグラフィックエンジン106)に3つの次元のオブジェクトをレンダリングすることを命じる描画要求によって、グラフィックエンジンは、重なり合うピクセル位置の表層をレンダリングすることとなる場合がある。例えば、描かれた立方体では、正面、および裏が重なり合うことがある。実施例では、あるピクセルが特定の描画要求によって描画されるたびに、(特定のレンダーターゲットに対して)これを検出し、表示してもよい。この特徴を含む実施例は、図5に関連して後述する。
図5は論理フロー500を例示する。そして、これは一つ以上の実施例によって実行されるオペレーションを示し得る。このフローは、図1および図2と関連している。なお、このフローは、他の実施例において使用されてもよい。図5は、特定のシーケンスを示しているが、他のシーケンスが使用されてもよい。また、示されたオペレーションは、さまざまに、並列に、および/または、時系列的に、組合せて実行されてもよい。
ブロック502で、レンダーターゲットが、選択される。この選択は、ユーザによってなされてもよい。あるいは、この選択は、自動でなされてもよい。また、ブロック504で、一つ以上のピクセルが、選択されてもよい。このピクセルは、さまざまな方法で選択されてもよい。例えば、このピクセルは、図4に示されるように、ユーザに選択されるか、または上書きに基づいて、自動的に選択されてもよい。なお、実施例はこれに限定されない。
ブロック506で、ユーザは、選択されたピクセルに対応する描画要求を選ぶ。例えば、ユーザは、図4のブロック414でピクセルヒストリーが生成されたように、ピクセルヒストリーにおいて特定される複数描画要求(例えば描画要求のシーケンス)から、この描画要求を選んでもよい。したがって、これがシーケンスの最初の選択である場合、実施例では、ブロック507で、これを最初に選択された描画要求に指定してもよい。
この時点で、(選択されたレンダーターゲット中の)選択されたピクセルが描画された回数に関する情報をブロック509で特定(測定)してもよい。実施例において、この特定は、選択された描画要求に対するものであってもよい。あるいは、この特定は、ブロック506で示された最初の描画要求から始まり、ブロック507で選択された描画要求で終了する描画要求のシーケンスに対するものであってもよい。
図5に示すように、この種の特定は、複数パスを必要としてもよい。例えば、第1のパスは、グラフィックパイプラインテストをアクティベートさせることなく、描画要求を実行させてもよい。また、第2のパスは特定のグラフィックパイプラインテストをアクティベートさせた描画要求を実行させてもよい。更に、第2のパスは、アルファ・ブレンディングを有する描画要求を実行することを含んでもよい。ブロック509の内のこれらの3つのパスは、説明のためのものであって、限定するためのものではない。したがって、実施例は、パスおよび/または他のシーケンスの他の組合せを使用してもよい。これらのパスに関する更なる詳細は、図6によって後述する。
ブロック510で、ユーザは、次の描画要求を選んでもよい。この次の描画要求は、時刻順のシーケンスの描画要求であって、レンダーターゲットにおいて、選択されたピクセルに影響を与えるものである。例えば、この次の描画要求は、一番最近に(ブロック506かブロック510で)選択された描画要求の後の描画要求であってもよい。図5に示すように、次の描画要求が選択された場合、オペレーションはブロック509に戻る。したがって、図5の特徴は、ユーザに、一つ以上の関心対象の描画要求を選択させ、かつそれ(またはそれら)が特定のピクセルに与える影響を分析させることである。この種の特徴は、都合よく、特定のレンダーターゲットのいかなるピクセルにおける画面の複雑度をも評価することを可能とする。この情報は、ユーザが特定の画面の複雑度を減少させるべきかどうかを決める場合や、特定の3Dオペレーションのパフォーマンスを向上させるためにアプリケーションの設定を変更する場合に、都合よく利用し得る。
上述の通り、(選択されたレンダーターゲットにおいて)選択されたピクセルが描かれた回数に関する測定は、複数パスで実行されてもよい。この種の複数パスの例は、図6に示されている。
特に、図6は、第1のパス602、第2のパス604、および第3のパス606を含むフローチャート600である。これらのパスの各々は、多重オペレーションを含む。例えば、図6の第1のパス602は、ブロック610−614を含む。ブロック610で、特定のグラフィックパイプラインテスト(例えば、シザーテスト(scissor test)、長方形テスト(rectangle test)、Zテスト(Z test)、ステンシルテスト(stencil test)および/またはアルファテスト(alpha test))が、ディスエーブルとされる。ブロック612で、これらのテストがディスエーブルであるとき、描画要求が、選択されたピクセルを何回描画したかが、測定される。これは、修正されたレンダリングオペレーションを有する描画要求を実行することを含んでもよい。例えば、ピクセルシェーダコードが修正されてもよい。描画要求によって描画されるたびに、選択されたピクセルのシェーディングが増加する(例えば、1だけ増加する)。なお、実施例は、この技術に限定されない。
この測定の結果は、ブロック614でユーザに出力される。これらの結果は、グラフィック形式で出力してもよい(例えば、選択されたピクセル位置で、対応する明るさ、シェーディングまたは透明度のレベルとして示される)。あるいは、これらの結果は、テキスト形式の出力であってもよい。
図6において、ブロック620−632を含む第2のパス604が示されている。ブロック620で、ユーザは、特定のテストをアクティベートさせてもよい。例えば、ユーザは、範囲指定されたシザーテスト(ranged scissor test)、Zテストまたはステンシルテストを作動させてもよい。ブロック622で、テストが選択されたかどうかが判定される。その場合は、オペレーションは、ブロック624に続く。それ以外は、オペレーションは、ブロック640で第3のパスへ進む。ブロック624で、選択されたレンダーターゲットがクリアーされる。その後、ブロック626で選択されたテストが、グラフィックエンジンにおいてイネーブルとされる。ブロック628で、描画要求が実行される。
これらの描画要求の結果は、ブロック630でユーザに出力される。これらの結果は、グラフィック形式で出力されてもよい(例えば、選択されたピクセル位置で、対応する明るさまたは透明度のレベルとして示される)。あるいは、これらの結果は、テキスト形式の出力であってもよい。結果がゼロである(ピクセル値が無い)場合、選択されたテストが呼び出されるたびに、それが失敗したことを示す。しかしながら、結果が非ゼロである場合、選択されたテストが呼び出されたとき、少なくとも1回はそれがパスしたことを示す。
ブロック632に示されるように、ユーザは他のテストを選んでもよい。その場合は、オペレーションは、620をブロックに戻る。それ以外は、オペレーションは、ブロック640で第3のパスへ進む。
図6のブロック640は、第3のパスを示す。このブロックでは、ピクセルの出力色を測定するために通常のレンダリングが実行される。
図6のフローに加えて、あるピクセルが描かれた回数に関して、さまざまな非制限的な例となる実施例を以下に示す。例えば、「描画」の数は、描かれた図形がピクセルを横切る回数であってもよい。例えば、描かれている図形が、二つの側面のある三角形(two sided triangles)を含む丸いもの(sphere)である場合、中心ピクセルは、上書きとして2回カウントされる。すなわち、正面で1回、背面で1回である(z−テストは、この場合ディスエーブルされる)。さらに、描かれている図形が、1つ側面のある三角形(one sided triangles)を含む丸いものである場合、中心ピクセルでは、上書きのカウントは1回である。すなわち、正面で1回、背面でゼロ回である。(なぜなら、裏側はくり抜かれているからである(この場合には、くり抜きがイネーブルされている))。
さらに、「描画」の数は、ピクセルが実際にバッファに書かれた回数であってもよい(Zテストリジェクトされた図形の回数を破棄する)。例えば、ビューアの視野から3つの三角形を相互に重ねてレンダリングしたときに、描画の数は、描画の順序に依存する。例えば、もし、一番遠くのものが最初に描かれ、次に、真ん中のもの、そして一番近いものが描かれた場合、三角形が重なるピクセルに対しては、カウントは3となる。しかしながら、もし最も近いものが最初に、次に真ん中、最後に一番遠いものが描かれた場合、同じピクセルに対してカウントは1である。これは、後者の2つがZテストリジェクトされるからである。
上述の通り、実施例は、ユーザが特定のピクセル上の描画要求の効果を決定することを可能とする。更に、実施例は、描画要求のディスエーブルを可能とする。例えば、ユーザは、一つ以上の描画要求をディスエーブルにしてもよく、かつこのディスエーブルのピクセル処理への影響を判断してもよい。したがって、計算の相違を検討してもよい。例えば、シーンのレンダリングがより速くなったかどうかが、判断されてもよい。また、ユーザは、このディスエーブルにより、レンダリングされたイメージへの、視覚の影響を判定してもよい。例えば、ユーザは、描画要求をディスエーブルにすることによって、シーンの見栄えが許容できないものになってしまうかを判断してもよい。この種の特徴を含む実施例は、図7を用いて後述する。
図7は論理フロー700を例示する。これは一つ以上の実施例によって実行されるオペレーションを示している。このフローは、図1および図2と関連している。なお、このフローは、他の実施例において使用されてもよい。図7は、特定のシーケンスを示しているが、他のシーケンスが使用されてもよい。また、表されたオペレーションは、さまざまに、並列に、および/または時系列的に、組合せて実行されてもよい。図7に示すように、レンダーターゲットが、ブロック702で選択される。この選択は、ユーザによってなされるか、または自動的な技術によってなされてもよい。また、ブロック704で、ピクセルが選択される。このピクセルは、さまざまな方法で選択されてもよい。例えば、図4を参照しながら説明したように、ピクセルは、ユーザにより選択されてもよく、また、自動的に選択されていてもよい。しかしながら、実施例は、これに限定されない。
ユーザは、ブロック706で一つ以上の描画要求をディスエーブルするように選択する。この選択は、描画要求のシーケンスからなされてもよい。ブロック708で、ピクセルヒストリーが、描画要求のシーケンスに対して特定(determined)される。実施例において、これは、図5において既に述べたオペレーションを実行することを含んでもよい。したがって、ディスエーブルされた描画要求によって、あるピクセルが描かれた回数が特定される。
図5に関して上述したように、この種の特定は、さまざまなグラフィックパイプラインテスト(例えばシザーテスト、長方形テスト、Zテスト、ステンシルテストおよび/またはアルファテスト)によってアクティベートされてもよく、またはデアクティベートされてもよい。ディスエーブルされた描画要求がレンダリングされないため、次の描画要求に対するこの種のテストは異なるテスト結果を含んでもよい。したがって、描画要求をディスエーブルにすることは、動的なピクセルヒストリーを提供する。
ブロック710で、選択された描画要求がディスエーブルされた状態で描画要求のシーケンスに対してレンダリングされる。このレンダリングされたイメージは、ブロック712でユーザに表示される。
上述の通り、実施例は、上書きイメージを提供する。さらに、実施例では任意にユーザ選択された描画要求をイネーブルまたはディスエーブルする能力を与える。これによって、上書きイメージの構成をブレークダウンすることができ、レンダリングされたピクセルをより深く調査できる。
上書きされたイメージは、判断するのが難しい微妙な違いを含み得る。例えば、1つの領域は、隣接した領域よりわずかに暗くなることがある(これは、その領域が描画された回数が異なることを示している)。実施例は、これらの違いを視覚的に強調してもよい。例えば、図4のブロック409で、上書きイメージは、強調される。
この種の強調は、上書きイメージのダイナミック・レンジを増加させる。その結果、微妙な違いのある上書きイメージを見つけるのが容易になる。このようなダイナミック・レンジの増加を提供するためにさまざまな技術が使用されてもよい。例えば、実施例では、クランピングオペレーションを使用してもよい。
図8は論理フロー800を例示する。そして、これは一つ以上の実施例によって実行されるオペレーションを表している。図8は、特定のシーケンスを示すものであるが、他のシーケンスが使用されてもよい。また、示されたオペレーションは、さまざまに、並列に、および/または時系列的に、組合わされて実行されてもよい。
ブロック802で、上書きイメージが、提供される。ブロック804で、上書きイメージの最小および最大の値が、決定される。
ブロック806で、最小値および最大値に基づいてマトリックスが生成される。上書きイメージは、ブロック808でマトリックスによって処理される。この処理は、強調した上書きイメージを生み出し、ブロック810で表示されてもよい。
この技術の実施例が提供される。この実施例は、5×5のマトリックスを含む。これは、イメージデータ上の線形オペレーションを実行する標準の技術である。ピクセル値が範囲[0、255]であり、かつマトリックス値は浮動小数点スケールファクタであるとすると、以下の式が使用される:
Figure 2011008789
これは、基底行列乗算演算である。ここで、元のRGBAイメージ・カラー(Ir、Ig、Ib、Ia)は、調整されたRGBAイメージ・カラー(またはOg、Ob、Oa)を計算するために、5×5マトリックスMによって乗算される。Mの20個の可変要素の値を調整することによって、多くのカラー調整オペレーションが実行され得る。上書きイメージの場合、マトリックス値は、興味深いデータの範囲を拡大するために、上書きイメージが一定の比率で調整される。例えば、レンダーターゲットの全てのピクセルが20回書き込まれた(レンダーターゲットの全ての4要素(quads)それぞれに加えて、全てが混合された場合)とする。そして、更に3つの小さい三角形がレンダーターゲットに書かれたと仮定する(そのうち2つの三角形の一部が重なりを有するとする)。この例において、ほとんどのピクセルは、20回の上書きを有することとなる。幾つか(小さい三角形によって描かれたもの)は、21回、そして、幾つか(2つの小さい三角形の重なった部分)は、22回の上書きを有する。ユーザが、普通に、このイメージを見る場合、それは暗く見え、21回、および22回の上書きの値を有するフレームの部分を見分けるのは、極めて困難である。本実施例において、調整されたイメージを見る場合、通常のイメージ中の各々のピクセルは、マトリックスMによって乗算され、上書きイメージの色が調整される。ここにおいて、ある値が使われる。8ビットのカラーチャネル(オリジナルおよび上書きされたイメージの各々のRGBA値は、[0、255]の値を有する)であると仮定する。なお、この技術に限定されるものではなく、他のカラー階調でも機能する。
Figure 2011008789
Mを以下のように置く。
Figure 2011008789
この実施例の場合、行列計算によって、イメージには、以下のユニークな3つのオリジナル値が存在する:
Figure 2011008789
これらは、マトリックスによる乗算によって、以下の変換がなされる:
Figure 2011008789
なぜなら:
Figure 2011008789
であるため、したがって、
Figure 2011008789
中間の21の値に対して、以下が実行される:
Figure 2011008789
したがって:
Figure 2011008789
最も高い、22の値に対して、以下が実行される:
Figure 2011008789
したがって:
Figure 2011008789
上記の技術は、小さいレンジの値を最大のレンジに拡大し、視認性を最大にする。なお、この技術は例示のために提示したものであり、限定を目的としたものではない。したがって、更なる技術が、イメージの可視性を増加するために使用されてもよい。
上述の実施例(例えば図1および図2の要素)は、ハードウェアおよび/またはソフトウェアのいかなる組合せによってインプリメントされてもよい。そして、図10は、本願明細書において記載されている本発明の機能をインプリメントし得る例示的なプラットフォーム1002の図である。
上述の通り、実施例は、フレームをキャプチャする技術を提供する。加えて、実施例は、グラフィック・フレームによるシングルステッピング(single stepping)(例えば、一度に単一のグラフィック・フレームの処理)の技術を提供する。これは、アプリケーションによって生成される。この種の特徴は都合よく、アプリケーションのワークロードをオンザフライでキャプチャする処理に向ける。したがって、関心対象の正確なフレームがキャプチャされることを可能とする。
実施例において、この種のシングルステッピングは、ユーザとの対話処理によって制御されてもよい。例えば、ユーザには、ポーズボタン、ステップ・ボタン、およびキャプチャボタンが提供されてもよい。この種のボタンは、グラフィカルユーザーインタフェース(例えば図3のインターフェース・コンソール300)で提供されてもよい。なお、実施例は、以上の説明に限定されない。さらに、実施例は、グラフィカルユーザーインタフェースの使用に限定されない。
ポーズボタン機能は、ユーザが遠隔でアプリケーション(例えばグラフィック・アプリケーション102)をその現在フレームでポーズすることを可能とする。次に、ステップ・ボタン機能は、ユーザが正確に1フレーム先に進めることを可能とする。キャプチャボタン/機能は、ユーザがフレーム・データ(及びその対応する描画要求)を分析のために保存することを決めることを可能とする。
図9は、論理フロー900を例示する。そして、これはこの種のステッピング、およびフレームキャプチャリング特徴を含むオペレーションの代表例であってもよい。このフローは、図1と図2に関連する。しかしながら、このフローは、他の実施例において使用されてもよい。また、図9は特定のシーケンスを示すが、他のシーケンスが使用されてもよい。また、示されたオペレーションは、さまざまに、並列に、および/または時系列的に、組合せて実行されてもよい。
ブロック902で、グラフィックアプリケーション(例えばゲーム)が開始される。例えば、図1において、これは、グラフィック・アプリケーション102の実行開始を有してもよい。
ブロック904で、ユーザは、ポーズボタンを作動させる。その結果、グラフィック・アプリケーションは、その現在のフレームが完成すると、ブロック906においてオペレーションを停止させる。この特徴は、(グラフィックAPI104を介して)「現在の要求(current call)」を行うアプリケーション102を待っているグラフィック解析ツール110を含んでもよい。この種の要求は現在フレームに対する描画要求が完全なことを示し、かつ現在フレームはグラフィックエンジン106によってレンダリングされる準備ができていることを示す。この種の要求がなされると、それから、グラフィック解析ツール110は、グラフィック・アプリケーション102をポーズしてもよい。これは、例えば、一つ以上のオペレーティングシステム要求で実行されてもよい。例えば、グラフィック解析ツール110は、グラフィック・アプリケーションに関連づけられた全ての実行中のCPUソフトウェア・スレッドを停止させてもよい。このポーズを行うことによって、現在フレームが示されてもよい。
ブロック907で、ユーザは、ボタンを作動させる。それがステップ・ボタンである場合、オペレーションは、ブロック909へ進む。ここでグラフィック・アプリケーションは再開され、かつ、次のフレームが、現在フレームとなる。図1において、これは、一つ以上のオペレーティングシステム要求を行うグラフィック解析ツール110を含んでもよい。その後、オペレーションはブロック906に戻る。そして一旦フレーム完了すると、グラフィック・アプリケーションは再びポーズする。
しかしながら、ユーザがキャプチャボタンを作動させた場合、グラフィックエンジン(例えばグラフィックエンジン106)によりフレーム生成され、ブロック910で記憶される。図2に関して、これは、フレーム記憶モジュール212に、現在フレームの画素データを記憶することを有してもよい。また、ブロック912で、現在フレームに関連する追加情報が記憶される。この種の情報は、現在フレームに対応する描画要求、グラフィックエンジンを含む状態情報(例えばパイプライン状態情報)、グラフィックAPIおよび/またはグラフィック・アプリケーションを含んでもよい(なお、これに制限されるわけではない)。また、この種の情報は、アプリケーション(例えば、世界モデル情報(world model information)、頂点情報(vertex information)、陰影情報(shading information)、テクスチャ情報、その他)によって提供されるリソースを含んでもよい。実施例は、これらの実施例に限定されない。図2において、いくつかのこの種の情報は、インターセプトされてもよく、かつグラフィックAPI描画要求・インターセプタ・モジュール202によって特定されてもよく、かつグラフィックAPI要求・ログ・データベース204で記憶されてもよい。
図9には、それ以下のブロック910、および912が示されている。オペレーションはブロック909に続いてもよい。ここで、グラフィック・アプリケーションは再開され、かつ次のフレームが現在フレームになる。この後、オペレーションはブロック906に戻り、かつ一旦それがフレームを完了すると、グラフィック・アプリケーションは再びポーズされる。
さらに別の方法として、ユーザがポーズボタンを作動させる場合、図9は、通常動作のグラフィック・アプリケーションがブロック914で再開されることを示す。図1において、これは、一つ以上のオペレーティングシステム要求を発行するグラフィック解析ツール110を含んでもよい。この後、ブロック916は、そのオペレーションが、更なるフレーム・ステッピング、およびフレームキャプチャオペレーションを実行するために、ブロック904に戻ってもよいことを示す。
したがって、これらのフレーム・ステッピング、およびフレームキャプチャ技術によって、正確にどのフレームをデバッグするべきか、およびプロファイルを得る詳細なコントロールをユーザは手にすることができる。その結果、ユーザは、ボトルネックを見つけ、修正してもよく、かつ/または、冗長または、重要でないグラフィック処理を取り除いてもよい。図9のフローは、GUIボタンを前提に記載されている。これは、説明の目的のためであり、限定するものではない。したがって、他のユーザとの対話処理技術/デバイスが使用されてもよい。したがって、実施例は、上述したポーズ、ステッピング、キャプチャリング、及び再開の技術のための、さまざまなユーザ制御を提供してもよい。
実施例において、プラットフォーム1002は、CPU1012、GPU1013、一つ以上のドライバ1014、一つ以上のネットワークコネクション1015、オペレーティングシステム1016、記憶装置1018、ディスプレイ装置1019を有してもよい。
CPU1012は、一つ以上のプロセッサ(例えばデュアル・コアプロセッサ)を有してもよい。デュアル・コアプロセッサの例は、Pentium(登録商標)Dプロセッサ、Pentium(登録商標)プロセッサExtreme版(両者ともIntel(登録商標)社製)があり、例えば、これらは、インテルCore Duo(登録商標)プロセッサと称されている。
GPU1013は、さまざまなグラフィックプロセッサが存在し、例えばPCI Expressグラフィックカードが挙げられる。なお、実施例は、この例に限定されない。図1に関連して、GPU1013は、グラフィックエンジン106の特徴を提供してもよい。
実施例において、ネットワークコネクション1015は、PRO/1000PMまたはPRO/100 VE/VMネットワークコネクションを有してもよい。両者ともIntel(登録商標)によって市販されている。
実施例において、オペレーティングシステム1016は、Microsoft(登録商標)社の、Windows(登録商標)XPメディア・センターを有してもよい。更なる実施例において、オペレーティングシステム1016は、Linux(登録商標)、同様に、他方式のオペレーティングシステムをであってもよい。
実施例において、記憶装置1018は、さまざまな有形の記憶媒体を有してもよい。この種の記憶媒体は、本願明細書において記載されているさまざまな特徴(例えば図1および図2の要素)をインプリメントするために、命令または制御ロジック(例えばソフトウェア)と同様に、データ(例えばイメージまたはフレーム)を含んでもよい。この種の命令または制御ロジックは、CPU1012および/またはGPU1013によって実行されてもよい。記憶媒体の例は、更に下記に記載する。
ディスプレイ装置1019は、ユーザに情報を出力してもよい。加えて、本願明細書において記載されているように、ディスプレイ装置1019はユーザとの対話処理を可能としてもよい。例えば、この種のユーザとの対話処理は、例示的なユーザインタフェース300によってなされてもよい。
本願明細書において記載されているように、各種実施例は、ハードウェア要素、ソフトウェア要素またはいかなるそれらの組合せをも使用してインプリメントされてもよい。ハードウェア要素の例としては、プロセッサ、マイクロプロセッサ、回路、回路素子(例えばトランジスタ、レジスタ、コンデンサ、インダクタ、その他)、集積回路、特定用途向け集積回路(ASIC)、プログラマブル・ロジック・デバイス(PLD)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット、その他を含んでもよい。
ソフトウェアの例としては、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータ・プログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、手順、ソフトウェアインタフェース、アプリケーション・プログラム・インタフェース(API)、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコード部分、語、値、シンボルまたはいかなる組合せを含んでもよい。
一部の実施例は、例えば、機械によって実行される場合、実施例に従って、方法および/またはオペレーションを実行するよう、機械が実行する命令または一組の命令を記憶し得る有形の機械読取り可能な媒体(記憶媒体)または製品を使用してインプリメントされてもよい。この種の機械は、例えば、いかなる適切な処理プラットフォームを含んでもよい。すなわち、計算プラットフォーム、コンピューティング装置、処理デバイス、コンピューティング・システム、処理システム、コンピュータ、プロセッサ等が挙げられ、かつこれらは、ハードウェアおよび/またはソフトウェアのいかなる適切な組合せを使用してインプリメントされてもよい。
機械で読み取ることができる媒体(記憶媒体)または製品としては、例えば、記憶装置、メモリ素子、メモリ製品、記憶媒体、記憶装置、記憶製品、記憶装置媒体および/または記憶装置(例えばメモリ、リムーバブルまたは非リムーバブル・メディア、消去可能なまたは消去不可能なメディア、書き込み可能または再書き込み可能なメディア、デジタルまたはアナログ・メディア、ハードディスク、フロッピー(登録商標)ディスク、CD−ROM、CD−R、CD−RW、光ディスク、磁気媒体、光磁気のメディア、リムーバブル・メモリーカードまたはディスク、様々な形のDVD、テープ、カセット、等のいかなる適切なタイプを含んでもよい。命令は、適切ないかなる種類のコード、例えばソースコード、コンパイル済みコード、インタープリットされたコード、実行可能コード、静的コード、動的コード、暗号化されたコード、などを含んでもよい。そして、いかなる適切な高水準、低レベルの、オブジェクト指向の、視覚の、編集されたおよび/または、インタープリットされたプログラミング言語をも使用してインプリメントされる。
一部の実施例は、「接続され(coupled)」および「接続され(connected)」という語を使用して記載され得る。これらの語は、同義語として用いているものではない。例えば、一部の実施例は、「接続され(coupled)」および/または「接続され(connected)」の語を使用して記載され、2つ以上の各々の要素が直接的に物理的に、あるいは電気にコンタクトすることを意味している。しかしながら、「接続され(coupled)」の語は、また、2つ以上の各々の要素が、直接接触していなくても、協働し、または、インターラクトしていることを意味してもよい。
以上、本発明の各種実施形態を説明したが、それらは、実施例であり、かつ限定するものではないと理解されなければならない。したがって、本発明の精神と範囲から逸脱することなく、さまざまな形および細部の変更がなされてもよいことは、当業者にとって明らかである。したがって、本発明の技術的範囲は、上述の例示的実施形態のいずれによっても、制限されてはならず、以下に記載する請求項およびその均等物のみによって定義される。
102 グラフィック・アプリケーション
104 グラフィックAPI
106 グラフィックエンジン
110 グラフィック解析ツール
202 グラフィックAPI要求インターセプタ・モジュール
204 グラフィックAPI要求・ログ・データベース
206 再構成モジュール
207 上書き解析モジュール
208 ピクセルヒストリー解析モジュール
210 ユーザインタフェースモジュール
212 フレーム記憶モジュール
302 描画要求・フィールド
304 レンダーターゲットフィールド
306 イメージレンダリングフィールド
308 ピクセルヒストリーフィールド
918 記憶装置
1002 プラットフォーム
1014 ドライバ
1015 ネットワーク接続
1016 オペレーティングシステム
1019 ディスプレイ装置

Claims (20)

  1. ピクセルに対するピクセルヒストリーを生成するステップであって、前記ピクセルヒストリーは、グラフィック・アプリケーション・プログラム・インターフェース(API)要求のシーケンスを含むところのステップと;
    選択されたピクセルが書き込まれることを生じさせるグラフィックAPI要求の第2のシーケンス中の描画要求の回数を特定するステップと;
    を有する方法。
  2. グラフィックAPI描画要求の第1のシーケンスは、レンダーターゲットに対応する、請求項1記載の方法。
  3. 前記レンダーターゲットのユーザ選択を受信するステップ、を更に有する請求項2記載の方法。
  4. API描画要求の更なるシーケンスに基づき、上書きイメージを形成するステップと;
    前記上書きイメージに基づいて、前記ピクセルを選択するステップと;
    を更に有する請求項1記載の方法。
  5. 前記上書きイメージを形成するステップは、
    前記ピクセルが書き込まれる毎に、ピクセルヒットカウントをインクリメントするステップ、を有する、請求項4記載の方法。
  6. 前記特定するステップは、一つ以上のグラフィックパイプラインテストをディスエーブルにして実行される、請求項1記載の方法。
  7. グラフィック・アプリケーション・プログラム・インタフェース(API)と;
    グラフィックエンジンと;
    グラフィック解析ツールであって、
    前記グラフィックAPIに発行された複数の描画要求を受信し、
    複数の描画要求を複数の描画要求のシーケンスに配置し、前記複数のシーケンスの各々は、複数のレンダーターゲットのうちの1つに対応しており、
    前記複数のレンダーターゲットのうちの1つを選択し、かつ
    前記選択されたレンダーターゲットに対応する前記描画要求のシーケンスに基づき、上書きイメージを生成するところのグラフィック解析ツールと;
    を有する装置。
  8. 前記グラフィック解析ツールは、
    前記上書きイメージに基づいて、前記選択されたレンダーターゲット内のピクセルを選択し、かつ、前記選択されたピクセルに対するピクセルヒストリーを生成する、
    請求項7記載の装置。
  9. 前記複数の描画要求を生成するグラフィック・アプリケーション、を更に有する請求項7記載の装置。
  10. 前記グラフィックエンジンは、グラフィックパイプラインを有する、請求項7記載の装置。
  11. 前記グラフィック解析ツールは、前記複数の描画要求を記憶するデータベースを有する、請求項7記載の装置。
  12. 前記グラフィック解析ツールは、レンダリングされたフレームを記憶するデータベースを有する、請求項7記載の装置。
  13. 前記ピクセルヒストリーは、前記選択されたピクセルに影響を及ぼす描画要求のシーケンスを含む、請求項7記載の装置。
  14. 複数のグラフィック・アプリケーション・プログラム・インターフェース(API)描画要求を記憶するステップと;
    複数のグラフィックAPI描画要求を複数の描画要求のシーケンスに配置するステップであって、前記複数のシーケンスの各々は、複数のレンダーターゲットのうちの1つと対応するところのステップと;
    前記複数のレンダーターゲットのうちの1つのユーザ選択を受信するステップと;
    前記選択されたレンダーターゲットに対応する描画要求の前記シーケンスに基づき、上書きイメージを生成するステップと;
    を有する方法。
  15. 前記上書きイメージに基づいて、前記選択されたレンダーターゲット内のピクセルのユーザ選択を受信するステップと;
    前記選択されたピクセルに対するピクセルヒストリーを生成するステップと;
    を更に有する請求項14記載の方法。
  16. 複数のレンダーターゲットのうちの1つのユーザ選択を受信するステップと;
    前記選択されたレンダーターゲット内で、ピクセルのユーザ選択を受信するステップと;
    前記選択されたピクセルに対応するグラフィック・アプリケーション・プログラム・インターフェース(API)描画要求のユーザ選択を受信するステップと;
    前記選択されたピクセルが書きこまれることを生じさせる前記描画要求の回数を特定するステップと;
    を有する方法。
  17. 前記描画要求によって前記選択されたピクセルが書き込まれることを生じさせる前記回数を示すイメージを生成するステップ、を更に有する請求項16記載の方法。
  18. 前記特定するステップは、1つ以上のグラフィックパイプラインテストをディスエーブルにして実行される、請求項16記載の方法。
  19. ピクセルに対するピクセルヒストリーを生成する手順であって、前記ピクセルヒストリーは、グラフィックAPI要求のシーケンスを含むところの手順と;
    選択されたピクセルが書き込まれることを生じさせるグラフィックAPI要求の第2のシーケンス中の描画要求の回数を特定する手順と;
    をコンピュータに実行させるプログラム。
  20. グラフィックAPI描画要求の第1のシーケンスは、レンダーターゲットに対応する、
    請求項19記載のプログラム。
JP2010145332A 2009-06-26 2010-06-25 グラフィック分析技術 Expired - Fee Related JP5875751B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/459,266 US8581916B2 (en) 2009-06-26 2009-06-26 Graphics analysis techniques
US12/459,266 2009-06-26

Publications (2)

Publication Number Publication Date
JP2011008789A true JP2011008789A (ja) 2011-01-13
JP5875751B2 JP5875751B2 (ja) 2016-03-02

Family

ID=42371245

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010145332A Expired - Fee Related JP5875751B2 (ja) 2009-06-26 2010-06-25 グラフィック分析技術

Country Status (8)

Country Link
US (1) US8581916B2 (ja)
JP (1) JP5875751B2 (ja)
KR (1) KR101206548B1 (ja)
CN (1) CN101937574B (ja)
DE (1) DE102010023693A1 (ja)
GB (1) GB2471367B (ja)
RU (1) RU2470367C2 (ja)
TW (1) TWI499997B (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8850404B2 (en) * 2009-12-23 2014-09-30 Intel Corporation Relational modeling for performance analysis of multi-core processors using virtual tasks
US8614716B2 (en) * 2010-10-01 2013-12-24 Apple Inc. Recording a command stream with a rich encoding format for capture and playback of graphics content
CN102810199B (zh) * 2012-06-15 2015-03-04 成都平行视野科技有限公司 一种基于gpu的图像处理方法
KR101399472B1 (ko) * 2012-08-13 2014-06-27 (주)투비소프트 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법
KR101399473B1 (ko) * 2012-08-13 2014-05-28 (주)투비소프트 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법
US8599201B1 (en) * 2012-10-29 2013-12-03 Google Inc. System and method for a stencil-based overdraw visualizer
US9292414B2 (en) 2012-11-26 2016-03-22 Nvidia Corporation System, method, and computer program product for debugging graphics programs locally utilizing a system with a single GPU
RU2666642C2 (ru) * 2014-03-27 2018-09-11 Иноземцев Юрий Александрович Способ генерации примитивов изображения
US9645916B2 (en) 2014-05-30 2017-05-09 Apple Inc. Performance testing for blocks of code
US9928564B2 (en) * 2014-06-26 2018-03-27 Intel Corporation Efficient hardware mechanism to ensure shared resource data coherency across draw calls
US10025367B2 (en) * 2014-08-19 2018-07-17 Intel Corporation Dynamic scaling of graphics processor execution resources
RU2629439C2 (ru) * 2015-12-29 2017-08-29 Общество С Ограниченной Ответственностью "Яндекс" Способ и система хранения данных для отрисовки трехмерных графических объектов
CN107680028B (zh) * 2016-08-01 2020-04-21 北京百度网讯科技有限公司 用于缩放图像的处理器和方法
RU2658875C1 (ru) * 2016-08-05 2018-06-25 Общество С Ограниченной Ответственностью "Яндекс" Способ и сервер для определения порядка отрисовки карты
RU2678077C2 (ru) 2017-05-04 2019-01-23 Общество С Ограниченной Ответственностью "Яндекс" Способ отрисовки поисковых результатов на карте, отображаемой на электронном устройстве
CN108446233A (zh) * 2018-03-20 2018-08-24 南京邮电大学 一种软件测试方法
CN113298918B (zh) * 2020-02-24 2022-12-27 广东博智林机器人有限公司 一种重叠区域的异色显示方法及装置
CN112579409B (zh) * 2020-12-05 2024-06-04 西安翔腾微电子科技有限公司 一种OpenGL图形任务分析方法
CN113689523B (zh) * 2021-08-26 2024-12-20 联想(北京)有限公司 一种图形绘制方法及电子设备
CN114332311B (zh) * 2021-12-05 2023-08-04 北京字跳网络技术有限公司 一种图像生成方法、装置、计算机设备及存储介质
CN117217977B (zh) * 2023-05-26 2024-07-19 摩尔线程智能科技(北京)有限责任公司 Gpu的数据访问处理方法、装置及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1021122A (ja) * 1996-07-05 1998-01-23 Mitsubishi Electric Corp プロセッサモニタ装置
JPH10320235A (ja) * 1997-03-27 1998-12-04 Hewlett Packard Co <Hp> 呼び出し分析方法
JPH1124960A (ja) * 1997-06-27 1999-01-29 Nec Corp グラフィックスlsi
JP2008123488A (ja) * 2006-08-01 2008-05-29 Nvidia Corp グラフィックスパイプラインサブユニットのデバッグ方法及びシステム
JP2009020610A (ja) * 2007-07-10 2009-01-29 Mitsubishi Electric Corp 解析装置及び解析方法及びプログラム
JP2009070371A (ja) * 2007-07-30 2009-04-02 Nvidia Corp 遠隔グラフィック装置を分析及びパフォーマンス調整するクライアントサーバシステム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594387B1 (en) 1999-04-30 2003-07-15 Texas Instruments Incorporated Enhanced color correction
US6891533B1 (en) * 2000-04-11 2005-05-10 Hewlett-Packard Development Company, L.P. Compositing separately-generated three-dimensional images
US7286138B2 (en) * 2001-05-08 2007-10-23 Microsoft Corporation Discontinuity edge overdraw
KR100959470B1 (ko) * 2002-03-22 2010-05-25 마이클 에프. 디어링 확장가능한 고성능 3d 그래픽
US7451457B2 (en) * 2002-04-15 2008-11-11 Microsoft Corporation Facilitating interaction between video renderers and graphics device drivers
US7324116B2 (en) * 2002-06-20 2008-01-29 Microsoft Corporation Systems and methods for providing controllable texture sampling
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US20050195198A1 (en) * 2004-03-03 2005-09-08 Anderson Michael H. Graphics pipeline and method having early depth detection
US7348982B2 (en) * 2004-09-30 2008-03-25 Microsoft Corporation Method, system, and computer-readable medium for creating and laying out a graphic within an application program
JP2007116237A (ja) 2005-10-18 2007-05-10 Mitsubishi Electric Corp 色データ変換装置および色データ変換方法
US20080007563A1 (en) * 2006-07-10 2008-01-10 Microsoft Corporation Pixel history for a graphics application
US8448067B2 (en) * 2006-12-07 2013-05-21 Sony Computer Entertainment America, LLC Graphics command management tool and methods for analyzing performance for command changes before application modification
GB0908506D0 (en) * 2009-05-18 2009-06-24 Imagination Tech Ltd Method and apparatus for drawing polygons

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1021122A (ja) * 1996-07-05 1998-01-23 Mitsubishi Electric Corp プロセッサモニタ装置
JPH10320235A (ja) * 1997-03-27 1998-12-04 Hewlett Packard Co <Hp> 呼び出し分析方法
JPH1124960A (ja) * 1997-06-27 1999-01-29 Nec Corp グラフィックスlsi
JP2008123488A (ja) * 2006-08-01 2008-05-29 Nvidia Corp グラフィックスパイプラインサブユニットのデバッグ方法及びシステム
JP2009020610A (ja) * 2007-07-10 2009-01-29 Mitsubishi Electric Corp 解析装置及び解析方法及びプログラム
JP2009070371A (ja) * 2007-07-30 2009-04-02 Nvidia Corp 遠隔グラフィック装置を分析及びパフォーマンス調整するクライアントサーバシステム

Also Published As

Publication number Publication date
KR20110000532A (ko) 2011-01-03
RU2470367C2 (ru) 2012-12-20
GB2471367B (en) 2012-06-27
TW201118790A (en) 2011-06-01
GB201009073D0 (en) 2010-07-14
JP5875751B2 (ja) 2016-03-02
KR101206548B1 (ko) 2012-11-30
CN101937574A (zh) 2011-01-05
DE102010023693A1 (de) 2011-01-05
CN101937574B (zh) 2014-05-07
US20100328321A1 (en) 2010-12-30
GB2471367A (en) 2010-12-29
RU2010126188A (ru) 2011-12-27
US8581916B2 (en) 2013-11-12
TWI499997B (zh) 2015-09-11

Similar Documents

Publication Publication Date Title
JP5875751B2 (ja) グラフィック分析技術
JP5437485B2 (ja) レンダリングされたグラフィックス要素のためのパフォーマンスメトリックの視覚的表現の表示
US8587593B2 (en) Performance analysis during visual creation of graphics images
JP2015531918A (ja) ヒットテスト方法および装置
CN102105868B (zh) 在图形图像的视觉创建期间的性能分析
US8624907B2 (en) Graphics analysis techniques
JP5242788B2 (ja) グラフィックス・イメージングのためのパーティション・ベースのパフォーマンス解析
US20100332987A1 (en) Graphics analysis techniques
CN120346518A (zh) 一种数据处理方法、装置及计算机设备、介质、产品

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130205

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130604

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151007

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160120

R150 Certificate of patent or registration of utility model

Ref document number: 5875751

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees