Flatten all interface variables (#2217)
Specifically, add flattening of arrayed io for geometry and tesselation shaders. Previously some interface structs just had builtins split out which caused some interfaces to not be exactly the same as that of flattened adjacent stages, affecting validation and correctness. This obviates builtin splitting. That will be removed in a followup commit. It was left in for this commit to better exhibit the functional changes that were made. Fixes #1660.
This commit is contained in:
parent
1a906168cd
commit
7c753a7253
17 changed files with 3325 additions and 1561 deletions
|
|
@ -42,9 +42,34 @@ output primitive = triangle_strip
|
|||
0:14 Function Definition: main( ( temp void)
|
||||
0:14 Function Parameters:
|
||||
0:? Sequence
|
||||
0:14 move second child to first child ( temp 3-element array of structure{})
|
||||
0:? 'input' ( temp 3-element array of structure{})
|
||||
0:? 'input' ( in 3-element array of structure{})
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp structure{})
|
||||
0:14 direct index ( temp structure{})
|
||||
0:? 'input' ( temp 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 0 (const int)
|
||||
0:14 direct index ( in structure{})
|
||||
0:? 'input' ( in 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 0 (const int)
|
||||
0:14 move second child to first child ( temp structure{})
|
||||
0:14 direct index ( temp structure{})
|
||||
0:? 'input' ( temp 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 1 (const int)
|
||||
0:14 direct index ( in structure{})
|
||||
0:? 'input' ( in 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 1 (const int)
|
||||
0:14 move second child to first child ( temp structure{})
|
||||
0:14 direct index ( temp structure{})
|
||||
0:? 'input' ( temp 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 2 (const int)
|
||||
0:14 direct index ( in structure{})
|
||||
0:? 'input' ( in 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 2 (const int)
|
||||
0:14 Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
|
||||
0:? 'input' ( temp 3-element array of structure{})
|
||||
0:? 'TriStream' ( temp structure{})
|
||||
|
|
@ -97,9 +122,34 @@ output primitive = triangle_strip
|
|||
0:14 Function Definition: main( ( temp void)
|
||||
0:14 Function Parameters:
|
||||
0:? Sequence
|
||||
0:14 move second child to first child ( temp 3-element array of structure{})
|
||||
0:? 'input' ( temp 3-element array of structure{})
|
||||
0:? 'input' ( in 3-element array of structure{})
|
||||
0:14 Sequence
|
||||
0:14 move second child to first child ( temp structure{})
|
||||
0:14 direct index ( temp structure{})
|
||||
0:? 'input' ( temp 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 0 (const int)
|
||||
0:14 direct index ( in structure{})
|
||||
0:? 'input' ( in 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 0 (const int)
|
||||
0:14 move second child to first child ( temp structure{})
|
||||
0:14 direct index ( temp structure{})
|
||||
0:? 'input' ( temp 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 1 (const int)
|
||||
0:14 direct index ( in structure{})
|
||||
0:? 'input' ( in 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 1 (const int)
|
||||
0:14 move second child to first child ( temp structure{})
|
||||
0:14 direct index ( temp structure{})
|
||||
0:? 'input' ( temp 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 2 (const int)
|
||||
0:14 direct index ( in structure{})
|
||||
0:? 'input' ( in 3-element array of structure{})
|
||||
0:14 Constant:
|
||||
0:14 2 (const int)
|
||||
0:14 Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
|
||||
0:? 'input' ( temp 3-element array of structure{})
|
||||
0:? 'TriStream' ( temp structure{})
|
||||
|
|
@ -108,7 +158,7 @@ output primitive = triangle_strip
|
|||
Validation failed
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80008
|
||||
// Id's are bound by 57
|
||||
// Id's are bound by 66
|
||||
|
||||
Capability Geometry
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
|
|
@ -136,9 +186,9 @@ Validation failed
|
|||
Name 44 "param"
|
||||
Name 47 "input"
|
||||
Name 49 "input"
|
||||
Name 51 "TriStream"
|
||||
Name 52 "param"
|
||||
Name 54 "param"
|
||||
Name 60 "TriStream"
|
||||
Name 61 "param"
|
||||
Name 63 "param"
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6(GSPS_INPUT): TypeStruct
|
||||
|
|
@ -157,19 +207,30 @@ Validation failed
|
|||
40: 25(int) Constant 2
|
||||
48: TypePointer Input 15
|
||||
49(input): 48(ptr) Variable Input
|
||||
50: TypePointer Input 6(GSPS_INPUT)
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
47(input): 16(ptr) Variable Function
|
||||
51(TriStream): 7(ptr) Variable Function
|
||||
52(param): 16(ptr) Variable Function
|
||||
54(param): 7(ptr) Variable Function
|
||||
50: 15 Load 49(input)
|
||||
Store 47(input) 50
|
||||
53: 15 Load 47(input)
|
||||
Store 52(param) 53
|
||||
55: 2 FunctionCall 20(@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;) 52(param) 54(param)
|
||||
56:6(GSPS_INPUT) Load 54(param)
|
||||
Store 51(TriStream) 56
|
||||
60(TriStream): 7(ptr) Variable Function
|
||||
61(param): 16(ptr) Variable Function
|
||||
63(param): 7(ptr) Variable Function
|
||||
51: 50(ptr) AccessChain 49(input) 26
|
||||
52:6(GSPS_INPUT) Load 51
|
||||
53: 7(ptr) AccessChain 47(input) 26
|
||||
Store 53 52
|
||||
54: 50(ptr) AccessChain 49(input) 33
|
||||
55:6(GSPS_INPUT) Load 54
|
||||
56: 7(ptr) AccessChain 47(input) 33
|
||||
Store 56 55
|
||||
57: 50(ptr) AccessChain 49(input) 40
|
||||
58:6(GSPS_INPUT) Load 57
|
||||
59: 7(ptr) AccessChain 47(input) 40
|
||||
Store 59 58
|
||||
62: 15 Load 47(input)
|
||||
Store 61(param) 62
|
||||
64: 2 FunctionCall 20(@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;) 61(param) 63(param)
|
||||
65:6(GSPS_INPUT) Load 63(param)
|
||||
Store 60(TriStream) 65
|
||||
Return
|
||||
FunctionEnd
|
||||
11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;): 2 Function None 8
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue