group basic "Default block uniforms of scalar and vector types"
	case precision_conflict_1
		version 310 es
		desc "Vertex side uniform has highp, fragment side uniform mediump."
		expect link_fail
		values {output float out0 = 3.0;}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			uniform highp float u_val;
			out mediump float res;
			void main()
			{
				res = u_val;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			uniform float u_val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				out0 = u_val + res;
				${FRAGMENT_OUTPUT}
			}
		""
	end
	case precision_conflict_2
		version 310 es
		desc "Vertex side uniform has highp, fragment side uniform mediump."
		expect link_fail
		values {output float out0 = 3.0;}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			uniform highp float u_val;
			out mediump float res;
			void main()
			{
				res = u_val;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision highp float;
			uniform mediump float u_val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				out0 = u_val + res;
				${FRAGMENT_OUTPUT}
			}
		""
	end
	case precision_conflict_3
		version 310 es
		desc "Vertex side uniform has lowp, fragment side uniform highp."
		expect link_fail
		values {output float out0 = 3.0;}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			uniform lowp int u_val;
			out mediump float res;
			void main()
			{
				res = float(u_val);
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision highp float;
			uniform highp int u_val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				out0 = float(u_val) + res;
				${FRAGMENT_OUTPUT}
			}
		""
	end
	case precision_conflict_4
		version 310 es
		desc "Vertex side uniform has lowp, fragment side uniform mediump."
		expect link_fail
		values {output float out0 = 3.0;}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			uniform lowp vec3 u_val;
			out mediump float res;
			void main()
			{
				res = u_val.y;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision highp float;
			uniform mediump vec3 u_val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				out0 = u_val.z + res;
				${FRAGMENT_OUTPUT}
			}
		""
	end
end

group struct "Uniform structs"
	# Struct linkage handling
	case basic
		version 310 es
		desc "Same uniform struct in both shaders"
		values {
			uniform float val.a = 1.0;
			uniform float val.b = 2.0;
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump float a; mediump float b;};
			uniform Struct val;
			out mediump float dummy;
			void main()
			{
				dummy = val.a + val.b;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump float a; mediump float b;};
			uniform Struct val;
			in mediump float dummy;
			${FRAGMENT_DECLARATIONS}
			void main()
			{
				out0 = val.b + val.a;
				out0 = out0 + dummy;
				out0 = out0 - dummy;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case vertex_only
		version 310 es
		desc "Uniform struct declared in both, used only in vertex."
		values {
			uniform float val.a = 1.0;
			uniform float val.b = 2.0;
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump float a; mediump float b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a + val.b;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump float a; mediump float b;};
			uniform Struct val;
			in mediump float res;
			${FRAGMENT_DECLARATIONS}
			void main()
			{
				out0 = res;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case fragment_only
		version 310 es
		desc "Uniform struct declared in both, used only in fragment."
		values {
			uniform float val.a = 1.0;
			uniform float val.b = 2.0;
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump float a; mediump float b;};
			uniform Struct val;
			void main()
			{
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump float a; mediump float b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			void main()
			{
				out0 = val.a + val.b;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial
		version 310 es
		desc "Uniform struct declared in both, used partially in both."
		values {
			uniform float val.a = 1.0;
			uniform float val.b = 2.0;
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump float a; mediump float b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump float a; mediump float b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				out0 = res + val.b;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case vec4
		version 310 es
		desc "Same uniform struct in both shaders. Datatype vec4"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump vec4 b;};
			uniform Struct val;
			out mediump float dummy;
			void main()
			{
				dummy = val.a.x + val.b.y;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump vec4 b;};
			uniform Struct val;
			in mediump float dummy;
			${FRAGMENT_DECLARATIONS}
			void main()
			{
				out0 = val.b.y + val.a.x;
				out0 = out0 + dummy;
				out0 = out0 - dummy;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case vertex_only_vec4
		version 310 es
		desc "Uniform struct declared in both, used only in vertex. Datatype vec4	"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump vec4 b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a.x + val.b.y;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump vec4 b;};
			uniform Struct val;
			in mediump float res;
			${FRAGMENT_DECLARATIONS}
			void main()
			{			out0 = res;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case fragment_only_vec4
		version 310 es
		desc "Uniform struct declared in both, used only in fragment. Datatype vec4"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump vec4 b;};
			uniform Struct val;
			void main()
			{
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump vec4 b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			void main()
			{			out0 = val.a.x + val.b.y;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial_vec4
		version 310 es
		desc "Uniform struct declared in both, used partially in both. Datatype vec4"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform vec4 val.b = vec4(1.0, 2.0, 3.0, 4.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump vec4 b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump vec4 b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + val.b.y;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case vec4_vec3
		version 310 es
		desc "Same uniform struct in both shaders. Datatype vec4 and vec3"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform vec3 val.b = vec3(1.0, 2.0, 3.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump vec3 b;};
			uniform Struct val;
			out mediump float dummy;
			void main()
			{
				dummy = val.a.x + val.b.y;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump vec3 b;};
			uniform Struct val;
			in mediump float dummy;
			${FRAGMENT_DECLARATIONS}
			void main()
			{			out0 = val.b.y + val.a.x;
				out0 = out0 + dummy;
				out0 = out0 - dummy;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case vertex_only_vec4_vec3
		version 310 es
		desc "Uniform struct declared in both, used only in vertex. Datatype vec4 and vec3"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform vec3 val.b = vec3(1.0, 2.0, 3.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump vec3 b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a.x + val.b.y;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump vec3 b;};
			uniform Struct val;
			in mediump float res;
			${FRAGMENT_DECLARATIONS}
			void main()
			{			out0 = res;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case fragment_only_vec4_vec3
		version 310 es
		desc "Uniform struct declared in both, used only in fragment. Datatype vec4 and vec3"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform vec3 val.b = vec3(1.0, 2.0, 3.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump vec3 b;};
			uniform Struct val;
			void main()
			{
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump vec3 b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			void main()
			{			out0 = val.a.x + val.b.y;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial_vec4_vec3
		version 310 es
		desc "Uniform struct declared in both, used partially in both. Datatype vec4 and vec3"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform vec3 val.b = vec3(1.0, 2.0, 3.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump vec3 b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump vec3 b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + val.b.y;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case vec4_float
		version 310 es
		desc "Same uniform struct in both shaders. Datatype vec4 and float"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform float val.b = 2.0;
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump float b;};
			uniform Struct val;
			out mediump float dummy;
			void main()
			{
				dummy = val.a.x + val.b;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump float b;};
			uniform Struct val;
			in mediump float dummy;
			${FRAGMENT_DECLARATIONS}
			void main()
			{			out0 = val.b + val.a.x;
				out0 = out0 + dummy;
				out0 = out0 - dummy;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case vertex_only_vec4_float
		version 310 es
		desc "Uniform struct declared in both, used only in vertex. Datatype vec4 and float"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform float val.b = 2.0;
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump float b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a.x + val.b;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump float b;};
			uniform Struct val;
			in mediump float res;
			${FRAGMENT_DECLARATIONS}
			void main()
			{			out0 = res;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case fragment_only_vec4_float
		version 310 es
		desc "Uniform struct declared in both, used only in fragment. Datatype vec4 and float"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform float val.b = 2.0;
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump float b;};
			uniform Struct val;
			void main()
			{
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump float b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			void main()
			{			out0 = val.a.x + val.b;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial_vec4_float
		version 310 es
		desc "Uniform struct declared in both, used partially in both. Datatype vec4 and float"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform float val.b = 2.0;
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec4 a; mediump float b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a; mediump float b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + val.b;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial_vec4_struct
		version 310 es
		desc "Uniform struct declared in both, used partially in both. Datatype vec4 and struct with vec4"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform vec4 val.b.c = vec4(1.0, 2.0, 3.0, 4.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Inner {mediump vec4 c;};
			struct Struct {mediump vec4 a; Inner b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Inner {mediump vec4 c;};
			struct Struct {mediump vec4 a; Inner b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + val.b.c.y;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial_vec4_vec3_struct
		version 310 es
		desc "Uniform struct declared in both, used partially in both. Datatype vec4 and struct with vec3"
		values {
			uniform vec4 val.a = vec4(1.0, 2.0, 3.0, 4.0);
			uniform vec3 val.b.c = vec3(1.0, 2.0, 3.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Inner {mediump vec3 c;};
			struct Struct {mediump vec4 a; Inner b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Inner {mediump vec3 c;};
			struct Struct {mediump vec4 a; Inner b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + val.b.c.y;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial_vec2_vec3
		version 310 es
		desc "Uniform struct declared in both, used partially in both. Datatype vec2 and vec3"
		values {
			uniform vec2 val.a = vec2(1.0, 2.0);
			uniform vec3 val.b = vec3(1.0, 2.0, 3.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec2 a; mediump vec3 b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec2 a; mediump vec3 b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + val.b.y;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial_vec2_int
		version 310 es
		desc "Uniform struct declared in both, used partially in both. Datatype vec2 and int"
		values {
			uniform vec2 val.a = vec2(1.0, 2.0);
			uniform int val.b = 2;
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec2 a; mediump int b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec2 a; mediump int b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + float(val.b);
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial_int_float
		version 310 es
		desc "Uniform struct declared in both, used partially in both. Datatype int and float"
		values {
			uniform float val.a = 1.0;
			uniform int val.b = 2;
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump float a; mediump int b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump float a; mediump int b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + float(val.b);
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial_bvec2_vec2
		version 310 es
		desc "Uniform struct declared in both, used partially in both. Datatype bvec2 and vec2"
		values {
			uniform bvec2 val.a = bvec2(true, true);
			uniform vec2 val.b = vec2(1.0, 2.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {bvec2 a; mediump vec2 b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = float(val.a.x);
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {bvec2 a; mediump vec2 b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + val.b.y;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial_ivec2_vec2
		version 310 es
		desc "Uniform struct declared in both, used partially in both. Datatype ivec2 and vec2"
		values {
			uniform ivec2 val.a = ivec2(1, 2);
			uniform vec2 val.b = vec2(1.0, 2.0);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump ivec2 a; mediump vec2 b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = vec2(val.a).x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump ivec2 a; mediump vec2 b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + val.b.y;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case partial_ivec2_ivec2
		version 310 es
		desc "Uniform struct declared in both, used partially in both. Datatype ivec2 and ivec2"
		values {
			uniform ivec2 val.a = ivec2(1, 2);
			uniform ivec2 val.b = ivec2(1, 2);
			output float out0 = 3.0;
		}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump ivec2 a; mediump ivec2 b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = vec2(val.a).x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump ivec2 a; mediump ivec2 b;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + vec2(val.b).y;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case type_conflict_1
		version 310 es
		desc "Fragment struct has one less member than fragment version"
		expect link_fail
		values {output float out0 = 3.0;}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump float a; mediump float b;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump float a;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = res + val.a;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case type_conflict_2
		version 310 es
		desc "Vertex struct has int, fragment struct has float."
		expect link_fail
		values {output float out0 = 3.0;}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump int a;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = float(val.a);
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump float a;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = val.a;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case type_conflict_3
		version 310 es
		desc "Vertex struct has vec3, fragment struct has vec4."
		expect link_fail
		values {output float out0 = 3.0;}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump vec3 a;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = float(val.a.x);
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump vec4 a;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = val.a.x;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case precision_conflict_1
		version 310 es
		desc "Vertex side struct has highp, fragment side struct mediump."
		expect link_fail
		values {output float out0 = 3.0;}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {highp float a;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump float a;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = val.a;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case precision_conflict_2
		version 310 es
		desc "Vertex side struct has mediump, fragment side struct lowp."
		expect link_fail
		values {output float out0 = 3.0;}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {mediump float a;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {lowp float a;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = val.a;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case precision_conflict_3
		version 310 es
		desc "Vertex side struct has lowp, fragment side struct mediump."
		expect link_fail
		values {output float out0 = 3.0;}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {lowp float a;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {mediump float a;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = val.a;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case precision_conflict_4
		version 310 es
		desc "Vertex side struct has lowp, fragment side struct implicit mediump."
		expect link_fail
		values {output float out0 = 3.0;}
		vertex ""
			#version 310 es
			${VERTEX_DECLARATIONS}
			struct Struct {lowp float a;};
			uniform Struct val;
			out mediump float res;
			void main()
			{
				res = val.a;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Struct {float a;};
			uniform Struct val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{			out0 = val.a;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case light_struct_highp
		version 310 es
		desc "Complex Light struct from use case tests."
		values {
			uniform float val.constantAttenuation = 1.0;
			uniform float val.quadraticAttenuation = 1.0;
			output float out0 = 2.0;
		}
		vertex ""
			#version 310 es
			struct Light
			{
				mediump vec3	color;
				highp vec4		position;
				highp vec3		direction;
				mediump float	constantAttenuation;
				mediump float	linearAttenuation;
				mediump float	quadraticAttenuation;
			};
			${VERTEX_DECLARATIONS}
			uniform Light val;
			out mediump float res;
			void main()
			{
				res = val.constantAttenuation;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Light
			{
				mediump vec3	color;
				highp vec4		position;
				highp vec3		direction;
				mediump float	constantAttenuation;
				mediump float	linearAttenuation;
				mediump float	quadraticAttenuation;
			};
			struct Struct {float a;};
			uniform Light val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				out0 = res + val.quadraticAttenuation;
				${FRAGMENT_OUTPUT}
			}
		""
	end

	case light_struct_mediump
		version 310 es
		desc "Complex Light struct from use case tests, without highp usage"
		values {
			uniform float val.constantAttenuation = 1.0;
			uniform float val.quadraticAttenuation = 1.0;
			output float out0 = 2.0;
		}
		vertex ""
			#version 310 es
			struct Light
			{
				mediump vec3	color;
				mediump vec4	position;
				mediump vec3	direction;
				mediump float	constantAttenuation;
				mediump float	linearAttenuation;
				mediump float	quadraticAttenuation;
			};
			${VERTEX_DECLARATIONS}
			uniform Light val;
			out mediump float res;
			void main()
			{
				res = val.constantAttenuation;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es
			precision mediump float;
			struct Light
			{
				mediump vec3	color;
				mediump vec4	position;
				mediump vec3	direction;
				mediump float	constantAttenuation;
				mediump float	linearAttenuation;
				mediump float	quadraticAttenuation;
			};
			struct Struct {float a;};
			uniform Light val;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				out0 = res + val.quadraticAttenuation;
				${FRAGMENT_OUTPUT}
			}
		""
	end
end

group block "Uniform blocks"
	case differing_precision
		version 310 es
		expect build_successful
		vertex ""
			#version 310 es

			uniform Block
			{
				highp vec4 val;
			};

			${VERTEX_DECLARATIONS}
			out mediump float res;
			void main()
			{
				res = val.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es

			uniform Block
			{
				mediump vec4 val;
			};

			precision mediump float;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				dEQP_FragColor = val;
			}
		""
	end

	case type_mismatch
		version 310 es
		expect link_fail
		vertex ""
			#version 310 es

			uniform Block
			{
				highp vec4 val;
			};

			${VERTEX_DECLARATIONS}
			out mediump float res;
			void main()
			{
				res = val.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es

			uniform Block
			{
				highp vec3 val;
			};

			precision mediump float;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				dEQP_FragColor = vec4(val, 1.0);
			}
		""
	end

	case members_mismatch
		version 310 es
		expect link_fail
		vertex ""
			#version 310 es

			uniform Block
			{
				highp vec4 val;
			};

			${VERTEX_DECLARATIONS}
			out mediump float res;
			void main()
			{
				res = val.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es

			uniform Block
			{
				highp vec4 val;
				lowp uint u;
			};

			precision mediump float;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				dEQP_FragColor = vec4(val);
			}
		""
	end

	case layout_qualifier_mismatch_1
		version 310 es
		expect link_fail
		vertex ""
			#version 310 es

			layout(std140) uniform Block
			{
				highp vec4 val;
			};

			${VERTEX_DECLARATIONS}
			out mediump float res;
			void main()
			{
				res = val.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es

			uniform Block
			{
				highp vec4 val;
			};

			precision mediump float;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				dEQP_FragColor = vec4(val);
			}
		""
	end

	case layout_qualifier_mismatch_2
		version 310 es
		expect link_fail
		vertex ""
			#version 310 es

			layout(shared) uniform Block
			{
				highp vec4 val;
			};

			${VERTEX_DECLARATIONS}
			out mediump float res;
			void main()
			{
				res = val.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es

			layout(packed) uniform Block
			{
				highp vec4 val;
			};

			precision mediump float;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				dEQP_FragColor = vec4(val);
			}
		""
	end

	case layout_qualifier_mismatch_3
		version 310 es
		expect link_fail
		vertex ""
			#version 310 es

			layout(row_major) uniform Block
			{
				highp vec4 val;
			};

			${VERTEX_DECLARATIONS}
			out mediump float res;
			void main()
			{
				res = val.x;
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es

			layout(column_major) uniform Block
			{
				highp vec4 val;
			};

			precision mediump float;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				dEQP_FragColor = vec4(val);
			}
		""
	end

	case layout_qualifier_mismatch_4
		version 310 es
		expect link_fail
		vertex ""
			#version 310 es

			layout(row_major) uniform Block
			{
				highp mat3 val;
			};

			${VERTEX_DECLARATIONS}
			out mediump float res;
			void main()
			{
				res = val[0][1];
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es

			layout(column_major) uniform Block
			{
				highp mat3 val;
			};

			precision mediump float;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				dEQP_FragColor = vec4(val[2], 1.0);
			}
		""
	end

	case layout_qualifier_mismatch_5
		version 310 es
		expect link_fail
		vertex ""
			#version 310 es

			uniform Block
			{
				layout(row_major) uniform highp mat3 val;
			};

			${VERTEX_DECLARATIONS}
			out mediump float res;
			void main()
			{
				res = val[0][1];
				${VERTEX_OUTPUT}
			}
		""
		fragment ""
			#version 310 es

			uniform Block
			{
				layout(column_major) uniform highp mat3 val;
			};

			precision mediump float;
			${FRAGMENT_DECLARATIONS}
			in mediump float res;
			void main()
			{
				dEQP_FragColor = vec4(val[2], 1.0);
			}
		""
	end
end
