As per the SO thread:
I read from an "out" variable. Once I changed the shader code to only write to the outColor variable and have a separate local vec3 for read-write access, the issue was gone.
But -- seems like that's still a GL/GLSL implementation bug (ie. to-be-fixed) in Intel HD's driver: it is legal to read from an out global variable in a shader. Now it may not be zeroed --fine-- but in the given shader code, the first thing that happens to the out var is a write access, even though it gets passed as an inout into a function first for that.
Please note that Intel® has released a new driver that contains several fixes. We recommend you installing the new driver and let us know if it works.
You can download the driver at the following link:
For Windows* 7/8 32 bit:
For Windows* 7/8 64 bit: