Skip to content

WasmGPU.compute.createPipeline

Summary

WasmGPU.compute.createPipeline builds a compute pipeline from WGSL source and optional explicit bind-group layouts. Use explicit bindGroups when you want deterministic layouts and predictable bind-group creation across browsers. If bindGroups is omitted, the pipeline is created with layout: "auto". The returned ComputePipeline wrapper also exposes helpers for bind-group creation.

Syntax

WasmGPU.compute.createPipeline(desc: ComputePipelineDescriptor): ComputePipeline
const pipeline = wgpu.compute.createPipeline(desc);

Parameters

Name Type Required Description
desc ComputePipelineDescriptor Yes Pipeline definition including WGSL code, entry point, constants, and optional explicit bind-group layouts.

Returns

ComputePipeline - Wrapper around the created GPUComputePipeline plus bind-group helper methods.

Type Details

ComputePipelineDescriptor

type ComputePipelineDescriptor = {
    label?: string;
    code: string;
    entryPoint?: string;
    constants?: Record<string, number>;
    bindGroups?: ComputeBindGroupLayoutDescriptor[];
};

ComputeBindGroupLayoutDescriptor

type ComputeBindGroupLayoutDescriptor = {
    label?: string;
    entries: GPUBindGroupLayoutEntry[];
};

Example

const canvas = document.querySelector("canvas");
const wgpu = await WasmGPU.create(canvas);

const pipeline = wgpu.compute.createPipeline({
    label: "double-values",
    code: `
    @group(0) @binding(0) var<storage, read_write> data: array<f32>;
    @compute @workgroup_size(64)
    fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
        let i = gid.x;
        if (i < 1024u) { data[i] = data[i] * 2.0; }
    }`,
    bindGroups: [{
        entries: [{ binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: { type: "storage" } }]
    }]
});
console.log(pipeline);

See Also