Whole stack: Fix stale types in the AST linker object nodes, fixing #557.

Rationalizes the entire tracking of the linker object nodes, effecting
GLSL, HLSL, and SPIR-V, to allow tracked objects to be fully edited before
their type snapshot for linker objects.

Should only effect things when the rest of the AST contained no reference to
the symbol, because normal AST nodes were not stale. Also will only effect such
objects when their types were edited.
This commit is contained in:
John Kessenich
2016-11-05 10:15:53 -06:00
parent e5e58cfee3
commit d3f1122a44
107 changed files with 630 additions and 560 deletions

View File

@@ -114,6 +114,11 @@ Shader version: 450
0:? 4.000000
0:? 4.000000
0:? Linker Objects
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
0:? 'inI0' (layout(location=3 ) in 4-component vector of int)
0:? 'gs_ua' (global uint)
0:? 'gs_ub' (global uint)
0:? 'gs_uc' (global uint)
@@ -126,11 +131,6 @@ Shader version: 450
0:? 'gs_ua4' (global 4-component vector of uint)
0:? 'gs_ub4' (global 4-component vector of uint)
0:? 'gs_uc4' (global 4-component vector of uint)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
0:? 'inI0' (layout(location=3 ) in 4-component vector of int)
Linked vertex stage:
@@ -251,6 +251,11 @@ Shader version: 450
0:? 4.000000
0:? 4.000000
0:? Linker Objects
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
0:? 'inI0' (layout(location=3 ) in 4-component vector of int)
0:? 'gs_ua' (global uint)
0:? 'gs_ub' (global uint)
0:? 'gs_uc' (global uint)
@@ -263,11 +268,6 @@ Shader version: 450
0:? 'gs_ua4' (global 4-component vector of uint)
0:? 'gs_ub4' (global 4-component vector of uint)
0:? 'gs_uc4' (global 4-component vector of uint)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:? 'inF0' (layout(location=0 ) in 4-component vector of float)
0:? 'inF1' (layout(location=1 ) in 4-component vector of float)
0:? 'inF2' (layout(location=2 ) in 4-component vector of float)
0:? 'inI0' (layout(location=3 ) in 4-component vector of int)
// Module Version 10000
// Generated by (magic number): 80001
@@ -276,7 +276,7 @@ Shader version: 450
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "VertexShaderFunction" 85 122 123 124 127
EntryPoint Vertex 4 "VertexShaderFunction" 85 102 103 104 107
Name 4 "VertexShaderFunction"
Name 15 "VertexShaderFunctionS(f1;f1;f1;i1;"
Name 11 "inF0"
@@ -311,27 +311,27 @@ Shader version: 450
Name 66 "inF1"
Name 67 "inF2"
Name 85 "@entryPointOutput"
Name 103 "gs_ua"
Name 104 "gs_ub"
Name 105 "gs_uc"
Name 108 "gs_ua2"
Name 109 "gs_ub2"
Name 110 "gs_uc2"
Name 113 "gs_ua3"
Name 114 "gs_ub3"
Name 115 "gs_uc3"
Name 118 "gs_ua4"
Name 119 "gs_ub4"
Name 120 "gs_uc4"
Name 122 "inF0"
Name 123 "inF1"
Name 124 "inF2"
Name 127 "inI0"
Name 102 "inF0"
Name 103 "inF1"
Name 104 "inF2"
Name 107 "inI0"
Name 110 "gs_ua"
Name 111 "gs_ub"
Name 112 "gs_uc"
Name 115 "gs_ua2"
Name 116 "gs_ub2"
Name 117 "gs_uc2"
Name 120 "gs_ua3"
Name 121 "gs_ub3"
Name 122 "gs_uc3"
Name 125 "gs_ua4"
Name 126 "gs_ub4"
Name 127 "gs_uc4"
Decorate 85(@entryPointOutput) Location 0
Decorate 122(inF0) Location 0
Decorate 123(inF1) Location 1
Decorate 124(inF2) Location 2
Decorate 127(inI0) Location 3
Decorate 102(inF0) Location 0
Decorate 103(inF1) Location 1
Decorate 104(inF2) Location 2
Decorate 107(inI0) Location 3
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -375,33 +375,33 @@ Shader version: 450
94: 53 ConstantComposite 93 93 93
97: 61(fvec4) ConstantComposite 86 86 86 86
98: 62 ConstantComposite 97 97 97 97
101: TypeInt 32 0
102: TypePointer Private 101(int)
103(gs_ua): 102(ptr) Variable Private
104(gs_ub): 102(ptr) Variable Private
105(gs_uc): 102(ptr) Variable Private
106: TypeVector 101(int) 2
107: TypePointer Private 106(ivec2)
108(gs_ua2): 107(ptr) Variable Private
109(gs_ub2): 107(ptr) Variable Private
110(gs_uc2): 107(ptr) Variable Private
111: TypeVector 101(int) 3
112: TypePointer Private 111(ivec3)
113(gs_ua3): 112(ptr) Variable Private
114(gs_ub3): 112(ptr) Variable Private
115(gs_uc3): 112(ptr) Variable Private
116: TypeVector 101(int) 4
117: TypePointer Private 116(ivec4)
118(gs_ua4): 117(ptr) Variable Private
119(gs_ub4): 117(ptr) Variable Private
120(gs_uc4): 117(ptr) Variable Private
121: TypePointer Input 61(fvec4)
122(inF0): 121(ptr) Variable Input
123(inF1): 121(ptr) Variable Input
124(inF2): 121(ptr) Variable Input
125: TypeVector 8(int) 4
126: TypePointer Input 125(ivec4)
127(inI0): 126(ptr) Variable Input
101: TypePointer Input 61(fvec4)
102(inF0): 101(ptr) Variable Input
103(inF1): 101(ptr) Variable Input
104(inF2): 101(ptr) Variable Input
105: TypeVector 8(int) 4
106: TypePointer Input 105(ivec4)
107(inI0): 106(ptr) Variable Input
108: TypeInt 32 0
109: TypePointer Private 108(int)
110(gs_ua): 109(ptr) Variable Private
111(gs_ub): 109(ptr) Variable Private
112(gs_uc): 109(ptr) Variable Private
113: TypeVector 108(int) 2
114: TypePointer Private 113(ivec2)
115(gs_ua2): 114(ptr) Variable Private
116(gs_ub2): 114(ptr) Variable Private
117(gs_uc2): 114(ptr) Variable Private
118: TypeVector 108(int) 3
119: TypePointer Private 118(ivec3)
120(gs_ua3): 119(ptr) Variable Private
121(gs_ub3): 119(ptr) Variable Private
122(gs_uc3): 119(ptr) Variable Private
123: TypeVector 108(int) 4
124: TypePointer Private 123(ivec4)
125(gs_ua4): 124(ptr) Variable Private
126(gs_ub4): 124(ptr) Variable Private
127(gs_uc4): 124(ptr) Variable Private
4(VertexShaderFunction): 2 Function None 3
5: Label
Store 85(@entryPointOutput) 87