diff --git a/src/common/GPUInfo.cpp b/src/common/GPUInfo.cpp
index 60076d2830..c3ea9cefb5 100644
--- a/src/common/GPUInfo.cpp
+++ b/src/common/GPUInfo.cpp
@@ -36,4 +36,7 @@ namespace gpu_info {
     bool IsSwiftshader(PCIVendorID vendorId, PCIDeviceID deviceId) {
         return vendorId == kVendorID_Google && deviceId == kDeviceID_Swiftshader;
     }
+    bool IsWARP(PCIVendorID vendorId, PCIDeviceID deviceId) {
+        return vendorId == kVendorID_Microsoft && deviceId == kDeviceID_WARP;
+    }
 }  // namespace gpu_info
diff --git a/src/common/GPUInfo.h b/src/common/GPUInfo.h
index d16c89b9b9..87efbbc9df 100644
--- a/src/common/GPUInfo.h
+++ b/src/common/GPUInfo.h
@@ -29,8 +29,10 @@ namespace gpu_info {
     static constexpr PCIVendorID kVendorID_Nvidia = 0x10DE;
     static constexpr PCIVendorID kVendorID_Qualcomm = 0x5143;
     static constexpr PCIVendorID kVendorID_Google = 0x1AE0;
+    static constexpr PCIVendorID kVendorID_Microsoft = 0x1414;
 
     static constexpr PCIDeviceID kDeviceID_Swiftshader = 0xC0DE;
+    static constexpr PCIDeviceID kDeviceID_WARP = 0x8c;
 
     bool IsAMD(PCIVendorID vendorId);
     bool IsARM(PCIVendorID vendorId);
@@ -39,6 +41,7 @@ namespace gpu_info {
     bool IsNvidia(PCIVendorID vendorId);
     bool IsQualcomm(PCIVendorID vendorId);
     bool IsSwiftshader(PCIVendorID vendorId, PCIDeviceID deviceId);
+    bool IsWARP(PCIVendorID vendorId, PCIDeviceID deviceId);
 
 }  // namespace gpu_info
 #endif  // COMMON_GPUINFO_H
diff --git a/src/tests/DawnTest.cpp b/src/tests/DawnTest.cpp
index b71e84f6a3..64e74555d3 100644
--- a/src/tests/DawnTest.cpp
+++ b/src/tests/DawnTest.cpp
@@ -647,6 +647,10 @@ bool DawnTestBase::IsSwiftshader() const {
                                    mParam.adapterProperties.deviceID);
 }
 
+bool DawnTestBase::IsWARP() const {
+    return gpu_info::IsWARP(mParam.adapterProperties.vendorID, mParam.adapterProperties.deviceID);
+}
+
 bool DawnTestBase::IsWindows() const {
 #ifdef DAWN_PLATFORM_WINDOWS
     return true;
diff --git a/src/tests/DawnTest.h b/src/tests/DawnTest.h
index dddb9ad8ab..7a29bc0e99 100644
--- a/src/tests/DawnTest.h
+++ b/src/tests/DawnTest.h
@@ -239,6 +239,7 @@ class DawnTestBase {
     bool IsNvidia() const;
     bool IsQualcomm() const;
     bool IsSwiftshader() const;
+    bool IsWARP() const;
 
     bool IsWindows() const;
     bool IsLinux() const;
diff --git a/src/tests/white_box/D3D12SmallTextureTests.cpp b/src/tests/white_box/D3D12SmallTextureTests.cpp
index e3ab8cdad5..5566e158bc 100644
--- a/src/tests/white_box/D3D12SmallTextureTests.cpp
+++ b/src/tests/white_box/D3D12SmallTextureTests.cpp
@@ -43,7 +43,7 @@ TEST_P(D3D12SmallTextureTests, AlignSmallCompressedTexture) {
     DAWN_SKIP_TEST_IF(!IsBCFormatSupported());
 
     // TODO(http://crbug.com/dawn/282): Investigate GPU/driver rejections of small alignment.
-    DAWN_SKIP_TEST_IF(IsIntel() || IsNvidia());
+    DAWN_SKIP_TEST_IF(IsIntel() || IsNvidia() || IsWARP());
 
     wgpu::TextureDescriptor descriptor;
     descriptor.dimension = wgpu::TextureDimension::e2D;