web api interface
GPUCommandEncoder
Secure contextAvailable in workers
The GPUCommandEncoder interface of the WebGPU API represents an encoder that collects a sequence of GPU commands to be issued to the GPU.
A GPUCommandEncoder object instance is created via the createCommandEncoder() property.
Instance properties
label- : 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
Instance methods
-
- : Starts encoding a compute pass, returning a
GPUComputePassEncoderthat can be used to control computation.
- : Starts encoding a compute pass, returning a
-
- : Starts encoding a render pass, returning a
GPURenderPassEncoderthat can be used to control rendering.
- : Starts encoding a render pass, returning a
-
- : Encodes a command that fills a region of a
GPUBufferwith zeroes.
- : Encodes a command that fills a region of a
-
- : Encodes a command that copies data from one
GPUBufferto another.
- : Encodes a command that copies data from one
-
- : Encodes a command that copies data from a
GPUBufferto aGPUTexture.
- : Encodes a command that copies data from a
-
- : Encodes a command that copies data from a
GPUTextureto aGPUBuffer.
- : Encodes a command that copies data from a
-
- : Encodes a command that copies data from one
GPUTextureto another.
- : Encodes a command that copies data from one
-
- : Completes recording of the command sequence encoded on this
GPUCommandEncoder, returning a correspondingGPUCommandBuffer.
- : Completes recording of the command sequence encoded on this
-
- : Marks a specific point in a series of encoded commands with a label.
-
- : Ends a debug group, which is begun with a
pushDebugGroup()call.
- : Ends a debug group, which is begun with a
-
- : Begins a debug group, which is marked with a specified label, and will contain all subsequent encoded commands up until a
popDebugGroup()method is invoked.
- : Begins a debug group, which is marked with a specified label, and will contain all subsequent encoded commands up until a
-
- : Encodes a command that resolves a
GPUQuerySet, copying the results into a specifiedGPUBuffer.
- : Encodes a command that resolves a
-
writeTimestamp()Deprecated- : Encodes a command that writes a timestamp into a
GPUQuerySetonce the previous commands recorded into the same queuedGPUCommandBufferhave been executed by the GPU.
- : Encodes a command that writes a timestamp into a
Examples
In our basic render demo, several commands are recorded via a GPUCommandEncoder:
// …
// Create GPUCommandEncoder
const commandEncoder = device.createCommandEncoder();
// Create GPURenderPassDescriptor to tell WebGPU which texture to draw into, then initiate render pass
const renderPassDescriptor = {
colorAttachments: [
{
clearValue: clearColor,
loadOp: "clear",
storeOp: "store",
view: context.getCurrentTexture().createView(),
},
],
};
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
// Draw a triangle
passEncoder.setPipeline(renderPipeline);
passEncoder.setVertexBuffer(0, vertexBuffer);
passEncoder.draw(3);
// End the render pass
passEncoder.end();
// …
The commands encoded by the GPUCommandEncoder are recorded into a GPUCommandBuffer using the finish() method. The command buffer is then passed into the queue via a submit() call, ready to be processed by the GPU.
device.queue.submit([commandEncoder.finish()]);
[!NOTE] Study the WebGPU samples to find more command encoding examples.
Specifications
SpecificationsStandards references are available on the canonical MDN page.
Browser compatibility
Browser compatibilityCompatibility data is available on the canonical MDN page.
See also
- The WebGPU API