Index: ui/gl/gl_context_egl.cc |
diff --git a/ui/gl/gl_context_egl.cc b/ui/gl/gl_context_egl.cc |
index 1ac7d017dde589d071114432decbee55a72919ae..b1ea4e6a77040716cc441e2287edb1267613fd76 100644 |
--- a/ui/gl/gl_context_egl.cc |
+++ b/ui/gl/gl_context_egl.cc |
@@ -22,16 +22,6 @@ |
} |
#endif |
-#ifndef EGL_CHROMIUM_create_context_bind_generates_resource |
-#define EGL_CHROMIUM_create_context_bind_generates_resource 1 |
-#define EGL_CONTEXT_BIND_GENERATES_RESOURCE_CHROMIUM 0x3AAD |
-#endif /* EGL_CHROMIUM_create_context_bind_generates_resource */ |
- |
-#ifndef EGL_ANGLE_create_context_webgl_compatibility |
-#define EGL_ANGLE_create_context_webgl_compatibility 1 |
-#define EGL_CONTEXT_WEBGL_COMPATIBILITY_ANGLE 0x3AAC |
-#endif /* EGL_ANGLE_create_context_webgl_compatibility */ |
- |
using ui::GetLastEGLErrorString; |
namespace gl { |
@@ -45,8 +35,8 @@ |
swap_interval_(1) { |
} |
-bool GLContextEGL::Initialize(GLSurface* compatible_surface, |
- const GLContextAttribs& attribs) { |
+bool GLContextEGL::Initialize( |
+ GLSurface* compatible_surface, GpuPreference gpu_preference) { |
DCHECK(compatible_surface); |
DCHECK(!context_); |
@@ -68,19 +58,26 @@ |
context_client_version = 3; |
} |
- std::vector<EGLint> context_attributes; |
- context_attributes.push_back(EGL_CONTEXT_CLIENT_VERSION); |
- context_attributes.push_back(context_client_version); |
- |
+ const EGLint kContextAttributes[] = { |
+ EGL_CONTEXT_CLIENT_VERSION, context_client_version, |
+ EGL_NONE |
+ }; |
+ const EGLint kContextRobustnessAttributes[] = { |
+ EGL_CONTEXT_CLIENT_VERSION, context_client_version, |
+ EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT, |
+ EGL_LOSE_CONTEXT_ON_RESET_EXT, |
+ EGL_NONE |
+ }; |
+ |
+ const EGLint* context_attributes = nullptr; |
if (GLSurfaceEGL::IsCreateContextRobustnessSupported()) { |
DVLOG(1) << "EGL_EXT_create_context_robustness supported."; |
+ context_attributes = kContextRobustnessAttributes; |
} else { |
// At some point we should require the presence of the robustness |
// extension and remove this code path. |
DVLOG(1) << "EGL_EXT_create_context_robustness NOT supported."; |
- context_attributes.push_back( |
- EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT); |
- context_attributes.push_back(EGL_LOSE_CONTEXT_ON_RESET_EXT); |
+ context_attributes = kContextAttributes; |
} |
if (!eglBindAPI(EGL_OPENGL_ES_API)) { |
@@ -89,29 +86,11 @@ |
return false; |
} |
- if (GLSurfaceEGL::IsCreateContextBindGeneratesResourceSupported()) { |
- context_attributes.push_back(EGL_CONTEXT_BIND_GENERATES_RESOURCE_CHROMIUM); |
- context_attributes.push_back(attribs.bind_generates_resource ? EGL_TRUE |
- : EGL_FALSE); |
- } else { |
- DCHECK(attribs.bind_generates_resource); |
- } |
- |
- if (GLSurfaceEGL::IsCreateContextWebGLCompatabilitySupported()) { |
- context_attributes.push_back(EGL_CONTEXT_WEBGL_COMPATIBILITY_ANGLE); |
- context_attributes.push_back( |
- attribs.webgl_compatibility_context ? EGL_TRUE : EGL_FALSE); |
- } else { |
- DCHECK(!attribs.webgl_compatibility_context); |
- } |
- |
- // Append final EGL_NONE to signal the context attributes are finished |
- context_attributes.push_back(EGL_NONE); |
- context_attributes.push_back(EGL_NONE); |
- |
context_ = eglCreateContext( |
- display_, config_, share_group() ? share_group()->GetHandle() : nullptr, |
- context_attributes.data()); |
+ display_, |
+ config_, |
+ share_group() ? share_group()->GetHandle() : nullptr, |
+ context_attributes); |
if (!context_) { |
LOG(ERROR) << "eglCreateContext failed with error " |