HLSL: Force flat (nointerp) onto integer fragment inputs.
authorJohn Kessenich <cepheus@frii.com>
Tue, 20 Jun 2017 09:20:59 +0000 (03:20 -0600)
committerJohn Kessenich <cepheus@frii.com>
Tue, 20 Jun 2017 09:20:59 +0000 (03:20 -0600)
Addresses #940.

21 files changed:
Test/baseResults/hlsl.array.frag.out
Test/baseResults/hlsl.getsampleposition.dx10.frag.out
Test/baseResults/hlsl.intrinsics.double.frag.out
Test/baseResults/hlsl.intrinsics.evalfns.frag.out
Test/baseResults/hlsl.intrinsics.negative.frag.out
Test/baseResults/hlsl.precedence2.frag.out
Test/baseResults/hlsl.struct.split.assign.frag.out
Test/baseResults/hlsl.structbuffer.append.fn.frag.out
Test/baseResults/hlsl.structbuffer.append.frag.out
Test/baseResults/hlsl.structbuffer.atomics.frag.out
Test/baseResults/hlsl.structbuffer.byte.frag.out
Test/baseResults/hlsl.structbuffer.coherent.frag.out
Test/baseResults/hlsl.structbuffer.fn.frag.out
Test/baseResults/hlsl.structbuffer.frag.out
Test/baseResults/hlsl.structbuffer.incdec.frag.out
Test/baseResults/hlsl.structbuffer.rw.frag.out
Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
Test/baseResults/hlsl.switch.frag.out
glslang/Include/Types.h
hlsl/hlslParseHelper.cpp
hlsl/hlslParseHelper.h

index c0c5a13..52008e3 100755 (executable)
@@ -57,7 +57,7 @@ gl_FragCoord origin is upper left
 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)
@@ -69,7 +69,7 @@ gl_FragCoord origin is upper left
 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)
 
 
@@ -134,7 +134,7 @@ gl_FragCoord origin is upper left
 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)
@@ -146,7 +146,7 @@ gl_FragCoord origin is upper left
 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
@@ -185,6 +185,7 @@ gl_FragCoord origin is upper left
                               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
index d8274fa..3f346d4 100644 (file)
@@ -260,7 +260,7 @@ gl_FragCoord origin is upper left
 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})
@@ -284,7 +284,7 @@ gl_FragCoord origin is upper left
 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:
@@ -551,7 +551,7 @@ gl_FragCoord origin is upper left
 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})
@@ -575,7 +575,7 @@ gl_FragCoord origin is upper left
 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
@@ -619,6 +619,7 @@ gl_FragCoord origin is upper left
                               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
index f08775a..3f34081 100644 (file)
@@ -53,10 +53,10 @@ gl_FragCoord origin is upper left
 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)
@@ -76,8 +76,8 @@ gl_FragCoord origin is upper left
 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:
@@ -137,10 +137,10 @@ gl_FragCoord origin is upper left
 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)
@@ -160,8 +160,8 @@ gl_FragCoord origin is upper left
 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
@@ -217,7 +217,9 @@ gl_FragCoord origin is upper left
                               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
index 90a4db5..50da716 100644 (file)
@@ -60,7 +60,7 @@ gl_FragCoord origin is upper left
 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)
@@ -72,7 +72,7 @@ gl_FragCoord origin is upper left
 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:
@@ -139,7 +139,7 @@ gl_FragCoord origin is upper left
 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)
@@ -151,7 +151,7 @@ gl_FragCoord origin is upper left
 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
@@ -190,6 +190,7 @@ gl_FragCoord origin is upper left
                               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
index 68dd4c3..980cc96 100644 (file)
@@ -374,7 +374,7 @@ ERROR: node is still EOpNull!
 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)
@@ -518,7 +518,7 @@ ERROR: node is still EOpNull!
 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:
@@ -837,7 +837,7 @@ ERROR: node is still EOpNull!
 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)
@@ -981,6 +981,6 @@ ERROR: node is still EOpNull!
 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
index 31e76c3..cd223a6 100755 (executable)
@@ -30,16 +30,16 @@ gl_FragCoord origin is upper left
 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)
@@ -49,10 +49,10 @@ gl_FragCoord origin is upper left
 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:
@@ -89,16 +89,16 @@ gl_FragCoord origin is upper left
 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)
@@ -108,10 +108,10 @@ gl_FragCoord origin is upper left
 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
@@ -142,9 +142,13 @@ gl_FragCoord origin is upper left
                               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
index 2228a8a..7bce9c9 100644 (file)
@@ -20,7 +20,7 @@ gl_FragCoord origin is upper left
 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)
@@ -110,7 +110,7 @@ gl_FragCoord origin is upper left
 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)
 
@@ -139,7 +139,7 @@ gl_FragCoord origin is upper left
 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)
@@ -229,7 +229,7 @@ gl_FragCoord origin is upper left
 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)
 
@@ -261,6 +261,7 @@ gl_FragCoord origin is upper left
                               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
index 4872478..039d4e0 100644 (file)
@@ -58,7 +58,7 @@ gl_FragCoord origin is upper left
 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)
@@ -70,7 +70,7 @@ gl_FragCoord origin is upper left
 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:
@@ -135,7 +135,7 @@ gl_FragCoord origin is upper left
 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)
@@ -147,7 +147,7 @@ gl_FragCoord origin is upper left
 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
@@ -192,6 +192,7 @@ gl_FragCoord origin is upper left
                               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
index 323e960..8f63efe 100644 (file)
@@ -45,7 +45,7 @@ gl_FragCoord origin is upper left
 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)
@@ -57,7 +57,7 @@ gl_FragCoord origin is upper left
 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:
@@ -109,7 +109,7 @@ gl_FragCoord origin is upper left
 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)
@@ -121,7 +121,7 @@ gl_FragCoord origin is upper left
 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
@@ -158,6 +158,7 @@ gl_FragCoord origin is upper left
                               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
index c3a3f87..04d780f 100644 (file)
@@ -224,7 +224,7 @@ gl_FragCoord origin is upper left
 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)
@@ -232,7 +232,7 @@ gl_FragCoord origin is upper left
 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:
@@ -463,7 +463,7 @@ gl_FragCoord origin is upper left
 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)
@@ -471,7 +471,7 @@ gl_FragCoord origin is upper left
 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
@@ -498,6 +498,7 @@ gl_FragCoord origin is upper left
                               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
index 6541946..c5d5dc3 100644 (file)
@@ -149,7 +149,7 @@ gl_FragCoord origin is upper left
 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)
@@ -157,7 +157,7 @@ gl_FragCoord origin is upper left
 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:
@@ -313,7 +313,7 @@ gl_FragCoord origin is upper left
 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)
@@ -321,7 +321,7 @@ gl_FragCoord origin is upper left
 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
@@ -352,6 +352,7 @@ gl_FragCoord origin is upper left
                               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
index fab95f7..c3e5e73 100644 (file)
@@ -74,7 +74,7 @@ gl_FragCoord origin is upper left
 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)
@@ -83,7 +83,7 @@ gl_FragCoord origin is upper left
 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:
@@ -164,7 +164,7 @@ gl_FragCoord origin is upper left
 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)
@@ -173,7 +173,7 @@ gl_FragCoord origin is upper left
 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
@@ -217,6 +217,7 @@ gl_FragCoord origin is upper left
                               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
index 0fcdab3..63aaa62 100644 (file)
@@ -53,7 +53,7 @@ gl_FragCoord origin is upper left
 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)
@@ -64,7 +64,7 @@ gl_FragCoord origin is upper left
 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:
@@ -124,7 +124,7 @@ gl_FragCoord origin is upper left
 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)
@@ -135,7 +135,7 @@ gl_FragCoord origin is upper left
 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
@@ -192,6 +192,7 @@ gl_FragCoord origin is upper left
                               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
index 72fba3b..d13b975 100644 (file)
@@ -80,7 +80,7 @@ gl_FragCoord origin is upper left
 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)
@@ -89,7 +89,7 @@ gl_FragCoord origin is upper left
 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:
@@ -176,7 +176,7 @@ gl_FragCoord origin is upper left
 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)
@@ -185,7 +185,7 @@ gl_FragCoord origin is upper left
 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
@@ -238,6 +238,7 @@ gl_FragCoord origin is upper left
                               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
index ebd6941..6584210 100644 (file)
@@ -85,7 +85,7 @@ gl_FragCoord origin is upper left
 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)
@@ -97,7 +97,7 @@ gl_FragCoord origin is upper left
 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:
@@ -189,7 +189,7 @@ gl_FragCoord origin is upper left
 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)
@@ -201,7 +201,7 @@ gl_FragCoord origin is upper left
 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
@@ -242,6 +242,7 @@ gl_FragCoord origin is upper left
                               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
index b1bba58..6d529dd 100644 (file)
@@ -74,7 +74,7 @@ gl_FragCoord origin is upper left
 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)
@@ -83,7 +83,7 @@ gl_FragCoord origin is upper left
 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:
@@ -164,7 +164,7 @@ gl_FragCoord origin is upper left
 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)
@@ -173,7 +173,7 @@ gl_FragCoord origin is upper left
 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
@@ -213,6 +213,7 @@ gl_FragCoord origin is upper left
                               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
index 14c2eb6..80bc107 100644 (file)
@@ -490,7 +490,7 @@ gl_FragCoord origin is upper left
 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)
@@ -498,7 +498,7 @@ gl_FragCoord origin is upper left
 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:
@@ -995,7 +995,7 @@ gl_FragCoord origin is upper left
 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)
@@ -1003,7 +1003,7 @@ gl_FragCoord origin is upper left
 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
@@ -1037,6 +1037,7 @@ gl_FragCoord origin is upper left
                               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
index c77da93..192e1b4 100755 (executable)
@@ -129,10 +129,10 @@ gl_FragCoord origin is upper left
 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)
@@ -142,8 +142,8 @@ gl_FragCoord origin is upper left
 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:
@@ -279,10 +279,10 @@ gl_FragCoord origin is upper left
 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)
@@ -292,8 +292,8 @@ gl_FragCoord origin is upper left
 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
@@ -321,7 +321,9 @@ gl_FragCoord origin is upper left
                               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
index 16d8932..faefd47 100644 (file)
@@ -1338,7 +1338,23 @@ public:
 #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"
index acf6c2f..bd3994d 100755 (executable)
@@ -1525,15 +1525,17 @@ void HlslParseContext::fixBuiltInIoType(TType& type)
 }
 
 // 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.
@@ -1552,7 +1554,12 @@ void HlslParseContext::assignLocations(TVariable& variable)
                     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);
         }
     };
@@ -1914,9 +1921,11 @@ void HlslParseContext::handleEntryPointAttributes(const TSourceLoc& loc, const T
 //        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
 //
@@ -1966,7 +1975,7 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
                 split(variable);
         }
 
-        assignLocations(variable);
+        assignToInterface(variable);
     };
     if (entryPointOutput)
         makeVariableInOut(*entryPointOutput);
@@ -2012,11 +2021,8 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
     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,
@@ -2062,7 +2068,6 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
         } else {
             returnAssign = handleAssign(loc, EOpAssign, intermediate.addSymbol(*entryPointOutput), callReturn);
         }
-        
         intermediate.growAggregate(synthBody, returnAssign);
     } else
         intermediate.growAggregate(synthBody, callReturn);
@@ -8835,7 +8840,7 @@ void HlslParseContext::addPatchConstantInvocation()
         if (pcfOutput->getType().containsBuiltInInterstageIO(language))
             split(*pcfOutput);
 
-        assignLocations(*pcfOutput);
+        assignToInterface(*pcfOutput);
 
         TIntermSymbol* pcfOutputSym = intermediate.addSymbol(*pcfOutput, loc);
 
index 9a881fb..73e21c8 100755 (executable)
@@ -77,7 +77,7 @@ public:
     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&);