case mismatch_number_of_declarations
	version 310 es
	desc "Shader io block mismatch: different number of declarations"
	require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
	expect link_fail
	vertex ""
		#version 310 es
		${VERTEX_DECLARATIONS}
		out IOBlockName
		{
			mediump float variable1;
		};

		void main()
		{
			variable1 = float(gl_VertexID);
			${VERTEX_OUTPUT}
		}
	""
	fragment ""
		#version 310 es
		precision mediump float;
		${FRAGMENT_DECLARATIONS}
		in IOBlockName
		{
			mediump float variable1;
			mediump float variable2;
		};

		void main()
		{
			${FRAG_COLOR} = vec4(variable1 + variable2);
		}
	""
end

case mismatch_order
	version 310 es
	desc "Shader io block mismatch: different member declaration order"
	require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
	expect link_fail
	vertex ""
		#version 310 es
		${VERTEX_DECLARATIONS}
		out IOBlockName
		{
			mediump float variable1;
			mediump float variable2;
		};

		void main()
		{
			variable1 = float(gl_VertexID);
			${VERTEX_OUTPUT}
		}
	""
	fragment ""
		#version 310 es
		precision mediump float;
		${FRAGMENT_DECLARATIONS}
		in IOBlockName
		{
			mediump float variable2;
			mediump float variable1;
		};

		void main()
		{
			${FRAG_COLOR} = vec4(variable1 + variable2);
		}
	""
end

case mismatch_type
	version 310 es
	desc "Shader io block mismatch: different member type"
	require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
	expect link_fail
	vertex ""
		#version 310 es
		${VERTEX_DECLARATIONS}
		out IOBlockName
		{
			mediump vec2 variable;
		};

		void main()
		{
			variable.x = float(gl_VertexID);
			variable.y = float(gl_InstanceID);
			${VERTEX_OUTPUT}
		}
	""
	fragment ""
		#version 310 es
		precision mediump float;
		${FRAGMENT_DECLARATIONS}
		in IOBlockName
		{
			mediump float variable;
		};

		void main()
		{
			${FRAG_COLOR} = vec4(variable);
		}
	""
end

case mismatch_member_name
	version 310 es
	desc "Shader io block mismatch: different member name"
	require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
	expect link_fail
	vertex ""
		#version 310 es
		${VERTEX_DECLARATIONS}
		out IOBlockName
		{
			mediump float variable1;
		};

		void main()
		{
			variable1 = float(gl_VertexID);
			${VERTEX_OUTPUT}
		}
	""
	fragment ""
		#version 310 es
		precision mediump float;
		${FRAGMENT_DECLARATIONS}
		in IOBlockName
		{
			mediump float variable2;
		};

		void main()
		{
			${FRAG_COLOR} = vec4(variable2);
		}
	""
end

case mismatch_member_array_size
	version 310 es
	desc "Shader io block mismatch: different member array size"
	require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
	expect link_fail
	vertex ""
		#version 310 es
		${VERTEX_DECLARATIONS}
		out IOBlockName
		{
			mediump float variable[1];
		};

		void main()
		{
			variable[0] = float(gl_VertexID);
			${VERTEX_OUTPUT}
		}
	""
	fragment ""
		#version 310 es
		precision mediump float;
		${FRAGMENT_DECLARATIONS}
		in IOBlockName
		{
			mediump float variable[2];
		};

		void main()
		{
			${FRAG_COLOR} = vec4(variable[0] + variable[1]);
		}
	""
end

case with_and_without_instance_name
	version 310 es
	desc "Shader io block: with and without instance name"
	require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
	values
	{
		input float in0 = 1.0;
		output float out0 = 1.0;
	}
	vertex ""
		#version 310 es
		${VERTEX_DECLARATIONS}
		out IOBlockName
		{
			mediump float variable;
		} instanceName;

		void main()
		{
			instanceName.variable = in0;
			${VERTEX_OUTPUT}
		}
	""
	fragment ""
		#version 310 es
		precision mediump float;
		${FRAGMENT_DECLARATIONS}
		in IOBlockName
		{
			mediump float variable;
		};

		void main()
		{
			out0 = variable;
			${FRAGMENT_OUTPUT}
		}
	""
end

case mismatch_block_array_size
	version 310 es
	desc "Shader io block mismatch: different array size"
	require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
	expect link_fail
	vertex ""
		#version 310 es
		${VERTEX_DECLARATIONS}
		out IOBlockName
		{
			mediump float variable;
		} instanceName[1];

		void main()
		{
			instanceName[0].variable = float(gl_VertexID);
			${VERTEX_OUTPUT}
		}
	""
	fragment ""
		#version 310 es
		precision mediump float;
		${FRAGMENT_DECLARATIONS}
		in IOBlockName
		{
			mediump float variable;
		} instanceName[2];

		void main()
		{
			${FRAG_COLOR} = vec4(instanceName[0].variable + instanceName[1].variable);
		}
	""
end

case missing_output_block
	version 310 es
	desc "Shader io block mismatch: missing output block"
	require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
	expect link_fail
	vertex ""
		#version 310 es
		${VERTEX_DECLARATIONS}
		void main()
		{
			${VERTEX_OUTPUT}
		}
	""
	fragment ""
		#version 310 es
		precision mediump float;
		${FRAGMENT_DECLARATIONS}
		in IOBlockName
		{
			mediump float variable;
		};

		void main()
		{
			${FRAG_COLOR} = vec4(variable);
		}
	""
end

case ambiguous_variable_name_1
	version 310 es
	desc "Unnamed io block variable and global variable with identical names"
	require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
	expect compile_or_link_fail
	vertex ""
		#version 310 es
		${VERTEX_DECLARATIONS}
		float variable;
		out IOBlockName
		{
			mediump float variable;
		};

		void main()
		{
			variable = float(gl_VertexID);
			${VERTEX_OUTPUT}
		}
	""
	fragment ""
		#version 310 es
		precision mediump float;
		${FRAGMENT_DECLARATIONS}
		in IOBlockName
		{
			mediump float variable;
		};

		void main()
		{
			${FRAG_COLOR} = vec4(variable);
		}
	""
end

case ambiguous_variable_name_2
	version 310 es
	desc "Two unnamed io blocks with variables with identical names"
	require extension { "GL_OES_shader_io_blocks" | "GL_EXT_shader_io_blocks" } in { vertex, fragment }
	expect compile_or_link_fail
	vertex ""
		#version 310 es
		${VERTEX_DECLARATIONS}
		out IOBlockNameA
		{
			mediump float variable;
		};
		out IOBlockNameB
		{
			mediump float variable;
		};

		void main()
		{
			variable = float(gl_VertexID);
			${VERTEX_OUTPUT}
		}
	""
	fragment ""
		#version 310 es
		precision mediump float;
		${FRAGMENT_DECLARATIONS}
		in IOBlockNameA
		{
			mediump float variable;
		};
		in IOBlockNameB
		{
			mediump float variable;
		};

		void main()
		{
			${FRAG_COLOR} = vec4(variable);
		}
	""
end
