1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
// Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec
// includes the following examples of compile-time errors:
//
// // code sequence within one shader...
// in vec4 Color1[]; // size unknown
// ...Color1.length()...// illegal, length() unknown
// in vec4 Color2[2]; // size is 2
// ...Color1.length()...// illegal, Color1 still has no size
// in vec4 Color3[3]; // illegal, input sizes are inconsistent
// layout(lines) in; // legal, input size is 2, matching
// in vec4 Color4[3]; // illegal, contradicts layout
// ...Color1.length()...// legal, length() is 2, Color1 sized by layout()
// layout(lines) in; // legal, matches other layout() declaration
// layout(triangles) in;// illegal, does not match earlier layout() declaration
//
// This test verifies that when a layout declaration causes a
// previously unsized geometry shader input array to become sized, if
// an intervening usage of that input array was consistent with the
// new size, there is no error.
//
// [config]
// expect_result: pass
// glsl_version: 1.50
// require_extensions: GL_ARB_arrays_of_arrays
// check_link: false
// [end config]
#version 150
#extension GL_ARB_arrays_of_arrays: enable
in vec4 Color[][4];
vec4 foo()
{
return Color[2][3];
}
layout(triangles) in;
|