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


Linked vertex stage:


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

                              Capability Shader
                              Capability ClipDistance
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 12 23 34 38 41 42 62 65
                              Source GLSL 450
                              Name 4  "main"
                              Name 10  "gl_PerVertex"
                              MemberName 10(gl_PerVertex) 0  "gl_ClipDistance"
                              Name 12  ""
                              Name 23  "bad"
                              Name 34  "badorder3"
                              Name 38  "f"
                              Name 41  "badorder"
                              Name 42  "badorder2"
                              Name 43  "boundblock"
                              MemberName 43(boundblock) 0  "aoeu"
                              Name 45  "boundInst"
                              Name 46  "anonblock"
                              MemberName 46(anonblock) 0  "aoeu"
                              Name 48  ""
                              Name 52  "sampb1"
                              Name 55  "sampb2"
                              Name 56  "sampb4"
                              Name 59  "S"
                              MemberName 59(S) 0  "a"
                              MemberName 59(S) 1  "b"
                              MemberName 59(S) 2  "c"
                              Name 60  "SS"
                              MemberName 60(SS) 0  "b"
                              MemberName 60(SS) 1  "s"
                              MemberName 60(SS) 2  "c"
                              Name 62  "var"
                              Name 63  "MS"
                              MemberName 63(MS) 0  "f"
                              Name 65  "outMS"
                              MemberDecorate 10(gl_PerVertex) 0 BuiltIn ClipDistance
                              Decorate 10(gl_PerVertex) Block
                              Decorate 34(badorder3) Flat
                              Decorate 42(badorder2) Invariant
                              MemberDecorate 43(boundblock) 0 Offset 0
                              Decorate 43(boundblock) Block
                              Decorate 45(boundInst) DescriptorSet 0
                              Decorate 45(boundInst) Binding 3
                              MemberDecorate 46(anonblock) 0 Offset 0
                              Decorate 46(anonblock) Block
                              Decorate 48 DescriptorSet 0
                              Decorate 48 Binding 7
                              Decorate 52(sampb1) DescriptorSet 0
                              Decorate 52(sampb1) Binding 4
                              Decorate 55(sampb2) DescriptorSet 0
                              Decorate 55(sampb2) Binding 5
                              Decorate 56(sampb4) DescriptorSet 0
                              Decorate 56(sampb4) Binding 31
                              MemberDecorate 59(S) 0 RelaxedPrecision
                              Decorate 62(var) Flat
                              Decorate 62(var) Location 0
                              MemberDecorate 63(MS) 0 Location 17
                              Decorate 63(MS) Block
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeInt 32 0
               8:      7(int) Constant 3
               9:             TypeArray 6(float) 8
10(gl_PerVertex):             TypeStruct 9
              11:             TypePointer Output 10(gl_PerVertex)
              12:     11(ptr) Variable Output
              13:             TypeInt 32 1
              14:     13(int) Constant 0
              15:     13(int) Constant 2
              16:    6(float) Constant 1080872141
              17:             TypePointer Output 6(float)
              19:             TypeVector 6(float) 4
              20:      7(int) Constant 10
              21:             TypeArray 19(fvec4) 20
              22:             TypePointer Input 21
         23(bad):     22(ptr) Variable Input
              24:      7(int) Constant 0
              25:             TypePointer Input 6(float)
              28:    6(float) Constant 1082549862
              29:             TypeBool
              33:             TypePointer Output 19(fvec4)
   34(badorder3):     33(ptr) Variable Output
              35:             TypePointer Input 19(fvec4)
           38(f):     25(ptr) Variable Input
    41(badorder):     35(ptr) Variable Input
   42(badorder2):     33(ptr) Variable Output
  43(boundblock):             TypeStruct 13(int)
              44:             TypePointer Uniform 43(boundblock)
   45(boundInst):     44(ptr) Variable Uniform
   46(anonblock):             TypeStruct 13(int)
              47:             TypePointer Uniform 46(anonblock)
              48:     47(ptr) Variable Uniform
              49:             TypeImage 6(float) 2D sampled format:Unknown
              50:             TypeSampledImage 49
              51:             TypePointer UniformConstant 50
      52(sampb1):     51(ptr) Variable UniformConstant
              53:             TypeArray 50 20
              54:             TypePointer UniformConstant 53
      55(sampb2):     54(ptr) Variable UniformConstant
      56(sampb4):     51(ptr) Variable UniformConstant
              57:             TypeVector 7(int) 2
              58:             TypeVector 6(float) 3
           59(S):             TypeStruct 6(float) 57(ivec2) 58(fvec3)
          60(SS):             TypeStruct 19(fvec4) 59(S) 19(fvec4)
              61:             TypePointer Output 60(SS)
         62(var):     61(ptr) Variable Output
          63(MS):             TypeStruct 6(float)
              64:             TypePointer Output 63(MS)
       65(outMS):     64(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              18:     17(ptr) AccessChain 12 14 15
                              Store 18 16
              26:     25(ptr) AccessChain 23(bad) 14 24
              27:    6(float) Load 26
              30:    29(bool) FOrdEqual 27 28
                              SelectionMerge 32 None
                              BranchConditional 30 31 32
              31:               Label
              36:     35(ptr)   AccessChain 23(bad) 14
              37:   19(fvec4)   Load 36
                                Store 34(badorder3) 37
                                Branch 32
              32:             Label
              39:    6(float) Load 38(f)
              40:     17(ptr) AccessChain 12 14 14
                              Store 40 39
                              Return
                              FunctionEnd
