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; |