spv.460.subgroupEXT.mesh // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 228 Capability ClipDistance Capability CullDistance Capability GroupNonUniform Capability GroupNonUniformVote Capability GroupNonUniformArithmetic Capability GroupNonUniformBallot Capability GroupNonUniformShuffle Capability GroupNonUniformShuffleRelative Capability GroupNonUniformClustered Capability GroupNonUniformQuad Capability MeshShadingEXT Extension "SPV_EXT_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshEXT 4 "main" 35 41 57 85 102 110 111 116 117 120 121 122 123 124 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 ExecutionMode 4 OutputTrianglesNV Source GLSL 460 SourceExtension "GL_EXT_mesh_shader" SourceExtension "GL_KHR_shader_subgroup_arithmetic" SourceExtension "GL_KHR_shader_subgroup_ballot" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_clustered" SourceExtension "GL_KHR_shader_subgroup_quad" SourceExtension "GL_KHR_shader_subgroup_shuffle" SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" SourceExtension "GL_KHR_shader_subgroup_vote" Name 4 "main" Name 6 "basic_works(" Name 13 "ballot_works(vf4;" Name 12 "f4" Name 16 "vote_works(vf4;" Name 15 "f4" Name 19 "shuffle_works(vf4;" Name 18 "f4" Name 22 "arith_works(vf4;" Name 21 "f4" Name 25 "clustered_works(vf4;" Name 24 "f4" Name 28 "quad_works(vf4;" Name 27 "f4" Name 32 "iid" Name 35 "gl_LocalInvocationID" Name 40 "gid" Name 41 "gl_WorkGroupID" Name 44 "vertexCount" Name 46 "primitiveCount" Name 54 "gl_MeshPerVertexEXT" MemberName 54(gl_MeshPerVertexEXT) 0 "gl_Position" MemberName 54(gl_MeshPerVertexEXT) 1 "gl_PointSize" MemberName 54(gl_MeshPerVertexEXT) 2 "gl_ClipDistance" MemberName 54(gl_MeshPerVertexEXT) 3 "gl_CullDistance" Name 57 "gl_MeshVerticesEXT" Name 82 "gl_MeshPerPrimitiveEXT" MemberName 82(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID" MemberName 82(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" MemberName 82(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" MemberName 82(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" Name 85 "gl_MeshPrimitivesEXT" Name 102 "gl_PrimitiveTriangleIndicesEXT" Name 110 "gl_SubgroupSize" Name 111 "gl_SubgroupInvocationID" Name 116 "gl_NumSubgroups" Name 117 "gl_SubgroupID" Name 120 "gl_SubgroupEqMask" Name 121 "gl_SubgroupGeMask" Name 122 "gl_SubgroupGtMask" Name 123 "gl_SubgroupLeMask" Name 124 "gl_SubgroupLtMask" Name 130 "ballot" Name 167 "ballot" Name 202 "ballot" Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 54(gl_MeshPerVertexEXT) Block MemberDecorate 54(gl_MeshPerVertexEXT) 0 BuiltIn Position MemberDecorate 54(gl_MeshPerVertexEXT) 1 BuiltIn PointSize MemberDecorate 54(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance MemberDecorate 54(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance Decorate 82(gl_MeshPerPrimitiveEXT) Block MemberDecorate 82(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId MemberDecorate 82(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV MemberDecorate 82(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer MemberDecorate 82(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV MemberDecorate 82(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex MemberDecorate 82(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV MemberDecorate 82(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT MemberDecorate 82(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV Decorate 102(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT Decorate 110(gl_SubgroupSize) RelaxedPrecision Decorate 110(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 111(gl_SubgroupInvocationID) RelaxedPrecision Decorate 111(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 116(gl_NumSubgroups) BuiltIn NumSubgroups Decorate 117(gl_SubgroupID) BuiltIn SubgroupId Decorate 120(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR Decorate 121(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR Decorate 122(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR Decorate 123(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR Decorate 124(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR Decorate 227 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypePointer Function 9(fvec4) 11: TypeFunction 2 10(ptr) 30: TypeInt 32 0 31: TypePointer Function 30(int) 33: TypeVector 30(int) 3 34: TypePointer Input 33(ivec3) 35(gl_LocalInvocationID): 34(ptr) Variable Input 36: 30(int) Constant 0 37: TypePointer Input 30(int) 41(gl_WorkGroupID): 34(ptr) Variable Input 45: 30(int) Constant 81 47: 30(int) Constant 32 50: 30(int) Constant 4 51: TypeArray 8(float) 50 52: 30(int) Constant 3 53: TypeArray 8(float) 52 54(gl_MeshPerVertexEXT): TypeStruct 9(fvec4) 8(float) 51 53 55: TypeArray 54(gl_MeshPerVertexEXT) 45 56: TypePointer Output 55 57(gl_MeshVerticesEXT): 56(ptr) Variable Output 59: TypeInt 32 1 60: 59(int) Constant 0 61: 8(float) Constant 1065353216 62: 9(fvec4) ConstantComposite 61 61 61 61 63: TypePointer Output 9(fvec4) 66: 59(int) Constant 1 67: 8(float) Constant 1073741824 68: TypePointer Output 8(float) 71: 59(int) Constant 2 72: 59(int) Constant 3 73: 8(float) Constant 1077936128 76: 8(float) Constant 1082130432 78: 30(int) Constant 1 79: 30(int) Constant 264 80: 30(int) Constant 2 81: TypeBool 82(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 81(bool) 83: TypeArray 82(gl_MeshPerPrimitiveEXT) 47 84: TypePointer Output 83 85(gl_MeshPrimitivesEXT): 84(ptr) Variable Output 87: 59(int) Constant 6 88: TypePointer Output 59(int) 91: 59(int) Constant 7 94: 59(int) Constant 8 97: 81(bool) ConstantFalse 98: TypePointer Output 81(bool) 100: TypeArray 33(ivec3) 47 101: TypePointer Output 100 102(gl_PrimitiveTriangleIndicesEXT): 101(ptr) Variable Output 103: 33(ivec3) ConstantComposite 78 78 78 104: TypePointer Output 33(ivec3) 108: 33(ivec3) ConstantComposite 80 80 80 110(gl_SubgroupSize): 37(ptr) Variable Input 111(gl_SubgroupInvocationID): 37(ptr) Variable Input 112: 30(int) Constant 3400 113: 30(int) Constant 72 114: 30(int) Constant 2056 116(gl_NumSubgroups): 37(ptr) Variable Input 117(gl_SubgroupID): 37(ptr) Variable Input 118: TypeVector 30(int) 4 119: TypePointer Input 118(ivec4) 120(gl_SubgroupEqMask): 119(ptr) Variable Input 121(gl_SubgroupGeMask): 119(ptr) Variable Input 122(gl_SubgroupGtMask): 119(ptr) Variable Input 123(gl_SubgroupLeMask): 119(ptr) Variable Input 124(gl_SubgroupLtMask): 119(ptr) Variable Input 129: TypePointer Function 118(ivec4) 132: 118(ivec4) ConstantComposite 78 78 78 78 146: 81(bool) ConstantTrue 203: 30(int) Constant 85 204: 118(ivec4) ConstantComposite 203 36 36 36 227: 33(ivec3) ConstantComposite 47 78 78 4(main): 2 Function None 3 5: Label 32(iid): 31(ptr) Variable Function 40(gid): 31(ptr) Variable Function 44(vertexCount): 31(ptr) Variable Function 46(primitiveCount): 31(ptr) Variable Function 38: 37(ptr) AccessChain 35(gl_LocalInvocationID) 36 39: 30(int) Load 38 Store 32(iid) 39 42: 37(ptr) AccessChain 41(gl_WorkGroupID) 36 43: 30(int) Load 42 Store 40(gid) 43 Store 44(vertexCount) 45 Store 46(primitiveCount) 47 48: 30(int) Load 44(vertexCount) 49: 30(int) Load 46(primitiveCount) SetMeshOutputsEXT 48 49 58: 30(int) Load 32(iid) 64: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 58 60 Store 64 62 65: 30(int) Load 32(iid) 69: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 65 66 Store 69 67 70: 30(int) Load 32(iid) 74: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 70 71 72 Store 74 73 75: 30(int) Load 32(iid) 77: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 75 72 71 Store 77 76 MemoryBarrier 78 79 ControlBarrier 80 80 79 86: 30(int) Load 32(iid) 89: 88(ptr) AccessChain 85(gl_MeshPrimitivesEXT) 86 60 Store 89 87 90: 30(int) Load 32(iid) 92: 88(ptr) AccessChain 85(gl_MeshPrimitivesEXT) 90 66 Store 92 91 93: 30(int) Load 32(iid) 95: 88(ptr) AccessChain 85(gl_MeshPrimitivesEXT) 93 71 Store 95 94 96: 30(int) Load 32(iid) 99: 98(ptr) AccessChain 85(gl_MeshPrimitivesEXT) 96 72 Store 99 97 MemoryBarrier 78 79 ControlBarrier 80 80 79 105: 104(ptr) AccessChain 102(gl_PrimitiveTriangleIndicesEXT) 60 Store 105 103 106: 30(int) Load 46(primitiveCount) 107: 30(int) ISub 106 78 109: 104(ptr) AccessChain 102(gl_PrimitiveTriangleIndicesEXT) 107 Store 109 108 MemoryBarrier 78 79 ControlBarrier 80 80 79 Return FunctionEnd 6(basic_works(): 2 Function None 3 7: Label ControlBarrier 52 52 112 MemoryBarrier 52 112 MemoryBarrier 52 113 MemoryBarrier 52 114 115: 81(bool) GroupNonUniformElect 52 MemoryBarrier 52 79 Return FunctionEnd 13(ballot_works(vf4;): 2 Function None 11 12(f4): 10(ptr) FunctionParameter 14: Label 130(ballot): 129(ptr) Variable Function 125: 9(fvec4) Load 12(f4) 126: 9(fvec4) GroupNonUniformBroadcast 52 125 36 127: 9(fvec4) Load 12(f4) 128: 9(fvec4) GroupNonUniformBroadcastFirst 52 127 131: 118(ivec4) GroupNonUniformBallot 52 97 Store 130(ballot) 131 133: 81(bool) GroupNonUniformInverseBallot 52 132 134: 118(ivec4) Load 130(ballot) 135: 81(bool) GroupNonUniformBallotBitExtract 52 134 36 136: 118(ivec4) Load 130(ballot) 137: 30(int) GroupNonUniformBallotBitCount 52 Reduce 136 138: 118(ivec4) Load 130(ballot) 139: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 138 140: 118(ivec4) Load 130(ballot) 141: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 140 142: 118(ivec4) Load 130(ballot) 143: 30(int) GroupNonUniformBallotFindLSB 52 142 144: 118(ivec4) Load 130(ballot) 145: 30(int) GroupNonUniformBallotFindMSB 52 144 Return FunctionEnd 16(vote_works(vf4;): 2 Function None 11 15(f4): 10(ptr) FunctionParameter 17: Label 147: 81(bool) GroupNonUniformAll 52 146 148: 81(bool) GroupNonUniformAny 52 97 149: 9(fvec4) Load 15(f4) 150: 81(bool) GroupNonUniformAllEqual 52 149 Return FunctionEnd 19(shuffle_works(vf4;): 2 Function None 11 18(f4): 10(ptr) FunctionParameter 20: Label 151: 9(fvec4) Load 18(f4) 152: 9(fvec4) GroupNonUniformShuffle 52 151 36 153: 9(fvec4) Load 18(f4) 154: 9(fvec4) GroupNonUniformShuffleXor 52 153 78 155: 9(fvec4) Load 18(f4) 156: 9(fvec4) GroupNonUniformShuffleUp 52 155 78 157: 9(fvec4) Load 18(f4) 158: 9(fvec4) GroupNonUniformShuffleDown 52 157 78 Return FunctionEnd 22(arith_works(vf4;): 2 Function None 11 21(f4): 10(ptr) FunctionParameter 23: Label 167(ballot): 129(ptr) Variable Function 159: 9(fvec4) Load 21(f4) 160: 9(fvec4) GroupNonUniformFAdd 52 Reduce 159 161: 9(fvec4) Load 21(f4) 162: 9(fvec4) GroupNonUniformFMul 52 Reduce 161 163: 9(fvec4) Load 21(f4) 164: 9(fvec4) GroupNonUniformFMin 52 Reduce 163 165: 9(fvec4) Load 21(f4) 166: 9(fvec4) GroupNonUniformFMax 52 Reduce 165 168: 118(ivec4) Load 167(ballot) 169: 118(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 168 170: 118(ivec4) Load 167(ballot) 171: 118(ivec4) GroupNonUniformBitwiseOr 52 Reduce 170 172: 118(ivec4) Load 167(ballot) 173: 118(ivec4) GroupNonUniformBitwiseXor 52 Reduce 172 174: 9(fvec4) Load 21(f4) 175: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 174 176: 9(fvec4) Load 21(f4) 177: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 176 178: 9(fvec4) Load 21(f4) 179: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 178 180: 9(fvec4) Load 21(f4) 181: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 180 182: 118(ivec4) Load 167(ballot) 183: 118(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 182 184: 118(ivec4) Load 167(ballot) 185: 118(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 184 186: 118(ivec4) Load 167(ballot) 187: 118(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 186 188: 9(fvec4) Load 21(f4) 189: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 188 190: 9(fvec4) Load 21(f4) 191: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 190 192: 9(fvec4) Load 21(f4) 193: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 192 194: 9(fvec4) Load 21(f4) 195: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 194 196: 118(ivec4) Load 167(ballot) 197: 118(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 196 198: 118(ivec4) Load 167(ballot) 199: 118(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 198 200: 118(ivec4) Load 167(ballot) 201: 118(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 200 Return FunctionEnd 25(clustered_works(vf4;): 2 Function None 11 24(f4): 10(ptr) FunctionParameter 26: Label 202(ballot): 129(ptr) Variable Function Store 202(ballot) 204 205: 9(fvec4) Load 24(f4) 206: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 205 80 207: 9(fvec4) Load 24(f4) 208: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 207 80 209: 9(fvec4) Load 24(f4) 210: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 209 80 211: 9(fvec4) Load 24(f4) 212: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 211 80 213: 118(ivec4) Load 202(ballot) 214: 118(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 213 80 215: 118(ivec4) Load 202(ballot) 216: 118(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 215 80 217: 118(ivec4) Load 202(ballot) 218: 118(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 217 80 Return FunctionEnd 28(quad_works(vf4;): 2 Function None 11 27(f4): 10(ptr) FunctionParameter 29: Label 219: 9(fvec4) Load 27(f4) 220: 9(fvec4) GroupNonUniformQuadBroadcast 52 219 36 221: 9(fvec4) Load 27(f4) 222: 9(fvec4) GroupNonUniformQuadSwap 52 221 36 223: 9(fvec4) Load 27(f4) 224: 9(fvec4) GroupNonUniformQuadSwap 52 223 78 225: 9(fvec4) Load 27(f4) 226: 9(fvec4) GroupNonUniformQuadSwap 52 225 80 Return FunctionEnd