SPV: Generalize multiple struct-type instances for interpolation/invariant qualifiers.

This commit is contained in:
John Kessenich
2015-12-24 10:30:13 -07:00
parent 69d01eadd6
commit e0b6cad44f
4 changed files with 108 additions and 50 deletions

View File

@@ -7,12 +7,12 @@ Linked vertex stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 63
// Id's are bound by 69
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 61 62
EntryPoint Vertex 4 "main" 62 65 67 68
Source GLSL 450
Name 4 "main"
Name 14 "S"
@@ -82,8 +82,18 @@ Linked vertex stage:
MemberName 57(bBt3) 0 "ntcol"
MemberName 57(bBt3) 1 "ntrow"
Name 59 "bBtn3"
Name 61 "gl_VertexID"
Name 62 "gl_InstanceID"
Name 60 "S"
MemberName 60(S) 0 "a"
MemberName 60(S) 1 "b"
MemberName 60(S) 2 "c"
Name 62 "sout"
Name 63 "S"
MemberName 63(S) 0 "a"
MemberName 63(S) 1 "b"
MemberName 63(S) 2 "c"
Name 65 "soutinv"
Name 67 "gl_VertexID"
Name 68 "gl_InstanceID"
Decorate 13 ArrayStride 32
MemberDecorate 14(S) 0 Offset 0
MemberDecorate 14(S) 1 ColMajor
@@ -156,8 +166,15 @@ Linked vertex stage:
Decorate 57(bBt3) BufferBlock
Decorate 59(bBtn3) DescriptorSet 1
Decorate 59(bBtn3) Binding 0
Decorate 61(gl_VertexID) BuiltIn VertexId
Decorate 62(gl_InstanceID) BuiltIn InstanceId
MemberDecorate 60(S) 0 Flat
MemberDecorate 60(S) 1 Flat
MemberDecorate 60(S) 2 Flat
MemberDecorate 63(S) 0 Invariant
MemberDecorate 63(S) 1 Invariant
MemberDecorate 63(S) 2 Invariant
Decorate 65(soutinv) Invariant
Decorate 67(gl_VertexID) BuiltIn VertexId
Decorate 68(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -214,9 +231,15 @@ Linked vertex stage:
57(bBt3): TypeStruct 48(Nestor) 53(Nestor)
58: TypePointer Uniform 57(bBt3)
59(bBtn3): 58(ptr) Variable Uniform
60: TypePointer Input 6(int)
61(gl_VertexID): 60(ptr) Variable Input
62(gl_InstanceID): 60(ptr) Variable Input
60(S): TypeStruct 8(ivec3) 13 7(int)
61: TypePointer Output 60(S)
62(sout): 61(ptr) Variable Output
63(S): TypeStruct 8(ivec3) 13 7(int)
64: TypePointer Output 63(S)
65(soutinv): 64(ptr) Variable Output
66: TypePointer Input 6(int)
67(gl_VertexID): 66(ptr) Variable Input
68(gl_InstanceID): 66(ptr) Variable Input
4(main): 2 Function None 3
5: Label
Return