/* 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 = {}); void 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 "rgb10a2unorm", "rg11b10float", // 64-bit formats "rg32uint", "rg32sint", "rg32float", "rgba16uint", "rgba16sint", "rgba16float", // 128-bit formats "rgba32uint", "rgba32sint", "rgba32float", // Depth and stencil formats "depth32float", "depth24plus", "depth24plus-stencil8" }; enum GPUTextureComponentType { "float", "sint", "uint" }; dictionary GPUExtent3DDict { required GPUIntegerCoordinate width; required GPUIntegerCoordinate height; required GPUIntegerCoordinate depth; }; typedef [EnforceRange] unsigned long GPUIntegerCoordinate; typedef (sequence or GPUExtent3DDict) GPUExtent3D;