From c3f1cdfa57715cf834b51d5081f4b06969ccae3a Mon Sep 17 00:00:00 2001 From: "chrgau01@arm.com" Date: Mon, 14 Nov 2016 10:10:05 +0100 Subject: [PATCH] GLSL: The execution scope for barriers should be Workgroup. --- SPIRV/GlslangToSpv.cpp | 2 +- Test/baseResults/spv.310.comp.out | 209 +++++++++++++++--------------- Test/baseResults/spv.400.tesc.out | 192 +++++++++++++-------------- 3 files changed, 202 insertions(+), 201 deletions(-) mode change 100755 => 100644 Test/baseResults/spv.310.comp.out mode change 100755 => 100644 Test/baseResults/spv.400.tesc.out 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 old mode 100755 new mode 100644 index 3eafc2b5..bd1f3466 --- 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 old mode 100755 new mode 100644 index bcfd963e..ae469aad --- 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