読者です 読者をやめる 読者になる 読者になる

NVPerfHUD 4 & Instrumented Driver (2)

DirectX

id:NyaRuRu:20060622#p1 続き.
NVPerfHUD 4 というか NVPerfKit 2 を入れてみました.以下気付いたこと.


Instrumented Driver のバージョンは 84.60 で,最新 WHQL ドライバ 84.21 に比べても結構新しい.上が最新の WHQL ドライバで,下が NVPerfKit 2 同梱の Instrumented Driver.ちなみに Instrumented Driver の x64 バージョンは含まれていない模様.




Instrumented Driver では,DirectX アプリケーションでの,ドライバによる Presentation 最大キューイング数が設定パネルから変更できる.


このパラメータは,id:NyaRuRu:20050124#p2,id:NyaRuRu:20050125#p1,id:NyaRuRu:20050316#p3,id:NyaRuRu:20050329#p1 などで出てきたアレ.ちなみに DirectX 9.L では IDirect3DDevice9Ex::SetMaximumFrameLatency にてアプリケーションごとに調整可能.
google:Max frames to render ahead を見ると,この設定を 0 にすることでパフォーマンスが挙がったという話がちらほら.なにが起きているんでしょ?


Performance Data Helper (PDH) を有効化するには,設定パネルから以下の項目をチェックする.


さらに,コントロールパネルの NVIDIA Developer Control Panel を起動し,使用する PDH カウンタを選択する.


Microsoft Expression をぐりぐり動かすと,ちゃんと GPU 関係のパフォーマンス・カウンタが変化していた.


NVPerfHUD 4 は Opt-in 方式なので,モニタ対象のアプリケーションの開発者が明示的にモニタリングを許可するコードを埋め込む必要がある.具体的には,CreateDevice 実行時の引数を以下のように書き換える.

Res = g_pD3D->CreateDevice( g_pD3D->GetAdapterCount()-1, D3DDEVTYPE_REF, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice );


相変わらず NVPerfHUD は見ていて面白い.ソースコードとにらめっこしながら「FPS の正確な制御」とか言っているうちはやっぱりダメですな.NVPerfHUD で一通りゲームを流してみて,瞬間的な遅延とか FPS の Jitter とかの典型的な値をある程度憶えてからやるべきかと.
ダメもとで NVPerfHUD 4 から Microsoft Expression を起動しようとしたら NVPerfHUD 4 がクラッシュした.残念.