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 <kainino@chromium.org>
Commit-Queue: Fr <beaufort.francois@gmail.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/dawn.json b/src/dawn/dawn.json
index 5450df5..d719a2c 100644
--- a/src/dawn/dawn.json
+++ b/src/dawn/dawn.json
@@ -155,14 +155,6 @@
                 ]
             },
             {
-                "name": "enumerate features",
-                "tags": ["deprecated"],
-                "returns": "size_t",
-                "args": [
-                    {"name": "features", "type": "feature name", "annotation": "*"}
-                ]
-            },
-            {
                 "name": "get features",
                 "returns": "void",
                 "args": [
@@ -1567,14 +1559,6 @@
                 ]
             },
             {
-                "name": "enumerate features",
-                "tags": ["deprecated"],
-                "returns": "size_t",
-                "args": [
-                    {"name": "features", "type": "feature name", "annotation": "*"}
-                ]
-            },
-            {
                 "name": "get features",
                 "returns": "void",
                 "args": [
diff --git a/src/dawn/dawn_wire.json b/src/dawn/dawn_wire.json
index f95a1ca..ba541a9 100644
--- a/src/dawn/dawn_wire.json
+++ b/src/dawn/dawn_wire.json
@@ -224,7 +224,6 @@
             "AdapterGetInstance",
             "AdapterGetLimits",
             "AdapterHasFeature",
-            "AdapterEnumerateFeatures",
             "AdapterRequestDevice",
             "AdapterRequestDeviceF",
             "AdapterRequestDevice2",
@@ -248,7 +247,6 @@
             "DeviceGetFeatures",
             "DeviceGetLimits",
             "DeviceHasFeature",
-            "DeviceEnumerateFeatures",
             "DevicePopErrorScope",
             "DevicePopErrorScopeF",
             "DevicePopErrorScope2",
diff --git a/src/dawn/native/Adapter.cpp b/src/dawn/native/Adapter.cpp
index be0cca3..c2f0e70 100644
--- a/src/dawn/native/Adapter.cpp
+++ b/src/dawn/native/Adapter.cpp
@@ -224,10 +224,6 @@
     return mSupportedFeatures.IsEnabled(feature);
 }
 
-size_t AdapterBase::APIEnumerateFeatures(wgpu::FeatureName* features) const {
-    return mSupportedFeatures.EnumerateFeatures(features);
-}
-
 void AdapterBase::APIGetFeatures(wgpu::SupportedFeatures* features) const {
     this->APIGetFeatures(reinterpret_cast<SupportedFeatures*>(features));
 }
diff --git a/src/dawn/native/Adapter.h b/src/dawn/native/Adapter.h
index 28b5bcf..bcf4a06 100644
--- a/src/dawn/native/Adapter.h
+++ b/src/dawn/native/Adapter.h
@@ -63,7 +63,6 @@
     wgpu::Status APIGetLimits(SupportedLimits* limits) const;
     wgpu::Status APIGetInfo(AdapterInfo* info) const;
     bool APIHasFeature(wgpu::FeatureName feature) const;
-    size_t APIEnumerateFeatures(wgpu::FeatureName* features) const;
     void APIGetFeatures(SupportedFeatures* features) const;
     void APIGetFeatures(wgpu::SupportedFeatures* features) const;
     void APIRequestDevice(const DeviceDescriptor* descriptor,
diff --git a/src/dawn/native/Device.cpp b/src/dawn/native/Device.cpp
index eea04ac..423889c 100644
--- a/src/dawn/native/Device.cpp
+++ b/src/dawn/native/Device.cpp
@@ -2009,10 +2009,6 @@
     return mEnabledFeatures.IsEnabled(feature);
 }
 
-size_t DeviceBase::APIEnumerateFeatures(wgpu::FeatureName* features) const {
-    return mEnabledFeatures.EnumerateFeatures(features);
-}
-
 void DeviceBase::APIGetFeatures(wgpu::SupportedFeatures* features) const {
     this->APIGetFeatures(reinterpret_cast<SupportedFeatures*>(features));
 }
diff --git a/src/dawn/native/Device.h b/src/dawn/native/Device.h
index 4f9b327..2b0708f 100644
--- a/src/dawn/native/Device.h
+++ b/src/dawn/native/Device.h
@@ -288,7 +288,6 @@
                                                  AHardwareBufferProperties* properties);
     wgpu::Status APIGetLimits(SupportedLimits* limits) const;
     bool APIHasFeature(wgpu::FeatureName feature) const;
-    size_t APIEnumerateFeatures(wgpu::FeatureName* features) const;
     void APIGetFeatures(wgpu::SupportedFeatures* features) const;
     void APIGetFeatures(SupportedFeatures* features) const;
     wgpu::Status APIGetAdapterInfo(AdapterInfo* adapterInfo) const;
diff --git a/src/dawn/native/Features.cpp b/src/dawn/native/Features.cpp
index f0c3944..52d2964 100644
--- a/src/dawn/native/Features.cpp
+++ b/src/dawn/native/Features.cpp
@@ -421,17 +421,6 @@
     return f != Feature::InvalidEnum && IsEnabled(f);
 }
 
-size_t FeaturesSet::EnumerateFeatures(wgpu::FeatureName* features) const {
-    for (Feature f : IterateBitSet(featuresBitSet)) {
-        wgpu::FeatureName feature = ToAPI(f);
-        if (features != nullptr) {
-            *features = feature;
-            features += 1;
-        }
-    }
-    return featuresBitSet.count();
-}
-
 std::vector<const char*> FeaturesSet::GetEnabledFeatureNames() const {
     std::vector<const char*> enabledFeatureNames(featuresBitSet.count());
 
diff --git a/src/dawn/native/Features.h b/src/dawn/native/Features.h
index d97d0b5..915b137 100644
--- a/src/dawn/native/Features.h
+++ b/src/dawn/native/Features.h
@@ -56,9 +56,6 @@
     void EnableFeature(wgpu::FeatureName feature);
     bool IsEnabled(Feature feature) const;
     bool IsEnabled(wgpu::FeatureName feature) const;
-    // Returns |count|, the number of features. Writes out all |count| values if |features| is
-    // non-null.
-    size_t EnumerateFeatures(wgpu::FeatureName* features) const;
     std::vector<const char*> GetEnabledFeatureNames() const;
     void ToSupportedFeatures(SupportedFeatures* supportedFeatures) const;
 };
diff --git a/src/dawn/tests/unittests/native/DeviceCreationTests.cpp b/src/dawn/tests/unittests/native/DeviceCreationTests.cpp
index cc62cd0..1c59873 100644
--- a/src/dawn/tests/unittests/native/DeviceCreationTests.cpp
+++ b/src/dawn/tests/unittests/native/DeviceCreationTests.cpp
@@ -164,15 +164,10 @@
             wgpu::Device device = unsafeAdapter.CreateDevice(&deviceDescriptor);
             EXPECT_NE(device, nullptr);
 
-            ASSERT_EQ(1u, device.EnumerateFeatures(nullptr));
-            wgpu::FeatureName enabledFeature;
-            device.EnumerateFeatures(&enabledFeature);
-            EXPECT_EQ(enabledFeature, featureName);
-
             wgpu::SupportedFeatures supportedFeatures;
             device.GetFeatures(&supportedFeatures);
             ASSERT_EQ(1u, supportedFeatures.featureCount);
-            EXPECT_EQ(enabledFeature, supportedFeatures.features[0]);
+            EXPECT_EQ(featureName, supportedFeatures.features[0]);
         }
 
         // Test creating device with AllowUnsafeApis enabled in device toggle descriptor will
@@ -189,15 +184,10 @@
                 wgpu::Device device = adapter.CreateDevice(&deviceDescriptor);
                 EXPECT_NE(device, nullptr);
 
-                ASSERT_EQ(1u, device.EnumerateFeatures(nullptr));
-                wgpu::FeatureName enabledFeature;
-                device.EnumerateFeatures(&enabledFeature);
-                EXPECT_EQ(enabledFeature, featureName);
-
                 wgpu::SupportedFeatures supportedFeatures;
                 device.GetFeatures(&supportedFeatures);
                 ASSERT_EQ(1u, supportedFeatures.featureCount);
-                EXPECT_EQ(enabledFeature, supportedFeatures.features[0]);
+                EXPECT_EQ(featureName, supportedFeatures.features[0]);
             }
 
             // Test on adapter with AllowUnsafeApis disabled.
@@ -205,15 +195,10 @@
                 wgpu::Device device = unsafeAdapter.CreateDevice(&deviceDescriptor);
                 EXPECT_NE(device, nullptr);
 
-                ASSERT_EQ(1u, device.EnumerateFeatures(nullptr));
-                wgpu::FeatureName enabledFeature;
-                device.EnumerateFeatures(&enabledFeature);
-                EXPECT_EQ(enabledFeature, featureName);
-
                 wgpu::SupportedFeatures supportedFeatures;
                 device.GetFeatures(&supportedFeatures);
                 ASSERT_EQ(1u, supportedFeatures.featureCount);
-                EXPECT_EQ(enabledFeature, supportedFeatures.features[0]);
+                EXPECT_EQ(featureName, supportedFeatures.features[0]);
             }
         }
 
diff --git a/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp b/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
index 9400eca..3b59c80 100644
--- a/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
@@ -791,9 +791,11 @@
 
     std::vector<wgpu::FeatureName> GetAllFeatures() {
         std::vector<wgpu::FeatureName> requiredFeatures;
-        const size_t featureCount = adapter.EnumerateFeatures(nullptr);
-        requiredFeatures.resize(featureCount);
-        adapter.EnumerateFeatures(requiredFeatures.data());
+        wgpu::SupportedFeatures supportedFeatures;
+        adapter.GetFeatures(&supportedFeatures);
+        for (uint32_t i = 0; i < supportedFeatures.featureCount; ++i) {
+            requiredFeatures.push_back(supportedFeatures.features[i]);
+        }
         return requiredFeatures;
     }
 };
diff --git a/src/dawn/wire/client/Adapter.cpp b/src/dawn/wire/client/Adapter.cpp
index 2547eac..9dfa04b 100644
--- a/src/dawn/wire/client/Adapter.cpp
+++ b/src/dawn/wire/client/Adapter.cpp
@@ -150,10 +150,6 @@
     return mLimitsAndFeatures.HasFeature(feature);
 }
 
-size_t Adapter::EnumerateFeatures(WGPUFeatureName* features) const {
-    return mLimitsAndFeatures.EnumerateFeatures(features);
-}
-
 void Adapter::GetFeatures(WGPUSupportedFeatures* features) const {
     mLimitsAndFeatures.ToSupportedFeatures(features);
 }
diff --git a/src/dawn/wire/client/Adapter.h b/src/dawn/wire/client/Adapter.h
index c21d7f2..cfdebfd 100644
--- a/src/dawn/wire/client/Adapter.h
+++ b/src/dawn/wire/client/Adapter.h
@@ -47,7 +47,6 @@
 
     WGPUStatus GetLimits(WGPUSupportedLimits* limits) const;
     bool HasFeature(WGPUFeatureName feature) const;
-    size_t EnumerateFeatures(WGPUFeatureName* features) const;
     void SetLimits(const WGPUSupportedLimits* limits);
     void SetFeatures(const WGPUFeatureName* features, uint32_t featuresCount);
     void SetInfo(const WGPUAdapterInfo* info);
diff --git a/src/dawn/wire/client/Device.cpp b/src/dawn/wire/client/Device.cpp
index ddf4bef..3883cb2 100644
--- a/src/dawn/wire/client/Device.cpp
+++ b/src/dawn/wire/client/Device.cpp
@@ -337,10 +337,6 @@
     return mLimitsAndFeatures.HasFeature(feature);
 }
 
-size_t Device::EnumerateFeatures(WGPUFeatureName* features) const {
-    return mLimitsAndFeatures.EnumerateFeatures(features);
-}
-
 void Device::GetFeatures(WGPUSupportedFeatures* features) const {
     mLimitsAndFeatures.ToSupportedFeatures(features);
 }
diff --git a/src/dawn/wire/client/Device.h b/src/dawn/wire/client/Device.h
index edc7c68..15f0e03 100644
--- a/src/dawn/wire/client/Device.h
+++ b/src/dawn/wire/client/Device.h
@@ -97,7 +97,6 @@
 
     WGPUStatus GetLimits(WGPUSupportedLimits* limits) const;
     bool HasFeature(WGPUFeatureName feature) const;
-    size_t EnumerateFeatures(WGPUFeatureName* features) const;
     void GetFeatures(WGPUSupportedFeatures* features) const;
     WGPUStatus GetAdapterInfo(WGPUAdapterInfo* info) const;
     WGPUAdapter GetAdapter() const;
diff --git a/src/dawn/wire/client/LimitsAndFeatures.cpp b/src/dawn/wire/client/LimitsAndFeatures.cpp
index 803480a..790fb8c 100644
--- a/src/dawn/wire/client/LimitsAndFeatures.cpp
+++ b/src/dawn/wire/client/LimitsAndFeatures.cpp
@@ -74,16 +74,6 @@
     return mFeatures.contains(feature);
 }
 
-size_t LimitsAndFeatures::EnumerateFeatures(WGPUFeatureName* features) const {
-    if (features != nullptr) {
-        for (WGPUFeatureName f : mFeatures) {
-            *features = f;
-            ++features;
-        }
-    }
-    return mFeatures.size();
-}
-
 void LimitsAndFeatures::ToSupportedFeatures(WGPUSupportedFeatures* supportedFeatures) const {
     if (!supportedFeatures) {
         return;
diff --git a/src/dawn/wire/client/LimitsAndFeatures.h b/src/dawn/wire/client/LimitsAndFeatures.h
index 4c4933f..3034407 100644
--- a/src/dawn/wire/client/LimitsAndFeatures.h
+++ b/src/dawn/wire/client/LimitsAndFeatures.h
@@ -41,7 +41,6 @@
 
     WGPUStatus GetLimits(WGPUSupportedLimits* limits) const;
     bool HasFeature(WGPUFeatureName feature) const;
-    size_t EnumerateFeatures(WGPUFeatureName* features) const;
     void ToSupportedFeatures(WGPUSupportedFeatures* supportedFeatures) const;
 
     void SetLimits(const WGPUSupportedLimits* limits);
diff --git a/third_party/emdawnwebgpu/library_webgpu.js b/third_party/emdawnwebgpu/library_webgpu.js
index e406c18..8390709 100644
--- a/third_party/emdawnwebgpu/library_webgpu.js
+++ b/third_party/emdawnwebgpu/library_webgpu.js
@@ -2484,7 +2484,7 @@
   // --------------------------------------------------------------------------
 };
 
-// Inverted index used by EnumerateFeatures/HasFeature
+// Inverted index used by GetFeatures/HasFeature
 LibraryWebGPU.$WebGPU.FeatureNameString2Enum = {};
 for (var value in LibraryWebGPU.$WebGPU.FeatureName) {
   LibraryWebGPU.$WebGPU.FeatureNameString2Enum[LibraryWebGPU.$WebGPU.FeatureName[value]] = value;