HLSL: Wrap the entry-point; need to write 'in' args, and support 'inout' args.

This needs some render testing, but is destined to be part of master.

This also leads to a variety of other simplifications.
 - IO are global symbols, so only need one list of linkage nodes (deferred)
 - no longer need parse-context-wide 'inEntryPoint' state, entry-point is localized
 - several parts of splitting/flattening are now localized
This commit is contained in:
John Kessenich 2017-01-19 15:41:47 -07:00
parent 18adbdbbb8
commit 02467d8d94
171 changed files with 37604 additions and 32679 deletions

View file

@ -2,7 +2,7 @@ hlsl.stringtoken.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:16 Function Definition: main( (temp structure{temp 4-component vector of float Color})
0:16 Function Definition: @main( (temp structure{temp 4-component vector of float Color})
0:16 Function Parameters:
0:? Sequence
0:18 move second child to first child (temp 4-component vector of float)
@ -15,18 +15,21 @@ gl_FragCoord origin is upper left
0:? 0.000000
0:? 0.000000
0:? 1.000000
0:19 Sequence
0:19 Sequence
0:19 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:19 Color: direct index for structure (temp 4-component vector of float)
0:19 'psout' (temp structure{temp 4-component vector of float Color})
0:19 Constant:
0:19 0 (const int)
0:19 Branch: Return
0:19 Branch: Return with expression
0:19 'psout' (temp structure{temp 4-component vector of float Color})
0:16 Function Definition: main( (temp void)
0:16 Function Parameters:
0:? Sequence
0:16 Sequence
0:16 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:16 Color: direct index for structure (temp 4-component vector of float)
0:16 Function Call: @main( (temp structure{temp 4-component vector of float Color})
0:16 Constant:
0:16 0 (const int)
0:? Linker Objects
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'TestTexture' (uniform texture2D)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF})
@ -36,7 +39,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:16 Function Definition: main( (temp structure{temp 4-component vector of float Color})
0:16 Function Definition: @main( (temp structure{temp 4-component vector of float Color})
0:16 Function Parameters:
0:? Sequence
0:18 move second child to first child (temp 4-component vector of float)
@ -49,70 +52,80 @@ gl_FragCoord origin is upper left
0:? 0.000000
0:? 0.000000
0:? 1.000000
0:19 Sequence
0:19 Sequence
0:19 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:19 Color: direct index for structure (temp 4-component vector of float)
0:19 'psout' (temp structure{temp 4-component vector of float Color})
0:19 Constant:
0:19 0 (const int)
0:19 Branch: Return
0:19 Branch: Return with expression
0:19 'psout' (temp structure{temp 4-component vector of float Color})
0:16 Function Definition: main( (temp void)
0:16 Function Parameters:
0:? Sequence
0:16 Sequence
0:16 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:16 Color: direct index for structure (temp 4-component vector of float)
0:16 Function Call: @main( (temp structure{temp 4-component vector of float Color})
0:16 Constant:
0:16 0 (const int)
0:? Linker Objects
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'TestTexture' (uniform texture2D)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float TestUF})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 29
// Id's are bound by 34
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 19
EntryPoint Fragment 4 "main" 25
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
Name 10 "psout"
Name 19 "Color"
Name 25 "TestTexture"
Name 26 "$Global"
MemberName 26($Global) 0 "TestUF"
Name 28 ""
Decorate 19(Color) Location 0
Decorate 25(TestTexture) DescriptorSet 0
MemberDecorate 26($Global) 0 Offset 0
Decorate 26($Global) Block
Decorate 28 DescriptorSet 0
Name 10 "@main("
Name 13 "psout"
Name 25 "Color"
Name 30 "TestTexture"
Name 31 "$Global"
MemberName 31($Global) 0 "TestUF"
Name 33 ""
Decorate 25(Color) Location 0
Decorate 30(TestTexture) DescriptorSet 0
MemberDecorate 31($Global) 0 Offset 0
Decorate 31($Global) Block
Decorate 33 DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8(PS_OUTPUT): TypeStruct 7(fvec4)
9: TypePointer Function 8(PS_OUTPUT)
11: TypeInt 32 1
12: 11(int) Constant 0
13: 6(float) Constant 0
14: 6(float) Constant 1065353216
15: 7(fvec4) ConstantComposite 13 13 13 14
16: TypePointer Function 7(fvec4)
18: TypePointer Output 7(fvec4)
19(Color): 18(ptr) Variable Output
23: TypeImage 6(float) 2D sampled format:Unknown
24: TypePointer UniformConstant 23
25(TestTexture): 24(ptr) Variable UniformConstant
26($Global): TypeStruct 7(fvec4)
27: TypePointer Uniform 26($Global)
28: 27(ptr) Variable Uniform
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 8(PS_OUTPUT)
14: TypeInt 32 1
15: 14(int) Constant 0
16: 6(float) Constant 0
17: 6(float) Constant 1065353216
18: 7(fvec4) ConstantComposite 16 16 16 17
19: TypePointer Function 7(fvec4)
24: TypePointer Output 7(fvec4)
25(Color): 24(ptr) Variable Output
28: TypeImage 6(float) 2D sampled format:Unknown
29: TypePointer UniformConstant 28
30(TestTexture): 29(ptr) Variable UniformConstant
31($Global): TypeStruct 7(fvec4)
32: TypePointer Uniform 31($Global)
33: 32(ptr) Variable Uniform
4(main): 2 Function None 3
5: Label
10(psout): 9(ptr) Variable Function
17: 16(ptr) AccessChain 10(psout) 12
Store 17 15
20: 16(ptr) AccessChain 10(psout) 12
21: 7(fvec4) Load 20
Store 19(Color) 21
26:8(PS_OUTPUT) FunctionCall 10(@main()
27: 7(fvec4) CompositeExtract 26 0
Store 25(Color) 27
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(psout): 12(ptr) Variable Function
20: 19(ptr) AccessChain 13(psout) 15
Store 20 18
21:8(PS_OUTPUT) Load 13(psout)
ReturnValue 21
FunctionEnd