diff options
6 files changed, 222 insertions, 0 deletions
diff --git a/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-mismatch.shader_test b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-mismatch.shader_test new file mode 100644 index 000000000..68a82176d --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-mismatch.shader_test @@ -0,0 +1,36 @@ +# Test for linking error when interface fields +# have mismatching array sizes + +[require] +GLSL >= 1.50 +GL_ARB_arrays_of_arrays + +[vertex shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +out ArraysOfArraysBlock +{ + vec4 a[3][2]; +} i; + +void main() +{ + i.a[1][1] = vec4(1.0); + gl_Position = vec4(1.0); +} + +[fragment shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +in ArraysOfArraysBlock +{ + vec4 a[2][2]; +} i; + +void main() +{ + gl_FragColor = i.a[1][1]; +} + +[test] +link error diff --git a/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-mismatch2.shader_test b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-mismatch2.shader_test new file mode 100644 index 000000000..a76ba52dc --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-mismatch2.shader_test @@ -0,0 +1,36 @@ +# Test for linking error when interface fields +# have mismatching array sizes + +[require] +GLSL >= 1.50 +GL_ARB_arrays_of_arrays + +[vertex shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +out ArraysOfArraysBlock +{ + vec4 a[3][2]; +} i; + +void main() +{ + i.a[1][1] = vec4(1.0); + gl_Position = vec4(1.0); +} + +[fragment shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +in ArraysOfArraysBlock +{ + vec4 a[3][4]; +} i; + +void main() +{ + gl_FragColor = i.a[1][1]; +} + +[test] +link error diff --git a/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized-mismatch.shader_test b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized-mismatch.shader_test new file mode 100644 index 000000000..76321e51d --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized-mismatch.shader_test @@ -0,0 +1,36 @@ +# Test for linking error between vertex and fragment shaders +# when interface fields are unmatching unsized arrays + +[require] +GLSL >= 1.50 +GL_ARB_arrays_of_arrays + +[vertex shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +out ArraysOfArraysBlock +{ + vec4 a[][3]; +} i; + +void main() +{ + i.a[2][2] = vec4(1.0); + gl_Position = vec4(1.0); +} + +[fragment shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +in ArraysOfArraysBlock +{ + vec4 a[][3]; +} i; + +void main() +{ + gl_FragColor = i.a[1][2]; +} + +[test] +link error diff --git a/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized-mismatch2.shader_test b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized-mismatch2.shader_test new file mode 100644 index 000000000..12acb1e84 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized-mismatch2.shader_test @@ -0,0 +1,37 @@ +# Test for linking error between vertex and fragment shaders +# when interface fields are unmatching unsized arrays, and the interface +# itself is an array of arrays. + +[require] +GLSL >= 1.50 +GL_ARB_arrays_of_arrays + +[vertex shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +out ArraysOfArraysBlock +{ + vec4 a[][2]; +} i[2][2]; + +void main() +{ + i[0][1].a[1][1] = vec4(1.0); + gl_Position = vec4(1.0); +} + +[fragment shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +in ArraysOfArraysBlock +{ + vec4 a[][2]; +} i[2][2]; + +void main() +{ + gl_FragColor = i[0][1].a[0][1]; +} + +[test] +link error diff --git a/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized.shader_test b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized.shader_test new file mode 100644 index 000000000..f53e93252 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized.shader_test @@ -0,0 +1,36 @@ +# Test for successful linking between vertex and fragment shaders +# when interface field is an unsized array + +[require] +GLSL >= 1.50 +GL_ARB_arrays_of_arrays + +[vertex shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +out ArraysOfArraysBlock +{ + vec4 a[][3]; +} i; + +void main() +{ + i.a[1][2] = vec4(1.0); + gl_Position = vec4(1.0); +} + +[fragment shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +in ArraysOfArraysBlock +{ + vec4 a[][3]; +} i; + +void main() +{ + gl_FragColor = i.a[1][2]; +} + +[test] +link success diff --git a/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized2.shader_test b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized2.shader_test new file mode 100644 index 000000000..269690462 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/linker/vs-to-fs-interface-field-unsized2.shader_test @@ -0,0 +1,41 @@ +# Test for successful linking between vertex and fragment shaders +# when interface field is an unsized array, and the interface +# itself is an array of arrays instance +# +# Note: The size of the arrays also means this tests the +# max boundary of GL_MAX_VERTEX_ATTRIBS when it's set +# to 64 (the mininum allowed for an implementation). + +[require] +GLSL >= 1.50 +GL_ARB_arrays_of_arrays + +[vertex shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +out ArraysOfArraysBlock +{ + vec4 a[][2]; +} i[2][2]; + +void main() +{ + i[1][0].a[1][1] = vec4(1.0); + gl_Position = vec4(1.0); +} + +[fragment shader] +#version 150 +#extension GL_ARB_arrays_of_arrays: enable +in ArraysOfArraysBlock +{ + vec4 a[][2]; +} i[2][2]; + +void main() +{ + gl_FragColor = i[1][0].a[1][1]; +} + +[test] +link success |