| Index: src/views/win/SkOSWindow_win.cpp
|
| ===================================================================
|
| --- src/views/win/SkOSWindow_win.cpp (revision 7977)
|
| +++ src/views/win/SkOSWindow_win.cpp (working copy)
|
| @@ -323,119 +323,11 @@
|
| }
|
|
|
| #if SK_SUPPORT_GPU
|
| -HGLRC create_gl(HWND hwnd, int msaaSampleCount) {
|
|
|
| - HDC dc = GetDC(hwnd);
|
| -
|
| - SkWGLExtensions extensions;
|
| - if (!extensions.hasExtension(dc, "WGL_ARB_pixel_format")) {
|
| - return NULL;
|
| - }
|
| -
|
| - HDC prevDC = wglGetCurrentDC();
|
| - HGLRC prevGLRC = wglGetCurrentContext();
|
| - PIXELFORMATDESCRIPTOR pfd;
|
| -
|
| - int format = 0;
|
| -
|
| - static const GLint iAttrs[] = {
|
| - SK_WGL_DRAW_TO_WINDOW, TRUE,
|
| - SK_WGL_DOUBLE_BUFFER, TRUE,
|
| - SK_WGL_ACCELERATION, SK_WGL_FULL_ACCELERATION,
|
| - SK_WGL_SUPPORT_OPENGL, TRUE,
|
| - SK_WGL_COLOR_BITS, 24,
|
| - SK_WGL_ALPHA_BITS, 8,
|
| - SK_WGL_STENCIL_BITS, 8,
|
| - 0, 0
|
| - };
|
| -
|
| - GLfloat fAttrs[] = {0, 0};
|
| -
|
| - if (msaaSampleCount > 0 &&
|
| - extensions.hasExtension(dc, "WGL_ARB_multisample")) {
|
| - static const int kIAttrsCount = SK_ARRAY_COUNT(iAttrs);
|
| - GLint msaaIAttrs[kIAttrsCount + 6];
|
| - memcpy(msaaIAttrs, iAttrs, sizeof(GLint) * kIAttrsCount);
|
| - SkASSERT(0 == msaaIAttrs[kIAttrsCount - 2] &&
|
| - 0 == msaaIAttrs[kIAttrsCount - 1]);
|
| - msaaIAttrs[kIAttrsCount - 2] = SK_WGL_SAMPLE_BUFFERS;
|
| - msaaIAttrs[kIAttrsCount - 1] = TRUE;
|
| - msaaIAttrs[kIAttrsCount + 0] = SK_WGL_SAMPLES;
|
| - msaaIAttrs[kIAttrsCount + 1] = msaaSampleCount;
|
| - if (extensions.hasExtension(dc, "WGL_NV_multisample_coverage")) {
|
| - msaaIAttrs[kIAttrsCount + 2] = SK_WGL_COLOR_SAMPLES;
|
| - // We want the fewest number of color samples possible.
|
| - // Passing 0 gives only the formats where all samples are color
|
| - // samples.
|
| - msaaIAttrs[kIAttrsCount + 3] = 1;
|
| - msaaIAttrs[kIAttrsCount + 4] = 0;
|
| - msaaIAttrs[kIAttrsCount + 5] = 0;
|
| - } else {
|
| - msaaIAttrs[kIAttrsCount + 2] = 0;
|
| - msaaIAttrs[kIAttrsCount + 3] = 0;
|
| - }
|
| - GLuint num;
|
| - int formats[64];
|
| - extensions.choosePixelFormat(dc, msaaIAttrs, fAttrs, 64, formats, &num);
|
| - num = min(num,64);
|
| - int formatToTry = extensions.selectFormat(formats,
|
| - num,
|
| - dc,
|
| - msaaSampleCount);
|
| - DescribePixelFormat(dc, formatToTry, sizeof(pfd), &pfd);
|
| - if (SetPixelFormat(dc, formatToTry, &pfd)) {
|
| - format = formatToTry;
|
| - }
|
| - }
|
| -
|
| - if (0 == format) {
|
| - GLuint num;
|
| - extensions.choosePixelFormat(dc, iAttrs, fAttrs, 1, &format, &num);
|
| - DescribePixelFormat(dc, format, sizeof(pfd), &pfd);
|
| - BOOL set = SetPixelFormat(dc, format, &pfd);
|
| - SkASSERT(TRUE == set);
|
| - }
|
| -
|
| - HGLRC glrc = NULL;
|
| -#if 0 // Change to 1 to attempt to create a core profile GL context of version 4.3 or lower
|
| - if (extensions.hasExtension(dc, "WGL_ARB_create_context")) {
|
| - static const GLint kCoreGLVersions[] = {
|
| - 4, 3,
|
| - 4, 2,
|
| - 4, 1,
|
| - 4, 0,
|
| - 3, 3,
|
| - 3, 2,
|
| - };
|
| - GLint coreProfileAttribs[] = {
|
| - SK_WGL_CONTEXT_MAJOR_VERSION, -1,
|
| - SK_WGL_CONTEXT_MINOR_VERSION, -1,
|
| - SK_WGL_CONTEXT_PROFILE_MASK, SK_WGL_CONTEXT_CORE_PROFILE_BIT,
|
| - 0,
|
| - };
|
| - for (int v = 0; v < SK_ARRAY_COUNT(kCoreGLVersions) / 2; ++v) {
|
| - coreProfileAttribs[1] = kCoreGLVersions[2 * v];
|
| - coreProfileAttribs[3] = kCoreGLVersions[2 * v + 1];
|
| - glrc = extensions.createContextAttribs(dc, NULL, coreProfileAttribs);
|
| - if (NULL != glrc) {
|
| - break;
|
| - }
|
| - }
|
| - }
|
| -#endif
|
| -
|
| - if (NULL == glrc) {
|
| - glrc = wglCreateContext(dc);
|
| - }
|
| - SkASSERT(glrc);
|
| -
|
| - wglMakeCurrent(prevDC, prevGLRC);
|
| - return glrc;
|
| -}
|
| -
|
| bool SkOSWindow::attachGL(int msaaSampleCount) {
|
| + HDC dc = GetDC((HWND)fHWND);
|
| if (NULL == fHGLRC) {
|
| - fHGLRC = create_gl((HWND)fHWND, msaaSampleCount);
|
| + fHGLRC = SkCreateWGLContext(dc, msaaSampleCount, false);
|
| if (NULL == fHGLRC) {
|
| return false;
|
| }
|
| @@ -444,7 +336,7 @@
|
| glStencilMask(0xffffffff);
|
| glClear(GL_STENCIL_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
|
| }
|
| - if (wglMakeCurrent(GetDC((HWND)fHWND), (HGLRC)fHGLRC)) {
|
| + if (wglMakeCurrent(dc, (HGLRC)fHGLRC)) {
|
| glViewport(0, 0, SkScalarRound(this->width()),
|
| SkScalarRound(this->height()));
|
| return true;
|
|
|