2

作業中のアプリケーションの 1 つで FPS が低下しています。GPUView を使用して、グラフィックス パフォーマンスの問題をデバッグできることがわかりました。ユースケース用に Merged.etl ファイルを集めました。これは、私のアプリケーションの FPS チャートを示しています。このグラフと GPU ハードウェア キューおよび CPU コンテキスト キューとの相互関係を理解し​​ようとしています。基本的に、この FPS チャートがどのように導き出されたのか知りたいですか? この情報をトレースできるイベントがある場合、このイベントのリアルタイム トレースを追加して、アプリケーションの実行中に FPS をウィジェットとして表示できるようにすることを考えています。 /jgoldb/archive/2008/09/26/etw-event-tracing-in-wpf.aspx

4

2 に答える 2

0

FPS チャートは、イベント "D3D9 - Present" (おそらく d3d10/11 の他の同様の名前) から派生します。"D3D9 - Present" イベントは、D3D ランタイムがユーザー モードのグラフィック ドライバーのインターフェイスPresentを呼び出すときに生成されます。

GPUview の FPS チャットは、呼び出された Present のカウンターのみを考慮しますが、Windows Media Player などの一部のアプリケーションでは、Present を DWM オフの 1 フレームに対して 2 回呼び出してティアリングをなくし、最初の呼び出しで上半分を表示し、2 回目の呼び出しで表示します。下半分。この場合、GPUview の FPS は実際には実際の FPS の 2 倍です。実際の FPS を取得するには、「DX - blt」イベントも参照する必要があります。「DX - blt」イベントに「Present Blt」情報がある場合は、「DX-blt」が「Present」用であることを示しています。このイベントの Source Rect および Dest Rect 情報を使用して、Present がフレーム全体またはフレームの一部であるかどうかを判断します。

于 2013-02-06T07:41:14.183 に答える