aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webidls/GPURenderPipeline.webidl
diff options
context:
space:
mode:
authoryvt <i@yvt.jp>2021-07-10 17:24:27 +0900
committeryvt <i@yvt.jp>2021-07-10 17:55:42 +0900
commit01a7de50ab1843d85295f9dccad7f4c099e7208c (patch)
treeee53fb6e8889deb7b880ee969e6c662e6128d210 /components/script/dom/webidls/GPURenderPipeline.webidl
parentff8d2cdbbfc7a9dc7f38b7dd47cb350fde39388f (diff)
parent94b613fbdaa2b98f2179fc0bbda13c64e6fa0d38 (diff)
downloadservo-01a7de50ab1843d85295f9dccad7f4c099e7208c.tar.gz
servo-01a7de50ab1843d85295f9dccad7f4c099e7208c.zip
Merge remote-tracking branch 'upstream/master' into feat-cow-infra
`tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html` was reverted to the upstream version.
Diffstat (limited to 'components/script/dom/webidls/GPURenderPipeline.webidl')
-rw-r--r--components/script/dom/webidls/GPURenderPipeline.webidl191
1 files changed, 191 insertions, 0 deletions
diff --git a/components/script/dom/webidls/GPURenderPipeline.webidl b/components/script/dom/webidls/GPURenderPipeline.webidl
new file mode 100644
index 00000000000..7def381780a
--- /dev/null
+++ b/components/script/dom/webidls/GPURenderPipeline.webidl
@@ -0,0 +1,191 @@
+/* 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 GPUProgrammableStageDescriptor vertexStage;
+ GPUProgrammableStageDescriptor fragmentStage;
+
+ required GPUPrimitiveTopology primitiveTopology;
+ GPURasterizationStateDescriptor rasterizationState = {};
+ required sequence<GPUColorStateDescriptor> colorStates;
+ GPUDepthStencilStateDescriptor depthStencilState;
+ GPUVertexStateDescriptor vertexState = {};
+
+ GPUSize32 sampleCount = 1;
+ GPUSampleMask sampleMask = 0xFFFFFFFF;
+ boolean alphaToCoverageEnabled = false;
+};
+
+typedef [EnforceRange] unsigned long GPUSampleMask;
+
+enum GPUPrimitiveTopology {
+ "point-list",
+ "line-list",
+ "line-strip",
+ "triangle-list",
+ "triangle-strip"
+};
+
+typedef [EnforceRange] long GPUDepthBias;
+
+dictionary GPURasterizationStateDescriptor {
+ GPUFrontFace frontFace = "ccw";
+ GPUCullMode cullMode = "none";
+ // Enable depth clamping (requires "depth-clamping" extension)
+ boolean clampDepth = false;
+
+ GPUDepthBias depthBias = 0;
+ float depthBiasSlopeScale = 0;
+ float depthBiasClamp = 0;
+};
+
+enum GPUFrontFace {
+ "ccw",
+ "cw"
+};
+
+enum GPUCullMode {
+ "none",
+ "front",
+ "back"
+};
+
+dictionary GPUColorStateDescriptor {
+ required GPUTextureFormat format;
+
+ GPUBlendDescriptor alphaBlend = {};
+ GPUBlendDescriptor colorBlend = {};
+ GPUColorWriteFlags writeMask = 0xF; // GPUColorWrite.ALL
+};
+
+dictionary GPUBlendDescriptor {
+ GPUBlendFactor srcFactor = "one";
+ GPUBlendFactor dstFactor = "zero";
+ GPUBlendOperation operation = "add";
+};
+
+enum GPUBlendFactor {
+ "zero",
+ "one",
+ "src-color",
+ "one-minus-src-color",
+ "src-alpha",
+ "one-minus-src-alpha",
+ "dst-color",
+ "one-minus-dst-color",
+ "dst-alpha",
+ "one-minus-dst-alpha",
+ "src-alpha-saturated",
+ "blend-color",
+ "one-minus-blend-color"
+};
+
+enum GPUBlendOperation {
+ "add",
+ "subtract",
+ "reverse-subtract",
+ "min",
+ "max"
+};
+
+enum GPUStencilOperation {
+ "keep",
+ "zero",
+ "replace",
+ "invert",
+ "increment-clamp",
+ "decrement-clamp",
+ "increment-wrap",
+ "decrement-wrap"
+};
+
+typedef [EnforceRange] unsigned long GPUStencilValue;
+
+dictionary GPUDepthStencilStateDescriptor {
+ required GPUTextureFormat format;
+
+ boolean depthWriteEnabled = false;
+ GPUCompareFunction depthCompare = "always";
+
+ GPUStencilStateFaceDescriptor stencilFront = {};
+ GPUStencilStateFaceDescriptor stencilBack = {};
+
+ GPUStencilValue stencilReadMask = 0xFFFFFFFF;
+ GPUStencilValue stencilWriteMask = 0xFFFFFFFF;
+};
+
+dictionary GPUStencilStateFaceDescriptor {
+ GPUCompareFunction compare = "always";
+ GPUStencilOperation failOp = "keep";
+ GPUStencilOperation depthFailOp = "keep";
+ GPUStencilOperation passOp = "keep";
+};
+
+enum GPUIndexFormat {
+ "uint16",
+ "uint32"
+};
+
+enum GPUVertexFormat {
+ "uchar2",
+ "uchar4",
+ "char2",
+ "char4",
+ "uchar2norm",
+ "uchar4norm",
+ "char2norm",
+ "char4norm",
+ "ushort2",
+ "ushort4",
+ "short2",
+ "short4",
+ "ushort2norm",
+ "ushort4norm",
+ "short2norm",
+ "short4norm",
+ "half2",
+ "half4",
+ "float",
+ "float2",
+ "float3",
+ "float4",
+ "uint",
+ "uint2",
+ "uint3",
+ "uint4",
+ "int",
+ "int2",
+ "int3",
+ "int4"
+};
+
+enum GPUInputStepMode {
+ "vertex",
+ "instance"
+};
+
+dictionary GPUVertexStateDescriptor {
+ GPUIndexFormat indexFormat = "uint32";
+ sequence<GPUVertexBufferLayoutDescriptor?> vertexBuffers = [];
+};
+
+dictionary GPUVertexBufferLayoutDescriptor {
+ required GPUSize64 arrayStride;
+ GPUInputStepMode stepMode = "vertex";
+ required sequence<GPUVertexAttributeDescriptor> attributes;
+};
+
+dictionary GPUVertexAttributeDescriptor {
+ required GPUVertexFormat format;
+ required GPUSize64 offset;
+
+ required GPUIndex32 shaderLocation;
+};