Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(598)

Unified Diff: gpu/command_buffer/service/async_pixel_transfer_manager_android.cc

Issue 769703005: Move AW renderer compositor context to gpu thread (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ready Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698