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

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

Issue 793693003: Tile Compression (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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..66ceca181dada25ff882615bee2f570d97913492 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,15 @@
#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_compressed.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 +64,25 @@ bool AllowTransferThreadForGpu() {
gpu != GPU_NVIDIA_ES31 && gpu != GPU_ADRENO_420;
}
+bool IsAsyncEGLUploadsDisabled(gfx::GLContext* context) {
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess();
+ if (!command_line.HasSwitch(switches::kDisableAsyncEGLUploadsIfCompressed))
+ return false;
+
+ if (context->HasExtension("GL_EXT_texture_compression_s3tc") ||
+ (context->HasExtension("GL_ANGLE_texture_compression_dxt1") &&
+ context->HasExtension("GL_ANGLE_texture_compression_dxt5")) ||
+ context->HasExtension("GL_OES_compressed_ETC1_RGB8_texture") ||
+ context->HasExtension("GL_AMD_compressed_ATC_texture") ||
+ context->HasExtension("GL_ATI_texture_compression_atitc")) {
+ if (!command_line.HasSwitch(
+ switches::kEnableAsyncPixelTransferManagerCompressed)) {
+ return true;
+ }
+ }
+
+ return false;
+}
}
// We only used threaded uploads when we can:
@@ -68,6 +90,7 @@ bool AllowTransferThreadForGpu() {
// - Bind EGLImages to OpenGL textures (GL_OES_EGL_image)
// - Use fences (to test for upload completion).
// - The heap size is large enough.
+// - No compressed formats are used.
// TODO(kaanb|epenner): Remove the IsImagination() check pending the
// resolution of crbug.com/249147
// TODO(kaanb|epenner): Remove the IsLowEndDevice() check pending the
@@ -84,9 +107,14 @@ AsyncPixelTransferManager* AsyncPixelTransferManager::Create(
context->HasExtension("EGL_KHR_image_base") &&
context->HasExtension("EGL_KHR_gl_texture_2D_image") &&
context->HasExtension("GL_OES_EGL_image") &&
- AllowTransferThreadForGpu()) {
+ AllowTransferThreadForGpu() && !IsAsyncEGLUploadsDisabled(context)) {
TRACE_EVENT0("gpu", "AsyncPixelTransferManager_CreateWithThread");
- return new AsyncPixelTransferManagerEGL;
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess();
+ if (command_line.HasSwitch(
+ switches::kEnableAsyncPixelTransferManagerCompressed))
+ return new AsyncPixelTransferManagerCompressed;
+ else
+ return new AsyncPixelTransferManagerEGL;
}
return new AsyncPixelTransferManagerIdle;
case gfx::kGLImplementationOSMesaGL: {

Powered by Google App Engine
This is Rietveld 408576698