blob: 0f6cdd48bb0523a4209ec2cc325c6a83dc3be7de [file] [log] [blame]
[email protected]ffae4022011-05-12 22:54:291// Copyright (c) 2011 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.
4
5#include "ui/gfx/gl/gl_surface.h"
6
7#include "base/logging.h"
8#include "base/memory/scoped_ptr.h"
9#include "third_party/mesa/MesaLib/include/GL/osmesa.h"
10#include "ui/gfx/gl/gl_bindings.h"
11#include "ui/gfx/gl/gl_implementation.h"
12#include "ui/gfx/gl/gl_surface_cgl.h"
13#include "ui/gfx/gl/gl_surface_osmesa.h"
14#include "ui/gfx/gl/gl_surface_stub.h"
15
16namespace gfx {
17
[email protected]0f5e8882011-11-08 22:29:3818bool GLSurface::InitializeOneOffInternal() {
[email protected]ffae4022011-05-12 22:54:2919 switch (GetGLImplementation()) {
20 case kGLImplementationDesktopGL:
21 if (!GLSurfaceCGL::InitializeOneOff()) {
22 LOG(ERROR) << "GLSurfaceCGL::InitializeOneOff failed.";
23 return false;
24 }
25 break;
26 default:
27 break;
28 }
[email protected]ffae4022011-05-12 22:54:2929 return true;
30}
31
[email protected]fbe20372011-06-01 01:46:3832scoped_refptr<GLSurface> GLSurface::CreateViewGLSurface(
[email protected]79311e82011-09-20 00:40:5033 bool software,
[email protected]fbe20372011-06-01 01:46:3834 gfx::PluginWindowHandle window) {
[email protected]79311e82011-09-20 00:40:5035 return CreateOffscreenGLSurface(software, gfx::Size(1, 1));
[email protected]ffae4022011-05-12 22:54:2936}
[email protected]ffae4022011-05-12 22:54:2937
[email protected]fbe20372011-06-01 01:46:3838scoped_refptr<GLSurface> GLSurface::CreateOffscreenGLSurface(
[email protected]f81f5952011-07-21 18:52:4739 bool software,
[email protected]fbe20372011-06-01 01:46:3840 const gfx::Size& size) {
[email protected]f81f5952011-07-21 18:52:4741 if (software)
42 return NULL;
43
[email protected]ffae4022011-05-12 22:54:2944 switch (GetGLImplementation()) {
45 case kGLImplementationOSMesaGL: {
[email protected]fbe20372011-06-01 01:46:3846 scoped_refptr<GLSurface> surface(new GLSurfaceOSMesa(OSMESA_RGBA,
47 size));
[email protected]ffae4022011-05-12 22:54:2948 if (!surface->Initialize())
49 return NULL;
50
[email protected]fbe20372011-06-01 01:46:3851 return surface;
[email protected]ffae4022011-05-12 22:54:2952 }
53 case kGLImplementationDesktopGL: {
[email protected]fbe20372011-06-01 01:46:3854 scoped_refptr<GLSurface> surface(new PbufferGLSurfaceCGL(size));
[email protected]ffae4022011-05-12 22:54:2955 if (!surface->Initialize())
56 return NULL;
57
[email protected]fbe20372011-06-01 01:46:3858 return surface;
[email protected]ffae4022011-05-12 22:54:2959 }
60 case kGLImplementationMockGL:
61 return new GLSurfaceStub;
62 default:
63 NOTREACHED();
64 return NULL;
65 }
66}
67
68} // namespace gfx