GPUCommandEncoder
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only insecure contexts (HTTPS), in some or allsupporting browsers.
Note: This feature is available inWeb Workers.
TheGPUCommandEncoder interface of theWebGPU API represents an encoder that collects a sequence of GPU commands to be issued to the GPU.
AGPUCommandEncoder object instance is created via theGPUDevice.createCommandEncoder() property.
In this article
Instance properties
Instance methods
beginComputePass()Starts encoding a compute pass, returning a
GPUComputePassEncoderthat can be used to control computation.beginRenderPass()Starts encoding a render pass, returning a
GPURenderPassEncoderthat can be used to control rendering.clearBuffer()Encodes a command that fills a region of a
GPUBufferwith zeroes.copyBufferToBuffer()Encodes a command that copies data from one
GPUBufferto another.copyBufferToTexture()Encodes a command that copies data from a
GPUBufferto aGPUTexture.copyTextureToBuffer()Encodes a command that copies data from a
GPUTextureto aGPUBuffer.copyTextureToTexture()Encodes a command that copies data from one
GPUTextureto another.finish()Completes recording of the command sequence encoded on this
GPUCommandEncoder, returning a correspondingGPUCommandBuffer.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 specifiedGPUBuffer.writeTimestamp()Non-standardDeprecatedEncodes a command that writes a timestamp into a
GPUQuerySetonce the previous commands recorded into the same queuedGPUCommandBufferhave been executed by the GPU.
Examples
In ourbasic render demo, several commands are recorded via aGPUCommandEncoder:
// …// Create GPUCommandEncoderconst commandEncoder = device.createCommandEncoder();// Create GPURenderPassDescriptor to tell WebGPU which texture to draw into, then initiate render passconst renderPassDescriptor = { colorAttachments: [ { clearValue: clearColor, loadOp: "clear", storeOp: "store", view: context.getCurrentTexture().createView(), }, ],};const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);// Draw a trianglepassEncoder.setPipeline(renderPipeline);passEncoder.setVertexBuffer(0, vertexBuffer);passEncoder.draw(3);// End the render passpassEncoder.end();// …The commands encoded by theGPUCommandEncoder are recorded into aGPUCommandBuffer using theGPUCommandEncoder.finish() method. The command buffer is then passed into the queue via asubmit() call, ready to be processed by the GPU.
device.queue.submit([commandEncoder.finish()]);Note:Study theWebGPU samples to find more command encoding examples.
Specifications
| Specification |
|---|
| WebGPU> # gpucommandencoder> |
Browser compatibility
See also
- TheWebGPU API