/// import { HasReactive } from "@reactively/decorate"; import { Cache, ComposableShader } from "../util/Util.js"; import { BinOpModule } from "../util/BinOpModules.js"; /** @internal */ export interface ApplyScanBlocksArgs { device: GPUDevice; partialScan: GPUBuffer; blockSums: GPUBuffer; forceWorkgroupLength?: number; forceMaxWorkgroups?: number | undefined; label?: string; binOps?: BinOpModule; exclusiveLarge?: boolean; initialValue?: number; partialScanOffset?: number; blockSumsOffset?: number; scanOffset?: number; pipelineCache?: () => Cache; } /** Shader stage used in a prefix scan, applies block summaries to block elements * @internal */ export declare class ApplyScanBlocks extends HasReactive implements ComposableShader { partialScan: GPUBuffer; blockSums: GPUBuffer; forceWorkgroupLength?: number; binOps: BinOpModule; label: string; exclusiveLarge: boolean; initialValue: number; partialScanOffset: number; blockSumsOffset: number; scanOffset: number; private forceMaxWorkgroups?; private device; private usageContext; private pipelineCache?; constructor(params: ApplyScanBlocksArgs); commands(commandEncoder: GPUCommandEncoder): void; destroy(): void; private get partialScanSize(); /** Return enough dispatches to cover the source * `(multiple dispatches are needed for large sources) */ private get dispatchSizes(); private get maxWorkgroups(); private get registry(); private get pipeline(); private get bindGroups(); private createBindGroup; get result(): GPUBuffer; private get workgroupLength(); get debugBuffer(): GPUBuffer; private get uniforms(); private uniformsBuffer; private updateUniforms; private writeUniforms; }