Merge "GLES3 tests for equality of structs with array members" am: fc76a6f2b1 am: 2fe7b09918
am: 6d6ce7d1c3

Change-Id: Ie489b5f413b75816c1de4f542d292966ea0b1796
diff --git a/android/cts/master/gles3-master.txt b/android/cts/master/gles3-master.txt
index 15ec145..9a11912 100644
--- a/android/cts/master/gles3-master.txt
+++ b/android/cts/master/gles3-master.txt
@@ -16241,6 +16241,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