I have updated and edited this. I now have a "simple" example that easily re-creates the issue. The code is really ugly but it's just a cut/paste/hacked together bit of cruft just to show off the issue.
OK, more information from my thread over on the OpenGL forums:
Any one of these changes fixes it and makes it render correctly:
- Use location=2 for the "color" attribute
- Swap the attribute locations so that "color" is 0 and "vertex" is 1
- Allow the compiler to choose the locations and query them with glGetAttribLocation()
- Change "vertex" to dvec2.
Is this a bug in the driver?