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_osmesa.h"
     13 #include "ui/gl/gl_context_stub.h"
     14 #include "ui/gl/gl_context_wgl.h"
     15 #include "ui/gl/gl_implementation.h"
     16 #include "ui/gl/gl_surface_egl.h"
     17 #include "ui/gl/gl_surface_osmesa.h"
     18 #include "ui/gl/gl_surface_stub.h"
     19 #include "ui/gl/gl_surface_wgl.h"
     20 
     21 namespace gfx {
     22 
     23 scoped_refptr<GLContext> GLContext::CreateGLContext(
     24     GLShareGroup* share_group,
     25     GLSurface* compatible_surface,
     26     GpuPreference gpu_preference) {
     27   TRACE_EVENT0("gpu", "GLContext::CreateGLContext");
     28   switch (GetGLImplementation()) {
     29     case kGLImplementationOSMesaGL: {
     30       scoped_refptr<GLContext> context(new GLContextOSMesa(share_group));
     31       if (!context->Initialize(compatible_surface, gpu_preference))
     32         return NULL;
     33 
     34       return context;
     35     }
     36     case kGLImplementationEGLGLES2: {
     37       scoped_refptr<GLContext> context(new GLContextEGL(share_group));
     38       if (!context->Initialize(compatible_surface, gpu_preference))
     39         return NULL;
     40 
     41       return context;
     42     }
     43     case kGLImplementationDesktopGL: {
     44       scoped_refptr<GLContext> context(new GLContextWGL(share_group));
     45       if (!context->Initialize(compatible_surface, gpu_preference))
     46         return NULL;
     47 
     48       return context;
     49     }
     50     case kGLImplementationMockGL:
     51       return new GLContextStub;
     52     default:
     53       NOTREACHED();
     54       return NULL;
     55   }
     56 }
     57 
     58 }  // namespace gfx
     59