aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webidls
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/webidls')
-rw-r--r--components/script/dom/webidls/GPU.webidl21
-rw-r--r--components/script/dom/webidls/GPUAdapter.webidl33
-rw-r--r--components/script/dom/webidls/GPUAdapterInfo.webidl12
-rw-r--r--components/script/dom/webidls/GPUBindGroup.webidl27
-rw-r--r--components/script/dom/webidls/GPUBindGroupLayout.webidl68
-rw-r--r--components/script/dom/webidls/GPUBuffer.webidl25
-rw-r--r--components/script/dom/webidls/GPUBufferUsage.webidl19
-rw-r--r--components/script/dom/webidls/GPUCanvasContext.webidl31
-rw-r--r--components/script/dom/webidls/GPUColorWrite.webidl15
-rw-r--r--components/script/dom/webidls/GPUCommandBuffer.webidl12
-rw-r--r--components/script/dom/webidls/GPUCommandEncoder.webidl153
-rw-r--r--components/script/dom/webidls/GPUCompilationInfo.webidl11
-rw-r--r--components/script/dom/webidls/GPUCompilationMessage.webidl20
-rw-r--r--components/script/dom/webidls/GPUComputePassEncoder.webidl19
-rw-r--r--components/script/dom/webidls/GPUComputePipeline.webidl31
-rw-r--r--components/script/dom/webidls/GPUDevice.webidl48
-rw-r--r--components/script/dom/webidls/GPUDeviceLostInfo.webidl20
-rw-r--r--components/script/dom/webidls/GPUMapMode.webidl12
-rw-r--r--components/script/dom/webidls/GPUObjectBase.webidl13
-rw-r--r--components/script/dom/webidls/GPUOutOfMemoryError.webidl9
-rw-r--r--components/script/dom/webidls/GPUPipelineLayout.webidl13
-rw-r--r--components/script/dom/webidls/GPUProgrammablePassEncoder.webidl17
-rw-r--r--components/script/dom/webidls/GPUQuerySet.webidl30
-rw-r--r--components/script/dom/webidls/GPUQueue.webidl34
-rw-r--r--components/script/dom/webidls/GPURenderBundle.webidl12
-rw-r--r--components/script/dom/webidls/GPURenderBundleEncoder.webidl17
-rw-r--r--components/script/dom/webidls/GPURenderEncoderBase.webidl35
-rw-r--r--components/script/dom/webidls/GPURenderPassEncoder.webidl33
-rw-r--r--components/script/dom/webidls/GPURenderPipeline.webidl196
-rw-r--r--components/script/dom/webidls/GPUSampler.webidl44
-rw-r--r--components/script/dom/webidls/GPUShaderModule.webidl17
-rw-r--r--components/script/dom/webidls/GPUShaderStage.webidl13
-rw-r--r--components/script/dom/webidls/GPUSupportedFeatures.webidl9
-rw-r--r--components/script/dom/webidls/GPUSupportedLimits.webidl40
-rw-r--r--components/script/dom/webidls/GPUTexture.webidl116
-rw-r--r--components/script/dom/webidls/GPUTextureUsage.webidl15
-rw-r--r--components/script/dom/webidls/GPUTextureView.webidl34
-rw-r--r--components/script/dom/webidls/GPUUncapturedErrorEvent.webidl22
-rw-r--r--components/script/dom/webidls/GPUValidationError.webidl24
-rw-r--r--components/script/dom/webidls/Navigator.webidl6
-rw-r--r--components/script/dom/webidls/WebGPU.webidl1170
41 files changed, 1171 insertions, 1325 deletions
diff --git a/components/script/dom/webidls/GPU.webidl b/components/script/dom/webidls/GPU.webidl
deleted file mode 100644
index f35966f4b3d..00000000000
--- a/components/script/dom/webidls/GPU.webidl
+++ /dev/null
@@ -1,21 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpu-interface
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPU {
- [NewObject]
- Promise<GPUAdapter?> requestAdapter(optional GPURequestAdapterOptions options = {});
- GPUTextureFormat getPreferredCanvasFormat();
-};
-
-dictionary GPURequestAdapterOptions {
- GPUPowerPreference powerPreference;
- boolean forceFallbackAdapter = false;
-};
-
-enum GPUPowerPreference {
- "low-power",
- "high-performance"
-};
diff --git a/components/script/dom/webidls/GPUAdapter.webidl b/components/script/dom/webidls/GPUAdapter.webidl
deleted file mode 100644
index bd7f9c2a6ab..00000000000
--- a/components/script/dom/webidls/GPUAdapter.webidl
+++ /dev/null
@@ -1,33 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpuadapter
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUAdapter {
- [SameObject] readonly attribute GPUSupportedFeatures features;
- [SameObject] readonly attribute GPUSupportedLimits limits;
- readonly attribute boolean isFallbackAdapter;
-
- [NewObject]
- Promise<GPUDevice> requestDevice(optional GPUDeviceDescriptor descriptor = {});
- [NewObject]
- Promise<GPUAdapterInfo> requestAdapterInfo(optional sequence<DOMString> unmaskHints = []);
-};
-
-dictionary GPUDeviceDescriptor {
- sequence<GPUFeatureName> requiredFeatures = [];
- record<DOMString, GPUSize64> requiredLimits;
-};
-
-enum GPUFeatureName {
- "depth-clip-control",
- "depth24unorm-stencil8",
- "depth32float-stencil8",
- "pipeline-statistics-query",
- "texture-compression-bc",
- "texture-compression-etc2",
- "texture-compression-astc",
- "timestamp-query",
- "indirect-first-instance",
-};
diff --git a/components/script/dom/webidls/GPUAdapterInfo.webidl b/components/script/dom/webidls/GPUAdapterInfo.webidl
deleted file mode 100644
index 7ddc34866e0..00000000000
--- a/components/script/dom/webidls/GPUAdapterInfo.webidl
+++ /dev/null
@@ -1,12 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpuadapterinfo
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUAdapterInfo {
- readonly attribute DOMString vendor;
- readonly attribute DOMString architecture;
- readonly attribute DOMString device;
- readonly attribute DOMString description;
-};
diff --git a/components/script/dom/webidls/GPUBindGroup.webidl b/components/script/dom/webidls/GPUBindGroup.webidl
deleted file mode 100644
index 4c83e6460ed..00000000000
--- a/components/script/dom/webidls/GPUBindGroup.webidl
+++ /dev/null
@@ -1,27 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpubindgrouplayout
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUBindGroup {
-};
-GPUBindGroup includes GPUObjectBase;
-
-dictionary GPUBindGroupDescriptor : GPUObjectDescriptorBase {
- required GPUBindGroupLayout layout;
- required sequence<GPUBindGroupEntry> entries;
-};
-
-typedef (GPUSampler or GPUTextureView or GPUBufferBinding) GPUBindingResource;
-
-dictionary GPUBindGroupEntry {
- required GPUIndex32 binding;
- required GPUBindingResource resource;
-};
-
-dictionary GPUBufferBinding {
- required GPUBuffer buffer;
- GPUSize64 offset = 0;
- GPUSize64 size;
-};
diff --git a/components/script/dom/webidls/GPUBindGroupLayout.webidl b/components/script/dom/webidls/GPUBindGroupLayout.webidl
deleted file mode 100644
index 91ce4702417..00000000000
--- a/components/script/dom/webidls/GPUBindGroupLayout.webidl
+++ /dev/null
@@ -1,68 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpubindgrouplayout
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPUBindGroupLayout {
-};
-GPUBindGroupLayout includes GPUObjectBase;
-
-dictionary GPUBindGroupLayoutDescriptor : GPUObjectDescriptorBase {
- required sequence<GPUBindGroupLayoutEntry> entries;
-};
-
-dictionary GPUBindGroupLayoutEntry {
- required GPUIndex32 binding;
- required GPUShaderStageFlags visibility;
- GPUBufferBindingLayout buffer;
- GPUSamplerBindingLayout sampler;
- GPUTextureBindingLayout texture;
- GPUStorageTextureBindingLayout storageTexture;
-};
-
-enum GPUBufferBindingType {
- "uniform",
- "storage",
- "read-only-storage",
-};
-
-dictionary GPUBufferBindingLayout {
- GPUBufferBindingType type = "uniform";
- boolean hasDynamicOffset = false;
- GPUSize64 minBindingSize = 0;
-};
-
-enum GPUSamplerBindingType {
- "filtering",
- "non-filtering",
- "comparison",
-};
-
-dictionary GPUSamplerBindingLayout {
- GPUSamplerBindingType type = "filtering";
-};
-
-enum GPUTextureSampleType {
- "float",
- "unfilterable-float",
- "depth",
- "sint",
- "uint",
-};
-
-dictionary GPUTextureBindingLayout {
- GPUTextureSampleType sampleType = "float";
- GPUTextureViewDimension viewDimension = "2d";
- boolean multisampled = false;
-};
-
-enum GPUStorageTextureAccess {
- "write-only",
-};
-
-dictionary GPUStorageTextureBindingLayout {
- GPUStorageTextureAccess access = "write-only";
- required GPUTextureFormat format;
- GPUTextureViewDimension viewDimension = "2d";
-};
diff --git a/components/script/dom/webidls/GPUBuffer.webidl b/components/script/dom/webidls/GPUBuffer.webidl
deleted file mode 100644
index 8cc7f652e80..00000000000
--- a/components/script/dom/webidls/GPUBuffer.webidl
+++ /dev/null
@@ -1,25 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpubuffer
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPUBuffer {
- [NewObject]
- Promise<undefined> mapAsync(GPUMapModeFlags mode, optional GPUSize64 offset = 0, optional GPUSize64 size);
- [NewObject, Throws]
- ArrayBuffer getMappedRange(optional GPUSize64 offset = 0, optional GPUSize64 size);
- [Throws]
- undefined unmap();
- [Throws]
- undefined destroy();
-};
-GPUBuffer includes GPUObjectBase;
-
-dictionary GPUBufferDescriptor : GPUObjectDescriptorBase {
- required GPUSize64 size;
- required GPUBufferUsageFlags usage;
- boolean mappedAtCreation = false;
-};
-
-typedef [EnforceRange] unsigned long long GPUSize64;
diff --git a/components/script/dom/webidls/GPUBufferUsage.webidl b/components/script/dom/webidls/GPUBufferUsage.webidl
deleted file mode 100644
index 78330c9bf17..00000000000
--- a/components/script/dom/webidls/GPUBufferUsage.webidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#buffer-usage
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUBufferUsage {
- const GPUBufferUsageFlags MAP_READ = 0x0001;
- const GPUBufferUsageFlags MAP_WRITE = 0x0002;
- const GPUBufferUsageFlags COPY_SRC = 0x0004;
- const GPUBufferUsageFlags COPY_DST = 0x0008;
- const GPUBufferUsageFlags INDEX = 0x0010;
- const GPUBufferUsageFlags VERTEX = 0x0020;
- const GPUBufferUsageFlags UNIFORM = 0x0040;
- const GPUBufferUsageFlags STORAGE = 0x0080;
- const GPUBufferUsageFlags INDIRECT = 0x0100;
- const GPUBufferUsageFlags QUERY_RESOLVE = 0x0200;
-};
-typedef [EnforceRange] unsigned long GPUBufferUsageFlags;
diff --git a/components/script/dom/webidls/GPUCanvasContext.webidl b/components/script/dom/webidls/GPUCanvasContext.webidl
deleted file mode 100644
index 4395f176c9e..00000000000
--- a/components/script/dom/webidls/GPUCanvasContext.webidl
+++ /dev/null
@@ -1,31 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpucanvascontext
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUCanvasContext {
- readonly attribute (HTMLCanvasElement or OffscreenCanvas) canvas;
-
- // Calling configure() a second time invalidates the previous one,
- // and all of the textures it's produced.
- undefined configure(GPUCanvasConfiguration descriptor);
- undefined unconfigure();
-
- [Throws]
- GPUTexture getCurrentTexture();
-};
-
-enum GPUCanvasAlphaMode {
- "opaque",
- "premultiplied",
-};
-
-dictionary GPUCanvasConfiguration {
- required GPUDevice device;
- required GPUTextureFormat format;
- GPUTextureUsageFlags usage = 0x10; // GPUTextureUsage.RENDER_ATTACHMENT
- sequence<GPUTextureFormat> viewFormats = [];
- // PredefinedColorSpace colorSpace = "srgb"; // TODO
- GPUCanvasAlphaMode alphaMode = "opaque";
-};
diff --git a/components/script/dom/webidls/GPUColorWrite.webidl b/components/script/dom/webidls/GPUColorWrite.webidl
deleted file mode 100644
index d667580fbf3..00000000000
--- a/components/script/dom/webidls/GPUColorWrite.webidl
+++ /dev/null
@@ -1,15 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#namespacedef-gpucolorwrite
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUColorWrite {
- const GPUColorWriteFlags RED = 0x1;
- const GPUColorWriteFlags GREEN = 0x2;
- const GPUColorWriteFlags BLUE = 0x4;
- const GPUColorWriteFlags ALPHA = 0x8;
- const GPUColorWriteFlags ALL = 0xF;
-};
-
-typedef [EnforceRange] unsigned long GPUColorWriteFlags;
diff --git a/components/script/dom/webidls/GPUCommandBuffer.webidl b/components/script/dom/webidls/GPUCommandBuffer.webidl
deleted file mode 100644
index 38186438afb..00000000000
--- a/components/script/dom/webidls/GPUCommandBuffer.webidl
+++ /dev/null
@@ -1,12 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpucommandbuffer
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPUCommandBuffer {
-};
-GPUCommandBuffer includes GPUObjectBase;
-
-dictionary GPUCommandBufferDescriptor : GPUObjectDescriptorBase {
-};
diff --git a/components/script/dom/webidls/GPUCommandEncoder.webidl b/components/script/dom/webidls/GPUCommandEncoder.webidl
deleted file mode 100644
index 2e63fced636..00000000000
--- a/components/script/dom/webidls/GPUCommandEncoder.webidl
+++ /dev/null
@@ -1,153 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpucommandencoder
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPUCommandEncoder {
- [NewObject]
- GPUComputePassEncoder beginComputePass(optional GPUComputePassDescriptor descriptor = {});
- [NewObject]
- GPURenderPassEncoder beginRenderPass(GPURenderPassDescriptor descriptor);
-
- undefined copyBufferToBuffer(
- GPUBuffer source,
- GPUSize64 sourceOffset,
- GPUBuffer destination,
- GPUSize64 destinationOffset,
- GPUSize64 size);
-
- undefined copyBufferToTexture(
- GPUImageCopyBuffer source,
- GPUImageCopyTexture destination,
- GPUExtent3D copySize);
-
- undefined copyTextureToBuffer(
- GPUImageCopyTexture source,
- GPUImageCopyBuffer destination,
- GPUExtent3D copySize);
-
- undefined copyTextureToTexture(
- GPUImageCopyTexture source,
- GPUImageCopyTexture destination,
- GPUExtent3D copySize);
-
- /*
- undefined copyImageBitmapToTexture(
- GPUImageBitmapCopyView source,
- GPUImageCopyTexture destination,
- GPUExtent3D copySize);
- */
-
- //undefined pushDebugGroup(USVString groupLabel);
- //undefined popDebugGroup();
- //undefined insertDebugMarker(USVString markerLabel);
-
- [NewObject]
- GPUCommandBuffer finish(optional GPUCommandBufferDescriptor descriptor = {});
-};
-GPUCommandEncoder includes GPUObjectBase;
-
-dictionary GPUImageDataLayout {
- GPUSize64 offset = 0;
- GPUSize32 bytesPerRow;
- GPUSize32 rowsPerImage;
-};
-
-dictionary GPUImageCopyBuffer : GPUImageDataLayout {
- required GPUBuffer buffer;
-};
-
-dictionary GPUImageCopyExternalImage {
- required (ImageBitmap or HTMLCanvasElement or OffscreenCanvas) source;
- GPUOrigin2D origin = {};
- boolean flipY = false;
-};
-
-dictionary GPUImageCopyTexture {
- required GPUTexture texture;
- GPUIntegerCoordinate mipLevel = 0;
- GPUOrigin3D origin;
- GPUTextureAspect aspect = "all";
-};
-
-dictionary GPUImageCopyTextureTagged : GPUImageCopyTexture {
- //GPUPredefinedColorSpace colorSpace = "srgb"; //TODO
- boolean premultipliedAlpha = false;
-};
-
-dictionary GPUImageBitmapCopyView {
- //required ImageBitmap imageBitmap; //TODO
- GPUOrigin2D origin;
-};
-
-dictionary GPUComputePassDescriptor : GPUObjectDescriptorBase {
-};
-
-//
-dictionary GPURenderPassDescriptor : GPUObjectDescriptorBase {
- required sequence<GPURenderPassColorAttachment> colorAttachments;
- GPURenderPassDepthStencilAttachment depthStencilAttachment;
- GPUQuerySet occlusionQuerySet;
-};
-
-dictionary GPURenderPassColorAttachment {
- required GPUTextureView view;
- GPUTextureView resolveTarget;
-
- GPUColor clearValue;
- required GPULoadOp loadOp;
- required GPUStoreOp storeOp;
-};
-
-dictionary GPURenderPassDepthStencilAttachment {
- required GPUTextureView view;
-
- float depthClearValue;
- GPULoadOp depthLoadOp;
- GPUStoreOp depthStoreOp;
- boolean depthReadOnly = false;
-
- GPUStencilValue stencilClearValue = 0;
- GPULoadOp stencilLoadOp;
- GPUStoreOp stencilStoreOp;
- boolean stencilReadOnly = false;
-};
-
-enum GPULoadOp {
- "load",
- "clear"
-};
-
-enum GPUStoreOp {
- "store",
- "discard"
-};
-
-dictionary GPURenderPassLayout: GPUObjectDescriptorBase {
- // TODO: We don't support nullable enumerated arguments yet
- required sequence<GPUTextureFormat> colorFormats;
- GPUTextureFormat depthStencilFormat;
- GPUSize32 sampleCount = 1;
-};
-
-dictionary GPUColorDict {
- required double r;
- required double g;
- required double b;
- required double a;
-};
-typedef (sequence<double> or GPUColorDict) GPUColor;
-
-dictionary GPUOrigin2DDict {
- GPUIntegerCoordinate x = 0;
- GPUIntegerCoordinate y = 0;
-};
-typedef (sequence<GPUIntegerCoordinate> or GPUOrigin2DDict) GPUOrigin2D;
-
-dictionary GPUOrigin3DDict {
- GPUIntegerCoordinate x = 0;
- GPUIntegerCoordinate y = 0;
- GPUIntegerCoordinate z = 0;
-};
-typedef (sequence<GPUIntegerCoordinate> or GPUOrigin3DDict) GPUOrigin3D;
diff --git a/components/script/dom/webidls/GPUCompilationInfo.webidl b/components/script/dom/webidls/GPUCompilationInfo.webidl
deleted file mode 100644
index c5451db6f52..00000000000
--- a/components/script/dom/webidls/GPUCompilationInfo.webidl
+++ /dev/null
@@ -1,11 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpucompilationinfo
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUCompilationInfo {
- // codegen hates it
- //[Cached, Frozen, Pure]
- readonly attribute /*sequence<GPUCompilationMessage>*/ any messages;
-};
diff --git a/components/script/dom/webidls/GPUCompilationMessage.webidl b/components/script/dom/webidls/GPUCompilationMessage.webidl
deleted file mode 100644
index 29d55da1aad..00000000000
--- a/components/script/dom/webidls/GPUCompilationMessage.webidl
+++ /dev/null
@@ -1,20 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpucompilationmessage
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUCompilationMessage {
- readonly attribute DOMString message;
- readonly attribute GPUCompilationMessageType type;
- readonly attribute unsigned long long lineNum;
- readonly attribute unsigned long long linePos;
- readonly attribute unsigned long long offset;
- readonly attribute unsigned long long length;
-};
-
-enum GPUCompilationMessageType {
- "error",
- "warning",
- "info"
-};
diff --git a/components/script/dom/webidls/GPUComputePassEncoder.webidl b/components/script/dom/webidls/GPUComputePassEncoder.webidl
deleted file mode 100644
index 41aea0a2371..00000000000
--- a/components/script/dom/webidls/GPUComputePassEncoder.webidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpucomputepassencoder
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPUComputePassEncoder {
- undefined setPipeline(GPUComputePipeline pipeline);
- undefined dispatchWorkgroups(GPUSize32 x, optional GPUSize32 y = 1, optional GPUSize32 z = 1);
- //[Pref="dom.webgpu.indirect-dispatch.enabled"]
- undefined dispatchWorkgroupsIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset);
-
- [Throws]
- undefined end();
-};
-GPUComputePassEncoder includes GPUObjectBase;
-GPUComputePassEncoder includes GPUProgrammablePassEncoder;
-
-typedef [EnforceRange] unsigned long GPUSize32;
diff --git a/components/script/dom/webidls/GPUComputePipeline.webidl b/components/script/dom/webidls/GPUComputePipeline.webidl
deleted file mode 100644
index 7e6f5da1b12..00000000000
--- a/components/script/dom/webidls/GPUComputePipeline.webidl
+++ /dev/null
@@ -1,31 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpucomputepipeline
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPUComputePipeline {
-};
-GPUComputePipeline includes GPUObjectBase;
-GPUComputePipeline includes GPUPipelineBase;
-
-enum GPUAutoLayoutMode {
- "auto"
-};
-
-dictionary GPUPipelineDescriptorBase : GPUObjectDescriptorBase {
- required (GPUPipelineLayout or GPUAutoLayoutMode) layout;
-};
-
-dictionary GPUComputePipelineDescriptor : GPUPipelineDescriptorBase {
- required GPUProgrammableStage compute;
-};
-
-interface mixin GPUPipelineBase {
- [Throws] GPUBindGroupLayout getBindGroupLayout(unsigned long index);
-};
-
-dictionary GPUProgrammableStage {
- required GPUShaderModule module;
- required USVString entryPoint;
-};
diff --git a/components/script/dom/webidls/GPUDevice.webidl b/components/script/dom/webidls/GPUDevice.webidl
deleted file mode 100644
index e00b3825c4f..00000000000
--- a/components/script/dom/webidls/GPUDevice.webidl
+++ /dev/null
@@ -1,48 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpudevice
-[Exposed=(Window, DedicatedWorker), /*Serializable,*/ Pref="dom.webgpu.enabled"]
-interface GPUDevice: EventTarget {
- [SameObject] readonly attribute GPUSupportedFeatures features;
- [SameObject] readonly attribute GPUSupportedLimits limits;
-
- // Overriding the name to avoid collision with `class Queue` in gcc
- [SameObject, BinaryName="getQueue"] readonly attribute GPUQueue queue;
-
- undefined destroy();
-
- [NewObject, Throws]
- GPUBuffer createBuffer(GPUBufferDescriptor descriptor);
- [NewObject]
- GPUTexture createTexture(GPUTextureDescriptor descriptor);
- [NewObject]
- GPUSampler createSampler(optional GPUSamplerDescriptor descriptor = {});
-
- GPUBindGroupLayout createBindGroupLayout(GPUBindGroupLayoutDescriptor descriptor);
- GPUPipelineLayout createPipelineLayout(GPUPipelineLayoutDescriptor descriptor);
- GPUBindGroup createBindGroup(GPUBindGroupDescriptor descriptor);
-
- GPUShaderModule createShaderModule(GPUShaderModuleDescriptor descriptor);
- GPUComputePipeline createComputePipeline(GPUComputePipelineDescriptor descriptor);
- GPURenderPipeline createRenderPipeline(GPURenderPipelineDescriptor descriptor);
-
- [NewObject]
- Promise<GPUComputePipeline> createComputePipelineAsync(GPUComputePipelineDescriptor descriptor);
- [NewObject]
- Promise<GPURenderPipeline> createRenderPipelineAsync(GPURenderPipelineDescriptor descriptor);
-
- [NewObject]
- GPUCommandEncoder createCommandEncoder(optional GPUCommandEncoderDescriptor descriptor = {});
- [NewObject]
- GPURenderBundleEncoder createRenderBundleEncoder(GPURenderBundleEncoderDescriptor descriptor);
- //[NewObject]
- //GPUQuerySet createQuerySet(GPUQuerySetDescriptor descriptor);
-};
-GPUDevice includes GPUObjectBase;
-
-//TODO
-dictionary GPUCommandEncoderDescriptor : GPUObjectDescriptorBase {
- boolean measureExecutionTime = false;
-};
diff --git a/components/script/dom/webidls/GPUDeviceLostInfo.webidl b/components/script/dom/webidls/GPUDeviceLostInfo.webidl
deleted file mode 100644
index de011768889..00000000000
--- a/components/script/dom/webidls/GPUDeviceLostInfo.webidl
+++ /dev/null
@@ -1,20 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpudevicelostinfo
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUDeviceLostInfo {
- readonly attribute GPUDeviceLostReason reason;
- readonly attribute DOMString message;
-};
-
-enum GPUDeviceLostReason {
- "unknown",
- "destroyed",
-};
-
-partial interface GPUDevice {
- [Throws]
- readonly attribute Promise<GPUDeviceLostInfo> lost;
-};
diff --git a/components/script/dom/webidls/GPUMapMode.webidl b/components/script/dom/webidls/GPUMapMode.webidl
deleted file mode 100644
index e99bde35237..00000000000
--- a/components/script/dom/webidls/GPUMapMode.webidl
+++ /dev/null
@@ -1,12 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#namespacedef-gpumapmode
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUMapMode {
- const GPUMapModeFlags READ = 0x0001;
- const GPUMapModeFlags WRITE = 0x0002;
-};
-
-typedef [EnforceRange] unsigned long GPUMapModeFlags;
diff --git a/components/script/dom/webidls/GPUObjectBase.webidl b/components/script/dom/webidls/GPUObjectBase.webidl
deleted file mode 100644
index d977999f64f..00000000000
--- a/components/script/dom/webidls/GPUObjectBase.webidl
+++ /dev/null
@@ -1,13 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpuobjectbase
-[Exposed=(Window)]
-interface mixin GPUObjectBase {
- attribute USVString label;
-};
-
-dictionary GPUObjectDescriptorBase {
- USVString label;
-};
diff --git a/components/script/dom/webidls/GPUOutOfMemoryError.webidl b/components/script/dom/webidls/GPUOutOfMemoryError.webidl
deleted file mode 100644
index 470684edaab..00000000000
--- a/components/script/dom/webidls/GPUOutOfMemoryError.webidl
+++ /dev/null
@@ -1,9 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpuoutofmemoryerror
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUOutOfMemoryError {
- constructor();
-};
diff --git a/components/script/dom/webidls/GPUPipelineLayout.webidl b/components/script/dom/webidls/GPUPipelineLayout.webidl
deleted file mode 100644
index a50c2c60f40..00000000000
--- a/components/script/dom/webidls/GPUPipelineLayout.webidl
+++ /dev/null
@@ -1,13 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#pipeline-layout
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPUPipelineLayout {
-};
-GPUPipelineLayout includes GPUObjectBase;
-
-dictionary GPUPipelineLayoutDescriptor : GPUObjectDescriptorBase {
- required sequence<GPUBindGroupLayout> bindGroupLayouts;
-};
diff --git a/components/script/dom/webidls/GPUProgrammablePassEncoder.webidl b/components/script/dom/webidls/GPUProgrammablePassEncoder.webidl
deleted file mode 100644
index a7293fca7e8..00000000000
--- a/components/script/dom/webidls/GPUProgrammablePassEncoder.webidl
+++ /dev/null
@@ -1,17 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpuprogrammablepassencoder
-[Exposed=(Window, DedicatedWorker)]
-interface mixin GPUProgrammablePassEncoder {
- undefined setBindGroup(GPUIndex32 index, GPUBindGroup bindGroup,
- optional sequence<GPUBufferDynamicOffset> dynamicOffsets = []);
-
- //undefined pushDebugGroup(USVString groupLabel);
- //undefined popDebugGroup();
- //undefined insertDebugMarker(USVString markerLabel);
-};
-
-typedef [EnforceRange] unsigned long GPUBufferDynamicOffset;
-typedef [EnforceRange] unsigned long GPUIndex32;
diff --git a/components/script/dom/webidls/GPUQuerySet.webidl b/components/script/dom/webidls/GPUQuerySet.webidl
deleted file mode 100644
index 12275263c02..00000000000
--- a/components/script/dom/webidls/GPUQuerySet.webidl
+++ /dev/null
@@ -1,30 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpuqueryset
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPUQuerySet {
- undefined destroy();
-};
-GPUQuerySet includes GPUObjectBase;
-
-dictionary GPUQuerySetDescriptor : GPUObjectDescriptorBase {
- required GPUQueryType type;
- required GPUSize32 count;
- sequence<GPUPipelineStatisticName> pipelineStatistics = [];
-};
-
-enum GPUPipelineStatisticName {
- "vertex-shader-invocations",
- "clipper-invocations",
- "clipper-primitives-out",
- "fragment-shader-invocations",
- "compute-shader-invocations"
-};
-
-enum GPUQueryType {
- "occlusion",
- "pipeline-statistics",
- "timestamp"
-};
diff --git a/components/script/dom/webidls/GPUQueue.webidl b/components/script/dom/webidls/GPUQueue.webidl
deleted file mode 100644
index 1fa33cab309..00000000000
--- a/components/script/dom/webidls/GPUQueue.webidl
+++ /dev/null
@@ -1,34 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpuqueue
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPUQueue {
- undefined submit(sequence<GPUCommandBuffer> buffers);
-
- //TODO:
- //Promise<undefined> onSubmittedWorkDone();
-
- [Throws]
- undefined writeBuffer(
- GPUBuffer buffer,
- GPUSize64 bufferOffset,
- BufferSource data,
- optional GPUSize64 dataOffset = 0,
- optional GPUSize64 size);
-
- [Throws]
- undefined writeTexture(
- GPUImageCopyTexture destination,
- BufferSource data,
- GPUImageDataLayout dataLayout,
- GPUExtent3D size);
-
- //[Throws]
- //undefined copyExternalImageToTexture(
- // GPUImageCopyExternalImage source,
- // GPUImageCopyTextureTagged destination,
- // GPUExtent3D copySize);
-};
-GPUQueue includes GPUObjectBase;
diff --git a/components/script/dom/webidls/GPURenderBundle.webidl b/components/script/dom/webidls/GPURenderBundle.webidl
deleted file mode 100644
index 52a8e5b0bc8..00000000000
--- a/components/script/dom/webidls/GPURenderBundle.webidl
+++ /dev/null
@@ -1,12 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpurenderbundle
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPURenderBundle {
-};
-GPURenderBundle includes GPUObjectBase;
-
-dictionary GPURenderBundleDescriptor : GPUObjectDescriptorBase {
-};
diff --git a/components/script/dom/webidls/GPURenderBundleEncoder.webidl b/components/script/dom/webidls/GPURenderBundleEncoder.webidl
deleted file mode 100644
index cc65f37b818..00000000000
--- a/components/script/dom/webidls/GPURenderBundleEncoder.webidl
+++ /dev/null
@@ -1,17 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpurenderbundleencoder
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPURenderBundleEncoder {
- GPURenderBundle finish(optional GPURenderBundleDescriptor descriptor = {});
-};
-GPURenderBundleEncoder includes GPUObjectBase;
-GPURenderBundleEncoder includes GPUProgrammablePassEncoder;
-GPURenderBundleEncoder includes GPURenderEncoderBase;
-
-dictionary GPURenderBundleEncoderDescriptor : GPURenderPassLayout {
- boolean depthReadOnly = false;
- boolean stencilReadOnly = false;
-};
diff --git a/components/script/dom/webidls/GPURenderEncoderBase.webidl b/components/script/dom/webidls/GPURenderEncoderBase.webidl
deleted file mode 100644
index f4bdc5609e5..00000000000
--- a/components/script/dom/webidls/GPURenderEncoderBase.webidl
+++ /dev/null
@@ -1,35 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpurendercommandsmixin
-[Exposed=(Window, DedicatedWorker)]
-interface mixin GPURenderEncoderBase {
- undefined setPipeline(GPURenderPipeline pipeline);
-
- undefined setIndexBuffer(GPUBuffer buffer,
- GPUIndexFormat indexFormat,
- optional GPUSize64 offset = 0,
- optional GPUSize64 size = 0);
- undefined setVertexBuffer(GPUIndex32 slot,
- GPUBuffer buffer,
- optional GPUSize64 offset = 0,
- optional GPUSize64 size = 0);
-
- undefined draw(GPUSize32 vertexCount,
- optional GPUSize32 instanceCount = 1,
- optional GPUSize32 firstVertex = 0,
- optional GPUSize32 firstInstance = 0);
- undefined drawIndexed(GPUSize32 indexCount,
- optional GPUSize32 instanceCount = 1,
- optional GPUSize32 firstIndex = 0,
- optional GPUSignedOffset32 baseVertex = 0,
- optional GPUSize32 firstInstance = 0);
-
- //[Pref="dom.webgpu.indirect-dispatch.enabled"]
- undefined drawIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset);
- //[Pref="dom.webgpu.indirect-dispatch.enabled"]
- undefined drawIndexedIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset);
-};
-
-typedef [EnforceRange] long GPUSignedOffset32;
diff --git a/components/script/dom/webidls/GPURenderPassEncoder.webidl b/components/script/dom/webidls/GPURenderPassEncoder.webidl
deleted file mode 100644
index 27764df5624..00000000000
--- a/components/script/dom/webidls/GPURenderPassEncoder.webidl
+++ /dev/null
@@ -1,33 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpurenderpassencoder
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPURenderPassEncoder {
- undefined setViewport(float x, float y,
- float width, float height,
- float minDepth, float maxDepth);
-
- undefined setScissorRect(GPUIntegerCoordinate x, GPUIntegerCoordinate y,
- GPUIntegerCoordinate width, GPUIntegerCoordinate height);
-
- undefined setBlendConstant(GPUColor color);
- undefined setStencilReference(GPUStencilValue reference);
-
- //undefined beginOcclusionQuery(GPUSize32 queryIndex);
- //undefined endOcclusionQuery();
-
- //undefined beginPipelineStatisticsQuery(GPUQuerySet querySet, GPUSize32 queryIndex);
- //undefined endPipelineStatisticsQuery();
-
- //undefined writeTimestamp(GPUQuerySet querySet, GPUSize32 queryIndex);
-
- undefined executeBundles(sequence<GPURenderBundle> bundles);
-
- [Throws]
- undefined end();
-};
-GPURenderPassEncoder includes GPUObjectBase;
-GPURenderPassEncoder includes GPUProgrammablePassEncoder;
-GPURenderPassEncoder includes GPURenderEncoderBase;
diff --git a/components/script/dom/webidls/GPURenderPipeline.webidl b/components/script/dom/webidls/GPURenderPipeline.webidl
deleted file mode 100644
index 1d654a4814e..00000000000
--- a/components/script/dom/webidls/GPURenderPipeline.webidl
+++ /dev/null
@@ -1,196 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpurenderpipeline
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPURenderPipeline {
-};
-GPURenderPipeline includes GPUObjectBase;
-GPURenderPipeline includes GPUPipelineBase;
-
-dictionary GPURenderPipelineDescriptor : GPUPipelineDescriptorBase {
- required GPUVertexState vertex;
- GPUPrimitiveState primitive = {};
- GPUDepthStencilState depthStencil;
- GPUMultisampleState multisample = {};
- GPUFragmentState fragment;
-};
-
-dictionary GPUPrimitiveState {
- GPUPrimitiveTopology topology = "triangle-list";
- GPUIndexFormat stripIndexFormat;
- GPUFrontFace frontFace = "ccw";
- GPUCullMode cullMode = "none";
- // Enable depth clamping (requires "depth-clamping" feature)
- boolean clampDepth = false;
-};
-
-enum GPUPrimitiveTopology {
- "point-list",
- "line-list",
- "line-strip",
- "triangle-list",
- "triangle-strip"
-};
-
-enum GPUFrontFace {
- "ccw",
- "cw"
-};
-
-enum GPUCullMode {
- "none",
- "front",
- "back"
-};
-
-dictionary GPUMultisampleState {
- GPUSize32 count = 1;
- GPUSampleMask mask = 0xFFFFFFFF;
- boolean alphaToCoverageEnabled = false;
-};
-
-dictionary GPUFragmentState: GPUProgrammableStage {
- required sequence<GPUColorTargetState> targets;
-};
-
-dictionary GPUColorTargetState {
- required GPUTextureFormat format;
- GPUBlendState blend;
- GPUColorWriteFlags writeMask = 0xF; // GPUColorWrite.ALL
-};
-
-dictionary GPUBlendState {
- required GPUBlendComponent color;
- required GPUBlendComponent alpha;
-};
-
-typedef [EnforceRange] unsigned long GPUSampleMask;
-typedef [EnforceRange] long GPUDepthBias;
-
-dictionary GPUBlendComponent {
- GPUBlendFactor srcFactor = "one";
- GPUBlendFactor dstFactor = "zero";
- GPUBlendOperation operation = "add";
-};
-
-enum GPUBlendFactor {
- "zero",
- "one",
- "src",
- "one-minus-src",
- "src-alpha",
- "one-minus-src-alpha",
- "dst",
- "one-minus-dst",
- "dst-alpha",
- "one-minus-dst-alpha",
- "src-alpha-saturated",
- "constant",
- "one-minus-constant",
-};
-
-enum GPUBlendOperation {
- "add",
- "subtract",
- "reverse-subtract",
- "min",
- "max"
-};
-
-dictionary GPUDepthStencilState {
- required GPUTextureFormat format;
-
- boolean depthWriteEnabled = false;
- GPUCompareFunction depthCompare = "always";
-
- GPUStencilFaceState stencilFront = {};
- GPUStencilFaceState stencilBack = {};
-
- GPUStencilValue stencilReadMask = 0xFFFFFFFF;
- GPUStencilValue stencilWriteMask = 0xFFFFFFFF;
-
- GPUDepthBias depthBias = 0;
- float depthBiasSlopeScale = 0;
- float depthBiasClamp = 0;
-};
-
-dictionary GPUStencilFaceState {
- GPUCompareFunction compare = "always";
- GPUStencilOperation failOp = "keep";
- GPUStencilOperation depthFailOp = "keep";
- GPUStencilOperation passOp = "keep";
-};
-
-enum GPUStencilOperation {
- "keep",
- "zero",
- "replace",
- "invert",
- "increment-clamp",
- "decrement-clamp",
- "increment-wrap",
- "decrement-wrap"
-};
-
-enum GPUIndexFormat {
- "uint16",
- "uint32",
-};
-
-typedef [EnforceRange] unsigned long GPUStencilValue;
-
-enum GPUVertexFormat {
- "uint8x2",
- "uint8x4",
- "sint8x2",
- "sint8x4",
- "unorm8x2",
- "unorm8x4",
- "snorm8x2",
- "snorm8x4",
- "uint16x2",
- "uint16x4",
- "sint16x2",
- "sint16x4",
- "unorm16x2",
- "unorm16x4",
- "snorm16x2",
- "snorm16x4",
- "float16x2",
- "float16x4",
- "float32",
- "float32x2",
- "float32x3",
- "float32x4",
- "uint32",
- "uint32x2",
- "uint32x3",
- "uint32x4",
- "sint32",
- "sint32x2",
- "sint32x3",
- "sint32x4",
-};
-
-enum GPUVertexStepMode {
- "vertex",
- "instance",
-};
-
-dictionary GPUVertexState: GPUProgrammableStage {
- sequence<GPUVertexBufferLayout?> buffers = [];
-};
-
-dictionary GPUVertexBufferLayout {
- required GPUSize64 arrayStride;
- GPUVertexStepMode stepMode = "vertex";
- required sequence<GPUVertexAttribute> attributes;
-};
-
-dictionary GPUVertexAttribute {
- required GPUVertexFormat format;
- required GPUSize64 offset;
- required GPUIndex32 shaderLocation;
-};
diff --git a/components/script/dom/webidls/GPUSampler.webidl b/components/script/dom/webidls/GPUSampler.webidl
deleted file mode 100644
index 5220acc1f76..00000000000
--- a/components/script/dom/webidls/GPUSampler.webidl
+++ /dev/null
@@ -1,44 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpusampler
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUSampler {
-};
-GPUSampler includes GPUObjectBase;
-
-dictionary GPUSamplerDescriptor : GPUObjectDescriptorBase {
- GPUAddressMode addressModeU = "clamp-to-edge";
- GPUAddressMode addressModeV = "clamp-to-edge";
- GPUAddressMode addressModeW = "clamp-to-edge";
- GPUFilterMode magFilter = "nearest";
- GPUFilterMode minFilter = "nearest";
- GPUFilterMode mipmapFilter = "nearest";
- float lodMinClamp = 0;
- float lodMaxClamp = 1000.0; // TODO: What should this be?
- GPUCompareFunction compare;
- [Clamp] unsigned short maxAnisotropy = 1;
-};
-
-enum GPUAddressMode {
- "clamp-to-edge",
- "repeat",
- "mirror-repeat"
-};
-
-enum GPUFilterMode {
- "nearest",
- "linear",
-};
-
-enum GPUCompareFunction {
- "never",
- "less",
- "equal",
- "less-equal",
- "greater",
- "not-equal",
- "greater-equal",
- "always"
-};
diff --git a/components/script/dom/webidls/GPUShaderModule.webidl b/components/script/dom/webidls/GPUShaderModule.webidl
deleted file mode 100644
index 8ce90180463..00000000000
--- a/components/script/dom/webidls/GPUShaderModule.webidl
+++ /dev/null
@@ -1,17 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpushadermodule
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPUShaderModule {
- [Throws]
- Promise<GPUCompilationInfo> compilationInfo();
-};
-GPUShaderModule includes GPUObjectBase;
-
-dictionary GPUShaderModuleDescriptor : GPUObjectDescriptorBase {
- // UTF8String is not observably different from USVString
- required USVString code;
- object sourceMap;
-};
diff --git a/components/script/dom/webidls/GPUShaderStage.webidl b/components/script/dom/webidls/GPUShaderStage.webidl
deleted file mode 100644
index 8ba66ef10bc..00000000000
--- a/components/script/dom/webidls/GPUShaderStage.webidl
+++ /dev/null
@@ -1,13 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#typedefdef-gpushaderstageflags
-[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
-interface GPUShaderStage {
- const GPUShaderStageFlags VERTEX = 1;
- const GPUShaderStageFlags FRAGMENT = 2;
- const GPUShaderStageFlags COMPUTE = 4;
-};
-
-typedef [EnforceRange] unsigned long GPUShaderStageFlags;
diff --git a/components/script/dom/webidls/GPUSupportedFeatures.webidl b/components/script/dom/webidls/GPUSupportedFeatures.webidl
deleted file mode 100644
index e0adcc047af..00000000000
--- a/components/script/dom/webidls/GPUSupportedFeatures.webidl
+++ /dev/null
@@ -1,9 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpusupportedfeatures
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUSupportedFeatures {
- readonly setlike<DOMString>;
-};
diff --git a/components/script/dom/webidls/GPUSupportedLimits.webidl b/components/script/dom/webidls/GPUSupportedLimits.webidl
deleted file mode 100644
index 2394f40eca0..00000000000
--- a/components/script/dom/webidls/GPUSupportedLimits.webidl
+++ /dev/null
@@ -1,40 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpusupportedlimits
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUSupportedLimits {
- readonly attribute unsigned long maxTextureDimension1D;
- readonly attribute unsigned long maxTextureDimension2D;
- readonly attribute unsigned long maxTextureDimension3D;
- readonly attribute unsigned long maxTextureArrayLayers;
- readonly attribute unsigned long maxBindGroups;
- //readonly attribute unsigned long maxBindGroupsPlusVertexBuffers;
- readonly attribute unsigned long maxBindingsPerBindGroup;
- readonly attribute unsigned long maxDynamicUniformBuffersPerPipelineLayout;
- readonly attribute unsigned long maxDynamicStorageBuffersPerPipelineLayout;
- readonly attribute unsigned long maxSampledTexturesPerShaderStage;
- readonly attribute unsigned long maxSamplersPerShaderStage;
- readonly attribute unsigned long maxStorageBuffersPerShaderStage;
- readonly attribute unsigned long maxStorageTexturesPerShaderStage;
- readonly attribute unsigned long maxUniformBuffersPerShaderStage;
- readonly attribute unsigned long long maxUniformBufferBindingSize;
- readonly attribute unsigned long long maxStorageBufferBindingSize;
- readonly attribute unsigned long minUniformBufferOffsetAlignment;
- readonly attribute unsigned long minStorageBufferOffsetAlignment;
- readonly attribute unsigned long maxVertexBuffers;
- readonly attribute unsigned long long maxBufferSize;
- readonly attribute unsigned long maxVertexAttributes;
- readonly attribute unsigned long maxVertexBufferArrayStride;
- readonly attribute unsigned long maxInterStageShaderComponents;
- //readonly attribute unsigned long maxInterStageShaderVariables;
- //readonly attribute unsigned long maxColorAttachments;
- //readonly attribute unsigned long maxColorAttachmentBytesPerSample;
- readonly attribute unsigned long maxComputeWorkgroupStorageSize;
- readonly attribute unsigned long maxComputeInvocationsPerWorkgroup;
- readonly attribute unsigned long maxComputeWorkgroupSizeX;
- readonly attribute unsigned long maxComputeWorkgroupSizeY;
- readonly attribute unsigned long maxComputeWorkgroupSizeZ;
- readonly attribute unsigned long maxComputeWorkgroupsPerDimension;
-};
diff --git a/components/script/dom/webidls/GPUTexture.webidl b/components/script/dom/webidls/GPUTexture.webidl
deleted file mode 100644
index 0448bbdb096..00000000000
--- a/components/script/dom/webidls/GPUTexture.webidl
+++ /dev/null
@@ -1,116 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gputexture
-[Exposed=(Window, DedicatedWorker), Serializable , Pref="dom.webgpu.enabled"]
-interface GPUTexture {
- [NewObject]
- GPUTextureView createView(optional GPUTextureViewDescriptor descriptor = {});
-
- undefined destroy();
-};
-GPUTexture includes GPUObjectBase;
-
-dictionary GPUTextureDescriptor : GPUObjectDescriptorBase {
- required GPUExtent3D size;
- GPUIntegerCoordinate mipLevelCount = 1;
- GPUSize32 sampleCount = 1;
- GPUTextureDimension dimension = "2d";
- required GPUTextureFormat format;
- required GPUTextureUsageFlags usage;
- sequence<GPUTextureFormat> viewFormats = [];
-};
-
-enum GPUTextureDimension {
- "1d",
- "2d",
- "3d",
-};
-
-enum GPUTextureFormat {
- // 8-bit formats
- "r8unorm",
- "r8snorm",
- "r8uint",
- "r8sint",
-
- // 16-bit formats
- "r16uint",
- "r16sint",
- "r16float",
- "rg8unorm",
- "rg8snorm",
- "rg8uint",
- "rg8sint",
-
- // 32-bit formats
- "r32uint",
- "r32sint",
- "r32float",
- "rg16uint",
- "rg16sint",
- "rg16float",
- "rgba8unorm",
- "rgba8unorm-srgb",
- "rgba8snorm",
- "rgba8uint",
- "rgba8sint",
- "bgra8unorm",
- "bgra8unorm-srgb",
- // Packed 32-bit formats
- "rgb10a2unorm",
- "rg11b10float",
-
- // 64-bit formats
- "rg32uint",
- "rg32sint",
- "rg32float",
- "rgba16uint",
- "rgba16sint",
- "rgba16float",
-
- // 128-bit formats
- "rgba32uint",
- "rgba32sint",
- "rgba32float",
-
- // Depth and stencil formats
- //"stencil8", //TODO
- //"depth16unorm",
- "depth24plus",
- "depth24plus-stencil8",
- "depth32float",
-
- // BC compressed formats usable if "texture-compression-bc" is both
- // supported by the device/user agent and enabled in requestDevice.
- "bc1-rgba-unorm",
- "bc1-rgba-unorm-srgb",
- "bc2-rgba-unorm",
- "bc2-rgba-unorm-srgb",
- "bc3-rgba-unorm",
- "bc3-rgba-unorm-srgb",
- "bc4-r-unorm",
- "bc4-r-snorm",
- "bc5-rg-unorm",
- "bc5-rg-snorm",
- "bc6h-rgb-ufloat",
- "bc6h-rgb-float",
- "bc7-rgba-unorm",
- "bc7-rgba-unorm-srgb",
-
- // "depth24unorm-stencil8" feature
- //"depth24unorm-stencil8",
-
- // "depth32float-stencil8" feature
- //"depth32float-stencil8",
-};
-
-typedef [EnforceRange] unsigned long GPUIntegerCoordinate;
-
-dictionary GPUExtent3DDict {
- required GPUIntegerCoordinate width;
- GPUIntegerCoordinate height = 1;
- GPUIntegerCoordinate depthOrArrayLayers = 1;
-};
-typedef (sequence<GPUIntegerCoordinate> or GPUExtent3DDict) GPUExtent3D;
diff --git a/components/script/dom/webidls/GPUTextureUsage.webidl b/components/script/dom/webidls/GPUTextureUsage.webidl
deleted file mode 100644
index 9ff666dff41..00000000000
--- a/components/script/dom/webidls/GPUTextureUsage.webidl
+++ /dev/null
@@ -1,15 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#typedefdef-gputextureusageflags
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUTextureUsage {
- const GPUTextureUsageFlags COPY_SRC = 0x01;
- const GPUTextureUsageFlags COPY_DST = 0x02;
- const GPUTextureUsageFlags TEXTURE_BINDING = 0x04;
- const GPUTextureUsageFlags STORAGE_BINDING = 0x08;
- const GPUTextureUsageFlags RENDER_ATTACHMENT = 0x10;
-};
-
-typedef [EnforceRange] unsigned long GPUTextureUsageFlags;
diff --git a/components/script/dom/webidls/GPUTextureView.webidl b/components/script/dom/webidls/GPUTextureView.webidl
deleted file mode 100644
index f6b8b7d1317..00000000000
--- a/components/script/dom/webidls/GPUTextureView.webidl
+++ /dev/null
@@ -1,34 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gputextureview
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUTextureView {
-};
-GPUTextureView includes GPUObjectBase;
-
-dictionary GPUTextureViewDescriptor : GPUObjectDescriptorBase {
- GPUTextureFormat format;
- GPUTextureViewDimension dimension;
- GPUTextureAspect aspect = "all";
- GPUIntegerCoordinate baseMipLevel = 0;
- GPUIntegerCoordinate mipLevelCount;
- GPUIntegerCoordinate baseArrayLayer = 0;
- GPUIntegerCoordinate arrayLayerCount;
-};
-
-enum GPUTextureViewDimension {
- "1d",
- "2d",
- "2d-array",
- "cube",
- "cube-array",
- "3d"
-};
-
-enum GPUTextureAspect {
- "all",
- "stencil-only",
- "depth-only"
-};
diff --git a/components/script/dom/webidls/GPUUncapturedErrorEvent.webidl b/components/script/dom/webidls/GPUUncapturedErrorEvent.webidl
deleted file mode 100644
index 565c72ef9be..00000000000
--- a/components/script/dom/webidls/GPUUncapturedErrorEvent.webidl
+++ /dev/null
@@ -1,22 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpuuncapturederrorevent
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUUncapturedErrorEvent : Event {
- constructor(
- DOMString type,
- GPUUncapturedErrorEventInit gpuUncapturedErrorEventInitDict
- );
- /*[SameObject]*/ readonly attribute GPUError error;
-};
-
-dictionary GPUUncapturedErrorEventInit : EventInit {
- required GPUError error;
-};
-
-partial interface GPUDevice {
- [Exposed=(Window, DedicatedWorker)]
- attribute EventHandler onuncapturederror;
-};
diff --git a/components/script/dom/webidls/GPUValidationError.webidl b/components/script/dom/webidls/GPUValidationError.webidl
deleted file mode 100644
index e4c1249e311..00000000000
--- a/components/script/dom/webidls/GPUValidationError.webidl
+++ /dev/null
@@ -1,24 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-// https://gpuweb.github.io/gpuweb/#gpuvalidationerror
-[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
-interface GPUValidationError {
- [Throws]
- constructor(DOMString message);
- readonly attribute DOMString message;
-};
-
-typedef (GPUOutOfMemoryError or GPUValidationError) GPUError;
-
-enum GPUErrorFilter {
- "out-of-memory",
- "validation"
-};
-
-partial interface GPUDevice {
- undefined pushErrorScope(GPUErrorFilter filter);
- [NewObject]
- Promise<GPUError?> popErrorScope();
-};
diff --git a/components/script/dom/webidls/Navigator.webidl b/components/script/dom/webidls/Navigator.webidl
index 4ebb5ad20be..bb9a0e77564 100644
--- a/components/script/dom/webidls/Navigator.webidl
+++ b/components/script/dom/webidls/Navigator.webidl
@@ -14,6 +14,7 @@ Navigator includes NavigatorLanguage;
//Navigator includes NavigatorStorageUtils;
Navigator includes NavigatorPlugins;
Navigator includes NavigatorCookies;
+Navigator includes NavigatorGPU;
// https://html.spec.whatwg.org/multipage/#navigatorid
[Exposed=(Window,Worker)]
@@ -69,8 +70,3 @@ partial interface Navigator {
partial interface Navigator {
[Pref="dom.gamepad.enabled"] GamepadList getGamepads();
};
-
-[Exposed=Window]
-partial interface Navigator {
- [SameObject, Pref="dom.webgpu.enabled"] readonly attribute GPU gpu;
-};
diff --git a/components/script/dom/webidls/WebGPU.webidl b/components/script/dom/webidls/WebGPU.webidl
new file mode 100644
index 00000000000..78cf829ef04
--- /dev/null
+++ b/components/script/dom/webidls/WebGPU.webidl
@@ -0,0 +1,1170 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+
+// Source: WebGPU (https://gpuweb.github.io/gpuweb/)
+// Direct source: https://github.com/w3c/webref/blob/curated/ed/idl/webgpu.idl
+
+[Exposed=(Window)]
+interface mixin GPUObjectBase {
+ attribute USVString label;
+};
+
+dictionary GPUObjectDescriptorBase {
+ USVString label;
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUSupportedLimits {
+ readonly attribute unsigned long maxTextureDimension1D;
+ readonly attribute unsigned long maxTextureDimension2D;
+ readonly attribute unsigned long maxTextureDimension3D;
+ readonly attribute unsigned long maxTextureArrayLayers;
+ readonly attribute unsigned long maxBindGroups;
+ //readonly attribute unsigned long maxBindGroupsPlusVertexBuffers;
+ readonly attribute unsigned long maxBindingsPerBindGroup;
+ readonly attribute unsigned long maxDynamicUniformBuffersPerPipelineLayout;
+ readonly attribute unsigned long maxDynamicStorageBuffersPerPipelineLayout;
+ readonly attribute unsigned long maxSampledTexturesPerShaderStage;
+ readonly attribute unsigned long maxSamplersPerShaderStage;
+ readonly attribute unsigned long maxStorageBuffersPerShaderStage;
+ readonly attribute unsigned long maxStorageTexturesPerShaderStage;
+ readonly attribute unsigned long maxUniformBuffersPerShaderStage;
+ readonly attribute unsigned long long maxUniformBufferBindingSize;
+ readonly attribute unsigned long long maxStorageBufferBindingSize;
+ readonly attribute unsigned long minUniformBufferOffsetAlignment;
+ readonly attribute unsigned long minStorageBufferOffsetAlignment;
+ readonly attribute unsigned long maxVertexBuffers;
+ readonly attribute unsigned long long maxBufferSize;
+ readonly attribute unsigned long maxVertexAttributes;
+ readonly attribute unsigned long maxVertexBufferArrayStride;
+ readonly attribute unsigned long maxInterStageShaderComponents;
+ //readonly attribute unsigned long maxInterStageShaderVariables;
+ //readonly attribute unsigned long maxColorAttachments;
+ //readonly attribute unsigned long maxColorAttachmentBytesPerSample;
+ readonly attribute unsigned long maxComputeWorkgroupStorageSize;
+ readonly attribute unsigned long maxComputeInvocationsPerWorkgroup;
+ readonly attribute unsigned long maxComputeWorkgroupSizeX;
+ readonly attribute unsigned long maxComputeWorkgroupSizeY;
+ readonly attribute unsigned long maxComputeWorkgroupSizeZ;
+ readonly attribute unsigned long maxComputeWorkgroupsPerDimension;
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUSupportedFeatures {
+ readonly setlike<DOMString>;
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUAdapterInfo {
+ readonly attribute DOMString vendor;
+ readonly attribute DOMString architecture;
+ readonly attribute DOMString device;
+ readonly attribute DOMString description;
+};
+
+interface mixin NavigatorGPU {
+ [SameObject, Pref="dom.webgpu.enabled", Exposed=(Window /* ,DedicatedWorker */)] readonly attribute GPU gpu;
+};
+// NOTE: see `Navigator.webidl`
+// Navigator includes NavigatorGPU;
+// NOTE: see `WorkerNavigator.webidl`
+// WorkerNavigator includes NavigatorGPU;
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPU {
+ [NewObject]
+ Promise<GPUAdapter?> requestAdapter(optional GPURequestAdapterOptions options = {});
+ GPUTextureFormat getPreferredCanvasFormat();
+};
+
+dictionary GPURequestAdapterOptions {
+ GPUPowerPreference powerPreference;
+ boolean forceFallbackAdapter = false;
+};
+
+enum GPUPowerPreference {
+ "low-power",
+ "high-performance"
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUAdapter {
+ [SameObject] readonly attribute GPUSupportedFeatures features;
+ [SameObject] readonly attribute GPUSupportedLimits limits;
+ readonly attribute boolean isFallbackAdapter;
+
+ [NewObject]
+ Promise<GPUDevice> requestDevice(optional GPUDeviceDescriptor descriptor = {});
+ [NewObject]
+ Promise<GPUAdapterInfo> requestAdapterInfo(optional sequence<DOMString> unmaskHints = []);
+};
+
+dictionary GPUDeviceDescriptor {
+ sequence<GPUFeatureName> requiredFeatures = [];
+ record<DOMString, GPUSize64> requiredLimits;
+};
+
+enum GPUFeatureName {
+ "depth-clip-control",
+ "depth24unorm-stencil8",
+ "depth32float-stencil8",
+ "pipeline-statistics-query",
+ "texture-compression-bc",
+ "texture-compression-etc2",
+ "texture-compression-astc",
+ "timestamp-query",
+ "indirect-first-instance",
+};
+
+[Exposed=(Window, DedicatedWorker), /*Serializable,*/ Pref="dom.webgpu.enabled"]
+interface GPUDevice: EventTarget {
+ [SameObject] readonly attribute GPUSupportedFeatures features;
+ [SameObject] readonly attribute GPUSupportedLimits limits;
+
+ // Overriding the name to avoid collision with `class Queue` in gcc
+ [SameObject, BinaryName="getQueue"] readonly attribute GPUQueue queue;
+
+ undefined destroy();
+
+ [NewObject, Throws]
+ GPUBuffer createBuffer(GPUBufferDescriptor descriptor);
+ [NewObject]
+ GPUTexture createTexture(GPUTextureDescriptor descriptor);
+ [NewObject]
+ GPUSampler createSampler(optional GPUSamplerDescriptor descriptor = {});
+
+ GPUBindGroupLayout createBindGroupLayout(GPUBindGroupLayoutDescriptor descriptor);
+ GPUPipelineLayout createPipelineLayout(GPUPipelineLayoutDescriptor descriptor);
+ GPUBindGroup createBindGroup(GPUBindGroupDescriptor descriptor);
+
+ GPUShaderModule createShaderModule(GPUShaderModuleDescriptor descriptor);
+ GPUComputePipeline createComputePipeline(GPUComputePipelineDescriptor descriptor);
+ GPURenderPipeline createRenderPipeline(GPURenderPipelineDescriptor descriptor);
+
+ [NewObject]
+ Promise<GPUComputePipeline> createComputePipelineAsync(GPUComputePipelineDescriptor descriptor);
+ [NewObject]
+ Promise<GPURenderPipeline> createRenderPipelineAsync(GPURenderPipelineDescriptor descriptor);
+
+ [NewObject]
+ GPUCommandEncoder createCommandEncoder(optional GPUCommandEncoderDescriptor descriptor = {});
+ [NewObject]
+ GPURenderBundleEncoder createRenderBundleEncoder(GPURenderBundleEncoderDescriptor descriptor);
+ //[NewObject]
+ //GPUQuerySet createQuerySet(GPUQuerySetDescriptor descriptor);
+};
+GPUDevice includes GPUObjectBase;
+
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPUBuffer {
+ [NewObject]
+ Promise<undefined> mapAsync(GPUMapModeFlags mode, optional GPUSize64 offset = 0, optional GPUSize64 size);
+ [NewObject, Throws]
+ ArrayBuffer getMappedRange(optional GPUSize64 offset = 0, optional GPUSize64 size);
+ [Throws]
+ undefined unmap();
+ [Throws]
+ undefined destroy();
+};
+GPUBuffer includes GPUObjectBase;
+
+dictionary GPUBufferDescriptor : GPUObjectDescriptorBase {
+ required GPUSize64 size;
+ required GPUBufferUsageFlags usage;
+ boolean mappedAtCreation = false;
+};
+
+typedef [EnforceRange] unsigned long GPUBufferUsageFlags;
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUBufferUsage {
+ const GPUBufferUsageFlags MAP_READ = 0x0001;
+ const GPUBufferUsageFlags MAP_WRITE = 0x0002;
+ const GPUBufferUsageFlags COPY_SRC = 0x0004;
+ const GPUBufferUsageFlags COPY_DST = 0x0008;
+ const GPUBufferUsageFlags INDEX = 0x0010;
+ const GPUBufferUsageFlags VERTEX = 0x0020;
+ const GPUBufferUsageFlags UNIFORM = 0x0040;
+ const GPUBufferUsageFlags STORAGE = 0x0080;
+ const GPUBufferUsageFlags INDIRECT = 0x0100;
+ const GPUBufferUsageFlags QUERY_RESOLVE = 0x0200;
+};
+
+typedef [EnforceRange] unsigned long GPUMapModeFlags;
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUMapMode {
+ const GPUMapModeFlags READ = 0x0001;
+ const GPUMapModeFlags WRITE = 0x0002;
+};
+
+[Exposed=(Window, DedicatedWorker), Serializable , Pref="dom.webgpu.enabled"]
+interface GPUTexture {
+ [NewObject]
+ GPUTextureView createView(optional GPUTextureViewDescriptor descriptor = {});
+
+ undefined destroy();
+};
+GPUTexture includes GPUObjectBase;
+
+dictionary GPUTextureDescriptor : GPUObjectDescriptorBase {
+ required GPUExtent3D size;
+ GPUIntegerCoordinate mipLevelCount = 1;
+ GPUSize32 sampleCount = 1;
+ GPUTextureDimension dimension = "2d";
+ required GPUTextureFormat format;
+ required GPUTextureUsageFlags usage;
+ sequence<GPUTextureFormat> viewFormats = [];
+};
+
+enum GPUTextureDimension {
+ "1d",
+ "2d",
+ "3d",
+};
+
+typedef [EnforceRange] unsigned long GPUTextureUsageFlags;
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUTextureUsage {
+ const GPUTextureUsageFlags COPY_SRC = 0x01;
+ const GPUTextureUsageFlags COPY_DST = 0x02;
+ const GPUTextureUsageFlags TEXTURE_BINDING = 0x04;
+ const GPUTextureUsageFlags STORAGE_BINDING = 0x08;
+ const GPUTextureUsageFlags RENDER_ATTACHMENT = 0x10;
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUTextureView {
+};
+GPUTextureView includes GPUObjectBase;
+
+dictionary GPUTextureViewDescriptor : GPUObjectDescriptorBase {
+ GPUTextureFormat format;
+ GPUTextureViewDimension dimension;
+ GPUTextureAspect aspect = "all";
+ GPUIntegerCoordinate baseMipLevel = 0;
+ GPUIntegerCoordinate mipLevelCount;
+ GPUIntegerCoordinate baseArrayLayer = 0;
+ GPUIntegerCoordinate arrayLayerCount;
+};
+
+enum GPUTextureViewDimension {
+ "1d",
+ "2d",
+ "2d-array",
+ "cube",
+ "cube-array",
+ "3d"
+};
+
+enum GPUTextureAspect {
+ "all",
+ "stencil-only",
+ "depth-only"
+};
+
+enum GPUTextureFormat {
+ // 8-bit formats
+ "r8unorm",
+ "r8snorm",
+ "r8uint",
+ "r8sint",
+
+ // 16-bit formats
+ "r16uint",
+ "r16sint",
+ "r16float",
+ "rg8unorm",
+ "rg8snorm",
+ "rg8uint",
+ "rg8sint",
+
+ // 32-bit formats
+ "r32uint",
+ "r32sint",
+ "r32float",
+ "rg16uint",
+ "rg16sint",
+ "rg16float",
+ "rgba8unorm",
+ "rgba8unorm-srgb",
+ "rgba8snorm",
+ "rgba8uint",
+ "rgba8sint",
+ "bgra8unorm",
+ "bgra8unorm-srgb",
+ // Packed 32-bit formats
+ "rgb10a2unorm",
+ "rg11b10float",
+
+ // 64-bit formats
+ "rg32uint",
+ "rg32sint",
+ "rg32float",
+ "rgba16uint",
+ "rgba16sint",
+ "rgba16float",
+
+ // 128-bit formats
+ "rgba32uint",
+ "rgba32sint",
+ "rgba32float",
+
+ // Depth and stencil formats
+ //"stencil8", //TODO
+ //"depth16unorm",
+ "depth24plus",
+ "depth24plus-stencil8",
+ "depth32float",
+
+ // BC compressed formats usable if "texture-compression-bc" is both
+ // supported by the device/user agent and enabled in requestDevice.
+ "bc1-rgba-unorm",
+ "bc1-rgba-unorm-srgb",
+ "bc2-rgba-unorm",
+ "bc2-rgba-unorm-srgb",
+ "bc3-rgba-unorm",
+ "bc3-rgba-unorm-srgb",
+ "bc4-r-unorm",
+ "bc4-r-snorm",
+ "bc5-rg-unorm",
+ "bc5-rg-snorm",
+ "bc6h-rgb-ufloat",
+ "bc6h-rgb-float",
+ "bc7-rgba-unorm",
+ "bc7-rgba-unorm-srgb",
+
+ // "depth24unorm-stencil8" feature
+ //"depth24unorm-stencil8",
+
+ // "depth32float-stencil8" feature
+ //"depth32float-stencil8",
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUSampler {
+};
+GPUSampler includes GPUObjectBase;
+
+dictionary GPUSamplerDescriptor : GPUObjectDescriptorBase {
+ GPUAddressMode addressModeU = "clamp-to-edge";
+ GPUAddressMode addressModeV = "clamp-to-edge";
+ GPUAddressMode addressModeW = "clamp-to-edge";
+ GPUFilterMode magFilter = "nearest";
+ GPUFilterMode minFilter = "nearest";
+ GPUFilterMode mipmapFilter = "nearest";
+ float lodMinClamp = 0;
+ float lodMaxClamp = 1000.0; // TODO: What should this be?
+ GPUCompareFunction compare;
+ [Clamp] unsigned short maxAnisotropy = 1;
+};
+
+enum GPUAddressMode {
+ "clamp-to-edge",
+ "repeat",
+ "mirror-repeat"
+};
+
+enum GPUFilterMode {
+ "nearest",
+ "linear",
+};
+
+enum GPUCompareFunction {
+ "never",
+ "less",
+ "equal",
+ "less-equal",
+ "greater",
+ "not-equal",
+ "greater-equal",
+ "always"
+};
+
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPUBindGroupLayout {
+};
+GPUBindGroupLayout includes GPUObjectBase;
+
+dictionary GPUBindGroupLayoutDescriptor : GPUObjectDescriptorBase {
+ required sequence<GPUBindGroupLayoutEntry> entries;
+};
+
+dictionary GPUBindGroupLayoutEntry {
+ required GPUIndex32 binding;
+ required GPUShaderStageFlags visibility;
+ GPUBufferBindingLayout buffer;
+ GPUSamplerBindingLayout sampler;
+ GPUTextureBindingLayout texture;
+ GPUStorageTextureBindingLayout storageTexture;
+};
+
+typedef [EnforceRange] unsigned long GPUShaderStageFlags;
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPUShaderStage {
+ const GPUShaderStageFlags VERTEX = 1;
+ const GPUShaderStageFlags FRAGMENT = 2;
+ const GPUShaderStageFlags COMPUTE = 4;
+};
+
+enum GPUBufferBindingType {
+ "uniform",
+ "storage",
+ "read-only-storage",
+};
+
+dictionary GPUBufferBindingLayout {
+ GPUBufferBindingType type = "uniform";
+ boolean hasDynamicOffset = false;
+ GPUSize64 minBindingSize = 0;
+};
+
+enum GPUSamplerBindingType {
+ "filtering",
+ "non-filtering",
+ "comparison",
+};
+
+dictionary GPUSamplerBindingLayout {
+ GPUSamplerBindingType type = "filtering";
+};
+
+enum GPUTextureSampleType {
+ "float",
+ "unfilterable-float",
+ "depth",
+ "sint",
+ "uint",
+};
+
+dictionary GPUTextureBindingLayout {
+ GPUTextureSampleType sampleType = "float";
+ GPUTextureViewDimension viewDimension = "2d";
+ boolean multisampled = false;
+};
+
+enum GPUStorageTextureAccess {
+ "write-only",
+};
+
+dictionary GPUStorageTextureBindingLayout {
+ GPUStorageTextureAccess access = "write-only";
+ required GPUTextureFormat format;
+ GPUTextureViewDimension viewDimension = "2d";
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUBindGroup {
+};
+GPUBindGroup includes GPUObjectBase;
+
+dictionary GPUBindGroupDescriptor : GPUObjectDescriptorBase {
+ required GPUBindGroupLayout layout;
+ required sequence<GPUBindGroupEntry> entries;
+};
+
+typedef (GPUSampler or GPUTextureView or GPUBufferBinding) GPUBindingResource;
+
+dictionary GPUBindGroupEntry {
+ required GPUIndex32 binding;
+ required GPUBindingResource resource;
+};
+
+dictionary GPUBufferBinding {
+ required GPUBuffer buffer;
+ GPUSize64 offset = 0;
+ GPUSize64 size;
+};
+
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPUPipelineLayout {
+};
+GPUPipelineLayout includes GPUObjectBase;
+
+dictionary GPUPipelineLayoutDescriptor : GPUObjectDescriptorBase {
+ required sequence<GPUBindGroupLayout> bindGroupLayouts;
+};
+
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPUShaderModule {
+ [Throws]
+ Promise<GPUCompilationInfo> compilationInfo();
+};
+GPUShaderModule includes GPUObjectBase;
+
+dictionary GPUShaderModuleDescriptor : GPUObjectDescriptorBase {
+ // UTF8String is not observably different from USVString
+ required USVString code;
+ object sourceMap;
+};
+
+enum GPUCompilationMessageType {
+ "error",
+ "warning",
+ "info"
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUCompilationMessage {
+ readonly attribute DOMString message;
+ readonly attribute GPUCompilationMessageType type;
+ readonly attribute unsigned long long lineNum;
+ readonly attribute unsigned long long linePos;
+ readonly attribute unsigned long long offset;
+ readonly attribute unsigned long long length;
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUCompilationInfo {
+ // codegen hates it
+ //[Cached, Frozen, Pure]
+ readonly attribute /*sequence<GPUCompilationMessage>*/ any messages;
+};
+
+enum GPUAutoLayoutMode {
+ "auto"
+};
+
+dictionary GPUPipelineDescriptorBase : GPUObjectDescriptorBase {
+ required (GPUPipelineLayout or GPUAutoLayoutMode) layout;
+};
+
+interface mixin GPUPipelineBase {
+ [Throws] GPUBindGroupLayout getBindGroupLayout(unsigned long index);
+};
+
+dictionary GPUProgrammableStage {
+ required GPUShaderModule module;
+ required USVString entryPoint;
+};
+
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPUComputePipeline {
+};
+GPUComputePipeline includes GPUObjectBase;
+GPUComputePipeline includes GPUPipelineBase;
+
+dictionary GPUComputePipelineDescriptor : GPUPipelineDescriptorBase {
+ required GPUProgrammableStage compute;
+};
+
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPURenderPipeline {
+};
+GPURenderPipeline includes GPUObjectBase;
+GPURenderPipeline includes GPUPipelineBase;
+
+dictionary GPURenderPipelineDescriptor : GPUPipelineDescriptorBase {
+ required GPUVertexState vertex;
+ GPUPrimitiveState primitive = {};
+ GPUDepthStencilState depthStencil;
+ GPUMultisampleState multisample = {};
+ GPUFragmentState fragment;
+};
+
+dictionary GPUPrimitiveState {
+ GPUPrimitiveTopology topology = "triangle-list";
+ GPUIndexFormat stripIndexFormat;
+ GPUFrontFace frontFace = "ccw";
+ GPUCullMode cullMode = "none";
+ // Enable depth clamping (requires "depth-clamping" feature)
+ boolean clampDepth = false;
+};
+
+enum GPUPrimitiveTopology {
+ "point-list",
+ "line-list",
+ "line-strip",
+ "triangle-list",
+ "triangle-strip"
+};
+
+enum GPUFrontFace {
+ "ccw",
+ "cw"
+};
+
+enum GPUCullMode {
+ "none",
+ "front",
+ "back"
+};
+
+dictionary GPUMultisampleState {
+ GPUSize32 count = 1;
+ GPUSampleMask mask = 0xFFFFFFFF;
+ boolean alphaToCoverageEnabled = false;
+};
+
+dictionary GPUFragmentState: GPUProgrammableStage {
+ required sequence<GPUColorTargetState> targets;
+};
+
+dictionary GPUColorTargetState {
+ required GPUTextureFormat format;
+ GPUBlendState blend;
+ GPUColorWriteFlags writeMask = 0xF; // GPUColorWrite.ALL
+};
+
+dictionary GPUBlendState {
+ required GPUBlendComponent color;
+ required GPUBlendComponent alpha;
+};
+
+typedef [EnforceRange] unsigned long GPUColorWriteFlags;
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUColorWrite {
+ const GPUColorWriteFlags RED = 0x1;
+ const GPUColorWriteFlags GREEN = 0x2;
+ const GPUColorWriteFlags BLUE = 0x4;
+ const GPUColorWriteFlags ALPHA = 0x8;
+ const GPUColorWriteFlags ALL = 0xF;
+};
+
+dictionary GPUBlendComponent {
+ GPUBlendFactor srcFactor = "one";
+ GPUBlendFactor dstFactor = "zero";
+ GPUBlendOperation operation = "add";
+};
+
+enum GPUBlendFactor {
+ "zero",
+ "one",
+ "src",
+ "one-minus-src",
+ "src-alpha",
+ "one-minus-src-alpha",
+ "dst",
+ "one-minus-dst",
+ "dst-alpha",
+ "one-minus-dst-alpha",
+ "src-alpha-saturated",
+ "constant",
+ "one-minus-constant",
+};
+
+enum GPUBlendOperation {
+ "add",
+ "subtract",
+ "reverse-subtract",
+ "min",
+ "max"
+};
+
+dictionary GPUDepthStencilState {
+ required GPUTextureFormat format;
+
+ boolean depthWriteEnabled = false;
+ GPUCompareFunction depthCompare = "always";
+
+ GPUStencilFaceState stencilFront = {};
+ GPUStencilFaceState stencilBack = {};
+
+ GPUStencilValue stencilReadMask = 0xFFFFFFFF;
+ GPUStencilValue stencilWriteMask = 0xFFFFFFFF;
+
+ GPUDepthBias depthBias = 0;
+ float depthBiasSlopeScale = 0;
+ float depthBiasClamp = 0;
+};
+
+dictionary GPUStencilFaceState {
+ GPUCompareFunction compare = "always";
+ GPUStencilOperation failOp = "keep";
+ GPUStencilOperation depthFailOp = "keep";
+ GPUStencilOperation passOp = "keep";
+};
+
+enum GPUStencilOperation {
+ "keep",
+ "zero",
+ "replace",
+ "invert",
+ "increment-clamp",
+ "decrement-clamp",
+ "increment-wrap",
+ "decrement-wrap"
+};
+
+enum GPUIndexFormat {
+ "uint16",
+ "uint32",
+};
+
+enum GPUVertexFormat {
+ "uint8x2",
+ "uint8x4",
+ "sint8x2",
+ "sint8x4",
+ "unorm8x2",
+ "unorm8x4",
+ "snorm8x2",
+ "snorm8x4",
+ "uint16x2",
+ "uint16x4",
+ "sint16x2",
+ "sint16x4",
+ "unorm16x2",
+ "unorm16x4",
+ "snorm16x2",
+ "snorm16x4",
+ "float16x2",
+ "float16x4",
+ "float32",
+ "float32x2",
+ "float32x3",
+ "float32x4",
+ "uint32",
+ "uint32x2",
+ "uint32x3",
+ "uint32x4",
+ "sint32",
+ "sint32x2",
+ "sint32x3",
+ "sint32x4",
+};
+
+enum GPUVertexStepMode {
+ "vertex",
+ "instance",
+};
+
+dictionary GPUVertexState: GPUProgrammableStage {
+ sequence<GPUVertexBufferLayout?> buffers = [];
+};
+
+dictionary GPUVertexBufferLayout {
+ required GPUSize64 arrayStride;
+ GPUVertexStepMode stepMode = "vertex";
+ required sequence<GPUVertexAttribute> attributes;
+};
+
+dictionary GPUVertexAttribute {
+ required GPUVertexFormat format;
+ required GPUSize64 offset;
+ required GPUIndex32 shaderLocation;
+};
+
+dictionary GPUImageDataLayout {
+ GPUSize64 offset = 0;
+ GPUSize32 bytesPerRow;
+ GPUSize32 rowsPerImage;
+};
+
+dictionary GPUImageCopyBuffer : GPUImageDataLayout {
+ required GPUBuffer buffer;
+};
+
+dictionary GPUImageCopyTexture {
+ required GPUTexture texture;
+ GPUIntegerCoordinate mipLevel = 0;
+ GPUOrigin3D origin;
+ GPUTextureAspect aspect = "all";
+};
+
+dictionary GPUImageCopyTextureTagged : GPUImageCopyTexture {
+ //GPUPredefinedColorSpace colorSpace = "srgb"; //TODO
+ boolean premultipliedAlpha = false;
+};
+
+dictionary GPUImageCopyExternalImage {
+ required (ImageBitmap or HTMLCanvasElement or OffscreenCanvas) source;
+ GPUOrigin2D origin = {};
+ boolean flipY = false;
+};
+
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPUCommandBuffer {
+};
+GPUCommandBuffer includes GPUObjectBase;
+
+dictionary GPUCommandBufferDescriptor : GPUObjectDescriptorBase {
+};
+
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPUCommandEncoder {
+ [NewObject]
+ GPUComputePassEncoder beginComputePass(optional GPUComputePassDescriptor descriptor = {});
+ [NewObject]
+ GPURenderPassEncoder beginRenderPass(GPURenderPassDescriptor descriptor);
+
+ undefined copyBufferToBuffer(
+ GPUBuffer source,
+ GPUSize64 sourceOffset,
+ GPUBuffer destination,
+ GPUSize64 destinationOffset,
+ GPUSize64 size);
+
+ undefined copyBufferToTexture(
+ GPUImageCopyBuffer source,
+ GPUImageCopyTexture destination,
+ GPUExtent3D copySize);
+
+ undefined copyTextureToBuffer(
+ GPUImageCopyTexture source,
+ GPUImageCopyBuffer destination,
+ GPUExtent3D copySize);
+
+ undefined copyTextureToTexture(
+ GPUImageCopyTexture source,
+ GPUImageCopyTexture destination,
+ GPUExtent3D copySize);
+
+ /*
+ undefined copyImageBitmapToTexture(
+ GPUImageBitmapCopyView source,
+ GPUImageCopyTexture destination,
+ GPUExtent3D copySize);
+ */
+
+ //undefined pushDebugGroup(USVString groupLabel);
+ //undefined popDebugGroup();
+ //undefined insertDebugMarker(USVString markerLabel);
+
+ [NewObject]
+ GPUCommandBuffer finish(optional GPUCommandBufferDescriptor descriptor = {});
+};
+GPUCommandEncoder includes GPUObjectBase;
+
+dictionary GPUImageBitmapCopyView {
+ //required ImageBitmap imageBitmap; //TODO
+ GPUOrigin2D origin;
+};
+
+//TODO
+dictionary GPUCommandEncoderDescriptor : GPUObjectDescriptorBase {
+ boolean measureExecutionTime = false;
+};
+
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPUComputePassEncoder {
+ undefined setPipeline(GPUComputePipeline pipeline);
+ undefined dispatchWorkgroups(GPUSize32 x, optional GPUSize32 y = 1, optional GPUSize32 z = 1);
+ //[Pref="dom.webgpu.indirect-dispatch.enabled"]
+ undefined dispatchWorkgroupsIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset);
+
+ [Throws]
+ undefined end();
+};
+GPUComputePassEncoder includes GPUObjectBase;
+GPUComputePassEncoder includes GPUProgrammablePassEncoder;
+
+dictionary GPUComputePassDescriptor : GPUObjectDescriptorBase {
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPURenderPassEncoder {
+ undefined setViewport(float x, float y,
+ float width, float height,
+ float minDepth, float maxDepth);
+
+ undefined setScissorRect(GPUIntegerCoordinate x, GPUIntegerCoordinate y,
+ GPUIntegerCoordinate width, GPUIntegerCoordinate height);
+
+ undefined setBlendConstant(GPUColor color);
+ undefined setStencilReference(GPUStencilValue reference);
+
+ //undefined beginOcclusionQuery(GPUSize32 queryIndex);
+ //undefined endOcclusionQuery();
+
+ //undefined beginPipelineStatisticsQuery(GPUQuerySet querySet, GPUSize32 queryIndex);
+ //undefined endPipelineStatisticsQuery();
+
+ //undefined writeTimestamp(GPUQuerySet querySet, GPUSize32 queryIndex);
+
+ undefined executeBundles(sequence<GPURenderBundle> bundles);
+
+ [Throws]
+ undefined end();
+};
+GPURenderPassEncoder includes GPUObjectBase;
+GPURenderPassEncoder includes GPUProgrammablePassEncoder;
+GPURenderPassEncoder includes GPURenderEncoderBase;
+
+[Exposed=(Window, DedicatedWorker)]
+interface mixin GPUProgrammablePassEncoder {
+ undefined setBindGroup(GPUIndex32 index, GPUBindGroup bindGroup,
+ optional sequence<GPUBufferDynamicOffset> dynamicOffsets = []);
+
+ //undefined pushDebugGroup(USVString groupLabel);
+ //undefined popDebugGroup();
+ //undefined insertDebugMarker(USVString markerLabel);
+};
+
+dictionary GPURenderPassDescriptor : GPUObjectDescriptorBase {
+ required sequence<GPURenderPassColorAttachment> colorAttachments;
+ GPURenderPassDepthStencilAttachment depthStencilAttachment;
+ GPUQuerySet occlusionQuerySet;
+};
+
+dictionary GPURenderPassColorAttachment {
+ required GPUTextureView view;
+ GPUTextureView resolveTarget;
+
+ GPUColor clearValue;
+ required GPULoadOp loadOp;
+ required GPUStoreOp storeOp;
+};
+
+dictionary GPURenderPassDepthStencilAttachment {
+ required GPUTextureView view;
+
+ float depthClearValue;
+ GPULoadOp depthLoadOp;
+ GPUStoreOp depthStoreOp;
+ boolean depthReadOnly = false;
+
+ GPUStencilValue stencilClearValue = 0;
+ GPULoadOp stencilLoadOp;
+ GPUStoreOp stencilStoreOp;
+ boolean stencilReadOnly = false;
+};
+
+enum GPULoadOp {
+ "load",
+ "clear"
+};
+
+enum GPUStoreOp {
+ "store",
+ "discard"
+};
+
+dictionary GPURenderPassLayout: GPUObjectDescriptorBase {
+ // TODO: We don't support nullable enumerated arguments yet
+ required sequence<GPUTextureFormat> colorFormats;
+ GPUTextureFormat depthStencilFormat;
+ GPUSize32 sampleCount = 1;
+};
+
+// https://gpuweb.github.io/gpuweb/#gpurendercommandsmixin
+[Exposed=(Window, DedicatedWorker)]
+interface mixin GPURenderEncoderBase {
+ undefined setPipeline(GPURenderPipeline pipeline);
+
+ undefined setIndexBuffer(GPUBuffer buffer,
+ GPUIndexFormat indexFormat,
+ optional GPUSize64 offset = 0,
+ optional GPUSize64 size = 0);
+ undefined setVertexBuffer(GPUIndex32 slot,
+ GPUBuffer buffer,
+ optional GPUSize64 offset = 0,
+ optional GPUSize64 size = 0);
+
+ undefined draw(GPUSize32 vertexCount,
+ optional GPUSize32 instanceCount = 1,
+ optional GPUSize32 firstVertex = 0,
+ optional GPUSize32 firstInstance = 0);
+ undefined drawIndexed(GPUSize32 indexCount,
+ optional GPUSize32 instanceCount = 1,
+ optional GPUSize32 firstIndex = 0,
+ optional GPUSignedOffset32 baseVertex = 0,
+ optional GPUSize32 firstInstance = 0);
+
+ //[Pref="dom.webgpu.indirect-dispatch.enabled"]
+ undefined drawIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset);
+ //[Pref="dom.webgpu.indirect-dispatch.enabled"]
+ undefined drawIndexedIndirect(GPUBuffer indirectBuffer, GPUSize64 indirectOffset);
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPURenderBundle {
+};
+GPURenderBundle includes GPUObjectBase;
+
+dictionary GPURenderBundleDescriptor : GPUObjectDescriptorBase {
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPURenderBundleEncoder {
+ GPURenderBundle finish(optional GPURenderBundleDescriptor descriptor = {});
+};
+GPURenderBundleEncoder includes GPUObjectBase;
+GPURenderBundleEncoder includes GPUProgrammablePassEncoder;
+GPURenderBundleEncoder includes GPURenderEncoderBase;
+
+dictionary GPURenderBundleEncoderDescriptor : GPURenderPassLayout {
+ boolean depthReadOnly = false;
+ boolean stencilReadOnly = false;
+};
+
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPUQueue {
+ undefined submit(sequence<GPUCommandBuffer> buffers);
+
+ //TODO:
+ //Promise<undefined> onSubmittedWorkDone();
+
+ [Throws]
+ undefined writeBuffer(
+ GPUBuffer buffer,
+ GPUSize64 bufferOffset,
+ BufferSource data,
+ optional GPUSize64 dataOffset = 0,
+ optional GPUSize64 size);
+
+ [Throws]
+ undefined writeTexture(
+ GPUImageCopyTexture destination,
+ BufferSource data,
+ GPUImageDataLayout dataLayout,
+ GPUExtent3D size);
+
+ //[Throws]
+ //undefined copyExternalImageToTexture(
+ // GPUImageCopyExternalImage source,
+ // GPUImageCopyTextureTagged destination,
+ // GPUExtent3D copySize);
+};
+GPUQueue includes GPUObjectBase;
+
+[Exposed=(Window, DedicatedWorker), Serializable, Pref="dom.webgpu.enabled"]
+interface GPUQuerySet {
+ undefined destroy();
+};
+GPUQuerySet includes GPUObjectBase;
+
+dictionary GPUQuerySetDescriptor : GPUObjectDescriptorBase {
+ required GPUQueryType type;
+ required GPUSize32 count;
+ sequence<GPUPipelineStatisticName> pipelineStatistics = [];
+};
+
+enum GPUPipelineStatisticName {
+ "vertex-shader-invocations",
+ "clipper-invocations",
+ "clipper-primitives-out",
+ "fragment-shader-invocations",
+ "compute-shader-invocations"
+};
+
+enum GPUQueryType {
+ "occlusion",
+ "pipeline-statistics",
+ "timestamp"
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUCanvasContext {
+ readonly attribute (HTMLCanvasElement or OffscreenCanvas) canvas;
+
+ // Calling configure() a second time invalidates the previous one,
+ // and all of the textures it's produced.
+ undefined configure(GPUCanvasConfiguration descriptor);
+ undefined unconfigure();
+
+ [Throws]
+ GPUTexture getCurrentTexture();
+};
+
+enum GPUCanvasAlphaMode {
+ "opaque",
+ "premultiplied",
+};
+
+dictionary GPUCanvasConfiguration {
+ required GPUDevice device;
+ required GPUTextureFormat format;
+ GPUTextureUsageFlags usage = 0x10; // GPUTextureUsage.RENDER_ATTACHMENT
+ sequence<GPUTextureFormat> viewFormats = [];
+ // PredefinedColorSpace colorSpace = "srgb"; // TODO
+ GPUCanvasAlphaMode alphaMode = "opaque";
+};
+
+enum GPUDeviceLostReason {
+ "unknown",
+ "destroyed",
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUDeviceLostInfo {
+ readonly attribute GPUDeviceLostReason reason;
+ readonly attribute DOMString message;
+};
+
+partial interface GPUDevice {
+ [Throws]
+ readonly attribute Promise<GPUDeviceLostInfo> lost;
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUValidationError {
+ [Throws]
+ constructor(DOMString message);
+ readonly attribute DOMString message;
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUOutOfMemoryError {
+ constructor();
+};
+
+typedef (GPUOutOfMemoryError or GPUValidationError) GPUError;
+
+enum GPUErrorFilter {
+ "out-of-memory",
+ "validation"
+};
+
+partial interface GPUDevice {
+ undefined pushErrorScope(GPUErrorFilter filter);
+ [NewObject]
+ Promise<GPUError?> popErrorScope();
+};
+
+[Exposed=(Window, DedicatedWorker), Pref="dom.webgpu.enabled"]
+interface GPUUncapturedErrorEvent : Event {
+ constructor(
+ DOMString type,
+ GPUUncapturedErrorEventInit gpuUncapturedErrorEventInitDict
+ );
+ /*[SameObject]*/ readonly attribute GPUError error;
+};
+
+dictionary GPUUncapturedErrorEventInit : EventInit {
+ required GPUError error;
+};
+
+partial interface GPUDevice {
+ [Exposed=(Window, DedicatedWorker)]
+ attribute EventHandler onuncapturederror;
+};
+
+typedef [EnforceRange] unsigned long GPUBufferDynamicOffset;
+typedef [EnforceRange] unsigned long GPUStencilValue;
+typedef [EnforceRange] unsigned long GPUSampleMask;
+typedef [EnforceRange] long GPUDepthBias;
+
+typedef [EnforceRange] unsigned long long GPUSize64;
+typedef [EnforceRange] unsigned long GPUIntegerCoordinate;
+typedef [EnforceRange] unsigned long GPUIndex32;
+typedef [EnforceRange] unsigned long GPUSize32;
+typedef [EnforceRange] long GPUSignedOffset32;
+
+dictionary GPUColorDict {
+ required double r;
+ required double g;
+ required double b;
+ required double a;
+};
+typedef (sequence<double> or GPUColorDict) GPUColor;
+
+dictionary GPUOrigin2DDict {
+ GPUIntegerCoordinate x = 0;
+ GPUIntegerCoordinate y = 0;
+};
+typedef (sequence<GPUIntegerCoordinate> or GPUOrigin2DDict) GPUOrigin2D;
+
+dictionary GPUOrigin3DDict {
+ GPUIntegerCoordinate x = 0;
+ GPUIntegerCoordinate y = 0;
+ GPUIntegerCoordinate z = 0;
+};
+typedef (sequence<GPUIntegerCoordinate> or GPUOrigin3DDict) GPUOrigin3D;
+
+dictionary GPUExtent3DDict {
+ required GPUIntegerCoordinate width;
+ GPUIntegerCoordinate height = 1;
+ GPUIntegerCoordinate depthOrArrayLayers = 1;
+};
+
+typedef (sequence<GPUIntegerCoordinate> or GPUExtent3DDict) GPUExtent3D;