「フェンス」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (同じ利用者による、間の4版が非表示) | |||
| 8行目: | 8行目: | ||
たとえば[[ゲーム]]で1フレームごとに[[マルチスレッド]]を止めたい場合があるとします。 | たとえば[[ゲーム]]で1フレームごとに[[マルチスレッド]]を止めたい場合があるとします。 | ||
フェンスがない時代はGPU自体がアイドル状態(タスク全停止)になるのを待っていました。 | |||
<source lang=" | <source lang="csharp"> | ||
gpu.addTask( | gpu.addTask(renderTask); | ||
gpu.addTask(computeTask); | gpu.addTask(computeTask); | ||
gpu.waitForIdle(); | gpu.waitForIdle(); | ||
</source> | </source> | ||
一方でフェンスを使うと「グラフィックスシェーダーはfenceで1フレームごとに止めるけどコンピュートシェーダーは止めないでぶん回す」といったことができます。 | |||
<source lang=" | <source lang="csharp"> | ||
var fence = gpu.createFence(); | var fence = gpu.createFence(); | ||
gpu.addTask( | gpu.addTask(renderTask, fence); | ||
gpu.addTask(computeTask, null); | gpu.addTask(computeTask, null); | ||
gpu.waitForFence(fence); // | gpu.waitForFence(fence); // renderTaskが終わるのを待つ | ||
</source> | </source> | ||
[[category: GPU]] | |||