Skip failing end2end tests on Windows on ARM

There are multiple failing tests on Windows on ARM which are related to drawing differences.
They seem to be similar to an already reported issue (anglebug.com/3748).

Bug: angleproject:4356
Bug: angleproject:4357
Change-Id: Ide5cc2e6f42d4c4b6fb88352833d20e517005c14
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2033067
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/tests/egl_tests/EGLStreamTest.cpp b/src/tests/egl_tests/EGLStreamTest.cpp
index d973cbf..8d1ea60 100644
--- a/src/tests/egl_tests/EGLStreamTest.cpp
+++ b/src/tests/egl_tests/EGLStreamTest.cpp
@@ -847,6 +847,7 @@
     ANGLE_SKIP_TEST_IF(
         !IsEGLDisplayExtensionEnabled(display, "EGL_ANGLE_stream_producer_d3d_texture"));
     ANGLE_SKIP_TEST_IF(!CheckP010TextureSupport(mD3D));
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     constexpr char kVertShader[] = R"(
 attribute vec4 aPos;
diff --git a/src/tests/egl_tests/EGLSurfaceTest.cpp b/src/tests/egl_tests/EGLSurfaceTest.cpp
index 42927a0..18d9786 100644
--- a/src/tests/egl_tests/EGLSurfaceTest.cpp
+++ b/src/tests/egl_tests/EGLSurfaceTest.cpp
@@ -564,6 +564,8 @@
     // Test fails on Swangle http://anglebug.com/4169
     ANGLE_SKIP_TEST_IF(isVulkanSwiftshaderRenderer());
 
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
+
     initializeDisplay();
     initializeSurfaceWithDefaultConfig();
     initializeContext();
diff --git a/src/tests/gl_tests/ClearTest.cpp b/src/tests/gl_tests/ClearTest.cpp
index 436146a..aaa9c88 100644
--- a/src/tests/gl_tests/ClearTest.cpp
+++ b/src/tests/gl_tests/ClearTest.cpp
@@ -1124,6 +1124,7 @@
 {
     // Fails on 431.02 driver. http://anglebug.com/3748
     ANGLE_SKIP_TEST_IF(IsWindows() && IsNVIDIA() && IsVulkan());
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     constexpr char kVS[] =
         "#version 300 es\n"
diff --git a/src/tests/gl_tests/ComputeShaderTest.cpp b/src/tests/gl_tests/ComputeShaderTest.cpp
index 3ca390b..abe4329 100644
--- a/src/tests/gl_tests/ComputeShaderTest.cpp
+++ b/src/tests/gl_tests/ComputeShaderTest.cpp
@@ -1728,6 +1728,7 @@
     // TODO(xinghua.cao@intel.com): Figure out why we get this error message
     // that shader uses features not recognized by this D3D version.
     ANGLE_SKIP_TEST_IF((IsAMD() || IsNVIDIA()) && IsD3D11());
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     GLTexture texture;
     GLFramebuffer framebuffer;
@@ -1976,6 +1977,8 @@
     // Fails to link on Android.  http://anglebug.com/3874
     ANGLE_SKIP_TEST_IF(IsAndroid());
 
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
+
     const char kCSShader[] = R"(#version 310 es
 layout (local_size_x = 8, local_size_y = 1, local_size_z = 1) in;
 layout (r32ui, binding = 0) readonly uniform highp uimage2D srcImage;
diff --git a/src/tests/gl_tests/MultisampleTest.cpp b/src/tests/gl_tests/MultisampleTest.cpp
index 9d8c5b3..6cd263c 100644
--- a/src/tests/gl_tests/MultisampleTest.cpp
+++ b/src/tests/gl_tests/MultisampleTest.cpp
@@ -184,6 +184,7 @@
 TEST_P(MultisampleTest, Line)
 {
     ANGLE_SKIP_TEST_IF(!mMultisampledConfigExists);
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Simple(), essl1_shaders::fs::Red());
     glUseProgram(program);
diff --git a/src/tests/gl_tests/MultiviewDrawTest.cpp b/src/tests/gl_tests/MultiviewDrawTest.cpp
index 970c8e5..5b1b524 100644
--- a/src/tests/gl_tests/MultiviewDrawTest.cpp
+++ b/src/tests/gl_tests/MultiviewDrawTest.cpp
@@ -932,6 +932,7 @@
 TEST_P(MultiviewRenderDualViewTest, DrawArrays)
 {
     ANGLE_SKIP_TEST_IF(!requestMultiviewExtension(isMultisampled()));
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     drawQuad(mProgram, "vPosition", 0.0f, 1.0f, true);
     ASSERT_GL_NO_ERROR();
@@ -943,6 +944,7 @@
 TEST_P(MultiviewRenderDualViewTest, DrawElements)
 {
     ANGLE_SKIP_TEST_IF(!requestMultiviewExtension(isMultisampled()));
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     drawIndexedQuad(mProgram, "vPosition", 0.0f, 1.0f, true);
     ASSERT_GL_NO_ERROR();
@@ -954,6 +956,7 @@
 TEST_P(MultiviewRenderDualViewTest, DrawRangeElements)
 {
     ANGLE_SKIP_TEST_IF(!requestMultiviewExtension(isMultisampled()));
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     drawIndexedQuad(mProgram, "vPosition", 0.0f, 1.0f, true, true);
     ASSERT_GL_NO_ERROR();
@@ -965,6 +968,7 @@
 TEST_P(MultiviewRenderTest, DrawArraysFourViews)
 {
     ANGLE_SKIP_TEST_IF(!requestMultiviewExtension(isMultisampled()));
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     const std::string VS =
         "#version 300 es\n"
@@ -1027,6 +1031,7 @@
 TEST_P(MultiviewRenderTest, DrawArraysInstanced)
 {
     ANGLE_SKIP_TEST_IF(!requestMultiviewExtension(isMultisampled()));
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     const std::string VS =
         "#version 300 es\n"
@@ -1097,6 +1102,7 @@
 TEST_P(MultiviewRenderTest, AttribDivisor)
 {
     ANGLE_SKIP_TEST_IF(!requestMultiviewExtension(isMultisampled()));
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     // Looks like an incorrect D3D debug layer message is generated on Windows AMD and NVIDIA.
     // May be specific to Windows 7 / Windows Server 2008. http://anglebug.com/2778
@@ -1185,6 +1191,7 @@
 TEST_P(MultiviewRenderTest, DivisorOrderOfOperation)
 {
     ANGLE_SKIP_TEST_IF(!requestMultiviewExtension(isMultisampled()));
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     updateFBOs(1, 1, 2);
 
@@ -1352,6 +1359,7 @@
 {
     ANGLE_SKIP_TEST_IF(!requestMultiviewExtension());
     ANGLE_SKIP_TEST_IF(!requestOcclusionQueryExtension());
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     const std::string VS =
         "#version 300 es\n"
@@ -1589,6 +1597,7 @@
 
     // Test failing on P400 graphics card (anglebug.com/2228)
     ANGLE_SKIP_TEST_IF(IsWindows() && IsD3D11() && IsNVIDIA());
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     const std::string VS =
         "#version 300 es\n"
@@ -1646,6 +1655,7 @@
     {
         return;
     }
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     GLuint program = CreateSimplePassthroughProgram(2, GetParam().mMultiviewExtension);
     ASSERT_NE(program, 0u);
@@ -1683,6 +1693,7 @@
     {
         return;
     }
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     GLuint program = CreateSimplePassthroughProgram(2, GetParam().mMultiviewExtension);
     ASSERT_NE(program, 0u);
@@ -1723,6 +1734,7 @@
     // Only this subtest fails on intel-hd-630-ubuntu-stable. Driver bug?
     // https://bugs.chromium.org/p/angleproject/issues/detail?id=3472
     ANGLE_SKIP_TEST_IF(IsIntel() && IsLinux() && IsOpenGL());
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     GLuint program = CreateSimplePassthroughProgram(2, GetParam().mMultiviewExtension);
     ASSERT_NE(program, 0u);
@@ -1757,6 +1769,7 @@
     {
         return;
     }
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     GLuint program = CreateSimplePassthroughProgram(2, GetParam().mMultiviewExtension);
     ASSERT_NE(program, 0u);
@@ -1788,6 +1801,7 @@
     {
         return;
     }
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     GLuint program = CreateSimplePassthroughProgram(2, GetParam().mMultiviewExtension);
     ASSERT_NE(program, 0u);
@@ -1817,6 +1831,7 @@
 // to each other. The quads' position and color depend on the corresponding attribute divisors.
 TEST_P(MultiviewRenderTest, ProgramRelinkUpdatesAttribDivisor)
 {
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
     if (!requestMultiviewExtension(isMultisampled()))
     {
         return;
@@ -1970,6 +1985,7 @@
 
     // Test failing on P400 graphics card (anglebug.com/2228)
     ANGLE_SKIP_TEST_IF(IsWindows() && IsD3D11() && IsNVIDIA());
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     // Looks like an incorrect D3D debug layer message is generated on Windows / AMD.
     // May be specific to Windows 7 / Windows Server 2008. http://anglebug.com/2778
@@ -2080,6 +2096,7 @@
 // multi-view program.
 TEST_P(MultiviewLayeredRenderTest, RenderToSubrangeOfLayers)
 {
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
     if (!requestMultiviewExtension())
     {
         return;
diff --git a/src/tests/gl_tests/PbufferTest.cpp b/src/tests/gl_tests/PbufferTest.cpp
index e9a0dae..afd4216 100644
--- a/src/tests/gl_tests/PbufferTest.cpp
+++ b/src/tests/gl_tests/PbufferTest.cpp
@@ -202,6 +202,7 @@
 {
     ANGLE_SKIP_TEST_IF(!mSupportsPbuffers);
     ANGLE_SKIP_TEST_IF(!mSupportsBindTexImage);
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     GLTexture texture;
     glBindTexture(GL_TEXTURE_2D, texture);
diff --git a/src/tests/gl_tests/TextureTest.cpp b/src/tests/gl_tests/TextureTest.cpp
index 68f8462..5e082ad 100644
--- a/src/tests/gl_tests/TextureTest.cpp
+++ b/src/tests/gl_tests/TextureTest.cpp
@@ -4282,8 +4282,8 @@
         };
 
         // Put default settings at the last
-        std::vector<GLint> paramsPackRowLength                        = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0};
-        std::vector<GLint> paramsPackAlignment                        = {1, 2, 8, 4};
+        std::vector<GLint> paramsPackRowLength = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0};
+        std::vector<GLint> paramsPackAlignment = {1, 2, 8, 4};
         std::vector<std::array<GLint, 2>> paramsPackSkipPixelsAndRows = {{1, 0}, {0, 1},   {1, 1},
                                                                          {3, 1}, {20, 20}, {0, 0}};
 
@@ -5356,6 +5356,7 @@
                        !IsGLExtensionEnabled("GL_OES_depth_texture"));
     // http://anglebug.com/4092
     ANGLE_SKIP_TEST_IF(IsOpenGL() || IsOpenGLES());
+    ANGLE_SKIP_TEST_IF(IsARM64() && IsWindows() && IsD3D());
 
     // When the depth texture is specified with unsized internalformat implementations follow
     // OES_depth_texture behavior. Otherwise they follow GLES 3.0 behavior.
diff --git a/src/tests/test_utils/angle_test_instantiate.h b/src/tests/test_utils/angle_test_instantiate.h
index 5ae4124..3d8e866 100644
--- a/src/tests/test_utils/angle_test_instantiate.h
+++ b/src/tests/test_utils/angle_test_instantiate.h
@@ -42,6 +42,7 @@
 bool IsAMD();
 bool IsNVIDIA();
 bool IsARM();
+bool IsARM64();
 
 inline bool IsASan()
 {
diff --git a/src/tests/test_utils/angle_test_platform.cpp b/src/tests/test_utils/angle_test_platform.cpp
index 6064730..8557ae8 100644
--- a/src/tests/test_utils/angle_test_platform.cpp
+++ b/src/tests/test_utils/angle_test_platform.cpp
@@ -81,6 +81,11 @@
     return (rendererString.find("Metal") != std::string::npos);
 }
 
+bool IsD3D()
+{
+    return IsD3D9() || IsD3D11();
+}
+
 bool IsDebug()
 {
 #if !defined(NDEBUG)
diff --git a/src/tests/test_utils/angle_test_platform.h b/src/tests/test_utils/angle_test_platform.h
index 4e5e4f4..d29c75f 100644
--- a/src/tests/test_utils/angle_test_platform.h
+++ b/src/tests/test_utils/angle_test_platform.h
@@ -28,6 +28,7 @@
 bool IsNULL();
 bool IsVulkan();
 bool IsMetal();
+bool IsD3D();
 
 // Debug/Release
 bool IsDebug();