diff options
Diffstat (limited to 'cli')
| -rw-r--r-- | cli/args/flags.rs | 1 | ||||
| -rw-r--r-- | cli/build.rs | 12 | ||||
| -rw-r--r-- | cli/js/40_testing.js | 3 | ||||
| -rw-r--r-- | cli/tests/testdata/webgpu/computepass_shader.wgsl | 38 | ||||
| -rw-r--r-- | cli/tests/testdata/webgpu/hellotriangle.out | bin | 204800 -> 0 bytes | |||
| -rw-r--r-- | cli/tests/testdata/webgpu/hellotriangle_shader.wgsl | 11 | ||||
| -rw-r--r-- | cli/tests/unit/webgpu_test.ts | 242 | ||||
| -rw-r--r-- | cli/tsc/dts/lib.deno.window.d.ts | 2 | ||||
| -rw-r--r-- | cli/tsc/dts/lib.deno.worker.d.ts | 2 | ||||
| -rw-r--r-- | cli/tsc/dts/lib.deno_webgpu.d.ts | 1324 | ||||
| -rw-r--r-- | cli/tsc/mod.rs | 1 |
11 files changed, 0 insertions, 1636 deletions
diff --git a/cli/args/flags.rs b/cli/args/flags.rs index c1e422da3..0b1ba8c50 100644 --- a/cli/args/flags.rs +++ b/cli/args/flags.rs @@ -602,7 +602,6 @@ static ENV_VARIABLES_HELP: &str = r#"ENVIRONMENT VARIABLES: DENO_NO_UPDATE_CHECK Set to disable checking if a newer Deno version is available DENO_V8_FLAGS Set V8 command line options - DENO_WEBGPU_TRACE Directory to use for wgpu traces DENO_JOBS Number of parallel workers used for the --parallel flag with the test subcommand. Defaults to number of available CPUs. diff --git a/cli/build.rs b/cli/build.rs index fdf57809a..5b2c5fbb4 100644 --- a/cli/build.rs +++ b/cli/build.rs @@ -1,7 +1,6 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. use std::env; -use std::path::Path; use std::path::PathBuf; use deno_core::include_js_files; @@ -15,7 +14,6 @@ use deno_runtime::*; mod ts { use super::*; - use crate::deno_webgpu_get_declaration; use deno_core::error::custom_error; use deno_core::error::AnyError; use deno_core::op; @@ -43,7 +41,6 @@ mod ts { op_crate_libs.insert("deno.url", deno_url::get_declaration()); op_crate_libs.insert("deno.web", deno_web::get_declaration()); op_crate_libs.insert("deno.fetch", deno_fetch::get_declaration()); - op_crate_libs.insert("deno.webgpu", deno_webgpu_get_declaration()); op_crate_libs.insert("deno.websocket", deno_websocket::get_declaration()); op_crate_libs.insert("deno.webstorage", deno_webstorage::get_declaration()); op_crate_libs.insert("deno.crypto", deno_crypto::get_declaration()); @@ -323,7 +320,6 @@ fn create_cli_snapshot(snapshot_path: PathBuf) { deno_websocket::init_ops::<PermissionsContainer>("".to_owned(), None, None), deno_webstorage::init_ops(None), deno_crypto::init_ops(None), - deno_webgpu::init_ops(false), deno_broadcast_channel::init_ops( deno_broadcast_channel::InMemoryBroadcastChannel::default(), false, // No --unstable. @@ -489,11 +485,3 @@ fn main() { res.compile().unwrap(); } } - -fn deno_webgpu_get_declaration() -> PathBuf { - let manifest_dir = Path::new(env!("CARGO_MANIFEST_DIR")); - manifest_dir - .join("tsc") - .join("dts") - .join("lib.deno_webgpu.d.ts") -} diff --git a/cli/js/40_testing.js b/cli/js/40_testing.js index c0b5367f8..bcb5990a9 100644 --- a/cli/js/40_testing.js +++ b/cli/js/40_testing.js @@ -124,9 +124,6 @@ const OP_DETAILS = { "op_tls_start": ["start a TLS connection", "awaiting a `Deno.startTls` call"], "op_truncate_async": ["truncate a file", "awaiting the result of a `Deno.truncate` call"], "op_utime_async": ["change file timestamps", "awaiting the result of a `Deno.utime` call"], - "op_webgpu_buffer_get_map_async": ["map a WebGPU buffer", "awaiting the result of a `GPUBuffer#mapAsync` call"], - "op_webgpu_request_adapter": ["request a WebGPU adapter", "awaiting the result of a `navigator.gpu.requestAdapter` call"], - "op_webgpu_request_device": ["request a WebGPU device", "awaiting the result of a `GPUAdapter#requestDevice` call"], "op_worker_recv_message": ["receive a message from a web worker", "terminating a `Worker`"], "op_ws_close": ["close a WebSocket", "awaiting until the `close` event is emitted on a `WebSocket`, or the `WebSocketStream#closed` promise resolves"], "op_ws_create": ["create a WebSocket", "awaiting until the `open` event is emitted on a `WebSocket`, or the result of a `WebSocketStream#connection` promise"], diff --git a/cli/tests/testdata/webgpu/computepass_shader.wgsl b/cli/tests/testdata/webgpu/computepass_shader.wgsl deleted file mode 100644 index 41af4363a..000000000 --- a/cli/tests/testdata/webgpu/computepass_shader.wgsl +++ /dev/null @@ -1,38 +0,0 @@ -@group(0) -@binding(0) -var<storage, read_write> v_indices: array<u32>; // this is used as both input and output for convenience - -// The Collatz Conjecture states that for any integer n: -// If n is even, n = n/2 -// If n is odd, n = 3n+1 -// And repeat this process for each new n, you will always eventually reach 1. -// Though the conjecture has not been proven, no counterexample has ever been found. -// This function returns how many times this recurrence needs to be applied to reach 1. -fn collatz_iterations(n_base: u32) -> u32{ - var n: u32 = n_base; - var i: u32 = 0u; - loop { - if (n <= 1u) { - break; - } - if (n % 2u == 0u) { - n = n / 2u; - } - else { - // Overflow? (i.e. 3*n + 1 > 0xffffffffu?) - if (n >= 1431655765u) { // 0x55555555u - return 4294967295u; // 0xffffffffu - } - - n = 3u * n + 1u; - } - i = i + 1u; - } - return i; -} - -@compute -@workgroup_size(1) -fn main(@builtin(global_invocation_id) global_id: vec3<u32>) { - v_indices[global_id.x] = collatz_iterations(v_indices[global_id.x]); -} diff --git a/cli/tests/testdata/webgpu/hellotriangle.out b/cli/tests/testdata/webgpu/hellotriangle.out Binary files differdeleted file mode 100644 index 91454dbfc..000000000 --- a/cli/tests/testdata/webgpu/hellotriangle.out +++ /dev/null diff --git a/cli/tests/testdata/webgpu/hellotriangle_shader.wgsl b/cli/tests/testdata/webgpu/hellotriangle_shader.wgsl deleted file mode 100644 index f84ccfe94..000000000 --- a/cli/tests/testdata/webgpu/hellotriangle_shader.wgsl +++ /dev/null @@ -1,11 +0,0 @@ -@vertex -fn vs_main(@builtin(vertex_index) in_vertex_index: u32) -> @builtin(position) vec4<f32> { - let x = f32(i32(in_vertex_index) - 1); - let y = f32(i32(in_vertex_index & 1u) * 2 - 1); - return vec4<f32>(x, y, 0.0, 1.0); -} - -@fragment -fn fs_main() -> @location(0) vec4<f32> { - return vec4<f32>(1.0, 0.0, 0.0, 1.0); -} diff --git a/cli/tests/unit/webgpu_test.ts b/cli/tests/unit/webgpu_test.ts deleted file mode 100644 index 2d98167cf..000000000 --- a/cli/tests/unit/webgpu_test.ts +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. - -import { assert, assertEquals } from "./test_util.ts"; - -let isCI: boolean; -try { - isCI = (Deno.env.get("CI")?.length ?? 0) > 0; -} catch { - isCI = true; -} - -// Skip these tests on linux CI, because the vulkan emulator is not good enough -// yet, and skip on macOS CI because these do not have virtual GPUs. -const isLinuxOrMacCI = - (Deno.build.os === "linux" || Deno.build.os === "darwin") && isCI; -// Skip these tests in WSL because it doesn't have good GPU support. -const isWsl = await checkIsWsl(); - -Deno.test({ - permissions: { read: true, env: true }, - ignore: isWsl || isLinuxOrMacCI, -}, async function webgpuComputePass() { - const adapter = await navigator.gpu.requestAdapter(); - assert(adapter); - - const numbers = [1, 4, 3, 295]; - - const device = await adapter.requestDevice(); - assert(device); - - const shaderCode = await Deno.readTextFile( - "cli/tests/testdata/webgpu/computepass_shader.wgsl", - ); - - const shaderModule = device.createShaderModule({ - code: shaderCode, - }); - - const size = new Uint32Array(numbers).byteLength; - - const stagingBuffer = device.createBuffer({ - size: size, - usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST, - }); - - const storageBuffer = device.createBuffer({ - label: "Storage Buffer", - size: size, - usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | - GPUBufferUsage.COPY_SRC, - mappedAtCreation: true, - }); - - const buf = new Uint32Array(storageBuffer.getMappedRange()); - - buf.set(numbers); - - storageBuffer.unmap(); - - const computePipeline = device.createComputePipeline({ - layout: "auto", - compute: { - module: shaderModule, - entryPoint: "main", - }, - }); - const bindGroupLayout = computePipeline.getBindGroupLayout(0); - - const bindGroup = device.createBindGroup({ - layout: bindGroupLayout, - entries: [ - { - binding: 0, - resource: { - buffer: storageBuffer, - }, - }, - ], - }); - - const encoder = device.createCommandEncoder(); - - const computePass = encoder.beginComputePass(); - computePass.setPipeline(computePipeline); - computePass.setBindGroup(0, bindGroup); - computePass.insertDebugMarker("compute collatz iterations"); - computePass.dispatchWorkgroups(numbers.length); - computePass.end(); - - encoder.copyBufferToBuffer(storageBuffer, 0, stagingBuffer, 0, size); - - device.queue.submit([encoder.finish()]); - - await stagingBuffer.mapAsync(1); - - const data = stagingBuffer.getMappedRange(); - - assertEquals(new Uint32Array(data), new Uint32Array([0, 2, 7, 55])); - - stagingBuffer.unmap(); - - device.destroy(); - - // TODO(lucacasonato): webgpu spec should add a explicit destroy method for - // adapters. - const resources = Object.keys(Deno.resources()); - Deno.close(Number(resources[resources.length - 1])); -}); - -Deno.test({ - permissions: { read: true, env: true }, - ignore: isWsl || isLinuxOrMacCI, -}, async function webgpuHelloTriangle() { - const adapter = await navigator.gpu.requestAdapter(); - assert(adapter); - - const device = await adapter.requestDevice(); - assert(device); - - const shaderCode = await Deno.readTextFile( - "cli/tests/testdata/webgpu/hellotriangle_shader.wgsl", - ); - - const shaderModule = device.createShaderModule({ - code: shaderCode, - }); - - const pipelineLayout = device.createPipelineLayout({ - bindGroupLayouts: [], - }); - - const renderPipeline = device.createRenderPipeline({ - layout: pipelineLayout, - vertex: { - module: shaderModule, - entryPoint: "vs_main", - }, - fragment: { - module: shaderModule, - entryPoint: "fs_main", - targets: [ - { - format: "rgba8unorm-srgb", - }, - ], - }, - }); - - const dimensions = { - width: 200, - height: 200, - }; - const unpaddedBytesPerRow = dimensions.width * 4; - const align = 256; - const paddedBytesPerRowPadding = (align - unpaddedBytesPerRow % align) % - align; - const paddedBytesPerRow = unpaddedBytesPerRow + paddedBytesPerRowPadding; - - const outputBuffer = device.createBuffer({ - label: "Capture", - size: paddedBytesPerRow * dimensions.height, - usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST, - }); - const texture = device.createTexture({ - label: "Capture", - size: dimensions, - format: "rgba8unorm-srgb", - usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC, - }); - - const encoder = device.createCommandEncoder(); - const view = texture.createView(); - const renderPass = encoder.beginRenderPass({ - colorAttachments: [ - { - view, - storeOp: "store", - loadOp: "clear", - clearValue: [0, 1, 0, 1], - }, - ], - }); - renderPass.setPipeline(renderPipeline); - renderPass.draw(3, 1); - renderPass.end(); - - encoder.copyTextureToBuffer( - { - texture, - }, - { - buffer: outputBuffer, - bytesPerRow: paddedBytesPerRow, - rowsPerImage: 0, - }, - dimensions, - ); - - const bundle = encoder.finish(); - device.queue.submit([bundle]); - - await outputBuffer.mapAsync(1); - const data = new Uint8Array(outputBuffer.getMappedRange()); - - assertEquals( - data, - await Deno.readFile("cli/tests/testdata/webgpu/hellotriangle.out"), - ); - - outputBuffer.unmap(); - - device.destroy(); - - // TODO(lucacasonato): webgpu spec should add a explicit destroy method for - // adapters. - const resources = Object.keys(Deno.resources()); - Deno.close(Number(resources[resources.length - 1])); -}); - -Deno.test({ - ignore: isWsl || isLinuxOrMacCI, -}, async function webgpuAdapterHasFeatures() { - const adapter = await navigator.gpu.requestAdapter(); - assert(adapter); - assert(adapter.features); - const resources = Object.keys(Deno.resources()); - Deno.close(Number(resources[resources.length - 1])); -}); - -async function checkIsWsl() { - return Deno.build.os === "linux" && await hasMicrosoftProcVersion(); - - async function hasMicrosoftProcVersion() { - // https://github.com/microsoft/WSL/issues/423#issuecomment-221627364 - try { - const procVersion = await Deno.readTextFile("/proc/version"); - return /microsoft/i.test(procVersion); - } catch { - return false; - } - } -} diff --git a/cli/tsc/dts/lib.deno.window.d.ts b/cli/tsc/dts/lib.deno.window.d.ts index e9634f80d..d0cd9b5bd 100644 --- a/cli/tsc/dts/lib.deno.window.d.ts +++ b/cli/tsc/dts/lib.deno.window.d.ts @@ -3,7 +3,6 @@ /// <reference no-default-lib="true" /> /// <reference lib="deno.ns" /> /// <reference lib="deno.shared_globals" /> -/// <reference lib="deno.webgpu" /> /// <reference lib="deno.webstorage" /> /// <reference lib="esnext" /> /// <reference lib="deno.cache" /> @@ -94,7 +93,6 @@ declare var caches: CacheStorage; /** @category Web APIs */ declare class Navigator { constructor(); - readonly gpu: GPU; readonly hardwareConcurrency: number; readonly userAgent: string; readonly language: string; diff --git a/cli/tsc/dts/lib.deno.worker.d.ts b/cli/tsc/dts/lib.deno.worker.d.ts index f9684d826..752a427c9 100644 --- a/cli/tsc/dts/lib.deno.worker.d.ts +++ b/cli/tsc/dts/lib.deno.worker.d.ts @@ -3,7 +3,6 @@ /// <reference no-default-lib="true" /> /// <reference lib="deno.ns" /> /// <reference lib="deno.shared_globals" /> -/// <reference lib="deno.webgpu" /> /// <reference lib="esnext" /> /// <reference lib="deno.cache" /> @@ -58,7 +57,6 @@ declare class WorkerGlobalScope extends EventTarget { /** @category Web APIs */ declare class WorkerNavigator { constructor(); - readonly gpu: GPU; readonly hardwareConcurrency: number; readonly userAgent: string; readonly language: string; diff --git a/cli/tsc/dts/lib.deno_webgpu.d.ts b/cli/tsc/dts/lib.deno_webgpu.d.ts deleted file mode 100644 index 150f16bab..000000000 --- a/cli/tsc/dts/lib.deno_webgpu.d.ts +++ /dev/null @@ -1,1324 +0,0 @@ -// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. - -// deno-lint-ignore-file no-explicit-any no-empty-interface - -/// <reference no-default-lib="true" /> -/// <reference lib="esnext" /> - -/** @category WebGPU */ -interface GPUObjectBase { - label: string; -} - -/** @category WebGPU */ -declare interface GPUObjectDescriptorBase { - label?: string; -} - -/** @category WebGPU */ -declare class GPUSupportedLimits { - maxTextureDimension1D?: number; - maxTextureDimension2D?: number; - maxTextureDimension3D?: number; - maxTextureArrayLayers?: number; - maxBindGroups?: number; - maxBindingsPerBindGroup?: number; - maxDynamicUniformBuffersPerPipelineLayout?: number; - maxDynamicStorageBuffersPerPipelineLayout?: number; - maxSampledTexturesPerShaderStage?: number; - maxSamplersPerShaderStage?: number; - maxStorageBuffersPerShaderStage?: number; - maxStorageTexturesPerShaderStage?: number; - maxUniformBuffersPerShaderStage?: number; - maxUniformBufferBindingSize?: number; - maxStorageBufferBindingSize?: number; - minUniformBufferOffsetAlignment?: number; - minStorageBufferOffsetAlignment?: number; - maxVertexBuffers?: number; - maxBufferSize?: number; - maxVertexAttributes?: number; - maxVertexBufferArrayStride?: number; - maxInterStageShaderComponents?: number; - maxComputeWorkgroupStorageSize?: number; - maxComputeInvocationsPerWorkgroup?: number; - maxComputeWorkgroupSizeX?: number; - maxComputeWorkgroupSizeY?: number; - maxComputeWorkgroupSizeZ?: number; - maxComputeWorkgroupsPerDimension?: number; -} - -/** @category WebGPU */ -declare class GPUSupportedFeatures { - forEach( - callbackfn: ( - value: GPUFeatureName, - value2: GPUFeatureName, - set: Set<GPUFeatureName>, - ) => void, - thisArg?: any, - ): void; - has(value: GPUFeatureName): boolean; - size: number; - [ - Symbol - .iterator - ](): IterableIterator<GPUFeatureName>; - entries(): IterableIterator<[GPUFeatureName, GPUFeatureName]>; - keys(): IterableIterator<GPUFeatureName>; - values(): IterableIterator<GPUFeatureName>; -} - -/** @category WebGPU */ -declare class GPUAdapterInfo { - readonly vendor: string; - readonly architecture: string; - readonly device: string; - readonly description: string; -} - -/** @category WebGPU */ -declare class GPU { - requestAdapter( - options?: GPURequestAdapterOptions, - ): Promise<GPUAdapter | null>; -} - -/** @category WebGPU */ -declare interface GPURequestAdapterOptions { - powerPreference?: GPUPowerPreference; - forceFallbackAdapter?: boolean; -} - -/** @category WebGPU */ -declare type GPUPowerPreference = "low-power" | "high-performance"; - -/** @category WebGPU */ -declare class GPUAdapter { - readonly features: GPUSupportedFeatures; - readonly limits: GPUSupportedLimits; - readonly isFallbackAdapter: boolean; - - requestDevice(descriptor?: GPUDeviceDescriptor): Promise<GPUDevice>; - requestAdapterInfo(unmaskHints?: string[]): Promise<GPUAdapterInfo>; -} - -/** @category WebGPU */ -declare interface GPUDeviceDescriptor extends GPUObjectDescriptorBase { - requiredFeatures?: GPUFeatureName[]; - requiredLimits?: Record<string, number>; -} - -/** @category WebGPU */ -declare type GPUFeatureName = - | "depth-clip-control" - | "depth32float-stencil8" - | "pipeline-statistics-query" - | "texture-compression-bc" - | "texture-compression-etc2" - | "texture-compression-astc" - | "timestamp-query" - | "indirect-first-instance" - | "shader-f16" - // extended from spec - | "mappable-primary-buffers" - | "sampled-texture-binding-array" - | "sampled-texture-array-dynamic-indexing" - | "sampled-texture-array-non-uniform-indexing" - | "unsized-binding-array" - | "multi-draw-indirect" - | "multi-draw-indirect-count" - | "push-constants" - | "address-mode-clamp-to-border" - | "texture-adapter-specific-format-features" - | "shader-float64" - | "vertex-attribute-64bit"; - -/** @category WebGPU */ -declare class GPUDevice extends EventTarget implements GPUObjectBase { - label: string; - - readonly lost: Promise<GPUDeviceLostInfo>; - pushErrorScope(filter: GPUErrorFilter): undefined; - popErrorScope(): Promise<GPUError | null>; - - readonly features: GPUSupportedFeatures; - readonly limits: GPUSupportedLimits; - readonly queue: GPUQueue; - - destroy(): undefined; - - createBuffer(descriptor: GPUBufferDescriptor): GPUBuffer; - createTexture(descriptor: GPUTextureDescriptor): GPUTexture; - createSampler(descriptor?: GPUSamplerDescriptor): GPUSampler; - - createBindGroupLayout( - descriptor: GPUBindGroupLayoutDescriptor, - ): GPUBindGroupLayout; - createPipelineLayout( - descriptor: GPUPipelineLayoutDescriptor, - ): GPUPipelineLayout; - createBindGroup(descriptor: GPUBindGroupDescriptor): GPUBindGroup; - - createShaderModule(descriptor: GPUShaderModuleDescriptor): GPUShaderModule; - createComputePipeline( - descriptor: GPUComputePipelineDescriptor, - ): GPUComputePipeline; - createRenderPipeline( - descriptor: GPURenderPipelineDescriptor, - ): GPURenderPipeline; - createComputePipelineAsync( - descriptor: GPUComputePipelineDescriptor, - ): Promise<GPUComputePipeline>; - createRenderPipelineAsync( - descriptor: GPURenderPipelineDescriptor, - ): Promise<GPURenderPipeline>; - - createCommandEncoder( - descriptor?: GPUCommandEncoderDescriptor, - ): GPUCommandEncoder; - createRenderBundleEncoder( - descriptor: GPURenderBundleEncoderDescriptor, - ): GPURenderBundleEncoder; - - createQuerySet(descriptor: GPUQuerySetDescriptor): GPUQuerySet; -} - -/** @category WebGPU */ -declare class GPUBuffer implements GPUObjectBase { - label: string; - - readonly size: number; - readonly usage: GPUBufferUsageFlags; - readonly mapState: GPUBufferMapState; - - mapAsync( - mode: GPUMapModeFlags, - offset?: number, - size?: number, - ): Promise<undefined>; - getMappedRange(offset?: number, size?: number): ArrayBuffer; - unmap(): undefined; - - destroy(): undefined; -} - -/** @category WebGPU */ -declare type GPUBufferMapState = "unmapped" | "pending" | "mapped"; - -/** @category WebGPU */ -declare interface GPUBufferDescriptor extends GPUObjectDescriptorBase { - size: number; - usage: GPUBufferUsageFlags; - mappedAtCreation?: boolean; -} - -/** @category WebGPU */ -declare type GPUBufferUsageFlags = number; - -/** @category WebGPU */ -declare class GPUBufferUsage { - static MAP_READ: 0x0001; - static MAP_WRITE: 0x0002; - static COPY_SRC: 0x0004; - static COPY_DST: 0x0008; - static INDEX: 0x0010; - static VERTEX: 0x0020; - static UNIFORM: 0x0040; - static STORAGE: 0x0080; - static INDIRECT: 0x0100; - static QUERY_RESOLVE: 0x0200; -} - -/** @category WebGPU */ -declare type GPUMapModeFlags = number; - -/** @category WebGPU */ -declare class GPUMapMode { - static READ: 0x0001; - static WRITE: 0x0002; -} - -/** @category WebGPU */ -declare class GPUTexture implements GPUObjectBase { - label: string; - - createView(descriptor?: GPUTextureViewDescriptor): GPUTextureView; - destroy(): undefined; - - readonly width: number; - readonly height: number; - readonly depthOrArrayLayers: number; - readonly mipLevelCount: number; - readonly sampleCount: number; - readonly dimension: GPUTextureDimension; - readonly format: GPUTextureFormat; - readonly usage: GPUTextureUsageFlags; -} - -/** @category WebGPU */ -declare interface GPUTextureDescriptor extends GPUObjectDescriptorBase { - size: GPUExtent3D; - mipLevelCount?: number; - sampleCount?: number; - dimension?: GPUTextureDimension; - format: GPUTextureFormat; - usage: GPUTextureUsageFlags; - viewFormats?: GPUTextureFormat[]; -} - -/** @category WebGPU */ -declare type GPUTextureDimension = "1d" | "2d" | "3d"; - -/** @category WebGPU */ -declare type GPUTextureUsageFlags = number; - -/** @category WebGPU */ -declare class GPUTextureUsage { - static COPY_SRC: 0x01; - static COPY_DST: 0x02; - static TEXTURE_BINDING: 0x04; - static STORAGE_BINDING: 0x08; - static RENDER_ATTACHMENT: 0x10; -} - -/** @category WebGPU */ -declare class GPUTextureView implements GPUObjectBase { - label: string; -} - -/** @category WebGPU */ -declare interface GPUTextureViewDescriptor extends GPUObjectDescriptorBase { - format?: GPUTextureFormat; - dimension?: GPUTextureViewDimension; - aspect?: GPUTextureAspect; - baseMipLevel?: number; - mipLevelCount?: number; - baseArrayLayer?: number; - arrayLayerCount?: number; -} - -/** @category WebGPU */ -declare type GPUTextureViewDimension = - | "1d" - | "2d" - | "2d-array" - | "cube" - | "cube-array" - | "3d"; - -/** @category WebGPU */ -declare type GPUTextureAspect = "all" | "stencil-only" | "depth-only"; - -/** @category WebGPU */ -declare type GPUTextureFormat = - | "r8unorm" - | "r8snorm" - | "r8uint" - | "r8sint" - | "r16uint" - | "r16sint" - | "r16float" - | "rg8unorm" - | "rg8snorm" - | "rg8uint" - | "rg8sint" - | "r32uint" - | "r32sint" - | "r32float" - | "rg16uint" - | "rg16sint" - | "rg16float" - | "rgba8unorm" - | "rgba8unorm-srgb" - | "rgba8snorm" - | "rgba8uint" - | "rgba8sint" - | "bgra8unorm" - | "bgra8unorm-srgb" - | "rgb9e5ufloat" - | "rgb10a2unorm" - | "rg11b10ufloat" - | "rg32uint" - | "rg32sint" - | "rg32float" - | "rgba16uint" - | "rgba16sint" - | "rgba16float" - | "rgba32uint" - | "rgba32sint" - | "rgba32float" - | "stencil8" - | "depth16unorm" - | "depth24plus" - | "depth24plus-stencil8" - | "depth32float" - | "depth32float-stencil8" - | "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" - | "etc2-rgb8unorm" - | "etc2-rgb8unorm-srgb" - | "etc2-rgb8a1unorm" - | "etc2-rgb8a1unorm-srgb" - | "etc2-rgba8unorm" - | "etc2-rgba8unorm-srgb" - | "eac-r11unorm" - | "eac-r11snorm" - | "eac-rg11unorm" - | "eac-rg11snorm" - | "astc-4x4-unorm" - | "astc-4x4-unorm-srgb" - | "astc-5x4-unorm" - | "astc-5x4-unorm-srgb" - | "astc-5x5-unorm" - | "astc-5x5-unorm-srgb" - | "astc-6x5-unorm" - | "astc-6x5-unorm-srgb" - | "astc-6x6-unorm" - | "astc-6x6-unorm-srgb" - | "astc-8x5-unorm" - | "astc-8x5-unorm-srgb" - | "astc-8x6-unorm" - | "astc-8x6-unorm-srgb" - | "astc-8x8-unorm" - | "astc-8x8-unorm-srgb" - | "astc-10x5-unorm" - | "astc-10x5-unorm-srgb" - | "astc-10x6-unorm" - | "astc-10x6-unorm-srgb" - | "astc-10x8-unorm" - | "astc-10x8-unorm-srgb" - | "astc-10x10-unorm" - | "astc-10x10-unorm-srgb" - | "astc-12x10-unorm" - | "astc-12x10-unorm-srgb" - | "astc-12x12-unorm" - | "astc-12x12-unorm-srgb"; - -/** @category WebGPU */ -declare class GPUSampler implements GPUObjectBase { - label: string; -} - -/** @category WebGPU */ -declare interface GPUSamplerDescriptor extends GPUObjectDescriptorBase { - addressModeU?: GPUAddressMode; - addressModeV?: GPUAddressMode; - addressModeW?: GPUAddressMode; - magFilter?: GPUFilterMode; - minFilter?: GPUFilterMode; - mipmapFilter?: GPUMipmapFilterMode; - lodMinClamp?: number; - lodMaxClamp?: number; - compare?: GPUCompareFunction; - maxAnisotropy?: number; -} - -/** @category WebGPU */ -declare type GPUAddressMode = "clamp-to-edge" | "repeat" | "mirror-repeat"; - -/** @category WebGPU */ -declare type GPUFilterMode = "nearest" | "linear"; - -/** @category WebGPU */ -declare type GPUMipmapFilterMode = "nearest" | "linear"; - -/** @category WebGPU */ -declare type GPUCompareFunction = - | "never" - | "less" - | "equal" - | "less-equal" - | "greater" - | "not-equal" - | "greater-equal" - | "always"; - -/** @category WebGPU */ -declare class GPUBindGroupLayout implements GPUObjectBase { - label: string; -} - -/** @category WebGPU */ -declare interface GPUBindGroupLayoutDescriptor extends GPUObjectDescriptorBase { - entries: GPUBindGroupLayoutEntry[]; -} - -/** @category WebGPU */ -declare interface GPUBindGroupLayoutEntry { - binding: number; - visibility: GPUShaderStageFlags; - - buffer?: GPUBufferBindingLayout; - sampler?: GPUSamplerBindingLayout; - texture?: GPUTextureBindingLayout; - storageTexture?: GPUStorageTextureBindingLayout; -} - -/** @category WebGPU */ -declare type GPUShaderStageFlags = number; - -/** @category WebGPU */ -declare class GPUShaderStage { - static VERTEX: 0x1; - static FRAGMENT: 0x2; - static COMPUTE: 0x4; -} - -/** @category WebGPU */ -declare interface GPUBufferBindingLayout { - type?: GPUBufferBindingType; - hasDynamicOffset?: boolean; - minBindingSize?: number; -} - -/** @category WebGPU */ -declare type GPUBufferBindingType = "uniform" | "storage" | "read-only-storage"; - -/** @category WebGPU */ -declare interface GPUSamplerBindingLayout { - type?: GPUSamplerBindingType; -} - -/** @category WebGPU */ -declare type GPUSamplerBindingType = - | "filtering" - | "non-filtering" - | "comparison"; - -/** @category WebGPU */ -declare interface GPUTextureBindingLayout { - sampleType?: GPUTextureSampleType; - viewDimension?: GPUTextureViewDimension; - multisampled?: boolean; -} - -/** @category WebGPU */ -declare type GPUTextureSampleType = - | "float" - | "unfilterable-float" - | "depth" - | "sint" - | "uint"; - -/** @category WebGPU */ -declare type GPUStorageTextureAccess = "write-only"; - -/** @category WebGPU */ -declare interface GPUStorageTextureBindingLayout { - access: GPUStorageTextureAccess; - format: GPUTextureFormat; - viewDimension?: GPUTextureViewDimension; -} - -/** @category WebGPU */ -declare class GPUBindGroup implements GPUObjectBase { - label: string; -} - -/** @category WebGPU */ -declare interface GPUBindGroupDescriptor extends GPUObjectDescriptorBase { - layout: GPUBindGroupLayout; - entries: GPUBindGroupEntry[]; -} - -/** @category WebGPU */ -declare type GPUBindingResource = - | GPUSampler - | GPUTextureView - | GPUBufferBinding; - -/** @category WebGPU */ -declare interface GPUBindGroupEntry { - binding: number; - resource: GPUBindingResource; -} - -/** @category WebGPU */ -declare interface GPUBufferBinding { - buffer: GPUBuffer; - offset?: number; - size?: number; -} - -/** @category WebGPU */ -declare class GPUPipelineLayout implements GPUObjectBase { - label: string; -} - -/** @category WebGPU */ -declare interface GPUPipelineLayoutDescriptor extends GPUObjectDescriptorBase { - bindGroupLayouts: GPUBindGroupLayout[]; -} - -/** @category WebGPU */ -declare type GPUCompilationMessageType = "error" | "warning" | "info"; - -/** @category WebGPU */ -declare interface GPUCompilationMessage { - readonly message: string; - readonly type: GPUCompilationMessageType; - readonly lineNum: number; - readonly linePos: number; -} - -/** @category WebGPU */ -declare interface GPUCompilationInfo { - readonly messages: ReadonlyArray<GPUCompilationMessage>; -} - -/** @category WebGPU */ -declare class GPUShaderModule implements GPUObjectBase { - label: string; - - compilationInfo(): Promise<GPUCompilationInfo>; -} - -/** @category WebGPU */ -declare interface GPUShaderModuleDescriptor extends GPUObjectDescriptorBase { - code: string; - sourceMap?: any; -} - -/** @category WebGPU */ -declare type GPUAutoLayoutMode = "auto"; - -/** @category WebGPU */ -declare interface GPUPipelineDescriptorBase extends GPUObjectDescriptorBase { - layout: GPUPipelineLayout | GPUAutoLayoutMode; -} - -/** @category WebGPU */ -declare interface GPUPipelineBase { - getBindGroupLayout(index: number): GPUBindGroupLayout; -} - -/** @category WebGPU */ -declare interface GPUProgrammableStage { - module: GPUShaderModule; - entryPoint: string; -} - -/** @category WebGPU */ -declare class GPUComputePipeline implements GPUObjectBase, GPUPipelineBase { - label: string; - - getBindGroupLayout(index: number): GPUBindGroupLayout; -} - -/** @category WebGPU */ -declare interface GPUComputePipelineDescriptor - extends GPUPipelineDescriptorBase { - compute: GPUProgrammableStage; -} - -/** @category WebGPU */ -declare class GPURenderPipeline implements GPUObjectBase, GPUPipelineBase { - label: string; - - getBindGroupLayout(index: number): GPUBindGroupLayout; -} - -/** @category WebGPU */ -declare interface GPURenderPipelineDescriptor - extends GPUPipelineDescriptorBase { - vertex: GPUVertexState; - primitive?: GPUPrimitiveState; - depthStencil?: GPUDepthStencilState; - multisample?: GPUMultisampleState; - fragment?: GPUFragmentState; -} - -/** @category WebGPU */ -declare interface GPUPrimitiveState { - topology?: GPUPrimitiveTopology; - stripIndexFormat?: GPUIndexFormat; - frontFace?: GPUFrontFace; - cullMode?: GPUCullMode; - unclippedDepth?: boolean; -} - -/** @category WebGPU */ -declare type GPUPrimitiveTopology = - | "point-list" - | "line-list" - | "line-strip" - | "triangle-list" - | "triangle-strip"; - -/** @category WebGPU */ -declare type GPUFrontFace = "ccw" | "cw"; - -/** @category WebGPU */ -declare type GPUCullMode = "none" | "front" | "back"; - -/** @category WebGPU */ -declare interface GPUMultisampleState { - count?: number; - mask?: number; - alphaToCoverageEnabled?: boolean; -} - -/** @category WebGPU */ -declare interface GPUFragmentState extends GPUProgrammableStage { - targets: (GPUColorTargetState | null)[]; -} - -/** @category WebGPU */ -declare interface GPUColorTargetState { - format: GPUTextureFormat; - - blend?: GPUBlendState; - writeMask?: GPUColorWriteFlags; -} - -/** @category WebGPU */ -declare interface GPUBlendState { - color: GPUBlendComponent; - alpha: GPUBlendComponent; -} - -/** @category WebGPU */ -declare type GPUColorWriteFlags = number; - -/** @category WebGPU */ -declare class GPUColorWrite { - static RED: 0x1; - static GREEN: 0x2; - static BLUE: 0x4; - static ALPHA: 0x8; - static ALL: 0xF; -} - -/** @category WebGPU */ -declare interface GPUBlendComponent { - operation?: GPUBlendOperation; - srcFactor?: GPUBlendFactor; - dstFactor?: GPUBlendFactor; -} - -/** @category WebGPU */ -declare type GPUBlendFactor = - | "zero" - | "one" - | "src" - | "one-minus-src" - | "src-alpha" - | "one-minus-src-alpha" - | "dst" - | "one-minus-dst" - | "dst-alpha" - | "one-minus-dst-alpha" - | "src-alpha-saturated" - | "constant" - | "one-minus-constant"; - -/** @category WebGPU */ -declare type GPUBlendOperation = - | "add" - | "subtract" - | "reverse-subtract" - | "min" - | "max"; - -/** @category WebGPU */ -declare interface GPUDepthStencilState { - format: GPUTextureFormat; - - depthWriteEnabled?: boolean; - depthCompare?: GPUCompareFunction; - - stencilFront?: GPUStencilFaceState; - stencilBack?: GPUStencilFaceState; - - stencilReadMask?: number; - stencilWriteMask?: number; - - depthBias?: number; - depthBiasSlopeScale?: number; - depthBiasClamp?: number; -} - -/** @category WebGPU */ -declare interface GPUStencilFaceState { - compare?: GPUCompareFunction; - failOp?: GPUStencilOperation; - depthFailOp?: GPUStencilOperation; - passOp?: GPUStencilOperation; -} - -/** @category WebGPU */ -declare type GPUStencilOperation = - | "keep" - | "zero" - | "replace" - | "invert" - | "increment-clamp" - | "decrement-clamp" - | "increment-wrap" - | "decrement-wrap"; - -/** @category WebGPU */ -declare type GPUIndexFormat = "uint16" | "uint32"; - -/** @category WebGPU */ -declare type GPUVertexFormat = - | "uint8x2" - | "uint8x4" - | "sint8x2" - | "sint8x4" - | "unorm8x2" - | "unorm8x4" - | "snorm8x2" - | "snorm8x4" - | "uint16x2" - | "uint16x4" - | "sint16x2" - | "sint16x4" - | "unorm16x2" - | "unorm16x4" - | "snorm16x2" - | "snorm16x4" - | "float16x2" - | "float16x4" - | "float32" - | "float32x2" - | "float32x3" - | "float32x4" - | "uint32" - | "uint32x2" - | "uint32x3" - | "uint32x4" - | "sint32" - | "sint32x2" - | "sint32x3" - | "sint32x4"; - -/** @category WebGPU */ -declare type GPUVertexStepMode = "vertex" | "instance"; - -/** @category WebGPU */ -declare interface GPUVertexState extends GPUProgrammableStage { - buffers?: (GPUVertexBufferLayout | null)[]; -} - -/** @category WebGPU */ -declare interface GPUVertexBufferLayout { - arrayStride: number; - stepMode?: GPUVertexStepMode; - attributes: GPUVertexAttribute[]; -} - -/** @category WebGPU */ -declare interface GPUVertexAttribute { - format: GPUVertexFormat; - offset: number; - - shaderLocation: number; -} - -/** @category WebGPU */ -declare interface GPUImageDataLayout { - offset?: number; - bytesPerRow?: number; - rowsPerImage?: number; -} - -/** @category WebGPU */ -declare class GPUCommandBuffer implements GPUObjectBase { - label: string; -} - -/** @category WebGPU */ -declare interface GPUCommandBufferDescriptor extends GPUObjectDescriptorBase {} - -/** @category WebGPU */ -declare class GPUCommandEncoder implements GPUObjectBase { - label: string; - - beginRenderPass(descriptor: GPURenderPassDescriptor): GPURenderPassEncoder; - beginComputePass( - descriptor?: GPUComputePassDescriptor, - ): GPUComputePassEncoder; - - copyBufferToBuffer( - source: GPUBuffer, - sourceOffset: number, - destination: GPUBuffer, - destinationOffset: number, - size: number, - ): undefined; - - copyBufferToTexture( - source: GPUImageCopyBuffer, - destination: GPUImageCopyTexture, - copySize: GPUExtent3D, - ): undefined; - - copyTextureToBuffer( - source: GPUImageCopyTexture, - destination: GPUImageCopyBuffer, - copySize: GPUExtent3D, - ): undefined; - - copyTextureToTexture( - source: GPUImageCopyTexture, - destination: GPUImageCopyTexture, - copySize: GPUExtent3D, - ): undefined; - - clearBuffer( - destination: GPUBuffer, - destinationOffset?: number, - size?: number, - ): undefined; - - pushDebugGroup(groupLabel: string): undefined; - popDebugGroup(): undefined; - insertDebugMarker(markerLabel: string): undefined; - - writeTimestamp(querySet: GPUQuerySet, queryIndex: number): undefined; - - resolveQuerySet( - querySet: GPUQuerySet, - firstQuery: number, - queryCount: number, - destination: GPUBuffer, - destinationOffset: number, - ): undefined; - - finish(descriptor?: GPUCommandBufferDescriptor): GPUCommandBuffer; -} - -/** @category WebGPU */ -declare interface GPUCommandEncoderDescriptor extends GPUObjectDescriptorBase {} - -/** @category WebGPU */ -declare interface GPUImageCopyBuffer extends GPUImageDataLayout { - buffer: GPUBuffer; -} - -/** @category WebGPU */ -declare interface GPUImageCopyTexture { - texture: GPUTexture; - mipLevel?: number; - origin?: GPUOrigin3D; - aspect?: GPUTextureAspect; -} - -/** @category WebGPU */ -interface GPUProgrammablePassEncoder { - setBindGroup( - index: number, - bindGroup: GPUBindGroup, - dynamicOffsets?: number[], - ): undefined; - - setBindGroup( - index: number, - bindGroup: GPUBindGroup, - dynamicOffsetsData: Uint32Array, - dynamicOffsetsDataStart: number, - dynamicOffsetsDataLength: number, - ): undefined; - - pushDebugGroup(groupLabel: string): undefined; - popDebugGroup(): undefined; - insertDebugMarker(markerLabel: string): undefined; -} - -/** @category WebGPU */ -declare class GPUComputePassEncoder - implements GPUObjectBase, GPUProgrammablePassEncoder { - label: string; - setBindGroup( - index: number, - bindGroup: GPUBindGroup, - dynamicOffsets?: number[], - ): undefined; - setBindGroup( - index: number, - bindGroup: GPUBindGroup, - dynamicOffsetsData: Uint32Array, - dynamicOffsetsDataStart: number, - dynamicOffsetsDataLength: number, - ): undefined; - pushDebugGroup(groupLabel: string): undefined; - popDebugGroup(): undefined; - insertDebugMarker(markerLabel: string): undefined; - setPipeline(pipeline: GPUComputePipeline): undefined; - dispatchWorkgroups(x: number, y?: number, z?: number): undefined; - dispatchWorkgroupsIndirect( - indirectBuffer: GPUBuffer, - indirectOffset: number, - ): undefined; - - beginPipelineStatisticsQuery( - querySet: GPUQuerySet, - queryIndex: number, - ): undefined; - endPipelineStatisticsQuery(): undefined; - - writeTimestamp(querySet: GPUQuerySet, queryIndex: number): undefined; - - end(): undefined; -} - -/** @category WebGPU */ -declare interface GPUComputePassDescriptor extends GPUObjectDescriptorBase {} - -/** @category WebGPU */ -interface GPURenderEncoderBase { - setPipeline(pipeline: GPURenderPipeline): undefined; - - setIndexBuffer( - buffer: GPUBuffer, - indexFormat: GPUIndexFormat, - offset?: number, - size?: number, - ): undefined; - setVertexBuffer( - slot: number, - buffer: GPUBuffer, - offset?: number, - size?: number, - ): undefined; - - draw( - vertexCount: number, - instanceCount?: number, - firstVertex?: number, - firstInstance?: number, - ): undefined; - drawIndexed( - indexCount: number, - instanceCount?: number, - firstIndex?: number, - baseVertex?: number, - firstInstance?: number, - ): undefined; - - drawIndirect(indirectBuffer: GPUBuffer, indirectOffset: number): undefined; - drawIndexedIndirect( - indirectBuffer: GPUBuffer, - indirectOffset: number, - ): undefined; -} - -/** @category WebGPU */ -declare class GPURenderPassEncoder - implements GPUObjectBase, GPUProgrammablePassEncoder, GPURenderEncoderBase { - label: string; - setBindGroup( - index: number, - bindGroup: GPUBindGroup, - dynamicOffsets?: number[], - ): undefined; - setBindGroup( - index: number, - bindGroup: GPUBindGroup, - dynamicOffsetsData: Uint32Array, - dynamicOffsetsDataStart: number, - dynamicOffsetsDataLength: number, - ): undefined; - pushDebugGroup(groupLabel: string): undefined; - popDebugGroup(): undefined; - insertDebugMarker(markerLabel: string): undefined; - setPipeline(pipeline: GPURenderPipeline): undefined; - setIndexBuffer( - buffer: GPUBuffer, - indexFormat: GPUIndexFormat, - offset?: number, - size?: number, - ): undefined; - setVertexBuffer( - slot: number, - buffer: GPUBuffer, - offset?: number, - size?: number, - ): undefined; - draw( - vertexCount: number, - instanceCount?: number, - firstVertex?: number, - firstInstance?: number, - ): undefined; - drawIndexed( - indexCount: number, - instanceCount?: number, - firstIndex?: number, - baseVertex?: number, - firstInstance?: number, - ): undefined; - drawIndirect(indirectBuffer: GPUBuffer, indirectOffset: number): undefined; - drawIndexedIndirect( - indirectBuffer: GPUBuffer, - indirectOffset: number, - ): undefined; - - setViewport( - x: number, - y: number, - width: number, - height: number, - minDepth: number, - maxDepth: number, - ): undefined; - - setScissorRect( - x: number, - y: number, - width: number, - height: number, - ): undefined; - - setBlendConstant(color: GPUColor): undefined; - setStencilReference(reference: number): undefined; - - beginOcclusionQuery(queryIndex: number): undefined; - endOcclusionQuery(): undefined; - - beginPipelineStatisticsQuery( - querySet: GPUQuerySet, - queryIndex: number, - ): undefined; - endPipelineStatisticsQuery(): undefined; - - writeTimestamp(querySet: GPUQuerySet, queryIndex: number): undefined; - - executeBundles(bundles: GPURenderBundle[]): undefined; - end(): undefined; -} - -/** @category WebGPU */ -declare interface GPURenderPassDescriptor extends GPUObjectDescriptorBase { - colorAttachments: (GPURenderPassColorAttachment | null)[]; - depthStencilAttachment?: GPURenderPassDepthStencilAttachment; -} - -/** @category WebGPU */ -declare interface GPURenderPassColorAttachment { - view: GPUTextureView; - resolveTarget?: GPUTextureView; - - clearValue?: GPUColor; - loadOp: GPULoadOp; - storeOp: GPUStoreOp; -} - -/** @category WebGPU */ -declare interface GPURenderPassDepthStencilAttachment { - view: GPUTextureView; - - depthClearValue?: number; - depthLoadOp?: GPULoadOp; - depthStoreOp?: GPUStoreOp; - depthReadOnly?: boolean; - - stencilClearValue?: number; - stencilLoadOp?: GPULoadOp; - stencilStoreOp?: GPUStoreOp; - stencilReadOnly?: boolean; -} - -/** @category WebGPU */ -declare type GPULoadOp = "load" | "clear"; - -/** @category WebGPU */ -declare type GPUStoreOp = "store" | "discard"; - -/** @category WebGPU */ -declare class GPURenderBundle implements GPUObjectBase { - label: string; -} - -/** @category WebGPU */ -declare interface GPURenderBundleDescriptor extends GPUObjectDescriptorBase {} - -/** @category WebGPU */ -declare class GPURenderBundleEncoder - implements GPUObjectBase, GPUProgrammablePassEncoder, GPURenderEncoderBase { - label: string; - draw( - vertexCount: number, - instanceCount?: number, - firstVertex?: number, - firstInstance?: number, - ): undefined; - drawIndexed( - indexCount: number, - instanceCount?: number, - firstIndex?: number, - baseVertex?: number, - firstInstance?: number, - ): undefined; - drawIndexedIndirect( - indirectBuffer: GPUBuffer, - indirectOffset: number, - ): undefined; - drawIndirect(indirectBuffer: GPUBuffer, indirectOffset: number): undefined; - insertDebugMarker(markerLabel: string): undefined; - popDebugGroup(): undefined; - pushDebugGroup(groupLabel: string): undefined; - setBindGroup( - index: number, - bindGroup: GPUBindGroup, - dynamicOffsets?: number[], - ): undefined; - setBindGroup( - index: number, - bindGroup: GPUBindGroup, - dynamicOffsetsData: Uint32Array, - dynamicOffsetsDataStart: number, - dynamicOffsetsDataLength: number, - ): undefined; - setIndexBuffer( - buffer: GPUBuffer, - indexFormat: GPUIndexFormat, - offset?: number, - size?: number, - ): undefined; - setPipeline(pipeline: GPURenderPipeline): undefined; - setVertexBuffer( - slot: number, - buffer: GPUBuffer, - offset?: number, - size?: number, - ): undefined; - - finish(descriptor?: GPURenderBundleDescriptor): GPURenderBundle; -} - -/** @category WebGPU */ -declare interface GPURenderPassLayout extends GPUObjectDescriptorBase { - colorFormats: (GPUTextureFormat | null)[]; - depthStencilFormat?: GPUTextureFormat; - sampleCount?: number; -} - -/** @category WebGPU */ -declare interface GPURenderBundleEncoderDescriptor extends GPURenderPassLayout { - depthReadOnly?: boolean; - stencilReadOnly?: boolean; -} - -/** @category WebGPU */ -declare class GPUQueue implements GPUObjectBase { - label: string; - - submit(commandBuffers: GPUCommandBuffer[]): undefined; - - onSubmittedWorkDone(): Promise<undefined>; - - writeBuffer( - buffer: GPUBuffer, - bufferOffset: number, - data: BufferSource, - dataOffset?: number, - size?: number, - ): undefined; - - writeTexture( - destination: GPUImageCopyTexture, - data: BufferSource, - dataLayout: GPUImageDataLayout, - size: GPUExtent3D, - ): undefined; -} - -/** @category WebGPU */ -declare class GPUQuerySet implements GPUObjectBase { - label: string; - - destroy(): undefined; - - readonly type: GPUQueryType; - readonly count: number; -} - -/** @category WebGPU */ -declare interface GPUQuerySetDescriptor extends GPUObjectDescriptorBase { - type: GPUQueryType; - count: number; - pipelineStatistics?: GPUPipelineStatisticName[]; -} - -/** @category WebGPU */ -declare type GPUQueryType = "occlusion" | "pipeline-statistics" | "timestamp"; - -/** @category WebGPU */ -declare type GPUPipelineStatisticName = - | "vertex-shader-invocations" - | "clipper-invocations" - | "clipper-primitives-out" - | "fragment-shader-invocations" - | "compute-shader-invocations"; - -/** @category WebGPU */ -declare type GPUDeviceLostReason = "destroyed"; - -/** @category WebGPU */ -declare interface GPUDeviceLostInfo { - readonly reason: GPUDeviceLostReason | undefined; - readonly message: string; -} - -/** @category WebGPU */ -declare class GPUError { - readonly message: string; -} - -/** @category WebGPU */ -declare class GPUOutOfMemoryError extends GPUError { - constructor(message: string); -} - -/** @category WebGPU */ -declare class GPUValidationError extends GPUError { - constructor(message: string); -} - -/** @category WebGPU */ -declare type GPUErrorFilter = "out-of-memory" | "validation"; - -/** @category WebGPU */ -declare interface GPUColorDict { - r: number; - g: number; - b: number; - a: number; -} - -/** @category WebGPU */ -declare type GPUColor = number[] | GPUColorDict; - -/** @category WebGPU */ -declare interface GPUOrigin3DDict { - x?: number; - y?: number; - z?: number; -} - -/** @category WebGPU */ -declare type GPUOrigin3D = number[] | GPUOrigin3DDict; - -/** @category WebGPU */ -declare interface GPUExtent3DDict { - width: number; - height?: number; - depthOrArrayLayers?: number; -} - -/** @category WebGPU */ -declare type GPUExtent3D = number[] | GPUExtent3DDict; diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs index e8fe58c26..63b4e269d 100644 --- a/cli/tsc/mod.rs +++ b/cli/tsc/mod.rs @@ -89,7 +89,6 @@ pub fn get_types_declaration_file_text(unstable: bool) -> String { "deno.url", "deno.web", "deno.fetch", - "deno.webgpu", "deno.websocket", "deno.webstorage", "deno.crypto", |
