Add hlsl.instance.geom output
authorGabriele91 <dbgabri@gmail.com>
Tue, 24 May 2022 18:09:20 +0000 (20:09 +0200)
committerGabriele91 <dbgabri@gmail.com>
Tue, 24 May 2022 18:09:20 +0000 (20:09 +0200)
Test/baseResults/hlsl.instance.geom.out [new file with mode: 0644]

diff --git a/Test/baseResults/hlsl.instance.geom.out b/Test/baseResults/hlsl.instance.geom.out
new file mode 100644 (file)
index 0000000..5fbffd9
--- /dev/null
@@ -0,0 +1,433 @@
+hlsl.instance.geom
+Shader version: 500
+invocations = 5
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:10  Function Definition: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
+0:10    Function Parameters: 
+0:10      'input' ( in 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10      'output' ( out structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10      'id' ( in uint)
+0:?     Sequence
+0:12      Sequence
+0:12        move second child to first child ( temp int)
+0:12          'i' ( temp int)
+0:12          Constant:
+0:12            0 (const int)
+0:12        Loop with condition tested first: DontUnroll
+0:12          Loop Condition
+0:12          Compare Less Than ( temp bool)
+0:12            'i' ( temp int)
+0:12            Constant:
+0:12              3 (const int)
+0:12          Loop Body
+0:?           Sequence
+0:14            Sequence
+0:14              Sequence
+0:14                move second child to first child ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                  'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                  indirect index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                    'input' ( in 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                    'i' ( temp int)
+0:14                move second child to first child ( temp 4-component vector of float)
+0:?                   'output.m_position' ( out 4-component vector of float Position)
+0:14                  m_position: direct index for structure ( temp 4-component vector of float)
+0:14                    'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                    Constant:
+0:14                      0 (const int)
+0:14                move second child to first child ( temp 4-component vector of float)
+0:?                   'output.m_color' (layout( location=0) out 4-component vector of float)
+0:14                  m_color: direct index for structure ( temp 4-component vector of float)
+0:14                    'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                    Constant:
+0:14                      1 (const int)
+0:14              EmitVertex ( temp void)
+0:12          Loop Terminal Expression
+0:12          Pre-Increment ( temp int)
+0:12            'i' ( temp int)
+0:16      EndPrimitive ( temp void)
+0:10  Function Definition: GeometryShader( ( temp void)
+0:10    Function Parameters: 
+0:?     Sequence
+0:10      Sequence
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_position: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                0 (const int)
+0:10            Constant:
+0:10              0 (const int)
+0:10          direct index ( in 4-component vector of float Position)
+0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10            Constant:
+0:10              0 (const int)
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_color: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                0 (const int)
+0:10            Constant:
+0:10              1 (const int)
+0:10          direct index (layout( location=0) in 4-component vector of float)
+0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10            Constant:
+0:10              0 (const int)
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_position: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                1 (const int)
+0:10            Constant:
+0:10              0 (const int)
+0:10          direct index ( in 4-component vector of float Position)
+0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10            Constant:
+0:10              1 (const int)
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_color: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                1 (const int)
+0:10            Constant:
+0:10              1 (const int)
+0:10          direct index (layout( location=0) in 4-component vector of float)
+0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10            Constant:
+0:10              1 (const int)
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_position: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                2 (const int)
+0:10            Constant:
+0:10              0 (const int)
+0:10          direct index ( in 4-component vector of float Position)
+0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10            Constant:
+0:10              2 (const int)
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_color: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                2 (const int)
+0:10            Constant:
+0:10              1 (const int)
+0:10          direct index (layout( location=0) in 4-component vector of float)
+0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10            Constant:
+0:10              2 (const int)
+0:10      move second child to first child ( temp uint)
+0:?         'id' ( temp uint)
+0:?         'id' ( in uint InvocationID)
+0:10      Function Call: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
+0:?         'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?         'output' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?         'id' ( temp uint)
+0:?   Linker Objects
+0:?     'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:?     'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:?     'id' ( in uint InvocationID)
+0:?     'output.m_position' ( out 4-component vector of float Position)
+0:?     'output.m_color' (layout( location=0) out 4-component vector of float)
+
+
+Linked geometry stage:
+
+
+Shader version: 500
+invocations = 5
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:10  Function Definition: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
+0:10    Function Parameters: 
+0:10      'input' ( in 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10      'output' ( out structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10      'id' ( in uint)
+0:?     Sequence
+0:12      Sequence
+0:12        move second child to first child ( temp int)
+0:12          'i' ( temp int)
+0:12          Constant:
+0:12            0 (const int)
+0:12        Loop with condition tested first: DontUnroll
+0:12          Loop Condition
+0:12          Compare Less Than ( temp bool)
+0:12            'i' ( temp int)
+0:12            Constant:
+0:12              3 (const int)
+0:12          Loop Body
+0:?           Sequence
+0:14            Sequence
+0:14              Sequence
+0:14                move second child to first child ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                  'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                  indirect index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                    'input' ( in 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                    'i' ( temp int)
+0:14                move second child to first child ( temp 4-component vector of float)
+0:?                   'output.m_position' ( out 4-component vector of float Position)
+0:14                  m_position: direct index for structure ( temp 4-component vector of float)
+0:14                    'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                    Constant:
+0:14                      0 (const int)
+0:14                move second child to first child ( temp 4-component vector of float)
+0:?                   'output.m_color' (layout( location=0) out 4-component vector of float)
+0:14                  m_color: direct index for structure ( temp 4-component vector of float)
+0:14                    'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:14                    Constant:
+0:14                      1 (const int)
+0:14              EmitVertex ( temp void)
+0:12          Loop Terminal Expression
+0:12          Pre-Increment ( temp int)
+0:12            'i' ( temp int)
+0:16      EndPrimitive ( temp void)
+0:10  Function Definition: GeometryShader( ( temp void)
+0:10    Function Parameters: 
+0:?     Sequence
+0:10      Sequence
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_position: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                0 (const int)
+0:10            Constant:
+0:10              0 (const int)
+0:10          direct index ( in 4-component vector of float Position)
+0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10            Constant:
+0:10              0 (const int)
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_color: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                0 (const int)
+0:10            Constant:
+0:10              1 (const int)
+0:10          direct index (layout( location=0) in 4-component vector of float)
+0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10            Constant:
+0:10              0 (const int)
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_position: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                1 (const int)
+0:10            Constant:
+0:10              0 (const int)
+0:10          direct index ( in 4-component vector of float Position)
+0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10            Constant:
+0:10              1 (const int)
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_color: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                1 (const int)
+0:10            Constant:
+0:10              1 (const int)
+0:10          direct index (layout( location=0) in 4-component vector of float)
+0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10            Constant:
+0:10              1 (const int)
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_position: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                2 (const int)
+0:10            Constant:
+0:10              0 (const int)
+0:10          direct index ( in 4-component vector of float Position)
+0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:10            Constant:
+0:10              2 (const int)
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          m_color: direct index for structure ( temp 4-component vector of float)
+0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:10              Constant:
+0:10                2 (const int)
+0:10            Constant:
+0:10              1 (const int)
+0:10          direct index (layout( location=0) in 4-component vector of float)
+0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:10            Constant:
+0:10              2 (const int)
+0:10      move second child to first child ( temp uint)
+0:?         'id' ( temp uint)
+0:?         'id' ( in uint InvocationID)
+0:10      Function Call: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
+0:?         'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?         'output' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
+0:?         'id' ( temp uint)
+0:?   Linker Objects
+0:?     'input.m_position' ( in 3-element array of 4-component vector of float Position)
+0:?     'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
+0:?     'id' ( in uint InvocationID)
+0:?     'output.m_position' ( out 4-component vector of float Position)
+0:?     'output.m_color' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 86
+
+                              Capability Geometry
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Geometry 4  "GeometryShader" 39 43 52 57 76
+                              ExecutionMode 4 Triangles
+                              ExecutionMode 4 Invocations 5
+                              ExecutionMode 4 OutputTriangleStrip
+                              ExecutionMode 4 OutputVertices 3
+                              Source HLSL 500
+                              Name 4  "GeometryShader"
+                              Name 8  "VertexShaderOutput"
+                              MemberName 8(VertexShaderOutput) 0  "m_position"
+                              MemberName 8(VertexShaderOutput) 1  "m_color"
+                              Name 19  "@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;"
+                              Name 16  "input"
+                              Name 17  "output"
+                              Name 18  "id"
+                              Name 23  "i"
+                              Name 34  "flattenTemp"
+                              Name 39  "output.m_position"
+                              Name 43  "output.m_color"
+                              Name 49  "input"
+                              Name 52  "input.m_position"
+                              Name 57  "input.m_color"
+                              Name 74  "id"
+                              Name 76  "id"
+                              Name 78  "output"
+                              Name 79  "param"
+                              Name 81  "param"
+                              Name 82  "param"
+                              Decorate 39(output.m_position) BuiltIn Position
+                              Decorate 43(output.m_color) Location 0
+                              Decorate 52(input.m_position) BuiltIn Position
+                              Decorate 57(input.m_color) Location 0
+                              Decorate 76(id) BuiltIn InvocationId
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+8(VertexShaderOutput):             TypeStruct 7(fvec4) 7(fvec4)
+               9:             TypeInt 32 0
+              10:      9(int) Constant 3
+              11:             TypeArray 8(VertexShaderOutput) 10
+              12:             TypePointer Function 11
+              13:             TypePointer Function 8(VertexShaderOutput)
+              14:             TypePointer Function 9(int)
+              15:             TypeFunction 2 12(ptr) 13(ptr) 14(ptr)
+              21:             TypeInt 32 1
+              22:             TypePointer Function 21(int)
+              24:     21(int) Constant 0
+              31:     21(int) Constant 3
+              32:             TypeBool
+              38:             TypePointer Output 7(fvec4)
+39(output.m_position):     38(ptr) Variable Output
+              40:             TypePointer Function 7(fvec4)
+43(output.m_color):     38(ptr) Variable Output
+              44:     21(int) Constant 1
+              50:             TypeArray 7(fvec4) 10
+              51:             TypePointer Input 50
+52(input.m_position):     51(ptr) Variable Input
+              53:             TypePointer Input 7(fvec4)
+57(input.m_color):     51(ptr) Variable Input
+              67:     21(int) Constant 2
+              75:             TypePointer Input 9(int)
+          76(id):     75(ptr) Variable Input
+4(GeometryShader):           2 Function None 3
+               5:             Label
+       49(input):     12(ptr) Variable Function
+          74(id):     14(ptr) Variable Function
+      78(output):     13(ptr) Variable Function
+       79(param):     12(ptr) Variable Function
+       81(param):     13(ptr) Variable Function
+       82(param):     14(ptr) Variable Function
+              54:     53(ptr) AccessChain 52(input.m_position) 24
+              55:    7(fvec4) Load 54
+              56:     40(ptr) AccessChain 49(input) 24 24
+                              Store 56 55
+              58:     53(ptr) AccessChain 57(input.m_color) 24
+              59:    7(fvec4) Load 58
+              60:     40(ptr) AccessChain 49(input) 24 44
+                              Store 60 59
+              61:     53(ptr) AccessChain 52(input.m_position) 44
+              62:    7(fvec4) Load 61
+              63:     40(ptr) AccessChain 49(input) 44 24
+                              Store 63 62
+              64:     53(ptr) AccessChain 57(input.m_color) 44
+              65:    7(fvec4) Load 64
+              66:     40(ptr) AccessChain 49(input) 44 44
+                              Store 66 65
+              68:     53(ptr) AccessChain 52(input.m_position) 67
+              69:    7(fvec4) Load 68
+              70:     40(ptr) AccessChain 49(input) 67 24
+                              Store 70 69
+              71:     53(ptr) AccessChain 57(input.m_color) 67
+              72:    7(fvec4) Load 71
+              73:     40(ptr) AccessChain 49(input) 67 44
+                              Store 73 72
+              77:      9(int) Load 76(id)
+                              Store 74(id) 77
+              80:          11 Load 49(input)
+                              Store 79(param) 80
+              83:      9(int) Load 74(id)
+                              Store 82(param) 83
+              84:           2 FunctionCall 19(@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;) 79(param) 81(param) 82(param)
+              85:8(VertexShaderOutput) Load 81(param)
+                              Store 78(output) 85
+                              Return
+                              FunctionEnd
+19(@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;):           2 Function None 15
+       16(input):     12(ptr) FunctionParameter
+      17(output):     13(ptr) FunctionParameter
+          18(id):     14(ptr) FunctionParameter
+              20:             Label
+           23(i):     22(ptr) Variable Function
+ 34(flattenTemp):     13(ptr) Variable Function
+                              Store 23(i) 24
+                              Branch 25
+              25:             Label
+                              LoopMerge 27 28 DontUnroll 
+                              Branch 29
+              29:             Label
+              30:     21(int) Load 23(i)
+              33:    32(bool) SLessThan 30 31
+                              BranchConditional 33 26 27
+              26:               Label
+              35:     21(int)   Load 23(i)
+              36:     13(ptr)   AccessChain 16(input) 35
+              37:8(VertexShaderOutput)   Load 36
+                                Store 34(flattenTemp) 37
+              41:     40(ptr)   AccessChain 34(flattenTemp) 24
+              42:    7(fvec4)   Load 41
+                                Store 39(output.m_position) 42
+              45:     40(ptr)   AccessChain 34(flattenTemp) 44
+              46:    7(fvec4)   Load 45
+                                Store 43(output.m_color) 46
+                                EmitVertex
+                                Branch 28
+              28:               Label
+              47:     21(int)   Load 23(i)
+              48:     21(int)   IAdd 47 44
+                                Store 23(i) 48
+                                Branch 25
+              27:             Label
+                              EndPrimitive
+                              Return
+                              FunctionEnd