Index: ui/gl/gl_context_ozone.cc |
diff --git a/ui/gl/gl_context_ozone.cc b/ui/gl/gl_context_ozone.cc |
index aeb91953df78b50bdf34af22cb8ced2d5494d8f1..776e114e3dae62c3b034b3bc0e5f52e6374c2003 100644 |
--- a/ui/gl/gl_context_ozone.cc |
+++ b/ui/gl/gl_context_ozone.cc |
@@ -9,6 +9,7 @@ |
#include "base/sys_info.h" |
#include "ui/gl/gl_bindings.h" |
#include "ui/gl/gl_context_egl.h" |
+#include "ui/gl/gl_context_osmesa.h" |
#include "ui/gl/gl_context_stub.h" |
#include "ui/gl/gl_implementation.h" |
#include "ui/gl/gl_surface.h" |
@@ -20,20 +21,26 @@ scoped_refptr<GLContext> GLContext::CreateGLContext( |
GLShareGroup* share_group, |
GLSurface* compatible_surface, |
GpuPreference gpu_preference) { |
- if (GetGLImplementation() == kGLImplementationMockGL) |
- return scoped_refptr<GLContext>(new GLContextStub()); |
- scoped_refptr<GLContext> context; |
- if (!compatible_surface->GetHandle()) { |
- DLOG(ERROR) << "Surface has no associated handle.\n"; |
- return NULL; |
+ switch (GetGLImplementation()) { |
+ case kGLImplementationMockGL: |
+ return scoped_refptr<GLContext>(new GLContextStub()); |
+ case kGLImplementationOSMesaGL: { |
+ scoped_refptr<GLContext> context(new GLContextOSMesa(share_group)); |
+ if (!context->Initialize(compatible_surface, gpu_preference)) |
+ return NULL; |
+ return context; |
+ } |
+ case kGLImplementationEGLGLES2: { |
+ scoped_refptr<GLContext> context(new GLContextEGL(share_group)); |
+ if (!context->Initialize(compatible_surface, gpu_preference)) |
+ return NULL; |
+ return context; |
+ } |
+ default: |
+ NOTREACHED(); |
+ return NULL; |
} |
- |
- context = new GLContextEGL(share_group); |
- |
- if (!context->Initialize(compatible_surface, gpu_preference)) |
- return NULL; |
- return context; |
} |
} // namespace gfx |