Merge gerrit/vulkan-cts-1.0.0 into gerrit/vulkan-cts-1.0.1
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / data / vulkan / glsl / es310 / linkage.test
index 21c62b0..1ce39bb 100644 (file)
@@ -4,32 +4,6 @@ group varying "Varying linkage"
 
        # Linking rules
        group rules "Varying linking rules"
-               # not declared in vertex shader, declared in fragment shader
-               case fragment_declare
-                       version 310 es
-                       desc "varying declared in fragment shader, no reference in vertex shader"
-                       values { output float out0 = 1.0; }
-                       vertex ""
-                               #version 310 es
-                               ${VERTEX_DECLARATIONS}
-                               void main()
-                               {
-                                       ${VERTEX_OUTPUT}
-                               }
-                       ""
-                       fragment ""
-                               #version 310 es
-                               precision mediump float;
-                               layout(location = 0) in mediump float var;
-                               ${FRAGMENT_DECLARATIONS}
-                               void main()
-                               {
-                                       out0 = 1.0;
-                                       ${FRAGMENT_OUTPUT}
-                               }
-                       ""
-               end
-
                # declared in vertex shader, no reference in frag shader
                case vertex_declare
                        version 310 es
@@ -210,7 +184,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in mediump float var;
                                void main()
@@ -243,7 +217,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in lowp vec2 var;
                                void main()
@@ -276,7 +250,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in mediump vec4 var;
                                void main()
@@ -309,7 +283,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) centroid in mediump float var;
                                void main()
@@ -320,6 +294,79 @@ group varying "Varying linkage"
                        ""
                end
 
+               # differing name (linking is done by location only in SPIR-V)
+               case differing_name_1
+                       version 310 es
+                       desc "varying declared with matching location but different name"
+                       values
+                       {
+                               input float in0         = [ 2.0 | 5.0 | -3.0 | 4.0 ];
+                               input float in1         = [ 4.0 | 1.0 | -0.5 | 2.0 ];
+                               output float out0       = [ -2.0 | 4.0 | -2.5 | 2.0 ];
+                       }
+
+                       vertex ""
+                               #version 310 es
+                               ${VERTEX_DECLARATIONS}
+                               layout(location = 0) out highp float vtxVarB;
+                               layout(location = 2) out highp float vtxVarA;
+                               void main()
+                               {
+                                       vtxVarA = in0;
+                                       vtxVarB = in1;
+                                       ${VERTEX_OUTPUT}
+                               }
+                       ""
+                       fragment ""
+                               #version 310 es
+                               precision highp float;
+                               ${FRAGMENT_DECLARATIONS}
+                               layout(location = 2) in highp float fragVarA;
+                               layout(location = 0) in highp float fragVarB;
+                               void main()
+                               {
+                                       out0 = fragVarA - fragVarB;
+                                       ${FRAGMENT_OUTPUT}
+                               }
+                       ""
+               end
+
+               # differing name (linking is done by location only in SPIR-V)
+               case differing_name_2
+                       version 310 es
+                       desc "varying declared with matching location but different name"
+                       values
+                       {
+                               input float in0         = [ 2.0 | 5.0 | -3.0 | 4.0 ];
+                               input float in1         = [ 4.0 | 1.0 | -0.5 | 2.0 ];
+                               output float out0       = [ -2.0 | 4.0 | -2.5 | 2.0 ];
+                       }
+
+                       vertex ""
+                               #version 310 es
+                               ${VERTEX_DECLARATIONS}
+                               layout(location = 0) out highp float varA;
+                               layout(location = 2) out highp float varB;
+                               void main()
+                               {
+                                       varA = in0;
+                                       varB = in1;
+                                       ${VERTEX_OUTPUT}
+                               }
+                       ""
+                       fragment ""
+                               #version 310 es
+                               precision highp float;
+                               ${FRAGMENT_DECLARATIONS}
+                               layout(location = 2) in highp float varA;
+                               layout(location = 0) in highp float varB;
+                               void main()
+                               {
+                                       out0 = varB - varA;
+                                       ${FRAGMENT_OUTPUT}
+                               }
+                       ""
+               end
        end
 
        group basic_types "Basic varying types"
@@ -343,7 +390,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in float var;
                                void main()
@@ -374,7 +421,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in vec2 var;
                                void main()
@@ -405,7 +452,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in vec3 var;
                                void main()
@@ -436,7 +483,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in vec4 var;
                                void main()
@@ -467,7 +514,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in mat2 var;
                                void main()
@@ -498,7 +545,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in mat2x3 var;
                                void main()
@@ -529,7 +576,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in mat2x4 var;
                                void main()
@@ -560,7 +607,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in mat3x2 var;
                                void main()
@@ -591,7 +638,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in mat3 var;
                                void main()
@@ -622,7 +669,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in mat3x4 var;
                                void main()
@@ -653,7 +700,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in mat4x2 var;
                                void main()
@@ -684,7 +731,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in mat4x3 var;
                                void main()
@@ -715,7 +762,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in mat4 var;
                                void main()
@@ -997,7 +1044,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump float a; };
                                layout(location = 0) in S var;
@@ -1030,7 +1077,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump vec2 a; };
                                layout(location = 0) in S var;
@@ -1063,7 +1110,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump vec3 a; };
                                layout(location = 0) in S var;
@@ -1096,7 +1143,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump vec4 a; };
                                layout(location = 0) in S var;
@@ -1129,7 +1176,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump mat2 a; };
                                layout(location = 0) in S var;
@@ -1162,7 +1209,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump mat2x3 a; };
                                layout(location = 0) in S var;
@@ -1195,7 +1242,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump mat2x4 a; };
                                layout(location = 0) in S var;
@@ -1228,7 +1275,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump mat3x2 a; };
                                layout(location = 0) in S var;
@@ -1261,7 +1308,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump mat3 a; };
                                layout(location = 0) in S var;
@@ -1294,7 +1341,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump mat3x4 a; };
                                layout(location = 0) in S var;
@@ -1327,7 +1374,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump mat4x2 a; };
                                layout(location = 0) in S var;
@@ -1360,7 +1407,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump mat4x3 a; };
                                layout(location = 0) in S var;
@@ -1393,7 +1440,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump mat4 a; };
                                layout(location = 0) in S var;
@@ -1693,7 +1740,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump float a; highp vec3 b; };
                                layout(location = 0) in S var;
@@ -1734,7 +1781,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                struct S { mediump float a; highp uvec2 b; highp vec3 c; };
                                layout(location = 0) flat in S var;
@@ -1770,7 +1817,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) smooth in vec4 var;
                                void main()
@@ -1801,7 +1848,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) centroid in vec4 var;
                                void main()
@@ -1832,7 +1879,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) flat in vec4 var;
                                void main()
@@ -1855,7 +1902,7 @@ group varying "Varying linkage"
                        }
                        vertex ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${VERTEX_DECLARATIONS}
                                layout(location = 0) out float var1;
                                layout(location = 1) out float var2;
@@ -1869,7 +1916,7 @@ group varying "Varying linkage"
                        ""
                        fragment ""
                                #version 310 es
-                               precision mediump float;
+                               precision highp float;
                                ${FRAGMENT_DECLARATIONS}
                                layout(location = 0) in float var1;
                                layout(location = 1) in float var2;