spv.stereoViewRendering.tesc
error: SPIRV-Tools Validation Errors
error: When BuiltIn decoration is applied to a structure-type member, all members of that structure type must also be decorated with BuiltIn (No allowed mixing of built-in variables and non-built-in variables within a single structure). Structure id 27 does not meet this requirement.
  %gl_PerVertex_0 = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1 %v4float

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

                              Capability Geometry
                              Capability Tessellation
                              Capability ShaderViewportIndexLayerNV
                              Capability ShaderViewportMaskNV
                              Capability ShaderStereoViewNV
                              Extension  "SPV_EXT_shader_viewport_index_layer"
                              Extension  "SPV_NV_stereo_view_rendering"
                              Extension  "SPV_NV_viewport_array2"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint TessellationControl 4  "main" 16 18 31 37
                              ExecutionMode 4 OutputVertices 4
                              Source GLSL 450
                              SourceExtension  "GL_NV_stereo_view_rendering"
                              SourceExtension  "GL_NV_viewport_array2"
                              Name 4  "main"
                              Name 12  "gl_PerVertex"
                              MemberName 12(gl_PerVertex) 0  "gl_SecondaryPositionNV"
                              MemberName 12(gl_PerVertex) 1  "gl_SecondaryViewportMaskNV"
                              Name 16  "gl_out"
                              Name 18  "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) 4  "gl_SecondaryPositionNV"
                              Name 31  "gl_in"
                              Name 37  "gl_Layer"
                              MemberDecorate 12(gl_PerVertex) 0 BuiltIn SecondaryPositionNV
                              MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryViewportMaskNV
                              Decorate 12(gl_PerVertex) Block
                              Decorate 18(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
                              Decorate 37(gl_Layer) BuiltIn Layer
                              Decorate 37(gl_Layer) ViewportRelativeNV
                              Decorate 37(gl_Layer) SecondaryViewportRelativeNV 1
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeInt 32 1
               9:             TypeInt 32 0
              10:      9(int) Constant 2
              11:             TypeArray 8(int) 10
12(gl_PerVertex):             TypeStruct 7(fvec4) 11
              13:      9(int) Constant 4
              14:             TypeArray 12(gl_PerVertex) 13
              15:             TypePointer Output 14
      16(gl_out):     15(ptr) Variable Output
              17:             TypePointer Input 8(int)
18(gl_InvocationID):     17(ptr) Variable Input
              20:      8(int) Constant 1
              21:      8(int) Constant 0
              22:             TypePointer Output 8(int)
              25:      9(int) Constant 1
              26:             TypeArray 6(float) 25
27(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 26 26 7(fvec4)
              28:      9(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)
    37(gl_Layer):     22(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              19:      8(int) Load 18(gl_InvocationID)
              23:     22(ptr) AccessChain 16(gl_out) 19 20 21
                              Store 23 20
              24:      8(int) Load 18(gl_InvocationID)
              33:     32(ptr) AccessChain 31(gl_in) 20 21
              34:    7(fvec4) Load 33
              36:     35(ptr) AccessChain 16(gl_out) 24 21
                              Store 36 34
                              Return
                              FunctionEnd
