aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrgau01@arm.com <christopher.gautier@arm.com>2016-11-14 10:10:05 +0100
committerchrgau01@arm.com <christopher.gautier@arm.com>2016-11-14 10:10:05 +0100
commitc3f1cdfa57715cf834b51d5081f4b06969ccae3a (patch)
tree1b78627a9bfcf62165f1b2ee8697a0a032ee0ba5
parent84d11e1859fe1b5261268ed9e030ba34c154a1b6 (diff)
downloadglslang-c3f1cdfa57715cf834b51d5081f4b06969ccae3a.tar.gz
GLSL: The execution scope for barriers should be Workgroup.
-rwxr-xr-xSPIRV/GlslangToSpv.cpp2
-rw-r--r--[-rwxr-xr-x]Test/baseResults/spv.310.comp.out209
-rw-r--r--[-rwxr-xr-x]Test/baseResults/spv.400.tesc.out192
3 files changed, 202 insertions, 201 deletions
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index ebf8c5d8..37aac177 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -4597,7 +4597,7 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
builder.createNoResultOp(spv::OpEndPrimitive);
return 0;
case glslang::EOpBarrier:
- builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsMaskNone);
+ builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeDevice, spv::MemorySemanticsMaskNone);
return 0;
case glslang::EOpMemoryBarrier:
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory);
diff --git a/Test/baseResults/spv.310.comp.out b/Test/baseResults/spv.310.comp.out
index 3eafc2b5..bd1f3466 100755..100644
--- a/Test/baseResults/spv.310.comp.out
+++ b/Test/baseResults/spv.310.comp.out
@@ -7,121 +7,122 @@ Linked compute stage:
// Module Version 10000
// Generated by (magic number): 80001
-// Id's are bound by 66
+// Id's are bound by 67
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint GLCompute 4 "main" 52
+ EntryPoint GLCompute 4 "main" 53
ExecutionMode 4 LocalSize 16 32 4
Source ESSL 310
Name 4 "main"
- 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
+ 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
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
- 7: 6(int) Constant 1
- 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
+ 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)
+ 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
4(main): 2 Function None 3
5: Label
- 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
+ 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
+ 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
Return
FunctionEnd
diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out
index bcfd963e..ae469aad 100755..100644
--- a/Test/baseResults/spv.400.tesc.out
+++ b/Test/baseResults/spv.400.tesc.out
@@ -14,26 +14,26 @@ Linked tessellation control stage:
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 23 40 43 46 54 68 73 79 83 84 87 88 91 92
+ EntryPoint TessellationControl 4 "main" 24 41 44 47 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 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 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 50 "gl_PerVertex"
MemberName 50(gl_PerVertex) 0 "gl_Position"
MemberName 50(gl_PerVertex) 1 "gl_PointSize"
@@ -49,13 +49,13 @@ Linked tessellation control stage:
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 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 50(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 50(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 50(gl_PerVertex) 2 BuiltIn ClipDistance
@@ -72,106 +72,106 @@ Linked tessellation control stage:
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
- 7: 6(int) Constant 1
- 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
+ 7: 6(int) Constant 2
+ 8: 6(int) Constant 1
+ 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: 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 14(fvec4)
- 61: TypePointer Output 13(float)
- 66: TypeArray 13(float) 51
+ 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: 9(int) Constant 3
- 70: 13(float) Constant 1078774989
+ 69: 10(int) Constant 3
+ 70: 14(float) Constant 1078774989
72: TypePointer Output 49
73(gl_TessLevelInner): 72(ptr) Variable Output
- 74: 13(float) Constant 1067869798
- 76: TypeArray 9(int) 51
+ 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 13(float) 2
- 81: TypeArray 80(fvec2) 20
+ 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 14(fvec4) 20
+ 85: TypeArray 15(fvec4) 21
86: TypePointer Input 85
87(ivla): 86(ptr) Variable Input
88(ivlb): 86(ptr) Variable Input
- 89: TypeArray 14(fvec4) 51
+ 89: TypeArray 15(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
- 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
+ 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
+ ControlBarrier 7 8 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
+ 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: 9(int) Load 46(gl_InvocationID)
- 60: 13(float) Load 30(ps)
- 62: 61(ptr) AccessChain 54(gl_out) 59 24
+ 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: 9(int) Load 46(gl_InvocationID)
- 64: 13(float) Load 34(cd)
- 65: 61(ptr) AccessChain 54(gl_out) 63 35 24
+ 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) 24
+ 75: 61(ptr) AccessChain 73(gl_TessLevelInner) 25
Store 75 74
Return
FunctionEnd