diff --git a/dawn.json b/dawn.json
index 5af8d25..e7e5b61 100644
--- a/dawn.json
+++ b/dawn.json
@@ -101,7 +101,7 @@
             {
                 "tags": ["dawn"],
                 "name": "enumerate features",
-                "returns": "uint32_t",
+                "returns": "size_t",
                 "args": [
                     {"name": "features", "type": "feature name", "annotation": "*"}
                 ]
@@ -1084,7 +1084,7 @@
             {
                 "tags": ["dawn"],
                 "name": "enumerate features",
-                "returns": "uint32_t",
+                "returns": "size_t",
                 "args": [
                     {"name": "features", "type": "feature name", "annotation": "*"}
                 ]
diff --git a/src/dawn_native/Adapter.cpp b/src/dawn_native/Adapter.cpp
index a30c553..d435526 100644
--- a/src/dawn_native/Adapter.cpp
+++ b/src/dawn_native/Adapter.cpp
@@ -89,7 +89,7 @@
         return mSupportedFeatures.IsEnabled(feature);
     }
 
-    uint32_t AdapterBase::APIEnumerateFeatures(wgpu::FeatureName* features) const {
+    size_t AdapterBase::APIEnumerateFeatures(wgpu::FeatureName* features) const {
         return mSupportedFeatures.EnumerateFeatures(features);
     }
 
diff --git a/src/dawn_native/Adapter.h b/src/dawn_native/Adapter.h
index b8dc2d7..12de0aa 100644
--- a/src/dawn_native/Adapter.h
+++ b/src/dawn_native/Adapter.h
@@ -41,7 +41,7 @@
         bool APIGetLimits(SupportedLimits* limits) const;
         void APIGetProperties(AdapterProperties* properties) const;
         bool APIHasFeature(wgpu::FeatureName feature) const;
-        uint32_t APIEnumerateFeatures(wgpu::FeatureName* features) const;
+        size_t APIEnumerateFeatures(wgpu::FeatureName* features) const;
         void APIRequestDevice(const DeviceDescriptor* descriptor,
                               WGPURequestDeviceCallback callback,
                               void* userdata);
diff --git a/src/dawn_native/Device.cpp b/src/dawn_native/Device.cpp
index cdaaaa7..a70cfe3 100644
--- a/src/dawn_native/Device.cpp
+++ b/src/dawn_native/Device.cpp
@@ -1213,7 +1213,7 @@
         return mEnabledFeatures.IsEnabled(feature);
     }
 
-    uint32_t DeviceBase::APIEnumerateFeatures(wgpu::FeatureName* features) const {
+    size_t DeviceBase::APIEnumerateFeatures(wgpu::FeatureName* features) const {
         return mEnabledFeatures.EnumerateFeatures(features);
     }
 
diff --git a/src/dawn_native/Device.h b/src/dawn_native/Device.h
index 1925478..44ba6cc 100644
--- a/src/dawn_native/Device.h
+++ b/src/dawn_native/Device.h
@@ -259,7 +259,7 @@
 
         bool APIGetLimits(SupportedLimits* limits) const;
         bool APIHasFeature(wgpu::FeatureName feature) const;
-        uint32_t APIEnumerateFeatures(wgpu::FeatureName* features) const;
+        size_t APIEnumerateFeatures(wgpu::FeatureName* features) const;
         void APIInjectError(wgpu::ErrorType type, const char* message);
         bool APITick();
 
diff --git a/src/dawn_native/Features.cpp b/src/dawn_native/Features.cpp
index 75b2266..d6eb622 100644
--- a/src/dawn_native/Features.cpp
+++ b/src/dawn_native/Features.cpp
@@ -181,7 +181,7 @@
         return f != Feature::InvalidEnum && IsEnabled(f);
     }
 
-    uint32_t FeaturesSet::EnumerateFeatures(wgpu::FeatureName* features) const {
+    size_t FeaturesSet::EnumerateFeatures(wgpu::FeatureName* features) const {
         for (uint32_t i : IterateBitSet(featuresBitSet)) {
             wgpu::FeatureName feature = ToAPIFeature(static_cast<Feature>(i));
             if (features != nullptr) {
diff --git a/src/dawn_native/Features.h b/src/dawn_native/Features.h
index 07a1e6d..6616e7c 100644
--- a/src/dawn_native/Features.h
+++ b/src/dawn_native/Features.h
@@ -57,7 +57,7 @@
         bool IsEnabled(wgpu::FeatureName feature) const;
         // Returns |count|, the number of features. Writes out all |count| values if |features| is
         // non-null.
-        uint32_t EnumerateFeatures(wgpu::FeatureName* features) const;
+        size_t EnumerateFeatures(wgpu::FeatureName* features) const;
         std::vector<const char*> GetEnabledFeatureNames() const;
         void InitializeDeviceProperties(WGPUDeviceProperties* properties) const;
     };
diff --git a/src/dawn_wire/client/Adapter.cpp b/src/dawn_wire/client/Adapter.cpp
index ce7bd33..e33df03 100644
--- a/src/dawn_wire/client/Adapter.cpp
+++ b/src/dawn_wire/client/Adapter.cpp
@@ -41,7 +41,7 @@
         return mLimitsAndFeatures.HasFeature(feature);
     }
 
-    uint32_t Adapter::EnumerateFeatures(WGPUFeatureName* features) const {
+    size_t Adapter::EnumerateFeatures(WGPUFeatureName* features) const {
         return mLimitsAndFeatures.EnumerateFeatures(features);
     }
 
diff --git a/src/dawn_wire/client/Adapter.h b/src/dawn_wire/client/Adapter.h
index fcfaed9..e67a8b8 100644
--- a/src/dawn_wire/client/Adapter.h
+++ b/src/dawn_wire/client/Adapter.h
@@ -34,7 +34,7 @@
 
         bool GetLimits(WGPUSupportedLimits* limits) const;
         bool HasFeature(WGPUFeatureName feature) const;
-        uint32_t EnumerateFeatures(WGPUFeatureName* features) const;
+        size_t EnumerateFeatures(WGPUFeatureName* features) const;
         void SetLimits(const WGPUSupportedLimits* limits);
         void SetFeatures(const WGPUFeatureName* features, uint32_t featuresCount);
         void SetProperties(const WGPUAdapterProperties* properties);
diff --git a/src/dawn_wire/client/Device.cpp b/src/dawn_wire/client/Device.cpp
index daa7cfc..49c5f2b 100644
--- a/src/dawn_wire/client/Device.cpp
+++ b/src/dawn_wire/client/Device.cpp
@@ -75,7 +75,7 @@
         return mLimitsAndFeatures.HasFeature(feature);
     }
 
-    uint32_t Device::EnumerateFeatures(WGPUFeatureName* features) const {
+    size_t Device::EnumerateFeatures(WGPUFeatureName* features) const {
         return mLimitsAndFeatures.EnumerateFeatures(features);
     }
 
diff --git a/src/dawn_wire/client/Device.h b/src/dawn_wire/client/Device.h
index 5ec5b25..87965ea 100644
--- a/src/dawn_wire/client/Device.h
+++ b/src/dawn_wire/client/Device.h
@@ -67,7 +67,7 @@
 
         bool GetLimits(WGPUSupportedLimits* limits) const;
         bool HasFeature(WGPUFeatureName feature) const;
-        uint32_t EnumerateFeatures(WGPUFeatureName* features) const;
+        size_t EnumerateFeatures(WGPUFeatureName* features) const;
         void SetLimits(const WGPUSupportedLimits* limits);
         void SetFeatures(const WGPUFeatureName* features, uint32_t featuresCount);
 
diff --git a/src/dawn_wire/client/LimitsAndFeatures.cpp b/src/dawn_wire/client/LimitsAndFeatures.cpp
index d33799f..2579ef7 100644
--- a/src/dawn_wire/client/LimitsAndFeatures.cpp
+++ b/src/dawn_wire/client/LimitsAndFeatures.cpp
@@ -32,7 +32,7 @@
         return mFeatures.count(feature) != 0;
     }
 
-    uint32_t LimitsAndFeatures::EnumerateFeatures(WGPUFeatureName* features) const {
+    size_t LimitsAndFeatures::EnumerateFeatures(WGPUFeatureName* features) const {
         if (features != nullptr) {
             for (WGPUFeatureName f : mFeatures) {
                 *features = f;
diff --git a/src/dawn_wire/client/LimitsAndFeatures.h b/src/dawn_wire/client/LimitsAndFeatures.h
index 4d6cfca..52dcbbf 100644
--- a/src/dawn_wire/client/LimitsAndFeatures.h
+++ b/src/dawn_wire/client/LimitsAndFeatures.h
@@ -25,7 +25,7 @@
       public:
         bool GetLimits(WGPUSupportedLimits* limits) const;
         bool HasFeature(WGPUFeatureName feature) const;
-        uint32_t EnumerateFeatures(WGPUFeatureName* features) const;
+        size_t EnumerateFeatures(WGPUFeatureName* features) const;
 
         void SetLimits(const WGPUSupportedLimits* limits);
         void SetFeatures(const WGPUFeatureName* features, uint32_t featuresCount);
diff --git a/src/dawn_wire/server/ServerAdapter.cpp b/src/dawn_wire/server/ServerAdapter.cpp
index 2d723ae..7ec99f4 100644
--- a/src/dawn_wire/server/ServerAdapter.cpp
+++ b/src/dawn_wire/server/ServerAdapter.cpp
@@ -70,7 +70,7 @@
 
         std::vector<WGPUFeatureName> features;
 
-        uint32_t featuresCount = mProcs.deviceEnumerateFeatures(device, nullptr);
+        size_t featuresCount = mProcs.deviceEnumerateFeatures(device, nullptr);
         features.resize(featuresCount);
         mProcs.deviceEnumerateFeatures(device, features.data());
 
diff --git a/src/dawn_wire/server/ServerInstance.cpp b/src/dawn_wire/server/ServerInstance.cpp
index 4369d0c..b6bb88b 100644
--- a/src/dawn_wire/server/ServerInstance.cpp
+++ b/src/dawn_wire/server/ServerInstance.cpp
@@ -79,7 +79,7 @@
         adapterObject->state = AllocationState::Allocated;
         adapterObject->handle = adapter;
 
-        uint32_t featuresCount = mProcs.adapterEnumerateFeatures(adapter, nullptr);
+        size_t featuresCount = mProcs.adapterEnumerateFeatures(adapter, nullptr);
         features.resize(featuresCount);
         mProcs.adapterEnumerateFeatures(adapter, features.data());
 
diff --git a/src/tests/unittests/wire/WireAdapterTests.cpp b/src/tests/unittests/wire/WireAdapterTests.cpp
index 797af9a..48b0a7f 100644
--- a/src/tests/unittests/wire/WireAdapterTests.cpp
+++ b/src/tests/unittests/wire/WireAdapterTests.cpp
@@ -193,7 +193,7 @@
                         for (wgpu::FeatureName feature : fakeFeatures) {
                             *(features++) = static_cast<WGPUFeatureName>(feature);
                         }
-                        return static_cast<uint32_t>(fakeFeatures.size());
+                        return fakeFeatures.size();
                     })));
 
                 api.CallAdapterRequestDeviceCallback(apiAdapter, WGPURequestDeviceStatus_Success,
@@ -259,7 +259,7 @@
                         for (wgpu::FeatureName feature : fakeFeatures) {
                             *(features++) = static_cast<WGPUFeatureName>(feature);
                         }
-                        return static_cast<uint32_t>(fakeFeatures.size());
+                        return fakeFeatures.size();
                     })));
 
                 // The device was actually created, but the wire didn't support its features.
diff --git a/src/tests/unittests/wire/WireInstanceTests.cpp b/src/tests/unittests/wire/WireInstanceTests.cpp
index f9a976a..6ef0a4c 100644
--- a/src/tests/unittests/wire/WireInstanceTests.cpp
+++ b/src/tests/unittests/wire/WireInstanceTests.cpp
@@ -138,7 +138,7 @@
                         for (wgpu::FeatureName feature : fakeFeatures) {
                             *(features++) = static_cast<WGPUFeatureName>(feature);
                         }
-                        return static_cast<uint32_t>(fakeFeatures.size());
+                        return fakeFeatures.size();
                     })));
                 api.CallInstanceRequestAdapterCallback(
                     apiInstance, WGPURequestAdapterStatus_Success, apiAdapter, nullptr);
@@ -217,7 +217,7 @@
                         for (wgpu::FeatureName feature : fakeFeatures) {
                             *(features++) = static_cast<WGPUFeatureName>(feature);
                         }
-                        return static_cast<uint32_t>(fakeFeatures.size());
+                        return fakeFeatures.size();
                     })));
                 api.CallInstanceRequestAdapterCallback(
                     apiInstance, WGPURequestAdapterStatus_Success, apiAdapter, nullptr);
