d3d:d3d12:query
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| d3d:d3d12:query [2015/09/09 23:13] – [注意点] 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.1441808019.txt.gz · 最終更新: by oga
