[d3d12] Disable subgroup matrix on Intel driver 32.0.101.8974

Subgroup matrix produces incorrect results with Intel Windows
driver version 32.0.101.8974.

Bug: 547996281
Change-Id: I087bb217df6b7d08a1938d8465d181419663cb4e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/333235
Commit-Queue: Shao, Jiawei <jiawei.shao@intel.com>
Reviewed-by: James Price <jrprice@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp b/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
index 58239f9..82ffb9f 100644
--- a/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
+++ b/src/dawn/native/d3d12/PhysicalDeviceD3D12.cpp
@@ -212,8 +212,16 @@
         D3D12_FEATURE_DATA_LINEAR_ALGEBRA_SUPPORT linearAlgebraSupport = {};
         hr = mD3d12Device->CheckFeatureSupport(D3D12_FEATURE_LINEAR_ALGEBRA_SUPPORT,
                                                &linearAlgebraSupport, sizeof(linearAlgebraSupport));
+        // Subgroup matrix produces incorrect results on the Intel driver 101.8974, so disable the
+        // feature on that specific driver version. Only the last two version fields participate in
+        // the comparison (see IntelWindowsDriverVersion).
+        const gpu_info::IntelWindowsDriverVersion kBuggyDriverVersion = {32, 0, 101, 8974};
+        const bool isBuggyIntelDriver =
+            gpu_info::IsIntel(GetVendorId()) &&
+            gpu_info::IntelWindowsDriverVersion(GetDriverVersion()) <= kBuggyDriverVersion;
         if (mDeviceInfo.supportsWaveOps && SUCCEEDED(hr) &&
-            linearAlgebraSupport.LinearAlgebraTier >= D3D12_LINEAR_ALGEBRA_TIER_1_0) {
+            linearAlgebraSupport.LinearAlgebraTier >= D3D12_LINEAR_ALGEBRA_TIER_1_0 &&
+            !isBuggyIntelDriver) {
             EnableFeature(Feature::ChromiumExperimentalSubgroupMatrix);
         }
     }