Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7168550

[macosx] duplicate OGL context state changes related to vertex cache

XMLWordPrintable

    • 2d
    • b40
    • generic
    • generic
    • Verified

        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).

              dcherepanov Dmitry Cherepanov
              dcherepanov Dmitry Cherepanov
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: