Add basic intra-stage linking validation for matching types and qualification of uniforms/ins/outs/globals, function body duplication, and mixing ES/non-ES shaders.
Still need to handle arrays and built-in redeclarations, and many more rules, but this puts the basics in place. git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23225 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
150
Test/baseResults/link1.frag.out
Normal file
150
Test/baseResults/link1.frag.out
Normal file
@@ -0,0 +1,150 @@
|
||||
link1.frag
|
||||
|
||||
0:? Sequence
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child (4-component vector of float)
|
||||
0:8 'a' (4-component vector of float)
|
||||
0:8 vector-scale (4-component vector of float)
|
||||
0:8 8.000000
|
||||
0:8 'uv4' (uniform 4-component vector of float)
|
||||
0:13 Function Definition: main( (void)
|
||||
0:13 Function Parameters:
|
||||
0:17 Sequence
|
||||
0:17 move second child to first child (4-component vector of float)
|
||||
0:17 'b' (4-component vector of float)
|
||||
0:17 vector-scale (4-component vector of float)
|
||||
0:17 8.000000
|
||||
0:17 'a' (4-component vector of float)
|
||||
0:19 Function Definition: foo(mf22; (2-component vector of int)
|
||||
0:19 Function Parameters:
|
||||
0:19 'm' (in 2X2 matrix of float)
|
||||
0:21 Sequence
|
||||
0:21 Branch: Return with expression
|
||||
0:21 Convert float to int (2-component vector of int)
|
||||
0:21 direct index (in 2-component vector of float)
|
||||
0:21 'm' (in 2X2 matrix of float)
|
||||
0:21 0 (const int)
|
||||
0:24 Sequence
|
||||
0:24 move second child to first child (4-component vector of float)
|
||||
0:24 'c' (4-component vector of float)
|
||||
0:24 component-wise multiply (4-component vector of float)
|
||||
0:24 'b' (4-component vector of float)
|
||||
0:24 'b' (4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'uv4' (uniform 4-component vector of float)
|
||||
0:? 'glass' (uniform 3-component vector of float)
|
||||
0:? 'iv3' (smooth in 3-component vector of float)
|
||||
0:? 'cup' (smooth in 4-component vector of float)
|
||||
|
||||
link2.frag
|
||||
|
||||
0:? Sequence
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child (4-component vector of float)
|
||||
0:8 'd' (4-component vector of float)
|
||||
0:8 vector-scale (4-component vector of float)
|
||||
0:8 8.000000
|
||||
0:8 'uv4' (uniform 4-component vector of float)
|
||||
0:13 Sequence
|
||||
0:13 move second child to first child (4-component vector of float)
|
||||
0:13 'e' (4-component vector of float)
|
||||
0:13 vector-scale (4-component vector of float)
|
||||
0:13 8.000000
|
||||
0:13 'd' (4-component vector of float)
|
||||
0:15 Function Definition: foo( (2-component vector of int)
|
||||
0:15 Function Parameters:
|
||||
0:17 Sequence
|
||||
0:17 Branch: Return with expression
|
||||
0:17 2 (const int)
|
||||
0:17 2 (const int)
|
||||
0:20 Sequence
|
||||
0:20 move second child to first child (4-component vector of float)
|
||||
0:20 'f' (4-component vector of float)
|
||||
0:20 component-wise multiply (4-component vector of float)
|
||||
0:20 'e' (4-component vector of float)
|
||||
0:20 'e' (4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'uv4' (uniform 4-component vector of float)
|
||||
0:? 'glass' (uniform 2-component vector of float)
|
||||
0:? 'iv3' (smooth in 3-component vector of float)
|
||||
0:? 'cup' (flat in 4-component vector of float)
|
||||
|
||||
link3.frag
|
||||
|
||||
0:? Sequence
|
||||
0:? Linker Objects
|
||||
0:? 'iv3' (smooth in highp 2-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
ERROR: Linking fragment stage: Types must match:
|
||||
glass: "uniform 3-component vector of float" versus "uniform 2-component vector of float"
|
||||
ERROR: Linking fragment stage: Interpolation and auxiliary storage qualifiers must match:
|
||||
cup: "smooth in 4-component vector of float" versus "flat in 4-component vector of float"
|
||||
ERROR: Linking fragment stage: Cannot mix ES profile with non-ES profile shaders
|
||||
|
||||
ERROR: Linking fragment stage: Types must match:
|
||||
ERROR: Linking fragment stage: Precision qualifiers must match:
|
||||
iv3: "smooth in 3-component vector of float" versus "smooth in highp 2-component vector of float"
|
||||
|
||||
0:? Sequence
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child (4-component vector of float)
|
||||
0:8 'a' (4-component vector of float)
|
||||
0:8 vector-scale (4-component vector of float)
|
||||
0:8 8.000000
|
||||
0:8 'uv4' (uniform 4-component vector of float)
|
||||
0:13 Function Definition: main( (void)
|
||||
0:13 Function Parameters:
|
||||
0:17 Sequence
|
||||
0:17 move second child to first child (4-component vector of float)
|
||||
0:17 'b' (4-component vector of float)
|
||||
0:17 vector-scale (4-component vector of float)
|
||||
0:17 8.000000
|
||||
0:17 'a' (4-component vector of float)
|
||||
0:19 Function Definition: foo(mf22; (2-component vector of int)
|
||||
0:19 Function Parameters:
|
||||
0:19 'm' (in 2X2 matrix of float)
|
||||
0:21 Sequence
|
||||
0:21 Branch: Return with expression
|
||||
0:21 Convert float to int (2-component vector of int)
|
||||
0:21 direct index (in 2-component vector of float)
|
||||
0:21 'm' (in 2X2 matrix of float)
|
||||
0:21 0 (const int)
|
||||
0:24 Sequence
|
||||
0:24 move second child to first child (4-component vector of float)
|
||||
0:24 'c' (4-component vector of float)
|
||||
0:24 component-wise multiply (4-component vector of float)
|
||||
0:24 'b' (4-component vector of float)
|
||||
0:24 'b' (4-component vector of float)
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child (4-component vector of float)
|
||||
0:8 'd' (4-component vector of float)
|
||||
0:8 vector-scale (4-component vector of float)
|
||||
0:8 8.000000
|
||||
0:8 'uv4' (uniform 4-component vector of float)
|
||||
0:13 Sequence
|
||||
0:13 move second child to first child (4-component vector of float)
|
||||
0:13 'e' (4-component vector of float)
|
||||
0:13 vector-scale (4-component vector of float)
|
||||
0:13 8.000000
|
||||
0:13 'd' (4-component vector of float)
|
||||
0:15 Function Definition: foo( (2-component vector of int)
|
||||
0:15 Function Parameters:
|
||||
0:17 Sequence
|
||||
0:17 Branch: Return with expression
|
||||
0:17 2 (const int)
|
||||
0:17 2 (const int)
|
||||
0:20 Sequence
|
||||
0:20 move second child to first child (4-component vector of float)
|
||||
0:20 'f' (4-component vector of float)
|
||||
0:20 component-wise multiply (4-component vector of float)
|
||||
0:20 'e' (4-component vector of float)
|
||||
0:20 'e' (4-component vector of float)
|
||||
0:? Linker Objects
|
||||
0:? 'uv4' (uniform 4-component vector of float)
|
||||
0:? 'glass' (uniform 3-component vector of float)
|
||||
0:? 'iv3' (smooth in 3-component vector of float)
|
||||
0:? 'cup' (smooth in 4-component vector of float)
|
||||
|
||||
Reference in New Issue
Block a user