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