SPV: Change barrier emission to conform to Khronos decisions.

The memory model group agreed to these definitions for how
to map GLSL barrier, memoryBarrier, etc. With HLSL following suit.
This commit is contained in:
John Kessenich
2017-12-11 04:02:24 -07:00
parent 070aaeafcd
commit 8297936dd6
19 changed files with 600 additions and 520 deletions

View File

@@ -221,12 +221,12 @@ vertex spacing = equal_spacing
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 92
// Id's are bound by 91
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 42 46 48 64 66 74
EntryPoint TessellationControl 4 "main" 42 46 48 63 65 73
ExecutionMode 4 OutputVertices 4
ExecutionMode 4 Isolines
ExecutionMode 4 SpacingEqual
@@ -249,20 +249,20 @@ vertex spacing = equal_spacing
Name 46 "@entryPointOutput"
Name 48 "InvocationId"
Name 50 "param"
Name 63 "@patchConstantResult"
Name 64 "pid"
Name 66 "pos"
Name 67 "param"
Name 69 "param"
Name 74 "@patchConstantOutput.edges"
Name 84 "output"
Name 62 "@patchConstantResult"
Name 63 "pid"
Name 65 "pos"
Name 66 "param"
Name 68 "param"
Name 73 "@patchConstantOutput.edges"
Name 83 "output"
Decorate 42(ip) Location 0
Decorate 46(@entryPointOutput) Location 0
Decorate 48(InvocationId) BuiltIn InvocationId
Decorate 64(pid) BuiltIn PrimitiveId
Decorate 66(pos) BuiltIn Position
Decorate 74(@patchConstantOutput.edges) Patch
Decorate 74(@patchConstantOutput.edges) BuiltIn TessLevelOuter
Decorate 63(pid) BuiltIn PrimitiveId
Decorate 65(pos) BuiltIn Position
Decorate 73(@patchConstantOutput.edges) Patch
Decorate 73(@patchConstantOutput.edges) BuiltIn TessLevelOuter
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -293,28 +293,27 @@ vertex spacing = equal_spacing
47: TypePointer Input 9(int)
48(InvocationId): 47(ptr) Variable Input
53: TypePointer Output 13(HS_OUT)
55: 9(int) Constant 1
56: 9(int) Constant 0
58: TypeBool
62: TypePointer Function 23(HS_CONSTANT_OUT)
64(pid): 47(ptr) Variable Input
65: TypePointer Input 19(fvec4)
66(pos): 65(ptr) Variable Input
72: TypeArray 6(float) 10
73: TypePointer Output 72
74(@patchConstantOutput.edges): 73(ptr) Variable Output
75: TypePointer Function 6(float)
78: TypePointer Output 6(float)
80: 31(int) Constant 1
85: 6(float) Constant 1073741824
87: 6(float) Constant 1090519040
55: 9(int) Constant 0
57: TypeBool
61: TypePointer Function 23(HS_CONSTANT_OUT)
63(pid): 47(ptr) Variable Input
64: TypePointer Input 19(fvec4)
65(pos): 64(ptr) Variable Input
71: TypeArray 6(float) 10
72: TypePointer Output 71
73(@patchConstantOutput.edges): 72(ptr) Variable Output
74: TypePointer Function 6(float)
77: TypePointer Output 6(float)
79: 31(int) Constant 1
84: 6(float) Constant 1073741824
86: 6(float) Constant 1090519040
4(main): 2 Function None 3
5: Label
40(ip): 12(ptr) Variable Function
50(param): 12(ptr) Variable Function
63(@patchConstantResult): 62(ptr) Variable Function
67(param): 18(ptr) Variable Function
69(param): 20(ptr) Variable Function
62(@patchConstantResult): 61(ptr) Variable Function
66(param): 18(ptr) Variable Function
68(param): 20(ptr) Variable Function
43: 11 Load 42(ip)
Store 40(ip) 43
49: 9(int) Load 48(InvocationId)
@@ -323,28 +322,28 @@ vertex spacing = equal_spacing
52: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 50(param)
54: 53(ptr) AccessChain 46(@entryPointOutput) 49
Store 54 52
ControlBarrier 21 55 56
57: 9(int) Load 48(InvocationId)
59: 58(bool) IEqual 57 32
SelectionMerge 61 None
BranchConditional 59 60 61
60: Label
68: 9(int) Load 64(pid)
Store 67(param) 68
70: 19(fvec4) Load 66(pos)
Store 69(param) 70
71:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 67(param) 69(param)
Store 63(@patchConstantResult) 71
76: 75(ptr) AccessChain 63(@patchConstantResult) 32 32
77: 6(float) Load 76
79: 78(ptr) AccessChain 74(@patchConstantOutput.edges) 32
Store 79 77
81: 75(ptr) AccessChain 63(@patchConstantResult) 32 80
82: 6(float) Load 81
83: 78(ptr) AccessChain 74(@patchConstantOutput.edges) 80
Store 83 82
Branch 61
61: Label
ControlBarrier 21 10 55
56: 9(int) Load 48(InvocationId)
58: 57(bool) IEqual 56 32
SelectionMerge 60 None
BranchConditional 58 59 60
59: Label
67: 9(int) Load 63(pid)
Store 66(param) 67
69: 19(fvec4) Load 65(pos)
Store 68(param) 69
70:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 66(param) 68(param)
Store 62(@patchConstantResult) 70
75: 74(ptr) AccessChain 62(@patchConstantResult) 32 32
76: 6(float) Load 75
78: 77(ptr) AccessChain 73(@patchConstantOutput.edges) 32
Store 78 76
80: 74(ptr) AccessChain 62(@patchConstantResult) 32 79
81: 6(float) Load 80
82: 77(ptr) AccessChain 73(@patchConstantOutput.edges) 79
Store 82 81
Branch 60
60: Label
Return
FunctionEnd
16(@main(struct-VS_OUT-vf31[4];): 13(HS_OUT) Function None 14
@@ -362,11 +361,11 @@ vertex spacing = equal_spacing
25(pid): 18(ptr) FunctionParameter
26(pos): 20(ptr) FunctionParameter
28: Label
84(output): 62(ptr) Variable Function
86: 75(ptr) AccessChain 84(output) 32 32
Store 86 85
88: 75(ptr) AccessChain 84(output) 32 80
Store 88 87
89:23(HS_CONSTANT_OUT) Load 84(output)
ReturnValue 89
83(output): 61(ptr) Variable Function
85: 74(ptr) AccessChain 83(output) 32 32
Store 85 84
87: 74(ptr) AccessChain 83(output) 32 79
Store 87 86
88:23(HS_CONSTANT_OUT) Load 83(output)
ReturnValue 88
FunctionEnd