GPUCommandEncoder: finish() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

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

finish() 方法是 GPUCommandEncoder 接口的一部分,它会完成在此 GPUCommandEncoder 上编码的命令序列的记录,并返回一个相应的 GPUCommandBuffer

语法

js
finish()
finish(descriptor)

参数

descriptor 可选

一个可能包含以下属性的对象:

label 可选

一个字符串,为返回的 GPUCommandBuffer 提供一个标签,用于标识它,例如在 GPUError 消息或控制台警告中。

返回值

一个 GPUCommandBuffer 对象实例。

验证

调用 finish() 时必须满足以下条件,否则将生成 GPUValidationError,并且 GPUCommandEncoder 会失效。

  • 没有活动的调试组(即,通过 pushDebugGroup() 启动的)。
  • GPUCommandEncoder 处于打开状态 — 这意味着:
    • 没有活动的子 GPUComputePassEncoderGPURenderPassEncoder 未结束(通过调用 end())。
    • GPUCommandEncoder 尚未调用过 finish() 方法(在这种情况下,不能再使用它来编码任何命令)。

示例

js
// …

const commandBuffer = commandEncoder.finish();
device.queue.submit([commandBuffer]);

// …

规范

规范
WebGPU
# dom-gpucommandencoder-finish

浏览器兼容性

另见