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

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

    XMLWordPrintable

Details

    • 2d
    • b40
    • generic
    • generic
    • Verified

    Backports

      Description

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

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                  Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: