GPUComputePassEncoder: end() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Web Workers 中可用。

GPUComputePassEncoder 介面的 end() 方法用於完成當前計算通道命令序列的記錄。

語法

js
end()

引數

無。

返回值

無 (Undefined)。

驗證

呼叫 end() 時必須滿足以下標準,否則將生成 GPUValidationError,並且 GPUComputePassEncoder 將變為無效:

  • GPUComputePassEncoder 處於開啟狀態(即尚未透過呼叫 end() 結束)。
  • 在該編碼器上進行的任何 pushDebugGroup() 呼叫,在呼叫 end() 之前都有一個對應的 popDebugGroup() 呼叫。

示例

在我們 基本的計算演示 中,透過 GPUCommandEncoder 記錄了多個命令。其中大部分命令源自透過 GPUCommandEncoder.beginComputePass() 建立的 GPUComputePassEncoder

js
const BUFFER_SIZE = 1000;

// …

// Create GPUCommandEncoder to encode commands to issue to the GPU
const commandEncoder = device.createCommandEncoder();

// Initiate render pass
const passEncoder = commandEncoder.beginComputePass();

// Issue commands
passEncoder.setPipeline(computePipeline);
passEncoder.setBindGroup(0, bindGroup);
passEncoder.dispatchWorkgroups(Math.ceil(BUFFER_SIZE / 64));

// End the render pass
passEncoder.end();

// Copy output buffer to staging buffer
commandEncoder.copyBufferToBuffer(
  output,
  0, // Source offset
  stagingBuffer,
  0, // Destination offset
  BUFFER_SIZE,
);

// End frame by passing array of command buffers to command queue for execution
device.queue.submit([commandEncoder.finish()]);

// …

規範

規範
WebGPU
# dom-gpucomputepassencoder-end

瀏覽器相容性

另見