On Sat, Aug 2, 2014 at 8:20 PM, Chris Forbes <[email protected]> wrote: > Both block indices are dynamically uniform expressions (by virtue of > being uniforms) -- but only some invocations take each path. > > Signed-off-by: Chris Forbes <[email protected]>
Reviewed-by: Ilia Mirkin <[email protected]> As I mentioned on IRC, while this test is perfectly correct, it would be nice to have a test where the indices weren't the same in actuality, in case the compiler mucks that up somehow. -ilia > --- > .../ubo_array_indexing/fs-masked.shader_test | 66 > ++++++++++++++++++++++ > 1 file changed, 66 insertions(+) > create mode 100644 > tests/spec/arb_gpu_shader5/execution/ubo_array_indexing/fs-masked.shader_test > > diff --git > a/tests/spec/arb_gpu_shader5/execution/ubo_array_indexing/fs-masked.shader_test > > b/tests/spec/arb_gpu_shader5/execution/ubo_array_indexing/fs-masked.shader_test > new file mode 100644 > index 0000000..1ec0553 > --- /dev/null > +++ > b/tests/spec/arb_gpu_shader5/execution/ubo_array_indexing/fs-masked.shader_test > @@ -0,0 +1,66 @@ > +# This test verifies that dynamically uniform indexing of UBO 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 > + > +uniform block { > + vec4 color; > +} arr[4]; > + > +uniform int n, n2; // these have same value, but the compiler can't know. > + > +out vec4 color; > + > +void main() > +{ > + if ((int(gl_FragCoord.x) & 3) == 2) { > + color = arr[n2].color; > + } else { > + color = arr[n].color; > + } > +} > + > +[test] > +clear color 0.2 0.2 0.2 0.2 > +clear > + > +ubo array index 0 > +uniform vec4 block.color 1.0 0.0 0.0 0.0 > +ubo array index 1 > +uniform vec4 block.color 0.0 1.0 0.0 0.0 > +ubo array index 2 > +uniform vec4 block.color 0.0 0.0 1.0 0.0 > +ubo array index 3 > +uniform vec4 block.color 1.0 1.0 1.0 1.0 > + > +uniform int n 0 > +uniform int n2 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 > +uniform int n2 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 > +uniform int n2 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 > +uniform int n2 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.0.2 > > _______________________________________________ > Piglit mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/piglit _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
