spv.460.subgroupEXT.mesh // Module Version 10400 // Generated by (magic number): 8000a // Id's are bound by 280 Capability ClipDistance Capability CullDistance Capability GroupNonUniform Capability GroupNonUniformVote Capability GroupNonUniformArithmetic Capability GroupNonUniformBallot Capability GroupNonUniformShuffle Capability GroupNonUniformShuffleRelative Capability GroupNonUniformClustered Capability GroupNonUniformQuad Capability FragmentShadingRateKHR Capability MeshShadingEXT Extension "SPV_EXT_mesh_shader" Extension "SPV_KHR_fragment_shading_rate" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshEXT 4 "main" 35 41 57 109 148 162 163 168 169 172 173 174 175 176 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 106 "gl_MeshPerPrimitiveEXT" MemberName 106(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID" MemberName 106(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" MemberName 106(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" Name 109 "gl_MeshPrimitivesEXT" Name 148 "gl_PrimitiveTriangleIndicesEXT" Name 162 "gl_SubgroupSize" Name 163 "gl_SubgroupInvocationID" Name 168 "gl_NumSubgroups" Name 169 "gl_SubgroupID" Name 172 "gl_SubgroupEqMask" Name 173 "gl_SubgroupGeMask" Name 174 "gl_SubgroupGtMask" Name 175 "gl_SubgroupLeMask" Name 176 "gl_SubgroupLtMask" Name 182 "ballot" Name 219 "ballot" Name 254 "ballot" Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId 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 54(gl_MeshPerVertexEXT) Block MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR Decorate 106(gl_MeshPerPrimitiveEXT) Block Decorate 148(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT Decorate 162(gl_SubgroupSize) RelaxedPrecision Decorate 162(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 163(gl_SubgroupInvocationID) RelaxedPrecision Decorate 163(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 168(gl_NumSubgroups) BuiltIn NumSubgroups Decorate 169(gl_SubgroupID) BuiltIn SubgroupId Decorate 172(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR Decorate 173(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR Decorate 174(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR Decorate 175(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR Decorate 176(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR Decorate 279 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 105: TypeBool 106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool) 59(int) 107: TypeArray 106(gl_MeshPerPrimitiveEXT) 47 108: TypePointer Output 107 109(gl_MeshPrimitivesEXT): 108(ptr) Variable Output 111: 59(int) Constant 6 112: TypePointer Output 59(int) 115: 59(int) Constant 7 118: 59(int) Constant 8 121: 105(bool) ConstantFalse 122: TypePointer Output 105(bool) 145: 30(int) Constant 96 146: TypeArray 33(ivec3) 145 147: TypePointer Output 146 148(gl_PrimitiveTriangleIndicesEXT): 147(ptr) Variable Output 149: 33(ivec3) ConstantComposite 78 78 78 150: TypePointer Output 33(ivec3) 154: 33(ivec3) ConstantComposite 80 80 80 162(gl_SubgroupSize): 37(ptr) Variable Input 163(gl_SubgroupInvocationID): 37(ptr) Variable Input 164: 30(int) Constant 3400 165: 30(int) Constant 72 166: 30(int) Constant 2056 168(gl_NumSubgroups): 37(ptr) Variable Input 169(gl_SubgroupID): 37(ptr) Variable Input 170: TypeVector 30(int) 4 171: TypePointer Input 170(ivec4) 172(gl_SubgroupEqMask): 171(ptr) Variable Input 173(gl_SubgroupGeMask): 171(ptr) Variable Input 174(gl_SubgroupGtMask): 171(ptr) Variable Input 175(gl_SubgroupLeMask): 171(ptr) Variable Input 176(gl_SubgroupLtMask): 171(ptr) Variable Input 181: TypePointer Function 170(ivec4) 184: 170(ivec4) ConstantComposite 78 78 78 78 198: 105(bool) ConstantTrue 255: 30(int) Constant 85 256: 170(ivec4) ConstantComposite 255 36 36 36 279: 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 81: 30(int) Load 32(iid) 82: 30(int) IAdd 81 78 83: 30(int) Load 32(iid) 84: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 83 60 85: 9(fvec4) Load 84 86: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 82 60 Store 86 85 87: 30(int) Load 32(iid) 88: 30(int) IAdd 87 78 89: 30(int) Load 32(iid) 90: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 89 66 91: 8(float) Load 90 92: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 88 66 Store 92 91 93: 30(int) Load 32(iid) 94: 30(int) IAdd 93 78 95: 30(int) Load 32(iid) 96: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 95 71 72 97: 8(float) Load 96 98: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 94 71 72 Store 98 97 99: 30(int) Load 32(iid) 100: 30(int) IAdd 99 78 101: 30(int) Load 32(iid) 102: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 101 72 71 103: 8(float) Load 102 104: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 100 72 71 Store 104 103 MemoryBarrier 78 79 ControlBarrier 80 80 79 110: 30(int) Load 32(iid) 113: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 110 60 Store 113 111 114: 30(int) Load 32(iid) 116: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 114 66 Store 116 115 117: 30(int) Load 32(iid) 119: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 117 71 Store 119 118 120: 30(int) Load 32(iid) 123: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 120 72 Store 123 121 MemoryBarrier 78 79 ControlBarrier 80 80 79 124: 30(int) Load 32(iid) 125: 30(int) IAdd 124 78 126: 30(int) Load 32(iid) 127: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 126 60 128: 59(int) Load 127 129: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 125 60 Store 129 128 130: 30(int) Load 32(iid) 131: 30(int) IAdd 130 78 132: 30(int) Load 32(iid) 133: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 132 66 134: 59(int) Load 133 135: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 131 66 Store 135 134 136: 30(int) Load 32(iid) 137: 30(int) IAdd 136 78 138: 30(int) Load 32(iid) 139: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 138 71 140: 59(int) Load 139 141: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 137 71 Store 141 140 142: 30(int) Load 32(iid) 143: 30(int) IAdd 142 78 144: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 143 72 Store 144 121 MemoryBarrier 78 79 ControlBarrier 80 80 79 151: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 60 Store 151 149 152: 30(int) Load 46(primitiveCount) 153: 30(int) ISub 152 78 155: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 153 Store 155 154 156: 30(int) Load 40(gid) 157: 30(int) Load 40(gid) 158: 30(int) ISub 157 78 159: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 158 160: 33(ivec3) Load 159 161: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 156 Store 161 160 MemoryBarrier 78 79 ControlBarrier 80 80 79 Return FunctionEnd 6(basic_works(): 2 Function None 3 7: Label ControlBarrier 52 52 164 MemoryBarrier 52 164 MemoryBarrier 52 165 MemoryBarrier 52 166 167: 105(bool) GroupNonUniformElect 52 MemoryBarrier 52 79 Return FunctionEnd 13(ballot_works(vf4;): 2 Function None 11 12(f4): 10(ptr) FunctionParameter 14: Label 182(ballot): 181(ptr) Variable Function 177: 9(fvec4) Load 12(f4) 178: 9(fvec4) GroupNonUniformBroadcast 52 177 36 179: 9(fvec4) Load 12(f4) 180: 9(fvec4) GroupNonUniformBroadcastFirst 52 179 183: 170(ivec4) GroupNonUniformBallot 52 121 Store 182(ballot) 183 185: 105(bool) GroupNonUniformInverseBallot 52 184 186: 170(ivec4) Load 182(ballot) 187: 105(bool) GroupNonUniformBallotBitExtract 52 186 36 188: 170(ivec4) Load 182(ballot) 189: 30(int) GroupNonUniformBallotBitCount 52 Reduce 188 190: 170(ivec4) Load 182(ballot) 191: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 190 192: 170(ivec4) Load 182(ballot) 193: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 192 194: 170(ivec4) Load 182(ballot) 195: 30(int) GroupNonUniformBallotFindLSB 52 194 196: 170(ivec4) Load 182(ballot) 197: 30(int) GroupNonUniformBallotFindMSB 52 196 Return FunctionEnd 16(vote_works(vf4;): 2 Function None 11 15(f4): 10(ptr) FunctionParameter 17: Label 199: 105(bool) GroupNonUniformAll 52 198 200: 105(bool) GroupNonUniformAny 52 121 201: 9(fvec4) Load 15(f4) 202: 105(bool) GroupNonUniformAllEqual 52 201 Return FunctionEnd 19(shuffle_works(vf4;): 2 Function None 11 18(f4): 10(ptr) FunctionParameter 20: Label 203: 9(fvec4) Load 18(f4) 204: 9(fvec4) GroupNonUniformShuffle 52 203 36 205: 9(fvec4) Load 18(f4) 206: 9(fvec4) GroupNonUniformShuffleXor 52 205 78 207: 9(fvec4) Load 18(f4) 208: 9(fvec4) GroupNonUniformShuffleUp 52 207 78 209: 9(fvec4) Load 18(f4) 210: 9(fvec4) GroupNonUniformShuffleDown 52 209 78 Return FunctionEnd 22(arith_works(vf4;): 2 Function None 11 21(f4): 10(ptr) FunctionParameter 23: Label 219(ballot): 181(ptr) Variable Function 211: 9(fvec4) Load 21(f4) 212: 9(fvec4) GroupNonUniformFAdd 52 Reduce 211 213: 9(fvec4) Load 21(f4) 214: 9(fvec4) GroupNonUniformFMul 52 Reduce 213 215: 9(fvec4) Load 21(f4) 216: 9(fvec4) GroupNonUniformFMin 52 Reduce 215 217: 9(fvec4) Load 21(f4) 218: 9(fvec4) GroupNonUniformFMax 52 Reduce 217 220: 170(ivec4) Load 219(ballot) 221: 170(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 220 222: 170(ivec4) Load 219(ballot) 223: 170(ivec4) GroupNonUniformBitwiseOr 52 Reduce 222 224: 170(ivec4) Load 219(ballot) 225: 170(ivec4) GroupNonUniformBitwiseXor 52 Reduce 224 226: 9(fvec4) Load 21(f4) 227: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 226 228: 9(fvec4) Load 21(f4) 229: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 228 230: 9(fvec4) Load 21(f4) 231: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 230 232: 9(fvec4) Load 21(f4) 233: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 232 234: 170(ivec4) Load 219(ballot) 235: 170(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 234 236: 170(ivec4) Load 219(ballot) 237: 170(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 236 238: 170(ivec4) Load 219(ballot) 239: 170(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 238 240: 9(fvec4) Load 21(f4) 241: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 240 242: 9(fvec4) Load 21(f4) 243: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 242 244: 9(fvec4) Load 21(f4) 245: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 244 246: 9(fvec4) Load 21(f4) 247: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 246 248: 170(ivec4) Load 219(ballot) 249: 170(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 248 250: 170(ivec4) Load 219(ballot) 251: 170(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 250 252: 170(ivec4) Load 219(ballot) 253: 170(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 252 Return FunctionEnd 25(clustered_works(vf4;): 2 Function None 11 24(f4): 10(ptr) FunctionParameter 26: Label 254(ballot): 181(ptr) Variable Function Store 254(ballot) 256 257: 9(fvec4) Load 24(f4) 258: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 257 80 259: 9(fvec4) Load 24(f4) 260: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 259 80 261: 9(fvec4) Load 24(f4) 262: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 261 80 263: 9(fvec4) Load 24(f4) 264: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 263 80 265: 170(ivec4) Load 254(ballot) 266: 170(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 265 80 267: 170(ivec4) Load 254(ballot) 268: 170(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 267 80 269: 170(ivec4) Load 254(ballot) 270: 170(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 269 80 Return FunctionEnd 28(quad_works(vf4;): 2 Function None 11 27(f4): 10(ptr) FunctionParameter 29: Label 271: 9(fvec4) Load 27(f4) 272: 9(fvec4) GroupNonUniformQuadBroadcast 52 271 36 273: 9(fvec4) Load 27(f4) 274: 9(fvec4) GroupNonUniformQuadSwap 52 273 36 275: 9(fvec4) Load 27(f4) 276: 9(fvec4) GroupNonUniformQuadSwap 52 275 78 277: 9(fvec4) Load 27(f4) 278: 9(fvec4) GroupNonUniformQuadSwap 52 277 80 Return FunctionEnd