spv.450.tesc
Validation failed
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 45

                              Capability Tessellation
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationControl 4  "main" 15 18 25 32 38 41 44
                              ExecutionMode 4 OutputVertices 4
                              Source GLSL 450
                              Name 4  "main"
                              Name 11  "gl_PerVertex"
                              MemberName 11(gl_PerVertex) 0  "gl_Position"
                              MemberName 11(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 11(gl_PerVertex) 2  "gl_ClipDistance"
                              MemberName 11(gl_PerVertex) 3  "gl_CullDistance"
                              Name 15  "gl_out"
                              Name 18  "gl_InvocationID"
                              Name 21  "gl_PerVertex"
                              MemberName 21(gl_PerVertex) 0  "gl_Position"
                              MemberName 21(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 21(gl_PerVertex) 2  "gl_ClipDistance"
                              MemberName 21(gl_PerVertex) 3  "gl_CullDistance"
                              Name 25  "gl_in"
                              Name 32  "patchOut"
                              Name 33  "S"
                              MemberName 33(S) 0  "sMem1"
                              MemberName 33(S) 1  "sMem2"
                              Name 34  "TheBlock"
                              MemberName 34(TheBlock) 0  "bMem1"
                              MemberName 34(TheBlock) 1  "bMem2"
                              MemberName 34(TheBlock) 2  "s"
                              Name 38  "tcBlock"
                              Name 39  "SingleBlock"
                              MemberName 39(SingleBlock) 0  "bMem1"
                              MemberName 39(SingleBlock) 1  "bMem2"
                              MemberName 39(SingleBlock) 2  "s"
                              Name 41  "singleBlock"
                              Name 42  "bn"
                              MemberName 42(bn) 0  "v1"
                              MemberName 42(bn) 1  "v2"
                              MemberName 42(bn) 2  "v3"
                              Name 44  ""
                              MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
                              MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
                              Decorate 11(gl_PerVertex) Block
                              Decorate 18(gl_InvocationID) BuiltIn InvocationId
                              MemberDecorate 21(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 21(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 21(gl_PerVertex) 2 BuiltIn ClipDistance
                              MemberDecorate 21(gl_PerVertex) 3 BuiltIn CullDistance
                              Decorate 21(gl_PerVertex) Block
                              Decorate 32(patchOut) Patch
                              Decorate 32(patchOut) Location 1
                              MemberDecorate 34(TheBlock) 0 Patch
                              MemberDecorate 34(TheBlock) 1 Patch
                              MemberDecorate 34(TheBlock) 2 Patch
                              Decorate 34(TheBlock) Block
                              Decorate 38(tcBlock) Location 12
                              MemberDecorate 39(SingleBlock) 0 Patch
                              MemberDecorate 39(SingleBlock) 1 Patch
                              MemberDecorate 39(SingleBlock) 2 Patch
                              Decorate 39(SingleBlock) Block
                              Decorate 41(singleBlock) Location 2
                              MemberDecorate 42(bn) 0 Patch
                              MemberDecorate 42(bn) 0 Location 20
                              MemberDecorate 42(bn) 1 Patch
                              MemberDecorate 42(bn) 1 Location 24
                              MemberDecorate 42(bn) 2 Patch
                              MemberDecorate 42(bn) 2 Location 25
                              Decorate 42(bn) Block
                              Decorate 44 Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeInt 32 0
               9:      8(int) Constant 1
              10:             TypeArray 6(float) 9
11(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 10 10
              12:      8(int) Constant 4
              13:             TypeArray 11(gl_PerVertex) 12
              14:             TypePointer Output 13
      15(gl_out):     14(ptr) Variable Output
              16:             TypeInt 32 1
              17:             TypePointer Input 16(int)
18(gl_InvocationID):     17(ptr) Variable Input
              20:     16(int) Constant 0
21(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 10 10
              22:      8(int) Constant 32
              23:             TypeArray 21(gl_PerVertex) 22
              24:             TypePointer Input 23
       25(gl_in):     24(ptr) Variable Input
              27:             TypePointer Input 7(fvec4)
              30:             TypePointer Output 7(fvec4)
    32(patchOut):     30(ptr) Variable Output
           33(S):             TypeStruct 6(float) 6(float)
    34(TheBlock):             TypeStruct 6(float) 6(float) 33(S)
              35:      8(int) Constant 2
              36:             TypeArray 34(TheBlock) 35
              37:             TypePointer Output 36
     38(tcBlock):     37(ptr) Variable Output
 39(SingleBlock):             TypeStruct 6(float) 6(float) 33(S)
              40:             TypePointer Output 39(SingleBlock)
 41(singleBlock):     40(ptr) Variable Output
          42(bn):             TypeStruct 7(fvec4) 7(fvec4) 7(fvec4)
              43:             TypePointer Output 42(bn)
              44:     43(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              19:     16(int) Load 18(gl_InvocationID)
              26:     16(int) Load 18(gl_InvocationID)
              28:     27(ptr) AccessChain 25(gl_in) 26 20
              29:    7(fvec4) Load 28
              31:     30(ptr) AccessChain 15(gl_out) 19 20
                              Store 31 29
                              Return
                              FunctionEnd
