Selaa lähdekoodia

Updated glslang.

Branimir Karadžić 8 vuotta sitten
vanhempi
sitoutus
32dce22fff

+ 254 - 200
3rdparty/glslang/Test/baseResults/hlsl.buffer.frag.out

@@ -8,50 +8,66 @@ gl_FragCoord origin is upper left
 0:31      Branch: Return with expression
 0:31        Constant:
 0:31          1.000000
-0:35  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:35    Function Parameters: 
-0:35      'input' ( in 4-component vector of float)
+0:43  Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
+0:43    Function Parameters: 
+0:43      'input' ( in 4-component vector of float)
 0:?     Sequence
-0:36      Branch: Return with expression
-0:36        vector-scale ( temp 4-component vector of float)
-0:36          add ( temp 4-component vector of float)
-0:36            add ( temp 4-component vector of float)
-0:36              add ( temp 4-component vector of float)
-0:36                add ( temp 4-component vector of float)
-0:36                  'input' ( in 4-component vector of float)
-0:36                  v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
-0:36                    'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
-0:36                    Constant:
-0:36                      0 (const uint)
-0:36                v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
-0:36                  'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
-0:36                  Constant:
-0:36                    0 (const uint)
-0:36              v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
-0:36                'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
-0:36                Constant:
-0:36                  0 (const uint)
-0:36            v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:36              'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
-0:36              Constant:
-0:36                0 (const uint)
-0:36          Function Call: foo( ( temp float)
-0:35  Function Definition: PixelShaderFunction( ( temp void)
-0:35    Function Parameters: 
+0:45      move second child to first child ( temp 4-component vector of float)
+0:45        a: direct index for structure ( temp 4-component vector of float)
+0:45          'ret' ( temp structure{ temp 4-component vector of float a})
+0:45          Constant:
+0:45            0 (const int)
+0:45        add ( temp 4-component vector of float)
+0:45          v24: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:45            'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
+0:45            Constant:
+0:45              0 (const uint)
+0:45          vector-scale ( temp 4-component vector of float)
+0:45            add ( temp 4-component vector of float)
+0:45              add ( temp 4-component vector of float)
+0:45                add ( temp 4-component vector of float)
+0:45                  add ( temp 4-component vector of float)
+0:45                    'input' ( in 4-component vector of float)
+0:45                    v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:45                      'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
+0:45                      Constant:
+0:45                        0 (const uint)
+0:45                  v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
+0:45                    'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
+0:45                    Constant:
+0:45                      0 (const uint)
+0:45                v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
+0:45                  'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
+0:45                  Constant:
+0:45                    0 (const uint)
+0:45              v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
+0:45                'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
+0:45                Constant:
+0:45                  0 (const uint)
+0:45            Function Call: foo( ( temp float)
+0:46      Branch: Return with expression
+0:46        'ret' ( temp structure{ temp 4-component vector of float a})
+0:43  Function Definition: PixelShaderFunction( ( temp void)
+0:43    Function Parameters: 
 0:?     Sequence
-0:35      move second child to first child ( temp 4-component vector of float)
+0:43      move second child to first child ( temp 4-component vector of float)
 0:?         'input' ( temp 4-component vector of float)
 0:?         'input' ( in 4-component vector of float FragCoord)
-0:35      move second child to first child ( temp 4-component vector of float)
-0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:35        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:?           'input' ( temp 4-component vector of float)
+0:43      Sequence
+0:43        move second child to first child ( temp 4-component vector of float)
+0:?           '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
+0:43          a: direct index for structure ( temp 4-component vector of float)
+0:43            Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
+0:?               'input' ( temp 4-component vector of float)
+0:43            Constant:
+0:43              0 (const int)
 0:?   Linker Objects
 0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
 0:?     'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
 0:?     'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
 0:?     'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
-0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
+0:?     '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
 0:?     'input' ( in 4-component vector of float FragCoord)
 
 
@@ -67,203 +83,241 @@ gl_FragCoord origin is upper left
 0:31      Branch: Return with expression
 0:31        Constant:
 0:31          1.000000
-0:35  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:35    Function Parameters: 
-0:35      'input' ( in 4-component vector of float)
+0:43  Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
+0:43    Function Parameters: 
+0:43      'input' ( in 4-component vector of float)
 0:?     Sequence
-0:36      Branch: Return with expression
-0:36        vector-scale ( temp 4-component vector of float)
-0:36          add ( temp 4-component vector of float)
-0:36            add ( temp 4-component vector of float)
-0:36              add ( temp 4-component vector of float)
-0:36                add ( temp 4-component vector of float)
-0:36                  'input' ( in 4-component vector of float)
-0:36                  v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
-0:36                    'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
-0:36                    Constant:
-0:36                      0 (const uint)
-0:36                v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
-0:36                  'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
-0:36                  Constant:
-0:36                    0 (const uint)
-0:36              v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
-0:36                'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
-0:36                Constant:
-0:36                  0 (const uint)
-0:36            v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:36              'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
-0:36              Constant:
-0:36                0 (const uint)
-0:36          Function Call: foo( ( temp float)
-0:35  Function Definition: PixelShaderFunction( ( temp void)
-0:35    Function Parameters: 
+0:45      move second child to first child ( temp 4-component vector of float)
+0:45        a: direct index for structure ( temp 4-component vector of float)
+0:45          'ret' ( temp structure{ temp 4-component vector of float a})
+0:45          Constant:
+0:45            0 (const int)
+0:45        add ( temp 4-component vector of float)
+0:45          v24: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:45            'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
+0:45            Constant:
+0:45              0 (const uint)
+0:45          vector-scale ( temp 4-component vector of float)
+0:45            add ( temp 4-component vector of float)
+0:45              add ( temp 4-component vector of float)
+0:45                add ( temp 4-component vector of float)
+0:45                  add ( temp 4-component vector of float)
+0:45                    'input' ( in 4-component vector of float)
+0:45                    v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
+0:45                      'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
+0:45                      Constant:
+0:45                        0 (const uint)
+0:45                  v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
+0:45                    'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
+0:45                    Constant:
+0:45                      0 (const uint)
+0:45                v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
+0:45                  'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
+0:45                  Constant:
+0:45                    0 (const uint)
+0:45              v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
+0:45                'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
+0:45                Constant:
+0:45                  0 (const uint)
+0:45            Function Call: foo( ( temp float)
+0:46      Branch: Return with expression
+0:46        'ret' ( temp structure{ temp 4-component vector of float a})
+0:43  Function Definition: PixelShaderFunction( ( temp void)
+0:43    Function Parameters: 
 0:?     Sequence
-0:35      move second child to first child ( temp 4-component vector of float)
+0:43      move second child to first child ( temp 4-component vector of float)
 0:?         'input' ( temp 4-component vector of float)
 0:?         'input' ( in 4-component vector of float FragCoord)
-0:35      move second child to first child ( temp 4-component vector of float)
-0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:35        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:?           'input' ( temp 4-component vector of float)
+0:43      Sequence
+0:43        move second child to first child ( temp 4-component vector of float)
+0:?           '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
+0:43          a: direct index for structure ( temp 4-component vector of float)
+0:43            Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
+0:?               'input' ( temp 4-component vector of float)
+0:43            Constant:
+0:43              0 (const int)
 0:?   Linker Objects
 0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
 0:?     'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
 0:?     'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
 0:?     'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
-0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
+0:?     'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
+0:?     '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
 0:?     'input' ( in 4-component vector of float FragCoord)
 
 // Module Version 10000
 // Generated by (magic number): 80003
-// Id's are bound by 61
+// Id's are bound by 73
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 54 57
+                              EntryPoint Fragment 4  "PixelShaderFunction" 65 68
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "PixelShaderFunction"
                               Name 8  "foo("
-                              Name 14  "@PixelShaderFunction(vf4;"
-                              Name 13  "input"
-                              Name 20  "buf1"
-                              MemberName 20(buf1) 0  "v1"
-                              Name 22  ""
-                              Name 29  "buf2"
-                              MemberName 29(buf2) 0  "v2"
-                              Name 31  ""
-                              Name 35  "cbufName"
-                              MemberName 35(cbufName) 0  "v3"
-                              MemberName 35(cbufName) 1  "i3"
-                              Name 37  ""
-                              Name 42  "tbufName"
-                              MemberName 42(tbufName) 0  "v4"
-                              MemberName 42(tbufName) 1  "i4"
-                              MemberName 42(tbufName) 2  "f1"
-                              MemberName 42(tbufName) 3  "f3"
-                              MemberName 42(tbufName) 4  "f4"
-                              MemberName 42(tbufName) 5  "f5"
-                              MemberName 42(tbufName) 6  "f6"
-                              MemberName 42(tbufName) 7  "f7"
-                              MemberName 42(tbufName) 8  "m1"
-                              MemberName 42(tbufName) 9  "m2"
-                              MemberName 42(tbufName) 10  "m3"
-                              MemberName 42(tbufName) 11  "m4"
-                              Name 44  ""
-                              Name 52  "input"
-                              Name 54  "input"
-                              Name 57  "@entryPointOutput"
-                              Name 58  "param"
-                              MemberDecorate 20(buf1) 0 Offset 0
-                              Decorate 20(buf1) Block
-                              Decorate 22 DescriptorSet 0
-                              MemberDecorate 29(buf2) 0 NonWritable
-                              MemberDecorate 29(buf2) 0 Offset 0
-                              Decorate 29(buf2) BufferBlock
-                              Decorate 31 DescriptorSet 0
-                              MemberDecorate 35(cbufName) 0 Offset 0
-                              MemberDecorate 35(cbufName) 1 Offset 20
-                              Decorate 35(cbufName) Block
-                              Decorate 37 DescriptorSet 0
-                              MemberDecorate 42(tbufName) 0 NonWritable
-                              MemberDecorate 42(tbufName) 0 Offset 16
-                              MemberDecorate 42(tbufName) 1 NonWritable
-                              MemberDecorate 42(tbufName) 1 Offset 48
-                              MemberDecorate 42(tbufName) 2 NonWritable
-                              MemberDecorate 42(tbufName) 2 Offset 60
-                              MemberDecorate 42(tbufName) 3 NonWritable
-                              MemberDecorate 42(tbufName) 3 Offset 64
-                              MemberDecorate 42(tbufName) 4 NonWritable
-                              MemberDecorate 42(tbufName) 4 Offset 68
-                              MemberDecorate 42(tbufName) 5 NonWritable
-                              MemberDecorate 42(tbufName) 5 Offset 72
-                              MemberDecorate 42(tbufName) 6 NonWritable
-                              MemberDecorate 42(tbufName) 6 Offset 76
-                              MemberDecorate 42(tbufName) 7 NonWritable
-                              MemberDecorate 42(tbufName) 7 Offset 128
-                              MemberDecorate 42(tbufName) 8 RowMajor
-                              MemberDecorate 42(tbufName) 8 NonWritable
-                              MemberDecorate 42(tbufName) 8 Offset 112
-                              MemberDecorate 42(tbufName) 8 MatrixStride 16
-                              MemberDecorate 42(tbufName) 9 ColMajor
-                              MemberDecorate 42(tbufName) 9 NonWritable
-                              MemberDecorate 42(tbufName) 9 Offset 176
-                              MemberDecorate 42(tbufName) 9 MatrixStride 16
-                              MemberDecorate 42(tbufName) 10 RowMajor
-                              MemberDecorate 42(tbufName) 10 NonWritable
-                              MemberDecorate 42(tbufName) 10 Offset 240
-                              MemberDecorate 42(tbufName) 10 MatrixStride 16
-                              MemberDecorate 42(tbufName) 11 RowMajor
-                              MemberDecorate 42(tbufName) 11 NonWritable
-                              MemberDecorate 42(tbufName) 11 Offset 304
-                              MemberDecorate 42(tbufName) 11 MatrixStride 16
-                              Decorate 42(tbufName) BufferBlock
-                              Decorate 44 DescriptorSet 0
-                              Decorate 44 Binding 8
-                              Decorate 54(input) BuiltIn FragCoord
-                              Decorate 57(@entryPointOutput) Location 0
+                              Name 12  "id"
+                              MemberName 12(id) 0  "a"
+                              Name 15  "@PixelShaderFunction(vf4;"
+                              Name 14  "input"
+                              Name 21  "ret"
+                              Name 24  "cbufName2"
+                              MemberName 24(cbufName2) 0  "v24"
+                              Name 26  ""
+                              Name 31  "buf1"
+                              MemberName 31(buf1) 0  "v1"
+                              Name 33  ""
+                              Name 37  "buf2"
+                              MemberName 37(buf2) 0  "v2"
+                              Name 39  ""
+                              Name 43  "cbufName"
+                              MemberName 43(cbufName) 0  "v3"
+                              MemberName 43(cbufName) 1  "i3"
+                              Name 45  ""
+                              Name 50  "tbufName"
+                              MemberName 50(tbufName) 0  "v4"
+                              MemberName 50(tbufName) 1  "i4"
+                              MemberName 50(tbufName) 2  "f1"
+                              MemberName 50(tbufName) 3  "f3"
+                              MemberName 50(tbufName) 4  "f4"
+                              MemberName 50(tbufName) 5  "f5"
+                              MemberName 50(tbufName) 6  "f6"
+                              MemberName 50(tbufName) 7  "f7"
+                              MemberName 50(tbufName) 8  "m1"
+                              MemberName 50(tbufName) 9  "m2"
+                              MemberName 50(tbufName) 10  "m3"
+                              MemberName 50(tbufName) 11  "m4"
+                              Name 52  ""
+                              Name 63  "input"
+                              Name 65  "input"
+                              Name 68  "@entryPointOutput.a"
+                              Name 69  "param"
+                              MemberDecorate 24(cbufName2) 0 Offset 0
+                              Decorate 24(cbufName2) Block
+                              Decorate 26 DescriptorSet 0
+                              MemberDecorate 31(buf1) 0 Offset 0
+                              Decorate 31(buf1) Block
+                              Decorate 33 DescriptorSet 0
+                              MemberDecorate 37(buf2) 0 NonWritable
+                              MemberDecorate 37(buf2) 0 Offset 0
+                              Decorate 37(buf2) BufferBlock
+                              Decorate 39 DescriptorSet 0
+                              MemberDecorate 43(cbufName) 0 Offset 0
+                              MemberDecorate 43(cbufName) 1 Offset 20
+                              Decorate 43(cbufName) Block
+                              Decorate 45 DescriptorSet 0
+                              MemberDecorate 50(tbufName) 0 NonWritable
+                              MemberDecorate 50(tbufName) 0 Offset 16
+                              MemberDecorate 50(tbufName) 1 NonWritable
+                              MemberDecorate 50(tbufName) 1 Offset 48
+                              MemberDecorate 50(tbufName) 2 NonWritable
+                              MemberDecorate 50(tbufName) 2 Offset 60
+                              MemberDecorate 50(tbufName) 3 NonWritable
+                              MemberDecorate 50(tbufName) 3 Offset 64
+                              MemberDecorate 50(tbufName) 4 NonWritable
+                              MemberDecorate 50(tbufName) 4 Offset 68
+                              MemberDecorate 50(tbufName) 5 NonWritable
+                              MemberDecorate 50(tbufName) 5 Offset 72
+                              MemberDecorate 50(tbufName) 6 NonWritable
+                              MemberDecorate 50(tbufName) 6 Offset 76
+                              MemberDecorate 50(tbufName) 7 NonWritable
+                              MemberDecorate 50(tbufName) 7 Offset 128
+                              MemberDecorate 50(tbufName) 8 RowMajor
+                              MemberDecorate 50(tbufName) 8 NonWritable
+                              MemberDecorate 50(tbufName) 8 Offset 112
+                              MemberDecorate 50(tbufName) 8 MatrixStride 16
+                              MemberDecorate 50(tbufName) 9 ColMajor
+                              MemberDecorate 50(tbufName) 9 NonWritable
+                              MemberDecorate 50(tbufName) 9 Offset 176
+                              MemberDecorate 50(tbufName) 9 MatrixStride 16
+                              MemberDecorate 50(tbufName) 10 RowMajor
+                              MemberDecorate 50(tbufName) 10 NonWritable
+                              MemberDecorate 50(tbufName) 10 Offset 240
+                              MemberDecorate 50(tbufName) 10 MatrixStride 16
+                              MemberDecorate 50(tbufName) 11 RowMajor
+                              MemberDecorate 50(tbufName) 11 NonWritable
+                              MemberDecorate 50(tbufName) 11 Offset 304
+                              MemberDecorate 50(tbufName) 11 MatrixStride 16
+                              Decorate 50(tbufName) BufferBlock
+                              Decorate 52 DescriptorSet 0
+                              Decorate 52 Binding 8
+                              Decorate 65(input) BuiltIn FragCoord
+                              Decorate 68(@entryPointOutput.a) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypeFunction 6(float)
               10:             TypeVector 6(float) 4
               11:             TypePointer Function 10(fvec4)
-              12:             TypeFunction 10(fvec4) 11(ptr)
-              16:    6(float) Constant 1065353216
-        20(buf1):             TypeStruct 10(fvec4)
-              21:             TypePointer Uniform 20(buf1)
-              22:     21(ptr) Variable Uniform
-              23:             TypeInt 32 1
-              24:     23(int) Constant 0
-              25:             TypePointer Uniform 10(fvec4)
-        29(buf2):             TypeStruct 10(fvec4)
-              30:             TypePointer Uniform 29(buf2)
-              31:     30(ptr) Variable Uniform
-    35(cbufName):             TypeStruct 10(fvec4) 23(int)
-              36:             TypePointer Uniform 35(cbufName)
-              37:     36(ptr) Variable Uniform
-              41:             TypeMatrix 10(fvec4) 3
-    42(tbufName):             TypeStruct 10(fvec4) 23(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 41 41 41 41
-              43:             TypePointer Uniform 42(tbufName)
-              44:     43(ptr) Variable Uniform
-              53:             TypePointer Input 10(fvec4)
-       54(input):     53(ptr) Variable Input
-              56:             TypePointer Output 10(fvec4)
-57(@entryPointOutput):     56(ptr) Variable Output
+          12(id):             TypeStruct 10(fvec4)
+              13:             TypeFunction 12(id) 11(ptr)
+              17:    6(float) Constant 1065353216
+              20:             TypePointer Function 12(id)
+              22:             TypeInt 32 1
+              23:     22(int) Constant 0
+   24(cbufName2):             TypeStruct 10(fvec4)
+              25:             TypePointer Uniform 24(cbufName2)
+              26:     25(ptr) Variable Uniform
+              27:             TypePointer Uniform 10(fvec4)
+        31(buf1):             TypeStruct 10(fvec4)
+              32:             TypePointer Uniform 31(buf1)
+              33:     32(ptr) Variable Uniform
+        37(buf2):             TypeStruct 10(fvec4)
+              38:             TypePointer Uniform 37(buf2)
+              39:     38(ptr) Variable Uniform
+    43(cbufName):             TypeStruct 10(fvec4) 22(int)
+              44:             TypePointer Uniform 43(cbufName)
+              45:     44(ptr) Variable Uniform
+              49:             TypeMatrix 10(fvec4) 3
+    50(tbufName):             TypeStruct 10(fvec4) 22(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 49 49 49 49
+              51:             TypePointer Uniform 50(tbufName)
+              52:     51(ptr) Variable Uniform
+              64:             TypePointer Input 10(fvec4)
+       65(input):     64(ptr) Variable Input
+              67:             TypePointer Output 10(fvec4)
+68(@entryPointOutput.a):     67(ptr) Variable Output
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
-       52(input):     11(ptr) Variable Function
-       58(param):     11(ptr) Variable Function
-              55:   10(fvec4) Load 54(input)
-                              Store 52(input) 55
-              59:   10(fvec4) Load 52(input)
-                              Store 58(param) 59
-              60:   10(fvec4) FunctionCall 14(@PixelShaderFunction(vf4;) 58(param)
-                              Store 57(@entryPointOutput) 60
+       63(input):     11(ptr) Variable Function
+       69(param):     11(ptr) Variable Function
+              66:   10(fvec4) Load 65(input)
+                              Store 63(input) 66
+              70:   10(fvec4) Load 63(input)
+                              Store 69(param) 70
+              71:      12(id) FunctionCall 15(@PixelShaderFunction(vf4;) 69(param)
+              72:   10(fvec4) CompositeExtract 71 0
+                              Store 68(@entryPointOutput.a) 72
                               Return
                               FunctionEnd
          8(foo():    6(float) Function None 7
                9:             Label
-                              ReturnValue 16
+                              ReturnValue 17
                               FunctionEnd
-14(@PixelShaderFunction(vf4;):   10(fvec4) Function None 12
-       13(input):     11(ptr) FunctionParameter
-              15:             Label
-              19:   10(fvec4) Load 13(input)
-              26:     25(ptr) AccessChain 22 24
-              27:   10(fvec4) Load 26
-              28:   10(fvec4) FAdd 19 27
-              32:     25(ptr) AccessChain 31 24
-              33:   10(fvec4) Load 32
-              34:   10(fvec4) FAdd 28 33
-              38:     25(ptr) AccessChain 37 24
-              39:   10(fvec4) Load 38
-              40:   10(fvec4) FAdd 34 39
-              45:     25(ptr) AccessChain 44 24
-              46:   10(fvec4) Load 45
-              47:   10(fvec4) FAdd 40 46
-              48:    6(float) FunctionCall 8(foo()
-              49:   10(fvec4) VectorTimesScalar 47 48
-                              ReturnValue 49
+15(@PixelShaderFunction(vf4;):      12(id) Function None 13
+       14(input):     11(ptr) FunctionParameter
+              16:             Label
+         21(ret):     20(ptr) Variable Function
+              28:     27(ptr) AccessChain 26 23
+              29:   10(fvec4) Load 28
+              30:   10(fvec4) Load 14(input)
+              34:     27(ptr) AccessChain 33 23
+              35:   10(fvec4) Load 34
+              36:   10(fvec4) FAdd 30 35
+              40:     27(ptr) AccessChain 39 23
+              41:   10(fvec4) Load 40
+              42:   10(fvec4) FAdd 36 41
+              46:     27(ptr) AccessChain 45 23
+              47:   10(fvec4) Load 46
+              48:   10(fvec4) FAdd 42 47
+              53:     27(ptr) AccessChain 52 23
+              54:   10(fvec4) Load 53
+              55:   10(fvec4) FAdd 48 54
+              56:    6(float) FunctionCall 8(foo()
+              57:   10(fvec4) VectorTimesScalar 55 56
+              58:   10(fvec4) FAdd 29 57
+              59:     11(ptr) AccessChain 21(ret) 23
+                              Store 59 58
+              60:      12(id) Load 21(ret)
+                              ReturnValue 60
                               FunctionEnd

+ 111 - 84
3rdparty/glslang/Test/baseResults/hlsl.layout.frag.out

@@ -6,23 +6,33 @@ gl_FragCoord origin is upper left
 0:16    Function Parameters: 
 0:16      'input' ( in 4-component vector of float)
 0:?     Sequence
-0:17      Branch: Return with expression
-0:17        add ( temp 4-component vector of float)
-0:17          add ( temp 4-component vector of float)
-0:17            add ( temp 4-component vector of float)
-0:17              'input' ( in 4-component vector of float)
-0:17              v1: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:17                'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
-0:17                Constant:
-0:17                  0 (const uint)
-0:17            v5: direct index for structure (layout( row_major std430 offset=0) buffer 4-component vector of float)
-0:17              'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
-0:17              Constant:
-0:17                0 (const uint)
-0:17          v1PostLayout: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:17            'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
-0:17            Constant:
-0:17              0 (const uint)
+0:17      Sequence
+0:17        move second child to first child ( temp 4-component vector of float)
+0:17          'layout' ( temp 4-component vector of float)
+0:17          Constant:
+0:17            2.000000
+0:17            2.000000
+0:17            2.000000
+0:17            2.000000
+0:18      Branch: Return with expression
+0:18        add ( temp 4-component vector of float)
+0:18          add ( temp 4-component vector of float)
+0:18            add ( temp 4-component vector of float)
+0:18              'input' ( in 4-component vector of float)
+0:18              v1: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
+0:18                'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
+0:18                Constant:
+0:18                  0 (const uint)
+0:18            v5: direct index for structure (layout( row_major std430 offset=0) buffer 4-component vector of float)
+0:18              'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
+0:18              Constant:
+0:18                0 (const uint)
+0:18          component-wise multiply ( temp 4-component vector of float)
+0:18            v1PostLayout: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
+0:18              'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
+0:18              Constant:
+0:18                0 (const uint)
+0:18            'layout' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
 0:?     'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
@@ -42,23 +52,33 @@ gl_FragCoord origin is upper left
 0:16    Function Parameters: 
 0:16      'input' ( in 4-component vector of float)
 0:?     Sequence
-0:17      Branch: Return with expression
-0:17        add ( temp 4-component vector of float)
-0:17          add ( temp 4-component vector of float)
-0:17            add ( temp 4-component vector of float)
-0:17              'input' ( in 4-component vector of float)
-0:17              v1: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:17                'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
-0:17                Constant:
-0:17                  0 (const uint)
-0:17            v5: direct index for structure (layout( row_major std430 offset=0) buffer 4-component vector of float)
-0:17              'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
-0:17              Constant:
-0:17                0 (const uint)
-0:17          v1PostLayout: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
-0:17            'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
-0:17            Constant:
-0:17              0 (const uint)
+0:17      Sequence
+0:17        move second child to first child ( temp 4-component vector of float)
+0:17          'layout' ( temp 4-component vector of float)
+0:17          Constant:
+0:17            2.000000
+0:17            2.000000
+0:17            2.000000
+0:17            2.000000
+0:18      Branch: Return with expression
+0:18        add ( temp 4-component vector of float)
+0:18          add ( temp 4-component vector of float)
+0:18            add ( temp 4-component vector of float)
+0:18              'input' ( in 4-component vector of float)
+0:18              v1: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
+0:18                'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
+0:18                Constant:
+0:18                  0 (const uint)
+0:18            v5: direct index for structure (layout( row_major std430 offset=0) buffer 4-component vector of float)
+0:18              'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
+0:18              Constant:
+0:18                0 (const uint)
+0:18          component-wise multiply ( temp 4-component vector of float)
+0:18            v1PostLayout: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
+0:18              'anon@2' (layout( set=4 binding=7 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1PostLayout})
+0:18              Constant:
+0:18                0 (const uint)
+0:18            'layout' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     'anon@0' (layout( set=3 binding=5 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v1})
 0:?     'anon@1' (layout( row_major std430 push_constant) readonly buffer block{layout( row_major std430 offset=0) buffer 4-component vector of float v5})
@@ -68,7 +88,7 @@ gl_FragCoord origin is upper left
 
 // Module Version 10000
 // Generated by (magic number): 80003
-// Id's are bound by 39
+// Id's are bound by 44
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -79,50 +99,53 @@ gl_FragCoord origin is upper left
                               Name 4  "main"
                               Name 11  "PixelShaderFunction(vf4;"
                               Name 10  "input"
-                              Name 14  "tbufName"
-                              MemberName 14(tbufName) 0  "v1"
-                              Name 16  ""
-                              Name 23  "tbufName2"
-                              MemberName 23(tbufName2) 0  "v5"
-                              Name 25  ""
-                              Name 30  "tbufName2"
-                              MemberName 30(tbufName2) 0  "v1PostLayout"
-                              Name 32  ""
-                              Name 38  "specConst"
-                              MemberDecorate 14(tbufName) 0 NonWritable
-                              MemberDecorate 14(tbufName) 0 Offset 16
-                              Decorate 14(tbufName) BufferBlock
-                              Decorate 16 DescriptorSet 3
-                              Decorate 16 Binding 5
-                              MemberDecorate 23(tbufName2) 0 NonWritable
-                              MemberDecorate 23(tbufName2) 0 Offset 0
-                              Decorate 23(tbufName2) BufferBlock
-                              MemberDecorate 30(tbufName2) 0 NonWritable
-                              MemberDecorate 30(tbufName2) 0 Offset 16
-                              Decorate 30(tbufName2) BufferBlock
-                              Decorate 32 DescriptorSet 4
-                              Decorate 32 Binding 7
-                              Decorate 38(specConst) SpecId 17
+                              Name 13  "layout"
+                              Name 17  "tbufName"
+                              MemberName 17(tbufName) 0  "v1"
+                              Name 19  ""
+                              Name 26  "tbufName2"
+                              MemberName 26(tbufName2) 0  "v5"
+                              Name 28  ""
+                              Name 33  "tbufName2"
+                              MemberName 33(tbufName2) 0  "v1PostLayout"
+                              Name 35  ""
+                              Name 43  "specConst"
+                              MemberDecorate 17(tbufName) 0 NonWritable
+                              MemberDecorate 17(tbufName) 0 Offset 16
+                              Decorate 17(tbufName) BufferBlock
+                              Decorate 19 DescriptorSet 3
+                              Decorate 19 Binding 5
+                              MemberDecorate 26(tbufName2) 0 NonWritable
+                              MemberDecorate 26(tbufName2) 0 Offset 0
+                              Decorate 26(tbufName2) BufferBlock
+                              MemberDecorate 33(tbufName2) 0 NonWritable
+                              MemberDecorate 33(tbufName2) 0 Offset 16
+                              Decorate 33(tbufName2) BufferBlock
+                              Decorate 35 DescriptorSet 4
+                              Decorate 35 Binding 7
+                              Decorate 43(specConst) SpecId 17
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypeVector 6(float) 4
                8:             TypePointer Function 7(fvec4)
                9:             TypeFunction 7(fvec4) 8(ptr)
-    14(tbufName):             TypeStruct 7(fvec4)
-              15:             TypePointer Uniform 14(tbufName)
-              16:     15(ptr) Variable Uniform
-              17:             TypeInt 32 1
-              18:     17(int) Constant 0
-              19:             TypePointer Uniform 7(fvec4)
-   23(tbufName2):             TypeStruct 7(fvec4)
-              24:             TypePointer PushConstant 23(tbufName2)
-              25:     24(ptr) Variable PushConstant
-              26:             TypePointer PushConstant 7(fvec4)
-   30(tbufName2):             TypeStruct 7(fvec4)
-              31:             TypePointer Uniform 30(tbufName2)
-              32:     31(ptr) Variable Uniform
-   38(specConst):     17(int) SpecConstant 10
+              14:    6(float) Constant 1073741824
+              15:    7(fvec4) ConstantComposite 14 14 14 14
+    17(tbufName):             TypeStruct 7(fvec4)
+              18:             TypePointer Uniform 17(tbufName)
+              19:     18(ptr) Variable Uniform
+              20:             TypeInt 32 1
+              21:     20(int) Constant 0
+              22:             TypePointer Uniform 7(fvec4)
+   26(tbufName2):             TypeStruct 7(fvec4)
+              27:             TypePointer PushConstant 26(tbufName2)
+              28:     27(ptr) Variable PushConstant
+              29:             TypePointer PushConstant 7(fvec4)
+   33(tbufName2):             TypeStruct 7(fvec4)
+              34:             TypePointer Uniform 33(tbufName2)
+              35:     34(ptr) Variable Uniform
+   43(specConst):     20(int) SpecConstant 10
          4(main):           2 Function None 3
                5:             Label
                               Return
@@ -130,15 +153,19 @@ gl_FragCoord origin is upper left
 11(PixelShaderFunction(vf4;):    7(fvec4) Function None 9
        10(input):      8(ptr) FunctionParameter
               12:             Label
-              13:    7(fvec4) Load 10(input)
-              20:     19(ptr) AccessChain 16 18
-              21:    7(fvec4) Load 20
-              22:    7(fvec4) FAdd 13 21
-              27:     26(ptr) AccessChain 25 18
-              28:    7(fvec4) Load 27
-              29:    7(fvec4) FAdd 22 28
-              33:     19(ptr) AccessChain 32 18
-              34:    7(fvec4) Load 33
-              35:    7(fvec4) FAdd 29 34
-                              ReturnValue 35
+      13(layout):      8(ptr) Variable Function
+                              Store 13(layout) 15
+              16:    7(fvec4) Load 10(input)
+              23:     22(ptr) AccessChain 19 21
+              24:    7(fvec4) Load 23
+              25:    7(fvec4) FAdd 16 24
+              30:     29(ptr) AccessChain 28 21
+              31:    7(fvec4) Load 30
+              32:    7(fvec4) FAdd 25 31
+              36:     22(ptr) AccessChain 35 21
+              37:    7(fvec4) Load 36
+              38:    7(fvec4) Load 13(layout)
+              39:    7(fvec4) FMul 37 38
+              40:    7(fvec4) FAdd 32 39
+                              ReturnValue 40
                               FunctionEnd

+ 12 - 2
3rdparty/glslang/Test/hlsl.buffer.frag

@@ -31,7 +31,17 @@ float foo() // float looks like identifier, but can't be part of tbuffer
     return 1.0;
 }
 
-float4 PixelShaderFunction(float4 input : SV_POSITION) : SV_TARGET0
+struct id {
+    float4 a;
+};
+
+cbuffer cbufName2 {
+    float4 v24;
+}
+
+id PixelShaderFunction(float4 input : SV_POSITION) : SV_TARGET0  // id looks like id for cbuffer name, but can't be
 {
-    return (input + v1 + v2 + v3 + v4) * foo();
+    id ret;
+    ret.a = v24 + (input + v1 + v2 + v3 + v4) * foo();
+    return ret;
 }

+ 2 - 1
3rdparty/glslang/Test/hlsl.layout.frag

@@ -14,5 +14,6 @@ tbuffer tbufName2 : layout(set=4,binding=7) {
 
 float4 PixelShaderFunction(float4 input) : COLOR0
 {
-    return input + v1 + v5 + v1PostLayout;
+    float4 layout = 2.0;
+    return input + v1 + v5 + v1PostLayout * layout;
 }

+ 6 - 3
3rdparty/glslang/hlsl/hlslGrammar.cpp

@@ -376,7 +376,7 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
 
     bool forbidDeclarators = (peekTokenClass(EHTokCBuffer) || peekTokenClass(EHTokTBuffer));
     // fully_specified_type
-    if (! acceptFullySpecifiedType(declaredType, nodeList, declarator.attributes))
+    if (! acceptFullySpecifiedType(declaredType, nodeList, declarator.attributes, forbidDeclarators))
         return false;
 
     // cbuffer and tbuffer end with the closing '}'.
@@ -583,7 +583,7 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type, const TAttributeMap& att
     TIntermNode* nodeList = nullptr;
     return acceptFullySpecifiedType(type, nodeList, attributes);
 }
-bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList, const TAttributeMap& attributes)
+bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList, const TAttributeMap& attributes, bool forbidDeclarators)
 {
     // type_qualifier
     TQualifier qualifier;
@@ -611,7 +611,9 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList,
         parseContext.transferTypeAttributes(attributes, type);
 
         // further, it can create an anonymous instance of the block
-        if (peek() != EHTokIdentifier)
+        // (cbuffer and tbuffer don't consume the next identifier, and
+        // should set forbidDeclarators)
+        if (forbidDeclarators || peek() != EHTokIdentifier)
             parseContext.declareBlock(loc, type);
     } else {
         // Some qualifiers are set when parsing the type.  Merge those with
@@ -4077,6 +4079,7 @@ const char* HlslGrammar::getTypeString(EHlslTokenClass tokenClass) const
     case EHTokMin16int:   return "min16int";
     case EHTokMin12int:   return "min12int";
     case EHTokConstantBuffer: return "ConstantBuffer";
+    case EHTokLayout:     return "layout";
     default:
         return nullptr;
     }

+ 1 - 1
3rdparty/glslang/hlsl/hlslGrammar.h

@@ -72,7 +72,7 @@ namespace glslang {
         bool acceptSamplerDeclarationDX9(TType&);
         bool acceptSamplerState();
         bool acceptFullySpecifiedType(TType&, const TAttributeMap&);
-        bool acceptFullySpecifiedType(TType&, TIntermNode*& nodeList, const TAttributeMap&);
+        bool acceptFullySpecifiedType(TType&, TIntermNode*& nodeList, const TAttributeMap&, bool forbidDeclarators = false);
         bool acceptQualifier(TQualifier&);
         bool acceptLayoutQualifierList(TQualifier&);
         bool acceptType(TType&);

+ 1 - 1
3rdparty/glslang/known_good.json

@@ -5,7 +5,7 @@
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Tools",
       "subdir" : "External/spirv-tools",
-      "commit" : "0f804063154f45af308f8ce31c41f58fae3f18dc"
+      "commit" : "716718a5e969f6b4e73cbc864db59a754a83aab3"
     },
     {
       "name" : "spirv-tools/external/spirv-headers",