Home | History | Annotate | Download | only in gl
      1 // Copyright (c) 2012 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/debug/trace_event.h"
      8 #include "base/logging.h"
      9 #include "base/memory/scoped_ptr.h"
     10 #include "ui/gl/gl_bindings.h"
     11 #include "ui/gl/gl_context_egl.h"
     12 #include "ui/gl/gl_context_glx.h"
     13 #include "ui/gl/gl_context_osmesa.h"
     14 #include "ui/gl/gl_context_stub.h"
     15 #include "ui/gl/gl_implementation.h"
     16 #include "ui/gl/gl_surface_egl.h"
     17 #include "ui/gl/gl_surface_glx.h"
     18 #include "ui/gl/gl_surface_osmesa.h"
     19 #include "ui/gl/gl_surface_stub.h"
     20 
     21 namespace gfx {
     22 
     23 class GLShareGroup;
     24 
     25 scoped_refptr<GLContext> GLContext::CreateGLContext(
     26     GLShareGroup* share_group,
     27     GLSurface* compatible_surface,
     28     GpuPreference gpu_preference) {
     29   TRACE_EVENT0("gpu", "GLContext::CreateGLContext");
     30   switch (GetGLImplementation()) {
     31     case kGLImplementationOSMesaGL: {
     32       scoped_refptr<GLContext> context(new GLContextOSMesa(share_group));
     33       if (!context->Initialize(compatible_surface, gpu_preference))
     34         return NULL;
     35 
     36       return context;
     37     }
     38     case kGLImplementationDesktopGL: {
     39       scoped_refptr<GLContext> context(new GLContextGLX(share_group));
     40       if (!context->Initialize(compatible_surface, gpu_preference))
     41         return NULL;
     42 
     43       return context;
     44     }
     45     case kGLImplementationEGLGLES2: {
     46       scoped_refptr<GLContext> context(new GLContextEGL(share_group));
     47       if (!context->Initialize(compatible_surface, gpu_preference))
     48         return NULL;
     49 
     50       return context;
     51     }
     52     case kGLImplementationMockGL:
     53       return new GLContextStub;
     54     default:
     55       NOTREACHED();
     56       return NULL;
     57   }
     58 }
     59 
     60 }  // namespace gfx
     61