HLSL: Improve setting and testing of interpolation qualifiers.
Notably, use of 'linear' on a non-input could mark it as an input.
This commit is contained in:
		
							parent
							
								
									d21baed6bc
								
							
						
					
					
						commit
						34e7ee79bb
					
				| @ -6,9 +6,10 @@ WARNING: 0:30: 'register' : ignoring shader_profile | ||||
| Shader version: 450 | ||||
| gl_FragCoord origin is upper left | ||||
| 0:? Sequence | ||||
| 0:34  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) | ||||
| 0:34  Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (global 4-component vector of float) | ||||
| 0:34    Function Parameters:  | ||||
| 0:34      'input' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:34      's' (in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) | ||||
| 0:?     Sequence | ||||
| 0:39      Compare Equal (temp bool) | ||||
| 0:39        's3' (temp structure{temp 3-component vector of bool b3}) | ||||
| @ -18,10 +19,7 @@ gl_FragCoord origin is upper left | ||||
| 0:40          's2' (global structure{temp 4-component vector of float i}) | ||||
| 0:40          Constant: | ||||
| 0:40            0 (const int) | ||||
| 0:40        ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float) | ||||
| 0:40          's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) | ||||
| 0:40          Constant: | ||||
| 0:40            7 (const int) | ||||
| 0:?         'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) | ||||
| 0:42      Sequence | ||||
| 0:42        move second child to first child (temp 4-component vector of float) | ||||
| 0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) | ||||
| @ -30,11 +28,18 @@ gl_FragCoord origin is upper left | ||||
| 0:?   Linker Objects | ||||
| 0:?     's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d}) | ||||
| 0:?     's2' (global structure{temp 4-component vector of float i}) | ||||
| 0:?     's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) | ||||
| 0:?     'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float) | ||||
| 0:?     'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float) | ||||
| 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) | ||||
| 0:?     'input' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:?     'a' (layout(location=1 ) smooth in 4-component vector of float) | ||||
| 0:?     'b' (layout(location=2 ) flat in bool) | ||||
| 0:?     'c' (layout(location=3 ) centroid noperspective in 1-component vector of float) | ||||
| 0:?     'd' (layout(location=4 ) centroid sample in 2-component vector of float) | ||||
| 0:?     'ff1' (in bool Face) | ||||
| 0:?     'ff2' (layout(location=5 offset=4 ) in bool) | ||||
| 0:?     'ff3' (layout(location=6 binding=0 offset=4 ) in bool) | ||||
| 0:?     'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) | ||||
| 
 | ||||
| 
 | ||||
| Linked fragment stage: | ||||
| @ -43,9 +48,10 @@ Linked fragment stage: | ||||
| Shader version: 450 | ||||
| gl_FragCoord origin is upper left | ||||
| 0:? Sequence | ||||
| 0:34  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float) | ||||
| 0:34  Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (global 4-component vector of float) | ||||
| 0:34    Function Parameters:  | ||||
| 0:34      'input' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:34      's' (in structure{smooth temp 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) | ||||
| 0:?     Sequence | ||||
| 0:39      Compare Equal (temp bool) | ||||
| 0:39        's3' (temp structure{temp 3-component vector of bool b3}) | ||||
| @ -55,10 +61,7 @@ gl_FragCoord origin is upper left | ||||
| 0:40          's2' (global structure{temp 4-component vector of float i}) | ||||
| 0:40          Constant: | ||||
| 0:40            0 (const int) | ||||
| 0:40        ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float) | ||||
| 0:40          's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) | ||||
| 0:40          Constant: | ||||
| 0:40            7 (const int) | ||||
| 0:?         'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) | ||||
| 0:42      Sequence | ||||
| 0:42        move second child to first child (temp 4-component vector of float) | ||||
| 0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) | ||||
| @ -67,20 +70,27 @@ gl_FragCoord origin is upper left | ||||
| 0:?   Linker Objects | ||||
| 0:?     's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d}) | ||||
| 0:?     's2' (global structure{temp 4-component vector of float i}) | ||||
| 0:?     's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4}) | ||||
| 0:?     'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float) | ||||
| 0:?     'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float) | ||||
| 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float) | ||||
| 0:?     'input' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:?     'a' (layout(location=1 ) smooth in 4-component vector of float) | ||||
| 0:?     'b' (layout(location=2 ) flat in bool) | ||||
| 0:?     'c' (layout(location=3 ) centroid noperspective in 1-component vector of float) | ||||
| 0:?     'd' (layout(location=4 ) centroid sample in 2-component vector of float) | ||||
| 0:?     'ff1' (in bool Face) | ||||
| 0:?     'ff2' (layout(location=5 offset=4 ) in bool) | ||||
| 0:?     'ff3' (layout(location=6 binding=0 offset=4 ) in bool) | ||||
| 0:?     'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float) | ||||
| 
 | ||||
| // Module Version 10000 | ||||
| // Generated by (magic number): 80001 | ||||
| // Id's are bound by 46 | ||||
| // Id's are bound by 52 | ||||
| 
 | ||||
|                               Capability Shader | ||||
|                1:             ExtInstImport  "GLSL.std.450" | ||||
|                               MemoryModel Logical GLSL450 | ||||
|                               EntryPoint Fragment 4  "PixelShaderFunction" 34 36 | ||||
|                               EntryPoint Fragment 4  "PixelShaderFunction" 25 30 31 41 43 45 48 49 50 51 | ||||
|                               ExecutionMode 4 OriginUpperLeft | ||||
|                               Name 4  "PixelShaderFunction" | ||||
|                               Name 8  "FS" | ||||
| @ -89,33 +99,47 @@ gl_FragCoord origin is upper left | ||||
|                               Name 19  "" | ||||
|                               MemberName 19 0  "i" | ||||
|                               Name 21  "s2" | ||||
|                               Name 25  "" | ||||
|                               MemberName 25 0  "a" | ||||
|                               MemberName 25 1  "b" | ||||
|                               MemberName 25 2  "c" | ||||
|                               MemberName 25 3  "d" | ||||
|                               MemberName 25 4  "ff1" | ||||
|                               MemberName 25 5  "ff2" | ||||
|                               MemberName 25 6  "ff3" | ||||
|                               MemberName 25 7  "ff4" | ||||
|                               Name 27  "s4" | ||||
|                               Name 34  "@entryPointOutput" | ||||
|                               Name 36  "input" | ||||
|                               Name 39  "myS" | ||||
|                               MemberName 39(myS) 0  "b" | ||||
|                               MemberName 39(myS) 1  "c" | ||||
|                               MemberName 39(myS) 2  "a" | ||||
|                               MemberName 39(myS) 3  "d" | ||||
|                               Name 41  "s1" | ||||
|                               Name 44  "ff5" | ||||
|                               Name 45  "ff6" | ||||
|                               MemberDecorate 25 4 BuiltIn FrontFacing | ||||
|                               Decorate 34(@entryPointOutput) Location 0 | ||||
|                               Decorate 36(input) Location 0 | ||||
|                               Decorate 44(ff5) Offset 20 | ||||
|                               Decorate 44(ff5) Binding 5 | ||||
|                               Decorate 45(ff6) Offset 36 | ||||
|                               Decorate 45(ff6) Binding 8 | ||||
|                               Name 25  "ff4" | ||||
|                               Name 30  "@entryPointOutput" | ||||
|                               Name 31  "input" | ||||
|                               Name 34  "myS" | ||||
|                               MemberName 34(myS) 0  "b" | ||||
|                               MemberName 34(myS) 1  "c" | ||||
|                               MemberName 34(myS) 2  "a" | ||||
|                               MemberName 34(myS) 3  "d" | ||||
|                               Name 36  "s1" | ||||
|                               Name 39  "ff5" | ||||
|                               Name 40  "ff6" | ||||
|                               Name 41  "a" | ||||
|                               Name 43  "b" | ||||
|                               Name 45  "c" | ||||
|                               Name 48  "d" | ||||
|                               Name 49  "ff1" | ||||
|                               Name 50  "ff2" | ||||
|                               Name 51  "ff3" | ||||
|                               Decorate 25(ff4) Offset 4 | ||||
|                               Decorate 25(ff4) Location 7 | ||||
|                               Decorate 25(ff4) Binding 0 | ||||
|                               Decorate 30(@entryPointOutput) Location 0 | ||||
|                               Decorate 31(input) Location 0 | ||||
|                               Decorate 39(ff5) Offset 20 | ||||
|                               Decorate 39(ff5) Binding 5 | ||||
|                               Decorate 40(ff6) Offset 36 | ||||
|                               Decorate 40(ff6) Binding 8 | ||||
|                               Decorate 41(a) Location 1 | ||||
|                               Decorate 43(b) Flat | ||||
|                               Decorate 43(b) Location 2 | ||||
|                               Decorate 45(c) NoPerspective | ||||
|                               Decorate 45(c) Centroid | ||||
|                               Decorate 45(c) Location 3 | ||||
|                               Decorate 48(d) Centroid | ||||
|                               Decorate 48(d) Location 4 | ||||
|                               Decorate 49(ff1) BuiltIn FrontFacing | ||||
|                               Decorate 50(ff2) Offset 4 | ||||
|                               Decorate 50(ff2) Location 5 | ||||
|                               Decorate 51(ff3) Offset 4 | ||||
|                               Decorate 51(ff3) Location 6 | ||||
|                               Decorate 51(ff3) Binding 0 | ||||
|                2:             TypeVoid | ||||
|                3:             TypeFunction 2 | ||||
|                6:             TypeBool | ||||
| @ -129,23 +153,30 @@ gl_FragCoord origin is upper left | ||||
|           21(s2):     20(ptr) Variable Private | ||||
|               22:             TypeInt 32 1 | ||||
|               23:     22(int) Constant 0 | ||||
|               24:             TypeVector 17(float) 2 | ||||
|               25:             TypeStruct 18(fvec4) 6(bool) 17(float) 24(fvec2) 6(bool) 6(bool) 6(bool) 18(fvec4) | ||||
|               26:             TypePointer Private 25(struct) | ||||
|           27(s4):     26(ptr) Variable Private | ||||
|               28:     22(int) Constant 7 | ||||
|               29:             TypePointer Private 18(fvec4) | ||||
|               33:             TypePointer Output 18(fvec4) | ||||
| 34(@entryPointOutput):     33(ptr) Variable Output | ||||
|               35:             TypePointer Input 18(fvec4) | ||||
|        36(input):     35(ptr) Variable Input | ||||
|          39(myS):             TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4) | ||||
|               40:             TypePointer Private 39(myS) | ||||
|           41(s1):     40(ptr) Variable Private | ||||
|               42:             TypeVector 17(float) 3 | ||||
|               43:             TypePointer Private 42(fvec3) | ||||
|          44(ff5):     43(ptr) Variable Private | ||||
|          45(ff6):     43(ptr) Variable Private | ||||
|               24:             TypePointer Input 18(fvec4) | ||||
|          25(ff4):     24(ptr) Variable Input | ||||
|               27:             TypePointer Private 18(fvec4) | ||||
|               29:             TypePointer Output 18(fvec4) | ||||
| 30(@entryPointOutput):     29(ptr) Variable Output | ||||
|        31(input):     24(ptr) Variable Input | ||||
|          34(myS):             TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4) | ||||
|               35:             TypePointer Private 34(myS) | ||||
|           36(s1):     35(ptr) Variable Private | ||||
|               37:             TypeVector 17(float) 3 | ||||
|               38:             TypePointer Private 37(fvec3) | ||||
|          39(ff5):     38(ptr) Variable Private | ||||
|          40(ff6):     38(ptr) Variable Private | ||||
|            41(a):     24(ptr) Variable Input | ||||
|               42:             TypePointer Input 6(bool) | ||||
|            43(b):     42(ptr) Variable Input | ||||
|               44:             TypePointer Input 17(float) | ||||
|            45(c):     44(ptr) Variable Input | ||||
|               46:             TypeVector 17(float) 2 | ||||
|               47:             TypePointer Input 46(fvec2) | ||||
|            48(d):     47(ptr) Variable Input | ||||
|          49(ff1):     42(ptr) Variable Input | ||||
|          50(ff2):     42(ptr) Variable Input | ||||
|          51(ff3):     42(ptr) Variable Input | ||||
| 4(PixelShaderFunction):           2 Function None 3 | ||||
|                5:             Label | ||||
|           10(s3):      9(ptr) Variable Function | ||||
| @ -155,11 +186,10 @@ gl_FragCoord origin is upper left | ||||
|               14:    7(bvec3) CompositeExtract 12 0 | ||||
|               15:    7(bvec3) LogicalEqual 13 14 | ||||
|               16:     6(bool) All 15 | ||||
|               30:     29(ptr) AccessChain 27(s4) 28 | ||||
|               31:   18(fvec4) Load 30 | ||||
|               32:     29(ptr) AccessChain 21(s2) 23 | ||||
|                               Store 32 31 | ||||
|               37:   18(fvec4) Load 36(input) | ||||
|                               Store 34(@entryPointOutput) 37 | ||||
|               26:   18(fvec4) Load 25(ff4) | ||||
|               28:     27(ptr) AccessChain 21(s2) 23 | ||||
|                               Store 28 26 | ||||
|               32:   18(fvec4) Load 31(input) | ||||
|                               Store 30(@entryPointOutput) 32 | ||||
|                               Return | ||||
|                               FunctionEnd | ||||
|  | ||||
| @ -1,42 +1,67 @@ | ||||
| hlsl.structin.vert | ||||
| Shader version: 450 | ||||
| 0:? Sequence | ||||
| 0:7  Function Definition: main(vf4;struct-VI-vf4[2]-vu21;vf4; (global 4-component vector of float Position) | ||||
| 0:7    Function Parameters:  | ||||
| 0:7      'd' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:7      'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord}) | ||||
| 0:7      'e' (layout(location=4 ) in 4-component vector of float) | ||||
| 0:?     Sequence | ||||
| 0:8      Sequence | ||||
| 0:8        move second child to first child (temp 4-component vector of float) | ||||
| 0:?           '@entryPointOutput' (out 4-component vector of float Position) | ||||
| 0:8          add (temp 4-component vector of float) | ||||
| 0:8            add (temp 4-component vector of float) | ||||
| 0:8              add (temp 4-component vector of float) | ||||
| 0:8                add (temp 4-component vector of float) | ||||
| 0:8                  direct index (layout(location=1 ) temp 4-component vector of float) | ||||
| 0:?                     'm' (layout(location=1 ) in 2-element array of 4-component vector of float) | ||||
| 0:8                    Constant: | ||||
| 0:8                      1 (const int) | ||||
| 0:8                  direct index (layout(location=1 ) temp 4-component vector of float) | ||||
| 0:?                     'm' (layout(location=1 ) in 2-element array of 4-component vector of float) | ||||
| 0:8                    Constant: | ||||
| 0:8                      0 (const int) | ||||
| 0:8                Construct vec4 (temp 4-component vector of float) | ||||
| 0:8                  Convert uint to float (temp float) | ||||
| 0:8                    direct index (temp uint) | ||||
| 0:?                       'coord' (layout(location=3 ) in 2-component vector of uint) | ||||
| 0:8                      Constant: | ||||
| 0:8                        0 (const int) | ||||
| 0:8  Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (global structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:8    Function Parameters:  | ||||
| 0:8      'd' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:8            'e' (layout(location=4 ) in 4-component vector of float) | ||||
| 0:8        Branch: Return | ||||
| 0:8      'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:8      'e' (layout(location=5 ) in 4-component vector of float) | ||||
| 0:?     Sequence | ||||
| 0:11      move second child to first child (temp 4-component vector of float) | ||||
| 0:11        b: direct index for structure (smooth temp 4-component vector of float) | ||||
| 0:11          'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:11          Constant: | ||||
| 0:11            2 (const int) | ||||
| 0:11        add (temp 4-component vector of float) | ||||
| 0:11          add (temp 4-component vector of float) | ||||
| 0:11            add (temp 4-component vector of float) | ||||
| 0:11              add (temp 4-component vector of float) | ||||
| 0:11                direct index (layout(location=1 ) temp 4-component vector of float) | ||||
| 0:?                   'm' (layout(location=1 ) in 2-element array of 4-component vector of float) | ||||
| 0:11                  Constant: | ||||
| 0:11                    1 (const int) | ||||
| 0:11                direct index (layout(location=1 ) temp 4-component vector of float) | ||||
| 0:?                   'm' (layout(location=1 ) in 2-element array of 4-component vector of float) | ||||
| 0:11                  Constant: | ||||
| 0:11                    0 (const int) | ||||
| 0:11              Construct vec4 (temp 4-component vector of float) | ||||
| 0:11                Convert uint to float (temp float) | ||||
| 0:11                  direct index (temp uint) | ||||
| 0:?                     'coord' (layout(location=3 ) in 2-component vector of uint) | ||||
| 0:11                    Constant: | ||||
| 0:11                      0 (const int) | ||||
| 0:11            'd' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:11          'e' (layout(location=5 ) in 4-component vector of float) | ||||
| 0:?       Sequence | ||||
| 0:?         Sequence | ||||
| 0:13          move second child to first child (temp 2-element array of 4-component vector of float) | ||||
| 0:?             'm' (layout(location=0 ) out 2-element array of 4-component vector of float) | ||||
| 0:13            m: direct index for structure (temp 2-element array of 4-component vector of float) | ||||
| 0:13              'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:13              Constant: | ||||
| 0:13                0 (const int) | ||||
| 0:13          move second child to first child (temp 2-component vector of uint) | ||||
| 0:?             'coord' (layout(location=2 ) out 2-component vector of uint) | ||||
| 0:13            coord: direct index for structure (temp 2-component vector of uint) | ||||
| 0:13              'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:13              Constant: | ||||
| 0:13                1 (const int) | ||||
| 0:13          move second child to first child (temp 4-component vector of float) | ||||
| 0:?             'b' (layout(location=3 ) smooth out 4-component vector of float) | ||||
| 0:13            b: direct index for structure (smooth temp 4-component vector of float) | ||||
| 0:13              'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:13              Constant: | ||||
| 0:13                2 (const int) | ||||
| 0:13        Branch: Return | ||||
| 0:?   Linker Objects | ||||
| 0:?     '@entryPointOutput' (out 4-component vector of float Position) | ||||
| 0:?     'm' (layout(location=0 ) out 2-element array of 4-component vector of float) | ||||
| 0:?     'coord' (layout(location=2 ) out 2-component vector of uint) | ||||
| 0:?     'b' (layout(location=3 ) smooth out 4-component vector of float) | ||||
| 0:?     'd' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:?     'm' (layout(location=1 ) in 2-element array of 4-component vector of float) | ||||
| 0:?     'coord' (layout(location=3 ) in 2-component vector of uint) | ||||
| 0:?     'e' (layout(location=4 ) in 4-component vector of float) | ||||
| 0:?     'b' (layout(location=4 ) smooth in 4-component vector of float) | ||||
| 0:?     'e' (layout(location=5 ) in 4-component vector of float) | ||||
| 
 | ||||
| 
 | ||||
| Linked vertex stage: | ||||
| @ -44,100 +69,158 @@ Linked vertex stage: | ||||
| 
 | ||||
| Shader version: 450 | ||||
| 0:? Sequence | ||||
| 0:7  Function Definition: main(vf4;struct-VI-vf4[2]-vu21;vf4; (global 4-component vector of float Position) | ||||
| 0:7    Function Parameters:  | ||||
| 0:7      'd' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:7      'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord}) | ||||
| 0:7      'e' (layout(location=4 ) in 4-component vector of float) | ||||
| 0:?     Sequence | ||||
| 0:8      Sequence | ||||
| 0:8        move second child to first child (temp 4-component vector of float) | ||||
| 0:?           '@entryPointOutput' (out 4-component vector of float Position) | ||||
| 0:8          add (temp 4-component vector of float) | ||||
| 0:8            add (temp 4-component vector of float) | ||||
| 0:8              add (temp 4-component vector of float) | ||||
| 0:8                add (temp 4-component vector of float) | ||||
| 0:8                  direct index (layout(location=1 ) temp 4-component vector of float) | ||||
| 0:?                     'm' (layout(location=1 ) in 2-element array of 4-component vector of float) | ||||
| 0:8                    Constant: | ||||
| 0:8                      1 (const int) | ||||
| 0:8                  direct index (layout(location=1 ) temp 4-component vector of float) | ||||
| 0:?                     'm' (layout(location=1 ) in 2-element array of 4-component vector of float) | ||||
| 0:8                    Constant: | ||||
| 0:8                      0 (const int) | ||||
| 0:8                Construct vec4 (temp 4-component vector of float) | ||||
| 0:8                  Convert uint to float (temp float) | ||||
| 0:8                    direct index (temp uint) | ||||
| 0:?                       'coord' (layout(location=3 ) in 2-component vector of uint) | ||||
| 0:8                      Constant: | ||||
| 0:8                        0 (const int) | ||||
| 0:8  Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (global structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:8    Function Parameters:  | ||||
| 0:8      'd' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:8            'e' (layout(location=4 ) in 4-component vector of float) | ||||
| 0:8        Branch: Return | ||||
| 0:8      'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:8      'e' (layout(location=5 ) in 4-component vector of float) | ||||
| 0:?     Sequence | ||||
| 0:11      move second child to first child (temp 4-component vector of float) | ||||
| 0:11        b: direct index for structure (smooth temp 4-component vector of float) | ||||
| 0:11          'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:11          Constant: | ||||
| 0:11            2 (const int) | ||||
| 0:11        add (temp 4-component vector of float) | ||||
| 0:11          add (temp 4-component vector of float) | ||||
| 0:11            add (temp 4-component vector of float) | ||||
| 0:11              add (temp 4-component vector of float) | ||||
| 0:11                direct index (layout(location=1 ) temp 4-component vector of float) | ||||
| 0:?                   'm' (layout(location=1 ) in 2-element array of 4-component vector of float) | ||||
| 0:11                  Constant: | ||||
| 0:11                    1 (const int) | ||||
| 0:11                direct index (layout(location=1 ) temp 4-component vector of float) | ||||
| 0:?                   'm' (layout(location=1 ) in 2-element array of 4-component vector of float) | ||||
| 0:11                  Constant: | ||||
| 0:11                    0 (const int) | ||||
| 0:11              Construct vec4 (temp 4-component vector of float) | ||||
| 0:11                Convert uint to float (temp float) | ||||
| 0:11                  direct index (temp uint) | ||||
| 0:?                     'coord' (layout(location=3 ) in 2-component vector of uint) | ||||
| 0:11                    Constant: | ||||
| 0:11                      0 (const int) | ||||
| 0:11            'd' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:11          'e' (layout(location=5 ) in 4-component vector of float) | ||||
| 0:?       Sequence | ||||
| 0:?         Sequence | ||||
| 0:13          move second child to first child (temp 2-element array of 4-component vector of float) | ||||
| 0:?             'm' (layout(location=0 ) out 2-element array of 4-component vector of float) | ||||
| 0:13            m: direct index for structure (temp 2-element array of 4-component vector of float) | ||||
| 0:13              'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:13              Constant: | ||||
| 0:13                0 (const int) | ||||
| 0:13          move second child to first child (temp 2-component vector of uint) | ||||
| 0:?             'coord' (layout(location=2 ) out 2-component vector of uint) | ||||
| 0:13            coord: direct index for structure (temp 2-component vector of uint) | ||||
| 0:13              'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:13              Constant: | ||||
| 0:13                1 (const int) | ||||
| 0:13          move second child to first child (temp 4-component vector of float) | ||||
| 0:?             'b' (layout(location=3 ) smooth out 4-component vector of float) | ||||
| 0:13            b: direct index for structure (smooth temp 4-component vector of float) | ||||
| 0:13              'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b}) | ||||
| 0:13              Constant: | ||||
| 0:13                2 (const int) | ||||
| 0:13        Branch: Return | ||||
| 0:?   Linker Objects | ||||
| 0:?     '@entryPointOutput' (out 4-component vector of float Position) | ||||
| 0:?     'm' (layout(location=0 ) out 2-element array of 4-component vector of float) | ||||
| 0:?     'coord' (layout(location=2 ) out 2-component vector of uint) | ||||
| 0:?     'b' (layout(location=3 ) smooth out 4-component vector of float) | ||||
| 0:?     'd' (layout(location=0 ) in 4-component vector of float) | ||||
| 0:?     'm' (layout(location=1 ) in 2-element array of 4-component vector of float) | ||||
| 0:?     'coord' (layout(location=3 ) in 2-component vector of uint) | ||||
| 0:?     'e' (layout(location=4 ) in 4-component vector of float) | ||||
| 0:?     'b' (layout(location=4 ) smooth in 4-component vector of float) | ||||
| 0:?     'e' (layout(location=5 ) in 4-component vector of float) | ||||
| 
 | ||||
| // Module Version 10000 | ||||
| // Generated by (magic number): 80001 | ||||
| // Id's are bound by 41 | ||||
| // Id's are bound by 60 | ||||
| 
 | ||||
|                               Capability Shader | ||||
|                1:             ExtInstImport  "GLSL.std.450" | ||||
|                               MemoryModel Logical GLSL450 | ||||
|                               EntryPoint Vertex 4  "main" 9 14 26 34 37 | ||||
|                               EntryPoint Vertex 4  "main" 18 28 36 39 45 50 55 59 | ||||
|                               Name 4  "main" | ||||
|                               Name 9  "@entryPointOutput" | ||||
|                               Name 14  "m" | ||||
|                               Name 26  "coord" | ||||
|                               Name 34  "d" | ||||
|                               Name 37  "e" | ||||
|                               Decorate 9(@entryPointOutput) BuiltIn Position | ||||
|                               Decorate 14(m) Location 1 | ||||
|                               Decorate 26(coord) Location 3 | ||||
|                               Decorate 34(d) Location 0 | ||||
|                               Decorate 37(e) Location 4 | ||||
|                               Name 12  "VI" | ||||
|                               MemberName 12(VI) 0  "m" | ||||
|                               MemberName 12(VI) 1  "coord" | ||||
|                               MemberName 12(VI) 2  "b" | ||||
|                               Name 14  "local" | ||||
|                               Name 18  "m" | ||||
|                               Name 28  "coord" | ||||
|                               Name 36  "d" | ||||
|                               Name 39  "e" | ||||
|                               Name 45  "m" | ||||
|                               Name 50  "coord" | ||||
|                               Name 55  "b" | ||||
|                               Name 59  "b" | ||||
|                               Decorate 18(m) Location 1 | ||||
|                               Decorate 28(coord) Location 3 | ||||
|                               Decorate 36(d) Location 0 | ||||
|                               Decorate 39(e) Location 5 | ||||
|                               Decorate 45(m) Location 0 | ||||
|                               Decorate 50(coord) Location 2 | ||||
|                               Decorate 55(b) Location 3 | ||||
|                               Decorate 59(b) Location 4 | ||||
|                2:             TypeVoid | ||||
|                3:             TypeFunction 2 | ||||
|                6:             TypeFloat 32 | ||||
|                7:             TypeVector 6(float) 4 | ||||
|                8:             TypePointer Output 7(fvec4) | ||||
| 9(@entryPointOutput):      8(ptr) Variable Output | ||||
|               10:             TypeInt 32 0 | ||||
|               11:     10(int) Constant 2 | ||||
|               12:             TypeArray 7(fvec4) 11 | ||||
|               13:             TypePointer Input 12 | ||||
|            14(m):     13(ptr) Variable Input | ||||
|                8:             TypeInt 32 0 | ||||
|                9:      8(int) Constant 2 | ||||
|               10:             TypeArray 7(fvec4) 9 | ||||
|               11:             TypeVector 8(int) 2 | ||||
|           12(VI):             TypeStruct 10 11(ivec2) 7(fvec4) | ||||
|               13:             TypePointer Function 12(VI) | ||||
|               15:             TypeInt 32 1 | ||||
|               16:     15(int) Constant 1 | ||||
|               17:             TypePointer Input 7(fvec4) | ||||
|               20:     15(int) Constant 0 | ||||
|               24:             TypeVector 10(int) 2 | ||||
|               25:             TypePointer Input 24(ivec2) | ||||
|        26(coord):     25(ptr) Variable Input | ||||
|               27:     10(int) Constant 0 | ||||
|               28:             TypePointer Input 10(int) | ||||
|            34(d):     17(ptr) Variable Input | ||||
|            37(e):     17(ptr) Variable Input | ||||
|               16:     15(int) Constant 2 | ||||
|               17:             TypePointer Input 10 | ||||
|            18(m):     17(ptr) Variable Input | ||||
|               19:     15(int) Constant 1 | ||||
|               20:             TypePointer Input 7(fvec4) | ||||
|               23:     15(int) Constant 0 | ||||
|               27:             TypePointer Input 11(ivec2) | ||||
|        28(coord):     27(ptr) Variable Input | ||||
|               29:      8(int) Constant 0 | ||||
|               30:             TypePointer Input 8(int) | ||||
|            36(d):     20(ptr) Variable Input | ||||
|            39(e):     20(ptr) Variable Input | ||||
|               42:             TypePointer Function 7(fvec4) | ||||
|               44:             TypePointer Output 10 | ||||
|            45(m):     44(ptr) Variable Output | ||||
|               46:             TypePointer Function 10 | ||||
|               49:             TypePointer Output 11(ivec2) | ||||
|        50(coord):     49(ptr) Variable Output | ||||
|               51:             TypePointer Function 11(ivec2) | ||||
|               54:             TypePointer Output 7(fvec4) | ||||
|            55(b):     54(ptr) Variable Output | ||||
|            59(b):     20(ptr) Variable Input | ||||
|          4(main):           2 Function None 3 | ||||
|                5:             Label | ||||
|               18:     17(ptr) AccessChain 14(m) 16 | ||||
|               19:    7(fvec4) Load 18 | ||||
|               21:     17(ptr) AccessChain 14(m) 20 | ||||
|        14(local):     13(ptr) Variable Function | ||||
|               21:     20(ptr) AccessChain 18(m) 19 | ||||
|               22:    7(fvec4) Load 21 | ||||
|               23:    7(fvec4) FAdd 19 22 | ||||
|               29:     28(ptr) AccessChain 26(coord) 27 | ||||
|               30:     10(int) Load 29 | ||||
|               31:    6(float) ConvertUToF 30 | ||||
|               32:    7(fvec4) CompositeConstruct 31 31 31 31 | ||||
|               33:    7(fvec4) FAdd 23 32 | ||||
|               35:    7(fvec4) Load 34(d) | ||||
|               36:    7(fvec4) FAdd 33 35 | ||||
|               38:    7(fvec4) Load 37(e) | ||||
|               39:    7(fvec4) FAdd 36 38 | ||||
|                               Store 9(@entryPointOutput) 39 | ||||
|               24:     20(ptr) AccessChain 18(m) 23 | ||||
|               25:    7(fvec4) Load 24 | ||||
|               26:    7(fvec4) FAdd 22 25 | ||||
|               31:     30(ptr) AccessChain 28(coord) 29 | ||||
|               32:      8(int) Load 31 | ||||
|               33:    6(float) ConvertUToF 32 | ||||
|               34:    7(fvec4) CompositeConstruct 33 33 33 33 | ||||
|               35:    7(fvec4) FAdd 26 34 | ||||
|               37:    7(fvec4) Load 36(d) | ||||
|               38:    7(fvec4) FAdd 35 37 | ||||
|               40:    7(fvec4) Load 39(e) | ||||
|               41:    7(fvec4) FAdd 38 40 | ||||
|               43:     42(ptr) AccessChain 14(local) 16 | ||||
|                               Store 43 41 | ||||
|               47:     46(ptr) AccessChain 14(local) 23 | ||||
|               48:          10 Load 47 | ||||
|                               Store 45(m) 48 | ||||
|               52:     51(ptr) AccessChain 14(local) 19 | ||||
|               53:   11(ivec2) Load 52 | ||||
|                               Store 50(coord) 53 | ||||
|               56:     42(ptr) AccessChain 14(local) 16 | ||||
|               57:    7(fvec4) Load 56 | ||||
|                               Store 55(b) 57 | ||||
|                               Return | ||||
|                               FunctionEnd | ||||
|  | ||||
| @ -16,7 +16,7 @@ struct { | ||||
|     float4 i; | ||||
| } s2; | ||||
| 
 | ||||
| struct { | ||||
| struct IN_S { | ||||
|     linear float4 a; | ||||
|     nointerpolation bool b; | ||||
|     noperspective centroid float1 c; | ||||
| @ -25,19 +25,19 @@ struct { | ||||
|     bool ff2 : packoffset(c0.y); | ||||
|     bool ff3 : packoffset(c0.y) : register(ps_5_0, s0) ; | ||||
|     float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s0) <int bambam=30;> ; | ||||
| } s4; | ||||
| }; | ||||
| 
 | ||||
| float3 ff5 : packoffset(c1.y) : register(ps_5_0, s[5]); | ||||
| float3 ff6 : packoffset(c2.y) : register(s3[5]); | ||||
| 
 | ||||
| float4 PixelShaderFunction(float4 input) : COLOR0 | ||||
| float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0 | ||||
| { | ||||
|     struct FS { | ||||
|         bool3 b3; | ||||
|     } s3; | ||||
| 
 | ||||
|     s3 == s3; | ||||
|     s2.i = s4.ff4; | ||||
|     s2.i = s.ff4; | ||||
| 
 | ||||
|     return input; | ||||
| } | ||||
| @ -1,9 +1,14 @@ | ||||
| struct VI { | ||||
|     float4 m[2]; | ||||
|     uint2 coord; | ||||
|     linear float4 b; | ||||
| }; | ||||
| 
 | ||||
| float4 main(float4 d, VI vi, float4 e) : SV_POSITION | ||||
| VI main(float4 d, VI vi, float4 e) : SV_POSITION | ||||
| { | ||||
|     return vi.m[1] + vi.m[0] + float4(vi.coord.x) + d + e; | ||||
|     VI local; | ||||
| 
 | ||||
|     local.b = vi.m[1] + vi.m[0] + float4(vi.coord.x) + d + e; | ||||
| 
 | ||||
|     return local; | ||||
| } | ||||
| @ -2,5 +2,5 @@ | ||||
| // For the version, it uses the latest git tag followed by the number of commits.
 | ||||
| // For the date, it uses the current date (when then script is run).
 | ||||
| 
 | ||||
| #define GLSLANG_REVISION "Overload400-PrecQual.1489" | ||||
| #define GLSLANG_REVISION "Overload400-PrecQual.1490" | ||||
| #define GLSLANG_DATE "16-Sep-2016" | ||||
|  | ||||
| @ -435,7 +435,7 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type) | ||||
|         return false; | ||||
|     if (type.getBasicType() == EbtBlock) { | ||||
|         // the type was a block, which set some parts of the qualifier
 | ||||
|         parseContext.mergeQualifiers(loc, type.getQualifier(), qualifier, true); | ||||
|         parseContext.mergeQualifiers(type.getQualifier(), qualifier); | ||||
|         // further, it can create an anonymous instance of the block
 | ||||
|         if (peekTokenClass(EHTokSemicolon)) | ||||
|             parseContext.declareBlock(loc, type); | ||||
| @ -476,7 +476,6 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier) | ||||
|             qualifier.volatil = true; | ||||
|             break; | ||||
|         case EHTokLinear: | ||||
|             qualifier.storage = EvqVaryingIn; | ||||
|             qualifier.smooth = true; | ||||
|             break; | ||||
|         case EHTokCentroid: | ||||
|  | ||||
| @ -728,7 +728,7 @@ void HlslParseContext::flattenStruct(const TVariable& variable) | ||||
|     for (int member = 0; member < (int)members.size(); ++member) { | ||||
|         TVariable* memberVariable = makeInternalVariable(members[member].type->getFieldName().c_str(), | ||||
|                                                          *members[member].type); | ||||
|         memberVariable->getWritableType().getQualifier().storage = variable.getType().getQualifier().storage; | ||||
|         mergeQualifiers(memberVariable->getWritableType().getQualifier(), variable.getType().getQualifier()); | ||||
|         memberVariables.push_back(memberVariable); | ||||
|     } | ||||
| 
 | ||||
| @ -3049,7 +3049,7 @@ void HlslParseContext::globalQualifierFix(const TSourceLoc&, TQualifier& qualifi | ||||
| // 'dst', for the purpose of error checking order for versions
 | ||||
| // that require specific orderings of qualifiers.
 | ||||
| //
 | ||||
| void HlslParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, const TQualifier& src, bool force) | ||||
| void HlslParseContext::mergeQualifiers(TQualifier& dst, const TQualifier& src) | ||||
| { | ||||
|     // Storage qualification
 | ||||
|     if (dst.storage == EvqTemporary || dst.storage == EvqGlobal) | ||||
| @ -3060,8 +3060,6 @@ void HlslParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, c | ||||
|     else if ((dst.storage == EvqIn    && src.storage == EvqConst) || | ||||
|              (dst.storage == EvqConst && src.storage == EvqIn)) | ||||
|         dst.storage = EvqConstReadOnly; | ||||
|     else if (src.storage != EvqTemporary && src.storage != EvqGlobal) | ||||
|         error(loc, "too many storage qualifiers", GetStorageQualifierString(src.storage), ""); | ||||
| 
 | ||||
|     // Layout qualifiers
 | ||||
|     mergeObjectLayoutQualifiers(dst, src, false); | ||||
| @ -4586,7 +4584,7 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS | ||||
|         } | ||||
| 
 | ||||
|         TQualifier newMemberQualification = defaultQualification; | ||||
|         mergeQualifiers(memberLoc, newMemberQualification, memberQualifier, false); | ||||
|         mergeQualifiers(newMemberQualification, memberQualifier); | ||||
|         memberQualifier = newMemberQualification; | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -129,7 +129,7 @@ public: | ||||
|     void boolCheck(const TSourceLoc&, const TIntermTyped*); | ||||
|     void globalQualifierFix(const TSourceLoc&, TQualifier&); | ||||
|     bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType); | ||||
|     void mergeQualifiers(const TSourceLoc&, TQualifier& dst, const TQualifier& src, bool force); | ||||
|     void mergeQualifiers(TQualifier& dst, const TQualifier& src); | ||||
|     int computeSamplerTypeIndex(TSampler&); | ||||
|     TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&, bool& newDeclaration); | ||||
|     void redeclareBuiltinBlock(const TSourceLoc&, TTypeList& typeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 John Kessenich
						John Kessenich