hlsl.groupid.comp
Shader version: 500
local_size = (8, 8, 1)
0:? Sequence
0:7  Function Definition: @main(vu2; ( temp void)
0:7    Function Parameters: 
0:7      'vGroupId' ( in 2-component vector of uint)
0:?     Sequence
0:8      Sequence
0:8        move second child to first child ( temp 4-component vector of float)
0:8          'storeTemp' ( temp 4-component vector of float)
0:?           Constant:
0:?             1.000000
0:?             0.000000
0:?             0.000000
0:?             1.000000
0:8        imageStore ( temp void)
0:8          'OutputTexture' (layout( rgba32f) uniform image2D)
0:8          vector swizzle ( temp 2-component vector of uint)
0:8            'vGroupId' ( in 2-component vector of uint)
0:8            Sequence
0:8              Constant:
0:8                0 (const int)
0:8              Constant:
0:8                1 (const int)
0:8          'storeTemp' ( temp 4-component vector of float)
0:8        'storeTemp' ( temp 4-component vector of float)
0:7  Function Definition: main( ( temp void)
0:7    Function Parameters: 
0:?     Sequence
0:7      move second child to first child ( temp 2-component vector of uint)
0:?         'vGroupId' ( temp 2-component vector of uint)
0:?         Construct uvec2 ( temp 2-component vector of uint)
0:?           'vGroupId' ( in 3-component vector of uint WorkGroupID)
0:7      Function Call: @main(vu2; ( temp void)
0:?         'vGroupId' ( temp 2-component vector of uint)
0:?   Linker Objects
0:?     'OutputTexture' (layout( rgba32f) uniform image2D)
0:?     'vGroupId' ( in 3-component vector of uint WorkGroupID)


Linked compute stage:


Shader version: 500
local_size = (8, 8, 1)
0:? Sequence
0:7  Function Definition: @main(vu2; ( temp void)
0:7    Function Parameters: 
0:7      'vGroupId' ( in 2-component vector of uint)
0:?     Sequence
0:8      Sequence
0:8        move second child to first child ( temp 4-component vector of float)
0:8          'storeTemp' ( temp 4-component vector of float)
0:?           Constant:
0:?             1.000000
0:?             0.000000
0:?             0.000000
0:?             1.000000
0:8        imageStore ( temp void)
0:8          'OutputTexture' (layout( rgba32f) uniform image2D)
0:8          vector swizzle ( temp 2-component vector of uint)
0:8            'vGroupId' ( in 2-component vector of uint)
0:8            Sequence
0:8              Constant:
0:8                0 (const int)
0:8              Constant:
0:8                1 (const int)
0:8          'storeTemp' ( temp 4-component vector of float)
0:8        'storeTemp' ( temp 4-component vector of float)
0:7  Function Definition: main( ( temp void)
0:7    Function Parameters: 
0:?     Sequence
0:7      move second child to first child ( temp 2-component vector of uint)
0:?         'vGroupId' ( temp 2-component vector of uint)
0:?         Construct uvec2 ( temp 2-component vector of uint)
0:?           'vGroupId' ( in 3-component vector of uint WorkGroupID)
0:7      Function Call: @main(vu2; ( temp void)
0:?         'vGroupId' ( temp 2-component vector of uint)
0:?   Linker Objects
0:?     'OutputTexture' (layout( rgba32f) uniform image2D)
0:?     'vGroupId' ( in 3-component vector of uint WorkGroupID)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 29
                              ExecutionMode 4 LocalSize 8 8 1
                              Source HLSL 500
                              Name 4  "main"
                              Name 11  "@main(vu2;"
                              Name 10  "vGroupId"
                              Name 16  "storeTemp"
                              Name 22  "OutputTexture"
                              Name 26  "vGroupId"
                              Name 29  "vGroupId"
                              Name 34  "param"
                              Decorate 22(OutputTexture) DescriptorSet 0
                              Decorate 29(vGroupId) BuiltIn WorkgroupId
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeVector 6(int) 2
               8:             TypePointer Function 7(ivec2)
               9:             TypeFunction 2 8(ptr)
              13:             TypeFloat 32
              14:             TypeVector 13(float) 4
              15:             TypePointer Function 14(fvec4)
              17:   13(float) Constant 1065353216
              18:   13(float) Constant 0
              19:   14(fvec4) ConstantComposite 17 18 18 17
              20:             TypeImage 13(float) 2D nonsampled format:Rgba32f
              21:             TypePointer UniformConstant 20
22(OutputTexture):     21(ptr) Variable UniformConstant
              27:             TypeVector 6(int) 3
              28:             TypePointer Input 27(ivec3)
    29(vGroupId):     28(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
    26(vGroupId):      8(ptr) Variable Function
       34(param):      8(ptr) Variable Function
              30:   27(ivec3) Load 29(vGroupId)
              31:      6(int) CompositeExtract 30 0
              32:      6(int) CompositeExtract 30 1
              33:    7(ivec2) CompositeConstruct 31 32
                              Store 26(vGroupId) 33
              35:    7(ivec2) Load 26(vGroupId)
                              Store 34(param) 35
              36:           2 FunctionCall 11(@main(vu2;) 34(param)
                              Return
                              FunctionEnd
  11(@main(vu2;):           2 Function None 9
    10(vGroupId):      8(ptr) FunctionParameter
              12:             Label
   16(storeTemp):     15(ptr) Variable Function
                              Store 16(storeTemp) 19
              23:          20 Load 22(OutputTexture)
              24:    7(ivec2) Load 10(vGroupId)
              25:   14(fvec4) Load 16(storeTemp)
                              ImageWrite 23 24 25
                              Return
                              FunctionEnd
