Test results: Nvidia GeForce 840M - NVIDIA 346.47 sampler-precision-qualifier.frag - pass fs-const-index-three-dimensions.shader_test - pass fs-const-index.shader_test - pass fs-initializer-const-index.shader_test - fail fs-initializer-non-const-index.shader_test - fail fs-mixed-const-and-non-const-index.shader_test - pass fs-mixed-const-and-non-const-index2.shader_test - fail fs-non-const-index.shader_test - pass fs-struct-const-index.shader_test - pass --- .../compiler/sampler-precision-qualifier.frag | 19 ++++++ .../fs-const-index-three-dimensions.shader_test | 32 +++++++++ .../execution/sampler/fs-const-index.shader_test | 32 +++++++++ .../sampler/fs-initializer-const-index.shader_test | 47 +++++++++++++ .../fs-initializer-non-const-index.shader_test | 79 ++++++++++++++++++++++ .../fs-mixed-const-and-non-const-index.shader_test | 60 ++++++++++++++++ ...fs-mixed-const-and-non-const-index2.shader_test | 67 ++++++++++++++++++ .../sampler/fs-non-const-index.shader_test | 75 ++++++++++++++++++++ .../sampler/fs-struct-const-index.shader_test | 34 ++++++++++ 9 files changed, 445 insertions(+) create mode 100644 tests/spec/arb_arrays_of_arrays/compiler/sampler-precision-qualifier.frag create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index-three-dimensions.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-non-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index2.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-non-const-index.shader_test create mode 100644 tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-const-index.shader_test
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/sampler-precision-qualifier.frag b/tests/spec/arb_arrays_of_arrays/compiler/sampler-precision-qualifier.frag new file mode 100644 index 0000000..687550a --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/compiler/sampler-precision-qualifier.frag @@ -0,0 +1,19 @@ +/* [config] + * expect_result: pass + * glsl_version: 1.30 + * require_extensions: GL_ARB_arrays_of_arrays + * [end config] + * + * Precision qualifiers apply to floating point, integer and sampler + * types. Test to see if and array of samplers correctly compiles. + */ +#version 130 +#extension GL_ARB_arrays_of_arrays: enable + +uniform lowp sampler2D sampler[1][1]; +in highp vec2 coord; + +void main() +{ + gl_FragColor = texture2D(sampler[0][0], coord); +} diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index-three-dimensions.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index-three-dimensions.shader_test new file mode 100644 index 0000000..2972fa3 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index-three-dimensions.shader_test @@ -0,0 +1,32 @@ +[require] +GLSL >= 1.20 +GL_ARB_arrays_of_arrays + +[vertex shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; + +void main() +{ + gl_Position = gl_Vertex; + texcoords = (gl_Vertex + 1.0) / 2.0; +} + +[fragment shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; +uniform sampler2D tex[2][2][2]; + +void main() +{ + gl_FragColor = texture2D(tex[1][0][1], texcoords.xy); +} + +[test] +uniform int tex[1][0][1] 1 +texture rgbw 1 (8, 8) +draw rect -1 -1 2 2 +relative probe rgb (0.25, 0.25) (1.0, 0.0, 0.0) +relative probe rgb (0.75, 0.25) (0.0, 1.0, 0.0) +relative probe rgb (0.25, 0.75) (0.0, 0.0, 1.0) +relative probe rgb (0.75, 0.75) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index.shader_test new file mode 100644 index 0000000..b323ae9 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-const-index.shader_test @@ -0,0 +1,32 @@ +[require] +GLSL >= 1.20 +GL_ARB_arrays_of_arrays + +[vertex shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; + +void main() +{ + gl_Position = gl_Vertex; + texcoords = (gl_Vertex + 1.0) / 2.0; +} + +[fragment shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; +uniform sampler2D tex[2][2]; + +void main() +{ + gl_FragColor = texture2D(tex[0][1], texcoords.xy); +} + +[test] +uniform int tex[0][1] 1 +texture rgbw 1 (8, 8) +draw rect -1 -1 2 2 +relative probe rgb (0.25, 0.25) (1.0, 0.0, 0.0) +relative probe rgb (0.75, 0.25) (0.0, 1.0, 0.0) +relative probe rgb (0.25, 0.75) (0.0, 0.0, 1.0) +relative probe rgb (0.75, 0.75) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-const-index.shader_test new file mode 100644 index 0000000..9ed59dd --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-const-index.shader_test @@ -0,0 +1,47 @@ +# Normally, uniform array variables are initialized by array literals. +# +# However, samplers are different. Consider a declaration such as: +# +# layout(binding = 5) uniform sampler2D[3]; +# +# The initializer value is a single integer (5), while the storage has 3 +# array elements. The proper behavior is to increment one for each +# element; they should be initialized to 5, 6, and 7. + +[require] +GLSL >= 1.40 +GL_ARB_arrays_of_arrays +GL_ARB_shading_language_420pack + +[vertex shader] +#extension GL_ARB_arrays_of_arrays: enable +in vec4 piglit_vertex; +out vec4 texcoords; + +void main() +{ + gl_Position = piglit_vertex; + texcoords = (piglit_vertex + 1.0) / 2.0; +} + +[fragment shader] +#extension GL_ARB_arrays_of_arrays: enable +#extension GL_ARB_shading_language_420pack: enable + +layout(binding = 0) uniform sampler2D tex[2][2][2]; + +in vec4 texcoords; +out vec4 color; + +void main() +{ + color = texture2D(tex[0][1][1], texcoords.xy); +} + +[test] +texture rgbw 3 (8, 8) +draw rect -1 -1 2 2 +relative probe rgb (0.25, 0.25) (1.0, 0.0, 0.0) +relative probe rgb (0.75, 0.25) (0.0, 1.0, 0.0) +relative probe rgb (0.25, 0.75) (0.0, 0.0, 1.0) +relative probe rgb (0.75, 0.75) (1.0, 1.0, 1.0) diff --git a/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-non-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-non-const-index.shader_test new file mode 100644 index 0000000..cb714a8 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-initializer-non-const-index.shader_test @@ -0,0 +1,79 @@ +# Normally, uniform array variables are initialized by array literals. +# +# However, samplers are different. Consider a declaration such as: +# +# layout(binding = 5) uniform sampler2D[3]; +# +# The initializer value is a single integer (5), while the storage has 3 +# array elements. The proper behavior is to increment one for each +# element; they should be initialized to 5, 6, and 7. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 +GL_ARB_arrays_of_arrays +GL_ARB_shading_language_420pack + +[vertex shader passthrough] + +[fragment shader] +#version 150 +#extension GL_ARB_shading_language_420pack : enable +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_arrays_of_arrays: enable + +layout(binding = 0) uniform sampler2D tex[2][2]; + +uniform int n; +uniform int m; + +out vec4 color; + +void main() +{ + color = texture(tex[n][m], vec2(0.5, 0.5)); +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +texture checkerboard 0 0 (32, 32) (1.0, 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.0, 1.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.0, 0.0, 1.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) (1.0, 1.0, 1.0, 1.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_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index.shader_test new file mode 100644 index 0000000..097d7b6 --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index.shader_test @@ -0,0 +1,60 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the fragment shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 +GL_ARB_arrays_of_arrays + +[vertex shader passthrough] + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_arrays_of_arrays: enable + +uniform sampler2D s[2][2]; + +uniform int n; + +out vec4 color; + +void main() +{ + color = texture(s[n][1], vec2(0.5, 0.5)); +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][0] 0 +uniform int s[0][1] 1 +uniform int s[1][0] 2 +uniform int s[1][1] 3 + +texture checkerboard 0 0 (32, 32) (1.0, 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.0, 1.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.0, 0.0, 1.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) (1.0, 1.0, 1.0, 1.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +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 +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_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index2.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index2.shader_test new file mode 100644 index 0000000..782fc6c --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-mixed-const-and-non-const-index2.shader_test @@ -0,0 +1,67 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the fragment shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 +GL_ARB_arrays_of_arrays + +[vertex shader passthrough] + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_arrays_of_arrays: enable + +uniform sampler2D s[2][2]; + +uniform int n; + +out vec4 color; + +void main() +{ + color = texture(s[1][n], vec2(0.5, 0.5)); +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][0] 0 +uniform int s[0][1] 1 +uniform int s[1][0] 2 +uniform int s[1][1] 3 + +texture checkerboard 0 0 (32, 32) (1.0, 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.0, 1.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.0, 0.0, 1.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) (1.0, 1.0, 1.0, 1.0) (1.0, 1.0, 1.0, 1.0) +texparameter 2D min nearest +texparameter 2D mag nearest + +uniform int n 0 +draw rect -1 0 1 1 +# real outcome? +relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 0.0, 1.0) + +#uniform int n 0 +#draw rect 0 -1 1 1 +#relative probe rect rgb (0.0, 0.5, 0.5, 0.5) (0.0, 1.0, 0.0) + +uniform int n 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_arrays_of_arrays/execution/sampler/fs-non-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-non-const-index.shader_test new file mode 100644 index 0000000..fe1f18e --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-non-const-index.shader_test @@ -0,0 +1,75 @@ +# This test verifies that dynamically uniform indexing of sampler arrays +# in the fragment shader behaves correctly. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 +GL_ARB_arrays_of_arrays + +[vertex shader passthrough] + +[fragment shader] +#version 150 +#extension GL_ARB_gpu_shader5: require +#extension GL_ARB_arrays_of_arrays: enable + +uniform sampler2D s[2][2]; + +uniform int n; +uniform int m; + +out vec4 color; + +void main() +{ + color = texture(s[n][m], vec2(0.5, 0.5)); +} + +[test] +clear color 0.2 0.2 0.2 0.2 +clear + +uniform int s[0][0] 0 +uniform int s[0][1] 1 +uniform int s[1][0] 2 +uniform int s[1][1] 3 + +texture checkerboard 0 0 (32, 32) (1.0, 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.0, 1.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.0, 0.0, 1.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) (1.0, 1.0, 1.0, 1.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_arrays_of_arrays/execution/sampler/fs-struct-const-index.shader_test b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-const-index.shader_test new file mode 100644 index 0000000..ba8ec8c --- /dev/null +++ b/tests/spec/arb_arrays_of_arrays/execution/sampler/fs-struct-const-index.shader_test @@ -0,0 +1,34 @@ +[require] +GLSL >= 1.10 + +[vertex shader] +varying vec4 texcoords; + +void main() +{ + gl_Position = gl_Vertex; + texcoords = (gl_Vertex + 1.0) / 2.0; +} + +[fragment shader] +#extension GL_ARB_arrays_of_arrays: enable +varying vec4 texcoords; +struct S { + sampler2D tex; +}; + +uniform S i[2]; + +void main() +{ + gl_FragColor = texture2D(i[1].tex, texcoords.xy); +} + +[test] +uniform int i[1].tex 1 +texture rgbw 1 (8, 8) +draw rect -1 -1 2 2 +relative probe rgb (0.25, 0.25) (1.0, 0.0, 0.0) +relative probe rgb (0.75, 0.25) (0.0, 1.0, 0.0) +relative probe rgb (0.25, 0.75) (0.0, 0.0, 1.0) +relative probe rgb (0.75, 0.75) (1.0, 1.0, 1.0) -- 2.1.0 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit