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