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

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

    XMLWordPrintable

    Details

    • Subcomponent:
      2d
    • Resolved In Build:
      b40
    • CPU:
      generic
    • OS:
      generic
    • Verification:
      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

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

                  Dates

                  Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: