123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687 |
- /* tslint:disable */
- // https://github.com/gpuweb/gpuweb/blob/9d7622bf366be74e0599122d8c4d0fd1128ae484/design/sketch.webidl
- export type u64 = number;
- export type GPUBindingResource = GPUSampler | GPUTextureView | GPUBufferBinding;
- export type GPUAddressMode =
- | "clamp-to-edge"
- | "repeat"
- | "mirror-repeat"
- | "clamp-to-border-color";
- export type GPUBindingType =
- | "uniform-buffer"
- | "dynamic-uniform-buffer"
- | "sampler"
- | "sampled-texture"
- | "storage-buffer"
- | "dynamic-storage-buffer";
- export type 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";
- export type GPUBlendOperation =
- | "add"
- | "subtract"
- | "reverse-subtract"
- | "min"
- | "max";
- export type GPUBorderColor =
- | "transparent-black"
- | "opaque-black"
- | "opaque-white";
- export type GPUCompareFunction =
- | "never"
- | "less"
- | "equal"
- | "lessEqual"
- | "greater"
- | "notEqual"
- | "greaterEqual"
- | "always";
- export type GPUCullMode =
- | "none"
- | "front"
- | "back";
- export type GPUFilterMode =
- | "nearest"
- | "linear";
- export type GPUFrontFace =
- | "ccw"
- | "cw";
- export type GPUIndexFormat =
- | "uint16"
- | "uint32";
- export type GPUInputStepMode =
- | "vertex"
- | "instance";
- export type GPULoadOp =
- | "clear"
- | "load";
- export type GPUPrimitiveTopology =
- | "point-list"
- | "line-list"
- | "line-strip"
- | "triangle-list"
- | "triangle-strip";
- export type GPUStencilOperation =
- | "keep"
- | "zero"
- | "replace"
- | "invert"
- | "increment-clamp"
- | "decrement-clamp"
- | "increment-wrap"
- | "decrement-wrap";
- export type GPUStoreOp =
- | "store";
- export type GPUTextureDimension =
- | "1d"
- | "2d"
- | "3d";
- export type GPUTextureFormat =
- | "r8unorm"
- | "r8unorm-srgb"
- | "r8snorm"
- | "r8uint"
- | "r8sint"
- | "r16unorm"
- | "r16snorm"
- | "r16uint"
- | "r16sint"
- | "r16float"
- | "rg8unorm"
- | "rg8unorm-srgb"
- | "rg8snorm"
- | "rg8uint"
- | "rg8sint"
- | "b5g6r5unorm"
- | "r32uint"
- | "r32sint"
- | "r32float"
- | "rg16unorm"
- | "rg16snorm"
- | "rg16uint"
- | "rg16sint"
- | "rg16float"
- | "rgba8unorm"
- | "rgba8unorm-srgb"
- | "rgba8snorm"
- | "rgba8uint"
- | "rgba8sint"
- | "bgra8unorm"
- | "bgra8unorm-srgb"
- | "rgb10a2unorm"
- | "rg11b10float"
- | "rg32uint"
- | "rg32sint"
- | "rg32float"
- | "rgba16unorm"
- | "rgba16snorm"
- | "rgba16uint"
- | "rgba16sint"
- | "rgba16float"
- | "rgba32uint"
- | "rgba32sint"
- | "rgba32float";
- export type GPUTextureViewDimension =
- | "1d"
- | "2d"
- | "2d-array"
- | "cube"
- | "cube-array"
- | "3d";
- export type GPUVertexFormat =
- | "uchar"
- | "uchar2"
- | "uchar3"
- | "uchar4"
- | "char"
- | "char2"
- | "char3"
- | "char4"
- | "ucharnorm"
- | "uchar2norm"
- | "uchar3norm"
- | "uchar4norm"
- | "uchar4norm-bgra"
- | "charnorm"
- | "char2norm"
- | "char3norm"
- | "char4norm"
- | "ushort"
- | "ushort2"
- | "ushort3"
- | "ushort4"
- | "short"
- | "short2"
- | "short3"
- | "short4"
- | "ushortnorm"
- | "ushort2norm"
- | "ushort3norm"
- | "ushort4norm"
- | "shortnorm"
- | "short2norm"
- | "short3norm"
- | "short4norm"
- | "half"
- | "half2"
- | "half3"
- | "half4"
- | "float"
- | "float2"
- | "float3"
- | "float4"
- | "uint"
- | "uint2"
- | "uint3"
- | "uint4"
- | "int"
- | "int2"
- | "int3"
- | "int4";
- export type GPUBufferUsageFlags = number;
- export const enum GPUBufferUsage {
- NONE = 0,
- MAP_READ = 1,
- MAP_WRITE = 2,
- TRANSFER_SRC = 4,
- TRANSFER_DST = 8,
- INDEX = 16,
- VERTEX = 32,
- UNIFORM = 64,
- STORAGE = 128,
- }
- export type GPUColorWriteFlags = number;
- export const enum GPUColorWriteBits {
- NONE = 0,
- RED = 1,
- GREEN = 2,
- BLUE = 4,
- ALPHA = 8,
- ALL = 15,
- }
- export type GPUShaderStageFlags = number;
- export const enum GPUShaderStageBit {
- NONE = 0,
- VERTEX = 1,
- FRAGMENT = 2,
- COMPUTE = 4,
- }
- export type GPUTextureAspectFlags = number;
- export const enum GPUTextureAspect {
- COLOR = 1,
- DEPTH = 2,
- STENCIL = 4,
- }
- export type GPUTextureUsageFlags = number;
- export const enum GPUTextureUsage {
- NONE = 0,
- TRANSFER_SRC = 1,
- TRANSFER_DST = 2,
- SAMPLED = 4,
- STORAGE = 8,
- OUTPUT_ATTACHMENT = 16,
- }
- export interface GPUBindGroupBinding {
- binding?: number;
- resource?: GPUBindingResource;
- }
- export interface GPUBindGroupDescriptor {
- bindings?: GPUBindGroupBinding[];
- layout?: GPUBindGroupLayout;
- }
- export interface GPUBindGroupLayoutBinding {
- binding?: number;
- type?: GPUBindingType;
- visibility?: GPUShaderStageFlags;
- }
- export interface GPUBindGroupLayoutDescriptor {
- bindings?: GPUBindGroupLayoutBinding[];
- }
- export interface GPUBlendDescriptor {
- dstFactor?: GPUBlendFactor;
- operation?: GPUBlendOperation;
- srcFactor?: GPUBlendFactor;
- }
- export interface GPUColorStateDescriptor {
- format?: GPUTextureFormat;
- alphaBlend?: GPUBlendDescriptor;
- colorBlend?: GPUBlendDescriptor;
- writeMask?: GPUColorWriteFlags;
- }
- export interface GPUBlendStateDescriptor {
- alpha?: GPUBlendDescriptor;
- blendEnabled?: boolean;
- color?: GPUBlendDescriptor;
- writeMask?: GPUColorWriteFlags;
- }
- export interface GPUBufferBinding {
- buffer?: GPUBuffer;
- offset?: number;
- size?: number;
- }
- export interface GPUBufferCopyView {
- buffer?: GPUBuffer;
- imageHeight?: number;
- offset?: number;
- rowPitch?: number;
- }
- export interface GPUBufferDescriptor {
- size?: number;
- usage?: GPUBufferUsageFlags;
- }
- export interface GPUColor {
- a?: number;
- b?: number;
- g?: number;
- r?: number;
- }
- export interface GPUCommandEncoderDescriptor {
- label?: string;
- }
- export interface GPUComputePipelineDescriptor extends GPUPipelineDescriptorBase {
- computeStage?: GPUPipelineStageDescriptor;
- }
- export interface GPUDepthStencilStateDescriptor {
- stencilBack?: GPUStencilStateFaceDescriptor;
- depthCompare?: GPUCompareFunction;
- depthWriteEnabled?: boolean;
- stencilFront?: GPUStencilStateFaceDescriptor;
- stencilReadMask?: number;
- stencilWriteMask?: number;
- format?: GPUTextureFormat;
- }
- export interface GPUDeviceDescriptor {
- extensions?: GPUExtensions;
- }
- export interface GPUExtensions {
- anisotropicFiltering?: boolean;
- }
- export interface GPUExtent3D {
- width: number;
- height: number;
- depth: number;
- }
- export interface GPUFenceDescriptor {
- initialValue?: u64;
- label?: string;
- signalQueue?: GPUQueue;
- }
- export interface GPUInputStateDescriptor {
- attributes?: GPUVertexAttributeDescriptor[];
- indexFormat?: GPUIndexFormat;
- inputs?: GPUVertexInputDescriptor[];
- }
- export interface GPULimits {
- maxBindGroups?: number;
- }
- export interface GPUOrigin3D {
- x?: number;
- y?: number;
- z?: number;
- }
- export interface GPUPipelineDescriptorBase {
- label?: string;
- layout?: GPUPipelineLayout;
- }
- export interface GPUPipelineLayoutDescriptor {
- bindGroupLayouts?: GPUBindGroupLayout[];
- }
- export interface GPUPipelineStageDescriptor {
- entryPoint?: string;
- module?: GPUShaderModule;
- }
- export interface GPURasterizationStateDescriptor {
- cullMode?: GPUCullMode;
- depthBias?: number;
- depthBiasClamp?: number;
- depthBiasSlopeScale?: number;
- frontFace?: GPUFrontFace;
- }
- export interface GPURenderPassColorAttachmentDescriptor {
- attachment?: GPUTextureView;
- clearColor?: GPUColor;
- loadOp?: GPULoadOp;
- resolveTarget?: GPUTextureView | null;
- storeOp?: GPUStoreOp;
- }
- export interface GPURenderPassDepthStencilAttachmentDescriptor {
- attachment?: GPUTextureView;
- clearDepth?: number;
- clearStencil?: number;
- depthLoadOp?: GPULoadOp;
- depthStoreOp?: GPUStoreOp;
- stencilLoadOp?: GPULoadOp;
- stencilStoreOp?: GPUStoreOp;
- }
- export interface GPURenderPassDescriptor {
- colorAttachments?: GPURenderPassColorAttachmentDescriptor[];
- depthStencilAttachment?: GPURenderPassDepthStencilAttachmentDescriptor;
- }
- export interface GPURenderPipelineDescriptor extends GPUPipelineDescriptorBase {
- colorStates?: GPUColorStateDescriptor[];
- blendStates?: GPUBlendStateDescriptor[];
- depthStencilState?: GPUDepthStencilStateDescriptor;
- fragmentStage?: GPUPipelineStageDescriptor;
- inputState?: GPUInputStateDescriptor;
- primitiveTopology?: GPUPrimitiveTopology;
- rasterizationState?: GPURasterizationStateDescriptor;
- sampleCount?: number;
- vertexStage?: GPUPipelineStageDescriptor;
- }
- export interface GPUSamplerDescriptor {
- borderColor?: GPUBorderColor;
- compareFunction?: GPUCompareFunction;
- lodMaxClamp?: number;
- lodMinClamp?: number;
- magFilter?: GPUFilterMode;
- maxAnisotropy?: number;
- minFilter?: GPUFilterMode;
- mipmapFilter?: GPUFilterMode;
- rAddressMode?: GPUAddressMode;
- sAddressMode?: GPUAddressMode;
- tAddressMode?: GPUAddressMode;
- }
- export interface GPUShaderModuleDescriptor {
- code: ArrayBuffer | string;
- label?: string;
- }
- export interface GPUStencilStateFaceDescriptor {
- compare?: GPUCompareFunction;
- depthFailOp?: GPUStencilOperation;
- passOp?: GPUStencilOperation;
- failOp?: GPUStencilOperation;
- }
- export interface GPUSwapChainDescriptor {
- context?: GPUCanvasContext ;
- format?: GPUTextureFormat;
- usage?: GPUTextureUsageFlags;
- }
- export interface GPUTextureCopyView {
- texture: GPUTexture;
- mipLevel?: number;
- arrayLayer?: number;
- origin: GPUOrigin3D;
- }
- export interface GPUTextureDescriptor {
- size: GPUExtent3D;
- arrayLayerCount?: number;
- mipLevelCount?: number;
- sampleCount?: number;
- dimension?: GPUTextureDimension;
- format: GPUTextureFormat;
- usage: GPUTextureUsageFlags;
- }
- export interface GPUTextureViewDescriptor {
- aspect?: GPUTextureAspectFlags;
- baseArrayLayer?: number;
- baseMipLevel?: number;
- dimension?: GPUTextureViewDimension;
- format?: GPUTextureFormat;
- arrayLayerCount?: number;
- mipLevelCount?: number;
- }
- export interface GPUVertexAttributeDescriptor {
- format?: GPUVertexFormat;
- inputSlot?: number;
- offset?: number;
- shaderLocation?: number;
- }
- export interface GPUVertexInputDescriptor {
- inputSlot?: number;
- stepMode?: GPUInputStepMode;
- stride?: number;
- }
- export interface GPUAdapter {
- readonly extensions: GPUExtensions;
- readonly name: string;
- requestDevice(descriptor: GPUDeviceDescriptor): Promise<GPUDevice>;
- }
- export interface GPUBindGroup extends GPUDebugLabel {
- }
- export interface GPUBindGroupLayout extends GPUDebugLabel {
- }
- export interface GPUBuffer extends GPUDebugLabel {
- //readonly mapping: ArrayBuffer | null;
- destroy(): void;
- unmap(): void;
- mapWriteAsync(): Promise<ArrayBuffer>;
- mapReadAsync(): Promise<ArrayBuffer>;
- setSubData(offset: number, ab: ArrayBuffer): void;
- }
- export interface GPUCommandEncoder extends GPUDebugLabel {
- beginComputePass(): GPUComputePassEncoder;
- beginRenderPass(descriptor: GPURenderPassDescriptor): GPURenderPassEncoder;
- copyBufferToBuffer(src: GPUBuffer, srcOffset: number, dst: GPUBuffer, dstOffset: number, size: number): void;
- copyBufferToTexture(source: GPUBufferCopyView, destination: GPUTextureCopyView, copySize: GPUExtent3D): void;
- copyTextureToBuffer(source: GPUTextureCopyView, destination: GPUBufferCopyView, copySize: GPUExtent3D): void;
- copyTextureToTexture(source: GPUTextureCopyView, destination: GPUTextureCopyView, copySize: GPUExtent3D): void;
- finish(): GPUCommandBuffer;
- }
- export interface GPUCommandBuffer extends GPUDebugLabel {
- }
- export interface GPUComputePassEncoder extends GPUProgrammablePassEncoder {
- setPipeline(pipeline: GPUComputePipeline): void;
- dispatch(x: number, y: number, z: number): void;
- }
- export interface GPUComputePipeline extends GPUDebugLabel {
- }
- export interface GPUDebugLabel {
- label: string | undefined;
- }
- // SwapChain / CanvasContext
- export interface GPUCanvasContext {
- }
- export interface GPUDevice {
- readonly adapter: GPUAdapter;
- readonly extensions: GPUExtensions;
- readonly limits: GPULimits;
- createBindGroup(descriptor: GPUBindGroupDescriptor): GPUBindGroup;
- createBindGroupLayout(descriptor: GPUBindGroupLayoutDescriptor): GPUBindGroupLayout;
- createBuffer(descriptor: GPUBufferDescriptor): GPUBuffer;
- //createBufferMapped(descriptor: GPUBufferDescriptor): GPUBuffer;
- //createBufferMappedAsync(descriptor: GPUBufferDescriptor): GPUBuffer;
- createCommandEncoder(descriptor: GPUCommandEncoderDescriptor): GPUCommandEncoder;
- createComputePipeline(descriptor: GPUComputePipelineDescriptor): GPUComputePipeline;
- createPipelineLayout(descriptor: GPUPipelineLayoutDescriptor): GPUPipelineLayout;
- createRenderPipeline(descriptor: GPURenderPipelineDescriptor): GPURenderPipeline;
- createSampler(descriptor: GPUSamplerDescriptor): GPUSampler;
- createShaderModule(descriptor: GPUShaderModuleDescriptor): GPUShaderModule;
- createTexture(descriptor: GPUTextureDescriptor): GPUTexture;
- getQueue(): GPUQueue;
- // Calling createSwapChain a second time for the same GPUCanvasContext
- // invalidates the previous one, and all of the textures it’s produced.
- createSwapChain(descriptor: GPUSwapChainDescriptor): GPUSwapChain;
- getSwapChainPreferredFormat(context: GPUCanvasContext): Promise<GPUTextureFormat> ;
- }
- export interface GPUFence extends GPUDebugLabel {
- getCompletedValue(): u64;
- onCompletion(completionValue: u64): Promise<void>;
- }
- export interface GPULogEntryEvent extends Event {
- readonly object: any;
- readonly reason: string;
- }
- export interface GPUPipelineLayout extends GPUDebugLabel {
- }
- export interface GPUProgrammablePassEncoder extends GPUDebugLabel {
- endPass(): void;
- insertDebugMarker(markerLabel: string): void;
- popDebugGroup(): void;
- pushDebugGroup(groupLabel: string): void;
- setBindGroup(index: number, bindGroup: GPUBindGroup): void;
- }
- export interface GPUQueue extends GPUDebugLabel {
- signal(fence: GPUFence, signalValue: u64): void;
- submit(buffers: GPUCommandBuffer[]): void;
- createFence(descriptor: GPUFenceDescriptor): GPUFence ;
- }
- export interface GPURenderPassEncoder extends GPUProgrammablePassEncoder {
- setPipeline(pipeline: GPURenderPipeline): void;
- draw(vertexCount: number, instanceCount: number, firstVertex: number, firstInstance: number): void;
- drawIndexed(indexCount: number, instanceCount: number, firstIndex: number, baseVertex: number, firstInstance: number): void;
- setBlendColor(color: GPUColor): void;
- setIndexBuffer(buffer: GPUBuffer, offset: number): void;
- setScissorRect(x: number, y: number, width: number, height: number): void;
- setStencilReference(reference: number): void;
- setVertexBuffers(startSlot: number, buffers: GPUBuffer[], offsets: number[]): void;
- setViewport(x: number, y: number, width: number, height: number, minDepth: number, maxDepth: number): void;
- }
- export interface GPURenderPipeline extends GPUDebugLabel {
- }
- export interface GPUSampler extends GPUDebugLabel {
- }
- export interface GPUShaderModule extends GPUDebugLabel {
- }
- export interface GPUSwapChain {
- getCurrentTexture(): GPUTexture;
- }
- export interface GPUTexture extends GPUDebugLabel {
- createDefaultView(): GPUTextureView;
- createView(desc: GPUTextureViewDescriptor): GPUTextureView;
- destroy(): void;
- }
- export interface GPUTextureView extends GPUDebugLabel {
- }
- export type GPUPowerPreference =
- | "low-power"
- | "high-performance";
- export interface GPURequestAdapterOptions {
- powerPreference?: GPUPowerPreference;
- }
- export interface GPU {
- requestAdapter(options?: GPURequestAdapterOptions): Promise<GPUAdapter>;
- }
- // ****************************************************************************
- // ERROR SCOPES
- // ****************************************************************************
- export type GPUErrorFilter = "none"
- | "out-of-memory"
- | "validation";
- export interface GPUOutOfMemoryError { }
- export interface GPUValidationError {
- readonly message: string;
- }
- export type GPUError = GPUOutOfMemoryError | GPUValidationError;
- export interface GPUDevice {
- pushErrorScope(filter: GPUErrorFilter): void;
- popErrorScope(): Promise<GPUError | null>;
- }
- // ****************************************************************************
- // TELEMETRY
- // ****************************************************************************
- export interface GPUUncapturedErrorEvent extends Event {
- readonly error: GPUError;
- }
- export interface GPUUncapturedErrorEventInit extends EventInit {
- message: string;
- }
- // TODO: is it possible to expose the EventTarget only on the main thread?
- export interface GPUDevice extends EventTarget {
- onuncapturederror: Event;
- }
- export interface GPU {
- // May reject with DOMException // TODO: DOMException("OperationError")?
- requestAdapter(options?: GPURequestAdapterOptions): Promise<GPUAdapter>;
- }
- export interface Navigator {
- readonly gpu: GPU | undefined;
- }
|