GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • MDN
  • HTML: Markup language
  • Elements
  • Global attributes
  • Attributes
  • See all…
  • Responsive images
  • HTML cheatsheet
  • Date & time formats
  • See all…
  • SVG
  • MathML
  • XML
  • CSS: Styling language

This view

  • Original page
  • New address

GeezerVison is showing developer.mozilla.org — GPUCommandEncoder - Web APIs | MDN

GPUCommandEncoder

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Want more browser support for this feature? Tell us why.

  • See full compatibility
  • Learn more

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Note: This feature is available in Web 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 GPUDevice.createCommandEncoder() property.

Instance properties

label

A string providing a label that can be used to identify the object, for example in GPUError messages or console warnings.

Instance methods

beginComputePass()

Starts encoding a compute pass, returning a GPUComputePassEncoder that can be used to control computation.

beginRenderPass()

Starts encoding a render pass, returning a GPURenderPassEncoder that can be used to control rendering.

clearBuffer()

Encodes a command that fills a region of a GPUBuffer with zeroes.

copyBufferToBuffer()

Encodes a command that copies data from one GPUBuffer to another.

copyBufferToTexture()

Encodes a command that copies data from a GPUBuffer to a GPUTexture.

copyTextureToBuffer()

Encodes a command that copies data from a GPUTexture to a GPUBuffer.

copyTextureToTexture()

Encodes a command that copies data from one GPUTexture to another.

finish()

Completes recording of the command sequence encoded on this GPUCommandEncoder, returning a corresponding GPUCommandBuffer.

insertDebugMarker()

Marks a specific point in a series of encoded commands with a label.

popDebugGroup()

Ends a debug group, which is begun with a pushDebugGroup() call.

pushDebugGroup()

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()

Encodes a command that resolves a GPUQuerySet, copying the results into a specified GPUBuffer.

writeTimestamp()

Encodes a command that writes a timestamp into a GPUQuerySet once the previous commands recorded into the same queued GPUCommandBuffer have 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 recorded 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

See also

  • The WebGPU API

Help improve MDN

Learn how to contribute

This page was last modified on Jun 24, 2025 by MDN contributors.

View this page on GitHub • Report a problem with this content
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.