builder.createNoResultOp(spv::OpEndPrimitive);
return 0;
case glslang::EOpBarrier:
- builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeDevice, spv::MemorySemanticsMaskNone);
+ if (glslangIntermediate->getStage() == EShLangTessControl) {
+ builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeInvocation, spv::MemorySemanticsMaskNone);
+ // TODO: prefer the following, when available:
+ // builder.createControlBarrier(spv::ScopePatch, spv::ScopePatch,
+ // spv::MemorySemanticsPatchMask |
+ // spv::MemorySemanticsAcquireReleaseMask);
+ } else {
+ builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeWorkgroup,
+ spv::MemorySemanticsWorkgroupMemoryMask |
+ spv::MemorySemanticsAcquireReleaseMask);
+ }
return 0;
case glslang::EOpMemoryBarrier:
- builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory);
+ builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory |
+ spv::MemorySemanticsAcquireReleaseMask);
return 0;
case glslang::EOpMemoryBarrierAtomicCounter:
- builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAtomicCounterMemoryMask);
+ builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAtomicCounterMemoryMask |
+ spv::MemorySemanticsAcquireReleaseMask);
return 0;
case glslang::EOpMemoryBarrierBuffer:
- builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsUniformMemoryMask);
+ builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsUniformMemoryMask |
+ spv::MemorySemanticsAcquireReleaseMask);
return 0;
case glslang::EOpMemoryBarrierImage:
- builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsImageMemoryMask);
+ builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsImageMemoryMask |
+ spv::MemorySemanticsAcquireReleaseMask);
return 0;
case glslang::EOpMemoryBarrierShared:
- builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsWorkgroupMemoryMask);
+ builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsWorkgroupMemoryMask |
+ spv::MemorySemanticsAcquireReleaseMask);
return 0;
case glslang::EOpGroupMemoryBarrier:
- builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsCrossWorkgroupMemoryMask);
+ builder.createMemoryBarrier(spv::ScopeWorkgroup, spv::MemorySemanticsAllMemory |
+ spv::MemorySemanticsAcquireReleaseMask);
return 0;
case glslang::EOpAllMemoryBarrierWithGroupSync:
// Control barrier with non-"None" semantic is also a memory barrier.
- builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsAllMemory);
+ builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice,
+ spv::MemorySemanticsAllMemory |
+ spv::MemorySemanticsSequentiallyConsistentMask);
return 0;
case glslang::EOpGroupMemoryBarrierWithGroupSync:
// Control barrier with non-"None" semantic is also a memory barrier.
POTENTIALLY_UNUSED
const MemorySemanticsMask MemorySemanticsAllMemory =
- (MemorySemanticsMask)(MemorySemanticsSequentiallyConsistentMask |
- MemorySemanticsUniformMemoryMask |
+ (MemorySemanticsMask)(MemorySemanticsUniformMemoryMask |
MemorySemanticsSubgroupMemoryMask |
MemorySemanticsWorkgroupMemoryMask |
MemorySemanticsCrossWorkgroupMemoryMask |
// Module Version 10000
// Generated by (magic number): 80002
-// Id's are bound by 128
+// Id's are bound by 127
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 72 76 79 83 111 124
+ EntryPoint TessellationControl 4 "main" 72 76 79 83 110 123
ExecutionMode 4 OutputVertices 3
ExecutionMode 4 Triangles
ExecutionMode 4 SpacingEqual
Name 102 "@patchConstantResult"
Name 103 "param"
Name 105 "param"
- Name 111 "@patchConstantOutput.edges"
- Name 124 "@patchConstantOutput.inside"
+ Name 110 "@patchConstantOutput.edges"
+ Name 123 "@patchConstantOutput.inside"
MemberDecorate 33(TessellationBuffer) 0 Offset 0
MemberDecorate 33(TessellationBuffer) 1 Offset 4
Decorate 33(TessellationBuffer) Block
Decorate 76(pointId) BuiltIn InvocationId
Decorate 79(patchId) BuiltIn PrimitiveId
Decorate 83(@entryPointOutput) Location 0
- Decorate 111(@patchConstantOutput.edges) Patch
- Decorate 111(@patchConstantOutput.edges) BuiltIn TessLevelOuter
- Decorate 124(@patchConstantOutput.inside) Patch
- Decorate 124(@patchConstantOutput.inside) BuiltIn TessLevelInner
+ Decorate 110(@patchConstantOutput.edges) Patch
+ Decorate 110(@patchConstantOutput.edges) BuiltIn TessLevelOuter
+ Decorate 123(@patchConstantOutput.inside) Patch
+ Decorate 123(@patchConstantOutput.inside) BuiltIn TessLevelInner
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
83(@entryPointOutput): 82(ptr) Variable Output
92: TypePointer Output 22(HullOutputType)
94: 10(int) Constant 2
- 95: 10(int) Constant 1
+ 95: 10(int) Constant 4
96: 10(int) Constant 0
98: TypeBool
- 108: 10(int) Constant 4
- 109: TypeArray 6(float) 108
- 110: TypePointer Output 109
-111(@patchConstantOutput.edges): 110(ptr) Variable Output
- 114: TypePointer Output 6(float)
- 122: TypeArray 6(float) 94
- 123: TypePointer Output 122
-124(@patchConstantOutput.inside): 123(ptr) Variable Output
+ 108: TypeArray 6(float) 95
+ 109: TypePointer Output 108
+110(@patchConstantOutput.edges): 109(ptr) Variable Output
+ 113: TypePointer Output 6(float)
+ 121: TypeArray 6(float) 94
+ 122: TypePointer Output 121
+123(@patchConstantOutput.inside): 122(ptr) Variable Output
4(main): 2 Function None 3
5: Label
70(patch): 13(ptr) Variable Function
Store 105(param) 106
107:16(ConstantOutputType) FunctionCall 20(ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;) 103(param) 105(param)
Store 102(@patchConstantResult) 107
- 112: 39(ptr) AccessChain 102(@patchConstantResult) 32 32
- 113: 6(float) Load 112
- 115: 114(ptr) AccessChain 111(@patchConstantOutput.edges) 32
- Store 115 113
- 116: 39(ptr) AccessChain 102(@patchConstantResult) 32 41
- 117: 6(float) Load 116
- 118: 114(ptr) AccessChain 111(@patchConstantOutput.edges) 41
- Store 118 117
- 119: 39(ptr) AccessChain 102(@patchConstantResult) 32 45
- 120: 6(float) Load 119
- 121: 114(ptr) AccessChain 111(@patchConstantOutput.edges) 45
- Store 121 120
- 125: 39(ptr) AccessChain 102(@patchConstantResult) 41
- 126: 6(float) Load 125
- 127: 114(ptr) AccessChain 124(@patchConstantOutput.inside) 32
- Store 127 126
+ 111: 39(ptr) AccessChain 102(@patchConstantResult) 32 32
+ 112: 6(float) Load 111
+ 114: 113(ptr) AccessChain 110(@patchConstantOutput.edges) 32
+ Store 114 112
+ 115: 39(ptr) AccessChain 102(@patchConstantResult) 32 41
+ 116: 6(float) Load 115
+ 117: 113(ptr) AccessChain 110(@patchConstantOutput.edges) 41
+ Store 117 116
+ 118: 39(ptr) AccessChain 102(@patchConstantResult) 32 45
+ 119: 6(float) Load 118
+ 120: 113(ptr) AccessChain 110(@patchConstantOutput.edges) 45
+ Store 120 119
+ 124: 39(ptr) AccessChain 102(@patchConstantResult) 41
+ 125: 6(float) Load 124
+ 126: 113(ptr) AccessChain 123(@patchConstantOutput.inside) 32
+ Store 126 125
Branch 101
101: Label
Return
Name 105 "@entryPointOutput"
Name 107 "param"
Name 109 "param"
- Name 119 "@patchConstantResult"
- Name 120 "param"
+ Name 120 "@patchConstantResult"
+ Name 121 "param"
Name 126 "@patchConstantOutput.EdgeTessFactor"
Name 139 "@patchConstantOutput.InsideTessFactor"
Name 143 "HSTrianglePatchConstant"
104: TypePointer Output 103
105(@entryPointOutput): 104(ptr) Variable Output
112: TypePointer Output 21(HSOutput)
- 115: TypeBool
- 123: 9(int) Constant 4
- 124: TypeArray 6(float) 123
+ 114: 9(int) Constant 4
+ 116: TypeBool
+ 124: TypeArray 6(float) 114
125: TypePointer Output 124
126(@patchConstantOutput.EdgeTessFactor): 125(ptr) Variable Output
129: TypePointer Output 6(float)
99(id): 20(ptr) Variable Function
107(param): 12(ptr) Variable Function
109(param): 20(ptr) Variable Function
-119(@patchConstantResult): 55(ptr) Variable Function
- 120(param): 12(ptr) Variable Function
+120(@patchConstantResult): 55(ptr) Variable Function
+ 121(param): 12(ptr) Variable Function
98: 11 Load 97(patch)
Store 95(patch) 98
102: 9(int) Load 101(id)
111:21(HSOutput) FunctionCall 25(@HSMain(struct-HSInput-vf3-vf31[3];u1;) 107(param) 109(param)
113: 112(ptr) AccessChain 105(@entryPointOutput) 106
Store 113 111
- ControlBarrier 68 63 58
- 114: 9(int) Load 101(id)
- 116: 115(bool) IEqual 114 57
- SelectionMerge 118 None
- BranchConditional 116 117 118
- 117: Label
- 121: 11 Load 95(patch)
- Store 120(param) 121
- 122:15(HSTrianglePatchConstant) FunctionCall 18(HSPatchConstant(struct-HSInput-vf3-vf31[3];) 120(param)
- Store 119(@patchConstantResult) 122
- 127: 50(ptr) AccessChain 119(@patchConstantResult) 57 57
+ ControlBarrier 68 114 58
+ 115: 9(int) Load 101(id)
+ 117: 116(bool) IEqual 115 57
+ SelectionMerge 119 None
+ BranchConditional 117 118 119
+ 118: Label
+ 122: 11 Load 95(patch)
+ Store 121(param) 122
+ 123:15(HSTrianglePatchConstant) FunctionCall 18(HSPatchConstant(struct-HSInput-vf3-vf31[3];) 121(param)
+ Store 120(@patchConstantResult) 123
+ 127: 50(ptr) AccessChain 120(@patchConstantResult) 57 57
128: 6(float) Load 127
130: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 57
Store 130 128
- 131: 50(ptr) AccessChain 119(@patchConstantResult) 57 62
+ 131: 50(ptr) AccessChain 120(@patchConstantResult) 57 62
132: 6(float) Load 131
133: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 62
Store 133 132
- 134: 50(ptr) AccessChain 119(@patchConstantResult) 57 67
+ 134: 50(ptr) AccessChain 120(@patchConstantResult) 57 67
135: 6(float) Load 134
136: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 67
Store 136 135
- 140: 50(ptr) AccessChain 119(@patchConstantResult) 62
+ 140: 50(ptr) AccessChain 120(@patchConstantResult) 62
141: 6(float) Load 140
142: 129(ptr) AccessChain 139(@patchConstantOutput.InsideTessFactor) 57
Store 142 141
- 147: 146(ptr) AccessChain 119(@patchConstantResult) 67
+ 147: 146(ptr) AccessChain 120(@patchConstantResult) 67
148: 14 Load 147
150: 149(ptr) AccessChain 145(@patchConstantOutput) 57
Store 150 148
- Branch 118
- 118: Label
+ Branch 119
+ 119: Label
Return
FunctionEnd
18(HSPatchConstant(struct-HSInput-vf3-vf31[3];):15(HSTrianglePatchConstant) Function None 16
// 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
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
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)
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
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
// 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
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
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)
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
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
// 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 Triangles
ExecutionMode 4 SpacingEqual
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
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)
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
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
// Module Version 10000
// Generated by (magic number): 80002
-// Id's are bound by 128
+// Id's are bound by 127
Capability Tessellation
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 56 64 83 86 111 124
+ EntryPoint TessellationControl 4 "main" 56 64 83 86 110 123
ExecutionMode 4 OutputVertices 3
ExecutionMode 4 Triangles
ExecutionMode 4 SpacingFractionalOdd
Name 90 "param"
Name 104 "@patchConstantResult"
Name 105 "param"
- Name 111 "@patchConstantOutput.fTessFactor"
- Name 124 "@patchConstantOutput.fInsideTessFactor"
+ Name 110 "@patchConstantOutput.fTessFactor"
+ Name 123 "@patchConstantOutput.fInsideTessFactor"
Decorate 56(I.m_Position) BuiltIn Position
Decorate 64(I) Location 0
Decorate 83(cpid) BuiltIn InvocationId
Decorate 86(@entryPointOutput.m_Position) BuiltIn Position
- Decorate 111(@patchConstantOutput.fTessFactor) Patch
- Decorate 111(@patchConstantOutput.fTessFactor) BuiltIn TessLevelOuter
- Decorate 124(@patchConstantOutput.fInsideTessFactor) Patch
- Decorate 124(@patchConstantOutput.fInsideTessFactor) BuiltIn TessLevelInner
+ Decorate 110(@patchConstantOutput.fTessFactor) Patch
+ Decorate 110(@patchConstantOutput.fTessFactor) BuiltIn TessLevelOuter
+ Decorate 123(@patchConstantOutput.fInsideTessFactor) Patch
+ Decorate 123(@patchConstantOutput.fInsideTessFactor) BuiltIn TessLevelInner
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
86(@entryPointOutput.m_Position): 85(ptr) Variable Output
94: TypePointer Output 7(fvec4)
96: 9(int) Constant 2
- 97: 9(int) Constant 1
+ 97: 9(int) Constant 4
98: 9(int) Constant 0
100: TypeBool
- 108: 9(int) Constant 4
- 109: TypeArray 6(float) 108
- 110: TypePointer Output 109
-111(@patchConstantOutput.fTessFactor): 110(ptr) Variable Output
- 114: TypePointer Output 6(float)
- 122: TypeArray 6(float) 96
- 123: TypePointer Output 122
-124(@patchConstantOutput.fInsideTessFactor): 123(ptr) Variable Output
+ 108: TypeArray 6(float) 97
+ 109: TypePointer Output 108
+110(@patchConstantOutput.fTessFactor): 109(ptr) Variable Output
+ 113: TypePointer Output 6(float)
+ 121: TypeArray 6(float) 96
+ 122: TypePointer Output 121
+123(@patchConstantOutput.fInsideTessFactor): 122(ptr) Variable Output
4(main): 2 Function None 3
5: Label
53(I): 12(ptr) Variable Function
Store 105(param) 106
107:14(HS_Output) FunctionCall 17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];) 105(param)
Store 104(@patchConstantResult) 107
- 112: 34(ptr) AccessChain 104(@patchConstantResult) 33 33
- 113: 6(float) Load 112
- 115: 114(ptr) AccessChain 111(@patchConstantOutput.fTessFactor) 33
- Store 115 113
- 116: 34(ptr) AccessChain 104(@patchConstantResult) 33 32
- 117: 6(float) Load 116
- 118: 114(ptr) AccessChain 111(@patchConstantOutput.fTessFactor) 32
- Store 118 117
- 119: 34(ptr) AccessChain 104(@patchConstantResult) 33 74
- 120: 6(float) Load 119
- 121: 114(ptr) AccessChain 111(@patchConstantOutput.fTessFactor) 74
- Store 121 120
- 125: 34(ptr) AccessChain 104(@patchConstantResult) 32
- 126: 6(float) Load 125
- 127: 114(ptr) AccessChain 124(@patchConstantOutput.fInsideTessFactor) 33
- Store 127 126
+ 111: 34(ptr) AccessChain 104(@patchConstantResult) 33 33
+ 112: 6(float) Load 111
+ 114: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 33
+ Store 114 112
+ 115: 34(ptr) AccessChain 104(@patchConstantResult) 33 32
+ 116: 6(float) Load 115
+ 117: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 32
+ Store 117 116
+ 118: 34(ptr) AccessChain 104(@patchConstantResult) 33 74
+ 119: 6(float) Load 118
+ 120: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 74
+ Store 120 119
+ 124: 34(ptr) AccessChain 104(@patchConstantResult) 32
+ 125: 6(float) Load 124
+ 126: 113(ptr) AccessChain 123(@patchConstantOutput.fInsideTessFactor) 33
+ Store 126 125
Branch 103
103: Label
Return
Name 68 "param"
Name 70 "param"
Name 74 "i"
- Name 75 "param"
- Name 77 "param"
- Name 81 "i"
- Name 82 "param"
- Name 84 "param"
- Name 88 "@patchConstantResult"
+ Name 76 "param"
+ Name 78 "param"
+ Name 82 "i"
+ Name 83 "param"
+ Name 85 "param"
+ Name 89 "@patchConstantResult"
Name 94 "@patchConstantOutput.tfactor"
Name 108 "@patchConstantOutput.flInFactor"
Name 112 "o"
48(@entryPointOutput): 47(ptr) Variable Output
55: TypePointer Output 14(hs_out_t)
57: 9(int) Constant 2
- 58: 9(int) Constant 1
+ 58: 9(int) Constant 4
59: 9(int) Constant 0
61: TypeBool
65: TypePointer Function 20
73: 29(int) Constant 1
- 80: 29(int) Constant 2
- 87: TypePointer Function 22(hs_pcf_t)
- 91: 9(int) Constant 4
- 92: TypeArray 6(float) 91
+ 75: 9(int) Constant 1
+ 81: 29(int) Constant 2
+ 88: TypePointer Function 22(hs_pcf_t)
+ 92: TypeArray 6(float) 58
93: TypePointer Output 92
94(@patchConstantOutput.tfactor): 93(ptr) Variable Output
95: TypePointer Function 6(float)
68(param): 12(ptr) Variable Function
70(param): 13(ptr) Variable Function
74(i): 12(ptr) Variable Function
- 75(param): 12(ptr) Variable Function
- 77(param): 13(ptr) Variable Function
- 81(i): 12(ptr) Variable Function
- 82(param): 12(ptr) Variable Function
- 84(param): 13(ptr) Variable Function
-88(@patchConstantResult): 87(ptr) Variable Function
+ 76(param): 12(ptr) Variable Function
+ 78(param): 13(ptr) Variable Function
+ 82(i): 12(ptr) Variable Function
+ 83(param): 12(ptr) Variable Function
+ 85(param): 13(ptr) Variable Function
+89(@patchConstantResult): 88(ptr) Variable Function
42: 11 Load 41(i)
Store 39(i) 42
46: 9(int) Load 45(cpid)
71:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 68(param) 70(param)
72: 27(ptr) AccessChain 66(pcf_out) 30
Store 72 71
- 76: 11 Load 74(i)
- Store 75(param) 76
- Store 77(param) 58
- 78:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 75(param) 77(param)
- 79: 27(ptr) AccessChain 66(pcf_out) 73
- Store 79 78
- 83: 11 Load 81(i)
- Store 82(param) 83
- Store 84(param) 57
- 85:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 82(param) 84(param)
- 86: 27(ptr) AccessChain 66(pcf_out) 80
- Store 86 85
- 89: 20 Load 66(pcf_out)
- 90:22(hs_pcf_t) FunctionCall 25(PCF(struct-hs_out_t-vf31[3];) 89
- Store 88(@patchConstantResult) 90
- 96: 95(ptr) AccessChain 88(@patchConstantResult) 30 30
+ 77: 11 Load 74(i)
+ Store 76(param) 77
+ Store 78(param) 75
+ 79:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 76(param) 78(param)
+ 80: 27(ptr) AccessChain 66(pcf_out) 73
+ Store 80 79
+ 84: 11 Load 82(i)
+ Store 83(param) 84
+ Store 85(param) 57
+ 86:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 83(param) 85(param)
+ 87: 27(ptr) AccessChain 66(pcf_out) 81
+ Store 87 86
+ 90: 20 Load 66(pcf_out)
+ 91:22(hs_pcf_t) FunctionCall 25(PCF(struct-hs_out_t-vf31[3];) 90
+ Store 89(@patchConstantResult) 91
+ 96: 95(ptr) AccessChain 89(@patchConstantResult) 30 30
97: 6(float) Load 96
99: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 30
Store 99 97
- 100: 95(ptr) AccessChain 88(@patchConstantResult) 30 73
+ 100: 95(ptr) AccessChain 89(@patchConstantResult) 30 73
101: 6(float) Load 100
102: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 73
Store 102 101
- 103: 95(ptr) AccessChain 88(@patchConstantResult) 30 80
+ 103: 95(ptr) AccessChain 89(@patchConstantResult) 30 81
104: 6(float) Load 103
- 105: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 80
+ 105: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 81
Store 105 104
- 109: 95(ptr) AccessChain 88(@patchConstantResult) 73
+ 109: 95(ptr) AccessChain 89(@patchConstantResult) 73
110: 6(float) Load 109
111: 98(ptr) AccessChain 108(@patchConstantOutput.flInFactor) 30
Store 111 110
25(PCF(struct-hs_out_t-vf31[3];):22(hs_pcf_t) Function None 23
24(pcf_out): 20 FunctionParameter
26: Label
- 112(o): 87(ptr) Variable Function
+ 112(o): 88(ptr) Variable Function
113: 6(float) CompositeExtract 24(pcf_out) 0 0 0
114: 95(ptr) AccessChain 112(o) 30 30
Store 114 113
116: 95(ptr) AccessChain 112(o) 30 73
Store 116 115
117: 6(float) CompositeExtract 24(pcf_out) 2 0 0
- 118: 95(ptr) AccessChain 112(o) 30 80
+ 118: 95(ptr) AccessChain 112(o) 30 81
Store 118 117
120: 95(ptr) AccessChain 112(o) 73
Store 120 119
Name 69 "param"
Name 71 "param"
Name 75 "i"
- Name 76 "param"
- Name 78 "param"
- Name 82 "i"
- Name 83 "param"
- Name 85 "param"
- Name 89 "@patchConstantResult"
+ Name 77 "param"
+ Name 79 "param"
+ Name 83 "i"
+ Name 84 "param"
+ Name 86 "param"
+ Name 90 "@patchConstantResult"
Name 96 "@patchConstantOutput.tfactor"
Name 110 "@patchConstantOutput.flInFactor"
Name 114 "o"
49(@entryPointOutput): 48(ptr) Variable Output
56: TypePointer Output 14(hs_out_t)
58: 9(int) Constant 2
- 59: 9(int) Constant 1
+ 59: 9(int) Constant 4
60: 9(int) Constant 0
62: TypeBool
66: TypePointer Function 20
74: 28(int) Constant 1
- 81: 28(int) Constant 2
- 88: TypePointer Function 22(hs_pcf_t)
- 93: 9(int) Constant 4
- 94: TypeArray 6(float) 93
+ 76: 9(int) Constant 1
+ 82: 28(int) Constant 2
+ 89: TypePointer Function 22(hs_pcf_t)
+ 94: TypeArray 6(float) 59
95: TypePointer Output 94
96(@patchConstantOutput.tfactor): 95(ptr) Variable Output
97: TypePointer Function 6(float)
69(param): 12(ptr) Variable Function
71(param): 13(ptr) Variable Function
75(i): 12(ptr) Variable Function
- 76(param): 12(ptr) Variable Function
- 78(param): 13(ptr) Variable Function
- 82(i): 12(ptr) Variable Function
- 83(param): 12(ptr) Variable Function
- 85(param): 13(ptr) Variable Function
-89(@patchConstantResult): 88(ptr) Variable Function
+ 77(param): 12(ptr) Variable Function
+ 79(param): 13(ptr) Variable Function
+ 83(i): 12(ptr) Variable Function
+ 84(param): 12(ptr) Variable Function
+ 86(param): 13(ptr) Variable Function
+90(@patchConstantResult): 89(ptr) Variable Function
43: 11 Load 42(i)
Store 40(i) 43
47: 9(int) Load 46(cpid)
72:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 69(param) 71(param)
73: 30(ptr) AccessChain 67(pcf_out) 29
Store 73 72
- 77: 11 Load 75(i)
- Store 76(param) 77
- Store 78(param) 59
- 79:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 76(param) 78(param)
- 80: 30(ptr) AccessChain 67(pcf_out) 74
- Store 80 79
- 84: 11 Load 82(i)
- Store 83(param) 84
- Store 85(param) 58
- 86:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 83(param) 85(param)
- 87: 30(ptr) AccessChain 67(pcf_out) 81
- Store 87 86
- 90: 20 Load 67(pcf_out)
- 91: 11 Load 40(i)
- 92:22(hs_pcf_t) FunctionCall 26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];) 90 91
- Store 89(@patchConstantResult) 92
- 98: 97(ptr) AccessChain 89(@patchConstantResult) 29 29
+ 78: 11 Load 75(i)
+ Store 77(param) 78
+ Store 79(param) 76
+ 80:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 77(param) 79(param)
+ 81: 30(ptr) AccessChain 67(pcf_out) 74
+ Store 81 80
+ 85: 11 Load 83(i)
+ Store 84(param) 85
+ Store 86(param) 58
+ 87:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 84(param) 86(param)
+ 88: 30(ptr) AccessChain 67(pcf_out) 82
+ Store 88 87
+ 91: 20 Load 67(pcf_out)
+ 92: 11 Load 40(i)
+ 93:22(hs_pcf_t) FunctionCall 26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];) 91 92
+ Store 90(@patchConstantResult) 93
+ 98: 97(ptr) AccessChain 90(@patchConstantResult) 29 29
99: 6(float) Load 98
101: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 29
Store 101 99
- 102: 97(ptr) AccessChain 89(@patchConstantResult) 29 74
+ 102: 97(ptr) AccessChain 90(@patchConstantResult) 29 74
103: 6(float) Load 102
104: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 74
Store 104 103
- 105: 97(ptr) AccessChain 89(@patchConstantResult) 29 81
+ 105: 97(ptr) AccessChain 90(@patchConstantResult) 29 82
106: 6(float) Load 105
- 107: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 81
+ 107: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 82
Store 107 106
- 111: 97(ptr) AccessChain 89(@patchConstantResult) 74
+ 111: 97(ptr) AccessChain 90(@patchConstantResult) 74
112: 6(float) Load 111
113: 100(ptr) AccessChain 110(@patchConstantOutput.flInFactor) 29
Store 113 112
24(pcf_out): 20 FunctionParameter
25(pcf_in): 11 FunctionParameter
27: Label
- 114(o): 88(ptr) Variable Function
+ 114(o): 89(ptr) Variable Function
115: 6(float) CompositeExtract 24(pcf_out) 0 0 0
116: 97(ptr) AccessChain 114(o) 29 29
Store 116 115
118: 97(ptr) AccessChain 114(o) 29 74
Store 118 117
119: 6(float) CompositeExtract 24(pcf_out) 2 0 0
- 120: 97(ptr) AccessChain 114(o) 29 81
+ 120: 97(ptr) AccessChain 114(o) 29 82
Store 120 119
122: 97(ptr) AccessChain 114(o) 74
Store 122 121
39(InvocationId): 38(ptr) Variable Input
44: TypePointer Output 13(HS_OUT)
46: 9(int) Constant 2
- 47: 9(int) Constant 1
+ 47: 9(int) Constant 4
48: 9(int) Constant 0
50: TypeBool
4(main): 2 Function None 3
// Module Version 10000
// Generated by (magic number): 80002
-// Id's are bound by 22
+// Id's are bound by 23
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint GLCompute 4 "ComputeShaderFunction" 20
+ EntryPoint GLCompute 4 "ComputeShaderFunction" 21
ExecutionMode 4 LocalSize 1 1 1
Source HLSL 500
Name 4 "ComputeShaderFunction"
Name 8 "@ComputeShaderFunction("
- Name 20 "@entryPointOutput"
- Decorate 20(@entryPointOutput) Location 0
+ Name 21 "@entryPointOutput"
+ Decorate 21(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeFunction 6(float)
10: TypeInt 32 0
11: 10(int) Constant 1
- 12: 10(int) Constant 4048
- 13: 10(int) Constant 512
+ 12: 10(int) Constant 4040
+ 13: 10(int) Constant 4048
14: 10(int) Constant 2
- 15: 10(int) Constant 256
- 16: 6(float) Constant 0
- 19: TypePointer Output 6(float)
-20(@entryPointOutput): 19(ptr) Variable Output
+ 15: 10(int) Constant 512
+ 16: 10(int) Constant 256
+ 17: 6(float) Constant 0
+ 20: TypePointer Output 6(float)
+21(@entryPointOutput): 20(ptr) Variable Output
4(ComputeShaderFunction): 2 Function None 3
5: Label
- 21: 6(float) FunctionCall 8(@ComputeShaderFunction()
- Store 20(@entryPointOutput) 21
+ 22: 6(float) FunctionCall 8(@ComputeShaderFunction()
+ Store 21(@entryPointOutput) 22
Return
FunctionEnd
8(@ComputeShaderFunction(): 6(float) Function None 7
9: Label
MemoryBarrier 11 12
- ControlBarrier 11 11 12
- MemoryBarrier 11 13
ControlBarrier 11 11 13
- MemoryBarrier 14 15
- ControlBarrier 14 14 15
- ReturnValue 16
+ MemoryBarrier 14 12
+ ControlBarrier 11 11 15
+ MemoryBarrier 14 16
+ ControlBarrier 14 14 16
+ ReturnValue 17
FunctionEnd
spv.310.comp
// Module Version 10000
// Generated by (magic number): 80002
-// Id's are bound by 69
+// Id's are bound by 71
Capability Shader
Capability DeviceGroup
Source ESSL 310
SourceExtension "GL_EXT_device_group"
Name 4 "main"
- Name 13 "outb"
- MemberName 13(outb) 0 "f"
- MemberName 13(outb) 1 "g"
- MemberName 13(outb) 2 "h"
- MemberName 13(outb) 3 "uns"
- Name 15 "outbname"
- Name 19 "s"
- Name 24 "outbna"
- MemberName 24(outbna) 0 "k"
- MemberName 24(outbna) 1 "na"
- Name 26 "outbnamena"
+ Name 12 "outb"
+ MemberName 12(outb) 0 "f"
+ MemberName 12(outb) 1 "g"
+ MemberName 12(outb) 2 "h"
+ MemberName 12(outb) 3 "uns"
+ Name 14 "outbname"
+ Name 18 "s"
+ Name 23 "outbna"
+ MemberName 23(outbna) 0 "k"
+ MemberName 23(outbna) 1 "na"
+ Name 25 "outbnamena"
Name 42 "i"
Name 48 "outs"
MemberName 48(outs) 0 "s"
Name 50 "outnames"
Name 53 "gl_LocalInvocationID"
Name 64 "gl_DeviceIndex"
- Decorate 12 ArrayStride 16
- MemberDecorate 13(outb) 0 Offset 0
- MemberDecorate 13(outb) 1 Offset 4
- MemberDecorate 13(outb) 2 Offset 8
- MemberDecorate 13(outb) 3 Offset 16
- Decorate 13(outb) BufferBlock
- Decorate 15(outbname) DescriptorSet 0
- MemberDecorate 24(outbna) 0 Offset 0
- MemberDecorate 24(outbna) 1 Offset 16
- Decorate 24(outbna) BufferBlock
- Decorate 26(outbnamena) DescriptorSet 0
+ Decorate 11 ArrayStride 16
+ MemberDecorate 12(outb) 0 Offset 0
+ MemberDecorate 12(outb) 1 Offset 4
+ MemberDecorate 12(outb) 2 Offset 8
+ MemberDecorate 12(outb) 3 Offset 16
+ Decorate 12(outb) BufferBlock
+ Decorate 14(outbname) DescriptorSet 0
+ MemberDecorate 23(outbna) 0 Offset 0
+ MemberDecorate 23(outbna) 1 Offset 16
+ Decorate 23(outbna) BufferBlock
+ Decorate 25(outbnamena) DescriptorSet 0
Decorate 47 ArrayStride 16
MemberDecorate 48(outs) 0 Offset 0
MemberDecorate 48(outs) 1 Offset 16
Decorate 50(outnames) DescriptorSet 0
Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 64(gl_DeviceIndex) BuiltIn DeviceIndex
- Decorate 68 BuiltIn WorkgroupSize
+ Decorate 70 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: 6(int) Constant 2
- 8: 6(int) Constant 1
- 9: 6(int) Constant 0
- 10: TypeFloat 32
- 11: TypeVector 10(float) 3
- 12: TypeRuntimeArray 11(fvec3)
- 13(outb): TypeStruct 10(float) 10(float) 10(float) 12
- 14: TypePointer Uniform 13(outb)
- 15(outbname): 14(ptr) Variable Uniform
- 16: TypeInt 32 1
- 17: 16(int) Constant 0
- 18: TypePointer Workgroup 10(float)
- 19(s): 18(ptr) Variable Workgroup
- 21: TypePointer Uniform 10(float)
- 23: TypeVector 10(float) 4
- 24(outbna): TypeStruct 16(int) 23(fvec4)
- 25: TypePointer Uniform 24(outbna)
- 26(outbnamena): 25(ptr) Variable Uniform
- 27: 16(int) Constant 1
- 30: TypePointer Uniform 23(fvec4)
- 32: 16(int) Constant 3
- 33: 16(int) Constant 18
- 36: 16(int) Constant 17
- 37: 10(float) Constant 1077936128
- 38: 11(fvec3) ConstantComposite 37 37 37
- 39: TypePointer Uniform 11(fvec3)
- 41: TypePointer Workgroup 16(int)
+ 8: 6(int) Constant 264
+ 9: TypeFloat 32
+ 10: TypeVector 9(float) 3
+ 11: TypeRuntimeArray 10(fvec3)
+ 12(outb): TypeStruct 9(float) 9(float) 9(float) 11
+ 13: TypePointer Uniform 12(outb)
+ 14(outbname): 13(ptr) Variable Uniform
+ 15: TypeInt 32 1
+ 16: 15(int) Constant 0
+ 17: TypePointer Workgroup 9(float)
+ 18(s): 17(ptr) Variable Workgroup
+ 20: TypePointer Uniform 9(float)
+ 22: TypeVector 9(float) 4
+ 23(outbna): TypeStruct 15(int) 22(fvec4)
+ 24: TypePointer Uniform 23(outbna)
+ 25(outbnamena): 24(ptr) Variable Uniform
+ 26: 15(int) Constant 1
+ 29: TypePointer Uniform 22(fvec4)
+ 31: 15(int) Constant 3
+ 32: 15(int) Constant 18
+ 33: 6(int) Constant 0
+ 36: 15(int) Constant 17
+ 37: 9(float) Constant 1077936128
+ 38: 10(fvec3) ConstantComposite 37 37 37
+ 39: TypePointer Uniform 10(fvec3)
+ 41: TypePointer Workgroup 15(int)
42(i): 41(ptr) Variable Workgroup
- 47: TypeRuntimeArray 23(fvec4)
- 48(outs): TypeStruct 16(int) 47
+ 47: TypeRuntimeArray 22(fvec4)
+ 48(outs): TypeStruct 15(int) 47
49: TypePointer Uniform 48(outs)
50(outnames): 49(ptr) Variable Uniform
51: TypeVector 6(int) 3
52: TypePointer Input 51(ivec3)
53(gl_LocalInvocationID): 52(ptr) Variable Input
54: TypePointer Input 6(int)
- 61: TypePointer Uniform 16(int)
- 63: TypePointer Input 16(int)
+ 61: TypePointer Uniform 15(int)
+ 63: TypePointer Input 15(int)
64(gl_DeviceIndex): 63(ptr) Variable Input
- 65: 6(int) Constant 16
- 66: 6(int) Constant 32
- 67: 6(int) Constant 4
- 68: 51(ivec3) ConstantComposite 65 66 67
+ 65: 6(int) Constant 1
+ 66: 6(int) Constant 4040
+ 67: 6(int) Constant 16
+ 68: 6(int) Constant 32
+ 69: 6(int) Constant 4
+ 70: 51(ivec3) ConstantComposite 67 68 69
4(main): 2 Function None 3
5: Label
- ControlBarrier 7 8 9
- 20: 10(float) Load 19(s)
- 22: 21(ptr) AccessChain 15(outbname) 17
- Store 22 20
- 28: 10(float) Load 19(s)
- 29: 23(fvec4) CompositeConstruct 28 28 28 28
- 31: 30(ptr) AccessChain 26(outbnamena) 27
- Store 31 29
- 34: 21(ptr) AccessChain 15(outbname) 32 33 9
- 35: 10(float) Load 34
- Store 19(s) 35
- 40: 39(ptr) AccessChain 15(outbname) 32 36
+ ControlBarrier 7 7 8
+ 19: 9(float) Load 18(s)
+ 21: 20(ptr) AccessChain 14(outbname) 16
+ Store 21 19
+ 27: 9(float) Load 18(s)
+ 28: 22(fvec4) CompositeConstruct 27 27 27 27
+ 30: 29(ptr) AccessChain 25(outbnamena) 26
+ Store 30 28
+ 34: 20(ptr) AccessChain 14(outbname) 31 32 33
+ 35: 9(float) Load 34
+ Store 18(s) 35
+ 40: 39(ptr) AccessChain 14(outbname) 31 36
Store 40 38
- 43: 16(int) Load 42(i)
- 44: 10(float) Load 19(s)
- 45: 11(fvec3) CompositeConstruct 44 44 44
- 46: 39(ptr) AccessChain 15(outbname) 32 43
+ 43: 15(int) Load 42(i)
+ 44: 9(float) Load 18(s)
+ 45: 10(fvec3) CompositeConstruct 44 44 44
+ 46: 39(ptr) AccessChain 14(outbname) 31 43
Store 46 45
- 55: 54(ptr) AccessChain 53(gl_LocalInvocationID) 9
+ 55: 54(ptr) AccessChain 53(gl_LocalInvocationID) 33
56: 6(int) Load 55
- 57: 10(float) Load 19(s)
- 58: 23(fvec4) CompositeConstruct 57 57 57 57
- 59: 30(ptr) AccessChain 50(outnames) 27 56
+ 57: 9(float) Load 18(s)
+ 58: 22(fvec4) CompositeConstruct 57 57 57 57
+ 59: 29(ptr) AccessChain 50(outnames) 26 56
Store 59 58
- 60: 16(int) ArrayLength 15(outbname) 3
- 62: 61(ptr) AccessChain 50(outnames) 17
+ 60: 15(int) ArrayLength 14(outbname) 3
+ 62: 61(ptr) AccessChain 50(outnames) 16
Store 62 60
+ MemoryBarrier 65 8
+ MemoryBarrier 7 66
Return
FunctionEnd
spv.400.tesc
// Module Version 10000
// Generated by (magic number): 80002
-// Id's are bound by 93
+// Id's are bound by 92
Capability Tessellation
Capability TessellationPointSize
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 24 41 44 47 54 68 73 79 83 84 87 88 91 92
+ EntryPoint TessellationControl 4 "main" 24 41 44 47 53 67 72 78 82 83 86 87 90 91
ExecutionMode 4 OutputVertices 4
Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects"
MemberName 50(gl_PerVertex) 0 "gl_Position"
MemberName 50(gl_PerVertex) 1 "gl_PointSize"
MemberName 50(gl_PerVertex) 2 "gl_ClipDistance"
- Name 54 "gl_out"
- Name 68 "gl_TessLevelOuter"
- Name 73 "gl_TessLevelInner"
- Name 78 "outa"
- Name 79 "patchOut"
- Name 83 "inb"
- Name 84 "ind"
- Name 87 "ivla"
- Name 88 "ivlb"
- Name 91 "ovla"
- Name 92 "ovlb"
+ Name 53 "gl_out"
+ Name 67 "gl_TessLevelOuter"
+ Name 72 "gl_TessLevelInner"
+ Name 77 "outa"
+ Name 78 "patchOut"
+ Name 82 "inb"
+ Name 83 "ind"
+ Name 86 "ivla"
+ Name 87 "ivlb"
+ Name 90 "ovla"
+ Name 91 "ovlb"
MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 50(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 50(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 50(gl_PerVertex) Block
- Decorate 68(gl_TessLevelOuter) Patch
- Decorate 68(gl_TessLevelOuter) BuiltIn TessLevelOuter
- Decorate 73(gl_TessLevelInner) Patch
- Decorate 73(gl_TessLevelInner) BuiltIn TessLevelInner
- Decorate 79(patchOut) Patch
- Decorate 87(ivla) Location 3
- Decorate 88(ivlb) Location 4
- Decorate 91(ovla) Location 3
- Decorate 92(ovlb) Location 4
+ Decorate 67(gl_TessLevelOuter) Patch
+ Decorate 67(gl_TessLevelOuter) BuiltIn TessLevelOuter
+ Decorate 72(gl_TessLevelInner) Patch
+ Decorate 72(gl_TessLevelInner) BuiltIn TessLevelInner
+ Decorate 78(patchOut) Patch
+ Decorate 86(ivla) Location 3
+ Decorate 87(ivlb) Location 4
+ Decorate 90(ovla) Location 3
+ Decorate 91(ovlb) Location 4
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: 6(int) Constant 2
- 8: 6(int) Constant 1
+ 8: 6(int) Constant 4
9: 6(int) Constant 0
10: TypeInt 32 1
11: TypePointer Function 10(int)
47(gl_InvocationID): 40(ptr) Variable Input
49: TypeArray 14(float) 7
50(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 49
- 51: 6(int) Constant 4
- 52: TypeArray 50(gl_PerVertex) 51
- 53: TypePointer Output 52
- 54(gl_out): 53(ptr) Variable Output
- 57: TypePointer Output 15(fvec4)
- 61: TypePointer Output 14(float)
- 66: TypeArray 14(float) 51
- 67: TypePointer Output 66
-68(gl_TessLevelOuter): 67(ptr) Variable Output
- 69: 10(int) Constant 3
- 70: 14(float) Constant 1078774989
- 72: TypePointer Output 49
-73(gl_TessLevelInner): 72(ptr) Variable Output
- 74: 14(float) Constant 1067869798
- 76: TypeArray 10(int) 51
- 77: TypePointer Private 76
- 78(outa): 77(ptr) Variable Private
- 79(patchOut): 57(ptr) Variable Output
- 80: TypeVector 14(float) 2
- 81: TypeArray 80(fvec2) 21
- 82: TypePointer Input 81
- 83(inb): 82(ptr) Variable Input
- 84(ind): 82(ptr) Variable Input
- 85: TypeArray 15(fvec4) 21
- 86: TypePointer Input 85
- 87(ivla): 86(ptr) Variable Input
- 88(ivlb): 86(ptr) Variable Input
- 89: TypeArray 15(fvec4) 51
- 90: TypePointer Output 89
- 91(ovla): 90(ptr) Variable Output
- 92(ovlb): 90(ptr) Variable Output
+ 51: TypeArray 50(gl_PerVertex) 8
+ 52: TypePointer Output 51
+ 53(gl_out): 52(ptr) Variable Output
+ 56: TypePointer Output 15(fvec4)
+ 60: TypePointer Output 14(float)
+ 65: TypeArray 14(float) 8
+ 66: TypePointer Output 65
+67(gl_TessLevelOuter): 66(ptr) Variable Output
+ 68: 10(int) Constant 3
+ 69: 14(float) Constant 1078774989
+ 71: TypePointer Output 49
+72(gl_TessLevelInner): 71(ptr) Variable Output
+ 73: 14(float) Constant 1067869798
+ 75: TypeArray 10(int) 8
+ 76: TypePointer Private 75
+ 77(outa): 76(ptr) Variable Private
+ 78(patchOut): 56(ptr) Variable Output
+ 79: TypeVector 14(float) 2
+ 80: TypeArray 79(fvec2) 21
+ 81: TypePointer Input 80
+ 82(inb): 81(ptr) Variable Input
+ 83(ind): 81(ptr) Variable Input
+ 84: TypeArray 15(fvec4) 21
+ 85: TypePointer Input 84
+ 86(ivla): 85(ptr) Variable Input
+ 87(ivlb): 85(ptr) Variable Input
+ 88: TypeArray 15(fvec4) 8
+ 89: TypePointer Output 88
+ 90(ovla): 89(ptr) Variable Output
+ 91(ovlb): 89(ptr) Variable Output
4(main): 2 Function None 3
5: Label
12(a): 11(ptr) Variable Function
Store 43(pid) 45
48: 10(int) Load 47(gl_InvocationID)
Store 46(iid) 48
- 55: 10(int) Load 47(gl_InvocationID)
- 56: 15(fvec4) Load 17(p)
- 58: 57(ptr) AccessChain 54(gl_out) 55 26
- Store 58 56
- 59: 10(int) Load 47(gl_InvocationID)
- 60: 14(float) Load 31(ps)
- 62: 61(ptr) AccessChain 54(gl_out) 59 25
- Store 62 60
- 63: 10(int) Load 47(gl_InvocationID)
- 64: 14(float) Load 35(cd)
- 65: 61(ptr) AccessChain 54(gl_out) 63 36 25
- Store 65 64
- 71: 61(ptr) AccessChain 68(gl_TessLevelOuter) 69
- Store 71 70
- 75: 61(ptr) AccessChain 73(gl_TessLevelInner) 25
- Store 75 74
+ 54: 10(int) Load 47(gl_InvocationID)
+ 55: 15(fvec4) Load 17(p)
+ 57: 56(ptr) AccessChain 53(gl_out) 54 26
+ Store 57 55
+ 58: 10(int) Load 47(gl_InvocationID)
+ 59: 14(float) Load 31(ps)
+ 61: 60(ptr) AccessChain 53(gl_out) 58 25
+ Store 61 59
+ 62: 10(int) Load 47(gl_InvocationID)
+ 63: 14(float) Load 35(cd)
+ 64: 60(ptr) AccessChain 53(gl_out) 62 36 25
+ Store 64 63
+ 70: 60(ptr) AccessChain 67(gl_TessLevelOuter) 68
+ Store 70 69
+ 74: 60(ptr) AccessChain 72(gl_TessLevelInner) 25
+ Store 74 73
Return
FunctionEnd
8: TypeFunction 6(int) 7(ptr)
14: 6(int) Constant 1
15: 6(int) Constant 0
- 19: 6(int) Constant 1024
+ 19: 6(int) Constant 1032
20(counter): 7(ptr) Variable AtomicCounter
22: TypePointer Function 6(int)
24: 6(int) Constant 4
--- /dev/null
+spv.barrier.vert
+// Module Version 10000
+// Generated by (magic number): 80002
+// Id's are bound by 24
+
+ Capability Shader
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 9 15
+ Source GLSL 450
+ Name 4 "main"
+ Name 9 "c0"
+ Name 15 "c1"
+ Decorate 9(c0) Location 0
+ Decorate 15(c1) Location 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Output 7(fvec4)
+ 9(c0): 8(ptr) Variable Output
+ 10: 6(float) Constant 1065353216
+ 11: 7(fvec4) ConstantComposite 10 10 10 10
+ 12: TypeInt 32 0
+ 13: 12(int) Constant 1
+ 14: 12(int) Constant 4040
+ 15(c1): 8(ptr) Variable Output
+ 16: 12(int) Constant 72
+ 20: 12(int) Constant 2056
+ 4(main): 2 Function None 3
+ 5: Label
+ Store 9(c0) 11
+ MemoryBarrier 13 14
+ Store 15(c1) 11
+ MemoryBarrier 13 16
+ 17: 7(fvec4) Load 9(c0)
+ 18: 7(fvec4) CompositeConstruct 10 10 10 10
+ 19: 7(fvec4) FAdd 17 18
+ Store 9(c0) 19
+ MemoryBarrier 13 20
+ 21: 7(fvec4) Load 9(c0)
+ 22: 7(fvec4) CompositeConstruct 10 10 10 10
+ 23: 7(fvec4) FAdd 21 22
+ Store 9(c0) 23
+ Return
+ FunctionEnd
outnames.va[gl_LocalInvocationID.x] = vec4(s);
outnames.s = outbname.uns.length();
gl_DeviceIndex;
+ memoryBarrierShared();
+ groupMemoryBarrier();
}
--- /dev/null
+#version 450\r
+\r
+layout(location=0) out vec4 c0;\r
+layout(location=1) out vec4 c1;\r
+\r
+void main()\r
+{\r
+ c0 = vec4(1.0);\r
+ memoryBarrier();\r
+ c1 = vec4(1.0);\r
+ memoryBarrierBuffer();\r
+ ++c0;\r
+ memoryBarrierImage();\r
+ ++c0;\r
+}
\ No newline at end of file
// Test looping constructs.
// No tests yet for making sure break and continue from a nested loop
// goes to the innermost target.
+ "spv.barrier.vert",
"spv.do-simple.vert",
"spv.do-while-continue-break.vert",
"spv.for-complex-condition.vert",