From 38afbe3d4a3c81472d089d56b4735b1328632711 Mon Sep 17 00:00:00 2001 From: Julian Ramirez Ruiseco Date: Sun, 4 Oct 2026 17:27:12 -0400 Subject: [PATCH] Use borrowed WASM slices for WebGPU buffer writes --- wgpu/src/backend/webgpu.rs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/wgpu/src/backend/webgpu.rs b/wgpu/src/backend/webgpu.rs index a8b976a185d..29523d49240 100644 --- a/wgpu/src/backend/webgpu.rs +++ b/wgpu/src/backend/webgpu.rs @@ -2512,20 +2512,13 @@ impl dispatch::QueueInterface for WebQueue { data: &[u8], ) { let buffer = buffer.as_webgpu(); - /* Skip the copy once gecko allows BufferSource instead of ArrayBuffer - self.inner.write_buffer_with_f64_and_u8_array_and_f64_and_f64( - &buffer.buffer, - offset as f64, - data, - 0f64, - data.len() as f64, - ); - */ + // writeBuffer snapshots the source synchronously. The slice binding passes a + // view of WASM memory, so no intermediate JavaScript allocation is needed. self.inner - .write_buffer_with_f64_and_buffer_source_and_f64_and_f64( + .write_buffer_with_f64_and_u8_slice_and_f64_and_f64( &buffer.inner, offset as f64, - &js_sys::Uint8Array::from(data).buffer(), + data, 0f64, data.len() as f64, )