[dawn][headers] Removes outdated AdapterPropertiesSubgroups struct.

- The struct's fields have since been merged into AdapterInfo, so
  we can remove the extension struct now.

Change-Id: I32993ebcad33c382373ff18e924bc500ffbe0176
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/241394
Auto-Submit: Loko Kung <lokokung@google.com>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Loko Kung <lokokung@google.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
diff --git a/src/dawn/dawn.json b/src/dawn/dawn.json
index 67c3f8e..6959658 100644
--- a/src/dawn/dawn.json
+++ b/src/dawn/dawn.json
@@ -1598,15 +1598,6 @@
             {"name": "max storage textures in fragment stage", "type": "uint32_t", "default": "limit u32 undefined"}
         ]
     },
-    "adapter properties subgroups": {
-        "category": "structure",
-        "chained": "out",
-        "chain roots": ["adapter info"],
-        "members": [
-            {"name": "subgroup min size", "type": "uint32_t", "default": "limit u32 undefined"},
-            {"name": "subgroup max size", "type": "uint32_t", "default": "limit u32 undefined"}
-        ]
-    },
     "dawn texel copy buffer row alignment limits": {
         "category": "structure",
         "chained": "out",
@@ -3797,7 +3788,6 @@
             {"value": 9, "name": "surface source XCB window"},
             {"value": 10, "name": "surface color management", "tags": ["upstream", "emscripten"]},
             {"value": 11, "name": "request adapter WebXR options", "tags": ["upstream", "emscripten"]},
-            {"value": 12, "name": "adapter properties subgroups"},
 
             {"value": 0, "name": "texture binding view dimension descriptor", "tags": ["compat"]},
 
diff --git a/src/dawn/native/Adapter.cpp b/src/dawn/native/Adapter.cpp
index 1a4a740..6ebd897 100644
--- a/src/dawn/native/Adapter.cpp
+++ b/src/dawn/native/Adapter.cpp
@@ -156,23 +156,9 @@
     if (auto* powerPreferenceDesc = unpacked.Get<DawnAdapterPropertiesPowerPreference>()) {
         powerPreferenceDesc->powerPreference = mPowerPreference;
     }
-    if (auto* subgroupsProperties = unpacked.Get<AdapterPropertiesSubgroups>()) {
-        // When the feature is *not* supported, these must be 4 and 128.
-        // Set those defaults now, but a backend may override this.
-        subgroupsProperties->subgroupMinSize = 4;
-        subgroupsProperties->subgroupMaxSize = 128;
-    }
 
     mPhysicalDevice->PopulateBackendProperties(unpacked);
 
-    if (auto* subgroupsProperties = unpacked.Get<AdapterPropertiesSubgroups>()) {
-        if (mPhysicalDevice->GetBackendType() == wgpu::BackendType::D3D12 &&
-            mTogglesState.IsEnabled(Toggle::D3D12RelaxMinSubgroupSizeTo8)) {
-            subgroupsProperties->subgroupMinSize =
-                std::min(subgroupsProperties->subgroupMinSize, 8u);
-        }
-    }
-
     // Allocate space for all strings.
     size_t allocSize = mPhysicalDevice->GetVendorName().length() +
                        mPhysicalDevice->GetArchitectureName().length() +
diff --git a/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp b/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
index eaf6c1a..1c04a4a 100644
--- a/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
+++ b/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
@@ -856,13 +856,6 @@
 }
 
 void PhysicalDevice::PopulateBackendProperties(UnpackedPtr<AdapterInfo>& info) const {
-    if (auto* subgroupProperties = info.Get<AdapterPropertiesSubgroups>()) {
-        subgroupProperties->subgroupMinSize = mDeviceInfo.waveLaneCountMin;
-        // Currently the WaveLaneCountMax queried from D3D12 API is not reliable and the meaning is
-        // unclear. Use 128 instead, which is the largest possible size. Reference:
-        // https://github.com/Microsoft/DirectXShaderCompiler/wiki/Wave-Intrinsics#:~:text=UINT%20WaveLaneCountMax
-        subgroupProperties->subgroupMaxSize = 128u;
-    }
     if (auto* memoryHeapProperties = info.Get<AdapterPropertiesMemoryHeaps>()) {
         // https://microsoft.github.io/DirectX-Specs/d3d/D3D12GPUUploadHeaps.html describes
         // the properties of D3D12 Default/Upload/Readback heaps.
diff --git a/src/dawn/native/metal/PhysicalDeviceMTL.mm b/src/dawn/native/metal/PhysicalDeviceMTL.mm
index 3bf2d30..9e68f10 100644
--- a/src/dawn/native/metal/PhysicalDeviceMTL.mm
+++ b/src/dawn/native/metal/PhysicalDeviceMTL.mm
@@ -893,10 +893,6 @@
 }
 
 void PhysicalDevice::PopulateBackendProperties(UnpackedPtr<AdapterInfo>& info) const {
-    if (auto* subgroupProperties = info.Get<AdapterPropertiesSubgroups>()) {
-        subgroupProperties->subgroupMinSize = 4;
-        subgroupProperties->subgroupMaxSize = 64;
-    }
     if (auto* memoryHeapProperties = info.Get<AdapterPropertiesMemoryHeaps>()) {
         if ([*mDevice hasUnifiedMemory]) {
             auto* heapInfo = new MemoryHeapInfo[1];
diff --git a/src/dawn/native/null/DeviceNull.cpp b/src/dawn/native/null/DeviceNull.cpp
index 566654d..4baddba 100644
--- a/src/dawn/native/null/DeviceNull.cpp
+++ b/src/dawn/native/null/DeviceNull.cpp
@@ -116,10 +116,6 @@
 }
 
 void PhysicalDevice::PopulateBackendProperties(UnpackedPtr<AdapterInfo>& info) const {
-    if (auto* subgroupProperties = info.Get<AdapterPropertiesSubgroups>()) {
-        subgroupProperties->subgroupMinSize = 4;
-        subgroupProperties->subgroupMaxSize = 128;
-    }
     if (auto* memoryHeapProperties = info.Get<AdapterPropertiesMemoryHeaps>()) {
         auto* heapInfo = new MemoryHeapInfo[1];
         memoryHeapProperties->heapCount = 1;
diff --git a/src/dawn/native/vulkan/PhysicalDeviceVk.cpp b/src/dawn/native/vulkan/PhysicalDeviceVk.cpp
index 604374b..0c07c81 100644
--- a/src/dawn/native/vulkan/PhysicalDeviceVk.cpp
+++ b/src/dawn/native/vulkan/PhysicalDeviceVk.cpp
@@ -1198,13 +1198,6 @@
 }
 
 void PhysicalDevice::PopulateBackendProperties(UnpackedPtr<AdapterInfo>& info) const {
-    if (auto* subgroupProperties = info.Get<AdapterPropertiesSubgroups>()) {
-        // Subgroups are supported only if subgroup size control is supported.
-        subgroupProperties->subgroupMinSize =
-            mDeviceInfo.subgroupSizeControlProperties.minSubgroupSize;
-        subgroupProperties->subgroupMaxSize =
-            mDeviceInfo.subgroupSizeControlProperties.maxSubgroupSize;
-    }
     if (auto* memoryHeapProperties = info.Get<AdapterPropertiesMemoryHeaps>()) {
         size_t count = mDeviceInfo.memoryHeaps.size();
         auto* heapInfo = new MemoryHeapInfo[count];
diff --git a/src/dawn/native/webgpu/PhysicalDeviceWGPU.cpp b/src/dawn/native/webgpu/PhysicalDeviceWGPU.cpp
index b7302d5..ab76b96 100644
--- a/src/dawn/native/webgpu/PhysicalDeviceWGPU.cpp
+++ b/src/dawn/native/webgpu/PhysicalDeviceWGPU.cpp
@@ -138,11 +138,6 @@
 }
 
 void PhysicalDevice::PopulateBackendProperties(UnpackedPtr<AdapterInfo>& info) const {
-    if (auto* subgroupProperties = info.Get<AdapterPropertiesSubgroups>()) {
-        subgroupProperties->subgroupMinSize = mSubgroupMinSize;
-        subgroupProperties->subgroupMaxSize = mSubgroupMaxSize;
-    }
-
     // TODO(crbug.com/413053623): Populate other AdapterInfo Chained extensions when necessary.
 }
 
diff --git a/src/dawn/samples/DawnInfo.cpp b/src/dawn/samples/DawnInfo.cpp
index 0660378..678c85a 100644
--- a/src/dawn/samples/DawnInfo.cpp
+++ b/src/dawn/samples/DawnInfo.cpp
@@ -220,18 +220,15 @@
 }
 
 void DumpAdapterInfo(const wgpu::Adapter& adapter) {
-    wgpu::AdapterPropertiesSubgroups subgroup_props{};
-
     wgpu::DawnAdapterPropertiesPowerPreference power_props{};
-    power_props.nextInChain = &subgroup_props;
 
     wgpu::AdapterInfo info{};
     info.nextInChain = &power_props;
 
     adapter.GetInfo(&info);
     std::cout << AdapterInfoToString(info);
-    std::cout << "Subgroup min size: " << subgroup_props.subgroupMinSize << "\n";
-    std::cout << "Subgroup max size: " << subgroup_props.subgroupMaxSize << "\n";
+    std::cout << "Subgroup min size: " << info.subgroupMinSize << "\n";
+    std::cout << "Subgroup max size: " << info.subgroupMaxSize << "\n";
     std::cout << "Power: " << PowerPreferenceToString(power_props) << "\n";
     std::cout << "\n";
 }
diff --git a/src/dawn/tests/end2end/SubgroupsTests.cpp b/src/dawn/tests/end2end/SubgroupsTests.cpp
index e8b0423..b7db8c6 100644
--- a/src/dawn/tests/end2end/SubgroupsTests.cpp
+++ b/src/dawn/tests/end2end/SubgroupsTests.cpp
@@ -85,63 +85,6 @@
     }
 };
 
-using SubgroupsPropertiesTests = SubgroupsAdapterInfoTestBase<SubgroupsAdapterInfoParams>;
-
-// Test that subgroupMinSize and subgroupMaxSize in wgpu::AdapterPropertiesSubgroups are valid.
-TEST_P(SubgroupsPropertiesTests, FromAdapter) {
-    wgpu::AdapterPropertiesSubgroups subgroup_properties;
-
-    // Write invalid values to start with, to make sure they are overwritten.
-    subgroup_properties.subgroupMinSize = 3;
-    subgroup_properties.subgroupMaxSize = 443;
-
-    wgpu::AdapterInfo info;
-    info.nextInChain = &subgroup_properties;
-
-    adapter.GetInfo(&info);
-
-    // Check the integrity of the struct.
-    EXPECT_EQ(subgroup_properties.sType, wgpu::SType::AdapterPropertiesSubgroups);
-    EXPECT_EQ(subgroup_properties.nextInChain, nullptr);
-
-    CheckValidSizes(subgroup_properties.subgroupMinSize, subgroup_properties.subgroupMaxSize);
-}
-
-// Test that subgroupMinSize and subgroupMaxSize in wgpu::AdapterPropertiesSubgroups are valid.
-TEST_P(SubgroupsPropertiesTests, FromDevice) {
-    wgpu::AdapterPropertiesSubgroups subgroup_properties;
-    wgpu::AdapterInfo info;
-    info.nextInChain = &subgroup_properties;
-
-    device.GetAdapterInfo(&info);
-
-    CheckValidSizes(subgroup_properties.subgroupMinSize, subgroup_properties.subgroupMaxSize);
-}
-
-// Test that subgroupMinSize and subgroupMaxSize in wgpu::AdapterPropertiesSubgroups are the same
-// between adapter and device.
-TEST_P(SubgroupsPropertiesTests, DeviceAndAdapterAgree) {
-    wgpu::AdapterPropertiesSubgroups adapter_subgroup_properties;
-    wgpu::AdapterInfo adapter_info;
-    adapter_info.nextInChain = &adapter_subgroup_properties;
-    adapter.GetInfo(&adapter_info);
-
-    wgpu::AdapterPropertiesSubgroups device_subgroup_properties;
-    wgpu::AdapterInfo device_info;
-    device_info.nextInChain = &device_subgroup_properties;
-    device.GetAdapterInfo(&device_info);
-
-    EXPECT_EQ(device_subgroup_properties.subgroupMinSize,
-              adapter_subgroup_properties.subgroupMinSize);
-    EXPECT_EQ(device_subgroup_properties.subgroupMaxSize,
-              adapter_subgroup_properties.subgroupMaxSize);
-}
-
-DAWN_INSTANTIATE_TEST_P(SubgroupsPropertiesTests,
-                        {D3D12Backend(), D3D12Backend({}, {"use_dxc"}), MetalBackend(),
-                         VulkanBackend()},
-                        {RequestSubgroups::WhenAvailable, RequestSubgroups::Never});
-
 using SubgroupsAdapterInfoTests = SubgroupsAdapterInfoTestBase<SubgroupsAdapterInfoParams>;
 
 // Test that subgroupMinSize and subgroupMaxSize in wgpu::AdapterInfo are valid.
diff --git a/src/dawn/tests/unittests/wire/WireInstanceTests.cpp b/src/dawn/tests/unittests/wire/WireInstanceTests.cpp
index df30461..bcb37b1 100644
--- a/src/dawn/tests/unittests/wire/WireInstanceTests.cpp
+++ b/src/dawn/tests/unittests/wire/WireInstanceTests.cpp
@@ -236,11 +236,6 @@
     fakeVkProperties.chain.sType = WGPUSType_AdapterPropertiesVk;
     fakeVkProperties.driverVersion = 0x801F6000;
 
-    WGPUAdapterPropertiesSubgroups fakeSubgroupsProperties = {};
-    fakeSubgroupsProperties.chain.sType = WGPUSType_AdapterPropertiesSubgroups;
-    fakeSubgroupsProperties.subgroupMinSize = 4;
-    fakeSubgroupsProperties.subgroupMaxSize = 128;
-
     WGPUSubgroupMatrixConfig fakeMatrixConfigs[3] = {
         {WGPUSubgroupMatrixComponentType_F32, WGPUSubgroupMatrixComponentType_F32, 8, 4, 2},
         {WGPUSubgroupMatrixComponentType_U32, WGPUSubgroupMatrixComponentType_I32, 4, 8, 16},
@@ -260,7 +255,6 @@
         WGPUFeatureName_AdapterPropertiesMemoryHeaps,
         WGPUFeatureName_AdapterPropertiesD3D,
         WGPUFeatureName_AdapterPropertiesVk,
-        WGPUFeatureName_Subgroups,
         WGPUFeatureName_ChromiumExperimentalSubgroupMatrix,
     };
     WGPUSupportedFeatures fakeFeatures = {fakeFeaturesList.size(), std::data(fakeFeaturesList)};
@@ -295,10 +289,6 @@
                                 *reinterpret_cast<WGPUAdapterPropertiesVk*>(chain) =
                                     fakeVkProperties;
                                 break;
-                            case WGPUSType_AdapterPropertiesSubgroups:
-                                *reinterpret_cast<WGPUAdapterPropertiesSubgroups*>(chain) =
-                                    fakeSubgroupsProperties;
-                                break;
                             case WGPUSType_AdapterPropertiesSubgroupMatrixConfigs:
                                 *reinterpret_cast<WGPUAdapterPropertiesSubgroupMatrixConfigs*>(
                                     chain) = fakeSubgroupMatrixConfigs;
@@ -368,17 +358,6 @@
                 // Expect them to match.
                 EXPECT_EQ(vkProperties.driverVersion, fakeVkProperties.driverVersion);
 
-                // Get the Subgroups properties.
-                WGPUAdapterPropertiesSubgroups subgroupsProperties = {};
-                subgroupsProperties.chain.sType = WGPUSType_AdapterPropertiesSubgroups;
-                info.nextInChain = &subgroupsProperties.chain;
-                adapter.GetInfo(reinterpret_cast<wgpu::AdapterInfo*>(&info));
-                // Expect them to match.
-                EXPECT_EQ(subgroupsProperties.subgroupMinSize,
-                          fakeSubgroupsProperties.subgroupMinSize);
-                EXPECT_EQ(subgroupsProperties.subgroupMaxSize,
-                          fakeSubgroupsProperties.subgroupMaxSize);
-
                 // Get the subgroup matrix properties.
                 WGPUAdapterPropertiesSubgroupMatrixConfigs subgroupMatrixConfigs = {};
                 subgroupMatrixConfigs.chain.sType =
diff --git a/src/dawn/wire/client/Adapter.cpp b/src/dawn/wire/client/Adapter.cpp
index aa9917a..9e3f57a 100644
--- a/src/dawn/wire/client/Adapter.cpp
+++ b/src/dawn/wire/client/Adapter.cpp
@@ -182,13 +182,6 @@
                 mVkProperties.driverVersion = vkProperties->driverVersion;
                 break;
             }
-            case WGPUSType_AdapterPropertiesSubgroups: {
-                auto* subgroupsProperties =
-                    reinterpret_cast<WGPUAdapterPropertiesSubgroups*>(chain);
-                mSubgroupsProperties.subgroupMinSize = subgroupsProperties->subgroupMinSize;
-                mSubgroupsProperties.subgroupMaxSize = subgroupsProperties->subgroupMaxSize;
-                break;
-            }
             case WGPUSType_AdapterPropertiesSubgroupMatrixConfigs: {
                 // Make a copy of the heap info in `mSubgroupMatrixConfigs`.
                 const auto* subgroupMatrixConfigs =
@@ -239,13 +232,6 @@
                 vkProperties->driverVersion = mVkProperties.driverVersion;
                 break;
             }
-            case WGPUSType_AdapterPropertiesSubgroups: {
-                auto* subgroupsProperties =
-                    reinterpret_cast<WGPUAdapterPropertiesSubgroups*>(chain);
-                subgroupsProperties->subgroupMinSize = mSubgroupsProperties.subgroupMinSize;
-                subgroupsProperties->subgroupMaxSize = mSubgroupsProperties.subgroupMaxSize;
-                break;
-            }
             case WGPUSType_AdapterPropertiesSubgroupMatrixConfigs: {
                 if (!HasFeature(WGPUFeatureName_ChromiumExperimentalSubgroupMatrix)) {
                     return WGPUStatus_Error;
diff --git a/src/dawn/wire/client/Adapter.h b/src/dawn/wire/client/Adapter.h
index 2a498ce..90d4f37 100644
--- a/src/dawn/wire/client/Adapter.h
+++ b/src/dawn/wire/client/Adapter.h
@@ -71,13 +71,6 @@
     std::vector<WGPUMemoryHeapInfo> mMemoryHeapInfo;
     WGPUAdapterPropertiesD3D mD3DProperties;
     WGPUAdapterPropertiesVk mVkProperties;
-    // Initialize subgroup properties so they can be read even if adapter
-    // acquisition fails.
-    WGPUAdapterPropertiesSubgroups mSubgroupsProperties = {
-        {nullptr, WGPUSType_AdapterPropertiesSubgroups},
-        4u,   // subgroupMinSize
-        128u  // subgroupMaxSize
-    };
     std::vector<WGPUSubgroupMatrixConfig> mSubgroupMatrixConfigs;
     WGPUDawnAdapterPropertiesPowerPreference mPowerProperties;
 };
diff --git a/src/dawn/wire/server/ServerInstance.cpp b/src/dawn/wire/server/ServerInstance.cpp
index a266cea..abf237c 100644
--- a/src/dawn/wire/server/ServerInstance.cpp
+++ b/src/dawn/wire/server/ServerInstance.cpp
@@ -113,14 +113,6 @@
         propertiesChain = &(*propertiesChain)->next;
     }
 
-    // Query AdapterPropertiesSubgroups if the feature is supported.
-    WGPUAdapterPropertiesSubgroups subgroupsProperties = {};
-    subgroupsProperties.chain.sType = WGPUSType_AdapterPropertiesSubgroups;
-    if (mProcs.adapterHasFeature(adapter, WGPUFeatureName_Subgroups)) {
-        *propertiesChain = &subgroupsProperties.chain;
-        propertiesChain = &(*propertiesChain)->next;
-    }
-
     // Query AdapterPropertiesSubgroupMatrixConfigs if the feature is supported.
     FreeMembers<WGPUAdapterPropertiesSubgroupMatrixConfigs> subgroupMatrixConfigs(mProcs);
     // WGPUAdapterPropertiesSubgroupMatrixConfigs subgroupMatrixConfigs{};
diff --git a/third_party/webgpu-headers/webgpu.h.diff b/third_party/webgpu-headers/webgpu.h.diff
index ec8e710..5a26a73 100644
--- a/third_party/webgpu-headers/webgpu.h.diff
+++ b/third_party/webgpu-headers/webgpu.h.diff
@@ -20,15 +20,6 @@
  #define WGPU_COPY_STRIDE_UNDEFINED (UINT32_MAX)
  #define WGPU_DEPTH_CLEAR_VALUE_UNDEFINED (NAN)
 @@
- typedef struct WGPUTextureImpl* WGPUTexture WGPU_OBJECT_ATTRIBUTE;
- typedef struct WGPUTextureViewImpl* WGPUTextureView WGPU_OBJECT_ATTRIBUTE;
- 
--struct WGPUAdapterInfo;
-+struct WGPUAdapterPropertiesSubgroups;
- struct WGPUBindGroupEntry;
- struct WGPUBlendComponent;
- struct WGPUBufferBindingLayout;
-@@
  struct WGPUConstantEntry;
  struct WGPUExtent3D;
  struct WGPUFuture;
@@ -52,10 +43,7 @@
 +struct WGPUTextureBindingViewDimensionDescriptor;
  struct WGPUTextureViewDescriptor;
  struct WGPUVertexAttribute;
-+struct WGPUAdapterInfo;
  struct WGPUBindGroupDescriptor;
- struct WGPUBindGroupLayoutEntry;
- struct WGPUBlendState;
 @@
  struct WGPUFragmentState;
  struct WGPURenderPipelineDescriptor;
@@ -100,7 +88,6 @@
      WGPUSType_SurfaceSourceXCBWindow = 0x00000009,
      WGPUSType_SurfaceColorManagement = 0x0000000A,
      WGPUSType_RequestAdapterWebXROptions = 0x0000000B,
-+    WGPUSType_AdapterPropertiesSubgroups = 0x0000000C,
 +    WGPUSType_TextureBindingViewDimensionDescriptor = 0x00020000,
      WGPUSType_Force32 = 0x7FFFFFFF
  } WGPUSType WGPU_ENUM_ATTRIBUTE;
@@ -133,50 +120,6 @@
  typedef void (*WGPURequestAdapterCallback)(WGPURequestAdapterStatus status, WGPUAdapter adapter, WGPUStringView message, WGPU_NULLABLE void* userdata1, WGPU_NULLABLE void* userdata2) WGPU_FUNCTION_ATTRIBUTE;
  
 @@
-     /*.userdata2=*/NULL _wgpu_COMMA \
- })
- 
--typedef struct WGPUAdapterInfo {
--    WGPUChainedStruct * nextInChain;
--    WGPUStringView vendor;
--    WGPUStringView architecture;
--    WGPUStringView device;
--    WGPUStringView description;
--    WGPUBackendType backendType;
--    WGPUAdapterType adapterType;
--    uint32_t vendorID;
--    uint32_t deviceID;
-+typedef struct WGPUAdapterPropertiesSubgroups {
-+    WGPUChainedStruct chain;
-     uint32_t subgroupMinSize;
-     uint32_t subgroupMaxSize;
--} WGPUAdapterInfo WGPU_STRUCTURE_ATTRIBUTE;
--
--#define WGPU_ADAPTER_INFO_INIT _wgpu_MAKE_INIT_STRUCT(WGPUAdapterInfo, { \
--    /*.nextInChain=*/NULL _wgpu_COMMA \
--    /*.vendor=*/WGPU_STRING_VIEW_INIT _wgpu_COMMA \
--    /*.architecture=*/WGPU_STRING_VIEW_INIT _wgpu_COMMA \
--    /*.device=*/WGPU_STRING_VIEW_INIT _wgpu_COMMA \
--    /*.description=*/WGPU_STRING_VIEW_INIT _wgpu_COMMA \
--    /*.backendType=*/WGPUBackendType_Undefined _wgpu_COMMA \
--    /*.adapterType=*/_wgpu_ENUM_ZERO_INIT(WGPUAdapterType) _wgpu_COMMA \
--    /*.vendorID=*/0 _wgpu_COMMA \
--    /*.deviceID=*/0 _wgpu_COMMA \
--    /*.subgroupMinSize=*/0 _wgpu_COMMA \
--    /*.subgroupMaxSize=*/0 _wgpu_COMMA \
-+} WGPUAdapterPropertiesSubgroups WGPU_STRUCTURE_ATTRIBUTE;
-+
-+#define WGPU_ADAPTER_PROPERTIES_SUBGROUPS_INIT _wgpu_MAKE_INIT_STRUCT(WGPUAdapterPropertiesSubgroups, { \
-+    /*.chain=*/_wgpu_MAKE_INIT_STRUCT(WGPUChainedStruct, { \
-+        /*.next=*/NULL _wgpu_COMMA \
-+        /*.sType=*/WGPUSType_AdapterPropertiesSubgroups _wgpu_COMMA \
-+    }) _wgpu_COMMA \
-+    /*.subgroupMinSize=*/WGPU_LIMIT_U32_UNDEFINED _wgpu_COMMA \
-+    /*.subgroupMaxSize=*/WGPU_LIMIT_U32_UNDEFINED _wgpu_COMMA \
- })
- 
- typedef struct WGPUBindGroupEntry {
-@@
  #define WGPU_BUFFER_BINDING_LAYOUT_INIT _wgpu_MAKE_INIT_STRUCT(WGPUBufferBindingLayout, { \
      /*.nextInChain=*/NULL _wgpu_COMMA \
      /*.type=*/WGPUBufferBindingType_Undefined _wgpu_COMMA \
@@ -356,41 +299,6 @@
  
  typedef struct WGPUTextureViewDescriptor {
 @@
-     /*.format=*/_wgpu_ENUM_ZERO_INIT(WGPUVertexFormat) _wgpu_COMMA \
-     /*.offset=*/0 _wgpu_COMMA \
-     /*.shaderLocation=*/0 _wgpu_COMMA \
-+})
-+
-+typedef struct WGPUAdapterInfo {
-+    WGPUChainedStruct * nextInChain;
-+    WGPUStringView vendor;
-+    WGPUStringView architecture;
-+    WGPUStringView device;
-+    WGPUStringView description;
-+    WGPUBackendType backendType;
-+    WGPUAdapterType adapterType;
-+    uint32_t vendorID;
-+    uint32_t deviceID;
-+    uint32_t subgroupMinSize;
-+    uint32_t subgroupMaxSize;
-+} WGPUAdapterInfo WGPU_STRUCTURE_ATTRIBUTE;
-+
-+#define WGPU_ADAPTER_INFO_INIT _wgpu_MAKE_INIT_STRUCT(WGPUAdapterInfo, { \
-+    /*.nextInChain=*/NULL _wgpu_COMMA \
-+    /*.vendor=*/WGPU_STRING_VIEW_INIT _wgpu_COMMA \
-+    /*.architecture=*/WGPU_STRING_VIEW_INIT _wgpu_COMMA \
-+    /*.device=*/WGPU_STRING_VIEW_INIT _wgpu_COMMA \
-+    /*.description=*/WGPU_STRING_VIEW_INIT _wgpu_COMMA \
-+    /*.backendType=*/WGPUBackendType_Undefined _wgpu_COMMA \
-+    /*.adapterType=*/_wgpu_ENUM_ZERO_INIT(WGPUAdapterType) _wgpu_COMMA \
-+    /*.vendorID=*/0 _wgpu_COMMA \
-+    /*.deviceID=*/0 _wgpu_COMMA \
-+    /*.subgroupMinSize=*/0 _wgpu_COMMA \
-+    /*.subgroupMaxSize=*/0 _wgpu_COMMA \
- })
- 
- typedef struct WGPUBindGroupDescriptor {
-@@
      /*.nextInChain=*/NULL _wgpu_COMMA \
      /*.format=*/WGPUTextureFormat_Undefined _wgpu_COMMA \
      /*.depthWriteEnabled=*/WGPUOptionalBool_Undefined _wgpu_COMMA \
diff --git a/tools/android/BUILD.gn b/tools/android/BUILD.gn
index a855723..9bcfc69 100644
--- a/tools/android/BUILD.gn
+++ b/tools/android/BUILD.gn
@@ -45,7 +45,6 @@
   outputs = [
     "java/android/dawn/Adapter.kt",
     "java/android/dawn/AdapterInfo.kt",
-    "java/android/dawn/AdapterPropertiesSubgroups.kt",
     "java/android/dawn/AdapterType.kt",
     "java/android/dawn/AddressMode.kt",
     "java/android/dawn/AsyncHelpers.kt",