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:
John Kessenich
2013-09-24 21:18:46 +00:00
parent f5ebfb5f27
commit 337dbc7d8c
37 changed files with 657 additions and 196 deletions

View File

@@ -281,9 +281,15 @@ ERROR: node is still EOpNull!
0:121 'gl_TexCoord' (smooth in unsized array of 4-component vector of float)
0:121 3 (const int)
0:? Linker Objects
0:? 'lowp' (float)
0:? 'mediump' (float)
0:? 'highp' (float)
0:? 'precision' (float)
0:? 'i' (smooth in 4-component vector of float)
0:? 'o' (out 4-component vector of float)
0:? 's2D' (uniform sampler2D)
0:? 'centTexCoord' (centroid smooth in 2-component vector of float)
0:? 'm' (uniform 4X2 matrix of float)
0:? 'imageBuffer' (float)
0:? 'uimage2DRect' (float)

View File

@@ -134,6 +134,7 @@ ERROR: node is still EOpNull!
0:? 'rep2' (centroid smooth sample out highp 4-component vector of float)
0:? 'rep3' (in highp 4-component vector of float)
0:? 's' (smooth out structure)
0:? 'badsize2' (unsized array of highp float)
0:? 'ubInst' (layout(shared ) uniform unsized array of block)
0:? 'gl_VertexID' (gl_VertexId highp int)
0:? 'gl_InstanceID' (gl_InstanceId highp int)

View File

@@ -181,4 +181,25 @@ ERROR: node is still EOpNull!
0:67 unpackHalf2x16 (mediump 2-component vector of float)
0:67 'uy' (mediump uint)
0:70 0.000000
0:? Linker Objects
0:? 'imax' (mediump int)
0:? 'imin' (mediump int)
0:? 'umax' (mediump uint)
0:? 'umin' (mediump uint)
0:? 'x' (mediump 3-component vector of float)
0:? 'y' (mediump 3-component vector of float)
0:? 'bv' (3-component vector of bool)
0:? 'uy' (mediump uint)
0:? 'uv2c' (mediump 2-component vector of uint)
0:? 'uv2y' (mediump 2-component vector of uint)
0:? 'uv2x' (mediump 2-component vector of uint)
0:? 'uv4y' (mediump 4-component vector of uint)
0:? 'iv3a' (mediump 3-component vector of int)
0:? 'iv3b' (mediump 3-component vector of int)
0:? 'iv4a' (mediump 4-component vector of int)
0:? 'iv4b' (mediump 4-component vector of int)
0:? 'f' (mediump float)
0:? 'v2a' (mediump 2-component vector of float)
0:? 'v2b' (mediump 2-component vector of float)
0:? 'v4' (mediump 4-component vector of float)

View File

@@ -199,4 +199,5 @@ ERROR: node is still EOpNull!
0:127 'iv3' (mediump 3-component vector of int)
0:? Linker Objects
0:? 'instanceName' (layout(shared ) uniform block)
0:? 's' (structure)

View File

@@ -90,6 +90,7 @@ ERROR: node is still EOpNull!
0:62 'S' (structure)
0:62 0 (const int)
0:? Linker Objects
0:? 'b' (bool)
0:? 'gl_VertexID' (gl_VertexId highp int)
0:? 'gl_InstanceID' (gl_InstanceId highp int)

View File

@@ -1,10 +1,12 @@
0:3Function Definition: main( (void)
0:3 Function Parameters:
0:5 Sequence
0:5 EmitStreamVertex (void)
0:5 1 (const int)
0:6 EndStreamPrimitive (void)
0:6 0 (const int)
0:7 EmitVertex (void)
0:8 EndPrimitive (void)
0:? Sequence
0:3 Function Definition: main( (void)
0:3 Function Parameters:
0:5 Sequence
0:5 EmitStreamVertex (void)
0:5 1 (const int)
0:6 EndStreamPrimitive (void)
0:6 0 (const int)
0:7 EmitVertex (void)
0:8 EndPrimitive (void)
0:? Linker Objects

View File

@@ -1,5 +1,7 @@
0:3Function Definition: main( (void)
0:3 Function Parameters:
0:5 Sequence
0:5 Barrier (void)
0:? Sequence
0:3 Function Definition: main( (void)
0:3 Function Parameters:
0:5 Sequence
0:5 Barrier (void)
0:? Linker Objects

View File

@@ -1,8 +1,10 @@
ERROR: 0:5: 'barrier' : no matching overloaded function found
ERROR: 1 compilation errors. No code generated.
0:3Function Definition: main( (void)
0:3 Function Parameters:
0:5 Sequence
0:5 0.000000
ERROR: node is still EOpNull!
0:3 Function Definition: main( (void)
0:3 Function Parameters:
0:5 Sequence
0:5 0.000000
0:? Linker Objects

View File

@@ -1,5 +1,7 @@
0:3Function Definition: main( (void)
0:3 Function Parameters:
0:5 Sequence
0:5 MemoryBarrier (void)
0:? Sequence
0:3 Function Definition: main( (void)
0:3 Function Parameters:
0:5 Sequence
0:5 MemoryBarrier (void)
0:? Linker Objects

View File

@@ -1,9 +1,11 @@
0:3Function Definition: main( (void)
0:3 Function Parameters:
0:5 Sequence
0:5 MemoryBarrierAtomicCounter (void)
0:6 MemoryBarrierBuffer (void)
0:7 MemoryBarrierShared (void)
0:8 MemoryBarrierImage (void)
0:9 GroupMemoryBarrier (void)
0:? Sequence
0:3 Function Definition: main( (void)
0:3 Function Parameters:
0:5 Sequence
0:5 MemoryBarrierAtomicCounter (void)
0:6 MemoryBarrierBuffer (void)
0:7 MemoryBarrierShared (void)
0:8 MemoryBarrierImage (void)
0:9 GroupMemoryBarrier (void)
0:? Linker Objects

View File

@@ -86,6 +86,8 @@ ERROR: node is still EOpNull!
0:62 'S' (structure)
0:62 0 (const int)
0:? Linker Objects
0:? 'b' (bool)
0:? 'tan' (float)
0:? 'gl_VertexID' (gl_VertexId int)
0:? 'gl_InstanceID' (gl_InstanceId int)

View File

@@ -20,4 +20,5 @@ WARNING: #version: statement missing; use #version on first line of shader
0:39 'gl_Position' (gl_Position highp 4-component vector of float)
0:39 Construct vec4 (highp 4-component vector of float)
0:39 'sum' (highp float)
0:? Linker Objects

View File

@@ -25,4 +25,5 @@
0:56 'gl_Position' (gl_Position 4-component vector of float)
0:56 Construct vec4 (4-component vector of float)
0:56 'sum' (float)
0:? Linker Objects

View File

@@ -28,4 +28,5 @@
0:86 'gl_Position' (gl_Position 4-component vector of float)
0:86 Construct vec4 (4-component vector of float)
0:86 'sum' (float)
0:? Linker Objects

View File

@@ -70,4 +70,6 @@ ERROR: node is still EOpNull!
0:130 move second child to first child (float)
0:130 'twoPi' (float)
0:130 6.280000
0:? Linker Objects
0:? 'tod' (float)

View File

@@ -113,4 +113,5 @@
0:53 5 (const int)
0:55 Pre-Increment (int)
0:55 'c' (int)
0:? Linker Objects

View File

@@ -3,10 +3,12 @@ ERROR: 0:1: 'main' : function cannot take any parameter(s)
ERROR: 0:1: 'int' : main function cannot return a value
ERROR: 2 compilation errors. No code generated.
0:1Function Definition: main(i1; (mediump int)
0:1 Function Parameters:
0:1 'foo' (in mediump int)
0:3 Sequence
0:3 Branch: Return with expression
0:3 1 (const int)
ERROR: node is still EOpNull!
0:1 Function Definition: main(i1; (mediump int)
0:1 Function Parameters:
0:1 'foo' (in mediump int)
0:3 Sequence
0:3 Branch: Return with expression
0:3 1 (const int)
0:? Linker Objects

View File

@@ -97,4 +97,5 @@
0:35 Construct vec4 (mediump 4-component vector of float)
0:35 Convert int to float (mediump float)
0:35 'color' (mediump int)
0:? Linker Objects

View File

@@ -18,4 +18,5 @@
0:17 30.000000
0:17 30.000000
0:17 30.000000
0:? Linker Objects

View File

@@ -12,6 +12,7 @@ ERROR: node is still EOpNull!
0:20 Construct vec4 (highp 4-component vector of float)
0:20 'foo' (highp float)
0:? Linker Objects
0:? 'foo' (highp float)
0:? 'gl_VertexID' (gl_VertexId highp int)
0:? 'gl_InstanceID' (gl_InstanceId highp int)

View 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)

View File

@@ -1,33 +1,54 @@
mains1.frag
0:3Function Definition: main( (void)
0:3 Function Parameters:
0:? Sequence
0:3 Function Definition: main( (void)
0:3 Function Parameters:
0:? Linker Objects
mains2.frag
0:3Function Definition: main( (void)
0:3 Function Parameters:
0:? Sequence
0:3 Function Definition: main( (void)
0:3 Function Parameters:
0:? Linker Objects
noMain1.geom
ERROR: #version: geometry shaders require non-es profile and version 150 or above
ERROR: 1 compilation errors. No code generated.
0:3Function Definition: foo( (void)
0:3 Function Parameters:
ERROR: node is still EOpNull!
0:3 Function Definition: foo( (void)
0:3 Function Parameters:
0:? Linker Objects
noMain2.geom
0:3Function Definition: bar( (void)
0:3 Function Parameters:
0:? Sequence
0:3 Function Definition: bar( (void)
0:3 Function Parameters:
0:? Linker Objects
Linked geometry stage:
ERROR: Missing entry point: Each stage requires one "void main()" entry point
ERROR: Linking geometry stage: Missing entry point: Each stage requires one "void main()" entry point
Linked fragment stage:
ERROR: Too many entry points: Each stage can have at most one "void main()" entry point.
ERROR: Linking fragment stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main(
ERROR: node is still EOpNull!
0:3 Function Definition: foo( (void)
0:3 Function Parameters:
0:3 Function Definition: bar( (void)
0:3 Function Parameters:
0:? Linker Objects
0:? Sequence
0:3 Function Definition: main( (void)
0:3 Function Parameters:
0:3 Function Definition: main( (void)
0:3 Function Parameters:
0:? Linker Objects

View File

@@ -1,7 +1,11 @@
noMain.vert
0:3Function Definition: foo( (void)
0:3 Function Parameters:
0:? Sequence
0:3 Function Definition: foo( (void)
0:3 Function Parameters:
0:? Linker Objects
0:? 'gl_VertexID' (gl_VertexId highp int)
0:? 'gl_InstanceID' (gl_InstanceId highp int)
mains.frag
ERROR: 0:7: 'main' : function already has a body
@@ -13,14 +17,14 @@ ERROR: node is still EOpNull!
0:3 Function Parameters:
0:7 Function Definition: main( (void)
0:7 Function Parameters:
0:? Linker Objects
Linked vertex stage:
ERROR: Missing entry point: Each stage requires one "void main()" entry point
ERROR: Linking vertex stage: Missing entry point: Each stage requires one "void main()" entry point
Linked fragment stage:
ERROR: Too many entry points: Each stage can have at most one "void main()" entry point.

View File

@@ -103,7 +103,10 @@ ERROR: node is still EOpNull!
0:69 0.200000
0:? Linker Objects
0:? 'color' (smooth in mediump 3-component vector of float)
0:? 'global_medium' (mediump int)
0:? 'samplerLow' (uniform lowp sampler2D)
0:? 'samplerMed' (uniform mediump sampler2D)
0:? 'samplerHigh' (uniform highp sampler2D)
0:? 'uint' (mediump 4-component vector of float)
0:? 'global_high' (highp int)

View File

@@ -1,112 +1,114 @@
0:3Function Definition: main( (void)
0:3 Function Parameters:
0:? Sequence
0:10 Sequence
0:10 move second child to first child (int)
0:10 'index' (int)
0:10 5 (const int)
0:12 move second child to first child (float)
0:12 direct index (float)
0:12 y: direct index for structure (5-element array of float)
0:12 'str' (structure)
0:12 0 (const int)
0:12 4 (const int)
0:12 2.000000
0:13 move second child to first child (float)
0:13 't' (float)
0:13 Pre-Increment (float)
0:13 indirect index (float)
0:13 y: direct index for structure (5-element array of float)
0:13 'str' (structure)
0:13 0 (const int)
0:13 Pre-Decrement (int)
0:13 'index' (int)
0:14 add second child into first child (float)
0:14 direct index (float)
0:14 y: direct index for structure (5-element array of float)
0:14 'str' (structure)
0:14 0 (const int)
0:14 4 (const int)
0:14 't' (float)
0:15 move second child to first child (float)
0:15 't' (float)
0:15 Post-Decrement (float)
0:15 direct index (float)
0:15 y: direct index for structure (5-element array of float)
0:15 'str' (structure)
0:15 0 (const int)
0:15 4 (const int)
0:16 add second child into first child (float)
0:16 indirect index (float)
0:16 y: direct index for structure (5-element array of float)
0:16 'str' (structure)
0:16 0 (const int)
0:16 Post-Increment (int)
0:16 'index' (int)
0:16 't' (float)
0:17 Pre-Decrement (float)
0:17 indirect index (float)
0:17 y: direct index for structure (5-element array of float)
0:17 'str' (structure)
0:17 0 (const int)
0:17 Pre-Decrement (int)
0:17 'index' (int)
0:19 Sequence
0:19 move second child to first child (float)
0:19 'x' (float)
0:19 direct index (float)
0:19 y: direct index for structure (5-element array of float)
0:19 'str' (structure)
0:19 0 (const int)
0:19 4 (const int)
0:20 Pre-Increment (float)
0:20 'x' (float)
0:21 Pre-Decrement (float)
0:21 'x' (float)
0:22 Post-Increment (float)
0:22 'x' (float)
0:23 Post-Decrement (float)
0:23 'x' (float)
0:27 Sequence
0:27 move second child to first child (float)
0:27 'y' (float)
0:27 component-wise multiply (float)
0:27 'x' (float)
0:27 Pre-Increment (float)
0:? Sequence
0:3 Function Definition: main( (void)
0:3 Function Parameters:
0:? Sequence
0:10 Sequence
0:10 move second child to first child (int)
0:10 'index' (int)
0:10 5 (const int)
0:12 move second child to first child (float)
0:12 direct index (float)
0:12 y: direct index for structure (5-element array of float)
0:12 'str' (structure)
0:12 0 (const int)
0:12 4 (const int)
0:12 2.000000
0:13 move second child to first child (float)
0:13 't' (float)
0:13 Pre-Increment (float)
0:13 indirect index (float)
0:13 y: direct index for structure (5-element array of float)
0:13 'str' (structure)
0:13 0 (const int)
0:13 Pre-Decrement (int)
0:13 'index' (int)
0:14 add second child into first child (float)
0:14 direct index (float)
0:14 y: direct index for structure (5-element array of float)
0:14 'str' (structure)
0:14 0 (const int)
0:14 4 (const int)
0:14 't' (float)
0:15 move second child to first child (float)
0:15 't' (float)
0:15 Post-Decrement (float)
0:15 direct index (float)
0:15 y: direct index for structure (5-element array of float)
0:15 'str' (structure)
0:15 0 (const int)
0:15 4 (const int)
0:16 add second child into first child (float)
0:16 indirect index (float)
0:16 y: direct index for structure (5-element array of float)
0:16 'str' (structure)
0:16 0 (const int)
0:16 Post-Increment (int)
0:16 'index' (int)
0:16 't' (float)
0:17 Pre-Decrement (float)
0:17 indirect index (float)
0:17 y: direct index for structure (5-element array of float)
0:17 'str' (structure)
0:17 0 (const int)
0:17 Pre-Decrement (int)
0:17 'index' (int)
0:19 Sequence
0:19 move second child to first child (float)
0:19 'x' (float)
0:19 direct index (float)
0:19 y: direct index for structure (5-element array of float)
0:19 'str' (structure)
0:19 0 (const int)
0:19 4 (const int)
0:20 Pre-Increment (float)
0:20 'x' (float)
0:21 Pre-Decrement (float)
0:21 'x' (float)
0:22 Post-Increment (float)
0:22 'x' (float)
0:23 Post-Decrement (float)
0:23 'x' (float)
0:27 Sequence
0:27 move second child to first child (float)
0:27 'y' (float)
0:27 component-wise multiply (float)
0:27 'x' (float)
0:28 Sequence
0:28 move second child to first child (float)
0:28 'z' (float)
0:28 component-wise multiply (float)
0:28 'y' (float)
0:28 Post-Decrement (float)
0:28 'x' (float)
0:33 Sequence
0:33 move second child to first child (4-component vector of float)
0:33 'v' (4-component vector of float)
0:33 1.000000
0:33 2.000000
0:33 3.000000
0:33 4.000000
0:34 move second child to first child (float)
0:34 direct index (float)
0:34 'v' (4-component vector of float)
0:34 1 (const int)
0:34 Post-Decrement (float)
0:27 Pre-Increment (float)
0:27 'x' (float)
0:28 Sequence
0:28 move second child to first child (float)
0:28 'z' (float)
0:28 component-wise multiply (float)
0:28 'y' (float)
0:28 Post-Decrement (float)
0:28 'x' (float)
0:33 Sequence
0:33 move second child to first child (4-component vector of float)
0:33 'v' (4-component vector of float)
0:33 1.000000
0:33 2.000000
0:33 3.000000
0:33 4.000000
0:34 move second child to first child (float)
0:34 direct index (float)
0:34 'v' (4-component vector of float)
0:34 2 (const int)
0:35 move second child to first child (float)
0:35 direct index (float)
0:35 'v' (4-component vector of float)
0:35 0 (const int)
0:35 Pre-Decrement (float)
0:34 1 (const int)
0:34 Post-Decrement (float)
0:34 direct index (float)
0:34 'v' (4-component vector of float)
0:34 2 (const int)
0:35 move second child to first child (float)
0:35 direct index (float)
0:35 'v' (4-component vector of float)
0:35 3 (const int)
0:37 move second child to first child (4-component vector of float)
0:37 'gl_FragColor' (fragColor 4-component vector of float)
0:37 vector-scale (4-component vector of float)
0:37 'z' (float)
0:37 'v' (4-component vector of float)
0:35 0 (const int)
0:35 Pre-Decrement (float)
0:35 direct index (float)
0:35 'v' (4-component vector of float)
0:35 3 (const int)
0:37 move second child to first child (4-component vector of float)
0:37 'gl_FragColor' (fragColor 4-component vector of float)
0:37 vector-scale (4-component vector of float)
0:37 'z' (float)
0:37 'v' (4-component vector of float)
0:? Linker Objects

View File

@@ -196,6 +196,22 @@ ERROR: node is still EOpNull!
0:218 'c' (5-element array of float)
0:218 'a' (5-element array of float)
0:? Linker Objects
0:? 'fa' (float)
0:? 'fc' (double)
0:? 'texcoord1' (2-component vector of float)
0:? 'texcoord2' (2-component vector of float)
0:? 'position' (3-component vector of float)
0:? 'myRGBA' (4-component vector of float)
0:? 'textureLookup' (2-component vector of int)
0:? 'less' (3-component vector of bool)
0:? 'mat2D' (2X2 matrix of float)
0:? 'optMatrix' (3X3 matrix of float)
0:? 'view' (4X4 matrix of float)
0:? 'projection' (4X4 matrix of float)
0:? 'm' (3X2 matrix of float)
0:? 'highPrecisionMVP' (4X4 matrix of double)
0:? 'dm' (2X4 matrix of double)
0:? 'lightVar' (structure)
0:? 'normal' (smooth in 3-component vector of float)
0:? 'TexCoord' (centroid smooth in 2-component vector of float)
0:? 'Color' (invariant centroid smooth in 4-component vector of float)

View File

@@ -2,4 +2,9 @@ ERROR: 0:9: 'vec5' : undeclared identifier
ERROR: 0:9: '' : syntax error
ERROR: 2 compilation errors. No code generated.
ERROR: node is still EOpNull!
0:? Linker Objects
0:? 'bigColor' (uniform 4-component vector of float)
0:? 'BaseColor' (smooth in 4-component vector of float)
0:? 'd' (uniform float)

View File

@@ -77,6 +77,7 @@ ERROR: node is still EOpNull!
0:? Linker Objects
0:? 'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)
0:? 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)
0:? 'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789B' (highp float)
0:? 'gl_VertexID' (gl_VertexId highp int)
0:? 'gl_InstanceID' (gl_InstanceId highp int)

24
Test/link1.frag Normal file
View File

@@ -0,0 +1,24 @@
#version 130
uniform vec4 uv4;
uniform vec3 glass;
const int ci = 8;
vec4 a = ci * uv4;
in vec3 iv3;
in vec4 cup;
void main()
{
}
vec4 b = ci * a;
ivec2 foo(mat2 m)
{
return ivec2(m[0]);
}
vec4 c = b * b;

20
Test/link2.frag Normal file
View File

@@ -0,0 +1,20 @@
#version 130
uniform vec4 uv4;
uniform vec2 glass;
const int ci = 8;
vec4 d = ci * uv4;
in vec3 iv3;
flat in vec4 cup;
vec4 e = ci * d;
ivec2 foo()
{
return ivec2(2);
}
vec4 f = e * e;

5
Test/link3.frag Normal file
View File

@@ -0,0 +1,5 @@
#version 300 es
precision highp float;
in vec2 iv3;

View File

@@ -33,7 +33,8 @@ function runLinkTest {
}
runLinkTest mains1.frag mains2.frag noMain1.geom noMain2.geom
runLinkTest noMain.vert mains.frag
runLinkTest noMain.vert mains.frag
runLinkTest link1.frag link2.frag link3.frag
#
# multi-threaded test
@@ -42,4 +43,3 @@ echo Comparing single thread to multithread for all tests in current directory..
$EXE -i *.vert *.geom *.frag *.tes* *.comp > singleThread.out
$EXE -i *.vert *.geom *.frag *.tes* *.comp -t > multiThread.out
diff singleThread.out multiThread.out