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 15 namespace gpu { 16 Create(gfx::GLContext * context)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