「フェンス」の版間の差分

編集の要約なし
編集の要約なし
10行目: 10行目:
フェンスがない時代はGPU自体がアイドル状態(タスク全停止)になるのを待っていました。
フェンスがない時代はGPU自体がアイドル状態(タスク全停止)になるのを待っていました。
<source lang="csharp">
<source lang="csharp">
  gpu.addTask(task1);
  gpu.addTask(renderTask);
gpu.addTask(task2);
  gpu.addTask(computeTask);
  gpu.addTask(computeTask);
  gpu.waitForIdle();
  gpu.waitForIdle();
</source>
</source>


フェンスを使うと「グラフィックスシェーダーはfenceで1フレームごとに止めるけどコンピュートシェーダーは止めないでぶん回す」といったことができます。
一方でフェンスを使うと「グラフィックスシェーダーはfenceで1フレームごとに止めるけどコンピュートシェーダーは止めないでぶん回す」といったことができます。
<source lang="csharp">
<source lang="csharp">
  var fence = gpu.createFence();
  var fence = gpu.createFence();
  gpu.addTask(task1, fence);
  gpu.addTask(renderTask, fence);
gpu.addTask(task2, fence);
  gpu.addTask(computeTask, null);
  gpu.addTask(computeTask, null);
  gpu.waitForFence(fence); // task1とtask2の両方が終わるのを待つ
  gpu.waitForFence(fence); // task1とtask2の両方が終わるのを待つ