From: Nicolai Hähnle <nicolai.haeh...@amd.com> --- ...s-interpolateAtCentroid-block-array.shader_test | 73 +++++++++++++++++++++ .../fs-interpolateAtCentroid-block.shader_test | 62 ++++++++++++++++++ .../fs-interpolateAtOffset-block-array.shader_test | 75 ++++++++++++++++++++++ .../fs-interpolateAtOffset-block.shader_test | 66 +++++++++++++++++++ .../fs-interpolateAtSample-block-array.shader_test | 75 ++++++++++++++++++++++ .../fs-interpolateAtSample-block.shader_test | 62 ++++++++++++++++++ 6 files changed, 413 insertions(+) create mode 100644 tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtCentroid-block-array.shader_test create mode 100644 tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtCentroid-block.shader_test create mode 100644 tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtOffset-block-array.shader_test create mode 100644 tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtOffset-block.shader_test create mode 100644 tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtSample-block-array.shader_test create mode 100644 tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtSample-block.shader_test
diff --git a/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtCentroid-block-array.shader_test b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtCentroid-block-array.shader_test new file mode 100644 index 0000000..f245bee --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtCentroid-block-array.shader_test @@ -0,0 +1,73 @@ +# From Section 8.13.2 (Interpolation Functions) of the GLSL 4.50 spec: +# +# "For all of the interpolation functions, interpolant must be an input +# variable or an element of an input variable declared as an array." +# +# From Section 4.3.9 (Interface Blocks) of the GLSL 4.50 spec: +# +# "Input, output, uniform, and buffer variable declarations can be grouped +# into named interface blocks to provide coarser granularity backing than +# is achievable with individual declarations." +# +# So the members of an input interface block should still be considered as +# input variables and therefore acceptable as interpolants. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader] +in vec4 piglit_vertex; + +out VS2PS { + vec3 a[2]; +} vs2ps; + +void main() +{ + gl_Position = piglit_vertex; + + vs2ps.a[0] = piglit_vertex.xyz; + vs2ps.a[1] = piglit_vertex.zxy; +} + +[fragment shader] +#extension GL_ARB_gpu_shader5 : enable + +in VS2PS { + vec3 a[2]; +} vs2ps; + +uniform int u_idx; + +out vec4 color; + +void main() +{ + /* All pixels are fully covered, so these should be the same. */ + vec3 delta = vs2ps.a[u_idx] - interpolateAtCentroid(vs2ps.a[u_idx]); + + if (delta != vec3(0.0)) { + color = vec4(1.0, delta.x + 0.5, delta.y + 0.5, delta.z + 0.5); + } else { + color = vec4(0.0, 1.0, 0.0, 1.0); + } +} + +[test] +clear color 0.0 0.0 0.0 0.0 +clear + +uniform int u_idx 0 + +draw rect -1 -1 2 2 +probe all rgba 0.0 1.0 0.0 1.0 + + +clear color 0.0 0.0 0.0 0.0 +clear + +uniform int u_idx 1 + +draw rect -1 -1 2 2 +probe all rgba 0.0 1.0 0.0 1.0 diff --git a/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtCentroid-block.shader_test b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtCentroid-block.shader_test new file mode 100644 index 0000000..79b4064 --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtCentroid-block.shader_test @@ -0,0 +1,62 @@ +# From Section 8.13.2 (Interpolation Functions) of the GLSL 4.50 spec: +# +# "For all of the interpolation functions, interpolant must be an input +# variable or an element of an input variable declared as an array." +# +# From Section 4.3.9 (Interface Blocks) of the GLSL 4.50 spec: +# +# "Input, output, uniform, and buffer variable declarations can be grouped +# into named interface blocks to provide coarser granularity backing than +# is achievable with individual declarations." +# +# So the members of an input interface block should still be considered as +# input variables and therefore acceptable as interpolants. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader] +in vec4 piglit_vertex; + +out VS2PS { + vec3 a; + vec2 b; /* second variable to test that varying packing doesn't break anything */ +} vs2ps; + +void main() +{ + gl_Position = piglit_vertex; + + vs2ps.a = piglit_vertex.xyz; + vs2ps.b = vec2(0.0, 1.0); +} + +[fragment shader] +#extension GL_ARB_gpu_shader5 : enable + +in VS2PS { + vec3 a; + vec2 b; +} vs2ps; + +out vec4 color; + +void main() +{ + /* All pixels are fully covered, so these should be the same. */ + vec3 delta = vs2ps.a - interpolateAtCentroid(vs2ps.a); + + if (delta != vec3(0.0)) { + color = vec4(1.0, delta.x + 0.5, delta.y + 0.5, delta.z + 0.5); + } else { + color = vec4(vs2ps.b.x, vs2ps.b.y, 0.0, 1.0); + } +} + +[test] +clear color 0.0 0.0 0.0 0.0 +clear + +draw rect -1 -1 2 2 +probe all rgba 0.0 1.0 0.0 1.0 diff --git a/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtOffset-block-array.shader_test b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtOffset-block-array.shader_test new file mode 100644 index 0000000..367304f --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtOffset-block-array.shader_test @@ -0,0 +1,75 @@ +# From Section 8.13.2 (Interpolation Functions) of the GLSL 4.50 spec: +# +# "For all of the interpolation functions, interpolant must be an input +# variable or an element of an input variable declared as an array." +# +# From Section 4.3.9 (Interface Blocks) of the GLSL 4.50 spec: +# +# "Input, output, uniform, and buffer variable declarations can be grouped +# into named interface blocks to provide coarser granularity backing than +# is achievable with individual declarations." +# +# So the members of an input interface block should still be considered as +# input variables and therefore acceptable as interpolants. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader] +in vec4 piglit_vertex; + +out VS2PS { + vec3 a[2]; +} vs2ps; + +void main() +{ + gl_Position = piglit_vertex; + + vs2ps.a[0] = piglit_vertex.xyz; + vs2ps.a[1] = piglit_vertex.zxy; +} + +[fragment shader] +#extension GL_ARB_gpu_shader5 : enable + +in VS2PS { + vec3 a[2]; +} vs2ps; + +uniform int u_idx; +uniform vec2 u_offset; + +out vec4 color; + +void main() +{ + /* u_offset is always 0, so these should be the same. */ + vec3 delta = vs2ps.a[u_idx] - interpolateAtOffset(vs2ps.a[u_idx], u_offset); + + if (delta != vec3(0.0)) { + color = vec4(1.0, delta.x + 0.5, delta.y + 0.5, delta.z + 0.5); + } else { + color = vec4(0.0, 1.0, 0.0, 1.0); + } +} + +[test] +clear color 0.0 0.0 0.0 0.0 +clear + +uniform vec2 u_offset 0 0 +uniform int u_idx 0 + +draw rect -1 -1 2 2 +probe all rgba 0.0 1.0 0.0 1.0 + + +clear color 0.0 0.0 0.0 0.0 +clear + +uniform int u_idx 1 + +draw rect -1 -1 2 2 +probe all rgba 0.0 1.0 0.0 1.0 diff --git a/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtOffset-block.shader_test b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtOffset-block.shader_test new file mode 100644 index 0000000..dc34e8a --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtOffset-block.shader_test @@ -0,0 +1,66 @@ +# From Section 8.13.2 (Interpolation Functions) of the GLSL 4.50 spec: +# +# "For all of the interpolation functions, interpolant must be an input +# variable or an element of an input variable declared as an array." +# +# From Section 4.3.9 (Interface Blocks) of the GLSL 4.50 spec: +# +# "Input, output, uniform, and buffer variable declarations can be grouped +# into named interface blocks to provide coarser granularity backing than +# is achievable with individual declarations." +# +# So the members of an input interface block should still be considered as +# input variables and therefore acceptable as interpolants. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader] +in vec4 piglit_vertex; + +out VS2PS { + vec3 a; + vec2 b; /* second variable to test that varying packing doesn't break anything */ +} vs2ps; + +void main() +{ + gl_Position = piglit_vertex; + + vs2ps.a = piglit_vertex.xyz; + vs2ps.b = vec2(0.0, 1.0); +} + +[fragment shader] +#extension GL_ARB_gpu_shader5 : enable + +in VS2PS { + vec3 a; + vec2 b; +} vs2ps; + +uniform vec2 u_offset; + +out vec4 color; + +void main() +{ + /* u_offset is always 0, so these should be the same. */ + vec3 delta = vs2ps.a - interpolateAtOffset(vs2ps.a, u_offset); + + if (delta != vec3(0.0)) { + color = vec4(1.0, delta.x + 0.5, delta.y + 0.5, delta.z + 0.5); + } else { + color = vec4(vs2ps.b.x, vs2ps.b.y, 0.0, 1.0); + } +} + +[test] +clear color 0.0 0.0 0.0 0.0 +clear + +uniform vec2 u_offset 0 0 + +draw rect -1 -1 2 2 +probe all rgba 0.0 1.0 0.0 1.0 diff --git a/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtSample-block-array.shader_test b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtSample-block-array.shader_test new file mode 100644 index 0000000..621cefb --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtSample-block-array.shader_test @@ -0,0 +1,75 @@ +# From Section 8.13.2 (Interpolation Functions) of the GLSL 4.50 spec: +# +# "For all of the interpolation functions, interpolant must be an input +# variable or an element of an input variable declared as an array." +# +# From Section 4.3.9 (Interface Blocks) of the GLSL 4.50 spec: +# +# "Input, output, uniform, and buffer variable declarations can be grouped +# into named interface blocks to provide coarser granularity backing than +# is achievable with individual declarations." +# +# So the members of an input interface block should still be considered as +# input variables and therefore acceptable as interpolants. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader] +in vec4 piglit_vertex; + +out VS2PS { + vec3 a[2]; +} vs2ps; + +void main() +{ + gl_Position = piglit_vertex; + + vs2ps.a[0] = piglit_vertex.xyz; + vs2ps.a[1] = piglit_vertex.zxy; +} + +[fragment shader] +#extension GL_ARB_gpu_shader5 : enable + +in VS2PS { + vec3 a[2]; +} vs2ps; + +uniform int u_idx; + +out vec4 color; + +void main() +{ + /* There is no multi-sampling, so these should be the same. */ + vec3 delta = vs2ps.a[u_idx] - interpolateAtSample(vs2ps.a[u_idx], 0); + + delta.yz = vec2(0); + + if (delta != vec3(0.0)) { + color = vec4(1.0, delta.x + 0.5, delta.y + 0.5, delta.z + 0.5); + } else { + color = vec4(0.0, 1.0, 0.0, 1.0); + } +} + +[test] +clear color 0.0 0.0 0.0 0.0 +clear + +uniform int u_idx 0 + +draw rect -1 -1 2 2 +probe all rgba 0.0 1.0 0.0 1.0 + + +clear color 0.0 0.0 0.0 0.0 +clear + +uniform int u_idx 1 + +draw rect -1 -1 2 2 +probe all rgba 0.0 1.0 0.0 1.0 diff --git a/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtSample-block.shader_test b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtSample-block.shader_test new file mode 100644 index 0000000..3b8e78c --- /dev/null +++ b/tests/spec/arb_gpu_shader5/execution/built-in-functions/fs-interpolateAtSample-block.shader_test @@ -0,0 +1,62 @@ +# From Section 8.13.2 (Interpolation Functions) of the GLSL 4.50 spec: +# +# "For all of the interpolation functions, interpolant must be an input +# variable or an element of an input variable declared as an array." +# +# From Section 4.3.9 (Interface Blocks) of the GLSL 4.50 spec: +# +# "Input, output, uniform, and buffer variable declarations can be grouped +# into named interface blocks to provide coarser granularity backing than +# is achievable with individual declarations." +# +# So the members of an input interface block should still be considered as +# input variables and therefore acceptable as interpolants. + +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader5 + +[vertex shader] +in vec4 piglit_vertex; + +out VS2PS { + vec3 a; + vec2 b; /* second variable to test that varying packing doesn't break anything */ +} vs2ps; + +void main() +{ + gl_Position = piglit_vertex; + + vs2ps.a = piglit_vertex.xyz; + vs2ps.b = vec2(0.0, 1.0); +} + +[fragment shader] +#extension GL_ARB_gpu_shader5 : enable + +in VS2PS { + vec3 a; + vec2 b; +} vs2ps; + +out vec4 color; + +void main() +{ + /* There is no multi-sampling, so these should be the same. */ + vec3 delta = vs2ps.a - interpolateAtSample(vs2ps.a, 0); + + if (delta != vec3(0.0)) { + color = vec4(1.0, delta.x + 0.5, delta.y + 0.5, delta.z + 0.5); + } else { + color = vec4(vs2ps.b.x, vs2ps.b.y, 0.0, 1.0); + } +} + +[test] +clear color 0.0 0.0 0.0 0.0 +clear + +draw rect -1 -1 2 2 +probe all rgba 0.0 1.0 0.0 1.0 -- 2.9.3 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit