イベント ビュー
イベント ビューには、PIX の実験でプログラムを実行してキャプチャーされたイベントが一覧表示されます。イベント ビューには、PIX でこれらのイベントをシミュレーションするためのインターフェイスが用意されています。
イベントをシミュレーションする際に、PIX は、実行プログラムで使用されたのと同じ入力情報を使用して、イベントの構成要素を再実行します。イベントをシミュレーションすることによって、プログラムに関するより詳細な情報が生成されます。これらの情報は、詳細ビューで使用できます。
ここでは、次の内容について説明します。
- イベントのシミュレーションと測定
- イベント テーブル
- イベント ツール バー
イベントのシミュレーションと測定
イベント ビューに表示されるデータは、PIX 実験で実行しているプログラムの初回の実行から直接キャプチャーして測定することができます。また、PIX により再生成された更新可能なデータとしてシミュレーションすることもできます。
最初、イベント ビューには測定されたデータが表示されます。
図形 1. 測定されたイベント
測定されたイベント データを表示する場合、イベント テーブル内のフィールドはアクティブになりません。つまり、イベント テーブル内の行、または行セクションをクリックしてもアクションは実行されません。
シミュレーションされたイベント データには多くの情報が格納されており、データの構造やデバッグ情報をさらに詳しく調べることができます。イベント ビューのデータ テーブルは、ユーザーが レンダリング タブ、メッシュ タブ、または [Refresh Draw Timings] ボタンをクリックしたときに、シミュレーションされたイベント データで更新されます。
図形 2. シミュレーションされたイベント
シミュレーションされたイベントを表示すると、メモリー内のオブジェクト (デバイス、テクスチャー、サーフェスなど) を表す入力パラメーターのメモリー アドレスがアクティブなリンクになります (上図の青い部分)。メモリー アドレスを右クリックすると、オブジェクトに関する追加情報が表示されます。
リンクを直接ダブル クリックすると、以下に示すように、詳細ビューのオブジェクト タブに詳しい説明が表示されます。
イベント テーブル
測定されたデータとシミュレーションされたデータは、どちらも同じフォーマットで表示されます。イベントは、テーブル内で 1 行に 1 つずつ表示されます。最初は、フレームのレンダリング中にキャプチャーされたメソッド呼び出しは親のフレーム イベントの下に折りたたまれています。
フレームを展開したり折りたたんだりすると、フレームはタイムライン ビューに異なる方法で表示されます。
また、イベント テーブルで任意のセルをダブル クリックすると、タイムライン ビューで最初のカウンターの種類が、そのセルが含まれている列の種類に変更され、さらにその列に含まれているデータがグラフ表示されます。これは、注意を要するイベントのハイレベルなビューを取得するのに有効です。
イベント ビューのデータ テーブルの内容は以下のとおりです。
列名 | 説明 |
---|---|
[EID](EID) | 一意の整数値で表されるイベント ID。 |
[イベント](Event) | イベントの説明。 |
[開始時間](Start Time) | イベントの開始時間 (ナノ秒)。この時間は、アプリケーションが起動されてからの時間として測定されます。 |
[フレーム](Frame) | フレーム番号。 |
Duration | フレームの処理に要した CPU 時間。 |
[Measured Est. Draw Duration (ns)] |
PIX 実験の元で実行するプログラム内で処理された DirectX 描画関数呼び出しのタイミングを示します。 これらのタイミングは、実験によって最初に実行されるキャプチャーの際に 1 回だけ取得されます。そのため、これらのタイミングは PIX の実行ビューを開くと即時に利用できますが、PIX の元で実行されるレンダリングまたは更新操作によって更新されることはありません。 測定された描画実行時間のタイミングは、所定の実行を定義している実験ファイルで [Enable draw timing] が設定されている場合のみ、利用可能になります。 |
[Simulated Est. Draw Duration (ns)] |
PIX 実験によりプログラムからキャプチャーされ、その後 PIX で再実行された DirectX 描画関数呼び出しのタイミングを示します。 これらの値は PIX が DirectX 呼び出しを再実行することによって得られるため、PIX の実行ビューを開いてすぐに利用できるものではありません。 この列の値は、PIX が最初に DirextX 呼び出しを行った後に、レンダリング タブを使用して現在選択されているフレームの出力を表示するとき、または メッシュ タブを使用して頂点操作を実行するとき、またはイベント ビューの [Refresh Draw Timings] ボタンをクリックしたときに、表示されます。 また、これらのタイミングは、フレームが更新されるたび、データが再計算されるたび、または再表示されるたびに更新されます。 シミュレーションされた描画実行時間タイミングは、PIX で常に有効になっています。 |
FPS | 1 秒あたりのフレーム数。 |
Direct3D 9 および Direct3D 10 でのタイミング
描画実行時間タイミングのシミュレーション値と測定値は、コードが Direct3D 9 と Direct3D 10 のいずれのテクノロジーを使用しているかによって異なります。
DirectD3 10 のテクノロジーでは、描画実行時間は、GPU の内部クロックから取得されるタイム スタンプを使用して、直接測定されます。
Direct3D 9 でのタイミングは、GPU のタイム スタンプがテクノロジによって完全にサポートされているわけではないので、より複雑です。代わりに、PIX は CPU のタイム スタンプと GPU のアイドル状態を使用して、描画実行時間のタイミングを処理します。PIX はまず GPU がアイドル状態になるのを待ってから、タイム スタンプを CPU から取得します。次に描画関数呼び出しを発行します。この後、GPU が再びアイドル状態になるのを待ち、最後に CPU から 2 番目のタイム スタンプを取得します。
一般に、いずれのテクノロジで取得したデータでも、非常に役立ちます。ただし、Direct3D の特定の状況では、解釈に注意を払う必要があります。詳細については、「Direct3D API 呼び出しの正確なプロファイリング (Direct3D 9)」を参照してください。
イベント ツール バー
イベント ビューには、次の表に示すように、いくつかのボタン コントロールを備えたツール バーがあります。イベント ビューのこれらのコントロールを使用して、データの表示を切り替えたり、イベント間を移動したりします。
記号 | 名前 | 説明 |
---|---|---|
ポインター | オブジェクトのポインターを表示します。 | |
戻り値 | API 呼び出しの戻り値の表示を切り替えます。 | |
現在のフレーム | 1 フレームずつ前 (上) または後 (下) に移動します。 | |
描画関数呼び出し | 前 (上) または後 (下) の描画関数呼び出しに移動します。 | |
イベント ID | 指定されたイベント ID に移動します。 | |
Refresh Draw Timings | キャプチャーされた DirectX 描画関数呼び出しの再実行を強制します。[Simulated Est. Draw Duration (ns)] 列に表示される値が更新されます。 | |
検索 | テキスト文字列を検索します。メモリー アドレスも検索することができます。 |
ツール バーを使用して、イベント データを切り替えたり、ウィンドウの表示内容の変更を行います。このポインターと ppObj ポインターを表示 (または非表示に) するには、ポインター ボタンを使用します。特定のイベントを検索するには、検索ボタンを使用します。たとえば、イベント ビュー内でAPI 呼び出しやメモリー アドレスを検索できます。