This commit is contained in:
Branimir Karadžić 2018-01-06 10:58:38 -08:00
Родитель 040742ba4c
Коммит 32dce22fff
7 изменённых файлов: 388 добавлений и 293 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -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

16
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;
}

3
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;
}

9
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;
}

2
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&);

2
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",