 02467d8d94
			
		
	
	
		02467d8d94
		
	
	
	
	
		
			
			This needs some render testing, but is destined to be part of master. This also leads to a variety of other simplifications. - IO are global symbols, so only need one list of linkage nodes (deferred) - no longer need parse-context-wide 'inEntryPoint' state, entry-point is localized - several parts of splitting/flattening are now localized
		
			
				
	
	
		
			247 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			247 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| hlsl.basic.geom
 | |
| Shader version: 450
 | |
| invocations = -1
 | |
| max_vertices = 4
 | |
| input primitive = triangles
 | |
| output primitive = line_strip
 | |
| 0:? Sequence
 | |
| 0:16  Function Definition: @main(u1[3];u1[3];struct-PSInput-f1-i11; (temp void)
 | |
| 0:16    Function Parameters: 
 | |
| 0:16      'VertexID' (in 3-element array of uint)
 | |
| 0:16      'test' (in 3-element array of uint)
 | |
| 0:16      'OutputStream' (out structure{temp float myfloat, temp int something})
 | |
| 0:?     Sequence
 | |
| 0:19      move second child to first child (temp float)
 | |
| 0:19        myfloat: direct index for structure (temp float)
 | |
| 0:19          'Vert' (temp structure{temp float myfloat, temp int something})
 | |
| 0:19          Constant:
 | |
| 0:19            0 (const int)
 | |
| 0:19        Convert uint to float (temp float)
 | |
| 0:19          add (temp uint)
 | |
| 0:19            add (temp uint)
 | |
| 0:19              direct index (temp uint)
 | |
| 0:19                'test' (in 3-element array of uint)
 | |
| 0:19                Constant:
 | |
| 0:19                  0 (const int)
 | |
| 0:19              direct index (temp uint)
 | |
| 0:19                'test' (in 3-element array of uint)
 | |
| 0:19                Constant:
 | |
| 0:19                  1 (const int)
 | |
| 0:19            direct index (temp uint)
 | |
| 0:19              'test' (in 3-element array of uint)
 | |
| 0:19              Constant:
 | |
| 0:19                2 (const int)
 | |
| 0:20      move second child to first child (temp int)
 | |
| 0:20        something: direct index for structure (temp int)
 | |
| 0:20          'Vert' (temp structure{temp float myfloat, temp int something})
 | |
| 0:20          Constant:
 | |
| 0:20            1 (const int)
 | |
| 0:20        Convert uint to int (temp int)
 | |
| 0:20          direct index (temp uint)
 | |
| 0:20            'VertexID' (in 3-element array of uint)
 | |
| 0:20            Constant:
 | |
| 0:20              0 (const int)
 | |
| 0:22      Sequence
 | |
| 0:22        move second child to first child (temp structure{temp float myfloat, temp int something})
 | |
| 0:22          'OutputStream' (out structure{temp float myfloat, temp int something})
 | |
| 0:22          'Vert' (temp structure{temp float myfloat, temp int something})
 | |
| 0:22        EmitVertex (temp void)
 | |
| 0:23      Sequence
 | |
| 0:23        move second child to first child (temp structure{temp float myfloat, temp int something})
 | |
| 0:23          'OutputStream' (out structure{temp float myfloat, temp int something})
 | |
| 0:23          'Vert' (temp structure{temp float myfloat, temp int something})
 | |
| 0:23        EmitVertex (temp void)
 | |
| 0:24      EndPrimitive (temp void)
 | |
| 0:16  Function Definition: main( (temp void)
 | |
| 0:16    Function Parameters: 
 | |
| 0:?     Sequence
 | |
| 0:16      move second child to first child (temp 3-element array of uint)
 | |
| 0:?         'VertexID' (temp 3-element array of uint)
 | |
| 0:?         'VertexID' (layout(location=0 ) in 3-element array of uint)
 | |
| 0:16      move second child to first child (temp 3-element array of uint)
 | |
| 0:?         'test' (temp 3-element array of uint)
 | |
| 0:?         'test' (layout(location=3 ) in 3-element array of uint)
 | |
| 0:16      Function Call: @main(u1[3];u1[3];struct-PSInput-f1-i11; (temp void)
 | |
| 0:?         'VertexID' (temp 3-element array of uint)
 | |
| 0:?         'test' (temp 3-element array of uint)
 | |
| 0:?         'OutputStream' (temp structure{temp float myfloat, temp int something})
 | |
| 0:?   Linker Objects
 | |
| 0:?     'VertexID' (layout(location=0 ) in 3-element array of uint)
 | |
| 0:?     'test' (layout(location=3 ) in 3-element array of uint)
 | |
| 
 | |
| 
 | |
| Linked geometry stage:
 | |
| 
 | |
| 
 | |
| Shader version: 450
 | |
| invocations = 1
 | |
| max_vertices = 4
 | |
| input primitive = triangles
 | |
| output primitive = line_strip
 | |
| 0:? Sequence
 | |
| 0:16  Function Definition: @main(u1[3];u1[3];struct-PSInput-f1-i11; (temp void)
 | |
| 0:16    Function Parameters: 
 | |
| 0:16      'VertexID' (in 3-element array of uint)
 | |
| 0:16      'test' (in 3-element array of uint)
 | |
| 0:16      'OutputStream' (out structure{temp float myfloat, temp int something})
 | |
| 0:?     Sequence
 | |
| 0:19      move second child to first child (temp float)
 | |
| 0:19        myfloat: direct index for structure (temp float)
 | |
| 0:19          'Vert' (temp structure{temp float myfloat, temp int something})
 | |
| 0:19          Constant:
 | |
| 0:19            0 (const int)
 | |
| 0:19        Convert uint to float (temp float)
 | |
| 0:19          add (temp uint)
 | |
| 0:19            add (temp uint)
 | |
| 0:19              direct index (temp uint)
 | |
| 0:19                'test' (in 3-element array of uint)
 | |
| 0:19                Constant:
 | |
| 0:19                  0 (const int)
 | |
| 0:19              direct index (temp uint)
 | |
| 0:19                'test' (in 3-element array of uint)
 | |
| 0:19                Constant:
 | |
| 0:19                  1 (const int)
 | |
| 0:19            direct index (temp uint)
 | |
| 0:19              'test' (in 3-element array of uint)
 | |
| 0:19              Constant:
 | |
| 0:19                2 (const int)
 | |
| 0:20      move second child to first child (temp int)
 | |
| 0:20        something: direct index for structure (temp int)
 | |
| 0:20          'Vert' (temp structure{temp float myfloat, temp int something})
 | |
| 0:20          Constant:
 | |
| 0:20            1 (const int)
 | |
| 0:20        Convert uint to int (temp int)
 | |
| 0:20          direct index (temp uint)
 | |
| 0:20            'VertexID' (in 3-element array of uint)
 | |
| 0:20            Constant:
 | |
| 0:20              0 (const int)
 | |
| 0:22      Sequence
 | |
| 0:22        move second child to first child (temp structure{temp float myfloat, temp int something})
 | |
| 0:22          'OutputStream' (out structure{temp float myfloat, temp int something})
 | |
| 0:22          'Vert' (temp structure{temp float myfloat, temp int something})
 | |
| 0:22        EmitVertex (temp void)
 | |
| 0:23      Sequence
 | |
| 0:23        move second child to first child (temp structure{temp float myfloat, temp int something})
 | |
| 0:23          'OutputStream' (out structure{temp float myfloat, temp int something})
 | |
| 0:23          'Vert' (temp structure{temp float myfloat, temp int something})
 | |
| 0:23        EmitVertex (temp void)
 | |
| 0:24      EndPrimitive (temp void)
 | |
| 0:16  Function Definition: main( (temp void)
 | |
| 0:16    Function Parameters: 
 | |
| 0:?     Sequence
 | |
| 0:16      move second child to first child (temp 3-element array of uint)
 | |
| 0:?         'VertexID' (temp 3-element array of uint)
 | |
| 0:?         'VertexID' (layout(location=0 ) in 3-element array of uint)
 | |
| 0:16      move second child to first child (temp 3-element array of uint)
 | |
| 0:?         'test' (temp 3-element array of uint)
 | |
| 0:?         'test' (layout(location=3 ) in 3-element array of uint)
 | |
| 0:16      Function Call: @main(u1[3];u1[3];struct-PSInput-f1-i11; (temp void)
 | |
| 0:?         'VertexID' (temp 3-element array of uint)
 | |
| 0:?         'test' (temp 3-element array of uint)
 | |
| 0:?         'OutputStream' (temp structure{temp float myfloat, temp int something})
 | |
| 0:?   Linker Objects
 | |
| 0:?     'VertexID' (layout(location=0 ) in 3-element array of uint)
 | |
| 0:?     'test' (layout(location=3 ) in 3-element array of uint)
 | |
| 
 | |
| // Module Version 10000
 | |
| // Generated by (magic number): 80001
 | |
| // Id's are bound by 57
 | |
| 
 | |
|                               Capability Geometry
 | |
|                1:             ExtInstImport  "GLSL.std.450"
 | |
|                               MemoryModel Logical GLSL450
 | |
|                               EntryPoint Geometry 4  "main" 45 48
 | |
|                               ExecutionMode 4 Triangles
 | |
|                               ExecutionMode 4 Invocations 1
 | |
|                               ExecutionMode 4 OutputLineStrip
 | |
|                               ExecutionMode 4 OutputVertices 4
 | |
|                               Name 4  "main"
 | |
|                               Name 12  "PSInput"
 | |
|                               MemberName 12(PSInput) 0  "myfloat"
 | |
|                               MemberName 12(PSInput) 1  "something"
 | |
|                               Name 18  "@main(u1[3];u1[3];struct-PSInput-f1-i11;"
 | |
|                               Name 15  "VertexID"
 | |
|                               Name 16  "test"
 | |
|                               Name 17  "OutputStream"
 | |
|                               Name 20  "Vert"
 | |
|                               Name 43  "VertexID"
 | |
|                               Name 45  "VertexID"
 | |
|                               Name 47  "test"
 | |
|                               Name 48  "test"
 | |
|                               Name 50  "OutputStream"
 | |
|                               Name 51  "param"
 | |
|                               Name 53  "param"
 | |
|                               Name 55  "param"
 | |
|                               Decorate 45(VertexID) Location 0
 | |
|                               Decorate 48(test) Location 3
 | |
|                2:             TypeVoid
 | |
|                3:             TypeFunction 2
 | |
|                6:             TypeInt 32 0
 | |
|                7:      6(int) Constant 3
 | |
|                8:             TypeArray 6(int) 7
 | |
|                9:             TypePointer Function 8
 | |
|               10:             TypeFloat 32
 | |
|               11:             TypeInt 32 1
 | |
|      12(PSInput):             TypeStruct 10(float) 11(int)
 | |
|               13:             TypePointer Function 12(PSInput)
 | |
|               14:             TypeFunction 2 9(ptr) 9(ptr) 13(ptr)
 | |
|               21:     11(int) Constant 0
 | |
|               22:             TypePointer Function 6(int)
 | |
|               25:     11(int) Constant 1
 | |
|               29:     11(int) Constant 2
 | |
|               34:             TypePointer Function 10(float)
 | |
|               39:             TypePointer Function 11(int)
 | |
|               44:             TypePointer Input 8
 | |
|     45(VertexID):     44(ptr) Variable Input
 | |
|         48(test):     44(ptr) Variable Input
 | |
|          4(main):           2 Function None 3
 | |
|                5:             Label
 | |
|     43(VertexID):      9(ptr) Variable Function
 | |
|         47(test):      9(ptr) Variable Function
 | |
| 50(OutputStream):     13(ptr) Variable Function
 | |
|        51(param):      9(ptr) Variable Function
 | |
|        53(param):      9(ptr) Variable Function
 | |
|        55(param):     13(ptr) Variable Function
 | |
|               46:           8 Load 45(VertexID)
 | |
|                               Store 43(VertexID) 46
 | |
|               49:           8 Load 48(test)
 | |
|                               Store 47(test) 49
 | |
|               52:           8 Load 43(VertexID)
 | |
|                               Store 51(param) 52
 | |
|               54:           8 Load 47(test)
 | |
|                               Store 53(param) 54
 | |
|               56:           2 FunctionCall 18(@main(u1[3];u1[3];struct-PSInput-f1-i11;) 51(param) 53(param) 55(param)
 | |
|                               Return
 | |
|                               FunctionEnd
 | |
| 18(@main(u1[3];u1[3];struct-PSInput-f1-i11;):           2 Function None 14
 | |
|     15(VertexID):      9(ptr) FunctionParameter
 | |
|         16(test):      9(ptr) FunctionParameter
 | |
| 17(OutputStream):     13(ptr) FunctionParameter
 | |
|               19:             Label
 | |
|         20(Vert):     13(ptr) Variable Function
 | |
|               23:     22(ptr) AccessChain 16(test) 21
 | |
|               24:      6(int) Load 23
 | |
|               26:     22(ptr) AccessChain 16(test) 25
 | |
|               27:      6(int) Load 26
 | |
|               28:      6(int) IAdd 24 27
 | |
|               30:     22(ptr) AccessChain 16(test) 29
 | |
|               31:      6(int) Load 30
 | |
|               32:      6(int) IAdd 28 31
 | |
|               33:   10(float) ConvertUToF 32
 | |
|               35:     34(ptr) AccessChain 20(Vert) 21
 | |
|                               Store 35 33
 | |
|               36:     22(ptr) AccessChain 15(VertexID) 21
 | |
|               37:      6(int) Load 36
 | |
|               38:     11(int) Bitcast 37
 | |
|               40:     39(ptr) AccessChain 20(Vert) 25
 | |
|                               Store 40 38
 | |
|               41: 12(PSInput) Load 20(Vert)
 | |
|                               Store 17(OutputStream) 41
 | |
|                               EmitVertex
 | |
|               42: 12(PSInput) Load 20(Vert)
 | |
|                               Store 17(OutputStream) 42
 | |
|                               EmitVertex
 | |
|                               EndPrimitive
 | |
|                               Return
 | |
|                               FunctionEnd
 |