[dawn][emscripten] Add wgpuDeviceGetAdapterInfo
Bug: 376600838
Change-Id: I224786bf42235b20184c46e60a60b1318bf0387a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/214856
Reviewed-by: Loko Kung <lokokung@google.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Fr <beaufort.francois@gmail.com>
diff --git a/third_party/emdawnwebgpu/library_webgpu.js b/third_party/emdawnwebgpu/library_webgpu.js
index 1fabfeb..e406c18 100644
--- a/third_party/emdawnwebgpu/library_webgpu.js
+++ b/third_party/emdawnwebgpu/library_webgpu.js
@@ -1773,6 +1773,41 @@
return device.features.has(WebGPU.FeatureName[featureEnumValue]);
},
+ wgpuDeviceGetAdapterInfo__deps: ['$stringToNewUTF8', '$lengthBytesUTF8'],
+ wgpuDeviceGetAdapterInfo: (devicePtr, adapterInfo) => {
+ // TODO(crbug.com/377760848): Avoid duplicated code with wgpuAdapterGetInfo,
+ // for example by deferring to wgpuAdapterGetInfo from webgpu.cpp.
+ var device = WebGPU.getJsObject(devicePtr);
+ {{{ gpu.makeCheckDescriptor('adapterInfo') }}}
+
+ // Append all the strings together to condense into a single malloc.
+ var strs = device.adapterInfo.vendor + device.adapterInfo.architecture + device.adapterInfo.device + device.adapterInfo.description;
+ var strPtr = stringToNewUTF8(strs);
+
+ var vendorLen = lengthBytesUTF8(device.adapterInfo.vendor);
+ WebGPU.setStringView(adapterInfo + {{{ C_STRUCTS.WGPUAdapterInfo.vendor }}}, strPtr, vendorLen);
+ strPtr += vendorLen;
+
+ var architectureLen = lengthBytesUTF8(device.adapterInfo.architecture);
+ WebGPU.setStringView(adapterInfo + {{{ C_STRUCTS.WGPUAdapterInfo.architecture }}}, strPtr, architectureLen);
+ strPtr += architectureLen;
+
+ var deviceLen = lengthBytesUTF8(device.adapterInfo.device);
+ WebGPU.setStringView(adapterInfo + {{{ C_STRUCTS.WGPUAdapterInfo.device }}}, strPtr, deviceLen);
+ strPtr += deviceLen;
+
+ var descriptionLen = lengthBytesUTF8(device.adapterInfo.description);
+ WebGPU.setStringView(adapterInfo + {{{ C_STRUCTS.WGPUAdapterInfo.description }}}, strPtr, descriptionLen);
+ strPtr += descriptionLen;
+
+ {{{ makeSetValue('adapterInfo', C_STRUCTS.WGPUAdapterInfo.backendType, gpu.BackendType.WebGPU, 'i32') }}};
+ // TODO: Set the adapter type from adapter.isFallbackAdapter (not easily available here).
+ var adapterType = {{{ gpu.AdapterType.Unknown }}};
+ {{{ makeSetValue('adapterInfo', C_STRUCTS.WGPUAdapterInfo.adapterType, 'adapterType', 'i32') }}};
+ {{{ makeSetValue('adapterInfo', C_STRUCTS.WGPUAdapterInfo.vendorID, '0', 'i32') }}};
+ {{{ makeSetValue('adapterInfo', C_STRUCTS.WGPUAdapterInfo.deviceID, '0', 'i32') }}};
+ },
+
emwgpuDevicePopErrorScope__deps: ['emwgpuOnPopErrorScopeCompleted'],
emwgpuDevicePopErrorScope__sig: 'vpj',
emwgpuDevicePopErrorScope: (devicePtr, futureId) => {