When setting a specific component of an array using gl_InvocationID, I get undefined results from patch varyings set in my tessellation control shaders with vectors while arrays work fine. I don't see why vectors should give an undefined result.
Here's some code illustrating the problem (using triangular patches):
Either I missed something in the specs, either it's a driver bug, I'm on Catalyst 11.9.Code :// tessellation control shader #version 410 layout(location = 0) patch out vec3 oData1; layout(location = 1) patch out float oData2[3]; [...] void main() { oData1[gl_InvocationID] = someScalarValue(gl_InvocationID); // undefined in my tessellation evaluation shader oData2[gl_InvocationID] = someScalarValue(gl_InvocationID); // works fine in my tessellation evaluation shader }



-- I don't exactly know what's going on behind the scenes.
