Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / 150.frag
1 #version 150 core\r
2 \r
3 in vec4 gl_FragCoord;\r
4 layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;  // ERROR\r
5 layout(pixel_center_integer) in vec4 gl_FragCoord;  // ERROR\r
6 layout(origin_upper_left) in vec4 foo;  // ERROR\r
7 layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;\r
8 \r
9 void main()\r
10 {\r
11     vec4 c = gl_FragCoord;\r
12 }\r
13 \r
14 layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;  // ERROR, declared after use\r
15 \r
16 in struct S { float f; } s;\r
17 \r
18 float patch = 3.1;\r
19 \r
20 uniform sampler2DMS sms;\r
21 uniform isampler2DMS isms;\r
22 uniform usampler2DMS usms;\r
23 uniform sampler2DMSArray smsa;\r
24 uniform isampler2DMSArray ismsa;\r
25 uniform usampler2DMSArray usmsa;\r
26 \r
27 flat in ivec2 p2;\r
28 flat in ivec3 p3;\r
29 flat in int samp;\r
30 \r
31 void barWxyz()\r
32 {\r
33     ivec2 t11 = textureSize( sms);\r
34     ivec2 t12 = textureSize(isms);\r
35     ivec2 t13 = textureSize(usms);\r
36     ivec3 t21 = textureSize( smsa);\r
37     ivec3 t22 = textureSize(ismsa);\r
38     ivec3 t23 = textureSize(usmsa);\r
39      vec4 t31 = texelFetch( sms, p2, samp);\r
40     ivec4 t32 = texelFetch(isms, p2, samp);\r
41     uvec4 t33 = texelFetch(usms, p2, 3);\r
42      vec4 t41 = texelFetch( smsa, p3, samp);\r
43     ivec4 t42 = texelFetch(ismsa, ivec3(2), samp);\r
44     uvec4 t43 = texelFetch(usmsa, p3, samp);\r
45 }\r
46 \r
47 int primitiveID()\r
48 {\r
49    return gl_PrimitiveID;\r
50    gl_PerFragment; // ERROR, block name can't get reused\r
51 }\r
52 \r
53 in double type1;    // ERROR\r
54 #extension GL_ARB_gpu_shader_fp64 : enable\r
55 double type2;\r
56 double type3 = 2.0;\r
57 int absTest = sqrt(type3);\r
58 double absTest2 = sqrt(type3);\r
59 double absTest3 = sqrt(2);\r
60 float dk = sqrt(11);\r
61 \r
62 #extension GL_ARB_shader_bit_encoding: enable\r
63 \r
64 float f;\r
65 vec4 v4;\r
66 ivec4 iv4a;\r
67 uvec2 uv2c;\r
68 void bitEncodingPass()\r
69 {\r
70     int i = floatBitsToInt(f);\r
71     uvec4 uv11 = floatBitsToUint(v4);\r
72     vec4 v14 = intBitsToFloat(iv4a);\r
73     vec2 v15 = uintBitsToFloat(uv2c);\r
74 }\r
75 \r
76 #extension GL_ARB_shader_bit_encoding: disable\r
77 \r
78 void bitEncodingFail()\r
79 {\r
80     int i = floatBitsToInt(f); // Error, extention GL_ARB_bit_encoding is diabled\r
81 }\r
82 \r
83 #extension GL_ARB_shading_language_packing : enable\r
84 vec2 v2a;\r
85 uint uy;\r
86 \r
87 void packingPass()\r
88 {\r
89     uint u19 = packSnorm2x16(v2a);\r
90     vec2 v20 = unpackSnorm2x16(uy);\r
91     uint u15 = packUnorm2x16(v2a);\r
92     vec2 v16 = unpackUnorm2x16(uy);\r
93     uint u17 = packHalf2x16(v2a);\r
94     vec2 v18 = unpackHalf2x16(uy);\r
95 }\r
96 \r
97 #extension GL_ARB_shading_language_packing : disable\r
98 void packingFail()\r
99 {\r
100     uint u19 = packSnorm2x16(v2a); // Error, extension GL_ARB_shading_language_packing is disabled\r
101 }\r
102 \r
103 // Testing extension GL_ARB_texture_query_lod\r
104 uniform sampler1D samp1D;\r
105 uniform sampler2DShadow samp2Ds;\r
106 \r
107 void qlodFail()\r
108 {\r
109     vec2 lod;\r
110     float pf;\r
111     vec2 pf2;\r
112     vec3 pf3;\r
113 \r
114     lod = textureQueryLOD(samp1D, pf);      // ERROR, extension GL_ARB_texture_query_lod needed\r
115     lod = textureQueryLOD(samp2Ds, pf2);    // ERROR, extension GL_ARB_texture_query_lod needed\r
116 }\r
117 \r
118 #extension GL_ARB_texture_query_lod : enable\r
119 \r
120 uniform isampler2D isamp2D;\r
121 uniform usampler3D usamp3D;\r
122 uniform samplerCube sampCube;\r
123 uniform isampler1DArray isamp1DA;\r
124 uniform usampler2DArray usamp2DA;\r
125 \r
126 uniform sampler1DShadow samp1Ds;\r
127 uniform samplerCubeShadow sampCubes;\r
128 uniform sampler1DArrayShadow samp1DAs;\r
129 uniform sampler2DArrayShadow samp2DAs;\r
130 \r
131 uniform samplerBuffer sampBuf;\r
132 uniform sampler2DRect sampRect;\r
133 \r
134 void qlodPass()\r
135 {\r
136     vec2 lod;\r
137     float pf;\r
138     vec2 pf2;\r
139     vec3 pf3;\r
140 \r
141     lod = textureQueryLOD(samp1D, pf);\r
142     lod = textureQueryLOD(isamp2D, pf2);\r
143     lod = textureQueryLOD(usamp3D, pf3);\r
144     lod = textureQueryLOD(sampCube, pf3);\r
145     lod = textureQueryLOD(isamp1DA, pf);\r
146     lod = textureQueryLOD(usamp2DA, pf2);\r
147 \r
148     lod = textureQueryLOD(samp1Ds, pf);\r
149     lod = textureQueryLOD(samp2Ds, pf2);\r
150     lod = textureQueryLOD(sampCubes, pf3);\r
151     lod = textureQueryLOD(samp1DAs, pf);\r
152     lod = textureQueryLOD(samp2DAs, pf2);\r
153 \r
154     lod = textureQueryLOD(sampBuf, pf);     // ERROR\r
155     lod = textureQueryLOD(sampRect, pf2);   // ERROR\r
156 }\r
157 \r
158 // Test extension GL_EXT_shader_integer_mix\r
159 #extension GL_EXT_shader_integer_mix : enable\r
160 bool b1, b2, b;\r
161 int x,y;\r
162 uint z,w;\r
163 \r
164 void testmix()\r
165 {\r
166     int ival  = mix(x, y, b);\r
167     ivec2 iv2 = mix(ivec2(x), ivec2(y), bvec2(b));\r
168     ivec3 iv3 = mix(ivec3(x), ivec3(y), bvec3(b));\r
169     ivec4 iv4 = mix(ivec4(x), ivec4(x), bvec4(b));\r
170     uint  uiv = mix(z, w, b);\r
171     uvec2 uv2 = mix(uvec2(z), uvec2(z), bvec2(b));\r
172     uvec3 uv3 = mix(uvec3(z), uvec3(z), bvec3(b));\r
173     uvec4 uv4 = mix(uvec4(z), uvec4(z), bvec4(b));\r
174     bool  bv  = mix(b1, b2, b);\r
175     bvec2 bv2 = mix(bvec2(b1), bvec2(b2), bvec2(b));\r
176     bvec3 bv3 = mix(bvec3(b1), bvec3(b2), bvec3(b));\r
177     bvec4 bv4 = mix(bvec4(b1), bvec4(b2), bvec4(b));\r
178 }\r
179 \r
180 #extension GL_EXT_shader_integer_mix : disable\r
181 void testmixFail()\r
182 {\r
183     int ival  = mix(x, y, b); // Error since extenson GL_EXT_shader_integer_mix is disabled\r
184 }\r