web api instance method
GPUCommandEncoder: beginComputePass() method
Secure contextAvailable in workers
The beginComputePass() method of the
GPUCommandEncoder interface starts encoding a compute pass, returning a GPUComputePassEncoder that can be used to control computation.
Syntax
beginComputePass()
beginComputePass(descriptor)
Parameters
descriptorOptional- : An object containing the following properties:
labelOptional- : A string providing a label that can be used to identify the object, for example in
GPUErrormessages or console warnings.
- : A string providing a label that can be used to identify the object, for example in
timestampWritesOptional-
: An array of objects defining where and when timestamp query values will be written for this pass. These objects have the following properties:
querySet- : A
GPUQuerySetof type"timestamp"that the timestamp query results will be written to.
- : A
beginningOfPassWriteIndex- : A number specifying the query index in
querySetwhere the timestamp at the beginning of the render pass will be written. This is optional - if not defined, no timestamp will be written for the beginning of the pass.
- : A number specifying the query index in
endOfPassWriteIndex- : A number specifying the query index in
querySetwhere the timestamp at the end of the render pass will be written. This is optional - if not defined, no timestamp will be written for the end of the pass.
- : A number specifying the query index in
[!NOTE] The
timestamp-queryfeature needs to be enabled to use timestamp queries. Timestamp query values are written in nanoseconds, but how the value is determined is implementation-defined.
-
- : An object containing the following properties:
Return value
A GPUComputePassEncoder object instance.
Validation
The following criteria must be met when calling beginComputePass(), otherwise a GPUValidationError is generated and an invalid GPUComputePassEncoder is returned:
Examples
In our basic compute demo, several commands are recorded via a GPUCommandEncoder. Most of these commands originate from the GPUComputePassEncoder created via beginComputePass().
// …
// Create GPUCommandEncoder to encode commands to issue to the GPU
const commandEncoder = device.createCommandEncoder();
// Initiate compute 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()]);
// …
Specifications
Browser compatibility
See also
- The WebGPU API