Add deprecation warning to Adapter::GetProperties()

This CL adds a deprecation warning to let developers know thet should
use Adapter::GetInfo() instead of Adapter::GetProperties().
It also updates Dawn to use Adapter::GetInfo() internally.

Bug: 335383516
Change-Id: Ia4eead297b553a41b522600a5c4cee605c825595
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/193043
Commit-Queue: Fr <beaufort.francois@gmail.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
diff --git a/generator/templates/dawn/native/api_StreamImpl.cpp b/generator/templates/dawn/native/api_StreamImpl.cpp
index 2a7de16..960d29f 100644
--- a/generator/templates/dawn/native/api_StreamImpl.cpp
+++ b/generator/templates/dawn/native/api_StreamImpl.cpp
@@ -103,7 +103,7 @@
     StreamIn(sink, static_cast<bool>(t));
 }
 
-{% call render_streaming_impl("adapter properties", true, false) %}
+{% call render_streaming_impl("adapter info", true, false) %}
 {% endcall %}
 
 {% call render_streaming_impl("dawn cache device descriptor", true, false,
diff --git a/src/dawn/dawn_wire.json b/src/dawn/dawn_wire.json
index da0aab9..548e6b2 100644
--- a/src/dawn/dawn_wire.json
+++ b/src/dawn/dawn_wire.json
@@ -185,7 +185,6 @@
             { "name": "status", "type": "request adapter status" },
             { "name": "message", "type": "char", "annotation": "const*", "length": "strlen", "optional": true },
             { "name": "info", "type": "adapter info", "annotation": "const*", "optional": "true" },
-            { "name": "properties", "type": "adapter properties", "annotation": "const*", "optional": "true" },
             { "name": "limits", "type": "supported limits", "annotation": "const*", "optional": "true" },
             { "name": "features count", "type": "uint32_t"},
             { "name": "features", "type": "feature name", "annotation": "const*", "length": "features count"}
diff --git a/src/dawn/native/Adapter.cpp b/src/dawn/native/Adapter.cpp
index 1879fc1..8db4054 100644
--- a/src/dawn/native/Adapter.cpp
+++ b/src/dawn/native/Adapter.cpp
@@ -124,7 +124,7 @@
 
     AdapterProperties properties = {};
     properties.nextInChain = info->nextInChain;
-    if (APIGetProperties(&properties) == wgpu::Status::Error) {
+    if (GetPropertiesInternal(&properties) == wgpu::Status::Error) {
         return wgpu::Status::Error;
     }
 
@@ -163,6 +163,11 @@
 }
 
 wgpu::Status AdapterBase::APIGetProperties(AdapterProperties* properties) const {
+    mInstance->EmitDeprecationWarning("GetProperties is deprecated, use GetInfo instead.");
+    return GetPropertiesInternal(properties);
+}
+
+wgpu::Status AdapterBase::GetPropertiesInternal(AdapterProperties* properties) const {
     DAWN_ASSERT(properties != nullptr);
     UnpackedPtr<AdapterProperties> unpacked;
     if (mInstance->ConsumedError(ValidateAndUnpack(properties), &unpacked)) {
diff --git a/src/dawn/native/Adapter.h b/src/dawn/native/Adapter.h
index a6dc732..ce61708 100644
--- a/src/dawn/native/Adapter.h
+++ b/src/dawn/native/Adapter.h
@@ -93,6 +93,8 @@
     const std::string& GetName() const;
 
   private:
+    wgpu::Status GetPropertiesInternal(AdapterProperties* properties) const;
+
     std::pair<Ref<DeviceBase::DeviceLostEvent>, ResultOrError<Ref<DeviceBase>>> CreateDevice(
         const DeviceDescriptor* rawDescriptor);
     ResultOrError<Ref<DeviceBase>> CreateDeviceInternal(const DeviceDescriptor* rawDescriptor,
diff --git a/src/dawn/native/Device.cpp b/src/dawn/native/Device.cpp
index 19bdea7..97dde78 100644
--- a/src/dawn/native/Device.cpp
+++ b/src/dawn/native/Device.cpp
@@ -375,8 +375,8 @@
             reinterpret_cast<void*>(callbackInfo.callback), callbackInfo.userdata};
     }
 
-    AdapterProperties adapterProperties;
-    adapter->APIGetProperties(&adapterProperties);
+    AdapterInfo adapterInfo;
+    adapter->APIGetInfo(&adapterInfo);
 
     ApplyFeatures(descriptor);
 
@@ -435,11 +435,11 @@
 
     mIsImmediateErrorHandlingEnabled = IsToggleEnabled(Toggle::EnableImmediateErrorHandling);
 
-    // Record the cache key from the properties. Note that currently, if a new extension
+    // Record the cache key from the adapter info. Note that currently, if a new extension
     // descriptor is added (and probably handled here), the cache key recording needs to be
     // updated.
-    StreamIn(&mDeviceCacheKey, kDawnVersion, adapterProperties, mEnabledFeatures.featuresBitSet,
-             mToggles, cacheDesc);
+    StreamIn(&mDeviceCacheKey, kDawnVersion, adapterInfo, mEnabledFeatures.featuresBitSet, mToggles,
+             cacheDesc);
 }
 
 DeviceBase::DeviceBase() : mState(State::Alive), mToggles(ToggleStage::Device) {
diff --git a/src/dawn/tests/AdapterTestConfig.cpp b/src/dawn/tests/AdapterTestConfig.cpp
index e166942..b316ae1 100644
--- a/src/dawn/tests/AdapterTestConfig.cpp
+++ b/src/dawn/tests/AdapterTestConfig.cpp
@@ -84,17 +84,16 @@
                              forceDisabledWorkarounds);
 }
 
-TestAdapterProperties::TestAdapterProperties(const wgpu::AdapterProperties& properties,
-                                             bool selected)
-    : vendorID(properties.vendorID),
-      vendorName(properties.vendorName),
-      architecture(properties.architecture),
-      deviceID(properties.deviceID),
-      name(properties.name),
-      driverDescription(properties.driverDescription),
-      adapterType(properties.adapterType),
-      backendType(properties.backendType),
-      compatibilityMode(properties.compatibilityMode),
+TestAdapterProperties::TestAdapterProperties(const wgpu::AdapterInfo& info, bool selected)
+    : vendorID(info.vendorID),
+      vendorName(info.vendor),
+      architecture(info.architecture),
+      deviceID(info.deviceID),
+      name(info.device),
+      driverDescription(info.description),
+      adapterType(info.adapterType),
+      backendType(info.backendType),
+      compatibilityMode(info.compatibilityMode),
       selected(selected) {}
 
 std::string TestAdapterProperties::ParamName() const {
diff --git a/src/dawn/tests/AdapterTestConfig.h b/src/dawn/tests/AdapterTestConfig.h
index 0a08058..1919bff 100644
--- a/src/dawn/tests/AdapterTestConfig.h
+++ b/src/dawn/tests/AdapterTestConfig.h
@@ -49,7 +49,7 @@
 };
 
 struct TestAdapterProperties {
-    TestAdapterProperties(const wgpu::AdapterProperties& properties, bool selected);
+    TestAdapterProperties(const wgpu::AdapterInfo& info, bool selected);
     uint32_t vendorID;
     std::string vendorName;
     std::string architecture;
diff --git a/src/dawn/tests/DawnTest.cpp b/src/dawn/tests/DawnTest.cpp
index 0760020..be614d3 100644
--- a/src/dawn/tests/DawnTest.cpp
+++ b/src/dawn/tests/DawnTest.cpp
@@ -458,10 +458,10 @@
                 adapterOptions.compatibilityMode = compatibilityMode;
                 for (const native::Adapter& adapter :
                      instance->EnumerateAdapters(&adapterOptions)) {
-                    wgpu::AdapterProperties properties;
-                    adapter.GetProperties(&properties);
+                    wgpu::AdapterInfo info;
+                    adapter.GetInfo(&info);
 
-                    if (properties.adapterType == devicePreference) {
+                    if (info.adapterType == devicePreference) {
                         // Found a matching preferred device type. Return to break out of all loops.
                         preferredDeviceType = devicePreference;
                         return;
@@ -476,15 +476,14 @@
         wgpu::RequestAdapterOptions adapterOptions;
         adapterOptions.compatibilityMode = compatibilityMode;
         for (const native::Adapter& adapter : instance->EnumerateAdapters(&adapterOptions)) {
-            wgpu::AdapterProperties properties;
-            adapter.GetProperties(&properties);
+            wgpu::AdapterInfo info;
+            adapter.GetInfo(&info);
 
             // Skip non-OpenGLES compat adapters. Metal/Vulkan/D3D12 support
             // core WebGPU.
             // D3D11 is in an experimental state where it may support core.
             // See crbug.com/dawn/1820 for determining d3d11 capabilities.
-            if (properties.compatibilityMode &&
-                properties.backendType != wgpu::BackendType::OpenGLES) {
+            if (info.compatibilityMode && info.backendType != wgpu::BackendType::OpenGLES) {
                 continue;
             }
 
@@ -494,11 +493,11 @@
             // The adapter is deselected if:
             if (mHasBackendTypeFilter) {
                 // It doesn't match the backend type, if present.
-                selected &= properties.backendType == mBackendTypeFilter;
+                selected &= info.backendType == mBackendTypeFilter;
             }
             if (mHasVendorIdFilter) {
                 // It doesn't match the vendor id, if present.
-                selected &= mVendorIdFilter == properties.vendorID;
+                selected &= mVendorIdFilter == info.vendorID;
 
                 if (!mDevicePreferences.empty()) {
                     WarningLog() << "Vendor ID filter provided. Ignoring device type preference.";
@@ -509,29 +508,29 @@
                 selected &=
                     // The device type doesn't match the first available preferred type for that
                     // backend, if present.
-                    (properties.adapterType == *preferredDeviceType) ||
+                    (info.adapterType == *preferredDeviceType) ||
                     // Always select Unknown OpenGL adapters if we don't want a CPU adapter.
                     // OpenGL will usually be unknown because we can't query the device type.
                     // If we ever have Swiftshader GL (unlikely), we could set the DeviceType
                     // properly.
                     (*preferredDeviceType != wgpu::AdapterType::CPU &&
-                     properties.adapterType == wgpu::AdapterType::Unknown &&
-                     (properties.backendType == wgpu::BackendType::OpenGL ||
-                      properties.backendType == wgpu::BackendType::OpenGLES)) ||
+                     info.adapterType == wgpu::AdapterType::Unknown &&
+                     (info.backendType == wgpu::BackendType::OpenGL ||
+                      info.backendType == wgpu::BackendType::OpenGLES)) ||
                     // Always select the Null backend. There are few tests on this backend, and they
                     // run quickly. This is temporary as to not lose coverage. We can group it with
                     // Swiftshader as a CPU adapter when we have Swiftshader tests.
-                    (properties.backendType == wgpu::BackendType::Null);
+                    (info.backendType == wgpu::BackendType::Null);
             }
 
             // In Windows Remote Desktop sessions we may be able to discover multiple adapters that
             // have the same name and backend type. We will just choose one adapter from them in our
             // tests.
-            const auto adapterTypeAndName = std::tuple(
-                properties.backendType, std::string(properties.name), properties.compatibilityMode);
+            const auto adapterTypeAndName =
+                std::tuple(info.backendType, std::string(info.device), info.compatibilityMode);
             if (adapterNameSet.find(adapterTypeAndName) == adapterNameSet.end()) {
                 adapterNameSet.insert(adapterTypeAndName);
-                mAdapterProperties.emplace_back(properties, selected);
+                mAdapterProperties.emplace_back(info, selected);
             }
         }
     }
@@ -745,15 +744,15 @@
         const auto& adapters = gTestEnv->GetInstance()->EnumerateAdapters(&adapterOptions);
         const auto& it =
             std::find_if(adapters.begin(), adapters.end(), [&](const native::Adapter& candidate) {
-                wgpu::AdapterProperties properties;
-                candidate.GetProperties(&properties);
+                wgpu::AdapterInfo info;
+                candidate.GetInfo(&info);
 
                 const auto& param = gCurrentTest->mParam;
                 return (param.adapterProperties.selected &&
-                        properties.deviceID == param.adapterProperties.deviceID &&
-                        properties.vendorID == param.adapterProperties.vendorID &&
-                        properties.adapterType == param.adapterProperties.adapterType &&
-                        strcmp(properties.name, param.adapterProperties.name.c_str()) == 0);
+                        info.deviceID == param.adapterProperties.deviceID &&
+                        info.vendorID == param.adapterProperties.vendorID &&
+                        info.adapterType == param.adapterProperties.adapterType &&
+                        strcmp(info.device, param.adapterProperties.name.c_str()) == 0);
             });
         DAWN_ASSERT(it != adapters.end());
         gCurrentTest->mBackendAdapter = *it;
diff --git a/src/dawn/tests/end2end/AdapterPropertiesD3DTests.cpp b/src/dawn/tests/end2end/AdapterPropertiesD3DTests.cpp
index 22b812d..05e409b 100644
--- a/src/dawn/tests/end2end/AdapterPropertiesD3DTests.cpp
+++ b/src/dawn/tests/end2end/AdapterPropertiesD3DTests.cpp
@@ -43,7 +43,7 @@
         wgpu::AdapterPropertiesD3D d3dProperties;
         properties.nextInChain = &d3dProperties;
 
-        adapter.GetProperties(&properties);
+        EXPECT_DEPRECATION_WARNING(adapter.GetProperties(&properties));
 
         // This is the minimum D3D shader model Dawn supports.
         EXPECT_GE(d3dProperties.shaderModel, 50u);
diff --git a/src/dawn/tests/end2end/AdapterPropertiesVkTests.cpp b/src/dawn/tests/end2end/AdapterPropertiesVkTests.cpp
index d6baf2a..2faa4ed 100644
--- a/src/dawn/tests/end2end/AdapterPropertiesVkTests.cpp
+++ b/src/dawn/tests/end2end/AdapterPropertiesVkTests.cpp
@@ -44,7 +44,7 @@
         wgpu::AdapterPropertiesVk vkProperties;
         properties.nextInChain = &vkProperties;
 
-        adapter.GetProperties(&properties);
+        EXPECT_DEPRECATION_WARNING(adapter.GetProperties(&properties));
 
         // The driver version should be set to something but it depends on the hardware.
         EXPECT_NE(vkProperties.driverVersion, 0u);
diff --git a/src/dawn/tests/end2end/MemoryHeapPropertiesTests.cpp b/src/dawn/tests/end2end/MemoryHeapPropertiesTests.cpp
index 97e2b70..d855c88 100644
--- a/src/dawn/tests/end2end/MemoryHeapPropertiesTests.cpp
+++ b/src/dawn/tests/end2end/MemoryHeapPropertiesTests.cpp
@@ -65,7 +65,7 @@
         wgpu::AdapterPropertiesMemoryHeaps memoryHeapProperties;
         properties.nextInChain = &memoryHeapProperties;
 
-        adapter.GetProperties(&properties);
+        EXPECT_DEPRECATION_WARNING(adapter.GetProperties(&properties));
         CheckMemoryHeapProperties(memoryHeapProperties);
     }
     {
diff --git a/src/dawn/tests/perf_tests/DawnPerfTest.h b/src/dawn/tests/perf_tests/DawnPerfTest.h
index 063963c..e80be66 100644
--- a/src/dawn/tests/perf_tests/DawnPerfTest.h
+++ b/src/dawn/tests/perf_tests/DawnPerfTest.h
@@ -139,9 +139,9 @@
     void SetUp() override {
         DawnTestWithParams<Params>::SetUp();
 
-        wgpu::AdapterProperties properties;
-        this->GetAdapter().GetProperties(&properties);
-        DAWN_TEST_UNSUPPORTED_IF(properties.adapterType == wgpu::AdapterType::CPU);
+        wgpu::AdapterInfo info;
+        this->GetAdapter().GetInfo(&info);
+        DAWN_TEST_UNSUPPORTED_IF(info.adapterType == wgpu::AdapterType::CPU);
 
         if (mSupportsTimestampQuery) {
             InitializeGPUTimer();
diff --git a/src/dawn/tests/unittests/wire/WireInstanceTests.cpp b/src/dawn/tests/unittests/wire/WireInstanceTests.cpp
index 0a97e51..465ea6a 100644
--- a/src/dawn/tests/unittests/wire/WireInstanceTests.cpp
+++ b/src/dawn/tests/unittests/wire/WireInstanceTests.cpp
@@ -128,16 +128,6 @@
     fakeInfo.vendorID = 0x134;
     fakeInfo.deviceID = 0x918;
 
-    WGPUAdapterProperties fakeProperties = {};
-    fakeProperties.vendorID = 0x134;
-    fakeProperties.vendorName = "fake-vendor";
-    fakeProperties.architecture = "fake-architecture";
-    fakeProperties.deviceID = 0x918;
-    fakeProperties.name = "fake adapter";
-    fakeProperties.driverDescription = "hello world";
-    fakeProperties.backendType = WGPUBackendType_D3D12;
-    fakeProperties.adapterType = WGPUAdapterType_IntegratedGPU;
-
     WGPUSupportedLimits fakeLimits = {};
     fakeLimits.nextInChain = nullptr;
     fakeLimits.limits.maxTextureDimension1D = 433;
@@ -160,12 +150,6 @@
                     return WGPUStatus_Success;
                 })));
 
-            EXPECT_CALL(api, AdapterGetProperties(apiAdapter, NotNull()))
-                .WillOnce(WithArg<1>(Invoke([&](WGPUAdapterProperties* properties) {
-                    *properties = fakeProperties;
-                    return WGPUStatus_Success;
-                })));
-
             EXPECT_CALL(api, AdapterGetLimits(apiAdapter, NotNull()))
                 .WillOnce(WithArg<1>(Invoke([&](WGPUSupportedLimits* limits) {
                     *limits = fakeLimits;
@@ -206,14 +190,14 @@
 
                 WGPUAdapterProperties properties = {};
                 wgpuAdapterGetProperties(adapter, &properties);
-                EXPECT_EQ(properties.vendorID, fakeProperties.vendorID);
-                EXPECT_STREQ(properties.vendorName, fakeProperties.vendorName);
-                EXPECT_STREQ(properties.architecture, fakeProperties.architecture);
-                EXPECT_EQ(properties.deviceID, fakeProperties.deviceID);
-                EXPECT_STREQ(properties.name, fakeProperties.name);
-                EXPECT_STREQ(properties.driverDescription, fakeProperties.driverDescription);
-                EXPECT_EQ(properties.backendType, fakeProperties.backendType);
-                EXPECT_EQ(properties.adapterType, fakeProperties.adapterType);
+                EXPECT_EQ(properties.vendorID, fakeInfo.vendorID);
+                EXPECT_STREQ(properties.vendorName, fakeInfo.vendor);
+                EXPECT_STREQ(properties.architecture, fakeInfo.architecture);
+                EXPECT_EQ(properties.deviceID, fakeInfo.deviceID);
+                EXPECT_STREQ(properties.name, fakeInfo.device);
+                EXPECT_STREQ(properties.driverDescription, fakeInfo.description);
+                EXPECT_EQ(properties.backendType, fakeInfo.backendType);
+                EXPECT_EQ(properties.adapterType, fakeInfo.adapterType);
 
                 WGPUSupportedLimits limits = {};
                 EXPECT_EQ(wgpuAdapterGetLimits(adapter, &limits), WGPUStatus_Success);
@@ -280,17 +264,8 @@
                     info->architecture = "fake-architecture";
                     info->device = "fake adapter";
                     info->description = "hello world";
-                    return WGPUStatus_Success;
-                })));
 
-            EXPECT_CALL(api, AdapterGetProperties(apiAdapter, NotNull()))
-                .WillOnce(WithArg<1>(Invoke([&](WGPUAdapterProperties* properties) {
-                    properties->vendorName = "fake-vendor";
-                    properties->architecture = "fake-architecture";
-                    properties->name = "fake adapter";
-                    properties->driverDescription = "hello world";
-
-                    WGPUChainedStructOut* chain = properties->nextInChain;
+                    WGPUChainedStructOut* chain = info->nextInChain;
                     while (chain != nullptr) {
                         auto* next = chain->next;
                         switch (chain->sType) {
@@ -415,16 +390,6 @@
                     return WGPUStatus_Success;
                 })));
 
-            EXPECT_CALL(api, AdapterGetProperties(apiAdapter, NotNull()))
-                .WillOnce(WithArg<1>(Invoke([&](WGPUAdapterProperties* properties) {
-                    *properties = {};
-                    properties->vendorName = "";
-                    properties->architecture = "";
-                    properties->name = "";
-                    properties->driverDescription = "";
-                    return WGPUStatus_Success;
-                })));
-
             EXPECT_CALL(api, AdapterGetLimits(apiAdapter, NotNull()))
                 .WillOnce(WithArg<1>(Invoke([&](WGPUSupportedLimits* limits) {
                     *limits = {};
diff --git a/src/dawn/tests/unittests/wire/WireTest.cpp b/src/dawn/tests/unittests/wire/WireTest.cpp
index c339d65..eb687ec 100644
--- a/src/dawn/tests/unittests/wire/WireTest.cpp
+++ b/src/dawn/tests/unittests/wire/WireTest.cpp
@@ -108,16 +108,6 @@
                 return WGPUStatus_Success;
             })));
 
-        EXPECT_CALL(api, AdapterGetProperties(apiAdapter, NotNull()))
-            .WillOnce(WithArg<1>(Invoke([&](WGPUAdapterProperties* properties) {
-                *properties = {};
-                properties->vendorName = "";
-                properties->architecture = "";
-                properties->name = "";
-                properties->driverDescription = "";
-                return WGPUStatus_Success;
-            })));
-
         EXPECT_CALL(api, AdapterGetLimits(apiAdapter, NotNull()))
             .WillOnce(WithArg<1>(Invoke([&](WGPUSupportedLimits* limits) {
                 *limits = {};
diff --git a/src/dawn/wire/client/Adapter.cpp b/src/dawn/wire/client/Adapter.cpp
index 3b79825..68b9ebd 100644
--- a/src/dawn/wire/client/Adapter.cpp
+++ b/src/dawn/wire/client/Adapter.cpp
@@ -192,39 +192,17 @@
     }
 }
 
-void Adapter::SetProperties(const WGPUAdapterProperties* properties) {
-    mProperties = *properties;
+void Adapter::SetProperties(const WGPUAdapterInfo* info) {
     mProperties.nextInChain = nullptr;
-
-    // Loop through the chained struct.
-    WGPUChainedStructOut* chain = properties->nextInChain;
-    while (chain != nullptr) {
-        switch (chain->sType) {
-            case WGPUSType_AdapterPropertiesMemoryHeaps: {
-                // Make a copy of the heap info in `mMemoryHeapInfo`.
-                const auto* memoryHeapProperties =
-                    reinterpret_cast<const WGPUAdapterPropertiesMemoryHeaps*>(chain);
-                mMemoryHeapInfo = {
-                    memoryHeapProperties->heapInfo,
-                    memoryHeapProperties->heapInfo + memoryHeapProperties->heapCount};
-                break;
-            }
-            case WGPUSType_AdapterPropertiesD3D: {
-                auto* d3dProperties = reinterpret_cast<WGPUAdapterPropertiesD3D*>(chain);
-                mD3DProperties.shaderModel = d3dProperties->shaderModel;
-                break;
-            }
-            case WGPUSType_AdapterPropertiesVk: {
-                auto* vkProperties = reinterpret_cast<WGPUAdapterPropertiesVk*>(chain);
-                mVkProperties.driverVersion = vkProperties->driverVersion;
-                break;
-            }
-            default:
-                DAWN_UNREACHABLE();
-                break;
-        }
-        chain = chain->next;
-    }
+    mProperties.vendorID = info->vendorID;
+    mProperties.vendorName = info->vendor;
+    mProperties.architecture = info->architecture;
+    mProperties.deviceID = info->deviceID;
+    mProperties.name = info->device;
+    mProperties.driverDescription = info->description;
+    mProperties.adapterType = info->adapterType;
+    mProperties.backendType = info->backendType;
+    mProperties.compatibilityMode = info->compatibilityMode;
 }
 
 WGPUStatus Adapter::GetInfo(WGPUAdapterInfo* info) const {
diff --git a/src/dawn/wire/client/Adapter.h b/src/dawn/wire/client/Adapter.h
index 7e9fa6f..7e2a98b 100644
--- a/src/dawn/wire/client/Adapter.h
+++ b/src/dawn/wire/client/Adapter.h
@@ -50,7 +50,7 @@
     void SetLimits(const WGPUSupportedLimits* limits);
     void SetFeatures(const WGPUFeatureName* features, uint32_t featuresCount);
     void SetInfo(const WGPUAdapterInfo* info);
-    void SetProperties(const WGPUAdapterProperties* properties);
+    void SetProperties(const WGPUAdapterInfo* info);
     WGPUStatus GetInfo(WGPUAdapterInfo* info) const;
     WGPUStatus GetProperties(WGPUAdapterProperties* properties) const;
     void RequestDevice(const WGPUDeviceDescriptor* descriptor,
diff --git a/src/dawn/wire/client/Instance.cpp b/src/dawn/wire/client/Instance.cpp
index 85b49b4..3689139 100644
--- a/src/dawn/wire/client/Instance.cpp
+++ b/src/dawn/wire/client/Instance.cpp
@@ -67,7 +67,6 @@
                          WGPURequestAdapterStatus status,
                          const char* message,
                          const WGPUAdapterInfo* info,
-                         const WGPUAdapterProperties* properties,
                          const WGPUSupportedLimits* limits,
                          uint32_t featuresCount,
                          const WGPUFeatureName* features) {
@@ -78,7 +77,7 @@
         }
         if (status == WGPURequestAdapterStatus_Success) {
             mAdapter->SetInfo(info);
-            mAdapter->SetProperties(properties);
+            mAdapter->SetProperties(info);
             mAdapter->SetLimits(limits);
             mAdapter->SetFeatures(features, featuresCount);
         }
@@ -252,12 +251,11 @@
                                                     WGPURequestAdapterStatus status,
                                                     const char* message,
                                                     const WGPUAdapterInfo* info,
-                                                    const WGPUAdapterProperties* properties,
                                                     const WGPUSupportedLimits* limits,
                                                     uint32_t featuresCount,
                                                     const WGPUFeatureName* features) {
     return GetEventManager(eventManager)
-        .SetFutureReady<RequestAdapterEvent>(future.id, status, message, info, properties, limits,
+        .SetFutureReady<RequestAdapterEvent>(future.id, status, message, info, limits,
                                              featuresCount, features);
 }
 
diff --git a/src/dawn/wire/server/ServerInstance.cpp b/src/dawn/wire/server/ServerInstance.cpp
index 200df16..65c9b85 100644
--- a/src/dawn/wire/server/ServerInstance.cpp
+++ b/src/dawn/wire/server/ServerInstance.cpp
@@ -98,13 +98,9 @@
     cmd.featuresCount = std::distance(features.begin(), it);
     cmd.features = features.data();
 
+    // Query and report the adapter info.
     WGPUAdapterInfo info = {};
-    mProcs.adapterGetInfo(adapter, &info);
-    cmd.info = &info;
-
-    // Query and report the adapter properties.
-    WGPUAdapterProperties properties = {};
-    WGPUChainedStructOut** propertiesChain = &properties.nextInChain;
+    WGPUChainedStructOut** propertiesChain = &info.nextInChain;
 
     // Query AdapterPropertiesMemoryHeaps if the feature is supported.
     WGPUAdapterPropertiesMemoryHeaps memoryHeapProperties = {};
@@ -130,8 +126,8 @@
         propertiesChain = &(*propertiesChain)->next;
     }
 
-    mProcs.adapterGetProperties(adapter, &properties);
-    cmd.properties = &properties;
+    mProcs.adapterGetInfo(adapter, &info);
+    cmd.info = &info;
 
     // Query and report the adapter limits, including DawnExperimentalSubgroupLimits.
     WGPUSupportedLimits limits = {};
@@ -145,7 +141,6 @@
 
     SerializeCommand(cmd);
     mProcs.adapterInfoFreeMembers(info);
-    mProcs.adapterPropertiesFreeMembers(properties);
     mProcs.adapterPropertiesMemoryHeapsFreeMembers(memoryHeapProperties);
 }