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

@@ -149,17 +149,14 @@ Shader version: 500
0:29 Constant:
0:29 0 (const int)
0:29 move second child to first child ( temp 2-component vector of float)
0:29 texCoord: direct index for structure ( temp 2-component vector of float)
0:29 '@entryPointOutput' (layout( location=0) out structure{ temp 2-component vector of float texCoord})
0:29 Constant:
0:29 0 (const int)
0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float)
0:29 texCoord: direct index for structure ( temp 2-component vector of float)
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
0:29 Constant:
0:29 1 (const int)
0:? Linker Objects
0:? '@entryPointOutput.position' ( out 4-component vector of float Position)
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 2-component vector of float texCoord})
0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float)
Linked vertex stage:
@@ -315,26 +312,23 @@ Shader version: 500
0:29 Constant:
0:29 0 (const int)
0:29 move second child to first child ( temp 2-component vector of float)
0:29 texCoord: direct index for structure ( temp 2-component vector of float)
0:29 '@entryPointOutput' (layout( location=0) out structure{ temp 2-component vector of float texCoord})
0:29 Constant:
0:29 0 (const int)
0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float)
0:29 texCoord: direct index for structure ( temp 2-component vector of float)
0:29 'flattenTemp' ( temp structure{ temp 4-component vector of float position, temp 2-component vector of float texCoord})
0:29 Constant:
0:29 1 (const int)
0:? Linker Objects
0:? '@entryPointOutput.position' ( out 4-component vector of float Position)
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 2-component vector of float texCoord})
0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 123
// Id's are bound by 120
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 108 116
EntryPoint Vertex 4 "main" 108 115
Source HLSL 500
Name 4 "main"
Name 9 "VertexOut"
@@ -360,11 +354,9 @@ Shader version: 500
Name 98 "v5"
Name 105 "flattenTemp"
Name 108 "@entryPointOutput.position"
Name 114 "VertexOut"
MemberName 114(VertexOut) 0 "texCoord"
Name 116 "@entryPointOutput"
Name 115 "@entryPointOutput.texCoord"
Decorate 108(@entryPointOutput.position) BuiltIn Position
Decorate 116(@entryPointOutput) Location 0
Decorate 115(@entryPointOutput.texCoord) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -395,12 +387,10 @@ Shader version: 500
109: TypeInt 32 1
110: 109(int) Constant 0
111: TypePointer Function 7(fvec4)
114(VertexOut): TypeStruct 8(fvec2)
115: TypePointer Output 114(VertexOut)
116(@entryPointOutput): 115(ptr) Variable Output
117: 109(int) Constant 1
118: TypePointer Function 8(fvec2)
121: TypePointer Output 8(fvec2)
114: TypePointer Output 8(fvec2)
115(@entryPointOutput.texCoord): 114(ptr) Variable Output
116: 109(int) Constant 1
117: TypePointer Function 8(fvec2)
4(main): 2 Function None 3
5: Label
105(flattenTemp): 87(ptr) Variable Function
@@ -409,10 +399,9 @@ Shader version: 500
112: 111(ptr) AccessChain 105(flattenTemp) 110
113: 7(fvec4) Load 112
Store 108(@entryPointOutput.position) 113
119: 118(ptr) AccessChain 105(flattenTemp) 117
120: 8(fvec2) Load 119
122: 121(ptr) AccessChain 116(@entryPointOutput) 110
Store 122 120
118: 117(ptr) AccessChain 105(flattenTemp) 116
119: 8(fvec2) Load 118
Store 115(@entryPointOutput.texCoord) 119
Return
FunctionEnd
11(r0():9(VertexOut) Function None 10