GPUDevice
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 in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
The GPUDevice interface of the WebGPU API represents a logical GPU device. This is the main interface through which the majority of WebGPU functionality is accessed.
A GPUDevice object is requested using the GPUAdapter.requestDevice() method.
Instance properties
Inherits properties from its parent, EventTarget.
adapterInfoRead only-
A
GPUAdapterInfoobject containing identifying information about the device's originating adapter. featuresRead only-
A
GPUSupportedFeaturesobject that describes additional functionality supported by the device. label-
A string providing a label that can be used to identify the object, for example in
GPUErrormessages or console warnings. limitsRead only-
A
GPUSupportedLimitsobject that describes the limits supported by the device. lostRead only-
Contains a
Promisethat remains pending throughout the device's lifetime and resolves with aGPUDeviceLostInfoobject when the device is lost. queueRead only-
Returns the primary
GPUQueuefor the device.
Instance methods
Inherits methods from its parent, EventTarget.
createBindGroup()-
Creates a
GPUBindGroupbased on aGPUBindGroupLayoutthat defines a set of resources to be bound together in a group and how those resources are used in shader stages. createBindGroupLayout()-
Creates a
GPUBindGroupLayoutthat defines the structure and purpose of related GPU resources such as buffers that will be used in a pipeline, and is used as a template when creatingGPUBindGroups. createBuffer()-
Creates a
GPUBufferin which to store raw data to use in GPU operations. createCommandEncoder()-
Creates a
GPUCommandEncoder, which is used to encode commands to be issued to the GPU. createComputePipeline()-
Creates a
GPUComputePipelinethat can control the compute shader stage and be used in aGPUComputePassEncoder. createComputePipelineAsync()-
Returns a
Promisethat fulfills with aGPUComputePipeline, which can control the compute shader stage and be used in aGPUComputePassEncoder, once the pipeline can be used without any stalling. createPipelineLayout()-
Creates a
GPUPipelineLayoutthat defines theGPUBindGroupLayouts used by a pipeline.GPUBindGroups used with the pipeline during command encoding must have compatibleGPUBindGroupLayouts. createQuerySet()-
Creates a
GPUQuerySetthat can be used to record the results of queries on passes, such as occlusion or timestamp queries. createRenderBundleEncoder()-
Creates a
GPURenderBundleEncoderthat can be used to pre-record bundles of commands. These can be reused inGPURenderPassEncoders via theexecuteBundles()method, as many times as required. createRenderPipeline()-
Creates a
GPURenderPipelinethat can control the vertex and fragment shader stages and be used in aGPURenderPassEncoderorGPURenderBundleEncoder. createRenderPipelineAsync()-
Returns a
Promisethat fulfills with aGPURenderPipeline, which can control the vertex and fragment shader stages and be used in aGPURenderPassEncoderorGPURenderBundleEncoder, once the pipeline can be used without any stalling. createSampler()-
Creates a
GPUSampler, which controls how shaders transform and filter texture resource data. createShaderModule()-
Creates a
GPUShaderModulefrom a string of WGSL source code. createTexture()-
Creates a
GPUTexturein which to store texture data to use in GPU rendering operations. destroy()-
Destroys the device, preventing further operations on it.
importExternalTexture()-
Takes an
HTMLVideoElementas an input and returns aGPUExternalTexturewrapper object containing a snapshot of the video that can be used in GPU rendering operations. popErrorScope()-
Pops an existing GPU error scope from the error scope stack and returns a
Promisethat resolves to an object (GPUInternalError,GPUOutOfMemoryError, orGPUValidationError) describing the first error captured in the scope, ornullif no error occurred. pushErrorScope()-
Pushes a new GPU error scope onto the device's error scope stack, allowing you to capture errors of a particular type.
Events
uncapturederror-
Fired when an error is thrown that has not been observed by a GPU error scope, to provide a way to report unexpected errors. Known error cases should be handled using
pushErrorScope()andpopErrorScope().
Examples
async function init() {
if (!navigator.gpu) {
throw Error("WebGPU not supported.");
}
const adapter = await navigator.gpu.requestAdapter();
if (!adapter) {
throw Error("Couldn't request WebGPU adapter.");
}
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({
code: shaders,
});
// …
}
See the individual member pages listed above and the following demo sites for a lot more examples of GPUDevice usage:
Specifications
| Specification |
|---|
| WebGPU> # gpudevice> |
Browser compatibility
Loading…
See also
- The WebGPU API