spv.specConstant.comp
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.


Linked compute stage:


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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main"
                              ExecutionMode 4 LocalSize 32 32 1
                              Source GLSL 450
                              Name 4  "main"
                              Name 7  "bn"
                              MemberName 7(bn) 0  "a"
                              Name 9  "bi"
                              MemberDecorate 7(bn) 0 Offset 0
                              Decorate 7(bn) BufferBlock
                              Decorate 9(bi) DescriptorSet 0
                              Decorate 12 SpecId 18
                              Decorate 14 SpecId 19
                              Decorate 16 BuiltIn WorkgroupSize
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
           7(bn):             TypeStruct 6(int)
               8:             TypePointer Uniform 7(bn)
           9(bi):      8(ptr) Variable Uniform
              10:             TypeInt 32 1
              11:     10(int) Constant 0
              12:      6(int) SpecConstant 32
              13:      6(int) Constant 32
              14:      6(int) SpecConstant 1
              15:             TypeVector 6(int) 3
              16:   15(ivec3) SpecConstantComposite 12 13 14
              17:      6(int) Constant 0
              18:      6(int) SpecConstantOp 81 16 0
              19:      6(int) Constant 1
              20:      6(int) SpecConstantOp 81 16 1(GLSL.std.450)
              21:      6(int) SpecConstantOp 132 18 20
              22:      6(int) Constant 2
              23:      6(int) SpecConstantOp 81 16 2
              24:      6(int) SpecConstantOp 132 21 23
              25:             TypePointer Uniform 6(int)
         4(main):           2 Function None 3
               5:             Label
              26:     25(ptr) AccessChain 9(bi) 11
                              Store 26 24
                              Return
                              FunctionEnd
