イベント ビュー
イベント ビューには、PIX の実験でプログラムを実行してキャプチャーされたイベントが一覧表示されます。イベント ビューには、PIX でこれらのイベントをシミュレーションするためのインターフェイスが用意されています。
イベントをシミュレーションする際に、PIX によって、実行プログラムで使用されたものと同じ入力情報を使用して、イベントの構成要素が再実行されます。イベントをシミュレーションすることによって、プログラムに関するより詳細な情報が生成されます。これらの情報は、詳細ビューで使用できます。
ここでは、次の内容について説明します。
- イベントのシミュレーションと測定
- イベント テーブル
- イベント ツール バー
イベントのシミュレーションと測定
イベント ビューに表示されるデータは、PIX 実験で実行しているプログラムの初回の実行から直接キャプチャーした測定データか、PIX により再生成された更新可能なデータであるシミュレーション データです。
初期のイベント ビューには測定データが表示されます。
Figure 1. 測定されたイベント
測定イベント データの表示の場合、イベント テーブルのフィールドはすべて非アクティブになります。イベント テーブルの行や、行のセクションをクリックしても何も起こりません。
シミュレーションのイベント データには多くの情報が含まれ、データの構造やデバッグ情報をさらに詳しく調べることができます。イベント ビューのデータ テーブルは、ユーザーがレンダリング タブ、メッシュ タブ、または [Refresh Draw Timings] ボタンをクリックしたときに、シミュレーションされたイベント データで更新されます。
Figure 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 の実行ビューを開いてすぐに利用できるものではありません。 イベント ビューの [Refresh Draw Timings] を使用した場合にのみ、[Simulated Est. Draw Duration] 列で値が更新されます。 シミュレーションされた描画実行時間タイミングは、PIX で常に有効になっています。 |
FPS | 1 秒あたりのフレーム数。 |
Direct3D 9 および Direct3D 10 でのタイミング
描画実行時間タイミングのシミュレーション値と測定値は、コードが Direct3D 9 と Direct3D 10 のいずれのテクノロジーを使用しているかによって異なります。
DirectD3 10 のテクノロジでは、描画実行時間は、GPU の内部クロックから取得されるタイム スタンプを使用して、直接測定されます。
Direct3D 9 でのタイミングは、GPU のタイム スタンプがテクノロジによって完全にサポートされているわけではないので、より複雑です。その代わりとして、PIX は CPU のタイム スタンプと GPU のアイドル状態を使用して、描画実行時間のタイミングを処理します。PIX は GPU がアイドル状態になるのを待ち、その後、CPU からタイム スタンプを取得します。次に、描画呼び出しを発行し、その後は GPU が再度アイドル状態になるのを待ちます。最後に PIX が CPU から第 2 のタイム スタンプを取得します。
一般に、いずれのテクノロジで取得したデータでも、非常に役立ちます。ただし、Direct3D 9 では、特定の状況におけるデータは慎重に解釈する必要があります。詳細については、Direct3D API 呼び出しの正確なプロファイリング (Direct3D 9) に関するドキュメントを参照してください。
イベント ツール バー
イベント ビューには、次の表に示すように、いくつかのボタン コントロールを備えたツール バーがあります。イベント ビューのこれらのコントロールを使用して、データの表示を切り替えたり、イベント間を移動したりします。
記号 | 名前 | 説明 |
---|---|---|
ポインター | オブジェクトのポインターを表示します。 | |
戻り値 | API 呼び出しの戻り値の表示を切り替えます。 | |
現在のフレーム | 1 フレームずつ前 (上) または後 (下) に移動します。 | |
描画関数呼び出し | 前 (上) または後 (下) の描画関数呼び出しに移動します。 | |
イベント ID | 指定されたイベント ID に移動します。 | |
Refresh Draw Timings | キャプチャーされた DirectX 描画関数呼び出しの再実行を強制します。[Simulated Est. Draw Duration (ns)] 列に表示される値が更新されます。 | |
検索 | テキスト文字列を検索します。メモリー アドレスも検索することができます。 |
ツール バーを使用して、イベント データを切り替えたり、ウィンドウの表示内容の変更を行います。このポインターと ppObj ポインターを表示 (または非表示に) するには、ポインター ボタンを使用します。特定のイベントを検索するには、検索ボタンを使用します。たとえば、イベント ビュー内でAPI 呼び出しやメモリー アドレスを検索できます。