node: Throw a TypeError for unsupported GPUQueryTypes
The WebGPU spec requires this so that an extension not being enabled or
not implemented by the browser both behave the same.
Bug: None
Change-Id: I52d991ba63438068d4adaf1391771336186a402a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112422
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/node/binding/Converter.cpp b/src/dawn/node/binding/Converter.cpp
index 95c4916..f2718bd 100644
--- a/src/dawn/node/binding/Converter.cpp
+++ b/src/dawn/node/binding/Converter.cpp
@@ -1609,8 +1609,14 @@
out = wgpu::QueryType::Occlusion;
return true;
case interop::GPUQueryType::kTimestamp:
- out = wgpu::QueryType::Timestamp;
- return true;
+ if (HasFeature(wgpu::FeatureName::TimestampQuery)) {
+ out = wgpu::QueryType::Timestamp;
+ return true;
+ } else {
+ Napi::TypeError::New(env, "invalid value for GPUQueryType")
+ .ThrowAsJavaScriptException();
+ return false;
+ }
}
Napi::Error::New(env, "invalid value for GPUQueryType").ThrowAsJavaScriptException();
return false;
diff --git a/src/dawn/node/binding/GPUDevice.cpp b/src/dawn/node/binding/GPUDevice.cpp
index b540d50..5aab3eb 100644
--- a/src/dawn/node/binding/GPUDevice.cpp
+++ b/src/dawn/node/binding/GPUDevice.cpp
@@ -472,7 +472,7 @@
interop::Interface<interop::GPUQuerySet> GPUDevice::createQuerySet(
Napi::Env env,
interop::GPUQuerySetDescriptor descriptor) {
- Converter conv(env);
+ Converter conv(env, device_);
wgpu::QuerySetDescriptor desc{};
if (!conv(desc.label, descriptor.label) || !conv(desc.type, descriptor.type) ||