Browse Source

Updated glslang.

Branimir Karadžić 7 years ago
parent
commit
f10aad5bc8

+ 142 - 0
3rdparty/glslang/Test/baseResults/hlsl.imagefetch-subvec4.comp.out

@@ -0,0 +1,142 @@
+hlsl.imagefetch-subvec4.comp
+Shader version: 500
+local_size = (8, 8, 8)
+0:? Sequence
+0:6  Function Definition: @main(vu3; ( temp void)
+0:6    Function Parameters: 
+0:6      'tid' ( in 3-component vector of uint)
+0:?     Sequence
+0:7      Sequence
+0:7        move second child to first child ( temp uint)
+0:7          'storeTemp' ( temp uint)
+0:7          Convert int to uint ( temp uint)
+0:7            textureFetch ( temp int)
+0:7              'IN' (layout( binding=0) uniform itexture3D)
+0:7              'tid' ( in 3-component vector of uint)
+0:7              Constant:
+0:7                0 (const int)
+0:7        imageStore ( temp void)
+0:7          'OUT' (layout( binding=1 r32ui) uniform uimage3D)
+0:7          'tid' ( in 3-component vector of uint)
+0:7          'storeTemp' ( temp uint)
+0:7        'storeTemp' ( temp uint)
+0:6  Function Definition: main( ( temp void)
+0:6    Function Parameters: 
+0:?     Sequence
+0:6      move second child to first child ( temp 3-component vector of uint)
+0:?         'tid' ( temp 3-component vector of uint)
+0:?         'tid' ( in 3-component vector of uint GlobalInvocationID)
+0:6      Function Call: @main(vu3; ( temp void)
+0:?         'tid' ( temp 3-component vector of uint)
+0:?   Linker Objects
+0:?     'IN' (layout( binding=0) uniform itexture3D)
+0:?     'OUT' (layout( binding=1 r32ui) uniform uimage3D)
+0:?     'tid' ( in 3-component vector of uint GlobalInvocationID)
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (8, 8, 8)
+0:? Sequence
+0:6  Function Definition: @main(vu3; ( temp void)
+0:6    Function Parameters: 
+0:6      'tid' ( in 3-component vector of uint)
+0:?     Sequence
+0:7      Sequence
+0:7        move second child to first child ( temp uint)
+0:7          'storeTemp' ( temp uint)
+0:7          Convert int to uint ( temp uint)
+0:7            textureFetch ( temp int)
+0:7              'IN' (layout( binding=0) uniform itexture3D)
+0:7              'tid' ( in 3-component vector of uint)
+0:7              Constant:
+0:7                0 (const int)
+0:7        imageStore ( temp void)
+0:7          'OUT' (layout( binding=1 r32ui) uniform uimage3D)
+0:7          'tid' ( in 3-component vector of uint)
+0:7          'storeTemp' ( temp uint)
+0:7        'storeTemp' ( temp uint)
+0:6  Function Definition: main( ( temp void)
+0:6    Function Parameters: 
+0:?     Sequence
+0:6      move second child to first child ( temp 3-component vector of uint)
+0:?         'tid' ( temp 3-component vector of uint)
+0:?         'tid' ( in 3-component vector of uint GlobalInvocationID)
+0:6      Function Call: @main(vu3; ( temp void)
+0:?         'tid' ( temp 3-component vector of uint)
+0:?   Linker Objects
+0:?     'IN' (layout( binding=0) uniform itexture3D)
+0:?     'OUT' (layout( binding=1 r32ui) uniform uimage3D)
+0:?     'tid' ( in 3-component vector of uint GlobalInvocationID)
+
+// Module Version 10000
+// Generated by (magic number): 80004
+// Id's are bound by 39
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 34
+                              ExecutionMode 4 LocalSize 8 8 8
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 11  "@main(vu3;"
+                              Name 10  "tid"
+                              Name 14  "storeTemp"
+                              Name 18  "IN"
+                              Name 28  "OUT"
+                              Name 32  "tid"
+                              Name 34  "tid"
+                              Name 36  "param"
+                              Decorate 18(IN) DescriptorSet 0
+                              Decorate 18(IN) Binding 0
+                              Decorate 28(OUT) DescriptorSet 0
+                              Decorate 28(OUT) Binding 1
+                              Decorate 34(tid) BuiltIn GlobalInvocationId
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypeVector 6(int) 3
+               8:             TypePointer Function 7(ivec3)
+               9:             TypeFunction 2 8(ptr)
+              13:             TypePointer Function 6(int)
+              15:             TypeInt 32 1
+              16:             TypeImage 15(int) 3D sampled format:Unknown
+              17:             TypePointer UniformConstant 16
+          18(IN):     17(ptr) Variable UniformConstant
+              21:     15(int) Constant 0
+              22:             TypeVector 15(int) 4
+              26:             TypeImage 6(int) 3D nonsampled format:R32ui
+              27:             TypePointer UniformConstant 26
+         28(OUT):     27(ptr) Variable UniformConstant
+              33:             TypePointer Input 7(ivec3)
+         34(tid):     33(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+         32(tid):      8(ptr) Variable Function
+       36(param):      8(ptr) Variable Function
+              35:    7(ivec3) Load 34(tid)
+                              Store 32(tid) 35
+              37:    7(ivec3) Load 32(tid)
+                              Store 36(param) 37
+              38:           2 FunctionCall 11(@main(vu3;) 36(param)
+                              Return
+                              FunctionEnd
+  11(@main(vu3;):           2 Function None 9
+         10(tid):      8(ptr) FunctionParameter
+              12:             Label
+   14(storeTemp):     13(ptr) Variable Function
+              19:          16 Load 18(IN)
+              20:    7(ivec3) Load 10(tid)
+              23:   22(ivec4) ImageFetch 19 20 Lod 21
+              24:     15(int) CompositeExtract 23 0
+              25:      6(int) Bitcast 24
+                              Store 14(storeTemp) 25
+              29:          26 Load 28(OUT)
+              30:    7(ivec3) Load 10(tid)
+              31:      6(int) Load 14(storeTemp)
+                              ImageWrite 29 30 31
+                              Return
+                              FunctionEnd

+ 599 - 0
3rdparty/glslang/Test/baseResults/specExamplesConf.vert.out

@@ -0,0 +1,599 @@
+specExamples.vert
+ERROR: 0:29: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers 
+ERROR: 0:31: 'triangles' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) 
+ERROR: 0:31: 'invocations' : there is no such layout identifier for this stage taking an assigned value 
+ERROR: 0:33: 'lines' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) 
+ERROR: 0:35: 'triangle_strip' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) 
+ERROR: 0:35: 'max_vertices' : there is no such layout identifier for this stage taking an assigned value 
+ERROR: 0:36: 'max_vertices' : there is no such layout identifier for this stage taking an assigned value 
+ERROR: 0:37: 'triangle_strip' : unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4) 
+ERROR: 0:41: 'stream' : there is no such layout identifier for this stage taking an assigned value 
+ERROR: 0:43: 'stream' : there is no such layout identifier for this stage taking an assigned value 
+ERROR: 0:45: 'stream' : there is no such layout identifier for this stage taking an assigned value 
+ERROR: 0:46: 'stream' : there is no such layout identifier for this stage taking an assigned value 
+ERROR: 0:47: 'stream' : there is no such layout identifier for this stage taking an assigned value 
+ERROR: 0:50: 'stream' : there is no such layout identifier for this stage taking an assigned value 
+ERROR: 0:55: 'stream' : there is no such layout identifier for this stage taking an assigned value 
+ERROR: 0:80: 's17' : redefinition 
+ERROR: 0:85: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings 
+ERROR: 0:87: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings 
+ERROR: 0:89: 'binding' : atomic_uint binding is too large 
+ERROR: 0:91: 'bar' : redefinition 
+ERROR: 0:92: 'atomic_uint' : layout(binding=X) is required 
+ERROR: 0:94: 'a2' : redefinition 
+ERROR: 0:95: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings 
+ERROR: 0:96: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings 
+ERROR: 0:97: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings 
+ERROR: 0:106: '' : vertex input cannot be further qualified 
+ERROR: 0:106: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_FrontColor
+ERROR: 0:112: 'ColorIvn' : identifier not previously declared 
+ERROR: 0:132: 'shared' : not supported in this stage: vertex
+ERROR: 0:134: '' : function does not return a value: funcA
+ERROR: 0:136: '' : function does not return a value: funcB
+ERROR: 0:153: '' : function does not return a value: func3
+ERROR: 0:170: 'coherent' : argument cannot drop memory qualifier when passed to formal parameter 
+ERROR: 33 compilation errors.  No code generated.
+
+
+Shader version: 430
+Requested GL_3DL_array_objects
+ERROR: node is still EOpNull!
+0:134  Function Definition: funcA(I21; ( global 4-component vector of float)
+0:134    Function Parameters: 
+0:134      'a' ( restrict in image2D)
+0:136  Function Definition: funcB(I21; ( global 4-component vector of float)
+0:136    Function Parameters: 
+0:136      'a' ( in image2D)
+0:140  Function Definition: func(f1;f1;f1;f1; ( global float)
+0:140    Function Parameters: 
+0:140      'e' ( in float)
+0:140      'f' ( in float)
+0:140      'g' ( in float)
+0:140      'h' ( in float)
+0:142    Sequence
+0:142      Branch: Return with expression
+0:142        add ( temp float)
+0:142          component-wise multiply ( temp float)
+0:142            'e' ( in float)
+0:142            'f' ( in float)
+0:142          component-wise multiply ( temp float)
+0:142            'g' ( in float)
+0:142            'h' ( in float)
+0:146  Function Definition: func2(f1;f1;f1;f1; ( global float)
+0:146    Function Parameters: 
+0:146      'e' ( in float)
+0:146      'f' ( in float)
+0:146      'g' ( in float)
+0:146      'h' ( in float)
+0:148    Sequence
+0:148      Sequence
+0:148        move second child to first child ( temp float)
+0:148          'result' ( noContraction temp float)
+0:148          add ( temp float)
+0:148            component-wise multiply ( temp float)
+0:148              'e' ( in float)
+0:148              'f' ( in float)
+0:148            component-wise multiply ( temp float)
+0:148              'g' ( in float)
+0:148              'h' ( in float)
+0:150      Branch: Return with expression
+0:150        'result' ( noContraction temp float)
+0:153  Function Definition: func3(f1;f1;f1; ( global float)
+0:153    Function Parameters: 
+0:153      'i' ( in float)
+0:153      'j' ( in float)
+0:153      'k' ( noContraction out float)
+0:155    Sequence
+0:155      move second child to first child ( temp float)
+0:155        'k' ( noContraction out float)
+0:155        add ( temp float)
+0:155          component-wise multiply ( temp float)
+0:155            'i' ( in float)
+0:155            'i' ( in float)
+0:155          'j' ( in float)
+0:158  Function Definition: main( ( global void)
+0:158    Function Parameters: 
+0:160    Sequence
+0:160      Sequence
+0:160        move second child to first child ( temp 3-component vector of float)
+0:160          'r' ( temp 3-component vector of float)
+0:160          Construct vec3 ( temp 3-component vector of float)
+0:160            component-wise multiply ( temp 4-component vector of float)
+0:160              'a' ( in 4-component vector of float)
+0:160              'b' ( in 4-component vector of float)
+0:161      Sequence
+0:161        move second child to first child ( temp 3-component vector of float)
+0:161          's' ( temp 3-component vector of float)
+0:161          Construct vec3 ( temp 3-component vector of float)
+0:161            component-wise multiply ( temp 4-component vector of float)
+0:161              'c' ( in 4-component vector of float)
+0:161              'd' ( in 4-component vector of float)
+0:162      move second child to first child ( temp 3-component vector of float)
+0:162        vector swizzle ( noContraction temp 3-component vector of float)
+0:162          'v' ( noContraction smooth out 4-component vector of float)
+0:162          Sequence
+0:162            Constant:
+0:162              0 (const int)
+0:162            Constant:
+0:162              1 (const int)
+0:162            Constant:
+0:162              2 (const int)
+0:162        add ( temp 3-component vector of float)
+0:162          'r' ( temp 3-component vector of float)
+0:162          's' ( temp 3-component vector of float)
+0:163      move second child to first child ( temp float)
+0:163        direct index ( noContraction temp float)
+0:163          'v' ( noContraction smooth out 4-component vector of float)
+0:163          Constant:
+0:163            3 (const int)
+0:163        add ( temp float)
+0:163          component-wise multiply ( temp float)
+0:163            direct index ( temp float)
+0:163              'a' ( in 4-component vector of float)
+0:163              Constant:
+0:163                3 (const int)
+0:163            direct index ( temp float)
+0:163              'b' ( in 4-component vector of float)
+0:163              Constant:
+0:163                3 (const int)
+0:163          component-wise multiply ( temp float)
+0:163            direct index ( temp float)
+0:163              'c' ( in 4-component vector of float)
+0:163              Constant:
+0:163                3 (const int)
+0:163            direct index ( temp float)
+0:163              'd' ( in 4-component vector of float)
+0:163              Constant:
+0:163                3 (const int)
+0:164      move second child to first child ( temp float)
+0:164        direct index ( noContraction temp float)
+0:164          'v' ( noContraction smooth out 4-component vector of float)
+0:164          Constant:
+0:164            0 (const int)
+0:164        Function Call: func(f1;f1;f1;f1; ( global float)
+0:164          direct index ( temp float)
+0:164            'a' ( in 4-component vector of float)
+0:164            Constant:
+0:164              0 (const int)
+0:164          direct index ( temp float)
+0:164            'b' ( in 4-component vector of float)
+0:164            Constant:
+0:164              0 (const int)
+0:164          direct index ( temp float)
+0:164            'c' ( in 4-component vector of float)
+0:164            Constant:
+0:164              0 (const int)
+0:164          direct index ( temp float)
+0:164            'd' ( in 4-component vector of float)
+0:164            Constant:
+0:164              0 (const int)
+0:166      move second child to first child ( temp float)
+0:166        direct index ( noContraction temp float)
+0:166          'v' ( noContraction smooth out 4-component vector of float)
+0:166          Constant:
+0:166            0 (const int)
+0:166        Function Call: func2(f1;f1;f1;f1; ( global float)
+0:166          direct index ( temp float)
+0:166            'a' ( in 4-component vector of float)
+0:166            Constant:
+0:166              0 (const int)
+0:166          direct index ( temp float)
+0:166            'b' ( in 4-component vector of float)
+0:166            Constant:
+0:166              0 (const int)
+0:166          direct index ( temp float)
+0:166            'c' ( in 4-component vector of float)
+0:166            Constant:
+0:166              0 (const int)
+0:166          direct index ( temp float)
+0:166            'd' ( in 4-component vector of float)
+0:166            Constant:
+0:166              0 (const int)
+0:167      Function Call: func3(f1;f1;f1; ( global float)
+0:167        component-wise multiply ( temp float)
+0:167          direct index ( temp float)
+0:167            'a' ( in 4-component vector of float)
+0:167            Constant:
+0:167              0 (const int)
+0:167          direct index ( temp float)
+0:167            'b' ( in 4-component vector of float)
+0:167            Constant:
+0:167              0 (const int)
+0:167        component-wise multiply ( temp float)
+0:167          direct index ( temp float)
+0:167            'c' ( in 4-component vector of float)
+0:167            Constant:
+0:167              0 (const int)
+0:167          direct index ( temp float)
+0:167            'd' ( in 4-component vector of float)
+0:167            Constant:
+0:167              0 (const int)
+0:167        direct index ( noContraction temp float)
+0:167          'v' ( noContraction smooth out 4-component vector of float)
+0:167          Constant:
+0:167            0 (const int)
+0:169      Function Call: funcA(I21; ( global 4-component vector of float)
+0:169        'img1' (layout( rgba32f) uniform image2D)
+0:170      Function Call: funcB(I21; ( global 4-component vector of float)
+0:170        'img2' (layout( rgba32f) coherent uniform image2D)
+0:?       Sequence
+0:178        Sequence
+0:178          move second child to first child ( temp structure{ temp float intensity,  temp 3-component vector of float position})
+0:178            'lightVar' ( temp structure{ temp float intensity,  temp 3-component vector of float position})
+0:178            Constant:
+0:178              3.000000
+0:178              1.000000
+0:178              2.000000
+0:178              3.000000
+0:?       Sequence
+0:185        Sequence
+0:185          move second child to first child ( temp 5-element array of float)
+0:185            'a' ( temp 5-element array of float)
+0:185            Construct float ( temp 5-element array of float)
+0:185              'g' ( temp float)
+0:185              Constant:
+0:185                1.000000
+0:185              'g' ( temp float)
+0:185              Constant:
+0:185                2.300000
+0:185              'g' ( temp float)
+0:188        move second child to first child ( temp 3-element array of float)
+0:188          'b' ( temp 3-element array of float)
+0:188          Construct float ( temp 3-element array of float)
+0:188            'g' ( temp float)
+0:188            add ( temp float)
+0:188              'g' ( temp float)
+0:188              Constant:
+0:188                1.000000
+0:188            add ( temp float)
+0:188              'g' ( temp float)
+0:188              Constant:
+0:188                2.000000
+0:191      Sequence
+0:191        Sequence
+0:191          move second child to first child ( temp 2-element array of 4-component vector of float)
+0:191            'b' ( temp 2-element array of 4-component vector of float)
+0:191            Constant:
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:192        Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float)
+0:192          'b' ( temp 2-element array of 4-component vector of float)
+0:192          'b' ( temp 2-element array of 4-component vector of float)
+0:192          'b' ( temp 2-element array of 4-component vector of float)
+0:193        Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float)
+0:193          'b' ( temp 2-element array of 4-component vector of float)
+0:193          'b' ( temp 2-element array of 4-component vector of float)
+0:193          'b' ( temp 2-element array of 4-component vector of float)
+0:194        Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float)
+0:194          'b' ( temp 2-element array of 4-component vector of float)
+0:194          'b' ( temp 2-element array of 4-component vector of float)
+0:194          'b' ( temp 2-element array of 4-component vector of float)
+0:?   Linker Objects
+0:?     'Coords' ( out block{ out 4-component vector of float Position,  out 2-component vector of float Texture})
+0:?     'anon@0' ( out block{ out 4-component vector of float Color})
+0:?     'transforms' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform 4X4 matrix of float ModelViewMatrix, layout( column_major shared) uniform 4X4 matrix of float ModelViewProjectionMatrix, layout( column_major shared) uniform implicitly-sized array of 4-component vector of float a, layout( column_major shared) uniform float Deformation})
+0:?     'normal' (layout( location=3) in 4-component vector of float)
+0:?     'colors' (layout( location=6) in 3-element array of 4-component vector of float)
+0:?     'transforms2' (layout( location=9) in 2-element array of 4X4 matrix of float)
+0:?     's' (layout( location=3) temp structure{ global 3-component vector of float a1,  global 2X2 matrix of float b,  global 2-element array of 4-component vector of float c})
+0:?     'var1' ( smooth out 4-component vector of float)
+0:?     'anon@1' ( out block{ out 4-component vector of float var2,  out 2-component vector of float var3,  out 3-component vector of float var4})
+0:?     'var5' ( smooth out 4-component vector of float)
+0:?     'anon@2' ( out block{ out 4-component vector of float var6})
+0:?     'var7' ( smooth out 4-component vector of float)
+0:?     'anon@3' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform 3X3 matrix of float N1})
+0:?     'anon@4' (layout( column_major shared) uniform block{layout( column_major shared) uniform 4X4 matrix of float M13, layout( row_major shared) uniform 4X4 matrix of float m14, layout( column_major shared) uniform 3X3 matrix of float N12})
+0:?     's17' (layout( binding=3) uniform sampler2D)
+0:?     'a2' (layout( binding=2 offset=4) uniform atomic_uint)
+0:?     'bar' (layout( binding=2) uniform atomic_uint)
+0:?     'bar23' (layout( offset=8) uniform atomic_uint)
+0:?     'b2' (layout( binding=2) uniform atomic_uint)
+0:?     'c2' (layout( binding=3) uniform atomic_uint)
+0:?     'd2' (layout( binding=2) uniform atomic_uint)
+0:?     'anon@5' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out implicitly-sized array of float ClipDistance gl_ClipDistance,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  flat out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:?     'ColorInv' ( smooth out 3-component vector of float)
+0:?     'Color4' ( invariant centroid smooth out 3-component vector of float)
+0:?     'position' ( noContraction smooth out 4-component vector of float)
+0:?     'Color5' ( noContraction smooth out 3-component vector of float)
+0:?     'a' ( in 4-component vector of float)
+0:?     'b' ( in 4-component vector of float)
+0:?     'c' ( in 4-component vector of float)
+0:?     'd' ( in 4-component vector of float)
+0:?     'v' ( noContraction smooth out 4-component vector of float)
+0:?     'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) readonly buffer 4-component vector of float member1, layout( column_major shared) buffer 4-component vector of float member2})
+0:?     'anon@7' (layout( column_major shared) buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1A, layout( column_major shared) coherent buffer 4-component vector of float member2A})
+0:?     'shv' ( shared 4-component vector of float)
+0:?     'img1' (layout( rgba32f) uniform image2D)
+0:?     'img2' (layout( rgba32f) coherent uniform image2D)
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 430
+Requested GL_3DL_array_objects
+ERROR: node is still EOpNull!
+0:134  Function Definition: funcA(I21; ( global 4-component vector of float)
+0:134    Function Parameters: 
+0:134      'a' ( restrict in image2D)
+0:136  Function Definition: funcB(I21; ( global 4-component vector of float)
+0:136    Function Parameters: 
+0:136      'a' ( in image2D)
+0:140  Function Definition: func(f1;f1;f1;f1; ( global float)
+0:140    Function Parameters: 
+0:140      'e' ( in float)
+0:140      'f' ( in float)
+0:140      'g' ( in float)
+0:140      'h' ( in float)
+0:142    Sequence
+0:142      Branch: Return with expression
+0:142        add ( temp float)
+0:142          component-wise multiply ( temp float)
+0:142            'e' ( in float)
+0:142            'f' ( in float)
+0:142          component-wise multiply ( temp float)
+0:142            'g' ( in float)
+0:142            'h' ( in float)
+0:146  Function Definition: func2(f1;f1;f1;f1; ( global float)
+0:146    Function Parameters: 
+0:146      'e' ( in float)
+0:146      'f' ( in float)
+0:146      'g' ( in float)
+0:146      'h' ( in float)
+0:148    Sequence
+0:148      Sequence
+0:148        move second child to first child ( temp float)
+0:148          'result' ( noContraction temp float)
+0:148          add ( temp float)
+0:148            component-wise multiply ( temp float)
+0:148              'e' ( in float)
+0:148              'f' ( in float)
+0:148            component-wise multiply ( temp float)
+0:148              'g' ( in float)
+0:148              'h' ( in float)
+0:150      Branch: Return with expression
+0:150        'result' ( noContraction temp float)
+0:153  Function Definition: func3(f1;f1;f1; ( global float)
+0:153    Function Parameters: 
+0:153      'i' ( in float)
+0:153      'j' ( in float)
+0:153      'k' ( noContraction out float)
+0:155    Sequence
+0:155      move second child to first child ( temp float)
+0:155        'k' ( noContraction out float)
+0:155        add ( temp float)
+0:155          component-wise multiply ( temp float)
+0:155            'i' ( in float)
+0:155            'i' ( in float)
+0:155          'j' ( in float)
+0:158  Function Definition: main( ( global void)
+0:158    Function Parameters: 
+0:160    Sequence
+0:160      Sequence
+0:160        move second child to first child ( temp 3-component vector of float)
+0:160          'r' ( temp 3-component vector of float)
+0:160          Construct vec3 ( temp 3-component vector of float)
+0:160            component-wise multiply ( temp 4-component vector of float)
+0:160              'a' ( in 4-component vector of float)
+0:160              'b' ( in 4-component vector of float)
+0:161      Sequence
+0:161        move second child to first child ( temp 3-component vector of float)
+0:161          's' ( temp 3-component vector of float)
+0:161          Construct vec3 ( temp 3-component vector of float)
+0:161            component-wise multiply ( temp 4-component vector of float)
+0:161              'c' ( in 4-component vector of float)
+0:161              'd' ( in 4-component vector of float)
+0:162      move second child to first child ( temp 3-component vector of float)
+0:162        vector swizzle ( noContraction temp 3-component vector of float)
+0:162          'v' ( noContraction smooth out 4-component vector of float)
+0:162          Sequence
+0:162            Constant:
+0:162              0 (const int)
+0:162            Constant:
+0:162              1 (const int)
+0:162            Constant:
+0:162              2 (const int)
+0:162        add ( temp 3-component vector of float)
+0:162          'r' ( temp 3-component vector of float)
+0:162          's' ( temp 3-component vector of float)
+0:163      move second child to first child ( temp float)
+0:163        direct index ( noContraction temp float)
+0:163          'v' ( noContraction smooth out 4-component vector of float)
+0:163          Constant:
+0:163            3 (const int)
+0:163        add ( temp float)
+0:163          component-wise multiply ( temp float)
+0:163            direct index ( temp float)
+0:163              'a' ( in 4-component vector of float)
+0:163              Constant:
+0:163                3 (const int)
+0:163            direct index ( temp float)
+0:163              'b' ( in 4-component vector of float)
+0:163              Constant:
+0:163                3 (const int)
+0:163          component-wise multiply ( temp float)
+0:163            direct index ( temp float)
+0:163              'c' ( in 4-component vector of float)
+0:163              Constant:
+0:163                3 (const int)
+0:163            direct index ( temp float)
+0:163              'd' ( in 4-component vector of float)
+0:163              Constant:
+0:163                3 (const int)
+0:164      move second child to first child ( temp float)
+0:164        direct index ( noContraction temp float)
+0:164          'v' ( noContraction smooth out 4-component vector of float)
+0:164          Constant:
+0:164            0 (const int)
+0:164        Function Call: func(f1;f1;f1;f1; ( global float)
+0:164          direct index ( temp float)
+0:164            'a' ( in 4-component vector of float)
+0:164            Constant:
+0:164              0 (const int)
+0:164          direct index ( temp float)
+0:164            'b' ( in 4-component vector of float)
+0:164            Constant:
+0:164              0 (const int)
+0:164          direct index ( temp float)
+0:164            'c' ( in 4-component vector of float)
+0:164            Constant:
+0:164              0 (const int)
+0:164          direct index ( temp float)
+0:164            'd' ( in 4-component vector of float)
+0:164            Constant:
+0:164              0 (const int)
+0:166      move second child to first child ( temp float)
+0:166        direct index ( noContraction temp float)
+0:166          'v' ( noContraction smooth out 4-component vector of float)
+0:166          Constant:
+0:166            0 (const int)
+0:166        Function Call: func2(f1;f1;f1;f1; ( global float)
+0:166          direct index ( temp float)
+0:166            'a' ( in 4-component vector of float)
+0:166            Constant:
+0:166              0 (const int)
+0:166          direct index ( temp float)
+0:166            'b' ( in 4-component vector of float)
+0:166            Constant:
+0:166              0 (const int)
+0:166          direct index ( temp float)
+0:166            'c' ( in 4-component vector of float)
+0:166            Constant:
+0:166              0 (const int)
+0:166          direct index ( temp float)
+0:166            'd' ( in 4-component vector of float)
+0:166            Constant:
+0:166              0 (const int)
+0:167      Function Call: func3(f1;f1;f1; ( global float)
+0:167        component-wise multiply ( temp float)
+0:167          direct index ( temp float)
+0:167            'a' ( in 4-component vector of float)
+0:167            Constant:
+0:167              0 (const int)
+0:167          direct index ( temp float)
+0:167            'b' ( in 4-component vector of float)
+0:167            Constant:
+0:167              0 (const int)
+0:167        component-wise multiply ( temp float)
+0:167          direct index ( temp float)
+0:167            'c' ( in 4-component vector of float)
+0:167            Constant:
+0:167              0 (const int)
+0:167          direct index ( temp float)
+0:167            'd' ( in 4-component vector of float)
+0:167            Constant:
+0:167              0 (const int)
+0:167        direct index ( noContraction temp float)
+0:167          'v' ( noContraction smooth out 4-component vector of float)
+0:167          Constant:
+0:167            0 (const int)
+0:169      Function Call: funcA(I21; ( global 4-component vector of float)
+0:169        'img1' (layout( rgba32f) uniform image2D)
+0:170      Function Call: funcB(I21; ( global 4-component vector of float)
+0:170        'img2' (layout( rgba32f) coherent uniform image2D)
+0:?       Sequence
+0:178        Sequence
+0:178          move second child to first child ( temp structure{ temp float intensity,  temp 3-component vector of float position})
+0:178            'lightVar' ( temp structure{ temp float intensity,  temp 3-component vector of float position})
+0:178            Constant:
+0:178              3.000000
+0:178              1.000000
+0:178              2.000000
+0:178              3.000000
+0:?       Sequence
+0:185        Sequence
+0:185          move second child to first child ( temp 5-element array of float)
+0:185            'a' ( temp 5-element array of float)
+0:185            Construct float ( temp 5-element array of float)
+0:185              'g' ( temp float)
+0:185              Constant:
+0:185                1.000000
+0:185              'g' ( temp float)
+0:185              Constant:
+0:185                2.300000
+0:185              'g' ( temp float)
+0:188        move second child to first child ( temp 3-element array of float)
+0:188          'b' ( temp 3-element array of float)
+0:188          Construct float ( temp 3-element array of float)
+0:188            'g' ( temp float)
+0:188            add ( temp float)
+0:188              'g' ( temp float)
+0:188              Constant:
+0:188                1.000000
+0:188            add ( temp float)
+0:188              'g' ( temp float)
+0:188              Constant:
+0:188                2.000000
+0:191      Sequence
+0:191        Sequence
+0:191          move second child to first child ( temp 2-element array of 4-component vector of float)
+0:191            'b' ( temp 2-element array of 4-component vector of float)
+0:191            Constant:
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:191              1.000000
+0:192        Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float)
+0:192          'b' ( temp 2-element array of 4-component vector of float)
+0:192          'b' ( temp 2-element array of 4-component vector of float)
+0:192          'b' ( temp 2-element array of 4-component vector of float)
+0:193        Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float)
+0:193          'b' ( temp 2-element array of 4-component vector of float)
+0:193          'b' ( temp 2-element array of 4-component vector of float)
+0:193          'b' ( temp 2-element array of 4-component vector of float)
+0:194        Construct vec4 ( temp 3-element array of 2-element array of 4-component vector of float)
+0:194          'b' ( temp 2-element array of 4-component vector of float)
+0:194          'b' ( temp 2-element array of 4-component vector of float)
+0:194          'b' ( temp 2-element array of 4-component vector of float)
+0:?   Linker Objects
+0:?     'Coords' ( out block{ out 4-component vector of float Position,  out 2-component vector of float Texture})
+0:?     'anon@0' ( out block{ out 4-component vector of float Color})
+0:?     'transforms' (layout( column_major shared) uniform 4-element array of block{layout( column_major shared) uniform 4X4 matrix of float ModelViewMatrix, layout( column_major shared) uniform 4X4 matrix of float ModelViewProjectionMatrix, layout( column_major shared) uniform 1-element array of 4-component vector of float a, layout( column_major shared) uniform float Deformation})
+0:?     'normal' (layout( location=3) in 4-component vector of float)
+0:?     'colors' (layout( location=6) in 3-element array of 4-component vector of float)
+0:?     'transforms2' (layout( location=9) in 2-element array of 4X4 matrix of float)
+0:?     's' (layout( location=3) temp structure{ global 3-component vector of float a1,  global 2X2 matrix of float b,  global 2-element array of 4-component vector of float c})
+0:?     'var1' ( smooth out 4-component vector of float)
+0:?     'anon@1' ( out block{ out 4-component vector of float var2,  out 2-component vector of float var3,  out 3-component vector of float var4})
+0:?     'var5' ( smooth out 4-component vector of float)
+0:?     'anon@2' ( out block{ out 4-component vector of float var6})
+0:?     'var7' ( smooth out 4-component vector of float)
+0:?     'anon@3' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4X4 matrix of float M1, layout( column_major std140 offset=64) uniform 4X4 matrix of float M2, layout( row_major std140 offset=128) uniform 3X3 matrix of float N1})
+0:?     'anon@4' (layout( column_major shared) uniform block{layout( column_major shared) uniform 4X4 matrix of float M13, layout( row_major shared) uniform 4X4 matrix of float m14, layout( column_major shared) uniform 3X3 matrix of float N12})
+0:?     's17' (layout( binding=3) uniform sampler2D)
+0:?     'a2' (layout( binding=2 offset=4) uniform atomic_uint)
+0:?     'bar' (layout( binding=2) uniform atomic_uint)
+0:?     'bar23' (layout( offset=8) uniform atomic_uint)
+0:?     'b2' (layout( binding=2) uniform atomic_uint)
+0:?     'c2' (layout( binding=3) uniform atomic_uint)
+0:?     'd2' (layout( binding=2) uniform atomic_uint)
+0:?     'anon@5' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  flat out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:?     'ColorInv' ( smooth out 3-component vector of float)
+0:?     'Color4' ( invariant centroid smooth out 3-component vector of float)
+0:?     'position' ( noContraction smooth out 4-component vector of float)
+0:?     'Color5' ( noContraction smooth out 3-component vector of float)
+0:?     'a' ( in 4-component vector of float)
+0:?     'b' ( in 4-component vector of float)
+0:?     'c' ( in 4-component vector of float)
+0:?     'd' ( in 4-component vector of float)
+0:?     'v' ( noContraction smooth out 4-component vector of float)
+0:?     'anon@6' (layout( column_major shared) coherent buffer block{layout( column_major shared) readonly buffer 4-component vector of float member1, layout( column_major shared) buffer 4-component vector of float member2})
+0:?     'anon@7' (layout( column_major shared) buffer block{layout( column_major shared) coherent readonly buffer 4-component vector of float member1A, layout( column_major shared) coherent buffer 4-component vector of float member2A})
+0:?     'shv' ( shared 4-component vector of float)
+0:?     'img1' (layout( rgba32f) uniform image2D)
+0:?     'img2' (layout( rgba32f) coherent uniform image2D)
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+

+ 45 - 0
3rdparty/glslang/Test/baseResults/spv.constStruct.vert.out

@@ -0,0 +1,45 @@
+spv.constStruct.vert
+// Module Version 10000
+// Generated by (magic number): 80004
+// Id's are bound by 23
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main"
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 9  "T"
+                              MemberName 9(T) 0  "m"
+                              Name 10  "U"
+                              MemberName 10(U) 0  "m"
+                              Name 11  "S"
+                              MemberName 11(S) 0  "t"
+                              MemberName 11(S) 1  "u"
+                              Name 13  "s1"
+                              Name 22  "s2"
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 2
+               8:             TypeMatrix 7(fvec2) 2
+            9(T):             TypeStruct 8
+           10(U):             TypeStruct 8
+           11(S):             TypeStruct 9(T) 10(U)
+              12:             TypePointer Function 11(S)
+              14:    6(float) Constant 1065353216
+              15:    6(float) Constant 0
+              16:    7(fvec2) ConstantComposite 14 15
+              17:    7(fvec2) ConstantComposite 15 14
+              18:           8 ConstantComposite 16 17
+              19:        9(T) ConstantComposite 18
+              20:       10(U) ConstantComposite 18
+              21:       11(S) ConstantComposite 19 20
+         4(main):           2 Function None 3
+               5:             Label
+          13(s1):     12(ptr) Variable Function
+          22(s2):     12(ptr) Variable Function
+                              Store 13(s1) 21
+                              Store 22(s2) 21
+                              Return
+                              FunctionEnd

+ 8 - 0
3rdparty/glslang/Test/hlsl.imagefetch-subvec4.comp

@@ -0,0 +1,8 @@
+Texture3D<int> IN: register(t0);
+RWTexture3D<uint> OUT: register(u1);
+
+[numthreads(8,8,8)]
+void main(uint3 tid: SV_DispatchThreadID)
+{
+    OUT[tid] = IN[tid];
+}

+ 22 - 0
3rdparty/glslang/Test/spv.constStruct.vert

@@ -0,0 +1,22 @@
+#version 450
+
+precision highp float;
+
+struct U {
+    mat2 m;
+};
+
+struct T {
+    mat2 m;
+};
+
+struct S {
+    T t;
+    U u;
+};
+
+void main()
+{
+    S s1 = S(T(mat2(1.0)), U(mat2(1.0)));
+    S s2 = S(T(mat2(1.0)), U(mat2(1.0)));
+}