[DevTools] Move DispatchOnDevToolsFrontend to embedder.
[chromium-blink-merge.git] / ui / gl / gl_surface_android.cc
blob1304b385bd62b1e6b8ac7cce692977ca3de33b97
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ui/gl/gl_surface.h"
7 #include "base/logging.h"
8 #include "base/memory/ref_counted.h"
9 #include "third_party/khronos/EGL/egl.h"
10 #include "ui/gfx/native_widget_types.h"
11 #include "ui/gl/gl_implementation.h"
12 #include "ui/gl/gl_surface_egl.h"
13 #include "ui/gl/gl_surface_osmesa.h"
14 #include "ui/gl/gl_surface_stub.h"
16 namespace gfx {
18 // static
19 bool GLSurface::InitializeOneOffInternal() {
20 switch (GetGLImplementation()) {
21 case kGLImplementationEGLGLES2:
22 if (!GLSurfaceEGL::InitializeOneOff()) {
23 LOG(ERROR) << "GLSurfaceEGL::InitializeOneOff failed.";
24 return false;
26 default:
27 break;
29 return true;
32 // static
33 scoped_refptr<GLSurface> GLSurface::CreateViewGLSurface(
34 gfx::AcceleratedWidget window) {
35 CHECK_NE(kGLImplementationNone, GetGLImplementation());
36 if (GetGLImplementation() == kGLImplementationOSMesaGL) {
37 scoped_refptr<GLSurface> surface(new GLSurfaceOSMesaHeadless());
38 if (!surface->Initialize())
39 return NULL;
40 return surface;
42 DCHECK(GetGLImplementation() == kGLImplementationEGLGLES2);
43 if (window != kNullAcceleratedWidget) {
44 scoped_refptr<GLSurface> surface = new NativeViewGLSurfaceEGL(window);
45 if (surface->Initialize())
46 return surface;
47 } else {
48 scoped_refptr<GLSurface> surface = new GLSurfaceStub();
49 if (surface->Initialize())
50 return surface;
52 return NULL;
55 // static
56 scoped_refptr<GLSurface> GLSurface::CreateOffscreenGLSurface(
57 const gfx::Size& size) {
58 CHECK_NE(kGLImplementationNone, GetGLImplementation());
59 switch (GetGLImplementation()) {
60 case kGLImplementationOSMesaGL: {
61 scoped_refptr<GLSurface> surface(new GLSurfaceOSMesa(1, size));
62 if (!surface->Initialize())
63 return NULL;
65 return surface;
67 case kGLImplementationEGLGLES2: {
68 scoped_refptr<GLSurface> surface;
69 if (GLSurfaceEGL::IsEGLSurfacelessContextSupported() &&
70 (size.width() == 0 && size.height() == 0)) {
71 surface = new SurfacelessEGL(size);
72 } else {
73 surface = new PbufferGLSurfaceEGL(size);
76 if (!surface->Initialize())
77 return NULL;
78 return surface;
80 default:
81 NOTREACHED();
82 return NULL;
86 EGLNativeDisplayType GetPlatformDefaultEGLNativeDisplay() {
87 return EGL_DEFAULT_DISPLAY;
90 } // namespace gfx