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:
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -113,4 +113,5 @@
|
||||
0:53 5 (const int)
|
||||
0:55 Pre-Increment (int)
|
||||
0:55 'c' (int)
|
||||
0:? Linker Objects
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -18,4 +18,5 @@
|
||||
0:17 30.000000
|
||||
0:17 30.000000
|
||||
0:17 30.000000
|
||||
0:? Linker Objects
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
24
Test/link1.frag
Normal 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
20
Test/link2.frag
Normal 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
5
Test/link3.frag
Normal file
@@ -0,0 +1,5 @@
|
||||
#version 300 es
|
||||
|
||||
precision highp float;
|
||||
|
||||
in vec2 iv3;
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user