spv.420.geom
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 72

                              Capability Geometry
                              Capability GeometryPointSize
                              Capability ImageGatherExtended
                              Capability GeometryStreams
                              Capability MultiViewport
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Geometry 4  "main" 14 23 28 33 46
                              ExecutionMode 4 Triangles
                              ExecutionMode 4 Invocations 4
                              ExecutionMode 4 OutputLineStrip
                              ExecutionMode 4 OutputVertices 127
                              Source GLSL 420
                              Name 4  "main"
                              Name 8  "p"
                              Name 9  "gl_PerVertex"
                              MemberName 9(gl_PerVertex) 0  "gl_PointSize"
                              Name 14  "gl_in"
                              Name 21  "gl_PerVertex"
                              MemberName 21(gl_PerVertex) 0  "gl_PointSize"
                              Name 23  ""
                              Name 28  "gl_ViewportIndex"
                              Name 31  "id"
                              Name 33  "gl_InvocationID"
                              Name 37  "v"
                              Name 41  "s2D"
                              Name 46  "coord"
                              Name 64  "i"
                              Name 67  "indexable"
                              MemberDecorate 9(gl_PerVertex) 0 BuiltIn PointSize
                              Decorate 9(gl_PerVertex) Block
                              MemberDecorate 21(gl_PerVertex) 0 BuiltIn PointSize
                              Decorate 21(gl_PerVertex) Block
                              Decorate 21(gl_PerVertex) Stream 0
                              Decorate 23 Stream 0
                              Decorate 28(gl_ViewportIndex) Stream 0
                              Decorate 28(gl_ViewportIndex) BuiltIn ViewportIndex
                              Decorate 33(gl_InvocationID) BuiltIn InvocationId
                              Decorate 41(s2D) DescriptorSet 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
 9(gl_PerVertex):             TypeStruct 6(float)
              10:             TypeInt 32 0
              11:     10(int) Constant 3
              12:             TypeArray 9(gl_PerVertex) 11
              13:             TypePointer Input 12
       14(gl_in):     13(ptr) Variable Input
              15:             TypeInt 32 1
              16:     15(int) Constant 1
              17:     15(int) Constant 0
              18:             TypePointer Input 6(float)
21(gl_PerVertex):             TypeStruct 6(float)
              22:             TypePointer Output 21(gl_PerVertex)
              23:     22(ptr) Variable Output
              25:             TypePointer Output 6(float)
              27:             TypePointer Output 15(int)
28(gl_ViewportIndex):     27(ptr) Variable Output
              29:     15(int) Constant 7
              30:             TypePointer Function 15(int)
              32:             TypePointer Input 15(int)
33(gl_InvocationID):     32(ptr) Variable Input
              35:             TypeVector 6(float) 4
              36:             TypePointer Function 35(fvec4)
              38:             TypeImage 6(float) 2D sampled format:Unknown
              39:             TypeSampledImage 38
              40:             TypePointer UniformConstant 39
         41(s2D):     40(ptr) Variable UniformConstant
              43:             TypeVector 6(float) 2
              44:             TypeArray 43(fvec2) 11
              45:             TypePointer Input 44
       46(coord):     45(ptr) Variable Input
              47:             TypePointer Input 43(fvec2)
              50:             TypeVector 15(int) 2
              51:     10(int) Constant 5
              52:             TypeArray 50(ivec2) 51
              53:   50(ivec2) ConstantComposite 17 16
              54:     15(int) Constant 4294967294
              55:   50(ivec2) ConstantComposite 16 54
              56:     15(int) Constant 3
              57:   50(ivec2) ConstantComposite 17 56
              58:     15(int) Constant 4294967293
              59:   50(ivec2) ConstantComposite 58 17
              60:     15(int) Constant 2
              61:   50(ivec2) ConstantComposite 60 16
              62:          52 ConstantComposite 53 55 57 59 61
              63:             TypePointer Private 15(int)
           64(i):     63(ptr) Variable Private
              66:             TypePointer Function 52
              68:             TypePointer Function 50(ivec2)
         4(main):           2 Function None 3
               5:             Label
            8(p):      7(ptr) Variable Function
          31(id):     30(ptr) Variable Function
           37(v):     36(ptr) Variable Function
   67(indexable):     66(ptr) Variable Function
              19:     18(ptr) AccessChain 14(gl_in) 16 17
              20:    6(float) Load 19
                              Store 8(p) 20
              24:    6(float) Load 8(p)
              26:     25(ptr) AccessChain 23 17
                              Store 26 24
                              Store 28(gl_ViewportIndex) 29
                              EmitStreamVertex 16
                              EndStreamPrimitive 17
                              EmitVertex
                              EndPrimitive
              34:     15(int) Load 33(gl_InvocationID)
                              Store 31(id) 34
              42:          39 Load 41(s2D)
              48:     47(ptr) AccessChain 46(coord) 17
              49:   43(fvec2) Load 48
              65:     15(int) Load 64(i)
                              Store 67(indexable) 62
              69:     68(ptr) AccessChain 67(indexable) 65
              70:   50(ivec2) Load 69
              71:   35(fvec4) ImageGather 42 49 17 Offset 70
                              Store 37(v) 71
                              Return
                              FunctionEnd
