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)

error: SPIRV-Tools Validation Errors
error: Uniform OpVariable <id> '18[cb3] 'has illegal type.
From Vulkan spec, section 14.5.2:
Variables identified with the Uniform storage class are used to access transparent buffer backed resources. Such variables must be typed as OpTypeStruct, or an array of this type
  %cb3_0 = OpVariable %_ptr_Uniform__arr__arr_cb3_uint_4_uint_2 Uniform

// Module Version 10000
// Generated by (magic number): 80007
// 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
                              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
                              MemberDecorate 46(cbuff) 0 Offset 0
                              Decorate 46(cbuff) Block
                              Decorate 48 DescriptorSet 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
              62:    7(fvec4) Undef
                              ReturnValue 62
                              FunctionEnd
