HLSL: Flatten whole-struct assigns and returns when targeting flattened I/O structs.

This commit is contained in:
John Kessenich 2016-09-16 03:05:12 -06:00
parent f8e494c18c
commit d21baed6bc
67 changed files with 4024 additions and 2886 deletions

View file

@ -40,10 +40,20 @@ gl_FragCoord origin is upper left
0:35 1 (const int)
0:35 Constant:
0:35 1.000000
0:37 Sequence
0:37 move second child to first child (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? '@entryPointOutput' (out structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? Sequence
0:? Sequence
0:37 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:37 Color: direct index for structure (temp 4-component vector of float)
0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:37 Constant:
0:37 0 (const int)
0:37 move second child to first child (temp float)
0:? 'Depth' (out float FragDepth)
0:37 Depth: direct index for structure (temp float FragDepth)
0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:37 Constant:
0:37 1 (const int)
0:37 Branch: Return
0:? Linker Objects
0:? 'g_tTexbf4_test' (layout(binding=0 ) uniform samplerBuffer)
@ -106,10 +116,20 @@ gl_FragCoord origin is upper left
0:35 1 (const int)
0:35 Constant:
0:35 1.000000
0:37 Sequence
0:37 move second child to first child (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? '@entryPointOutput' (out structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:? Sequence
0:? Sequence
0:37 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:37 Color: direct index for structure (temp 4-component vector of float)
0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:37 Constant:
0:37 0 (const int)
0:37 move second child to first child (temp float)
0:? 'Depth' (out float FragDepth)
0:37 Depth: direct index for structure (temp float FragDepth)
0:37 'psout' (temp structure{temp 4-component vector of float Color, temp float FragDepth Depth})
0:37 Constant:
0:37 1 (const int)
0:37 Branch: Return
0:? Linker Objects
0:? 'g_tTexbf4_test' (layout(binding=0 ) uniform samplerBuffer)
@ -129,13 +149,13 @@ gl_FragCoord origin is upper left
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 75
// Id's are bound by 76
Capability Shader
Capability SampledBuffer
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 55 72 74
EntryPoint Fragment 4 "main" 55 59
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 9 "r00"
@ -149,25 +169,24 @@ gl_FragCoord origin is upper left
MemberName 44(PS_OUTPUT) 0 "Color"
MemberName 44(PS_OUTPUT) 1 "Depth"
Name 46 "psout"
Name 55 "@entryPointOutput"
Name 58 "g_tTexbf4_test"
Name 61 "c2"
Name 64 "c3"
Name 66 "c4"
Name 67 "o1"
Name 68 "o2"
Name 69 "o3"
Name 70 "o4"
Name 72 "Color"
Name 74 "Depth"
Name 55 "Color"
Name 59 "Depth"
Name 63 "g_tTexbf4_test"
Name 66 "c2"
Name 69 "c3"
Name 71 "c4"
Name 72 "o1"
Name 73 "o2"
Name 74 "o3"
Name 75 "o4"
Decorate 13(g_tTexbf4) DescriptorSet 0
Decorate 27(g_tTexbi4) DescriptorSet 0
Decorate 39(g_tTexbu4) DescriptorSet 0
MemberDecorate 44(PS_OUTPUT) 1 BuiltIn FragDepth
Decorate 58(g_tTexbf4_test) DescriptorSet 0
Decorate 58(g_tTexbf4_test) Binding 0
Decorate 72(Color) Location 0
Decorate 74(Depth) BuiltIn FragDepth
Decorate 55(Color) Location 0
Decorate 59(Depth) BuiltIn FragDepth
Decorate 63(g_tTexbf4_test) DescriptorSet 0
Decorate 63(g_tTexbf4_test) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -200,25 +219,23 @@ gl_FragCoord origin is upper left
49: 7(fvec4) ConstantComposite 48 48 48 48
51: 15(int) Constant 1
52: TypePointer Function 6(float)
54: TypePointer Output 44(PS_OUTPUT)
55(@entryPointOutput): 54(ptr) Variable Output
58(g_tTexbf4_test): 12(ptr) Variable UniformConstant
59: TypeVector 15(int) 2
60: TypePointer UniformConstant 59(ivec2)
61(c2): 60(ptr) Variable UniformConstant
62: TypeVector 15(int) 3
63: TypePointer UniformConstant 62(ivec3)
64(c3): 63(ptr) Variable UniformConstant
65: TypePointer UniformConstant 21(ivec4)
66(c4): 65(ptr) Variable UniformConstant
67(o1): 16(ptr) Variable UniformConstant
68(o2): 60(ptr) Variable UniformConstant
69(o3): 63(ptr) Variable UniformConstant
70(o4): 65(ptr) Variable UniformConstant
71: TypePointer Output 7(fvec4)
72(Color): 71(ptr) Variable Output
73: TypePointer Output 6(float)
74(Depth): 73(ptr) Variable Output
54: TypePointer Output 7(fvec4)
55(Color): 54(ptr) Variable Output
58: TypePointer Output 6(float)
59(Depth): 58(ptr) Variable Output
63(g_tTexbf4_test): 12(ptr) Variable UniformConstant
64: TypeVector 15(int) 2
65: TypePointer UniformConstant 64(ivec2)
66(c2): 65(ptr) Variable UniformConstant
67: TypeVector 15(int) 3
68: TypePointer UniformConstant 67(ivec3)
69(c3): 68(ptr) Variable UniformConstant
70: TypePointer UniformConstant 21(ivec4)
71(c4): 70(ptr) Variable UniformConstant
72(o1): 16(ptr) Variable UniformConstant
73(o2): 65(ptr) Variable UniformConstant
74(o3): 68(ptr) Variable UniformConstant
75(o4): 70(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(r00): 8(ptr) Variable Function
@ -244,7 +261,11 @@ gl_FragCoord origin is upper left
Store 50 49
53: 52(ptr) AccessChain 46(psout) 51
Store 53 48
56:44(PS_OUTPUT) Load 46(psout)
Store 55(@entryPointOutput) 56
56: 8(ptr) AccessChain 46(psout) 47
57: 7(fvec4) Load 56
Store 55(Color) 57
60: 52(ptr) AccessChain 46(psout) 51
61: 6(float) Load 60
Store 59(Depth) 61
Return
FunctionEnd