d3d:d3d12:query
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
d3d:d3d12:query [2015/09/09 23:03] – 作成 oga | d3d:d3d12:query [2015/09/10 03:27] (現在) – [同期] oga | ||
---|---|---|---|
行 81: | 行 81: | ||
<code cpp> | <code cpp> | ||
- | unsigned int start= QUERY_COUNT * sizeof(UI64) * Offset; | + | unsigned int start= |
D3D12_RANGE range{ start, start + QUERY_COUNT * sizeof(UI64) }; | D3D12_RANGE range{ start, start + QUERY_COUNT * sizeof(UI64) }; | ||
void* ptr= nullptr; | void* ptr= nullptr; | ||
行 90: | 行 90: | ||
</ | </ | ||
- | ==== 注意点 | + | ==== 同期 |
- | 最近の GPU は他の描画とオーバーラップ実行されることが多く、必ずしも Command 実行時の TimeStamp が正確な描画にかかった GPU 時間を計測しているとは限りません。単なる Command 発行間隔の計測になっている可能性があります。バッファが多ければ極端に短い結果を返す可能性があります。 | + | 最近の GPU は他の描画とオーバーラップ実行されることが多く、必ずしも Command 実行時の TimeStamp が描画にかかった GPU 時間を計測しているとは限りません。単なる Command 発行間隔の計測になっている可能性があります。バッファが多ければ極端に短い結果を返す可能性があります。完了を待つには Fence が必要になるかもしれません。主に RADEON で差が出るようです。 |
+ | Fence の作成 | ||
+ | <code cpp> | ||
+ | ID3D12Fence* iFence= nullptr; | ||
+ | iD3D12Device-> | ||
+ | UI64 FenceCount= 0; | ||
+ | </ | ||
+ | Fence の挿入 | ||
+ | |||
+ | <code cpp> | ||
+ | iCommand-> | ||
+ | |||
+ | ~ Draw | ||
+ | |||
+ | iCommand-> | ||
+ | { | ||
+ | ID3D12CommandList* list[]= { iCommand }; | ||
+ | iCommandQueue-> | ||
+ | } | ||
+ | |||
+ | iCommandQueue-> | ||
+ | iCommandQueue-> | ||
+ | FenceCount++; | ||
+ | |||
+ | iCommand2-> | ||
+ | iCommand2-> | ||
+ | { | ||
+ | ID3D12CommandList* list[]= { iCommand2 }; | ||
+ | iCommandQueue-> | ||
+ | } | ||
+ | </ | ||
d3d/d3d12/query.1441807386.txt.gz · 最終更新: 2015/09/09 23:03 by oga