GLES3 tests for equality of structs with array members
authorKai Ninomiya <kainino@chromium.org>
Thu, 25 Jan 2018 02:41:55 +0000 (18:41 -0800)
committerKai Ninomiya <kainino@chromium.org>
Thu, 25 Jan 2018 22:11:25 +0000 (14:11 -0800)
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

android/cts/master/gles3-master.txt
modules/gles3/functional/es3fShaderStructTests.cpp

index 46062f6..846e1be 100644 (file)
@@ -15473,6 +15473,8 @@ dEQP-GLES3.functional.shaders.struct.local.dynamic_loop_struct_array_vertex
 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
index ad80a9a..66b9559 100644 (file)
@@ -1120,6 +1120,39 @@ void LocalStructTests::init (void)
                                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