HLSL: Flatten structs for all non-arrayed I/O interfaces.

This commit is contained in:
John Kessenich
2017-08-11 00:17:26 -06:00
parent 01109546d8
commit e29ff3cd65
15 changed files with 749 additions and 862 deletions

View File

@@ -79,10 +79,7 @@ Shader version: 500
0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 move second child to first child ( temp int)
0:22 x0_out: direct index for structure ( temp int)
0:22 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
0:22 Constant:
0:22 0 (const int)
0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
0:22 x0_out: direct index for structure ( temp int)
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Constant:
@@ -94,17 +91,15 @@ Shader version: 500
0:22 Constant:
0:22 1 (const int)
0:22 move second child to first child ( temp int)
0:22 x1_out: direct index for structure ( temp int)
0:22 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
0:22 Constant:
0:22 1 (const int)
0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
0:22 x1_out: direct index for structure ( temp int)
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Constant:
0:22 2 (const int)
0:? Linker Objects
0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
0:? '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
0:? 'vsin.x0_in' (layout( location=0) in int)
0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
0:? 'vsin.x1_in' (layout( location=2) in int)
@@ -193,10 +188,7 @@ Shader version: 500
0:22 Function Call: @main(struct-VS_INPUT-i1-vf4-i11; ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:22 move second child to first child ( temp int)
0:22 x0_out: direct index for structure ( temp int)
0:22 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
0:22 Constant:
0:22 0 (const int)
0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
0:22 x0_out: direct index for structure ( temp int)
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Constant:
@@ -208,29 +200,27 @@ Shader version: 500
0:22 Constant:
0:22 1 (const int)
0:22 move second child to first child ( temp int)
0:22 x1_out: direct index for structure ( temp int)
0:22 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
0:22 Constant:
0:22 1 (const int)
0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
0:22 x1_out: direct index for structure ( temp int)
0:22 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:22 Constant:
0:22 2 (const int)
0:? Linker Objects
0:? '@entryPointOutput.Pos_out' ( out 4-component vector of float Position)
0:? '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
0:? 'vsin.x0_in' (layout( location=0) in int)
0:? 'vsin.Pos_in' (layout( location=1) in 4-component vector of float)
0:? 'vsin.x1_in' (layout( location=2) in int)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 80
// Id's are bound by 77
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 52 56 59 68 74
EntryPoint Vertex 4 "main" 52 56 59 67 71 74
Source HLSL 500
Name 4 "main"
Name 9 "VS_INPUT"
@@ -255,16 +245,15 @@ Shader version: 500
Name 59 "vsin.x1_in"
Name 62 "flattenTemp"
Name 63 "param"
Name 66 "VS_OUTPUT"
MemberName 66(VS_OUTPUT) 0 "x0_out"
MemberName 66(VS_OUTPUT) 1 "x1_out"
Name 68 "@entryPointOutput"
Name 74 "@entryPointOutput.Pos_out"
Name 67 "@entryPointOutput.x0_out"
Name 71 "@entryPointOutput.Pos_out"
Name 74 "@entryPointOutput.x1_out"
Decorate 52(vsin.x0_in) Location 0
Decorate 56(vsin.Pos_in) Location 1
Decorate 59(vsin.x1_in) Location 2
Decorate 68(@entryPointOutput) Location 0
Decorate 74(@entryPointOutput.Pos_out) BuiltIn Position
Decorate 67(@entryPointOutput.x0_out) Location 0
Decorate 71(@entryPointOutput.Pos_out) BuiltIn Position
Decorate 74(@entryPointOutput.x1_out) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -286,12 +275,11 @@ Shader version: 500
55: TypePointer Input 8(fvec4)
56(vsin.Pos_in): 55(ptr) Variable Input
59(vsin.x1_in): 51(ptr) Variable Input
66(VS_OUTPUT): TypeStruct 6(int) 6(int)
67: TypePointer Output 66(VS_OUTPUT)
68(@entryPointOutput): 67(ptr) Variable Output
71: TypePointer Output 6(int)
73: TypePointer Output 8(fvec4)
74(@entryPointOutput.Pos_out): 73(ptr) Variable Output
66: TypePointer Output 6(int)
67(@entryPointOutput.x0_out): 66(ptr) Variable Output
70: TypePointer Output 8(fvec4)
71(@entryPointOutput.Pos_out): 70(ptr) Variable Output
74(@entryPointOutput.x1_out): 66(ptr) Variable Output
4(main): 2 Function None 3
5: Label
50(vsin): 10(ptr) Variable Function
@@ -310,17 +298,15 @@ Shader version: 500
Store 63(param) 64
65:11(VS_OUTPUT) FunctionCall 20(@main(struct-VS_INPUT-i1-vf4-i11;) 63(param)
Store 62(flattenTemp) 65
69: 31(ptr) AccessChain 62(flattenTemp) 30
70: 6(int) Load 69
72: 71(ptr) AccessChain 68(@entryPointOutput) 30
Store 72 70
75: 23(ptr) AccessChain 62(flattenTemp) 22
76: 8(fvec4) Load 75
Store 74(@entryPointOutput.Pos_out) 76
77: 31(ptr) AccessChain 62(flattenTemp) 38
78: 6(int) Load 77
79: 71(ptr) AccessChain 68(@entryPointOutput) 22
Store 79 78
68: 31(ptr) AccessChain 62(flattenTemp) 30
69: 6(int) Load 68
Store 67(@entryPointOutput.x0_out) 69
72: 23(ptr) AccessChain 62(flattenTemp) 22
73: 8(fvec4) Load 72
Store 71(@entryPointOutput.Pos_out) 73
75: 31(ptr) AccessChain 62(flattenTemp) 38
76: 6(int) Load 75
Store 74(@entryPointOutput.x1_out) 76
Return
FunctionEnd
16(Fn1(struct-VS_INPUT-i1-vf4-i11;struct-VS_OUTPUT-i1-vf4-i11;): 2 Function None 13