GPUQueue
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
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 GPUQueue
interface of the WebGPU API controls execution of encoded commands on the GPU.
A device's primary queue is accessed via the GPUDevice.queue
property.
Instance properties
Instance methods
copyExternalImageToTexture()
Experimental-
Copies a snapshot taken from a source image, video, or canvas into a given
GPUTexture
. onSubmittedWorkDone()
Experimental-
Returns a
Promise
that resolves when all the work submitted to the GPU via thisGPUQueue
at the point the method is called has been processed. submit()
Experimental-
Schedules the execution of command buffers represented by one or more
GPUCommandBuffer
objects by the GPU. writeBuffer()
Experimental-
Writes a provided data source into a given
GPUBuffer
. writeTexture()
Experimental-
Writes a provided data source into a given
GPUTexture
.
Examples
In our basic render demo, we define some vertex data in a Float32Array
that we'll use to draw a triangle:
const vertices = new Float32Array([
0.0, 0.6, 0, 1, 1, 0, 0, 1, -0.5, -0.6, 0, 1, 0, 1, 0, 1, 0.5, -0.6, 0, 1, 0,
0, 1, 1,
]);
To use this data in a render pipeline, we need to put it into a GPUBuffer
. First we'll create the buffer:
const vertexBuffer = device.createBuffer({
size: vertices.byteLength, // make it big enough to store vertices in
usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
});
To get the data into the buffer we can use the writeBuffer()
function, which lets the user agent determine most efficient way to copy the data over:
device.queue.writeBuffer(vertexBuffer, 0, vertices, 0, vertices.length);
Later on, a set of commands is encoded 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.
device.queue.submit([commandEncoder.finish()]);
Note: Study the WebGPU samples to find more queue examples.
Specifications
Specification |
---|
WebGPU # gpu-queue |
Browser compatibility
Report problems with this compatibility data on GitHubdesktop | mobile | server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GPUQueue | |||||||||||||
copyExternalImageToTexture | |||||||||||||
HTMLImageElement and ImageData objects as source | |||||||||||||
VideoFrame object as source | |||||||||||||
label | |||||||||||||
onSubmittedWorkDone | |||||||||||||
submit | |||||||||||||
Validates that submitted command buffers are unique. | |||||||||||||
writeBuffer | |||||||||||||
writeTexture |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
- Partial support
- Partial support
- In development. Supported in a pre-release version.
- In development. Supported in a pre-release version.
- No support
- No support
- Experimental. Expect behavior to change in the future.
- See implementation notes.
- User must explicitly enable this feature.
- Has more compatibility info.
See also
- The WebGPU API