Test struct names hiding other struct names
authorPiotr Byszewski <piotr.byszewski@mobica.com>
Mon, 11 Sep 2017 16:31:16 +0000 (18:31 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Sun, 1 Oct 2017 14:38:05 +0000 (10:38 -0400)
Test if names are correctly hidden when a level of nesting is
involved.

Components: OpenGL

VK-GL-CTS issue: 14

Affects:
KHR-GLES3.shaders.name_hiding.*

Change-Id: I3eb83bfcf6d10fcb15abaa6c086ecd5f9c3d0b36

external/openglcts/data/gles3/name_hiding.test [new file with mode: 0644]
external/openglcts/data/mustpass/gles/khronos_mustpass/master/gles3-khr-master.txt
external/openglcts/modules/gles3/es3cTestPackage.cpp

diff --git a/external/openglcts/data/gles3/name_hiding.test b/external/openglcts/data/gles3/name_hiding.test
new file mode 100644 (file)
index 0000000..1761a39
--- /dev/null
@@ -0,0 +1,75 @@
+group basic "Name Hiding Tests"
+
+       case hidden_name_1
+               version 300 es
+               values { output float out0 = 0.0; }
+
+               both ""
+                       #version 300 es
+                       precision mediump float;
+                       float S()
+                       {
+                               struct S { int i; };
+                               S s;
+                               s.i = 1;
+                               return 0.0;
+                       }
+                       ${DECLARATIONS}
+
+                       void main()
+                       {
+                               out0 = S();
+                               ${OUTPUT}
+                       }
+               ""
+       end
+
+       case hidden_name_2
+               version 300 es
+               values { output float out0 = 3.0; }
+
+               both ""
+                       #version 300 es
+                       precision mediump float;
+                       struct S { int i; };
+                       S s1;
+                       float fun()
+                       {
+                               struct S { float f; };
+                               S s2;
+                               s2.f = 2.0;
+                               return s2.f;
+                       }
+                       S s3;
+                       ${DECLARATIONS}
+
+                       void main()
+                       {
+                               s1.i = 1;
+                               s3.i = 3;
+                               out0 = float(s1.i) + fun();
+                               ${OUTPUT}
+                       }
+               ""
+       end
+
+       case hidden_name_3
+               version 300 es
+               expect compile_fail
+
+               both ""
+                       #version 300 es
+                       precision mediump float;
+                       struct S { int i; };
+                       struct S { float f; };
+                       ${DECLARATIONS}
+
+                       void main()
+                       {
+                               ${OUTPUT}
+                       }
+               ""
+       end
+
+end # operator_precedence
+
index cd34d51..ac1d3f1 100644 (file)
@@ -1494,6 +1494,12 @@ KHR-GLES3.shaders.literal_parsing.int_overflow_2_vertex
 KHR-GLES3.shaders.literal_parsing.int_overflow_2_fragment
 KHR-GLES3.shaders.literal_parsing.int_wrap_1
 KHR-GLES3.shaders.literal_parsing.int_wrap_2
+KHR-GLES3.shaders.name_hiding.basic.hidden_name_1_vertex
+KHR-GLES3.shaders.name_hiding.basic.hidden_name_1_fragment
+KHR-GLES3.shaders.name_hiding.basic.hidden_name_2_vertex
+KHR-GLES3.shaders.name_hiding.basic.hidden_name_2_fragment
+KHR-GLES3.shaders.name_hiding.basic.hidden_name_3_vertex
+KHR-GLES3.shaders.name_hiding.basic.hidden_name_3_fragment
 KHR-GLES3.shaders.struct.local.basic_vertex
 KHR-GLES3.shaders.struct.local.basic_fragment
 KHR-GLES3.shaders.struct.local.nested_vertex
index 837e2da..f3cdae8 100644 (file)
@@ -132,6 +132,7 @@ public:
                addChild(new deqp::ShaderLibraryGroup(m_context, "preprocessor", "Preprocessor Tests", "preprocessor.test"));
                addChild(new deqp::ShaderLibraryGroup(m_context, "literal_parsing", "Literal Parsing Tests",
                                                                                          "literal_parsing.test"));
+               addChild(new deqp::ShaderLibraryGroup(m_context, "name_hiding", "Name Hiding Tests", "name_hiding.test"));
                addChild(new deqp::ShaderStructTests(m_context, glu::GLSL_VERSION_300_ES));
                addChild(new deqp::ShaderSwitchTests(m_context, glu::GLSL_VERSION_300_ES));
                addChild(new deqp::UniformBlockTests(m_context, glu::GLSL_VERSION_300_ES));