Source/WebCore:
[WebKit-https.git] / Source / WebCore / Modules / webgpu / WebGPUDevice.idl
1 /*
2  * Copyright (C) 2018 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 // https://github.com/gpuweb/gpuweb/blob/master/design/sketch.webidl
26
27 [
28     Conditional=WEBGPU,
29     EnabledAtRuntime=WebGPU,
30     ImplementationLacksVTable
31 ] interface WebGPUDevice {
32     // readonly attribute WebGPUExtensions extensions;
33     // readonly attribute WebGPULimits limits;
34     readonly attribute WebGPUAdapter adapter;
35
36     WebGPUBuffer createBuffer(WebGPUBufferDescriptor descriptor);
37
38     WebGPUShaderModule createShaderModule(WebGPUShaderModuleDescriptor descriptor);
39     WebGPURenderPipeline createRenderPipeline(WebGPURenderPipelineDescriptor descriptor);
40
41     // FIXME: Currently, WebGPUCommandBufferDescriptor is an empty dictionary.
42     WebGPUCommandBuffer createCommandBuffer(/*WebGPUCommandBufferDescriptor descriptor*/);
43
44     WebGPUQueue getQueue();
45
46     // FIXME: Unimplemented.
47     // WebGPUTexture createTexture(WebGPUTextureDescriptor descriptor);
48     // WebGPUSampler createSampler(WebGPUSamplerDescriptor descriptor);
49     //
50     // WebGPUBindGroupLayout createBindGroupLayout(WebGPUBindGroupLayoutDescriptor descriptor);
51     // WebGPUPipelineLayout createPipelineLayout(WebGPUPipelineLayoutDescriptor descriptor);
52     // WebGPUBindGroup createBindGroup(WebGPUBindGroupDescriptor descriptor);
53     //
54     // WebGPUBlendState createBlendState(WebGPUBlendStateDescriptor descriptor);
55     // WebGPUDepthStencilState createDepthStencilState(WebGPUDepthStencilStateDescriptor descriptor);
56     // WebGPUInputState createInputState(WebGPUInputStateDescriptor descriptor);
57     // WebGPUAttachmentState createAttachmentState(WebGPUAttachmentStateDescriptor descriptor);
58     // WebGPUComputePipeline createComputePipeline(WebGPUComputePipelineDescriptor descriptor);
59     // WebGPUFence createFence(WebGPUFenceDescriptor descriptor);
60     //
61     // attribute WebGPULogCallback onLog;
62     // WebGPUObjectStatusQuery getObjectStatus(StatusableObject statusableObject);
63 };