Addresses #940.
0:? Sequence
0:8 move second child to first child ( temp int)
0:? 'i' ( temp int)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:8 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'input' ( temp 3-element array of 4-component vector of float)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
0:? Sequence
0:8 move second child to first child ( temp int)
0:? 'i' ( temp int)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:8 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'input' ( temp 3-element array of 4-component vector of float)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
// Module Version 10000
MemberDecorate 26($Global) 1 Offset 64
Decorate 26($Global) Block
Decorate 28 DescriptorSet 0
+ Decorate 68(i) Flat
Decorate 68(i) Location 0
Decorate 72(input) Location 1
Decorate 75(@entryPointOutput) Location 0
0:? Sequence
0:13 move second child to first child ( temp int)
0:? 'sample' ( temp int)
-0:? 'sample' (layout( location=0) in int)
+0:? 'sample' (layout( location=0) flat in int)
0:13 Sequence
0:13 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
0:? 'Color' (layout( location=0) out 4-component vector of float)
0:? 'Depth' ( out float FragDepth)
-0:? 'sample' (layout( location=0) in int)
+0:? 'sample' (layout( location=0) flat in int)
Linked fragment stage:
0:? Sequence
0:13 move second child to first child ( temp int)
0:? 'sample' ( temp int)
-0:? 'sample' (layout( location=0) in int)
+0:? 'sample' (layout( location=0) flat in int)
0:13 Sequence
0:13 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
0:? 'Color' (layout( location=0) out 4-component vector of float)
0:? 'Depth' ( out float FragDepth)
-0:? 'sample' (layout( location=0) in int)
+0:? 'sample' (layout( location=0) flat in int)
// Module Version 10000
// Generated by (magic number): 80001
Name 220 "g_sSamp"
Decorate 23(g_tTex2dmsf4) DescriptorSet 0
Decorate 142(g_tTex2dmsf4a) DescriptorSet 0
+ Decorate 204(sample) Flat
Decorate 204(sample) Location 0
Decorate 211(Color) Location 0
Decorate 215(Depth) BuiltIn FragDepth
0:? 'inDV4' (layout( location=6) in 4-component vector of double)
0:5 move second child to first child ( temp uint)
0:? 'inU1a' ( temp uint)
-0:? 'inU1a' (layout( location=8) in uint)
+0:? 'inU1a' (layout( location=8) flat in uint)
0:5 move second child to first child ( temp uint)
0:? 'inU1b' ( temp uint)
-0:? 'inU1b' (layout( location=9) in uint)
+0:? 'inU1b' (layout( location=9) flat in uint)
0:5 move second child to first child ( temp float)
0:? '@entryPointOutput' (layout( location=0) out float)
0:5 Function Call: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float)
0:? 'inDV2' (layout( location=3) in 2-component vector of double)
0:? 'inDV3' (layout( location=4) in 3-component vector of double)
0:? 'inDV4' (layout( location=6) in 4-component vector of double)
-0:? 'inU1a' (layout( location=8) in uint)
-0:? 'inU1b' (layout( location=9) in uint)
+0:? 'inU1a' (layout( location=8) flat in uint)
+0:? 'inU1b' (layout( location=9) flat in uint)
Linked fragment stage:
0:? 'inDV4' (layout( location=6) in 4-component vector of double)
0:5 move second child to first child ( temp uint)
0:? 'inU1a' ( temp uint)
-0:? 'inU1a' (layout( location=8) in uint)
+0:? 'inU1a' (layout( location=8) flat in uint)
0:5 move second child to first child ( temp uint)
0:? 'inU1b' ( temp uint)
-0:? 'inU1b' (layout( location=9) in uint)
+0:? 'inU1b' (layout( location=9) flat in uint)
0:5 move second child to first child ( temp float)
0:? '@entryPointOutput' (layout( location=0) out float)
0:5 Function Call: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float)
0:? 'inDV2' (layout( location=3) in 2-component vector of double)
0:? 'inDV3' (layout( location=4) in 3-component vector of double)
0:? 'inDV4' (layout( location=6) in 4-component vector of double)
-0:? 'inU1a' (layout( location=8) in uint)
-0:? 'inU1b' (layout( location=9) in uint)
+0:? 'inU1a' (layout( location=8) flat in uint)
+0:? 'inU1b' (layout( location=9) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
Decorate 54(inDV2) Location 3
Decorate 58(inDV3) Location 4
Decorate 62(inDV4) Location 6
+ Decorate 66(inU1a) Flat
Decorate 66(inU1a) Location 8
+ Decorate 69(inU1b) Flat
Decorate 69(inU1b) Location 9
Decorate 72(@entryPointOutput) Location 0
2: TypeVoid
0:? 'inF4' (layout( location=3) in 4-component vector of float)
0:3 move second child to first child ( temp 2-component vector of int)
0:? 'inI2' ( temp 2-component vector of int)
-0:? 'inI2' (layout( location=4) in 2-component vector of int)
+0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
0:3 Function Call: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
0:? 'inF1' ( temp float)
0:? 'inF2' ( temp 2-component vector of float)
0:? 'inF2' (layout( location=1) in 2-component vector of float)
0:? 'inF3' (layout( location=2) in 3-component vector of float)
0:? 'inF4' (layout( location=3) in 4-component vector of float)
-0:? 'inI2' (layout( location=4) in 2-component vector of int)
+0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
Linked fragment stage:
0:? 'inF4' (layout( location=3) in 4-component vector of float)
0:3 move second child to first child ( temp 2-component vector of int)
0:? 'inI2' ( temp 2-component vector of int)
-0:? 'inI2' (layout( location=4) in 2-component vector of int)
+0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
0:3 Function Call: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
0:? 'inF1' ( temp float)
0:? 'inF2' ( temp 2-component vector of float)
0:? 'inF2' (layout( location=1) in 2-component vector of float)
0:? 'inF3' (layout( location=2) in 3-component vector of float)
0:? 'inF4' (layout( location=3) in 4-component vector of float)
-0:? 'inI2' (layout( location=4) in 2-component vector of int)
+0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
// Module Version 10000
// Generated by (magic number): 80001
Decorate 55(inF2) Location 1
Decorate 59(inF3) Location 2
Decorate 63(inF4) Location 3
+ Decorate 67(inI2) Flat
Decorate 67(inI2) Location 4
2: TypeVoid
3: TypeFunction 2
0:? 'inF2' (layout( location=2) in 4-component vector of float)
0:80 move second child to first child ( temp 4-component vector of int)
0:? 'inI0' ( temp 4-component vector of int)
-0:? 'inI0' (layout( location=3) in 4-component vector of int)
+0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
0:80 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:80 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
0:? 'inF0' (layout( location=0) in 4-component vector of float)
0:? 'inF1' (layout( location=1) in 4-component vector of float)
0:? 'inF2' (layout( location=2) in 4-component vector of float)
-0:? 'inI0' (layout( location=3) in 4-component vector of int)
+0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
Linked fragment stage:
0:? 'inF2' (layout( location=2) in 4-component vector of float)
0:80 move second child to first child ( temp 4-component vector of int)
0:? 'inI0' ( temp 4-component vector of int)
-0:? 'inI0' (layout( location=3) in 4-component vector of int)
+0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
0:80 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:80 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
0:? 'inF0' (layout( location=0) in 4-component vector of float)
0:? 'inF1' (layout( location=1) in 4-component vector of float)
0:? 'inF2' (layout( location=2) in 4-component vector of float)
-0:? 'inI0' (layout( location=3) in 4-component vector of int)
+0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
SPIR-V is not generated for failed compile or link
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'a1' ( temp int)
-0:? 'a1' (layout( location=0) in int)
+0:? 'a1' (layout( location=0) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a2' ( temp int)
-0:? 'a2' (layout( location=1) in int)
+0:? 'a2' (layout( location=1) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a3' ( temp int)
-0:? 'a3' (layout( location=2) in int)
+0:? 'a3' (layout( location=2) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a4' ( temp int)
-0:? 'a4' (layout( location=3) in int)
+0:? 'a4' (layout( location=3) flat in int)
0:7 move second child to first child ( temp int)
0:? '@entryPointOutput' (layout( location=0) out int)
0:7 Function Call: @PixelShaderFunction(i1;i1;i1;i1; ( temp int)
0:? 'a4' ( temp int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out int)
-0:? 'a1' (layout( location=0) in int)
-0:? 'a2' (layout( location=1) in int)
-0:? 'a3' (layout( location=2) in int)
-0:? 'a4' (layout( location=3) in int)
+0:? 'a1' (layout( location=0) flat in int)
+0:? 'a2' (layout( location=1) flat in int)
+0:? 'a3' (layout( location=2) flat in int)
+0:? 'a4' (layout( location=3) flat in int)
Linked fragment stage:
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'a1' ( temp int)
-0:? 'a1' (layout( location=0) in int)
+0:? 'a1' (layout( location=0) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a2' ( temp int)
-0:? 'a2' (layout( location=1) in int)
+0:? 'a2' (layout( location=1) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a3' ( temp int)
-0:? 'a3' (layout( location=2) in int)
+0:? 'a3' (layout( location=2) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a4' ( temp int)
-0:? 'a4' (layout( location=3) in int)
+0:? 'a4' (layout( location=3) flat in int)
0:7 move second child to first child ( temp int)
0:? '@entryPointOutput' (layout( location=0) out int)
0:7 Function Call: @PixelShaderFunction(i1;i1;i1;i1; ( temp int)
0:? 'a4' ( temp int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out int)
-0:? 'a1' (layout( location=0) in int)
-0:? 'a2' (layout( location=1) in int)
-0:? 'a3' (layout( location=2) in int)
-0:? 'a4' (layout( location=3) in int)
+0:? 'a1' (layout( location=0) flat in int)
+0:? 'a2' (layout( location=1) flat in int)
+0:? 'a3' (layout( location=2) flat in int)
+0:? 'a4' (layout( location=3) flat in int)
// Module Version 10000
// Generated by (magic number): 80001
Name 49 "param"
Name 51 "param"
Name 53 "param"
+ Decorate 34(a1) Flat
Decorate 34(a1) Location 0
+ Decorate 37(a2) Flat
Decorate 37(a2) Location 1
+ Decorate 40(a3) Flat
Decorate 40(a3) Location 2
+ Decorate 43(a4) Flat
Decorate 43(a4) Location 3
Decorate 46(@entryPointOutput) Location 0
2: TypeVoid
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'i' ( temp int)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:7 Sequence
0:7 move second child to first child ( temp float)
0:7 f: direct index for structure ( temp float)
0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos})
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:? 'input' (layout( location=1) in 3-element array of structure{ temp float f})
0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'i' ( temp int)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:7 Sequence
0:7 move second child to first child ( temp float)
0:7 f: direct index for structure ( temp float)
0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos})
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'i' (layout( location=0) in int)
+0:? 'i' (layout( location=0) flat in int)
0:? 'input' (layout( location=1) in 3-element array of structure{ temp float f})
0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
Name 67 "@entryPointOutput"
Name 68 "param"
Name 70 "param"
+ Decorate 32(i) Flat
Decorate 32(i) Location 0
Decorate 39(input) Location 1
Decorate 48(input_pos) BuiltIn FragCoord
0:? Sequence
0:19 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:19 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:19 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
0:? Sequence
0:19 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:19 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:19 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
Decorate 50(sbuf_a@count) DescriptorSet 0
Decorate 51(sbuf_c) DescriptorSet 0
Decorate 52(sbuf_c@count) DescriptorSet 0
+ Decorate 58(pos) Flat
Decorate 58(pos) Location 0
Decorate 61(@entryPointOutput) Location 0
MemberDecorate 65(sbuf_a@count) 0 Offset 0
0:? Sequence
0:7 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
0:? Sequence
0:7 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
Decorate 22(sbuf_a@count) DescriptorSet 0
Decorate 36(sbuf_c) DescriptorSet 0
Decorate 37(sbuf_c@count) DescriptorSet 0
+ Decorate 48(pos) Flat
Decorate 48(pos) Location 0
Decorate 51(@entryPointOutput) Location 0
Decorate 55(sbuf_unused) DescriptorSet 0
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
MemberDecorate 15(sbuf) 0 Offset 0
Decorate 15(sbuf) BufferBlock
Decorate 17(sbuf) DescriptorSet 0
+ Decorate 80(pos) Flat
Decorate 80(pos) Location 0
Decorate 83(@entryPointOutput) Location 0
2: TypeVoid
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
MemberDecorate 16(sbuf) 0 Offset 0
Decorate 16(sbuf) BufferBlock
Decorate 18(sbuf) DescriptorSet 0
+ Decorate 107(pos) Flat
Decorate 107(pos) Location 0
Decorate 110(@entryPointOutput) Location 0
2: TypeVoid
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
MemberDecorate 30(sbuf) 0 Offset 0
Decorate 30(sbuf) BufferBlock
Decorate 32(sbuf) DescriptorSet 0
+ Decorate 71(pos) Flat
Decorate 71(pos) Location 0
Decorate 74(@entryPointOutput) Location 0
2: TypeVoid
0:? Sequence
0:20 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:20 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:20 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf2@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf3' (layout( binding=12 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 3-component vector of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
0:? Sequence
0:20 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:20 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:20 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf2@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf3' (layout( binding=12 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 3-component vector of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
Decorate 48(sbuf2@count) DescriptorSet 0
Decorate 50(sbuf) DescriptorSet 0
Decorate 50(sbuf) Binding 10
+ Decorate 63(pos) Flat
Decorate 63(pos) Location 0
Decorate 66(@entryPointOutput) Location 0
MemberDecorate 70(sbuf2@count) 0 Offset 0
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:? 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:? 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
MemberDecorate 59(sbuf2) 0 Offset 0
Decorate 59(sbuf2) BufferBlock
Decorate 61(sbuf2) DescriptorSet 0
+ Decorate 89(pos) Flat
Decorate 89(pos) Location 0
Decorate 92(@entryPointOutput) Location 0
2: TypeVoid
0:? Sequence
0:7 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
0:? Sequence
0:7 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
Decorate 34(sbuf_rw_i@count) BufferBlock
Decorate 36(sbuf_rw_i@count) DescriptorSet 0
Decorate 43(sbuf_rw_d@count) DescriptorSet 0
+ Decorate 63(pos) Flat
Decorate 63(pos) Location 0
Decorate 66(@entryPointOutput) Location 0
2: TypeVoid
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
MemberDecorate 30(sbuf) 0 Offset 0
Decorate 30(sbuf) BufferBlock
Decorate 32(sbuf) DescriptorSet 0
+ Decorate 71(pos) Flat
Decorate 71(pos) Location 0
Decorate 74(@entryPointOutput) Location 0
2: TypeVoid
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:? 'pos' (layout( location=0) in uint)
+0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
MemberDecorate 16(sbuf) 0 Offset 0
Decorate 16(sbuf) BufferBlock
Decorate 18(sbuf) DescriptorSet 0
+ Decorate 233(pos) Flat
Decorate 233(pos) Location 0
Decorate 236(@entryPointOutput) Location 0
2: TypeVoid
0:? 'input' (layout( location=0) in 4-component vector of float)
0:2 move second child to first child ( temp int)
0:? 'c' ( temp int)
-0:? 'c' (layout( location=1) in int)
+0:? 'c' (layout( location=1) flat in int)
0:2 move second child to first child ( temp int)
0:? 'd' ( temp int)
-0:? 'd' (layout( location=2) in int)
+0:? 'd' (layout( location=2) flat in int)
0:2 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:2 Function Call: @PixelShaderFunction(vf4;i1;i1; ( temp 4-component vector of float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:? 'c' (layout( location=1) in int)
-0:? 'd' (layout( location=2) in int)
+0:? 'c' (layout( location=1) flat in int)
+0:? 'd' (layout( location=2) flat in int)
Linked fragment stage:
0:? 'input' (layout( location=0) in 4-component vector of float)
0:2 move second child to first child ( temp int)
0:? 'c' ( temp int)
-0:? 'c' (layout( location=1) in int)
+0:? 'c' (layout( location=1) flat in int)
0:2 move second child to first child ( temp int)
0:? 'd' ( temp int)
-0:? 'd' (layout( location=2) in int)
+0:? 'd' (layout( location=2) flat in int)
0:2 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:2 Function Call: @PixelShaderFunction(vf4;i1;i1; ( temp 4-component vector of float)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
-0:? 'c' (layout( location=1) in int)
-0:? 'd' (layout( location=2) in int)
+0:? 'c' (layout( location=1) flat in int)
+0:? 'd' (layout( location=2) flat in int)
// Module Version 10000
// Generated by (magic number): 80001
Name 101 "param"
Name 103 "param"
Decorate 88(input) Location 0
+ Decorate 92(c) Flat
Decorate 92(c) Location 1
+ Decorate 95(d) Flat
Decorate 95(d) Location 2
Decorate 98(@entryPointOutput) Location 0
2: TypeVoid
#else
virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble; }
#endif
-
+ virtual bool isIntegerDomain() const
+ {
+ switch (basicType) {
+ case EbtInt:
+ case EbtUint:
+ case EbtInt64:
+ case EbtUint64:
+#ifdef AMD_EXTENSIONS
+ case EbtInt16:
+ case EbtUint16:
+#endif
+ case EbtBool:
+ case EbtAtomicUint:
+ return true;
+ }
+ return false;
+ }
virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint; }
// "Image" is a superset of "Subpass"
}
// Variables that correspond to the user-interface in and out of a stage
-// (not the built-in interface) are assigned locations and
-// registered as a linkage node (part of the stage's external interface).
-//
+// (not the built-in interface) are
+// - assigned locations
+// - corrected for interpolation
+// * non-floating point values must be nointerpolation
+// - registered as a linkage node (part of the stage's external interface).
// Assumes it is called in the order in which locations should be assigned.
-void HlslParseContext::assignLocations(TVariable& variable)
+void HlslParseContext::assignToInterface(TVariable& variable)
{
const auto assignLocation = [&](TVariable& variable) {
- const TType& type = variable.getType();
- const TQualifier& qualifier = type.getQualifier();
+ TType& type = variable.getWritableType();
+ TQualifier& qualifier = type.getQualifier();
if (qualifier.storage == EvqVaryingIn || qualifier.storage == EvqVaryingOut) {
if (qualifier.builtIn == EbvNone) {
// Strip off the outer array dimension for those having an extra one.
nextOutLocation += size;
}
}
-
+ // Going into the fragment stage, integer-based stuff must be flat/nointerpolation
+ if (type.isIntegerDomain() && qualifier.builtIn == EbvNone &&
+ qualifier.storage == EvqVaryingIn && language == EShLangFragment) {
+ qualifier.clearInterpolation();
+ qualifier.flat = true;
+ }
trackLinkage(variable);
}
};
// ret = @shaderEntryPoint(args...);
// oargs = args<that are output>...;
// }
+// retType @shaderEntryPoint(args...)
+// { body }
//
// The symbol table will still map the original entry point name to the
-// the modified function and it's new name:
+// the modified function and its new name:
//
// symbol table: shaderEntryPoint -> @shaderEntryPoint
//
split(variable);
}
- assignLocations(variable);
+ assignToInterface(variable);
};
if (entryPointOutput)
makeVariableInOut(*entryPointOutput);
for (int i = 0; i < userFunction.getParamCount(); i++) {
TParameter& param = userFunction[i];
argVars.push_back(makeInternalVariable(*param.name, *param.type));
-
argVars.back()->getWritableType().getQualifier().makeTemporary();
-
TIntermSymbol* arg = intermediate.addSymbol(*argVars.back());
-
handleFunctionArgument(&callee, callingArgs, arg);
if (param.type->getQualifier().isParamInput()) {
intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg,
} else {
returnAssign = handleAssign(loc, EOpAssign, intermediate.addSymbol(*entryPointOutput), callReturn);
}
-
intermediate.growAggregate(synthBody, returnAssign);
} else
intermediate.growAggregate(synthBody, callReturn);
if (pcfOutput->getType().containsBuiltInInterstageIO(language))
split(*pcfOutput);
- assignLocations(*pcfOutput);
+ assignToInterface(*pcfOutput);
TIntermSymbol* pcfOutputSym = intermediate.addSymbol(*pcfOutput, loc);
TIntermTyped* handleUnaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* childNode);
TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field);
bool isBuiltInMethod(const TSourceLoc&, TIntermTyped* base, const TString& field);
- void assignLocations(TVariable& variable);
+ void assignToInterface(TVariable& variable);
void handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype);
TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&, const TAttributeMap&, TIntermNode*& entryPointTree);
TIntermNode* transformEntryPoint(const TSourceLoc&, TFunction&, const TAttributeMap&);