hlsl.buffer.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:30  Function Definition: foo( ( temp float)
0:30    Function Parameters: 
0:?     Sequence
0:31      Branch: Return with expression
0:31        Constant:
0:31          1.000000
0:43  Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
0:43    Function Parameters: 
0:43      'input' ( in 4-component vector of float)
0:?     Sequence
0:45      move second child to first child ( temp 4-component vector of float)
0:45        a: direct index for structure ( temp 4-component vector of float)
0:45          'ret' ( temp structure{ temp 4-component vector of float a})
0:45          Constant:
0:45            0 (const int)
0:45        add ( temp 4-component vector of float)
0:45          v24: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:45            'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
0:45            Constant:
0:45              0 (const uint)
0:45          vector-scale ( temp 4-component vector of float)
0:45            add ( temp 4-component vector of float)
0:45              add ( temp 4-component vector of float)
0:45                add ( temp 4-component vector of float)
0:45                  add ( temp 4-component vector of float)
0:45                    'input' ( in 4-component vector of float)
0:45                    v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:45                      'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
0:45                      Constant:
0:45                        0 (const uint)
0:45                  v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
0:45                    'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
0:45                    Constant:
0:45                      0 (const uint)
0:45                v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
0:45                  'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:45                  Constant:
0:45                    0 (const uint)
0:45              v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
0:45                'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
0:45                Constant:
0:45                  0 (const uint)
0:45            Function Call: foo( ( temp float)
0:46      Branch: Return with expression
0:46        'ret' ( temp structure{ temp 4-component vector of float a})
0:43  Function Definition: PixelShaderFunction( ( temp void)
0:43    Function Parameters: 
0:?     Sequence
0:43      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' ( in 4-component vector of float FragCoord)
0:43      Sequence
0:43        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
0:43          a: direct index for structure ( temp 4-component vector of float)
0:43            Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
0:?               'input' ( temp 4-component vector of float)
0:43            Constant:
0:43              0 (const int)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
0:?     'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
0:?     'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:?     'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
0:?     'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
0:?     '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
0:?     'input' ( in 4-component vector of float FragCoord)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:30  Function Definition: foo( ( temp float)
0:30    Function Parameters: 
0:?     Sequence
0:31      Branch: Return with expression
0:31        Constant:
0:31          1.000000
0:43  Function Definition: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
0:43    Function Parameters: 
0:43      'input' ( in 4-component vector of float)
0:?     Sequence
0:45      move second child to first child ( temp 4-component vector of float)
0:45        a: direct index for structure ( temp 4-component vector of float)
0:45          'ret' ( temp structure{ temp 4-component vector of float a})
0:45          Constant:
0:45            0 (const int)
0:45        add ( temp 4-component vector of float)
0:45          v24: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:45            'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
0:45            Constant:
0:45              0 (const uint)
0:45          vector-scale ( temp 4-component vector of float)
0:45            add ( temp 4-component vector of float)
0:45              add ( temp 4-component vector of float)
0:45                add ( temp 4-component vector of float)
0:45                  add ( temp 4-component vector of float)
0:45                    'input' ( in 4-component vector of float)
0:45                    v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:45                      'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
0:45                      Constant:
0:45                        0 (const uint)
0:45                  v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
0:45                    'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
0:45                    Constant:
0:45                      0 (const uint)
0:45                v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
0:45                  'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:45                  Constant:
0:45                    0 (const uint)
0:45              v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
0:45                'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
0:45                Constant:
0:45                  0 (const uint)
0:45            Function Call: foo( ( temp float)
0:46      Branch: Return with expression
0:46        'ret' ( temp structure{ temp 4-component vector of float a})
0:43  Function Definition: PixelShaderFunction( ( temp void)
0:43    Function Parameters: 
0:?     Sequence
0:43      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' ( in 4-component vector of float FragCoord)
0:43      Sequence
0:43        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
0:43          a: direct index for structure ( temp 4-component vector of float)
0:43            Function Call: @PixelShaderFunction(vf4; ( temp structure{ temp 4-component vector of float a})
0:?               'input' ( temp 4-component vector of float)
0:43            Constant:
0:43              0 (const int)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
0:?     'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
0:?     'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:?     'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
0:?     'anon@4' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v24})
0:?     '@entryPointOutput.a' (layout( location=0) out 4-component vector of float)
0:?     'input' ( in 4-component vector of float FragCoord)

Validation failed
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 73

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction" 65 68
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "PixelShaderFunction"
                              Name 8  "foo("
                              Name 12  "id"
                              MemberName 12(id) 0  "a"
                              Name 15  "@PixelShaderFunction(vf4;"
                              Name 14  "input"
                              Name 21  "ret"
                              Name 24  "cbufName2"
                              MemberName 24(cbufName2) 0  "v24"
                              Name 26  ""
                              Name 31  "buf1"
                              MemberName 31(buf1) 0  "v1"
                              Name 33  ""
                              Name 37  "buf2"
                              MemberName 37(buf2) 0  "v2"
                              Name 39  ""
                              Name 43  "cbufName"
                              MemberName 43(cbufName) 0  "v3"
                              MemberName 43(cbufName) 1  "i3"
                              Name 45  ""
                              Name 50  "tbufName"
                              MemberName 50(tbufName) 0  "v4"
                              MemberName 50(tbufName) 1  "i4"
                              MemberName 50(tbufName) 2  "f1"
                              MemberName 50(tbufName) 3  "f3"
                              MemberName 50(tbufName) 4  "f4"
                              MemberName 50(tbufName) 5  "f5"
                              MemberName 50(tbufName) 6  "f6"
                              MemberName 50(tbufName) 7  "f7"
                              MemberName 50(tbufName) 8  "m1"
                              MemberName 50(tbufName) 9  "m2"
                              MemberName 50(tbufName) 10  "m3"
                              MemberName 50(tbufName) 11  "m4"
                              Name 52  ""
                              Name 63  "input"
                              Name 65  "input"
                              Name 68  "@entryPointOutput.a"
                              Name 69  "param"
                              MemberDecorate 24(cbufName2) 0 Offset 0
                              Decorate 24(cbufName2) Block
                              Decorate 26 DescriptorSet 0
                              Decorate 26 Binding 0
                              MemberDecorate 31(buf1) 0 Offset 0
                              Decorate 31(buf1) Block
                              Decorate 33 DescriptorSet 0
                              Decorate 33 Binding 0
                              MemberDecorate 37(buf2) 0 NonWritable
                              MemberDecorate 37(buf2) 0 Offset 0
                              Decorate 37(buf2) BufferBlock
                              Decorate 39 DescriptorSet 0
                              Decorate 39 Binding 0
                              MemberDecorate 43(cbufName) 0 Offset 0
                              MemberDecorate 43(cbufName) 1 Offset 20
                              Decorate 43(cbufName) Block
                              Decorate 45 DescriptorSet 0
                              Decorate 45 Binding 0
                              MemberDecorate 50(tbufName) 0 NonWritable
                              MemberDecorate 50(tbufName) 0 Offset 16
                              MemberDecorate 50(tbufName) 1 NonWritable
                              MemberDecorate 50(tbufName) 1 Offset 48
                              MemberDecorate 50(tbufName) 2 NonWritable
                              MemberDecorate 50(tbufName) 2 Offset 60
                              MemberDecorate 50(tbufName) 3 NonWritable
                              MemberDecorate 50(tbufName) 3 Offset 64
                              MemberDecorate 50(tbufName) 4 NonWritable
                              MemberDecorate 50(tbufName) 4 Offset 68
                              MemberDecorate 50(tbufName) 5 NonWritable
                              MemberDecorate 50(tbufName) 5 Offset 72
                              MemberDecorate 50(tbufName) 6 NonWritable
                              MemberDecorate 50(tbufName) 6 Offset 76
                              MemberDecorate 50(tbufName) 7 NonWritable
                              MemberDecorate 50(tbufName) 7 Offset 128
                              MemberDecorate 50(tbufName) 8 RowMajor
                              MemberDecorate 50(tbufName) 8 NonWritable
                              MemberDecorate 50(tbufName) 8 Offset 112
                              MemberDecorate 50(tbufName) 8 MatrixStride 16
                              MemberDecorate 50(tbufName) 9 ColMajor
                              MemberDecorate 50(tbufName) 9 NonWritable
                              MemberDecorate 50(tbufName) 9 Offset 176
                              MemberDecorate 50(tbufName) 9 MatrixStride 16
                              MemberDecorate 50(tbufName) 10 RowMajor
                              MemberDecorate 50(tbufName) 10 NonWritable
                              MemberDecorate 50(tbufName) 10 Offset 240
                              MemberDecorate 50(tbufName) 10 MatrixStride 16
                              MemberDecorate 50(tbufName) 11 RowMajor
                              MemberDecorate 50(tbufName) 11 NonWritable
                              MemberDecorate 50(tbufName) 11 Offset 304
                              MemberDecorate 50(tbufName) 11 MatrixStride 16
                              Decorate 50(tbufName) BufferBlock
                              Decorate 52 DescriptorSet 0
                              Decorate 52 Binding 8
                              Decorate 65(input) BuiltIn FragCoord
                              Decorate 68(@entryPointOutput.a) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeFunction 6(float)
              10:             TypeVector 6(float) 4
              11:             TypePointer Function 10(fvec4)
          12(id):             TypeStruct 10(fvec4)
              13:             TypeFunction 12(id) 11(ptr)
              17:    6(float) Constant 1065353216
              20:             TypePointer Function 12(id)
              22:             TypeInt 32 1
              23:     22(int) Constant 0
   24(cbufName2):             TypeStruct 10(fvec4)
              25:             TypePointer Uniform 24(cbufName2)
              26:     25(ptr) Variable Uniform
              27:             TypePointer Uniform 10(fvec4)
        31(buf1):             TypeStruct 10(fvec4)
              32:             TypePointer Uniform 31(buf1)
              33:     32(ptr) Variable Uniform
        37(buf2):             TypeStruct 10(fvec4)
              38:             TypePointer Uniform 37(buf2)
              39:     38(ptr) Variable Uniform
    43(cbufName):             TypeStruct 10(fvec4) 22(int)
              44:             TypePointer Uniform 43(cbufName)
              45:     44(ptr) Variable Uniform
              49:             TypeMatrix 10(fvec4) 3
    50(tbufName):             TypeStruct 10(fvec4) 22(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 49 49 49 49
              51:             TypePointer Uniform 50(tbufName)
              52:     51(ptr) Variable Uniform
              64:             TypePointer Input 10(fvec4)
       65(input):     64(ptr) Variable Input
              67:             TypePointer Output 10(fvec4)
68(@entryPointOutput.a):     67(ptr) Variable Output
4(PixelShaderFunction):           2 Function None 3
               5:             Label
       63(input):     11(ptr) Variable Function
       69(param):     11(ptr) Variable Function
              66:   10(fvec4) Load 65(input)
                              Store 63(input) 66
              70:   10(fvec4) Load 63(input)
                              Store 69(param) 70
              71:      12(id) FunctionCall 15(@PixelShaderFunction(vf4;) 69(param)
              72:   10(fvec4) CompositeExtract 71 0
                              Store 68(@entryPointOutput.a) 72
                              Return
                              FunctionEnd
         8(foo():    6(float) Function None 7
               9:             Label
                              ReturnValue 17
                              FunctionEnd
15(@PixelShaderFunction(vf4;):      12(id) Function None 13
       14(input):     11(ptr) FunctionParameter
              16:             Label
         21(ret):     20(ptr) Variable Function
              28:     27(ptr) AccessChain 26 23
              29:   10(fvec4) Load 28
              30:   10(fvec4) Load 14(input)
              34:     27(ptr) AccessChain 33 23
              35:   10(fvec4) Load 34
              36:   10(fvec4) FAdd 30 35
              40:     27(ptr) AccessChain 39 23
              41:   10(fvec4) Load 40
              42:   10(fvec4) FAdd 36 41
              46:     27(ptr) AccessChain 45 23
              47:   10(fvec4) Load 46
              48:   10(fvec4) FAdd 42 47
              53:     27(ptr) AccessChain 52 23
              54:   10(fvec4) Load 53
              55:   10(fvec4) FAdd 48 54
              56:    6(float) FunctionCall 8(foo()
              57:   10(fvec4) VectorTimesScalar 55 56
              58:   10(fvec4) FAdd 29 57
              59:     11(ptr) AccessChain 21(ret) 23
                              Store 59 58
              60:      12(id) Load 21(ret)
                              ReturnValue 60
                              FunctionEnd
