Chromium Code Reviews| Index: gpu/command_buffer/service/async_pixel_transfer_manager_android.cc |
| diff --git a/gpu/command_buffer/service/async_pixel_transfer_manager_android.cc b/gpu/command_buffer/service/async_pixel_transfer_manager_android.cc |
| index eadc34f07a196d298f11be321b339b1b4c26dd81..e1d87b5a352ca339c7e886e0db52bd3e040b59f0 100644 |
| --- a/gpu/command_buffer/service/async_pixel_transfer_manager_android.cc |
| +++ b/gpu/command_buffer/service/async_pixel_transfer_manager_android.cc |
| @@ -4,12 +4,14 @@ |
| #include "gpu/command_buffer/service/async_pixel_transfer_manager.h" |
| +#include "base/command_line.h" |
| #include "base/debug/trace_event.h" |
| #include "base/sys_info.h" |
| #include "gpu/command_buffer/service/async_pixel_transfer_manager_egl.h" |
| #include "gpu/command_buffer/service/async_pixel_transfer_manager_idle.h" |
| #include "gpu/command_buffer/service/async_pixel_transfer_manager_stub.h" |
| #include "gpu/command_buffer/service/async_pixel_transfer_manager_sync.h" |
| +#include "gpu/command_buffer/service/gpu_switches.h" |
| #include "ui/gl/gl_context.h" |
| #include "ui/gl/gl_implementation.h" |
| @@ -61,6 +63,14 @@ bool AllowTransferThreadForGpu() { |
| gpu != GPU_NVIDIA_ES31 && gpu != GPU_ADRENO_420; |
| } |
| +bool TransferWithThreadedTextureMailboxes() { |
| + base::CommandLine* cl = base::CommandLine::ForCurrentProcess(); |
| + // AsyncPixelTransferManagerEGL is not compatible with threaded texture |
| + // mailbox sharing due to EGLImage limitations. |
| + return cl->HasSwitch(switches::kEnableThreadedTextureMailboxes) && |
| + cl->HasSwitch(switches::kEnableAsyncPixelWithThreadedTextureMailboxes); |
|
no sievers
2015/01/15 20:26:05
Do we really need the other command line (kEnableA
boliu
2015/01/21 02:08:01
I wanted the new one as a fallback in case anythin
|
| +} |
| + |
| } |
| // We only used threaded uploads when we can: |
| @@ -75,6 +85,7 @@ bool AllowTransferThreadForGpu() { |
| AsyncPixelTransferManager* AsyncPixelTransferManager::Create( |
| gfx::GLContext* context) { |
| DCHECK(context->IsCurrent(NULL)); |
| + bool threaded_texture_mailboxes = TransferWithThreadedTextureMailboxes(); |
|
epenner
2015/01/15 00:28:23
Nit.
Mildly prefer reversing the bool to be "use_
boliu
2015/01/21 02:08:01
Done.
|
| switch (gfx::GetGLImplementation()) { |
| case gfx::kGLImplementationEGLGLES2: |
| DCHECK(context); |
| @@ -84,14 +95,15 @@ AsyncPixelTransferManager* AsyncPixelTransferManager::Create( |
| context->HasExtension("EGL_KHR_image_base") && |
| context->HasExtension("EGL_KHR_gl_texture_2D_image") && |
| context->HasExtension("GL_OES_EGL_image") && |
| + !threaded_texture_mailboxes && |
| AllowTransferThreadForGpu()) { |
| TRACE_EVENT0("gpu", "AsyncPixelTransferManager_CreateWithThread"); |
| return new AsyncPixelTransferManagerEGL; |
| } |
|
no sievers
2015/01/15 20:26:05
Can you put a comment that we do this because of h
boliu
2015/01/21 02:08:01
Done.
|
| - return new AsyncPixelTransferManagerIdle; |
| + return new AsyncPixelTransferManagerIdle(threaded_texture_mailboxes); |
| case gfx::kGLImplementationOSMesaGL: { |
| TRACE_EVENT0("gpu", "AsyncPixelTransferManager_CreateIdle"); |
| - return new AsyncPixelTransferManagerIdle; |
| + return new AsyncPixelTransferManagerIdle(false); |
| } |
| case gfx::kGLImplementationMockGL: |
| return new AsyncPixelTransferManagerStub; |