From 32dce22fffd7ee25a1800aa6fe4763deeb54edab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Sat, 6 Jan 2018 10:58:38 -0800 Subject: [PATCH] Updated glslang. --- .../Test/baseResults/hlsl.buffer.frag.out | 454 ++++++++++-------- .../Test/baseResults/hlsl.layout.frag.out | 195 ++++---- 3rdparty/glslang/Test/hlsl.buffer.frag | 16 +- 3rdparty/glslang/Test/hlsl.layout.frag | 3 +- 3rdparty/glslang/hlsl/hlslGrammar.cpp | 9 +- 3rdparty/glslang/hlsl/hlslGrammar.h | 2 +- 3rdparty/glslang/known_good.json | 2 +- 7 files changed, 388 insertions(+), 293 deletions(-) diff --git a/3rdparty/glslang/Test/baseResults/hlsl.buffer.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.buffer.frag.out index 0245843e7..40ad65a80 100755 --- a/3rdparty/glslang/Test/baseResults/hlsl.buffer.frag.out +++ b/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 diff --git a/3rdparty/glslang/Test/baseResults/hlsl.layout.frag.out b/3rdparty/glslang/Test/baseResults/hlsl.layout.frag.out index 1e6ddb533..7ceb5e7fc 100755 --- a/3rdparty/glslang/Test/baseResults/hlsl.layout.frag.out +++ b/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 diff --git a/3rdparty/glslang/Test/hlsl.buffer.frag b/3rdparty/glslang/Test/hlsl.buffer.frag index 520de09e8..73f42e8f0 100644 --- a/3rdparty/glslang/Test/hlsl.buffer.frag +++ b/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 -{ - return (input + v1 + v2 + v3 + v4) * foo(); +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 +{ + id ret; + ret.a = v24 + (input + v1 + v2 + v3 + v4) * foo(); + return ret; } diff --git a/3rdparty/glslang/Test/hlsl.layout.frag b/3rdparty/glslang/Test/hlsl.layout.frag index 4c2f7cef8..a4fa5af25 100644 --- a/3rdparty/glslang/Test/hlsl.layout.frag +++ b/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; } diff --git a/3rdparty/glslang/hlsl/hlslGrammar.cpp b/3rdparty/glslang/hlsl/hlslGrammar.cpp index c71ba165f..a891b68f1 100755 --- a/3rdparty/glslang/hlsl/hlslGrammar.cpp +++ b/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; } diff --git a/3rdparty/glslang/hlsl/hlslGrammar.h b/3rdparty/glslang/hlsl/hlslGrammar.h index f5613d907..9e58bfda2 100755 --- a/3rdparty/glslang/hlsl/hlslGrammar.h +++ b/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&); diff --git a/3rdparty/glslang/known_good.json b/3rdparty/glslang/known_good.json index 222d2da07..ac367bf91 100644 --- a/3rdparty/glslang/known_good.json +++ b/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",