[dawn][emscripten] Implements onSubmittedWorkDone future entry point.
Bug: 372077545
Change-Id: I7748fc294a4d8d2e659902307742d89c7f3e4533
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/209895
Commit-Queue: Loko Kung <lokokung@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
diff --git a/third_party/emdawnwebgpu/library_webgpu.js b/third_party/emdawnwebgpu/library_webgpu.js
index 3e81bab..b4d9f3d 100644
--- a/third_party/emdawnwebgpu/library_webgpu.js
+++ b/third_party/emdawnwebgpu/library_webgpu.js
@@ -137,8 +137,8 @@
importJsDevice__deps: ['emwgpuCreateDevice', 'emwgpuCreateQueue'],
importJsDevice: (device, parentPtr = 0) => {
var queuePtr = _emwgpuCreateQueue(parentPtr);
- WebGPU.Internals.jsObjectInsert(queuePtr, device.queue);
var devicePtr = _emwgpuCreateDevice(parentPtr, queuePtr);
+ WebGPU.Internals.jsObjectInsert(queuePtr, device.queue);
WebGPU.Internals.jsObjectInsert(devicePtr, device);
return devicePtr;
},
@@ -1491,7 +1491,7 @@
return ptr;
},
- emwgpuDeviceCreateComputePipelineAsync__i53abi:false,
+ emwgpuDeviceCreateComputePipelineAsync__i53abi: false,
emwgpuDeviceCreateComputePipelineAsync__deps: ['emwgpuCreateComputePipeline', 'emwgpuOnCreateComputePipelineCompleted'],
emwgpuDeviceCreateComputePipelineAsync: (devicePtr, futureIdL, futureIdH, descriptor) => {
var desc = WebGPU.makeComputePipelineDesc(descriptor);
@@ -1601,7 +1601,7 @@
return ptr;
},
- emwgpuDeviceCreateRenderPipelineAsync__i53abi:false,
+ emwgpuDeviceCreateRenderPipelineAsync__i53abi: false,
emwgpuDeviceCreateRenderPipelineAsync__deps: ['emwgpuCreateRenderPipeline', 'emwgpuOnCreateRenderPipelineCompleted'],
emwgpuDeviceCreateRenderPipelineAsync: (devicePtr, futureIdL, futureIdH, descriptor) => {
var desc = WebGPU.makeRenderPipelineDesc(descriptor);
@@ -1956,22 +1956,19 @@
// Methods of Queue
// --------------------------------------------------------------------------
- wgpuQueueOnSubmittedWorkDone__deps: ['$callUserCallback'],
- wgpuQueueOnSubmittedWorkDone: (queuePtr, callback, userdata) => {
+ emwgpuQueueOnSubmittedWorkDone__i53abi: false,
+ emwgpuQueueOnSubmittedWorkDone__deps: ['emwgpuOnWorkDoneCompleted'],
+ emwgpuQueueOnSubmittedWorkDone: (queuePtr, futureIdL, futureIdH) => {
var queue = WebGPU.getJsObject(queuePtr);
{{{ runtimeKeepalivePush() }}}
- queue.onSubmittedWorkDone().then(() => {
+ WebGPU.Internals.futureInsert(futureIdL, futureIdH, queue.onSubmittedWorkDone().then(() => {
{{{ runtimeKeepalivePop() }}}
- callUserCallback(() => {
- {{{ makeDynCall('vip', 'callback') }}}({{{ gpu.QueueWorkDoneStatus.Success }}}, userdata);
- });
+ _emwgpuOnWorkDoneCompleted(futureIdL, futureIdH, {{{ gpu.QueueWorkDoneStatus.Success }}});
}, () => {
{{{ runtimeKeepalivePop() }}}
- callUserCallback(() => {
- {{{ makeDynCall('vip', 'callback') }}}({{{ gpu.QueueWorkDoneStatus.Error }}}, userdata);
- });
- });
+ _emwgpuOnWorkDoneCompleted(futureIdL, futureIdH, {{{ gpu.QueueWorkDoneStatus.Error }}});
+ }));
},
wgpuQueueSetLabel: (queuePtr, labelPtr) => {