1#version 450 2 3#extension GL_EXT_nonuniform_qualifier : enable 4 5layout(location=0) nonuniformEXT in vec4 nu_inv4; 6nonuniformEXT float nu_gf; 7layout(location=1) in nonuniformEXT flat int nu_ii; 8 9layout(binding=0, input_attachment_index = 0) uniform subpassInput inputAttachmentDyn[]; 10layout(binding=1) uniform samplerBuffer uniformTexelBufferDyn[]; 11layout(binding=2, r32f) uniform imageBuffer storageTexelBufferDyn[]; 12layout(binding=3) uniform uname { float a; } uniformBuffer[]; 13layout(binding=4) buffer bname { float b; } storageBuffer[]; 14layout(binding=5) uniform sampler2D sampledImage[]; 15layout(binding=6, r32f) uniform image2D storageImage[]; 16layout(binding=7, input_attachment_index = 1) uniform subpassInput inputAttachment[]; 17layout(binding=8) uniform samplerBuffer uniformTexelBuffer[]; 18layout(binding=9, r32f) uniform imageBuffer storageTexelBuffer[]; 19 20nonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f) 21{ 22 return nupi; 23} 24 25void main() 26{ 27 nonuniformEXT int nu_li; 28 int dyn_i; 29 30 int a = foo(nu_li, nu_li); 31 nu_li = nonuniformEXT(a) + nonuniformEXT(a * 2); 32 33 float b; 34 b = nu_inv4.x * nu_gf; 35 b += subpassLoad(inputAttachmentDyn[dyn_i]).x; 36 b += texelFetch(uniformTexelBufferDyn[dyn_i], 1).x; 37 b += imageLoad(storageTexelBufferDyn[dyn_i], 1).x; 38 b += uniformBuffer[nu_ii].a; 39 b += storageBuffer[nu_ii].b; 40 b += texture(sampledImage[nu_ii], vec2(0.5)).x; 41 b += imageLoad(storageImage[nu_ii], ivec2(1)).x; 42 b += subpassLoad(inputAttachment[nu_ii]).x; 43 b += texelFetch(uniformTexelBuffer[nu_ii], 1).x; 44 b += imageLoad(storageTexelBuffer[nu_ii], 1).x; 45 46 nonuniformEXT ivec4 v; 47 nonuniformEXT mat4 m; 48 nonuniformEXT struct S { int a; } s; 49 ivec4 uv; 50 b += uniformBuffer[v.y].a; 51 b += uniformBuffer[v[2]].a; 52 b += uniformBuffer[uv[nu_ii]].a; 53 b += uniformBuffer[int(m[2].z)].a; 54 b += uniformBuffer[s.a].a; 55} 56