hlsl.layout.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:15  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:12    Function Parameters: 
0:12      'input' (in 4-component vector of float)
0:?     Sequence
0:13      Branch: Return with expression
0:13        add (temp 4-component vector of float)
0:13          add (temp 4-component vector of float)
0:13            'input' (in 4-component vector of float)
0:13            v1: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
0:13              'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
0:13              Constant:
0:13                0 (const uint)
0:13          v5: direct index for structure (layout(column_major std430 offset=0 ) buffer 4-component vector of float)
0:13            'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
0:13            Constant:
0:13              0 (const uint)
0:?   Linker Objects
0:?     'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
0:?     'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
0:?     'specConst' (specialization-constant const int)
0:?       10 (const int)


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:15  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:12    Function Parameters: 
0:12      'input' (in 4-component vector of float)
0:?     Sequence
0:13      Branch: Return with expression
0:13        add (temp 4-component vector of float)
0:13          add (temp 4-component vector of float)
0:13            'input' (in 4-component vector of float)
0:13            v1: direct index for structure (layout(column_major std430 offset=16 ) buffer 4-component vector of float)
0:13              'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
0:13              Constant:
0:13                0 (const uint)
0:13          v5: direct index for structure (layout(column_major std430 offset=0 ) buffer 4-component vector of float)
0:13            'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
0:13            Constant:
0:13              0 (const uint)
0:?   Linker Objects
0:?     'anon@0' (layout(set=3 binding=5 column_major std430 ) buffer block{layout(column_major std430 offset=16 ) buffer 4-component vector of float v1})
0:?     'anon@1' (layout(column_major std430 push_constant ) buffer block{layout(column_major std430 offset=0 ) buffer 4-component vector of float v5})
0:?     'specConst' (specialization-constant const int)
0:?       10 (const int)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginUpperLeft
                              Name 4  "main"
                              Name 11  "PixelShaderFunction(vf4;"
                              Name 10  "input"
                              Name 14  ""
                              MemberName 14 0  "v1"
                              Name 16  ""
                              Name 23  ""
                              MemberName 23 0  "v5"
                              Name 25  ""
                              MemberDecorate 14 0 Offset 16
                              Decorate 14 BufferBlock
                              Decorate 16 DescriptorSet 3
                              Decorate 16 Binding 5
                              MemberDecorate 23 0 Offset 0
                              Decorate 23 BufferBlock
                              Decorate 32 SpecId 17
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
               9:             TypeFunction 7(fvec4) 8(ptr)
              14:             TypeStruct 7(fvec4)
              15:             TypePointer Uniform 14(struct)
              16:     15(ptr) Variable Uniform
              17:             TypeInt 32 1
              18:     17(int) Constant 0
              19:             TypePointer Uniform 7(fvec4)
              23:             TypeStruct 7(fvec4)
              24:             TypePointer PushConstant 23(struct)
              25:     24(ptr) Variable PushConstant
              26:             TypePointer PushConstant 7(fvec4)
              32:     17(int) SpecConstant 10
         4(main):           2 Function None 3
               5:             Label
                              FunctionEnd
11(PixelShaderFunction(vf4;):    7(fvec4) Function None 9
       10(input):      8(ptr) FunctionParameter
              12:             Label
              13:    7(fvec4) Load 10(input)
              20:     19(ptr) AccessChain 16 18
              21:    7(fvec4) Load 20
              22:    7(fvec4) FAdd 13 21
              27:     26(ptr) AccessChain 25 18
              28:    7(fvec4) Load 27
              29:    7(fvec4) FAdd 22 28
                              ReturnValue 29
                              FunctionEnd
