123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724 |
- // https://github.com/gpuweb/gpuweb/blob/72b88fd01c8dd7d17a03f5669e6b14fd0c9ce6b6/spec/index.bs
- // except #280 setSubData (TODO)
- interface GPUColorDict {
- a: number;
- b: number;
- g: number;
- r: number;
- }
- type GPUColor = [number, number, number, number] | GPUColorDict;
- interface GPUOrigin2DDict {
- x?: number;
- y?: number;
- }
- type GPUOrigin2D = [number, number] | GPUOrigin2DDict;
- interface GPUOrigin3DDict {
- x?: number;
- y?: number;
- z?: number;
- }
- type GPUOrigin3D = [number, number, number] | GPUOrigin3DDict;
- interface GPUExtent3DDict {
- width: number;
- height: number;
- depth: number;
- }
- type GPUExtent3D = [number, number, number] | GPUExtent3DDict;
- type GPUBindingResource = GPUSampler | GPUTextureView | GPUBufferBinding;
- type GPUAddressMode =
- | "clamp-to-edge"
- | "repeat"
- | "mirror-repeat";
- type GPUBindingType =
- | "uniform-buffer"
- | "storage-buffer"
- | "readonly-storage-buffer"
- | "sampler"
- | "sampled-texture"
- | "storage-texture";
- 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";
- type GPUBlendOperation =
- | "add"
- | "subtract"
- | "reverse-subtract"
- | "min"
- | "max";
- type GPUCompareFunction =
- | "never"
- | "less"
- | "equal"
- | "lessEqual"
- | "greater"
- | "notEqual"
- | "greaterEqual"
- | "always";
- type GPUCullMode =
- | "none"
- | "front"
- | "back";
- type GPUFilterMode =
- | "nearest"
- | "linear";
- type GPUFrontFace =
- | "ccw"
- | "cw";
- type GPUIndexFormat =
- | "uint16"
- | "uint32";
- type GPUInputStepMode =
- | "vertex"
- | "instance";
- type GPULoadOp =
- | "load";
- type GPUPrimitiveTopology =
- | "point-list"
- | "line-list"
- | "line-strip"
- | "triangle-list"
- | "triangle-strip";
- type GPUStencilOperation =
- | "keep"
- | "zero"
- | "replace"
- | "invert"
- | "increment-clamp"
- | "decrement-clamp"
- | "increment-wrap"
- | "decrement-wrap";
- type GPUStoreOp =
- | "store"
- | "clear";
- type GPUTextureDimension =
- | "1d"
- | "2d"
- | "3d";
- type GPUTextureFormat =
- | "r8unorm"
- | "r8snorm"
- | "r8uint"
- | "r8sint"
- | "r16unorm"
- | "r16snorm"
- | "r16uint"
- | "r16sint"
- | "r16float"
- | "rg8unorm"
- | "rg8snorm"
- | "rg8uint"
- | "rg8sint"
- | "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"
- | "depth32float"
- | "depth24plus"
- | "depth24plus-stencil8";
- type GPUTextureViewDimension =
- | "1d"
- | "2d"
- | "2d-array"
- | "cube"
- | "cube-array"
- | "3d";
- // SEB UPDATE.
- type GPUTextureAspect =
- | "all"
- | "stencil-only"
- | "depth-only";
- type 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";
- type GPUBufferUsageFlags = number;
- // enum GPUBufferUsage {
- // NONE = 0x0000,
- // MAP_READ = 0x0001,
- // MAP_WRITE = 0x0002,
- // COPY_SRC = 0x0004,
- // COPY_DST = 0x0008,
- // INDEX = 0x0010,
- // VERTEX = 0x0020,
- // UNIFORM = 0x0040,
- // STORAGE = 0x0080,
- // }
- type GPUColorWriteFlags = number;
- // enum GPUColorWrite {
- // NONE = 0x0,
- // RED = 0x1,
- // GREEN = 0x2,
- // BLUE = 0x4,
- // ALPHA = 0x8,
- // ALL = 0xF,
- // }
- type GPUShaderStageFlags = number;
- // enum GPUShaderStage {
- // NONE = 0x0,
- // VERTEX = 0x1,
- // FRAGMENT = 0x2,
- // COMPUTE = 0x4,
- // }
- type GPUTextureUsageFlags = number;
- // enum GPUTextureUsage {
- // NONE = 0x00,
- // COPY_SRC = 0x01,
- // COPY_DST = 0x02,
- // SAMPLED = 0x04,
- // STORAGE = 0x08,
- // OUTPUT_ATTACHMENT = 0x10,
- // }
- interface GPUBindGroupBinding {
- binding: number;
- resource: GPUBindingResource;
- }
- interface GPUBindGroupDescriptor extends GPUObjectDescriptorBase {
- layout: GPUBindGroupLayout;
- bindings: GPUBindGroupBinding[];
- }
- interface GPUBindGroupLayoutBinding {
- binding: number;
- visibility: GPUShaderStageFlags;
- type: GPUBindingType;
- textureDimension?: GPUTextureViewDimension;
- multisampled?: boolean;
- dynamic?: boolean;
- }
- interface GPUBindGroupLayoutDescriptor extends GPUObjectDescriptorBase {
- bindings?: GPUBindGroupLayoutBinding[];
- }
- interface GPUBlendDescriptor {
- dstFactor?: GPUBlendFactor;
- operation?: GPUBlendOperation;
- srcFactor?: GPUBlendFactor;
- }
- interface GPUColorStateDescriptor {
- format: GPUTextureFormat;
- alphaBlend?: GPUBlendDescriptor;
- colorBlend?: GPUBlendDescriptor;
- writeMask?: GPUColorWriteFlags;
- }
- interface GPUBufferBinding {
- buffer: GPUBuffer;
- offset?: number;
- size?: number;
- }
- interface GPUBufferCopyView {
- buffer: GPUBuffer;
- offset?: number;
- rowPitch: number;
- imageHeight: number;
- }
- interface GPUTextureCopyView {
- texture: GPUTexture;
- mipLevel?: number;
- arrayLayer?: number;
- origin?: GPUOrigin3D;
- }
- interface GPUImageBitmapCopyView {
- imageBitmap: ImageBitmap;
- origin?: GPUOrigin2D;
- }
- interface GPUBufferDescriptor extends GPUObjectDescriptorBase {
- size: number;
- usage: GPUBufferUsageFlags;
- }
- interface GPUCommandEncoderDescriptor extends GPUObjectDescriptorBase {
- label?: string;
- }
- interface GPUComputePipelineDescriptor extends GPUPipelineDescriptorBase {
- computeStage: GPUProgrammableStageDescriptor;
- }
- interface GPUDepthStencilStateDescriptor {
- format: GPUTextureFormat;
- depthWriteEnabled?: boolean;
- depthCompare?: GPUCompareFunction;
- stencilFront: GPUStencilStateFaceDescriptor;
- stencilBack: GPUStencilStateFaceDescriptor;
- stencilReadMask?: number;
- stencilWriteMask?: number;
- }
- interface GPUDeviceDescriptor extends GPUObjectDescriptorBase {
- extensions?: GPUExtensions;
- limits?: GPULimits;
- }
- interface GPUExtensions {
- anisotropicFiltering?: boolean;
- }
- interface GPUFenceDescriptor extends GPUObjectDescriptorBase {
- initialValue?: number;
- label?: string;
- signalQueue?: GPUQueue;
- }
- interface GPUVertexAttributeDescriptor {
- offset?: number;
- format: GPUVertexFormat;
- shaderLocation: number;
- }
- interface GPUVertexBufferDescriptor {
- stride: number;
- stepMode?: GPUInputStepMode;
- attributeSet: GPUVertexAttributeDescriptor[];
- }
- interface GPUVertexInputDescriptor {
- indexFormat?: GPUIndexFormat;
- vertexBuffers: GPUVertexBufferDescriptor[];
- }
- interface GPULimits {
- maxBindGroups?: number;
- }
- interface GPUPipelineDescriptorBase {
- label?: string;
- layout: GPUPipelineLayout;
- }
- interface GPUPipelineLayoutDescriptor extends GPUObjectDescriptorBase {
- bindGroupLayouts: GPUBindGroupLayout[];
- }
- interface GPUProgrammableStageDescriptor {
- module: GPUShaderModule;
- entryPoint: string;
- }
- interface GPURasterizationStateDescriptor {
- frontFace?: GPUFrontFace;
- cullMode?: GPUCullMode;
- depthBias?: number;
- depthBiasSlopeScale?: number;
- depthBiasClamp?: number;
- }
- interface GPURenderPassColorAttachmentDescriptor {
- attachment: GPUTextureView;
- resolveTarget?: GPUTextureView | null;
- loadValue: GPULoadOp | GPUColor;
- storeOp: GPUStoreOp;
- }
- interface GPURenderPassDepthStencilAttachmentDescriptor {
- attachment: GPUTextureView;
- depthLoadValue: GPULoadOp | number;
- depthStoreOp: GPUStoreOp;
- stencilLoadValue: GPULoadOp | number;
- stencilStoreOp: GPUStoreOp;
- }
- interface GPURenderPassDescriptor extends GPUObjectDescriptorBase {
- colorAttachments: GPURenderPassColorAttachmentDescriptor[];
- depthStencilAttachment?: GPURenderPassDepthStencilAttachmentDescriptor | null;
- }
- interface GPURenderPipelineStageDescriptor {
- vertexStage: GPUProgrammableStageDescriptor;
- fragmentStage?: GPUProgrammableStageDescriptor | null;
- }
- interface GPURenderPipelineDescriptor extends GPUPipelineDescriptorBase, GPURenderPipelineStageDescriptor {
- primitiveTopology: GPUPrimitiveTopology;
- rasterizationState?: GPURasterizationStateDescriptor;
- colorStates: GPUColorStateDescriptor[];
- depthStencilState?: GPUDepthStencilStateDescriptor | null;
- vertexInput: GPUVertexInputDescriptor;
- sampleCount?: number;
- sampleMask?: number;
- alphaToCoverageEnabled?: boolean;
- }
- interface GPUSamplerDescriptor extends GPUObjectDescriptorBase {
- compare?: GPUCompareFunction;
- lodMaxClamp?: number;
- lodMinClamp?: number;
- magFilter?: GPUFilterMode;
- maxAnisotropy?: number;
- minFilter?: GPUFilterMode;
- mipmapFilter?: GPUFilterMode;
- addressModeU?: GPUAddressMode;
- addressModeV?: GPUAddressMode;
- addressModeW?: GPUAddressMode;
- }
- interface GPUShaderModuleDescriptor extends GPUObjectDescriptorBase {
- code: Uint32Array | string;
- label?: string;
- }
- interface GPUStencilStateFaceDescriptor {
- compare?: GPUCompareFunction;
- depthFailOp?: GPUStencilOperation;
- passOp?: GPUStencilOperation;
- failOp?: GPUStencilOperation;
- }
- interface GPUSwapChainDescriptor extends GPUObjectDescriptorBase {
- device: GPUDevice;
- format: GPUTextureFormat;
- usage?: GPUTextureUsageFlags;
- }
- interface GPUTextureDescriptor extends GPUObjectDescriptorBase {
- size: GPUExtent3D;
- arrayLayerCount?: number;
- mipLevelCount?: number;
- sampleCount?: number;
- dimension?: GPUTextureDimension;
- format: GPUTextureFormat;
- usage: GPUTextureUsageFlags;
- }
- interface GPUTextureViewDescriptor extends GPUObjectDescriptorBase {
- aspect: GPUTextureAspect;
- baseArrayLayer?: number;
- baseMipLevel?: number;
- dimension: GPUTextureViewDimension;
- format: GPUTextureFormat;
- arrayLayerCount?: number;
- mipLevelCount?: number;
- }
- interface GPUAdapter extends GPUObjectBase {
- readonly extensions: GPUExtensions;
- readonly name: string;
- requestDevice(descriptor?: GPUDeviceDescriptor): Promise<GPUDevice>;
- }
- interface GPUBindGroup extends GPUObjectBase {
- }
- interface GPUBindGroupLayout extends GPUObjectBase {
- }
- interface GPUBuffer extends GPUObjectBase {
- //readonly mapping: ArrayBuffer | null;
- destroy(): void;
- unmap(): void;
- mapWriteAsync(): Promise<ArrayBuffer>;
- mapReadAsync(): Promise<ArrayBuffer>;
- // TODO: Remove setSubData (#280)
- setSubData(offset: number, src: ArrayBufferView, srcOffset?: number, byteLength?: number): void;
- }
- interface GPUCommandBuffer extends GPUObjectBase {
- }
- interface GPUCommandBufferDescriptor extends GPUObjectDescriptorBase {
- }
- interface GPUCommandEncoder extends GPUObjectBase {
- beginComputePass(descriptor?: GPUComputePassDescriptor): GPUComputePassEncoder;
- beginRenderPass(descriptor: GPURenderPassDescriptor): GPURenderPassEncoder;
- copyBufferToBuffer(source: GPUBuffer, sourceOffset: number, destination: GPUBuffer, destinationOffset: 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;
- copyImageBitmapToTexture(source: GPUImageBitmapCopyView, destination: GPUTextureCopyView, copySize: GPUExtent3D): void;
- finish(descriptor?: GPUCommandBufferDescriptor): GPUCommandBuffer;
- popDebugGroup(): void;
- pushDebugGroup(groupLabel: string): void;
- insertDebugMarker(markerLabel: string): void;
- }
- interface GPUComputePassDescriptor extends GPUObjectDescriptorBase {
- }
- interface GPUComputePassEncoder extends GPUProgrammablePassEncoder {
- setPipeline(pipeline: GPUComputePipeline): void;
- dispatch(x: number, y?: number, z?: number): void;
- dispatchIndirect(indirectBuffer: GPUBuffer, indirectOffset: number): void;
- endPass(): void;
- }
- interface GPUComputePipeline extends GPUObjectBase {
- }
- interface GPUObjectBase {
- label: string | undefined;
- }
- interface GPUObjectDescriptorBase {
- label?: string;
- }
- // SwapChain / CanvasContext
- interface GPUCanvasContext {
- configureSwapChain(descriptor: GPUSwapChainDescriptor): GPUSwapChain;
- getSwapChainPreferredFormat(device: GPUDevice): Promise<GPUTextureFormat>;
- }
- interface GPUDevice extends GPUObjectBase {
- 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, ArrayBuffer];
- createBufferMappedAsync(descriptor: GPUBufferDescriptor): Promise<[GPUBuffer, ArrayBuffer]>;
- createComputePipeline(descriptor: GPUComputePipelineDescriptor): GPUComputePipeline;
- createPipelineLayout(descriptor: GPUPipelineLayoutDescriptor): GPUPipelineLayout;
- createRenderPipeline(descriptor: GPURenderPipelineDescriptor): GPURenderPipeline;
- createSampler(descriptor?: GPUSamplerDescriptor): GPUSampler;
- createShaderModule(descriptor: GPUShaderModuleDescriptor): GPUShaderModule;
- createTexture(descriptor: GPUTextureDescriptor): GPUTexture;
- createCommandEncoder(descriptor?: GPUCommandEncoderDescriptor): GPUCommandEncoder;
- createRenderBundleEncoder(descriptor: GPURenderBundleEncoderDescriptor): GPURenderBundleEncoder;
- getQueue(): GPUQueue;
- readonly lost: Promise<GPUDeviceLostInfo>;
- }
- interface GPUFence extends GPUObjectBase {
- getCompletedValue(): number;
- onCompletion(completionValue: number): Promise<void>;
- }
- interface GPUPipelineLayout extends GPUObjectBase {
- }
- interface GPUProgrammablePassEncoder extends GPUObjectBase {
- setBindGroup(index: number, bindGroup: GPUBindGroup): void;
- popDebugGroup(): void;
- pushDebugGroup(groupLabel: string): void;
- insertDebugMarker(markerLabel: string): void;
- }
- interface GPUQueue extends GPUObjectBase {
- signal(fence: GPUFence, signalValue: number): void;
- submit(buffers: GPUCommandBuffer[]): void;
- createFence(descriptor?: GPUFenceDescriptor): GPUFence;
- }
- interface GPURenderEncoderBase extends GPUProgrammablePassEncoder {
- setPipeline(pipeline: GPURenderPipeline): void;
- setIndexBuffer(buffer: GPUBuffer, offset: number): void;
- setVertexBuffers(startSlot: number, buffers: GPUBuffer[], offsets: number[]): void;
- draw(vertexCount: number, instanceCount: number, firstVertex: number, firstInstance: number): void;
- drawIndexed(indexCount: number, instanceCount: number, firstIndex: number, baseVertex: number, firstInstance: number): void;
- drawIndirect(indirectBuffer: GPUBuffer, indirectOffset: number): void;
- drawIndexedIndirect(indirectBuffer: GPUBuffer, indirectOffset: number): void;
- }
- interface GPURenderPassEncoder extends GPURenderEncoderBase {
- setViewport(x: number, y: number, width: number, height: number, minDepth: number, maxDepth: number): void;
- setScissorRect(x: number, y: number, width: number, height: number): void;
- setBlendColor(color: GPUColor): void;
- setStencilReference(reference: number): void;
- executeBundles(bundles: GPURenderBundle[]): void;
- endPass(): void;
- }
- interface GPURenderBundleDescriptor extends GPUObjectDescriptorBase {
- }
- interface GPURenderBundle extends GPUObjectBase {
- }
- interface GPURenderBundleEncoder extends GPURenderEncoderBase {
- }
- interface GPURenderBundleEncoderDescriptor extends GPUObjectDescriptorBase {
- colorFormats: GPUTextureFormat[];
- depthStencilFormat: GPUTextureFormat;
- sampleCount?: number;
- }
- interface GPURenderPipeline extends GPUObjectBase {
- }
- interface GPUSampler extends GPUObjectBase {
- }
- interface GPUShaderModule extends GPUObjectBase {
- }
- interface GPUSwapChain extends GPUObjectBase {
- getCurrentTexture(): GPUTexture;
- }
- interface GPUTexture extends GPUObjectBase {
- createDefaultView(): GPUTextureView;
- createView(descriptor: GPUTextureViewDescriptor): GPUTextureView;
- destroy(): void;
- }
- interface GPUTextureView extends GPUObjectBase {
- }
- type GPUPowerPreference =
- | "low-power"
- | "high-performance";
- interface GPURequestAdapterOptions {
- powerPreference?: GPUPowerPreference;
- }
- interface GPU {
- requestAdapter(options?: GPURequestAdapterOptions): Promise<GPUAdapter>;
- }
- // ****************************************************************************
- // ERROR SCOPES
- // ****************************************************************************
- type GPUErrorFilter = "none"
- | "out-of-memory"
- | "validation";
- declare class GPUOutOfMemoryError {
- constructor();
- }
- declare class GPUValidationError {
- constructor(message: string);
- readonly message: string;
- }
- type GPUError = GPUOutOfMemoryError | GPUValidationError;
- interface GPUDevice {
- pushErrorScope(filter: GPUErrorFilter): void;
- popErrorScope(): Promise<GPUError | null>;
- }
- // ****************************************************************************
- // TELEMETRY
- // ****************************************************************************
- interface GPUUncapturedErrorEvent extends Event {
- readonly error: GPUError;
- }
- interface GPUUncapturedErrorEventInit extends EventInit {
- error: GPUError;
- }
- interface GPUDevice extends EventTarget {
- onuncapturederror: Event | undefined;
- }
- interface GPUDeviceLostInfo {
- readonly message: string;
- }
- interface GPU {
- // May reject with DOMException // TODO: DOMException("OperationError")?
- requestAdapter(options?: GPURequestAdapterOptions): Promise<GPUAdapter>;
- }
- interface Navigator {
- readonly gpu: GPU | undefined;
- }
|