emdawnwebgpu: various correctness fixes found in demo
Found when trying to build/run
https://github.com/kainino0x/webgpu-cross-platform-demo/tree/dawnwasm
- handle null messages in async completion
- add missing .object to copies to/from buffers
- fix unused parameter warnings
- fix reference to nonexistent JS variable (caught by Closure Compiler)
- handle wgpuAdapterRequestDevice2 with null descriptor (caught by ASan)
- add deps on withStackSave (needed in newer Emscripten versions;
surfaces "user library symbol ... depends on internal symbol" warning)
Bug: none
Change-Id: I561b6f371cd6514b9b473b358fbcfcffaecdf919
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/205615
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
diff --git a/third_party/emdawnwebgpu/library_webgpu.js b/third_party/emdawnwebgpu/library_webgpu.js
index 0c5e132..ea3d450 100644
--- a/third_party/emdawnwebgpu/library_webgpu.js
+++ b/third_party/emdawnwebgpu/library_webgpu.js
@@ -159,7 +159,7 @@
var layoutPtr = ptr + {{{ C_STRUCTS.WGPUImageCopyBuffer.layout }}};
var bufferCopyView = WebGPU.makeTextureDataLayout(layoutPtr);
bufferCopyView["buffer"] = WebGPU._tableGet(
- {{{ makeGetValue('ptr', C_STRUCTS.WGPUImageCopyBuffer.buffer, '*') }}});
+ {{{ makeGetValue('ptr', C_STRUCTS.WGPUImageCopyBuffer.buffer, '*') }}}).object;
return bufferCopyView;
},
@@ -608,7 +608,7 @@
},
emwgpuAdapterRequestDevice__i53abi: false,
- emwgpuAdapterRequestDevice__deps: ['$callUserCallback', '$stringToUTF8OnStack', 'emwgpuCreateQueue', 'emwgpuOnDeviceLostCompleted', 'emwgpuOnRequestDeviceCompleted', 'emwgpuOnUncapturedError'],
+ emwgpuAdapterRequestDevice__deps: ['$withStackSave', '$callUserCallback', '$stringToUTF8OnStack', 'emwgpuCreateQueue', 'emwgpuOnDeviceLostCompleted', 'emwgpuOnRequestDeviceCompleted', 'emwgpuOnUncapturedError'],
emwgpuAdapterRequestDevice: (
adapterPtr,
futureIdL, futureIdH,
@@ -736,7 +736,7 @@
withStackSave(() => {
var messagePtr = stringToUTF8OnStack(ex.message);
_emwgpuOnRequestDeviceCompleted(futureIdL, futureIdH, {{{ gpu.RequestDeviceStatus.Error }}}, devicePtr, messagePtr);
- if (deviceLostFutureId) {
+ if (hasDeviceLostFutureId) {
_emwgpuOnDeviceLostCompleted(deviceLostFutureIdL, deviceLostFutureIdH, {{{ gpu.DeviceLostReason.FailedCreation }}}, messagePtr);
}
});
@@ -1086,8 +1086,8 @@
wgpuCommandEncoderCopyBufferToBuffer: (encoderPtr, srcPtr, srcOffset, dstPtr, dstOffset, size) => {
var commandEncoder = WebGPU._tableGet(encoderPtr);
- var src = WebGPU._tableGet(srcPtr);
- var dst = WebGPU._tableGet(dstPtr);
+ var src = WebGPU._tableGet(srcPtr).object;
+ var dst = WebGPU._tableGet(dstPtr).object;
commandEncoder.copyBufferToBuffer(src, srcOffset, dst, dstOffset, size);
},
@@ -1901,7 +1901,7 @@
},
emwgpuInstanceRequestAdapter__i53abi: false,
- emwgpuInstanceRequestAdapter__deps: ['$callUserCallback', '$stringToUTF8OnStack', 'emwgpuCreateAdapter', 'emwgpuOnRequestAdapterCompleted'],
+ emwgpuInstanceRequestAdapter__deps: ['$withStackSave', '$callUserCallback', '$stringToUTF8OnStack', 'emwgpuCreateAdapter', 'emwgpuOnRequestAdapterCompleted'],
emwgpuInstanceRequestAdapter: (instancePtr, futureIdL, futureIdH, options) => {
var opts;
if (options) {