SPV return from main: Simplify a legacy design such returns are not jumps to exit block.
Structured control-flow rules allow leaving the middle of a construct through a return, but not through a jump to a block that does a return. Addresses issue #58.
This commit is contained in:
parent
5f5b205ce9
commit
e770b3e6cf
74 changed files with 9648 additions and 9816 deletions
|
|
@ -5,7 +5,7 @@ Linked geometry stage:
|
|||
|
||||
// Module Version 99
|
||||
// Generated by (magic number): 51a00bb
|
||||
// Id's are bound by 72
|
||||
// Id's are bound by 71
|
||||
|
||||
Source GLSL 150
|
||||
Capability Geometry
|
||||
|
|
@ -17,134 +17,132 @@ Linked geometry stage:
|
|||
ExecutionMode 4 OutputTriangleStrip
|
||||
ExecutionMode 4 OutputVertices 30
|
||||
Name 4 "main"
|
||||
Name 9 "fromVertex"
|
||||
MemberName 9(fromVertex) 0 "color"
|
||||
Name 11 ""
|
||||
Name 14 "fromVertex"
|
||||
MemberName 14(fromVertex) 0 "color"
|
||||
Name 19 "fromV"
|
||||
Name 28 "gl_PerVertex"
|
||||
MemberName 28(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 28(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 28(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
Name 30 ""
|
||||
Name 31 "gl_PerVertex"
|
||||
MemberName 31(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 31(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 31(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
Name 34 "gl_in"
|
||||
Name 48 "gl_PrimitiveID"
|
||||
Name 50 "gl_PrimitiveIDIn"
|
||||
Name 52 "gl_Layer"
|
||||
Name 69 "toFragment"
|
||||
MemberName 69(toFragment) 0 "color"
|
||||
Name 71 "toF"
|
||||
Decorate 9(fromVertex) Block
|
||||
Decorate 9(fromVertex) Stream 3
|
||||
Decorate 11 Stream 3
|
||||
Decorate 14(fromVertex) Block
|
||||
MemberDecorate 28(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 28(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 28(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 28(gl_PerVertex) Block
|
||||
Decorate 28(gl_PerVertex) Stream 0
|
||||
Decorate 30 Stream 0
|
||||
MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 31(gl_PerVertex) Block
|
||||
Decorate 48(gl_PrimitiveID) Stream 0
|
||||
Decorate 48(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||
Decorate 50(gl_PrimitiveIDIn) BuiltIn PrimitiveId
|
||||
Decorate 52(gl_Layer) Stream 0
|
||||
Decorate 52(gl_Layer) BuiltIn Layer
|
||||
Decorate 69(toFragment) Block
|
||||
Decorate 69(toFragment) Stream 3
|
||||
Decorate 71(toF) Stream 3
|
||||
Decorate 71(toF) NoStaticUse
|
||||
Name 8 "fromVertex"
|
||||
MemberName 8(fromVertex) 0 "color"
|
||||
Name 10 ""
|
||||
Name 13 "fromVertex"
|
||||
MemberName 13(fromVertex) 0 "color"
|
||||
Name 18 "fromV"
|
||||
Name 27 "gl_PerVertex"
|
||||
MemberName 27(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 27(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 27(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
Name 29 ""
|
||||
Name 30 "gl_PerVertex"
|
||||
MemberName 30(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 30(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 30(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
Name 33 "gl_in"
|
||||
Name 47 "gl_PrimitiveID"
|
||||
Name 49 "gl_PrimitiveIDIn"
|
||||
Name 51 "gl_Layer"
|
||||
Name 68 "toFragment"
|
||||
MemberName 68(toFragment) 0 "color"
|
||||
Name 70 "toF"
|
||||
Decorate 8(fromVertex) Block
|
||||
Decorate 8(fromVertex) Stream 3
|
||||
Decorate 10 Stream 3
|
||||
Decorate 13(fromVertex) Block
|
||||
MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 27(gl_PerVertex) Block
|
||||
Decorate 27(gl_PerVertex) Stream 0
|
||||
Decorate 29 Stream 0
|
||||
MemberDecorate 30(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 30(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 30(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 30(gl_PerVertex) Block
|
||||
Decorate 47(gl_PrimitiveID) Stream 0
|
||||
Decorate 47(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||
Decorate 49(gl_PrimitiveIDIn) BuiltIn PrimitiveId
|
||||
Decorate 51(gl_Layer) Stream 0
|
||||
Decorate 51(gl_Layer) BuiltIn Layer
|
||||
Decorate 68(toFragment) Block
|
||||
Decorate 68(toFragment) Stream 3
|
||||
Decorate 70(toF) Stream 3
|
||||
Decorate 70(toF) NoStaticUse
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
7: TypeFloat 32
|
||||
8: TypeVector 7(float) 3
|
||||
9(fromVertex): TypeStruct 8(fvec3)
|
||||
10: TypePointer Output 9(fromVertex)
|
||||
11: 10(ptr) Variable Output
|
||||
12: TypeInt 32 1
|
||||
13: 12(int) Constant 0
|
||||
14(fromVertex): TypeStruct 8(fvec3)
|
||||
15: TypeInt 32 0
|
||||
16: 15(int) Constant 6
|
||||
17: TypeArray 14(fromVertex) 16
|
||||
18: TypePointer Input 17
|
||||
19(fromV): 18(ptr) Variable Input
|
||||
20: TypePointer Input 8(fvec3)
|
||||
23: TypePointer Output 8(fvec3)
|
||||
25: TypeVector 7(float) 4
|
||||
26: 15(int) Constant 1
|
||||
27: TypeArray 7(float) 26
|
||||
28(gl_PerVertex): TypeStruct 25(fvec4) 7(float) 27
|
||||
29: TypePointer Output 28(gl_PerVertex)
|
||||
30: 29(ptr) Variable Output
|
||||
31(gl_PerVertex): TypeStruct 25(fvec4) 7(float) 27
|
||||
32: TypeArray 31(gl_PerVertex) 16
|
||||
33: TypePointer Input 32
|
||||
34(gl_in): 33(ptr) Variable Input
|
||||
35: TypePointer Input 25(fvec4)
|
||||
38: TypePointer Output 25(fvec4)
|
||||
40: 12(int) Constant 1
|
||||
41: 12(int) Constant 3
|
||||
42: TypePointer Input 7(float)
|
||||
45: TypePointer Output 7(float)
|
||||
47: TypePointer Output 12(int)
|
||||
48(gl_PrimitiveID): 47(ptr) Variable Output
|
||||
49: TypePointer Input 12(int)
|
||||
50(gl_PrimitiveIDIn): 49(ptr) Variable Input
|
||||
52(gl_Layer): 47(ptr) Variable Output
|
||||
53: 12(int) Constant 2
|
||||
54: 7(float) Constant 1073741824
|
||||
69(toFragment): TypeStruct 8(fvec3)
|
||||
70: TypePointer Output 69(toFragment)
|
||||
71(toF): 70(ptr) Variable Output
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 3
|
||||
8(fromVertex): TypeStruct 7(fvec3)
|
||||
9: TypePointer Output 8(fromVertex)
|
||||
10: 9(ptr) Variable Output
|
||||
11: TypeInt 32 1
|
||||
12: 11(int) Constant 0
|
||||
13(fromVertex): TypeStruct 7(fvec3)
|
||||
14: TypeInt 32 0
|
||||
15: 14(int) Constant 6
|
||||
16: TypeArray 13(fromVertex) 15
|
||||
17: TypePointer Input 16
|
||||
18(fromV): 17(ptr) Variable Input
|
||||
19: TypePointer Input 7(fvec3)
|
||||
22: TypePointer Output 7(fvec3)
|
||||
24: TypeVector 6(float) 4
|
||||
25: 14(int) Constant 1
|
||||
26: TypeArray 6(float) 25
|
||||
27(gl_PerVertex): TypeStruct 24(fvec4) 6(float) 26
|
||||
28: TypePointer Output 27(gl_PerVertex)
|
||||
29: 28(ptr) Variable Output
|
||||
30(gl_PerVertex): TypeStruct 24(fvec4) 6(float) 26
|
||||
31: TypeArray 30(gl_PerVertex) 15
|
||||
32: TypePointer Input 31
|
||||
33(gl_in): 32(ptr) Variable Input
|
||||
34: TypePointer Input 24(fvec4)
|
||||
37: TypePointer Output 24(fvec4)
|
||||
39: 11(int) Constant 1
|
||||
40: 11(int) Constant 3
|
||||
41: TypePointer Input 6(float)
|
||||
44: TypePointer Output 6(float)
|
||||
46: TypePointer Output 11(int)
|
||||
47(gl_PrimitiveID): 46(ptr) Variable Output
|
||||
48: TypePointer Input 11(int)
|
||||
49(gl_PrimitiveIDIn): 48(ptr) Variable Input
|
||||
51(gl_Layer): 46(ptr) Variable Output
|
||||
52: 11(int) Constant 2
|
||||
53: 6(float) Constant 1073741824
|
||||
68(toFragment): TypeStruct 7(fvec3)
|
||||
69: TypePointer Output 68(toFragment)
|
||||
70(toF): 69(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
21: 20(ptr) AccessChain 19(fromV) 13 13
|
||||
22: 8(fvec3) Load 21
|
||||
24: 23(ptr) AccessChain 11 13
|
||||
Store 24 22
|
||||
36: 35(ptr) AccessChain 34(gl_in) 13 13
|
||||
37: 25(fvec4) Load 36
|
||||
39: 38(ptr) AccessChain 30 13
|
||||
Store 39 37
|
||||
43: 42(ptr) AccessChain 34(gl_in) 41 40
|
||||
44: 7(float) Load 43
|
||||
46: 45(ptr) AccessChain 30 40
|
||||
Store 46 44
|
||||
51: 12(int) Load 50(gl_PrimitiveIDIn)
|
||||
Store 48(gl_PrimitiveID) 51
|
||||
Store 52(gl_Layer) 53
|
||||
20: 19(ptr) AccessChain 18(fromV) 12 12
|
||||
21: 7(fvec3) Load 20
|
||||
23: 22(ptr) AccessChain 10 12
|
||||
Store 23 21
|
||||
35: 34(ptr) AccessChain 33(gl_in) 12 12
|
||||
36: 24(fvec4) Load 35
|
||||
38: 37(ptr) AccessChain 29 12
|
||||
Store 38 36
|
||||
42: 41(ptr) AccessChain 33(gl_in) 40 39
|
||||
43: 6(float) Load 42
|
||||
45: 44(ptr) AccessChain 29 39
|
||||
Store 45 43
|
||||
50: 11(int) Load 49(gl_PrimitiveIDIn)
|
||||
Store 47(gl_PrimitiveID) 50
|
||||
Store 51(gl_Layer) 52
|
||||
EmitVertex
|
||||
55: 20(ptr) AccessChain 19(fromV) 13 13
|
||||
56: 8(fvec3) Load 55
|
||||
57: 8(fvec3) VectorTimesScalar 56 54
|
||||
58: 23(ptr) AccessChain 11 13
|
||||
Store 58 57
|
||||
59: 35(ptr) AccessChain 34(gl_in) 13 13
|
||||
60: 25(fvec4) Load 59
|
||||
61: 25(fvec4) VectorTimesScalar 60 54
|
||||
62: 38(ptr) AccessChain 30 13
|
||||
Store 62 61
|
||||
63: 42(ptr) AccessChain 34(gl_in) 41 40
|
||||
64: 7(float) Load 63
|
||||
65: 7(float) FMul 54 64
|
||||
66: 45(ptr) AccessChain 30 40
|
||||
Store 66 65
|
||||
67: 12(int) Load 50(gl_PrimitiveIDIn)
|
||||
68: 12(int) IAdd 67 40
|
||||
Store 48(gl_PrimitiveID) 68
|
||||
Store 52(gl_Layer) 41
|
||||
54: 19(ptr) AccessChain 18(fromV) 12 12
|
||||
55: 7(fvec3) Load 54
|
||||
56: 7(fvec3) VectorTimesScalar 55 53
|
||||
57: 22(ptr) AccessChain 10 12
|
||||
Store 57 56
|
||||
58: 34(ptr) AccessChain 33(gl_in) 12 12
|
||||
59: 24(fvec4) Load 58
|
||||
60: 24(fvec4) VectorTimesScalar 59 53
|
||||
61: 37(ptr) AccessChain 29 12
|
||||
Store 61 60
|
||||
62: 41(ptr) AccessChain 33(gl_in) 40 39
|
||||
63: 6(float) Load 62
|
||||
64: 6(float) FMul 53 63
|
||||
65: 44(ptr) AccessChain 29 39
|
||||
Store 65 64
|
||||
66: 11(int) Load 49(gl_PrimitiveIDIn)
|
||||
67: 11(int) IAdd 66 39
|
||||
Store 47(gl_PrimitiveID) 67
|
||||
Store 51(gl_Layer) 40
|
||||
EmitVertex
|
||||
EndPrimitive
|
||||
Branch 6
|
||||
6: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue