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,15 +2,23 @@ hlsl.attribute.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: PixelShaderFunction(vf4; (temp void)
0:2 Function Definition: @PixelShaderFunction(vf4; (temp void)
0:2 Function Parameters:
0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:11 Test condition and select (temp void)
0:11 Condition
0:11 Constant:
0:11 0 (const int)
0:11 true case is null
0:2 Function Definition: PixelShaderFunction( (temp void)
0:2 Function Parameters:
0:? Sequence
0:2 move second child to first child (temp 4-component vector of float)
0:? 'input' (temp 4-component vector of float)
0:? 'input' (layout(location=0 ) in 4-component vector of float)
0:2 Function Call: @PixelShaderFunction(vf4; (temp void)
0:? 'input' (temp 4-component vector of float)
0:? Linker Objects
0:? 'input' (layout(location=0 ) in 4-component vector of float)
@@ -21,44 +29,70 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: PixelShaderFunction(vf4; (temp void)
0:2 Function Definition: @PixelShaderFunction(vf4; (temp void)
0:2 Function Parameters:
0:2 'input' (layout(location=0 ) in 4-component vector of float)
0:2 'input' (in 4-component vector of float)
0:? Sequence
0:11 Test condition and select (temp void)
0:11 Condition
0:11 Constant:
0:11 0 (const int)
0:11 true case is null
0:2 Function Definition: PixelShaderFunction( (temp void)
0:2 Function Parameters:
0:? Sequence
0:2 move second child to first child (temp 4-component vector of float)
0:? 'input' (temp 4-component vector of float)
0:? 'input' (layout(location=0 ) in 4-component vector of float)
0:2 Function Call: @PixelShaderFunction(vf4; (temp void)
0:? 'input' (temp 4-component vector of float)
0:? Linker Objects
0:? 'input' (layout(location=0 ) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 14
// Id's are bound by 24
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 13
EntryPoint Fragment 4 "PixelShaderFunction" 19
ExecutionMode 4 OriginUpperLeft
Name 4 "PixelShaderFunction"
Name 13 "input"
Decorate 13(input) Location 0
Name 11 "@PixelShaderFunction(vf4;"
Name 10 "input"
Name 17 "input"
Name 19 "input"
Name 21 "param"
Decorate 19(input) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: 6(int) Constant 0
10: TypeFloat 32
11: TypeVector 10(float) 4
12: TypePointer Input 11(fvec4)
13(input): 12(ptr) Variable Input
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeFunction 2 8(ptr)
13: TypeInt 32 1
14: 13(int) Constant 0
18: TypePointer Input 7(fvec4)
19(input): 18(ptr) Variable Input
4(PixelShaderFunction): 2 Function None 3
5: Label
SelectionMerge 9 None
BranchConditional 7 8 9
8: Label
Branch 9
9: Label
17(input): 8(ptr) Variable Function
21(param): 8(ptr) Variable Function
20: 7(fvec4) Load 19(input)
Store 17(input) 20
22: 7(fvec4) Load 17(input)
Store 21(param) 22
23: 2 FunctionCall 11(@PixelShaderFunction(vf4;) 21(param)
Return
FunctionEnd
11(@PixelShaderFunction(vf4;): 2 Function None 9
10(input): 8(ptr) FunctionParameter
12: Label
SelectionMerge 16 None
BranchConditional 14 15 16
15: Label
Branch 16
16: Label
Return
FunctionEnd