GPUCommandEncoder
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The GPUCommandEncoder interface of the WebGPU API represents a command encoder, used to encode commands to be issued to the GPU.
A GPUCommandEncoder object instance is created via the GPUDevice.createCommandEncoder() property.
Instance properties
Instance methods
- beginComputePass()Experimental
- 
    Starts encoding a compute pass, returning a GPUComputePassEncoderthat can be used to control computation.
- beginRenderPass()Experimental
- 
    Starts encoding a render pass, returning a GPURenderPassEncoderthat can be used to control rendering.
- clearBuffer()Experimental
- 
    Encodes a command that fills a region of a GPUBufferwith zeroes.
- copyBufferToBuffer()Experimental
- 
    Encodes a command that copies data from one GPUBufferto another.
- copyBufferToTexture()Experimental
- 
    Encodes a command that copies data from a GPUBufferto aGPUTexture.
- copyTextureToBuffer()Experimental
- 
    Encodes a command that copies data from a GPUTextureto aGPUBuffer.
- copyTextureToTexture()Experimental
- 
    Encodes a command that copies data from one GPUTextureto another.
- finish()Experimental
- 
    Completes recording of the command sequence encoded on this GPUCommandEncoder, returning a correspondingGPUCommandBuffer.
- insertDebugMarker()Experimental
- 
    Marks a specific point in a series of encoded commands with a label. 
- popDebugGroup()Experimental
- 
    Ends a debug group, which is begun with a pushDebugGroup()call.
- pushDebugGroup()Experimental
- 
    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.
- resolveQuerySet()Experimental
- 
    Encodes a command that resolves a GPUQuerySet, copying the results into a specifiedGPUBuffer.
- writeTimestamp()Experimental
- 
    Encodes a command that writes a timestamp into a GPUQuerySetonce the previous commands recorded into the same queuedGPUCommandBufferhave been executed by the GPU.
Examples
In our basic render demo, several commands are recorded via a GPUCommandEncoder:
js
// ...
// 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 recoded into a GPUCommandBuffer using the GPUCommandEncoder.finish() method. The command buffer is then passed into the queue via a submit() call, ready to be processed by the GPU.
js
device.queue.submit([commandEncoder.finish()]);
Note: Study the WebGPU samples to find more command encoding examples.
Specifications
| Specification | 
|---|
| WebGPU # gpucommandencoder | 
Browser compatibility
BCD tables only load in the browser
See also
- The WebGPU API