Add a texture data fill helper function to tests

Several tests need to initialize arrays of RGBA texture data. Add a
helper function for this to reduce duplication and to make the code
more readable.

BUG=angleproject:596
TEST=angle_end2end_tests

Change-Id: Id4a35b34a8fad25c2dc263ad8635dd43355a4f17
Reviewed-on: https://chromium-review.googlesource.com/333911
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/tests/gl_tests/TextureTest.cpp b/src/tests/gl_tests/TextureTest.cpp
index a3d1f91..478a72b 100644
--- a/src/tests/gl_tests/TextureTest.cpp
+++ b/src/tests/gl_tests/TextureTest.cpp
@@ -11,6 +11,18 @@
 namespace
 {
 
+template <typename T>
+void FillWithRGBA(size_t pixelCount, T red, T green, T blue, T alpha, T *outArray)
+{
+    for (size_t i = 0u; i < pixelCount; ++i)
+    {
+        outArray[i * 4u]      = red;
+        outArray[i * 4u + 1u] = green;
+        outArray[i * 4u + 2u] = blue;
+        outArray[i * 4u + 3u] = alpha;
+    }
+}
+
 class TexCoordDrawTest : public ANGLETest
 {
   protected:
@@ -1031,13 +1043,7 @@
 
     // Fill with red
     std::vector<GLubyte> pixels(4 * 16 * 16);
-    for (size_t pixelId = 0; pixelId < 16 * 16; ++pixelId)
-    {
-        pixels[pixelId * 4 + 0] = 255;
-        pixels[pixelId * 4 + 1] = 0;
-        pixels[pixelId * 4 + 2] = 0;
-        pixels[pixelId * 4 + 3] = 255;
-    }
+    FillWithRGBA<GLubyte>(16u * 16u, 255u, 0u, 0u, 255u, pixels.data());
 
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels.data());
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
@@ -1052,25 +1058,13 @@
     EXPECT_PIXEL_EQ(px, py, 255, 0, 0, 255);
 
     // Fill with blue
-    for (size_t pixelId = 0; pixelId < 16 * 16; ++pixelId)
-    {
-        pixels[pixelId * 4 + 0] = 0;
-        pixels[pixelId * 4 + 1] = 0;
-        pixels[pixelId * 4 + 2] = 255;
-        pixels[pixelId * 4 + 3] = 255;
-    }
+    FillWithRGBA<GLubyte>(16u * 16u, 0u, 0u, 255u, 255u, pixels.data());
 
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels.data());
     glGenerateMipmap(GL_TEXTURE_2D);
 
     // Fill with green
-    for (size_t pixelId = 0; pixelId < 16 * 16; ++pixelId)
-    {
-        pixels[pixelId * 4 + 0] = 0;
-        pixels[pixelId * 4 + 1] = 255;
-        pixels[pixelId * 4 + 2] = 0;
-        pixels[pixelId * 4 + 3] = 255;
-    }
+    FillWithRGBA<GLubyte>(16u * 16u, 0u, 255u, 0u, 255u, pixels.data());
 
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels.data());
     glGenerateMipmap(GL_TEXTURE_2D);
@@ -1387,22 +1381,10 @@
     glActiveTexture(GL_TEXTURE0);
     glBindTexture(GL_TEXTURE_2D, mTexture2D);
     GLubyte texDataRed[4u * 4u * 4u];
-    for (size_t i = 0u; i < 4u * 4u; ++i)
-    {
-        texDataRed[i * 4u]      = 255u;
-        texDataRed[i * 4u + 1u] = 0u;
-        texDataRed[i * 4u + 2u] = 0u;
-        texDataRed[i * 4u + 3u] = 255u;
-    }
+    FillWithRGBA<GLubyte>(4u * 4u, 255u, 0u, 0u, 255u, texDataRed);
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, texDataRed);
     GLubyte texDataGreen[2u * 2u * 4u];
-    for (size_t i = 0u; i < 2u * 2u; ++i)
-    {
-        texDataGreen[i * 4u]      = 0u;
-        texDataGreen[i * 4u + 1u] = 255u;
-        texDataGreen[i * 4u + 2u] = 0u;
-        texDataGreen[i * 4u + 3u] = 255u;
-    }
+    FillWithRGBA<GLubyte>(2u * 2u, 0u, 255u, 0u, 255u, texDataGreen);
     glTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, texDataGreen);
     glTexImage2D(GL_TEXTURE_2D, 2, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, texDataGreen);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);