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