Home | History | Annotate | Download | only in gl
      1 // Copyright (c) 2013 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/gl/gl_context.h"
      6 
      7 #include "base/logging.h"
      8 #include "base/memory/ref_counted.h"
      9 #include "base/sys_info.h"
     10 #include "ui/gl/gl_bindings.h"
     11 #include "ui/gl/gl_context_egl.h"
     12 #include "ui/gl/gl_context_osmesa.h"
     13 #include "ui/gl/gl_context_stub.h"
     14 #include "ui/gl/gl_implementation.h"
     15 #include "ui/gl/gl_surface.h"
     16 
     17 namespace gfx {
     18 
     19 // static
     20 scoped_refptr<GLContext> GLContext::CreateGLContext(
     21     GLShareGroup* share_group,
     22     GLSurface* compatible_surface,
     23     GpuPreference gpu_preference) {
     24 
     25   switch (GetGLImplementation()) {
     26     case kGLImplementationMockGL:
     27       return scoped_refptr<GLContext>(new GLContextStub());
     28     case kGLImplementationOSMesaGL: {
     29       scoped_refptr<GLContext> context(new GLContextOSMesa(share_group));
     30       if (!context->Initialize(compatible_surface, gpu_preference))
     31         return NULL;
     32       return context;
     33     }
     34     case kGLImplementationEGLGLES2: {
     35       scoped_refptr<GLContext> context(new GLContextEGL(share_group));
     36       if (!context->Initialize(compatible_surface, gpu_preference))
     37         return NULL;
     38       return context;
     39     }
     40     default:
     41       NOTREACHED();
     42       return NULL;
     43   }
     44 }
     45 
     46 }  // namespace gfx
     47 
     48