""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in mediump float var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in lowp vec2 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in mediump vec4 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) centroid in mediump float var;
void main()
""
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"
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in float var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in vec2 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in vec3 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in vec4 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in mat2 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in mat2x3 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in mat2x4 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in mat3x2 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in mat3 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in mat3x4 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in mat4x2 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in mat4x3 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in mat4 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump float a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump vec2 a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump vec3 a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump vec4 a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump mat2 a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump mat2x3 a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump mat2x4 a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump mat3x2 a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump mat3 a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump mat3x4 a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump mat4x2 a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump mat4x3 a; };
layout(location = 0) in S var;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
struct S { mediump mat4 a; };
layout(location = 0) in S var;
""
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;
""
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;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) smooth in vec4 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) centroid in vec4 var;
void main()
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) flat in vec4 var;
void main()
}
vertex ""
#version 310 es
- precision mediump float;
+ precision highp float;
${VERTEX_DECLARATIONS}
layout(location = 0) out float var1;
layout(location = 1) out float var2;
""
fragment ""
#version 310 es
- precision mediump float;
+ precision highp float;
${FRAGMENT_DECLARATIONS}
layout(location = 0) in float var1;
layout(location = 1) in float var2;