[node] populate subgroup sizes for device.adapterInfo
Also, always populate subgroup sizes in adapter info.
Rely on backends always supplying a value.
Bug: 354751907
Change-Id: I628a87aea57982ed5a903e4b9697c74493cedcc8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/218294
Auto-Submit: David Neto <dneto@google.com>
Reviewed-by: Alan Baker <alanbaker@google.com>
Commit-Queue: Alan Baker <alanbaker@google.com>
diff --git a/src/dawn/node/binding/GPUAdapter.cpp b/src/dawn/node/binding/GPUAdapter.cpp
index 3f7aa6c..637c41f 100644
--- a/src/dawn/node/binding/GPUAdapter.cpp
+++ b/src/dawn/node/binding/GPUAdapter.cpp
@@ -125,11 +125,7 @@
interop::Interface<interop::GPUAdapterInfo> GPUAdapter::getInfo(Napi::Env env) {
wgpu::AdapterInfo info = {};
wgpu::AdapterPropertiesSubgroups subgroupProperties = {};
-
- wgpu::Adapter wgpuAdapter = adapter_.Get();
- if (wgpuAdapter.HasFeature(FeatureName::Subgroups)) {
- info.nextInChain = &subgroupProperties;
- }
+ info.nextInChain = &subgroupProperties;
adapter_.GetInfo(&info);
diff --git a/src/dawn/node/binding/GPUAdapterInfo.cpp b/src/dawn/node/binding/GPUAdapterInfo.cpp
index 4aeca33..e8f9446 100644
--- a/src/dawn/node/binding/GPUAdapterInfo.cpp
+++ b/src/dawn/node/binding/GPUAdapterInfo.cpp
@@ -45,7 +45,7 @@
if (chain->sType == wgpu::SType::AdapterPropertiesSubgroups) {
subgroup_properties_ = *static_cast<wgpu::AdapterPropertiesSubgroups*>(chain);
// Clear to prevent using invalid pointer.
- subgroup_properties_->nextInChain = nullptr;
+ subgroup_properties_.nextInChain = nullptr;
break;
}
}
@@ -68,17 +68,11 @@
}
std::variant<uint32_t, interop::UndefinedType> GPUAdapterInfo::getSubgroupMinSize(Napi::Env) {
- if (subgroup_properties_.has_value()) {
- return subgroup_properties_->subgroupMinSize;
- }
- return interop::Undefined;
+ return subgroup_properties_.subgroupMinSize;
}
std::variant<uint32_t, interop::UndefinedType> GPUAdapterInfo::getSubgroupMaxSize(Napi::Env) {
- if (subgroup_properties_.has_value()) {
- return subgroup_properties_->subgroupMaxSize;
- }
- return interop::Undefined;
+ return subgroup_properties_.subgroupMaxSize;
}
} // namespace wgpu::binding
diff --git a/src/dawn/node/binding/GPUAdapterInfo.h b/src/dawn/node/binding/GPUAdapterInfo.h
index d5e84c4..1eb81cb 100644
--- a/src/dawn/node/binding/GPUAdapterInfo.h
+++ b/src/dawn/node/binding/GPUAdapterInfo.h
@@ -56,7 +56,7 @@
std::string architecture_;
std::string device_;
std::string description_;
- std::optional<wgpu::AdapterPropertiesSubgroups> subgroup_properties_;
+ wgpu::AdapterPropertiesSubgroups subgroup_properties_;
};
} // namespace wgpu::binding
diff --git a/src/dawn/node/binding/GPUDevice.cpp b/src/dawn/node/binding/GPUDevice.cpp
index b64475e..ffadb35 100644
--- a/src/dawn/node/binding/GPUDevice.cpp
+++ b/src/dawn/node/binding/GPUDevice.cpp
@@ -211,6 +211,8 @@
interop::Interface<interop::GPUAdapterInfo> GPUDevice::getAdapterInfo(Napi::Env env) {
wgpu::AdapterInfo adapterInfo = {};
+ wgpu::AdapterPropertiesSubgroups subgroupsProperties = {};
+ adapterInfo.nextInChain = &subgroupsProperties;
device_.GetAdapterInfo(&adapterInfo);
return interop::GPUAdapterInfo::Create<GPUAdapterInfo>(env, adapterInfo);