mirror of
https://github.com/KhronosGroup/glslang
synced 2024-09-19 12:19:53 +00:00
SPV: Update to spec. decisions (and issue #205) for barrier().
A barrier (ESSL/GLSL) or OpControlBarrier when in a tessellation control shader also means doing memory synchronization for output variables.
This commit is contained in:
parent
01de90bb1c
commit
c51287d744
@ -3924,8 +3924,6 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op)
|
||||
builder.createNoResultOp(spv::OpEndPrimitive);
|
||||
return 0;
|
||||
case glslang::EOpBarrier:
|
||||
if (glslangIntermediate->getProfile() != EEsProfile)
|
||||
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory);
|
||||
builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsMaskNone);
|
||||
return 0;
|
||||
case glslang::EOpMemoryBarrier:
|
||||
|
@ -67,10 +67,7 @@ const Id NoType = 0;
|
||||
const unsigned int BadValue = 0xFFFFFFFF;
|
||||
const Decoration NoPrecision = (Decoration)BadValue;
|
||||
const MemorySemanticsMask MemorySemanticsAllMemory =
|
||||
(MemorySemanticsMask)(MemorySemanticsAcquireMask |
|
||||
MemorySemanticsReleaseMask |
|
||||
MemorySemanticsAcquireReleaseMask |
|
||||
MemorySemanticsSequentiallyConsistentMask |
|
||||
(MemorySemanticsMask)(MemorySemanticsSequentiallyConsistentMask |
|
||||
MemorySemanticsUniformMemoryMask |
|
||||
MemorySemanticsSubgroupMemoryMask |
|
||||
MemorySemanticsWorkgroupMemoryMask |
|
||||
|
@ -7,173 +7,171 @@ Linked tessellation control stage:
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 94
|
||||
// Id's are bound by 93
|
||||
|
||||
Capability Tessellation
|
||||
Capability TessellationPointSize
|
||||
Capability ClipDistance
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint TessellationControl 4 "main" 24 41 44 47 55 69 74 80 84 85 88 89 92 93
|
||||
EntryPoint TessellationControl 4 "main" 23 40 43 46 54 68 73 79 83 84 87 88 91 92
|
||||
ExecutionMode 4 OutputVertices 4
|
||||
Source GLSL 400
|
||||
SourceExtension "GL_ARB_separate_shader_objects"
|
||||
Name 4 "main"
|
||||
Name 12 "a"
|
||||
Name 17 "p"
|
||||
Name 20 "gl_PerVertex"
|
||||
MemberName 20(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 20(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 20(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
Name 24 "gl_in"
|
||||
Name 31 "ps"
|
||||
Name 35 "cd"
|
||||
Name 39 "pvi"
|
||||
Name 41 "gl_PatchVerticesIn"
|
||||
Name 43 "pid"
|
||||
Name 44 "gl_PrimitiveID"
|
||||
Name 46 "iid"
|
||||
Name 47 "gl_InvocationID"
|
||||
Name 51 "gl_PerVertex"
|
||||
MemberName 51(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 51(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 51(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
Name 55 "gl_out"
|
||||
Name 69 "gl_TessLevelOuter"
|
||||
Name 74 "gl_TessLevelInner"
|
||||
Name 79 "outa"
|
||||
Name 80 "patchOut"
|
||||
Name 84 "inb"
|
||||
Name 85 "ind"
|
||||
Name 88 "ivla"
|
||||
Name 89 "ivlb"
|
||||
Name 92 "ovla"
|
||||
Name 93 "ovlb"
|
||||
MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 20(gl_PerVertex) Block
|
||||
Decorate 41(gl_PatchVerticesIn) BuiltIn PatchVertices
|
||||
Decorate 44(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||
Decorate 47(gl_InvocationID) BuiltIn InvocationId
|
||||
MemberDecorate 51(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 51(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 51(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 51(gl_PerVertex) Block
|
||||
Decorate 69(gl_TessLevelOuter) Patch
|
||||
Decorate 69(gl_TessLevelOuter) BuiltIn TessLevelOuter
|
||||
Decorate 74(gl_TessLevelInner) Patch
|
||||
Decorate 74(gl_TessLevelInner) BuiltIn TessLevelInner
|
||||
Decorate 80(patchOut) Patch
|
||||
Decorate 88(ivla) Location 3
|
||||
Decorate 89(ivlb) Location 4
|
||||
Decorate 92(ovla) Location 3
|
||||
Decorate 93(ovlb) Location 4
|
||||
Name 11 "a"
|
||||
Name 16 "p"
|
||||
Name 19 "gl_PerVertex"
|
||||
MemberName 19(gl_PerVertex) 0 "gl_Position"
|
||||
MemberName 19(gl_PerVertex) 1 "gl_PointSize"
|
||||
MemberName 19(gl_PerVertex) 2 "gl_ClipDistance"
|
||||
Name 23 "gl_in"
|
||||
Name 30 "ps"
|
||||
Name 34 "cd"
|
||||
Name 38 "pvi"
|
||||
Name 40 "gl_PatchVerticesIn"
|
||||
Name 42 "pid"
|
||||
Name 43 "gl_PrimitiveID"
|
||||
Name 45 "iid"
|
||||
Name 46 "gl_InvocationID"
|
||||
Name 50 "gl_PerVertex"
|
||||
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"
|
||||
MemberDecorate 19(gl_PerVertex) 0 BuiltIn Position
|
||||
MemberDecorate 19(gl_PerVertex) 1 BuiltIn PointSize
|
||||
MemberDecorate 19(gl_PerVertex) 2 BuiltIn ClipDistance
|
||||
Decorate 19(gl_PerVertex) Block
|
||||
Decorate 40(gl_PatchVerticesIn) BuiltIn PatchVertices
|
||||
Decorate 43(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||
Decorate 46(gl_InvocationID) BuiltIn InvocationId
|
||||
MemberDecorate 50(gl_PerVertex) 0 BuiltIn Position
|
||||
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
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeInt 32 0
|
||||
7: 6(int) Constant 1
|
||||
8: 6(int) Constant 4062
|
||||
9: 6(int) Constant 0
|
||||
10: TypeInt 32 1
|
||||
11: TypePointer Function 10(int)
|
||||
13: 10(int) Constant 5392
|
||||
14: TypeFloat 32
|
||||
15: TypeVector 14(float) 4
|
||||
16: TypePointer Function 15(fvec4)
|
||||
18: 6(int) Constant 3
|
||||
19: TypeArray 14(float) 18
|
||||
20(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 19
|
||||
21: 6(int) Constant 32
|
||||
22: TypeArray 20(gl_PerVertex) 21
|
||||
23: TypePointer Input 22
|
||||
24(gl_in): 23(ptr) Variable Input
|
||||
25: 10(int) Constant 1
|
||||
26: 10(int) Constant 0
|
||||
27: TypePointer Input 15(fvec4)
|
||||
30: TypePointer Function 14(float)
|
||||
32: TypePointer Input 14(float)
|
||||
36: 10(int) Constant 2
|
||||
40: TypePointer Input 10(int)
|
||||
41(gl_PatchVerticesIn): 40(ptr) Variable Input
|
||||
44(gl_PrimitiveID): 40(ptr) Variable Input
|
||||
47(gl_InvocationID): 40(ptr) Variable Input
|
||||
49: 6(int) Constant 2
|
||||
50: TypeArray 14(float) 49
|
||||
51(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 50
|
||||
52: 6(int) Constant 4
|
||||
53: TypeArray 51(gl_PerVertex) 52
|
||||
54: TypePointer Output 53
|
||||
55(gl_out): 54(ptr) Variable Output
|
||||
58: TypePointer Output 15(fvec4)
|
||||
62: TypePointer Output 14(float)
|
||||
67: TypeArray 14(float) 52
|
||||
68: TypePointer Output 67
|
||||
69(gl_TessLevelOuter): 68(ptr) Variable Output
|
||||
70: 10(int) Constant 3
|
||||
71: 14(float) Constant 1078774989
|
||||
73: TypePointer Output 50
|
||||
74(gl_TessLevelInner): 73(ptr) Variable Output
|
||||
75: 14(float) Constant 1067869798
|
||||
77: TypeArray 10(int) 52
|
||||
78: TypePointer Private 77
|
||||
79(outa): 78(ptr) Variable Private
|
||||
80(patchOut): 58(ptr) Variable Output
|
||||
81: TypeVector 14(float) 2
|
||||
82: TypeArray 81(fvec2) 21
|
||||
83: TypePointer Input 82
|
||||
84(inb): 83(ptr) Variable Input
|
||||
85(ind): 83(ptr) Variable Input
|
||||
86: TypeArray 15(fvec4) 21
|
||||
87: TypePointer Input 86
|
||||
88(ivla): 87(ptr) Variable Input
|
||||
89(ivlb): 87(ptr) Variable Input
|
||||
90: TypeArray 15(fvec4) 52
|
||||
91: TypePointer Output 90
|
||||
92(ovla): 91(ptr) Variable Output
|
||||
93(ovlb): 91(ptr) Variable Output
|
||||
8: 6(int) Constant 0
|
||||
9: TypeInt 32 1
|
||||
10: TypePointer Function 9(int)
|
||||
12: 9(int) Constant 5392
|
||||
13: TypeFloat 32
|
||||
14: TypeVector 13(float) 4
|
||||
15: TypePointer Function 14(fvec4)
|
||||
17: 6(int) Constant 3
|
||||
18: TypeArray 13(float) 17
|
||||
19(gl_PerVertex): TypeStruct 14(fvec4) 13(float) 18
|
||||
20: 6(int) Constant 32
|
||||
21: TypeArray 19(gl_PerVertex) 20
|
||||
22: TypePointer Input 21
|
||||
23(gl_in): 22(ptr) Variable Input
|
||||
24: 9(int) Constant 1
|
||||
25: 9(int) Constant 0
|
||||
26: TypePointer Input 14(fvec4)
|
||||
29: TypePointer Function 13(float)
|
||||
31: TypePointer Input 13(float)
|
||||
35: 9(int) Constant 2
|
||||
39: TypePointer Input 9(int)
|
||||
40(gl_PatchVerticesIn): 39(ptr) Variable Input
|
||||
43(gl_PrimitiveID): 39(ptr) Variable Input
|
||||
46(gl_InvocationID): 39(ptr) Variable Input
|
||||
48: 6(int) Constant 2
|
||||
49: TypeArray 13(float) 48
|
||||
50(gl_PerVertex): TypeStruct 14(fvec4) 13(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 14(fvec4)
|
||||
61: TypePointer Output 13(float)
|
||||
66: TypeArray 13(float) 51
|
||||
67: TypePointer Output 66
|
||||
68(gl_TessLevelOuter): 67(ptr) Variable Output
|
||||
69: 9(int) Constant 3
|
||||
70: 13(float) Constant 1078774989
|
||||
72: TypePointer Output 49
|
||||
73(gl_TessLevelInner): 72(ptr) Variable Output
|
||||
74: 13(float) Constant 1067869798
|
||||
76: TypeArray 9(int) 51
|
||||
77: TypePointer Private 76
|
||||
78(outa): 77(ptr) Variable Private
|
||||
79(patchOut): 57(ptr) Variable Output
|
||||
80: TypeVector 13(float) 2
|
||||
81: TypeArray 80(fvec2) 20
|
||||
82: TypePointer Input 81
|
||||
83(inb): 82(ptr) Variable Input
|
||||
84(ind): 82(ptr) Variable Input
|
||||
85: TypeArray 14(fvec4) 20
|
||||
86: TypePointer Input 85
|
||||
87(ivla): 86(ptr) Variable Input
|
||||
88(ivlb): 86(ptr) Variable Input
|
||||
89: TypeArray 14(fvec4) 51
|
||||
90: TypePointer Output 89
|
||||
91(ovla): 90(ptr) Variable Output
|
||||
92(ovlb): 90(ptr) Variable Output
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
12(a): 11(ptr) Variable Function
|
||||
17(p): 16(ptr) Variable Function
|
||||
31(ps): 30(ptr) Variable Function
|
||||
35(cd): 30(ptr) Variable Function
|
||||
39(pvi): 11(ptr) Variable Function
|
||||
43(pid): 11(ptr) Variable Function
|
||||
46(iid): 11(ptr) Variable Function
|
||||
MemoryBarrier 7 8
|
||||
ControlBarrier 7 7 9
|
||||
Store 12(a) 13
|
||||
28: 27(ptr) AccessChain 24(gl_in) 25 26
|
||||
29: 15(fvec4) Load 28
|
||||
Store 17(p) 29
|
||||
33: 32(ptr) AccessChain 24(gl_in) 25 25
|
||||
34: 14(float) Load 33
|
||||
Store 31(ps) 34
|
||||
37: 32(ptr) AccessChain 24(gl_in) 25 36 36
|
||||
38: 14(float) Load 37
|
||||
Store 35(cd) 38
|
||||
42: 10(int) Load 41(gl_PatchVerticesIn)
|
||||
Store 39(pvi) 42
|
||||
45: 10(int) Load 44(gl_PrimitiveID)
|
||||
Store 43(pid) 45
|
||||
48: 10(int) Load 47(gl_InvocationID)
|
||||
Store 46(iid) 48
|
||||
56: 10(int) Load 47(gl_InvocationID)
|
||||
57: 15(fvec4) Load 17(p)
|
||||
59: 58(ptr) AccessChain 55(gl_out) 56 26
|
||||
Store 59 57
|
||||
60: 10(int) Load 47(gl_InvocationID)
|
||||
61: 14(float) Load 31(ps)
|
||||
63: 62(ptr) AccessChain 55(gl_out) 60 25
|
||||
Store 63 61
|
||||
64: 10(int) Load 47(gl_InvocationID)
|
||||
65: 14(float) Load 35(cd)
|
||||
66: 62(ptr) AccessChain 55(gl_out) 64 36 25
|
||||
Store 66 65
|
||||
72: 62(ptr) AccessChain 69(gl_TessLevelOuter) 70
|
||||
Store 72 71
|
||||
76: 62(ptr) AccessChain 74(gl_TessLevelInner) 25
|
||||
Store 76 75
|
||||
11(a): 10(ptr) Variable Function
|
||||
16(p): 15(ptr) Variable Function
|
||||
30(ps): 29(ptr) Variable Function
|
||||
34(cd): 29(ptr) Variable Function
|
||||
38(pvi): 10(ptr) Variable Function
|
||||
42(pid): 10(ptr) Variable Function
|
||||
45(iid): 10(ptr) Variable Function
|
||||
ControlBarrier 7 7 8
|
||||
Store 11(a) 12
|
||||
27: 26(ptr) AccessChain 23(gl_in) 24 25
|
||||
28: 14(fvec4) Load 27
|
||||
Store 16(p) 28
|
||||
32: 31(ptr) AccessChain 23(gl_in) 24 24
|
||||
33: 13(float) Load 32
|
||||
Store 30(ps) 33
|
||||
36: 31(ptr) AccessChain 23(gl_in) 24 35 35
|
||||
37: 13(float) Load 36
|
||||
Store 34(cd) 37
|
||||
41: 9(int) Load 40(gl_PatchVerticesIn)
|
||||
Store 38(pvi) 41
|
||||
44: 9(int) Load 43(gl_PrimitiveID)
|
||||
Store 42(pid) 44
|
||||
47: 9(int) Load 46(gl_InvocationID)
|
||||
Store 45(iid) 47
|
||||
55: 9(int) Load 46(gl_InvocationID)
|
||||
56: 14(fvec4) Load 16(p)
|
||||
58: 57(ptr) AccessChain 54(gl_out) 55 25
|
||||
Store 58 56
|
||||
59: 9(int) Load 46(gl_InvocationID)
|
||||
60: 13(float) Load 30(ps)
|
||||
62: 61(ptr) AccessChain 54(gl_out) 59 24
|
||||
Store 62 60
|
||||
63: 9(int) Load 46(gl_InvocationID)
|
||||
64: 13(float) Load 34(cd)
|
||||
65: 61(ptr) AccessChain 54(gl_out) 63 35 24
|
||||
Store 65 64
|
||||
71: 61(ptr) AccessChain 68(gl_TessLevelOuter) 69
|
||||
Store 71 70
|
||||
75: 61(ptr) AccessChain 73(gl_TessLevelInner) 24
|
||||
Store 75 74
|
||||
Return
|
||||
FunctionEnd
|
||||
|
Loading…
Reference in New Issue
Block a user