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
GPUComputePassEncoder
that can be used to control computation. beginRenderPass()
Experimental-
Starts encoding a render pass, returning a
GPURenderPassEncoder
that can be used to control rendering. clearBuffer()
Experimental-
Encodes a command that fills a region of a
GPUBuffer
with zeroes. copyBufferToBuffer()
Experimental-
Encodes a command that copies data from one
GPUBuffer
to another. copyBufferToTexture()
Experimental-
Encodes a command that copies data from a
GPUBuffer
to aGPUTexture
. copyTextureToBuffer()
Experimental-
Encodes a command that copies data from a
GPUTexture
to aGPUBuffer
. copyTextureToTexture()
Experimental-
Encodes a command that copies data from one
GPUTexture
to 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
GPUQuerySet
once the previous commands recorded into the same queuedGPUCommandBuffer
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 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