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

@@ -69,10 +69,7 @@ Shader version: 500
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:? 'Pos_loose' ( temp 4-component vector of float)
0:17 move second child to first child ( temp int)
0:17 x0_out: direct index for structure ( temp int)
0:17 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
0:17 Constant:
0:17 0 (const int)
0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
0:17 x0_out: direct index for structure ( temp int)
0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Constant:
@@ -84,17 +81,15 @@ Shader version: 500
0:17 Constant:
0:17 1 (const int)
0:17 move second child to first child ( temp int)
0:17 x1_out: direct index for structure ( temp int)
0:17 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
0:17 Constant:
0:17 1 (const int)
0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
0:17 x1_out: direct index for structure ( temp int)
0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Constant:
0:17 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)
@@ -174,10 +169,7 @@ Shader version: 500
0:? 'vsin' ( temp structure{ temp int x0_in, temp 4-component vector of float Pos_in, temp int x1_in})
0:? 'Pos_loose' ( temp 4-component vector of float)
0:17 move second child to first child ( temp int)
0:17 x0_out: direct index for structure ( temp int)
0:17 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
0:17 Constant:
0:17 0 (const int)
0:? '@entryPointOutput.x0_out' (layout( location=0) out int)
0:17 x0_out: direct index for structure ( temp int)
0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Constant:
@@ -189,17 +181,15 @@ Shader version: 500
0:17 Constant:
0:17 1 (const int)
0:17 move second child to first child ( temp int)
0:17 x1_out: direct index for structure ( temp int)
0:17 '@entryPointOutput' (layout( location=0) out structure{ temp int x0_out, temp int x1_out})
0:17 Constant:
0:17 1 (const int)
0:? '@entryPointOutput.x1_out' (layout( location=1) out int)
0:17 x1_out: direct index for structure ( temp int)
0:17 'flattenTemp' ( temp structure{ temp int x0_out, temp 4-component vector of float Pos_out, temp int x1_out})
0:17 Constant:
0:17 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)
@@ -207,12 +197,12 @@ Shader version: 500
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 73
// Id's are bound by 70
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 40 44 47 51 61 67
EntryPoint Vertex 4 "main" 40 44 47 51 60 64 67
Source HLSL 500
Name 4 "main"
Name 9 "VS_INPUT"
@@ -236,17 +226,16 @@ Shader version: 500
Name 53 "flattenTemp"
Name 54 "param"
Name 56 "param"
Name 59 "VS_OUTPUT"
MemberName 59(VS_OUTPUT) 0 "x0_out"
MemberName 59(VS_OUTPUT) 1 "x1_out"
Name 61 "@entryPointOutput"
Name 67 "@entryPointOutput.Pos_out"
Name 60 "@entryPointOutput.x0_out"
Name 64 "@entryPointOutput.Pos_out"
Name 67 "@entryPointOutput.x1_out"
Decorate 40(vsin.x0_in) Location 0
Decorate 44(vsin.Pos_in) Location 1
Decorate 47(vsin.x1_in) Location 2
Decorate 51(Pos_loose) Location 3
Decorate 61(@entryPointOutput) Location 0
Decorate 67(@entryPointOutput.Pos_out) BuiltIn Position
Decorate 60(@entryPointOutput.x0_out) Location 0
Decorate 64(@entryPointOutput.Pos_out) BuiltIn Position
Decorate 67(@entryPointOutput.x1_out) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -268,12 +257,11 @@ Shader version: 500
44(vsin.Pos_in): 43(ptr) Variable Input
47(vsin.x1_in): 39(ptr) Variable Input
51(Pos_loose): 43(ptr) Variable Input
59(VS_OUTPUT): TypeStruct 6(int) 6(int)
60: TypePointer Output 59(VS_OUTPUT)
61(@entryPointOutput): 60(ptr) Variable Output
64: TypePointer Output 6(int)
66: TypePointer Output 8(fvec4)
67(@entryPointOutput.Pos_out): 66(ptr) Variable Output
59: TypePointer Output 6(int)
60(@entryPointOutput.x0_out): 59(ptr) Variable Output
63: TypePointer Output 8(fvec4)
64(@entryPointOutput.Pos_out): 63(ptr) Variable Output
67(@entryPointOutput.x1_out): 59(ptr) Variable Output
4(main): 2 Function None 3
5: Label
38(vsin): 10(ptr) Variable Function
@@ -298,17 +286,15 @@ Shader version: 500
Store 56(param) 57
58:12(VS_OUTPUT) FunctionCall 16(@main(struct-VS_INPUT-i1-vf4-i11;vf4;) 54(param) 56(param)
Store 53(flattenTemp) 58
62: 21(ptr) AccessChain 53(flattenTemp) 20
63: 6(int) Load 62
65: 64(ptr) AccessChain 61(@entryPointOutput) 20
Store 65 63
68: 11(ptr) AccessChain 53(flattenTemp) 25
69: 8(fvec4) Load 68
Store 67(@entryPointOutput.Pos_out) 69
70: 21(ptr) AccessChain 53(flattenTemp) 31
71: 6(int) Load 70
72: 64(ptr) AccessChain 61(@entryPointOutput) 25
Store 72 71
61: 21(ptr) AccessChain 53(flattenTemp) 20
62: 6(int) Load 61
Store 60(@entryPointOutput.x0_out) 62
65: 11(ptr) AccessChain 53(flattenTemp) 25
66: 8(fvec4) Load 65
Store 64(@entryPointOutput.Pos_out) 66
68: 21(ptr) AccessChain 53(flattenTemp) 31
69: 6(int) Load 68
Store 67(@entryPointOutput.x1_out) 69
Return
FunctionEnd
16(@main(struct-VS_INPUT-i1-vf4-i11;vf4;):12(VS_OUTPUT) Function None 13