GLES3 tests for equality of structs with array members

The new test case adds regression coverage for the Qualcomm driver
shader compiler crash seen in Android N:
https://crbug.com/695687
It is a port of this WebGL test case:
https://github.com/KhronosGroup/WebGL/blob/master/sdk/tests/conformance2/glsl3/compare-structs-containing-arrays.html

New tests: dEQP-GLES3.functional.shaders.struct.local.array_member_equality_vertex, dEQP-GLES3.functional.shaders.struct.local.array_member_equality_fragment
Components: AOSP
Change-Id: Ie130439f80fddb081fb36db02c24a9e18f5c4bca
diff --git a/android/cts/master/gles3-master.txt b/android/cts/master/gles3-master.txt
index 46062f6..846e1be 100644
--- a/android/cts/master/gles3-master.txt
+++ b/android/cts/master/gles3-master.txt
@@ -15473,6 +15473,8 @@
 dEQP-GLES3.functional.shaders.struct.local.dynamic_loop_struct_array_fragment
 dEQP-GLES3.functional.shaders.struct.local.dynamic_loop_nested_struct_array_vertex
 dEQP-GLES3.functional.shaders.struct.local.dynamic_loop_nested_struct_array_fragment
+dEQP-GLES3.functional.shaders.struct.local.array_member_equality_vertex
+dEQP-GLES3.functional.shaders.struct.local.array_member_equality_fragment
 dEQP-GLES3.functional.shaders.struct.uniform.basic_vertex
 dEQP-GLES3.functional.shaders.struct.uniform.basic_fragment
 dEQP-GLES3.functional.shaders.struct.uniform.nested_vertex
diff --git a/modules/gles3/functional/es3fShaderStructTests.cpp b/modules/gles3/functional/es3fShaderStructTests.cpp
index ad80a9a..66b9559 100644
--- a/modules/gles3/functional/es3fShaderStructTests.cpp
+++ b/modules/gles3/functional/es3fShaderStructTests.cpp
@@ -1120,6 +1120,39 @@
 				c.color.y() = 1.0f;
 			c.color.z() = 1.0f;
 		});
+
+	LOCAL_STRUCT_CASE(array_member_equality, "Struct with array members equality",
+		LineStream()
+		<< "${HEADER}"
+		<< ""
+		<< "struct S {"
+		<< "	bool	m[2];"
+		<< "};"
+		<< ""
+		<< "void main (void)"
+		<< "{"
+		<< "	S a;"
+		<< "	a.m[0] = true;"
+		<< "	a.m[1] = false;"
+		<< ""
+		<< "	S b;"
+		<< "	b.m[0] = true;"
+		<< "	b.m[1] = false;"
+		<< ""
+		<< "	S c;"
+		<< "	c.m[0] = true;"
+		<< "	c.m[1] = true;"
+		<< ""
+		<< "	${DST} = vec4(0.0, 0.0, 1.0, 1.0);"
+		<< "	if (a == b) ${DST}.x = 1.0;"
+		<< "	if (a != c) ${DST}.y = 1.0;"
+		<< "	${ASSIGN_POS}"
+		<< "}",
+		{
+			c.color.x() = 1.0f;
+			c.color.y() = 1.0f;
+			c.color.z() = 1.0f;
+		});
 }
 
 class UniformStructTests : public TestCaseGroup