Add Regression Test for D3D11 Alpha Passthrough

As a follow up to commit "8d6af08 Use dedicated ALPHA passthrough shader",
this change adds a regression test that verifies RGB channels are set to
zero when performing an ALPHA copy.

BUG=angleproject:2239
Change-Id: Icc08deb523c388a0f2cbdcadd1eec69a97fbe136
Reviewed-on: https://chromium-review.googlesource.com/774579
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/tests/gl_tests/CopyTextureTest.cpp b/src/tests/gl_tests/CopyTextureTest.cpp
index 2bba407..c8c6d13 100644
--- a/src/tests/gl_tests/CopyTextureTest.cpp
+++ b/src/tests/gl_tests/CopyTextureTest.cpp
@@ -1026,6 +1026,35 @@
     EXPECT_PIXEL_COLOR_EQ(0, 0, expectedPixels);
 }
 
+// Test to ensure that CopyTexture uses the correct ALPHA passthrough shader to ensure RGB channels
+// are set to 0.
+TEST_P(CopyTextureTestDest, AlphaCopyWithRGB)
+{
+    ANGLE_SKIP_TEST_IF(!checkExtensions());
+
+    GLColor originalPixels(50u, 100u, 150u, 155u);
+    GLColor expectedPixels(0u, 0u, 0u, 155u);
+
+    // ReadPixels doesn't work with ALPHA (non-renderable), so we copy again back to an RGBA
+    // texture to verify contents.
+    glBindTexture(GL_TEXTURE_2D, mTextures[1]);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, &originalPixels);
+    glBindTexture(GL_TEXTURE_2D, mTextures[0]);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 1, 1, 0, GL_ALPHA, GL_HALF_FLOAT_OES, nullptr);
+
+    glCopyTextureCHROMIUM(mTextures[1], 0, GL_TEXTURE_2D, mTextures[0], 0, GL_ALPHA,
+                          GL_HALF_FLOAT_OES, false, false, false);
+
+    EXPECT_GL_NO_ERROR();
+
+    glCopyTextureCHROMIUM(mTextures[0], 0, GL_TEXTURE_2D, mTextures[1], 0, GL_RGBA,
+                          GL_UNSIGNED_BYTE, false, false, false);
+
+    EXPECT_GL_NO_ERROR();
+
+    EXPECT_PIXEL_COLOR_EQ(0, 0, expectedPixels);
+}
+
 // Test the newly added ES3 unorm formats
 TEST_P(CopyTextureTestES3, ES3UnormFormats)
 {