/* 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 or GPUExtent3DDict) GPUExtent3D;