Support multisample arrays in shader programs

The added tests check that using textureSize() and texelFetch() on
textures with a fixed point format return expected results. texelFetch
is also covered for integer format textures.

dEQP GLES 3.1 tests also cover a variety of multisampled array texture
formats.

BUG=angleproject:2775
TEST=angle_end2end_tests, angle_deqp_gles31_tests

Change-Id: I99b422e24b39e3563ed72f0fb85c9c1907df807d
Reviewed-on: https://chromium-review.googlesource.com/1196521
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/util/shader_utils.cpp b/util/shader_utils.cpp
index e4cdaa5..40d469b 100644
--- a/util/shader_utils.cpp
+++ b/util/shader_utils.cpp
@@ -310,7 +310,7 @@
 }
 
 // A shader that simply passes through attribute a_position, setting it to gl_Position and varying
-// pos.
+// v_position.
 const char *Passthrough()
 {
     return R"(precision highp float;
@@ -468,6 +468,20 @@
 })";
 }
 
+// A shader that simply passes through attribute a_position, setting it to gl_Position and varying
+// v_position.
+const char *Passthrough()
+{
+    return R"(#version 310 es
+in vec4 a_position;
+out vec4 v_position;
+void main()
+{
+    gl_Position = a_position;
+    v_position = a_position;
+})";
+}
+
 }  // namespace vs
 
 namespace fs