blob: 0533ce43ac86e9dbd8bc6673aad99b54a15c0a24 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://gpuweb.github.io/gpuweb/
[
Exposed(Window WebGPU, Worker WebGPU)
] interface GPUDevice : EventTarget {
[SameObject] readonly attribute GPUAdapter adapter;
readonly attribute FrozenArray<GPUFeatureName> features;
// Deprecated
readonly attribute FrozenArray<GPUFeatureName> extensions;
[CallWith=ScriptState] readonly attribute Promise<GPUDeviceLostInfo> lost;
[SameObject] readonly attribute GPUQueue queue;
// Deprecated
[SameObject] readonly attribute GPUQueue defaultQueue;
GPUBuffer createBuffer(GPUBufferDescriptor descriptor);
[RaisesException] GPUTexture createTexture(GPUTextureDescriptor descriptor);
[RuntimeEnabled=WebGPUImportTexture, RaisesException] GPUTexture experimentalImportTexture(HTMLVideoElement video, GPUTextureUsageFlags usage);
GPUSampler createSampler(optional GPUSamplerDescriptor descriptor = {});
[RaisesException] GPUBindGroup createBindGroup(GPUBindGroupDescriptor descriptor);
[RaisesException] GPUBindGroupLayout createBindGroupLayout(GPUBindGroupLayoutDescriptor descriptor);
GPUPipelineLayout createPipelineLayout(GPUPipelineLayoutDescriptor descriptor);
[RaisesException] GPUShaderModule createShaderModule(GPUShaderModuleDescriptor descriptor);
[CallWith=ScriptState] GPURenderPipeline createRenderPipeline(GPURenderPipelineDescriptor descriptor);
GPUComputePipeline createComputePipeline(GPUComputePipelineDescriptor descriptor);
[CallWith=ScriptState] Promise<GPURenderPipeline?> createRenderPipelineAsync(GPURenderPipelineDescriptor descriptor);
[CallWith=ScriptState] Promise<GPUComputePipeline?> createComputePipelineAsync(GPUComputePipelineDescriptor descriptor);
// Deprecated
[CallWith=ScriptState] Promise<GPURenderPipeline?> createReadyRenderPipeline(GPURenderPipelineDescriptor descriptor);
[CallWith=ScriptState] Promise<GPUComputePipeline?> createReadyComputePipeline(GPUComputePipelineDescriptor descriptor);
GPUCommandEncoder createCommandEncoder(optional GPUCommandEncoderDescriptor descriptor = {});
GPURenderBundleEncoder createRenderBundleEncoder(GPURenderBundleEncoderDescriptor descriptor);
GPUQuerySet createQuerySet(GPUQuerySetDescriptor descriptor);
void pushErrorScope(GPUErrorFilter filter);
[CallWith=ScriptState] Promise<GPUError?> popErrorScope();
attribute EventHandler onuncapturederror;
};
GPUDevice includes GPUObjectBase;
enum GPUErrorFilter {
"none",
"out-of-memory",
"validation"
};
typedef sequence<(GPUBuffer or ArrayBuffer)> GPUMappedBuffer;
typedef (GPUOutOfMemoryError or GPUValidationError) GPUError;