glsl-array-bounds: set out-of-bounds array index inside shader
[piglit.git] / tests / shaders / glsl-fs-bug25902.frag
blob3541303230eb7c0647585f85d68ff6e6e75bf422
1 /*
2  * Copyright (c) 2009 Nick Bowler
3  * Copyright © 2010 Intel Corporation
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining
6  * a copy of this software and associated documentation files (the
7  * "Software"), to deal in the Software without restriction, including
8  * without limitation the rights to use, copy, modify, merge, publish,
9  * distribute, sublicense, and/or sell copies of the Software, and to
10  * permit persons to whom the Software is furnished to do so, subject to
11  * the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be
14  * included in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  */
25 uniform vec4 args;
26 uniform sampler2D sampler;
28 void main()
30         vec4 secondary = texture2D(sampler, gl_TexCoord[0].st);
31         vec3 colour    = args.rgb;
33         /* Removing the "if useSecondary" here (but keeping the
34          * multiplication) causes the shader to work.
35          * The failure does not depend on the value assigned to useSecondary.
36          *
37          * Making colour vec4 and doing vec4 multiplication also causes the
38          * shader to work.
39          */
40         if (args.a != 0.0) {
41                 colour *= secondary.rgb;
42         }
44         gl_FragColor = vec4(colour, 1);