From ff9a0441f22ab8bb8830b55839a804f199644577 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Sat, 4 Jan 2025 02:42:48 -0800 Subject: [PATCH] Configure UBO buffer during static initialization. --- src/lib/workers/powgpu.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/lib/workers/powgpu.ts b/src/lib/workers/powgpu.ts index e727a99..05f26d6 100644 --- a/src/lib/workers/powgpu.ts +++ b/src/lib/workers/powgpu.ts @@ -221,6 +221,7 @@ export class PowGpu extends WorkerInterface { // Initialize WebGPU static #device: GPUDevice | null = null + static #uboBuffer: GPUBuffer static #gpuBuffer: GPUBuffer static #cpuBuffer: GPUBuffer static #bindGroupLayout: GPUBindGroupLayout @@ -242,6 +243,10 @@ export class PowGpu extends WorkerInterface { this.#device = device // Create buffers for writing GPU calculations and reading from Javascript + this.#uboBuffer = this.#device.createBuffer({ + size: 48, + usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST + }) this.#gpuBuffer = this.#device.createBuffer({ size: 16, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC @@ -308,11 +313,7 @@ export class PowGpu extends WorkerInterface { const random = crypto.getRandomValues(new Uint32Array(1))[0] uboView.setUint32(32, random, true) uboView.setUint32(36, threshold, true) - const uboBuffer = PowGpu.#device.createBuffer({ - size: uboView.byteLength, - usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST, - }) - PowGpu.#device.queue.writeBuffer(uboBuffer, 0, uboView) + PowGpu.#device.queue.writeBuffer(PowGpu.#uboBuffer, 0, uboView) // Work buffer const bindGroup = PowGpu.#device.createBindGroup({ @@ -321,13 +322,13 @@ export class PowGpu extends WorkerInterface { { binding: 0, resource: { - buffer: uboBuffer, + buffer: PowGpu.#uboBuffer }, }, { binding: 1, resource: { - buffer: PowGpu.#gpuBuffer, + buffer: PowGpu.#gpuBuffer }, }, ], -- 2.34.1