mirror of
https://github.com/servo/servo.git
synced 2025-06-21 23:59:00 +01:00
122 lines
2.8 KiB
Text
122 lines
2.8 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/#gputexture
|
|
[Exposed=(Window, DedicatedWorker), Serializable , Pref="dom.webgpu.enabled"]
|
|
interface GPUTexture {
|
|
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;
|
|
};
|
|
|
|
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
|
|
//"rgb9e5ufloat",
|
|
"rgb10a2unorm",
|
|
//"rg11b10ufloat",
|
|
|
|
// 64-bit formats
|
|
"rg32uint",
|
|
"rg32sint",
|
|
"rg32float",
|
|
"rgba16uint",
|
|
"rgba16sint",
|
|
"rgba16float",
|
|
|
|
// 128-bit formats
|
|
"rgba32uint",
|
|
"rgba32sint",
|
|
"rgba32float",
|
|
|
|
// Depth and stencil formats
|
|
//"stencil8",
|
|
//"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" extension
|
|
//"depth24unorm-stencil8",
|
|
|
|
// "depth32float-stencil8" extension
|
|
//"depth32float-stencil8",
|
|
};
|
|
|
|
enum GPUTextureComponentType {
|
|
"float",
|
|
"sint",
|
|
"uint",
|
|
// Texture is used with comparison sampling only.
|
|
"depth-comparison"
|
|
};
|
|
|
|
dictionary GPUExtent3DDict {
|
|
required GPUIntegerCoordinate width;
|
|
required GPUIntegerCoordinate height;
|
|
required GPUIntegerCoordinate depth;
|
|
};
|
|
typedef [EnforceRange] unsigned long GPUIntegerCoordinate;
|
|
typedef (sequence<GPUIntegerCoordinate> or GPUExtent3DDict) GPUExtent3D;
|