EndStreamPrimitive not supported when there is #extension GL_ARB_gpu_shader5
[platform/upstream/glslang.git] / Test / spv.nonuniform.frag
1 #version 450\r
2 \r
3 #extension GL_EXT_nonuniform_qualifier : enable\r
4 \r
5 layout(location=0) nonuniformEXT in vec4 nu_inv4;\r
6 nonuniformEXT float nu_gf;\r
7 layout(location=1) in nonuniformEXT flat int nu_ii;\r
8 layout(location = 2) in vec2 inTexcoord;\r
9 \r
10 layout(binding=0, input_attachment_index = 0) uniform subpassInput        inputAttachmentDyn[];\r
11 layout(binding=1)                             uniform samplerBuffer       uniformTexelBufferDyn[];\r
12 layout(binding=2, r32f)                       uniform imageBuffer         storageTexelBufferDyn[];\r
13 layout(binding=3)                             uniform uname { float a; }  uniformBuffer[];\r
14 layout(binding=4)                             buffer  bname { float b; }  storageBuffer[];\r
15 layout(binding=5)                             uniform sampler2D           sampledImage[];\r
16 layout(binding=6, r32f)                       uniform image2D             storageImage[];\r
17 layout(binding=7, input_attachment_index = 1) uniform subpassInput        inputAttachment[];\r
18 layout(binding=8)                             uniform samplerBuffer       uniformTexelBuffer[];\r
19 layout(binding=9, r32f)                       uniform imageBuffer         storageTexelBuffer[];\r
20 layout(binding = 10)                          uniform texture2D           uniformTexArr[8];\r
21 layout(binding = 11)                          uniform sampler             uniformSampler;\r
22 \r
23 nonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f)\r
24 {\r
25     return nupi;\r
26 }\r
27 \r
28 void main()\r
29 {\r
30     nonuniformEXT int nu_li;\r
31     nonuniformEXT int nu_li2;\r
32     int dyn_i;\r
33 \r
34     int a = foo(nu_li, nu_li);\r
35     nu_li = nonuniformEXT(a) + nonuniformEXT(a * 2);\r
36     nu_li2 = a + nonuniformEXT(a * 2);\r
37 \r
38     float b;\r
39     b = nu_inv4.x * nu_gf;\r
40     b += subpassLoad(inputAttachmentDyn[dyn_i]).x;\r
41     b += texelFetch(uniformTexelBufferDyn[dyn_i], 1).x;\r
42     b += imageLoad(storageTexelBufferDyn[dyn_i], 1).x;\r
43     b += uniformBuffer[nu_ii].a;\r
44     b += storageBuffer[nu_ii].b;\r
45     b += texture(sampledImage[nu_ii], vec2(0.5)).x;\r
46     b += imageLoad(storageImage[nu_ii], ivec2(1)).x;\r
47     b += subpassLoad(inputAttachment[nu_ii]).x;\r
48     b += texelFetch(uniformTexelBuffer[nu_ii], 1).x;\r
49     b += imageLoad(storageTexelBuffer[nu_ii], 1).x;\r
50     b += texture(sampler2D(uniformTexArr[nu_ii], uniformSampler), inTexcoord.xy).x;\r
51     b += texture(nonuniformEXT(sampler2D(uniformTexArr[nu_ii], uniformSampler)), inTexcoord.xy).x;\r
52 \r
53     nonuniformEXT ivec4 v;\r
54     nonuniformEXT mat4 m;\r
55     nonuniformEXT struct S { int a; } s;\r
56     nonuniformEXT int arr[10];\r
57     ivec4 uv;\r
58     mat4 um;\r
59     struct US { int a[10]; } us;\r
60     int uarr[10];\r
61     b += uniformBuffer[v.y].a;\r
62     b += uniformBuffer[v[2]].a;\r
63     b += uniformBuffer[uv[nu_ii]].a;\r
64     b += uniformBuffer[int(m[2].z)].a;\r
65     b += uniformBuffer[s.a].a;\r
66     b += uniformBuffer[arr[2]].a;\r
67     b += uniformBuffer[int(um[nu_ii].z)].a;\r
68     b += uniformBuffer[us.a[nu_ii]].a;\r
69     b += uniformBuffer[uarr[nu_ii]].a;\r
70 \r
71     storageBuffer[nu_ii].b = b;\r
72 }\r