hlsl.attributeC11.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20  Function Definition: @main(vf4; ( temp 4-component vector of float)
0:20    Function Parameters: 
0:20      'input' ( in 4-component vector of float)
0:?     Sequence
0:21      Branch: Return with expression
0:21        add ( temp 4-component vector of float)
0:21          'input' ( in 4-component vector of float)
0:21          textureFetch ( temp 4-component vector of float)
0:21            'attach' ( uniform texture2D)
0:21            vector swizzle ( temp int)
0:21              Constant:
0:21                0 (const int)
0:21                0 (const int)
0:21              Sequence
0:21                Constant:
0:21                  0 (const int)
0:21            direct index ( temp int)
0:21              Constant:
0:21                0 (const int)
0:21                0 (const int)
0:21              Constant:
0:21                1 (const int)
0:20  Function Definition: main( ( temp void)
0:20    Function Parameters: 
0:?     Sequence
0:20      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' (layout( location=8) in 4-component vector of float)
0:20      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=7) out 4-component vector of float)
0:20        Function Call: @main(vf4; ( temp 4-component vector of float)
0:?           'input' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'buffer1' (layout( set=0 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 2-component vector of float f} @data})
0:?     'buffer3' (layout( set=2 binding=3 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 2-component vector of float f} @data})
0:?     'attach' ( uniform texture2D)
0:?     'ci' ( specialization-constant const int)
0:?       11 (const int)
0:?     'anon@0' (layout( row_major std430 push_constant) uniform block{layout( row_major std430 offset=0) uniform int a})
0:?     '@entryPointOutput' (layout( location=7) out 4-component vector of float)
0:?     'input' (layout( location=8) in 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20  Function Definition: @main(vf4; ( temp 4-component vector of float)
0:20    Function Parameters: 
0:20      'input' ( in 4-component vector of float)
0:?     Sequence
0:21      Branch: Return with expression
0:21        add ( temp 4-component vector of float)
0:21          'input' ( in 4-component vector of float)
0:21          textureFetch ( temp 4-component vector of float)
0:21            'attach' ( uniform texture2D)
0:21            vector swizzle ( temp int)
0:21              Constant:
0:21                0 (const int)
0:21                0 (const int)
0:21              Sequence
0:21                Constant:
0:21                  0 (const int)
0:21            direct index ( temp int)
0:21              Constant:
0:21                0 (const int)
0:21                0 (const int)
0:21              Constant:
0:21                1 (const int)
0:20  Function Definition: main( ( temp void)
0:20    Function Parameters: 
0:?     Sequence
0:20      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' (layout( location=8) in 4-component vector of float)
0:20      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=7) out 4-component vector of float)
0:20        Function Call: @main(vf4; ( temp 4-component vector of float)
0:?           'input' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'buffer1' (layout( set=0 binding=1 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 2-component vector of float f} @data})
0:?     'buffer3' (layout( set=2 binding=3 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 2-component vector of float f} @data})
0:?     'attach' ( uniform texture2D)
0:?     'ci' ( specialization-constant const int)
0:?       11 (const int)
0:?     'anon@0' (layout( row_major std430 push_constant) uniform block{layout( row_major std430 offset=0) uniform int a})
0:?     '@entryPointOutput' (layout( location=7) out 4-component vector of float)
0:?     'input' (layout( location=8) in 4-component vector of float)

error: SPIRV-Tools Validation Errors
error: Operand 2 of Decorate requires one of these capabilities: InputAttachment 
  OpDecorate %attach InputAttachmentIndex 4

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 33 36
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 11  "@main(vf4;"
                              Name 10  "input"
                              Name 16  "attach"
                              Name 31  "input"
                              Name 33  "input"
                              Name 36  "@entryPointOutput"
                              Name 37  "param"
                              Name 41  "S"
                              MemberName 41(S) 0  "f"
                              Name 43  "buffer1"
                              MemberName 43(buffer1) 0  "@data"
                              Name 45  "buffer1"
                              Name 46  "buffer3"
                              Name 47  "ci"
                              Name 48  "pcBuf"
                              MemberName 48(pcBuf) 0  "a"
                              Name 50  ""
                              Decorate 16(attach) DescriptorSet 0
                              Decorate 16(attach) InputAttachmentIndex 4
                              Decorate 33(input) Location 8
                              Decorate 36(@entryPointOutput) Location 7
                              MemberDecorate 41(S) 0 Offset 0
                              Decorate 42 ArrayStride 8
                              MemberDecorate 43(buffer1) 0 NonWritable
                              MemberDecorate 43(buffer1) 0 Offset 0
                              Decorate 43(buffer1) BufferBlock
                              Decorate 45(buffer1) DescriptorSet 0
                              Decorate 45(buffer1) Binding 1
                              Decorate 46(buffer3) DescriptorSet 2
                              Decorate 46(buffer3) Binding 3
                              Decorate 47(ci) SpecId 13
                              MemberDecorate 48(pcBuf) 0 Offset 0
                              Decorate 48(pcBuf) Block
               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:             TypeImage 6(float) 2D sampled format:Unknown
              15:             TypePointer UniformConstant 14
      16(attach):     15(ptr) Variable UniformConstant
              18:             TypeInt 32 1
              19:             TypeVector 18(int) 2
              20:     18(int) Constant 0
              21:   19(ivec2) ConstantComposite 20 20
              22:             TypeInt 32 0
              23:     22(int) Constant 0
              25:     22(int) Constant 1
              32:             TypePointer Input 7(fvec4)
       33(input):     32(ptr) Variable Input
              35:             TypePointer Output 7(fvec4)
36(@entryPointOutput):     35(ptr) Variable Output
              40:             TypeVector 6(float) 2
           41(S):             TypeStruct 40(fvec2)
              42:             TypeRuntimeArray 41(S)
     43(buffer1):             TypeStruct 42
              44:             TypePointer Uniform 43(buffer1)
     45(buffer1):     44(ptr) Variable Uniform
     46(buffer3):     44(ptr) Variable Uniform
          47(ci):     18(int) SpecConstant 11
       48(pcBuf):             TypeStruct 18(int)
              49:             TypePointer PushConstant 48(pcBuf)
              50:     49(ptr) Variable PushConstant
         4(main):           2 Function None 3
               5:             Label
       31(input):      8(ptr) Variable Function
       37(param):      8(ptr) Variable Function
              34:    7(fvec4) Load 33(input)
                              Store 31(input) 34
              38:    7(fvec4) Load 31(input)
                              Store 37(param) 38
              39:    7(fvec4) FunctionCall 11(@main(vf4;) 37(param)
                              Store 36(@entryPointOutput) 39
                              Return
                              FunctionEnd
  11(@main(vf4;):    7(fvec4) Function None 9
       10(input):      8(ptr) FunctionParameter
              12:             Label
              13:    7(fvec4) Load 10(input)
              17:          14 Load 16(attach)
              24:     18(int) CompositeExtract 21 0
              26:     18(int) CompositeExtract 21 1
              27:    7(fvec4) ImageFetch 17 24 Lod 26
              28:    7(fvec4) FAdd 13 27
                              ReturnValue 28
                              FunctionEnd
