hlsl.structbuffer.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12  Function Definition: @main(u1; ( temp 4-component vector of float)
0:12    Function Parameters: 
0:12      'pos' ( in uint)
0:?     Sequence
0:13      Sequence
0:13        move second child to first child ( temp structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:13          'mydata' ( temp structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:13          indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:13            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:13              'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2} @data})
0:13              Constant:
0:13                0 (const uint)
0:13            'pos' ( in uint)
0:17      Sequence
0:17        move second child to first child ( temp uint)
0:17          'size' ( temp uint)
0:17          array length ( temp uint)
0:17            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:17              'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2} @data})
0:17              Constant:
0:17                0 (const uint)
0:17        move second child to first child ( temp uint)
0:17          'stride' ( temp uint)
0:17          Constant:
0:17            32 (const uint)
0:19      Test condition and select ( temp void)
0:19        Condition
0:19        test: direct index for structure ( temp bool)
0:19          indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:19            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:19              'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2} @data})
0:19              Constant:
0:19                0 (const uint)
0:19            'pos' ( in uint)
0:19          Constant:
0:19            1 (const int)
0:19        true case
0:20        Branch: Return with expression
0:?           Construct vec4 ( temp 4-component vector of float)
0:20            add ( temp 3-component vector of float)
0:20              color: direct index for structure ( temp 3-component vector of float)
0:20                indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:20                  @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:20                    'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2} @data})
0:20                    Constant:
0:20                      0 (const uint)
0:20                  'pos' ( in uint)
0:20                Constant:
0:20                  0 (const int)
0:20              indirect index (layout( row_major std430) buffer float)
0:20                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float)
0:20                  'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of float @data})
0:20                  Constant:
0:20                    0 (const uint)
0:20                'pos' ( in uint)
0:20            Constant:
0:20              0.000000
0:19        false case
0:22        Branch: Return with expression
0:22          Construct vec4 ( temp 4-component vector of float)
0:22            add ( temp float)
0:22              add ( temp float)
0:22                direct index ( temp float)
0:22                  color: direct index for structure ( temp 3-component vector of float)
0:22                    'mydata' ( temp structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:22                    Constant:
0:22                      0 (const int)
0:22                  Constant:
0:22                    0 (const int)
0:22                Convert uint to float ( temp float)
0:22                  'size' ( temp uint)
0:22              Convert uint to float ( temp float)
0:22                'stride' ( temp uint)
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      move second child to first child ( temp uint)
0:?         'pos' ( temp uint)
0:?         'pos' (layout( location=0) flat in uint)
0:12      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12        Function Call: @main(u1; ( temp 4-component vector of float)
0:?           'pos' ( temp uint)
0:?   Linker Objects
0:?     'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2} @data})
0:?     'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of float @data})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'pos' (layout( location=0) flat in uint)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:12  Function Definition: @main(u1; ( temp 4-component vector of float)
0:12    Function Parameters: 
0:12      'pos' ( in uint)
0:?     Sequence
0:13      Sequence
0:13        move second child to first child ( temp structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:13          'mydata' ( temp structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:13          indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:13            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:13              'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2} @data})
0:13              Constant:
0:13                0 (const uint)
0:13            'pos' ( in uint)
0:17      Sequence
0:17        move second child to first child ( temp uint)
0:17          'size' ( temp uint)
0:17          array length ( temp uint)
0:17            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:17              'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2} @data})
0:17              Constant:
0:17                0 (const uint)
0:17        move second child to first child ( temp uint)
0:17          'stride' ( temp uint)
0:17          Constant:
0:17            32 (const uint)
0:19      Test condition and select ( temp void)
0:19        Condition
0:19        test: direct index for structure ( temp bool)
0:19          indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:19            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:19              'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2} @data})
0:19              Constant:
0:19                0 (const uint)
0:19            'pos' ( in uint)
0:19          Constant:
0:19            1 (const int)
0:19        true case
0:20        Branch: Return with expression
0:?           Construct vec4 ( temp 4-component vector of float)
0:20            add ( temp 3-component vector of float)
0:20              color: direct index for structure ( temp 3-component vector of float)
0:20                indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:20                  @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:20                    'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2} @data})
0:20                    Constant:
0:20                      0 (const uint)
0:20                  'pos' ( in uint)
0:20                Constant:
0:20                  0 (const int)
0:20              indirect index (layout( row_major std430) buffer float)
0:20                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of float)
0:20                  'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of float @data})
0:20                  Constant:
0:20                    0 (const uint)
0:20                'pos' ( in uint)
0:20            Constant:
0:20              0.000000
0:19        false case
0:22        Branch: Return with expression
0:22          Construct vec4 ( temp 4-component vector of float)
0:22            add ( temp float)
0:22              add ( temp float)
0:22                direct index ( temp float)
0:22                  color: direct index for structure ( temp 3-component vector of float)
0:22                    'mydata' ( temp structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
0:22                    Constant:
0:22                      0 (const int)
0:22                  Constant:
0:22                    0 (const int)
0:22                Convert uint to float ( temp float)
0:22                  'size' ( temp uint)
0:22              Convert uint to float ( temp float)
0:22                'stride' ( temp uint)
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      move second child to first child ( temp uint)
0:?         'pos' ( temp uint)
0:?         'pos' (layout( location=0) flat in uint)
0:12      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12        Function Call: @main(u1; ( temp 4-component vector of float)
0:?           'pos' ( temp uint)
0:?   Linker Objects
0:?     'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2} @data})
0:?     'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of float @data})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'pos' (layout( location=0) flat in uint)

error: SPIRV-Tools Validation Errors
error: OpStore Pointer <id> '43[size]'s type does not match Object <id> '44's type.
  OpStore %size %44

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 89 92
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 12  "@main(u1;"
                              Name 11  "pos"
                              Name 16  "sb_t"
                              MemberName 16(sb_t) 0  "color"
                              MemberName 16(sb_t) 1  "test"
                              MemberName 16(sb_t) 2  "test2"
                              Name 18  "mydata"
                              Name 19  "sb_t"
                              MemberName 19(sb_t) 0  "color"
                              MemberName 19(sb_t) 1  "test"
                              MemberName 19(sb_t) 2  "test2"
                              Name 21  "sbuf"
                              MemberName 21(sbuf) 0  "@data"
                              Name 23  "sbuf"
                              Name 43  "size"
                              Name 45  "stride"
                              Name 59  "sbuf2"
                              MemberName 59(sbuf2) 0  "@data"
                              Name 61  "sbuf2"
                              Name 87  "pos"
                              Name 89  "pos"
                              Name 92  "@entryPointOutput"
                              Name 93  "param"
                              MemberDecorate 19(sb_t) 0 Offset 0
                              MemberDecorate 19(sb_t) 1 Offset 12
                              MemberDecorate 19(sb_t) 2 Offset 16
                              Decorate 20 ArrayStride 32
                              MemberDecorate 21(sbuf) 0 NonWritable
                              MemberDecorate 21(sbuf) 0 Offset 0
                              Decorate 21(sbuf) BufferBlock
                              Decorate 23(sbuf) DescriptorSet 0
                              Decorate 23(sbuf) Binding 10
                              Decorate 58 ArrayStride 4
                              MemberDecorate 59(sbuf2) 0 NonWritable
                              MemberDecorate 59(sbuf2) 0 Offset 0
                              Decorate 59(sbuf2) BufferBlock
                              Decorate 61(sbuf2) DescriptorSet 0
                              Decorate 89(pos) Flat
                              Decorate 89(pos) Location 0
                              Decorate 92(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypePointer Function 6(int)
               8:             TypeFloat 32
               9:             TypeVector 8(float) 4
              10:             TypeFunction 9(fvec4) 7(ptr)
              14:             TypeVector 8(float) 3
              15:             TypeBool
        16(sb_t):             TypeStruct 14(fvec3) 15(bool) 15(bool)
              17:             TypePointer Function 16(sb_t)
        19(sb_t):             TypeStruct 14(fvec3) 6(int) 6(int)
              20:             TypeRuntimeArray 19(sb_t)
        21(sbuf):             TypeStruct 20
              22:             TypePointer Uniform 21(sbuf)
        23(sbuf):     22(ptr) Variable Uniform
              24:             TypeInt 32 1
              25:     24(int) Constant 0
              27:             TypePointer Uniform 19(sb_t)
              31:             TypePointer Function 14(fvec3)
              34:     24(int) Constant 1
              35:      6(int) Constant 0
              37:             TypePointer Function 15(bool)
              40:     24(int) Constant 2
              46:      6(int) Constant 32
              48:             TypePointer Uniform 6(int)
              55:             TypePointer Uniform 14(fvec3)
              58:             TypeRuntimeArray 8(float)
       59(sbuf2):             TypeStruct 58
              60:             TypePointer Uniform 59(sbuf2)
       61(sbuf2):     60(ptr) Variable Uniform
              63:             TypePointer Uniform 8(float)
              68:    8(float) Constant 0
              75:             TypePointer Function 8(float)
              88:             TypePointer Input 6(int)
         89(pos):     88(ptr) Variable Input
              91:             TypePointer Output 9(fvec4)
92(@entryPointOutput):     91(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
         87(pos):      7(ptr) Variable Function
       93(param):      7(ptr) Variable Function
              90:      6(int) Load 89(pos)
                              Store 87(pos) 90
              94:      6(int) Load 87(pos)
                              Store 93(param) 94
              95:    9(fvec4) FunctionCall 12(@main(u1;) 93(param)
                              Store 92(@entryPointOutput) 95
                              Return
                              FunctionEnd
   12(@main(u1;):    9(fvec4) Function None 10
         11(pos):      7(ptr) FunctionParameter
              13:             Label
      18(mydata):     17(ptr) Variable Function
        43(size):      7(ptr) Variable Function
      45(stride):      7(ptr) Variable Function
              26:      6(int) Load 11(pos)
              28:     27(ptr) AccessChain 23(sbuf) 25 26
              29:    19(sb_t) Load 28
              30:   14(fvec3) CompositeExtract 29 0
              32:     31(ptr) AccessChain 18(mydata) 25
                              Store 32 30
              33:      6(int) CompositeExtract 29 1
              36:    15(bool) INotEqual 33 35
              38:     37(ptr) AccessChain 18(mydata) 34
                              Store 38 36
              39:      6(int) CompositeExtract 29 2
              41:    15(bool) INotEqual 39 35
              42:     37(ptr) AccessChain 18(mydata) 40
                              Store 42 41
              44:     24(int) ArrayLength 23(sbuf) 0
                              Store 43(size) 44
                              Store 45(stride) 46
              47:      6(int) Load 11(pos)
              49:     48(ptr) AccessChain 23(sbuf) 25 47 34
              50:      6(int) Load 49
              51:    15(bool) INotEqual 50 35
                              SelectionMerge 53 None
                              BranchConditional 51 52 74
              52:               Label
              54:      6(int)   Load 11(pos)
              56:     55(ptr)   AccessChain 23(sbuf) 25 54 25
              57:   14(fvec3)   Load 56
              62:      6(int)   Load 11(pos)
              64:     63(ptr)   AccessChain 61(sbuf2) 25 62
              65:    8(float)   Load 64
              66:   14(fvec3)   CompositeConstruct 65 65 65
              67:   14(fvec3)   FAdd 57 66
              69:    8(float)   CompositeExtract 67 0
              70:    8(float)   CompositeExtract 67 1
              71:    8(float)   CompositeExtract 67 2
              72:    9(fvec4)   CompositeConstruct 69 70 71 68
                                ReturnValue 72
              74:               Label
              76:     75(ptr)   AccessChain 18(mydata) 25 35
              77:    8(float)   Load 76
              78:      6(int)   Load 43(size)
              79:    8(float)   ConvertUToF 78
              80:    8(float)   FAdd 77 79
              81:      6(int)   Load 45(stride)
              82:    8(float)   ConvertUToF 81
              83:    8(float)   FAdd 80 82
              84:    9(fvec4)   CompositeConstruct 83 83 83 83
                                ReturnValue 84
              53:             Label
              86:    9(fvec4) Undef
                              ReturnValue 86
                              FunctionEnd
