 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
		
			
				
	
	
		
			314 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			314 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| hlsl.load.buffer.float.dx10.frag
 | |
| Shader version: 450
 | |
| gl_FragCoord origin is upper left
 | |
| 0:? Sequence
 | |
| 0:24  Function Definition: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24    Function Parameters: 
 | |
| 0:?     Sequence
 | |
| 0:28      Sequence
 | |
| 0:28        move second child to first child (temp float)
 | |
| 0:28          'r00' (temp float)
 | |
| 0:28          Construct float (temp float)
 | |
| 0:?             textureFetch (temp 4-component vector of float)
 | |
| 0:28              'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
 | |
| 0:28              c1: direct index for structure (layout(offset=0 ) uniform int)
 | |
| 0:28                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 | |
| 0:28                Constant:
 | |
| 0:28                  0 (const uint)
 | |
| 0:29      Sequence
 | |
| 0:29        move second child to first child (temp int)
 | |
| 0:29          'r01' (temp int)
 | |
| 0:29          Construct int (temp int)
 | |
| 0:?             textureFetch (temp 4-component vector of int)
 | |
| 0:29              'g_tTexbis' (layout(r32i ) uniform isamplerBuffer)
 | |
| 0:29              c1: direct index for structure (layout(offset=0 ) uniform int)
 | |
| 0:29                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 | |
| 0:29                Constant:
 | |
| 0:29                  0 (const uint)
 | |
| 0:30      Sequence
 | |
| 0:30        move second child to first child (temp uint)
 | |
| 0:30          'r02' (temp uint)
 | |
| 0:30          Construct uint (temp uint)
 | |
| 0:?             textureFetch (temp 4-component vector of uint)
 | |
| 0:30              'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer)
 | |
| 0:30              c1: direct index for structure (layout(offset=0 ) uniform int)
 | |
| 0:30                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 | |
| 0:30                Constant:
 | |
| 0:30                  0 (const uint)
 | |
| 0:34      move second child to first child (temp 4-component vector of float)
 | |
| 0:34        Color: direct index for structure (temp 4-component vector of float)
 | |
| 0:34          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:34          Constant:
 | |
| 0:34            0 (const int)
 | |
| 0:34        Constant:
 | |
| 0:34          1.000000
 | |
| 0:34          1.000000
 | |
| 0:34          1.000000
 | |
| 0:34          1.000000
 | |
| 0:35      move second child to first child (temp float)
 | |
| 0:35        Depth: direct index for structure (temp float)
 | |
| 0:35          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:35          Constant:
 | |
| 0:35            1 (const int)
 | |
| 0:35        Constant:
 | |
| 0:35          1.000000
 | |
| 0:37      Branch: Return with expression
 | |
| 0:37        'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24  Function Definition: main( (temp void)
 | |
| 0:24    Function Parameters: 
 | |
| 0:?     Sequence
 | |
| 0:24      Sequence
 | |
| 0:24        move second child to first child (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24          'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24          Function Call: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24        move second child to first child (temp 4-component vector of float)
 | |
| 0:?           'Color' (layout(location=0 ) out 4-component vector of float)
 | |
| 0:24          Color: direct index for structure (temp 4-component vector of float)
 | |
| 0:24            'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24            Constant:
 | |
| 0:24              0 (const int)
 | |
| 0:24        move second child to first child (temp float)
 | |
| 0:?           'Depth' (out float FragDepth)
 | |
| 0:24          Depth: direct index for structure (temp float)
 | |
| 0:24            'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24            Constant:
 | |
| 0:24              1 (const int)
 | |
| 0:?   Linker Objects
 | |
| 0:?     'g_tTexbfs_test' (layout(binding=0 r32f ) uniform samplerBuffer)
 | |
| 0:?     'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
 | |
| 0:?     'g_tTexbis' (layout(r32i ) uniform isamplerBuffer)
 | |
| 0:?     'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer)
 | |
| 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 | |
| 0:?     'Depth' (out float FragDepth)
 | |
| 0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 | |
| 
 | |
| 
 | |
| Linked fragment stage:
 | |
| 
 | |
| 
 | |
| Shader version: 450
 | |
| gl_FragCoord origin is upper left
 | |
| 0:? Sequence
 | |
| 0:24  Function Definition: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24    Function Parameters: 
 | |
| 0:?     Sequence
 | |
| 0:28      Sequence
 | |
| 0:28        move second child to first child (temp float)
 | |
| 0:28          'r00' (temp float)
 | |
| 0:28          Construct float (temp float)
 | |
| 0:?             textureFetch (temp 4-component vector of float)
 | |
| 0:28              'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
 | |
| 0:28              c1: direct index for structure (layout(offset=0 ) uniform int)
 | |
| 0:28                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 | |
| 0:28                Constant:
 | |
| 0:28                  0 (const uint)
 | |
| 0:29      Sequence
 | |
| 0:29        move second child to first child (temp int)
 | |
| 0:29          'r01' (temp int)
 | |
| 0:29          Construct int (temp int)
 | |
| 0:?             textureFetch (temp 4-component vector of int)
 | |
| 0:29              'g_tTexbis' (layout(r32i ) uniform isamplerBuffer)
 | |
| 0:29              c1: direct index for structure (layout(offset=0 ) uniform int)
 | |
| 0:29                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 | |
| 0:29                Constant:
 | |
| 0:29                  0 (const uint)
 | |
| 0:30      Sequence
 | |
| 0:30        move second child to first child (temp uint)
 | |
| 0:30          'r02' (temp uint)
 | |
| 0:30          Construct uint (temp uint)
 | |
| 0:?             textureFetch (temp 4-component vector of uint)
 | |
| 0:30              'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer)
 | |
| 0:30              c1: direct index for structure (layout(offset=0 ) uniform int)
 | |
| 0:30                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 | |
| 0:30                Constant:
 | |
| 0:30                  0 (const uint)
 | |
| 0:34      move second child to first child (temp 4-component vector of float)
 | |
| 0:34        Color: direct index for structure (temp 4-component vector of float)
 | |
| 0:34          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:34          Constant:
 | |
| 0:34            0 (const int)
 | |
| 0:34        Constant:
 | |
| 0:34          1.000000
 | |
| 0:34          1.000000
 | |
| 0:34          1.000000
 | |
| 0:34          1.000000
 | |
| 0:35      move second child to first child (temp float)
 | |
| 0:35        Depth: direct index for structure (temp float)
 | |
| 0:35          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:35          Constant:
 | |
| 0:35            1 (const int)
 | |
| 0:35        Constant:
 | |
| 0:35          1.000000
 | |
| 0:37      Branch: Return with expression
 | |
| 0:37        'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24  Function Definition: main( (temp void)
 | |
| 0:24    Function Parameters: 
 | |
| 0:?     Sequence
 | |
| 0:24      Sequence
 | |
| 0:24        move second child to first child (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24          'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24          Function Call: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24        move second child to first child (temp 4-component vector of float)
 | |
| 0:?           'Color' (layout(location=0 ) out 4-component vector of float)
 | |
| 0:24          Color: direct index for structure (temp 4-component vector of float)
 | |
| 0:24            'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24            Constant:
 | |
| 0:24              0 (const int)
 | |
| 0:24        move second child to first child (temp float)
 | |
| 0:?           'Depth' (out float FragDepth)
 | |
| 0:24          Depth: direct index for structure (temp float)
 | |
| 0:24            'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
 | |
| 0:24            Constant:
 | |
| 0:24              1 (const int)
 | |
| 0:?   Linker Objects
 | |
| 0:?     'g_tTexbfs_test' (layout(binding=0 r32f ) uniform samplerBuffer)
 | |
| 0:?     'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
 | |
| 0:?     'g_tTexbis' (layout(r32i ) uniform isamplerBuffer)
 | |
| 0:?     'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer)
 | |
| 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 | |
| 0:?     'Depth' (out float FragDepth)
 | |
| 0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 | |
| 
 | |
| // Module Version 10000
 | |
| // Generated by (magic number): 80001
 | |
| // Id's are bound by 81
 | |
| 
 | |
|                               Capability Shader
 | |
|                               Capability SampledBuffer
 | |
|                1:             ExtInstImport  "GLSL.std.450"
 | |
|                               MemoryModel Logical GLSL450
 | |
|                               EntryPoint Fragment 4  "main" 73 77
 | |
|                               ExecutionMode 4 OriginUpperLeft
 | |
|                               Name 4  "main"
 | |
|                               Name 8  "PS_OUTPUT"
 | |
|                               MemberName 8(PS_OUTPUT) 0  "Color"
 | |
|                               MemberName 8(PS_OUTPUT) 1  "Depth"
 | |
|                               Name 10  "@main("
 | |
|                               Name 13  "r00"
 | |
|                               Name 17  "g_tTexbfs"
 | |
|                               Name 23  "$Global"
 | |
|                               MemberName 23($Global) 0  "c1"
 | |
|                               MemberName 23($Global) 1  "c2"
 | |
|                               MemberName 23($Global) 2  "c3"
 | |
|                               MemberName 23($Global) 3  "c4"
 | |
|                               MemberName 23($Global) 4  "o1"
 | |
|                               MemberName 23($Global) 5  "o2"
 | |
|                               MemberName 23($Global) 6  "o3"
 | |
|                               MemberName 23($Global) 7  "o4"
 | |
|                               Name 25  ""
 | |
|                               Name 34  "r01"
 | |
|                               Name 38  "g_tTexbis"
 | |
|                               Name 47  "r02"
 | |
|                               Name 51  "g_tTexbus"
 | |
|                               Name 60  "psout"
 | |
|                               Name 70  "flattenTemp"
 | |
|                               Name 73  "Color"
 | |
|                               Name 77  "Depth"
 | |
|                               Name 80  "g_tTexbfs_test"
 | |
|                               Decorate 17(g_tTexbfs) DescriptorSet 0
 | |
|                               MemberDecorate 23($Global) 0 Offset 0
 | |
|                               MemberDecorate 23($Global) 1 Offset 8
 | |
|                               MemberDecorate 23($Global) 2 Offset 16
 | |
|                               MemberDecorate 23($Global) 3 Offset 32
 | |
|                               MemberDecorate 23($Global) 4 Offset 48
 | |
|                               MemberDecorate 23($Global) 5 Offset 56
 | |
|                               MemberDecorate 23($Global) 6 Offset 64
 | |
|                               MemberDecorate 23($Global) 7 Offset 80
 | |
|                               Decorate 23($Global) Block
 | |
|                               Decorate 25 DescriptorSet 0
 | |
|                               Decorate 38(g_tTexbis) DescriptorSet 0
 | |
|                               Decorate 51(g_tTexbus) DescriptorSet 0
 | |
|                               Decorate 73(Color) Location 0
 | |
|                               Decorate 77(Depth) BuiltIn FragDepth
 | |
|                               Decorate 80(g_tTexbfs_test) DescriptorSet 0
 | |
|                               Decorate 80(g_tTexbfs_test) Binding 0
 | |
|                2:             TypeVoid
 | |
|                3:             TypeFunction 2
 | |
|                6:             TypeFloat 32
 | |
|                7:             TypeVector 6(float) 4
 | |
|     8(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
 | |
|                9:             TypeFunction 8(PS_OUTPUT)
 | |
|               12:             TypePointer Function 6(float)
 | |
|               14:             TypeImage 6(float) Buffer sampled format:R32f
 | |
|               15:             TypeSampledImage 14
 | |
|               16:             TypePointer UniformConstant 15
 | |
|    17(g_tTexbfs):     16(ptr) Variable UniformConstant
 | |
|               19:             TypeInt 32 1
 | |
|               20:             TypeVector 19(int) 2
 | |
|               21:             TypeVector 19(int) 3
 | |
|               22:             TypeVector 19(int) 4
 | |
|      23($Global):             TypeStruct 19(int) 20(ivec2) 21(ivec3) 22(ivec4) 19(int) 20(ivec2) 21(ivec3) 22(ivec4)
 | |
|               24:             TypePointer Uniform 23($Global)
 | |
|               25:     24(ptr) Variable Uniform
 | |
|               26:     19(int) Constant 0
 | |
|               27:             TypePointer Uniform 19(int)
 | |
|               33:             TypePointer Function 19(int)
 | |
|               35:             TypeImage 19(int) Buffer sampled format:R32i
 | |
|               36:             TypeSampledImage 35
 | |
|               37:             TypePointer UniformConstant 36
 | |
|    38(g_tTexbis):     37(ptr) Variable UniformConstant
 | |
|               45:             TypeInt 32 0
 | |
|               46:             TypePointer Function 45(int)
 | |
|               48:             TypeImage 45(int) Buffer sampled format:R32ui
 | |
|               49:             TypeSampledImage 48
 | |
|               50:             TypePointer UniformConstant 49
 | |
|    51(g_tTexbus):     50(ptr) Variable UniformConstant
 | |
|               56:             TypeVector 45(int) 4
 | |
|               59:             TypePointer Function 8(PS_OUTPUT)
 | |
|               61:    6(float) Constant 1065353216
 | |
|               62:    7(fvec4) ConstantComposite 61 61 61 61
 | |
|               63:             TypePointer Function 7(fvec4)
 | |
|               65:     19(int) Constant 1
 | |
|               72:             TypePointer Output 7(fvec4)
 | |
|        73(Color):     72(ptr) Variable Output
 | |
|               76:             TypePointer Output 6(float)
 | |
|        77(Depth):     76(ptr) Variable Output
 | |
| 80(g_tTexbfs_test):     16(ptr) Variable UniformConstant
 | |
|          4(main):           2 Function None 3
 | |
|                5:             Label
 | |
|  70(flattenTemp):     59(ptr) Variable Function
 | |
|               71:8(PS_OUTPUT) FunctionCall 10(@main()
 | |
|                               Store 70(flattenTemp) 71
 | |
|               74:     63(ptr) AccessChain 70(flattenTemp) 26
 | |
|               75:    7(fvec4) Load 74
 | |
|                               Store 73(Color) 75
 | |
|               78:     12(ptr) AccessChain 70(flattenTemp) 65
 | |
|               79:    6(float) Load 78
 | |
|                               Store 77(Depth) 79
 | |
|                               Return
 | |
|                               FunctionEnd
 | |
|       10(@main():8(PS_OUTPUT) Function None 9
 | |
|               11:             Label
 | |
|          13(r00):     12(ptr) Variable Function
 | |
|          34(r01):     33(ptr) Variable Function
 | |
|          47(r02):     46(ptr) Variable Function
 | |
|        60(psout):     59(ptr) Variable Function
 | |
|               18:          15 Load 17(g_tTexbfs)
 | |
|               28:     27(ptr) AccessChain 25 26
 | |
|               29:     19(int) Load 28
 | |
|               30:          14 Image 18
 | |
|               31:    7(fvec4) ImageFetch 30 29
 | |
|               32:    6(float) CompositeExtract 31 0
 | |
|                               Store 13(r00) 32
 | |
|               39:          36 Load 38(g_tTexbis)
 | |
|               40:     27(ptr) AccessChain 25 26
 | |
|               41:     19(int) Load 40
 | |
|               42:          35 Image 39
 | |
|               43:   22(ivec4) ImageFetch 42 41
 | |
|               44:     19(int) CompositeExtract 43 0
 | |
|                               Store 34(r01) 44
 | |
|               52:          49 Load 51(g_tTexbus)
 | |
|               53:     27(ptr) AccessChain 25 26
 | |
|               54:     19(int) Load 53
 | |
|               55:          48 Image 52
 | |
|               57:   56(ivec4) ImageFetch 55 54
 | |
|               58:     45(int) CompositeExtract 57 0
 | |
|                               Store 47(r02) 58
 | |
|               64:     63(ptr) AccessChain 60(psout) 26
 | |
|                               Store 64 62
 | |
|               66:     12(ptr) AccessChain 60(psout) 65
 | |
|                               Store 66 61
 | |
|               67:8(PS_OUTPUT) Load 60(psout)
 | |
|                               ReturnValue 67
 | |
|                               FunctionEnd
 |