spv.460.subgroupEXT.mesh // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 279 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 147 161 162 167 168 171 172 173 174 175 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 147 "gl_PrimitiveTriangleIndicesEXT" Name 161 "gl_SubgroupSize" Name 162 "gl_SubgroupInvocationID" Name 167 "gl_NumSubgroups" Name 168 "gl_SubgroupID" Name 171 "gl_SubgroupEqMask" Name 172 "gl_SubgroupGeMask" Name 173 "gl_SubgroupGtMask" Name 174 "gl_SubgroupLeMask" Name 175 "gl_SubgroupLtMask" Name 181 "ballot" Name 218 "ballot" Name 253 "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 147(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT Decorate 161(gl_SubgroupSize) RelaxedPrecision Decorate 161(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 162(gl_SubgroupInvocationID) RelaxedPrecision Decorate 162(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 167(gl_NumSubgroups) BuiltIn NumSubgroups Decorate 168(gl_SubgroupID) BuiltIn SubgroupId Decorate 171(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR Decorate 172(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR Decorate 173(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR Decorate 174(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR Decorate 175(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR Decorate 278 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: TypeArray 33(ivec3) 47 146: TypePointer Output 145 147(gl_PrimitiveTriangleIndicesEXT): 146(ptr) Variable Output 148: 33(ivec3) ConstantComposite 78 78 78 149: TypePointer Output 33(ivec3) 153: 33(ivec3) ConstantComposite 80 80 80 161(gl_SubgroupSize): 37(ptr) Variable Input 162(gl_SubgroupInvocationID): 37(ptr) Variable Input 163: 30(int) Constant 3400 164: 30(int) Constant 72 165: 30(int) Constant 2056 167(gl_NumSubgroups): 37(ptr) Variable Input 168(gl_SubgroupID): 37(ptr) Variable Input 169: TypeVector 30(int) 4 170: TypePointer Input 169(ivec4) 171(gl_SubgroupEqMask): 170(ptr) Variable Input 172(gl_SubgroupGeMask): 170(ptr) Variable Input 173(gl_SubgroupGtMask): 170(ptr) Variable Input 174(gl_SubgroupLeMask): 170(ptr) Variable Input 175(gl_SubgroupLtMask): 170(ptr) Variable Input 180: TypePointer Function 169(ivec4) 183: 169(ivec4) ConstantComposite 78 78 78 78 197: 105(bool) ConstantTrue 254: 30(int) Constant 85 255: 169(ivec4) ConstantComposite 254 36 36 36 278: 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 150: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 60 Store 150 148 151: 30(int) Load 46(primitiveCount) 152: 30(int) ISub 151 78 154: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 152 Store 154 153 155: 30(int) Load 40(gid) 156: 30(int) Load 40(gid) 157: 30(int) ISub 156 78 158: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 157 159: 33(ivec3) Load 158 160: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 155 Store 160 159 MemoryBarrier 78 79 ControlBarrier 80 80 79 Return FunctionEnd 6(basic_works(): 2 Function None 3 7: Label ControlBarrier 52 52 163 MemoryBarrier 52 163 MemoryBarrier 52 164 MemoryBarrier 52 165 166: 105(bool) GroupNonUniformElect 52 MemoryBarrier 52 79 Return FunctionEnd 13(ballot_works(vf4;): 2 Function None 11 12(f4): 10(ptr) FunctionParameter 14: Label 181(ballot): 180(ptr) Variable Function 176: 9(fvec4) Load 12(f4) 177: 9(fvec4) GroupNonUniformBroadcast 52 176 36 178: 9(fvec4) Load 12(f4) 179: 9(fvec4) GroupNonUniformBroadcastFirst 52 178 182: 169(ivec4) GroupNonUniformBallot 52 121 Store 181(ballot) 182 184: 105(bool) GroupNonUniformInverseBallot 52 183 185: 169(ivec4) Load 181(ballot) 186: 105(bool) GroupNonUniformBallotBitExtract 52 185 36 187: 169(ivec4) Load 181(ballot) 188: 30(int) GroupNonUniformBallotBitCount 52 Reduce 187 189: 169(ivec4) Load 181(ballot) 190: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 189 191: 169(ivec4) Load 181(ballot) 192: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 191 193: 169(ivec4) Load 181(ballot) 194: 30(int) GroupNonUniformBallotFindLSB 52 193 195: 169(ivec4) Load 181(ballot) 196: 30(int) GroupNonUniformBallotFindMSB 52 195 Return FunctionEnd 16(vote_works(vf4;): 2 Function None 11 15(f4): 10(ptr) FunctionParameter 17: Label 198: 105(bool) GroupNonUniformAll 52 197 199: 105(bool) GroupNonUniformAny 52 121 200: 9(fvec4) Load 15(f4) 201: 105(bool) GroupNonUniformAllEqual 52 200 Return FunctionEnd 19(shuffle_works(vf4;): 2 Function None 11 18(f4): 10(ptr) FunctionParameter 20: Label 202: 9(fvec4) Load 18(f4) 203: 9(fvec4) GroupNonUniformShuffle 52 202 36 204: 9(fvec4) Load 18(f4) 205: 9(fvec4) GroupNonUniformShuffleXor 52 204 78 206: 9(fvec4) Load 18(f4) 207: 9(fvec4) GroupNonUniformShuffleUp 52 206 78 208: 9(fvec4) Load 18(f4) 209: 9(fvec4) GroupNonUniformShuffleDown 52 208 78 Return FunctionEnd 22(arith_works(vf4;): 2 Function None 11 21(f4): 10(ptr) FunctionParameter 23: Label 218(ballot): 180(ptr) Variable Function 210: 9(fvec4) Load 21(f4) 211: 9(fvec4) GroupNonUniformFAdd 52 Reduce 210 212: 9(fvec4) Load 21(f4) 213: 9(fvec4) GroupNonUniformFMul 52 Reduce 212 214: 9(fvec4) Load 21(f4) 215: 9(fvec4) GroupNonUniformFMin 52 Reduce 214 216: 9(fvec4) Load 21(f4) 217: 9(fvec4) GroupNonUniformFMax 52 Reduce 216 219: 169(ivec4) Load 218(ballot) 220: 169(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 219 221: 169(ivec4) Load 218(ballot) 222: 169(ivec4) GroupNonUniformBitwiseOr 52 Reduce 221 223: 169(ivec4) Load 218(ballot) 224: 169(ivec4) GroupNonUniformBitwiseXor 52 Reduce 223 225: 9(fvec4) Load 21(f4) 226: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 225 227: 9(fvec4) Load 21(f4) 228: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 227 229: 9(fvec4) Load 21(f4) 230: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 229 231: 9(fvec4) Load 21(f4) 232: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 231 233: 169(ivec4) Load 218(ballot) 234: 169(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 233 235: 169(ivec4) Load 218(ballot) 236: 169(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 235 237: 169(ivec4) Load 218(ballot) 238: 169(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 237 239: 9(fvec4) Load 21(f4) 240: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 239 241: 9(fvec4) Load 21(f4) 242: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 241 243: 9(fvec4) Load 21(f4) 244: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 243 245: 9(fvec4) Load 21(f4) 246: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 245 247: 169(ivec4) Load 218(ballot) 248: 169(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 247 249: 169(ivec4) Load 218(ballot) 250: 169(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 249 251: 169(ivec4) Load 218(ballot) 252: 169(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 251 Return FunctionEnd 25(clustered_works(vf4;): 2 Function None 11 24(f4): 10(ptr) FunctionParameter 26: Label 253(ballot): 180(ptr) Variable Function Store 253(ballot) 255 256: 9(fvec4) Load 24(f4) 257: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 256 80 258: 9(fvec4) Load 24(f4) 259: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 258 80 260: 9(fvec4) Load 24(f4) 261: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 260 80 262: 9(fvec4) Load 24(f4) 263: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 262 80 264: 169(ivec4) Load 253(ballot) 265: 169(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 264 80 266: 169(ivec4) Load 253(ballot) 267: 169(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 266 80 268: 169(ivec4) Load 253(ballot) 269: 169(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 268 80 Return FunctionEnd 28(quad_works(vf4;): 2 Function None 11 27(f4): 10(ptr) FunctionParameter 29: Label 270: 9(fvec4) Load 27(f4) 271: 9(fvec4) GroupNonUniformQuadBroadcast 52 270 36 272: 9(fvec4) Load 27(f4) 273: 9(fvec4) GroupNonUniformQuadSwap 52 272 36 274: 9(fvec4) Load 27(f4) 275: 9(fvec4) GroupNonUniformQuadSwap 52 274 78 276: 9(fvec4) Load 27(f4) 277: 9(fvec4) GroupNonUniformQuadSwap 52 276 80 Return FunctionEnd