spv.450.tesc
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.


Linked tessellation control stage:


// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 23

                              Capability Tessellation
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationControl 4  "main" 9 16 19 22
                              ExecutionMode 4 OutputVertices 4
                              Source GLSL 450
                              Name 4  "main"
                              Name 9  "patchOut"
                              Name 10  "S"
                              MemberName 10(S) 0  "sMem1"
                              MemberName 10(S) 1  "sMem2"
                              Name 11  "TheBlock"
                              MemberName 11(TheBlock) 0  "bMem1"
                              MemberName 11(TheBlock) 1  "bMem2"
                              MemberName 11(TheBlock) 2  "s"
                              Name 16  "tcBlock"
                              Name 17  "SingleBlock"
                              MemberName 17(SingleBlock) 0  "bMem1"
                              MemberName 17(SingleBlock) 1  "bMem2"
                              MemberName 17(SingleBlock) 2  "s"
                              Name 19  "singleBlock"
                              Name 20  "bn"
                              MemberName 20(bn) 0  "v1"
                              MemberName 20(bn) 1  "v2"
                              MemberName 20(bn) 2  "v3"
                              Name 22  ""
                              Decorate 9(patchOut) Patch
                              MemberDecorate 11(TheBlock) 0 Patch
                              MemberDecorate 11(TheBlock) 1 Patch
                              MemberDecorate 11(TheBlock) 2 Patch
                              Decorate 11(TheBlock) Block
                              Decorate 16(tcBlock) Location 12
                              MemberDecorate 17(SingleBlock) 0 Patch
                              MemberDecorate 17(SingleBlock) 0 Location 2
                              MemberDecorate 17(SingleBlock) 1 Patch
                              MemberDecorate 17(SingleBlock) 1 Location 3
                              MemberDecorate 17(SingleBlock) 2 Patch
                              MemberDecorate 17(SingleBlock) 2 Location 4
                              Decorate 17(SingleBlock) Block
                              Decorate 19(singleBlock) Location 2
                              MemberDecorate 20(bn) 0 Patch
                              MemberDecorate 20(bn) 0 Location 20
                              MemberDecorate 20(bn) 0 Component 0
                              MemberDecorate 20(bn) 1 Patch
                              MemberDecorate 20(bn) 1 Location 24
                              MemberDecorate 20(bn) 2 Patch
                              MemberDecorate 20(bn) 2 Location 25
                              MemberDecorate 20(bn) 2 Component 0
                              Decorate 20(bn) Block
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Output 7(fvec4)
     9(patchOut):      8(ptr) Variable Output
           10(S):             TypeStruct 6(float) 6(float)
    11(TheBlock):             TypeStruct 6(float) 6(float) 10(S)
              12:             TypeInt 32 0
              13:     12(int) Constant 2
              14:             TypeArray 11(TheBlock) 13
              15:             TypePointer Output 14
     16(tcBlock):     15(ptr) Variable Output
 17(SingleBlock):             TypeStruct 6(float) 6(float) 10(S)
              18:             TypePointer Output 17(SingleBlock)
 19(singleBlock):     18(ptr) Variable Output
          20(bn):             TypeStruct 7(fvec4) 7(fvec4) 7(fvec4)
              21:             TypePointer Output 20(bn)
              22:     21(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
                              Return
                              FunctionEnd
