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 1
                              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 2
                              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
