/** * gpu_utils.ts – WebGPU device management and buffer helpers. */ /** * Shape-keyed GPUBuffer pool (EVM-8). Hot paths (e.g. `readBuffer` staging) * allocated and destroyed a GPUBuffer on EVERY call — costly under load. The * pool reuses buffers keyed by (byteSize, usage): `acquire` hands back a free * buffer of that shape or creates one; `release` returns it for reuse. Buffers * of one shape are interchangeable, so reuse is always safe. */ export declare class BufferPool { private readonly device; private readonly _free; constructor(device: GPUDevice); private _key; /** A free buffer of this shape, or a freshly created one. */ acquire(byteSize: number, usage: number): GPUBuffer; /** Return a buffer to the pool for later reuse (do not destroy it yourself). */ release(buffer: GPUBuffer, byteSize: number, usage: number): void; /** Number of pooled (free) buffers across all shapes. */ get freeCount(): number; /** Destroy every pooled buffer and empty the pool. */ clear(): void; } export interface InitWebGPUOptions { powerPreference?: 'high-performance' | 'low-power'; } export interface InitWebGPUResult { device: GPUDevice; adapter: GPUAdapter; } export declare function initWebGPU(opts?: InitWebGPUOptions): Promise; export declare function createStorageBuffer(device: GPUDevice, data: Float32Array | Uint32Array | number[], readable?: boolean): GPUBuffer; export declare function createEmptyStorageBuffer(device: GPUDevice, byteSize: number, readable?: boolean): GPUBuffer; export declare function createUniformBuffer(device: GPUDevice, data: ArrayBuffer | ArrayBufferView): GPUBuffer; export declare function readBuffer(device: GPUDevice, srcBuffer: GPUBuffer, byteSize: number): Promise; export declare function uploadBuffer(device: GPUDevice, buffer: GPUBuffer, data: Float32Array, byteOffset?: number): void; export declare function createComputePipeline(device: GPUDevice, wgslSource: string, entryPoint: string): GPUComputePipeline; export declare function createBindGroup(device: GPUDevice, pipeline: GPUComputePipeline, buffers: GPUBuffer[], groupIndex?: number): GPUBindGroup; export declare function dispatchKernel(device: GPUDevice, pipeline: GPUComputePipeline, bindGroup: GPUBindGroup, workgroups: [number, number, number]): void; export declare function cdiv(a: number, b: number): number; //# sourceMappingURL=gpu_utils.d.ts.map