spv.set.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 22

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 9
                              Source GLSL 450
                              Name 4  "main"
                              Name 9  "color"
                              Name 10  "setBuf"
                              MemberName 10(setBuf) 0  "color"
                              Name 12  "setBufInst"
                              Name 21  "samp2D"
                              MemberDecorate 10(setBuf) 0 Offset 0
                              Decorate 10(setBuf) BufferBlock
                              Decorate 12(setBufInst) DescriptorSet 0
                              Decorate 12(setBufInst) Binding 8
                              Decorate 21(samp2D) DescriptorSet 4
                              Decorate 21(samp2D) Binding 7
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Output 7(fvec4)
        9(color):      8(ptr) Variable Output
      10(setBuf):             TypeStruct 7(fvec4)
              11:             TypePointer Uniform 10(setBuf)
  12(setBufInst):     11(ptr) Variable Uniform
              13:             TypeInt 32 1
              14:     13(int) Constant 0
              15:             TypePointer Uniform 7(fvec4)
              18:             TypeImage 6(float) 2D sampled format:Unknown
              19:             TypeSampledImage 18
              20:             TypePointer UniformConstant 19
      21(samp2D):     20(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
              16:     15(ptr) AccessChain 12(setBufInst) 14
              17:    7(fvec4) Load 16
                              Store 9(color) 17
                              Return
                              FunctionEnd
