perf(webgpu): range-flush only live TLAS metadata slots (#130) #149

Merged
catbot merged 1 commit from claude/issue-130 into master 2026-06-18 15:56:46 +02:00

View file

@ -159,7 +159,11 @@ void RenderingElement3D::BuildTLASUpload(WebGPUCommandEncoderRef /*cmd*/, std::u
runOwned = currOwned;
}
tlas.metadataBuffer.FlushDevice();
// Only primitiveCount slots are live; the buffer is padded to kNPadded
// (65536). Flushing the whole thing wgpuWriteBuffers all 256 KB through
// the WASM->JS staging path every frame — ~100-250x waste for a
// few-hundred-instance scene. Range-flush just the live entries.
tlas.metadataBuffer.FlushDeviceRange(0, 0, primitiveCount * sizeof(std::uint32_t));
}
void RenderingElement3D::BuildTLASBuild(WebGPUCommandEncoderRef /*cmd*/, std::uint32_t index) {