Test results are from the following hardware/driver combination: AMD Radeon HD 6670 - Catalyst 13.251 OpenGL 4.3
gs-input-sizing-consistent-with-prev-length-blocks.geom pass gs-input-sizing-consistent-with-prev-length.geom pass gs-input-sizing-implied-length-blocks.geom pass gs-input-sizing-implied-length-consistent-with-prev-usage-blocks.geom pass gs-input-sizing-implied-length-consistent-with-prev-usage.geom pass gs-input-sizing-implied-length-inconsistent-with-prev-usage-blocks.geom fail gs-input-sizing-implied-length-inconsistent-with-prev-usage.geom fail gs-input-sizing-implied-length.geom pass gs-input-sizing-inconsistent-blocks-invalid.geom fail gs-input-sizing-inconsistent-blocks-valid.geom pass gs-input-sizing-inconsistent-invalid.geom fail gs-input-sizing-inconsistent-valid.geom pass gs-output.geom pass gs-redeclares-pervertex-in-as-array-of-arrays.geom fail gs-redeclares-pervertex-in-as-array-of-arrays2.geom fail Signed-off-by: Timothy Arceri <[email protected]> --- ...-sizing-consistent-with-prev-length-blocks.geom | 40 +++++++++++++++++++ ...s-input-sizing-consistent-with-prev-length.geom | 33 ++++++++++++++++ .../gs-input-sizing-implied-length-blocks.geom | 31 +++++++++++++++ ...d-length-consistent-with-prev-usage-blocks.geom | 41 ++++++++++++++++++++ ...-implied-length-consistent-with-prev-usage.geom | 38 ++++++++++++++++++ ...length-inconsistent-with-prev-usage-blocks.geom | 41 ++++++++++++++++++++ ...mplied-length-inconsistent-with-prev-usage.geom | 38 ++++++++++++++++++ .../compiler/gs-input-sizing-implied-length.geom | 27 +++++++++++++ ...s-input-sizing-inconsistent-blocks-invalid.geom | 37 ++++++++++++++++++ .../gs-input-sizing-inconsistent-blocks-valid.geom | 21 ++++++++++ .../gs-input-sizing-inconsistent-invalid.geom | 31 +++++++++++++++ .../gs-input-sizing-inconsistent-valid.geom | 16 ++++++++ .../arb_arrays_of_arrays/compiler/gs-output.geom | 28 ++++++++++++++ ...redeclares-pervertex-in-as-array-of-arrays.geom | 45 ++++++++++++++++++++++ ...edeclares-pervertex-in-as-array-of-arrays2.geom | 45 ++++++++++++++++++++++ 15 files changed, 512 insertions(+) create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-consistent-with-prev-length-blocks.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-consistent-with-prev-length.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-blocks.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-consistent-with-prev-usage-blocks.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-consistent-with-prev-usage.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-inconsistent-with-prev-usage-blocks.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-inconsistent-with-prev-usage.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-blocks-invalid.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-blocks-valid.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-invalid.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-valid.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-output.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-redeclares-pervertex-in-as-array-of-arrays.geom create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/gs-redeclares-pervertex-in-as-array-of-arrays2.geom diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-consistent-with-prev-length-blocks.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-consistent-with-prev-length-blocks.geom new file mode 100644 index 0000000..fb2fcff --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-consistent-with-prev-length-blocks.geom @@ -0,0 +1,40 @@ +// 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 the case marked with (*), namely that no error +// results from declaring a geometry shader input layout after +// declaraing geometry shader inputs that are either unsized or have a +// size consistent with the declared layout. This test verifies the +// case for input interface blocks. +// +// [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 blk1 { + vec4 Color; +} inst1[][2]; + +in blk2 { + vec4 Color; +} inst2[2][2]; + +layout(lines) in; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-consistent-with-prev-length.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-consistent-with-prev-length.geom new file mode 100644 index 0000000..c0e7b65 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-consistent-with-prev-length.geom @@ -0,0 +1,33 @@ +// 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 the case marked with (*), namely that no error +// results from declaring a geometry shader input layout after +// declaraing geometry shader inputs that are either unsized or have a +// size consistent with the declared layout. +// +// [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 Color1[][4]; +in vec4 Color2[2][4]; +layout(lines) in; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-blocks.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-blocks.geom new file mode 100644 index 0000000..d35a480 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-blocks.geom @@ -0,0 +1,31 @@ +// Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says: +// +// All geometry shader input unsized array declarations will be +// sized by an earlier input layout qualifier, when present, as per +// the following table. +// +// Followed by a table mapping each allowed input layout qualifier to +// the corresponding input length. +// +// This test verifies that if an unsized array declaration follows an +// input layout qualifier, the size is implied. This test verifies +// the case for input interface blocks. +// +// [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 + +layout(lines) in; + +in blk { + vec4 Color; +} inst[][3]; + +uniform int foo[inst.length() == 2 ? 1 : -1]; +uniform int foo2[inst[1].length() == 3 ? 1 : -1]; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-consistent-with-prev-usage-blocks.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-consistent-with-prev-usage-blocks.geom new file mode 100644 index 0000000..2f9c578 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-consistent-with-prev-usage-blocks.geom @@ -0,0 +1,41 @@ +// 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. This test verifies the case for input +// interface blocks. +// +// [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 blk { + vec4 Color; +} inst[][6]; + +vec4 foo() +{ + return inst[2][4].Color; +} + +layout(triangles) in; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-consistent-with-prev-usage.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-consistent-with-prev-usage.geom new file mode 100644 index 0000000..76d54dc --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-consistent-with-prev-usage.geom @@ -0,0 +1,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; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-inconsistent-with-prev-usage-blocks.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-inconsistent-with-prev-usage-blocks.geom new file mode 100644 index 0000000..9e9cde3 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-inconsistent-with-prev-usage-blocks.geom @@ -0,0 +1,41 @@ +// 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 wasn't consistent with the +// new size, there is an error. This test verifies the case for input +// interface blocks. +// +// [config] +// expect_result: fail +// 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 blk { + vec4 Color; +} inst[][2]; + +vec4 foo() +{ + return inst[2][1].Color; +} + +layout(lines) in; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-inconsistent-with-prev-usage.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-inconsistent-with-prev-usage.geom new file mode 100644 index 0000000..14cb773 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length-inconsistent-with-prev-usage.geom @@ -0,0 +1,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 wasn't consistent with the +// new size, there is an error. +// +// [config] +// expect_result: fail +// 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[][2]; + +vec4 foo() +{ + return Color[2][1]; +} + +layout(lines) in; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length.geom new file mode 100644 index 0000000..cc8c022 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-implied-length.geom @@ -0,0 +1,27 @@ +// Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says: +// +// All geometry shader input unsized array declarations will be +// sized by an earlier input layout qualifier, when present, as per +// the following table. +// +// Followed by a table mapping each allowed input layout qualifier to +// the corresponding input length. +// +// This test verifies that if an unsized array declaration follows an +// input layout qualifier, the size is implied. +// +// [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 + +layout(lines) in; +in vec4 Color[][3]; + +uniform int foo[Color.length() == 2 ? 1 : -1]; +uniform int foo2[Color[1].length() == 3 ? 1 : -1]; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-blocks-invalid.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-blocks-invalid.geom new file mode 100644 index 0000000..4485c4f --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-blocks-invalid.geom @@ -0,0 +1,37 @@ +// 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 the case marked with (*), namely that declaring +// two geometry shader inputs with different array sizes (for the outer most +// dimension) causes a compile error. +// This test verifies the case for input interface blocks. +// +// [config] +// expect_result: fail +// 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 blk1 { + vec4 Color; +} inst2[2][6]; + +in blk2 { + vec4 Color; +} inst3[3][6]; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-blocks-valid.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-blocks-valid.geom new file mode 100644 index 0000000..909b347 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-blocks-valid.geom @@ -0,0 +1,21 @@ +// This test verifies that declaring +// two geometry shader inputs with different array sizes only causes a +// compile error when the outer most dimension differs. +// +// [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 blk1 { + vec4 Color; +} inst2[2][4]; + +in blk2 { + vec4 Color; +} inst3[2][5]; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-invalid.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-invalid.geom new file mode 100644 index 0000000..f2a55dc --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-invalid.geom @@ -0,0 +1,31 @@ +// 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 the case marked with (*), namely that declaring +// two geometry shader inputs with different array sizes (for the outer most +// dimension) causes a compile error. +// +// [config] +// expect_result: fail +// 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 Color2[2][5]; +in vec4 Color3[3][5]; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-valid.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-valid.geom new file mode 100644 index 0000000..2590af3 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-input-sizing-inconsistent-valid.geom @@ -0,0 +1,16 @@ +// This test verifies that declaring +// two geometry shader inputs with different array sizes only causes a +// compile error when the outer most dimension differs. +// +// [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 Color2[2][4]; +in vec4 Color3[2][3]; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-output.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-output.geom new file mode 100644 index 0000000..3bb74bf --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-output.geom @@ -0,0 +1,28 @@ +// Verify that geometry shader output arrays of arrays can be declared. +// +// [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 + +layout(triangles) in; + +in vec4 v1[3]; + +out vec4 v2[2][4]; +out blk1 { + out vec4 v3[2][1]; +}; +out blk2 { + out vec4 v[2][5]; +} ifc1; +out blk3 { + out vec4 v; +} ifc2[2][3]; +out vec4[3] v4[4]; +out vec4[2][3] v5; diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-redeclares-pervertex-in-as-array-of-arrays.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-redeclares-pervertex-in-as-array-of-arrays.geom new file mode 100644 index 0000000..3b9c2ac --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-redeclares-pervertex-in-as-array-of-arrays.geom @@ -0,0 +1,45 @@ +// From section 7.1.1 (Compatibility Profile Built-In Language +// Variables) of the GLSL 4.10 spec: +// +// However, when a built-in interface block with an instance name +// is redeclared (e.g., gl_in), the instance name must be included +// in the redeclaration. It is an error to not include the +// built-in instance name or to change its name. For example, +// +// in gl_PerVertex { +// vec4 gl_ClipVertex; +// vec4 gl_FrontColor; +// } gl_in[]; // must be present and must be "gl_in[]" +// +// Note: although this text appears in a section referring to +// compatibility profile variables, it's clear from context that it's +// meant to apply to any redeclaration of gl_in, whether it is done in +// a compatibility or a core profile. +// +// This appears to be a clarification to the behaviour established for +// gl_PerVertex by GLSL 1.50, therefore we test it using GLSL version +// 1.50. +// +// In this test, we try redeclaraing the gl_PerVertex input as an +// array of arrays. +// +// [config] +// expect_result: fail +// 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 + +layout(triangles) in; +layout(triangle_strip, max_vertices = 3) out; + +in gl_PerVertex { + vec4 gl_Position; +} gl_in[][6]; + +void main() +{ +} diff --git a/tests/spec/arb_arrays_of_arrays/compiler/gs-redeclares-pervertex-in-as-array-of-arrays2.geom b/tests/spec/arb_arrays_of_arrays/compiler/gs-redeclares-pervertex-in-as-array-of-arrays2.geom new file mode 100644 index 0000000..6e56703 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/gs-redeclares-pervertex-in-as-array-of-arrays2.geom @@ -0,0 +1,45 @@ +// From section 7.1.1 (Compatibility Profile Built-In Language +// Variables) of the GLSL 4.10 spec: +// +// However, when a built-in interface block with an instance name +// is redeclared (e.g., gl_in), the instance name must be included +// in the redeclaration. It is an error to not include the +// built-in instance name or to change its name. For example, +// +// in gl_PerVertex { +// vec4 gl_ClipVertex; +// vec4 gl_FrontColor; +// } gl_in[]; // must be present and must be "gl_in[]" +// +// Note: although this text appears in a section referring to +// compatibility profile variables, it's clear from context that it's +// meant to apply to any redeclaration of gl_in, whether it is done in +// a compatibility or a core profile. +// +// This appears to be a clarification to the behaviour established for +// gl_PerVertex by GLSL 1.50, therefore we test it using GLSL version +// 1.50. +// +// In this test, we try redeclaraing the gl_PerVertex input as an +// array of arrays. +// +// [config] +// expect_result: fail +// 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 + +layout(triangles) in; +layout(triangle_strip, max_vertices = 3) out; + +in gl_PerVertex { + vec4 gl_Position; +} gl_in[3][6]; + +void main() +{ +} -- 1.9.3 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
