summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcourage <courage@chromium.org>2014-09-10 12:35:02 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-10 19:37:02 +0000
commitb84165fd869bf3d7e3637beb24412e39216ce29c (patch)
tree3283538bad5d755f66f738da63fb9eadcd944cf6
parentcffdd030d9ecd5e2ef50de941fca337a94c3b476 (diff)
downloadchromium_src-b84165fd869bf3d7e3637beb24412e39216ce29c.zip
chromium_src-b84165fd869bf3d7e3637beb24412e39216ce29c.tar.gz
chromium_src-b84165fd869bf3d7e3637beb24412e39216ce29c.tar.bz2
Revert of cc: Add occlusion checker as a fixed view of occlusion tracker. (patchset #7 id:120001 of https://codereview.chromium.org/547723002/)
Reason for revert: Broke linux GN build: http://build.chromium.org/p/chromium.linux/builders/Linux%20GN/builds/11591 [496/2225 | 35.477] CXX obj/ui/views/controls/views.focusable_border.o [497/2225 | 35.633] CXX obj/ui/views/controls/views.glow_hover_controller.o FAILED: /mnt/data/b/build/goma/gomacc ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/cc/layers/cc_unittests.picture_layer_impl_unittest.o.d -DCHROMIUM_BUILD -DENABLE_NOTIFICATIONS -DENABLE_EGLIMAGE=1 -DENABLE_BACKGROUND=1 -DV8_DEPRECATION_WARNINGS -DCLD_VERSION=2 -DENABLE_MDNS=1 -DENABLE_PEPPER_CDMS -DENABLE_PLUGINS=1 -DENABLE_PRINTING=1 -DENABLE_FULL_PRINTING=1 -DENABLE_SPELLCHECK=1 -DUSE_UDEV -DTOOLKIT_VIEWS=1 -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_ASH=1 -DUSE_AURA=1 -DUSE_CAIRO=1 -DUSE_CLIPBOARD_AURAX11=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_GLIB=1 -DUSE_NSS=1 -DUSE_X11=1 -DUSE_XI2_MT=2 -DDISABLE_NACL -DENABLE_EXTENSIONS=1 -DENABLE_CONFIGURATION_POLICY -DENABLE_TASK_MANAGER=1 -DENABLE_THEMES=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_MANAGED_USERS=1 -DENABLE_SERVICE_DISCOVERY=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_REMOTING=1 -DENABLE_GOOGLE_NOW=1 -DENABLE_ONE_CLICK_SIGNIN -DCR_CLANG_REVISION=214024 -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DGL_GLEXT_PROTOTYPES -DMEDIA_DISABLE_LIBVPX -DSK_SUPPORT_LEGACY_PUBLIC_IMAGEINFO_FIELDS -DSK_IGNORE_PROPER_FRACTIONAL_SCALING -DSK_SUPPORT_LEGACY_PICTURE_CLONE -DSK_IGNORE_ETC1_SUPPORT -DSK_IGNORE_GPU_DITHER -DSK_SUPPORT_LEGACY_IMAGECACHE_NAME -DSK_LEGACY_PICTURE_SIZE_API -DSK_LEGACY_PICTURE_DRAW_API -DSK_ENABLE_INST_COUNT=0 -DGR_GL_CUSTOM_SETUP_HEADER=\"GrGLConfig_chrome.h\" -DSK_ENABLE_LEGACY_API_ALIASING=1 -DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1 -DGR_GL_IGNORE_ES3_MSAA=0 -DSK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT -DSK_SUPPORT_LEGACY_GETTOTALCLIP -DSK_SUPPORT_GPU=1 -DSK_USE_POSIX_THREADS -DGTEST_HAS_POSIX_RE=0 -DGTEST_LANG_CXX11=0 -DGTEST_HAS_RTTI=0 -DUNIT_TEST -I../.. -Igen -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I../../third_party/khronos -I../../gpu -Igen/ui/gl -I../../skia/config -I../../skia/ext -I../../third_party/skia/include/config -I../../third_party/skia/include/core -I../../third_party/skia/include/effects -I../../third_party/skia/include/images -I../../third_party/skia/include/lazy -I../../third_party/skia/include/pathops -I../../third_party/skia/include/pdf -I../../third_party/skia/include/pipe -I../../third_party/skia/include/ports -I../../third_party/skia/include/utils -I../../third_party/skia/src/core -I../../third_party/skia/src/image -I../../third_party/skia/src/opts -I../../third_party/skia/src/ports -I../../third_party/skia/src/sfnt -I../../third_party/skia/src/utils -I../../third_party/skia/src/lazy -I../../third_party/skia/include/gpu -I../../third_party/skia/src/gpu -I../../testing/gtest/include -I../../testing/gmock/include -fno-strict-aliasing -fstack-protector --param=ssp-buffer-size=4 -m64 -funwind-tables -fPIC -pipe -pthread -fcolor-diagnostics -Wall -Wextra -Wsign-compare -Wendif-labels -Werror -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-char-subscripts -Wno-covered-switch-default -Wno-deprecated-register -Wno-unused-function -fvisibility=hidden -Xclang -load -Xclang ../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so -Xclang -add-plugin -Xclang find-bad-constructs -Wheader-hygiene -Wstring-conversion -fno-ident -fdata-sections -ffunction-sections -O2 -g2 -fno-threadsafe-statics -fvisibility-inlines-hidden -std=gnu++11 -Wno-reserved-user-defined-literal -fno-rtti -fno-exceptions -c ../../cc/layers/picture_layer_impl_unittest.cc -o obj/cc/layers/cc_unittests.picture_layer_impl_unittest.o ../../cc/layers/picture_layer_impl_unittest.cc:2578:31:error: reference to type 'const cc::Occlusion' could not bind to an rvalue of type 'long' pending_layer_->UpdateTiles(NULL); ^~~~ /mnt/data/b/build/slave/Linux_GN/build/src/third_party/llvm-build/Release+Asserts/bin/../lib/clang/3.5.0/include/stddef.h:96:18: note: expanded from macro 'NULL' # define NULL __null ^~~~~~ ../../cc/layers/picture_layer_impl.h:113:24: note: passing argument to parameter 'occlusion_in_content_space' here const Occlusion& occlusion_in_content_space) OVERRIDE; ^ ../../cc/layers/picture_layer_impl_unittest.cc:2608:31:error: reference to type 'const cc::Occlusion' could not bind to an rvalue of type 'long' pending_layer_->UpdateTiles(NULL); ^~~~ /mnt/data/b/build/slave/Linux_GN/build/src/third_party/llvm-build/Release+Asserts/bin/../lib/clang/3.5.0/include/stddef.h:96:18: note: expanded from macro 'NULL' # define NULL __null ^~~~~~ ../../cc/layers/picture_layer_impl.h:113:24: note: passing argument to parameter 'occlusion_in_content_space' here const Occlusion& occlusion_in_content_space) OVERRIDE; ^ 2 errors generated. ninja: build stopped: subcommand failed. Original issue's description: > cc: Add occlusion checker as a fixed view of occlusion tracker. > > This patch adds an occlusion checker to get the state of > occlusion tracker for permanent checks. That is, occlusion > checker does not have to be queried during a layer walk. > > BUG=410932 > R=danakj > > Committed: https://crrev.com/1af780529157c94a9e0f05bcf478543b85714f6b > Cr-Commit-Position: refs/heads/master@{#294205} TBR=danakj@chromium.org,vmpstr@chromium.org NOTREECHECKS=true NOTRY=true BUG=410932 Review URL: https://codereview.chromium.org/551463005 Cr-Commit-Position: refs/heads/master@{#294209}
-rw-r--r--cc/BUILD.gn2
-rw-r--r--cc/cc.gyp2
-rw-r--r--cc/layers/layer_impl.h4
-rw-r--r--cc/layers/picture_image_layer_impl_unittest.cc2
-rw-r--r--cc/layers/picture_layer_impl.cc18
-rw-r--r--cc/layers/picture_layer_impl.h5
-rw-r--r--cc/layers/picture_layer_impl_unittest.cc16
-rw-r--r--cc/resources/picture_layer_tiling.cc19
-rw-r--r--cc/resources/picture_layer_tiling.h16
-rw-r--r--cc/resources/picture_layer_tiling_perftest.cc26
-rw-r--r--cc/resources/picture_layer_tiling_unittest.cc187
-rw-r--r--cc/resources/tile_manager_perftest.cc10
-rw-r--r--cc/resources/tile_manager_unittest.cc96
-rw-r--r--cc/trees/layer_tree_impl.cc11
-rw-r--r--cc/trees/occlusion.cc48
-rw-r--r--cc/trees/occlusion.h36
-rw-r--r--cc/trees/occlusion_tracker.cc10
-rw-r--r--cc/trees/occlusion_tracker.h6
-rw-r--r--cc/trees/occlusion_tracker_unittest.cc5
19 files changed, 294 insertions, 225 deletions
diff --git a/cc/BUILD.gn b/cc/BUILD.gn
index 6d70f46..300150f 100644
--- a/cc/BUILD.gn
+++ b/cc/BUILD.gn
@@ -452,8 +452,6 @@ component("cc") {
"trees/layer_tree_impl.h",
"trees/layer_tree_settings.cc",
"trees/layer_tree_settings.h",
- "trees/occlusion.cc",
- "trees/occlusion.h",
"trees/occlusion_tracker.cc",
"trees/occlusion_tracker.h",
"trees/proxy.cc",
diff --git a/cc/cc.gyp b/cc/cc.gyp
index af640a2..9d62397 100644
--- a/cc/cc.gyp
+++ b/cc/cc.gyp
@@ -481,8 +481,6 @@
'trees/layer_tree_impl.h',
'trees/layer_tree_settings.cc',
'trees/layer_tree_settings.h',
- 'trees/occlusion.cc',
- 'trees/occlusion.h',
'trees/occlusion_tracker.cc',
'trees/occlusion_tracker.h',
'trees/proxy.cc',
diff --git a/cc/layers/layer_impl.h b/cc/layers/layer_impl.h
index 65143ab..c10710c 100644
--- a/cc/layers/layer_impl.h
+++ b/cc/layers/layer_impl.h
@@ -49,7 +49,6 @@ namespace cc {
class LayerTreeHostImpl;
class LayerTreeImpl;
class MicroBenchmarkImpl;
-class Occlusion;
template <typename LayerType>
class OcclusionTracker;
class RenderPass;
@@ -205,7 +204,8 @@ class CC_EXPORT LayerImpl : public LayerAnimationValueObserver,
virtual RenderPassId FirstContributingRenderPassId() const;
virtual RenderPassId NextContributingRenderPassId(RenderPassId id) const;
- virtual void UpdateTiles(const Occlusion& occlusion_in_layer_space) {}
+ virtual void UpdateTiles(
+ const OcclusionTracker<LayerImpl>* occlusion_tracker) {}
virtual void NotifyTileStateChanged(const Tile* tile) {}
virtual ScrollbarLayerImplBase* ToScrollbarLayer();
diff --git a/cc/layers/picture_image_layer_impl_unittest.cc b/cc/layers/picture_image_layer_impl_unittest.cc
index f22b6cd..48b4d7b 100644
--- a/cc/layers/picture_image_layer_impl_unittest.cc
+++ b/cc/layers/picture_image_layer_impl_unittest.cc
@@ -84,7 +84,7 @@ class PictureImageLayerImplTest : public testing::Test {
maximum_animation_contents_scale;
layer->draw_properties().screen_space_transform_is_animating =
animating_transform_to_screen;
- layer->UpdateTiles(Occlusion());
+ layer->UpdateTiles(NULL);
}
protected:
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index 1205e07..05dab30 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -420,11 +420,17 @@ void PictureLayerImpl::AppendQuads(
}
void PictureLayerImpl::UpdateTiles(
- const Occlusion& occlusion_in_content_space) {
+ const OcclusionTracker<LayerImpl>* occlusion_tracker) {
TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTiles");
DoPostCommitInitializationIfNeeded();
+ // TODO(danakj): We should always get an occlusion tracker when we are using
+ // occlusion, so update this check when we don't use a pending tree in the
+ // browser compositor.
+ DCHECK(!occlusion_tracker ||
+ layer_tree_impl()->settings().use_occlusion_for_tile_prioritization);
+
visible_rect_for_tile_priority_ = visible_content_rect();
viewport_rect_for_tile_priority_ =
layer_tree_impl()->ViewportRectForTilePriority();
@@ -459,14 +465,14 @@ void PictureLayerImpl::UpdateTiles(
should_update_tile_priorities_ = true;
- UpdateTilePriorities(occlusion_in_content_space);
+ UpdateTilePriorities(occlusion_tracker);
if (layer_tree_impl()->IsPendingTree())
MarkVisibleResourcesAsRequired();
}
void PictureLayerImpl::UpdateTilePriorities(
- const Occlusion& occlusion_in_content_space) {
+ const OcclusionTracker<LayerImpl>* occlusion_tracker) {
TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTilePriorities");
double current_frame_time_in_seconds =
@@ -496,7 +502,9 @@ void PictureLayerImpl::UpdateTilePriorities(
visible_layer_rect,
ideal_contents_scale_,
current_frame_time_in_seconds,
- occlusion_in_content_space);
+ occlusion_tracker,
+ render_target(),
+ draw_transform());
}
// Tile priorities were modified.
@@ -748,7 +756,7 @@ void PictureLayerImpl::SyncTiling(
// when we stop using the pending tree in the browser compositor. If we want
// to support occlusion tracking here, we need to dirty the draw properties
// or save occlusion as a draw property.
- UpdateTilePriorities(Occlusion());
+ UpdateTilePriorities(NULL);
}
}
diff --git a/cc/layers/picture_layer_impl.h b/cc/layers/picture_layer_impl.h
index c7d987f..fd4fe0a 100644
--- a/cc/layers/picture_layer_impl.h
+++ b/cc/layers/picture_layer_impl.h
@@ -110,7 +110,7 @@ class CC_EXPORT PictureLayerImpl
const OcclusionTracker<LayerImpl>& occlusion_tracker,
AppendQuadsData* append_quads_data) OVERRIDE;
virtual void UpdateTiles(
- const Occlusion& occlusion_in_content_space) OVERRIDE;
+ const OcclusionTracker<LayerImpl>* occlusion_tracker) OVERRIDE;
virtual void NotifyTileStateChanged(const Tile* tile) OVERRIDE;
virtual void DidBecomeActive() OVERRIDE;
virtual void DidBeginTracing() OVERRIDE;
@@ -160,7 +160,8 @@ class CC_EXPORT PictureLayerImpl
void RemoveAllTilings();
void SyncFromActiveLayer(const PictureLayerImpl* other);
void AddTilingsForRasterScale();
- void UpdateTilePriorities(const Occlusion& occlusion_in_content_space);
+ void UpdateTilePriorities(
+ const OcclusionTracker<LayerImpl>* occlusion_tracker);
virtual bool ShouldAdjustRasterScale() const;
virtual void RecalculateRasterScales();
void CleanUpTilingsOnActiveLayer(
diff --git a/cc/layers/picture_layer_impl_unittest.cc b/cc/layers/picture_layer_impl_unittest.cc
index 7142f1d..44662d7 100644
--- a/cc/layers/picture_layer_impl_unittest.cc
+++ b/cc/layers/picture_layer_impl_unittest.cc
@@ -160,7 +160,7 @@ class PictureLayerImplTest : public testing::Test {
maximum_animation_contents_scale;
layer->draw_properties().screen_space_transform_is_animating =
animating_transform_to_screen;
- layer->UpdateTiles(Occlusion());
+ layer->UpdateTiles(NULL);
}
static void VerifyAllTilesExistAndHavePile(
const PictureLayerTiling* tiling,
@@ -348,7 +348,7 @@ TEST_F(PictureLayerImplTest, ExternalViewportRectForPrioritizingTiles) {
resourceless_software_draw);
active_layer_->draw_properties().visible_content_rect = viewport;
active_layer_->draw_properties().screen_space_transform = transform;
- active_layer_->UpdateTiles(Occlusion());
+ active_layer_->UpdateTiles(NULL);
gfx::Rect viewport_rect_for_tile_priority_in_view_space =
viewport_rect_for_tile_priority;
@@ -386,7 +386,7 @@ TEST_F(PictureLayerImplTest, ExternalViewportRectForPrioritizingTiles) {
resourceless_software_draw);
active_layer_->draw_properties().visible_content_rect = viewport;
active_layer_->draw_properties().screen_space_transform = transform;
- active_layer_->UpdateTiles(Occlusion());
+ active_layer_->UpdateTiles(NULL);
gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization);
bool success = transform_for_tile_priority.GetInverse(&screen_to_view);
@@ -447,7 +447,7 @@ TEST_F(PictureLayerImplTest,
resourceless_software_draw);
active_layer_->draw_properties().visible_content_rect = viewport;
active_layer_->draw_properties().screen_space_transform = transform;
- active_layer_->UpdateTiles(Occlusion());
+ active_layer_->UpdateTiles(NULL);
gfx::Rect visible_rect_for_tile_priority =
active_layer_->visible_rect_for_tile_priority();
@@ -475,7 +475,7 @@ TEST_F(PictureLayerImplTest,
viewport,
transform,
resourceless_software_draw);
- active_layer_->UpdateTiles(Occlusion());
+ active_layer_->UpdateTiles(NULL);
visible_rect_for_tile_priority =
gfx::ScaleToEnclosingRect(visible_rect_for_tile_priority, 2);
@@ -1508,7 +1508,7 @@ TEST_F(PictureLayerImplTest, TileOutsideOfViewportForTilePriorityNotRequired) {
time_ticks += base::TimeDelta::FromMilliseconds(200);
host_impl_.SetCurrentBeginFrameArgs(
CreateBeginFrameArgsForTesting(time_ticks));
- pending_layer_->UpdateTiles(Occlusion());
+ pending_layer_->UpdateTiles(NULL);
pending_layer_->MarkVisibleResourcesAsRequired();
@@ -3169,7 +3169,7 @@ TEST_F(NoLowResPictureLayerImplTest,
resourceless_software_draw);
active_layer_->draw_properties().visible_content_rect = viewport;
active_layer_->draw_properties().screen_space_transform = transform;
- active_layer_->UpdateTiles(Occlusion());
+ active_layer_->UpdateTiles(NULL);
gfx::Rect visible_rect_for_tile_priority =
active_layer_->visible_rect_for_tile_priority();
@@ -3197,7 +3197,7 @@ TEST_F(NoLowResPictureLayerImplTest,
viewport,
transform,
resourceless_software_draw);
- active_layer_->UpdateTiles(Occlusion());
+ active_layer_->UpdateTiles(NULL);
visible_rect_for_tile_priority =
gfx::ScaleToEnclosingRect(visible_rect_for_tile_priority, 2);
diff --git a/cc/resources/picture_layer_tiling.cc b/cc/resources/picture_layer_tiling.cc
index 0229879..0d50658 100644
--- a/cc/resources/picture_layer_tiling.cc
+++ b/cc/resources/picture_layer_tiling.cc
@@ -15,6 +15,7 @@
#include "cc/base/math_util.h"
#include "cc/resources/tile.h"
#include "cc/resources/tile_priority.h"
+#include "cc/trees/occlusion_tracker.h"
#include "ui/gfx/point_conversions.h"
#include "ui/gfx/rect_conversions.h"
#include "ui/gfx/safe_integer_conversions.h"
@@ -539,7 +540,9 @@ void PictureLayerTiling::UpdateTilePriorities(
const gfx::Rect& visible_layer_rect,
float ideal_contents_scale,
double current_frame_time_in_seconds,
- const Occlusion& occlusion_in_layer_space) {
+ const OcclusionTracker<LayerImpl>* occlusion_tracker,
+ const LayerImpl* render_target,
+ const gfx::Transform& draw_transform) {
if (!NeedsUpdateForFrameAtTime(current_frame_time_in_seconds)) {
// This should never be zero for the purposes of has_ever_been_updated().
DCHECK_NE(current_frame_time_in_seconds, 0.0);
@@ -602,10 +605,16 @@ void PictureLayerTiling::UpdateTilePriorities(
tile->SetPriority(tree, now_priority);
// Set whether tile is occluded or not.
- gfx::Rect tile_query_rect = ScaleToEnclosingRect(
- IntersectRects(tile->content_rect(), visible_rect_in_content_space),
- 1.0f / contents_scale_);
- bool is_occluded = occlusion_in_layer_space.IsOccluded(tile_query_rect);
+ bool is_occluded = false;
+ if (occlusion_tracker) {
+ gfx::Rect tile_query_rect = ScaleToEnclosingRect(
+ IntersectRects(tile->content_rect(), visible_rect_in_content_space),
+ 1.0f / contents_scale_);
+ // TODO(vmpstr): Remove render_target and draw_transform from the
+ // parameters so they can be hidden from the tiling.
+ is_occluded = occlusion_tracker->Occluded(
+ render_target, tile_query_rect, draw_transform);
+ }
tile->set_is_occluded(tree, is_occluded);
}
diff --git a/cc/resources/picture_layer_tiling.h b/cc/resources/picture_layer_tiling.h
index e3fffee..35bbf94 100644
--- a/cc/resources/picture_layer_tiling.h
+++ b/cc/resources/picture_layer_tiling.h
@@ -17,7 +17,6 @@
#include "cc/base/tiling_data.h"
#include "cc/resources/tile.h"
#include "cc/resources/tile_priority.h"
-#include "cc/trees/occlusion.h"
#include "ui/gfx/rect.h"
namespace base {
@@ -28,6 +27,8 @@ class TracedValue;
namespace cc {
+template <typename LayerType>
+class OcclusionTracker;
class PictureLayerTiling;
class PicturePileImpl;
@@ -236,11 +237,14 @@ class CC_EXPORT PictureLayerTiling {
void Reset();
- void UpdateTilePriorities(WhichTree tree,
- const gfx::Rect& visible_layer_rect,
- float ideal_contents_scale,
- double current_frame_time_in_seconds,
- const Occlusion& occlusion_in_layer_space);
+ void UpdateTilePriorities(
+ WhichTree tree,
+ const gfx::Rect& visible_layer_rect,
+ float ideal_contents_scale,
+ double current_frame_time_in_seconds,
+ const OcclusionTracker<LayerImpl>* occlusion_tracker,
+ const LayerImpl* render_target,
+ const gfx::Transform& draw_transform);
// Copies the src_tree priority into the dst_tree priority for all tiles.
// The src_tree priority is reset to the lowest priority possible. This
diff --git a/cc/resources/picture_layer_tiling_perftest.cc b/cc/resources/picture_layer_tiling_perftest.cc
index f1b462f..00338ab 100644
--- a/cc/resources/picture_layer_tiling_perftest.cc
+++ b/cc/resources/picture_layer_tiling_perftest.cc
@@ -74,8 +74,13 @@ class PictureLayerTilingPerfTest : public testing::Test {
timer_.Reset();
do {
- picture_layer_tiling_->UpdateTilePriorities(
- PENDING_TREE, viewport_rect, 1.f, timer_.NumLaps() + 1, Occlusion());
+ picture_layer_tiling_->UpdateTilePriorities(PENDING_TREE,
+ viewport_rect,
+ 1.f,
+ timer_.NumLaps() + 1,
+ NULL,
+ NULL,
+ gfx::Transform());
timer_.NextLap();
} while (!timer_.HasTimeLimitExpired());
@@ -99,8 +104,13 @@ class PictureLayerTilingPerfTest : public testing::Test {
timer_.Reset();
do {
- picture_layer_tiling_->UpdateTilePriorities(
- PENDING_TREE, viewport_rect, 1.f, timer_.NumLaps() + 1, Occlusion());
+ picture_layer_tiling_->UpdateTilePriorities(PENDING_TREE,
+ viewport_rect,
+ 1.f,
+ timer_.NumLaps() + 1,
+ NULL,
+ NULL,
+ gfx::Transform());
viewport_rect = gfx::Rect(viewport_rect.x() + xoffsets[offsetIndex],
viewport_rect.y() + yoffsets[offsetIndex],
@@ -129,7 +139,7 @@ class PictureLayerTilingPerfTest : public testing::Test {
PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_);
picture_layer_tiling_client_.set_tree(ACTIVE_TREE);
picture_layer_tiling_->UpdateTilePriorities(
- ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
+ ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform());
timer_.Reset();
do {
@@ -154,7 +164,7 @@ class PictureLayerTilingPerfTest : public testing::Test {
PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_);
picture_layer_tiling_client_.set_tree(ACTIVE_TREE);
picture_layer_tiling_->UpdateTilePriorities(
- ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
+ ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform());
timer_.Reset();
do {
@@ -184,7 +194,7 @@ class PictureLayerTilingPerfTest : public testing::Test {
PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_);
picture_layer_tiling_client_.set_tree(ACTIVE_TREE);
picture_layer_tiling_->UpdateTilePriorities(
- ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
+ ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform());
timer_.Reset();
TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES,
@@ -216,7 +226,7 @@ class PictureLayerTilingPerfTest : public testing::Test {
PictureLayerTiling::Create(1, bounds, &picture_layer_tiling_client_);
picture_layer_tiling_client_.set_tree(ACTIVE_TREE);
picture_layer_tiling_->UpdateTilePriorities(
- ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
+ ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform());
TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES,
SMOOTHNESS_TAKES_PRIORITY,
diff --git a/cc/resources/picture_layer_tiling_unittest.cc b/cc/resources/picture_layer_tiling_unittest.cc
index e64191d..0795e11 100644
--- a/cc/resources/picture_layer_tiling_unittest.cc
+++ b/cc/resources/picture_layer_tiling_unittest.cc
@@ -44,7 +44,9 @@ static void UpdateAllTilePriorities(PictureLayerTilingSet* set,
visible_layer_rect,
layer_contents_scale,
current_frame_time_in_seconds,
- Occlusion());
+ NULL,
+ NULL,
+ gfx::Transform());
}
}
@@ -538,7 +540,8 @@ TEST(PictureLayerTilingTest, SkewportLimits) {
client.SetTileSize(gfx::Size(100, 100));
tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
- tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion());
+ tiling->UpdateTilePriorities(
+ ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform());
// Move viewport down 50 pixels in 0.5 seconds.
gfx::Rect down_skewport =
@@ -604,7 +607,8 @@ TEST(PictureLayerTilingTest, ComputeSkewport) {
client.set_tree(ACTIVE_TREE);
tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
- tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion());
+ tiling->UpdateTilePriorities(
+ ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform());
// Move viewport down 50 pixels in 0.5 seconds.
gfx::Rect down_skewport =
@@ -671,7 +675,8 @@ TEST(PictureLayerTilingTest, ViewportDistanceWithScale) {
gfx::Rect viewport_in_content_space =
gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f));
- tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion());
+ tiling->UpdateTilePriorities(
+ ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform());
gfx::Rect soon_rect = viewport;
soon_rect.Inset(-312.f, -312.f, -312.f, -312.f);
@@ -755,7 +760,8 @@ TEST(PictureLayerTilingTest, ViewportDistanceWithScale) {
EXPECT_EQ(25, skewport.width());
EXPECT_EQ(35, skewport.height());
- tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 2.0, Occlusion());
+ tiling->UpdateTilePriorities(
+ ACTIVE_TREE, viewport, 1.f, 2.0, NULL, NULL, gfx::Transform());
have_now = false;
have_eventually = false;
@@ -806,7 +812,8 @@ TEST(PictureLayerTilingTest, ViewportDistanceWithScale) {
EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible);
// Change the underlying layer scale.
- tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 2.0f, 3.0, Occlusion());
+ tiling->UpdateTilePriorities(
+ ACTIVE_TREE, viewport, 2.0f, 3.0, NULL, NULL, gfx::Transform());
priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE);
EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible);
@@ -819,7 +826,8 @@ TEST(PictureLayerTilingTest, ViewportDistanceWithScale) {
// Test additional scales.
tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client);
- tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 4.0, Occlusion());
+ tiling->UpdateTilePriorities(
+ ACTIVE_TREE, viewport, 1.0f, 4.0, NULL, NULL, gfx::Transform());
priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE);
EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible);
@@ -830,7 +838,8 @@ TEST(PictureLayerTilingTest, ViewportDistanceWithScale) {
priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE);
EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible);
- tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 0.5f, 5.0, Occlusion());
+ tiling->UpdateTilePriorities(
+ ACTIVE_TREE, viewport, 0.5f, 5.0, NULL, NULL, gfx::Transform());
priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE);
EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible);
@@ -1078,7 +1087,8 @@ TEST(PictureLayerTilingTest, TilingRasterTileIteratorStaticViewport) {
client.set_tree(ACTIVE_TREE);
tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
- tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
+ tiling->UpdateTilePriorities(
+ ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform());
PictureLayerTiling::TilingRasterTileIterator empty_iterator;
EXPECT_FALSE(empty_iterator);
@@ -1186,9 +1196,10 @@ TEST(PictureLayerTilingTest, TilingRasterTileIteratorMovingViewport) {
client.set_tree(ACTIVE_TREE);
tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client);
- tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
tiling->UpdateTilePriorities(
- ACTIVE_TREE, moved_viewport, 1.0f, 2.0, Occlusion());
+ ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform());
+ tiling->UpdateTilePriorities(
+ ACTIVE_TREE, moved_viewport, 1.0f, 2.0, NULL, NULL, gfx::Transform());
gfx::Rect soon_rect = moved_viewport;
soon_rect.Inset(-312.f, -312.f, -312.f, -312.f);
@@ -1261,7 +1272,8 @@ TEST(PictureLayerTilingTest, TilingEvictionTileIteratorStaticViewport) {
client.set_tree(ACTIVE_TREE);
tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
- tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
+ tiling->UpdateTilePriorities(
+ ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform());
PictureLayerTiling::TilingRasterTileIterator empty_iterator;
EXPECT_FALSE(empty_iterator);
@@ -1339,15 +1351,19 @@ TEST_F(PictureLayerTilingIteratorTest, TilesExist) {
gfx::Rect(layer_bounds), // visible content rect
1.f, // current contents scale
1.0, // current frame time
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
// Make the viewport rect empty. All tiles are killed and become zombies.
tiling_->UpdateTilePriorities(ACTIVE_TREE,
- gfx::Rect(), // visible content rect
- 1.f, // current contents scale
- 2.0, // current frame time
- Occlusion());
+ gfx::Rect(), // visible content rect
+ 1.f, // current contents scale
+ 2.0, // current frame time
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
}
@@ -1365,15 +1381,19 @@ TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) {
gfx::Rect(layer_bounds), // visible content rect
1.f, // current contents scale
1.0, // current frame time
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
// If the visible content rect is empty, it should still have live tiles.
tiling_->UpdateTilePriorities(ACTIVE_TREE,
- giant_rect, // visible content rect
- 1.f, // current contents scale
- 2.0, // current frame time
- Occlusion());
+ giant_rect, // visible content rect
+ 1.f, // current contents scale
+ 2.0, // current frame time
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
}
@@ -1390,10 +1410,12 @@ TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) {
client_.set_tree(ACTIVE_TREE);
tiling_->UpdateTilePriorities(ACTIVE_TREE,
- viewport_rect, // visible content rect
- 1.f, // current contents scale
- 1.0, // current frame time
- Occlusion());
+ viewport_rect, // visible content rect
+ 1.f, // current contents scale
+ 1.0, // current frame time
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
}
@@ -1420,10 +1442,12 @@ TEST_F(PictureLayerTilingIteratorTest,
client_.set_tree(ACTIVE_TREE);
set_max_tiles_for_interest_area(1);
tiling_->UpdateTilePriorities(ACTIVE_TREE,
- visible_rect, // visible content rect
- 1.f, // current contents scale
- 1.0, // current frame time
- Occlusion());
+ visible_rect, // visible content rect
+ 1.f, // current contents scale
+ 1.0, // current frame time
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
VerifyTiles(1.f,
gfx::Rect(layer_bounds),
base::Bind(&TilesIntersectingRectExist, visible_rect, true));
@@ -1509,7 +1533,9 @@ TEST(UpdateTilePrioritiesTest, VisibleTiles) {
viewport_in_layer_space,
current_layer_contents_scale,
current_frame_time_in_seconds,
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
ASSERT_TRUE(tiling->TileAt(0, 0));
ASSERT_TRUE(tiling->TileAt(0, 1));
@@ -1564,7 +1590,9 @@ TEST(UpdateTilePrioritiesTest, OffscreenTiles) {
viewport_in_layer_space,
current_layer_contents_scale,
current_frame_time_in_seconds,
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
ASSERT_TRUE(tiling->TileAt(0, 0));
ASSERT_TRUE(tiling->TileAt(0, 1));
@@ -1629,7 +1657,9 @@ TEST(UpdateTilePrioritiesTest, PartiallyOffscreenLayer) {
viewport_in_layer_space,
current_layer_contents_scale,
current_frame_time_in_seconds,
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
ASSERT_TRUE(tiling->TileAt(0, 0));
ASSERT_TRUE(tiling->TileAt(0, 1));
@@ -1688,7 +1718,9 @@ TEST(UpdateTilePrioritiesTest, PartiallyOffscreenRotatedLayer) {
viewport_in_layer_space,
current_layer_contents_scale,
current_frame_time_in_seconds,
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
ASSERT_TRUE(tiling->TileAt(0, 0));
ASSERT_TRUE(tiling->TileAt(0, 1));
@@ -1771,7 +1803,9 @@ TEST(UpdateTilePrioritiesTest, PerspectiveLayer) {
viewport_in_layer_space,
current_layer_contents_scale,
current_frame_time_in_seconds,
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
ASSERT_TRUE(tiling->TileAt(0, 0));
ASSERT_TRUE(tiling->TileAt(0, 1));
@@ -1864,7 +1898,9 @@ TEST(UpdateTilePrioritiesTest, PerspectiveLayerClippedByW) {
viewport_in_layer_space,
current_layer_contents_scale,
current_frame_time_in_seconds,
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
ASSERT_TRUE(tiling->TileAt(0, 0));
ASSERT_TRUE(tiling->TileAt(0, 1));
@@ -1928,14 +1964,18 @@ TEST(UpdateTilePrioritiesTest, BasicMotion) {
viewport_in_layer_space,
last_layer_contents_scale,
last_frame_time_in_seconds,
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
// current frame
tiling->UpdateTilePriorities(ACTIVE_TREE,
viewport_in_layer_space,
current_layer_contents_scale,
current_frame_time_in_seconds,
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
ASSERT_TRUE(tiling->TileAt(0, 0));
ASSERT_TRUE(tiling->TileAt(0, 1));
@@ -2006,14 +2046,18 @@ TEST(UpdateTilePrioritiesTest, RotationMotion) {
viewport_in_layer_space,
last_layer_contents_scale,
last_frame_time_in_seconds,
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
// current frame
tiling->UpdateTilePriorities(ACTIVE_TREE,
viewport_in_layer_space,
current_layer_contents_scale,
current_frame_time_in_seconds,
- Occlusion());
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
ASSERT_TRUE(tiling->TileAt(0, 0));
ASSERT_TRUE(tiling->TileAt(0, 1));
@@ -2042,8 +2086,13 @@ TEST(PictureLayerTilingTest, ResetClearsPriorities) {
tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
gfx::Size(100, 100),
&client);
- tiling->UpdateTilePriorities(
- ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion());
+ tiling->UpdateTilePriorities(ACTIVE_TREE,
+ gfx::Rect(0, 0, 100, 100),
+ 1.0f,
+ 1.0f,
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
std::vector<scoped_refptr<Tile> > tiles = tiling->AllRefTilesForTesting();
ASSERT_GT(tiles.size(), 0u);
@@ -2083,8 +2132,13 @@ TEST(PictureLayerTilingTest, RecycledTilesCleared) {
gfx::Size(10000, 10000),
&active_client);
// Create all tiles on this tiling.
- active_tiling->UpdateTilePriorities(
- ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion());
+ active_tiling->UpdateTilePriorities(ACTIVE_TREE,
+ gfx::Rect(0, 0, 100, 100),
+ 1.0f,
+ 1.0f,
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
FakePictureLayerTilingClient recycle_client;
recycle_client.SetTileSize(gfx::Size(100, 100));
@@ -2098,8 +2152,13 @@ TEST(PictureLayerTilingTest, RecycledTilesCleared) {
&recycle_client);
// Create all tiles on the second tiling. All tiles should be shared.
- recycle_tiling->UpdateTilePriorities(
- PENDING_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion());
+ recycle_tiling->UpdateTilePriorities(PENDING_TREE,
+ gfx::Rect(0, 0, 100, 100),
+ 1.0f,
+ 1.0f,
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
// Set the second tiling as recycled.
active_client.set_twin_tiling(NULL);
@@ -2112,15 +2171,25 @@ TEST(PictureLayerTilingTest, RecycledTilesCleared) {
EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0));
// Move the viewport far away from the (0, 0) tile.
- active_tiling->UpdateTilePriorities(
- ACTIVE_TREE, gfx::Rect(9000, 9000, 100, 100), 1.0f, 2.0, Occlusion());
+ active_tiling->UpdateTilePriorities(ACTIVE_TREE,
+ gfx::Rect(9000, 9000, 100, 100),
+ 1.0f,
+ 2.0,
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
// Ensure the tile was deleted on both tilings.
EXPECT_FALSE(active_tiling->TileAt(0, 0));
EXPECT_FALSE(recycle_tiling->TileAt(0, 0));
// Move the viewport back to (0, 0) tile.
- active_tiling->UpdateTilePriorities(
- ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 3.0, Occlusion());
+ active_tiling->UpdateTilePriorities(ACTIVE_TREE,
+ gfx::Rect(0, 0, 100, 100),
+ 1.0f,
+ 3.0,
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
// Ensure that we now have a tile here, but the recycle tiling does not.
EXPECT_TRUE(active_tiling->TileAt(0, 0));
@@ -2137,8 +2206,13 @@ TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) {
gfx::Size(100, 100),
&active_client);
// Create all tiles on this tiling.
- active_tiling->UpdateTilePriorities(
- ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion());
+ active_tiling->UpdateTilePriorities(ACTIVE_TREE,
+ gfx::Rect(0, 0, 100, 100),
+ 1.0f,
+ 1.0f,
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
FakePictureLayerTilingClient recycle_client;
recycle_client.SetTileSize(gfx::Size(100, 100));
@@ -2152,8 +2226,13 @@ TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) {
&recycle_client);
// Create all tiles on the recycle tiling. All tiles should be shared.
- recycle_tiling->UpdateTilePriorities(
- PENDING_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion());
+ recycle_tiling->UpdateTilePriorities(PENDING_TREE,
+ gfx::Rect(0, 0, 100, 100),
+ 1.0f,
+ 1.0f,
+ NULL, // occlusion tracker
+ NULL, // render target
+ gfx::Transform()); // draw transform
// Set the second tiling as recycled.
active_client.set_twin_tiling(NULL);
diff --git a/cc/resources/tile_manager_perftest.cc b/cc/resources/tile_manager_perftest.cc
index 65ec4d8..3aa04a2 100644
--- a/cc/resources/tile_manager_perftest.cc
+++ b/cc/resources/tile_manager_perftest.cc
@@ -187,7 +187,7 @@ class TileManagerPerfTest : public testing::Test {
std::vector<LayerImpl*> layers = CreateLayers(layer_count, 10);
for (unsigned i = 0; i < layers.size(); ++i)
- layers[i]->UpdateTiles(Occlusion());
+ layers[i]->UpdateTiles(NULL);
timer_.Reset();
do {
@@ -214,7 +214,7 @@ class TileManagerPerfTest : public testing::Test {
std::vector<LayerImpl*> layers = CreateLayers(layer_count, 100);
for (unsigned i = 0; i < layers.size(); ++i)
- layers[i]->UpdateTiles(Occlusion());
+ layers[i]->UpdateTiles(NULL);
int priority_count = 0;
timer_.Reset();
@@ -251,7 +251,7 @@ class TileManagerPerfTest : public testing::Test {
for (unsigned i = 0; i < layers.size(); ++i) {
FakePictureLayerImpl* layer =
static_cast<FakePictureLayerImpl*>(layers[i]);
- layer->UpdateTiles(Occlusion());
+ layer->UpdateTiles(NULL);
for (size_t j = 0; j < layer->GetTilings()->num_tilings(); ++j) {
tile_manager()->InitializeTilesWithResourcesForTesting(
layer->GetTilings()->tiling_at(j)->AllTilesForTesting());
@@ -286,7 +286,7 @@ class TileManagerPerfTest : public testing::Test {
for (unsigned i = 0; i < layers.size(); ++i) {
FakePictureLayerImpl* layer =
static_cast<FakePictureLayerImpl*>(layers[i]);
- layer->UpdateTiles(Occlusion());
+ layer->UpdateTiles(NULL);
for (size_t j = 0; j < layer->GetTilings()->num_tilings(); ++j) {
tile_manager()->InitializeTilesWithResourcesForTesting(
layer->GetTilings()->tiling_at(j)->AllTilesForTesting());
@@ -396,7 +396,7 @@ class TileManagerPerfTest : public testing::Test {
BeginFrameArgs args = CreateBeginFrameArgsForTesting();
host_impl_.UpdateCurrentBeginFrameArgs(args);
for (unsigned i = 0; i < layers.size(); ++i)
- layers[i]->UpdateTiles(Occlusion());
+ layers[i]->UpdateTiles(NULL);
GlobalStateThatImpactsTilePriority global_state(GlobalStateForTest());
tile_manager()->ManageTiles(global_state);
diff --git a/cc/resources/tile_manager_unittest.cc b/cc/resources/tile_manager_unittest.cc
index fdba050..f229fcd 100644
--- a/cc/resources/tile_manager_unittest.cc
+++ b/cc/resources/tile_manager_unittest.cc
@@ -646,13 +646,37 @@ TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueue) {
// Renew all of the tile priorities.
gfx::Rect viewport(50, 50, 100, 100);
pending_layer_->HighResTiling()->UpdateTilePriorities(
- PENDING_TREE, viewport, 1.0f, 1.0, Occlusion());
+ PENDING_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ pending_layer_->render_target(),
+ pending_layer_->draw_transform());
pending_layer_->LowResTiling()->UpdateTilePriorities(
- PENDING_TREE, viewport, 1.0f, 1.0, Occlusion());
+ PENDING_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ pending_layer_->render_target(),
+ pending_layer_->draw_transform());
active_layer_->HighResTiling()->UpdateTilePriorities(
- ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
+ ACTIVE_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ active_layer_->render_target(),
+ active_layer_->draw_transform());
active_layer_->LowResTiling()->UpdateTilePriorities(
- ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
+ ACTIVE_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ active_layer_->render_target(),
+ active_layer_->draw_transform());
// Populate all tiles directly from the tilings.
all_tiles.clear();
@@ -821,13 +845,37 @@ TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) {
// Renew all of the tile priorities.
gfx::Rect viewport(50, 50, 100, 100);
pending_layer_->HighResTiling()->UpdateTilePriorities(
- PENDING_TREE, viewport, 1.0f, 1.0, Occlusion());
+ PENDING_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ pending_layer_->render_target(),
+ pending_layer_->draw_transform());
pending_layer_->LowResTiling()->UpdateTilePriorities(
- PENDING_TREE, viewport, 1.0f, 1.0, Occlusion());
+ PENDING_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ pending_layer_->render_target(),
+ pending_layer_->draw_transform());
active_layer_->HighResTiling()->UpdateTilePriorities(
- ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
+ ACTIVE_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ active_layer_->render_target(),
+ active_layer_->draw_transform());
active_layer_->LowResTiling()->UpdateTilePriorities(
- ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
+ ACTIVE_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ active_layer_->render_target(),
+ active_layer_->draw_transform());
// Populate all tiles directly from the tilings.
all_tiles.clear();
@@ -972,13 +1020,37 @@ TEST_F(TileManagerTilePriorityQueueTest,
// Renew all of the tile priorities.
gfx::Rect viewport(layer_bounds);
pending_layer_->HighResTiling()->UpdateTilePriorities(
- PENDING_TREE, viewport, 1.0f, 1.0, Occlusion());
+ PENDING_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ pending_layer_->render_target(),
+ pending_layer_->draw_transform());
pending_layer_->LowResTiling()->UpdateTilePriorities(
- PENDING_TREE, viewport, 1.0f, 1.0, Occlusion());
+ PENDING_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ pending_layer_->render_target(),
+ pending_layer_->draw_transform());
pending_child_layer->HighResTiling()->UpdateTilePriorities(
- PENDING_TREE, viewport, 1.0f, 1.0, Occlusion());
+ PENDING_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ pending_child_layer->render_target(),
+ pending_child_layer->draw_transform());
pending_child_layer->LowResTiling()->UpdateTilePriorities(
- PENDING_TREE, viewport, 1.0f, 1.0, Occlusion());
+ PENDING_TREE,
+ viewport,
+ 1.0f,
+ 1.0,
+ NULL,
+ pending_child_layer->render_target(),
+ pending_child_layer->draw_transform());
// Populate all tiles directly from the tilings.
all_tiles.clear();
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index e368bb8..328234f 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -520,13 +520,8 @@ bool LayerTreeImpl::UpdateDrawProperties() {
occlusion_tracker->EnterLayer(it);
LayerImpl* layer = *it;
- const Occlusion& occlusion_in_content_space =
- occlusion_tracker ? occlusion_tracker->GetCurrentOcclusionForLayer(
- layer->draw_transform())
- : Occlusion();
-
if (it.represents_itself())
- layer->UpdateTiles(occlusion_in_content_space);
+ layer->UpdateTiles(occlusion_tracker.get());
if (!it.represents_contributing_render_surface()) {
if (occlusion_tracker)
@@ -535,10 +530,10 @@ bool LayerTreeImpl::UpdateDrawProperties() {
}
if (layer->mask_layer())
- layer->mask_layer()->UpdateTiles(occlusion_in_content_space);
+ layer->mask_layer()->UpdateTiles(occlusion_tracker.get());
if (layer->replica_layer() && layer->replica_layer()->mask_layer())
layer->replica_layer()->mask_layer()->UpdateTiles(
- occlusion_in_content_space);
+ occlusion_tracker.get());
if (occlusion_tracker)
occlusion_tracker->LeaveLayer(it);
diff --git a/cc/trees/occlusion.cc b/cc/trees/occlusion.cc
deleted file mode 100644
index c91c0ca..0000000
--- a/cc/trees/occlusion.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "cc/trees/occlusion.h"
-
-#include "cc/base/math_util.h"
-#include "ui/gfx/rect.h"
-
-namespace cc {
-
-Occlusion::Occlusion() {
-}
-
-Occlusion::Occlusion(const gfx::Transform& draw_transform,
- const SimpleEnclosedRegion& occlusion_from_outside_target,
- const SimpleEnclosedRegion& occlusion_from_inside_target)
- : draw_transform_(draw_transform),
- occlusion_from_outside_target_(occlusion_from_outside_target),
- occlusion_from_inside_target_(occlusion_from_inside_target) {
-}
-
-bool Occlusion::IsOccluded(const gfx::Rect& content_rect) const {
- if (content_rect.IsEmpty())
- return true;
-
- if (occlusion_from_inside_target_.IsEmpty() &&
- occlusion_from_outside_target_.IsEmpty()) {
- return false;
- }
-
- // Take the ToEnclosingRect at each step, as we want to contain any unoccluded
- // partial pixels in the resulting Rect.
- gfx::Rect unoccluded_rect_in_target_surface =
- MathUtil::MapEnclosingClippedRect(draw_transform_, content_rect);
- DCHECK_LE(occlusion_from_inside_target_.GetRegionComplexity(), 1u);
- DCHECK_LE(occlusion_from_outside_target_.GetRegionComplexity(), 1u);
- // These subtract operations are more lossy than if we did both operations at
- // once.
- unoccluded_rect_in_target_surface.Subtract(
- occlusion_from_inside_target_.bounds());
- unoccluded_rect_in_target_surface.Subtract(
- occlusion_from_outside_target_.bounds());
-
- return unoccluded_rect_in_target_surface.IsEmpty();
-}
-
-} // namespace cc
diff --git a/cc/trees/occlusion.h b/cc/trees/occlusion.h
deleted file mode 100644
index 982d7e8..0000000
--- a/cc/trees/occlusion.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CC_TREES_OCCLUSION_H_
-#define CC_TREES_OCCLUSION_H_
-
-#include "base/basictypes.h"
-#include "cc/base/cc_export.h"
-#include "cc/base/simple_enclosed_region.h"
-#include "ui/gfx/transform.h"
-
-namespace gfx {
-class Rect;
-} // namespace gfx
-
-namespace cc {
-
-class CC_EXPORT Occlusion {
- public:
- Occlusion();
- Occlusion(const gfx::Transform& draw_transform,
- const SimpleEnclosedRegion& occlusion_from_outside_target,
- const SimpleEnclosedRegion& occlusion_from_inside_target);
-
- bool IsOccluded(const gfx::Rect& content_rect) const;
-
- private:
- gfx::Transform draw_transform_;
- SimpleEnclosedRegion occlusion_from_outside_target_;
- SimpleEnclosedRegion occlusion_from_inside_target_;
-};
-
-} // namespace cc
-
-#endif // CC_TREES_OCCLUSION_H_
diff --git a/cc/trees/occlusion_tracker.cc b/cc/trees/occlusion_tracker.cc
index 8fdd6e2..f233e07 100644
--- a/cc/trees/occlusion_tracker.cc
+++ b/cc/trees/occlusion_tracker.cc
@@ -28,16 +28,6 @@ template <typename LayerType>
OcclusionTracker<LayerType>::~OcclusionTracker() {}
template <typename LayerType>
-Occlusion OcclusionTracker<LayerType>::GetCurrentOcclusionForLayer(
- const gfx::Transform& draw_transform) const {
- DCHECK(!stack_.empty());
- const StackObject& back = stack_.back();
- return Occlusion(draw_transform,
- back.occlusion_from_outside_target,
- back.occlusion_from_inside_target);
-}
-
-template <typename LayerType>
void OcclusionTracker<LayerType>::EnterLayer(
const LayerIteratorPosition<LayerType>& layer_iterator) {
LayerType* render_target = layer_iterator.target_render_surface_layer;
diff --git a/cc/trees/occlusion_tracker.h b/cc/trees/occlusion_tracker.h
index 9b4b74e..8d07f43 100644
--- a/cc/trees/occlusion_tracker.h
+++ b/cc/trees/occlusion_tracker.h
@@ -11,7 +11,6 @@
#include "cc/base/cc_export.h"
#include "cc/base/simple_enclosed_region.h"
#include "cc/layers/layer_iterator.h"
-#include "cc/trees/occlusion.h"
#include "ui/gfx/rect.h"
namespace cc {
@@ -36,11 +35,6 @@ class CC_EXPORT OcclusionTracker {
explicit OcclusionTracker(const gfx::Rect& screen_space_clip_rect);
~OcclusionTracker();
- // Return an occlusion that retains the current state of the tracker
- // and can be used outside of a layer walk to check occlusion.
- Occlusion GetCurrentOcclusionForLayer(
- const gfx::Transform& draw_transform) const;
-
// Called at the beginning of each step in the LayerIterator's front-to-back
// traversal.
void EnterLayer(const LayerIteratorPosition<LayerType>& layer_iterator);
diff --git a/cc/trees/occlusion_tracker_unittest.cc b/cc/trees/occlusion_tracker_unittest.cc
index 56059cb..aaf655f2 100644
--- a/cc/trees/occlusion_tracker_unittest.cc
+++ b/cc/trees/occlusion_tracker_unittest.cc
@@ -85,11 +85,6 @@ class TestOcclusionTrackerWithClip : public TestOcclusionTracker<LayerType> {
bool OccludedLayer(const LayerType* layer,
const gfx::Rect& content_rect) const {
DCHECK(layer->visible_content_rect().Contains(content_rect));
- EXPECT_EQ(
- this->Occluded(
- layer->render_target(), content_rect, layer->draw_transform()),
- this->GetCurrentOcclusionForLayer(layer->draw_transform())
- .IsOccluded(content_rect));
return this->Occluded(
layer->render_target(), content_rect, layer->draw_transform());
}