Here's the code used to configure OpenGL to get texture coordinates, colors and vertex data from our arrays
src/share/native/sun/java2d/opengl/OGLVertexCache.c
glTexCoordPointer(..., vertexCache);
glColorPointer(..., vertexCache + 2);
glVertexPointer(..., vertexCache + 3);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
It's called from InitVertexCache() on the flusher thread and it's currently done only once per application. That is, the initialization changes the state of the *current* OpenGL context (NSOpenGLContext on Mac) only and the state isn't shared across multiple NSOpenGLContexts.
The problem becomes visible in dual-screen environment where we instantiate separate off-screen NSOpenGLContext for each screen (see CGLGraphicsConfig.m).