SPV: Don't emit memory barrier for ESSL barrier(), but still do for GLSL barrier().
Addresses issue #205. Current open Khronos bug for finalizing this.
This commit is contained in:
parent
eb6d950789
commit
823fc65644
@ -3881,7 +3881,8 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op)
|
||||
builder.createNoResultOp(spv::OpEndPrimitive);
|
||||
return 0;
|
||||
case glslang::EOpBarrier:
|
||||
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory);
|
||||
if (glslangIntermediate->getProfile() != EEsProfile)
|
||||
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory);
|
||||
builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsMaskNone);
|
||||
return 0;
|
||||
case glslang::EOpMemoryBarrier:
|
||||
|
@ -7,123 +7,121 @@ Linked compute stage:
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 67
|
||||
// Id's are bound by 66
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint GLCompute 4 "main" 53
|
||||
EntryPoint GLCompute 4 "main" 52
|
||||
ExecutionMode 4 LocalSize 16 32 4
|
||||
Source ESSL 310
|
||||
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 42 "i"
|
||||
Name 48 "outs"
|
||||
MemberName 48(outs) 0 "s"
|
||||
MemberName 48(outs) 1 "va"
|
||||
Name 50 "outnames"
|
||||
Name 53 "gl_LocalInvocationID"
|
||||
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 47 ArrayStride 16
|
||||
MemberDecorate 48(outs) 0 Offset 0
|
||||
MemberDecorate 48(outs) 1 Offset 16
|
||||
Decorate 48(outs) BufferBlock
|
||||
Decorate 50(outnames) DescriptorSet 0
|
||||
Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
||||
Decorate 66 BuiltIn WorkgroupSize
|
||||
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 41 "i"
|
||||
Name 47 "outs"
|
||||
MemberName 47(outs) 0 "s"
|
||||
MemberName 47(outs) 1 "va"
|
||||
Name 49 "outnames"
|
||||
Name 52 "gl_LocalInvocationID"
|
||||
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 46 ArrayStride 16
|
||||
MemberDecorate 47(outs) 0 Offset 0
|
||||
MemberDecorate 47(outs) 1 Offset 16
|
||||
Decorate 47(outs) BufferBlock
|
||||
Decorate 49(outnames) DescriptorSet 0
|
||||
Decorate 52(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
||||
Decorate 65 BuiltIn WorkgroupSize
|
||||
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: 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)
|
||||
42(i): 41(ptr) Variable Workgroup
|
||||
47: TypeRuntimeArray 23(fvec4)
|
||||
48(outs): TypeStruct 16(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: 6(int) Constant 16
|
||||
64: 6(int) Constant 32
|
||||
65: 6(int) Constant 4
|
||||
66: 51(ivec3) ConstantComposite 63 64 65
|
||||
8: 6(int) Constant 0
|
||||
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
|
||||
35: 15(int) Constant 17
|
||||
36: 9(float) Constant 1077936128
|
||||
37: 10(fvec3) ConstantComposite 36 36 36
|
||||
38: TypePointer Uniform 10(fvec3)
|
||||
40: TypePointer Workgroup 15(int)
|
||||
41(i): 40(ptr) Variable Workgroup
|
||||
46: TypeRuntimeArray 22(fvec4)
|
||||
47(outs): TypeStruct 15(int) 46
|
||||
48: TypePointer Uniform 47(outs)
|
||||
49(outnames): 48(ptr) Variable Uniform
|
||||
50: TypeVector 6(int) 3
|
||||
51: TypePointer Input 50(ivec3)
|
||||
52(gl_LocalInvocationID): 51(ptr) Variable Input
|
||||
53: TypePointer Input 6(int)
|
||||
60: TypePointer Uniform 15(int)
|
||||
62: 6(int) Constant 16
|
||||
63: 6(int) Constant 32
|
||||
64: 6(int) Constant 4
|
||||
65: 50(ivec3) ConstantComposite 62 63 64
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
MemoryBarrier 7 8
|
||||
ControlBarrier 7 7 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
|
||||
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
|
||||
Store 46 45
|
||||
55: 54(ptr) AccessChain 53(gl_LocalInvocationID) 9
|
||||
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
|
||||
Store 59 58
|
||||
60: 16(int) ArrayLength 15(outbname) 3
|
||||
62: 61(ptr) AccessChain 50(outnames) 17
|
||||
Store 62 60
|
||||
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
|
||||
33: 20(ptr) AccessChain 14(outbname) 31 32 8
|
||||
34: 9(float) Load 33
|
||||
Store 18(s) 34
|
||||
39: 38(ptr) AccessChain 14(outbname) 31 35
|
||||
Store 39 37
|
||||
42: 15(int) Load 41(i)
|
||||
43: 9(float) Load 18(s)
|
||||
44: 10(fvec3) CompositeConstruct 43 43 43
|
||||
45: 38(ptr) AccessChain 14(outbname) 31 42
|
||||
Store 45 44
|
||||
54: 53(ptr) AccessChain 52(gl_LocalInvocationID) 8
|
||||
55: 6(int) Load 54
|
||||
56: 9(float) Load 18(s)
|
||||
57: 22(fvec4) CompositeConstruct 56 56 56 56
|
||||
58: 29(ptr) AccessChain 49(outnames) 26 55
|
||||
Store 58 57
|
||||
59: 15(int) ArrayLength 14(outbname) 3
|
||||
61: 60(ptr) AccessChain 49(outnames) 16
|
||||
Store 61 59
|
||||
Return
|
||||
FunctionEnd
|
||||
|
Loading…
x
Reference in New Issue
Block a user