mirror of
https://github.com/servo/servo.git
synced 2025-06-23 08:34:42 +01:00
191 lines
4.2 KiB
Text
191 lines
4.2 KiB
Text
/* 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;
|
|
};
|