]> zoso.dev Git - libnemo.git/commitdiff
Configure UBO buffer during static initialization.
authorChris Duncan <chris@zoso.dev>
Sat, 4 Jan 2025 10:42:48 +0000 (02:42 -0800)
committerChris Duncan <chris@zoso.dev>
Sat, 4 Jan 2025 10:42:48 +0000 (02:42 -0800)
src/lib/workers/powgpu.ts

index e727a997c2b41e1c5d3cbc186eff28e1b16cd5cf..05f26d69ce72615cb490c11a59218f9c26c5a0fb 100644 (file)
@@ -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
                                        },
                                },
                        ],