arb_gpu_shader5: test indexing of samplers inside structs

Message ID 1433384923-10715-1-git-send-email-t_arceri@yahoo.com.au
State New
Headers show

Commit Message

'Timothy Arceri' via Patchwork Forward June 4, 2015, 2:28 a.m.
Test results:

Nvidia GeForce 840M - NVIDIA 346.47: pass
---
 .../fs-struct-nonconst-sampler-const.shader_test   | 72 ++++++++++++++++++++
 ...fs-struct-nonconst-sampler-nonconst.shader_test | 77 ++++++++++++++++++++++
 .../fs-struct-nonconst-sampler.shader_test         | 72 ++++++++++++++++++++
 3 files changed, 221 insertions(+)
 create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test
 create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-nonconst.shader_test
 create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test

Comments

'Timothy Arceri' via Patchwork Forward June 16, 2015, 10:50 a.m. | #1
Hi Neil,

No problem. I'll update the tests give them a run on Nvidia and cc you
in on the patch.

Tim

On Mon, 2015-06-15 at 16:06 +0100, Neil Roberts wrote:
> Hi,
> 
> I've just pushed this patch which changes the other
> sampler_array_indexing tests so that the textures are not just a solid
> colour. The idea is that that way it will ensure that the texture
> coordinates are being used correctly.
> 
> http://cgit.freedesktop.org/piglit/commit/?id=4f9caf084eda7353af7bbe2
> 
> I originally made the patch before your commit was pushed so I didn't
> modify your tests. Would you want to modify your tests as well so that
> they match? I didn't want to do this myself because the new tests seem to be
> failing with Mesa i965 and I don't have a suitable NVIDIA card handy to
> test it with.
> 
> Regards,
> - Neil
> 
> Timothy Arceri <t_arceri@yahoo.com.au> writes:
> 
> > Test results:
> >
> > Nvidia GeForce 840M - NVIDIA 346.47: pass
> > ---
> >  .../fs-struct-nonconst-sampler-const.shader_test   | 72 ++++++++++++++++++++
> >  ...fs-struct-nonconst-sampler-nonconst.shader_test | 77 ++++++++++++++++++++++
> >  .../fs-struct-nonconst-sampler.shader_test         | 72 ++++++++++++++++++++
> >  3 files changed, 221 insertions(+)
> >  create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test
> >  create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-nonconst.shader_test
> >  create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test
> >
> > diff --git a/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test
> > new file mode 100644
> > index 0000000..16f73a4
> > --- /dev/null
> > +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test
> > @@ -0,0 +1,72 @@
> > +# This test verifies that dynamically uniform indexing of sampler arrays
> > +# in the fragment shader behaves correctly.
> > +
> > +[require]
> > +GLSL >= 1.50
> > +GL_ARB_gpu_shader5
> > +
> > +[vertex shader passthrough]
> > +
> > +[fragment shader]
> > +#version 150
> > +#extension GL_ARB_gpu_shader5: require
> > +
> > +struct S {
> > +   sampler2D tex[2];
> > +};
> > +
> > +uniform S s[4];
> > +
> > +uniform int n;
> > +
> > +out vec4 color;
> > +
> > +void main()
> > +{
> > +	color = texture(s[n].tex[1], vec2(0.5, 0.5));
> > +}
> > +
> > +[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) (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 -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/fs-struct-nonconst-sampler-nonconst.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-nonconst.shader_test
> > new file mode 100644
> > index 0000000..88310ab
> > --- /dev/null
> > +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-nonconst.shader_test
> > @@ -0,0 +1,77 @@
> > +# This test verifies that dynamically uniform indexing of sampler arrays
> > +# in the fragment shader behaves correctly.
> > +
> > +[require]
> > +GLSL >= 1.50
> > +GL_ARB_gpu_shader5
> > +
> > +[vertex shader passthrough]
> > +
> > +[fragment shader]
> > +#version 150
> > +#extension GL_ARB_gpu_shader5: require
> > +
> > +struct S {
> > +   sampler2D tex[2];
> > +};
> > +
> > +uniform S s[2];
> > +
> > +uniform int n;
> > +uniform int m;
> > +
> > +out vec4 color;
> > +
> > +void main()
> > +{
> > +	color = texture(s[n].tex[m], vec2(0.5, 0.5));
> > +}
> > +
> > +[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) (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_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test
> > new file mode 100644
> > index 0000000..9c6df15
> > --- /dev/null
> > +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test
> > @@ -0,0 +1,72 @@
> > +# This test verifies that dynamically uniform indexing of sampler arrays
> > +# in the fragment shader behaves correctly.
> > +
> > +[require]
> > +GLSL >= 1.50
> > +GL_ARB_gpu_shader5
> > +
> > +[vertex shader passthrough]
> > +
> > +[fragment shader]
> > +#version 150
> > +#extension GL_ARB_gpu_shader5: require
> > +
> > +struct S {
> > +   sampler2D tex;
> > +};
> > +
> > +uniform S s[4];
> > +
> > +uniform int n;
> > +
> > +out vec4 color;
> > +
> > +void main()
> > +{
> > +	color = texture(s[n].tex, vec2(0.5, 0.5));
> > +}
> > +
> > +[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) (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 -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
> > Piglit@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/piglit
'Timothy Arceri' via Patchwork Forward June 17, 2015, 1:30 a.m. | #2
Hi Ilia,

I only did fs as it satisfied what I was trying to show. I found this
issue while working on arrays of arrays support.
The tests also fail for nir on i965, I was also hoping someone might
take a look at the failing tests before I got around to adding the
arrays of array support.

I've just about got a working ES version of arrays of arrays ready to
submit the only part which I know isn't working for this cut down
version of the extension is the various sampler indirect support so I
may end up having to look into it.

That said I guess it probably makes sense to add some tests for the
other shaders ... I'll add it to my todo list. 

On Tue, 2015-06-16 at 09:22 -0400, Ilia Mirkin wrote:
> BTW, Tim, any reason you only did fs? The reason I ask is that it
> fails on i965 without nir, which is what vs/gs uses. [And I happened
> to copy that approach in st/mesa, so this doesn't work in gallium
> either... maybe having a failing piglit on i965 will cause the intel
> folk to figure out how to properly fix it... and I can copy again ;) ]
> 
> On Tue, Jun 16, 2015 at 6:50 AM, Timothy Arceri <t_arceri@yahoo.com.au> wrote:
> > Hi Neil,
> >
> > No problem. I'll update the tests give them a run on Nvidia and cc you
> > in on the patch.
> >
> > Tim
> >
> > On Mon, 2015-06-15 at 16:06 +0100, Neil Roberts wrote:
> >> Hi,
> >>
> >> I've just pushed this patch which changes the other
> >> sampler_array_indexing tests so that the textures are not just a solid
> >> colour. The idea is that that way it will ensure that the texture
> >> coordinates are being used correctly.
> >>
> >> http://cgit.freedesktop.org/piglit/commit/?id=4f9caf084eda7353af7bbe2
> >>
> >> I originally made the patch before your commit was pushed so I didn't
> >> modify your tests. Would you want to modify your tests as well so that
> >> they match? I didn't want to do this myself because the new tests seem to be
> >> failing with Mesa i965 and I don't have a suitable NVIDIA card handy to
> >> test it with.
> >>
> >> Regards,
> >> - Neil
> >>
> >> Timothy Arceri <t_arceri@yahoo.com.au> writes:
> >>
> >> > Test results:
> >> >
> >> > Nvidia GeForce 840M - NVIDIA 346.47: pass
> >> > ---
> >> >  .../fs-struct-nonconst-sampler-const.shader_test   | 72 ++++++++++++++++++++
> >> >  ...fs-struct-nonconst-sampler-nonconst.shader_test | 77 ++++++++++++++++++++++
> >> >  .../fs-struct-nonconst-sampler.shader_test         | 72 ++++++++++++++++++++
> >> >  3 files changed, 221 insertions(+)
> >> >  create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test
> >> >  create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-nonconst.shader_test
> >> >  create mode 100644 tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test
> >> >
> >> > diff --git a/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test
> >> > new file mode 100644
> >> > index 0000000..16f73a4
> >> > --- /dev/null
> >> > +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test
> >> > @@ -0,0 +1,72 @@
> >> > +# This test verifies that dynamically uniform indexing of sampler arrays
> >> > +# in the fragment shader behaves correctly.
> >> > +
> >> > +[require]
> >> > +GLSL >= 1.50
> >> > +GL_ARB_gpu_shader5
> >> > +
> >> > +[vertex shader passthrough]
> >> > +
> >> > +[fragment shader]
> >> > +#version 150
> >> > +#extension GL_ARB_gpu_shader5: require
> >> > +
> >> > +struct S {
> >> > +   sampler2D tex[2];
> >> > +};
> >> > +
> >> > +uniform S s[4];
> >> > +
> >> > +uniform int n;
> >> > +
> >> > +out vec4 color;
> >> > +
> >> > +void main()
> >> > +{
> >> > +   color = texture(s[n].tex[1], vec2(0.5, 0.5));
> >> > +}
> >> > +
> >> > +[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) (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 -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/fs-struct-nonconst-sampler-nonconst.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-nonconst.shader_test
> >> > new file mode 100644
> >> > index 0000000..88310ab
> >> > --- /dev/null
> >> > +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-nonconst.shader_test
> >> > @@ -0,0 +1,77 @@
> >> > +# This test verifies that dynamically uniform indexing of sampler arrays
> >> > +# in the fragment shader behaves correctly.
> >> > +
> >> > +[require]
> >> > +GLSL >= 1.50
> >> > +GL_ARB_gpu_shader5
> >> > +
> >> > +[vertex shader passthrough]
> >> > +
> >> > +[fragment shader]
> >> > +#version 150
> >> > +#extension GL_ARB_gpu_shader5: require
> >> > +
> >> > +struct S {
> >> > +   sampler2D tex[2];
> >> > +};
> >> > +
> >> > +uniform S s[2];
> >> > +
> >> > +uniform int n;
> >> > +uniform int m;
> >> > +
> >> > +out vec4 color;
> >> > +
> >> > +void main()
> >> > +{
> >> > +   color = texture(s[n].tex[m], vec2(0.5, 0.5));
> >> > +}
> >> > +
> >> > +[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) (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_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test
> >> > new file mode 100644
> >> > index 0000000..9c6df15
> >> > --- /dev/null
> >> > +++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test
> >> > @@ -0,0 +1,72 @@
> >> > +# This test verifies that dynamically uniform indexing of sampler arrays
> >> > +# in the fragment shader behaves correctly.
> >> > +
> >> > +[require]
> >> > +GLSL >= 1.50
> >> > +GL_ARB_gpu_shader5
> >> > +
> >> > +[vertex shader passthrough]
> >> > +
> >> > +[fragment shader]
> >> > +#version 150
> >> > +#extension GL_ARB_gpu_shader5: require
> >> > +
> >> > +struct S {
> >> > +   sampler2D tex;
> >> > +};
> >> > +
> >> > +uniform S s[4];
> >> > +
> >> > +uniform int n;
> >> > +
> >> > +out vec4 color;
> >> > +
> >> > +void main()
> >> > +{
> >> > +   color = texture(s[n].tex, vec2(0.5, 0.5));
> >> > +}
> >> > +
> >> > +[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) (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 -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
> >> > Piglit@lists.freedesktop.org
> >> > http://lists.freedesktop.org/mailman/listinfo/piglit
> >
> >
> > _______________________________________________
> > Piglit mailing list
> > Piglit@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/piglit

Patch hide | download patch | download mbox

diff --git a/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test
new file mode 100644
index 0000000..16f73a4
--- /dev/null
+++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-const.shader_test
@@ -0,0 +1,72 @@ 
+# This test verifies that dynamically uniform indexing of sampler arrays
+# in the fragment shader behaves correctly.
+
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader5
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader5: require
+
+struct S {
+   sampler2D tex[2];
+};
+
+uniform S s[4];
+
+uniform int n;
+
+out vec4 color;
+
+void main()
+{
+	color = texture(s[n].tex[1], vec2(0.5, 0.5));
+}
+
+[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) (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 -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/fs-struct-nonconst-sampler-nonconst.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-nonconst.shader_test
new file mode 100644
index 0000000..88310ab
--- /dev/null
+++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler-nonconst.shader_test
@@ -0,0 +1,77 @@ 
+# This test verifies that dynamically uniform indexing of sampler arrays
+# in the fragment shader behaves correctly.
+
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader5
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader5: require
+
+struct S {
+   sampler2D tex[2];
+};
+
+uniform S s[2];
+
+uniform int n;
+uniform int m;
+
+out vec4 color;
+
+void main()
+{
+	color = texture(s[n].tex[m], vec2(0.5, 0.5));
+}
+
+[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) (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_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test
new file mode 100644
index 0000000..9c6df15
--- /dev/null
+++ b/tests/spec/arb_gpu_shader5/execution/sampler_array_indexing/fs-struct-nonconst-sampler.shader_test
@@ -0,0 +1,72 @@ 
+# This test verifies that dynamically uniform indexing of sampler arrays
+# in the fragment shader behaves correctly.
+
+[require]
+GLSL >= 1.50
+GL_ARB_gpu_shader5
+
+[vertex shader passthrough]
+
+[fragment shader]
+#version 150
+#extension GL_ARB_gpu_shader5: require
+
+struct S {
+   sampler2D tex;
+};
+
+uniform S s[4];
+
+uniform int n;
+
+out vec4 color;
+
+void main()
+{
+	color = texture(s[n].tex, vec2(0.5, 0.5));
+}
+
+[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) (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 -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)