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

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