blob: 22945c8910a9ef6f7aa7e3935183e1aef8641ce9 [file] [log] [blame]
group invalid_declarations "Invalid declarations"
case in_in_vertex_main
version 300 es
expect compile_fail
vertex ""
#version 300 es
${VERTEX_DECLARATIONS}
void main()
{
in mediump float val;
gl_Position = vec4(1.0);
}
""
fragment ""
#version 300 es
${FRAGMENT_DECLARATIONS}
void main()
{
${FRAG_COLOR} = vec4(1.0);
}
""
end
case out_in_vertex_main
version 300 es
expect compile_fail
vertex ""
#version 300 es
${VERTEX_DECLARATIONS}
void main()
{
out mediump float val;
gl_Position = vec4(1.0);
}
""
fragment ""
#version 300 es
in mediump float val;
${FRAGMENT_DECLARATIONS}
void main()
{
${FRAG_COLOR} = vec4(1.0);
}
""
end
case in_in_fragment_main
version 300 es
expect compile_fail
vertex ""
#version 300 es
out mediump float val;
${VERTEX_DECLARATIONS}
void main()
{
gl_Position = vec4(1.0);
}
""
fragment ""
#version 300 es
${FRAGMENT_DECLARATIONS}
void main()
{
in mediump float val;
${FRAG_COLOR} = vec4(1.0);
}
""
end
case out_in_fragment_main
version 300 es
expect compile_fail
vertex ""
#version 300 es
${VERTEX_DECLARATIONS}
void main()
{
gl_Position = vec4(1.0);
}
""
fragment ""
#version 300 es
${FRAGMENT_DECLARATIONS}
void main()
{
out mediump float val;
${FRAG_COLOR} = vec4(1.0);
}
""
end
case uniform_in_vertex_main
version 300 es
expect compile_fail
vertex ""
#version 300 es
${VERTEX_DECLARATIONS}
void main()
{
uniform mediump float val;
gl_Position = vec4(1.0);
}
""
fragment ""
#version 300 es
${FRAGMENT_DECLARATIONS}
void main()
{
${FRAG_COLOR} = vec4(1.0);
}
""
end
case uniform_in_fragment_main
version 300 es
expect compile_fail
vertex ""
#version 300 es
${VERTEX_DECLARATIONS}
void main()
{
gl_Position = vec4(1.0);
}
""
fragment ""
#version 300 es
${FRAGMENT_DECLARATIONS}
void main()
{
uniform mediump float val;
${FRAG_COLOR} = vec4(1.0);
}
""
end
case uniform_block_in_main
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
void main()
{
uniform Block { mediump float val; };
${OUTPUT}
}
""
end
case invariant_attribute
version 300 es
expect compile_fail
vertex ""
#version 300 es
invariant in mediump float val;
${VERTEX_DECLARATIONS}
void main()
{
gl_Position = vec4(1.0);
}
""
fragment ""
#version 300 es
${FRAGMENT_DECLARATIONS}
void main()
{
${FRAG_COLOR} = vec4(1.0);
}
""
end
case invariant_uniform
version 300 es
expect compile_fail
vertex ""
#version 300 es
invariant uniform mediump float val;
${VERTEX_DECLARATIONS}
void main()
{
gl_Position = vec4(1.0);
}
""
fragment ""
#version 300 es
${FRAGMENT_DECLARATIONS}
void main()
{
${FRAG_COLOR} = vec4(1.0);
}
""
end
case invariant_uniform_block_1
version 300 es
expect compile_fail
both ""
#version 300 es
invariant uniform Block { mediump float val; };
${DECLARATIONS}
void main()
{
${OUTPUT}
}
""
end
case invariant_uniform_block_2
version 300 es
expect compile_fail
both ""
#version 300 es
uniform Block { invariant mediump float val; };
${DECLARATIONS}
void main()
{
${OUTPUT}
}
""
end
case uniform_block_layout_qualifier
version 300 es
expect compile_fail
both ""
#version 300 es
layout(foobar) uniform Block
{
mediump float val;
};
${DECLARATIONS}
void main()
{
${OUTPUT}
}
""
end
case uniform_block_member_layout_qualifier
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
layout(foobar) uniform mediump float val;
};
void main()
{
${OUTPUT}
}
""
end
case uniform_block_nested_struct_definition
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
struct S
{
mediump float v;
struct T
{
highp int i;
} t;
} s;
};
void main()
{
${OUTPUT}
}
""
end
case nested_uniform_block
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
uniform Block2
{
mediump float v;
} block2;
} block;
void main()
{
${OUTPUT}
}
""
end
case uniform_block_sampler_2d
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
uniform sampler2D s;
};
void main()
{
${OUTPUT}
}
""
end
case uniform_block_sampler_cube
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
uniform samplerCube s;
};
void main()
{
${OUTPUT}
}
""
end
case uniform_block_missing_member_semicolon
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
mediump float var
};
void main()
{
${OUTPUT}
}
""
end
case uniform_block_missing_end_semicolon
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
mediump float var;
}
void main()
{
${OUTPUT}
}
""
end
case uniform_block_duplicate_member_name_1
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
mediump float var;
mediump float var;
};
void main()
{
${OUTPUT}
}
""
end
case uniform_block_duplicate_member_name_2
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
mediump float var;
};
uniform Block2
{
mediump float var;
};
void main()
{
${OUTPUT}
}
""
end
case uniform_block_duplicate_member_name_3
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform mediump float var;
uniform Block
{
mediump float var;
};
void main()
{
${OUTPUT}
}
""
end
case uniform_block_duplicate_block_name
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
mediump float var;
};
uniform Block
{
mediump float var2;
};
void main()
{
${OUTPUT}
}
""
end
case uniform_block_duplicate_instance_name_1
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
mediump float var;
} block;
uniform Block2
{
mediump float var2;
} block;
void main()
{
${OUTPUT}
}
""
end
case uniform_block_duplicate_instance_name_2
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform mediump float block;
uniform Block
{
mediump float var;
} block;
void main()
{
${OUTPUT}
}
""
end
case uniform_block_duplicate_instance_name_3
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
mediump float block;
};
uniform Block2
{
mediump float var2;
} block;
void main()
{
${OUTPUT}
}
""
end
case uniform_block_array_without_instance_name_1
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block[2]
{
mediump float var;
};
void main()
{
${OUTPUT}
}
""
end
case uniform_block_array_without_instance_name_2
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
mediump float var;
} [2];
void main()
{
${OUTPUT}
}
""
end
case uniform_block_in
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
in mediump float var;
};
void main()
{
${OUTPUT}
}
""
end
case uniform_block_out
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
out mediump float var;
};
void main()
{
${OUTPUT}
}
""
end
case uniform_block_const
version 300 es
expect compile_fail
both ""
#version 300 es
${DECLARATIONS}
uniform Block
{
const mediump float var;
};
void main()
{
${OUTPUT}
}
""
end
end # invalid_declarations
group unspecified_precision "Invalid declarations with unspecified precision"
case float_partially_specified_fragment
version 300 es
expect compile_fail
vertex ""
#version 300 es
${VERTEX_DECLARATIONS}
void main() {}
""
fragment ""
#version 300 es
// no global precision qualifier (e.g. precision mediump float)
void main() {
mediump float x = 1.0;
vec3 y = vec3(x);
mediump vec4 z = vec4(y, x);
}
""
end
case float_fragment
version 300 es
expect compile_fail
vertex ""
#version 300 es
void main() {}
""
fragment ""
#version 300 es
void main() { float v; }
""
end
case vec2_fragment
version 300 es
expect compile_fail
vertex ""
#version 300 es
void main() {}
""
fragment ""
#version 300 es
void main() { vec2 v; }
""
end
case vec3_fragment
version 300 es
expect compile_fail
vertex ""
#version 300 es
void main() {}
""
fragment ""
#version 300 es
void main() { vec3 v; }
""
end
case vec4_fragment
version 300 es
expect compile_fail
vertex ""
#version 300 es
void main() {}
""
fragment ""
#version 300 es
void main() { vec4 v; }
""
end
case sampler3D
version 300 es
expect compile_fail
both ""
#version 300 es
uniform sampler3D samp;
void main() {}
""
end
case samplerCubeShadow
version 300 es
expect compile_fail
both ""
#version 300 es
uniform samplerCubeShadow samp;
void main() {}
""
end
case sampler2DShadow
version 300 es
expect compile_fail
both ""
#version 300 es
uniform sampler2DShadow samp;
void main() {}
""
end
case sampler2DArray
version 300 es
expect compile_fail
both ""
#version 300 es
uniform sampler2DArray samp;
void main() {}
""
end
case sampler2DArrayShadow
version 300 es
expect compile_fail
both ""
#version 300 es
uniform sampler2DArrayShadow samp;
void main() {}
""
end
case isampler2D
version 300 es
expect compile_fail
both ""
#version 300 es
uniform isampler2D samp;
void main() {}
""
end
case isampler3D
version 300 es
expect compile_fail
both ""
#version 300 es
uniform isampler3D samp;
void main() {}
""
end
case isamplerCube
version 300 es
expect compile_fail
both ""
#version 300 es
uniform isamplerCube samp;
void main() {}
""
end
case isampler2DArray
version 300 es
expect compile_fail
both ""
#version 300 es
uniform isampler2DArray samp;
void main() {}
""
end
case usampler2D
version 300 es
expect compile_fail
both ""
#version 300 es
uniform usampler2D samp;
void main() {}
""
end
case usampler3D
version 300 es
expect compile_fail
both ""
#version 300 es
uniform usampler3D samp;
void main() {}
""
end
case usamplerCube
version 300 es
expect compile_fail
both ""
#version 300 es
uniform usamplerCube samp;
void main() {}
""
end
case usampler2DArray
version 300 es
expect compile_fail
both ""
#version 300 es
uniform usampler2DArray samp;
void main() {}
""
end
end # unspecified_precision