| Index: src/utils/win/SkWGL_win.cpp
|
| diff --git a/src/utils/win/SkWGL_win.cpp b/src/utils/win/SkWGL_win.cpp
|
| index 3b1966dae8fbcd352229440c6d5c2582cb234046..a8552a8ea3ce19c74c1747bb137047a59ab6f2e4 100644
|
| --- a/src/utils/win/SkWGL_win.cpp
|
| +++ b/src/utils/win/SkWGL_win.cpp
|
| @@ -245,7 +245,7 @@ SkWGLExtensions::SkWGLExtensions()
|
| wglMakeCurrent(prevDC, prevGLRC);
|
| }
|
|
|
| -HGLRC SkCreateWGLContext(HDC dc, int msaaSampleCount, bool preferCoreProfile) {
|
| +HGLRC SkCreateWGLContext(HDC dc, int msaaSampleCount, SkWGLContextRequest contextType) {
|
| SkWGLExtensions extensions;
|
| if (!extensions.hasExtension(dc, "WGL_ARB_pixel_format")) {
|
| return NULL;
|
| @@ -307,27 +307,44 @@ HGLRC SkCreateWGLContext(HDC dc, int msaaSampleCount, bool preferCoreProfile) {
|
| }
|
|
|
| HGLRC glrc = NULL;
|
| - if (preferCoreProfile && extensions.hasExtension(dc, "WGL_ARB_create_context")) {
|
| - static const int kCoreGLVersions[] = {
|
| - 4, 3,
|
| - 4, 2,
|
| - 4, 1,
|
| - 4, 0,
|
| - 3, 3,
|
| - 3, 2,
|
| - };
|
| - int coreProfileAttribs[] = {
|
| - SK_WGL_CONTEXT_MAJOR_VERSION, -1,
|
| - SK_WGL_CONTEXT_MINOR_VERSION, -1,
|
| - SK_WGL_CONTEXT_PROFILE_MASK, SK_WGL_CONTEXT_CORE_PROFILE_BIT,
|
| + if (kGLES_SkWGLContextRequest == contextType) {
|
| + if (!extensions.hasExtension(dc, "WGL_EXT_create_context_es2_profile")) {
|
| + return NULL;
|
| + }
|
| + static const int glesAttribs[] = {
|
| + SK_WGL_CONTEXT_MAJOR_VERSION, 3,
|
| + SK_WGL_CONTEXT_MINOR_VERSION, 0,
|
| + SK_WGL_CONTEXT_PROFILE_MASK, SK_WGL_CONTEXT_ES2_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;
|
| + glrc = extensions.createContextAttribs(dc, NULL, glesAttribs);
|
| + if (NULL == glrc) {
|
| + return NULL;
|
| + }
|
| + } else {
|
| + if (kGLPreferCoreProfile_SkWGLContextRequest == contextType &&
|
| + extensions.hasExtension(dc, "WGL_ARB_create_context")) {
|
| + static const int kCoreGLVersions[] = {
|
| + 4, 3,
|
| + 4, 2,
|
| + 4, 1,
|
| + 4, 0,
|
| + 3, 3,
|
| + 3, 2,
|
| + };
|
| + int 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;
|
| + }
|
| }
|
| }
|
| }
|
|
|