diff --git a/src/dawn/native/Adapter.cpp b/src/dawn/native/Adapter.cpp index 4b45b96af5..f958918c75 100644 --- a/src/dawn/native/Adapter.cpp +++ b/src/dawn/native/Adapter.cpp @@ -203,6 +203,14 @@ wgpu::Status AdapterBase::APIGetInfo(AdapterInfo* info) const { mPhysicalDevice->PopulateBackendProperties(unpacked); + if (auto* subgroupsProperties = unpacked.Get()) { + if (mPhysicalDevice->GetBackendType() == wgpu::BackendType::D3D12 && + mTogglesState.IsEnabled(Toggle::D3D12RelaxMinSubgroupSizeTo8)) { + subgroupsProperties->subgroupMinSize = + std::min(subgroupsProperties->subgroupMinSize, 8u); + } + } + // Allocate space for all strings. size_t allocSize = mPhysicalDevice->GetVendorName().length() + mPhysicalDevice->GetArchitectureName().length() + diff --git a/src/dawn/native/Device.cpp b/src/dawn/native/Device.cpp index c99670025c..48f29e65c1 100644 --- a/src/dawn/native/Device.cpp +++ b/src/dawn/native/Device.cpp @@ -374,6 +374,8 @@ DeviceBase::DeviceBase(AdapterBase* adapter, GetDefaultLimits(&mLimits.v1, adapter->GetFeatureLevel()); } // Get experimentalSubgroupLimits from physical device + // TODO(crbug.com/382520104): Remove this since these are now exposed as + // properties on AdapterInfo. mLimits.experimentalSubgroupLimits = GetPhysicalDevice()->GetLimits().experimentalSubgroupLimits; if (GetPhysicalDevice()->GetBackendType() == wgpu::BackendType::D3D12 &&