WebGPULimited availability
The navigator.gpu API performs operations such as rendering and computation on dedicated graphics hardware (also known as a Graphics Processing Unit).
Not yet supported in all major browsers — check the table and provide a fallback.
Browser support
DesktopChrome
1–143Not supported
144+Supportedsince Jan 13, 2026
Current: 155Edge
12–143Not supported
144+Supportedsince Jan 21, 2026
Current: 154Firefox
✕Not supportedup to 157
Current: 157Safari
1–18.6Not supported
26+Supportedsince Sep 15, 2025
Current: 27MobileChrome Android
18–120Not supported
121+Supportedsince Jan 23, 2024
Current: 155Firefox Android
✕Not supportedup to 157
Current: 157Safari iOS
1–18.6Not supported
26+Supportedsince Sep 15, 2025
Current: 27How to use
Not supported in Firefox, Firefox Android. Use feature detection below and provide a fallback (or a polyfill) for those browsers.
Example
JS
if (!navigator.gpu) throw new Error("WebGPU not supported");
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const context = canvas.getContext("webgpu");
context.configure({ device, format: navigator.gpu.getPreferredCanvasFormat() });Feature detection
JS · check before using
if ("HTMLCanvasElement" in globalThis && "getContext" in HTMLCanvasElement.prototype) {
// HTMLCanvasElement.getContext is available
}Documentation (MDN)
Specification
Usage share
Sub-features
Support for each part of the feature (301). The overall table above shows when the whole feature works.
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| GPU | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPU.getPreferredCanvasFormat | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPU.requestAdapter | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPU.requestAdapter.discrete_adapter_default_ac | ✕ | ✕ | ✕ | ✕ | 121 | ✕ | ✕ |
| GPU.wgslLanguageFeatures | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUAdapter | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUAdapter.features | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUAdapter.info | 144 | 144 | ✕ | 26 | 144 | ✕ | 26 |
| GPUAdapter.limits | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUAdapter.requestDevice | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUAdapter.requestDevice.handles_duplicate_calls | 144 | 144 | ✕ | ✕ | 140 | ✕ | ✕ |
| GPUAdapter.requestDevice.undefined_limits | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUAdapterInfo | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUAdapterInfo.architecture | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUAdapterInfo.description | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUAdapterInfo.device | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUAdapterInfo.subgroupMaxSize | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUAdapterInfo.subgroupMinSize | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUAdapterInfo.vendor | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBindGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
Show 281 more
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| GPUBindGroup.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBindGroupLayout | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBindGroupLayout.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBuffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBuffer.destroy | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBuffer.getMappedRange | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBuffer.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBuffer.mapAsync | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBuffer.mapState | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBuffer.size | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBuffer.unmap | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUBuffer.usage | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCanvasContext | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCanvasContext.canvas | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCanvasContext.configure | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCanvasContext.configure.toneMapping | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUCanvasContext.getConfiguration | 144 | 144 | ✕ | 26 | 144 | ✕ | 26 |
| GPUCanvasContext.getCurrentTexture | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCanvasContext.unconfigure | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandBuffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandBuffer.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.beginComputePass | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.beginComputePass.timestampWrites | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUCommandEncoder.beginRenderPass | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.beginRenderPass.depthSlice_option | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUCommandEncoder.beginRenderPass.separate_depth_stencil_read-only | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUCommandEncoder.beginRenderPass.timestampWrites | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUCommandEncoder.clearBuffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.copyBufferToBuffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.copyBufferToTexture | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.copyTextureToBuffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.copyTextureToTexture | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.finish | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.insertDebugMarker | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.popDebugGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.pushDebugGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCommandEncoder.resolveQuerySet | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCompilationInfo | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCompilationInfo.messages | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCompilationMessage | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCompilationMessage.length | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCompilationMessage.lineNum | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCompilationMessage.linePos | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCompilationMessage.message | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCompilationMessage.offset | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUCompilationMessage.type | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePassEncoder | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePassEncoder.dispatchWorkgroups | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePassEncoder.dispatchWorkgroupsIndirect | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePassEncoder.end | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePassEncoder.insertDebugMarker | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePassEncoder.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePassEncoder.popDebugGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePassEncoder.pushDebugGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePassEncoder.setBindGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePassEncoder.setBindGroup.unset_bind_group | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUComputePassEncoder.setPipeline | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePipeline | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePipeline.getBindGroupLayout | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUComputePipeline.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.adapterInfo | 144 | 144 | ✕ | 26 | 144 | ✕ | 26 |
| GPUDevice.createBindGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createBindGroupLayout | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createBindGroupLayout.storageTexture_access_read-write_read-only | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUDevice.createBindGroupLayout.texture_rgb10a2uint | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUDevice.createBuffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createCommandEncoder | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createComputePipeline | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createComputePipeline.optional_entryPoint | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUDevice.createComputePipelineAsync | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createComputePipelineAsync.optional_entryPoint | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUDevice.createPipelineLayout | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createQuerySet | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createQuerySet.timestamp | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUDevice.createRenderBundleEncoder | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createRenderPipeline | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createRenderPipeline.dual-source-blending | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUDevice.createRenderPipeline.optional_depthcompare_depthwriteenabled | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUDevice.createRenderPipeline.optional_entryPoint | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUDevice.createRenderPipeline.texture_rgb10a2uint | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUDevice.createRenderPipeline.validates_depth_bias_for_line_and_point_topologies | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUDevice.createRenderPipeline.vertex_unorm10-10-10-2 | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUDevice.createRenderPipelineAsync | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createRenderPipelineAsync.dual-source-blending | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUDevice.createRenderPipelineAsync.optional_depthcompare_depthwriteenabled | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUDevice.createRenderPipelineAsync.optional_entryPoint | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUDevice.createRenderPipelineAsync.texture_rgb10a2uint | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUDevice.createRenderPipelineAsync.validates_depth_bias_for_line_and_point_topologies | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUDevice.createRenderPipelineAsync.vertex_unorm10-10-10-2 | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUDevice.createSampler | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createShaderModule | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createTexture | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.createTexture.texture_rgb10a2uint | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUDevice.destroy | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.features | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.importExternalTexture | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.importExternalTexture.color_space_display-p3 | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUDevice.importExternalTexture.videoframe_source | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.limits | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.lost | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.popErrorScope | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.pushErrorScope | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.queue | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDevice.uncapturederror_event | 144 | 144 | ✕ | 27 | 121 | ✕ | 27 |
| GPUDeviceLostInfo | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDeviceLostInfo.message | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUDeviceLostInfo.reason | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUError | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUError.message | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUExternalTexture | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUExternalTexture.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUInternalError | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUInternalError.GPUInternalError | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUOutOfMemoryError | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUOutOfMemoryError.GPUOutOfMemoryError | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUPipelineError | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUPipelineError.GPUPipelineError | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUPipelineError.GPUPipelineError.message_optional | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUPipelineError.reason | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUPipelineLayout | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUPipelineLayout.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQuerySet | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQuerySet.count | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQuerySet.destroy | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQuerySet.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQuerySet.type | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQuerySet.type.timestamp | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUQueue | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQueue.copyExternalImageToTexture | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQueue.copyExternalImageToTexture.htmlimageelement_imagedata_source | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUQueue.copyExternalImageToTexture.videoframe_source | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQueue.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQueue.onSubmittedWorkDone | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQueue.submit | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQueue.submit.validates_command_buffer_uniqueness | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUQueue.writeBuffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUQueue.writeTexture | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundle | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundle.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.draw | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.drawIndexed | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.drawIndexedIndirect | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.drawIndirect | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.finish | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.insertDebugMarker | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.popDebugGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.pushDebugGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.setBindGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.setBindGroup.unset_bind_group | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPURenderBundleEncoder.setIndexBuffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.setPipeline | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.setVertexBuffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderBundleEncoder.setVertexBuffer.unset_vertex_buffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.beginOcclusionQuery | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.draw | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.drawIndexed | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.drawIndexedIndirect | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.drawIndirect | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.end | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.endOcclusionQuery | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.executeBundles | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.insertDebugMarker | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.popDebugGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.pushDebugGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.setBindGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.setBindGroup.unset_bind_group | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPURenderPassEncoder.setBlendConstant | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.setIndexBuffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.setPipeline | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.setScissorRect | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.setStencilReference | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.setVertexBuffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.setVertexBuffer.unset_vertex_buffer | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPassEncoder.setViewport | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPipeline | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPipeline.getBindGroupLayout | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPURenderPipeline.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSampler | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSampler.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUShaderModule | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUShaderModule.getCompilationInfo | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUShaderModule.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.@@iterator | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.entries | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.feature_bgra8unorm-storage | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.feature_clip-distances | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUSupportedFeatures.feature_depth-clip-control | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.feature_depth32float-stencil8 | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.feature_dual-source-blending | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUSupportedFeatures.feature_float32-blendable | 144 | 144 | ✕ | 26 | 144 | ✕ | 26 |
| GPUSupportedFeatures.feature_float32-filterable | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUSupportedFeatures.feature_indirect-first-instance | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.feature_rg11b10ufloat-renderable | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.feature_shader-f16 | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.feature_texture-compression-astc | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.feature_texture-compression-bc | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUSupportedFeatures.feature_texture-compression-etc2 | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.feature_timestamp-query | 144 | 144 | ✕ | 26 | 144 | ✕ | 26 |
| GPUSupportedFeatures.forEach | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.has | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.keys | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.size | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedFeatures.values | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxBindGroups | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxBindGroupsPlusVertexBuffers | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxBindingsPerBindGroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxBufferSize | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxColorAttachmentBytesPerSample | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxColorAttachments | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxComputeInvocationsPerWorkgroup | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxComputeWorkgroupSizeX | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxComputeWorkgroupSizeY | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxComputeWorkgroupSizeZ | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxComputeWorkgroupStorageSize | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxComputeWorkgroupsPerDimension | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxDynamicStorageBuffersPerPipelineLayout | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxDynamicUniformBuffersPerPipelineLayout | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxInterStageShaderVariables | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxSampledTexturesPerShaderStage | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxSamplersPerShaderStage | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxStorageBufferBindingSize | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxStorageBuffersPerShaderStage | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxStorageTexturesPerShaderStage | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxTextureArrayLayers | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxTextureDimension1D | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxTextureDimension2D | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxTextureDimension3D | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxUniformBufferBindingSize | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxUniformBuffersPerShaderStage | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxVertexAttributes | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxVertexBufferArrayStride | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.maxVertexBuffers | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.minStorageBufferOffsetAlignment | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUSupportedLimits.minUniformBufferOffsetAlignment | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture.createView | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture.createView.descriptor_format_parameter_accepts_rgb10a2uint | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUTexture.createView.descriptor_usage_parameter | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| GPUTexture.depthOrArrayLayers | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture.destroy | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture.dimension | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture.format | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture.format.texture_rgb10a2uint | 144 | 144 | ✕ | ✕ | 121 | ✕ | ✕ |
| GPUTexture.height | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture.mipLevelCount | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture.sampleCount | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture.usage | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTexture.width | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTextureView | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUTextureView.label | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUUncapturedErrorEvent | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUUncapturedErrorEvent.GPUUncapturedErrorEvent | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUUncapturedErrorEvent.error | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUValidationError | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| GPUValidationError.GPUValidationError | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| HTMLCanvasElement.getContext.webgpu_context | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| Navigator.gpu | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| OffscreenCanvas.getContext.webgpu_context | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| WGSLLanguageFeatures | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| WGSLLanguageFeatures.@@iterator | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| WGSLLanguageFeatures.entries | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| WGSLLanguageFeatures.extension_packed_4x8_integer_dot_product | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| WGSLLanguageFeatures.extension_readonly_and_readwrite_storage_textures | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| WGSLLanguageFeatures.extension_unrestricted_pointer_parameters | 144 | 144 | ✕ | ✕ | 144 | ✕ | ✕ |
| WGSLLanguageFeatures.forEach | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| WGSLLanguageFeatures.has | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| WGSLLanguageFeatures.keys | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| WGSLLanguageFeatures.size | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| WGSLLanguageFeatures.values | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |
| WorkerNavigator.gpu | 144 | 144 | ✕ | 26 | 121 | ✕ | 26 |