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

@ -5429,29 +5429,47 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
builder.createNoResultOp(spv::OpEndPrimitive); builder.createNoResultOp(spv::OpEndPrimitive);
return 0; return 0;
case glslang::EOpBarrier: 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; return 0;
case glslang::EOpMemoryBarrier: case glslang::EOpMemoryBarrier:
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory |
spv::MemorySemanticsAcquireReleaseMask);
return 0; return 0;
case glslang::EOpMemoryBarrierAtomicCounter: case glslang::EOpMemoryBarrierAtomicCounter:
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAtomicCounterMemoryMask); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAtomicCounterMemoryMask |
spv::MemorySemanticsAcquireReleaseMask);
return 0; return 0;
case glslang::EOpMemoryBarrierBuffer: case glslang::EOpMemoryBarrierBuffer:
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsUniformMemoryMask); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsUniformMemoryMask |
spv::MemorySemanticsAcquireReleaseMask);
return 0; return 0;
case glslang::EOpMemoryBarrierImage: case glslang::EOpMemoryBarrierImage:
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsImageMemoryMask); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsImageMemoryMask |
spv::MemorySemanticsAcquireReleaseMask);
return 0; return 0;
case glslang::EOpMemoryBarrierShared: case glslang::EOpMemoryBarrierShared:
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsWorkgroupMemoryMask); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsWorkgroupMemoryMask |
spv::MemorySemanticsAcquireReleaseMask);
return 0; return 0;
case glslang::EOpGroupMemoryBarrier: case glslang::EOpGroupMemoryBarrier:
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsCrossWorkgroupMemoryMask); builder.createMemoryBarrier(spv::ScopeWorkgroup, spv::MemorySemanticsAllMemory |
spv::MemorySemanticsAcquireReleaseMask);
return 0; return 0;
case glslang::EOpAllMemoryBarrierWithGroupSync: case glslang::EOpAllMemoryBarrierWithGroupSync:
// Control barrier with non-"None" semantic is also a memory barrier. // 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; return 0;
case glslang::EOpGroupMemoryBarrierWithGroupSync: case glslang::EOpGroupMemoryBarrierWithGroupSync:
// Control barrier with non-"None" semantic is also a memory barrier. // Control barrier with non-"None" semantic is also a memory barrier.

View File

@ -74,8 +74,7 @@ const Decoration NoPrecision = DecorationMax;
POTENTIALLY_UNUSED POTENTIALLY_UNUSED
const MemorySemanticsMask MemorySemanticsAllMemory = const MemorySemanticsMask MemorySemanticsAllMemory =
(MemorySemanticsMask)(MemorySemanticsSequentiallyConsistentMask | (MemorySemanticsMask)(MemorySemanticsUniformMemoryMask |
MemorySemanticsUniformMemoryMask |
MemorySemanticsSubgroupMemoryMask | MemorySemanticsSubgroupMemoryMask |
MemorySemanticsWorkgroupMemoryMask | MemorySemanticsWorkgroupMemoryMask |
MemorySemanticsCrossWorkgroupMemoryMask | MemorySemanticsCrossWorkgroupMemoryMask |

View File

@ -357,12 +357,12 @@ triangle order = cw
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80002 // Generated by (magic number): 80002
// Id's are bound by 128 // Id's are bound by 127
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 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 OutputVertices 3
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 SpacingEqual ExecutionMode 4 SpacingEqual
@ -404,8 +404,8 @@ triangle order = cw
Name 102 "@patchConstantResult" Name 102 "@patchConstantResult"
Name 103 "param" Name 103 "param"
Name 105 "param" Name 105 "param"
Name 111 "@patchConstantOutput.edges" Name 110 "@patchConstantOutput.edges"
Name 124 "@patchConstantOutput.inside" Name 123 "@patchConstantOutput.inside"
MemberDecorate 33(TessellationBuffer) 0 Offset 0 MemberDecorate 33(TessellationBuffer) 0 Offset 0
MemberDecorate 33(TessellationBuffer) 1 Offset 4 MemberDecorate 33(TessellationBuffer) 1 Offset 4
Decorate 33(TessellationBuffer) Block Decorate 33(TessellationBuffer) Block
@ -415,10 +415,10 @@ triangle order = cw
Decorate 76(pointId) BuiltIn InvocationId Decorate 76(pointId) BuiltIn InvocationId
Decorate 79(patchId) BuiltIn PrimitiveId Decorate 79(patchId) BuiltIn PrimitiveId
Decorate 83(@entryPointOutput) Location 0 Decorate 83(@entryPointOutput) Location 0
Decorate 111(@patchConstantOutput.edges) Patch Decorate 110(@patchConstantOutput.edges) Patch
Decorate 111(@patchConstantOutput.edges) BuiltIn TessLevelOuter Decorate 110(@patchConstantOutput.edges) BuiltIn TessLevelOuter
Decorate 124(@patchConstantOutput.inside) Patch Decorate 123(@patchConstantOutput.inside) Patch
Decorate 124(@patchConstantOutput.inside) BuiltIn TessLevelInner Decorate 123(@patchConstantOutput.inside) BuiltIn TessLevelInner
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -458,17 +458,16 @@ triangle order = cw
83(@entryPointOutput): 82(ptr) Variable Output 83(@entryPointOutput): 82(ptr) Variable Output
92: TypePointer Output 22(HullOutputType) 92: TypePointer Output 22(HullOutputType)
94: 10(int) Constant 2 94: 10(int) Constant 2
95: 10(int) Constant 1 95: 10(int) Constant 4
96: 10(int) Constant 0 96: 10(int) Constant 0
98: TypeBool 98: TypeBool
108: 10(int) Constant 4 108: TypeArray 6(float) 95
109: TypeArray 6(float) 108 109: TypePointer Output 108
110: TypePointer Output 109 110(@patchConstantOutput.edges): 109(ptr) Variable Output
111(@patchConstantOutput.edges): 110(ptr) Variable Output 113: TypePointer Output 6(float)
114: TypePointer Output 6(float) 121: TypeArray 6(float) 94
122: TypeArray 6(float) 94 122: TypePointer Output 121
123: TypePointer Output 122 123(@patchConstantOutput.inside): 122(ptr) Variable Output
124(@patchConstantOutput.inside): 123(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
70(patch): 13(ptr) Variable Function 70(patch): 13(ptr) Variable Function
@ -508,22 +507,22 @@ triangle order = cw
Store 105(param) 106 Store 105(param) 106
107:16(ConstantOutputType) FunctionCall 20(ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;) 103(param) 105(param) 107:16(ConstantOutputType) FunctionCall 20(ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;) 103(param) 105(param)
Store 102(@patchConstantResult) 107 Store 102(@patchConstantResult) 107
112: 39(ptr) AccessChain 102(@patchConstantResult) 32 32 111: 39(ptr) AccessChain 102(@patchConstantResult) 32 32
113: 6(float) Load 112 112: 6(float) Load 111
115: 114(ptr) AccessChain 111(@patchConstantOutput.edges) 32 114: 113(ptr) AccessChain 110(@patchConstantOutput.edges) 32
Store 115 113 Store 114 112
116: 39(ptr) AccessChain 102(@patchConstantResult) 32 41 115: 39(ptr) AccessChain 102(@patchConstantResult) 32 41
117: 6(float) Load 116 116: 6(float) Load 115
118: 114(ptr) AccessChain 111(@patchConstantOutput.edges) 41 117: 113(ptr) AccessChain 110(@patchConstantOutput.edges) 41
Store 118 117 Store 117 116
119: 39(ptr) AccessChain 102(@patchConstantResult) 32 45 118: 39(ptr) AccessChain 102(@patchConstantResult) 32 45
120: 6(float) Load 119 119: 6(float) Load 118
121: 114(ptr) AccessChain 111(@patchConstantOutput.edges) 45 120: 113(ptr) AccessChain 110(@patchConstantOutput.edges) 45
Store 121 120 Store 120 119
125: 39(ptr) AccessChain 102(@patchConstantResult) 41 124: 39(ptr) AccessChain 102(@patchConstantResult) 41
126: 6(float) Load 125 125: 6(float) Load 124
127: 114(ptr) AccessChain 124(@patchConstantOutput.inside) 32 126: 113(ptr) AccessChain 123(@patchConstantOutput.inside) 32
Store 127 126 Store 126 125
Branch 101 Branch 101
101: Label 101: Label
Return Return

View File

@ -854,8 +854,8 @@ triangle order = ccw
Name 105 "@entryPointOutput" Name 105 "@entryPointOutput"
Name 107 "param" Name 107 "param"
Name 109 "param" Name 109 "param"
Name 119 "@patchConstantResult" Name 120 "@patchConstantResult"
Name 120 "param" Name 121 "param"
Name 126 "@patchConstantOutput.EdgeTessFactor" Name 126 "@patchConstantOutput.EdgeTessFactor"
Name 139 "@patchConstantOutput.InsideTessFactor" Name 139 "@patchConstantOutput.InsideTessFactor"
Name 143 "HSTrianglePatchConstant" Name 143 "HSTrianglePatchConstant"
@ -947,9 +947,9 @@ triangle order = ccw
104: TypePointer Output 103 104: TypePointer Output 103
105(@entryPointOutput): 104(ptr) Variable Output 105(@entryPointOutput): 104(ptr) Variable Output
112: TypePointer Output 21(HSOutput) 112: TypePointer Output 21(HSOutput)
115: TypeBool 114: 9(int) Constant 4
123: 9(int) Constant 4 116: TypeBool
124: TypeArray 6(float) 123 124: TypeArray 6(float) 114
125: TypePointer Output 124 125: TypePointer Output 124
126(@patchConstantOutput.EdgeTessFactor): 125(ptr) Variable Output 126(@patchConstantOutput.EdgeTessFactor): 125(ptr) Variable Output
129: TypePointer Output 6(float) 129: TypePointer Output 6(float)
@ -971,8 +971,8 @@ triangle order = ccw
99(id): 20(ptr) Variable Function 99(id): 20(ptr) Variable Function
107(param): 12(ptr) Variable Function 107(param): 12(ptr) Variable Function
109(param): 20(ptr) Variable Function 109(param): 20(ptr) Variable Function
119(@patchConstantResult): 55(ptr) Variable Function 120(@patchConstantResult): 55(ptr) Variable Function
120(param): 12(ptr) Variable Function 121(param): 12(ptr) Variable Function
98: 11 Load 97(patch) 98: 11 Load 97(patch)
Store 95(patch) 98 Store 95(patch) 98
102: 9(int) Load 101(id) 102: 9(int) Load 101(id)
@ -985,38 +985,38 @@ triangle order = ccw
111:21(HSOutput) FunctionCall 25(@HSMain(struct-HSInput-vf3-vf31[3];u1;) 107(param) 109(param) 111:21(HSOutput) FunctionCall 25(@HSMain(struct-HSInput-vf3-vf31[3];u1;) 107(param) 109(param)
113: 112(ptr) AccessChain 105(@entryPointOutput) 106 113: 112(ptr) AccessChain 105(@entryPointOutput) 106
Store 113 111 Store 113 111
ControlBarrier 68 63 58 ControlBarrier 68 114 58
114: 9(int) Load 101(id) 115: 9(int) Load 101(id)
116: 115(bool) IEqual 114 57 117: 116(bool) IEqual 115 57
SelectionMerge 118 None SelectionMerge 119 None
BranchConditional 116 117 118 BranchConditional 117 118 119
117: Label 118: Label
121: 11 Load 95(patch) 122: 11 Load 95(patch)
Store 120(param) 121 Store 121(param) 122
122:15(HSTrianglePatchConstant) FunctionCall 18(HSPatchConstant(struct-HSInput-vf3-vf31[3];) 120(param) 123:15(HSTrianglePatchConstant) FunctionCall 18(HSPatchConstant(struct-HSInput-vf3-vf31[3];) 121(param)
Store 119(@patchConstantResult) 122 Store 120(@patchConstantResult) 123
127: 50(ptr) AccessChain 119(@patchConstantResult) 57 57 127: 50(ptr) AccessChain 120(@patchConstantResult) 57 57
128: 6(float) Load 127 128: 6(float) Load 127
130: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 57 130: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 57
Store 130 128 Store 130 128
131: 50(ptr) AccessChain 119(@patchConstantResult) 57 62 131: 50(ptr) AccessChain 120(@patchConstantResult) 57 62
132: 6(float) Load 131 132: 6(float) Load 131
133: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 62 133: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 62
Store 133 132 Store 133 132
134: 50(ptr) AccessChain 119(@patchConstantResult) 57 67 134: 50(ptr) AccessChain 120(@patchConstantResult) 57 67
135: 6(float) Load 134 135: 6(float) Load 134
136: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 67 136: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 67
Store 136 135 Store 136 135
140: 50(ptr) AccessChain 119(@patchConstantResult) 62 140: 50(ptr) AccessChain 120(@patchConstantResult) 62
141: 6(float) Load 140 141: 6(float) Load 140
142: 129(ptr) AccessChain 139(@patchConstantOutput.InsideTessFactor) 57 142: 129(ptr) AccessChain 139(@patchConstantOutput.InsideTessFactor) 57
Store 142 141 Store 142 141
147: 146(ptr) AccessChain 119(@patchConstantResult) 67 147: 146(ptr) AccessChain 120(@patchConstantResult) 67
148: 14 Load 147 148: 14 Load 147
150: 149(ptr) AccessChain 145(@patchConstantOutput) 57 150: 149(ptr) AccessChain 145(@patchConstantOutput) 57
Store 150 148 Store 150 148
Branch 118 Branch 119
118: Label 119: Label
Return Return
FunctionEnd FunctionEnd
18(HSPatchConstant(struct-HSInput-vf3-vf31[3];):15(HSTrianglePatchConstant) Function None 16 18(HSPatchConstant(struct-HSInput-vf3-vf31[3];):15(HSTrianglePatchConstant) Function None 16

View File

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

View File

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

View File

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

View File

@ -477,12 +477,12 @@ triangle order = cw
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80002 // Generated by (magic number): 80002
// Id's are bound by 128 // Id's are bound by 127
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 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 OutputVertices 3
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 SpacingFractionalOdd ExecutionMode 4 SpacingFractionalOdd
@ -516,16 +516,16 @@ triangle order = cw
Name 90 "param" Name 90 "param"
Name 104 "@patchConstantResult" Name 104 "@patchConstantResult"
Name 105 "param" Name 105 "param"
Name 111 "@patchConstantOutput.fTessFactor" Name 110 "@patchConstantOutput.fTessFactor"
Name 124 "@patchConstantOutput.fInsideTessFactor" Name 123 "@patchConstantOutput.fInsideTessFactor"
Decorate 56(I.m_Position) BuiltIn Position Decorate 56(I.m_Position) BuiltIn Position
Decorate 64(I) Location 0 Decorate 64(I) Location 0
Decorate 83(cpid) BuiltIn InvocationId Decorate 83(cpid) BuiltIn InvocationId
Decorate 86(@entryPointOutput.m_Position) BuiltIn Position Decorate 86(@entryPointOutput.m_Position) BuiltIn Position
Decorate 111(@patchConstantOutput.fTessFactor) Patch Decorate 110(@patchConstantOutput.fTessFactor) Patch
Decorate 111(@patchConstantOutput.fTessFactor) BuiltIn TessLevelOuter Decorate 110(@patchConstantOutput.fTessFactor) BuiltIn TessLevelOuter
Decorate 124(@patchConstantOutput.fInsideTessFactor) Patch Decorate 123(@patchConstantOutput.fInsideTessFactor) Patch
Decorate 124(@patchConstantOutput.fInsideTessFactor) BuiltIn TessLevelInner Decorate 123(@patchConstantOutput.fInsideTessFactor) BuiltIn TessLevelInner
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -568,17 +568,16 @@ triangle order = cw
86(@entryPointOutput.m_Position): 85(ptr) Variable Output 86(@entryPointOutput.m_Position): 85(ptr) Variable Output
94: TypePointer Output 7(fvec4) 94: TypePointer Output 7(fvec4)
96: 9(int) Constant 2 96: 9(int) Constant 2
97: 9(int) Constant 1 97: 9(int) Constant 4
98: 9(int) Constant 0 98: 9(int) Constant 0
100: TypeBool 100: TypeBool
108: 9(int) Constant 4 108: TypeArray 6(float) 97
109: TypeArray 6(float) 108 109: TypePointer Output 108
110: TypePointer Output 109 110(@patchConstantOutput.fTessFactor): 109(ptr) Variable Output
111(@patchConstantOutput.fTessFactor): 110(ptr) Variable Output 113: TypePointer Output 6(float)
114: TypePointer Output 6(float) 121: TypeArray 6(float) 96
122: TypeArray 6(float) 96 122: TypePointer Output 121
123: TypePointer Output 122 123(@patchConstantOutput.fInsideTessFactor): 122(ptr) Variable Output
124(@patchConstantOutput.fInsideTessFactor): 123(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
53(I): 12(ptr) Variable Function 53(I): 12(ptr) Variable Function
@ -632,22 +631,22 @@ triangle order = cw
Store 105(param) 106 Store 105(param) 106
107:14(HS_Output) FunctionCall 17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];) 105(param) 107:14(HS_Output) FunctionCall 17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];) 105(param)
Store 104(@patchConstantResult) 107 Store 104(@patchConstantResult) 107
112: 34(ptr) AccessChain 104(@patchConstantResult) 33 33 111: 34(ptr) AccessChain 104(@patchConstantResult) 33 33
113: 6(float) Load 112 112: 6(float) Load 111
115: 114(ptr) AccessChain 111(@patchConstantOutput.fTessFactor) 33 114: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 33
Store 115 113 Store 114 112
116: 34(ptr) AccessChain 104(@patchConstantResult) 33 32 115: 34(ptr) AccessChain 104(@patchConstantResult) 33 32
117: 6(float) Load 116 116: 6(float) Load 115
118: 114(ptr) AccessChain 111(@patchConstantOutput.fTessFactor) 32 117: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 32
Store 118 117 Store 117 116
119: 34(ptr) AccessChain 104(@patchConstantResult) 33 74 118: 34(ptr) AccessChain 104(@patchConstantResult) 33 74
120: 6(float) Load 119 119: 6(float) Load 118
121: 114(ptr) AccessChain 111(@patchConstantOutput.fTessFactor) 74 120: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 74
Store 121 120 Store 120 119
125: 34(ptr) AccessChain 104(@patchConstantResult) 32 124: 34(ptr) AccessChain 104(@patchConstantResult) 32
126: 6(float) Load 125 125: 6(float) Load 124
127: 114(ptr) AccessChain 124(@patchConstantOutput.fInsideTessFactor) 33 126: 113(ptr) AccessChain 123(@patchConstantOutput.fInsideTessFactor) 33
Store 127 126 Store 126 125
Branch 103 Branch 103
103: Label 103: Label
Return Return

View File

@ -434,12 +434,12 @@ triangle order = cw
Name 68 "param" Name 68 "param"
Name 70 "param" Name 70 "param"
Name 74 "i" Name 74 "i"
Name 75 "param" Name 76 "param"
Name 77 "param" Name 78 "param"
Name 81 "i" Name 82 "i"
Name 82 "param" Name 83 "param"
Name 84 "param" Name 85 "param"
Name 88 "@patchConstantResult" Name 89 "@patchConstantResult"
Name 94 "@patchConstantOutput.tfactor" Name 94 "@patchConstantOutput.tfactor"
Name 108 "@patchConstantOutput.flInFactor" Name 108 "@patchConstantOutput.flInFactor"
Name 112 "o" Name 112 "o"
@ -478,15 +478,15 @@ triangle order = cw
48(@entryPointOutput): 47(ptr) Variable Output 48(@entryPointOutput): 47(ptr) Variable Output
55: TypePointer Output 14(hs_out_t) 55: TypePointer Output 14(hs_out_t)
57: 9(int) Constant 2 57: 9(int) Constant 2
58: 9(int) Constant 1 58: 9(int) Constant 4
59: 9(int) Constant 0 59: 9(int) Constant 0
61: TypeBool 61: TypeBool
65: TypePointer Function 20 65: TypePointer Function 20
73: 29(int) Constant 1 73: 29(int) Constant 1
80: 29(int) Constant 2 75: 9(int) Constant 1
87: TypePointer Function 22(hs_pcf_t) 81: 29(int) Constant 2
91: 9(int) Constant 4 88: TypePointer Function 22(hs_pcf_t)
92: TypeArray 6(float) 91 92: TypeArray 6(float) 58
93: TypePointer Output 92 93: TypePointer Output 92
94(@patchConstantOutput.tfactor): 93(ptr) Variable Output 94(@patchConstantOutput.tfactor): 93(ptr) Variable Output
95: TypePointer Function 6(float) 95: TypePointer Function 6(float)
@ -506,12 +506,12 @@ triangle order = cw
68(param): 12(ptr) Variable Function 68(param): 12(ptr) Variable Function
70(param): 13(ptr) Variable Function 70(param): 13(ptr) Variable Function
74(i): 12(ptr) Variable Function 74(i): 12(ptr) Variable Function
75(param): 12(ptr) Variable Function 76(param): 12(ptr) Variable Function
77(param): 13(ptr) Variable Function 78(param): 13(ptr) Variable Function
81(i): 12(ptr) Variable Function 82(i): 12(ptr) Variable Function
82(param): 12(ptr) Variable Function 83(param): 12(ptr) Variable Function
84(param): 13(ptr) Variable Function 85(param): 13(ptr) Variable Function
88(@patchConstantResult): 87(ptr) Variable Function 89(@patchConstantResult): 88(ptr) Variable Function
42: 11 Load 41(i) 42: 11 Load 41(i)
Store 39(i) 42 Store 39(i) 42
46: 9(int) Load 45(cpid) 46: 9(int) Load 45(cpid)
@ -536,34 +536,34 @@ triangle order = cw
71:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 68(param) 70(param) 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 72: 27(ptr) AccessChain 66(pcf_out) 30
Store 72 71 Store 72 71
76: 11 Load 74(i) 77: 11 Load 74(i)
Store 75(param) 76 Store 76(param) 77
Store 77(param) 58 Store 78(param) 75
78:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 75(param) 77(param) 79:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 76(param) 78(param)
79: 27(ptr) AccessChain 66(pcf_out) 73 80: 27(ptr) AccessChain 66(pcf_out) 73
Store 79 78 Store 80 79
83: 11 Load 81(i) 84: 11 Load 82(i)
Store 82(param) 83 Store 83(param) 84
Store 84(param) 57 Store 85(param) 57
85:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 82(param) 84(param) 86:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 83(param) 85(param)
86: 27(ptr) AccessChain 66(pcf_out) 80 87: 27(ptr) AccessChain 66(pcf_out) 81
Store 86 85 Store 87 86
89: 20 Load 66(pcf_out) 90: 20 Load 66(pcf_out)
90:22(hs_pcf_t) FunctionCall 25(PCF(struct-hs_out_t-vf31[3];) 89 91:22(hs_pcf_t) FunctionCall 25(PCF(struct-hs_out_t-vf31[3];) 90
Store 88(@patchConstantResult) 90 Store 89(@patchConstantResult) 91
96: 95(ptr) AccessChain 88(@patchConstantResult) 30 30 96: 95(ptr) AccessChain 89(@patchConstantResult) 30 30
97: 6(float) Load 96 97: 6(float) Load 96
99: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 30 99: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 30
Store 99 97 Store 99 97
100: 95(ptr) AccessChain 88(@patchConstantResult) 30 73 100: 95(ptr) AccessChain 89(@patchConstantResult) 30 73
101: 6(float) Load 100 101: 6(float) Load 100
102: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 73 102: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 73
Store 102 101 Store 102 101
103: 95(ptr) AccessChain 88(@patchConstantResult) 30 80 103: 95(ptr) AccessChain 89(@patchConstantResult) 30 81
104: 6(float) Load 103 104: 6(float) Load 103
105: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 80 105: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 81
Store 105 104 Store 105 104
109: 95(ptr) AccessChain 88(@patchConstantResult) 73 109: 95(ptr) AccessChain 89(@patchConstantResult) 73
110: 6(float) Load 109 110: 6(float) Load 109
111: 98(ptr) AccessChain 108(@patchConstantOutput.flInFactor) 30 111: 98(ptr) AccessChain 108(@patchConstantOutput.flInFactor) 30
Store 111 110 Store 111 110
@ -587,7 +587,7 @@ triangle order = cw
25(PCF(struct-hs_out_t-vf31[3];):22(hs_pcf_t) Function None 23 25(PCF(struct-hs_out_t-vf31[3];):22(hs_pcf_t) Function None 23
24(pcf_out): 20 FunctionParameter 24(pcf_out): 20 FunctionParameter
26: Label 26: Label
112(o): 87(ptr) Variable Function 112(o): 88(ptr) Variable Function
113: 6(float) CompositeExtract 24(pcf_out) 0 0 0 113: 6(float) CompositeExtract 24(pcf_out) 0 0 0
114: 95(ptr) AccessChain 112(o) 30 30 114: 95(ptr) AccessChain 112(o) 30 30
Store 114 113 Store 114 113
@ -595,7 +595,7 @@ triangle order = cw
116: 95(ptr) AccessChain 112(o) 30 73 116: 95(ptr) AccessChain 112(o) 30 73
Store 116 115 Store 116 115
117: 6(float) CompositeExtract 24(pcf_out) 2 0 0 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 Store 118 117
120: 95(ptr) AccessChain 112(o) 73 120: 95(ptr) AccessChain 112(o) 73
Store 120 119 Store 120 119

View File

@ -453,12 +453,12 @@ triangle order = cw
Name 69 "param" Name 69 "param"
Name 71 "param" Name 71 "param"
Name 75 "i" Name 75 "i"
Name 76 "param" Name 77 "param"
Name 78 "param" Name 79 "param"
Name 82 "i" Name 83 "i"
Name 83 "param" Name 84 "param"
Name 85 "param" Name 86 "param"
Name 89 "@patchConstantResult" Name 90 "@patchConstantResult"
Name 96 "@patchConstantOutput.tfactor" Name 96 "@patchConstantOutput.tfactor"
Name 110 "@patchConstantOutput.flInFactor" Name 110 "@patchConstantOutput.flInFactor"
Name 114 "o" Name 114 "o"
@ -497,15 +497,15 @@ triangle order = cw
49(@entryPointOutput): 48(ptr) Variable Output 49(@entryPointOutput): 48(ptr) Variable Output
56: TypePointer Output 14(hs_out_t) 56: TypePointer Output 14(hs_out_t)
58: 9(int) Constant 2 58: 9(int) Constant 2
59: 9(int) Constant 1 59: 9(int) Constant 4
60: 9(int) Constant 0 60: 9(int) Constant 0
62: TypeBool 62: TypeBool
66: TypePointer Function 20 66: TypePointer Function 20
74: 28(int) Constant 1 74: 28(int) Constant 1
81: 28(int) Constant 2 76: 9(int) Constant 1
88: TypePointer Function 22(hs_pcf_t) 82: 28(int) Constant 2
93: 9(int) Constant 4 89: TypePointer Function 22(hs_pcf_t)
94: TypeArray 6(float) 93 94: TypeArray 6(float) 59
95: TypePointer Output 94 95: TypePointer Output 94
96(@patchConstantOutput.tfactor): 95(ptr) Variable Output 96(@patchConstantOutput.tfactor): 95(ptr) Variable Output
97: TypePointer Function 6(float) 97: TypePointer Function 6(float)
@ -525,12 +525,12 @@ triangle order = cw
69(param): 12(ptr) Variable Function 69(param): 12(ptr) Variable Function
71(param): 13(ptr) Variable Function 71(param): 13(ptr) Variable Function
75(i): 12(ptr) Variable Function 75(i): 12(ptr) Variable Function
76(param): 12(ptr) Variable Function 77(param): 12(ptr) Variable Function
78(param): 13(ptr) Variable Function 79(param): 13(ptr) Variable Function
82(i): 12(ptr) Variable Function 83(i): 12(ptr) Variable Function
83(param): 12(ptr) Variable Function 84(param): 12(ptr) Variable Function
85(param): 13(ptr) Variable Function 86(param): 13(ptr) Variable Function
89(@patchConstantResult): 88(ptr) Variable Function 90(@patchConstantResult): 89(ptr) Variable Function
43: 11 Load 42(i) 43: 11 Load 42(i)
Store 40(i) 43 Store 40(i) 43
47: 9(int) Load 46(cpid) 47: 9(int) Load 46(cpid)
@ -555,35 +555,35 @@ triangle order = cw
72:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 69(param) 71(param) 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 73: 30(ptr) AccessChain 67(pcf_out) 29
Store 73 72 Store 73 72
77: 11 Load 75(i) 78: 11 Load 75(i)
Store 76(param) 77 Store 77(param) 78
Store 78(param) 59 Store 79(param) 76
79:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 76(param) 78(param) 80:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 77(param) 79(param)
80: 30(ptr) AccessChain 67(pcf_out) 74 81: 30(ptr) AccessChain 67(pcf_out) 74
Store 80 79 Store 81 80
84: 11 Load 82(i) 85: 11 Load 83(i)
Store 83(param) 84 Store 84(param) 85
Store 85(param) 58 Store 86(param) 58
86:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 83(param) 85(param) 87:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 84(param) 86(param)
87: 30(ptr) AccessChain 67(pcf_out) 81 88: 30(ptr) AccessChain 67(pcf_out) 82
Store 87 86 Store 88 87
90: 20 Load 67(pcf_out) 91: 20 Load 67(pcf_out)
91: 11 Load 40(i) 92: 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 93:22(hs_pcf_t) FunctionCall 26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];) 91 92
Store 89(@patchConstantResult) 92 Store 90(@patchConstantResult) 93
98: 97(ptr) AccessChain 89(@patchConstantResult) 29 29 98: 97(ptr) AccessChain 90(@patchConstantResult) 29 29
99: 6(float) Load 98 99: 6(float) Load 98
101: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 29 101: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 29
Store 101 99 Store 101 99
102: 97(ptr) AccessChain 89(@patchConstantResult) 29 74 102: 97(ptr) AccessChain 90(@patchConstantResult) 29 74
103: 6(float) Load 102 103: 6(float) Load 102
104: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 74 104: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 74
Store 104 103 Store 104 103
105: 97(ptr) AccessChain 89(@patchConstantResult) 29 81 105: 97(ptr) AccessChain 90(@patchConstantResult) 29 82
106: 6(float) Load 105 106: 6(float) Load 105
107: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 81 107: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 82
Store 107 106 Store 107 106
111: 97(ptr) AccessChain 89(@patchConstantResult) 74 111: 97(ptr) AccessChain 90(@patchConstantResult) 74
112: 6(float) Load 111 112: 6(float) Load 111
113: 100(ptr) AccessChain 110(@patchConstantOutput.flInFactor) 29 113: 100(ptr) AccessChain 110(@patchConstantOutput.flInFactor) 29
Store 113 112 Store 113 112
@ -608,7 +608,7 @@ triangle order = cw
24(pcf_out): 20 FunctionParameter 24(pcf_out): 20 FunctionParameter
25(pcf_in): 11 FunctionParameter 25(pcf_in): 11 FunctionParameter
27: Label 27: Label
114(o): 88(ptr) Variable Function 114(o): 89(ptr) Variable Function
115: 6(float) CompositeExtract 24(pcf_out) 0 0 0 115: 6(float) CompositeExtract 24(pcf_out) 0 0 0
116: 97(ptr) AccessChain 114(o) 29 29 116: 97(ptr) AccessChain 114(o) 29 29
Store 116 115 Store 116 115
@ -616,7 +616,7 @@ triangle order = cw
118: 97(ptr) AccessChain 114(o) 29 74 118: 97(ptr) AccessChain 114(o) 29 74
Store 118 117 Store 118 117
119: 6(float) CompositeExtract 24(pcf_out) 2 0 0 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 Store 120 119
122: 97(ptr) AccessChain 114(o) 74 122: 97(ptr) AccessChain 114(o) 74
Store 122 121 Store 122 121

View File

@ -161,7 +161,7 @@ triangle order = ccw
39(InvocationId): 38(ptr) Variable Input 39(InvocationId): 38(ptr) Variable Input
44: TypePointer Output 13(HS_OUT) 44: TypePointer Output 13(HS_OUT)
46: 9(int) Constant 2 46: 9(int) Constant 2
47: 9(int) Constant 1 47: 9(int) Constant 4
48: 9(int) Constant 0 48: 9(int) Constant 0
50: TypeBool 50: TypeBool
4(main): 2 Function None 3 4(main): 2 Function None 3

View File

@ -53,44 +53,45 @@ local_size = (1, 1, 1)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80002 // Generated by (magic number): 80002
// Id's are bound by 22 // Id's are bound by 23
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "ComputeShaderFunction" 20 EntryPoint GLCompute 4 "ComputeShaderFunction" 21
ExecutionMode 4 LocalSize 1 1 1 ExecutionMode 4 LocalSize 1 1 1
Source HLSL 500 Source HLSL 500
Name 4 "ComputeShaderFunction" Name 4 "ComputeShaderFunction"
Name 8 "@ComputeShaderFunction(" Name 8 "@ComputeShaderFunction("
Name 20 "@entryPointOutput" Name 21 "@entryPointOutput"
Decorate 20(@entryPointOutput) Location 0 Decorate 21(@entryPointOutput) Location 0
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
7: TypeFunction 6(float) 7: TypeFunction 6(float)
10: TypeInt 32 0 10: TypeInt 32 0
11: 10(int) Constant 1 11: 10(int) Constant 1
12: 10(int) Constant 4048 12: 10(int) Constant 4040
13: 10(int) Constant 512 13: 10(int) Constant 4048
14: 10(int) Constant 2 14: 10(int) Constant 2
15: 10(int) Constant 256 15: 10(int) Constant 512
16: 6(float) Constant 0 16: 10(int) Constant 256
19: TypePointer Output 6(float) 17: 6(float) Constant 0
20(@entryPointOutput): 19(ptr) Variable Output 20: TypePointer Output 6(float)
21(@entryPointOutput): 20(ptr) Variable Output
4(ComputeShaderFunction): 2 Function None 3 4(ComputeShaderFunction): 2 Function None 3
5: Label 5: Label
21: 6(float) FunctionCall 8(@ComputeShaderFunction() 22: 6(float) FunctionCall 8(@ComputeShaderFunction()
Store 20(@entryPointOutput) 21 Store 21(@entryPointOutput) 22
Return Return
FunctionEnd FunctionEnd
8(@ComputeShaderFunction(): 6(float) Function None 7 8(@ComputeShaderFunction(): 6(float) Function None 7
9: Label 9: Label
MemoryBarrier 11 12 MemoryBarrier 11 12
ControlBarrier 11 11 12
MemoryBarrier 11 13
ControlBarrier 11 11 13 ControlBarrier 11 11 13
MemoryBarrier 14 15 MemoryBarrier 14 12
ControlBarrier 14 14 15 ControlBarrier 11 11 15
ReturnValue 16 MemoryBarrier 14 16
ControlBarrier 14 14 16
ReturnValue 17
FunctionEnd FunctionEnd

View File

@ -1,7 +1,7 @@
spv.310.comp spv.310.comp
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80002 // Generated by (magic number): 80002
// Id's are bound by 69 // Id's are bound by 71
Capability Shader Capability Shader
Capability DeviceGroup Capability DeviceGroup
@ -13,17 +13,17 @@ spv.310.comp
Source ESSL 310 Source ESSL 310
SourceExtension "GL_EXT_device_group" SourceExtension "GL_EXT_device_group"
Name 4 "main" Name 4 "main"
Name 13 "outb" Name 12 "outb"
MemberName 13(outb) 0 "f" MemberName 12(outb) 0 "f"
MemberName 13(outb) 1 "g" MemberName 12(outb) 1 "g"
MemberName 13(outb) 2 "h" MemberName 12(outb) 2 "h"
MemberName 13(outb) 3 "uns" MemberName 12(outb) 3 "uns"
Name 15 "outbname" Name 14 "outbname"
Name 19 "s" Name 18 "s"
Name 24 "outbna" Name 23 "outbna"
MemberName 24(outbna) 0 "k" MemberName 23(outbna) 0 "k"
MemberName 24(outbna) 1 "na" MemberName 23(outbna) 1 "na"
Name 26 "outbnamena" Name 25 "outbnamena"
Name 42 "i" Name 42 "i"
Name 48 "outs" Name 48 "outs"
MemberName 48(outs) 0 "s" MemberName 48(outs) 0 "s"
@ -31,17 +31,17 @@ spv.310.comp
Name 50 "outnames" Name 50 "outnames"
Name 53 "gl_LocalInvocationID" Name 53 "gl_LocalInvocationID"
Name 64 "gl_DeviceIndex" Name 64 "gl_DeviceIndex"
Decorate 12 ArrayStride 16 Decorate 11 ArrayStride 16
MemberDecorate 13(outb) 0 Offset 0 MemberDecorate 12(outb) 0 Offset 0
MemberDecorate 13(outb) 1 Offset 4 MemberDecorate 12(outb) 1 Offset 4
MemberDecorate 13(outb) 2 Offset 8 MemberDecorate 12(outb) 2 Offset 8
MemberDecorate 13(outb) 3 Offset 16 MemberDecorate 12(outb) 3 Offset 16
Decorate 13(outb) BufferBlock Decorate 12(outb) BufferBlock
Decorate 15(outbname) DescriptorSet 0 Decorate 14(outbname) DescriptorSet 0
MemberDecorate 24(outbna) 0 Offset 0 MemberDecorate 23(outbna) 0 Offset 0
MemberDecorate 24(outbna) 1 Offset 16 MemberDecorate 23(outbna) 1 Offset 16
Decorate 24(outbna) BufferBlock Decorate 23(outbna) BufferBlock
Decorate 26(outbnamena) DescriptorSet 0 Decorate 25(outbnamena) DescriptorSet 0
Decorate 47 ArrayStride 16 Decorate 47 ArrayStride 16
MemberDecorate 48(outs) 0 Offset 0 MemberDecorate 48(outs) 0 Offset 0
MemberDecorate 48(outs) 1 Offset 16 MemberDecorate 48(outs) 1 Offset 16
@ -49,81 +49,85 @@ spv.310.comp
Decorate 50(outnames) DescriptorSet 0 Decorate 50(outnames) DescriptorSet 0
Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 64(gl_DeviceIndex) BuiltIn DeviceIndex Decorate 64(gl_DeviceIndex) BuiltIn DeviceIndex
Decorate 68 BuiltIn WorkgroupSize Decorate 70 BuiltIn WorkgroupSize
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 0 6: TypeInt 32 0
7: 6(int) Constant 2 7: 6(int) Constant 2
8: 6(int) Constant 1 8: 6(int) Constant 264
9: 6(int) Constant 0 9: TypeFloat 32
10: TypeFloat 32 10: TypeVector 9(float) 3
11: TypeVector 10(float) 3 11: TypeRuntimeArray 10(fvec3)
12: TypeRuntimeArray 11(fvec3) 12(outb): TypeStruct 9(float) 9(float) 9(float) 11
13(outb): TypeStruct 10(float) 10(float) 10(float) 12 13: TypePointer Uniform 12(outb)
14: TypePointer Uniform 13(outb) 14(outbname): 13(ptr) Variable Uniform
15(outbname): 14(ptr) Variable Uniform 15: TypeInt 32 1
16: TypeInt 32 1 16: 15(int) Constant 0
17: 16(int) Constant 0 17: TypePointer Workgroup 9(float)
18: TypePointer Workgroup 10(float) 18(s): 17(ptr) Variable Workgroup
19(s): 18(ptr) Variable Workgroup 20: TypePointer Uniform 9(float)
21: TypePointer Uniform 10(float) 22: TypeVector 9(float) 4
23: TypeVector 10(float) 4 23(outbna): TypeStruct 15(int) 22(fvec4)
24(outbna): TypeStruct 16(int) 23(fvec4) 24: TypePointer Uniform 23(outbna)
25: TypePointer Uniform 24(outbna) 25(outbnamena): 24(ptr) Variable Uniform
26(outbnamena): 25(ptr) Variable Uniform 26: 15(int) Constant 1
27: 16(int) Constant 1 29: TypePointer Uniform 22(fvec4)
30: TypePointer Uniform 23(fvec4) 31: 15(int) Constant 3
32: 16(int) Constant 3 32: 15(int) Constant 18
33: 16(int) Constant 18 33: 6(int) Constant 0
36: 16(int) Constant 17 36: 15(int) Constant 17
37: 10(float) Constant 1077936128 37: 9(float) Constant 1077936128
38: 11(fvec3) ConstantComposite 37 37 37 38: 10(fvec3) ConstantComposite 37 37 37
39: TypePointer Uniform 11(fvec3) 39: TypePointer Uniform 10(fvec3)
41: TypePointer Workgroup 16(int) 41: TypePointer Workgroup 15(int)
42(i): 41(ptr) Variable Workgroup 42(i): 41(ptr) Variable Workgroup
47: TypeRuntimeArray 23(fvec4) 47: TypeRuntimeArray 22(fvec4)
48(outs): TypeStruct 16(int) 47 48(outs): TypeStruct 15(int) 47
49: TypePointer Uniform 48(outs) 49: TypePointer Uniform 48(outs)
50(outnames): 49(ptr) Variable Uniform 50(outnames): 49(ptr) Variable Uniform
51: TypeVector 6(int) 3 51: TypeVector 6(int) 3
52: TypePointer Input 51(ivec3) 52: TypePointer Input 51(ivec3)
53(gl_LocalInvocationID): 52(ptr) Variable Input 53(gl_LocalInvocationID): 52(ptr) Variable Input
54: TypePointer Input 6(int) 54: TypePointer Input 6(int)
61: TypePointer Uniform 16(int) 61: TypePointer Uniform 15(int)
63: TypePointer Input 16(int) 63: TypePointer Input 15(int)
64(gl_DeviceIndex): 63(ptr) Variable Input 64(gl_DeviceIndex): 63(ptr) Variable Input
65: 6(int) Constant 16 65: 6(int) Constant 1
66: 6(int) Constant 32 66: 6(int) Constant 4040
67: 6(int) Constant 4 67: 6(int) Constant 16
68: 51(ivec3) ConstantComposite 65 66 67 68: 6(int) Constant 32
69: 6(int) Constant 4
70: 51(ivec3) ConstantComposite 67 68 69
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
ControlBarrier 7 8 9 ControlBarrier 7 7 8
20: 10(float) Load 19(s) 19: 9(float) Load 18(s)
22: 21(ptr) AccessChain 15(outbname) 17 21: 20(ptr) AccessChain 14(outbname) 16
Store 22 20 Store 21 19
28: 10(float) Load 19(s) 27: 9(float) Load 18(s)
29: 23(fvec4) CompositeConstruct 28 28 28 28 28: 22(fvec4) CompositeConstruct 27 27 27 27
31: 30(ptr) AccessChain 26(outbnamena) 27 30: 29(ptr) AccessChain 25(outbnamena) 26
Store 31 29 Store 30 28
34: 21(ptr) AccessChain 15(outbname) 32 33 9 34: 20(ptr) AccessChain 14(outbname) 31 32 33
35: 10(float) Load 34 35: 9(float) Load 34
Store 19(s) 35 Store 18(s) 35
40: 39(ptr) AccessChain 15(outbname) 32 36 40: 39(ptr) AccessChain 14(outbname) 31 36
Store 40 38 Store 40 38
43: 16(int) Load 42(i) 43: 15(int) Load 42(i)
44: 10(float) Load 19(s) 44: 9(float) Load 18(s)
45: 11(fvec3) CompositeConstruct 44 44 44 45: 10(fvec3) CompositeConstruct 44 44 44
46: 39(ptr) AccessChain 15(outbname) 32 43 46: 39(ptr) AccessChain 14(outbname) 31 43
Store 46 45 Store 46 45
55: 54(ptr) AccessChain 53(gl_LocalInvocationID) 9 55: 54(ptr) AccessChain 53(gl_LocalInvocationID) 33
56: 6(int) Load 55 56: 6(int) Load 55
57: 10(float) Load 19(s) 57: 9(float) Load 18(s)
58: 23(fvec4) CompositeConstruct 57 57 57 57 58: 22(fvec4) CompositeConstruct 57 57 57 57
59: 30(ptr) AccessChain 50(outnames) 27 56 59: 29(ptr) AccessChain 50(outnames) 26 56
Store 59 58 Store 59 58
60: 16(int) ArrayLength 15(outbname) 3 60: 15(int) ArrayLength 14(outbname) 3
62: 61(ptr) AccessChain 50(outnames) 17 62: 61(ptr) AccessChain 50(outnames) 16
Store 62 60 Store 62 60
MemoryBarrier 65 8
MemoryBarrier 7 66
Return Return
FunctionEnd FunctionEnd

View File

@ -1,14 +1,14 @@
spv.400.tesc spv.400.tesc
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80002 // Generated by (magic number): 80002
// Id's are bound by 93 // Id's are bound by 92
Capability Tessellation Capability Tessellation
Capability TessellationPointSize Capability TessellationPointSize
Capability ClipDistance Capability ClipDistance
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 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 ExecutionMode 4 OutputVertices 4
Source GLSL 400 Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects" SourceExtension "GL_ARB_separate_shader_objects"
@ -32,17 +32,17 @@ spv.400.tesc
MemberName 50(gl_PerVertex) 0 "gl_Position" MemberName 50(gl_PerVertex) 0 "gl_Position"
MemberName 50(gl_PerVertex) 1 "gl_PointSize" MemberName 50(gl_PerVertex) 1 "gl_PointSize"
MemberName 50(gl_PerVertex) 2 "gl_ClipDistance" MemberName 50(gl_PerVertex) 2 "gl_ClipDistance"
Name 54 "gl_out" Name 53 "gl_out"
Name 68 "gl_TessLevelOuter" Name 67 "gl_TessLevelOuter"
Name 73 "gl_TessLevelInner" Name 72 "gl_TessLevelInner"
Name 78 "outa" Name 77 "outa"
Name 79 "patchOut" Name 78 "patchOut"
Name 83 "inb" Name 82 "inb"
Name 84 "ind" Name 83 "ind"
Name 87 "ivla" Name 86 "ivla"
Name 88 "ivlb" Name 87 "ivlb"
Name 91 "ovla" Name 90 "ovla"
Name 92 "ovlb" Name 91 "ovlb"
MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
@ -54,20 +54,20 @@ spv.400.tesc
MemberDecorate 50(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 50(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 50(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 50(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 50(gl_PerVertex) Block Decorate 50(gl_PerVertex) Block
Decorate 68(gl_TessLevelOuter) Patch Decorate 67(gl_TessLevelOuter) Patch
Decorate 68(gl_TessLevelOuter) BuiltIn TessLevelOuter Decorate 67(gl_TessLevelOuter) BuiltIn TessLevelOuter
Decorate 73(gl_TessLevelInner) Patch Decorate 72(gl_TessLevelInner) Patch
Decorate 73(gl_TessLevelInner) BuiltIn TessLevelInner Decorate 72(gl_TessLevelInner) BuiltIn TessLevelInner
Decorate 79(patchOut) Patch Decorate 78(patchOut) Patch
Decorate 87(ivla) Location 3 Decorate 86(ivla) Location 3
Decorate 88(ivlb) Location 4 Decorate 87(ivlb) Location 4
Decorate 91(ovla) Location 3 Decorate 90(ovla) Location 3
Decorate 92(ovlb) Location 4 Decorate 91(ovlb) Location 4
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 0 6: TypeInt 32 0
7: 6(int) Constant 2 7: 6(int) Constant 2
8: 6(int) Constant 1 8: 6(int) Constant 4
9: 6(int) Constant 0 9: 6(int) Constant 0
10: TypeInt 32 1 10: TypeInt 32 1
11: TypePointer Function 10(int) 11: TypePointer Function 10(int)
@ -94,37 +94,36 @@ spv.400.tesc
47(gl_InvocationID): 40(ptr) Variable Input 47(gl_InvocationID): 40(ptr) Variable Input
49: TypeArray 14(float) 7 49: TypeArray 14(float) 7
50(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 49 50(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 49
51: 6(int) Constant 4 51: TypeArray 50(gl_PerVertex) 8
52: TypeArray 50(gl_PerVertex) 51 52: TypePointer Output 51
53: TypePointer Output 52 53(gl_out): 52(ptr) Variable Output
54(gl_out): 53(ptr) Variable Output 56: TypePointer Output 15(fvec4)
57: TypePointer Output 15(fvec4) 60: TypePointer Output 14(float)
61: TypePointer Output 14(float) 65: TypeArray 14(float) 8
66: TypeArray 14(float) 51 66: TypePointer Output 65
67: TypePointer Output 66 67(gl_TessLevelOuter): 66(ptr) Variable Output
68(gl_TessLevelOuter): 67(ptr) Variable Output 68: 10(int) Constant 3
69: 10(int) Constant 3 69: 14(float) Constant 1078774989
70: 14(float) Constant 1078774989 71: TypePointer Output 49
72: TypePointer Output 49 72(gl_TessLevelInner): 71(ptr) Variable Output
73(gl_TessLevelInner): 72(ptr) Variable Output 73: 14(float) Constant 1067869798
74: 14(float) Constant 1067869798 75: TypeArray 10(int) 8
76: TypeArray 10(int) 51 76: TypePointer Private 75
77: TypePointer Private 76 77(outa): 76(ptr) Variable Private
78(outa): 77(ptr) Variable Private 78(patchOut): 56(ptr) Variable Output
79(patchOut): 57(ptr) Variable Output 79: TypeVector 14(float) 2
80: TypeVector 14(float) 2 80: TypeArray 79(fvec2) 21
81: TypeArray 80(fvec2) 21 81: TypePointer Input 80
82: TypePointer Input 81 82(inb): 81(ptr) Variable Input
83(inb): 82(ptr) Variable Input 83(ind): 81(ptr) Variable Input
84(ind): 82(ptr) Variable Input 84: TypeArray 15(fvec4) 21
85: TypeArray 15(fvec4) 21 85: TypePointer Input 84
86: TypePointer Input 85 86(ivla): 85(ptr) Variable Input
87(ivla): 86(ptr) Variable Input 87(ivlb): 85(ptr) Variable Input
88(ivlb): 86(ptr) Variable Input 88: TypeArray 15(fvec4) 8
89: TypeArray 15(fvec4) 51 89: TypePointer Output 88
90: TypePointer Output 89 90(ovla): 89(ptr) Variable Output
91(ovla): 90(ptr) Variable Output 91(ovlb): 89(ptr) Variable Output
92(ovlb): 90(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
12(a): 11(ptr) Variable Function 12(a): 11(ptr) Variable Function
@ -151,21 +150,21 @@ spv.400.tesc
Store 43(pid) 45 Store 43(pid) 45
48: 10(int) Load 47(gl_InvocationID) 48: 10(int) Load 47(gl_InvocationID)
Store 46(iid) 48 Store 46(iid) 48
55: 10(int) Load 47(gl_InvocationID) 54: 10(int) Load 47(gl_InvocationID)
56: 15(fvec4) Load 17(p) 55: 15(fvec4) Load 17(p)
58: 57(ptr) AccessChain 54(gl_out) 55 26 57: 56(ptr) AccessChain 53(gl_out) 54 26
Store 58 56 Store 57 55
59: 10(int) Load 47(gl_InvocationID) 58: 10(int) Load 47(gl_InvocationID)
60: 14(float) Load 31(ps) 59: 14(float) Load 31(ps)
62: 61(ptr) AccessChain 54(gl_out) 59 25 61: 60(ptr) AccessChain 53(gl_out) 58 25
Store 62 60 Store 61 59
63: 10(int) Load 47(gl_InvocationID) 62: 10(int) Load 47(gl_InvocationID)
64: 14(float) Load 35(cd) 63: 14(float) Load 35(cd)
65: 61(ptr) AccessChain 54(gl_out) 63 36 25 64: 60(ptr) AccessChain 53(gl_out) 62 36 25
Store 65 64 Store 64 63
71: 61(ptr) AccessChain 68(gl_TessLevelOuter) 69 70: 60(ptr) AccessChain 67(gl_TessLevelOuter) 68
Store 71 70 Store 70 69
75: 61(ptr) AccessChain 73(gl_TessLevelInner) 25 74: 60(ptr) AccessChain 72(gl_TessLevelInner) 25
Store 75 74 Store 74 73
Return Return
FunctionEnd FunctionEnd

View File

@ -47,7 +47,7 @@ spv.atomic.comp
8: TypeFunction 6(int) 7(ptr) 8: TypeFunction 6(int) 7(ptr)
14: 6(int) Constant 1 14: 6(int) Constant 1
15: 6(int) Constant 0 15: 6(int) Constant 0
19: 6(int) Constant 1024 19: 6(int) Constant 1032
20(counter): 7(ptr) Variable AtomicCounter 20(counter): 7(ptr) Variable AtomicCounter
22: TypePointer Function 6(int) 22: TypePointer Function 6(int)
24: 6(int) Constant 4 24: 6(int) Constant 4

View File

@ -0,0 +1,46 @@
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

View File

@ -37,4 +37,6 @@ void main()
outnames.va[gl_LocalInvocationID.x] = vec4(s); outnames.va[gl_LocalInvocationID.x] = vec4(s);
outnames.s = outbname.uns.length(); outnames.s = outbname.uns.length();
gl_DeviceIndex; gl_DeviceIndex;
memoryBarrierShared();
groupMemoryBarrier();
} }

15
Test/spv.barrier.vert Normal file
View File

@ -0,0 +1,15 @@
#version 450
layout(location=0) out vec4 c0;
layout(location=1) out vec4 c1;
void main()
{
c0 = vec4(1.0);
memoryBarrier();
c1 = vec4(1.0);
memoryBarrierBuffer();
++c0;
memoryBarrierImage();
++c0;
}

View File

@ -189,6 +189,7 @@ INSTANTIATE_TEST_CASE_P(
// Test looping constructs. // Test looping constructs.
// No tests yet for making sure break and continue from a nested loop // No tests yet for making sure break and continue from a nested loop
// goes to the innermost target. // goes to the innermost target.
"spv.barrier.vert",
"spv.do-simple.vert", "spv.do-simple.vert",
"spv.do-while-continue-break.vert", "spv.do-while-continue-break.vert",
"spv.for-complex-condition.vert", "spv.for-complex-condition.vert",