HLSL: fix GS implementation for EP wrapping

The prior implementation of GS did not work with the new EP wrapping architecture.
This fixes it: the Append() method now looks up the actual output rather
than the internal sanitized temporary type, and writes to that.
This commit is contained in:
steve-lunarg
2017-03-29 20:01:13 -06:00
parent 2184c2f21a
commit 08e0c086c8
10 changed files with 494 additions and 237 deletions

View File

@@ -72,6 +72,7 @@ output primitive = triangle_strip
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:? Linker Objects
0:? 'v' (layout( location=0) in 1-element array of uint)
0:? 'OutputStream' (layout( location=0) out structure{ temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
Linked geometry stage:
@@ -150,15 +151,16 @@ output primitive = triangle_strip
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:? Linker Objects
0:? 'v' (layout( location=0) in 1-element array of uint)
0:? 'OutputStream' (layout( location=0) out structure{ temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 73
// Id's are bound by 77
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 66
EntryPoint Geometry 4 "main" 66 76
ExecutionMode 4 InputPoints
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
@@ -181,7 +183,13 @@ output primitive = triangle_strip
Name 68 "OutputStream"
Name 69 "param"
Name 71 "param"
Name 74 "PSInput"
MemberName 74(PSInput) 0 "TexCoord"
MemberName 74(PSInput) 1 "TerrainPos"
MemberName 74(PSInput) 2 "VertexID"
Name 76 "OutputStream"
Decorate 66(v) Location 0
Decorate 76(OutputStream) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -214,6 +222,9 @@ output primitive = triangle_strip
60: 28(int) Constant 1
65: TypePointer Input 8
66(v): 65(ptr) Variable Input
74(PSInput): TypeStruct 12(fvec2) 13(fvec3) 6(int)
75: TypePointer Output 74(PSInput)
76(OutputStream): 75(ptr) Variable Output
4(main): 2 Function None 3
5: Label
64(v): 9(ptr) Variable Function
@@ -225,6 +236,8 @@ output primitive = triangle_strip
70: 8 Load 64(v)
Store 69(param) 70
72: 2 FunctionCall 19(@main(u1[1];struct-PSInput-vf4-vf2-vf3-u11;) 69(param) 71(param)
73: 14(PSInput) Load 71(param)
Store 68(OutputStream) 73
Return
FunctionEnd
19(@main(u1[1];struct-PSInput-vf4-vf2-vf3-u11;): 2 Function None 16