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:
@@ -2,23 +2,20 @@ hlsl.whileLoop.frag
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
|
||||
0:2 Function Definition: @PixelShaderFunction(vf4; (temp 4-component vector of float)
|
||||
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:3 Loop with condition tested first
|
||||
0:3 Loop Condition
|
||||
0:3 any (temp bool)
|
||||
0:3 NotEqual (temp 4-component vector of bool)
|
||||
0:3 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
0:3 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
0:3 'input' (in 4-component vector of float)
|
||||
0:3 'input' (in 4-component vector of float)
|
||||
0:3 Loop Body
|
||||
0:? Sequence
|
||||
0:3 Sequence
|
||||
0:3 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
0:3 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
0:3 Branch: Return
|
||||
0:3 Branch: Return with expression
|
||||
0:3 'input' (in 4-component vector of float)
|
||||
0:4 Loop with condition tested first
|
||||
0:4 Loop Condition
|
||||
0:4 Constant:
|
||||
@@ -34,6 +31,16 @@ gl_FragCoord origin is upper left
|
||||
0:6 Constant:
|
||||
0:6 false (const bool)
|
||||
0:6 No loop body
|
||||
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 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
0:2 Function Call: @PixelShaderFunction(vf4; (temp 4-component vector of float)
|
||||
0:? 'input' (temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
0:? 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
@@ -45,23 +52,20 @@ Linked fragment stage:
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
|
||||
0:2 Function Definition: @PixelShaderFunction(vf4; (temp 4-component vector of float)
|
||||
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:3 Loop with condition tested first
|
||||
0:3 Loop Condition
|
||||
0:3 any (temp bool)
|
||||
0:3 NotEqual (temp 4-component vector of bool)
|
||||
0:3 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
0:3 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
0:3 'input' (in 4-component vector of float)
|
||||
0:3 'input' (in 4-component vector of float)
|
||||
0:3 Loop Body
|
||||
0:? Sequence
|
||||
0:3 Sequence
|
||||
0:3 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
0:3 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
0:3 Branch: Return
|
||||
0:3 Branch: Return with expression
|
||||
0:3 'input' (in 4-component vector of float)
|
||||
0:4 Loop with condition tested first
|
||||
0:4 Loop Condition
|
||||
0:4 Constant:
|
||||
@@ -77,86 +81,115 @@ gl_FragCoord origin is upper left
|
||||
0:6 Constant:
|
||||
0:6 false (const bool)
|
||||
0:6 No loop body
|
||||
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 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
0:2 Function Call: @PixelShaderFunction(vf4; (temp 4-component vector of float)
|
||||
0:? 'input' (temp 4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
0:? 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 41
|
||||
// Id's are bound by 52
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 14 22
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 45 48
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "PixelShaderFunction"
|
||||
Name 14 "input"
|
||||
Name 22 "@entryPointOutput"
|
||||
Decorate 14(input) Location 0
|
||||
Decorate 22(@entryPointOutput) Location 0
|
||||
Name 11 "@PixelShaderFunction(vf4;"
|
||||
Name 10 "input"
|
||||
Name 43 "input"
|
||||
Name 45 "input"
|
||||
Name 48 "@entryPointOutput"
|
||||
Name 49 "param"
|
||||
Decorate 45(input) Location 0
|
||||
Decorate 48(@entryPointOutput) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
11: TypeFloat 32
|
||||
12: TypeVector 11(float) 4
|
||||
13: TypePointer Input 12(fvec4)
|
||||
14(input): 13(ptr) Variable Input
|
||||
17: TypeBool
|
||||
18: TypeVector 17(bool) 4
|
||||
21: TypePointer Output 12(fvec4)
|
||||
22(@entryPointOutput): 21(ptr) Variable Output
|
||||
30: 17(bool) ConstantFalse
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypePointer Function 7(fvec4)
|
||||
9: TypeFunction 7(fvec4) 8(ptr)
|
||||
20: TypeBool
|
||||
21: TypeVector 20(bool) 4
|
||||
31: 20(bool) ConstantFalse
|
||||
44: TypePointer Input 7(fvec4)
|
||||
45(input): 44(ptr) Variable Input
|
||||
47: TypePointer Output 7(fvec4)
|
||||
48(@entryPointOutput): 47(ptr) Variable Output
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
Branch 6
|
||||
6: Label
|
||||
LoopMerge 8 9 None
|
||||
Branch 10
|
||||
10: Label
|
||||
15: 12(fvec4) Load 14(input)
|
||||
16: 12(fvec4) Load 14(input)
|
||||
19: 18(bvec4) FOrdNotEqual 15 16
|
||||
20: 17(bool) Any 19
|
||||
BranchConditional 20 7 8
|
||||
7: Label
|
||||
23: 12(fvec4) Load 14(input)
|
||||
Store 22(@entryPointOutput) 23
|
||||
Return
|
||||
9: Label
|
||||
Branch 6
|
||||
8: Label
|
||||
Branch 25
|
||||
25: Label
|
||||
LoopMerge 27 28 None
|
||||
Branch 29
|
||||
29: Label
|
||||
BranchConditional 30 26 27
|
||||
26: Label
|
||||
Branch 28
|
||||
28: Label
|
||||
Branch 25
|
||||
27: Label
|
||||
Branch 31
|
||||
31: Label
|
||||
LoopMerge 33 34 None
|
||||
Branch 35
|
||||
35: Label
|
||||
BranchConditional 30 32 33
|
||||
32: Label
|
||||
Branch 34
|
||||
34: Label
|
||||
Branch 31
|
||||
33: Label
|
||||
Branch 36
|
||||
36: Label
|
||||
LoopMerge 38 39 None
|
||||
Branch 40
|
||||
40: Label
|
||||
BranchConditional 30 37 38
|
||||
37: Label
|
||||
Branch 39
|
||||
39: Label
|
||||
Branch 36
|
||||
38: Label
|
||||
43(input): 8(ptr) Variable Function
|
||||
49(param): 8(ptr) Variable Function
|
||||
46: 7(fvec4) Load 45(input)
|
||||
Store 43(input) 46
|
||||
50: 7(fvec4) Load 43(input)
|
||||
Store 49(param) 50
|
||||
51: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 49(param)
|
||||
Store 48(@entryPointOutput) 51
|
||||
Return
|
||||
FunctionEnd
|
||||
11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9
|
||||
10(input): 8(ptr) FunctionParameter
|
||||
12: Label
|
||||
Branch 13
|
||||
13: Label
|
||||
LoopMerge 15 16 None
|
||||
Branch 17
|
||||
17: Label
|
||||
18: 7(fvec4) Load 10(input)
|
||||
19: 7(fvec4) Load 10(input)
|
||||
22: 21(bvec4) FOrdNotEqual 18 19
|
||||
23: 20(bool) Any 22
|
||||
BranchConditional 23 14 15
|
||||
14: Label
|
||||
24: 7(fvec4) Load 10(input)
|
||||
ReturnValue 24
|
||||
16: Label
|
||||
Branch 13
|
||||
15: Label
|
||||
Branch 26
|
||||
26: Label
|
||||
LoopMerge 28 29 None
|
||||
Branch 30
|
||||
30: Label
|
||||
BranchConditional 31 27 28
|
||||
27: Label
|
||||
Branch 29
|
||||
29: Label
|
||||
Branch 26
|
||||
28: Label
|
||||
Branch 32
|
||||
32: Label
|
||||
LoopMerge 34 35 None
|
||||
Branch 36
|
||||
36: Label
|
||||
BranchConditional 31 33 34
|
||||
33: Label
|
||||
Branch 35
|
||||
35: Label
|
||||
Branch 32
|
||||
34: Label
|
||||
Branch 37
|
||||
37: Label
|
||||
LoopMerge 39 40 None
|
||||
Branch 41
|
||||
41: Label
|
||||
BranchConditional 31 38 39
|
||||
38: Label
|
||||
Branch 40
|
||||
40: Label
|
||||
Branch 37
|
||||
39: Label
|
||||
42: 7(fvec4) Undef
|
||||
ReturnValue 42
|
||||
FunctionEnd
|
||||
|
||||
Reference in New Issue
Block a user