1617a3babSopenharmony_ci#version 450
2617a3babSopenharmony_ci
3617a3babSopenharmony_ci#extension GL_EXT_nonuniform_qualifier : enable
4617a3babSopenharmony_ci
5617a3babSopenharmony_cilayout(location=0) nonuniformEXT in vec4 nu_inv4;
6617a3babSopenharmony_cinonuniformEXT float nu_gf;
7617a3babSopenharmony_cilayout(location=1) in nonuniformEXT flat int nu_ii;
8617a3babSopenharmony_cilayout(location = 2) in vec2 inTexcoord;
9617a3babSopenharmony_ci
10617a3babSopenharmony_cilayout(binding=0, input_attachment_index = 0) uniform subpassInput        inputAttachmentDyn[];
11617a3babSopenharmony_cilayout(binding=1)                             uniform samplerBuffer       uniformTexelBufferDyn[];
12617a3babSopenharmony_cilayout(binding=2, r32f)                       uniform imageBuffer         storageTexelBufferDyn[];
13617a3babSopenharmony_cilayout(binding=3)                             uniform uname { float a; }  uniformBuffer[];
14617a3babSopenharmony_cilayout(binding=4)                             buffer  bname { float b; }  storageBuffer[];
15617a3babSopenharmony_cilayout(binding=5)                             uniform sampler2D           sampledImage[];
16617a3babSopenharmony_cilayout(binding=6, r32f)                       uniform image2D             storageImage[];
17617a3babSopenharmony_cilayout(binding=7, input_attachment_index = 1) uniform subpassInput        inputAttachment[];
18617a3babSopenharmony_cilayout(binding=8)                             uniform samplerBuffer       uniformTexelBuffer[];
19617a3babSopenharmony_cilayout(binding=9, r32f)                       uniform imageBuffer         storageTexelBuffer[];
20617a3babSopenharmony_cilayout(binding = 10)                          uniform texture2D           uniformTexArr[8];
21617a3babSopenharmony_cilayout(binding = 11)                          uniform sampler             uniformSampler;
22617a3babSopenharmony_ci
23617a3babSopenharmony_cinonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f)
24617a3babSopenharmony_ci{
25617a3babSopenharmony_ci    return nupi;
26617a3babSopenharmony_ci}
27617a3babSopenharmony_ci
28617a3babSopenharmony_civoid main()
29617a3babSopenharmony_ci{
30617a3babSopenharmony_ci    nonuniformEXT int nu_li;
31617a3babSopenharmony_ci    nonuniformEXT int nu_li2;
32617a3babSopenharmony_ci    int dyn_i;
33617a3babSopenharmony_ci
34617a3babSopenharmony_ci    int a = foo(nu_li, nu_li);
35617a3babSopenharmony_ci    nu_li = nonuniformEXT(a) + nonuniformEXT(a * 2);
36617a3babSopenharmony_ci    nu_li2 = a + nonuniformEXT(a * 2);
37617a3babSopenharmony_ci
38617a3babSopenharmony_ci    float b;
39617a3babSopenharmony_ci    b = nu_inv4.x * nu_gf;
40617a3babSopenharmony_ci    b += subpassLoad(inputAttachmentDyn[dyn_i]).x;
41617a3babSopenharmony_ci    b += texelFetch(uniformTexelBufferDyn[dyn_i], 1).x;
42617a3babSopenharmony_ci    b += imageLoad(storageTexelBufferDyn[dyn_i], 1).x;
43617a3babSopenharmony_ci    b += uniformBuffer[nu_ii].a;
44617a3babSopenharmony_ci    b += storageBuffer[nu_ii].b;
45617a3babSopenharmony_ci    b += texture(sampledImage[nu_ii], vec2(0.5)).x;
46617a3babSopenharmony_ci    b += imageLoad(storageImage[nu_ii], ivec2(1)).x;
47617a3babSopenharmony_ci    b += subpassLoad(inputAttachment[nu_ii]).x;
48617a3babSopenharmony_ci    b += texelFetch(uniformTexelBuffer[nu_ii], 1).x;
49617a3babSopenharmony_ci    b += imageLoad(storageTexelBuffer[nu_ii], 1).x;
50617a3babSopenharmony_ci    b += texture(sampler2D(uniformTexArr[nu_ii], uniformSampler), inTexcoord.xy).x;
51617a3babSopenharmony_ci    b += texture(nonuniformEXT(sampler2D(uniformTexArr[nu_ii], uniformSampler)), inTexcoord.xy).x;
52617a3babSopenharmony_ci
53617a3babSopenharmony_ci    nonuniformEXT ivec4 v;
54617a3babSopenharmony_ci    nonuniformEXT mat4 m;
55617a3babSopenharmony_ci    nonuniformEXT struct S { int a; } s;
56617a3babSopenharmony_ci    nonuniformEXT int arr[10];
57617a3babSopenharmony_ci    ivec4 uv;
58617a3babSopenharmony_ci    mat4 um;
59617a3babSopenharmony_ci    struct US { int a[10]; } us;
60617a3babSopenharmony_ci    int uarr[10];
61617a3babSopenharmony_ci    b += uniformBuffer[v.y].a;
62617a3babSopenharmony_ci    b += uniformBuffer[v[2]].a;
63617a3babSopenharmony_ci    b += uniformBuffer[uv[nu_ii]].a;
64617a3babSopenharmony_ci    b += uniformBuffer[int(m[2].z)].a;
65617a3babSopenharmony_ci    b += uniformBuffer[s.a].a;
66617a3babSopenharmony_ci    b += uniformBuffer[arr[2]].a;
67617a3babSopenharmony_ci    b += uniformBuffer[int(um[nu_ii].z)].a;
68617a3babSopenharmony_ci    b += uniformBuffer[us.a[nu_ii]].a;
69617a3babSopenharmony_ci    b += uniformBuffer[uarr[nu_ii]].a;
70617a3babSopenharmony_ci
71617a3babSopenharmony_ci    storageBuffer[nu_ii].b = b;
72617a3babSopenharmony_ci}
73