1// Copyright 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 "gpu/command_buffer/service/async_pixel_transfer_manager.h" 6 7#include "base/command_line.h" 8#include "base/debug/trace_event.h" 9#include "gpu/command_buffer/service/async_pixel_transfer_manager_idle.h" 10#include "gpu/command_buffer/service/async_pixel_transfer_manager_share_group.h" 11#include "gpu/command_buffer/service/async_pixel_transfer_manager_stub.h" 12#include "gpu/command_buffer/service/gpu_switches.h" 13#include "ui/gl/gl_implementation.h" 14 15namespace gpu { 16 17AsyncPixelTransferManager* AsyncPixelTransferManager::Create( 18 gfx::GLContext* context) { 19 TRACE_EVENT0("gpu", "AsyncPixelTransferManager::Create"); 20 if (CommandLine::ForCurrentProcess()->HasSwitch( 21 switches::kEnableShareGroupAsyncTextureUpload)) { 22 DCHECK(context); 23 return static_cast<AsyncPixelTransferManager*> ( 24 new AsyncPixelTransferManagerShareGroup(context)); 25 } 26 27 switch (gfx::GetGLImplementation()) { 28 case gfx::kGLImplementationOSMesaGL: 29 case gfx::kGLImplementationDesktopGL: 30 case gfx::kGLImplementationEGLGLES2: 31 return new AsyncPixelTransferManagerIdle; 32 case gfx::kGLImplementationMockGL: 33 return new AsyncPixelTransferManagerStub; 34 default: 35 NOTREACHED(); 36 return NULL; 37 } 38} 39 40} // namespace gpu 41