Skip to content

Commit 21109b4

Browse files
tojiDawn LUCI CQ
authored andcommitted
Revert "webgpu.h: Remove EnumerateFeatures()"
This reverts commit 476693a. Reason for revert: Causing Dawn->Chromium roll to fail due to outstanding dependency in MLDrift Original change's description: > webgpu.h: Remove EnumerateFeatures() > > Now that GetFeatures() has been added, we can safely remove the > deprecated EnumerateFeatures(). > > Bug: 368672123 > Change-Id: Ia8a4b377ff9b41219543f3a1071aacfe05d07998 > Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/215514 > Reviewed-by: Kai Ninomiya <[email protected]> > Commit-Queue: Fr <[email protected]> > Reviewed-by: Corentin Wallez <[email protected]> [email protected],[email protected],[email protected],[email protected] Change-Id: I960cf163580307a8488955f486387572af4322dd No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 368672123 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/215794 Reviewed-by: Brandon Jones <[email protected]> Commit-Queue: Brandon Jones <[email protected]> Reviewed-by: Kai Ninomiya <[email protected]>
1 parent 686aaa7 commit 21109b4

File tree

17 files changed

+85
-9
lines changed

17 files changed

+85
-9
lines changed

src/dawn/dawn.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,14 @@
154154
{"name": "feature", "type": "feature name"}
155155
]
156156
},
157+
{
158+
"name": "enumerate features",
159+
"tags": ["deprecated"],
160+
"returns": "size_t",
161+
"args": [
162+
{"name": "features", "type": "feature name", "annotation": "*"}
163+
]
164+
},
157165
{
158166
"name": "get features",
159167
"returns": "void",
@@ -1558,6 +1566,14 @@
15581566
{"name": "feature", "type": "feature name"}
15591567
]
15601568
},
1569+
{
1570+
"name": "enumerate features",
1571+
"tags": ["deprecated"],
1572+
"returns": "size_t",
1573+
"args": [
1574+
{"name": "features", "type": "feature name", "annotation": "*"}
1575+
]
1576+
},
15611577
{
15621578
"name": "get features",
15631579
"returns": "void",

src/dawn/dawn_wire.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@
224224
"AdapterGetInstance",
225225
"AdapterGetLimits",
226226
"AdapterHasFeature",
227+
"AdapterEnumerateFeatures",
227228
"AdapterRequestDevice",
228229
"AdapterRequestDeviceF",
229230
"AdapterRequestDevice2",
@@ -247,6 +248,7 @@
247248
"DeviceGetFeatures",
248249
"DeviceGetLimits",
249250
"DeviceHasFeature",
251+
"DeviceEnumerateFeatures",
250252
"DevicePopErrorScope",
251253
"DevicePopErrorScopeF",
252254
"DevicePopErrorScope2",

src/dawn/native/Adapter.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,10 @@ bool AdapterBase::APIHasFeature(wgpu::FeatureName feature) const {
224224
return mSupportedFeatures.IsEnabled(feature);
225225
}
226226

227+
size_t AdapterBase::APIEnumerateFeatures(wgpu::FeatureName* features) const {
228+
return mSupportedFeatures.EnumerateFeatures(features);
229+
}
230+
227231
void AdapterBase::APIGetFeatures(wgpu::SupportedFeatures* features) const {
228232
this->APIGetFeatures(reinterpret_cast<SupportedFeatures*>(features));
229233
}

src/dawn/native/Adapter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class AdapterBase : public RefCounted, public WeakRefSupport<AdapterBase> {
6363
wgpu::Status APIGetLimits(SupportedLimits* limits) const;
6464
wgpu::Status APIGetInfo(AdapterInfo* info) const;
6565
bool APIHasFeature(wgpu::FeatureName feature) const;
66+
size_t APIEnumerateFeatures(wgpu::FeatureName* features) const;
6667
void APIGetFeatures(SupportedFeatures* features) const;
6768
void APIGetFeatures(wgpu::SupportedFeatures* features) const;
6869
void APIRequestDevice(const DeviceDescriptor* descriptor,

src/dawn/native/Device.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2009,6 +2009,10 @@ bool DeviceBase::APIHasFeature(wgpu::FeatureName feature) const {
20092009
return mEnabledFeatures.IsEnabled(feature);
20102010
}
20112011

2012+
size_t DeviceBase::APIEnumerateFeatures(wgpu::FeatureName* features) const {
2013+
return mEnabledFeatures.EnumerateFeatures(features);
2014+
}
2015+
20122016
void DeviceBase::APIGetFeatures(wgpu::SupportedFeatures* features) const {
20132017
this->APIGetFeatures(reinterpret_cast<SupportedFeatures*>(features));
20142018
}

src/dawn/native/Device.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@ class DeviceBase : public ErrorSink, public RefCountedWithExternalCount<RefCount
288288
AHardwareBufferProperties* properties);
289289
wgpu::Status APIGetLimits(SupportedLimits* limits) const;
290290
bool APIHasFeature(wgpu::FeatureName feature) const;
291+
size_t APIEnumerateFeatures(wgpu::FeatureName* features) const;
291292
void APIGetFeatures(wgpu::SupportedFeatures* features) const;
292293
void APIGetFeatures(SupportedFeatures* features) const;
293294
wgpu::Status APIGetAdapterInfo(AdapterInfo* adapterInfo) const;

src/dawn/native/Features.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,17 @@ bool FeaturesSet::IsEnabled(wgpu::FeatureName feature) const {
421421
return f != Feature::InvalidEnum && IsEnabled(f);
422422
}
423423

424+
size_t FeaturesSet::EnumerateFeatures(wgpu::FeatureName* features) const {
425+
for (Feature f : IterateBitSet(featuresBitSet)) {
426+
wgpu::FeatureName feature = ToAPI(f);
427+
if (features != nullptr) {
428+
*features = feature;
429+
features += 1;
430+
}
431+
}
432+
return featuresBitSet.count();
433+
}
434+
424435
std::vector<const char*> FeaturesSet::GetEnabledFeatureNames() const {
425436
std::vector<const char*> enabledFeatureNames(featuresBitSet.count());
426437

src/dawn/native/Features.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ struct FeaturesSet {
5656
void EnableFeature(wgpu::FeatureName feature);
5757
bool IsEnabled(Feature feature) const;
5858
bool IsEnabled(wgpu::FeatureName feature) const;
59+
// Returns |count|, the number of features. Writes out all |count| values if |features| is
60+
// non-null.
61+
size_t EnumerateFeatures(wgpu::FeatureName* features) const;
5962
std::vector<const char*> GetEnabledFeatureNames() const;
6063
void ToSupportedFeatures(SupportedFeatures* supportedFeatures) const;
6164
};

src/dawn/tests/unittests/native/DeviceCreationTests.cpp

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,10 +164,15 @@ TEST_F(DeviceCreationTest, CreateDeviceRequiringExperimentalFeatures) {
164164
wgpu::Device device = unsafeAdapter.CreateDevice(&deviceDescriptor);
165165
EXPECT_NE(device, nullptr);
166166

167+
ASSERT_EQ(1u, device.EnumerateFeatures(nullptr));
168+
wgpu::FeatureName enabledFeature;
169+
device.EnumerateFeatures(&enabledFeature);
170+
EXPECT_EQ(enabledFeature, featureName);
171+
167172
wgpu::SupportedFeatures supportedFeatures;
168173
device.GetFeatures(&supportedFeatures);
169174
ASSERT_EQ(1u, supportedFeatures.featureCount);
170-
EXPECT_EQ(featureName, supportedFeatures.features[0]);
175+
EXPECT_EQ(enabledFeature, supportedFeatures.features[0]);
171176
}
172177

173178
// Test creating device with AllowUnsafeApis enabled in device toggle descriptor will
@@ -184,21 +189,31 @@ TEST_F(DeviceCreationTest, CreateDeviceRequiringExperimentalFeatures) {
184189
wgpu::Device device = adapter.CreateDevice(&deviceDescriptor);
185190
EXPECT_NE(device, nullptr);
186191

192+
ASSERT_EQ(1u, device.EnumerateFeatures(nullptr));
193+
wgpu::FeatureName enabledFeature;
194+
device.EnumerateFeatures(&enabledFeature);
195+
EXPECT_EQ(enabledFeature, featureName);
196+
187197
wgpu::SupportedFeatures supportedFeatures;
188198
device.GetFeatures(&supportedFeatures);
189199
ASSERT_EQ(1u, supportedFeatures.featureCount);
190-
EXPECT_EQ(featureName, supportedFeatures.features[0]);
200+
EXPECT_EQ(enabledFeature, supportedFeatures.features[0]);
191201
}
192202

193203
// Test on adapter with AllowUnsafeApis disabled.
194204
{
195205
wgpu::Device device = unsafeAdapter.CreateDevice(&deviceDescriptor);
196206
EXPECT_NE(device, nullptr);
197207

208+
ASSERT_EQ(1u, device.EnumerateFeatures(nullptr));
209+
wgpu::FeatureName enabledFeature;
210+
device.EnumerateFeatures(&enabledFeature);
211+
EXPECT_EQ(enabledFeature, featureName);
212+
198213
wgpu::SupportedFeatures supportedFeatures;
199214
device.GetFeatures(&supportedFeatures);
200215
ASSERT_EQ(1u, supportedFeatures.featureCount);
201-
EXPECT_EQ(featureName, supportedFeatures.features[0]);
216+
EXPECT_EQ(enabledFeature, supportedFeatures.features[0]);
202217
}
203218
}
204219

src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -791,11 +791,9 @@ class ShaderModuleExtensionValidationTestBase : public ValidationTest {
791791

792792
std::vector<wgpu::FeatureName> GetAllFeatures() {
793793
std::vector<wgpu::FeatureName> requiredFeatures;
794-
wgpu::SupportedFeatures supportedFeatures;
795-
adapter.GetFeatures(&supportedFeatures);
796-
for (uint32_t i = 0; i < supportedFeatures.featureCount; ++i) {
797-
requiredFeatures.push_back(supportedFeatures.features[i]);
798-
}
794+
const size_t featureCount = adapter.EnumerateFeatures(nullptr);
795+
requiredFeatures.resize(featureCount);
796+
adapter.EnumerateFeatures(requiredFeatures.data());
799797
return requiredFeatures;
800798
}
801799
};

0 commit comments

Comments
 (0)