GLSL: The execution scope for barriers should be Workgroup.

This commit is contained in:
chrgau01@arm.com 2016-11-14 10:10:05 +01:00
Родитель 84d11e1859
Коммит c3f1cdfa57
3 изменённых файлов: 202 добавлений и 201 удалений

Просмотреть файл

@ -4597,7 +4597,7 @@ 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::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsMaskNone); builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeDevice, spv::MemorySemanticsMaskNone);
return 0; return 0;
case glslang::EOpMemoryBarrier: case glslang::EOpMemoryBarrier:
builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory); builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory);

209
Test/baseResults/spv.310.comp.out Executable file → Normal file
Просмотреть файл

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

192
Test/baseResults/spv.400.tesc.out Executable file → Normal file
Просмотреть файл

@ -14,26 +14,26 @@ Linked tessellation control stage:
Capability ClipDistance Capability ClipDistance
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 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 ExecutionMode 4 OutputVertices 4
Source GLSL 400 Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects" SourceExtension "GL_ARB_separate_shader_objects"
Name 4 "main" Name 4 "main"
Name 11 "a" Name 12 "a"
Name 16 "p" Name 17 "p"
Name 19 "gl_PerVertex" Name 20 "gl_PerVertex"
MemberName 19(gl_PerVertex) 0 "gl_Position" MemberName 20(gl_PerVertex) 0 "gl_Position"
MemberName 19(gl_PerVertex) 1 "gl_PointSize" MemberName 20(gl_PerVertex) 1 "gl_PointSize"
MemberName 19(gl_PerVertex) 2 "gl_ClipDistance" MemberName 20(gl_PerVertex) 2 "gl_ClipDistance"
Name 23 "gl_in" Name 24 "gl_in"
Name 30 "ps" Name 31 "ps"
Name 34 "cd" Name 35 "cd"
Name 38 "pvi" Name 39 "pvi"
Name 40 "gl_PatchVerticesIn" Name 41 "gl_PatchVerticesIn"
Name 42 "pid" Name 43 "pid"
Name 43 "gl_PrimitiveID" Name 44 "gl_PrimitiveID"
Name 45 "iid" Name 46 "iid"
Name 46 "gl_InvocationID" Name 47 "gl_InvocationID"
Name 50 "gl_PerVertex" Name 50 "gl_PerVertex"
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"
@ -49,13 +49,13 @@ Linked tessellation control stage:
Name 88 "ivlb" Name 88 "ivlb"
Name 91 "ovla" Name 91 "ovla"
Name 92 "ovlb" Name 92 "ovlb"
MemberDecorate 19(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 19(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 19(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 19(gl_PerVertex) Block Decorate 20(gl_PerVertex) Block
Decorate 40(gl_PatchVerticesIn) BuiltIn PatchVertices Decorate 41(gl_PatchVerticesIn) BuiltIn PatchVertices
Decorate 43(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 44(gl_PrimitiveID) BuiltIn PrimitiveId
Decorate 46(gl_InvocationID) BuiltIn InvocationId Decorate 47(gl_InvocationID) BuiltIn InvocationId
MemberDecorate 50(gl_PerVertex) 0 BuiltIn Position MemberDecorate 50(gl_PerVertex) 0 BuiltIn Position
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
@ -72,106 +72,106 @@ Linked tessellation control stage:
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 0 6: TypeInt 32 0
7: 6(int) Constant 1 7: 6(int) Constant 2
8: 6(int) Constant 0 8: 6(int) Constant 1
9: TypeInt 32 1 9: 6(int) Constant 0
10: TypePointer Function 9(int) 10: TypeInt 32 1
12: 9(int) Constant 5392 11: TypePointer Function 10(int)
13: TypeFloat 32 13: 10(int) Constant 5392
14: TypeVector 13(float) 4 14: TypeFloat 32
15: TypePointer Function 14(fvec4) 15: TypeVector 14(float) 4
17: 6(int) Constant 3 16: TypePointer Function 15(fvec4)
18: TypeArray 13(float) 17 18: 6(int) Constant 3
19(gl_PerVertex): TypeStruct 14(fvec4) 13(float) 18 19: TypeArray 14(float) 18
20: 6(int) Constant 32 20(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 19
21: TypeArray 19(gl_PerVertex) 20 21: 6(int) Constant 32
22: TypePointer Input 21 22: TypeArray 20(gl_PerVertex) 21
23(gl_in): 22(ptr) Variable Input 23: TypePointer Input 22
24: 9(int) Constant 1 24(gl_in): 23(ptr) Variable Input
25: 9(int) Constant 0 25: 10(int) Constant 1
26: TypePointer Input 14(fvec4) 26: 10(int) Constant 0
29: TypePointer Function 13(float) 27: TypePointer Input 15(fvec4)
31: TypePointer Input 13(float) 30: TypePointer Function 14(float)
35: 9(int) Constant 2 32: TypePointer Input 14(float)
39: TypePointer Input 9(int) 36: 10(int) Constant 2
40(gl_PatchVerticesIn): 39(ptr) Variable Input 40: TypePointer Input 10(int)
43(gl_PrimitiveID): 39(ptr) Variable Input 41(gl_PatchVerticesIn): 40(ptr) Variable Input
46(gl_InvocationID): 39(ptr) Variable Input 44(gl_PrimitiveID): 40(ptr) Variable Input
48: 6(int) Constant 2 47(gl_InvocationID): 40(ptr) Variable Input
49: TypeArray 13(float) 48 49: TypeArray 14(float) 7
50(gl_PerVertex): TypeStruct 14(fvec4) 13(float) 49 50(gl_PerVertex): TypeStruct 15(fvec4) 14(float) 49
51: 6(int) Constant 4 51: 6(int) Constant 4
52: TypeArray 50(gl_PerVertex) 51 52: TypeArray 50(gl_PerVertex) 51
53: TypePointer Output 52 53: TypePointer Output 52
54(gl_out): 53(ptr) Variable Output 54(gl_out): 53(ptr) Variable Output
57: TypePointer Output 14(fvec4) 57: TypePointer Output 15(fvec4)
61: TypePointer Output 13(float) 61: TypePointer Output 14(float)
66: TypeArray 13(float) 51 66: TypeArray 14(float) 51
67: TypePointer Output 66 67: TypePointer Output 66
68(gl_TessLevelOuter): 67(ptr) Variable Output 68(gl_TessLevelOuter): 67(ptr) Variable Output
69: 9(int) Constant 3 69: 10(int) Constant 3
70: 13(float) Constant 1078774989 70: 14(float) Constant 1078774989
72: TypePointer Output 49 72: TypePointer Output 49
73(gl_TessLevelInner): 72(ptr) Variable Output 73(gl_TessLevelInner): 72(ptr) Variable Output
74: 13(float) Constant 1067869798 74: 14(float) Constant 1067869798
76: TypeArray 9(int) 51 76: TypeArray 10(int) 51
77: TypePointer Private 76 77: TypePointer Private 76
78(outa): 77(ptr) Variable Private 78(outa): 77(ptr) Variable Private
79(patchOut): 57(ptr) Variable Output 79(patchOut): 57(ptr) Variable Output
80: TypeVector 13(float) 2 80: TypeVector 14(float) 2
81: TypeArray 80(fvec2) 20 81: TypeArray 80(fvec2) 21
82: TypePointer Input 81 82: TypePointer Input 81
83(inb): 82(ptr) Variable Input 83(inb): 82(ptr) Variable Input
84(ind): 82(ptr) Variable Input 84(ind): 82(ptr) Variable Input
85: TypeArray 14(fvec4) 20 85: TypeArray 15(fvec4) 21
86: TypePointer Input 85 86: TypePointer Input 85
87(ivla): 86(ptr) Variable Input 87(ivla): 86(ptr) Variable Input
88(ivlb): 86(ptr) Variable Input 88(ivlb): 86(ptr) Variable Input
89: TypeArray 14(fvec4) 51 89: TypeArray 15(fvec4) 51
90: TypePointer Output 89 90: TypePointer Output 89
91(ovla): 90(ptr) Variable Output 91(ovla): 90(ptr) Variable Output
92(ovlb): 90(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
11(a): 10(ptr) Variable Function 12(a): 11(ptr) Variable Function
16(p): 15(ptr) Variable Function 17(p): 16(ptr) Variable Function
30(ps): 29(ptr) Variable Function 31(ps): 30(ptr) Variable Function
34(cd): 29(ptr) Variable Function 35(cd): 30(ptr) Variable Function
38(pvi): 10(ptr) Variable Function 39(pvi): 11(ptr) Variable Function
42(pid): 10(ptr) Variable Function 43(pid): 11(ptr) Variable Function
45(iid): 10(ptr) Variable Function 46(iid): 11(ptr) Variable Function
ControlBarrier 7 7 8 ControlBarrier 7 8 9
Store 11(a) 12 Store 12(a) 13
27: 26(ptr) AccessChain 23(gl_in) 24 25 28: 27(ptr) AccessChain 24(gl_in) 25 26
28: 14(fvec4) Load 27 29: 15(fvec4) Load 28
Store 16(p) 28 Store 17(p) 29
32: 31(ptr) AccessChain 23(gl_in) 24 24 33: 32(ptr) AccessChain 24(gl_in) 25 25
33: 13(float) Load 32 34: 14(float) Load 33
Store 30(ps) 33 Store 31(ps) 34
36: 31(ptr) AccessChain 23(gl_in) 24 35 35 37: 32(ptr) AccessChain 24(gl_in) 25 36 36
37: 13(float) Load 36 38: 14(float) Load 37
Store 34(cd) 37 Store 35(cd) 38
41: 9(int) Load 40(gl_PatchVerticesIn) 42: 10(int) Load 41(gl_PatchVerticesIn)
Store 38(pvi) 41 Store 39(pvi) 42
44: 9(int) Load 43(gl_PrimitiveID) 45: 10(int) Load 44(gl_PrimitiveID)
Store 42(pid) 44 Store 43(pid) 45
47: 9(int) Load 46(gl_InvocationID) 48: 10(int) Load 47(gl_InvocationID)
Store 45(iid) 47 Store 46(iid) 48
55: 9(int) Load 46(gl_InvocationID) 55: 10(int) Load 47(gl_InvocationID)
56: 14(fvec4) Load 16(p) 56: 15(fvec4) Load 17(p)
58: 57(ptr) AccessChain 54(gl_out) 55 25 58: 57(ptr) AccessChain 54(gl_out) 55 26
Store 58 56 Store 58 56
59: 9(int) Load 46(gl_InvocationID) 59: 10(int) Load 47(gl_InvocationID)
60: 13(float) Load 30(ps) 60: 14(float) Load 31(ps)
62: 61(ptr) AccessChain 54(gl_out) 59 24 62: 61(ptr) AccessChain 54(gl_out) 59 25
Store 62 60 Store 62 60
63: 9(int) Load 46(gl_InvocationID) 63: 10(int) Load 47(gl_InvocationID)
64: 13(float) Load 34(cd) 64: 14(float) Load 35(cd)
65: 61(ptr) AccessChain 54(gl_out) 63 35 24 65: 61(ptr) AccessChain 54(gl_out) 63 36 25
Store 65 64 Store 65 64
71: 61(ptr) AccessChain 68(gl_TessLevelOuter) 69 71: 61(ptr) AccessChain 68(gl_TessLevelOuter) 69
Store 71 70 Store 71 70
75: 61(ptr) AccessChain 73(gl_TessLevelInner) 24 75: 61(ptr) AccessChain 73(gl_TessLevelInner) 25
Store 75 74 Store 75 74
Return Return
FunctionEnd FunctionEnd