blob: 8dd680e979f84857a109981d9936ad25751434a0 [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;
[CallWith=ScriptState] readonly attribute Promise<GPUDeviceLostInfo> lost;
[SameObject] readonly attribute GPUQueue defaultQueue;
GPUBuffer createBuffer(GPUBufferDescriptor descriptor);
[CallWith=ScriptState, RaisesException] GPUMappedBuffer createBufferMapped(GPUBufferDescriptor descriptor);
[RaisesException] GPUTexture createTexture(GPUTextureDescriptor descriptor);
GPUSampler createSampler(optional GPUSamplerDescriptor descriptor = {});
GPUBindGroup createBindGroup(GPUBindGroupDescriptor descriptor);
GPUBindGroupLayout createBindGroupLayout(GPUBindGroupLayoutDescriptor descriptor);
GPUPipelineLayout createPipelineLayout(GPUPipelineLayoutDescriptor descriptor);
GPUShaderModule createShaderModule(GPUShaderModuleDescriptor descriptor);
[CallWith=ScriptState] GPURenderPipeline createRenderPipeline(GPURenderPipelineDescriptor descriptor);
GPUComputePipeline createComputePipeline(GPUComputePipelineDescriptor descriptor);
GPUCommandEncoder createCommandEncoder(optional GPUCommandEncoderDescriptor descriptor = {});
GPURenderBundleEncoder createRenderBundleEncoder(GPURenderBundleEncoderDescriptor descriptor);
void pushErrorScope(GPUErrorFilter filter);
[CallWith=ScriptState] Promise<GPUError?> popErrorScope();
attribute EventHandler onuncapturederror;
};
enum GPUErrorFilter {
"none",
"out-of-memory",
"validation"
};
typedef sequence<any> GPUMappedBuffer; // [GPUBuffer, ArrayBuffer]
typedef (GPUOutOfMemoryError or GPUValidationError) GPUError;