パフォーマンス ワークショップ GDC 2007
まとめ
このワークショップは、GDC 2007 で公開されたパフォーマンス ワークショップに基づいています。このワークショップでは、3 つの演習を通して基本的なパフォーマンス分析のテクニックを教えます。ここでは、C++ と Direct3D の知識が必要となります。このワークショップは、ワークショップ フォルダーにある、付属する PowerPoint プレゼンテーションを使用して完成されています。
Source
(SDK ルート)\Samples\C++\Direct3D10\Tutorials\PIXWorkshopGDC2007
一般的な演習のガイドライン
演習は相互に関連付いて作成されていますが、それらは自己完結しています。各演習では、.fx ファイルを使用して作業します。コメントは、ガイドのためにコード全体に配置されています。コメントは、"Breakdancin Bob" として知られる ASCII 文字の集合で強調されています。それらは次のような形式となります。
//-----------------------------------------------------------------
// o/__ <-- BreakdancinBob TODO: Todos are areas where you need
// | (\ to change or implement code. This is where
// the actual exercise work will happen.
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// o/__ <-- BreakdancinBob NOTE: Notes are code snippets of
// | (\ interest. No work needs to be done. Just
// look.
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// o/__ <-- BreakdancinBob HINT: Hints may be found near Todo
// | (\ comments. Hints can help you if you are
// stuck with the exercise.
//-----------------------------------------------------------------
演習の解答は、名前の最後に "_Solved" が追加されているフォルダーにあります。
演習 01 - アプリケーション コードにおける CPU の制約
演習 01 の開始時には、アプリケーションは CPU による厳しい制約を受けています。描画内容にかかわらず、フレーム レートは一定となります。CPU プロファイラーを使用して、ボトルネックの発生箇所を識別し、それを修正する必要があります。
演習 02 - ドライバーにおける CPU の制約
演習 02 の開始時には、アプリケーションは再び CPU による制約を受けていますが、今回はドライバーに関するものです。PIX for Windows を使用して、表示に関係なく、描画呼び出しの数が一定であることを確認できなければなりません。カリングが機能していないコードの位置を特定し、それを修正する必要があります。この後に、再度 PIX for Windows を使用して、今度は描画呼び出しの数が表示と共に変化することを確認できます。また、描画呼び出しとフレーム レートの間には、相関関係がなければなりません。
演習 03 - GPU の制約
演習 03 は、演習 02 で中断されたところから始めます。アプリケーションは、ここでは GPU による制約を受けています。ボトルネックは、ガラスをレンダリングするコードにあるようです。ガラスのレンダリングを無効にして、結果となるフレーム レートの増加に注目することによって、これを確認できます。代表的なシーンのシングルフレーム キャプチャーを取得するためや、画面に特定のピクセルを描画するコストの測定にピクセルのデバッグを使用するために、PIX for Windows を使用できます。遠くにある山の地物のピクセルを確認することによって、シーンに視覚的な影響のない距離で描画されているが、ガラスのレンダリングが実際に問題の原因になっているということを究明できます。