fragment shader tests already exist, this adds vertex and geometry tests for completeness.
Test results: Nvidia GeForce 840M - NVIDIA 346.47: pass Cc: Ilia Mirkin <[email protected]> --- .../gs-struct-nonconst-sampler-const.shader_test | 91 ++++++++++++++++++++ ...gs-struct-nonconst-sampler-nonconst.shader_test | 96 ++++++++++++++++++++++ .../gs-struct-nonconst.shader_test | 91 ++++++++++++++++++++ .../vs-struct-nonconst-sampler-const.shader_test | 84 +++++++++++++++++++ ...vs-struct-nonconst-sampler-nonconst.shader_test | 89 ++++++++++++++++++++ .../vs-struct-nonconst.shader_test | 84 +++++++++++++++++++ 6 files changed, 535 insertions(+) create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst-sampler-const.shader_test create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst-sampler-nonconst.shader_test create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst.shader_test create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst-sampler-const.shader_test create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst-sampler-nonconst.shader_test create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst.shader_test diff --git a/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst-sampler-const.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst-sampler-const.shader_test new file mode 100644 index 0000000..8010d31 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst-sampler-const.shader_test @@ -0,0 +1,91 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the geometry shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader passthrough] + +[geometry shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +struct S { + sampler2D tex[2]; +}; + +uniform S s[4]; + +uniform int n; + +layout(triangles) in; +layout(triangle_strip, max_vertices=3) out; +out vec4 color; + +void main() +{ + for (int i = 0; i < 3; i++) { + gl_Position = gl_in[i].gl_Position; + color = texture(s[n].tex[1], vec2(0.75, 0.25)); + EmitVertex(); + } + EndPrimitive(); +} + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +in vec4 color; +out vec4 out_color; + +void main() +{ + out_color = color; +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0].tex[1] 0 +uniform int s[1].tex[1] 1 +uniform int s[2].tex[1] 2 +uniform int s[3].tex[1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 2 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 3 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst-sampler-nonconst.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst-sampler-nonconst.shader_test new file mode 100644 index 0000000..6f34154 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst-sampler-nonconst.shader_test @@ -0,0 +1,96 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the geometry shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader passthrough] + +[geometry shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +struct S { + sampler2D tex[2]; +}; + +uniform S s[2]; + +uniform int n; +uniform int m; + +layout(triangles) in; +layout(triangle_strip, max_vertices=3) out; +out vec4 color; + +void main() +{ + for (int i = 0; i < 3; i++) { + gl_Position = gl_in[i].gl_Position; + color = texture(s[n].tex[m], vec2(0.75, 0.25)); + EmitVertex(); + } + EndPrimitive(); +} + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +in vec4 color; +out vec4 out_color; + +void main() +{ + out_color = color; +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0].tex[0] 0 +uniform int s[0].tex[1] 1 +uniform int s[1].tex[0] 2 +uniform int s[1].tex[1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +uniform int m 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 0 +uniform int m 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +uniform int m 0 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 1 +uniform int m 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst.shader_test new file mode 100644 index 0000000..a36d295 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/gs-struct-nonconst.shader_test @@ -0,0 +1,91 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the geometry shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader passthrough] + +[geometry shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +struct S { + sampler2D tex; +}; + +uniform S s[4]; + +uniform int n; + +layout(triangles) in; +layout(triangle_strip, max_vertices=3) out; +out vec4 color; + +void main() +{ + for (int i = 0; i < 3; i++) { + gl_Position = gl_in[i].gl_Position; + color = texture(s[n].tex, vec2(0.75, 0.25)); + EmitVertex(); + } + EndPrimitive(); +} + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +in vec4 color; +out vec4 out_color; + +void main() +{ + out_color = color; +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0].tex 0 +uniform int s[1].tex 1 +uniform int s[2].tex 2 +uniform int s[3].tex 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 2 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 3 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst-sampler-const.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst-sampler-const.shader_test new file mode 100644 index 0000000..9588b25 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst-sampler-const.shader_test @@ -0,0 +1,84 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the vertex shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +struct S { + sampler2D tex[2]; +}; + +uniform S s[4]; + +uniform int n; + +in vec4 piglit_vertex; +out vec4 color; + +void main() +{ + gl_Position = piglit_vertex; + color = texture(s[n].tex[1], vec2(0.75, 0.25)); +} + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +in vec4 color; +out vec4 out_color; + +void main() +{ + out_color = color; +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0].tex[1] 0 +uniform int s[1].tex[1] 1 +uniform int s[2].tex[1] 2 +uniform int s[3].tex[1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 2 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 3 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst-sampler-nonconst.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst-sampler-nonconst.shader_test new file mode 100644 index 0000000..57d7961 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst-sampler-nonconst.shader_test @@ -0,0 +1,89 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the vertex shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +struct S { + sampler2D tex[2]; +}; + +uniform S s[2]; + +uniform int n; +uniform int m; + +in vec4 piglit_vertex; +out vec4 color; + +void main() +{ + gl_Position = piglit_vertex; + color = texture(s[n].tex[m], vec2(0.75, 0.25)); +} + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +in vec4 color; +out vec4 out_color; + +void main() +{ + out_color = color; +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0].tex[0] 0 +uniform int s[0].tex[1] 1 +uniform int s[1].tex[0] 2 +uniform int s[1].tex[1] 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +uniform int m 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 0 +uniform int m 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 1 +uniform int m 0 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 1 +uniform int m 1 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst.shader_test new file mode 100644 index 0000000..7e02cdd --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/vs-struct-nonconst.shader_test @@ -0,0 +1,84 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the vertex shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +struct S { + sampler2D tex; +}; + +uniform S s[4]; + +uniform int n; + +in vec4 piglit_vertex; +out vec4 color; + +void main() +{ + gl_Position = piglit_vertex; + color = texture(s[n].tex, vec2(0.75, 0.25)); +} + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require + +in vec4 color; +out vec4 out_color; + +void main() +{ + out_color = color; +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0].tex 0 +uniform int s[1].tex 1 +uniform int s[2].tex 2 +uniform int s[3].tex 3 + +texture checkerboard 0 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 0.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 1 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 1.0, 0.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 2 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (0.0, 0.0, 1.0, 0.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +texture checkerboard 3 0 (32, 32) (0.5, 0.0, 0.0, 0.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +draw rect -1 -1 1 1 + +relative probe rect rgb (0.0, 0.0, 0.5, 0.5) (1.0, 0.0, 0.0) + +uniform int n 1 +draw rect 0 -1 1 1 + +relative probe rect rgb (0.5, 0.0, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 2 +draw rect -1 0 1 1 + +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +uniform int n 3 +draw rect 0 0 1 1 + +relative probe rect rgb (0.5, 0.5, 0.5, 0.5) (1.0, 1.0, 1.0) -- 2.1.0 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
