Remove legacy adapter info compatibilityMode and featureLevel

Bug: 366151404 , 395855516 , 395855517
Change-Id: I4d0f73d616bece51a53a60176ee108c0ff06766b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/228414
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Auto-Submit: Shrek Shao <shrekshao@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/dawn.json b/src/dawn/dawn.json
index e4cee37..5f468fd 100644
--- a/src/dawn/dawn.json
+++ b/src/dawn/dawn.json
@@ -191,8 +191,7 @@
             {"name": "vendor ID", "type": "uint32_t"},
             {"name": "device ID", "type": "uint32_t"},
             {"name": "subgroup min size", "type": "uint32_t"},
-            {"name": "subgroup max size", "type": "uint32_t"},
-            {"name": "compatibility mode", "type": "bool", "default": "false", "tags": ["dawn", "emscripten"]}
+            {"name": "subgroup max size", "type": "uint32_t"}
         ]
     },
     "adapter type": {
diff --git a/src/dawn/native/Adapter.cpp b/src/dawn/native/Adapter.cpp
index db5eed5..c63acb2 100644
--- a/src/dawn/native/Adapter.cpp
+++ b/src/dawn/native/Adapter.cpp
@@ -262,7 +262,6 @@
     info->deviceID = mPhysicalDevice->GetDeviceId();
     info->subgroupMinSize = mPhysicalDevice->GetSubgroupMinSize();
     info->subgroupMaxSize = mPhysicalDevice->GetSubgroupMaxSize();
-    info->compatibilityMode = mFeatureLevel == wgpu::FeatureLevel::Compatibility;
 
     if (mPhysicalDevice->GetBackendType() == wgpu::BackendType::D3D12 &&
         mTogglesState.IsEnabled(Toggle::D3D12RelaxMinSubgroupSizeTo8)) {
diff --git a/src/dawn/node/binding/GPUAdapter.cpp b/src/dawn/node/binding/GPUAdapter.cpp
index 8281412..65e2360 100644
--- a/src/dawn/node/binding/GPUAdapter.cpp
+++ b/src/dawn/node/binding/GPUAdapter.cpp
@@ -139,22 +139,6 @@
     return adapterInfo.adapterType == wgpu::AdapterType::CPU;
 }
 
-bool GPUAdapter::getIsCompatibilityMode(Napi::Env) {
-    wgpu::AdapterInfo adapterInfo = {};
-    adapter_.GetInfo(&adapterInfo);
-    return adapterInfo.compatibilityMode;
-}
-
-std::string GPUAdapter::getFeatureLevel(Napi::Env) {
-    wgpu::AdapterInfo adapterInfo = {};
-    // TODO(crbug.com/382291443): Report feature level from wgpu::Adapter.
-    adapter_.GetInfo(&adapterInfo);
-    if (adapterInfo.compatibilityMode) {
-        return "compatibility";
-    }
-    return "core";
-}
-
 namespace {
 // Returns a string representation of the wgpu::ErrorType
 const char* str(wgpu::ErrorType ty) {
diff --git a/src/dawn/node/binding/GPUAdapter.h b/src/dawn/node/binding/GPUAdapter.h
index efffbe6..1d88a92 100644
--- a/src/dawn/node/binding/GPUAdapter.h
+++ b/src/dawn/node/binding/GPUAdapter.h
@@ -53,8 +53,6 @@
     interop::Interface<interop::GPUSupportedLimits> getLimits(Napi::Env) override;
     interop::Interface<interop::GPUAdapterInfo> getInfo(Napi::Env) override;
     bool getIsFallbackAdapter(Napi::Env) override;
-    bool getIsCompatibilityMode(Napi::Env) override;
-    std::string getFeatureLevel(Napi::Env) override;
 
   private:
     wgpu::Adapter adapter_;
diff --git a/src/dawn/node/interop/DawnExtensions.idl b/src/dawn/node/interop/DawnExtensions.idl
index 4c4e3ed..39ed74a 100644
--- a/src/dawn/node/interop/DawnExtensions.idl
+++ b/src/dawn/node/interop/DawnExtensions.idl
@@ -35,11 +35,6 @@
     "core-features-and-limits",
 };
 
-interface GPUAdapter {
-    readonly attribute boolean isCompatibilityMode;
-    readonly attribute DOMString featureLevel;
-};
-
 enum GPUSubgroupMatrixComponentType {
   "f32",
   "f16",
diff --git a/src/dawn/tests/AdapterTestConfig.cpp b/src/dawn/tests/AdapterTestConfig.cpp
index 04796ef..22ecd3b 100644
--- a/src/dawn/tests/AdapterTestConfig.cpp
+++ b/src/dawn/tests/AdapterTestConfig.cpp
@@ -85,7 +85,9 @@
                              forceDisabledWorkarounds);
 }
 
-TestAdapterProperties::TestAdapterProperties(const wgpu::AdapterInfo& info, bool selected)
+TestAdapterProperties::TestAdapterProperties(const wgpu::AdapterInfo& info,
+                                             bool selected,
+                                             bool compatibilityMode)
     : vendorID(info.vendorID),
       vendorName(info.vendor),
       architecture(info.architecture),
@@ -94,7 +96,7 @@
       driverDescription(info.description),
       adapterType(info.adapterType),
       backendType(info.backendType),
-      compatibilityMode(info.compatibilityMode),
+      compatibilityMode(compatibilityMode),
       selected(selected) {}
 
 std::string TestAdapterProperties::ParamName() const {
diff --git a/src/dawn/tests/AdapterTestConfig.h b/src/dawn/tests/AdapterTestConfig.h
index 44a2c2a..3295815 100644
--- a/src/dawn/tests/AdapterTestConfig.h
+++ b/src/dawn/tests/AdapterTestConfig.h
@@ -48,7 +48,7 @@
 };
 
 struct TestAdapterProperties {
-    TestAdapterProperties(const wgpu::AdapterInfo& info, bool selected);
+    TestAdapterProperties(const wgpu::AdapterInfo& info, bool selected, bool compatibilityMode);
     uint32_t vendorID;
     std::string vendorName;
     std::string architecture;
diff --git a/src/dawn/tests/DawnTest.cpp b/src/dawn/tests/DawnTest.cpp
index 582f0f6..7c68ce0 100644
--- a/src/dawn/tests/DawnTest.cpp
+++ b/src/dawn/tests/DawnTest.cpp
@@ -488,7 +488,9 @@
 
             // Skip non-OpenGLES/D3D11 compat adapters. Metal/Vulkan/D3D12 support
             // core WebGPU.
-            if (info.compatibilityMode && info.backendType != wgpu::BackendType::OpenGLES &&
+            bool isDefaultingCompatibilityMode =
+                !adapter.HasFeature(wgpu::FeatureName::CoreFeaturesAndLimits);
+            if (isDefaultingCompatibilityMode && info.backendType != wgpu::BackendType::OpenGLES &&
                 info.backendType != wgpu::BackendType::D3D11) {
                 continue;
             }
@@ -532,11 +534,11 @@
             // 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(info.backendType, std::string(info.device), info.compatibilityMode);
+            const auto adapterTypeAndName = std::tuple(info.backendType, std::string(info.device),
+                                                       isDefaultingCompatibilityMode);
             if (adapterNameSet.find(adapterTypeAndName) == adapterNameSet.end()) {
                 adapterNameSet.insert(adapterTypeAndName);
-                mAdapterProperties.emplace_back(info, selected);
+                mAdapterProperties.emplace_back(info, selected, isDefaultingCompatibilityMode);
             }
         }
     }
diff --git a/src/dawn/tests/end2end/AdapterCreationTests.cpp b/src/dawn/tests/end2end/AdapterCreationTests.cpp
index 3fd5908..75f6509 100644
--- a/src/dawn/tests/end2end/AdapterCreationTests.cpp
+++ b/src/dawn/tests/end2end/AdapterCreationTests.cpp
@@ -70,7 +70,7 @@
                 wgpu::AdapterInfo info;
                 wgpu::Adapter adapter = wgpu::Adapter(nativeAdapter.Get());
                 adapter.GetInfo(&info);
-                if (info.compatibilityMode) {
+                if (!adapter.HasFeature(wgpu::FeatureName::CoreFeaturesAndLimits)) {
                     continue;
                 }
                 swiftShaderAvailable |= gpu_info::IsGoogleSwiftshader(info.vendorID, info.deviceID);
@@ -133,7 +133,7 @@
 
     wgpu::AdapterInfo info;
     adapter.GetInfo(&info);
-    EXPECT_FALSE(info.compatibilityMode);
+    EXPECT_TRUE(adapter.HasFeature(wgpu::FeatureName::CoreFeaturesAndLimits));
 }
 
 // Test that passing nullptr for the options gets the default adapter
@@ -236,9 +236,6 @@
     RequestAdapter(instance, &options);
 
     EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
-    wgpu::AdapterInfo info;
-    adapter.GetInfo(&info);
-    EXPECT_TRUE(info.compatibilityMode);
 }
 
 // Test that GetInstance() returns the correct Instance.
@@ -311,7 +308,6 @@
     wgpu::AdapterType adapterType = info1.adapterType;
     uint32_t vendorID = info1.vendorID;
     uint32_t deviceID = info1.deviceID;
-    bool compatibilityMode = info1.compatibilityMode;
 
     info2 = std::move(info1);
 
@@ -324,7 +320,6 @@
     EXPECT_EQ(info2.adapterType, adapterType);
     EXPECT_EQ(info2.vendorID, vendorID);
     EXPECT_EQ(info2.deviceID, deviceID);
-    EXPECT_EQ(info2.compatibilityMode, compatibilityMode);
 
     // Expect info1 to be empty.
     EXPECT_EQ(info1.vendor.data, nullptr);
@@ -339,7 +334,6 @@
     EXPECT_EQ(info1.adapterType, static_cast<wgpu::AdapterType>(0));
     EXPECT_EQ(info1.vendorID, 0u);
     EXPECT_EQ(info1.deviceID, 0u);
-    EXPECT_EQ(info1.compatibilityMode, false);
 }
 
 // Test move construction of the adapter info.
@@ -367,7 +361,6 @@
     wgpu::AdapterType adapterType = info1.adapterType;
     uint32_t vendorID = info1.vendorID;
     uint32_t deviceID = info1.deviceID;
-    bool compatibilityMode = info1.compatibilityMode;
 
     wgpu::AdapterInfo info2(std::move(info1));
 
@@ -380,7 +373,6 @@
     EXPECT_EQ(info2.adapterType, adapterType);
     EXPECT_EQ(info2.vendorID, vendorID);
     EXPECT_EQ(info2.deviceID, deviceID);
-    EXPECT_EQ(info2.compatibilityMode, compatibilityMode);
 
     // Expect info1 to be empty.
     EXPECT_EQ(info1.vendor.data, nullptr);
@@ -395,7 +387,6 @@
     EXPECT_EQ(info1.adapterType, static_cast<wgpu::AdapterType>(0));
     EXPECT_EQ(info1.vendorID, 0u);
     EXPECT_EQ(info1.deviceID, 0u);
-    EXPECT_EQ(info1.compatibilityMode, false);
 }
 
 // Test that the adapter info can outlive the adapter.
diff --git a/src/dawn/tests/end2end/AdapterEnumerationTests.cpp b/src/dawn/tests/end2end/AdapterEnumerationTests.cpp
index f9d78aa..59cbd4b 100644
--- a/src/dawn/tests/end2end/AdapterEnumerationTests.cpp
+++ b/src/dawn/tests/end2end/AdapterEnumerationTests.cpp
@@ -171,7 +171,6 @@
         EXPECT_EQ(info.adapterType, infoAgain.adapterType);
         EXPECT_EQ(info.vendorID, infoAgain.vendorID);
         EXPECT_EQ(info.deviceID, infoAgain.deviceID);
-        EXPECT_EQ(info.compatibilityMode, infoAgain.compatibilityMode);
     }
 }
 #endif  // defined(DAWN_ENABLE_BACKEND_D3D11)
@@ -248,7 +247,6 @@
         EXPECT_EQ(info.adapterType, infoAgain.adapterType);
         EXPECT_EQ(info.vendorID, infoAgain.vendorID);
         EXPECT_EQ(info.deviceID, infoAgain.deviceID);
-        EXPECT_EQ(info.compatibilityMode, infoAgain.compatibilityMode);
     }
 }
 #endif  // defined(DAWN_ENABLE_BACKEND_D3D12)