Merge pull request #2891 from dneto0/hlsl-namespace
[platform/upstream/glslang.git] / Test / 450.frag
1 #version 450 core\r
2 \r
3 in float in1;\r
4 in vec2 in2;\r
5 in vec3 in3;\r
6 in vec4 in4;\r
7 \r
8 void main()\r
9 {\r
10     vec2 v2 = dFdxFine(in2);\r
11     vec3 v3 = dFdyCoarse(in3);\r
12     vec4 v4 = fwidth(in4);\r
13     v4 = dFdyFine(in4);\r
14     v3 = dFdyFine(in3);\r
15     float f = dFdx(in1) + dFdxFine(in1) + dFdxCoarse(in1);\r
16     v4 = fwidthCoarse(in4) + fwidthFine(in4);\r
17 \r
18     float cull = gl_CullDistance[2];\r
19     float consts = gl_MaxCullDistances + gl_MaxCombinedClipAndCullDistances + gl_MaxSamples;\r
20 \r
21     if (gl_HelperInvocation)\r
22         ++v4;\r
23 \r
24     int sum = gl_MaxVertexImageUniforms +\r
25               gl_MaxFragmentImageUniforms +\r
26               gl_MaxComputeImageUniforms +\r
27               gl_MaxCombinedImageUniforms +\r
28               gl_MaxCombinedShaderOutputResources;\r
29 \r
30     bool b1, b3, b;\r
31     uint uin;\r
32     bvec2 b2 = mix(bvec2(b1), bvec2(b3), bvec2(b));\r
33     uint um = mix(uin, uin, b);\r
34     ivec3 im3 = mix(ivec3(uin), ivec3(uin), bvec3(b));\r
35 }\r
36 \r
37 uniform sampler2DMS s2dms;\r
38 uniform usampler2DMSArray us2dmsa;\r
39 layout(rgba32i) uniform iimage2DMS ii2dms;\r
40 layout(rgba32f) uniform image2DMSArray i2dmsa;\r
41 \r
42 void foo()\r
43 {\r
44     int s = textureSamples(s2dms);\r
45     s += textureSamples(us2dmsa);\r
46     s += imageSamples(ii2dms);\r
47     s += imageSamples(i2dmsa);\r
48     float f = imageAtomicExchange(i2dmsa, ivec3(in3), 2, 4.5);\r
49 }\r
50 \r
51 #extension GL_ARB_sparse_texture2: enable\r
52 \r
53 uniform sampler2D               s2D;\r
54 uniform isampler2DArray         is2DArray;\r
55 uniform sampler2DRectShadow     s2DRectShadow;\r
56 \r
57 in flat ivec2 offsets[4];\r
58 in vec2 c2;\r
59 in vec3 c3;\r
60 \r
61 void testOffsets()\r
62 {\r
63     vec4  texel  = vec4(0.0);\r
64     ivec4 itexel = ivec4(0);\r
65     const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0));\r
66     sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel);\r
67     sparseTextureGatherOffsetsARB(is2DArray, c3, constOffsets, itexel, 2);\r
68     sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, constOffsets, texel);\r
69 \r
70     sparseTextureGatherOffsetsARB(s2D, c2, offsets, texel); // Error : Non constant offsets\r
71     sparseTextureGatherOffsetsARB(is2DArray, c3, offsets, itexel, 2); // Error : Non constant offsets\r
72     sparseTextureGatherOffsetsARB(s2DRectShadow, c2, 2.0, offsets, texel); // Error : Non constant offsets\r
73 \r
74 }\r
75 \r
76 in float gl_CullDistance[6];\r
77 \r
78 float cull(int i)\r
79 {\r
80     return (i >= 6) ? gl_CullDistance[5] : gl_CullDistance[i];\r
81 }\r
82 \r
83 layout(location = 6) in bName1 {\r
84     float f;\r
85     layout(location = 7) float g;\r
86     mat4 m;\r
87 } bInst1;\r
88 layout(location = 12) in bName2 {\r
89     float f;\r
90     layout(location = 13) float g;  // ERROR, location on array\r
91 } bInst2[3];\r
92 \r
93 layout(early_fragment_tests) in float f; // ERROR, must be standalone\r