spv.multiviewPerViewAttributes.tesc
// Module Version 10000
// Generated by (magic number): 80005
// Id's are bound by 37

                              Capability Tessellation
                              Capability PerViewAttributesNV
                              Extension  "SPV_NVX_multiview_per_view_attributes"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationControl 4  "main" 17 19 31
                              ExecutionMode 4 OutputVertices 4
                              Source GLSL 450
                              SourceExtension  "GL_NVX_multiview_per_view_attributes"
                              Name 4  "main"
                              Name 13  "gl_PerVertex"
                              MemberName 13(gl_PerVertex) 0  "gl_PositionPerViewNV"
                              MemberName 13(gl_PerVertex) 1  "gl_ViewportMaskPerViewNV"
                              Name 17  "gl_out"
                              Name 19  "gl_InvocationID"
                              Name 27  "gl_PerVertex"
                              MemberName 27(gl_PerVertex) 0  "gl_Position"
                              MemberName 27(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 27(gl_PerVertex) 2  "gl_ClipDistance"
                              MemberName 27(gl_PerVertex) 3  "gl_CullDistance"
                              MemberName 27(gl_PerVertex) 5  "gl_PositionPerViewNV"
                              Name 31  "gl_in"
                              MemberDecorate 13(gl_PerVertex) 0 BuiltIn PositionPerViewNV
                              MemberDecorate 13(gl_PerVertex) 1 BuiltIn ViewportMaskPerViewNV
                              Decorate 13(gl_PerVertex) Block
                              Decorate 19(gl_InvocationID) BuiltIn InvocationId
                              MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance
                              MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance
                              Decorate 27(gl_PerVertex) Block
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeInt 32 0
               9:      8(int) Constant 1
              10:             TypeArray 7(fvec4) 9
              11:             TypeInt 32 1
              12:             TypeArray 11(int) 9
13(gl_PerVertex):             TypeStruct 10 12
              14:      8(int) Constant 4
              15:             TypeArray 13(gl_PerVertex) 14
              16:             TypePointer Output 15
      17(gl_out):     16(ptr) Variable Output
              18:             TypePointer Input 11(int)
19(gl_InvocationID):     18(ptr) Variable Input
              21:     11(int) Constant 1
              22:     11(int) Constant 0
              23:             TypePointer Output 11(int)
              26:             TypeArray 6(float) 9
27(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 26 26 10
              28:      8(int) Constant 32
              29:             TypeArray 27(gl_PerVertex) 28
              30:             TypePointer Input 29
       31(gl_in):     30(ptr) Variable Input
              32:             TypePointer Input 7(fvec4)
              35:             TypePointer Output 7(fvec4)
         4(main):           2 Function None 3
               5:             Label
              20:     11(int) Load 19(gl_InvocationID)
              24:     23(ptr) AccessChain 17(gl_out) 20 21 22
                              Store 24 21
              25:     11(int) Load 19(gl_InvocationID)
              33:     32(ptr) AccessChain 31(gl_in) 21 22
              34:    7(fvec4) Load 33
              36:     35(ptr) AccessChain 17(gl_out) 25 22 22
                              Store 36 34
                              Return
                              FunctionEnd
