Require l-value patch-out indexing to be gl_InvocationID.

Also, generally allow ES variable indexing of in/out blocks.
This commit is contained in:
John Kessenich 2015-11-28 15:19:11 -07:00
parent 989df85dcd
commit 1be8063e01
16 changed files with 354 additions and 196 deletions

View File

@ -25,9 +25,9 @@ void main()
int pid = gl_PrimitiveID; int pid = gl_PrimitiveID;
int iid = gl_InvocationID; int iid = gl_InvocationID;
gl_out[1].gl_Position = p; gl_out[gl_InvocationID].gl_Position = p;
gl_out[1].gl_PointSize = ps; gl_out[gl_InvocationID].gl_PointSize = ps;
gl_out[1].gl_ClipDistance[1] = cd; gl_out[gl_InvocationID].gl_ClipDistance[1] = cd;
gl_TessLevelOuter[3] = 3.2; gl_TessLevelOuter[3] = 3.2;
gl_TessLevelInner[1] = 1.3; gl_TessLevelInner[1] = 1.3;

View File

@ -166,7 +166,7 @@ void fooIO()
{ {
vec4 v = inbinst.v + vAnon; vec4 v = inbinst.v + vAnon;
v *= arrayedInst[2].f; v *= arrayedInst[2].f;
v *= arrayedInst[i].f; // ERROR, not constant v *= arrayedInst[i].f;
} }
in vec4 gl_FragCoord; in vec4 gl_FragCoord;

View File

@ -3,7 +3,7 @@
#extension GL_OES_tessellation_shader : enable #extension GL_OES_tessellation_shader : enable
layout(vertices = 4) out; layout(vertices = 4) out;
int outa[gl_out.length()]; out int outa[gl_out.length()];
layout(quads) in; // ERROR layout(quads) in; // ERROR
layout(ccw) out; // ERROR layout(ccw) out; // ERROR
@ -30,9 +30,9 @@ void main()
int pid = gl_PrimitiveID; int pid = gl_PrimitiveID;
int iid = gl_InvocationID; int iid = gl_InvocationID;
gl_out[1].gl_Position = p; gl_out[gl_InvocationID].gl_Position = p;
gl_out[1].gl_PointSize = ps; // ERROR, need point_size extension gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR, need point_size extension
gl_out[1].gl_ClipDistance[1] = cd; // ERROR, not in ES gl_out[gl_InvocationID].gl_ClipDistance[1] = cd; // ERROR, not in ES
gl_TessLevelOuter[3] = 3.2; gl_TessLevelOuter[3] = 3.2;
gl_TessLevelInner[1] = 1.3; gl_TessLevelInner[1] = 1.3;
@ -112,7 +112,7 @@ out float okaySize[4];
void pointSize2() void pointSize2()
{ {
float ps = gl_in[1].gl_PointSize; float ps = gl_in[1].gl_PointSize;
gl_out[1].gl_PointSize = ps; gl_out[gl_InvocationID].gl_PointSize = ps;
} }
#extension GL_OES_gpu_shader5 : enable #extension GL_OES_gpu_shader5 : enable
@ -141,3 +141,29 @@ void bb()
gl_BoundingBoxOES[1] = vec4(1.0); gl_BoundingBoxOES[1] = vec4(1.0);
gl_BoundingBoxOES[2] = vec4(2.0); // ERROR, overflow gl_BoundingBoxOES[2] = vec4(2.0); // ERROR, overflow
} }
out patch badpatchBName { // ERROR, array size required
float f;
} badpatchIName[];
out patch patchBName {
float f;
} patchIName[4];
void outputtingOutparam(out int a)
{
a = 2;
}
void outputting()
{
outa[gl_InvocationID] = 2;
outa[1] = 2; // ERROR, not gl_InvocationID
gl_out[0].gl_Position = vec4(1.0); // ERROR, not gl_InvocationID
outa[1];
gl_out[0];
outputtingOutparam(outa[0]); // ERROR, not gl_InvocationID
outputtingOutparam(outa[gl_InvocationID]);
patchIName[1].f = 3.14;
outa[(gl_InvocationID)] = 2;
}

View File

@ -28,9 +28,9 @@ void main()
int pid = gl_PrimitiveID; int pid = gl_PrimitiveID;
int iid = gl_InvocationID; int iid = gl_InvocationID;
gl_out[1].gl_Position = p; gl_out[gl_InvocationID].gl_Position = p;
gl_out[1].gl_PointSize = ps; gl_out[gl_InvocationID].gl_PointSize = ps;
gl_out[1].gl_ClipDistance[1] = cd; gl_out[gl_InvocationID].gl_ClipDistance[1] = cd;
gl_TessLevelOuter[3] = 3.2; gl_TessLevelOuter[3] = 3.2;
gl_TessLevelInner[1] = 1.3; gl_TessLevelInner[1] = 1.3;

View File

@ -22,8 +22,8 @@ void main()
int pid = gl_PrimitiveID; int pid = gl_PrimitiveID;
int iid = gl_InvocationID; int iid = gl_InvocationID;
gl_out[1].gl_Position = p; gl_out[gl_InvocationID].gl_Position = p;
gl_out[1].gl_PointSize = ps; // ERROR gl_out[gl_InvocationID].gl_PointSize = ps; // ERROR
} }
out float outf; // ERROR, no array out float outf; // ERROR, no array

View File

@ -6,9 +6,9 @@ in gl_PerVertex {
out gl_PerVertex { out gl_PerVertex {
float gl_CullDistance[3]; float gl_CullDistance[3];
} gl_out[]; } gl_out[4];
void main() void main()
{ {
gl_out[0].gl_CullDistance[2] = gl_in[1].gl_CullDistance[2]; gl_out[gl_InvocationID].gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];
} }

View File

@ -59,29 +59,26 @@ vertices = 4
0:26 'gl_InvocationID' (in int InvocationID) 0:26 'gl_InvocationID' (in int InvocationID)
0:28 move second child to first child (temp 4-component vector of float) 0:28 move second child to first child (temp 4-component vector of float)
0:28 gl_Position: direct index for structure (out 4-component vector of float Position) 0:28 gl_Position: direct index for structure (out 4-component vector of float Position)
0:28 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:28 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:28 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:28 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:28 Constant: 0:28 'gl_InvocationID' (in int InvocationID)
0:28 1 (const int)
0:28 Constant: 0:28 Constant:
0:28 0 (const int) 0:28 0 (const int)
0:28 'p' (temp 4-component vector of float) 0:28 'p' (temp 4-component vector of float)
0:29 move second child to first child (temp float) 0:29 move second child to first child (temp float)
0:29 gl_PointSize: direct index for structure (out float PointSize) 0:29 gl_PointSize: direct index for structure (out float PointSize)
0:29 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:29 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:29 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:29 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:29 Constant: 0:29 'gl_InvocationID' (in int InvocationID)
0:29 1 (const int)
0:29 Constant: 0:29 Constant:
0:29 1 (const int) 0:29 1 (const int)
0:29 'ps' (temp float) 0:29 'ps' (temp float)
0:30 move second child to first child (temp float) 0:30 move second child to first child (temp float)
0:30 direct index (temp float ClipDistance) 0:30 direct index (temp float ClipDistance)
0:30 gl_ClipDistance: direct index for structure (out implicitly-sized array of float ClipDistance) 0:30 gl_ClipDistance: direct index for structure (out implicitly-sized array of float ClipDistance)
0:30 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:30 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:30 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:30 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:30 Constant: 0:30 'gl_InvocationID' (in int InvocationID)
0:30 1 (const int)
0:30 Constant: 0:30 Constant:
0:30 2 (const int) 0:30 2 (const int)
0:30 Constant: 0:30 Constant:
@ -295,29 +292,26 @@ ERROR: node is still EOpNull!
0:29 'gl_InvocationID' (in int InvocationID) 0:29 'gl_InvocationID' (in int InvocationID)
0:31 move second child to first child (temp 4-component vector of float) 0:31 move second child to first child (temp 4-component vector of float)
0:31 gl_Position: direct index for structure (out 4-component vector of float Position) 0:31 gl_Position: direct index for structure (out 4-component vector of float Position)
0:31 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:31 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:31 Constant: 0:31 'gl_InvocationID' (in int InvocationID)
0:31 1 (const int)
0:31 Constant: 0:31 Constant:
0:31 0 (const int) 0:31 0 (const int)
0:31 'p' (temp 4-component vector of float) 0:31 'p' (temp 4-component vector of float)
0:32 move second child to first child (temp float) 0:32 move second child to first child (temp float)
0:32 gl_PointSize: direct index for structure (out float PointSize) 0:32 gl_PointSize: direct index for structure (out float PointSize)
0:32 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:32 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:32 Constant: 0:32 'gl_InvocationID' (in int InvocationID)
0:32 1 (const int)
0:32 Constant: 0:32 Constant:
0:32 1 (const int) 0:32 1 (const int)
0:32 'ps' (temp float) 0:32 'ps' (temp float)
0:33 move second child to first child (temp float) 0:33 move second child to first child (temp float)
0:33 direct index (temp float ClipDistance) 0:33 direct index (temp float ClipDistance)
0:33 gl_ClipDistance: direct index for structure (out implicitly-sized array of float ClipDistance) 0:33 gl_ClipDistance: direct index for structure (out implicitly-sized array of float ClipDistance)
0:33 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:33 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:33 Constant: 0:33 'gl_InvocationID' (in int InvocationID)
0:33 1 (const int)
0:33 Constant: 0:33 Constant:
0:33 2 (const int) 0:33 2 (const int)
0:33 Constant: 0:33 Constant:
@ -666,17 +660,15 @@ ERROR: node is still EOpNull!
0:23 'gl_InvocationID' (in int InvocationID) 0:23 'gl_InvocationID' (in int InvocationID)
0:25 move second child to first child (temp 4-component vector of float) 0:25 move second child to first child (temp 4-component vector of float)
0:25 gl_Position: direct index for structure (out 4-component vector of float Position) 0:25 gl_Position: direct index for structure (out 4-component vector of float Position)
0:25 direct index (temp block{out 4-component vector of float Position gl_Position}) 0:25 indirect index (temp block{out 4-component vector of float Position gl_Position})
0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position}) 0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})
0:25 Constant: 0:25 'gl_InvocationID' (in int InvocationID)
0:25 1 (const int)
0:25 Constant: 0:25 Constant:
0:25 0 (const int) 0:25 0 (const int)
0:25 'p' (temp 4-component vector of float) 0:25 'p' (temp 4-component vector of float)
0:26 direct index (temp block{out 4-component vector of float Position gl_Position}) 0:26 indirect index (temp block{out 4-component vector of float Position gl_Position})
0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position}) 0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})
0:26 Constant: 0:26 'gl_InvocationID' (in int InvocationID)
0:26 1 (const int)
0:34 Function Definition: foo( (global void) 0:34 Function Definition: foo( (global void)
0:34 Function Parameters: 0:34 Function Parameters:
0:36 Sequence 0:36 Sequence
@ -982,29 +974,26 @@ vertices = 4
0:26 'gl_InvocationID' (in int InvocationID) 0:26 'gl_InvocationID' (in int InvocationID)
0:28 move second child to first child (temp 4-component vector of float) 0:28 move second child to first child (temp 4-component vector of float)
0:28 gl_Position: direct index for structure (out 4-component vector of float Position) 0:28 gl_Position: direct index for structure (out 4-component vector of float Position)
0:28 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:28 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:28 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:28 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:28 Constant: 0:28 'gl_InvocationID' (in int InvocationID)
0:28 1 (const int)
0:28 Constant: 0:28 Constant:
0:28 0 (const int) 0:28 0 (const int)
0:28 'p' (temp 4-component vector of float) 0:28 'p' (temp 4-component vector of float)
0:29 move second child to first child (temp float) 0:29 move second child to first child (temp float)
0:29 gl_PointSize: direct index for structure (out float PointSize) 0:29 gl_PointSize: direct index for structure (out float PointSize)
0:29 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:29 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:29 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:29 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:29 Constant: 0:29 'gl_InvocationID' (in int InvocationID)
0:29 1 (const int)
0:29 Constant: 0:29 Constant:
0:29 1 (const int) 0:29 1 (const int)
0:29 'ps' (temp float) 0:29 'ps' (temp float)
0:30 move second child to first child (temp float) 0:30 move second child to first child (temp float)
0:30 direct index (temp float ClipDistance) 0:30 direct index (temp float ClipDistance)
0:30 gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance) 0:30 gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance)
0:30 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:30 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:30 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:30 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:30 Constant: 0:30 'gl_InvocationID' (in int InvocationID)
0:30 1 (const int)
0:30 Constant: 0:30 Constant:
0:30 2 (const int) 0:30 2 (const int)
0:30 Constant: 0:30 Constant:
@ -1080,29 +1069,26 @@ vertices = 4
0:29 'gl_InvocationID' (in int InvocationID) 0:29 'gl_InvocationID' (in int InvocationID)
0:31 move second child to first child (temp 4-component vector of float) 0:31 move second child to first child (temp 4-component vector of float)
0:31 gl_Position: direct index for structure (out 4-component vector of float Position) 0:31 gl_Position: direct index for structure (out 4-component vector of float Position)
0:31 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:31 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:31 Constant: 0:31 'gl_InvocationID' (in int InvocationID)
0:31 1 (const int)
0:31 Constant: 0:31 Constant:
0:31 0 (const int) 0:31 0 (const int)
0:31 'p' (temp 4-component vector of float) 0:31 'p' (temp 4-component vector of float)
0:32 move second child to first child (temp float) 0:32 move second child to first child (temp float)
0:32 gl_PointSize: direct index for structure (out float PointSize) 0:32 gl_PointSize: direct index for structure (out float PointSize)
0:32 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:32 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:32 Constant: 0:32 'gl_InvocationID' (in int InvocationID)
0:32 1 (const int)
0:32 Constant: 0:32 Constant:
0:32 1 (const int) 0:32 1 (const int)
0:32 'ps' (temp float) 0:32 'ps' (temp float)
0:33 move second child to first child (temp float) 0:33 move second child to first child (temp float)
0:33 direct index (temp float ClipDistance) 0:33 direct index (temp float ClipDistance)
0:33 gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance) 0:33 gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance)
0:33 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:33 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:33 Constant: 0:33 'gl_InvocationID' (in int InvocationID)
0:33 1 (const int)
0:33 Constant: 0:33 Constant:
0:33 2 (const int) 0:33 2 (const int)
0:33 Constant: 0:33 Constant:
@ -1248,17 +1234,15 @@ vertices = 4
0:23 'gl_InvocationID' (in int InvocationID) 0:23 'gl_InvocationID' (in int InvocationID)
0:25 move second child to first child (temp 4-component vector of float) 0:25 move second child to first child (temp 4-component vector of float)
0:25 gl_Position: direct index for structure (out 4-component vector of float Position) 0:25 gl_Position: direct index for structure (out 4-component vector of float Position)
0:25 direct index (temp block{out 4-component vector of float Position gl_Position}) 0:25 indirect index (temp block{out 4-component vector of float Position gl_Position})
0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position}) 0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})
0:25 Constant: 0:25 'gl_InvocationID' (in int InvocationID)
0:25 1 (const int)
0:25 Constant: 0:25 Constant:
0:25 0 (const int) 0:25 0 (const int)
0:25 'p' (temp 4-component vector of float) 0:25 'p' (temp 4-component vector of float)
0:26 direct index (temp block{out 4-component vector of float Position gl_Position}) 0:26 indirect index (temp block{out 4-component vector of float Position gl_Position})
0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position}) 0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})
0:26 Constant: 0:26 'gl_InvocationID' (in int InvocationID)
0:26 1 (const int)
0:34 Function Definition: foo( (global void) 0:34 Function Definition: foo( (global void)
0:34 Function Parameters: 0:34 Function Parameters:
0:36 Sequence 0:36 Sequence

View File

@ -49,7 +49,6 @@ ERROR: 0:148: 'inbname2' : Cannot reuse block name within the same interface: in
ERROR: 0:153: 'badmember' : nameless block contains a member that already has a name at global scope ERROR: 0:153: 'badmember' : nameless block contains a member that already has a name at global scope
ERROR: 0:157: 'inbname' : redefinition ERROR: 0:157: 'inbname' : redefinition
ERROR: 0:159: 'vAnon' : redefinition ERROR: 0:159: 'vAnon' : redefinition
ERROR: 0:169: 'variable indexing in/out block array' : not supported with this profile: es
ERROR: 0:173: 'origin_upper_left' : not supported with this profile: es ERROR: 0:173: 'origin_upper_left' : not supported with this profile: es
ERROR: 0:173: 'pixel_center_integer' : not supported with this profile: es ERROR: 0:173: 'pixel_center_integer' : not supported with this profile: es
ERROR: 0:173: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:173: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord
@ -130,7 +129,7 @@ ERROR: 0:427: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:428: 'blend equation' : can only apply to a standalone qualifier ERROR: 0:428: 'blend equation' : can only apply to a standalone qualifier
ERROR: 0:429: 'blend_support' : unknown blend equation ERROR: 0:429: 'blend_support' : unknown blend equation
ERROR: 0:431: 'fragment-shader array-of-array output' : not supported with this profile: es ERROR: 0:431: 'fragment-shader array-of-array output' : not supported with this profile: es
ERROR: 122 compilation errors. No code generated. ERROR: 121 compilation errors. No code generated.
Shader version: 310 Shader version: 310

View File

@ -41,7 +41,11 @@ ERROR: 0:133: 'gl_BoundingBoxOES' : required extension not requested: Possible e
GL_EXT_primitive_bounding_box GL_EXT_primitive_bounding_box
GL_OES_primitive_bounding_box GL_OES_primitive_bounding_box
ERROR: 0:142: '[' : array index out of range '2' ERROR: 0:142: '[' : array index out of range '2'
ERROR: 33 compilation errors. No code generated. ERROR: 0:145: '' : array size required
ERROR: 0:161: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID
ERROR: 0:162: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID
ERROR: 0:165: '[]' : tessellation-control per-vertex output l-value must be indexed with gl_InvocationID
ERROR: 37 compilation errors. No code generated.
Shader version: 310 Shader version: 310
@ -101,19 +105,17 @@ ERROR: node is still EOpNull!
0:31 'gl_InvocationID' (in highp int InvocationID) 0:31 'gl_InvocationID' (in highp int InvocationID)
0:33 move second child to first child (temp highp 4-component vector of float) 0:33 move second child to first child (temp highp 4-component vector of float)
0:33 gl_Position: direct index for structure (out highp 4-component vector of float Position) 0:33 gl_Position: direct index for structure (out highp 4-component vector of float Position)
0:33 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:33 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:33 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:33 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:33 Constant: 0:33 'gl_InvocationID' (in highp int InvocationID)
0:33 1 (const int)
0:33 Constant: 0:33 Constant:
0:33 0 (const int) 0:33 0 (const int)
0:33 'p' (temp highp 4-component vector of float) 0:33 'p' (temp highp 4-component vector of float)
0:34 move second child to first child (temp highp float) 0:34 move second child to first child (temp highp float)
0:34 gl_PointSize: direct index for structure (out highp float PointSize) 0:34 gl_PointSize: direct index for structure (out highp float PointSize)
0:34 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:34 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:34 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:34 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:34 Constant: 0:34 'gl_InvocationID' (in highp int InvocationID)
0:34 1 (const int)
0:34 Constant: 0:34 Constant:
0:34 1 (const int) 0:34 1 (const int)
0:34 'ps' (temp highp float) 0:34 'ps' (temp highp float)
@ -215,10 +217,9 @@ ERROR: node is still EOpNull!
0:114 1 (const int) 0:114 1 (const int)
0:115 move second child to first child (temp highp float) 0:115 move second child to first child (temp highp float)
0:115 gl_PointSize: direct index for structure (out highp float PointSize) 0:115 gl_PointSize: direct index for structure (out highp float PointSize)
0:115 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:115 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:115 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:115 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:115 Constant: 0:115 'gl_InvocationID' (in highp int InvocationID)
0:115 1 (const int)
0:115 Constant: 0:115 Constant:
0:115 1 (const int) 0:115 1 (const int)
0:115 'ps' (temp highp float) 0:115 'ps' (temp highp float)
@ -277,9 +278,79 @@ ERROR: node is still EOpNull!
0:142 2.000000 0:142 2.000000
0:142 2.000000 0:142 2.000000
0:142 2.000000 0:142 2.000000
0:153 Function Definition: outputtingOutparam(i1; (global void)
0:153 Function Parameters:
0:153 'a' (out highp int)
0:155 Sequence
0:155 move second child to first child (temp highp int)
0:155 'a' (out highp int)
0:155 Constant:
0:155 2 (const int)
0:158 Function Definition: outputting( (global void)
0:158 Function Parameters:
0:160 Sequence
0:160 move second child to first child (temp highp int)
0:160 indirect index (temp highp int)
0:160 'outa' (out 4-element array of highp int)
0:160 'gl_InvocationID' (in highp int InvocationID)
0:160 Constant:
0:160 2 (const int)
0:161 move second child to first child (temp highp int)
0:161 direct index (temp highp int)
0:161 'outa' (out 4-element array of highp int)
0:161 Constant:
0:161 1 (const int)
0:161 Constant:
0:161 2 (const int)
0:162 move second child to first child (temp highp 4-component vector of float)
0:162 gl_Position: direct index for structure (out highp 4-component vector of float Position)
0:162 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:162 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:162 Constant:
0:162 0 (const int)
0:162 Constant:
0:162 0 (const int)
0:162 Constant:
0:162 1.000000
0:162 1.000000
0:162 1.000000
0:162 1.000000
0:163 direct index (temp highp int)
0:163 'outa' (out 4-element array of highp int)
0:163 Constant:
0:163 1 (const int)
0:164 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:164 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:164 Constant:
0:164 0 (const int)
0:165 Function Call: outputtingOutparam(i1; (global void)
0:165 direct index (temp highp int)
0:165 'outa' (out 4-element array of highp int)
0:165 Constant:
0:165 0 (const int)
0:166 Function Call: outputtingOutparam(i1; (global void)
0:166 indirect index (temp highp int)
0:166 'outa' (out 4-element array of highp int)
0:166 'gl_InvocationID' (in highp int InvocationID)
0:167 move second child to first child (temp highp float)
0:167 f: direct index for structure (out highp float)
0:167 direct index (patch temp block{out highp float f})
0:167 'patchIName' (patch out 4-element array of block{out highp float f})
0:167 Constant:
0:167 1 (const int)
0:167 Constant:
0:167 0 (const int)
0:167 Constant:
0:167 3.140000
0:168 move second child to first child (temp highp int)
0:168 indirect index (temp highp int)
0:168 'outa' (out 4-element array of highp int)
0:168 'gl_InvocationID' (in highp int InvocationID)
0:168 Constant:
0:168 2 (const int)
0:? Linker Objects 0:? Linker Objects
0:? 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:? 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:? 'outa' (global 4-element array of highp int) 0:? 'outa' (out 4-element array of highp int)
0:? 'patchIn' (patch in highp 4-component vector of float) 0:? 'patchIn' (patch in highp 4-component vector of float)
0:? 'patchOut' (patch out highp 4-component vector of float) 0:? 'patchOut' (patch out highp 4-component vector of float)
0:? 'ina' (in highp 2-component vector of float) 0:? 'ina' (in highp 2-component vector of float)
@ -301,6 +372,8 @@ ERROR: node is still EOpNull!
0:? 'misSized' (out 5-element array of highp float) 0:? 'misSized' (out 5-element array of highp float)
0:? 'okaySize' (out 4-element array of highp float) 0:? 'okaySize' (out 4-element array of highp float)
0:? 'pv3' (temp highp 3-component vector of float) 0:? 'pv3' (temp highp 3-component vector of float)
0:? 'badpatchIName' (patch out implicitly-sized array of block{out highp float f})
0:? 'patchIName' (patch out 4-element array of block{out highp float f})
Linked tessellation control stage: Linked tessellation control stage:
@ -363,19 +436,17 @@ ERROR: node is still EOpNull!
0:31 'gl_InvocationID' (in highp int InvocationID) 0:31 'gl_InvocationID' (in highp int InvocationID)
0:33 move second child to first child (temp highp 4-component vector of float) 0:33 move second child to first child (temp highp 4-component vector of float)
0:33 gl_Position: direct index for structure (out highp 4-component vector of float Position) 0:33 gl_Position: direct index for structure (out highp 4-component vector of float Position)
0:33 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:33 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:33 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:33 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:33 Constant: 0:33 'gl_InvocationID' (in highp int InvocationID)
0:33 1 (const int)
0:33 Constant: 0:33 Constant:
0:33 0 (const int) 0:33 0 (const int)
0:33 'p' (temp highp 4-component vector of float) 0:33 'p' (temp highp 4-component vector of float)
0:34 move second child to first child (temp highp float) 0:34 move second child to first child (temp highp float)
0:34 gl_PointSize: direct index for structure (out highp float PointSize) 0:34 gl_PointSize: direct index for structure (out highp float PointSize)
0:34 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:34 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:34 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:34 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:34 Constant: 0:34 'gl_InvocationID' (in highp int InvocationID)
0:34 1 (const int)
0:34 Constant: 0:34 Constant:
0:34 1 (const int) 0:34 1 (const int)
0:34 'ps' (temp highp float) 0:34 'ps' (temp highp float)
@ -477,10 +548,9 @@ ERROR: node is still EOpNull!
0:114 1 (const int) 0:114 1 (const int)
0:115 move second child to first child (temp highp float) 0:115 move second child to first child (temp highp float)
0:115 gl_PointSize: direct index for structure (out highp float PointSize) 0:115 gl_PointSize: direct index for structure (out highp float PointSize)
0:115 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:115 indirect index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:115 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:115 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:115 Constant: 0:115 'gl_InvocationID' (in highp int InvocationID)
0:115 1 (const int)
0:115 Constant: 0:115 Constant:
0:115 1 (const int) 0:115 1 (const int)
0:115 'ps' (temp highp float) 0:115 'ps' (temp highp float)
@ -539,9 +609,79 @@ ERROR: node is still EOpNull!
0:142 2.000000 0:142 2.000000
0:142 2.000000 0:142 2.000000
0:142 2.000000 0:142 2.000000
0:153 Function Definition: outputtingOutparam(i1; (global void)
0:153 Function Parameters:
0:153 'a' (out highp int)
0:155 Sequence
0:155 move second child to first child (temp highp int)
0:155 'a' (out highp int)
0:155 Constant:
0:155 2 (const int)
0:158 Function Definition: outputting( (global void)
0:158 Function Parameters:
0:160 Sequence
0:160 move second child to first child (temp highp int)
0:160 indirect index (temp highp int)
0:160 'outa' (out 4-element array of highp int)
0:160 'gl_InvocationID' (in highp int InvocationID)
0:160 Constant:
0:160 2 (const int)
0:161 move second child to first child (temp highp int)
0:161 direct index (temp highp int)
0:161 'outa' (out 4-element array of highp int)
0:161 Constant:
0:161 1 (const int)
0:161 Constant:
0:161 2 (const int)
0:162 move second child to first child (temp highp 4-component vector of float)
0:162 gl_Position: direct index for structure (out highp 4-component vector of float Position)
0:162 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:162 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:162 Constant:
0:162 0 (const int)
0:162 Constant:
0:162 0 (const int)
0:162 Constant:
0:162 1.000000
0:162 1.000000
0:162 1.000000
0:162 1.000000
0:163 direct index (temp highp int)
0:163 'outa' (out 4-element array of highp int)
0:163 Constant:
0:163 1 (const int)
0:164 direct index (temp block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:164 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:164 Constant:
0:164 0 (const int)
0:165 Function Call: outputtingOutparam(i1; (global void)
0:165 direct index (temp highp int)
0:165 'outa' (out 4-element array of highp int)
0:165 Constant:
0:165 0 (const int)
0:166 Function Call: outputtingOutparam(i1; (global void)
0:166 indirect index (temp highp int)
0:166 'outa' (out 4-element array of highp int)
0:166 'gl_InvocationID' (in highp int InvocationID)
0:167 move second child to first child (temp highp float)
0:167 f: direct index for structure (out highp float)
0:167 direct index (patch temp block{out highp float f})
0:167 'patchIName' (patch out 4-element array of block{out highp float f})
0:167 Constant:
0:167 1 (const int)
0:167 Constant:
0:167 0 (const int)
0:167 Constant:
0:167 3.140000
0:168 move second child to first child (temp highp int)
0:168 indirect index (temp highp int)
0:168 'outa' (out 4-element array of highp int)
0:168 'gl_InvocationID' (in highp int InvocationID)
0:168 Constant:
0:168 2 (const int)
0:? Linker Objects 0:? Linker Objects
0:? 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize}) 0:? 'gl_out' (out 4-element array of block{out highp 4-component vector of float Position gl_Position, out highp float PointSize gl_PointSize})
0:? 'outa' (global 4-element array of highp int) 0:? 'outa' (out 4-element array of highp int)
0:? 'patchIn' (patch in highp 4-component vector of float) 0:? 'patchIn' (patch in highp 4-component vector of float)
0:? 'patchOut' (patch out highp 4-component vector of float) 0:? 'patchOut' (patch out highp 4-component vector of float)
0:? 'ina' (in highp 2-component vector of float) 0:? 'ina' (in highp 2-component vector of float)
@ -563,4 +703,6 @@ ERROR: node is still EOpNull!
0:? 'misSized' (out 5-element array of highp float) 0:? 'misSized' (out 5-element array of highp float)
0:? 'okaySize' (out 4-element array of highp float) 0:? 'okaySize' (out 4-element array of highp float)
0:? 'pv3' (temp highp 3-component vector of float) 0:? 'pv3' (temp highp 3-component vector of float)
0:? 'badpatchIName' (patch out 1-element array of block{out highp float f})
0:? 'patchIName' (patch out 4-element array of block{out highp float f})

View File

@ -81,29 +81,26 @@ ERROR: node is still EOpNull!
0:29 'gl_InvocationID' (in int InvocationID) 0:29 'gl_InvocationID' (in int InvocationID)
0:31 move second child to first child (temp 4-component vector of float) 0:31 move second child to first child (temp 4-component vector of float)
0:31 gl_Position: direct index for structure (out 4-component vector of float Position) 0:31 gl_Position: direct index for structure (out 4-component vector of float Position)
0:31 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:31 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:31 Constant: 0:31 'gl_InvocationID' (in int InvocationID)
0:31 1 (const int)
0:31 Constant: 0:31 Constant:
0:31 0 (const int) 0:31 0 (const int)
0:31 'p' (temp 4-component vector of float) 0:31 'p' (temp 4-component vector of float)
0:32 move second child to first child (temp float) 0:32 move second child to first child (temp float)
0:32 gl_PointSize: direct index for structure (out float PointSize) 0:32 gl_PointSize: direct index for structure (out float PointSize)
0:32 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:32 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:32 Constant: 0:32 'gl_InvocationID' (in int InvocationID)
0:32 1 (const int)
0:32 Constant: 0:32 Constant:
0:32 1 (const int) 0:32 1 (const int)
0:32 'ps' (temp float) 0:32 'ps' (temp float)
0:33 move second child to first child (temp float) 0:33 move second child to first child (temp float)
0:33 direct index (temp float ClipDistance) 0:33 direct index (temp float ClipDistance)
0:33 gl_ClipDistance: direct index for structure (out implicitly-sized array of float ClipDistance) 0:33 gl_ClipDistance: direct index for structure (out implicitly-sized array of float ClipDistance)
0:33 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:33 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}) 0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance})
0:33 Constant: 0:33 'gl_InvocationID' (in int InvocationID)
0:33 1 (const int)
0:33 Constant: 0:33 Constant:
0:33 2 (const int) 0:33 2 (const int)
0:33 Constant: 0:33 Constant:
@ -279,29 +276,26 @@ ERROR: node is still EOpNull!
0:29 'gl_InvocationID' (in int InvocationID) 0:29 'gl_InvocationID' (in int InvocationID)
0:31 move second child to first child (temp 4-component vector of float) 0:31 move second child to first child (temp 4-component vector of float)
0:31 gl_Position: direct index for structure (out 4-component vector of float Position) 0:31 gl_Position: direct index for structure (out 4-component vector of float Position)
0:31 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:31 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:31 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:31 Constant: 0:31 'gl_InvocationID' (in int InvocationID)
0:31 1 (const int)
0:31 Constant: 0:31 Constant:
0:31 0 (const int) 0:31 0 (const int)
0:31 'p' (temp 4-component vector of float) 0:31 'p' (temp 4-component vector of float)
0:32 move second child to first child (temp float) 0:32 move second child to first child (temp float)
0:32 gl_PointSize: direct index for structure (out float PointSize) 0:32 gl_PointSize: direct index for structure (out float PointSize)
0:32 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:32 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:32 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:32 Constant: 0:32 'gl_InvocationID' (in int InvocationID)
0:32 1 (const int)
0:32 Constant: 0:32 Constant:
0:32 1 (const int) 0:32 1 (const int)
0:32 'ps' (temp float) 0:32 'ps' (temp float)
0:33 move second child to first child (temp float) 0:33 move second child to first child (temp float)
0:33 direct index (temp float ClipDistance) 0:33 direct index (temp float ClipDistance)
0:33 gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance) 0:33 gl_ClipDistance: direct index for structure (out 1-element array of float ClipDistance)
0:33 direct index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:33 indirect index (temp block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) 0:33 'gl_out' (out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance})
0:33 Constant: 0:33 'gl_InvocationID' (in int InvocationID)
0:33 1 (const int)
0:33 Constant: 0:33 Constant:
0:33 2 (const int) 0:33 2 (const int)
0:33 Constant: 0:33 Constant:

View File

@ -63,17 +63,15 @@ ERROR: node is still EOpNull!
0:23 'gl_InvocationID' (in int InvocationID) 0:23 'gl_InvocationID' (in int InvocationID)
0:25 move second child to first child (temp 4-component vector of float) 0:25 move second child to first child (temp 4-component vector of float)
0:25 gl_Position: direct index for structure (out 4-component vector of float Position) 0:25 gl_Position: direct index for structure (out 4-component vector of float Position)
0:25 direct index (temp block{out 4-component vector of float Position gl_Position}) 0:25 indirect index (temp block{out 4-component vector of float Position gl_Position})
0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position}) 0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})
0:25 Constant: 0:25 'gl_InvocationID' (in int InvocationID)
0:25 1 (const int)
0:25 Constant: 0:25 Constant:
0:25 0 (const int) 0:25 0 (const int)
0:25 'p' (temp 4-component vector of float) 0:25 'p' (temp 4-component vector of float)
0:26 direct index (temp block{out 4-component vector of float Position gl_Position}) 0:26 indirect index (temp block{out 4-component vector of float Position gl_Position})
0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position}) 0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})
0:26 Constant: 0:26 'gl_InvocationID' (in int InvocationID)
0:26 1 (const int)
0:34 Function Definition: foo( (global void) 0:34 Function Definition: foo( (global void)
0:34 Function Parameters: 0:34 Function Parameters:
0:36 Sequence 0:36 Sequence
@ -176,17 +174,15 @@ ERROR: node is still EOpNull!
0:23 'gl_InvocationID' (in int InvocationID) 0:23 'gl_InvocationID' (in int InvocationID)
0:25 move second child to first child (temp 4-component vector of float) 0:25 move second child to first child (temp 4-component vector of float)
0:25 gl_Position: direct index for structure (out 4-component vector of float Position) 0:25 gl_Position: direct index for structure (out 4-component vector of float Position)
0:25 direct index (temp block{out 4-component vector of float Position gl_Position}) 0:25 indirect index (temp block{out 4-component vector of float Position gl_Position})
0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position}) 0:25 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})
0:25 Constant: 0:25 'gl_InvocationID' (in int InvocationID)
0:25 1 (const int)
0:25 Constant: 0:25 Constant:
0:25 0 (const int) 0:25 0 (const int)
0:25 'p' (temp 4-component vector of float) 0:25 'p' (temp 4-component vector of float)
0:26 direct index (temp block{out 4-component vector of float Position gl_Position}) 0:26 indirect index (temp block{out 4-component vector of float Position gl_Position})
0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position}) 0:26 'gl_out' (out 3-element array of block{out 4-component vector of float Position gl_Position})
0:26 Constant: 0:26 'gl_InvocationID' (in int InvocationID)
0:26 1 (const int)
0:34 Function Definition: foo( (global void) 0:34 Function Definition: foo( (global void)
0:34 Function Parameters: 0:34 Function Parameters:
0:36 Sequence 0:36 Sequence

View File

@ -10,10 +10,9 @@ vertices = 0
0:13 move second child to first child (temp float) 0:13 move second child to first child (temp float)
0:13 direct index (temp float CullDistance) 0:13 direct index (temp float CullDistance)
0:13 gl_CullDistance: direct index for structure (out implicitly-sized array of float CullDistance) 0:13 gl_CullDistance: direct index for structure (out implicitly-sized array of float CullDistance)
0:13 direct index (temp block{out implicitly-sized array of float CullDistance gl_CullDistance}) 0:13 indirect index (temp block{out implicitly-sized array of float CullDistance gl_CullDistance})
0:13 'gl_out' (out implicitly-sized array of block{out implicitly-sized array of float CullDistance gl_CullDistance}) 0:13 'gl_out' (out 4-element array of block{out implicitly-sized array of float CullDistance gl_CullDistance})
0:13 Constant: 0:13 'gl_InvocationID' (in int InvocationID)
0:13 0 (const int)
0:13 Constant: 0:13 Constant:
0:13 0 (const int) 0:13 0 (const int)
0:13 Constant: 0:13 Constant:
@ -30,7 +29,7 @@ vertices = 0
0:13 2 (const int) 0:13 2 (const int)
0:? Linker Objects 0:? Linker Objects
0:? 'gl_in' (in 32-element array of block{in implicitly-sized array of float CullDistance gl_CullDistance}) 0:? 'gl_in' (in 32-element array of block{in implicitly-sized array of float CullDistance gl_CullDistance})
0:? 'gl_out' (out implicitly-sized array of block{out implicitly-sized array of float CullDistance gl_CullDistance}) 0:? 'gl_out' (out 4-element array of block{out implicitly-sized array of float CullDistance gl_CullDistance})
Linked tessellation control stage: Linked tessellation control stage:
@ -46,10 +45,9 @@ vertices = 0
0:13 move second child to first child (temp float) 0:13 move second child to first child (temp float)
0:13 direct index (temp float CullDistance) 0:13 direct index (temp float CullDistance)
0:13 gl_CullDistance: direct index for structure (out 1-element array of float CullDistance) 0:13 gl_CullDistance: direct index for structure (out 1-element array of float CullDistance)
0:13 direct index (temp block{out 1-element array of float CullDistance gl_CullDistance}) 0:13 indirect index (temp block{out 1-element array of float CullDistance gl_CullDistance})
0:13 'gl_out' (out 1-element array of block{out 1-element array of float CullDistance gl_CullDistance}) 0:13 'gl_out' (out 4-element array of block{out 1-element array of float CullDistance gl_CullDistance})
0:13 Constant: 0:13 'gl_InvocationID' (in int InvocationID)
0:13 0 (const int)
0:13 Constant: 0:13 Constant:
0:13 0 (const int) 0:13 0 (const int)
0:13 Constant: 0:13 Constant:
@ -66,5 +64,5 @@ vertices = 0
0:13 2 (const int) 0:13 2 (const int)
0:? Linker Objects 0:? Linker Objects
0:? 'gl_in' (in 32-element array of block{in 1-element array of float CullDistance gl_CullDistance}) 0:? 'gl_in' (in 32-element array of block{in 1-element array of float CullDistance gl_CullDistance})
0:? 'gl_out' (out 1-element array of block{out 1-element array of float CullDistance gl_CullDistance}) 0:? 'gl_out' (out 4-element array of block{out 1-element array of float CullDistance gl_CullDistance})

View File

@ -7,12 +7,12 @@ Linked tessellation control stage:
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 90 // Id's are bound by 93
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 52 76 80 81 84 85 88 89 EntryPoint TessellationControl 4 "main" 52 79 83 84 87 88 91 92
ExecutionMode 4 OutputVertices 4 ExecutionMode 4 OutputVertices 4
Source GLSL 400 Source GLSL 400
SourceExtension "GL_ARB_separate_shader_objects" SourceExtension "GL_ARB_separate_shader_objects"
@ -37,16 +37,16 @@ Linked tessellation control stage:
MemberName 48(gl_PerVertex) 1 "gl_PointSize" MemberName 48(gl_PerVertex) 1 "gl_PointSize"
MemberName 48(gl_PerVertex) 2 "gl_ClipDistance" MemberName 48(gl_PerVertex) 2 "gl_ClipDistance"
Name 52 "gl_out" Name 52 "gl_out"
Name 63 "gl_TessLevelOuter" Name 66 "gl_TessLevelOuter"
Name 70 "gl_TessLevelInner" Name 73 "gl_TessLevelInner"
Name 75 "outa" Name 78 "outa"
Name 76 "patchOut" Name 79 "patchOut"
Name 80 "inb" Name 83 "inb"
Name 81 "ind" Name 84 "ind"
Name 84 "ivla" Name 87 "ivla"
Name 85 "ivlb" Name 88 "ivlb"
Name 88 "ovla" Name 91 "ovla"
Name 89 "ovlb" Name 92 "ovlb"
MemberDecorate 19(gl_PerVertex) 0 BuiltIn Position MemberDecorate 19(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 19(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 19(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 19(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 19(gl_PerVertex) 2 BuiltIn ClipDistance
@ -58,15 +58,15 @@ Linked tessellation control stage:
MemberDecorate 48(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 48(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 48(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 48(gl_PerVertex) 2 BuiltIn ClipDistance
Decorate 48(gl_PerVertex) Block Decorate 48(gl_PerVertex) Block
Decorate 63(gl_TessLevelOuter) Patch Decorate 66(gl_TessLevelOuter) Patch
Decorate 63(gl_TessLevelOuter) BuiltIn TessLevelOuter Decorate 66(gl_TessLevelOuter) BuiltIn TessLevelOuter
Decorate 70(gl_TessLevelInner) Patch Decorate 73(gl_TessLevelInner) Patch
Decorate 70(gl_TessLevelInner) BuiltIn TessLevelInner Decorate 73(gl_TessLevelInner) BuiltIn TessLevelInner
Decorate 76(patchOut) Patch Decorate 79(patchOut) Patch
Decorate 84(ivla) Location 3 Decorate 87(ivla) Location 3
Decorate 85(ivlb) Location 4 Decorate 88(ivlb) Location 4
Decorate 88(ovla) Location 3 Decorate 91(ovla) Location 3
Decorate 89(ovlb) Location 4 Decorate 92(ovlb) Location 4
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 0 6: TypeInt 32 0
@ -100,35 +100,35 @@ Linked tessellation control stage:
50: TypeArray 48(gl_PerVertex) 49 50: TypeArray 48(gl_PerVertex) 49
51: TypePointer Output 50 51: TypePointer Output 50
52(gl_out): 51(ptr) Variable Output 52(gl_out): 51(ptr) Variable Output
54: TypePointer Output 15(fvec4) 55: TypePointer Output 15(fvec4)
57: TypePointer Output 14(float) 59: TypePointer Output 14(float)
61: TypeArray 14(float) 49 64: TypeArray 14(float) 49
62: TypePointer Output 61 65: TypePointer Output 64
63(gl_TessLevelOuter): 62(ptr) Variable Output 66(gl_TessLevelOuter): 65(ptr) Variable Output
64: 10(int) Constant 3 67: 10(int) Constant 3
65: 14(float) Constant 1078774989 68: 14(float) Constant 1078774989
67: 6(int) Constant 2 70: 6(int) Constant 2
68: TypeArray 14(float) 67 71: TypeArray 14(float) 70
69: TypePointer Output 68 72: TypePointer Output 71
70(gl_TessLevelInner): 69(ptr) Variable Output 73(gl_TessLevelInner): 72(ptr) Variable Output
71: 14(float) Constant 1067869798 74: 14(float) Constant 1067869798
73: TypeArray 10(int) 49 76: TypeArray 10(int) 49
74: TypePointer Private 73 77: TypePointer Private 76
75(outa): 74(ptr) Variable Private 78(outa): 77(ptr) Variable Private
76(patchOut): 54(ptr) Variable Output 79(patchOut): 55(ptr) Variable Output
77: TypeVector 14(float) 2 80: TypeVector 14(float) 2
78: TypeArray 77(fvec2) 20 81: TypeArray 80(fvec2) 20
79: TypePointer Input 78 82: TypePointer Input 81
80(inb): 79(ptr) Variable Input 83(inb): 82(ptr) Variable Input
81(ind): 79(ptr) Variable Input 84(ind): 82(ptr) Variable Input
82: TypeArray 15(fvec4) 20 85: TypeArray 15(fvec4) 20
83: TypePointer Input 82 86: TypePointer Input 85
84(ivla): 83(ptr) Variable Input 87(ivla): 86(ptr) Variable Input
85(ivlb): 83(ptr) Variable Input 88(ivlb): 86(ptr) Variable Input
86: TypeArray 15(fvec4) 49 89: TypeArray 15(fvec4) 49
87: TypePointer Output 86 90: TypePointer Output 89
88(ovla): 87(ptr) Variable Output 91(ovla): 90(ptr) Variable Output
89(ovlb): 87(ptr) Variable Output 92(ovlb): 90(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
12(a): 11(ptr) Variable Function 12(a): 11(ptr) Variable Function
@ -156,18 +156,21 @@ Linked tessellation control stage:
Store 42(pid) 44 Store 42(pid) 44
47: 10(int) Load 46(gl_InvocationID) 47: 10(int) Load 46(gl_InvocationID)
Store 45(iid) 47 Store 45(iid) 47
53: 15(fvec4) Load 17(p) 53: 10(int) Load 46(gl_InvocationID)
55: 54(ptr) AccessChain 52(gl_out) 24 25 54: 15(fvec4) Load 17(p)
Store 55 53 56: 55(ptr) AccessChain 52(gl_out) 53 25
56: 14(float) Load 30(ps) Store 56 54
58: 57(ptr) AccessChain 52(gl_out) 24 24 57: 10(int) Load 46(gl_InvocationID)
Store 58 56 58: 14(float) Load 30(ps)
59: 14(float) Load 34(cd) 60: 59(ptr) AccessChain 52(gl_out) 57 24
60: 57(ptr) AccessChain 52(gl_out) 24 35 24 Store 60 58
Store 60 59 61: 10(int) Load 46(gl_InvocationID)
66: 57(ptr) AccessChain 63(gl_TessLevelOuter) 64 62: 14(float) Load 34(cd)
Store 66 65 63: 59(ptr) AccessChain 52(gl_out) 61 35 24
72: 57(ptr) AccessChain 70(gl_TessLevelInner) 24 Store 63 62
Store 72 71 69: 59(ptr) AccessChain 66(gl_TessLevelOuter) 67
Store 69 68
75: 59(ptr) AccessChain 73(gl_TessLevelInner) 24
Store 75 74
Return Return
FunctionEnd FunctionEnd

View File

@ -23,9 +23,9 @@ void main()
int pid = gl_PrimitiveID; int pid = gl_PrimitiveID;
int iid = gl_InvocationID; int iid = gl_InvocationID;
gl_out[1].gl_Position = p; gl_out[gl_InvocationID].gl_Position = p;
gl_out[1].gl_PointSize = ps; gl_out[gl_InvocationID].gl_PointSize = ps;
gl_out[1].gl_ClipDistance[1] = cd; gl_out[gl_InvocationID].gl_ClipDistance[1] = cd;
gl_TessLevelOuter[3] = 3.2; gl_TessLevelOuter[3] = 3.2;
gl_TessLevelInner[1] = 1.3; gl_TessLevelInner[1] = 1.3;

View File

@ -2,5 +2,5 @@
// For the version, it uses the latest git tag followed by the number of commits. // For the version, it uses the latest git tag followed by the number of commits.
// For the date, it uses the current date (when then script is run). // For the date, it uses the current date (when then script is run).
#define GLSLANG_REVISION "SPIRV99.807" #define GLSLANG_REVISION "SPIRV99.809"
#define GLSLANG_DATE "28-Nov-2015" #define GLSLANG_DATE "28-Nov-2015"

View File

@ -518,8 +518,9 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array"); requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array");
else if (base->getQualifier().storage == EvqUniform) else if (base->getQualifier().storage == EvqUniform)
profileRequires(base->getLoc(), EEsProfile, 0, Num_AEP_gpu_shader5, AEP_gpu_shader5, "variable indexing uniform block array"); profileRequires(base->getLoc(), EEsProfile, 0, Num_AEP_gpu_shader5, AEP_gpu_shader5, "variable indexing uniform block array");
else else {
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing in/out block array"); // input/output blocks either don't exist or can be variable indexed
}
} else if (language == EShLangFragment && base->getQualifier().isPipeOutput()) } else if (language == EShLangFragment && base->getQualifier().isPipeOutput())
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader ouput array"); requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader ouput array");
else if (base->getBasicType() == EbtSampler && version >= 130) { else if (base->getBasicType() == EbtSampler && version >= 130) {
@ -1871,6 +1872,21 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt
switch(binaryNode->getOp()) { switch(binaryNode->getOp()) {
case EOpIndexDirect: case EOpIndexDirect:
case EOpIndexIndirect: case EOpIndexIndirect:
// ... tessellation control shader ...
// If a per-vertex output variable is used as an l-value, it is a
// compile-time or link-time error if the expression indicating the
// vertex index is not the identifier gl_InvocationID.
if (language == EShLangTessControl) {
const TType& leftType = binaryNode->getLeft()->getType();
if (leftType.getQualifier().storage == EvqVaryingOut && ! leftType.getQualifier().patch && binaryNode->getLeft()->getAsSymbolNode()) {
// we have a per-vertex output
const TIntermSymbol* rightSymbol = binaryNode->getRight()->getAsSymbolNode();
if (! rightSymbol || rightSymbol->getQualifier().builtIn != EbvInvocationId)
error(loc, "tessellation-control per-vertex output l-value must be indexed with gl_InvocationID", "[]", "");
}
}
// fall through
case EOpIndexDirectStruct: case EOpIndexDirectStruct:
return lValueErrorCheck(loc, op, binaryNode->getLeft()); return lValueErrorCheck(loc, op, binaryNode->getLeft());
case EOpVectorSwizzle: case EOpVectorSwizzle: