cc: zero/one-copy based on shared memory on IOS uses GL_TEXTURE_2D, not GL_TEXTURE_RECTANGLE_ARB.
GL_TEXTURE_RECTANGLE_ARB is needed for only IOSurface backed images like GL_TEXTURE_EXTERNAL_OES
is needed for only surface texture backed images on Android. Replace switches::kUseImageExternal
with switches::kUseImageTextureTarget in order to let cc know what is proper texture target backed image.
Review URL: https://codereview.chromium.org/766663005
Cr-Commit-Position: refs/heads/master@{#307214}
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index 1096262..e19c9a2cc 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -2010,16 +2010,13 @@
}
if (GetRendererCapabilities().using_image) {
- unsigned image_target = GL_TEXTURE_2D;
-#if defined(OS_MACOSX)
- // GL_TEXTURE_RECTANGLE_ARB target is required by IOSurface backed images.
- DCHECK(context_provider->ContextCapabilities().gpu.texture_rectangle);
- image_target = GL_TEXTURE_RECTANGLE_ARB;
-#endif
- if (settings_.use_image_external) {
- DCHECK(context_provider->ContextCapabilities().gpu.egl_image_external);
- image_target = GL_TEXTURE_EXTERNAL_OES;
- }
+ unsigned image_target = settings_.use_image_texture_target;
+ DCHECK_IMPLIES(
+ image_target == GL_TEXTURE_RECTANGLE_ARB,
+ context_provider->ContextCapabilities().gpu.texture_rectangle);
+ DCHECK_IMPLIES(
+ image_target == GL_TEXTURE_EXTERNAL_OES,
+ context_provider->ContextCapabilities().gpu.egl_image_external);
if (settings_.use_zero_copy || IsSynchronousSingleThreaded()) {
*resource_pool =
diff --git a/cc/trees/layer_tree_settings.cc b/cc/trees/layer_tree_settings.cc
index c6bca56c..508e7ea6 100644
--- a/cc/trees/layer_tree_settings.cc
+++ b/cc/trees/layer_tree_settings.cc
@@ -4,6 +4,7 @@
#include "cc/trees/layer_tree_settings.h"
+#include <GLES2/gl2.h>
#include <limits>
#include "base/command_line.h"
@@ -60,7 +61,7 @@
strict_layer_property_change_checking(false),
use_one_copy(false),
use_zero_copy(false),
- use_image_external(false),
+ use_image_texture_target(GL_TEXTURE_2D),
ignore_root_layer_flings(false),
scheduled_raster_task_limit(32),
use_occlusion_for_tile_prioritization(false),
diff --git a/cc/trees/layer_tree_settings.h b/cc/trees/layer_tree_settings.h
index 346b611..1892b39 100644
--- a/cc/trees/layer_tree_settings.h
+++ b/cc/trees/layer_tree_settings.h
@@ -72,7 +72,7 @@
bool strict_layer_property_change_checking;
bool use_one_copy;
bool use_zero_copy;
- bool use_image_external;
+ unsigned use_image_texture_target;
bool ignore_root_layer_flings;
size_t scheduled_raster_task_limit;
bool use_occlusion_for_tile_prioritization;