hlsl.constantbuffer.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20  Function Definition: @main( ( temp 4-component vector of float)
0:20    Function Parameters: 
0:?     Sequence
0:21      Test condition and select ( temp void)
0:21        Condition
0:21        x: direct index for structure (layout( row_major std140) uniform bool)
0:21          direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:21            direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:21              'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:21              Constant:
0:21                1 (const int)
0:21            Constant:
0:21              2 (const int)
0:21          Constant:
0:21            0 (const int)
0:21        true case
0:22        Branch: Return with expression
0:22          add ( temp 4-component vector of float)
0:22            add ( temp 4-component vector of float)
0:22              x: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:22                'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x})
0:22                Constant:
0:22                  0 (const int)
0:22              y: direct index for structure (layout( row_major std140) uniform float)
0:22                direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:22                  'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:22                  Constant:
0:22                    1 (const int)
0:22                Constant:
0:22                  1 (const int)
0:22            Convert int to float ( temp float)
0:22              c1: direct index for structure (layout( row_major std140) uniform int)
0:22                'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1})
0:22                Constant:
0:22                  0 (const uint)
0:21        false case
0:24        Branch: Return with expression
0:24          Construct vec4 ( temp 4-component vector of float)
0:24            y: direct index for structure (layout( row_major std140) uniform float)
0:24              direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:24                direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:24                  'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:24                  Constant:
0:24                    1 (const int)
0:24                Constant:
0:24                  3 (const int)
0:24              Constant:
0:24                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:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:20        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x})
0:?     'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:?     'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20  Function Definition: @main( ( temp 4-component vector of float)
0:20    Function Parameters: 
0:?     Sequence
0:21      Test condition and select ( temp void)
0:21        Condition
0:21        x: direct index for structure (layout( row_major std140) uniform bool)
0:21          direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:21            direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:21              'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:21              Constant:
0:21                1 (const int)
0:21            Constant:
0:21              2 (const int)
0:21          Constant:
0:21            0 (const int)
0:21        true case
0:22        Branch: Return with expression
0:22          add ( temp 4-component vector of float)
0:22            add ( temp 4-component vector of float)
0:22              x: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:22                'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x})
0:22                Constant:
0:22                  0 (const int)
0:22              y: direct index for structure (layout( row_major std140) uniform float)
0:22                direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:22                  'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:22                  Constant:
0:22                    1 (const int)
0:22                Constant:
0:22                  1 (const int)
0:22            Convert int to float ( temp float)
0:22              c1: direct index for structure (layout( row_major std140) uniform int)
0:22                'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1})
0:22                Constant:
0:22                  0 (const uint)
0:21        false case
0:24        Branch: Return with expression
0:24          Construct vec4 ( temp 4-component vector of float)
0:24            y: direct index for structure (layout( row_major std140) uniform float)
0:24              direct index (layout( row_major std140) temp block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:24                direct index (layout( row_major std140) temp 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:24                  'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:24                  Constant:
0:24                    1 (const int)
0:24                Constant:
0:24                  3 (const int)
0:24              Constant:
0:24                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:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:20        Function Call: @main( ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'cb1' (layout( binding=12 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float x})
0:?     'cb2' (layout( row_major std140) uniform 3-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:?     'cb3' (layout( row_major std140) uniform 2-element array of 4-element array of block{layout( row_major std140) uniform bool x, layout( row_major std140) uniform float y})
0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform int c1})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)

Validation failed
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 66

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 64
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "@main("
                              Name 12  "cb3"
                              MemberName 12(cb3) 0  "x"
                              MemberName 12(cb3) 1  "y"
                              Name 18  "cb3"
                              Name 31  "cb1"
                              MemberName 31(cb1) 0  "x"
                              Name 33  "cb1"
                              Name 40  "cb2"
                              Name 46  "cbuff"
                              MemberName 46(cbuff) 0  "c1"
                              Name 48  ""
                              Name 64  "@entryPointOutput"
                              MemberDecorate 12(cb3) 0 Offset 0
                              MemberDecorate 12(cb3) 1 Offset 4
                              Decorate 12(cb3) Block
                              Decorate 18(cb3) DescriptorSet 0
                              Decorate 18(cb3) Binding 0
                              MemberDecorate 31(cb1) 0 Offset 0
                              Decorate 31(cb1) Block
                              Decorate 33(cb1) DescriptorSet 0
                              Decorate 33(cb1) Binding 12
                              Decorate 40(cb2) DescriptorSet 0
                              Decorate 40(cb2) Binding 0
                              MemberDecorate 46(cbuff) 0 Offset 0
                              Decorate 46(cbuff) Block
                              Decorate 48 DescriptorSet 0
                              Decorate 48 Binding 0
                              Decorate 64(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeFunction 7(fvec4)
              11:             TypeInt 32 0
         12(cb3):             TypeStruct 11(int) 6(float)
              13:     11(int) Constant 4
              14:             TypeArray 12(cb3) 13
              15:     11(int) Constant 2
              16:             TypeArray 14 15
              17:             TypePointer Uniform 16
         18(cb3):     17(ptr) Variable Uniform
              19:             TypeInt 32 1
              20:     19(int) Constant 1
              21:     19(int) Constant 2
              22:     19(int) Constant 0
              23:             TypePointer Uniform 11(int)
              26:             TypeBool
              27:     11(int) Constant 0
         31(cb1):             TypeStruct 7(fvec4)
              32:             TypePointer Uniform 31(cb1)
         33(cb1):     32(ptr) Variable Uniform
              34:             TypePointer Uniform 7(fvec4)
              37:     11(int) Constant 3
              38:             TypeArray 12(cb3) 37
              39:             TypePointer Uniform 38
         40(cb2):     39(ptr) Variable Uniform
              41:             TypePointer Uniform 6(float)
       46(cbuff):             TypeStruct 19(int)
              47:             TypePointer Uniform 46(cbuff)
              48:     47(ptr) Variable Uniform
              49:             TypePointer Uniform 19(int)
              57:     19(int) Constant 3
              63:             TypePointer Output 7(fvec4)
64(@entryPointOutput):     63(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              65:    7(fvec4) FunctionCall 9(@main()
                              Store 64(@entryPointOutput) 65
                              Return
                              FunctionEnd
       9(@main():    7(fvec4) Function None 8
              10:             Label
              24:     23(ptr) AccessChain 18(cb3) 20 21 22
              25:     11(int) Load 24
              28:    26(bool) INotEqual 25 27
                              SelectionMerge 30 None
                              BranchConditional 28 29 56
              29:               Label
              35:     34(ptr)   AccessChain 33(cb1) 22
              36:    7(fvec4)   Load 35
              42:     41(ptr)   AccessChain 40(cb2) 20 20
              43:    6(float)   Load 42
              44:    7(fvec4)   CompositeConstruct 43 43 43 43
              45:    7(fvec4)   FAdd 36 44
              50:     49(ptr)   AccessChain 48 22
              51:     19(int)   Load 50
              52:    6(float)   ConvertSToF 51
              53:    7(fvec4)   CompositeConstruct 52 52 52 52
              54:    7(fvec4)   FAdd 45 53
                                ReturnValue 54
              56:               Label
              58:     41(ptr)   AccessChain 18(cb3) 20 57 20
              59:    6(float)   Load 58
              60:    7(fvec4)   CompositeConstruct 59 59 59 59
                                ReturnValue 60
              30:             Label
                              Unreachable
                              FunctionEnd
